@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,1016 @@
1
+ import {
2
+ detectHostConcurrencyBudget
3
+ } from "./chunk-BZRLSZNV.js";
4
+ import {
5
+ runDeterministicTestGateWithArtifacts,
6
+ runLintOnDiffWithArtifacts
7
+ } from "./chunk-JOSK6GEU.js";
8
+ import {
9
+ GATE_OUTPUT_TAIL_LINES,
10
+ runTypecheckWithArtifacts
11
+ } from "./chunk-IWBHRSG7.js";
12
+ import {
13
+ copyConfiguredEnvFilesToWorktree,
14
+ prepareWorktreeDependencies
15
+ } from "./chunk-BIUV23HH.js";
16
+ import {
17
+ pruneGitWorktreeEntries
18
+ } from "./chunk-33IGPPUI.js";
19
+ import {
20
+ atomicWriteJson
21
+ } from "./chunk-RFDVSI4N.js";
22
+ import {
23
+ createLogger
24
+ } from "./chunk-3OPP2OZB.js";
25
+ import {
26
+ parseVerificationErrorsForChannel
27
+ } from "./chunk-PXKERBKX.js";
28
+ import {
29
+ mkBuildTempDir
30
+ } from "./chunk-D6WTZMZB.js";
31
+ import {
32
+ parseFailureOutput,
33
+ resolveVerificationChannelScope,
34
+ selectScopedTestCommands
35
+ } from "./chunk-AHU3FKPA.js";
36
+ import {
37
+ createTypeScriptLocatedErrorPattern,
38
+ extractBiomeJson,
39
+ readBiomeDiagnostics
40
+ } from "./chunk-TUQMMFEQ.js";
41
+ import {
42
+ describeVerificationCommand
43
+ } from "./chunk-EPAMVGI3.js";
44
+ import {
45
+ safeRmDir
46
+ } from "./chunk-ALDTFNZ3.js";
47
+ import {
48
+ resolveVerifyCommandTimeoutMs
49
+ } from "./chunk-2VUEDIUM.js";
50
+ import {
51
+ tailLines
52
+ } from "./chunk-2VLJUXJU.js";
53
+ import {
54
+ execGit
55
+ } from "./chunk-MHLEZQQI.js";
56
+ import {
57
+ processIsAlive
58
+ } from "./chunk-MT2WAIR3.js";
59
+ import {
60
+ getStateDir
61
+ } from "./chunk-56WPYDJH.js";
62
+ import {
63
+ BUILD_VALIDATION_SLOTS,
64
+ readEnv
65
+ } from "./chunk-7VRJHTGZ.js";
66
+
67
+ // src/core/verification/baseline-store.ts
68
+ import { createHash } from "crypto";
69
+ import { mkdir as mkdir2, readFile as readFile2, rm } from "fs/promises";
70
+ import { dirname as dirname2, join } from "path";
71
+ import lockfile from "proper-lockfile";
72
+
73
+ // src/core/git/scratch-worktree.ts
74
+ import * as path from "path";
75
+ var SCRATCH_WORKTREE_ADD_TIMEOUT_MS = 6e4;
76
+ var SCRATCH_WORKTREE_REMOVE_TIMEOUT_MS = 6e4;
77
+ async function removeScratchWorktree(options) {
78
+ const { repoRoot, worktreePath, timeoutMs = SCRATCH_WORKTREE_REMOVE_TIMEOUT_MS } = options;
79
+ await execGit(["worktree", "remove", "--force", worktreePath], {
80
+ cwd: repoRoot,
81
+ timeoutMs
82
+ }).catch(() => void 0);
83
+ await safeRmDir(worktreePath, {
84
+ protectedPaths: [repoRoot],
85
+ managedRoots: [path.dirname(worktreePath)]
86
+ }).catch(() => void 0);
87
+ await pruneGitWorktreeEntries({ cwd: repoRoot, paths: [worktreePath] }).catch(() => void 0);
88
+ }
89
+ async function addScratchWorktree(options) {
90
+ const { repoRoot, worktreePath, ref, timeoutMs = SCRATCH_WORKTREE_ADD_TIMEOUT_MS } = options;
91
+ let failure;
92
+ try {
93
+ const added = await execGit(["worktree", "add", "--detach", worktreePath, ref], {
94
+ cwd: repoRoot,
95
+ timeoutMs
96
+ });
97
+ if (added.exitCode === 0) return { ok: true };
98
+ failure = {
99
+ exitCode: added.exitCode,
100
+ detail: added.stderr.trim() || added.stdout.trim() || "no output"
101
+ };
102
+ } catch (error) {
103
+ failure = {
104
+ exitCode: null,
105
+ detail: error instanceof Error ? error.message : String(error)
106
+ };
107
+ }
108
+ await removeScratchWorktree({ repoRoot, worktreePath });
109
+ return { ok: false, ...failure };
110
+ }
111
+
112
+ // src/core/verification/validation-slots.ts
113
+ import { randomUUID } from "crypto";
114
+ import * as fs from "fs/promises";
115
+ import path2 from "path";
116
+ var logger = createLogger("ValidationSlots");
117
+ var STALE_SLOT_MAX_AGE_MS = 30 * 60 * 1e3;
118
+ var SLOT_HARD_CEILING_MS = 2 * 60 * 60 * 1e3;
119
+ var DEFAULT_MAX_WAIT_MS = 5 * 60 * 1e3;
120
+ var DEFAULT_POLL_INTERVAL_MS = 250;
121
+ var POLL_JITTER_MS = 750;
122
+ function defaultValidationSlotDir() {
123
+ return path2.join(getStateDir(), "validation-slots");
124
+ }
125
+ function isPidAlive(pid) {
126
+ return Number.isInteger(pid) && pid > 0 && processIsAlive(pid);
127
+ }
128
+ async function listSlotFiles(slotDir) {
129
+ const entries = await fs.readdir(slotDir);
130
+ return entries.filter((name) => name.endsWith(".slot"));
131
+ }
132
+ async function cleanupStaleSlots(slotDir, now) {
133
+ const names = await listSlotFiles(slotDir);
134
+ for (const name of names) {
135
+ const filePath = path2.join(slotDir, name);
136
+ try {
137
+ const stat2 = await fs.stat(filePath);
138
+ const ageMs = now - stat2.mtimeMs;
139
+ if (ageMs > SLOT_HARD_CEILING_MS) {
140
+ await fs.unlink(filePath);
141
+ continue;
142
+ }
143
+ let parsed;
144
+ try {
145
+ parsed = JSON.parse(await fs.readFile(filePath, "utf8"));
146
+ } catch {
147
+ if (ageMs > STALE_SLOT_MAX_AGE_MS) await fs.unlink(filePath);
148
+ continue;
149
+ }
150
+ if (!isPidAlive(parsed.pid)) {
151
+ await fs.unlink(filePath);
152
+ }
153
+ } catch {
154
+ }
155
+ }
156
+ }
157
+ async function slotRank(slotDir, ownName) {
158
+ const names = await listSlotFiles(slotDir);
159
+ const ranked = [];
160
+ for (const name of names) {
161
+ try {
162
+ const stat2 = await fs.stat(path2.join(slotDir, name));
163
+ ranked.push({ name, mtimeMs: stat2.mtimeMs });
164
+ } catch {
165
+ }
166
+ }
167
+ ranked.sort((a, b) => a.mtimeMs - b.mtimeMs || a.name.localeCompare(b.name));
168
+ return ranked.findIndex((entry) => entry.name === ownName);
169
+ }
170
+ function sleep(ms) {
171
+ return new Promise((resolve) => setTimeout(resolve, ms));
172
+ }
173
+ var degradedWarned = false;
174
+ function warnDegraded(label, reason, context) {
175
+ if (degradedWarned && reason === "slot-dir-unavailable") return;
176
+ if (reason === "slot-dir-unavailable") degradedWarned = true;
177
+ logger.warn(`Validation slot degraded (${reason}); proceeding unpaced`, { label, ...context });
178
+ }
179
+ function resolveHostLimit(explicit) {
180
+ if (explicit !== void 0) return Math.max(1, Math.floor(explicit));
181
+ const env = readEnv(BUILD_VALIDATION_SLOTS).value;
182
+ if (env !== void 0 && Number.isFinite(env)) {
183
+ if (env <= 0) return null;
184
+ return Math.floor(env);
185
+ }
186
+ return Math.max(1, detectHostConcurrencyBudget().validationSlots);
187
+ }
188
+ async function acquireHostValidationSlot(label, options = {}) {
189
+ const slotDir = options.slotDir ?? defaultValidationSlotDir();
190
+ const hostLimit = resolveHostLimit(options.hostLimit);
191
+ if (hostLimit === null) {
192
+ return { degraded: false, release: async () => {
193
+ } };
194
+ }
195
+ const maxWaitMs = options.maxWaitMs ?? DEFAULT_MAX_WAIT_MS;
196
+ const pollIntervalMs = options.pollIntervalMs ?? DEFAULT_POLL_INTERVAL_MS;
197
+ const ownName = `${process.pid}-${randomUUID()}.slot`;
198
+ const ownPath = path2.join(slotDir, ownName);
199
+ const deadline = Date.now() + maxWaitMs;
200
+ try {
201
+ await fs.mkdir(slotDir, { recursive: true });
202
+ } catch (error) {
203
+ warnDegraded(label, "slot-dir-unavailable", { slotDir, error: String(error) });
204
+ return { degraded: true, release: async () => {
205
+ } };
206
+ }
207
+ let waitedLogged = false;
208
+ for (; ; ) {
209
+ try {
210
+ await cleanupStaleSlots(slotDir, Date.now());
211
+ const occupied = (await listSlotFiles(slotDir)).length;
212
+ if (occupied < hostLimit) {
213
+ const content = {
214
+ pid: process.pid,
215
+ createdAt: (/* @__PURE__ */ new Date()).toISOString(),
216
+ label
217
+ };
218
+ await fs.writeFile(ownPath, JSON.stringify(content), { flag: "wx" });
219
+ const rank = await slotRank(slotDir, ownName);
220
+ if (rank >= 0 && rank < hostLimit) {
221
+ return {
222
+ degraded: false,
223
+ release: async () => {
224
+ try {
225
+ await fs.unlink(ownPath);
226
+ } catch {
227
+ }
228
+ }
229
+ };
230
+ }
231
+ await fs.unlink(ownPath).catch(() => {
232
+ });
233
+ }
234
+ } catch (error) {
235
+ warnDegraded(label, "slot-dir-unavailable", { slotDir, error: String(error) });
236
+ return { degraded: true, release: async () => {
237
+ } };
238
+ }
239
+ if (Date.now() >= deadline) {
240
+ warnDegraded(label, "wait-deadline", { slotDir, hostLimit, maxWaitMs });
241
+ return { degraded: true, release: async () => {
242
+ } };
243
+ }
244
+ if (!waitedLogged) {
245
+ waitedLogged = true;
246
+ logger.info("Waiting for a host validation slot", { label, hostLimit });
247
+ }
248
+ await sleep(pollIntervalMs + Math.floor(Math.random() * POLL_JITTER_MS));
249
+ }
250
+ }
251
+ async function withValidationSlot(label, fn, options = {}) {
252
+ const lease = await acquireHostValidationSlot(label, options);
253
+ try {
254
+ return await fn();
255
+ } finally {
256
+ await lease.release();
257
+ }
258
+ }
259
+
260
+ // src/core/verification/baseline-capture.ts
261
+ var BASELINE_SCHEMA_VERSION = 7;
262
+ var DEFAULT_OPTIONS = {
263
+ changedSinceRef: "",
264
+ skipTests: false,
265
+ skipLint: false,
266
+ outputTailLines: GATE_OUTPUT_TAIL_LINES,
267
+ changedFiles: []
268
+ };
269
+ function resolveGateExitCode(rawExitCode, okHint, didNotRun = false) {
270
+ if (didNotRun) return 0;
271
+ if (typeof rawExitCode === "number") return rawExitCode;
272
+ if (okHint === true) return 0;
273
+ return 1;
274
+ }
275
+ function channelCommands(channel) {
276
+ if (Array.isArray(channel.commands) && channel.commands.length > 0) return channel.commands;
277
+ if (channel.command?.trim()) return [channel.command];
278
+ return [];
279
+ }
280
+ function commandDominanceRank(result) {
281
+ const status = result.status;
282
+ if (status === "timeout" || result.exitCode === 124) return 1;
283
+ if (status === "unavailable") return 2;
284
+ if (status === "skipped" || status === "passed" || status === "not_run" || result.exitCode === 0) {
285
+ return 3;
286
+ }
287
+ return 0;
288
+ }
289
+ function selectDominantCommandResult(results) {
290
+ if (results.length === 0) return void 0;
291
+ let dominant = results[0];
292
+ let best = commandDominanceRank(dominant);
293
+ for (let i = 1; i < results.length; i++) {
294
+ const candidate = results[i];
295
+ const rank = commandDominanceRank(candidate);
296
+ if (rank < best) {
297
+ dominant = candidate;
298
+ best = rank;
299
+ }
300
+ }
301
+ return dominant;
302
+ }
303
+ function normalizeTypeError(line) {
304
+ const match = createTypeScriptLocatedErrorPattern("parenthesized", {
305
+ message: "code-prefix",
306
+ locationWhitespace: "optional"
307
+ }).exec(line);
308
+ if (match) {
309
+ return `${match[1]}:${match[2]}:${match[3]}:${match[4]}`;
310
+ }
311
+ const altMatch = createTypeScriptLocatedErrorPattern("colon", {
312
+ message: "code-prefix",
313
+ locationWhitespace: "optional"
314
+ }).exec(line);
315
+ if (altMatch) {
316
+ return `${altMatch[1]}:${altMatch[2]}:${altMatch[3]}:${altMatch[4]}`;
317
+ }
318
+ return null;
319
+ }
320
+ function extractTypeErrors(output) {
321
+ const errors = [];
322
+ for (const line of output.split(/\r?\n/)) {
323
+ const normalized = normalizeTypeError(line);
324
+ if (normalized) {
325
+ errors.push(normalized);
326
+ }
327
+ }
328
+ return errors.slice(0, 100);
329
+ }
330
+ function normalizeLintError(line) {
331
+ const match = /^(.+?):(\d+):(\d+)\s+(?:error|warning)\s+.+?\s+(\S+)\s*$/.exec(line);
332
+ if (match) {
333
+ return `${match[1]}:${match[2]}:${match[3]}:${match[4]}`;
334
+ }
335
+ return null;
336
+ }
337
+ function extractLintErrors(output) {
338
+ const errors = [];
339
+ for (const line of output.split(/\r?\n/)) {
340
+ const normalized = normalizeLintError(line);
341
+ if (normalized) {
342
+ errors.push(normalized);
343
+ }
344
+ }
345
+ return errors.slice(0, 100);
346
+ }
347
+ function extractBiomeLintSignatures(outputTail) {
348
+ const raw = String(outputTail ?? "").trim();
349
+ if (!raw) return [];
350
+ const out = /* @__PURE__ */ new Set();
351
+ const extracted = extractBiomeJson(raw);
352
+ if (extracted) {
353
+ for (const diag of readBiomeDiagnostics(extracted.parsed)) {
354
+ const category = diag.category ?? diag.severity ?? "issue";
355
+ out.add(`${diag.file}:${category}${diag.line ? `:${diag.line}` : ""}`);
356
+ }
357
+ }
358
+ if (out.size > 0) return Array.from(out).slice(0, 200);
359
+ for (const line of raw.split(/\r?\n/)) {
360
+ const trimmed = line.trim();
361
+ const eslintMatch = /^(.+?):(\d+):(\d+)\s+(?:error|warning)\s+.+?\s+(\S+)\s*$/.exec(trimmed);
362
+ if (eslintMatch) {
363
+ out.add(`${eslintMatch[1]}:${eslintMatch[2]}:${eslintMatch[3]}:${eslintMatch[4]}`);
364
+ continue;
365
+ }
366
+ const biomePrettyMatch = /^(.+?):(\d+):(\d+)\s+([a-z]+\/\S+)(?:\s|$)/.exec(trimmed);
367
+ if (biomePrettyMatch) {
368
+ out.add(
369
+ `${biomePrettyMatch[1]}:${biomePrettyMatch[2]}:${biomePrettyMatch[3]}:${biomePrettyMatch[4]}`
370
+ );
371
+ }
372
+ }
373
+ return Array.from(out).slice(0, 200);
374
+ }
375
+ function captureAvailability(captures) {
376
+ if (captures.some((capture) => capture.status === "unavailable")) return "unavailable";
377
+ return captures.every((capture) => capture.status === "skipped") ? "out_of_scope" : "executed";
378
+ }
379
+ function nonExecutionStatus(coverage, exitCode) {
380
+ if (exitCode === 124) return void 0;
381
+ if (coverage?.status === "skipped_not_relevant") return "skipped";
382
+ if (coverage?.status === "skipped_no_command" || coverage?.status === "skipped_tool_unavailable" || coverage?.status === "unverified")
383
+ return "unavailable";
384
+ return void 0;
385
+ }
386
+ function toCommandSummary(capture) {
387
+ return {
388
+ command: capture.command,
389
+ language: capture.language,
390
+ exitCode: capture.exitCode,
391
+ parsed: capture.parsed,
392
+ status: capture.status,
393
+ outputTail: capture.outputTail,
394
+ ...capture.failedTests ? { failedTests: capture.failedTests } : {},
395
+ ...capture.testsRun !== void 0 ? {
396
+ testsRun: capture.testsRun,
397
+ testsPassed: capture.testsPassed,
398
+ testsSkipped: capture.testsSkipped
399
+ } : {}
400
+ };
401
+ }
402
+ function budgetTimeoutCapture(command) {
403
+ const language = describeVerificationCommand(command).language;
404
+ return {
405
+ command,
406
+ language,
407
+ exitCode: 124,
408
+ parsed: false,
409
+ outputTail: "timed out (channel budget exhausted)",
410
+ status: "timeout",
411
+ durationMs: 0,
412
+ errors: [],
413
+ captureError: "Channel budget exhausted before command ran"
414
+ };
415
+ }
416
+ async function runCommandsSequentially(commands, gateTimeoutMs, runOne) {
417
+ if (commands.length === 0) {
418
+ return [await runOne(void 0, gateTimeoutMs)];
419
+ }
420
+ let remaining = gateTimeoutMs;
421
+ const captures = [];
422
+ for (const command of commands) {
423
+ if (remaining <= 0) {
424
+ captures.push(budgetTimeoutCapture(command));
425
+ continue;
426
+ }
427
+ const capture = await runOne(command, remaining);
428
+ captures.push(capture);
429
+ remaining = Math.max(0, remaining - Math.max(0, capture.durationMs));
430
+ }
431
+ return captures;
432
+ }
433
+ function aggregateBuildCaptures(captures) {
434
+ const dominant = selectDominantCommandResult(captures) ?? captures[0];
435
+ const errors = Array.from(new Set(captures.flatMap((c) => c.errors))).slice(0, 100);
436
+ const captureErrors = captures.map((c) => c.captureError).filter(Boolean);
437
+ return {
438
+ result: {
439
+ exitCode: dominant?.exitCode ?? 0,
440
+ count: errors.length,
441
+ errors,
442
+ signaturesParseable: dominant?.parsed ?? true,
443
+ // Representative tail only — full per-command tails live in `commands`.
444
+ outputTail: dominant?.outputTail ?? ""
445
+ },
446
+ captureError: captureErrors[0],
447
+ language: dominant?.language ?? "unknown",
448
+ parsed: dominant?.parsed ?? true,
449
+ commands: captures.map(toCommandSummary),
450
+ availability: captureAvailability(captures)
451
+ };
452
+ }
453
+ function aggregateLintCaptures(captures) {
454
+ const dominant = selectDominantCommandResult(captures) ?? captures[0];
455
+ const errors = Array.from(new Set(captures.flatMap((c) => c.errors))).slice(0, 200);
456
+ const captureErrors = captures.map((c) => c.captureError).filter(Boolean);
457
+ return {
458
+ result: {
459
+ exitCode: dominant?.exitCode ?? 0,
460
+ count: errors.length,
461
+ errors,
462
+ signaturesParseable: dominant?.parsed ?? true,
463
+ outputTail: dominant?.outputTail ?? ""
464
+ },
465
+ captureError: captureErrors[0],
466
+ language: dominant?.language ?? "unknown",
467
+ parsed: dominant?.parsed ?? true,
468
+ commands: captures.map(toCommandSummary),
469
+ availability: captureAvailability(captures)
470
+ };
471
+ }
472
+ function aggregateTestCaptures(captures) {
473
+ const dominant = selectDominantCommandResult(captures) ?? captures[0];
474
+ const failedTests = Array.from(new Set(captures.flatMap((c) => c.failedTests ?? [])));
475
+ const captureErrors = captures.map((c) => c.captureError).filter(Boolean);
476
+ const comparable = captures.every((capture) => capture.testsRun !== void 0);
477
+ return {
478
+ result: {
479
+ exitCode: dominant?.exitCode ?? 0,
480
+ passed: comparable ? captures.reduce((sum, capture) => sum + (capture.testsPassed ?? 0), 0) : 0,
481
+ failed: comparable ? captures.reduce((sum, capture) => sum + (capture.testsFailed ?? 0), 0) : 0,
482
+ ...comparable ? {
483
+ run: captures.reduce((sum, capture) => sum + (capture.testsRun ?? 0), 0),
484
+ skipped: captures.reduce((sum, capture) => sum + (capture.testsSkipped ?? 0), 0)
485
+ } : {},
486
+ failedTests,
487
+ outputTail: dominant?.outputTail ?? ""
488
+ },
489
+ captureError: captureErrors[0],
490
+ language: dominant?.language ?? "unknown",
491
+ parsed: dominant?.parsed ?? true,
492
+ commands: captures.map(toCommandSummary),
493
+ availability: captureAvailability(captures)
494
+ };
495
+ }
496
+ async function captureTypecheckOnce(worktreePath, timeoutMs, outputTailLines, scopedCommand) {
497
+ const started = Date.now();
498
+ const artifact = await runTypecheckWithArtifacts(worktreePath, {
499
+ timeoutMs,
500
+ tailLines: Math.max(50, outputTailLines),
501
+ ...scopedCommand ? { command: scopedCommand } : {}
502
+ });
503
+ const output = String(artifact.output ?? artifact.outputTail ?? "");
504
+ const nonExecution = nonExecutionStatus(artifact.verificationCoverage, artifact.exitCode);
505
+ const exitCode = resolveGateExitCode(artifact.exitCode, artifact.ok, nonExecution !== void 0);
506
+ const failed = exitCode !== 0;
507
+ const language = artifact.language ?? describeVerificationCommand(artifact.command ?? "").language;
508
+ const parsedResult = parseVerificationErrorsForChannel("build", language, output, failed);
509
+ const errors = nonExecution ? [] : extractTypeErrors(output);
510
+ const captureError = nonExecution ? void 0 : exitCode === 124 ? "Typecheck timed out during baseline capture" : (artifact.command ?? "").trim().length === 0 ? "Typecheck command missing during baseline capture" : artifact.exitCode == null && artifact.ok !== true ? "Typecheck command did not exit cleanly during baseline capture (fail-closed)" : void 0;
511
+ const status = nonExecution ?? (exitCode === 124 ? "timeout" : exitCode === 0 ? "passed" : "failed");
512
+ return {
513
+ command: artifact.command ?? scopedCommand ?? "",
514
+ language,
515
+ exitCode,
516
+ parsed: nonExecution ? false : parsedResult.parsed,
517
+ outputTail: tailLines(output, outputTailLines),
518
+ status,
519
+ durationMs: artifact.durationMs ?? Math.max(0, Date.now() - started),
520
+ errors,
521
+ captureError
522
+ };
523
+ }
524
+ async function captureLintOnce(worktreePath, sinceRef, timeoutMs, outputTailLines, scopedCommand) {
525
+ const started = Date.now();
526
+ const artifact = await runLintOnDiffWithArtifacts(worktreePath, {
527
+ baseBranch: sinceRef,
528
+ timeoutMs,
529
+ tailLines: Math.max(50, outputTailLines),
530
+ ...scopedCommand ? { command: scopedCommand } : {}
531
+ });
532
+ const outputTail = tailLines(artifact.outputTail, outputTailLines);
533
+ const nonExecution = nonExecutionStatus(artifact.verificationCoverage, artifact.exitCode);
534
+ const okHint = artifact.result === null ? void 0 : artifact.exitCode === 0;
535
+ const exitCode = resolveGateExitCode(artifact.exitCode, okHint, nonExecution !== void 0);
536
+ const failed = exitCode !== 0;
537
+ const language = artifact.language ?? describeVerificationCommand(artifact.command ?? "").language;
538
+ const parsedResult = parseVerificationErrorsForChannel(
539
+ "lint",
540
+ language,
541
+ artifact.outputTail ?? "",
542
+ failed
543
+ );
544
+ const biome = extractBiomeLintSignatures(artifact.outputTail ?? "");
545
+ const errors = nonExecution ? [] : biome.length > 0 ? biome : extractLintErrors(artifact.outputTail ?? "");
546
+ const captureError = exitCode === 124 ? "Lint timed out during baseline capture" : failed && artifact.result === null ? "Lint gate returned no parseable result during baseline capture" : void 0;
547
+ const status = nonExecution ?? (exitCode === 124 ? "timeout" : exitCode === 0 ? "passed" : "failed");
548
+ return {
549
+ command: artifact.command ?? scopedCommand ?? "",
550
+ language,
551
+ exitCode,
552
+ parsed: nonExecution ? false : parsedResult.parsed,
553
+ outputTail,
554
+ status,
555
+ durationMs: artifact.durationMs ?? Math.max(0, Date.now() - started),
556
+ errors,
557
+ captureError
558
+ };
559
+ }
560
+ async function captureTestsOnce(worktreePath, sinceRef, timeoutMs, outputTailLines, scopedCommand) {
561
+ const started = Date.now();
562
+ const artifact = await runDeterministicTestGateWithArtifacts(worktreePath, {
563
+ baseRef: sinceRef,
564
+ timeoutMs,
565
+ tailLines: Math.max(50, outputTailLines),
566
+ ...scopedCommand ? { command: scopedCommand } : {}
567
+ });
568
+ const status = artifact.status ?? "failed";
569
+ const ranAndFailed = status === "failed" || status === "error" || status === "timeout";
570
+ const didNotRun = status === "unavailable" || status === "skipped";
571
+ const okHint = !ranAndFailed;
572
+ const exitCode = resolveGateExitCode(artifact.exitCode, okHint, didNotRun);
573
+ const outputTail = tailLines(artifact.outputTail ?? "", outputTailLines);
574
+ const language = artifact.language ?? describeVerificationCommand(artifact.command ?? "").language;
575
+ const parsedResult = parseVerificationErrorsForChannel(
576
+ "test",
577
+ language,
578
+ outputTail,
579
+ exitCode !== 0,
580
+ artifact.failingTests ?? []
581
+ );
582
+ const parsedCounts = parseFailureOutput(
583
+ artifact.command ?? scopedCommand ?? "",
584
+ outputTail,
585
+ "test"
586
+ );
587
+ const suiteFootprint = parsedCounts.parsed ? parsedCounts.suiteFootprint : void 0;
588
+ const failedCount = suiteFootprint && parsedCounts.errorCount !== null ? parsedCounts.errorCount : void 0;
589
+ const captureError = status === "timeout" ? "Tests timed out during baseline capture" : status === "error" ? "Tests errored during baseline capture" : ranAndFailed && artifact.exitCode == null ? "Tests reported failure without a clean exit during baseline capture (fail-closed)" : void 0;
590
+ return {
591
+ command: artifact.command ?? scopedCommand ?? "",
592
+ language,
593
+ exitCode,
594
+ parsed: didNotRun ? false : parsedResult.parsed,
595
+ outputTail,
596
+ status,
597
+ durationMs: artifact.durationMs ?? Math.max(0, Date.now() - started),
598
+ errors: [],
599
+ failedTests: artifact.failingTestIdentities ?? artifact.failingTests ?? [],
600
+ ...suiteFootprint && failedCount !== void 0 ? {
601
+ testsRun: suiteFootprint.executed + suiteFootprint.skipped,
602
+ testsPassed: Math.max(0, suiteFootprint.executed - failedCount),
603
+ testsFailed: failedCount,
604
+ testsSkipped: suiteFootprint.skipped
605
+ } : {},
606
+ captureError
607
+ };
608
+ }
609
+ async function captureVerificationBaseline(worktreePath, baselineRef, options = {}) {
610
+ const gateTimeoutMs = resolveVerifyCommandTimeoutMs(options.gateTimeoutMs);
611
+ const opts = { ...DEFAULT_OPTIONS, ...options, gateTimeoutMs };
612
+ const startTime = Date.now();
613
+ const captureErrors = [];
614
+ const sinceRef = opts.changedSinceRef && opts.changedSinceRef.trim().length > 0 ? opts.changedSinceRef.trim() : baselineRef;
615
+ const scope = resolveVerificationChannelScope(worktreePath, opts.changedFiles);
616
+ const buildCommands = channelCommands(scope.build);
617
+ const lintCommands = channelCommands(scope.lint);
618
+ const testCommands = selectScopedTestCommands(scope);
619
+ const buildRelevant = scope.build.relevant;
620
+ const lintRelevant = scope.lint.relevant;
621
+ const testRelevant = scope.test.relevant;
622
+ const buildUnavailable = scope.build.availability === "unavailable";
623
+ const lintUnavailable = scope.lint.availability === "unavailable";
624
+ const testUnavailable = scope.test.availability === "unavailable";
625
+ const skippedChannel = (result) => ({
626
+ result,
627
+ captureError: void 0,
628
+ language: "unknown",
629
+ parsed: false,
630
+ commands: [],
631
+ availability: "out_of_scope"
632
+ });
633
+ const [typecheck, lint, tests] = await withValidationSlot(
634
+ `baseline:${worktreePath}`,
635
+ () => Promise.all([
636
+ buildRelevant ? runCommandsSequentially(
637
+ buildCommands,
638
+ opts.gateTimeoutMs,
639
+ (command, timeoutMs) => captureTypecheckOnce(worktreePath, timeoutMs, opts.outputTailLines, command)
640
+ ).then(aggregateBuildCaptures) : Promise.resolve(
641
+ skippedChannel({
642
+ exitCode: 0,
643
+ count: 0,
644
+ errors: [],
645
+ outputTail: buildUnavailable ? "verification unavailable" : "not task-relevant"
646
+ })
647
+ ),
648
+ opts.skipLint || !lintRelevant ? Promise.resolve(
649
+ skippedChannel({
650
+ exitCode: 0,
651
+ count: 0,
652
+ errors: [],
653
+ outputTail: lintUnavailable ? "verification unavailable" : lintRelevant ? "skipped" : "not task-relevant"
654
+ })
655
+ ) : runCommandsSequentially(
656
+ lintCommands,
657
+ opts.gateTimeoutMs,
658
+ (command, timeoutMs) => captureLintOnce(worktreePath, sinceRef, timeoutMs, opts.outputTailLines, command)
659
+ ).then(aggregateLintCaptures),
660
+ opts.skipTests || !testRelevant ? Promise.resolve({
661
+ result: {
662
+ exitCode: 0,
663
+ passed: 0,
664
+ failed: 0,
665
+ failedTests: [],
666
+ outputTail: testUnavailable ? "verification unavailable" : testRelevant ? "skipped" : "not task-relevant"
667
+ },
668
+ captureError: void 0,
669
+ language: "unknown",
670
+ parsed: false,
671
+ commands: [],
672
+ availability: "out_of_scope"
673
+ }) : runCommandsSequentially(
674
+ testCommands,
675
+ opts.gateTimeoutMs,
676
+ (command, timeoutMs) => captureTestsOnce(worktreePath, sinceRef, timeoutMs, opts.outputTailLines, command)
677
+ ).then(aggregateTestCaptures)
678
+ ]),
679
+ // Same bound as runDeterministicGates: the slot wait must scale with the
680
+ // caller's own gate budget so pacing cannot breach an outer deadline.
681
+ { maxWaitMs: Math.min(5 * 60 * 1e3, Math.max(5e3, opts.gateTimeoutMs * 3)) }
682
+ );
683
+ if (typecheck.captureError) captureErrors.push(typecheck.captureError);
684
+ if (lint.captureError) captureErrors.push(lint.captureError);
685
+ if (tests.captureError) captureErrors.push(tests.captureError);
686
+ const durationMs = Date.now() - startTime;
687
+ const gateSummary = {
688
+ build: {
689
+ exitCode: typecheck.result.exitCode,
690
+ parsed: typecheck.parsed,
691
+ language: typecheck.language,
692
+ commands: typecheck.commands,
693
+ availability: buildUnavailable ? "unavailable" : buildRelevant ? typecheck.availability ?? "executed" : "out_of_scope"
694
+ },
695
+ lint: {
696
+ exitCode: lint.result.exitCode,
697
+ parsed: lint.parsed,
698
+ language: lint.language,
699
+ commands: lint.commands,
700
+ availability: opts.skipLint ? "out_of_scope" : lintUnavailable ? "unavailable" : lintRelevant && !opts.skipLint ? lint.availability ?? "executed" : "out_of_scope"
701
+ },
702
+ test: {
703
+ exitCode: tests.result.exitCode,
704
+ parsed: tests.parsed,
705
+ language: tests.language,
706
+ commands: tests.commands,
707
+ availability: opts.skipTests ? "out_of_scope" : testUnavailable ? "unavailable" : testRelevant && !opts.skipTests ? tests.availability ?? "executed" : "out_of_scope"
708
+ }
709
+ };
710
+ const regressionCount = Number(gateSummary.build.exitCode !== 0) + Number(gateSummary.lint.exitCode !== 0) + Number(gateSummary.test.exitCode !== 0);
711
+ const sentinelPresent = gateSummary.build.exitCode !== 0 && !gateSummary.build.parsed || gateSummary.lint.exitCode !== 0 && !gateSummary.lint.parsed || gateSummary.test.exitCode !== 0 && !gateSummary.test.parsed;
712
+ const perLanguage = Array.from(
713
+ new Set(
714
+ [
715
+ ...typecheck.commands.map((c) => c.language),
716
+ ...lint.commands.map((c) => c.language),
717
+ ...tests.commands.map((c) => c.language)
718
+ ].filter((language) => language && language !== "unknown")
719
+ )
720
+ );
721
+ return {
722
+ baselineRef,
723
+ capturedAt: (/* @__PURE__ */ new Date()).toISOString(),
724
+ testResults: tests.result,
725
+ typeErrors: typecheck.result,
726
+ lintErrors: lint.result,
727
+ metadata: {
728
+ durationMs,
729
+ captureSucceeded: captureErrors.length === 0,
730
+ captureErrors
731
+ },
732
+ summary: {
733
+ schemaVersion: BASELINE_SCHEMA_VERSION,
734
+ regressionCount,
735
+ sentinelPresent,
736
+ perLanguage,
737
+ gates: gateSummary
738
+ }
739
+ };
740
+ }
741
+ function createEmptyBaseline(baselineRef, reason) {
742
+ return {
743
+ baselineRef,
744
+ capturedAt: (/* @__PURE__ */ new Date()).toISOString(),
745
+ testResults: {
746
+ exitCode: 0,
747
+ passed: 0,
748
+ failed: 0,
749
+ failedTests: [],
750
+ outputTail: ""
751
+ },
752
+ typeErrors: {
753
+ exitCode: 0,
754
+ count: 0,
755
+ errors: [],
756
+ signaturesParseable: true,
757
+ outputTail: ""
758
+ },
759
+ lintErrors: {
760
+ exitCode: 0,
761
+ count: 0,
762
+ errors: [],
763
+ signaturesParseable: true,
764
+ outputTail: ""
765
+ },
766
+ metadata: {
767
+ durationMs: 0,
768
+ captureSucceeded: false,
769
+ captureErrors: [reason]
770
+ },
771
+ summary: {
772
+ schemaVersion: BASELINE_SCHEMA_VERSION,
773
+ regressionCount: 0,
774
+ sentinelPresent: false,
775
+ perLanguage: [],
776
+ gates: {
777
+ build: { exitCode: 0, parsed: true, language: "unknown", commands: [] },
778
+ lint: { exitCode: 0, parsed: true, language: "unknown", commands: [] },
779
+ test: { exitCode: 0, parsed: true, language: "unknown", commands: [] }
780
+ }
781
+ }
782
+ };
783
+ }
784
+
785
+ // src/core/verification/baseline-store.ts
786
+ var BASELINE_LOCK_WAIT_MS = 5 * 6e4;
787
+ var BASELINE_LOCK_STALE_MS = 6e4;
788
+ var BASELINE_LOCK_OPTIONS = {
789
+ realpath: false,
790
+ stale: BASELINE_LOCK_STALE_MS,
791
+ update: 3e4,
792
+ // Coordination is observational: losing this lock must not throw from
793
+ // proper-lockfile's heartbeat callback and terminate the process.
794
+ onCompromised: () => void 0,
795
+ retries: {
796
+ retries: 180,
797
+ factor: 1.2,
798
+ minTimeout: 100,
799
+ maxTimeout: 2e3,
800
+ maxRetryTime: BASELINE_LOCK_WAIT_MS,
801
+ randomize: true
802
+ }
803
+ };
804
+ function scopeHash(changedFiles) {
805
+ if (!changedFiles || changedFiles.length === 0) return "";
806
+ const sorted = [...changedFiles].map((file) => file.trim()).filter(Boolean).sort();
807
+ if (sorted.length === 0) return "";
808
+ return createHash("sha256").update(sorted.join("\n")).digest("hex").slice(0, 12);
809
+ }
810
+ function cachePathForBaseline(cacheDir, baselineRef, changedSinceRef, changedFiles, skipTests) {
811
+ const scope = scopeHash(changedFiles);
812
+ const scopeSuffix = `${scope ? `--scope-${scope}` : ""}${skipTests ? "--no-tests" : ""}`;
813
+ if (changedSinceRef && changedSinceRef !== baselineRef) {
814
+ return join(cacheDir, `${baselineRef}--since-${changedSinceRef}${scopeSuffix}.json`);
815
+ }
816
+ return join(cacheDir, `${baselineRef}${scopeSuffix}.json`);
817
+ }
818
+ async function ensureNodeModulesForBaselineWorktree(repoRoot, worktreePath) {
819
+ await prepareWorktreeDependencies({ repoRoot, worktreePath, bestEffort: true });
820
+ await copyConfiguredEnvFilesToWorktree({ repoRoot, worktreePath });
821
+ }
822
+ function isFreshSchemaBaseline(cached) {
823
+ if (cached.metadata?.captureSucceeded !== true) return false;
824
+ if (!cached.summary) return false;
825
+ return cached.summary.schemaVersion === BASELINE_SCHEMA_VERSION;
826
+ }
827
+ async function readCachedBaseline(path3) {
828
+ try {
829
+ const raw = await readFile2(path3, "utf8");
830
+ const parsed = JSON.parse(raw);
831
+ if (!parsed || typeof parsed !== "object") return null;
832
+ if (typeof parsed.baselineRef !== "string") return null;
833
+ return parsed;
834
+ } catch {
835
+ return null;
836
+ }
837
+ }
838
+ async function writeCachedBaseline(path3, baseline) {
839
+ await atomicWriteJson(path3, baseline);
840
+ }
841
+ async function tryAcquireBaselineLock(cacheFile) {
842
+ try {
843
+ return await lockfile.lock(cacheFile, BASELINE_LOCK_OPTIONS);
844
+ } catch {
845
+ return void 0;
846
+ }
847
+ }
848
+ async function addDetachedWorktree(repoRoot, ref) {
849
+ const base = await mkBuildTempDir("baseline-worktree");
850
+ const worktreePath = join(base, ref.slice(0, 12));
851
+ const added = await addScratchWorktree({ repoRoot, worktreePath, ref });
852
+ if (!added.ok) {
853
+ await rm(base, { recursive: true, force: true });
854
+ throw new Error(`Failed to create baseline worktree for ${ref}: ${added.detail}`);
855
+ }
856
+ try {
857
+ await ensureNodeModulesForBaselineWorktree(repoRoot, worktreePath);
858
+ } catch (error) {
859
+ await removeDetachedWorktree(repoRoot, worktreePath);
860
+ throw error;
861
+ }
862
+ return worktreePath;
863
+ }
864
+ async function removeDetachedWorktree(repoRoot, worktreePath) {
865
+ try {
866
+ await removeScratchWorktree({ repoRoot, worktreePath });
867
+ } finally {
868
+ const parent = dirname2(worktreePath);
869
+ await rm(parent, { recursive: true, force: true });
870
+ }
871
+ }
872
+ async function captureAndCacheVerificationBaseline(options, cacheFile) {
873
+ let worktreePath = null;
874
+ try {
875
+ worktreePath = await addDetachedWorktree(options.repoRoot, options.baselineRef);
876
+ const baseline = await captureVerificationBaseline(worktreePath, options.baselineRef, {
877
+ ...options.captureOptions,
878
+ // Default anchor matches baselineRef unless caller overrides.
879
+ changedSinceRef: options.captureOptions?.changedSinceRef ?? options.baselineRef
880
+ });
881
+ await writeCachedBaseline(cacheFile, baseline);
882
+ return baseline;
883
+ } catch (error) {
884
+ const message = error instanceof Error ? error.message : String(error);
885
+ return createEmptyBaseline(options.baselineRef, message);
886
+ } finally {
887
+ if (worktreePath) {
888
+ await removeDetachedWorktree(options.repoRoot, worktreePath);
889
+ }
890
+ }
891
+ }
892
+ async function getOrCaptureVerificationBaseline(options) {
893
+ const cacheFile = cachePathForBaseline(
894
+ options.cacheDir,
895
+ options.baselineRef,
896
+ options.captureOptions?.changedSinceRef,
897
+ options.captureOptions?.changedFiles,
898
+ options.captureOptions?.skipTests
899
+ );
900
+ const cached = await readCachedBaseline(cacheFile);
901
+ if (cached && cached.baselineRef === options.baselineRef && isFreshSchemaBaseline(cached)) {
902
+ return cached;
903
+ }
904
+ await mkdir2(options.cacheDir, { recursive: true });
905
+ const releaseLock = await tryAcquireBaselineLock(cacheFile);
906
+ if (!releaseLock) {
907
+ const filledWhileWaiting = await readCachedBaseline(cacheFile);
908
+ if (filledWhileWaiting && filledWhileWaiting.baselineRef === options.baselineRef && isFreshSchemaBaseline(filledWhileWaiting)) {
909
+ return filledWhileWaiting;
910
+ }
911
+ return captureAndCacheVerificationBaseline(options, cacheFile);
912
+ }
913
+ try {
914
+ const filledByPeer = await readCachedBaseline(cacheFile);
915
+ if (filledByPeer && filledByPeer.baselineRef === options.baselineRef && isFreshSchemaBaseline(filledByPeer)) {
916
+ return filledByPeer;
917
+ }
918
+ return await captureAndCacheVerificationBaseline(options, cacheFile);
919
+ } finally {
920
+ await releaseLock().catch(() => void 0);
921
+ }
922
+ }
923
+
924
+ // src/orchestrator/worker-protocol.ts
925
+ import { z } from "zod";
926
+ var SETUP_COMPLETE_MARKER_PREFIX = "__BUILD_SETUP_COMPLETE_MS__:";
927
+ var PROVIDER_START_MARKER_PREFIX = "__BUILD_PROVIDER_START_MS__:";
928
+ var PROVIDER_COMPLETE_MARKER_PREFIX = "__BUILD_PROVIDER_COMPLETE_MS__:";
929
+ var RESULT_WRITTEN_MARKER_PREFIX = "__BUILD_RESULT_WRITTEN_MS__:";
930
+ var CLEANUP_START_MARKER_PREFIX = "__BUILD_CLEANUP_START_MS__:";
931
+ var CLEANUP_COMPLETE_MARKER_PREFIX = "__BUILD_CLEANUP_COMPLETE_MS__:";
932
+ var ACTIVE_HANDLES_MARKER_PREFIX = "__BUILD_ACTIVE_HANDLES__:";
933
+ var POST_PROVIDER_PHASES_MARKER_PREFIX = "__BUILD_POST_PROVIDER_PHASES__:";
934
+ var workerTerminationReasonSchema = z.enum([
935
+ "completed",
936
+ "timeout",
937
+ "canceled_early_exit",
938
+ "canceled_budget",
939
+ "canceled_user",
940
+ "failed_error",
941
+ "failed_crash"
942
+ ]);
943
+ var workerErrorSchema = z.union([
944
+ z.string(),
945
+ z.object({
946
+ message: z.string().optional(),
947
+ name: z.string().optional(),
948
+ stack: z.string().optional()
949
+ }).passthrough()
950
+ ]);
951
+ var providerResultSchema = z.object({
952
+ exitCode: z.number().int().nullable().optional(),
953
+ success: z.boolean().optional()
954
+ }).passthrough();
955
+ var workerResultPayloadSchema = z.object({
956
+ success: z.boolean(),
957
+ variant: z.string().min(1).optional(),
958
+ provider: z.string().min(1).optional(),
959
+ strategy: z.string().min(1).optional(),
960
+ duration: z.number().finite().nonnegative().optional(),
961
+ completeness: z.number().finite().min(0).max(100).optional(),
962
+ timedOut: z.boolean().optional(),
963
+ terminationReason: workerTerminationReasonSchema.optional(),
964
+ result: providerResultSchema.nullable().optional(),
965
+ error: workerErrorSchema.nullable().optional()
966
+ }).passthrough().superRefine((value, context) => {
967
+ if (value.timedOut === true && value.terminationReason && value.terminationReason !== "timeout") {
968
+ context.addIssue({
969
+ code: z.ZodIssueCode.custom,
970
+ path: ["terminationReason"],
971
+ message: 'timedOut results must use terminationReason "timeout" when a reason is present'
972
+ });
973
+ }
974
+ if (value.timedOut === false && value.terminationReason === "timeout") {
975
+ context.addIssue({
976
+ code: z.ZodIssueCode.custom,
977
+ path: ["timedOut"],
978
+ message: 'terminationReason "timeout" cannot be paired with timedOut false'
979
+ });
980
+ }
981
+ if (value.success === true && value.terminationReason && value.terminationReason !== "completed") {
982
+ context.addIssue({
983
+ code: z.ZodIssueCode.custom,
984
+ path: ["terminationReason"],
985
+ message: "successful results cannot carry a failure or cancellation termination reason"
986
+ });
987
+ }
988
+ });
989
+ function validateWorkerResultPayload(parsed) {
990
+ const result = workerResultPayloadSchema.safeParse(parsed);
991
+ if (result.success) {
992
+ return { ok: true, value: result.data };
993
+ }
994
+ const detail = result.error.issues.map((issue) => {
995
+ const path3 = issue.path.length > 0 ? issue.path.join(".") : "(root)";
996
+ return `${path3}: ${issue.message}`;
997
+ }).join("; ");
998
+ return { ok: false, error: `invalid worker result payload (${detail})` };
999
+ }
1000
+
1001
+ export {
1002
+ removeScratchWorktree,
1003
+ addScratchWorktree,
1004
+ withValidationSlot,
1005
+ getOrCaptureVerificationBaseline,
1006
+ SETUP_COMPLETE_MARKER_PREFIX,
1007
+ PROVIDER_START_MARKER_PREFIX,
1008
+ PROVIDER_COMPLETE_MARKER_PREFIX,
1009
+ RESULT_WRITTEN_MARKER_PREFIX,
1010
+ CLEANUP_START_MARKER_PREFIX,
1011
+ CLEANUP_COMPLETE_MARKER_PREFIX,
1012
+ ACTIVE_HANDLES_MARKER_PREFIX,
1013
+ POST_PROVIDER_PHASES_MARKER_PREFIX,
1014
+ validateWorkerResultPayload
1015
+ };
1016
+ //# sourceMappingURL=chunk-3C7WBIVK.js.map