@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,852 @@
1
+ import {
2
+ reportTransportDecision,
3
+ selectProviderExecutor
4
+ } from "./chunk-JYXS47FQ.js";
5
+ import {
6
+ createRetryOptions,
7
+ withRetry
8
+ } from "./chunk-4QKP6I4C.js";
9
+ import {
10
+ clampAttemptTimeoutToDeadline
11
+ } from "./chunk-GWHGTG37.js";
12
+ import {
13
+ metadata
14
+ } from "./chunk-WEIUS5NT.js";
15
+ import {
16
+ createReportedCostAccumulator
17
+ } from "./chunk-WEI3ZDZH.js";
18
+ import {
19
+ resolveProviderStreamingEnabled
20
+ } from "./chunk-67YRJPJO.js";
21
+ import {
22
+ TMUX_COMPLETION_SIGNAL_GRACE_MS,
23
+ createLineDelimitedTmuxCompletionSignal,
24
+ executeProviderCommand
25
+ } from "./chunk-633XZ7UF.js";
26
+ import {
27
+ resolveConfiguredProviderExecutionTransport
28
+ } from "./chunk-C3DH3NCY.js";
29
+ import {
30
+ safeJsonParse
31
+ } from "./chunk-XJ2E7YEJ.js";
32
+ import {
33
+ writeFileAtomic
34
+ } from "./chunk-XCOIBNET.js";
35
+ import {
36
+ PROVIDER_CATALOG_SHA256,
37
+ ProviderRegistry,
38
+ detectSourceBaseDrift,
39
+ getRefreshOverlayOperatorNotice,
40
+ opencodeInventoryContext,
41
+ readEffectiveRefreshOverlay,
42
+ resolveSharedRefreshPaths
43
+ } from "./chunk-QJ6OEH4K.js";
44
+ import {
45
+ findProjectRoot,
46
+ resolveProvidersConfigPath
47
+ } from "./chunk-35J4NE6S.js";
48
+ import {
49
+ ProviderExecutionError
50
+ } from "./chunk-RRC5BL7B.js";
51
+ import {
52
+ processIsAlive
53
+ } from "./chunk-MT2WAIR3.js";
54
+ import {
55
+ getUserCacheDir
56
+ } from "./chunk-56WPYDJH.js";
57
+ import {
58
+ debugLog,
59
+ getExecutionContext
60
+ } from "./chunk-7VRJHTGZ.js";
61
+
62
+ // src/core/providers/opencode/output-adapter.ts
63
+ function asRecord(value) {
64
+ return value && typeof value === "object" ? value : void 0;
65
+ }
66
+ function accrueOptional(total, add) {
67
+ return add === void 0 ? total : (total ?? 0) + add;
68
+ }
69
+ function readNumberField(record, keys) {
70
+ for (const key of keys) {
71
+ const value = record?.[key];
72
+ if (typeof value === "number") return value;
73
+ if (typeof value === "string") {
74
+ const parsed = Number(value);
75
+ if (Number.isFinite(parsed)) return parsed;
76
+ }
77
+ }
78
+ return void 0;
79
+ }
80
+ function parseJsonObjectsFromStream(stream) {
81
+ const objects = [];
82
+ let start = -1;
83
+ let depth = 0;
84
+ let inString = false;
85
+ let escaping = false;
86
+ for (let index = 0; index < stream.length; index++) {
87
+ const char = stream[index];
88
+ if (start === -1) {
89
+ if (char === "{") {
90
+ start = index;
91
+ depth = 1;
92
+ inString = false;
93
+ escaping = false;
94
+ }
95
+ continue;
96
+ }
97
+ if (inString) {
98
+ if (escaping) {
99
+ escaping = false;
100
+ } else if (char === "\\") {
101
+ escaping = true;
102
+ } else if (char === '"') {
103
+ inString = false;
104
+ }
105
+ continue;
106
+ }
107
+ if (char === '"') {
108
+ inString = true;
109
+ continue;
110
+ }
111
+ if (char === "{") {
112
+ depth++;
113
+ continue;
114
+ }
115
+ if (char === "}") {
116
+ depth--;
117
+ if (depth === 0) {
118
+ objects.push({ raw: stream.slice(start, index + 1), start, end: index + 1 });
119
+ start = -1;
120
+ }
121
+ }
122
+ }
123
+ return objects;
124
+ }
125
+ var OPENCODE_EVENT_TYPES = /* @__PURE__ */ new Set([
126
+ "error",
127
+ "message",
128
+ "result",
129
+ "step_finish",
130
+ "step-finish",
131
+ "step_start",
132
+ "step-start",
133
+ "text",
134
+ "tool",
135
+ "tool_use",
136
+ "usage"
137
+ ]);
138
+ function isOpencodeEventEnvelope(evt) {
139
+ const type = typeof evt.type === "string" ? evt.type : void 0;
140
+ const event = typeof evt.event === "string" ? evt.event : void 0;
141
+ const partType = readStringField(asRecord(evt.part), ["type"]);
142
+ return type !== void 0 && OPENCODE_EVENT_TYPES.has(type) || event !== void 0 && OPENCODE_EVENT_TYPES.has(event) || partType !== void 0 && OPENCODE_EVENT_TYPES.has(partType) || "sessionID" in evt || "messageID" in evt || "providerID" in evt || "modelID" in evt;
143
+ }
144
+ function extractUnstructuredOpencodeStdout(stdout) {
145
+ let cursor = 0;
146
+ let residual = "";
147
+ for (const candidate of parseJsonObjectsFromStream(stdout)) {
148
+ try {
149
+ const evt = safeJsonParse(candidate.raw, {
150
+ context: "OpenCode raw stdout event",
151
+ debug: false
152
+ });
153
+ if (!isOpencodeEventEnvelope(evt)) continue;
154
+ residual += stdout.slice(cursor, candidate.start);
155
+ cursor = candidate.end;
156
+ } catch {
157
+ }
158
+ }
159
+ return residual + stdout.slice(cursor);
160
+ }
161
+ function extractTextFromContent(content) {
162
+ if (typeof content === "string") return content;
163
+ if (!Array.isArray(content)) return "";
164
+ let aggregate = "";
165
+ for (const item of content) {
166
+ if (typeof item === "string") {
167
+ aggregate += item;
168
+ continue;
169
+ }
170
+ const record = asRecord(item);
171
+ if (!record) continue;
172
+ if (typeof record.text === "string") {
173
+ aggregate += record.text;
174
+ continue;
175
+ }
176
+ if (typeof record.content === "string") {
177
+ aggregate += record.content;
178
+ continue;
179
+ }
180
+ if (typeof record.value === "string") {
181
+ aggregate += record.value;
182
+ }
183
+ }
184
+ return aggregate;
185
+ }
186
+ function extractTextFromEvent(evt) {
187
+ if (typeof evt.text === "string") return evt.text;
188
+ if (typeof evt.delta === "string") return evt.delta;
189
+ if (typeof evt.message === "string") return evt.message;
190
+ if (typeof evt.output === "string") return evt.output;
191
+ if (typeof evt.content === "string") return evt.content;
192
+ const contentText = extractTextFromContent(evt.content);
193
+ if (contentText) return contentText;
194
+ const part = asRecord(evt.part);
195
+ if (typeof part?.text === "string") return part.text;
196
+ if (typeof part?.content === "string") return part.content;
197
+ const partContentText = extractTextFromContent(part?.content);
198
+ if (partContentText) return partContentText;
199
+ const data = asRecord(evt.data);
200
+ if (!data) return "";
201
+ if (typeof data.text === "string") return data.text;
202
+ if (typeof data.message === "string") return data.message;
203
+ if (typeof data.content === "string") return data.content;
204
+ if (typeof data.output === "string") return data.output;
205
+ return extractTextFromContent(data.content);
206
+ }
207
+ function readStringField(record, keys) {
208
+ for (const key of keys) {
209
+ const value = record?.[key];
210
+ if (typeof value === "string" && value.trim().length > 0) {
211
+ return value.trim();
212
+ }
213
+ }
214
+ return void 0;
215
+ }
216
+ function extractDirectErrorMessage(errorRecord) {
217
+ if (!errorRecord) return void 0;
218
+ return readStringField(errorRecord, ["message", "error", "detail", "description"]) ?? readStringField(asRecord(errorRecord.data), ["message", "error", "detail", "description"]);
219
+ }
220
+ function extractErrorMessage(errorRecord) {
221
+ if (!errorRecord) return void 0;
222
+ const direct = extractDirectErrorMessage(errorRecord);
223
+ if (direct) return direct;
224
+ const ownKeys = Object.keys(errorRecord);
225
+ const informativeKeys = ownKeys.filter((k) => k !== "type");
226
+ if (informativeKeys.length === 0) return void 0;
227
+ try {
228
+ const encoded = JSON.stringify(errorRecord);
229
+ return encoded === "{}" ? void 0 : encoded;
230
+ } catch {
231
+ return void 0;
232
+ }
233
+ }
234
+ function isStepFinishEvent(evt) {
235
+ const evtType = typeof evt.type === "string" ? evt.type : void 0;
236
+ const evtEvent = typeof evt.event === "string" ? evt.event : void 0;
237
+ const part = asRecord(evt.part);
238
+ const partType = typeof part?.type === "string" ? part.type : void 0;
239
+ return evtType === "step_finish" || evtType === "step-finish" || evtEvent === "step_finish" || evtEvent === "step-finish" || partType === "step-finish" || partType === "step_finish";
240
+ }
241
+ function extractStepFinishReason(evt) {
242
+ if (!isStepFinishEvent(evt)) return void 0;
243
+ const part = asRecord(evt.part);
244
+ return readStringField(evt, ["reason", "finish_reason", "finishReason"]) ?? readStringField(part, ["reason", "finish_reason", "finishReason"]) ?? readStringField(asRecord(evt.data), ["reason", "finish_reason", "finishReason"]);
245
+ }
246
+ var OPENCODE_CONTINUATION_FINISH_REASONS = /* @__PURE__ */ new Set([
247
+ "tool-calls",
248
+ "tool_calls",
249
+ "tool-call",
250
+ "tool_call",
251
+ "tool_use",
252
+ "tool-use"
253
+ ]);
254
+ function isOpencodeTerminalEvent(evt) {
255
+ const record = asRecord(evt);
256
+ if (!record) return false;
257
+ if (!isStepFinishEvent(record)) return false;
258
+ const reason = extractStepFinishReason(record);
259
+ if (reason === void 0) return true;
260
+ return !OPENCODE_CONTINUATION_FINISH_REASONS.has(reason.trim().toLowerCase());
261
+ }
262
+ function opencodeLineConcludes(line) {
263
+ const trimmed = line.trim();
264
+ if (trimmed[0] !== "{") return false;
265
+ const evt = safeJsonParse(trimmed, {
266
+ context: "OpenCode tmux completion-signal event",
267
+ debug: false
268
+ });
269
+ return isOpencodeTerminalEvent(evt);
270
+ }
271
+ function createOpencodeTmuxCompletionSignal() {
272
+ return createLineDelimitedTmuxCompletionSignal(opencodeLineConcludes);
273
+ }
274
+ function classifyRetryableError(message, errorType) {
275
+ const text = `${errorType ?? ""}
276
+ ${message}`.toLowerCase();
277
+ if (/auth|unauthorized|forbidden|invalid[_ -]?api[_ -]?key|not[_ -]?found|no-route/.test(text)) {
278
+ return false;
279
+ }
280
+ return /timeout|temporar|unavailable|overload|rate[_ -]?limit|serviceunavailable|gateway|provider_unavailable/.test(
281
+ text
282
+ );
283
+ }
284
+ function extractErrorEvent(evt) {
285
+ const stepFinishReason = extractStepFinishReason(evt);
286
+ if (stepFinishReason === "length" || stepFinishReason === "content-filter") {
287
+ return {
288
+ message: stepFinishReason === "length" ? "OpenCode stopped because the model context length was exhausted." : "OpenCode stopped because the response was blocked by a content filter.",
289
+ type: "step_finish",
290
+ errorType: stepFinishReason,
291
+ retryable: false,
292
+ raw: evt
293
+ };
294
+ }
295
+ const evtType = typeof evt.type === "string" ? evt.type : void 0;
296
+ const dataRecord = asRecord(evt.data);
297
+ const explicitError = evt.error ?? dataRecord?.error;
298
+ const explicitErrorRecord = asRecord(explicitError) ?? (typeof explicitError === "string" && explicitError.trim().length > 0 ? { message: explicitError.trim() } : void 0);
299
+ const errorRecord = evtType === "error" ? explicitErrorRecord ?? dataRecord ?? evt : explicitErrorRecord;
300
+ const eventMessage = evtType === "error" ? extractTextFromEvent(evt) : void 0;
301
+ const message = extractDirectErrorMessage(errorRecord) ?? (eventMessage || extractErrorMessage(errorRecord));
302
+ if (evtType !== "error" && !message) return void 0;
303
+ const errorType = readStringField(errorRecord, ["error_type", "errorType", "type", "code", "status"]) ?? readStringField(asRecord(errorRecord?.data), [
304
+ "error_type",
305
+ "errorType",
306
+ "type",
307
+ "code",
308
+ "status"
309
+ ]) ?? readStringField(asRecord(errorRecord?.metadata), [
310
+ "error_type",
311
+ "errorType",
312
+ "type",
313
+ "code",
314
+ "status"
315
+ ]) ?? readStringField(asRecord(asRecord(errorRecord?.data)?.metadata), [
316
+ "error_type",
317
+ "errorType",
318
+ "type",
319
+ "code",
320
+ "status"
321
+ ]);
322
+ if (evtType === "error" && !message && (!errorType || errorType === evtType)) return void 0;
323
+ const normalizedMessage = message ?? "OpenCode reported an error event";
324
+ return {
325
+ message: normalizedMessage,
326
+ ...evtType ? { type: evtType } : {},
327
+ ...errorType ? { errorType } : {},
328
+ retryable: classifyRetryableError(normalizedMessage, errorType),
329
+ raw: evt
330
+ };
331
+ }
332
+ function parseOpencodeProviderOutput(stdout, stderr) {
333
+ let text = "";
334
+ let structuredEventCount = 0;
335
+ let tokenUsage;
336
+ const reportedCost = createReportedCostAccumulator();
337
+ let resolvedModel;
338
+ let servedRoute;
339
+ const errorEvents = [];
340
+ const detectedSubAgentTypes = /* @__PURE__ */ new Set();
341
+ let subAgentInvocationCount = 0;
342
+ let firstAgentUsed;
343
+ const seenJsonEvents = /* @__PURE__ */ new Set();
344
+ for (const stream of [stdout, stderr]) {
345
+ for (const candidate of parseJsonObjectsFromStream(stream)) {
346
+ const trimmed = candidate.raw.trim();
347
+ if (!trimmed.startsWith("{")) continue;
348
+ try {
349
+ const evt = safeJsonParse(trimmed, {
350
+ context: "OpenCode JSONL event",
351
+ debug: false
352
+ });
353
+ const canonicalEvent = JSON.stringify(evt);
354
+ if (seenJsonEvents.has(canonicalEvent)) continue;
355
+ seenJsonEvents.add(canonicalEvent);
356
+ structuredEventCount++;
357
+ const evtType = evt.type;
358
+ const evtEvent = evt.event;
359
+ if (evtType !== "error") {
360
+ const eventText = extractTextFromEvent(evt);
361
+ if (eventText) {
362
+ text += eventText;
363
+ }
364
+ }
365
+ const trustedTelemetryEvent = evtType === "message" || evtType === "step_finish" || evtType === "step-finish" || evtType === "result" || evtType === "usage" || evtEvent === "step_finish" || evtEvent === "step-finish";
366
+ const errorEvent = extractErrorEvent(evt);
367
+ if (errorEvent) {
368
+ errorEvents.push(errorEvent);
369
+ }
370
+ const part = asRecord(evt.part);
371
+ if (evtType === "tool_use" && part?.tool === "task") {
372
+ const state = asRecord(part?.state);
373
+ const input = asRecord(state?.input);
374
+ const agentType = (typeof input?.subagent_type === "string" ? input.subagent_type : void 0) ?? (typeof input?.agent_type === "string" ? input.agent_type : void 0) ?? (typeof input?.agent === "string" ? input.agent : void 0);
375
+ if (agentType) {
376
+ detectedSubAgentTypes.add(agentType);
377
+ subAgentInvocationCount++;
378
+ firstAgentUsed ??= agentType;
379
+ }
380
+ }
381
+ if (trustedTelemetryEvent && (!resolvedModel || !servedRoute)) {
382
+ const data = asRecord(evt.data);
383
+ const usageRecord = asRecord(evt.usage);
384
+ const providerId = (typeof evt.providerID === "string" ? evt.providerID : void 0) ?? (typeof data?.providerID === "string" ? data.providerID : void 0) ?? (typeof usageRecord?.providerID === "string" ? usageRecord.providerID : void 0);
385
+ if (providerId?.trim()) servedRoute ??= providerId.trim();
386
+ const candidateModel = (typeof evt.model === "string" ? evt.model : void 0) ?? (typeof data?.model === "string" ? data.model : void 0) ?? (typeof usageRecord?.model === "string" ? usageRecord.model : void 0) ?? (typeof evt.modelID === "string" ? evt.modelID : void 0) ?? (typeof data?.modelID === "string" ? data.modelID : void 0) ?? (typeof usageRecord?.modelID === "string" ? usageRecord.modelID : void 0);
387
+ if (candidateModel && !resolvedModel) {
388
+ resolvedModel = providerId && !candidateModel.includes("/") ? `${providerId}/${candidateModel}` : candidateModel;
389
+ }
390
+ }
391
+ const usage = trustedTelemetryEvent ? asRecord(evt.usage) ?? asRecord(evt.tokens) ?? asRecord(part?.usage) ?? asRecord(part?.tokens) ?? asRecord(asRecord(evt.data)?.usage) ?? asRecord(asRecord(evt.data)?.tokens) : void 0;
392
+ let callUsage;
393
+ if (usage) {
394
+ const inputTokens = readNumberField(usage, [
395
+ "input_tokens",
396
+ "inputTokens",
397
+ "prompt_tokens",
398
+ "input"
399
+ ]);
400
+ const outputTokens = readNumberField(usage, [
401
+ "output_tokens",
402
+ "outputTokens",
403
+ "completion_tokens",
404
+ "output"
405
+ ]);
406
+ if (inputTokens !== void 0 || outputTokens !== void 0) {
407
+ const cache = asRecord(usage.cache);
408
+ const reasoningTokens = readNumberField(usage, ["reasoning"]);
409
+ const cachedInputTokens = readNumberField(cache, ["read"]);
410
+ const cacheCreationInputTokens = readNumberField(cache, ["write"]);
411
+ callUsage = {
412
+ inputTokens: inputTokens ?? 0,
413
+ outputTokens: outputTokens ?? 0,
414
+ ...cachedInputTokens !== void 0 ? { cachedInputTokens } : {},
415
+ ...cacheCreationInputTokens !== void 0 ? { cacheCreationInputTokens } : {}
416
+ };
417
+ const cachedTotal = accrueOptional(tokenUsage?.cachedInputTokens, cachedInputTokens);
418
+ const cacheCreationTotal = accrueOptional(
419
+ tokenUsage?.cacheCreationInputTokens,
420
+ cacheCreationInputTokens
421
+ );
422
+ const reasoningTotal = accrueOptional(tokenUsage?.reasoningTokens, reasoningTokens);
423
+ tokenUsage = {
424
+ inputTokens: (tokenUsage?.inputTokens ?? 0) + (inputTokens ?? 0),
425
+ outputTokens: (tokenUsage?.outputTokens ?? 0) + (outputTokens ?? 0),
426
+ ...cachedTotal !== void 0 ? { cachedInputTokens: cachedTotal } : {},
427
+ ...cacheCreationTotal !== void 0 ? { cacheCreationInputTokens: cacheCreationTotal } : {},
428
+ ...reasoningTotal !== void 0 ? { reasoningTokens: reasoningTotal } : {}
429
+ };
430
+ }
431
+ }
432
+ const cost = trustedTelemetryEvent ? readNumberField(evt, ["cost", "total_cost", "cost_usd", "totalCostUsd"]) ?? readNumberField(part, ["cost", "total_cost", "cost_usd", "totalCostUsd"]) ?? readNumberField(usage, ["cost", "total_cost", "cost_usd", "totalCostUsd"]) : void 0;
433
+ reportedCost.add(cost, callUsage);
434
+ } catch {
435
+ }
436
+ }
437
+ }
438
+ return {
439
+ text,
440
+ tokenUsage,
441
+ // OpenCode prices runs from its own catalog and emits 0 for unpriced models;
442
+ // each call is checked on its own, so one unknown call makes the run unknown.
443
+ totalCostUsd: reportedCost.total(),
444
+ resolvedModel,
445
+ ...servedRoute ? { servedRoute } : {},
446
+ agentUsed: firstAgentUsed,
447
+ subAgentInvocations: subAgentInvocationCount || void 0,
448
+ subAgentTypes: detectedSubAgentTypes.size > 0 ? [...detectedSubAgentTypes] : void 0,
449
+ structuredEventCount,
450
+ ...errorEvents.length > 0 ? { errorEvents } : {}
451
+ };
452
+ }
453
+
454
+ // src/core/providers/opencode/bootstrap.ts
455
+ import { readFileSync as readFileSync2, statSync } from "fs";
456
+ import * as fs2 from "fs/promises";
457
+ import { homedir } from "os";
458
+ import * as path2 from "path";
459
+
460
+ // src/core/providers/refresh/freshness.ts
461
+ import * as fs from "fs";
462
+ import * as path from "path";
463
+ function resolveProjectRoot(configPath) {
464
+ const configDir = path.dirname(configPath);
465
+ return path.basename(configDir) === "config" && path.basename(path.dirname(configDir)) === ".build-project" ? path.dirname(path.dirname(configDir)) : path.dirname(configPath);
466
+ }
467
+ function latestCommittedRefreshEvidence(providerId, auditPath) {
468
+ try {
469
+ const lines = fs.readFileSync(auditPath, "utf8").trim().split("\n").filter(Boolean);
470
+ for (let index = lines.length - 1; index >= 0; index--) {
471
+ const entry = JSON.parse(lines[index]);
472
+ if (entry.kind === "overlay") continue;
473
+ const provider = entry.providers?.find(
474
+ (candidate) => candidate.providerId === providerId && candidate.ok && candidate.source
475
+ );
476
+ if (!provider?.source) continue;
477
+ const timestamp = Date.parse(entry.timestamp ?? "");
478
+ if (Number.isFinite(timestamp)) return { timestamp, source: provider.source };
479
+ }
480
+ } catch {
481
+ }
482
+ return void 0;
483
+ }
484
+ function acceptedOverlayRefreshEvidence(providerId, projectRoot) {
485
+ try {
486
+ const { disposition } = readEffectiveRefreshOverlay(projectRoot, {
487
+ expectedBaseCatalogDigest: PROVIDER_CATALOG_SHA256,
488
+ sourceBaseDrift: detectSourceBaseDrift()
489
+ });
490
+ if (disposition.status !== "ready") return void 0;
491
+ const slices = disposition.overlay.providers[providerId]?.slices;
492
+ const candidates = [slices?.models, slices?.pricing].flatMap((slice) => {
493
+ if (!slice) return [];
494
+ const timestamp = Date.parse(slice.fetchedAt);
495
+ return Number.isFinite(timestamp) ? [{ timestamp, source: slice.source }] : [];
496
+ });
497
+ return candidates.sort((left, right) => right.timestamp - left.timestamp)[0];
498
+ } catch {
499
+ return void 0;
500
+ }
501
+ }
502
+ function getProviderRefreshEvidence(providerId, options = {}) {
503
+ const configPath = path.resolve(
504
+ options.configPath ?? resolveProvidersConfigPath({ cwd: options.projectRoot ?? process.cwd() })
505
+ );
506
+ const projectRoot = options.projectRoot ?? resolveProjectRoot(configPath);
507
+ const overlayEvidence = acceptedOverlayRefreshEvidence(providerId, projectRoot);
508
+ if (overlayEvidence) return overlayEvidence;
509
+ const auditEvidence = latestCommittedRefreshEvidence(providerId, resolveSharedRefreshPaths().auditLogFile) ?? latestCommittedRefreshEvidence(
510
+ providerId,
511
+ path.join(projectRoot, ".build-project", "logs", "provider-refresh.jsonl")
512
+ );
513
+ if (auditEvidence) return auditEvidence;
514
+ try {
515
+ const registry = ProviderRegistry.load(options.configPath, projectRoot);
516
+ const config = ProviderRegistry.getProviderConfig(providerId, registry);
517
+ const meta = config.pricing?._meta;
518
+ const lastUpdate = meta?.last_pricing_update;
519
+ if (typeof lastUpdate === "string") {
520
+ const parsed = Date.parse(lastUpdate);
521
+ if (Number.isFinite(parsed)) return { timestamp: parsed, source: "pricing-only" };
522
+ }
523
+ } catch {
524
+ }
525
+ return void 0;
526
+ }
527
+ function getProviderSliceAgeMs(providerId, options = {}) {
528
+ const evidence = getProviderRefreshEvidence(providerId, options);
529
+ return evidence ? Math.max(0, (options.now ?? Date.now()) - evidence.timestamp) : void 0;
530
+ }
531
+ function formatCacheAge(ageMs) {
532
+ const hours = ageMs / 36e5;
533
+ if (hours < 1) return "<1h";
534
+ if (hours < 48) return `${Math.round(hours)}h`;
535
+ return `${Math.round(hours / 24)}d`;
536
+ }
537
+ function isFetchedAtFresh(fetchedAt, ttlMs, now = Date.now()) {
538
+ return typeof fetchedAt === "number" && Number.isFinite(fetchedAt) && Number.isFinite(ttlMs) && ttlMs >= 0 && now - fetchedAt < ttlMs;
539
+ }
540
+ function getFetchedAtAgeMs(fetchedAt, now = Date.now()) {
541
+ if (typeof fetchedAt !== "number" || !Number.isFinite(fetchedAt)) return void 0;
542
+ return Math.max(0, now - fetchedAt);
543
+ }
544
+ function getProjectRefreshOverlayNotice(projectRoot) {
545
+ const root = projectRoot ?? findProjectRoot(process.cwd()) ?? process.cwd();
546
+ const refresh = readEffectiveRefreshOverlay(root, {
547
+ expectedBaseCatalogDigest: PROVIDER_CATALOG_SHA256,
548
+ sourceBaseDrift: detectSourceBaseDrift()
549
+ });
550
+ return getRefreshOverlayOperatorNotice(
551
+ refresh.path,
552
+ PROVIDER_CATALOG_SHA256,
553
+ detectSourceBaseDrift()
554
+ );
555
+ }
556
+
557
+ // src/core/providers/opencode/bootstrap.ts
558
+ var OPENCODE_MODELS_CACHE_TTL_MS = 24 * 60 * 60 * 1e3;
559
+ var OPENCODE_MODEL_ID_PATTERN = /^[a-zA-Z0-9][a-zA-Z0-9._/:-]*$/;
560
+ function isOpencodeBunInstallFailure(error) {
561
+ const haystack = `${error.message}
562
+ ${error.stderr ?? ""}
563
+ ${error.stdout ?? ""}`;
564
+ return /BunInstallFailedError/i.test(haystack) || /\bbun\b.*\binstall\b/i.test(haystack);
565
+ }
566
+ function makeRetryableBootstrapError(error, providerName, operation) {
567
+ return new ProviderExecutionError(`${providerName} ${operation} failed (bootstrap race)`, {
568
+ retryable: true,
569
+ exitCode: error.exitCode,
570
+ reason: error.reason ?? "bootstrap_install",
571
+ stderr: error.stderr,
572
+ stdout: error.stdout,
573
+ // The public fields above may already be truncated, and a stream size must
574
+ // never be re-derived from a truncated string. Forward the structured sizes.
575
+ streamBytes: { stdout: error.stdoutBytes, stderr: error.stderrBytes }
576
+ });
577
+ }
578
+ var LOCK_HEARTBEAT_INTERVAL_MS = 3e4;
579
+ function resolveOpencodeBootstrapAttemptTimeoutMs(timeoutMs, deadlineMs) {
580
+ return clampAttemptTimeoutToDeadline(
581
+ timeoutMs,
582
+ deadlineMs,
583
+ () => new ProviderExecutionError("OpenCode bootstrap deadline exceeded before attempt start.", {
584
+ retryable: false,
585
+ reason: "deadline_exhausted"
586
+ })
587
+ );
588
+ }
589
+ function startLockHeartbeat(lockFile) {
590
+ return setInterval(() => {
591
+ const now = /* @__PURE__ */ new Date();
592
+ void fs2.utimes(lockFile, now, now).catch(() => {
593
+ });
594
+ }, LOCK_HEARTBEAT_INTERVAL_MS);
595
+ }
596
+ function parseWarmupLockPayload(raw) {
597
+ try {
598
+ const parsed = JSON.parse(raw);
599
+ return parsed && typeof parsed === "object" ? parsed : null;
600
+ } catch {
601
+ return null;
602
+ }
603
+ }
604
+ function isProcessAlive(pid) {
605
+ return Number.isInteger(pid) && (pid ?? 0) > 0 && processIsAlive(pid);
606
+ }
607
+ async function acquireLockFile(lockFile, options) {
608
+ const start = Date.now();
609
+ await fs2.mkdir(path2.dirname(lockFile), { recursive: true });
610
+ while (Date.now() - start < options.timeoutMs) {
611
+ try {
612
+ await fs2.writeFile(
613
+ lockFile,
614
+ JSON.stringify({
615
+ pid: process.pid,
616
+ createdAt: (/* @__PURE__ */ new Date()).toISOString(),
617
+ host: process.env.HOSTNAME ?? process.env.COMPUTERNAME ?? "unknown"
618
+ }),
619
+ { flag: "wx" }
620
+ );
621
+ return;
622
+ } catch (error) {
623
+ const code = error.code;
624
+ if (code !== "EEXIST") throw error;
625
+ try {
626
+ const stat2 = await fs2.stat(lockFile);
627
+ if (Date.now() - stat2.mtimeMs > options.staleMs) {
628
+ const payload = parseWarmupLockPayload(
629
+ await fs2.readFile(lockFile, "utf8").catch(() => "")
630
+ );
631
+ const sameHost = payload?.host === void 0 || payload.host === (process.env.HOSTNAME ?? process.env.COMPUTERNAME ?? "unknown");
632
+ if (!sameHost || !isProcessAlive(payload?.pid)) {
633
+ await fs2.unlink(lockFile).catch(() => {
634
+ });
635
+ continue;
636
+ }
637
+ }
638
+ } catch {
639
+ }
640
+ await new Promise((resolve2) => setTimeout(resolve2, 100));
641
+ }
642
+ }
643
+ throw new Error(
644
+ `Failed to acquire OpenCode warmup lock within ${options.timeoutMs}ms: ${lockFile}`
645
+ );
646
+ }
647
+ async function releaseLockFile(lockFile) {
648
+ await fs2.unlink(lockFile).catch(() => {
649
+ });
650
+ }
651
+ var MODELS_CACHE_FILENAME = "models.json";
652
+ var cachedModelsSnapshot = null;
653
+ function resolveOpencodeModelsCacheDir(scope) {
654
+ if (typeof scope === "string") return scope;
655
+ if (scope?.cacheDir) return scope.cacheDir;
656
+ const context = getExecutionContext();
657
+ const env = scope?.env ?? { ...process.env, ...context.envOverrides };
658
+ return path2.join(
659
+ getUserCacheDir(env, env.HOME?.trim() || homedir()),
660
+ "opencode",
661
+ opencodeInventoryContext(scope?.projectRoot ?? context.repoRoot, env)
662
+ );
663
+ }
664
+ function sanitizeOpencodeModelIds(modelIds) {
665
+ const seen = /* @__PURE__ */ new Set();
666
+ const sanitized = [];
667
+ for (const raw of modelIds) {
668
+ if (typeof raw !== "string") continue;
669
+ const id = raw.trim();
670
+ if (id.length >= 2 && id.length <= 128 && OPENCODE_MODEL_ID_PATTERN.test(id) && /[/-]/.test(id) && !seen.has(id)) {
671
+ seen.add(id);
672
+ sanitized.push(id);
673
+ }
674
+ }
675
+ return sanitized;
676
+ }
677
+ function rememberModelsSnapshot(cachePath, mtimeMs, modelIds, fetchedAt) {
678
+ cachedModelsSnapshot = { cachePath, mtimeMs, modelIds, fetchedAt };
679
+ }
680
+ function readModelsCacheFromDisk(cachePath) {
681
+ try {
682
+ const stat2 = statSync(cachePath);
683
+ if (cachedModelsSnapshot && cachedModelsSnapshot.cachePath === cachePath && cachedModelsSnapshot.mtimeMs === stat2.mtimeMs) {
684
+ return {
685
+ modelIds: cachedModelsSnapshot.modelIds,
686
+ fetchedAt: cachedModelsSnapshot.fetchedAt,
687
+ mtimeMs: stat2.mtimeMs
688
+ };
689
+ }
690
+ const raw = readFileSync2(cachePath, "utf-8");
691
+ const entry = JSON.parse(raw);
692
+ if (!Array.isArray(entry?.modelIds)) {
693
+ return null;
694
+ }
695
+ const modelIds = sanitizeOpencodeModelIds(entry.modelIds);
696
+ const fetchedAt = typeof entry.fetchedAt === "number" && Number.isFinite(entry.fetchedAt) ? entry.fetchedAt : void 0;
697
+ rememberModelsSnapshot(cachePath, stat2.mtimeMs, modelIds, fetchedAt);
698
+ return { modelIds, fetchedAt, mtimeMs: stat2.mtimeMs };
699
+ } catch {
700
+ return null;
701
+ }
702
+ }
703
+ function getCachedOpencodeModelIds(scope) {
704
+ const cachePath = path2.join(resolveOpencodeModelsCacheDir(scope), MODELS_CACHE_FILENAME);
705
+ const cached = readModelsCacheFromDisk(cachePath);
706
+ if (cached) return cached.modelIds;
707
+ if (cachedModelsSnapshot?.cachePath === cachePath) {
708
+ cachedModelsSnapshot = null;
709
+ }
710
+ return [];
711
+ }
712
+ function getOpencodeModelsCacheInfo(scope, now = Date.now()) {
713
+ const cachePath = path2.join(resolveOpencodeModelsCacheDir(scope), MODELS_CACHE_FILENAME);
714
+ const cached = readModelsCacheFromDisk(cachePath);
715
+ const fetchedAt = cached?.fetchedAt;
716
+ const ageMs = getFetchedAtAgeMs(fetchedAt, now);
717
+ return {
718
+ cachePath,
719
+ modelIds: cached?.modelIds ?? [],
720
+ fetchedAt,
721
+ ageMs,
722
+ stale: !isFetchedAtFresh(fetchedAt, OPENCODE_MODELS_CACHE_TTL_MS, now)
723
+ };
724
+ }
725
+ async function persistOpencodeModelsCache(modelIds, options) {
726
+ const sanitized = sanitizeOpencodeModelIds(modelIds);
727
+ const cacheDir = resolveOpencodeModelsCacheDir(options);
728
+ await fs2.mkdir(cacheDir, { recursive: true });
729
+ const cachePath = path2.join(cacheDir, MODELS_CACHE_FILENAME);
730
+ const lockFile = path2.join(cacheDir, "warmup.lock");
731
+ const fetchedAt = options?.fetchedAt ?? Date.now();
732
+ const cacheEntry = { modelIds: sanitized, fetchedAt };
733
+ let heartbeat;
734
+ if (!options?.alreadyLocked) {
735
+ await acquireLockFile(lockFile, { timeoutMs: 6e4, staleMs: 10 * 6e4 });
736
+ heartbeat = startLockHeartbeat(lockFile);
737
+ }
738
+ try {
739
+ await writeFileAtomic(cachePath, JSON.stringify(cacheEntry, null, 2));
740
+ const stat2 = await fs2.stat(cachePath);
741
+ rememberModelsSnapshot(cachePath, stat2.mtimeMs, sanitized, fetchedAt);
742
+ return sanitized;
743
+ } finally {
744
+ if (heartbeat) clearInterval(heartbeat);
745
+ if (!options?.alreadyLocked) {
746
+ await releaseLockFile(lockFile);
747
+ }
748
+ }
749
+ }
750
+ async function executeOpencodeCommandWithBootstrapRetry(options) {
751
+ const runningUnderVitest = Boolean(process.env.VITEST || process.env.VITEST_WORKER_ID) || process.env.NODE_ENV === "test" || process.argv.some((arg) => arg.includes("vitest"));
752
+ const budgetRemaining = options.retryBudget?.remaining;
753
+ const defaultMaxAttempts = budgetRemaining !== void 0 ? Math.max(1, Math.min(3, budgetRemaining)) : 3;
754
+ const maxAttempts = typeof options.maxAttempts === "number" && Number.isFinite(options.maxAttempts) ? Math.max(1, Math.min(3, Math.floor(options.maxAttempts))) : defaultMaxAttempts;
755
+ let pendingRetryError;
756
+ const retry = createRetryOptions({
757
+ providerName: options.metadata.name,
758
+ operation: options.operation,
759
+ maxAttempts,
760
+ initialDelayMs: runningUnderVitest ? 10 : 1e3,
761
+ maxDelayMs: 15e3,
762
+ backoffMultiplier: 2,
763
+ retryBudget: options.retryBudget,
764
+ abortSignal: options.abortSignal,
765
+ deadlineMs: options.deadlineMs,
766
+ minimumAttemptTimeMs: Math.min(options.timeout, 3e4),
767
+ onRetry: (attempt2, error) => {
768
+ pendingRetryError = error;
769
+ if (!runningUnderVitest && attempt2 >= 1 && error instanceof ProviderExecutionError) {
770
+ debugLog(
771
+ `[OpenCode] ${options.operation} retry ${attempt2 + 1}/${retry.maxAttempts}: ${error.message}`
772
+ );
773
+ }
774
+ }
775
+ });
776
+ const providerId = options.metadata.id ?? metadata.id;
777
+ const { execute, decision } = await selectProviderExecutor({
778
+ provider: providerId,
779
+ requested: options.executionTransport,
780
+ configured: resolveConfiguredProviderExecutionTransport(providerId, options.workingDir).value,
781
+ env: options.env,
782
+ executionIntent: options.executionIntent,
783
+ readOnlyWorkingDir: options.readOnlyWorkingDir,
784
+ headless: executeProviderCommand,
785
+ onDecision: (decision2) => reportTransportDecision(providerId, decision2, debugLog)
786
+ });
787
+ const wantsTmuxCompletionSignal = decision.resolved === "tmux-exec";
788
+ let attempt = 0;
789
+ const result = await withRetry(async () => {
790
+ attempt++;
791
+ if (attempt > 1 && options.beforeRetryAttempt) {
792
+ await options.beforeRetryAttempt(pendingRetryError);
793
+ }
794
+ const args = attempt > 1 ? [...options.args, "--print-logs", "--log-level", "ERROR"] : [...options.args];
795
+ const runnerMetadata = {
796
+ ...options.metadata,
797
+ installCommand: options.metadata.installCommand ?? metadata.installCommand
798
+ };
799
+ try {
800
+ const streamOutput = resolveProviderStreamingEnabled(options.env);
801
+ const tmuxCompletionSignal = wantsTmuxCompletionSignal ? createOpencodeTmuxCompletionSignal() : void 0;
802
+ return await execute({
803
+ command: options.command,
804
+ args,
805
+ workingDir: options.workingDir,
806
+ env: options.env,
807
+ input: options.input,
808
+ stdinMode: options.input === void 0 ? "ignore" : "pipe",
809
+ timeout: resolveOpencodeBootstrapAttemptTimeoutMs(options.timeout, options.deadlineMs),
810
+ extraWritePaths: options.extraWritePaths,
811
+ readOnlyWorkingDir: options.readOnlyWorkingDir,
812
+ providerInternalSandboxBypass: options.providerInternalSandboxBypass,
813
+ idleWarnMs: options.idleWarnMs,
814
+ idleKillMs: options.idleKillMs,
815
+ onData: options.onData,
816
+ onErrorData: options.onErrorData,
817
+ onStdoutChunk: options.onStdoutChunk,
818
+ onStderrChunk: options.onStderrChunk,
819
+ onActivity: options.onActivity,
820
+ onFirstOutput: options.onFirstOutput,
821
+ abortSignal: options.abortSignal,
822
+ metadata: runnerMetadata,
823
+ ...streamOutput ? { streamOutput: true } : {},
824
+ ...tmuxCompletionSignal ? {
825
+ completionSignal: tmuxCompletionSignal,
826
+ completionSignalGraceMs: TMUX_COMPLETION_SIGNAL_GRACE_MS
827
+ } : {}
828
+ });
829
+ } catch (error) {
830
+ if (error instanceof ProviderExecutionError && isOpencodeBunInstallFailure(error)) {
831
+ throw makeRetryableBootstrapError(error, options.metadata.name, options.operation);
832
+ }
833
+ throw error;
834
+ }
835
+ }, retry);
836
+ return result.result;
837
+ }
838
+
839
+ export {
840
+ getProviderRefreshEvidence,
841
+ getProviderSliceAgeMs,
842
+ formatCacheAge,
843
+ getProjectRefreshOverlayNotice,
844
+ extractUnstructuredOpencodeStdout,
845
+ parseOpencodeProviderOutput,
846
+ resolveOpencodeModelsCacheDir,
847
+ getCachedOpencodeModelIds,
848
+ getOpencodeModelsCacheInfo,
849
+ persistOpencodeModelsCache,
850
+ executeOpencodeCommandWithBootstrapRetry
851
+ };
852
+ //# sourceMappingURL=chunk-3LOY6YZI.js.map