@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,1093 @@
1
+ import {
2
+ homeLauncherPath
3
+ } from "./chunk-KZ4JMGZ5.js";
4
+ import {
5
+ resolveInstallHomeDir
6
+ } from "./chunk-GZAJHLKO.js";
7
+ import {
8
+ mkBuildTempDir,
9
+ mkBuildTempDirSync
10
+ } from "./chunk-D6WTZMZB.js";
11
+ import {
12
+ safeRmDir
13
+ } from "./chunk-ALDTFNZ3.js";
14
+ import {
15
+ execGit
16
+ } from "./chunk-MHLEZQQI.js";
17
+ import {
18
+ resolveCliBinary
19
+ } from "./chunk-GVJGSSKM.js";
20
+ import {
21
+ quotePosixShellArg
22
+ } from "./chunk-N5DX4JAK.js";
23
+ import {
24
+ processIsAlive
25
+ } from "./chunk-MT2WAIR3.js";
26
+
27
+ // src/cli/commands/setup-temp-cleanup.ts
28
+ import { randomUUID } from "crypto";
29
+ import { existsSync } from "fs";
30
+ import { chmod, mkdir, readFile, rename, unlink, writeFile } from "fs/promises";
31
+ import { homedir } from "os";
32
+ import { join } from "path";
33
+ import { execa as execa4 } from "execa";
34
+
35
+ // src/cli/commands/upgrade-support.ts
36
+ import fs3 from "fs";
37
+ import os from "os";
38
+ import path3 from "path";
39
+ import { fileURLToPath } from "url";
40
+ import { execa as execa3, execaSync } from "execa";
41
+
42
+ // src/cli/commands/upgrade-git-source-build.ts
43
+ import fs2 from "fs";
44
+ import { tmpdir } from "os";
45
+ import path2 from "path";
46
+ import { execa as execa2 } from "execa";
47
+
48
+ // src/cli/commands/upgrade-output.ts
49
+ import fs from "fs";
50
+ import path from "path";
51
+ import { execa } from "execa";
52
+ import * as semver from "semver";
53
+ var FAILURE_TAIL_LINES = 40;
54
+ var UpgradeStepError = class extends Error {
55
+ constructor(message, detail) {
56
+ super(message);
57
+ this.detail = detail;
58
+ this.name = "UpgradeStepError";
59
+ }
60
+ detail;
61
+ };
62
+ function upgradeNpmEnvironment(env = process.env) {
63
+ return { ...env, PATH: `${path.dirname(process.execPath)}${path.delimiter}${env.PATH ?? ""}` };
64
+ }
65
+ function describeUpgradeError(error) {
66
+ const message = error instanceof Error ? error.message : String(error);
67
+ return error instanceof UpgradeStepError && error.detail ? `${message}
68
+ ${error.detail}` : message;
69
+ }
70
+ function failureDetail(output) {
71
+ if (!output.trim()) return "";
72
+ const lines = output.replace(/\s+$/, "").split("\n");
73
+ if (lines.length <= FAILURE_TAIL_LINES) return lines.join("\n");
74
+ let logNote;
75
+ try {
76
+ const logPath = path.join(mkBuildTempDirSync("upgrade-log"), "output.log");
77
+ fs.writeFileSync(logPath, `${lines.join("\n")}
78
+ `);
79
+ logNote = `Full output: ${logPath}`;
80
+ } catch {
81
+ logNote = "Full output could not be saved.";
82
+ }
83
+ const omitted = lines.length - FAILURE_TAIL_LINES;
84
+ return [
85
+ `... ${omitted} earlier lines omitted`,
86
+ ...lines.slice(-FAILURE_TAIL_LINES),
87
+ logNote
88
+ ].join("\n");
89
+ }
90
+ async function runCaptured(file, args, options = {}) {
91
+ const command = file === "npm" ? resolveCliBinary("npm", "npm") : file;
92
+ const result = await execa(command, args, {
93
+ ...options,
94
+ ...file === "npm" ? { env: upgradeNpmEnvironment(options.env ?? process.env) } : {},
95
+ stdout: "pipe",
96
+ stderr: "pipe",
97
+ all: true,
98
+ reject: false
99
+ });
100
+ if (!result.failed) {
101
+ if (file === "npm" && typeof result.stderr === "string" && result.stderr.trim()) {
102
+ process.stderr.write(`${result.stderr.trimEnd()}
103
+ `);
104
+ }
105
+ return;
106
+ }
107
+ const output = typeof result.all === "string" ? result.all : "";
108
+ const message = result.shortMessage ?? result.message ?? `${file} failed`;
109
+ throw new UpgradeStepError(message, failureDetail(output));
110
+ }
111
+ function formatIdentity(identity) {
112
+ const version = identity.version ?? "unknown version";
113
+ return identity.commit ? `${version} (${identity.commit.slice(0, 7)})` : version;
114
+ }
115
+ function renderUpgradeResult(before, after) {
116
+ const from = formatIdentity(before);
117
+ const to = formatIdentity(after);
118
+ if (from === to) return `Already up to date: ${to}`;
119
+ const older = semver.valid(after.version) && semver.valid(before.version) && semver.lt(after.version, before.version);
120
+ return `${older ? "Downgraded" : "Upgraded"} ${from} -> ${to}`;
121
+ }
122
+
123
+ // src/cli/commands/upgrade-git-source-build.ts
124
+ var BUILD_STEP_TIMEOUT_MS = 30 * 60 * 1e3;
125
+ var BUILD_ENV_SCRUB = [
126
+ "GITHUB_TOKEN",
127
+ "BUILD_INSTALL_GH_TOKEN",
128
+ "BUILD_SKIP_PREPACK",
129
+ "BUILD_HOME",
130
+ "BUILD_CONFIG_DIR",
131
+ "BUILD_DATA_DIR"
132
+ ];
133
+ var GH_CREDENTIAL_FALLBACK_ARGS = [
134
+ "-c",
135
+ "credential.https://github.com.helper=!gh auth git-credential"
136
+ ];
137
+ var GIT_ACCESS_DENIED = /repository not found|authentication failed|could not read username|invalid username|permission denied|returned error: 40[134]|terminal prompts disabled/i;
138
+ async function retryPastUrlRewriteOnDenial(repository, run) {
139
+ const first = await run([]);
140
+ if (first.exitCode === 0 || !GIT_ACCESS_DENIED.test(first.stderr)) return first;
141
+ return run(["-c", `url.${repository}.insteadOf=${repository}`]);
142
+ }
143
+ function parseGitInstallTarget(target) {
144
+ const match = /^git\+(.+)#([0-9a-f]{40})$/.exec(target);
145
+ return match?.[1] && match[2] ? { repository: match[1], commit: match[2] } : void 0;
146
+ }
147
+ var buildGitSourceTarball = async (repository, commit) => {
148
+ const buildDir = await mkBuildTempDir("upgrade-git-build");
149
+ const dispose = async () => {
150
+ await safeRmDir(buildDir, { protectedPaths: [tmpdir()], managedRoots: [tmpdir()] });
151
+ };
152
+ try {
153
+ const srcDir = path2.join(buildDir, "src");
154
+ const packDir = path2.join(buildDir, "pack");
155
+ fs2.mkdirSync(srcDir);
156
+ fs2.mkdirSync(packDir);
157
+ process.stderr.write(`Fetching commit ${commit.slice(0, 12)} from ${repository}...
158
+ `);
159
+ for (const args of [
160
+ ["init", "--quiet"],
161
+ ["remote", "add", "origin", repository],
162
+ [...GH_CREDENTIAL_FALLBACK_ARGS, "fetch", "--depth", "1", "--quiet", "origin", commit],
163
+ ["-c", "core.autocrlf=false", "checkout", "--quiet", "--detach", "FETCH_HEAD"]
164
+ ]) {
165
+ const run2 = (configArgs) => execGit([...configArgs, ...args], { cwd: srcDir, timeoutMs: BUILD_STEP_TIMEOUT_MS });
166
+ const result = args.includes("fetch") ? await retryPastUrlRewriteOnDenial(repository, run2) : await run2([]);
167
+ if (result.exitCode !== 0) {
168
+ const verb = args[0] === "-c" ? args[2] : args[0];
169
+ throw new Error(`git ${verb} failed for commit ${commit}: ${result.stderr.trim()}`);
170
+ }
171
+ }
172
+ const head = (await execGit(["rev-parse", "HEAD"], { cwd: srcDir })).stdout.trim();
173
+ if (head !== commit) {
174
+ throw new Error(`Fetched checkout is ${head || "unknown"}, expected ${commit}.`);
175
+ }
176
+ const env = upgradeNpmEnvironment();
177
+ for (const name of BUILD_ENV_SCRUB) delete env[name];
178
+ const ignoreScripts = await execa2(
179
+ resolveCliBinary("npm", "npm"),
180
+ ["config", "get", "ignore-scripts"],
181
+ {
182
+ cwd: srcDir,
183
+ env,
184
+ extendEnv: false,
185
+ reject: false
186
+ }
187
+ );
188
+ if (/^(true|1|yes|on)$/i.test(String(ignoreScripts.stdout).trim())) {
189
+ throw new Error(
190
+ "npm is configured with ignore-scripts=true, so the source build cannot produce dist/. Remove the effective setting (npm config delete ignore-scripts; inspect with npm config list) and retry."
191
+ );
192
+ }
193
+ process.stderr.write("Building from source (npm ci, npm pack)...\n");
194
+ const run = (file, args) => runCaptured(file, args, {
195
+ cwd: srcDir,
196
+ env,
197
+ extendEnv: false,
198
+ timeout: BUILD_STEP_TIMEOUT_MS,
199
+ stdin: "ignore"
200
+ });
201
+ const npm = (args) => run("npm", args);
202
+ const ciArgs = ["ci", "--include=dev", "--no-audit", "--no-fund"];
203
+ const normalizer = path2.join("scripts", "normalize-lockfile-gypfile.mjs");
204
+ if (fs2.existsSync(path2.join(srcDir, normalizer))) {
205
+ await npm([...ciArgs, "--ignore-scripts"]);
206
+ await run(process.execPath, [normalizer, "."]);
207
+ await npm(["rebuild"]);
208
+ } else {
209
+ await npm(ciArgs);
210
+ }
211
+ await npm(["pack", "--pack-destination", packDir]);
212
+ const tarball = fs2.readdirSync(packDir).find((name) => name.endsWith(".tgz"));
213
+ if (!tarball) throw new Error(`npm pack produced no tarball under ${packDir}.`);
214
+ return { tarballPath: path2.join(packDir, tarball), dispose };
215
+ } catch (error) {
216
+ await dispose();
217
+ throw error;
218
+ }
219
+ };
220
+
221
+ // src/cli/commands/upgrade-support.ts
222
+ var DEFAULT_PACKAGE = "@ebrindley/build";
223
+ var INSTALL_LOCK_DIR_NAME = "install.lock.d";
224
+ var INSTALL_LOCK_OWNER_FILE = "owner.json";
225
+ var DEFAULT_LOCK_TIMEOUT_MS = 3e4;
226
+ var DEFAULT_LOCK_STALE_MS = 36 * 6e4;
227
+ var DEFAULT_LOCK_RETRY_MS = 250;
228
+ var LS_REMOTE_TIMEOUT_MS = 6e4;
229
+ var FULL_SHA_RE = /^[0-9a-f]{40}$/i;
230
+ var PARTIAL_SHA_RE = /^[0-9a-f]{7,39}$/i;
231
+ function defaultSleep(ms) {
232
+ return new Promise((resolve) => setTimeout(resolve, ms));
233
+ }
234
+ function isPidAlive(pid) {
235
+ return Number.isInteger(pid) && pid > 0 && processIsAlive(pid);
236
+ }
237
+ function buildHomeDir(homeDir) {
238
+ return resolveInstallHomeDir(homeDir);
239
+ }
240
+ function installManifestPath(homeDir) {
241
+ return path3.join(buildHomeDir(homeDir), "install.json");
242
+ }
243
+ function installLockDir(homeDir) {
244
+ return path3.join(buildHomeDir(homeDir), INSTALL_LOCK_DIR_NAME);
245
+ }
246
+ function readInstallLockOwner(lockDir) {
247
+ try {
248
+ const ownerPath = path3.join(lockDir, INSTALL_LOCK_OWNER_FILE);
249
+ if (!fs3.existsSync(ownerPath)) return void 0;
250
+ const raw = fs3.readFileSync(ownerPath, "utf8");
251
+ const data = JSON.parse(raw);
252
+ if (typeof data.pid !== "number" || typeof data.hostname !== "string" || typeof data.startedAt !== "string" || typeof data.token !== "string") {
253
+ return void 0;
254
+ }
255
+ return {
256
+ pid: data.pid,
257
+ hostname: data.hostname,
258
+ startedAt: data.startedAt,
259
+ command: typeof data.command === "string" ? data.command : "unknown",
260
+ token: data.token
261
+ };
262
+ } catch {
263
+ return void 0;
264
+ }
265
+ }
266
+ function formatLockDiagnostics(lockDir, owner, alive, stale) {
267
+ const lines = [`Install lock is held at ${lockDir}.`];
268
+ if (!owner) {
269
+ lines.push("Owner metadata is missing or unreadable.");
270
+ } else {
271
+ lines.push(
272
+ `Owner: pid=${owner.pid} host=${owner.hostname} startedAt=${owner.startedAt} command=${owner.command}`
273
+ );
274
+ if (alive === false) lines.push("Owner process is not running (stale lock).");
275
+ if (alive === true) lines.push("Owner process appears to be running.");
276
+ }
277
+ if (stale) lines.push("Lock is considered stale and can be reclaimed.");
278
+ lines.push("Wait for the other upgrade/install to finish, or remove the stale lock directory.");
279
+ return lines.join(" ");
280
+ }
281
+ function writeLockOwner(lockDir, owner) {
282
+ const ownerPath = path3.join(lockDir, INSTALL_LOCK_OWNER_FILE);
283
+ const tmp = path3.join(lockDir, `.owner.${owner.pid}.${Date.now()}.tmp`);
284
+ fs3.writeFileSync(tmp, `${JSON.stringify(owner, null, 2)}
285
+ `, "utf8");
286
+ fs3.renameSync(tmp, ownerPath);
287
+ }
288
+ function releaseLockDir(lockDir, token) {
289
+ try {
290
+ const owner = readInstallLockOwner(lockDir);
291
+ if (owner && owner.token !== token) {
292
+ return;
293
+ }
294
+ const ownerPath = path3.join(lockDir, INSTALL_LOCK_OWNER_FILE);
295
+ try {
296
+ fs3.unlinkSync(ownerPath);
297
+ } catch {
298
+ }
299
+ try {
300
+ for (const entry of fs3.readdirSync(lockDir)) {
301
+ if (entry.startsWith(".owner.")) {
302
+ try {
303
+ fs3.unlinkSync(path3.join(lockDir, entry));
304
+ } catch {
305
+ }
306
+ }
307
+ }
308
+ } catch {
309
+ }
310
+ fs3.rmdirSync(lockDir);
311
+ } catch {
312
+ }
313
+ }
314
+ function isLockStale(lockDir, owner, staleMs, nowMs, pidAlive, localHostname) {
315
+ if (!owner) {
316
+ try {
317
+ const stat = fs3.statSync(lockDir);
318
+ return { stale: nowMs - stat.mtimeMs > staleMs, alive: void 0 };
319
+ } catch {
320
+ return { stale: true, alive: void 0 };
321
+ }
322
+ }
323
+ if (owner.hostname !== localHostname) {
324
+ const started2 = Date.parse(owner.startedAt);
325
+ return {
326
+ stale: Number.isFinite(started2) && nowMs - started2 > staleMs,
327
+ alive: void 0
328
+ };
329
+ }
330
+ const alive = pidAlive(owner.pid);
331
+ if (!alive) return { stale: true, alive: false };
332
+ const started = Date.parse(owner.startedAt);
333
+ if (Number.isFinite(started) && nowMs - started > staleMs) {
334
+ return { stale: false, alive: true };
335
+ }
336
+ return { stale: false, alive: true };
337
+ }
338
+ async function acquireInstallLock(options = {}) {
339
+ const homeDir = options.homeDir;
340
+ const lockDir = installLockDir(homeDir);
341
+ const timeoutMs = options.timeoutMs ?? DEFAULT_LOCK_TIMEOUT_MS;
342
+ const staleMs = options.staleMs ?? DEFAULT_LOCK_STALE_MS;
343
+ const retryMs = options.retryMs ?? DEFAULT_LOCK_RETRY_MS;
344
+ const nowFn = options.now ?? Date.now;
345
+ const sleepFn = options.sleep ?? defaultSleep;
346
+ const pidAlive = options.isPidAlive ?? isPidAlive;
347
+ const hostname = options.hostname ?? os.hostname();
348
+ const pid = options.pid ?? process.pid;
349
+ const command = options.command ?? "build upgrade";
350
+ const parent = buildHomeDir(homeDir);
351
+ fs3.mkdirSync(parent, { recursive: true });
352
+ const deadline = nowFn() + timeoutMs;
353
+ let lastDiagnostics = `Install lock is held at ${lockDir}.`;
354
+ while (true) {
355
+ const token = `${pid}:${nowFn()}:${Math.random().toString(16).slice(2)}`;
356
+ const owner = {
357
+ pid,
358
+ hostname,
359
+ startedAt: new Date(nowFn()).toISOString(),
360
+ command,
361
+ token
362
+ };
363
+ try {
364
+ fs3.mkdirSync(lockDir);
365
+ try {
366
+ writeLockOwner(lockDir, owner);
367
+ } catch (error) {
368
+ try {
369
+ fs3.rmdirSync(lockDir);
370
+ } catch {
371
+ }
372
+ throw error;
373
+ }
374
+ return {
375
+ lockDir,
376
+ owner,
377
+ release: () => releaseLockDir(lockDir, token)
378
+ };
379
+ } catch (error) {
380
+ const code = error.code;
381
+ if (code !== "EEXIST") throw error;
382
+ const existing = readInstallLockOwner(lockDir);
383
+ const { stale, alive } = isLockStale(lockDir, existing, staleMs, nowFn(), pidAlive, hostname);
384
+ lastDiagnostics = formatLockDiagnostics(lockDir, existing, alive, stale);
385
+ if (stale) {
386
+ try {
387
+ releaseLockDir(lockDir, existing?.token ?? "");
388
+ } catch {
389
+ }
390
+ if (!fs3.existsSync(lockDir)) continue;
391
+ }
392
+ if (nowFn() >= deadline) {
393
+ throw new Error(
394
+ `Error: could not acquire install lock within ${timeoutMs}ms. ${lastDiagnostics}`
395
+ );
396
+ }
397
+ await sleepFn(retryMs);
398
+ }
399
+ }
400
+ }
401
+ function parseLsRemoteLines(stdout) {
402
+ const lines = stdout.split(/\r?\n/).map((line) => line.trim()).filter(Boolean);
403
+ const out = [];
404
+ for (const line of lines) {
405
+ const [sha, ref] = line.split(/\s+/, 2);
406
+ if (sha && ref && FULL_SHA_RE.test(sha)) {
407
+ out.push({ sha: sha.toLowerCase(), ref });
408
+ }
409
+ }
410
+ return out;
411
+ }
412
+ async function resolveGitCommitSha(repoUrl, ref, runLsRemote) {
413
+ const trimmed = ref.trim();
414
+ if (!trimmed) {
415
+ throw new Error("Error: git ref is empty");
416
+ }
417
+ if (FULL_SHA_RE.test(trimmed)) {
418
+ const result2 = await runLsRemote(repoUrl);
419
+ if (result2.exitCode !== 0) {
420
+ throw new Error(
421
+ `Error: could not query advertised git identities from ${repoUrl}${result2.stderr.trim() ? `: ${result2.stderr.trim()}` : ` (exit ${result2.exitCode})`}`
422
+ );
423
+ }
424
+ const rows2 = parseLsRemoteLines(result2.stdout);
425
+ const peeledTags = new Set(
426
+ rows2.filter((row) => row.ref.endsWith("^{}")).map((row) => row.ref.slice(0, -3))
427
+ );
428
+ const advertised = rows2.some((row) => {
429
+ if (row.sha !== trimmed.toLowerCase()) return false;
430
+ const annotatedTagObject = row.ref.startsWith("refs/tags/") && !row.ref.endsWith("^{}") && peeledTags.has(row.ref);
431
+ return !annotatedTagObject;
432
+ });
433
+ if (advertised) return trimmed.toLowerCase();
434
+ throw new Error(`Error: full git SHA "${trimmed}" is not an advertised identity on ${repoUrl}`);
435
+ }
436
+ if (PARTIAL_SHA_RE.test(trimmed)) {
437
+ const result2 = await runLsRemote(repoUrl, trimmed);
438
+ const matches = parseLsRemoteLines(result2.stdout).filter(
439
+ (row) => row.sha.startsWith(trimmed.toLowerCase())
440
+ );
441
+ const unique = [...new Set(matches.map((m) => m.sha))];
442
+ if (unique.length === 1) {
443
+ return unique[0];
444
+ }
445
+ if (unique.length > 1) {
446
+ throw new Error(
447
+ `Error: partial git SHA "${trimmed}" is ambiguous (${unique.length} matches). Use a full 40-character commit SHA.`
448
+ );
449
+ }
450
+ throw new Error(
451
+ `Error: partial git SHA "${trimmed}" could not be verified against ${repoUrl}. Use a full 40-character commit SHA.`
452
+ );
453
+ }
454
+ const result = await runLsRemote(repoUrl, [
455
+ `refs/tags/${trimmed}`,
456
+ `refs/tags/${trimmed}^{}`,
457
+ `refs/heads/${trimmed}`
458
+ ]);
459
+ if (result.exitCode !== 0) {
460
+ throw new Error(
461
+ result.stderr.trim() || `Error: could not query git refs for "${trimmed}" on ${repoUrl} (exit ${result.exitCode})`
462
+ );
463
+ }
464
+ const rows = parseLsRemoteLines(result.stdout);
465
+ const peeled = rows.find((row) => row.ref === `refs/tags/${trimmed}^{}`);
466
+ if (peeled?.sha) {
467
+ return peeled.sha;
468
+ }
469
+ const lightweight = rows.find((row) => row.ref === `refs/tags/${trimmed}`);
470
+ if (lightweight?.sha) return lightweight.sha;
471
+ const head = rows.find((row) => row.ref === `refs/heads/${trimmed}`);
472
+ if (head?.sha) return head.sha;
473
+ throw new Error(
474
+ `Error: could not resolve git ref "${trimmed}" on ${repoUrl}. Named refs must resolve before install.`
475
+ );
476
+ }
477
+ async function resolvePackageVersionString(packageName, ref, runNpmView) {
478
+ const result = await runNpmView(packageName, ref);
479
+ if (result.exitCode !== 0) {
480
+ throw new Error(result.stderr.trim() || `Error: npm could not resolve ${packageName}@${ref}`);
481
+ }
482
+ const version = result.stdout.trim().split(/\r?\n/).at(-1)?.trim() ?? "";
483
+ if (!version) {
484
+ throw new Error(`Error: npm returned no version for ${packageName}@${ref}`);
485
+ }
486
+ if (!/^v?\d+\.\d+\.\d+(?:-[0-9A-Za-z.-]+)?(?:\+[0-9A-Za-z.-]+)?$/.test(version)) {
487
+ throw new Error(`Error: npm returned an invalid version for ${packageName}@${ref}`);
488
+ }
489
+ return version;
490
+ }
491
+ function packageInstallTarget(packageName, resolvedVersion) {
492
+ return `${packageName}@${resolvedVersion}`;
493
+ }
494
+ function gitInstallTarget(repository, resolvedFullCommit) {
495
+ if (!FULL_SHA_RE.test(resolvedFullCommit)) {
496
+ throw new Error(
497
+ `Error: git install target requires a full 40-character commit SHA, got "${resolvedFullCommit}"`
498
+ );
499
+ }
500
+ return `git+${repository}#${resolvedFullCommit.toLowerCase()}`;
501
+ }
502
+ function writeInstallManifestAtomic(manifest, options = {}) {
503
+ const manifestPath = options.manifestPath ?? installManifestPath(options.homeDir);
504
+ const dir = path3.dirname(manifestPath);
505
+ fs3.mkdirSync(dir, { recursive: true });
506
+ const payload = `${JSON.stringify(manifest, null, 2)}
507
+ `;
508
+ const tmp = path3.join(
509
+ dir,
510
+ `.install.json.${process.pid}.${Date.now()}.${Math.random().toString(16).slice(2)}.tmp`
511
+ );
512
+ try {
513
+ fs3.writeFileSync(tmp, payload, "utf8");
514
+ fs3.renameSync(tmp, manifestPath);
515
+ } catch (error) {
516
+ try {
517
+ fs3.unlinkSync(tmp);
518
+ } catch {
519
+ }
520
+ throw error;
521
+ }
522
+ }
523
+ function readInstallManifestFromDisk(options = {}) {
524
+ try {
525
+ const manifestPath = options.manifestPath ?? installManifestPath(options.homeDir);
526
+ if (!fs3.existsSync(manifestPath)) return void 0;
527
+ const data = JSON.parse(fs3.readFileSync(manifestPath, "utf8"));
528
+ if (!data || typeof data !== "object") return void 0;
529
+ if (data.source === "package" || data.source === "git") {
530
+ return data;
531
+ }
532
+ if (typeof data.commit === "string" && data.commit.length > 0) {
533
+ return { ...data, source: "git", schema: 2 };
534
+ }
535
+ if (typeof data.version === "string" || typeof data.package === "string") {
536
+ return { ...data, source: "package", schema: 2 };
537
+ }
538
+ } catch {
539
+ }
540
+ return void 0;
541
+ }
542
+ function findPackageJson(startDir) {
543
+ let current = startDir;
544
+ while (true) {
545
+ const candidate = path3.join(current, "package.json");
546
+ if (fs3.existsSync(candidate)) return candidate;
547
+ const parent = path3.dirname(current);
548
+ if (parent === current) return void 0;
549
+ current = parent;
550
+ }
551
+ }
552
+ function resolveNpmPrefix(installDir) {
553
+ if (installDir) return installDir;
554
+ try {
555
+ const result = execaSync("npm", ["config", "get", "prefix", "--global"]);
556
+ const prefix = result.stdout.trim();
557
+ return prefix || "";
558
+ } catch {
559
+ return "";
560
+ }
561
+ }
562
+ function prefixOfInstalledEntry(entryPath) {
563
+ const match = /^(.+?)\/lib\/node_modules\/(?:@[^/]+\/)?[^/]+\//.exec(
564
+ entryPath.replace(/\\/g, "/")
565
+ );
566
+ return match?.[1];
567
+ }
568
+ function canonicalPath(value) {
569
+ try {
570
+ return fs3.realpathSync(value);
571
+ } catch {
572
+ return path3.resolve(value);
573
+ }
574
+ }
575
+ function resolveInstallPrefixTarget(args) {
576
+ if (args.installDir) return { prefix: args.installDir, source: "install-dir" };
577
+ const running = prefixOfInstalledEntry(args.entryPath);
578
+ const manifest = args.manifestPrefix || void 0;
579
+ if (running) {
580
+ if (manifest && canonicalPath(manifest) !== canonicalPath(running)) {
581
+ throw new Error(
582
+ `Error: this build runs from ${running} but install.json records ${manifest}. Upgrading either would leave the other unchanged. Pass --install-dir <dir> to choose.`
583
+ );
584
+ }
585
+ return { prefix: running, source: "running-entry" };
586
+ }
587
+ if (manifest) return { prefix: manifest, source: "manifest" };
588
+ return { prefix: (args.npmPrefix ?? resolveNpmPrefix)(), source: "npm-global" };
589
+ }
590
+ function detectPackageOnDisk(packageName, installDir) {
591
+ const prefix = resolveNpmPrefix(installDir);
592
+ if (!prefix) return false;
593
+ return fs3.existsSync(path3.join(prefix, "lib", "node_modules", packageName, "package.json"));
594
+ }
595
+ function readInstalledPackageVersion(packageName, installDir) {
596
+ const prefix = resolveNpmPrefix(installDir);
597
+ if (!prefix) return void 0;
598
+ try {
599
+ const packageJsonPath = path3.join(prefix, "lib", "node_modules", packageName, "package.json");
600
+ const parsed = JSON.parse(fs3.readFileSync(packageJsonPath, "utf8"));
601
+ return typeof parsed.version === "string" && parsed.version.trim() ? parsed.version.trim() : void 0;
602
+ } catch {
603
+ return void 0;
604
+ }
605
+ }
606
+ function snapshotInstallState(options) {
607
+ const packageName = options.packageName ?? DEFAULT_PACKAGE;
608
+ const manifestPath = installManifestPath(options.homeDir);
609
+ let manifestBytes = null;
610
+ try {
611
+ if (fs3.existsSync(manifestPath)) {
612
+ manifestBytes = fs3.readFileSync(manifestPath, "utf8");
613
+ }
614
+ } catch {
615
+ manifestBytes = null;
616
+ }
617
+ return {
618
+ manifestPath,
619
+ manifestBytes,
620
+ packagePresent: detectPackageOnDisk(packageName, options.installDir),
621
+ packageVersion: readInstalledPackageVersion(packageName, options.installDir),
622
+ prefix: resolveNpmPrefix(options.installDir),
623
+ capturedAt: (options.now ?? (() => /* @__PURE__ */ new Date()))().toISOString()
624
+ };
625
+ }
626
+ function preserveManifestBackup(snapshot, writeStderr) {
627
+ if (!snapshot.manifestBytes) return;
628
+ try {
629
+ const bakPath = `${snapshot.manifestPath}.bak`;
630
+ fs3.writeFileSync(bakPath, snapshot.manifestBytes, "utf8");
631
+ writeStderr?.(`Previous manifest preserved at ${bakPath}.
632
+ `);
633
+ } catch {
634
+ }
635
+ }
636
+ function restoreManifestFromSnapshot(snapshot) {
637
+ if (snapshot.manifestBytes === null) {
638
+ try {
639
+ if (fs3.existsSync(snapshot.manifestPath)) {
640
+ fs3.unlinkSync(snapshot.manifestPath);
641
+ }
642
+ } catch {
643
+ }
644
+ return;
645
+ }
646
+ const dir = path3.dirname(snapshot.manifestPath);
647
+ fs3.mkdirSync(dir, { recursive: true });
648
+ const tmp = `${snapshot.manifestPath}.restore.${process.pid}.tmp`;
649
+ fs3.writeFileSync(tmp, snapshot.manifestBytes, "utf8");
650
+ fs3.renameSync(tmp, snapshot.manifestPath);
651
+ }
652
+ function detectSourceCheckout(options = {}) {
653
+ let entryPath = options.entryPath;
654
+ if (!entryPath) {
655
+ try {
656
+ entryPath = fileURLToPath(import.meta.url);
657
+ } catch {
658
+ entryPath = process.argv[1] ?? "";
659
+ }
660
+ }
661
+ const normalized = entryPath.replace(/\\/g, "/");
662
+ const packageName = options.packageName ?? DEFAULT_PACKAGE;
663
+ const packageRoot = findPackageJson(path3.dirname(entryPath));
664
+ const hasTsx = process.argv.some((arg) => arg.includes("tsx")) || process.execArgv.some((arg) => arg.includes("tsx"));
665
+ let kind = "unknown";
666
+ if (hasTsx && !normalized.includes("/node_modules/")) {
667
+ kind = "development";
668
+ } else if (normalized.includes(`/node_modules/${packageName}/`)) {
669
+ try {
670
+ const real = fs3.realpathSync(entryPath).replace(/\\/g, "/");
671
+ if (real !== normalized && !real.includes("/node_modules/")) {
672
+ kind = "npm-link";
673
+ } else if (normalized.includes("/lib/node_modules/") || normalized.includes("/.nvm/") || normalized.includes("/volta/")) {
674
+ kind = "global";
675
+ } else {
676
+ kind = "package";
677
+ }
678
+ } catch {
679
+ kind = "package";
680
+ }
681
+ } else if (normalized.includes("/dist/") && !normalized.includes("/node_modules/")) {
682
+ kind = "repo-dist";
683
+ } else if (["/lib/node_modules/", "/.npm/", "/nvm/", "/volta/"].some((p) => normalized.includes(p))) {
684
+ kind = "global";
685
+ } else if (packageRoot) {
686
+ const rootDir = path3.dirname(packageRoot);
687
+ const hasSrc = fs3.existsSync(path3.join(rootDir, "src"));
688
+ const hasGit = fs3.existsSync(path3.join(rootDir, ".git"));
689
+ if (hasSrc && (hasGit || fs3.existsSync(path3.join(rootDir, "install.sh")))) {
690
+ kind = "source-checkout";
691
+ }
692
+ }
693
+ const isSourceLike = kind === "source-checkout" || kind === "npm-link" || kind === "repo-dist" || kind === "development";
694
+ const guidance = isSourceLike ? [
695
+ `This Build binary looks like a ${kind} (not a published package install).`,
696
+ "Refusing to default to the unpublished package channel from a source/link checkout.",
697
+ "Update from source instead:",
698
+ " git pull",
699
+ " ./scripts/compile-dist.sh",
700
+ "Do not run package-channel upgrade against a dirty source checkout.",
701
+ "If you intentionally want the published package, pass --source package --force after installing from npm."
702
+ ] : [];
703
+ return {
704
+ kind,
705
+ isSourceLike,
706
+ entryPath,
707
+ packageRoot: packageRoot ? path3.dirname(packageRoot) : void 0,
708
+ guidance
709
+ };
710
+ }
711
+ function defaultRunGitLsRemote(repoUrl, refspec) {
712
+ const patterns = refspec === void 0 ? [] : Array.isArray(refspec) ? refspec : [refspec];
713
+ return retryPastUrlRewriteOnDenial(
714
+ repoUrl,
715
+ (configArgs) => execGit([...configArgs, ...GH_CREDENTIAL_FALLBACK_ARGS, "ls-remote", repoUrl, ...patterns], {
716
+ cwd: os.tmpdir(),
717
+ timeoutMs: LS_REMOTE_TIMEOUT_MS
718
+ })
719
+ );
720
+ }
721
+ function defaultRunNpmViewVersion(packageName, ref) {
722
+ return execa3("npm", ["view", `${packageName}@${ref}`, "version"], { reject: false }).then(
723
+ (result) => ({
724
+ exitCode: result.exitCode ?? 1,
725
+ stdout: result.stdout ?? "",
726
+ stderr: result.stderr ?? ""
727
+ })
728
+ );
729
+ }
730
+
731
+ // src/cli/commands/setup-temp-cleanup.ts
732
+ var LABEL = "com.build.temp-cleanup";
733
+ var WRAPPER_DIR = join(homedir(), ".build", "bin");
734
+ var WRAPPER_PATH = join(WRAPPER_DIR, "build-cleanup");
735
+ var PLIST_DIR = join(homedir(), "Library", "LaunchAgents");
736
+ var PLIST_PATH = join(PLIST_DIR, `${LABEL}.plist`);
737
+ var LOG_DIR = join(homedir(), ".build", "logs");
738
+ var LOG_OUT = join(LOG_DIR, "temp-cleanup.log");
739
+ var LOG_ERR = join(LOG_DIR, "temp-cleanup-error.log");
740
+ async function resolveBuildBinary() {
741
+ const prefix = readInstallManifestFromDisk()?.prefix;
742
+ if (prefix) {
743
+ const selectedBinary = join(prefix, "bin", "build");
744
+ if (existsSync(selectedBinary)) return selectedBinary;
745
+ }
746
+ const launcher = homeLauncherPath();
747
+ if (existsSync(launcher)) return launcher;
748
+ return null;
749
+ }
750
+ function shellUnescapeSingleQuoted(value) {
751
+ return value.replace(/'\\''/g, "'");
752
+ }
753
+ function buildCleanupArgs(config) {
754
+ const args = ["cleanup", "provider-temp", "--execute", "--silent"];
755
+ if (config.roots.length > 0) {
756
+ for (const root of config.roots) {
757
+ args.push("--root", root);
758
+ }
759
+ } else if (config.useDefaultRoots) {
760
+ args.push("--use-default-roots");
761
+ }
762
+ return args;
763
+ }
764
+ async function loadConfiguredRoots() {
765
+ try {
766
+ const { loadAllConfigSources } = await import("./config-loader-RGP634PC.js");
767
+ const { orderConfigSourcesLowestFirst } = await import("./config-merger-TVUJBZTS.js");
768
+ const sources = orderConfigSourcesLowestFirst(await loadAllConfigSources(process.cwd(), {}));
769
+ let roots = [];
770
+ for (const source of sources) {
771
+ const cleanup = source.data?.cleanup;
772
+ if (cleanup?.providerTemp?.roots?.length) {
773
+ roots = cleanup.providerTemp.roots;
774
+ }
775
+ }
776
+ return roots;
777
+ } catch {
778
+ return [];
779
+ }
780
+ }
781
+ async function resolveTargetConfig(options) {
782
+ if (options?.roots && options.roots.length > 0) {
783
+ return { roots: options.roots, useDefaultRoots: false };
784
+ }
785
+ if (options?.useDefaultRoots) {
786
+ return { roots: [], useDefaultRoots: true };
787
+ }
788
+ const configuredRoots = await loadConfiguredRoots();
789
+ if (configuredRoots.length > 0) {
790
+ return { roots: configuredRoots, useDefaultRoots: false };
791
+ }
792
+ return {
793
+ error: "No provider temp roots configured. Set cleanup.providerTemp.roots, or re-run with --use-default-roots or --root <path>."
794
+ };
795
+ }
796
+ function generateWrapper(buildBinary, targetConfig) {
797
+ const cleanupArgs = buildCleanupArgs(targetConfig).map((arg) => quotePosixShellArg(arg)).join(" ");
798
+ const invokeCmd = `exec "$BUILD_BIN" ${cleanupArgs}`;
799
+ const home = homedir();
800
+ return `#!/bin/bash
801
+ # Build temp cleanup wrapper \u2014 managed by \`build cleanup temp-agent\`
802
+ # Do not edit manually; re-run \`build cleanup temp-agent --install-launchagent\` to update.
803
+
804
+ set -euo pipefail
805
+
806
+ # LaunchAgents run with minimal environment \u2014 set HOME explicitly
807
+ export HOME=${quotePosixShellArg(home)}
808
+
809
+ # Verify the target binary exists; exit 0 (not 1) to avoid launchd backoff
810
+ BUILD_BIN=${quotePosixShellArg(buildBinary)}
811
+ if [ ! -x "$BUILD_BIN" ]; then
812
+ echo "$(date -Iseconds) build-cleanup: binary not found at $BUILD_BIN \u2014 skipping" >> ${quotePosixShellArg(LOG_ERR)} 2>/dev/null || true
813
+ exit 0
814
+ fi
815
+
816
+ ${invokeCmd}
817
+ `;
818
+ }
819
+ function generatePlist(intervalSeconds) {
820
+ const home = homedir();
821
+ return `<?xml version="1.0" encoding="UTF-8"?>
822
+ <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
823
+ <plist version="1.0">
824
+ <dict>
825
+ <key>Label</key>
826
+ <string>${LABEL}</string>
827
+
828
+ <key>ProgramArguments</key>
829
+ <array>
830
+ <string>${WRAPPER_PATH}</string>
831
+ </array>
832
+
833
+ <key>EnvironmentVariables</key>
834
+ <dict>
835
+ <key>HOME</key>
836
+ <string>${home}</string>
837
+ </dict>
838
+
839
+ <key>StartInterval</key>
840
+ <integer>${intervalSeconds}</integer>
841
+
842
+ <key>RunAtLoad</key>
843
+ <true/>
844
+
845
+ <key>StandardOutPath</key>
846
+ <string>${LOG_OUT}</string>
847
+
848
+ <key>StandardErrorPath</key>
849
+ <string>${LOG_ERR}</string>
850
+
851
+ <key>Nice</key>
852
+ <integer>10</integer>
853
+
854
+ <key>ProcessType</key>
855
+ <string>Background</string>
856
+ </dict>
857
+ </plist>
858
+ `;
859
+ }
860
+ async function writeFileAtomic(filePath, content, mode) {
861
+ const tempPath = `${filePath}.${process.pid}.${randomUUID()}.tmp`;
862
+ try {
863
+ await writeFile(tempPath, content, "utf8");
864
+ if (mode !== void 0) await chmod(tempPath, mode);
865
+ await rename(tempPath, filePath);
866
+ } catch (error) {
867
+ await unlink(tempPath).catch(() => void 0);
868
+ throw error;
869
+ }
870
+ }
871
+ async function restoreFile(filePath, prior, mode) {
872
+ if (prior === null) {
873
+ await unlink(filePath).catch(() => void 0);
874
+ return;
875
+ }
876
+ await writeFileAtomic(filePath, prior, mode);
877
+ }
878
+ async function unloadJob() {
879
+ const uid = process.getuid?.() ?? 501;
880
+ try {
881
+ await execa4("launchctl", ["bootout", `gui/${uid}`, PLIST_PATH], {
882
+ reject: false,
883
+ timeout: 1e4
884
+ });
885
+ } catch {
886
+ }
887
+ }
888
+ async function loadJob() {
889
+ const uid = process.getuid?.() ?? 501;
890
+ await execa4("launchctl", ["bootstrap", `gui/${uid}`, PLIST_PATH], {
891
+ timeout: 1e4
892
+ });
893
+ }
894
+ async function installTempCleanup(options) {
895
+ const effectiveIntervalMinutes = options?.intervalMinutes ?? 1440;
896
+ const intervalSeconds = effectiveIntervalMinutes * 60;
897
+ const buildBinary = await resolveBuildBinary();
898
+ if (!buildBinary) {
899
+ return {
900
+ installed: false,
901
+ updated: false,
902
+ message: "Could not resolve the Build binary. Reinstall Build, or run `build ci install-hook` to write the launcher under the Build home folder."
903
+ };
904
+ }
905
+ const targetConfig = await resolveTargetConfig(options);
906
+ if ("error" in targetConfig) {
907
+ return {
908
+ installed: false,
909
+ updated: false,
910
+ message: targetConfig.error
911
+ };
912
+ }
913
+ await mkdir(WRAPPER_DIR, { recursive: true });
914
+ await mkdir(PLIST_DIR, { recursive: true });
915
+ await mkdir(LOG_DIR, { recursive: true });
916
+ const wrapperContent = generateWrapper(buildBinary, targetConfig);
917
+ let wrapperChanged = true;
918
+ if (existsSync(WRAPPER_PATH)) {
919
+ const existing = await readFile(WRAPPER_PATH, "utf8");
920
+ wrapperChanged = existing !== wrapperContent;
921
+ }
922
+ const priorWrapper = existsSync(WRAPPER_PATH) ? await readFile(WRAPPER_PATH, "utf8") : null;
923
+ const plistContent = generatePlist(intervalSeconds);
924
+ let plistChanged = true;
925
+ if (existsSync(PLIST_PATH)) {
926
+ const existing = await readFile(PLIST_PATH, "utf8");
927
+ plistChanged = existing !== plistContent;
928
+ }
929
+ const priorPlist = existsSync(PLIST_PATH) ? await readFile(PLIST_PATH, "utf8") : null;
930
+ try {
931
+ if (wrapperChanged) await writeFileAtomic(WRAPPER_PATH, wrapperContent, 493);
932
+ if (plistChanged) await writeFileAtomic(PLIST_PATH, plistContent);
933
+ await unloadJob();
934
+ await loadJob();
935
+ } catch (err) {
936
+ await restoreFile(WRAPPER_PATH, priorWrapper, 493);
937
+ await restoreFile(PLIST_PATH, priorPlist);
938
+ if (priorPlist !== null) await loadJob().catch(() => void 0);
939
+ return {
940
+ installed: false,
941
+ updated: false,
942
+ message: `Failed to load LaunchAgent: ${err instanceof Error ? err.message : String(err)}`
943
+ };
944
+ }
945
+ const updated = existsSync(PLIST_PATH) && (wrapperChanged || plistChanged);
946
+ return {
947
+ installed: true,
948
+ updated,
949
+ message: updated ? `LaunchAgent updated and loaded (interval: ${effectiveIntervalMinutes}m)` : `LaunchAgent installed and loaded (interval: ${effectiveIntervalMinutes}m)`
950
+ };
951
+ }
952
+ async function readInstalledTempCleanupOptions() {
953
+ if (!existsSync(WRAPPER_PATH) || !existsSync(PLIST_PATH)) return null;
954
+ try {
955
+ const [wrapper, plist] = await Promise.all([
956
+ readFile(WRAPPER_PATH, "utf8"),
957
+ readFile(PLIST_PATH, "utf8")
958
+ ]);
959
+ const execLine = wrapper.match(/^exec "\$BUILD_BIN" (.+)$/m)?.[1] ?? "";
960
+ const args = [...execLine.matchAll(/'((?:'\\''|[^'])*)'/g)].map(
961
+ (match) => shellUnescapeSingleQuoted(match[1] ?? "")
962
+ );
963
+ const roots = [];
964
+ for (let index = 0; index < args.length; index += 1) {
965
+ const root = args[index + 1];
966
+ if (args[index] === "--root" && root) roots.push(root);
967
+ }
968
+ const intervalSeconds = Number(
969
+ plist.match(/<key>StartInterval<\/key>\s*<integer>(\d+)<\/integer>/)?.[1]
970
+ );
971
+ if (!Number.isFinite(intervalSeconds) || intervalSeconds <= 0) return null;
972
+ return {
973
+ intervalMinutes: intervalSeconds / 60,
974
+ roots,
975
+ useDefaultRoots: args.includes("--use-default-roots")
976
+ };
977
+ } catch {
978
+ return null;
979
+ }
980
+ }
981
+ async function uninstallTempCleanup() {
982
+ let removed = false;
983
+ await unloadJob();
984
+ if (existsSync(PLIST_PATH)) {
985
+ await unlink(PLIST_PATH);
986
+ removed = true;
987
+ }
988
+ if (existsSync(WRAPPER_PATH)) {
989
+ await unlink(WRAPPER_PATH);
990
+ removed = true;
991
+ }
992
+ return {
993
+ removed,
994
+ message: removed ? "LaunchAgent and wrapper removed." : "LaunchAgent was not installed."
995
+ };
996
+ }
997
+ function parseWrapperPaths(content) {
998
+ const singleQuoted = "'((?:'\\\\''|[^'])*)'";
999
+ const binMatch = new RegExp(`^BUILD_BIN=${singleQuoted}$`, "m").exec(content) ?? /^BUILD_BIN="(.+)"$/m.exec(content);
1000
+ const execMatch = new RegExp(`^exec ${singleQuoted} "\\$BUILD_BIN"(?:\\s|$)`, "m").exec(content) ?? /^exec "(.+)" "(.+)" /m.exec(content);
1001
+ const binaryPath = binMatch?.[1] ? shellUnescapeSingleQuoted(binMatch[1]) : execMatch?.[2] ?? null;
1002
+ const nodePath = execMatch?.[1] ? shellUnescapeSingleQuoted(execMatch[1]) : null;
1003
+ return {
1004
+ binaryPath,
1005
+ nodePath
1006
+ };
1007
+ }
1008
+ async function checkTempCleanupStatus() {
1009
+ const wrapperExists = existsSync(WRAPPER_PATH);
1010
+ const plistExists = existsSync(PLIST_PATH);
1011
+ let jobLoaded = false;
1012
+ try {
1013
+ const result = await execa4("launchctl", ["list"], { timeout: 5e3 });
1014
+ jobLoaded = result.stdout.includes(LABEL);
1015
+ } catch {
1016
+ }
1017
+ let embeddedBinaryPath = null;
1018
+ let embeddedBinaryExists = null;
1019
+ let embeddedNodePath = null;
1020
+ let embeddedNodeExists = null;
1021
+ if (wrapperExists) {
1022
+ try {
1023
+ const wrapperContent = await readFile(WRAPPER_PATH, "utf8");
1024
+ const { binaryPath, nodePath } = parseWrapperPaths(wrapperContent);
1025
+ embeddedBinaryPath = binaryPath;
1026
+ embeddedBinaryExists = binaryPath !== null ? existsSync(binaryPath) : null;
1027
+ embeddedNodePath = nodePath;
1028
+ embeddedNodeExists = nodePath !== null ? existsSync(nodePath) : null;
1029
+ } catch {
1030
+ }
1031
+ }
1032
+ const stale = (
1033
+ // Partial install: one artifact is present without the other
1034
+ wrapperExists !== plistExists || // Wrapper installed but unreadable or unparseable — can't validate its launcher
1035
+ wrapperExists && embeddedBinaryPath === null || // Wrapper installed and parseable but one or both embedded paths are gone
1036
+ embeddedBinaryExists === false || // Legacy wrappers pinned Node separately; retain that stale-path check.
1037
+ embeddedNodeExists === false
1038
+ );
1039
+ return {
1040
+ wrapperExists,
1041
+ plistExists,
1042
+ jobLoaded,
1043
+ wrapperPath: WRAPPER_PATH,
1044
+ plistPath: PLIST_PATH,
1045
+ embeddedBinaryPath,
1046
+ embeddedBinaryExists,
1047
+ embeddedNodePath,
1048
+ embeddedNodeExists,
1049
+ stale
1050
+ };
1051
+ }
1052
+ var __testOnly = {
1053
+ buildCleanupArgs,
1054
+ generateWrapper,
1055
+ parseWrapperPaths,
1056
+ resolveBuildBinary,
1057
+ resolveTargetConfig,
1058
+ generatePlist,
1059
+ writeFileAtomic,
1060
+ WRAPPER_PATH,
1061
+ PLIST_PATH
1062
+ };
1063
+
1064
+ export {
1065
+ describeUpgradeError,
1066
+ runCaptured,
1067
+ renderUpgradeResult,
1068
+ parseGitInstallTarget,
1069
+ buildGitSourceTarball,
1070
+ DEFAULT_PACKAGE,
1071
+ acquireInstallLock,
1072
+ resolveGitCommitSha,
1073
+ resolvePackageVersionString,
1074
+ packageInstallTarget,
1075
+ gitInstallTarget,
1076
+ writeInstallManifestAtomic,
1077
+ readInstallManifestFromDisk,
1078
+ findPackageJson,
1079
+ resolveNpmPrefix,
1080
+ resolveInstallPrefixTarget,
1081
+ snapshotInstallState,
1082
+ preserveManifestBackup,
1083
+ restoreManifestFromSnapshot,
1084
+ detectSourceCheckout,
1085
+ defaultRunGitLsRemote,
1086
+ defaultRunNpmViewVersion,
1087
+ installTempCleanup,
1088
+ readInstalledTempCleanupOptions,
1089
+ uninstallTempCleanup,
1090
+ checkTempCleanupStatus,
1091
+ __testOnly
1092
+ };
1093
+ //# sourceMappingURL=chunk-CSIE4Y7C.js.map