@ebrindley/build 0.0.0-stage → 1.42.1-rc28

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 (878) hide show
  1. package/.build-project/providers/catalog.json +13951 -0
  2. package/.build-project/providers/pricing.json +1978 -0
  3. package/.build-project/providers/registry.json +4103 -0
  4. package/.github/SECURITY.md +75 -0
  5. package/.nvmrc +1 -0
  6. package/CHANGELOG.md +661 -0
  7. package/CODE_OF_CONDUCT.md +44 -0
  8. package/CONTRIBUTING.md +24 -0
  9. package/INSTALL.md +623 -0
  10. package/LICENSE +21 -0
  11. package/README.md +118 -2
  12. package/THIRD_PARTY_NOTICES.txt +26 -0
  13. package/dist/ai-judge-UE5UOYOO.js +191 -0
  14. package/dist/allowlist-grounding-KPLN6NC5.js +16 -0
  15. package/dist/allowlist-utils-MZZKKXRD.js +31 -0
  16. package/dist/apply-completion-mode-EM37UZHB.js +110 -0
  17. package/dist/artifact-migrator-WPACNSEP.js +276 -0
  18. package/dist/ask-2OZ4JFQR.js +176 -0
  19. package/dist/auth-6UKBTJUQ.js +185 -0
  20. package/dist/auth-H5KJL6HL.js +165 -0
  21. package/dist/auth-LVJRJDMU.js +12 -0
  22. package/dist/auth-NHZOCNRR.js +94 -0
  23. package/dist/auth-PBXHWXGW.js +95 -0
  24. package/dist/auth-T7Y5DCAH.js +91 -0
  25. package/dist/auth-TVVKCHQW.js +13 -0
  26. package/dist/auth-UHB2UCSS.js +97 -0
  27. package/dist/auth-VACA3VUL.js +98 -0
  28. package/dist/auth-VVLC77S3.js +44 -0
  29. package/dist/auth-liveness-XO4AGDDD.js +53 -0
  30. package/dist/autoloop-cleanup-SI3VGAAR.js +106 -0
  31. package/dist/autoloop-evidence-gates-J5GG5YQB.js +39 -0
  32. package/dist/autoloop-gate-policy-SUNAEP6Q.js +169 -0
  33. package/dist/autoloop-helpers-VQGQNTT6.js +52 -0
  34. package/dist/autoloop-ledger-P6TIDP7C.js +96 -0
  35. package/dist/autoloop-ledger-subscriber-HFAGOZXH.js +161 -0
  36. package/dist/autoloop-run-defaults-GWGZBNT7.js +27 -0
  37. package/dist/autoloop-run-lock-GBWRM5A2.js +197 -0
  38. package/dist/autoloop-success-C32QVWOP.js +93 -0
  39. package/dist/autoloop-termination-summary-GI6IBQWD.js +58 -0
  40. package/dist/autoloop-trajectory-AMKSQISD.js +70 -0
  41. package/dist/autoloop-wall-clock-T7ZVIQOC.js +12 -0
  42. package/dist/automatic-branch-cleanup-R62X2C5O.js +49 -0
  43. package/dist/autonomous-loop-controller-2WL363LW.js +4386 -0
  44. package/dist/backend-YUTFDZXZ.js +30 -0
  45. package/dist/background-executor-Z3ODTMD7.js +260 -0
  46. package/dist/backlog-75QPEAMW.js +403 -0
  47. package/dist/backlog-execution-intent-GWUV5TUK.js +19 -0
  48. package/dist/backup-active-store-XHWLN34M.js +16 -0
  49. package/dist/backup-machine-stores-UI4LTJOY.js +251 -0
  50. package/dist/backup-telemetry-db-Z4ICYCNW.js +26 -0
  51. package/dist/branch-archive-manager-FMSQ7YJF.js +18 -0
  52. package/dist/branch-cleanup-manager-ST6FJGND.js +35 -0
  53. package/dist/build-gate-7NKWPY62.js +68 -0
  54. package/dist/build-root-S7DINODY.js +18 -0
  55. package/dist/change-summary-R6CB6VXJ.js +50 -0
  56. package/dist/chunk-24MNKKOM.js +173 -0
  57. package/dist/chunk-2H6VZFIO.js +235 -0
  58. package/dist/chunk-2JIX3EKV.js +39 -0
  59. package/dist/chunk-2KO7HVZM.js +106 -0
  60. package/dist/chunk-2L36U25O.js +100 -0
  61. package/dist/chunk-2NMNFUQA.js +475 -0
  62. package/dist/chunk-2OUAEH67.js +83 -0
  63. package/dist/chunk-2VLJUXJU.js +115 -0
  64. package/dist/chunk-2VUEDIUM.js +77 -0
  65. package/dist/chunk-2Y2IIHPI.js +430 -0
  66. package/dist/chunk-2YRG3LHZ.js +220 -0
  67. package/dist/chunk-2Z5Q3SUY.js +65 -0
  68. package/dist/chunk-32IYXIE5.js +873 -0
  69. package/dist/chunk-33IGPPUI.js +292 -0
  70. package/dist/chunk-352PCJLK.js +283 -0
  71. package/dist/chunk-35J4NE6S.js +226 -0
  72. package/dist/chunk-3C7WBIVK.js +1016 -0
  73. package/dist/chunk-3H3EY6U7.js +1225 -0
  74. package/dist/chunk-3H4MWYIC.js +198 -0
  75. package/dist/chunk-3HHWQR3N.js +2479 -0
  76. package/dist/chunk-3JKNRYEE.js +14 -0
  77. package/dist/chunk-3LECCYZY.js +128 -0
  78. package/dist/chunk-3LOY6YZI.js +852 -0
  79. package/dist/chunk-3M57DADF.js +44 -0
  80. package/dist/chunk-3NOTLVLG.js +3803 -0
  81. package/dist/chunk-3OPP2OZB.js +1480 -0
  82. package/dist/chunk-3P5IN5E7.js +9 -0
  83. package/dist/chunk-3PL22IYZ.js +20 -0
  84. package/dist/chunk-3REDAJUJ.js +14 -0
  85. package/dist/chunk-3S2R4XJI.js +203 -0
  86. package/dist/chunk-3UBZI5DW.js +61 -0
  87. package/dist/chunk-3VV5OBGG.js +308 -0
  88. package/dist/chunk-3WY5TU2O.js +823 -0
  89. package/dist/chunk-43OKHTW4.js +82 -0
  90. package/dist/chunk-45KUJBDI.js +112 -0
  91. package/dist/chunk-47X5LM7B.js +224 -0
  92. package/dist/chunk-4B6FQJ77.js +268 -0
  93. package/dist/chunk-4BTDUT2S.js +42 -0
  94. package/dist/chunk-4DJL2VXA.js +24 -0
  95. package/dist/chunk-4EBSXZ73.js +48 -0
  96. package/dist/chunk-4QKP6I4C.js +294 -0
  97. package/dist/chunk-4U6XK2DG.js +300 -0
  98. package/dist/chunk-4UMRUFBD.js +132 -0
  99. package/dist/chunk-4US4SYJ4.js +569 -0
  100. package/dist/chunk-4ZPLWEZO.js +154 -0
  101. package/dist/chunk-56WPYDJH.js +624 -0
  102. package/dist/chunk-57WRCJJW.js +50 -0
  103. package/dist/chunk-5AW4RMNG.js +24 -0
  104. package/dist/chunk-5EQN56OZ.js +155 -0
  105. package/dist/chunk-5F43TUIN.js +38 -0
  106. package/dist/chunk-5FKHIKTS.js +115 -0
  107. package/dist/chunk-5HDP7XZG.js +91 -0
  108. package/dist/chunk-5KQETTNS.js +152 -0
  109. package/dist/chunk-5PDVN2KO.js +498 -0
  110. package/dist/chunk-5UBIFVRD.js +509 -0
  111. package/dist/chunk-5YDE3Q62.js +46 -0
  112. package/dist/chunk-626AJVMU.js +302 -0
  113. package/dist/chunk-633XZ7UF.js +3583 -0
  114. package/dist/chunk-63DHNHGA.js +236 -0
  115. package/dist/chunk-666656AR.js +568 -0
  116. package/dist/chunk-67YRJPJO.js +19 -0
  117. package/dist/chunk-6CAU7VBA.js +20 -0
  118. package/dist/chunk-6CB3KJRY.js +21 -0
  119. package/dist/chunk-6DBMALXL.js +29 -0
  120. package/dist/chunk-6E25C4IA.js +269 -0
  121. package/dist/chunk-6FIBNIQU.js +73 -0
  122. package/dist/chunk-6G57FYBV.js +189 -0
  123. package/dist/chunk-6KZKRTG3.js +4885 -0
  124. package/dist/chunk-6LAH2UV2.js +525 -0
  125. package/dist/chunk-6PZY2TTU.js +921 -0
  126. package/dist/chunk-6T6NHXK4.js +230 -0
  127. package/dist/chunk-6TBEX4R4.js +432 -0
  128. package/dist/chunk-6TRD7TEE.js +911 -0
  129. package/dist/chunk-6XCP2RAI.js +47 -0
  130. package/dist/chunk-726G6WDL.js +351 -0
  131. package/dist/chunk-75EMT7BF.js +616 -0
  132. package/dist/chunk-762ACDZJ.js +4696 -0
  133. package/dist/chunk-77I6G4CO.js +1 -0
  134. package/dist/chunk-7DJ6SQH3.js +510 -0
  135. package/dist/chunk-7HPCIOMA.js +1383 -0
  136. package/dist/chunk-7HYBSRPZ.js +17503 -0
  137. package/dist/chunk-7KBEOPVB.js +73 -0
  138. package/dist/chunk-7LHJDJB3.js +2222 -0
  139. package/dist/chunk-7NVJMH52.js +306 -0
  140. package/dist/chunk-7RMARDVH.js +33 -0
  141. package/dist/chunk-7SEWU4QG.js +36 -0
  142. package/dist/chunk-7TUTZTI2.js +911 -0
  143. package/dist/chunk-7VBDFPUM.js +340 -0
  144. package/dist/chunk-7VRJHTGZ.js +6406 -0
  145. package/dist/chunk-7YAOUUKK.js +493 -0
  146. package/dist/chunk-AAAODV76.js +860 -0
  147. package/dist/chunk-AB4HUJVQ.js +339 -0
  148. package/dist/chunk-AEQWV746.js +611 -0
  149. package/dist/chunk-AHU3FKPA.js +11639 -0
  150. package/dist/chunk-AISTV5XU.js +226 -0
  151. package/dist/chunk-AJBTKGJZ.js +48 -0
  152. package/dist/chunk-AJJNW7XT.js +248 -0
  153. package/dist/chunk-AJN5Y5YZ.js +160 -0
  154. package/dist/chunk-ALDTFNZ3.js +150 -0
  155. package/dist/chunk-ARARVIZK.js +281 -0
  156. package/dist/chunk-ATBM6AW5.js +53 -0
  157. package/dist/chunk-ATKEKM3E.js +206 -0
  158. package/dist/chunk-AUJLW6JZ.js +92 -0
  159. package/dist/chunk-AY3MHEFM.js +24 -0
  160. package/dist/chunk-B7PYTV72.js +236 -0
  161. package/dist/chunk-B7YRSULE.js +1423 -0
  162. package/dist/chunk-BAWJNMWF.js +339 -0
  163. package/dist/chunk-BBPIILO2.js +88 -0
  164. package/dist/chunk-BD3PGW6A.js +957 -0
  165. package/dist/chunk-BDPYFAB4.js +44 -0
  166. package/dist/chunk-BIUV23HH.js +729 -0
  167. package/dist/chunk-BQ3VAGXH.js +243 -0
  168. package/dist/chunk-BQJOGAWT.js +31 -0
  169. package/dist/chunk-BT7EG7CO.js +68 -0
  170. package/dist/chunk-BV3XQQLU.js +27 -0
  171. package/dist/chunk-BY6ODHNZ.js +78 -0
  172. package/dist/chunk-BZRLSZNV.js +79 -0
  173. package/dist/chunk-C3DH3NCY.js +2773 -0
  174. package/dist/chunk-C3KCMAJP.js +756 -0
  175. package/dist/chunk-C7AGUJ5K.js +267 -0
  176. package/dist/chunk-CBSWKQCX.js +342 -0
  177. package/dist/chunk-CE5OZBYY.js +21 -0
  178. package/dist/chunk-CFCVYHSW.js +373 -0
  179. package/dist/chunk-CHA2HDE5.js +126 -0
  180. package/dist/chunk-CIHWPGS5.js +146 -0
  181. package/dist/chunk-CJBSZX3F.js +127 -0
  182. package/dist/chunk-CLA6QIJM.js +43 -0
  183. package/dist/chunk-CPSVQR2I.js +365 -0
  184. package/dist/chunk-CRPRVNQ4.js +254 -0
  185. package/dist/chunk-CSIE4Y7C.js +1093 -0
  186. package/dist/chunk-CSOPSYDY.js +142 -0
  187. package/dist/chunk-CSXLLEGB.js +205 -0
  188. package/dist/chunk-CTDLERWU.js +293 -0
  189. package/dist/chunk-CULBXMSK.js +110 -0
  190. package/dist/chunk-D2M2Y5ID.js +21 -0
  191. package/dist/chunk-D37WY7SH.js +1060 -0
  192. package/dist/chunk-D4VJFCGZ.js +89 -0
  193. package/dist/chunk-D6WTZMZB.js +48 -0
  194. package/dist/chunk-DBHOWDUH.js +976 -0
  195. package/dist/chunk-DCACX7BV.js +19364 -0
  196. package/dist/chunk-DFHX4XYA.js +128 -0
  197. package/dist/chunk-DIKBRRKE.js +176 -0
  198. package/dist/chunk-DJG5RIOR.js +9 -0
  199. package/dist/chunk-DNIOIISW.js +616 -0
  200. package/dist/chunk-DOA5G7IA.js +315 -0
  201. package/dist/chunk-DP7FKP6W.js +855 -0
  202. package/dist/chunk-DS2JZ677.js +79 -0
  203. package/dist/chunk-DSRLVYBS.js +82 -0
  204. package/dist/chunk-EAEVKNJA.js +209 -0
  205. package/dist/chunk-EEUESN3T.js +575 -0
  206. package/dist/chunk-EJ4LUU5Y.js +73 -0
  207. package/dist/chunk-EJIWTPSZ.js +1063 -0
  208. package/dist/chunk-EJVCDTAN.js +116 -0
  209. package/dist/chunk-EKLUBDBQ.js +627 -0
  210. package/dist/chunk-EN62WLFD.js +849 -0
  211. package/dist/chunk-ENYRCL43.js +26 -0
  212. package/dist/chunk-EP22ZMFO.js +273 -0
  213. package/dist/chunk-EP4SVAVI.js +87 -0
  214. package/dist/chunk-EPAMVGI3.js +1562 -0
  215. package/dist/chunk-EPRMH6HO.js +24 -0
  216. package/dist/chunk-ES6NWJ36.js +4057 -0
  217. package/dist/chunk-ETA2K4KI.js +30 -0
  218. package/dist/chunk-ETAD4NKD.js +31 -0
  219. package/dist/chunk-EUWIIDQ7.js +93 -0
  220. package/dist/chunk-EVE3OD2W.js +141 -0
  221. package/dist/chunk-EXA26FFC.js +459 -0
  222. package/dist/chunk-EXSPAA35.js +244 -0
  223. package/dist/chunk-F55YABKV.js +258 -0
  224. package/dist/chunk-F5DNGU5W.js +27 -0
  225. package/dist/chunk-F622MJYV.js +103 -0
  226. package/dist/chunk-F6NIQD74.js +5111 -0
  227. package/dist/chunk-FAWJTC34.js +43 -0
  228. package/dist/chunk-FAZBRHGG.js +47 -0
  229. package/dist/chunk-FIEUSGNJ.js +39 -0
  230. package/dist/chunk-FKCG7K6H.js +1146 -0
  231. package/dist/chunk-FOVVXV45.js +229 -0
  232. package/dist/chunk-FRBPKBFE.js +30 -0
  233. package/dist/chunk-FSA5BPFI.js +268 -0
  234. package/dist/chunk-FSJ5TTZ3.js +29 -0
  235. package/dist/chunk-FT7SGLXT.js +193 -0
  236. package/dist/chunk-FUUVZZUB.js +62 -0
  237. package/dist/chunk-FYMRVUNZ.js +1697 -0
  238. package/dist/chunk-FYTAA5FG.js +162 -0
  239. package/dist/chunk-G3VB2UCZ.js +3892 -0
  240. package/dist/chunk-G6OIMVXH.js +405 -0
  241. package/dist/chunk-G7PQCXVH.js +228 -0
  242. package/dist/chunk-GAB6UW52.js +1087 -0
  243. package/dist/chunk-GAFJEYLK.js +29 -0
  244. package/dist/chunk-GC4CRMTS.js +642 -0
  245. package/dist/chunk-GFHSIWHL.js +5297 -0
  246. package/dist/chunk-GI5M67YA.js +735 -0
  247. package/dist/chunk-GIJWHUWF.js +191 -0
  248. package/dist/chunk-GO6DRECI.js +1 -0
  249. package/dist/chunk-GOFVBTMN.js +314 -0
  250. package/dist/chunk-GQIP72ZJ.js +13 -0
  251. package/dist/chunk-GQXLXRFA.js +28 -0
  252. package/dist/chunk-GT6HFKJB.js +48 -0
  253. package/dist/chunk-GVJGSSKM.js +174 -0
  254. package/dist/chunk-GWHGTG37.js +36 -0
  255. package/dist/chunk-GZAJHLKO.js +18 -0
  256. package/dist/chunk-GZK62I3N.js +314 -0
  257. package/dist/chunk-H3HGMISG.js +483 -0
  258. package/dist/chunk-H3ISZJMJ.js +403 -0
  259. package/dist/chunk-H4HXVWEC.js +9 -0
  260. package/dist/chunk-H6MJGKAW.js +120 -0
  261. package/dist/chunk-HBTTGVR5.js +353 -0
  262. package/dist/chunk-HBZ322WZ.js +35 -0
  263. package/dist/chunk-HEP3ILP4.js +34 -0
  264. package/dist/chunk-HGFXODKO.js +106 -0
  265. package/dist/chunk-HHWDTB6S.js +59 -0
  266. package/dist/chunk-HKO45NLZ.js +286 -0
  267. package/dist/chunk-HLVTEA6A.js +89 -0
  268. package/dist/chunk-HS3SY6HN.js +160 -0
  269. package/dist/chunk-HT5OCGKN.js +899 -0
  270. package/dist/chunk-HXIIEMGF.js +78 -0
  271. package/dist/chunk-I56TH7VM.js +46 -0
  272. package/dist/chunk-I6FN3R5D.js +352 -0
  273. package/dist/chunk-I7SCBHJN.js +655 -0
  274. package/dist/chunk-IJM4GKAT.js +529 -0
  275. package/dist/chunk-IMEYU36R.js +344 -0
  276. package/dist/chunk-INJ3SS6A.js +936 -0
  277. package/dist/chunk-IUKOPCCE.js +441 -0
  278. package/dist/chunk-IVEPZQJO.js +33 -0
  279. package/dist/chunk-IVZEONFC.js +43 -0
  280. package/dist/chunk-IWBHRSG7.js +936 -0
  281. package/dist/chunk-IYY3HQAD.js +484 -0
  282. package/dist/chunk-J2ICMYDA.js +48 -0
  283. package/dist/chunk-J2QCFLUN.js +505 -0
  284. package/dist/chunk-J5HM6V5P.js +1039 -0
  285. package/dist/chunk-J6NZX6QH.js +398 -0
  286. package/dist/chunk-JBBB2Y47.js +432 -0
  287. package/dist/chunk-JDCZQZU7.js +42 -0
  288. package/dist/chunk-JEDNXGSS.js +169 -0
  289. package/dist/chunk-JHP7OT6K.js +89 -0
  290. package/dist/chunk-JLS65NUQ.js +14 -0
  291. package/dist/chunk-JNMWYMC6.js +38 -0
  292. package/dist/chunk-JNSTWNNW.js +25 -0
  293. package/dist/chunk-JOSK6GEU.js +9564 -0
  294. package/dist/chunk-JQUMSIGC.js +100 -0
  295. package/dist/chunk-JVHGMURQ.js +1106 -0
  296. package/dist/chunk-JYXS47FQ.js +951 -0
  297. package/dist/chunk-K2ZMW2Z5.js +2147 -0
  298. package/dist/chunk-K7FAFORM.js +14 -0
  299. package/dist/chunk-KBJXX3ON.js +333 -0
  300. package/dist/chunk-KHFKVQWY.js +486 -0
  301. package/dist/chunk-KHMEI3DQ.js +173 -0
  302. package/dist/chunk-KHW3UD7B.js +69 -0
  303. package/dist/chunk-KKQKWAMF.js +365 -0
  304. package/dist/chunk-KOKXJV2U.js +455 -0
  305. package/dist/chunk-KQ4NGOJI.js +14 -0
  306. package/dist/chunk-KQYQOXMS.js +342 -0
  307. package/dist/chunk-KTMW65UX.js +14 -0
  308. package/dist/chunk-KUEWV2JH.js +593 -0
  309. package/dist/chunk-KXYDV3HP.js +1523 -0
  310. package/dist/chunk-KZ4JMGZ5.js +96 -0
  311. package/dist/chunk-KZWGBUIO.js +2659 -0
  312. package/dist/chunk-L2CBG5IX.js +1892 -0
  313. package/dist/chunk-L2S235CU.js +314 -0
  314. package/dist/chunk-L32WD57F.js +98 -0
  315. package/dist/chunk-LDJCKAJP.js +123 -0
  316. package/dist/chunk-LDWNBEN7.js +541 -0
  317. package/dist/chunk-LJVH57G2.js +241 -0
  318. package/dist/chunk-LPQ7NZEN.js +209 -0
  319. package/dist/chunk-LRGH3CCV.js +148 -0
  320. package/dist/chunk-LULOGMMM.js +1133 -0
  321. package/dist/chunk-LWGKN2GY.js +8284 -0
  322. package/dist/chunk-LX4F24ZH.js +157 -0
  323. package/dist/chunk-M4BUEXXF.js +839 -0
  324. package/dist/chunk-M6UHOC4I.js +553 -0
  325. package/dist/chunk-MCBNWZNO.js +657 -0
  326. package/dist/chunk-MEMSY6VY.js +223 -0
  327. package/dist/chunk-MHLEZQQI.js +145 -0
  328. package/dist/chunk-MJ6WNSIX.js +192 -0
  329. package/dist/chunk-MKASIKWZ.js +442 -0
  330. package/dist/chunk-MNOVBYFU.js +60 -0
  331. package/dist/chunk-MO2BYAAF.js +2896 -0
  332. package/dist/chunk-MP6P7Y2A.js +180 -0
  333. package/dist/chunk-MQ4TFJAG.js +3365 -0
  334. package/dist/chunk-MT2WAIR3.js +131 -0
  335. package/dist/chunk-MTU7VTNN.js +1122 -0
  336. package/dist/chunk-MULMXX4V.js +150 -0
  337. package/dist/chunk-MW2DWWVA.js +147 -0
  338. package/dist/chunk-MY3ZPUN4.js +151 -0
  339. package/dist/chunk-MYLH2S4G.js +64 -0
  340. package/dist/chunk-MZ5WYKNA.js +28 -0
  341. package/dist/chunk-N3Q2JNPV.js +249 -0
  342. package/dist/chunk-N5DX4JAK.js +12 -0
  343. package/dist/chunk-NAINGKHF.js +35 -0
  344. package/dist/chunk-NEQUQHOX.js +223 -0
  345. package/dist/chunk-NHNPEZS4.js +1408 -0
  346. package/dist/chunk-NHTIXJCR.js +17 -0
  347. package/dist/chunk-NKLPMBNV.js +1154 -0
  348. package/dist/chunk-NMVZ5YES.js +199 -0
  349. package/dist/chunk-NRFRY3GE.js +256 -0
  350. package/dist/chunk-NTD6CSI6.js +1266 -0
  351. package/dist/chunk-NUO7B3SH.js +318 -0
  352. package/dist/chunk-NVOHIJKG.js +1319 -0
  353. package/dist/chunk-NXH3RX7O.js +523 -0
  354. package/dist/chunk-NXZ3DURF.js +257 -0
  355. package/dist/chunk-O26L6F7F.js +209 -0
  356. package/dist/chunk-O5RRIUEP.js +124 -0
  357. package/dist/chunk-O5X6BKAO.js +10 -0
  358. package/dist/chunk-O6ZQUVTR.js +31 -0
  359. package/dist/chunk-O7FE75QZ.js +306 -0
  360. package/dist/chunk-OC7Z6AJQ.js +81 -0
  361. package/dist/chunk-OH7IEZ63.js +307 -0
  362. package/dist/chunk-OI734GRS.js +115 -0
  363. package/dist/chunk-OJBH62DK.js +684 -0
  364. package/dist/chunk-OKJLVSTJ.js +247 -0
  365. package/dist/chunk-OMX5VL43.js +79 -0
  366. package/dist/chunk-ONHAMBN6.js +12 -0
  367. package/dist/chunk-ONYPLIVE.js +753 -0
  368. package/dist/chunk-OSK7QWPD.js +637 -0
  369. package/dist/chunk-OTXLMJKP.js +438 -0
  370. package/dist/chunk-OV5PKQMA.js +213 -0
  371. package/dist/chunk-OXK5HA4B.js +31 -0
  372. package/dist/chunk-OYDWFQA4.js +272 -0
  373. package/dist/chunk-OZAUKWHB.js +22 -0
  374. package/dist/chunk-P5P2EKGH.js +94 -0
  375. package/dist/chunk-P6SSWAKY.js +29 -0
  376. package/dist/chunk-P7CQGPLS.js +30 -0
  377. package/dist/chunk-P7RVCHQV.js +197 -0
  378. package/dist/chunk-PEBWDYIW.js +726 -0
  379. package/dist/chunk-PFCXFO7A.js +9193 -0
  380. package/dist/chunk-PFLDWMX6.js +168 -0
  381. package/dist/chunk-PHZGLQSK.js +15883 -0
  382. package/dist/chunk-PNFTPNSR.js +20 -0
  383. package/dist/chunk-PPHXX4W7.js +175 -0
  384. package/dist/chunk-PPZESPJT.js +262 -0
  385. package/dist/chunk-PRDHI2L5.js +296 -0
  386. package/dist/chunk-PSTKWHHN.js +32 -0
  387. package/dist/chunk-PV53ODOT.js +555 -0
  388. package/dist/chunk-PVJBTI7P.js +24 -0
  389. package/dist/chunk-PXKERBKX.js +100 -0
  390. package/dist/chunk-PZ5AY32C.js +10 -0
  391. package/dist/chunk-Q3DHEZA5.js +85 -0
  392. package/dist/chunk-Q5RZDVQK.js +204 -0
  393. package/dist/chunk-Q64IR2Z2.js +4933 -0
  394. package/dist/chunk-Q6Z5UGPL.js +398 -0
  395. package/dist/chunk-QAMAV4DT.js +627 -0
  396. package/dist/chunk-QBWF4444.js +112 -0
  397. package/dist/chunk-QDKYT4CI.js +22805 -0
  398. package/dist/chunk-QFLBRWCJ.js +126 -0
  399. package/dist/chunk-QILAQACE.js +107 -0
  400. package/dist/chunk-QJ6OEH4K.js +3683 -0
  401. package/dist/chunk-QK3NLYTV.js +320 -0
  402. package/dist/chunk-QOFLUS24.js +535 -0
  403. package/dist/chunk-QOIASNEJ.js +98 -0
  404. package/dist/chunk-QP4UTSOV.js +3587 -0
  405. package/dist/chunk-QP5ST7RI.js +904 -0
  406. package/dist/chunk-QS5AGRZN.js +167 -0
  407. package/dist/chunk-QTAOU53N.js +107 -0
  408. package/dist/chunk-QTCLJHLZ.js +351 -0
  409. package/dist/chunk-QTOLTG4L.js +119 -0
  410. package/dist/chunk-QWDV4OSL.js +142 -0
  411. package/dist/chunk-QWMQ74KD.js +508 -0
  412. package/dist/chunk-QX6LOMMH.js +158 -0
  413. package/dist/chunk-QXBKIHY7.js +238 -0
  414. package/dist/chunk-QXBKTJT6.js +270 -0
  415. package/dist/chunk-QYQOVOLR.js +196 -0
  416. package/dist/chunk-R2CKS6WT.js +73 -0
  417. package/dist/chunk-R2TIYG7U.js +68 -0
  418. package/dist/chunk-R2W3LESH.js +465 -0
  419. package/dist/chunk-R5EXHMUN.js +100 -0
  420. package/dist/chunk-RBBTBCHX.js +289 -0
  421. package/dist/chunk-RBKLOUXA.js +121 -0
  422. package/dist/chunk-RCP2Y6DQ.js +86 -0
  423. package/dist/chunk-RCYEJSD5.js +260 -0
  424. package/dist/chunk-RFDVSI4N.js +134 -0
  425. package/dist/chunk-RGJU63FV.js +1717 -0
  426. package/dist/chunk-RI4EX2QE.js +18 -0
  427. package/dist/chunk-RIMARPCF.js +152 -0
  428. package/dist/chunk-RJ6RSNT6.js +42 -0
  429. package/dist/chunk-RNI2GUIF.js +131 -0
  430. package/dist/chunk-RPHUWJ3K.js +264 -0
  431. package/dist/chunk-RPIMAMV7.js +361 -0
  432. package/dist/chunk-RQFX6YRN.js +49 -0
  433. package/dist/chunk-RRC5BL7B.js +285 -0
  434. package/dist/chunk-RSYTSBOO.js +79 -0
  435. package/dist/chunk-RWQQIKIC.js +35 -0
  436. package/dist/chunk-RZUBOZH2.js +373 -0
  437. package/dist/chunk-S2E632FQ.js +380 -0
  438. package/dist/chunk-S2VQCZO4.js +22 -0
  439. package/dist/chunk-S2XIMQJQ.js +681 -0
  440. package/dist/chunk-S47ISY27.js +183 -0
  441. package/dist/chunk-S6I4KISU.js +142 -0
  442. package/dist/chunk-S6TAFQI5.js +2403 -0
  443. package/dist/chunk-SBBNT5ZJ.js +27 -0
  444. package/dist/chunk-SDJV2DTQ.js +491 -0
  445. package/dist/chunk-SDPIFNLD.js +33 -0
  446. package/dist/chunk-SF6YK3JI.js +835 -0
  447. package/dist/chunk-SK3ZFONO.js +976 -0
  448. package/dist/chunk-SKTFRFQ7.js +1775 -0
  449. package/dist/chunk-SNGM452K.js +2002 -0
  450. package/dist/chunk-STW7OFOA.js +581 -0
  451. package/dist/chunk-SU6UFUQY.js +1351 -0
  452. package/dist/chunk-SVJM3LJA.js +27 -0
  453. package/dist/chunk-SVUNZOPG.js +129 -0
  454. package/dist/chunk-T5XLUYV3.js +34 -0
  455. package/dist/chunk-T7E5JS6N.js +57 -0
  456. package/dist/chunk-TA3N5MMO.js +450 -0
  457. package/dist/chunk-TAJPCXSB.js +13 -0
  458. package/dist/chunk-TDEMDRN2.js +1639 -0
  459. package/dist/chunk-TDSEX5CF.js +24 -0
  460. package/dist/chunk-TGCVL74Y.js +28 -0
  461. package/dist/chunk-TGXXYDL4.js +1012 -0
  462. package/dist/chunk-TIKTYUJO.js +296 -0
  463. package/dist/chunk-TIZAJD4M.js +6029 -0
  464. package/dist/chunk-TLSEZZCG.js +5549 -0
  465. package/dist/chunk-TMBDRHAX.js +19 -0
  466. package/dist/chunk-TRURQUBP.js +1217 -0
  467. package/dist/chunk-TSQ256N5.js +152 -0
  468. package/dist/chunk-TUQMMFEQ.js +2244 -0
  469. package/dist/chunk-U424MJLC.js +81 -0
  470. package/dist/chunk-U4DRS6ZW.js +11 -0
  471. package/dist/chunk-U5KS22IN.js +204 -0
  472. package/dist/chunk-UAPHFJPN.js +673 -0
  473. package/dist/chunk-UB7LQITD.js +1040 -0
  474. package/dist/chunk-UBVRHGAZ.js +237 -0
  475. package/dist/chunk-UDNNAQN5.js +98 -0
  476. package/dist/chunk-UJP3XM54.js +342 -0
  477. package/dist/chunk-UJYDH2MW.js +305 -0
  478. package/dist/chunk-UKMPASIC.js +399 -0
  479. package/dist/chunk-UKUL3EHK.js +763 -0
  480. package/dist/chunk-UPHU64NB.js +1327 -0
  481. package/dist/chunk-URMSZXAD.js +43 -0
  482. package/dist/chunk-US3RT6CY.js +525 -0
  483. package/dist/chunk-UTDEOPKV.js +30 -0
  484. package/dist/chunk-UUUDKV7N.js +13 -0
  485. package/dist/chunk-UVKWU3SM.js +39 -0
  486. package/dist/chunk-V2TVPO3X.js +521 -0
  487. package/dist/chunk-V3KLVK7B.js +398 -0
  488. package/dist/chunk-V3YFFHDR.js +17 -0
  489. package/dist/chunk-VAG6GUBR.js +1162 -0
  490. package/dist/chunk-VBENAHDA.js +1814 -0
  491. package/dist/chunk-VBNCKCCI.js +16 -0
  492. package/dist/chunk-VCGSWN5M.js +1300 -0
  493. package/dist/chunk-VE2O2I7M.js +115 -0
  494. package/dist/chunk-VIFHYTI5.js +31 -0
  495. package/dist/chunk-VJER3FUS.js +5080 -0
  496. package/dist/chunk-VLMDM56Q.js +268 -0
  497. package/dist/chunk-VMFZEVVX.js +99 -0
  498. package/dist/chunk-VNDPQVUZ.js +1853 -0
  499. package/dist/chunk-VSPJRLGA.js +4783 -0
  500. package/dist/chunk-VSWC5ZXI.js +103 -0
  501. package/dist/chunk-VYI4DSZP.js +2017 -0
  502. package/dist/chunk-W4BAIQ6L.js +1212 -0
  503. package/dist/chunk-W7VQAL2K.js +2203 -0
  504. package/dist/chunk-WEI3ZDZH.js +33 -0
  505. package/dist/chunk-WEIUS5NT.js +26 -0
  506. package/dist/chunk-WEW7UFWE.js +546 -0
  507. package/dist/chunk-WGQAXLNA.js +384 -0
  508. package/dist/chunk-WJAL4JL3.js +206 -0
  509. package/dist/chunk-WKFOJ5ZG.js +141 -0
  510. package/dist/chunk-WMWQEFLN.js +2177 -0
  511. package/dist/chunk-WNECKKO2.js +154 -0
  512. package/dist/chunk-WPKLYOAM.js +195 -0
  513. package/dist/chunk-WSH37YQN.js +243 -0
  514. package/dist/chunk-WV3KQDPE.js +84 -0
  515. package/dist/chunk-WZFC4V4U.js +389 -0
  516. package/dist/chunk-XCOIBNET.js +13 -0
  517. package/dist/chunk-XDM65LBX.js +53 -0
  518. package/dist/chunk-XGU6PBO5.js +645 -0
  519. package/dist/chunk-XHOI4V62.js +43 -0
  520. package/dist/chunk-XIBVFMLQ.js +6858 -0
  521. package/dist/chunk-XJ2E7YEJ.js +117 -0
  522. package/dist/chunk-XON4ZCYX.js +69 -0
  523. package/dist/chunk-XQPEWJPI.js +127 -0
  524. package/dist/chunk-XSJTIFUY.js +31 -0
  525. package/dist/chunk-XT7OVWM3.js +64 -0
  526. package/dist/chunk-XTXYIISX.js +1104 -0
  527. package/dist/chunk-XV7NZL4B.js +57 -0
  528. package/dist/chunk-XWIZ6B5S.js +109 -0
  529. package/dist/chunk-XWLIKOBX.js +240 -0
  530. package/dist/chunk-XZOXEIN4.js +156 -0
  531. package/dist/chunk-XZRS7I7W.js +3673 -0
  532. package/dist/chunk-Y4ZDDHB6.js +44 -0
  533. package/dist/chunk-Y733RB7T.js +194 -0
  534. package/dist/chunk-YBHUB4XR.js +14931 -0
  535. package/dist/chunk-YKC75XK4.js +147 -0
  536. package/dist/chunk-YKMXFVK7.js +27 -0
  537. package/dist/chunk-YO5BAJ55.js +225 -0
  538. package/dist/chunk-YPDCLXNZ.js +568 -0
  539. package/dist/chunk-YSQPGVFK.js +116 -0
  540. package/dist/chunk-YTVVTIWJ.js +716 -0
  541. package/dist/chunk-YVCMDVBB.js +698 -0
  542. package/dist/chunk-YYTOA6DP.js +114 -0
  543. package/dist/chunk-Z5WGNULV.js +88 -0
  544. package/dist/chunk-Z6NGVVXG.js +66 -0
  545. package/dist/chunk-Z7CDQNH3.js +20 -0
  546. package/dist/chunk-ZH4G3FU5.js +187 -0
  547. package/dist/chunk-ZJB6SQPA.js +257 -0
  548. package/dist/chunk-ZL6E4HMY.js +42 -0
  549. package/dist/chunk-ZMLOC3DW.js +62 -0
  550. package/dist/chunk-ZORW64QH.js +101 -0
  551. package/dist/chunk-ZVVD2XGV.js +1369 -0
  552. package/dist/cli-utils-ER33ODC5.js +31 -0
  553. package/dist/cli-validation-6CHPTANV.js +146 -0
  554. package/dist/commit-utils-3STAY7C7.js +49 -0
  555. package/dist/compatibility-notice-IHNXR2JR.js +21 -0
  556. package/dist/compete-config-resolver-V3GDNJMM.js +125 -0
  557. package/dist/compete-results-XUM3PJHS.js +318 -0
  558. package/dist/competition-outcome-tracker-NWSMVUPG.js +62 -0
  559. package/dist/config-4HHE4OIK.js +238 -0
  560. package/dist/config-D6YAZASH.js +10 -0
  561. package/dist/config-MIPRDYYV.js +46 -0
  562. package/dist/config-audit-GA5DCUAI.js +371 -0
  563. package/dist/config-explain-4LMO556H.js +71 -0
  564. package/dist/config-loader-RGP634PC.js +51 -0
  565. package/dist/config-manager-J2UTO635.js +114 -0
  566. package/dist/config-merger-TVUJBZTS.js +14 -0
  567. package/dist/config-validator-H4ZVIE56.js +122 -0
  568. package/dist/cost-HSIV5U2Y.js +85 -0
  569. package/dist/data-migration-state-OAUL2WPQ.js +35 -0
  570. package/dist/db-migrator-NUOW5NKR.js +34 -0
  571. package/dist/default-paths-UILB62BN.js +49 -0
  572. package/dist/discovery-V6GYUJUC.js +53 -0
  573. package/dist/doctor-BBSMCDWE.js +271 -0
  574. package/dist/doctor-context-blocks-LPY75VZA.js +231 -0
  575. package/dist/doctor-instructions-import-JXHDDOE5.js +70 -0
  576. package/dist/doctor-purpose-6YJOXPBE.js +30 -0
  577. package/dist/domain-analyzer-S35ABUNA.js +48 -0
  578. package/dist/ensure-initialized-Q6PEU55O.js +78 -0
  579. package/dist/entry.js +922 -0
  580. package/dist/error-parser-core-MZFMFANN.js +70 -0
  581. package/dist/evaluation-context-GQBYDAEV.js +63 -0
  582. package/dist/evidence-plan-resolver-5FUAP3SA.js +111 -0
  583. package/dist/execution-data-writer-YCG5UH37.js +72 -0
  584. package/dist/execution-policy-applier-PWZM5LNA.js +63 -0
  585. package/dist/execution-preflight-DASJWWQF.js +223 -0
  586. package/dist/execution-roles-KNSNNB2D.js +112 -0
  587. package/dist/exit-code-error-QIY5DOKF.js +18 -0
  588. package/dist/external-temp-cleanup-CAW7LQ6R.js +360 -0
  589. package/dist/factory-YCYCB7AE.js +209 -0
  590. package/dist/file-utils-ZQYNBQBW.js +45 -0
  591. package/dist/flywheel-allowlist-revert-H22HA6JE.js +21 -0
  592. package/dist/flywheel-autoloop-executor-PDOASJEZ.js +316 -0
  593. package/dist/flywheel-autoloop-unverified-TOKYFCDC.js +36 -0
  594. package/dist/flywheel-competition-executor-YJUMMEJO.js +320 -0
  595. package/dist/flywheel-executor-JWU43KAY.js +437 -0
  596. package/dist/flywheel-git-isolation-FQ2TRWMB.js +56 -0
  597. package/dist/flywheel-manifest-HDPNMWWF.js +114 -0
  598. package/dist/flywheel-model-defaults-UHAKTZT3.js +110 -0
  599. package/dist/flywheel-preflight-III2C7TH.js +163 -0
  600. package/dist/flywheel-resume-2O45MS7Y.js +31 -0
  601. package/dist/flywheel-resume-execution-lease-P2BK257J.js +59 -0
  602. package/dist/flywheel-safety-AVAVFXIJ.js +19 -0
  603. package/dist/flywheel-scope-decision-ALJUUNGG.js +14 -0
  604. package/dist/get-telemetry-logger-MPDVO2JA.js +155 -0
  605. package/dist/git-message-style-KCXGMTDT.js +104 -0
  606. package/dist/guidance-profile-config-G3K5YQOO.js +113 -0
  607. package/dist/guidance-profile-renderer-TX4TNDFL.js +23 -0
  608. package/dist/identity-XLQJ4YJF.js +25 -0
  609. package/dist/index-query-6NUY4FKX.js +37 -0
  610. package/dist/index.js +85588 -0
  611. package/dist/indexer-DL54CM3K.js +44 -0
  612. package/dist/init-OUZ72344.js +245 -0
  613. package/dist/instructions-import-offer-NSYXSITC.js +363 -0
  614. package/dist/instructions-run-NBII7W36.js +114 -0
  615. package/dist/interrupted-work-E4TLKJLE.js +43 -0
  616. package/dist/invoke-provider-auth-NEWEIHCI.js +38 -0
  617. package/dist/judge-scoring.json +64 -0
  618. package/dist/lab-mode-YXQ2Y3NG.js +44 -0
  619. package/dist/lab-utils-5QAMDJR5.js +29 -0
  620. package/dist/linux-host-class-YDWQX65O.js +31 -0
  621. package/dist/llm-judge-executor-OJSNCTFJ.js +179 -0
  622. package/dist/local-ci-config-VZ4WWDT5.js +48 -0
  623. package/dist/local-executor-DCMDDRX2.js +280 -0
  624. package/dist/logger-5KNKS3O4.js +154 -0
  625. package/dist/matrix-prompt-builder-4ZBOGZSB.js +527 -0
  626. package/dist/matrix-result-parser-EZJM4YXP.js +14 -0
  627. package/dist/merge-batch-RTEEMVDB.js +313 -0
  628. package/dist/merge-batch-members-VIWGVRHP.js +24 -0
  629. package/dist/merge-queue-TIIUSOY6.js +126 -0
  630. package/dist/merge-queue-trust-DUNZ4J65.js +21 -0
  631. package/dist/metadata-UKSMWM6J.js +29 -0
  632. package/dist/model-catalog-readiness-R5KJBP5M.js +202 -0
  633. package/dist/model-invocations-db-XTUPPQ34.js +70 -0
  634. package/dist/model-resolver-JFZ2MHOJ.js +39 -0
  635. package/dist/model-resolver-SCQ57KAQ.js +217 -0
  636. package/dist/model-roles-D3OR4NAH.js +110 -0
  637. package/dist/monitor-F4SIU5G2.js +96 -0
  638. package/dist/nested-worktrees-2WUWQ75N.js +23 -0
  639. package/dist/next-S3IRLVER.js +96 -0
  640. package/dist/next-UKPFRXOO.js +148 -0
  641. package/dist/opportunistic-TL4S26VX.js +86 -0
  642. package/dist/optimization-config-resolver-NAEIYU6A.js +148 -0
  643. package/dist/package-HJR4QJT4.js +10 -0
  644. package/dist/parse-git-status-7PIYFPS2.js +21 -0
  645. package/dist/path-security-5WJSY56G.js +41 -0
  646. package/dist/paths-JUI7C4KU.js +45 -0
  647. package/dist/plan-backlog-list-fast-SSTQL5XP.js +89 -0
  648. package/dist/plan-backlog-show-fast-PFRAQ3JB.js +114 -0
  649. package/dist/plan-sprint-list-fast-HD2KBZSY.js +110 -0
  650. package/dist/plan-sprint-status-fast-YFYH7WQF.js +116 -0
  651. package/dist/plan-task-status-fast-JU5PNLUU.js +114 -0
  652. package/dist/plan-to-flywheel-PY5MSY2H.js +529 -0
  653. package/dist/preflight-PJHGTJNZ.js +12 -0
  654. package/dist/process-registry-B4ZUCN7T.js +28 -0
  655. package/dist/process-scanner-TU3QHWVB.js +23 -0
  656. package/dist/processes-6FHVGT72.js +28 -0
  657. package/dist/processes-json-fast-YWTMUWXB.js +72 -0
  658. package/dist/profile-HWTC56SG.js +209 -0
  659. package/dist/project-runtime-paths-2UQNG5Y4.js +41 -0
  660. package/dist/protected-branches-N36LDBFY.js +71 -0
  661. package/dist/provider-aware-resource-manager-YTFAHNGJ.js +40 -0
  662. package/dist/provider-matrix-2KO2V5OM.js +214 -0
  663. package/dist/provider-matrix-renderer-MEC3PER7.js +139 -0
  664. package/dist/provider-output-forwarding-2AHL7YMA.js +26 -0
  665. package/dist/provider-registry-WCZ65QHC.js +136 -0
  666. package/dist/provider-temp-cleanup-IUNPJCZF.js +14 -0
  667. package/dist/prune-engine-EOQVWEP6.js +448 -0
  668. package/dist/publication-turn-S42RZTQF.js +44 -0
  669. package/dist/quality-gate-JQMVCKOO.js +72 -0
  670. package/dist/quickstart-3O6FRCFB.js +105 -0
  671. package/dist/readiness-GW6ABRHB.js +139 -0
  672. package/dist/readiness-KFZCXDTT.js +215 -0
  673. package/dist/registry-7XG376SY.js +217 -0
  674. package/dist/repair-helpers-TTV5FEF4.js +117 -0
  675. package/dist/repo-root-YG6MQZDW.js +28 -0
  676. package/dist/resolution-engine-FFEK7HQ2.js +187 -0
  677. package/dist/resolve-provider-cli-ZEXVZKET.js +44 -0
  678. package/dist/restore-telemetry-db-E7BR5PO7.js +459 -0
  679. package/dist/routing-events-AW6SRZ6G.js +13 -0
  680. package/dist/routing-history-store-FMDDQL6W.js +39 -0
  681. package/dist/routing-planner-C6OHO3EY.js +221 -0
  682. package/dist/runner-KHDNQ5KU.js +1194 -0
  683. package/dist/runner-PIS2BW7Y.js +1801 -0
  684. package/dist/safety-E3JJVSFL.js +67 -0
  685. package/dist/safety-stanza-HE6GXP4G.js +49 -0
  686. package/dist/sandbox-7LBZC5PE.js +72 -0
  687. package/dist/sandbox-ASWCDYZL.js +80 -0
  688. package/dist/schema-extensions.sql +234 -0
  689. package/dist/security-JI22TBEB.js +17 -0
  690. package/dist/setup-bb-plugin-FQXLA76Y.js +531 -0
  691. package/dist/setup-claude-code-NF4ZSHVE.js +197 -0
  692. package/dist/setup-temp-cleanup-2APZ4HMA.js +29 -0
  693. package/dist/shared-utils-34HJZ6JX.js +40 -0
  694. package/dist/simple-artifact-goal-MQLDDMMX.js +29 -0
  695. package/dist/sprint-N7JFTEGL.js +403 -0
  696. package/dist/sprint-bridge-KJXIBNRJ.js +117 -0
  697. package/dist/sprint-completion-dependents-34SR7JVL.js +43 -0
  698. package/dist/sprint-execution-service-A6JPUBWY.js +376 -0
  699. package/dist/sprint-manager-MU2ZUWN2.js +140 -0
  700. package/dist/sqlite-timeout-config-U2CT4LKU.js +13 -0
  701. package/dist/sqlite-wrapper-FSGJ2QEW.js +19 -0
  702. package/dist/stale-cleanup-orchestrator-4X6324VF.js +71 -0
  703. package/dist/storage-access-I3V5LER7.js +31 -0
  704. package/dist/store-XVG64ZR2.js +25 -0
  705. package/dist/task-classifier-MN2DYE5R.js +558 -0
  706. package/dist/task-list-fast-7AT6LTTA.js +112 -0
  707. package/dist/task-manager-LHPBBRRE.js +136 -0
  708. package/dist/task-report-OLPAWBTK.js +64 -0
  709. package/dist/task-type-detector-6RG3YNZF.js +27 -0
  710. package/dist/task-type-resolver-EQHOUIHT.js +64 -0
  711. package/dist/telemetry-5VYSK772.js +212 -0
  712. package/dist/telemetry-health-tracker-4GFW2EMP.js +12 -0
  713. package/dist/telemetry-path-resolver-H3NFHHQY.js +34 -0
  714. package/dist/telemetry-reliability-URJDTNPZ.js +76 -0
  715. package/dist/transports-NREZQTJK.js +106 -0
  716. package/dist/unified-cost-tracker-5MTBJ2CL.js +59 -0
  717. package/dist/unified-state-cleanup-GGAXLHXF.js +292 -0
  718. package/dist/universal-cost-calculator-JTFEJVWK.js +70 -0
  719. package/dist/user-agents-QLIGPLP2.js +30 -0
  720. package/dist/variant-execution-I4ZZUAWY.js +319 -0
  721. package/dist/variant-opt-parser-JHCXKY2K.js +251 -0
  722. package/dist/variant-request-input-PL37N3AN.js +11 -0
  723. package/dist/variant-state-cleanup-KHMXRBZN.js +287 -0
  724. package/dist/variant-worker-COB5YTJX.js +4517 -0
  725. package/dist/variant-worker.js +26 -0
  726. package/dist/variants-XGDSXYG3.js +267 -0
  727. package/dist/verification-command-YSPU4VBH.js +66 -0
  728. package/dist/verify-command-timeout-DQUYH33Z.js +11 -0
  729. package/dist/verify-commands-LOHMOFKC.js +65 -0
  730. package/dist/warning-JSKSFKBT.js +13 -0
  731. package/dist/work-edge-K65NHVWY.js +50 -0
  732. package/dist/work-item-writer-KY5ZWZWW.js +30 -0
  733. package/dist/worker-JNXXEIT6.js +1504 -0
  734. package/dist/worker.js +21 -0
  735. package/dist/workspace-tree-identity-JO5PSKTW.js +52 -0
  736. package/dist/worktree-environment-WTVABAQW.js +64 -0
  737. package/dist/worktree-metrics-VZRQI26T.js +66 -0
  738. package/dist/writeback-TQFQBJNU.js +50 -0
  739. package/docs/CLI_REFERENCE.md +8287 -0
  740. package/docs/PROVIDER_SETUP.md +1737 -0
  741. package/docs/README.md +96 -0
  742. package/docs/TROUBLESHOOTING.md +2209 -0
  743. package/docs/getting-started/QUICK_START.md +260 -0
  744. package/docs/getting-started/README.md +198 -0
  745. package/docs/getting-started/SETUP.md +25 -0
  746. package/docs/reference/AGENT_CONTEXT.md +84 -0
  747. package/docs/reference/DELIVERY_ONBOARDING.md +198 -0
  748. package/docs/reference/PROVIDER_RELEASE_TIERS.md +34 -0
  749. package/docs/reference/SECURITY.md +291 -0
  750. package/docs/reference/TELEMETRY_PRIVACY.md +259 -0
  751. package/integrations/bb-plugin-build/README.md +391 -0
  752. package/integrations/bb-plugin-build/app.css +431 -0
  753. package/integrations/bb-plugin-build/app.tsx +6210 -0
  754. package/integrations/bb-plugin-build/package.json +45 -0
  755. package/integrations/bb-plugin-build/server.ts +488 -0
  756. package/integrations/bb-plugin-build/src/adapter.ts +3672 -0
  757. package/integrations/bb-plugin-build/src/backlog-authoring-model.ts +150 -0
  758. package/integrations/bb-plugin-build/src/backlog-authoring-schema.ts +458 -0
  759. package/integrations/bb-plugin-build/src/backlog-authoring-service.ts +467 -0
  760. package/integrations/bb-plugin-build/src/backlog-authoring-view.ts +1025 -0
  761. package/integrations/bb-plugin-build/src/command-evidence-schema.ts +13 -0
  762. package/integrations/bb-plugin-build/src/competition-defaults-schema.ts +122 -0
  763. package/integrations/bb-plugin-build/src/competition-defaults-service.ts +105 -0
  764. package/integrations/bb-plugin-build/src/competition-defaults-view.ts +138 -0
  765. package/integrations/bb-plugin-build/src/contract.ts +718 -0
  766. package/integrations/bb-plugin-build/src/execution-activity-view.ts +98 -0
  767. package/integrations/bb-plugin-build/src/finalize-model.ts +205 -0
  768. package/integrations/bb-plugin-build/src/finalize-schema.ts +150 -0
  769. package/integrations/bb-plugin-build/src/finalize-service.ts +330 -0
  770. package/integrations/bb-plugin-build/src/finalize-view.ts +159 -0
  771. package/integrations/bb-plugin-build/src/judge-operations-readback.ts +303 -0
  772. package/integrations/bb-plugin-build/src/judge-operations-schema.ts +33 -0
  773. package/integrations/bb-plugin-build/src/judge-operations-view.ts +459 -0
  774. package/integrations/bb-plugin-build/src/model.ts +1318 -0
  775. package/integrations/bb-plugin-build/src/monitor-service.ts +233 -0
  776. package/integrations/bb-plugin-build/src/panel-read-ux.ts +97 -0
  777. package/integrations/bb-plugin-build/src/patch-preview-schema.ts +166 -0
  778. package/integrations/bb-plugin-build/src/patch-preview-service.ts +480 -0
  779. package/integrations/bb-plugin-build/src/patch-preview-view.ts +109 -0
  780. package/integrations/bb-plugin-build/src/planning-readback.ts +228 -0
  781. package/integrations/bb-plugin-build/src/planning-service.ts +647 -0
  782. package/integrations/bb-plugin-build/src/planning-sync-evidence.ts +37 -0
  783. package/integrations/bb-plugin-build/src/planning-workspace-readback.ts +33 -0
  784. package/integrations/bb-plugin-build/src/planning-workspace-schema.ts +131 -0
  785. package/integrations/bb-plugin-build/src/planning-workspace.ts +333 -0
  786. package/integrations/bb-plugin-build/src/poll-handoff.ts +136 -0
  787. package/integrations/bb-plugin-build/src/project-target-server.ts +21 -0
  788. package/integrations/bb-plugin-build/src/project-target.ts +45 -0
  789. package/integrations/bb-plugin-build/src/reference-index.ts +218 -0
  790. package/integrations/bb-plugin-build/src/repository-identity.ts +17 -0
  791. package/integrations/bb-plugin-build/src/repository-schema.ts +30 -0
  792. package/integrations/bb-plugin-build/src/result-explorer-view.ts +597 -0
  793. package/integrations/bb-plugin-build/src/result-readback-model.ts +163 -0
  794. package/integrations/bb-plugin-build/src/result-readback-schema.ts +319 -0
  795. package/integrations/bb-plugin-build/src/result-readback-service.ts +333 -0
  796. package/integrations/bb-plugin-build/src/run-page-view.ts +332 -0
  797. package/integrations/bb-plugin-build/src/setup-config-schema.ts +293 -0
  798. package/integrations/bb-plugin-build/src/setup-config-service.ts +620 -0
  799. package/integrations/bb-plugin-build/src/setup-config-view.ts +388 -0
  800. package/integrations/bb-plugin-build/src/sprint-close-model.ts +150 -0
  801. package/integrations/bb-plugin-build/src/sprint-close-schema.ts +128 -0
  802. package/integrations/bb-plugin-build/src/sprint-close-service.ts +293 -0
  803. package/integrations/bb-plugin-build/src/sprint-close-view.ts +116 -0
  804. package/integrations/bb-plugin-build/src/sprint-composition-model.ts +709 -0
  805. package/integrations/bb-plugin-build/src/sprint-composition-readback.ts +231 -0
  806. package/integrations/bb-plugin-build/src/sprint-composition-schema.ts +597 -0
  807. package/integrations/bb-plugin-build/src/sprint-composition-service.ts +773 -0
  808. package/integrations/bb-plugin-build/src/sprint-composition-view.ts +1221 -0
  809. package/integrations/bb-plugin-build/src/sprint-execution-schema.ts +188 -0
  810. package/integrations/bb-plugin-build/src/sprint-execution-service.ts +289 -0
  811. package/integrations/bb-plugin-build/src/sprint-execution-view.ts +54 -0
  812. package/integrations/bb-plugin-build/src/task-authoring-model.ts +563 -0
  813. package/integrations/bb-plugin-build/src/task-authoring-schema.ts +629 -0
  814. package/integrations/bb-plugin-build/src/task-authoring-service.ts +842 -0
  815. package/integrations/bb-plugin-build/src/task-authoring-view.ts +1227 -0
  816. package/integrations/bb-plugin-build/src/task-catalog-schema.ts +46 -0
  817. package/integrations/bb-plugin-build/src/task-catalog-service.ts +44 -0
  818. package/integrations/bb-plugin-build/src/task-detail-readback.ts +56 -0
  819. package/integrations/bb-plugin-build/src/task-detail-schema.ts +171 -0
  820. package/integrations/bb-plugin-build/src/task-navigation.ts +446 -0
  821. package/integrations/bb-plugin-build/src/workbench-route.ts +74 -0
  822. package/package.json +306 -4
  823. package/schemas/README.md +80 -0
  824. package/schemas/build.config.schema.json +2110 -0
  825. package/schemas/config-v1.schema.json +136 -0
  826. package/schemas/execution-config.schema.json +47 -0
  827. package/schemas/judge-scoring.schema.json +257 -0
  828. package/schemas/provider-config.schema.json +179 -0
  829. package/schemas/telemetry-config.schema.json +79 -0
  830. package/schemas/user-preferences.schema.json +141 -0
  831. package/scripts/assert-node-runtime.mjs +146 -0
  832. package/scripts/preflight-native.mjs +49 -0
  833. package/scripts/setup-git-hooks.mjs +39 -0
  834. package/scripts/sync.sh +2871 -0
  835. package/scripts/write-node-launcher.sh +138 -0
  836. package/src/resources/gemini/slash-packs/default/plan.toml +15 -0
  837. package/src/resources/gemini/slash-packs/default/summary.toml +16 -0
  838. package/src/resources/gemini/slash-packs/default/tests.toml +16 -0
  839. package/templates/.build-project/README.md +41 -0
  840. package/templates/.build-project/agents/README.md +50 -0
  841. package/templates/.build-project/agents/architect.md +10 -0
  842. package/templates/.build-project/agents/code-reviewer.md +10 -0
  843. package/templates/.build-project/agents/debugger.md +10 -0
  844. package/templates/.build-project/agents/documenter.md +10 -0
  845. package/templates/.build-project/agents/test-automator.md +10 -0
  846. package/templates/.build-project/config/build.config.jsonc +64 -0
  847. package/templates/.build-project/config/project-context.template.json +6 -0
  848. package/templates/.build-project/config/task-type-aliases.presets/kanban.yaml +14 -0
  849. package/templates/.build-project/config/task-type-aliases.presets/scrum.yaml +17 -0
  850. package/templates/.build-project/config/task-type-aliases.presets/xp.yaml +12 -0
  851. package/templates/.build-project/config/task-type-aliases.yaml +29 -0
  852. package/templates/.build-project/gitignore.template +70 -0
  853. package/templates/.build-project/task-types/analysis.yaml +38 -0
  854. package/templates/.build-project/task-types/architecture.yaml +35 -0
  855. package/templates/.build-project/task-types/doc.yaml +34 -0
  856. package/templates/.build-project/task-types/feature.yaml +22 -0
  857. package/templates/.build-project/task-types/general.yaml +4 -0
  858. package/templates/.build-project/task-types/security.yaml +38 -0
  859. package/templates/AGENTS.template.md +85 -0
  860. package/templates/CLAUDE.template.md +1 -0
  861. package/templates/GEMINI.template.md +1 -0
  862. package/templates/builtin-workflows/code-review.yaml +73 -0
  863. package/templates/builtin-workflows/skills/code-review/SKILL.md +61 -0
  864. package/templates/builtin-workflows/skills/execution-contract-analysis/SKILL.md +24 -0
  865. package/templates/builtin-workflows/skills/execution-contract-code/SKILL.md +19 -0
  866. package/templates/builtin-workflows/skills/execution-contract-structured/SKILL.md +17 -0
  867. package/templates/ci/incident-intake.mjs +787 -0
  868. package/templates/ci/incidents.yml.template +103 -0
  869. package/templates/ci/node.yml.template +17 -0
  870. package/templates/ci/python.yml.template +17 -0
  871. package/templates/guard-kit/GUARD_SETUP.md.template +258 -0
  872. package/templates/guard-kit/build-guard.yml.template +189 -0
  873. package/templates/guard-kit/check.mjs.template +932 -0
  874. package/templates/guard-kit/config.json.template +7 -0
  875. package/templates/guard-kit/policy.json.template +1 -0
  876. package/templates/profiles/README.md +57 -0
  877. package/templates/profiles/frontier-claude.json +23 -0
  878. package/templates/profiles/frontier-codex.json +23 -0
