@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,911 @@
1
+ import {
2
+ resolveInstallHomeDir
3
+ } from "./chunk-GZAJHLKO.js";
4
+ import {
5
+ atomicWriteJson
6
+ } from "./chunk-RFDVSI4N.js";
7
+ import {
8
+ acquireFencedFileLock,
9
+ ensureLockTargetFile
10
+ } from "./chunk-QYQOVOLR.js";
11
+ import {
12
+ execGit
13
+ } from "./chunk-MHLEZQQI.js";
14
+ import {
15
+ findProjectRoot
16
+ } from "./chunk-35J4NE6S.js";
17
+ import {
18
+ findTemplatePackageRoot
19
+ } from "./chunk-STW7OFOA.js";
20
+ import {
21
+ hasExplicitBuildRoot,
22
+ resolveBuildRepoStartDir,
23
+ resolveRepoRootOverride
24
+ } from "./chunk-7VRJHTGZ.js";
25
+
26
+ // src/automation/flywheel-manifest.ts
27
+ import { AsyncLocalStorage } from "async_hooks";
28
+ import { existsSync } from "fs";
29
+ import * as fs2 from "fs/promises";
30
+ import * as os from "os";
31
+ import * as path2 from "path";
32
+ import { fileURLToPath } from "url";
33
+ import { execa, execaSync } from "execa";
34
+
35
+ // src/utils/build-commit.ts
36
+ import * as fs from "fs";
37
+ import * as path from "path";
38
+ var FULL_SHA_RE = /^[0-9a-f]{40}$/i;
39
+ function realPath(value) {
40
+ try {
41
+ return fs.realpathSync(value);
42
+ } catch {
43
+ return path.resolve(value);
44
+ }
45
+ }
46
+ async function readCheckoutCommit(packageRoot) {
47
+ try {
48
+ const top = await execGit(["rev-parse", "--show-toplevel"], { cwd: packageRoot });
49
+ if (top.exitCode !== 0 || realPath(top.stdout.trim()) !== packageRoot) return void 0;
50
+ const head = await execGit(["rev-parse", "HEAD"], { cwd: packageRoot });
51
+ const sha = head.stdout.trim();
52
+ return head.exitCode === 0 && FULL_SHA_RE.test(sha) ? sha : void 0;
53
+ } catch {
54
+ return void 0;
55
+ }
56
+ }
57
+ function readInstalledCommit(packageRoot, homeDir) {
58
+ try {
59
+ const manifest = JSON.parse(
60
+ fs.readFileSync(path.join(resolveInstallHomeDir(homeDir), "install.json"), "utf8")
61
+ );
62
+ if (manifest.source !== "git") return void 0;
63
+ if (typeof manifest.commit !== "string" || !FULL_SHA_RE.test(manifest.commit)) return void 0;
64
+ if (typeof manifest.prefix !== "string" || manifest.prefix.length === 0) return void 0;
65
+ const running = /^(.+?)\/lib\/node_modules\/(?:@[^/]+\/)?[^/]+$/.exec(
66
+ packageRoot.replace(/\\/g, "/")
67
+ )?.[1];
68
+ if (!running || realPath(running) !== realPath(manifest.prefix)) return void 0;
69
+ return manifest.commit;
70
+ } catch {
71
+ return void 0;
72
+ }
73
+ }
74
+ async function resolveBuildCommit(packageRoot, options = {}) {
75
+ const root = realPath(packageRoot);
76
+ return await readCheckoutCommit(root) ?? readInstalledCommit(root, options.homeDir);
77
+ }
78
+
79
+ // src/automation/flywheel-manifest.ts
80
+ var CURRENT_MANIFEST_SCHEMA_VERSION = 1;
81
+ var manifestLocks = /* @__PURE__ */ new Map();
82
+ var manifestLockOwners = /* @__PURE__ */ new Map();
83
+ var manifestFileLocks = /* @__PURE__ */ new Map();
84
+ var manifestLockContext = new AsyncLocalStorage();
85
+ var MANIFEST_LOCK_DISABLE_ENV = "BUILD_FLYWHEEL_MANIFEST_FILE_LOCK_DISABLE";
86
+ var __filename = fileURLToPath(import.meta.url);
87
+ var __dirname = path2.dirname(__filename);
88
+ function isFileLockDisabled() {
89
+ const raw = process.env[MANIFEST_LOCK_DISABLE_ENV]?.trim().toLowerCase() ?? "";
90
+ return raw === "1" || raw === "true" || raw === "yes" || raw === "on";
91
+ }
92
+ var PACKAGE_ROOT = findTemplatePackageRoot(__dirname) ?? path2.resolve(__dirname, "..");
93
+ function getManifestLockFilePath(workflowId) {
94
+ return path2.join(getArtifactDir(workflowId), "manifest.lock");
95
+ }
96
+ async function acquireManifestFileLock(workflowId) {
97
+ if (isFileLockDisabled()) {
98
+ return void 0;
99
+ }
100
+ const lockTarget = getManifestLockFilePath(workflowId);
101
+ await fs2.mkdir(path2.dirname(lockTarget), { recursive: true });
102
+ await ensureLockTargetFile(lockTarget);
103
+ return acquireFencedFileLock(lockTarget, {
104
+ stale: 3e4,
105
+ retries: { retries: 200, minTimeout: 25, maxTimeout: 250, factor: 1.5 },
106
+ description: "Manifest lock"
107
+ });
108
+ }
109
+ function withManifestLock(workflowId, fn) {
110
+ const currentOwners = manifestLockContext.getStore();
111
+ const currentOwner = currentOwners?.get(workflowId);
112
+ if (currentOwner && manifestLockOwners.get(workflowId) === currentOwner) {
113
+ return fn();
114
+ }
115
+ const previous = (manifestLocks.get(workflowId) ?? Promise.resolve()).catch(() => {
116
+ });
117
+ let releaseLock;
118
+ const nextLock = new Promise((resolve3) => {
119
+ releaseLock = resolve3;
120
+ });
121
+ const lockTail = previous.then(() => nextLock);
122
+ manifestLocks.set(workflowId, lockTail);
123
+ return previous.then(async () => {
124
+ const owner = /* @__PURE__ */ Symbol(`manifest-lock:${workflowId}`);
125
+ const nextOwners = new Map(currentOwners ?? []);
126
+ nextOwners.set(workflowId, owner);
127
+ manifestLockOwners.set(workflowId, owner);
128
+ let releaseFileLock;
129
+ try {
130
+ releaseFileLock = await acquireManifestFileLock(workflowId);
131
+ if (releaseFileLock) {
132
+ manifestFileLocks.set(workflowId, releaseFileLock);
133
+ }
134
+ const result = await manifestLockContext.run(nextOwners, fn);
135
+ await releaseFileLock?.assertOwned();
136
+ return result;
137
+ } finally {
138
+ if (releaseFileLock) {
139
+ try {
140
+ await releaseFileLock();
141
+ } catch {
142
+ }
143
+ }
144
+ if (manifestLockOwners.get(workflowId) === owner) {
145
+ manifestLockOwners.delete(workflowId);
146
+ manifestFileLocks.delete(workflowId);
147
+ }
148
+ releaseLock?.();
149
+ if (manifestLocks.get(workflowId) === lockTail) {
150
+ manifestLocks.delete(workflowId);
151
+ }
152
+ }
153
+ });
154
+ }
155
+ var WORKTREE_RECORD_RECOVERY_REASON = {
156
+ PATH_ALREADY_ABSENT: "recovery_reconcile:worktree_path_already_absent",
157
+ PATH_INVALID_DURING_STATUS_PROBE: "recovery_reconcile:worktree_path_invalid_during_status_probe"
158
+ };
159
+ var WORKTREE_RECORD_CLEANUP_REASON = {
160
+ PATH_STILL_PRESENT_AFTER_SUCCESSFUL_CLEANUP: "cleanup_state:path_still_present_after_successful_cleanup"
161
+ };
162
+ function hasRecoverableCompletedSubStageProof(snapshot) {
163
+ if (snapshot.integrationStatus !== "cherry_picked") {
164
+ return true;
165
+ }
166
+ const hasCommit = (snapshot.integratedCommitShas ?? []).some((sha) => sha.trim().length > 0);
167
+ return hasCommit || snapshot.integrationProof === "no_commits";
168
+ }
169
+ var FLYWHEEL_MANIFEST_STATUSES = [
170
+ "pending",
171
+ "applied",
172
+ "staged",
173
+ "failed"
174
+ ];
175
+ var FLYWHEEL_STATUS_ALIASES = {
176
+ // `merged` is historical UX wording for an applied run.
177
+ merged: "applied"
178
+ };
179
+ var FLYWHEEL_STATUS_FILTER_INPUTS = [
180
+ ...FLYWHEEL_MANIFEST_STATUSES,
181
+ ...Object.keys(FLYWHEEL_STATUS_ALIASES)
182
+ ];
183
+ function normalizeFlywheelStatusFilter(input) {
184
+ if (FLYWHEEL_MANIFEST_STATUSES.includes(input)) {
185
+ return input;
186
+ }
187
+ return FLYWHEEL_STATUS_ALIASES[input] ?? null;
188
+ }
189
+ var WORKFLOW_HEARTBEAT_STALE_AFTER_MS = 12e4;
190
+ var MANIFEST_WORKTREE_RECONCILE_ENV = "BUILD_FLYWHEEL_MANIFEST_WORKTREE_RECONCILE";
191
+ function isManifestWorktreeReconcileEnabled() {
192
+ const raw = process.env[MANIFEST_WORKTREE_RECONCILE_ENV]?.trim().toLowerCase() ?? "";
193
+ if (raw === "0" || raw === "false" || raw === "off" || raw === "no") {
194
+ return false;
195
+ }
196
+ return true;
197
+ }
198
+ function deriveWorktreeOwnershipMetadata(workflowId, owner) {
199
+ const ownerId = owner.trim() || "unknown";
200
+ if (ownerId === "integration") {
201
+ return { workflowId, kind: "integration", ownerId };
202
+ }
203
+ if (ownerId === "verify-baseline" || ownerId === "baseline") {
204
+ return { workflowId, kind: "baseline", ownerId };
205
+ }
206
+ if (ownerId.startsWith("stage-") || ownerId.includes("/") || ownerId.includes("-")) {
207
+ return { workflowId, kind: "stage", ownerId };
208
+ }
209
+ return { workflowId, kind: "other", ownerId };
210
+ }
211
+ function ensureWorktreeOwnershipMetadata(workflowId, record) {
212
+ if (record.ownership) {
213
+ return false;
214
+ }
215
+ record.ownership = deriveWorktreeOwnershipMetadata(workflowId, record.owner);
216
+ return true;
217
+ }
218
+ function resolveWorktreeAbsolutePath(worktreePath) {
219
+ const trimmed = worktreePath.trim();
220
+ if (!trimmed) {
221
+ return "";
222
+ }
223
+ return path2.isAbsolute(trimmed) ? trimmed : path2.resolve(getProjectRoot(), trimmed);
224
+ }
225
+ async function isWorktreeDirectoryPresent(absPath) {
226
+ if (!absPath) {
227
+ return false;
228
+ }
229
+ try {
230
+ const st = await fs2.stat(absPath);
231
+ return st.isDirectory();
232
+ } catch {
233
+ return false;
234
+ }
235
+ }
236
+ async function reconcileManifestWorktreesWithDisk(manifest) {
237
+ if (!isManifestWorktreeReconcileEnabled()) {
238
+ return false;
239
+ }
240
+ const records = manifest.worktreeRecords;
241
+ if (!records?.length) {
242
+ return false;
243
+ }
244
+ const now = (/* @__PURE__ */ new Date()).toISOString();
245
+ let changed = false;
246
+ for (const record of records) {
247
+ changed = ensureWorktreeOwnershipMetadata(manifest.workflowId, record) || changed;
248
+ const abs = resolveWorktreeAbsolutePath(record.worktreePath);
249
+ const present = await isWorktreeDirectoryPresent(abs);
250
+ const cleanedPathStillPresentIsExpected = record.status === "cleaned" && present && record.retentionReason === WORKTREE_RECORD_CLEANUP_REASON.PATH_STILL_PRESENT_AFTER_SUCCESSFUL_CLEANUP;
251
+ if (cleanedPathStillPresentIsExpected) {
252
+ continue;
253
+ }
254
+ if (record.status === "cleaned" && present) {
255
+ record.status = "cleanup_failed";
256
+ record.retentionReason = "manifest_reconcile:cleaned_status_but_worktree_path_still_exists";
257
+ record.updatedAt = now;
258
+ changed = true;
259
+ continue;
260
+ }
261
+ if ((record.status === "pending" || record.status === "retained") && !present) {
262
+ record.status = "cleanup_failed";
263
+ record.retentionReason = "manifest_reconcile:expected_worktree_path_missing";
264
+ record.updatedAt = now;
265
+ changed = true;
266
+ }
267
+ }
268
+ return changed;
269
+ }
270
+ function getConfiguredWorkflowHeartbeatStaleAfterMs(overrideMs) {
271
+ if (typeof overrideMs === "number" && Number.isFinite(overrideMs) && overrideMs > 0) {
272
+ return overrideMs;
273
+ }
274
+ const rawEnv = process.env.BUILD_FLYWHEEL_WORKFLOW_HEARTBEAT_STALE_AFTER_MS ?? "";
275
+ const parsedEnv = Number.parseInt(rawEnv, 10);
276
+ if (Number.isFinite(parsedEnv) && parsedEnv > 0) {
277
+ return parsedEnv;
278
+ }
279
+ return WORKFLOW_HEARTBEAT_STALE_AFTER_MS;
280
+ }
281
+ function getWorkflowLastActivityMs(manifest) {
282
+ const pendingRecords = (manifest.worktreeRecords ?? []).filter(
283
+ (record) => record.status === "pending"
284
+ );
285
+ const values = [
286
+ manifest.lastHeartbeatAt,
287
+ manifest.executedAt,
288
+ ...pendingRecords.map((record) => record.updatedAt)
289
+ ];
290
+ let lastActivityMs;
291
+ for (const raw of values) {
292
+ const parsed = Date.parse(raw ?? "");
293
+ if (!Number.isFinite(parsed)) {
294
+ continue;
295
+ }
296
+ if (lastActivityMs === void 0) {
297
+ lastActivityMs = parsed;
298
+ } else if (parsed > lastActivityMs) {
299
+ lastActivityMs = parsed;
300
+ }
301
+ }
302
+ return lastActivityMs;
303
+ }
304
+ function isWorkflowHeartbeatStale(options) {
305
+ const { manifest, now = Date.now(), runningHeartbeatStaleAfterMs } = options;
306
+ const lastActivityMs = getWorkflowLastActivityMs(manifest);
307
+ if (lastActivityMs === void 0) {
308
+ return void 0;
309
+ }
310
+ const thresholdMs = getConfiguredWorkflowHeartbeatStaleAfterMs(runningHeartbeatStaleAfterMs);
311
+ return now - lastActivityMs > thresholdMs;
312
+ }
313
+ function getManifestStatus(manifest) {
314
+ if (manifest.applyError) {
315
+ return "failed";
316
+ }
317
+ if (manifest.appliedAt) {
318
+ return "applied";
319
+ }
320
+ if (manifest.stagedAt) {
321
+ return "staged";
322
+ }
323
+ return "pending";
324
+ }
325
+ function getWorkflowExecutionStatus(options) {
326
+ const {
327
+ manifest,
328
+ workflowResult,
329
+ branchExists = false,
330
+ now = Date.now(),
331
+ runningHeartbeatStaleAfterMs,
332
+ syncWorktreePathPresent
333
+ } = options;
334
+ const manifestStatus = getManifestStatus(manifest);
335
+ const rawPendingRecords = (manifest.worktreeRecords ?? []).filter(
336
+ (record) => record.status === "pending"
337
+ );
338
+ const pendingPathDrift = typeof syncWorktreePathPresent === "function" ? rawPendingRecords.some(
339
+ (record) => !syncWorktreePathPresent(resolveWorktreeAbsolutePath(record.worktreePath))
340
+ ) : false;
341
+ const pendingRecords = typeof syncWorktreePathPresent === "function" ? rawPendingRecords.filter(
342
+ (record) => syncWorktreePathPresent(resolveWorktreeAbsolutePath(record.worktreePath))
343
+ ) : rawPendingRecords;
344
+ let heartbeatStale;
345
+ let isInRecoveryWindow = false;
346
+ if (manifestStatus === "pending" && pendingRecords.length > 0) {
347
+ heartbeatStale = isWorkflowHeartbeatStale({
348
+ manifest,
349
+ now,
350
+ runningHeartbeatStaleAfterMs
351
+ });
352
+ const activityStaleOrUnknown = heartbeatStale !== false;
353
+ isInRecoveryWindow = activityStaleOrUnknown;
354
+ }
355
+ if (workflowResult && typeof workflowResult === "object" && "success" in workflowResult && typeof workflowResult.success === "boolean") {
356
+ const success = workflowResult.success;
357
+ if (success && (isInRecoveryWindow || pendingPathDrift)) {
358
+ return "unknown";
359
+ }
360
+ return success ? "succeeded" : "failed";
361
+ }
362
+ if (manifestStatus !== "pending") {
363
+ return "unknown";
364
+ }
365
+ if (!branchExists) {
366
+ return "unknown";
367
+ }
368
+ if (pendingRecords.length === 0) {
369
+ return "unknown";
370
+ }
371
+ if (heartbeatStale === void 0) {
372
+ return "unknown";
373
+ }
374
+ return heartbeatStale ? "unknown" : "running";
375
+ }
376
+ function hasPendingWorktreePathAbsentOnDisk(manifest, existsSyncFn = existsSync) {
377
+ for (const record of manifest.worktreeRecords ?? []) {
378
+ if (record.status !== "pending") {
379
+ continue;
380
+ }
381
+ const abs = resolveWorktreeAbsolutePath(record.worktreePath);
382
+ if (!abs) {
383
+ continue;
384
+ }
385
+ if (!existsSyncFn(abs)) {
386
+ return true;
387
+ }
388
+ }
389
+ return false;
390
+ }
391
+ function getProjectRoot() {
392
+ if (hasExplicitBuildRoot()) {
393
+ const override = resolveRepoRootOverride();
394
+ if (override) {
395
+ return override;
396
+ }
397
+ }
398
+ const cwd = resolveBuildRepoStartDir(process.cwd());
399
+ const worktreeMarker = `${path2.sep}.build-project${path2.sep}tmp${path2.sep}worktrees${path2.sep}`;
400
+ const markerIndex = cwd.indexOf(worktreeMarker);
401
+ if (markerIndex > 0) return cwd.slice(0, markerIndex);
402
+ try {
403
+ const result = execaSync("git", ["rev-parse", "--path-format=absolute", "--show-toplevel"], {
404
+ cwd,
405
+ timeout: 1500,
406
+ stdio: "pipe"
407
+ });
408
+ const topLevel = result.stdout?.trim();
409
+ if (topLevel) {
410
+ return path2.resolve(cwd, topLevel);
411
+ }
412
+ } catch {
413
+ }
414
+ const projectRoot = findProjectRoot(cwd);
415
+ if (projectRoot) {
416
+ return projectRoot;
417
+ }
418
+ try {
419
+ const result = execaSync("git", ["rev-parse", "--git-common-dir"], {
420
+ cwd,
421
+ timeout: 1500,
422
+ stdio: "pipe"
423
+ });
424
+ const commonDirRaw = result.stdout?.trim();
425
+ if (commonDirRaw) {
426
+ const commonDir = path2.isAbsolute(commonDirRaw) ? commonDirRaw : path2.resolve(cwd, commonDirRaw);
427
+ if (path2.basename(commonDir) === ".git") {
428
+ return path2.dirname(commonDir);
429
+ }
430
+ }
431
+ } catch {
432
+ }
433
+ return cwd;
434
+ }
435
+ var WORKFLOW_ID_PATTERN = /^[A-Za-z0-9][A-Za-z0-9._:-]*$/;
436
+ function assertSafeWorkflowId(workflowId) {
437
+ if (typeof workflowId !== "string" || workflowId.length === 0 || workflowId.length > 256) {
438
+ throw new Error("Invalid workflow ID");
439
+ }
440
+ if (!WORKFLOW_ID_PATTERN.test(workflowId)) {
441
+ throw new Error("Invalid workflow ID");
442
+ }
443
+ }
444
+ function getArtifactDirForRoot(projectRoot, workflowId) {
445
+ assertSafeWorkflowId(workflowId);
446
+ const baseDir = path2.resolve(projectRoot, ".build-project", "tmp", "flywheel");
447
+ const resolved = path2.resolve(baseDir, workflowId);
448
+ const rel = path2.relative(baseDir, resolved);
449
+ if (rel === "" || rel.startsWith("..") || path2.isAbsolute(rel)) {
450
+ throw new Error("Invalid workflow ID");
451
+ }
452
+ return resolved;
453
+ }
454
+ function getArtifactDir(workflowId) {
455
+ return getArtifactDirForRoot(getProjectRoot(), workflowId);
456
+ }
457
+ function getManifestPath(workflowId) {
458
+ return path2.join(getArtifactDir(workflowId), "manifest.json");
459
+ }
460
+ function getWorkflowYamlPath(workflowId) {
461
+ return path2.join(getArtifactDir(workflowId), "workflow.yaml");
462
+ }
463
+ function getResultPath(workflowId) {
464
+ return path2.join(getArtifactDir(workflowId), "result.json");
465
+ }
466
+ function getPartialResultPath(workflowId) {
467
+ return path2.join(getArtifactDir(workflowId), "result.partial.json");
468
+ }
469
+ function getResultPathForRoot(projectRoot, workflowId) {
470
+ return path2.join(getArtifactDirForRoot(projectRoot, workflowId), "result.json");
471
+ }
472
+ async function readManifestFromDisk(workflowId) {
473
+ const manifestPath = getManifestPath(workflowId);
474
+ try {
475
+ const content = await fs2.readFile(manifestPath, "utf-8");
476
+ return normalizeManifestSchema(JSON.parse(content), workflowId);
477
+ } catch (error) {
478
+ if (error.code === "ENOENT") {
479
+ throw new Error(`Manifest not found for workflow: ${workflowId}`);
480
+ }
481
+ throw error;
482
+ }
483
+ }
484
+ function normalizeManifestSchema(manifest, workflowId = manifest.workflowId) {
485
+ const schemaVersion = manifest.schemaVersion;
486
+ if (schemaVersion === void 0) {
487
+ return {
488
+ ...manifest,
489
+ schemaVersion: CURRENT_MANIFEST_SCHEMA_VERSION
490
+ };
491
+ }
492
+ if (schemaVersion !== CURRENT_MANIFEST_SCHEMA_VERSION) {
493
+ throw new Error(
494
+ `Unsupported manifest schema version ${String(schemaVersion)} for workflow ${workflowId}; supported version: ${CURRENT_MANIFEST_SCHEMA_VERSION}`
495
+ );
496
+ }
497
+ return manifest;
498
+ }
499
+ function getTriagePath(workflowId) {
500
+ return path2.join(getArtifactDir(workflowId), "triage.json");
501
+ }
502
+ async function getBuildVersion() {
503
+ try {
504
+ const packagePath = path2.join(PACKAGE_ROOT, "package.json");
505
+ const packageJson = JSON.parse(await fs2.readFile(packagePath, "utf-8"));
506
+ return packageJson.version || "unknown";
507
+ } catch {
508
+ return "unknown";
509
+ }
510
+ }
511
+ async function getGitUsername() {
512
+ try {
513
+ const { stdout } = await execa("git", ["config", "user.name"], {
514
+ timeout: 5e3
515
+ });
516
+ const name = stdout.trim();
517
+ if (name) {
518
+ return name;
519
+ }
520
+ } catch {
521
+ }
522
+ try {
523
+ return os.userInfo().username || "unknown";
524
+ } catch {
525
+ return "unknown";
526
+ }
527
+ }
528
+ async function createManifest(options) {
529
+ const [buildVersion, buildCommit, executedBy] = await Promise.all([
530
+ getBuildVersion(),
531
+ resolveBuildCommit(PACKAGE_ROOT),
532
+ getGitUsername()
533
+ ]);
534
+ const executedAt = (/* @__PURE__ */ new Date()).toISOString();
535
+ let generatedYamlPath = options.generatedYamlPath;
536
+ if (generatedYamlPath) {
537
+ const projectRoot = getProjectRoot();
538
+ generatedYamlPath = path2.isAbsolute(generatedYamlPath) ? path2.relative(projectRoot, generatedYamlPath) : generatedYamlPath;
539
+ generatedYamlPath = generatedYamlPath.replaceAll("\\", "/");
540
+ }
541
+ return {
542
+ schemaVersion: CURRENT_MANIFEST_SCHEMA_VERSION,
543
+ workflowId: options.workflowId,
544
+ sourceType: options.sourceType,
545
+ sprintId: options.sprintId,
546
+ ...options.taskIds !== void 0 ? { taskIds: options.taskIds.map((id) => id.trim()).filter(Boolean) } : {},
547
+ integrationBranch: options.integrationBranch,
548
+ baseSha: options.baseSha,
549
+ generatedYamlPath,
550
+ stageIds: options.stageIds?.map((id) => id.trim()).filter(Boolean),
551
+ executedAt,
552
+ lastHeartbeatAt: executedAt,
553
+ executedBy,
554
+ executedFrom: process.cwd(),
555
+ originalCommand: options.originalCommand || process.argv.slice(2),
556
+ planArtifactPath: options.planArtifactPath,
557
+ verificationPolicy: options.verificationPolicy ?? "findings",
558
+ buildVersion,
559
+ ...buildCommit ? { buildCommit } : {}
560
+ };
561
+ }
562
+ async function saveManifest(manifest) {
563
+ const manifestPath = getManifestPath(manifest.workflowId);
564
+ const artifactDir = path2.dirname(manifestPath);
565
+ await fs2.mkdir(artifactDir, { recursive: true });
566
+ const lockOwner = manifestLockContext.getStore()?.get(manifest.workflowId);
567
+ if (lockOwner && manifestLockOwners.get(manifest.workflowId) === lockOwner) {
568
+ await manifestFileLocks.get(manifest.workflowId)?.assertOwned();
569
+ }
570
+ await atomicWriteJson(manifestPath, normalizeManifestSchema(manifest));
571
+ }
572
+ async function loadManifest(workflowId) {
573
+ return readManifestFromDisk(workflowId);
574
+ }
575
+ async function updateManifest(workflowId, updater) {
576
+ return withManifestLock(workflowId, async () => {
577
+ const manifest = await readManifestFromDisk(workflowId);
578
+ await updater(manifest);
579
+ if (manifest.workflowId !== workflowId) {
580
+ throw new Error(
581
+ `Manifest workflow ID cannot change during locked update: expected ${workflowId}, received ${manifest.workflowId}`
582
+ );
583
+ }
584
+ await saveManifest(manifest);
585
+ return manifest;
586
+ });
587
+ }
588
+ async function reconcileAndSaveManifest(workflowId) {
589
+ return withManifestLock(workflowId, async () => {
590
+ const manifest = await readManifestFromDisk(workflowId);
591
+ const changed = await reconcileManifestWorktreesWithDisk(manifest);
592
+ if (changed) {
593
+ await saveManifest(manifest);
594
+ }
595
+ return manifest;
596
+ });
597
+ }
598
+ async function updateManifestApplyStatus(workflowId, status) {
599
+ return withManifestLock(workflowId, async () => {
600
+ const manifest = await loadManifest(workflowId);
601
+ if (status.appliedAt) {
602
+ manifest.appliedAt = status.appliedAt;
603
+ delete manifest.applyError;
604
+ delete manifest.applyFailedIntegrationSha;
605
+ }
606
+ if (status.appliedBy) {
607
+ manifest.appliedBy = status.appliedBy;
608
+ }
609
+ if (status.stagedAt) {
610
+ manifest.stagedAt = status.stagedAt;
611
+ }
612
+ if (status.verifiedTreeFingerprint !== void 0) {
613
+ manifest.verifiedTreeFingerprint = status.verifiedTreeFingerprint;
614
+ }
615
+ if (status.appliedCommitSha !== void 0) {
616
+ manifest.appliedCommitSha = status.appliedCommitSha;
617
+ }
618
+ if (status.postApplyError) {
619
+ manifest.postApplyError = status.postApplyError;
620
+ }
621
+ if (status.prUrl !== void 0) {
622
+ manifest.prUrl = status.prUrl;
623
+ }
624
+ if (status.prNumber !== void 0) {
625
+ manifest.prNumber = status.prNumber;
626
+ }
627
+ if (status.prHeadSha !== void 0) {
628
+ manifest.prHeadSha = status.prHeadSha;
629
+ }
630
+ if (status.sourceBranch !== void 0) {
631
+ manifest.sourceBranch = status.sourceBranch;
632
+ }
633
+ if (status.sourceBranchRole !== void 0) {
634
+ manifest.sourceBranchRole = status.sourceBranchRole;
635
+ }
636
+ if (status.applyTargetBranch !== void 0) {
637
+ manifest.applyTargetBranch = status.applyTargetBranch;
638
+ }
639
+ if (status.applyTargetBranchRole !== void 0) {
640
+ manifest.applyTargetBranchRole = status.applyTargetBranchRole;
641
+ }
642
+ if (status.branchRoleAction !== void 0) {
643
+ manifest.branchRoleAction = status.branchRoleAction;
644
+ }
645
+ if (status.branchRoleOverride !== void 0) {
646
+ manifest.branchRoleOverride = status.branchRoleOverride;
647
+ }
648
+ if (status.branchRoleRefused !== void 0) {
649
+ manifest.branchRoleRefused = status.branchRoleRefused;
650
+ }
651
+ if (status.applyError) {
652
+ manifest.applyError = status.applyError;
653
+ if (status.applyFailedIntegrationSha) {
654
+ manifest.applyFailedIntegrationSha = status.applyFailedIntegrationSha;
655
+ } else {
656
+ delete manifest.applyFailedIntegrationSha;
657
+ }
658
+ delete manifest.appliedAt;
659
+ delete manifest.appliedBy;
660
+ delete manifest.appliedCommitSha;
661
+ } else if (status.applyError === null) {
662
+ delete manifest.applyError;
663
+ delete manifest.applyFailedIntegrationSha;
664
+ }
665
+ await saveManifest(manifest);
666
+ });
667
+ }
668
+ async function updateManifestHeartbeat(workflowId, heartbeatAt = (/* @__PURE__ */ new Date()).toISOString()) {
669
+ return withManifestLock(workflowId, async () => {
670
+ const manifest = await loadManifest(workflowId);
671
+ manifest.lastHeartbeatAt = heartbeatAt;
672
+ await saveManifest(manifest);
673
+ });
674
+ }
675
+ function getManifestStageProgress(manifest, stageId) {
676
+ return manifest.stageProgress?.[stageId];
677
+ }
678
+ async function recordManifestCompletedSubStage(workflowId, stageId, snapshot) {
679
+ return withManifestLock(workflowId, async () => {
680
+ const manifest = await loadManifest(workflowId);
681
+ const now = (/* @__PURE__ */ new Date()).toISOString();
682
+ const existingStageProgress = manifest.stageProgress?.[stageId];
683
+ const completedSubStages = [...existingStageProgress?.completedSubStages ?? []];
684
+ const existingIndex = completedSubStages.findIndex((entry) => entry.id === snapshot.id);
685
+ const existingSnapshot = existingIndex >= 0 ? completedSubStages[existingIndex] : void 0;
686
+ const nextSnapshot = {
687
+ ...snapshot,
688
+ commitBranch: snapshot.commitBranch ?? existingSnapshot?.commitBranch,
689
+ integrationProof: snapshot.integrationProof ?? existingSnapshot?.integrationProof,
690
+ providerRun: snapshot.providerRun ?? existingSnapshot?.providerRun,
691
+ updatedAt: now
692
+ };
693
+ if (existingIndex >= 0) {
694
+ completedSubStages[existingIndex] = nextSnapshot;
695
+ } else {
696
+ completedSubStages.push(nextSnapshot);
697
+ }
698
+ manifest.stageProgress = {
699
+ ...manifest.stageProgress ?? {},
700
+ [stageId]: {
701
+ ...existingStageProgress,
702
+ completedSubStages,
703
+ updatedAt: now
704
+ }
705
+ };
706
+ await saveManifest(manifest);
707
+ });
708
+ }
709
+ async function recordManifestCompletedStage(workflowId, stageResult) {
710
+ return withManifestLock(workflowId, async () => {
711
+ const manifest = await loadManifest(workflowId);
712
+ const now = (/* @__PURE__ */ new Date()).toISOString();
713
+ const existingStageProgress = manifest.stageProgress?.[stageResult.stageId];
714
+ manifest.stageProgress = {
715
+ ...manifest.stageProgress ?? {},
716
+ [stageResult.stageId]: {
717
+ completedSubStages: existingStageProgress?.completedSubStages ?? [],
718
+ stageResult,
719
+ reviewGate: existingStageProgress?.reviewGate,
720
+ updatedAt: now
721
+ }
722
+ };
723
+ await saveManifest(manifest);
724
+ });
725
+ }
726
+ async function recordManifestReviewGate(workflowId, stageId, reviewGate) {
727
+ return withManifestLock(workflowId, async () => {
728
+ const manifest = await loadManifest(workflowId);
729
+ const now = (/* @__PURE__ */ new Date()).toISOString();
730
+ const existingStageProgress = manifest.stageProgress?.[stageId];
731
+ manifest.stageProgress = {
732
+ ...manifest.stageProgress ?? {},
733
+ [stageId]: {
734
+ ...existingStageProgress,
735
+ completedSubStages: existingStageProgress?.completedSubStages ?? [],
736
+ reviewGate,
737
+ updatedAt: now
738
+ }
739
+ };
740
+ await saveManifest(manifest);
741
+ });
742
+ }
743
+ async function appendManifestRelatedTaskIds(workflowId, taskIds) {
744
+ const filtered = (taskIds ?? []).map((t) => t.trim()).filter(Boolean);
745
+ if (filtered.length === 0) return;
746
+ return withManifestLock(workflowId, async () => {
747
+ const manifest = await loadManifest(workflowId);
748
+ const existing = new Set(manifest.relatedTaskIds ?? []);
749
+ for (const id of filtered) existing.add(id);
750
+ manifest.relatedTaskIds = Array.from(existing);
751
+ await saveManifest(manifest);
752
+ });
753
+ }
754
+ async function listManifests() {
755
+ const flywheelDir = path2.join(getProjectRoot(), ".build-project", "tmp", "flywheel");
756
+ try {
757
+ const entries = await fs2.readdir(flywheelDir, { withFileTypes: true });
758
+ const manifests = [];
759
+ for (const entry of entries) {
760
+ if (entry.isDirectory()) {
761
+ const workflowId = entry.name;
762
+ try {
763
+ const manifest = await loadManifest(workflowId);
764
+ manifests.push(manifest);
765
+ } catch {
766
+ }
767
+ }
768
+ }
769
+ manifests.sort((a, b) => {
770
+ return new Date(b.executedAt).getTime() - new Date(a.executedAt).getTime();
771
+ });
772
+ return manifests;
773
+ } catch (error) {
774
+ if (error.code === "ENOENT") {
775
+ return [];
776
+ }
777
+ throw error;
778
+ }
779
+ }
780
+ async function registerWorktreeRecord(workflowId, record) {
781
+ return withManifestLock(workflowId, async () => {
782
+ const manifest = await loadManifest(workflowId);
783
+ const records = manifest.worktreeRecords ?? [];
784
+ const existingIdx = records.findIndex((r) => r.worktreePath === record.worktreePath);
785
+ const now = (/* @__PURE__ */ new Date()).toISOString();
786
+ const prev = existingIdx >= 0 ? records[existingIdx] : void 0;
787
+ if (prev) {
788
+ records[existingIdx] = {
789
+ ...record,
790
+ ownership: record.ownership ?? prev.ownership ?? deriveWorktreeOwnershipMetadata(workflowId, record.owner),
791
+ status: "pending",
792
+ createdAt: prev.createdAt,
793
+ updatedAt: now
794
+ };
795
+ } else {
796
+ records.push({
797
+ ...record,
798
+ ownership: record.ownership ?? deriveWorktreeOwnershipMetadata(workflowId, record.owner),
799
+ status: "pending",
800
+ createdAt: now,
801
+ updatedAt: now
802
+ });
803
+ }
804
+ manifest.worktreeRecords = records;
805
+ await saveManifest(manifest);
806
+ });
807
+ }
808
+ async function updateWorktreeRecordStatus(workflowId, worktreePath, status, retentionReason) {
809
+ return withManifestLock(workflowId, async () => {
810
+ const manifest = await loadManifest(workflowId);
811
+ const records = manifest.worktreeRecords ?? [];
812
+ const record = records.find((r) => r.worktreePath === worktreePath);
813
+ if (record) {
814
+ ensureWorktreeOwnershipMetadata(manifest.workflowId, record);
815
+ record.status = status;
816
+ record.updatedAt = (/* @__PURE__ */ new Date()).toISOString();
817
+ if (retentionReason !== void 0) {
818
+ if (retentionReason === null) {
819
+ delete record.retentionReason;
820
+ } else {
821
+ record.retentionReason = retentionReason;
822
+ }
823
+ }
824
+ manifest.worktreeRecords = records;
825
+ await saveManifest(manifest);
826
+ }
827
+ });
828
+ }
829
+ function getTrackedCleanupTargets(manifest) {
830
+ const trackedBranches = Array.from(
831
+ new Set((manifest.worktreeRecords ?? []).map((record) => record.branch.trim()).filter(Boolean))
832
+ );
833
+ const trackedWorktrees = Array.from(
834
+ new Set(
835
+ (manifest.worktreeRecords ?? []).map((record) => record.worktreePath.trim()).filter(Boolean)
836
+ )
837
+ );
838
+ return { trackedBranches, trackedWorktrees };
839
+ }
840
+ function getWorktreeRecordsByStatus(manifest, status) {
841
+ return (manifest.worktreeRecords ?? []).filter((r) => r.status === status);
842
+ }
843
+ async function saveTriage(triage) {
844
+ const triagePath = getTriagePath(triage.workflowId);
845
+ const artifactDir = path2.dirname(triagePath);
846
+ await fs2.mkdir(artifactDir, { recursive: true });
847
+ await atomicWriteJson(triagePath, triage);
848
+ }
849
+ async function loadTriage(workflowId) {
850
+ const triagePath = getTriagePath(workflowId);
851
+ try {
852
+ const content = await fs2.readFile(triagePath, "utf-8");
853
+ return JSON.parse(content);
854
+ } catch (error) {
855
+ if (error.code === "ENOENT") {
856
+ return null;
857
+ }
858
+ throw error;
859
+ }
860
+ }
861
+
862
+ export {
863
+ withManifestLock,
864
+ WORKTREE_RECORD_RECOVERY_REASON,
865
+ WORKTREE_RECORD_CLEANUP_REASON,
866
+ hasRecoverableCompletedSubStageProof,
867
+ FLYWHEEL_MANIFEST_STATUSES,
868
+ FLYWHEEL_STATUS_ALIASES,
869
+ FLYWHEEL_STATUS_FILTER_INPUTS,
870
+ normalizeFlywheelStatusFilter,
871
+ WORKFLOW_HEARTBEAT_STALE_AFTER_MS,
872
+ MANIFEST_WORKTREE_RECONCILE_ENV,
873
+ isManifestWorktreeReconcileEnabled,
874
+ deriveWorktreeOwnershipMetadata,
875
+ reconcileManifestWorktreesWithDisk,
876
+ getConfiguredWorkflowHeartbeatStaleAfterMs,
877
+ getWorkflowLastActivityMs,
878
+ isWorkflowHeartbeatStale,
879
+ getManifestStatus,
880
+ getWorkflowExecutionStatus,
881
+ hasPendingWorktreePathAbsentOnDisk,
882
+ getProjectRoot,
883
+ getArtifactDirForRoot,
884
+ getArtifactDir,
885
+ getManifestPath,
886
+ getWorkflowYamlPath,
887
+ getResultPath,
888
+ getPartialResultPath,
889
+ getResultPathForRoot,
890
+ getTriagePath,
891
+ createManifest,
892
+ saveManifest,
893
+ loadManifest,
894
+ updateManifest,
895
+ reconcileAndSaveManifest,
896
+ updateManifestApplyStatus,
897
+ updateManifestHeartbeat,
898
+ getManifestStageProgress,
899
+ recordManifestCompletedSubStage,
900
+ recordManifestCompletedStage,
901
+ recordManifestReviewGate,
902
+ appendManifestRelatedTaskIds,
903
+ listManifests,
904
+ registerWorktreeRecord,
905
+ updateWorktreeRecordStatus,
906
+ getTrackedCleanupTargets,
907
+ getWorktreeRecordsByStatus,
908
+ saveTriage,
909
+ loadTriage
910
+ };
911
+ //# sourceMappingURL=chunk-6TRD7TEE.js.map