@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,1104 @@
1
+ import {
2
+ buildChildProcessEnv
3
+ } from "./chunk-MEMSY6VY.js";
4
+ import {
5
+ resolveProviderReleaseStatus
6
+ } from "./chunk-VBNCKCCI.js";
7
+ import {
8
+ isSkipAuthEnvActive
9
+ } from "./chunk-33IGPPUI.js";
10
+ import {
11
+ formatSandboxCapabilityFailure,
12
+ probeProviderSandboxCapability
13
+ } from "./chunk-3H4MWYIC.js";
14
+ import {
15
+ lookupAuthOutcome
16
+ } from "./chunk-PPZESPJT.js";
17
+ import {
18
+ resolveClaudeBackend,
19
+ synthesizeClaudeBackendEnv
20
+ } from "./chunk-H3HGMISG.js";
21
+ import {
22
+ CODEX_API_KEY_ENV_VARS,
23
+ shouldPassCodexApiKeys
24
+ } from "./chunk-CJBSZX3F.js";
25
+ import {
26
+ resolveProviderCliCommand
27
+ } from "./chunk-KKQKWAMF.js";
28
+ import {
29
+ ProviderRegistry
30
+ } from "./chunk-QJ6OEH4K.js";
31
+ import {
32
+ LAUNCH_INHERITANCE_DIR_ENV,
33
+ LAUNCH_INHERITANCE_ENV,
34
+ deliversBuildSet,
35
+ excludesAgentGlobals,
36
+ formatLaunchInheritance,
37
+ isNativeAsk,
38
+ readInheritanceDir,
39
+ readLaunchInheritance
40
+ } from "./chunk-43OKHTW4.js";
41
+ import {
42
+ formatLinuxHostClassNote,
43
+ resolveLinuxHostClass
44
+ } from "./chunk-V2TVPO3X.js";
45
+ import {
46
+ scopeChildEnvForProvider
47
+ } from "./chunk-WGQAXLNA.js";
48
+ import {
49
+ BUILD_SKIP_READINESS_PREFLIGHT,
50
+ BUILD_STRICT_READINESS,
51
+ readRawEnv
52
+ } from "./chunk-7VRJHTGZ.js";
53
+
54
+ // src/core/providers/readiness.ts
55
+ import { constants as fsConstants } from "fs";
56
+ import { access } from "fs/promises";
57
+ import path from "path";
58
+ import { execa } from "execa";
59
+
60
+ // src/core/providers/provider-execution-env.ts
61
+ var DEFAULT_BLOCKED_CREDENTIAL_KEYS = [
62
+ "AWS_SECRET_ACCESS_KEY",
63
+ "AWS_SESSION_TOKEN",
64
+ "AWS_ACCESS_KEY_ID",
65
+ "GITHUB_TOKEN",
66
+ "GH_TOKEN",
67
+ // A GitHub credential alias read by Build's own environment helpers; only
68
+ // copilot re-admits it (below), like the two GitHub tokens above.
69
+ "COPILOT_TOKEN",
70
+ // The npm publish/registry token rides the generic NPM_ prefix. No provider
71
+ // CLI needs it, so provider children never receive it (Build-owned children
72
+ // built directly with buildChildProcessEnv keep it for registry access).
73
+ "NPM_TOKEN"
74
+ ];
75
+ var GROK_ADMITTED_ENV_KEYS = ["XAI_API_KEY", "GROK_CODE_XAI_API_KEY", "GROK_HOME"];
76
+ var GROK_COMPAT_OFF = Object.fromEntries(
77
+ ["CLAUDE", "CURSOR", "CODEX"].flatMap(
78
+ (source) => ["AGENTS", "HOOKS", "MCPS", "RULES", "SKILLS"].map((kind) => [
79
+ `GROK_${source}_${kind}_ENABLED`,
80
+ "false"
81
+ ])
82
+ )
83
+ );
84
+ var OPENCODE_API_KEY_ENV_VARS = ["SYNTHETIC_API_KEY", "ZAI_API_KEY", "ZHIPU_API_KEY"];
85
+ function shouldIsolateHostConfiguration(options) {
86
+ return options.isolateHostConfiguration === true || options.executionIntent === "analysis";
87
+ }
88
+ function mergeExecutionEnv(baseEnv, overrides) {
89
+ const merged = { ...baseEnv };
90
+ if (!overrides) {
91
+ return merged;
92
+ }
93
+ for (const [key, value] of Object.entries(overrides)) {
94
+ if (value === void 0 || value === null) {
95
+ delete merged[key];
96
+ continue;
97
+ }
98
+ merged[key] = value;
99
+ }
100
+ return merged;
101
+ }
102
+ var AWS_STATIC_SECRET_KEYS = [
103
+ "AWS_SECRET_ACCESS_KEY",
104
+ "AWS_SESSION_TOKEN",
105
+ "AWS_ACCESS_KEY_ID"
106
+ ];
107
+ var PROVIDER_ENV_POLICIES = {
108
+ claude: {
109
+ // Forwarding is not routing: Claude still selects Bedrock via its backend.
110
+ allowBlockedKeys: ({ effectiveEnv, workingDir }) => resolveClaudeBackend(effectiveEnv, workingDir) === "bedrock" ? [...AWS_STATIC_SECRET_KEYS] : [],
111
+ normalizeOverrides: ({
112
+ effectiveEnv,
113
+ inheritance,
114
+ isolateHostConfiguration,
115
+ overrides,
116
+ workingDir
117
+ }) => synthesizeClaudeBackendEnv(
118
+ {
119
+ ...overrides ?? {},
120
+ ...isolateHostConfiguration ? { BUILD_CLAUDE_SAFE_MODE: "1" } : {},
121
+ // Loads the CLAUDE.md in the added inheritance folder (claude/execution/inherited-instructions.ts).
122
+ ...readInheritanceDir(effectiveEnv) && deliversBuildSet(inheritance) ? { CLAUDE_CODE_ADDITIONAL_DIRECTORIES_CLAUDE_MD: "1" } : {}
123
+ },
124
+ resolveClaudeBackend(effectiveEnv, workingDir)
125
+ )
126
+ },
127
+ cursor: {
128
+ normalizeOverrides: ({ isolateHostConfiguration, overrides }) => isolateHostConfiguration ? { ...overrides ?? {}, BUILD_CURSOR_APPROVE_MCPS: "0" } : overrides
129
+ },
130
+ copilot: {
131
+ allowBlockedKeys: () => ["GITHUB_TOKEN", "GH_TOKEN", "COPILOT_TOKEN"]
132
+ },
133
+ codex: {
134
+ // Forward AWS env-key secrets always. BUILD_CODEX_BACKEND=bedrock still
135
+ // required to *route* to Bedrock vs OpenAI.
136
+ allowBlockedKeys: () => [...AWS_STATIC_SECRET_KEYS],
137
+ /**
138
+ * Child-env contract:
139
+ * - api_key mode (explicit BUILD_CODEX_AUTH_MODE=api_key): preserve keys so they reach the child
140
+ * - chatgpt_login (default) / other: strip OPENAI_API_KEY, CODEX_API_KEY, CODEX_TOKEN
141
+ *
142
+ * Uses the shared shouldPassCodexApiKeys vocabulary so readiness and spawn stay aligned.
143
+ */
144
+ finalizeEnv: (env, { effectiveEnv }) => {
145
+ if (shouldPassCodexApiKeys(effectiveEnv)) {
146
+ return env;
147
+ }
148
+ const filtered = { ...env };
149
+ for (const key of CODEX_API_KEY_ENV_VARS) {
150
+ delete filtered[key];
151
+ }
152
+ return filtered;
153
+ }
154
+ },
155
+ grok: {
156
+ additionalAllowedKeys: () => GROK_ADMITTED_ENV_KEYS,
157
+ // Grok also reads Claude and Cursor instructions, rules, skills, hooks, and MCP
158
+ // servers by default; a launch that leaves out agent globals switches those off.
159
+ normalizeOverrides: ({ inheritance, overrides }) => excludesAgentGlobals(inheritance) ? { ...overrides ?? {}, ...GROK_COMPAT_OFF } : overrides
160
+ },
161
+ opencode: {
162
+ // OpenCode has no Bedrock routing switch; it selects Bedrock via --model /
163
+ // opencode.json. Forward the same AWS env-key secrets native `opencode` sees.
164
+ allowBlockedKeys: () => [...AWS_STATIC_SECRET_KEYS],
165
+ additionalAllowedKeys: () => OPENCODE_API_KEY_ENV_VARS
166
+ }
167
+ };
168
+ function launchInheritanceOverride(inheritance, inheritanceDir, overrides) {
169
+ if (!inheritance) return overrides;
170
+ const parent = mergeExecutionEnv(process.env, overrides);
171
+ const recorded = {};
172
+ const values = [
173
+ [LAUNCH_INHERITANCE_ENV, formatLaunchInheritance(inheritance)],
174
+ [LAUNCH_INHERITANCE_DIR_ENV, inheritanceDir ?? ""]
175
+ ];
176
+ for (const [key, value] of values) {
177
+ if (value || parent[key]) recorded[key] = value;
178
+ }
179
+ return Object.keys(recorded).length > 0 ? { ...overrides ?? {}, ...recorded } : overrides;
180
+ }
181
+ function buildProviderExecutionEnv(provider, overrides, options = {}) {
182
+ const normalizedProvider = provider.toLowerCase();
183
+ const policy = PROVIDER_ENV_POLICIES[normalizedProvider];
184
+ const inheritanceOverride = launchInheritanceOverride(
185
+ options.inheritance,
186
+ options.inheritanceDir,
187
+ overrides
188
+ );
189
+ const effectiveEnv = mergeExecutionEnv(process.env, inheritanceOverride);
190
+ const inheritance = options.inheritance ?? readLaunchInheritance(effectiveEnv);
191
+ const context = {
192
+ effectiveEnv,
193
+ inheritance,
194
+ isolateHostConfiguration: shouldIsolateHostConfiguration(options) && !isNativeAsk(inheritance),
195
+ overrides: inheritanceOverride,
196
+ workingDir: options.workingDir
197
+ };
198
+ const blockedKeys = /* @__PURE__ */ new Set([
199
+ ...DEFAULT_BLOCKED_CREDENTIAL_KEYS,
200
+ ...options.blockedKeys ? Array.from(options.blockedKeys) : []
201
+ ]);
202
+ const normalizedOverrides = policy?.normalizeOverrides?.(context) ?? inheritanceOverride;
203
+ for (const key of policy?.allowBlockedKeys?.(context) ?? []) {
204
+ blockedKeys.delete(key);
205
+ }
206
+ const policyAdditionalKeys = policy?.additionalAllowedKeys?.(context);
207
+ const childEnv = scopeChildEnvForProvider(
208
+ buildChildProcessEnv({
209
+ overrides: normalizedOverrides,
210
+ additionalAllowedKeys: [
211
+ ...options.additionalAllowedKeys ? Array.from(options.additionalAllowedKeys) : [],
212
+ ...policyAdditionalKeys ? Array.from(policyAdditionalKeys) : []
213
+ ],
214
+ additionalAllowedPrefixes: options.additionalAllowedPrefixes,
215
+ blockedKeys,
216
+ filterOverrides: options.filterOverrides ?? false
217
+ }),
218
+ normalizedProvider
219
+ );
220
+ return policy?.finalizeEnv?.(childEnv, context) ?? childEnv;
221
+ }
222
+
223
+ // src/core/providers/readiness.ts
224
+ function isProviderSkipAuthActive(config, env) {
225
+ const skipEnvVar = config.auth?.skip_env_var;
226
+ if (!skipEnvVar) {
227
+ return false;
228
+ }
229
+ return isSkipAuthEnvActive(skipEnvVar, env);
230
+ }
231
+ function resolveWriteBoundaryAdvisory(env) {
232
+ try {
233
+ const resolution = resolveLinuxHostClass(env ? { env } : {});
234
+ let detail;
235
+ if (resolution.hostClass === "desktop-unacked") {
236
+ detail = "Linux desktop write consent is not recorded. Run build sandbox trust linux --ack-desktop or build sandbox trust linux --host isolated.";
237
+ } else if (resolution.note) {
238
+ detail = resolution.note;
239
+ } else {
240
+ detail = formatLinuxHostClassNote(resolution) ?? `Host class ${resolution.hostClass} (source=${resolution.source})`;
241
+ }
242
+ return {
243
+ hostClass: resolution.hostClass,
244
+ source: String(resolution.source),
245
+ writesAllowed: resolution.writesAllowed,
246
+ detail
247
+ };
248
+ } catch {
249
+ return void 0;
250
+ }
251
+ }
252
+ function resolveAuthLabel(readiness) {
253
+ if (readiness.readinessNote === "env-var-auth-assumed") return "assumed-env";
254
+ switch (readiness.authenticated) {
255
+ case "yes":
256
+ return "authenticated";
257
+ case "no":
258
+ return "not-authenticated";
259
+ default:
260
+ return "unknown";
261
+ }
262
+ }
263
+ function resolveNamedReadiness(readiness, dryRun) {
264
+ const executableAvailable = readiness.installed && readiness.cliHealthy;
265
+ const configured = typeof readiness.configured === "boolean" ? readiness.configured : readiness.reasonCode !== "provider-not-found" && readiness.reasonCode !== "no-cli-channel" && readiness.known !== false;
266
+ const lastSuccessfulDryRun = dryRun?.fresh ? dryRun.lastSuccessMs : null;
267
+ const readyForRun = readiness.readinessNote === "env-var-auth-assumed" ? false : readiness.ready;
268
+ return {
269
+ configured,
270
+ authenticated: resolveAuthLabel(readiness),
271
+ executableAvailable,
272
+ lastSuccessfulDryRun,
273
+ readyForRun
274
+ };
275
+ }
276
+ function resolveProviderParityLabel(readiness, resolved) {
277
+ const named = resolved ?? resolveNamedReadiness(readiness);
278
+ if (!named.configured || !readiness.installed) {
279
+ return "missing";
280
+ }
281
+ if (!readiness.cliHealthy && readiness.reasonCode === "cli-unhealthy") {
282
+ return "installed-unhealthy";
283
+ }
284
+ if (!readiness.cliHealthy && readiness.reasonCode !== "cli-present-unprobed") {
285
+ return "installed-unhealthy";
286
+ }
287
+ if (readiness.readinessNote === "env-var-auth-assumed" || named.authenticated === "assumed-env") {
288
+ return "env-assumed";
289
+ }
290
+ if (readiness.ready && named.readyForRun) {
291
+ return "verified-ready";
292
+ }
293
+ if (readiness.authenticated === "no" || named.authenticated === "not-authenticated") {
294
+ return "auth-no";
295
+ }
296
+ return "auth-unknown";
297
+ }
298
+ function resolveAuthEvidence(readiness) {
299
+ if (readiness.readinessNote === "env-var-auth-assumed") {
300
+ return {
301
+ authEvidence: "assumed-env-var",
302
+ authDetail: "Auth inferred from a configured env var for setup readiness; execution still verifies provider access."
303
+ };
304
+ }
305
+ if (readiness.authenticated === "yes") {
306
+ return {
307
+ authEvidence: "provider-reported",
308
+ authDetail: "Provider readiness reported authentication available."
309
+ };
310
+ }
311
+ if (readiness.authenticated === "no") {
312
+ return {
313
+ authEvidence: "reported-missing",
314
+ authDetail: readiness.reason ?? "Provider readiness reported authentication missing."
315
+ };
316
+ }
317
+ if (readiness.warning?.includes("active auth probe")) {
318
+ return {
319
+ authEvidence: "active-unverified",
320
+ authDetail: readiness.warning ?? "Active auth probe could not verify headless execution; this is not a confirmed credential failure."
321
+ };
322
+ }
323
+ if (readiness.warning || readiness.reason?.includes("Authentication status unknown")) {
324
+ return {
325
+ authEvidence: "passive-unknown",
326
+ authDetail: readiness.warning ?? readiness.reason ?? "Passive readiness could not verify provider-owned authentication state."
327
+ };
328
+ }
329
+ return {
330
+ authEvidence: "not-collected",
331
+ authDetail: "Authentication status was not collected for this diagnostic."
332
+ };
333
+ }
334
+ function classifyProviderReadiness(readiness, resolved) {
335
+ const auth = resolveAuthEvidence(readiness);
336
+ const named = resolved ?? resolveNamedReadiness(readiness);
337
+ if (!named.configured || !readiness.installed) {
338
+ return {
339
+ readinessStatus: "unavailable",
340
+ readinessStatusDetail: readiness.reason ?? "CLI is not installed.",
341
+ ...auth
342
+ };
343
+ }
344
+ if (!readiness.cliHealthy && readiness.reasonCode !== "cli-present-unprobed") {
345
+ return {
346
+ readinessStatus: "broken",
347
+ readinessStatusDetail: readiness.reason ?? "CLI is installed but failed health probes.",
348
+ ...auth
349
+ };
350
+ }
351
+ if (readiness.sandboxCapable === false) {
352
+ const sandboxDetail = readiness.sandboxReason ?? readiness.reason ?? "Execute-tier sandbox/policy probe blocked provider state access.";
353
+ return {
354
+ readinessStatus: "installed-but-unverified",
355
+ readinessStatusDetail: `Readiness caveat: ${sandboxDetail} This is not a broken CLI or confirmed auth failure.`,
356
+ ...auth
357
+ };
358
+ }
359
+ if (readiness.readinessNote === "env-var-auth-assumed") {
360
+ return {
361
+ readinessStatus: "installed-but-unverified",
362
+ readinessStatusDetail: "CLI is installed and setup readiness is assumed from configured env auth; execution still verifies provider access.",
363
+ ...auth
364
+ };
365
+ }
366
+ if (readiness.sandboxCapable === true && readiness.authenticated === "no") {
367
+ return {
368
+ readinessStatus: "contained-auth-needed",
369
+ readinessStatusDetail: "CLI is contained and healthy, but authentication is missing.",
370
+ ...auth
371
+ };
372
+ }
373
+ if (readiness.sandboxCapable === true && readiness.ready) {
374
+ return {
375
+ readinessStatus: "contained-ready",
376
+ readinessStatusDetail: "CLI, auth, and execute-tier containment checks are ready.",
377
+ ...auth
378
+ };
379
+ }
380
+ if (readiness.authenticated === "no" || resolved?.authenticated === "not-authenticated") {
381
+ return {
382
+ readinessStatus: "normal-auth-needed",
383
+ readinessStatusDetail: "CLI is installed and healthy, but authentication is missing.",
384
+ ...auth
385
+ };
386
+ }
387
+ if (readiness.ready || resolved?.readyForRun) {
388
+ return {
389
+ readinessStatus: "normal-auth-ready",
390
+ readinessStatusDetail: "CLI is installed and auth readiness evidence is present.",
391
+ ...auth
392
+ };
393
+ }
394
+ return {
395
+ readinessStatus: "installed-but-unverified",
396
+ readinessStatusDetail: readiness.reason ?? "CLI is installed and healthy; auth checked on first run.",
397
+ ...auth
398
+ };
399
+ }
400
+ var SETUP_CHECK_READINESS_OPTIONS = {
401
+ mode: "setup",
402
+ sandboxProbeMode: "execute"
403
+ };
404
+ function resolveReadinessScopeLabel(readiness, resolved) {
405
+ if (!readiness.installed) return "unknown";
406
+ if (!readiness.cliHealthy && readiness.reasonCode !== "cli-present-unprobed") {
407
+ return "degraded";
408
+ }
409
+ if (readiness.sandboxCapable === false) return "degraded";
410
+ if (readiness.readinessNote === "env-var-auth-assumed") return "assumed";
411
+ if (readiness.ready && readiness.readinessNote !== "env-var-auth-assumed" || resolved?.readyForRun) {
412
+ return "execute-ready";
413
+ }
414
+ if (readiness.authenticated === "yes" || resolved?.authenticated === "authenticated") {
415
+ return "authenticated";
416
+ }
417
+ if (readiness.authenticated === "no" || resolved?.authenticated === "not-authenticated") {
418
+ return "auth-needed";
419
+ }
420
+ if (readiness.installed) return "installed";
421
+ return "unknown";
422
+ }
423
+ function resolveReadinessScope(readiness, resolved) {
424
+ const label = resolveReadinessScopeLabel(readiness, resolved);
425
+ switch (label) {
426
+ case "unknown":
427
+ if (!readiness.installed) {
428
+ return { label, detail: "CLI not installed" };
429
+ }
430
+ if (readiness.authenticated === "no" || resolved?.authenticated === "not-authenticated") {
431
+ return { label, detail: "Authentication not configured" };
432
+ }
433
+ return {
434
+ label,
435
+ detail: "CLI installed; auth checked on first run"
436
+ };
437
+ case "degraded":
438
+ if (!readiness.cliHealthy) {
439
+ return { label, detail: readiness.reason ?? "CLI not healthy" };
440
+ }
441
+ if (readiness.sandboxCapable === false) {
442
+ const sandboxDetail = readiness.sandboxReason ?? readiness.reason ?? "execute-tier sandbox/policy blocked provider state access";
443
+ return {
444
+ label,
445
+ detail: `Readiness caveat: ${sandboxDetail}`
446
+ };
447
+ }
448
+ return { label, detail: readiness.reason ?? "Provider degraded" };
449
+ case "assumed":
450
+ return {
451
+ label,
452
+ detail: "Assumed from configured env var for setup only; execution still verifies provider access"
453
+ };
454
+ case "auth-needed":
455
+ return { label, detail: "Authentication not configured" };
456
+ case "installed":
457
+ return {
458
+ label,
459
+ detail: "CLI installed; auth checked on first run"
460
+ };
461
+ case "authenticated":
462
+ return { label, detail: "Authenticated; execute-tier checks incomplete" };
463
+ case "execute-ready":
464
+ return { label };
465
+ }
466
+ }
467
+ function readinessProbeContextForOptions(options = {}) {
468
+ const modeProbes = options.mode ? readinessProbesForMode(options.mode) : void 0;
469
+ const cliProbeMode = options.cliProbeMode ?? modeProbes?.cliProbeMode ?? "execute";
470
+ const authProbeMode = options.probeAuth !== void 0 ? "deferred" : options.authProbeMode ?? modeProbes?.authProbeMode ?? "passive";
471
+ return {
472
+ mode: options.mode ?? "execute",
473
+ cliProbeMode,
474
+ authProbeMode,
475
+ sandboxProbeMode: options.sandboxProbeMode ?? (options.mode === "setup" ? "none" : "execute")
476
+ };
477
+ }
478
+ var EXECUTE_CLI_PROBE_OPTIONS = {
479
+ timeoutMs: 15e3,
480
+ retries: 1
481
+ };
482
+ function isCliProbeAlive(probe) {
483
+ return probe.present && (!probe.healthProbed || probe.healthy);
484
+ }
485
+ function readinessProbesForMode(mode) {
486
+ switch (mode) {
487
+ case "setup":
488
+ return { cliProbeMode: "execute", authProbeMode: "passive" };
489
+ case "execute":
490
+ return { cliProbeMode: "execute", authProbeMode: "passive" };
491
+ }
492
+ }
493
+ function formatAuthReadinessReason(displayName, authenticated, authProbeMode, authNote) {
494
+ if (authenticated === "yes") return void 0;
495
+ if (authenticated === "no") {
496
+ return authNote ? `Authentication missing. ${authNote}` : "Authentication missing";
497
+ }
498
+ if (authProbeMode === "active") {
499
+ const detail = authNote ? ` Detail: ${authNote}` : "";
500
+ return `${displayName} active auth probe could not verify headless execution; this is not a confirmed credential failure. Check provider runtime, sandbox, and CLI diagnostics.${detail}`;
501
+ }
502
+ return "Authentication status unknown; runtime will defer to the provider CLI.";
503
+ }
504
+ var ProviderNotReadyError = class extends Error {
505
+ provider;
506
+ readiness;
507
+ constructor(readiness, message = formatProviderNotReadyMessage(readiness)) {
508
+ super(message);
509
+ this.name = "ProviderNotReadyError";
510
+ this.provider = readiness.provider;
511
+ this.readiness = readiness;
512
+ }
513
+ };
514
+ var DEFAULT_CLI_PROBE_ARGS = [
515
+ ["--version"],
516
+ ["-v"],
517
+ ["--help"]
518
+ ];
519
+ var CLI_PRESENT_PATTERNS = [
520
+ /unknown (flag|option|argument)/i,
521
+ /unrecognized (flag|option|argument)/i,
522
+ /invalid (flag|option|argument)/i,
523
+ /no such option/i
524
+ ];
525
+ async function pathIsExecutable(filePath) {
526
+ try {
527
+ await access(filePath, fsConstants.X_OK);
528
+ return true;
529
+ } catch {
530
+ return false;
531
+ }
532
+ }
533
+ function pathEntries() {
534
+ return (process.env.PATH ?? "").split(path.delimiter).map((entry) => entry.trim()).filter(Boolean);
535
+ }
536
+ function providerSupportsCli(config) {
537
+ if (config.id === "openrouter") return false;
538
+ if (!config.cli?.command || config.cli.command === "N/A") return false;
539
+ if (!Array.isArray(config.channels)) return true;
540
+ return config.channels.includes("cli");
541
+ }
542
+ async function probeProviderCliOnce(command, preferredArgs, prefixArgs, timeoutMs, env) {
543
+ const probeArgs = [
544
+ ...preferredArgs && preferredArgs.length > 0 ? [Array.from(preferredArgs)] : [],
545
+ ...DEFAULT_CLI_PROBE_ARGS
546
+ ];
547
+ let lastErrorMessage;
548
+ let sawUnknownFlag = false;
549
+ const timeoutResult = {
550
+ present: true,
551
+ healthy: false,
552
+ healthProbed: true,
553
+ degradedReason: `CLI probe timed out after ${timeoutMs}ms`
554
+ };
555
+ for (const args of probeArgs) {
556
+ let deadlineExpired = false;
557
+ let closePipes;
558
+ try {
559
+ const child = execa(command, [...prefixArgs ?? [], ...args], {
560
+ timeout: timeoutMs,
561
+ env,
562
+ extendEnv: false
563
+ });
564
+ if (timeoutMs > 0) {
565
+ closePipes = setTimeout(() => {
566
+ deadlineExpired = true;
567
+ for (const stream of [child.stdout, child.stderr]) stream?.destroy();
568
+ }, timeoutMs);
569
+ }
570
+ await child;
571
+ if (deadlineExpired) return timeoutResult;
572
+ return { present: true, healthy: true, healthProbed: true };
573
+ } catch (error) {
574
+ const err = error;
575
+ if (deadlineExpired || err.timedOut) return timeoutResult;
576
+ const message = err?.message ?? "";
577
+ const stderr = err?.stderr ?? "";
578
+ const combined = `${message}
579
+ ${stderr}`;
580
+ const isNotFound = err?.code === "ENOENT" || /spawn .* ENOENT/i.test(message) || /\bENOENT\b/i.test(message) || /command not found/i.test(combined) || /is not recognized as an internal or external command/i.test(combined);
581
+ if (isNotFound) {
582
+ return { present: false, healthy: false, healthProbed: true };
583
+ }
584
+ if (CLI_PRESENT_PATTERNS.some((pattern) => pattern.test(combined))) {
585
+ sawUnknownFlag = true;
586
+ continue;
587
+ }
588
+ lastErrorMessage = (stderr || message).trim() || lastErrorMessage;
589
+ } finally {
590
+ if (closePipes) clearTimeout(closePipes);
591
+ }
592
+ }
593
+ return {
594
+ present: true,
595
+ healthy: false,
596
+ healthProbed: true,
597
+ degradedReason: lastErrorMessage ?? (sawUnknownFlag ? "CLI found but did not accept version/help probes" : "CLI found but failed to respond to version/help probes")
598
+ };
599
+ }
600
+ async function probeProviderCli(command, preferredArgs, prefixArgs, options = {}) {
601
+ const timeoutMs = options.timeoutMs ?? 5e3;
602
+ const maxAttempts = (options.retries ?? 0) + 1;
603
+ const env = buildProviderExecutionEnv(options.providerId ?? "", options.env);
604
+ let lastResult = { present: false, healthy: false };
605
+ for (let attempt = 0; attempt < maxAttempts; attempt++) {
606
+ lastResult = await probeProviderCliOnce(command, preferredArgs, prefixArgs, timeoutMs, env);
607
+ if (lastResult.present && lastResult.healthy) {
608
+ return lastResult;
609
+ }
610
+ if (!lastResult.present) {
611
+ return lastResult;
612
+ }
613
+ }
614
+ return lastResult;
615
+ }
616
+ async function probeProviderCliPresence(command, prefixArgs, options = {}) {
617
+ if (prefixArgs && prefixArgs.length > 0) {
618
+ return probeProviderCli(command, ["--version"], prefixArgs, options);
619
+ }
620
+ if (path.isAbsolute(command) || command.includes(path.sep)) {
621
+ return await pathIsExecutable(command) ? { present: true, healthy: false, healthProbed: false } : { present: false, healthy: false, healthProbed: false };
622
+ }
623
+ for (const entry of pathEntries()) {
624
+ const candidate = path.join(entry, command);
625
+ if (await pathIsExecutable(candidate)) {
626
+ return { present: true, healthy: false, healthProbed: false };
627
+ }
628
+ }
629
+ return { present: false, healthy: false, healthProbed: false };
630
+ }
631
+ function isSetupTierReadiness(options) {
632
+ if (options.mode === "setup") return true;
633
+ if (options.mode === "execute") return false;
634
+ return options.cliProbeMode === "presence" && options.authProbeMode !== "active";
635
+ }
636
+ function readConfiguredEnvValue(env, key) {
637
+ return env ? env[key] : process.env[key];
638
+ }
639
+ function hasConfiguredEnvVarAuth(config, env) {
640
+ const envVars = config.auth?.env_vars ?? [];
641
+ return envVars.some((key) => {
642
+ const value = readConfiguredEnvValue(env, key);
643
+ return typeof value === "string" && value.trim().length > 0;
644
+ });
645
+ }
646
+ function resolveEnvVarAuthReadinessPromotion(_providerId, config, authenticated, sandboxBlocked, options) {
647
+ if (authenticated !== "unknown" || sandboxBlocked) return void 0;
648
+ if (readRawEnv(BUILD_STRICT_READINESS) === "1") return void 0;
649
+ if (!hasConfiguredEnvVarAuth(config, options.authProbeEnv)) return void 0;
650
+ return "env-var-auth-assumed";
651
+ }
652
+ function normalizePassiveAuthForEnvVarPromotion(providerId, config, authenticated, authProbeMode, options) {
653
+ if (!isSetupTierReadiness(options)) return authenticated;
654
+ if (authenticated !== "no") return authenticated;
655
+ if (authProbeMode === "active") return authenticated;
656
+ if (providerId !== "opencode") return authenticated;
657
+ if (!hasConfiguredEnvVarAuth(config, options.authProbeEnv)) return authenticated;
658
+ return "unknown";
659
+ }
660
+ function shouldProbeSandboxCapability(executeTier, options) {
661
+ if (options.sandboxProbeMode === "none") return false;
662
+ if (options.probeSandboxCapability) return true;
663
+ if (options.sandboxProbeMode === "execute") {
664
+ const runningUnderVitest2 = Boolean(process.env.VITEST || process.env.VITEST_WORKER_ID) || process.env.NODE_ENV === "test";
665
+ return !runningUnderVitest2;
666
+ }
667
+ if (!executeTier) return false;
668
+ const runningUnderVitest = Boolean(process.env.VITEST || process.env.VITEST_WORKER_ID) || process.env.NODE_ENV === "test";
669
+ return !runningUnderVitest;
670
+ }
671
+ async function probeProviderAuthReadinessPassive(providerId, config, env) {
672
+ if (isProviderSkipAuthActive(config, env)) return "yes";
673
+ const { invokeProviderAuthState } = await import("./invoke-provider-auth-NEWEIHCI.js");
674
+ return invokeProviderAuthState(providerId, env ? { mode: "passive", env } : "passive");
675
+ }
676
+ async function probeProviderAuthReadiness(providerId, config, options = {}) {
677
+ return (await probeProviderAuthReadinessDetailed(providerId, config, options)).state;
678
+ }
679
+ async function probeProviderAuthReadinessDetailed(providerId, config, options = {}) {
680
+ const providerConfig = config ?? ProviderRegistry.getProviderConfig(providerId);
681
+ const mode = options.mode ?? "passive";
682
+ if (mode === "passive") {
683
+ const state = await probeProviderAuthReadinessPassive(providerId, providerConfig, options.env);
684
+ if (state === "no") return { state };
685
+ const cached = await lookupAuthOutcome(providerId, options.env ? { env: options.env } : {});
686
+ return cached && !cached.stale && cached.contextMatches && cached.entry.result === "ok" ? { state: "yes", evidence: "execution" } : { state };
687
+ }
688
+ if (isProviderSkipAuthActive(providerConfig, options.env)) return { state: "yes" };
689
+ const { invokeProviderAuthReadiness } = await import("./invoke-provider-auth-NEWEIHCI.js");
690
+ try {
691
+ return await invokeProviderAuthReadiness(
692
+ providerId,
693
+ options.env ? { mode: "active", env: options.env } : "active"
694
+ );
695
+ } catch {
696
+ return { state: "unknown" };
697
+ }
698
+ }
699
+ async function getProviderReadiness(providerId, options = {}) {
700
+ let config;
701
+ try {
702
+ config = options.providers?.find((provider) => provider.id === providerId) ?? ProviderRegistry.getProviderConfig(providerId);
703
+ } catch (error) {
704
+ return {
705
+ provider: providerId,
706
+ displayName: providerId,
707
+ known: false,
708
+ configured: false,
709
+ installed: false,
710
+ cliHealthy: false,
711
+ authenticated: "unknown",
712
+ ready: false,
713
+ order: 99,
714
+ reasonCode: "provider-not-found",
715
+ reason: error instanceof Error ? error.message : "Provider not found"
716
+ };
717
+ }
718
+ const installCommand = config.cli?.install_command;
719
+ const normalizedProviderId = config.id ?? providerId;
720
+ const displayName = config.display_name ?? normalizedProviderId;
721
+ const order = config.order ?? 99;
722
+ const experimental = resolveProviderReleaseStatus(config) === "experimental";
723
+ if (!providerSupportsCli(config)) {
724
+ return {
725
+ provider: normalizedProviderId,
726
+ displayName,
727
+ known: true,
728
+ configured: false,
729
+ installed: false,
730
+ cliHealthy: false,
731
+ authenticated: "unknown",
732
+ ready: false,
733
+ installCommand,
734
+ authCommand: config.auth?.note,
735
+ order,
736
+ reasonCode: "no-cli-channel",
737
+ reason: "Provider does not expose a local CLI execution channel"
738
+ };
739
+ }
740
+ let cli;
741
+ try {
742
+ cli = (options.resolveCliCommand ?? resolveProviderCliCommand)(normalizedProviderId);
743
+ } catch (error) {
744
+ return {
745
+ provider: normalizedProviderId,
746
+ displayName,
747
+ known: true,
748
+ configured: true,
749
+ installed: false,
750
+ cliHealthy: false,
751
+ authenticated: "unknown",
752
+ ready: false,
753
+ installCommand,
754
+ authCommand: config.auth?.note,
755
+ order,
756
+ reasonCode: "cli-resolve-failed",
757
+ reason: error instanceof Error ? error.message : "Provider CLI could not be resolved"
758
+ };
759
+ }
760
+ const modeProbes = options.mode ? readinessProbesForMode(options.mode) : void 0;
761
+ const cliProbeMode = options.cliProbeMode ?? modeProbes?.cliProbeMode;
762
+ const authProbeMode = options.authProbeMode ?? modeProbes?.authProbeMode;
763
+ const executeTier = options.mode === "execute" || options.mode === void 0 && cliProbeMode === "execute";
764
+ const healthProbeRequested = cliProbeMode === "execute";
765
+ const setupTier = isSetupTierReadiness(options);
766
+ const cliProbeOptions = {
767
+ ...healthProbeRequested ? EXECUTE_CLI_PROBE_OPTIONS : {},
768
+ providerId: normalizedProviderId,
769
+ env: options.authProbeEnv
770
+ };
771
+ const probe = options.probeCli !== void 0 ? await options.probeCli(cli.command, ["--version"], cli.prefixArgs) : cliProbeMode === "presence" ? await probeProviderCliPresence(cli.command, cli.prefixArgs, cliProbeOptions) : await probeProviderCli(cli.command, ["--version"], cli.prefixArgs, cliProbeOptions);
772
+ if (!probe.present) {
773
+ return {
774
+ provider: normalizedProviderId,
775
+ displayName,
776
+ known: true,
777
+ configured: true,
778
+ installed: false,
779
+ cliHealthy: false,
780
+ authenticated: "unknown",
781
+ ready: false,
782
+ command: cli.command,
783
+ prefixArgs: cli.prefixArgs,
784
+ installCommand,
785
+ authCommand: config.auth?.note,
786
+ order,
787
+ reasonCode: "cli-not-installed",
788
+ reason: "CLI is not installed"
789
+ };
790
+ }
791
+ const healthProbed = probe.healthProbed === true || probe.healthy === true;
792
+ const presenceOnly = cliProbeMode === "presence" && !healthProbed && !probe.healthy;
793
+ if (!probe.healthy && !presenceOnly) {
794
+ return {
795
+ provider: normalizedProviderId,
796
+ displayName,
797
+ known: true,
798
+ configured: true,
799
+ installed: true,
800
+ cliHealthy: false,
801
+ authenticated: "unknown",
802
+ ready: false,
803
+ command: cli.command,
804
+ prefixArgs: cli.prefixArgs,
805
+ installCommand,
806
+ authCommand: config.auth?.note,
807
+ order,
808
+ reasonCode: "cli-unhealthy",
809
+ reason: probe.degradedReason ?? "CLI found but failed health probes"
810
+ };
811
+ }
812
+ const cliHealthy = probe.healthy;
813
+ const presentUnprobed = presenceOnly;
814
+ const sandboxCapability = shouldProbeSandboxCapability(executeTier, options) ? options.probeSandboxCapability ? options.probeSandboxCapability(normalizedProviderId) : probeProviderSandboxCapability(normalizedProviderId, {
815
+ env: options.authProbeEnv
816
+ }) : void 0;
817
+ const sandboxCapable = sandboxCapability?.capable;
818
+ const sandboxReason = sandboxCapability && !sandboxCapability.capable ? formatSandboxCapabilityFailure(sandboxCapability) : void 0;
819
+ const sandboxBlocked = sandboxCapable === false;
820
+ const sandboxDeniedPaths = sandboxCapability?.missing.map((entry) => entry.path);
821
+ const writeBoundary = resolveWriteBoundaryAdvisory(options.authProbeEnv);
822
+ if (sandboxBlocked) {
823
+ return {
824
+ provider: normalizedProviderId,
825
+ displayName,
826
+ known: true,
827
+ configured: true,
828
+ installed: true,
829
+ // Presence-only leaves health unverified; execute probes that reached here were healthy.
830
+ cliHealthy: !presentUnprobed,
831
+ authenticated: "unknown",
832
+ sandboxCapable,
833
+ ...sandboxReason ? { sandboxReason } : {},
834
+ ...sandboxDeniedPaths && sandboxDeniedPaths.length > 0 ? { sandboxDeniedPaths } : {},
835
+ ...writeBoundary ? { writeBoundary } : {},
836
+ ready: false,
837
+ command: cli.command,
838
+ prefixArgs: cli.prefixArgs,
839
+ installCommand,
840
+ authCommand: config.auth?.note,
841
+ order,
842
+ reasonCode: "sandbox-blocked",
843
+ reason: sandboxReason
844
+ };
845
+ }
846
+ const injectedAuthProbe = options.probeAuth;
847
+ const authReadiness = injectedAuthProbe ? { state: await injectedAuthProbe(normalizedProviderId, config) } : await probeProviderAuthReadinessDetailed(normalizedProviderId, config, {
848
+ mode: authProbeMode ?? "passive",
849
+ ...options.authProbeEnv ? { env: options.authProbeEnv } : {}
850
+ });
851
+ const rawAuthenticated = authReadiness.state;
852
+ const normalizedAuthenticated = injectedAuthProbe ? rawAuthenticated : normalizePassiveAuthForEnvVarPromotion(
853
+ normalizedProviderId,
854
+ config,
855
+ rawAuthenticated,
856
+ authProbeMode,
857
+ options
858
+ );
859
+ const unverifiedEnvAuth = !injectedAuthProbe && authReadiness.evidence !== "execution" && !isProviderSkipAuthActive(config, options.authProbeEnv) && hasConfiguredEnvVarAuth(config, options.authProbeEnv);
860
+ const authenticated = unverifiedEnvAuth && !(authProbeMode === "active" && normalizedAuthenticated === "no") ? "unknown" : normalizedAuthenticated;
861
+ const readinessNote = resolveEnvVarAuthReadinessPromotion(
862
+ normalizedProviderId,
863
+ config,
864
+ authenticated,
865
+ sandboxBlocked,
866
+ options
867
+ );
868
+ const ready = readinessNote !== void 0 ? setupTier && cliHealthy : authenticated === "yes" && !sandboxBlocked && (cliHealthy || !presentUnprobed);
869
+ const attemptEligible = executeTier && !sandboxBlocked && (authenticated === "unknown" || readinessNote !== void 0) && authenticated !== "no";
870
+ const authReason = formatAuthReadinessReason(
871
+ displayName,
872
+ authenticated,
873
+ authProbeMode,
874
+ authReadiness.reason ?? config.auth?.note
875
+ );
876
+ const authWarning = authenticated === "unknown" ? authProbeMode === "active" ? `${displayName} active auth probe could not verify headless execution; runtime may still fail in the provider CLI.${authReadiness.reason ? ` Detail: ${authReadiness.reason}` : ""}` : "Auth status was not collected by passive readiness checks; runtime will defer to the provider CLI." : void 0;
877
+ const reasonCode = (() => {
878
+ if (ready && readinessNote === void 0) return "ready";
879
+ if (readinessNote !== void 0) return "env-var-auth-assumed";
880
+ if (authenticated === "no") return "auth-missing";
881
+ if (authProbeMode === "active" && authenticated === "unknown") {
882
+ return "auth-active-unverified";
883
+ }
884
+ if (authenticated === "unknown") return "auth-unknown";
885
+ if (presentUnprobed) return "cli-present-unprobed";
886
+ return "ready";
887
+ })();
888
+ return {
889
+ provider: normalizedProviderId,
890
+ displayName,
891
+ known: true,
892
+ configured: true,
893
+ installed: true,
894
+ cliHealthy,
895
+ authenticated,
896
+ ...authProbeMode === "active" && authReadiness.evidence ? { authEvidence: "execution" } : {},
897
+ ...sandboxCapable !== void 0 ? { sandboxCapable } : {},
898
+ ...sandboxReason ? { sandboxReason } : {},
899
+ ...writeBoundary ? { writeBoundary } : {},
900
+ ready,
901
+ ...readinessNote ? { readinessNote } : {},
902
+ ...attemptEligible ? { attemptEligible: true } : {},
903
+ ...experimental ? { experimental: true } : {},
904
+ command: cli.command,
905
+ prefixArgs: cli.prefixArgs,
906
+ installCommand,
907
+ authCommand: config.auth?.note,
908
+ order,
909
+ reasonCode,
910
+ reason: ready && readinessNote === void 0 ? void 0 : readinessNote ? "Auth assumed from configured env var; not verified for execute-tier readiness." : authReason,
911
+ warning: authWarning
912
+ };
913
+ }
914
+ async function getAllProviderReadiness(options = {}) {
915
+ const providers = (options.providers ?? ProviderRegistry.getEnabledProviders()).filter(
916
+ providerSupportsCli
917
+ );
918
+ const results = await Promise.all(
919
+ providers.map((provider) => getProviderReadiness(provider.id, { ...options, providers }))
920
+ );
921
+ return results.sort((a, b) => a.order - b.order);
922
+ }
923
+ function selectReadyProvider(readiness) {
924
+ const ready = readiness.filter((provider) => provider.ready).sort((a, b) => a.order - b.order);
925
+ if (ready.length === 0) {
926
+ return { kind: "none", candidates: readiness };
927
+ }
928
+ const stable = ready.filter((provider) => !provider.experimental);
929
+ const candidates = stable.length > 0 ? stable : ready;
930
+ if (candidates.length === 1 && candidates[0]) {
931
+ return { kind: "single", provider: candidates[0], candidates };
932
+ }
933
+ return { kind: "multiple", candidates };
934
+ }
935
+ function formatProviderSetupGuidance(readiness) {
936
+ const lines = ["No ready AI provider CLI found.", "", "Install or authenticate one provider:"];
937
+ const candidates = readiness.length > 0 ? readiness : [];
938
+ for (const provider of candidates) {
939
+ const action = provider.installed ? provider.authCommand ?? `Authenticate ${provider.displayName}` : provider.installCommand ?? `Install ${provider.displayName}`;
940
+ lines.push(` ${provider.displayName}: ${action}`);
941
+ }
942
+ lines.push("", "Run build provider list after setup completes.");
943
+ return lines.join("\n");
944
+ }
945
+ function formatProviderNotReadyMessage(readiness, options = {}) {
946
+ if (readiness.sandboxCapable === false) {
947
+ const roleSuffix = options.role ? ` (${options.role})` : "";
948
+ const deniedPaths = readiness.sandboxDeniedPaths?.join(", ");
949
+ const pathLine = deniedPaths ? `Denied path(s): ${deniedPaths}.` : void 0;
950
+ const reason2 = readiness.sandboxReason ?? readiness.reason ?? "Required state paths are not writable.";
951
+ return [
952
+ `${readiness.displayName}${roleSuffix} is blocked by sandbox/policy access, not an auth failure.`,
953
+ pathLine,
954
+ reason2,
955
+ "Action: grant write access to the denied path(s) in the effective sandbox, or run outside the inherited sandbox.",
956
+ `Run build doctor --provider ${readiness.provider} for execute-tier diagnostics.`
957
+ ].filter((line) => Boolean(line)).join("\n");
958
+ }
959
+ const reason = readiness.reason ?? "provider is not ready";
960
+ const action = readiness.installed ? readiness.authCommand ?? `Authenticate ${readiness.displayName}` : readiness.installCommand ?? `Install ${readiness.displayName}`;
961
+ const subject = options.surface === "fusion" ? `Fusion panel member ${readiness.displayName}` : `Configured provider ${readiness.displayName}`;
962
+ return [
963
+ `${subject} is not ready: ${reason}.`,
964
+ `Action: ${action}`,
965
+ "Run build provider list after setup completes."
966
+ ].join("\n");
967
+ }
968
+ function isSandboxOnlyReadinessBlock(readiness) {
969
+ return readiness.sandboxCapable === false && readiness.installed === true && readiness.cliHealthy === true && readiness.authenticated !== "no";
970
+ }
971
+ function shouldBlockOnProviderReadiness(readiness) {
972
+ if (readiness.ready) {
973
+ return false;
974
+ }
975
+ if (readiness.attemptEligible) {
976
+ return false;
977
+ }
978
+ return true;
979
+ }
980
+ async function assertProviderReady(providerId, options = {}) {
981
+ if (readRawEnv(BUILD_SKIP_READINESS_PREFLIGHT) === "1") {
982
+ return getProviderReadiness(providerId, {
983
+ mode: options.mode ?? "execute",
984
+ probeAuth: async () => "unknown"
985
+ });
986
+ }
987
+ const readiness = await getProviderReadiness(providerId, {
988
+ mode: options.mode ?? "execute",
989
+ probeAuth: async () => "unknown"
990
+ });
991
+ if (shouldBlockOnProviderReadiness(readiness)) {
992
+ throw new ProviderNotReadyError(readiness);
993
+ }
994
+ return readiness;
995
+ }
996
+ function isGateReadyProvider(readiness) {
997
+ if (readiness.ready) return true;
998
+ return readiness.cliHealthy && readiness.readinessNote === "env-var-auth-assumed";
999
+ }
1000
+ function buildRemediation(readiness) {
1001
+ if (isGateReadyProvider(readiness)) return void 0;
1002
+ if (!readiness.configured || !readiness.known) {
1003
+ return `${readiness.displayName}: provider is not configured for local CLI use`;
1004
+ }
1005
+ if (!readiness.installed) {
1006
+ return readiness.installCommand ? `${readiness.displayName}: install with \`${readiness.installCommand}\`` : `${readiness.displayName}: install the provider CLI`;
1007
+ }
1008
+ if (!readiness.cliHealthy && readiness.reasonCode === "cli-unhealthy") {
1009
+ return `${readiness.displayName}: CLI is installed but unhealthy${readiness.reason ? ` (${readiness.reason})` : ""}`;
1010
+ }
1011
+ if (readiness.authenticated === "no") {
1012
+ return readiness.authCommand ? `${readiness.displayName}: authenticate with \`${readiness.authCommand}\`` : `${readiness.displayName}: authenticate the provider CLI`;
1013
+ }
1014
+ if (readiness.authenticated === "unknown") {
1015
+ return `${readiness.displayName}: installed; auth checked on first run; run \`build doctor --probe --provider ${readiness.provider}\` or \`build provider setup\``;
1016
+ }
1017
+ return readiness.reason ? `${readiness.displayName}: ${readiness.reason}` : `${readiness.displayName}: not ready`;
1018
+ }
1019
+ function toSnapshot(readiness, dryRun) {
1020
+ const resolved = resolveNamedReadiness(readiness, dryRun);
1021
+ const classification = classifyProviderReadiness(readiness, resolved);
1022
+ const scope = resolveReadinessScope(readiness, resolved);
1023
+ return {
1024
+ readiness,
1025
+ resolved,
1026
+ classification,
1027
+ scope,
1028
+ parityLabel: resolveProviderParityLabel(readiness, resolved)
1029
+ };
1030
+ }
1031
+ async function collectProviderReadinessGate(options = {}) {
1032
+ const baseOptions = options.readinessOptions ?? {
1033
+ mode: "setup",
1034
+ sandboxProbeMode: "none"
1035
+ };
1036
+ let readinessList = await getAllProviderReadiness(baseOptions);
1037
+ if (options.activeAuthWhenNeeded) {
1038
+ readinessList = await Promise.all(
1039
+ readinessList.map(async (entry) => {
1040
+ if (isGateReadyProvider(entry)) return entry;
1041
+ if (!entry.installed) return entry;
1042
+ if (entry.authenticated === "no") return entry;
1043
+ return getProviderReadiness(entry.provider, {
1044
+ ...baseOptions,
1045
+ mode: baseOptions.mode ?? "execute",
1046
+ authProbeMode: "active",
1047
+ cliProbeMode: baseOptions.cliProbeMode ?? "execute",
1048
+ providers: baseOptions.providers,
1049
+ resolveCliCommand: baseOptions.resolveCliCommand,
1050
+ probeCli: baseOptions.probeCli,
1051
+ authProbeEnv: baseOptions.authProbeEnv,
1052
+ probeSandboxCapability: baseOptions.probeSandboxCapability,
1053
+ sandboxProbeMode: baseOptions.sandboxProbeMode
1054
+ });
1055
+ })
1056
+ );
1057
+ }
1058
+ const providers = readinessList.map(
1059
+ (entry) => toSnapshot(entry, options.dryRunForProvider?.(entry.provider))
1060
+ );
1061
+ const readyProviders = providers.filter((entry) => isGateReadyProvider(entry.readiness)).map((entry) => entry.readiness.provider);
1062
+ const readyCount = readyProviders.length;
1063
+ const gateLabel = readyCount === 0 ? "zero-ready" : readyCount === 1 ? "one-ready" : "multi-ready";
1064
+ const requireAtLeastOneReady = options.requireAtLeastOneReady === true;
1065
+ const gatePassed = !requireAtLeastOneReady || readyCount > 0;
1066
+ const remediations = providers.map((entry) => buildRemediation(entry.readiness)).filter((line) => Boolean(line));
1067
+ return {
1068
+ providers,
1069
+ readyCount,
1070
+ readyProviders,
1071
+ gatePassed,
1072
+ gateLabel,
1073
+ remediations
1074
+ };
1075
+ }
1076
+
1077
+ export {
1078
+ mergeExecutionEnv,
1079
+ buildProviderExecutionEnv,
1080
+ resolveNamedReadiness,
1081
+ resolveProviderParityLabel,
1082
+ classifyProviderReadiness,
1083
+ SETUP_CHECK_READINESS_OPTIONS,
1084
+ resolveReadinessScope,
1085
+ readinessProbeContextForOptions,
1086
+ EXECUTE_CLI_PROBE_OPTIONS,
1087
+ isCliProbeAlive,
1088
+ readinessProbesForMode,
1089
+ ProviderNotReadyError,
1090
+ probeProviderCli,
1091
+ probeProviderCliPresence,
1092
+ probeProviderAuthReadiness,
1093
+ getProviderReadiness,
1094
+ getAllProviderReadiness,
1095
+ selectReadyProvider,
1096
+ formatProviderSetupGuidance,
1097
+ formatProviderNotReadyMessage,
1098
+ isSandboxOnlyReadinessBlock,
1099
+ shouldBlockOnProviderReadiness,
1100
+ assertProviderReady,
1101
+ isGateReadyProvider,
1102
+ collectProviderReadinessGate
1103
+ };
1104
+ //# sourceMappingURL=chunk-XTXYIISX.js.map