@@ -0,0 +1,716 @@
1
+ import {
2
+ REVIEW_INSPECTION_RULE
3
+ } from "./chunk-HBZ322WZ.js";
4
+ import {
5
+ EXECUTION_CONTRACT_STRUCTURED_ID
6
+ } from "./chunk-R2W3LESH.js";
7
+ import {
8
+ appendNativeSubagentGuidance,
9
+ removeNativeSubagentGuidance
10
+ } from "./chunk-7SEWU4QG.js";
11
+ import {
12
+ extractAcceptanceCriteria
13
+ } from "./chunk-XON4ZCYX.js";
14
+ import {
15
+ DEFAULT_ORCHESTRATOR_MAX_SUB_STAGES
16
+ } from "./chunk-EJVCDTAN.js";
17
+ import {
18
+ parseReviewPolicy,
19
+ reviewPolicyBlocks,
20
+ reviewPolicyFromLegacy,
21
+ reviewPolicyRepairs
22
+ } from "./chunk-7RMARDVH.js";
23
+ import {
24
+ getProviderRuntimeQuirks
25
+ } from "./chunk-Y733RB7T.js";
26
+ import {
27
+ getCapability
28
+ } from "./chunk-QJ6OEH4K.js";
29
+ import {
30
+ normalizeReasoningEffortInput
31
+ } from "./chunk-4BTDUT2S.js";
32
+
33
+ // src/automation/execution-policy-applier.ts
34
+ import { createHash } from "crypto";
35
+
36
+ // src/automation/execution-policy-substage-budget.ts
37
+ function widenSeededSubStageBudget(orchestrator, injectedSubStageCount) {
38
+ const ceiling = orchestrator?.maxSubStages ?? DEFAULT_ORCHESTRATOR_MAX_SUB_STAGES;
39
+ if (ceiling >= injectedSubStageCount) return orchestrator;
40
+ return {
41
+ ...orchestrator,
42
+ maxSubStages: injectedSubStageCount,
43
+ plannedSubStageCeiling: orchestrator?.plannedSubStageCeiling ?? ceiling
44
+ };
45
+ }
46
+
47
+ // src/automation/review-acceptance-criteria.ts
48
+ function isCriteriaList(value) {
49
+ return Array.isArray(value) && value.every((entry) => typeof entry === "string" && entry.trim().length > 0);
50
+ }
51
+ function resolveReviewAcceptanceCriteria(stage) {
52
+ if (stage.templateVariables && Object.hasOwn(stage.templateVariables, "reviewAcceptanceCriteria")) {
53
+ const criteria = stage.templateVariables.reviewAcceptanceCriteria;
54
+ if (!isCriteriaList(criteria))
55
+ throw new Error("reviewAcceptanceCriteria must be an array of nonempty strings");
56
+ return [...criteria];
57
+ }
58
+ return extractAcceptanceCriteria(stage.prompt ?? "", { checkboxFallback: false });
59
+ }
60
+ function hasLegacyReviewAcceptancePrompt(stage, diffOutputName, reviewerPrompt) {
61
+ return !Object.hasOwn(stage.templateVariables ?? {}, "reviewAcceptanceCriteria") && resolveReviewAcceptanceCriteria(stage).length > 0 && reviewerPrompt === buildReviewerPrompt(stage.id, diffOutputName);
62
+ }
63
+ function encodeReviewAcceptanceCriteria(criteria) {
64
+ return Buffer.from(JSON.stringify(criteria), "utf8").toString("base64url");
65
+ }
66
+ function decodeReviewAcceptanceCriteria(encoded) {
67
+ if (!/^[A-Za-z0-9_-]+$/.test(encoded))
68
+ throw new Error("acceptance criteria must be base64url-encoded JSON");
69
+ const bytes = Buffer.from(encoded, "base64url");
70
+ if (bytes.toString("base64url") !== encoded)
71
+ throw new Error("acceptance criteria encoding is malformed");
72
+ const criteria = JSON.parse(bytes.toString("utf8"));
73
+ if (!isCriteriaList(criteria))
74
+ throw new Error("acceptance criteria must decode to an array of nonempty strings");
75
+ return criteria;
76
+ }
77
+ function assessReviewAcceptanceCriteria(raw, expected) {
78
+ const invalid = (untrustedReason) => ({ rows: [], untrustedReason });
79
+ if (!Array.isArray(raw)) return invalid("reviewer omitted the expected acceptance criteria rows");
80
+ const expectedById = new Map(expected.map((criterion, index) => [`AC${index + 1}`, criterion]));
81
+ const rowsById = /* @__PURE__ */ new Map();
82
+ for (const entry of raw) {
83
+ if (entry === null || typeof entry !== "object" || Array.isArray(entry))
84
+ return invalid("malformed acceptance criterion row");
85
+ const row = entry;
86
+ if (typeof row.id !== "string" || !expectedById.has(row.id))
87
+ return invalid("unexpected acceptance criterion ID");
88
+ if (rowsById.has(row.id)) return invalid(`duplicate acceptance criterion ${row.id}`);
89
+ if (row.status !== "met" && row.status !== "not_met" && row.status !== "not_assessable")
90
+ return invalid(`malformed acceptance criterion status for ${row.id}`);
91
+ if (typeof row.evidence !== "string" || row.evidence.trim().length === 0)
92
+ return invalid(`missing acceptance criterion evidence for ${row.id}`);
93
+ rowsById.set(row.id, {
94
+ id: row.id,
95
+ criterion: expectedById.get(row.id),
96
+ status: row.status,
97
+ evidence: row.evidence
98
+ });
99
+ }
100
+ const missing = [...expectedById.keys()].filter((id) => !rowsById.has(id));
101
+ if (missing.length > 0) return invalid(`missing acceptance criteria: ${missing.join(", ")}`);
102
+ return { rows: [...expectedById.keys()].map((id) => rowsById.get(id)) };
103
+ }
104
+ function buildReviewerPrompt(execId, diffOutputName, criteria = []) {
105
+ const findingsContract = '{"inspection":"completed"|"unavailable","reason":"<why the inspection was unavailable, omit when completed>","findings":[{"severity":"critical"|"high"|"medium"|"low","file":"<path>","line":<number optional>,"summary":"<one line>","evidence":"<file:line you read, or command you ran, that confirms the claim>"}]}';
106
+ const contract = criteria.length > 0 ? `${findingsContract.slice(0, -1)},"acceptanceCriteria":[{"id":"AC<n>","status":"met"|"not_met"|"not_assessable","evidence":"<what establishes this assessment or prevents assessment>"}]}` : findingsContract;
107
+ return [
108
+ `You are performing a read-only code review of the diff produced by the '${execId}' execution stage.`,
109
+ "This is a fresh review invocation: do not continue any prior mutation-owning session, and do not modify any files.",
110
+ `The diff is provided as input artifact '${execId}.${diffOutputName}'.`,
111
+ "The full post-change repository is checked out read-only in your working directory.",
112
+ "",
113
+ "Analyze the diff for correctness bugs, security issues, and clear regressions.",
114
+ "",
115
+ "Verification duty:",
116
+ "- Before reporting a finding that depends on how a called function, helper, resolver, or configuration behaves, open that definition in the checkout and confirm the claim. Do not infer callee behaviour from the diff alone.",
117
+ "- Report only defects this diff introduces or newly exposes. Do not report behaviour the diff leaves unchanged as a finding.",
118
+ "- Each finding names the concrete failure: which input or state produces which wrong output, crash, data loss, or exposure.",
119
+ ...criteria.length > 0 ? [
120
+ "",
121
+ "Acceptance criteria assigned to this execution stage:",
122
+ JSON.stringify(criteria.map((criterion, index) => ({ id: `AC${index + 1}`, criterion }))),
123
+ "Assess every listed criterion against the delivered work. Report met, not_met, or not_assessable with evidence for each exact ID. Missing evidence is not_assessable, never met.",
124
+ "Report criterion assessments separately from source findings; do not invent a filename or repair finding for an unmet criterion."
125
+ ] : [],
126
+ "",
127
+ "Respond with ONLY a JSON object matching this exact contract:",
128
+ contract,
129
+ "",
130
+ "Rules:",
131
+ `- ${REVIEW_INSPECTION_RULE}`,
132
+ '- "findings" must be an array (empty when you find nothing).',
133
+ '- "severity" must be one of "critical", "high", "medium", or "low".',
134
+ '- "evidence" is required for every finding at severity "medium" or above.',
135
+ "- Emit the JSON object as your entire response; wrapping it in a ```json fenced block is acceptable."
136
+ ].join("\n");
137
+ }
138
+
139
+ // src/automation/stage-provider-selection.ts
140
+ function resolveNativeSubagentsTransport(provider) {
141
+ return getProviderRuntimeQuirks(provider)?.nativeSubagentsDefaultTransport;
142
+ }
143
+ function supportsNativeSubagents(provider) {
144
+ return getCapability(provider, "provider_native_subagents") === true;
145
+ }
146
+ function executorRoleSelection(before, bound, cliProviderOverride, role) {
147
+ if (cliProviderOverride || before.provider || before.model || !bound.provider) return void 0;
148
+ const subagents = role.subagents.value === "off" ? void 0 : role.subagents.value;
149
+ return {
150
+ candidates: "provider-order",
151
+ provider: bound.provider,
152
+ ...bound.model ? { model: bound.model } : {},
153
+ ...subagents !== void 0 ? { subagents } : {},
154
+ ...subagents !== void 0 && before.providerExecutionTransport == null ? { transport: role.transport.value } : {}
155
+ };
156
+ }
157
+ function automaticProviderSelection(stage, current, unpinned) {
158
+ const selection = stage.providerSelection;
159
+ if (selection) {
160
+ const unchanged = selection.provider === stage.provider && (selection.model ?? "") === (stage.model ?? "");
161
+ return unchanged ? selection : void 0;
162
+ }
163
+ if (stage.provider || stage.model) return void 0;
164
+ return {
165
+ candidates: unpinned,
166
+ provider: current.provider,
167
+ ...current.model ? { model: current.model } : {}
168
+ };
169
+ }
170
+ function rebindPromptForProvider(prompt, selection, provider) {
171
+ if (selection?.subagents === void 0) return prompt;
172
+ const base = removeNativeSubagentGuidance(prompt);
173
+ return supportsNativeSubagents(provider) ? appendNativeSubagentGuidance(base, selection.subagents).prompt : base;
174
+ }
175
+ function rebindStageForProvider(stage, target) {
176
+ const selection = stage.providerSelection;
177
+ const next = { ...stage, provider: target.provider, model: target.model };
178
+ if (!selection) return next;
179
+ next.providerSelection = { ...selection, provider: target.provider, model: target.model };
180
+ if (stage.prompt !== void 0) {
181
+ next.prompt = rebindPromptForProvider(stage.prompt, selection, target.provider);
182
+ }
183
+ if (selection.transport !== void 0) {
184
+ next.providerExecutionTransport = supportsNativeSubagents(target.provider) ? selection.transport !== "auto" ? selection.transport : resolveNativeSubagentsTransport(target.provider) ?? "tmux-exec" : void 0;
185
+ }
186
+ return next;
187
+ }
188
+ function isStageProviderSelection(value) {
189
+ if (!value || typeof value !== "object" || Array.isArray(value)) return false;
190
+ const record = value;
191
+ return (record.candidates === "provider-order" || record.candidates === "planning-order") && typeof record.provider === "string" && record.provider.length > 0 && (record.model === void 0 || typeof record.model === "string");
192
+ }
193
+
194
+ // src/automation/execution-policy-applier.ts
195
+ var EXECUTION_POLICY_STAMP_VERSION = 6;
196
+ function hasCurrentExecutionPolicyStampShape(stamp) {
197
+ if (!stamp || stamp.applied !== true || stamp.version !== EXECUTION_POLICY_STAMP_VERSION) {
198
+ return false;
199
+ }
200
+ const assurance = stamp.reviewAssurance;
201
+ const preflight = stamp.preflight;
202
+ return Boolean(
203
+ /^[a-f0-9]{16}$/.test(stamp.rolesFingerprint) && assurance && assurance.executorSeparation === "separated" && assurance.invocationSeparation === "required-fresh-readonly" && assurance.invocationSeparationVerified === false && preflight?.executor.provider.trim() && preflight.reviewer.provider.trim() && parseReviewPolicy(preflight.reviewer.policy) !== null && preflight.reviewer.gate !== "off" && ["critical", "high", "medium", "low"].includes(preflight.reviewer.threshold) && preflight.reviewer.sameVendorReview === false && !providerIdsEqual(preflight.executor.provider, preflight.reviewer.provider)
204
+ );
205
+ }
206
+ function providerIdsEqual(left, right) {
207
+ return left.trim().toLowerCase() === right.trim().toLowerCase();
208
+ }
209
+ function canonicalJson(value) {
210
+ if (value === void 0) return "null";
211
+ if (value === null || typeof value !== "object") return JSON.stringify(value) ?? "null";
212
+ if (Array.isArray(value)) return `[${value.map(canonicalJson).join(",")}]`;
213
+ const entries = Object.entries(value).filter(([, entryValue]) => entryValue !== void 0).sort(([left], [right]) => left < right ? -1 : left > right ? 1 : 0);
214
+ return `{${entries.map(([key, entryValue]) => `${JSON.stringify(key)}:${canonicalJson(entryValue)}`).join(",")}}`;
215
+ }
216
+ function computeExecutionPolicyFingerprint(stages, reviewAssurance, preflight) {
217
+ const {
218
+ policySource: _policySource,
219
+ policySourceKind: _policySourceKind,
220
+ ...reviewer
221
+ } = preflight.reviewer;
222
+ const fingerprintPreflight = { ...preflight, reviewer };
223
+ return createHash("sha256").update(canonicalJson({ stages, reviewAssurance, preflight: fingerprintPreflight })).digest("hex").slice(0, 16);
224
+ }
225
+ function describeExecutionPolicyStampMismatch(stamp, workflow) {
226
+ if (stamp.version !== EXECUTION_POLICY_STAMP_VERSION) {
227
+ return `found version ${String(stamp.version)}, expected ${EXECUTION_POLICY_STAMP_VERSION}`;
228
+ }
229
+ const stages = workflow?.stages.flatMap((stage) => [
230
+ stage,
231
+ ...stage.seededPlan?.subStages ?? []
232
+ ]);
233
+ if (stages?.some(
234
+ (stage) => hasLegacyReviewAcceptancePrompt(
235
+ stage,
236
+ stage.type === "competition" ? COMPETITION_WINNER_DIFF_OUTPUT : EXECUTION_DIFF_OUTPUT,
237
+ stages.find((review) => review.id === reviewerStageId(stage.id))?.prompt
238
+ )
239
+ )) {
240
+ return "saved workflow uses the earlier criteria-free reviewer contract for a task with acceptance criteria; generate a current workflow with `build run sprint <sprint-id> --dry-run` and inspect it before starting a new run. Automatic migration of completed stages is unavailable; keep the existing workflow and run artifacts for recovery";
241
+ }
242
+ return `stamp version ${String(stamp.version)} is current, but the stamp no longer matches the persisted workflow (stage topology or role bindings drifted)`;
243
+ }
244
+ function hasCanonicalReviewTuple(stagesById, executionStage, preflight) {
245
+ const { reviewer } = preflight;
246
+ const isCompetition = executionStage.type === "competition";
247
+ const diffOutputName = isCompetition ? COMPETITION_WINNER_DIFF_OUTPUT : EXECUTION_DIFF_OUTPUT;
248
+ const reviewId = reviewerStageId(executionStage.id);
249
+ const reviewStage = stagesById.get(reviewId);
250
+ let acceptanceCriteria;
251
+ try {
252
+ acceptanceCriteria = resolveReviewAcceptanceCriteria(executionStage);
253
+ } catch {
254
+ return false;
255
+ }
256
+ if (!reviewStage || reviewStage.type !== "standard" || !providerIdsEqual(reviewStage.provider ?? "", reviewer.provider) || reviewer.model && reviewStage.model !== reviewer.model || reviewStage.deps?.length !== 1 || reviewStage.deps[0] !== executionStage.id || reviewStage.capabilities?.modifiesFiles !== false || reviewStage.capabilities.executionIntent !== "analysis" || reviewStage.templateVariables?.reviewInvocationSeparation !== "required-fresh-readonly" || reviewStage.templateVariables.reviewInvocationSeparationVerified !== false || reviewStage.templateVariables.reviewRole !== "reviewer" || reviewStage.inputs?.length !== 1 || reviewStage.inputs[0] !== `${executionStage.id}.${diffOutputName}` || reviewStage.outputs?.findings !== "text" || reviewStage.prompt !== buildReviewerPrompt(executionStage.id, diffOutputName, acceptanceCriteria)) {
257
+ return false;
258
+ }
259
+ const gateStage = stagesById.get(gateStageId(executionStage.id));
260
+ const parsedPolicy = parseReviewPolicy(reviewer.policy);
261
+ if (!parsedPolicy) return false;
262
+ const expectedGate = buildGateStage(executionStage, reviewStage, parsedPolicy);
263
+ return Boolean(
264
+ gateStage && gateStage.type === "verify" && JSON.stringify(gateStage.deps) === JSON.stringify(expectedGate.deps) && JSON.stringify(gateStage.inputs) === JSON.stringify(expectedGate.inputs) && JSON.stringify(gateStage.verify) === JSON.stringify(expectedGate.verify)
265
+ );
266
+ }
267
+ function isInjectedReviewStage(stage) {
268
+ return stage.type === "standard" && stage.capabilities?.modifiesFiles === false && stage.capabilities.executionIntent === "analysis" && stage.templateVariables?.reviewRole === "reviewer" && stage.templateVariables.reviewInvocationSeparation === "required-fresh-readonly";
269
+ }
270
+ function reviewStageVariantOverrides(stage) {
271
+ return isInjectedReviewStage(stage) ? {
272
+ analysisVerificationPolicy: "skip",
273
+ promptContractOverride: { id: EXECUTION_CONTRACT_STRUCTURED_ID }
274
+ } : {};
275
+ }
276
+ function isInjectedReviewGateStage(stage) {
277
+ return stage.type === "verify" && typeof stage.templateVariables?.reviewGateAnnotationFile === "string";
278
+ }
279
+ function mapGateStagesToExecutionStages(workflow) {
280
+ const gateToExecution = /* @__PURE__ */ new Map();
281
+ const stageLists = [workflow.stages];
282
+ for (const stage of workflow.stages) {
283
+ if (stage.type === "orchestrator" && stage.seededPlan) {
284
+ stageLists.push(stage.seededPlan.subStages);
285
+ }
286
+ }
287
+ for (const stages of stageLists) {
288
+ const byId = new Map(stages.map((stage) => [stage.id, stage]));
289
+ for (const stage of stages) {
290
+ if (!isInjectedReviewGateStage(stage)) continue;
291
+ const reviewerId = stage.deps?.[0];
292
+ const reviewer = reviewerId ? byId.get(reviewerId) : void 0;
293
+ const executionId = reviewer?.deps?.[0];
294
+ if (reviewer && executionId && byId.has(executionId)) {
295
+ gateToExecution.set(stage.id, executionId);
296
+ }
297
+ }
298
+ }
299
+ return gateToExecution;
300
+ }
301
+ function isCurrentExecutionPolicyWorkflow(workflow) {
302
+ const stamp = workflow.metadata?.executionPolicy;
303
+ if (!hasCurrentExecutionPolicyStampShape(stamp) || !stamp?.preflight) return false;
304
+ const { executor, reviewer } = stamp.preflight;
305
+ if (stamp.rolesFingerprint !== computeExecutionPolicyFingerprint(workflow.stages, stamp.reviewAssurance, stamp.preflight)) {
306
+ return false;
307
+ }
308
+ const stageLists = [workflow.stages];
309
+ for (const stage of workflow.stages) {
310
+ if (stage.type === "orchestrator" && stage.seededPlan) {
311
+ stageLists.push(stage.seededPlan.subStages);
312
+ }
313
+ }
314
+ for (const stages of stageLists) {
315
+ const byId = new Map(stages.map((stage) => [stage.id, stage]));
316
+ const potentialExecutionStages = stages.filter(isExecutionStage);
317
+ const reviewerIds = /* @__PURE__ */ new Set();
318
+ for (const executionStage of potentialExecutionStages) {
319
+ if (hasCanonicalReviewTuple(byId, executionStage, stamp.preflight)) {
320
+ reviewerIds.add(reviewerStageId(executionStage.id));
321
+ }
322
+ }
323
+ const executionStages = potentialExecutionStages.filter((stage) => !reviewerIds.has(stage.id));
324
+ for (const executionStage of executionStages) {
325
+ const isCompetition = executionStage.type === "competition";
326
+ const diffOutputName = isCompetition ? COMPETITION_WINNER_DIFF_OUTPUT : EXECUTION_DIFF_OUTPUT;
327
+ if (executionStage.outputs?.[diffOutputName] !== "diff") return false;
328
+ if (isCompetition) {
329
+ const variants = executionStage.competition?.variants ?? [];
330
+ if (variants.length === 0 || variants.some(
331
+ (variant) => !variant.provider.trim() || providerIdsEqual(variant.provider, reviewer.provider)
332
+ )) {
333
+ return false;
334
+ }
335
+ } else if (!providerIdsEqual(executionStage.provider ?? "", executor.provider)) {
336
+ return false;
337
+ }
338
+ const reviewId = reviewerStageId(executionStage.id);
339
+ if (!hasCanonicalReviewTuple(byId, executionStage, stamp.preflight)) return false;
340
+ for (const stage of stages) {
341
+ if (stage.id !== reviewId && stage.deps?.includes(executionStage.id)) return false;
342
+ }
343
+ }
344
+ }
345
+ return true;
346
+ }
347
+ var EXECUTION_STAGE_TYPES = /* @__PURE__ */ new Set([
348
+ "standard",
349
+ "competition"
350
+ ]);
351
+ var EXECUTION_DIFF_OUTPUT = "executionDiff";
352
+ var COMPETITION_WINNER_DIFF_OUTPUT = "winnerDiff";
353
+ function isExecutionPolicyEngaged(roles) {
354
+ if (!roles.reviewer.policy && roles.reviewer.gate?.source === "fallback") {
355
+ return false;
356
+ }
357
+ const policyValue = roles.reviewer.policy?.value ?? reviewPolicyFromLegacy(
358
+ roles.reviewer.gate?.value ?? "off",
359
+ roles.reviewer.threshold?.value ?? "high"
360
+ );
361
+ const policy = parseReviewPolicy(policyValue);
362
+ if (!policy || policy.action === "off") return false;
363
+ if ((roles.reviewer.policy?.source ?? roles.reviewer.gate.source) === "fallback" && (roles.reviewAssurance?.executorSeparation === "same-as-executor" || roles.sameVendorReview)) {
364
+ return false;
365
+ }
366
+ return true;
367
+ }
368
+ function applyExecutionPolicy(workflow, roles, opts = {}) {
369
+ const existingStamp = workflow.metadata?.executionPolicy;
370
+ if (existingStamp !== void 0) {
371
+ if (isCurrentExecutionPolicyWorkflow(workflow)) return workflow;
372
+ throw new Error(
373
+ `Execution policy stamp is stale or malformed (${describeExecutionPolicyStampMismatch(existingStamp, workflow)}); regenerate the workflow.`
374
+ );
375
+ }
376
+ if (!isExecutionPolicyEngaged(roles)) {
377
+ return workflow;
378
+ }
379
+ if (roles.reviewer.policyNotice) {
380
+ opts.onNotice?.(roles.reviewer.policyNotice);
381
+ }
382
+ const rolesWithEffort = roles;
383
+ const policyBinding = roles.reviewer.policy ?? {
384
+ value: reviewPolicyFromLegacy(
385
+ roles.reviewer.gate?.value ?? "off",
386
+ roles.reviewer.threshold?.value ?? "high"
387
+ ),
388
+ source: roles.reviewer.gate?.source ?? "fallback",
389
+ sourcePath: roles.reviewer.gate?.sourcePath
390
+ };
391
+ const policy = parseReviewPolicy(policyBinding.value);
392
+ if (!policy) {
393
+ throw new Error(`Invalid resolved review policy '${policyBinding.value}'`);
394
+ }
395
+ const orderedStages = materializeDefaultSequentialDeps(workflow);
396
+ const nextStages = processStageList(orderedStages, rolesWithEffort, policy, opts).map((stage) => {
397
+ if (stage.type !== "orchestrator") return stage;
398
+ let withProcessedPlan = stage;
399
+ if (stage.seededPlan) {
400
+ const processedSubStages = processStageList(
401
+ stage.seededPlan.subStages,
402
+ rolesWithEffort,
403
+ policy,
404
+ opts
405
+ );
406
+ withProcessedPlan = {
407
+ ...stage,
408
+ seededPlan: {
409
+ ...stage.seededPlan,
410
+ subStages: processedSubStages
411
+ },
412
+ orchestrator: widenSeededSubStageBudget(stage.orchestrator, processedSubStages.length)
413
+ };
414
+ }
415
+ return bindOrchestratorRole(withProcessedPlan, rolesWithEffort, opts);
416
+ });
417
+ const reviewAssurance = roles.reviewAssurance ?? {
418
+ executorSeparation: roles.sameVendorReview ? "same-as-executor" : "separated",
419
+ invocationSeparation: "required-fresh-readonly",
420
+ invocationSeparationVerified: false
421
+ };
422
+ const stampedAssurance = {
423
+ executorSeparation: reviewAssurance.executorSeparation,
424
+ invocationSeparation: "required-fresh-readonly",
425
+ // Declared stage contract only — identity is not observable.
426
+ invocationSeparationVerified: false
427
+ };
428
+ const cliChangesExecutorProvider = Boolean(
429
+ opts.cliProviderOverride && !providerIdsEqual(opts.cliProviderOverride, roles.executor.provider.value)
430
+ );
431
+ const preflight = {
432
+ executor: {
433
+ provider: opts.cliProviderOverride ?? roles.executor.provider.value,
434
+ ...cliChangesExecutorProvider ? {} : { model: roles.executor.model.value }
435
+ },
436
+ reviewer: {
437
+ provider: roles.reviewer.provider.value,
438
+ model: roles.reviewer.model.value,
439
+ policy: policyBinding.value,
440
+ policySource: policyBinding.sourcePath ?? policyBinding.source,
441
+ policySourceKind: policyBinding.source,
442
+ gate: policy.action === "off" ? "off" : policy.action === "advisory" ? "advisory" : "high-severity-blocks",
443
+ threshold: policy.level ?? "high",
444
+ // Compatibility: same meaning as reviewAssurance.executorSeparation === 'same-as-executor'.
445
+ sameVendorReview: reviewAssurance.executorSeparation === "same-as-executor",
446
+ ...roles.reviewer.provider.sourcePath ? { providerSource: roles.reviewer.provider.sourcePath } : {}
447
+ }
448
+ };
449
+ const stamp = {
450
+ applied: true,
451
+ version: EXECUTION_POLICY_STAMP_VERSION,
452
+ rolesFingerprint: computeExecutionPolicyFingerprint(nextStages, stampedAssurance, preflight),
453
+ reviewAssurance: stampedAssurance,
454
+ preflight
455
+ };
456
+ return {
457
+ ...workflow,
458
+ stages: nextStages,
459
+ metadata: {
460
+ ...workflow.metadata ?? {},
461
+ executionPolicy: stamp
462
+ }
463
+ };
464
+ }
465
+ function materializeDefaultSequentialDeps(workflow) {
466
+ if (workflow.strict?.requireExplicitDeps === true) return workflow.stages;
467
+ return workflow.stages.map((stage, index) => {
468
+ if (stage.deps !== void 0 || index === 0) return stage;
469
+ const prevStageId = workflow.stages[index - 1]?.id;
470
+ if (typeof prevStageId !== "string" || prevStageId.length === 0) return stage;
471
+ return { ...stage, deps: [prevStageId] };
472
+ });
473
+ }
474
+ function processStageList(stages, roles, policy, opts) {
475
+ const gateEnabled = policy.action !== "off";
476
+ const bound = stages.map(
477
+ (stage) => isExecutionStage(stage) && stage.type !== "competition" ? bindExecutorRole(stage, roles, opts) : stage
478
+ );
479
+ if (!gateEnabled) {
480
+ return bound;
481
+ }
482
+ const occupiedIds = new Set(bound.map((stage) => stage.id));
483
+ for (const stage of bound) {
484
+ if (!isExecutionStage(stage)) continue;
485
+ for (const reservedId of [reviewerStageId(stage.id), gateStageId(stage.id)]) {
486
+ if (occupiedIds.has(reservedId)) {
487
+ throw new Error(
488
+ `Execution policy cannot inject review stages: stage id '${reservedId}' is already taken by an existing stage. Rename that stage (ids '<exec>-review' and '<exec>-gate' are reserved for policy-injected stages).`
489
+ );
490
+ }
491
+ }
492
+ }
493
+ const gateIdByExecId = /* @__PURE__ */ new Map();
494
+ const injectedReviewerIds = /* @__PURE__ */ new Set();
495
+ const injected = [];
496
+ for (const stage of bound) {
497
+ if (!isExecutionStage(stage)) {
498
+ injected.push(stage);
499
+ continue;
500
+ }
501
+ const isCompetition = stage.type === "competition";
502
+ const diffOutputName = isCompetition ? COMPETITION_WINNER_DIFF_OUTPUT : EXECUTION_DIFF_OUTPUT;
503
+ const execWithDiff = {
504
+ ...stage,
505
+ outputs: { ...stage.outputs ?? {}, [diffOutputName]: "diff" }
506
+ };
507
+ injected.push(execWithDiff);
508
+ const reviewerStage = buildReviewerStage(execWithDiff, roles, diffOutputName);
509
+ const gateStage = buildGateStage(execWithDiff, reviewerStage, policy);
510
+ if (stage.type === "competition" && reviewPolicyRepairs(policy)) {
511
+ opts.onNotice?.(
512
+ `Review policy '${policy.value}' reviews competition winner '${stage.id}' but cannot automatically repair competition stages; blocking findings halt for user action.`
513
+ );
514
+ }
515
+ gateIdByExecId.set(stage.id, gateStage.id);
516
+ injectedReviewerIds.add(reviewerStage.id);
517
+ injected.push(reviewerStage, gateStage);
518
+ }
519
+ return injected.map((stage) => {
520
+ if (injectedReviewerIds.has(stage.id)) return stage;
521
+ if (!stage.deps || stage.deps.length === 0) return stage;
522
+ let changed = false;
523
+ const rewritten = stage.deps.map((dep) => {
524
+ const gateId = gateIdByExecId.get(dep);
525
+ if (gateId && stage.id !== gateId) {
526
+ changed = true;
527
+ return gateId;
528
+ }
529
+ return dep;
530
+ });
531
+ return changed ? { ...stage, deps: dedupe(rewritten) } : stage;
532
+ });
533
+ }
534
+ function isExecutionStage(stage) {
535
+ const type = stage.type ?? "standard";
536
+ return EXECUTION_STAGE_TYPES.has(type);
537
+ }
538
+ function reviewerStageId(execId) {
539
+ return `${execId}-review`;
540
+ }
541
+ function gateStageId(execId) {
542
+ return `${execId}-gate`;
543
+ }
544
+ function bindExecutorRole(stage, roles, opts) {
545
+ const next = { ...stage };
546
+ const executorProvider = opts.cliProviderOverride ?? roles.executor.provider.value;
547
+ next.provider = executorProvider;
548
+ if (!next.model && !opts.cliProviderOverride) {
549
+ next.model = roles.executor.model.value;
550
+ }
551
+ if (next.modelReasoningEffort == null) {
552
+ const effort = readRoleReasoningEffort(roles.executor);
553
+ if (effort) {
554
+ next.modelReasoningEffort = effort;
555
+ }
556
+ }
557
+ const subagents = roles.executor.subagents.value;
558
+ if (subagents !== "off") {
559
+ const supportsNativeSubagents2 = getCapability(executorProvider, "provider_native_subagents") === true;
560
+ if (supportsNativeSubagents2) {
561
+ next.prompt = appendNativeSubagentGuidance(next.prompt ?? "", subagents).prompt;
562
+ if (next.providerExecutionTransport == null) {
563
+ const rolesTransport = roles.executor.transport.value;
564
+ next.providerExecutionTransport = rolesTransport !== "auto" ? rolesTransport : resolveNativeSubagentsTransport(executorProvider) ?? "tmux-exec";
565
+ }
566
+ } else {
567
+ opts.onNotice?.(
568
+ `Execution policy: provider '${executorProvider}' does not support provider-native subagents; subagent guidance skipped for stage '${stage.id}'.`
569
+ );
570
+ }
571
+ }
572
+ const selection = executorRoleSelection(stage, next, opts.cliProviderOverride, roles.executor);
573
+ if (selection) next.providerSelection = selection;
574
+ return next;
575
+ }
576
+ function bindOrchestratorRole(stage, roles, opts) {
577
+ const orch = roles.orchestrator;
578
+ if (!orch) return stage;
579
+ const next = { ...stage };
580
+ const roleMayOverrideComputedDefaults = opts.cliProviderOverride == null;
581
+ if (orch.provider?.value && (!next.provider || roleMayOverrideComputedDefaults)) {
582
+ next.provider = orch.provider.value;
583
+ if (roleMayOverrideComputedDefaults && !orch.model?.value) {
584
+ next.model = void 0;
585
+ }
586
+ }
587
+ if (orch.model?.value && (!next.model || roleMayOverrideComputedDefaults)) {
588
+ next.model = orch.model.value;
589
+ }
590
+ if (next.modelReasoningEffort == null) {
591
+ const effort = readRoleReasoningEffort(orch);
592
+ if (effort) {
593
+ next.modelReasoningEffort = effort;
594
+ }
595
+ }
596
+ if (orch.provider?.value || orch.model?.value || orch.fallbackModel?.value) {
597
+ const fallbackModel = orch.fallbackModel?.value;
598
+ const clearComputedOrchestrationModel = roleMayOverrideComputedDefaults && orch.provider?.value && !orch.model?.value;
599
+ const retainedProvider = next.orchestrator?.orchestrationProvider ?? next.provider;
600
+ const retainedModel = next.orchestrator?.orchestrationModel ?? next.model;
601
+ const fallbackMatchesRetainedBinding = Boolean(
602
+ fallbackModel && orch.provider?.value && retainedProvider && providerIdsEqual(retainedProvider, orch.provider.value) && (!retainedModel || !orch.model?.value || retainedModel === orch.model.value)
603
+ );
604
+ const bindFallback = fallbackModel && (roleMayOverrideComputedDefaults || fallbackMatchesRetainedBinding);
605
+ next.orchestrator = {
606
+ ...next.orchestrator ?? {},
607
+ ...orch.provider?.value && (!next.orchestrator?.orchestrationProvider || roleMayOverrideComputedDefaults) ? { orchestrationProvider: orch.provider.value } : {},
608
+ ...orch.model?.value && (!next.orchestrator?.orchestrationModel || roleMayOverrideComputedDefaults) ? { orchestrationModel: orch.model.value } : {},
609
+ ...bindFallback ? { orchestrationFallbackModel: fallbackModel } : {},
610
+ ...clearComputedOrchestrationModel ? { orchestrationModel: void 0 } : {}
611
+ };
612
+ }
613
+ return next;
614
+ }
615
+ function readRoleReasoningEffort(role) {
616
+ if (!role?.reasoningEffort) return void 0;
617
+ return normalizeReasoningEffortInput(role.reasoningEffort.value);
618
+ }
619
+ function buildReviewerStage(execStage, roles, diffOutputName = EXECUTION_DIFF_OUTPUT) {
620
+ const execId = execStage.id;
621
+ const reviewerEffort = readRoleReasoningEffort(roles.reviewer);
622
+ const reviewer = {
623
+ id: reviewerStageId(execId),
624
+ name: `Review: ${execStage.name ?? execId}`,
625
+ type: "standard",
626
+ deps: [execId],
627
+ provider: roles.reviewer.provider.value,
628
+ model: roles.reviewer.model.value,
629
+ modelRole: roles.reviewer.modelRole?.value ?? "reviewer",
630
+ ...reviewerEffort ? { modelReasoningEffort: reviewerEffort } : {},
631
+ capabilities: {
632
+ modifiesFiles: false,
633
+ producesText: true,
634
+ executionIntent: "analysis"
635
+ },
636
+ // Declared (not verified) assurance: review must be a fresh read-only context.
637
+ templateVariables: {
638
+ reviewInvocationSeparation: "required-fresh-readonly",
639
+ reviewInvocationSeparationVerified: false,
640
+ reviewRole: "reviewer"
641
+ },
642
+ inputs: [`${execId}.${diffOutputName}`],
643
+ outputs: { findings: "text" },
644
+ prompt: buildReviewerPrompt(execId, diffOutputName, resolveReviewAcceptanceCriteria(execStage))
645
+ };
646
+ return reviewer;
647
+ }
648
+ function buildGateStage(execStage, reviewerStage, policy) {
649
+ const execId = execStage.id;
650
+ const reviewerId = reviewerStage.id;
651
+ const mode = reviewPolicyBlocks(policy) ? "blocking" : "advisory";
652
+ const threshold = policy.level ?? "high";
653
+ const findingsFile = `.build-stage-inputs/${reviewerId}.findings.txt`;
654
+ const diffOutputName = execStage.type === "competition" ? COMPETITION_WINNER_DIFF_OUTPUT : EXECUTION_DIFF_OUTPUT;
655
+ const reviewDiffFile = `.build-stage-inputs/${execId}.${diffOutputName}.diff`;
656
+ const annotationFile = `.build-project/tmp/review-gates/${reviewerId}.json`;
657
+ const acceptanceCriteria = resolveReviewAcceptanceCriteria(execStage);
658
+ const command = [
659
+ "build internal review-gate",
660
+ `--findings ${findingsFile}`,
661
+ `--review-diff ${reviewDiffFile}`,
662
+ `--threshold ${threshold}`,
663
+ `--authorization-threshold ${reviewPolicyRepairs(policy) ? threshold : "none"}`,
664
+ `--mode ${mode}`,
665
+ `--policy ${policy.value}`,
666
+ `--annotation-out ${annotationFile}`,
667
+ ...acceptanceCriteria.length > 0 ? [`--acceptance-criteria ${encodeReviewAcceptanceCriteria(acceptanceCriteria)}`] : []
668
+ ].join(" ");
669
+ const authorizedReviewRepair = reviewPolicyRepairs(policy) && execStage.type !== "competition" && execStage.provider && reviewerStage.provider ? {
670
+ enabled: true,
671
+ annotationFile,
672
+ repairProvider: execStage.provider,
673
+ ...execStage.model ? { repairModel: execStage.model } : {},
674
+ ...execStage.providerSelection ? { repairSelection: execStage.providerSelection } : {},
675
+ verifierProvider: reviewerStage.provider,
676
+ ...reviewerStage.model ? { verifierModel: reviewerStage.model } : {},
677
+ maxAttempts: 2
678
+ } : void 0;
679
+ return {
680
+ id: gateStageId(execId),
681
+ name: `Review gate: ${execStage.name ?? execId}`,
682
+ type: "verify",
683
+ deps: [reviewerId],
684
+ inputs: [`${reviewerId}.findings`, `${execId}.${diffOutputName}`],
685
+ templateVariables: {
686
+ reviewPolicy: policy.value,
687
+ reviewGateAnnotationFile: annotationFile,
688
+ ...authorizedReviewRepair ? { authorizedReviewRepair } : {}
689
+ },
690
+ verify: {
691
+ commands: [command]
692
+ }
693
+ };
694
+ }
695
+ function dedupe(values) {
696
+ return Array.from(new Set(values));
697
+ }
698
+
699
+ export {
700
+ decodeReviewAcceptanceCriteria,
701
+ assessReviewAcceptanceCriteria,
702
+ automaticProviderSelection,
703
+ rebindPromptForProvider,
704
+ rebindStageForProvider,
705
+ isStageProviderSelection,
706
+ EXECUTION_POLICY_STAMP_VERSION,
707
+ describeExecutionPolicyStampMismatch,
708
+ isInjectedReviewStage,
709
+ reviewStageVariantOverrides,
710
+ isInjectedReviewGateStage,
711
+ mapGateStagesToExecutionStages,
712
+ isCurrentExecutionPolicyWorkflow,
713
+ isExecutionPolicyEngaged,
714
+ applyExecutionPolicy
715
+ };
716
+ //# sourceMappingURL=chunk-YTVVTIWJ.js.map