@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,951 @@
1
+ import {
2
+ killTmuxSessionWithPaneFallback,
3
+ markTmuxSessionOrphaned,
4
+ registerTmuxSession,
5
+ unregisterTmuxSession
6
+ } from "./chunk-B7PYTV72.js";
7
+ import {
8
+ resolveReadOnlyWorkingDir
9
+ } from "./chunk-GWHGTG37.js";
10
+ import {
11
+ BUILD_PROCESS_GROUP_OWNER_ENV,
12
+ DEFAULT_TIMEOUT,
13
+ TMUX_COMPLETION_SIGNAL_GRACE_MS,
14
+ acquireProcessSlot,
15
+ assertProviderBypassHasBoundaryProof,
16
+ getProcessLifecycleManager,
17
+ recordVariantTmuxLaunch,
18
+ resolveProviderProcessGroupOwnership,
19
+ sandboxPathDenialError
20
+ } from "./chunk-633XZ7UF.js";
21
+ import {
22
+ globalProcessLimiter
23
+ } from "./chunk-SF6YK3JI.js";
24
+ import {
25
+ TIMEOUT_TERMINATION_EXIT_CODE,
26
+ formatTimeoutRemedyHint
27
+ } from "./chunk-JBBB2Y47.js";
28
+ import {
29
+ evaluateCpuTimeProgressStreak,
30
+ readCpuTimeSecondsAsync,
31
+ resolveIdleTimeoutsMs
32
+ } from "./chunk-WJAL4JL3.js";
33
+ import {
34
+ providerExecutionTransportStreamOptions,
35
+ sanitizeDiagnosticOutput
36
+ } from "./chunk-RBKLOUXA.js";
37
+ import {
38
+ createLogger
39
+ } from "./chunk-3OPP2OZB.js";
40
+ import {
41
+ wrapWithSandbox
42
+ } from "./chunk-B7YRSULE.js";
43
+ import {
44
+ mkBuildTempDir
45
+ } from "./chunk-D6WTZMZB.js";
46
+ import {
47
+ getProviderRuntimeQuirks
48
+ } from "./chunk-Y733RB7T.js";
49
+ import {
50
+ quotePosixShellArg
51
+ } from "./chunk-N5DX4JAK.js";
52
+ import {
53
+ ProviderExecutionError
54
+ } from "./chunk-RRC5BL7B.js";
55
+ import {
56
+ isSandboxAuthorityEnvVar
57
+ } from "./chunk-WGQAXLNA.js";
58
+
59
+ // src/core/providers/shared/execution-transport.ts
60
+ import { randomBytes } from "crypto";
61
+ import * as fs from "fs/promises";
62
+ import { open as fsOpen } from "fs/promises";
63
+ import * as path from "path";
64
+ import { StringDecoder } from "string_decoder";
65
+ import { execa as execa2 } from "execa";
66
+
67
+ // src/core/providers/shared/tmux-pane-state.ts
68
+ import { execa } from "execa";
69
+ async function tmuxPaneDead(session, clientEnv) {
70
+ const result = await execa("tmux", ["display-message", "-p", "-t", session, "#{pane_dead}"], {
71
+ env: clientEnv,
72
+ reject: false,
73
+ timeout: 5e3
74
+ }).catch(() => void 0);
75
+ return result?.exitCode === 0 && String(result.stdout).trim() === "1";
76
+ }
77
+
78
+ // src/core/providers/shared/tmux-terminal-failure.ts
79
+ var TMUX_TERMINAL_FAILURE_REASON = "provider_terminal_error";
80
+ var TMUX_TERMINAL_FAILURE_QUIET_MS = 5e3;
81
+ var MAX_PUBLIC_ERROR_TEXT_LENGTH = 500;
82
+ function lastNonEmptyOutputLine(text) {
83
+ if (!text) return void 0;
84
+ const lines = text.split(/\r?\n/);
85
+ for (let index = lines.length - 1; index >= 0; index--) {
86
+ const line = lines[index]?.trim() ?? "";
87
+ if (line.length > 0) return line;
88
+ }
89
+ return void 0;
90
+ }
91
+ function buildTmuxTerminalFailureError(params) {
92
+ const publicErrorText = sanitizeDiagnosticOutput(params.errorText, MAX_PUBLIC_ERROR_TEXT_LENGTH) ?? "provider reported a terminal error";
93
+ return new ProviderExecutionError(
94
+ `[${params.providerName}] tmux-exec provider execution ended on a terminal provider error: ${publicErrorText}`,
95
+ {
96
+ retryable: false,
97
+ exitCode: 1,
98
+ reason: TMUX_TERMINAL_FAILURE_REASON,
99
+ ...providerExecutionTransportStreamOptions(params.stdout, params.stderr, {
100
+ maxPublicLength: 4096
101
+ })
102
+ }
103
+ );
104
+ }
105
+ function createTmuxTerminalFailureJudge(params) {
106
+ const quietMs = Math.max(0, params.quietMs ?? TMUX_TERMINAL_FAILURE_QUIET_MS);
107
+ const now = params.now ?? (() => Date.now());
108
+ let judgedActivityAt = null;
109
+ let candidate;
110
+ const readSnapshot = async () => ({
111
+ stdout: await params.readStdout(),
112
+ stderr: await params.readStderr()
113
+ });
114
+ const holdCandidate = (signal, snapshot, lastActivityAtMs) => {
115
+ let errorText;
116
+ try {
117
+ errorText = signal(snapshot);
118
+ } catch {
119
+ judgedActivityAt = lastActivityAtMs;
120
+ return void 0;
121
+ }
122
+ if (!errorText) {
123
+ judgedActivityAt = lastActivityAtMs;
124
+ return void 0;
125
+ }
126
+ candidate = {
127
+ errorText,
128
+ stdout: snapshot.stdout,
129
+ stderr: snapshot.stderr,
130
+ activityAtMs: lastActivityAtMs,
131
+ seenAtMs: now()
132
+ };
133
+ return void 0;
134
+ };
135
+ return async (lastActivityAtMs) => {
136
+ const signal = params.signal;
137
+ if (!signal) return void 0;
138
+ if (candidate !== void 0 && candidate.activityAtMs !== lastActivityAtMs) {
139
+ candidate = void 0;
140
+ }
141
+ if (candidate !== void 0) {
142
+ if (now() - candidate.seenAtMs < quietMs) return void 0;
143
+ const confirmed = await readSnapshot();
144
+ if (confirmed.stdout === candidate.stdout && confirmed.stderr === candidate.stderr) {
145
+ const errorText = candidate.errorText;
146
+ candidate = void 0;
147
+ judgedActivityAt = lastActivityAtMs;
148
+ return buildTmuxTerminalFailureError({
149
+ providerName: params.providerName,
150
+ errorText,
151
+ stdout: confirmed.stdout,
152
+ stderr: confirmed.stderr
153
+ });
154
+ }
155
+ candidate = void 0;
156
+ return holdCandidate(signal, confirmed, lastActivityAtMs);
157
+ }
158
+ if (judgedActivityAt === lastActivityAtMs) return void 0;
159
+ if (now() - lastActivityAtMs < quietMs) return void 0;
160
+ return holdCandidate(signal, await readSnapshot(), lastActivityAtMs);
161
+ };
162
+ }
163
+
164
+ // src/core/providers/shared/execution-transport.ts
165
+ var transportLogger = createLogger("ExecutionTransport");
166
+ var VALID_EXECUTION_TRANSPORT_MODES = [
167
+ "auto",
168
+ "headless",
169
+ "tmux-exec",
170
+ "interactive"
171
+ ];
172
+ function isTmuxExecStatusAuthoritative(input) {
173
+ return input.statusPresent && (!input.sessionAlive || input.paneDead === true);
174
+ }
175
+ function parseExecutionTransportMode(value) {
176
+ if (!value) return void 0;
177
+ const normalized = value.trim().toLowerCase();
178
+ if (normalized === "interactive") {
179
+ return "tmux-exec";
180
+ }
181
+ if (VALID_EXECUTION_TRANSPORT_MODES.includes(normalized)) {
182
+ return normalized;
183
+ }
184
+ return void 0;
185
+ }
186
+ var tmuxAvailabilityProbe;
187
+ async function isTmuxAvailable() {
188
+ if (tmuxAvailabilityProbe === void 0) {
189
+ tmuxAvailabilityProbe = (async () => {
190
+ try {
191
+ const result = await execa2("tmux", ["-V"], { reject: false });
192
+ return result.exitCode === 0;
193
+ } catch {
194
+ return false;
195
+ }
196
+ })();
197
+ }
198
+ return tmuxAvailabilityProbe;
199
+ }
200
+ function resolveRequestedTransportMode(options) {
201
+ const providerKey = options.provider?.trim().toUpperCase().replace(/[^A-Z0-9_]/g, "_");
202
+ const envRequested = (providerKey ? parseExecutionTransportMode(options.env?.[`BUILD_${providerKey}_EXECUTION_TRANSPORT`]) : void 0) ?? parseExecutionTransportMode(options.env?.BUILD_PROVIDER_EXECUTION_TRANSPORT) ?? parseExecutionTransportMode(options.env?.BUILD_EXECUTION_TRANSPORT);
203
+ const requested = options.requested ?? envRequested ?? options.configured ?? "headless";
204
+ return requested === "interactive" ? "tmux-exec" : requested;
205
+ }
206
+ async function resolveExecutionTransportMode(options) {
207
+ const normalizedRequested = resolveRequestedTransportMode({
208
+ requested: options.requested,
209
+ configured: options.configured,
210
+ env: options.env,
211
+ provider: options.provider
212
+ });
213
+ if (normalizedRequested === "headless") return "headless";
214
+ const available = await (options.tmuxAvailable ?? isTmuxAvailable)();
215
+ if (available) return "tmux-exec";
216
+ if (normalizedRequested === "tmux-exec") {
217
+ throw new ProviderExecutionError(
218
+ "tmux-exec provider execution transport requires tmux, but tmux was not found on PATH.",
219
+ { retryable: false, reason: "tmux_exec_transport_unavailable" }
220
+ );
221
+ }
222
+ return "headless";
223
+ }
224
+ async function resolveProviderTransportDecision(options) {
225
+ const quirks = getProviderRuntimeQuirks(options.provider);
226
+ const requestedMode = resolveRequestedTransportMode({
227
+ requested: options.requested,
228
+ configured: options.configured,
229
+ env: options.env,
230
+ provider: options.provider
231
+ });
232
+ if (options.forceHeadlessReason) {
233
+ const requested = requestedMode === "headless" ? "headless" : "tmux-exec";
234
+ return {
235
+ resolved: "headless",
236
+ requested,
237
+ downgradeReason: requested === "tmux-exec" ? options.forceHeadlessReason : void 0
238
+ };
239
+ }
240
+ const support = quirks?.tmuxExecSupport ?? "none";
241
+ if (support === "none") {
242
+ if (requestedMode === "tmux-exec") {
243
+ return {
244
+ resolved: "headless",
245
+ requested: "tmux-exec",
246
+ downgradeReason: `${options.provider} is not validated for tmux-exec under a pane pty; using headless`
247
+ };
248
+ }
249
+ return { resolved: "headless", requested: "headless" };
250
+ }
251
+ const resolved = await resolveExecutionTransportMode({
252
+ requested: options.requested,
253
+ configured: options.configured,
254
+ env: options.env,
255
+ provider: options.provider,
256
+ tmuxAvailable: options.tmuxAvailable
257
+ });
258
+ if (resolved !== "tmux-exec") {
259
+ return { resolved, requested: resolved };
260
+ }
261
+ if (support === "read-only") {
262
+ const isReadOnly = resolveReadOnlyWorkingDir(options);
263
+ if (!isReadOnly) {
264
+ return {
265
+ resolved: "headless",
266
+ requested: "tmux-exec",
267
+ downgradeReason: `${options.provider} supports tmux-exec only for analysis/read-only runs; using headless for this write-intent run`
268
+ };
269
+ }
270
+ }
271
+ return { resolved: "tmux-exec", requested: "tmux-exec" };
272
+ }
273
+ function reportTransportDecision(provider, decision, debug) {
274
+ if (decision.downgradeReason) {
275
+ transportLogger.warn(
276
+ `[${provider}] execution transport downgraded: ${decision.downgradeReason}`,
277
+ {
278
+ provider,
279
+ requested: decision.requested,
280
+ resolved: decision.resolved
281
+ }
282
+ );
283
+ return;
284
+ }
285
+ debug?.(`[${provider}] execution transport resolved to ${decision.resolved}`, {
286
+ provider,
287
+ resolved: decision.resolved
288
+ });
289
+ }
290
+ async function selectProviderExecutor(options) {
291
+ const decision = await resolveProviderTransportDecision(options);
292
+ options.onDecision?.(decision);
293
+ const execute = decision.resolved === "tmux-exec" ? executeProviderCommandTmuxExec : options.headless;
294
+ return { execute, decision };
295
+ }
296
+ function sessionName(providerName) {
297
+ const safeProvider = providerName.toLowerCase().replace(/[^a-z0-9_-]/g, "-").replace(/^-+|-+$/g, "").slice(0, 24);
298
+ return `build-${safeProvider || "provider"}-${randomBytes(4).toString("hex")}`;
299
+ }
300
+ async function writePromptFile(tmpDir, input) {
301
+ if (input === void 0) return void 0;
302
+ const file = path.join(tmpDir, "prompt.txt");
303
+ await fs.writeFile(file, input, { mode: 384 });
304
+ return file;
305
+ }
306
+ async function writeEnvFile(tmpDir, argv, env) {
307
+ const ownership = resolveProviderProcessGroupOwnership();
308
+ const paneEnv = {
309
+ ...commandEnvironment(env),
310
+ [BUILD_PROCESS_GROUP_OWNER_ENV]: ownership.owner
311
+ };
312
+ const lines = Object.entries(commandEnvironment(paneEnv)).filter(
313
+ (entry) => /^[A-Za-z_][A-Za-z0-9_]*$/.test(entry[0]) && typeof entry[1] === "string"
314
+ ).map(([key, value]) => `export ${key}=${quotePosixShellArg(value)}`);
315
+ lines.push(`set -- ${argv.map(quotePosixShellArg).join(" ")}`);
316
+ const file = path.join(tmpDir, "env.sh");
317
+ await fs.writeFile(file, `${lines.join("\n")}
318
+ `, { mode: 384 });
319
+ return file;
320
+ }
321
+ function resolveCommandName(command) {
322
+ const posix2 = path.posix.basename(command);
323
+ const win322 = path.win32.basename(command);
324
+ const basename = posix2.length <= win322.length ? posix2 : win322;
325
+ return basename.replace(/\.(exe|cmd|bat|ps1)$/i, "").toLowerCase().replace(/[^a-z0-9_-]/g, "_");
326
+ }
327
+ function commandEnvironment(env) {
328
+ const source = env ?? process.env;
329
+ const next = { ...source };
330
+ for (const key of Object.keys(next)) {
331
+ if (isSandboxAuthorityEnvVar(key)) {
332
+ delete next[key];
333
+ }
334
+ }
335
+ return next;
336
+ }
337
+ function buildTmuxShellCommand(options) {
338
+ const input = options.promptFile ? ` < ${quotePosixShellArg(options.promptFile)}` : " < /dev/null";
339
+ const output = ` > ${quotePosixShellArg(options.stdoutFile)} 2> ${quotePosixShellArg(options.stderrFile)}`;
340
+ const innerScript = [
341
+ `. ${quotePosixShellArg(options.envFile)}`,
342
+ `rm -f ${quotePosixShellArg(options.envFile)}`,
343
+ `exec "$@"${input}${output}`
344
+ ].join("; ");
345
+ const runner = `env -i sh -c ${quotePosixShellArg(innerScript)}`;
346
+ return [
347
+ runner,
348
+ "status=$?",
349
+ `printf '%s' "$status" > ${quotePosixShellArg(options.statusFile)}`,
350
+ 'exit "$status"'
351
+ ].join("; ");
352
+ }
353
+ async function readTextIfPresent(file) {
354
+ try {
355
+ return await fs.readFile(file, "utf8");
356
+ } catch (error) {
357
+ if (error.code === "ENOENT") return "";
358
+ throw error;
359
+ }
360
+ }
361
+ var OutputFileTail = class {
362
+ constructor(file) {
363
+ this.file = file;
364
+ }
365
+ file;
366
+ offset = 0;
367
+ decoder = new StringDecoder("utf8");
368
+ /** Read any bytes appended since the last call (bytes + decoded text). */
369
+ async read() {
370
+ let handle;
371
+ try {
372
+ handle = await fsOpen(this.file, "r");
373
+ const { size } = await handle.stat();
374
+ if (size <= this.offset) {
375
+ if (size < this.offset) {
376
+ this.offset = 0;
377
+ this.decoder = new StringDecoder("utf8");
378
+ }
379
+ return { bytes: Buffer.alloc(0), text: "" };
380
+ }
381
+ const length = size - this.offset;
382
+ const buffer = Buffer.allocUnsafe(length);
383
+ const { bytesRead } = await handle.read(buffer, 0, length, this.offset);
384
+ this.offset += bytesRead;
385
+ const bytes = Buffer.from(buffer.subarray(0, bytesRead));
386
+ const text = this.decoder.write(bytes);
387
+ return { bytes, text };
388
+ } catch (error) {
389
+ if (error.code === "ENOENT") {
390
+ return { bytes: Buffer.alloc(0), text: "" };
391
+ }
392
+ throw error;
393
+ } finally {
394
+ await handle?.close().catch(() => {
395
+ });
396
+ }
397
+ }
398
+ /**
399
+ * Flush incomplete multibyte sequence as presentation text only.
400
+ * Authoritative raw observers already received those bytes on the read that
401
+ * advanced the offset — do not re-deliver them as raw chunks.
402
+ */
403
+ flushText() {
404
+ return this.decoder.end();
405
+ }
406
+ };
407
+ function deliverRawBytes(observer, bytes) {
408
+ if (!observer || bytes.length === 0) {
409
+ return;
410
+ }
411
+ try {
412
+ observer(bytes);
413
+ } catch {
414
+ }
415
+ }
416
+ function sleep(ms) {
417
+ return new Promise((resolve) => setTimeout(resolve, ms));
418
+ }
419
+ function parseTmuxPanePid(value) {
420
+ const text = value?.trim();
421
+ if (!text || !/^\d+$/.test(text)) return void 0;
422
+ const pid = Number.parseInt(text, 10);
423
+ return Number.isInteger(pid) && pid > 0 ? pid : void 0;
424
+ }
425
+ function firstUsefulDiagnosticLine(text) {
426
+ return text.split(/\r?\n/).map((line) => line.trim()).find((line) => line.length > 0) ?? "no error output";
427
+ }
428
+ function tmuxTransportStreamOptions(fullStdout, fullStderr, options) {
429
+ return providerExecutionTransportStreamOptions(fullStdout, fullStderr, {
430
+ maxPublicLength: options?.maxPublicLength ?? 4096
431
+ });
432
+ }
433
+ function throwIfTmuxNonZeroExit(options, result, fullStreams, sandbox) {
434
+ if (result.exitCode === 0) {
435
+ return;
436
+ }
437
+ const full = { ...result, ...fullStreams };
438
+ const denial = sandboxPathDenialError(options.metadata, sandbox, full, 4096);
439
+ if (denial) throw denial;
440
+ const streams = tmuxTransportStreamOptions(full.stdout, full.stderr, { maxPublicLength: 4096 });
441
+ const diagnostic = firstUsefulDiagnosticLine(streams.stderr || streams.stdout || "");
442
+ throw new ProviderExecutionError(
443
+ `${options.metadata.name} CLI exited with code ${result.exitCode}: ${diagnostic}`,
444
+ {
445
+ retryable: false,
446
+ exitCode: result.exitCode,
447
+ reason: "non_zero_exit",
448
+ ...streams
449
+ }
450
+ );
451
+ }
452
+ async function tmuxSessionExists(session, env) {
453
+ const result = await execa2("tmux", ["has-session", "-t", session], {
454
+ env: tmuxClientEnv(env),
455
+ reject: false,
456
+ timeout: 5e3
457
+ }).catch(() => void 0);
458
+ return result?.exitCode === 0;
459
+ }
460
+ async function killTmuxSession(params) {
461
+ return killTmuxSessionWithPaneFallback({
462
+ session: params.session,
463
+ tmuxEnv: params.env,
464
+ panePid: params.panePid,
465
+ timeoutMs: 1e4
466
+ });
467
+ }
468
+ async function registerTmuxProcessLifecycle(params) {
469
+ const plm = getProcessLifecycleManager();
470
+ if (!plm) return void 0;
471
+ try {
472
+ return await plm.registerProcessWithOptions({
473
+ completionPromise: params.completionPromise,
474
+ terminateFn: async () => {
475
+ await params.terminate();
476
+ },
477
+ verificationFn: async () => true,
478
+ processType: "local",
479
+ timeoutMs: 0,
480
+ metadata: {
481
+ provider: params.options.metadata.name,
482
+ command: params.options.command,
483
+ args: params.options.args,
484
+ cwd: params.options.workingDir,
485
+ transport: "tmux-exec",
486
+ session: params.session,
487
+ ...params.panePid !== void 0 ? { panePid: params.panePid } : {},
488
+ startTime: Date.now()
489
+ }
490
+ });
491
+ } catch (error) {
492
+ transportLogger.warn("[tmux-exec] ProcessLifecycleManager registration failed", {
493
+ provider: params.options.metadata.name,
494
+ error: error instanceof Error ? error.message : String(error)
495
+ });
496
+ return void 0;
497
+ }
498
+ }
499
+ function tmuxClientEnv(env) {
500
+ const source = env ?? process.env;
501
+ const allowList = ["PATH", "HOME", "TMUX", "TMUX_TMPDIR", "TMPDIR", "USER", "LOGNAME", "TERM"];
502
+ const minimal = {};
503
+ for (const key of [...allowList, "SHELL", "LANG", "LC_ALL", "LC_CTYPE"]) {
504
+ const value = source[key] ?? process.env[key];
505
+ if (typeof value === "string") {
506
+ minimal[key] = value;
507
+ }
508
+ }
509
+ return minimal;
510
+ }
511
+ async function removeTmpDir(tmpDir) {
512
+ await fs.rm(tmpDir, { recursive: true, force: true }).catch(() => {
513
+ });
514
+ }
515
+ async function executeProviderCommandTmuxExec(options) {
516
+ const session = sessionName(options.metadata.id ?? options.metadata.name);
517
+ const timeout = options.timeout ?? DEFAULT_TIMEOUT;
518
+ const idleTimeouts = resolveIdleTimeoutsMs(options.command, options.args, timeout, {
519
+ idleWarnMs: options.idleWarnMs,
520
+ idleKillMs: options.idleKillMs
521
+ });
522
+ const tmpDir = await mkBuildTempDir("tmux-exec", { baseDir: "/var/tmp" });
523
+ const stdoutFile = path.join(tmpDir, "stdout.log");
524
+ const stderrFile = path.join(tmpDir, "stderr.log");
525
+ const statusFile = path.join(tmpDir, "status");
526
+ let shellCommand;
527
+ let sandboxed;
528
+ try {
529
+ const promptFile = await writePromptFile(tmpDir, options.input);
530
+ await fs.writeFile(stdoutFile, "");
531
+ await fs.writeFile(stderrFile, "");
532
+ sandboxed = options.disableBuildSandbox === true ? { command: options.command, args: options.args, sandboxed: false } : wrapWithSandbox({
533
+ workingDir: options.workingDir,
534
+ command: options.command,
535
+ args: options.args,
536
+ providerName: options.metadata.name,
537
+ extraWritePaths: options.extraWritePaths,
538
+ readOnlyWorkingDir: options.readOnlyWorkingDir,
539
+ // Provider execution path (tmux transport), so the same
540
+ // write-boundary requirement as base-runner applies. Read-only runs
541
+ // still pass readOnlyWorkingDir and stay exempt.
542
+ requiresBoundaryForWrites: true,
543
+ env: options.env,
544
+ providerId: options.metadata.id ?? resolveCommandName(options.command)
545
+ });
546
+ assertProviderBypassHasBoundaryProof(
547
+ options.metadata,
548
+ options.args,
549
+ sandboxed,
550
+ options.providerInternalSandboxBypass
551
+ );
552
+ shellCommand = buildTmuxShellCommand({
553
+ envFile: await writeEnvFile(tmpDir, [sandboxed.command, ...sandboxed.args], options.env),
554
+ promptFile,
555
+ stdoutFile,
556
+ stderrFile,
557
+ statusFile
558
+ });
559
+ } catch (error) {
560
+ await removeTmpDir(tmpDir);
561
+ throw error;
562
+ }
563
+ const readFullTerminalStdout = () => readTextIfPresent(stdoutFile);
564
+ const readFullTerminalStderr = () => readTextIfPresent(stderrFile);
565
+ const startedAt = Date.now();
566
+ let aborted = false;
567
+ let stdoutTail;
568
+ let stderrTail;
569
+ let firstOutputSeen = false;
570
+ let completionSignalSeen = false;
571
+ let completionSignalSeenAt = null;
572
+ let exitedForCompletionSignal = false;
573
+ let lastActivityAt = startedAt;
574
+ const completionSignalGraceMs = Math.max(
575
+ 0,
576
+ options.completionSignalGraceMs ?? TMUX_COMPLETION_SIGNAL_GRACE_MS
577
+ );
578
+ const judgeTerminalFailure = createTmuxTerminalFailureJudge({
579
+ signal: options.terminalFailureSignal,
580
+ providerName: options.metadata.name,
581
+ quietMs: options.terminalFailureQuietMs,
582
+ readStdout: readFullTerminalStdout,
583
+ readStderr: readFullTerminalStderr
584
+ });
585
+ let tmuxPanePid;
586
+ let lastCpuTimeSeconds;
587
+ let consecutiveBusyCpuPolls = 0;
588
+ let nextCpuPollAt = 0;
589
+ const cpuPollMs = Math.max(250, Math.min(3e4, Math.floor((idleTimeouts?.warnMs ?? 0) / 2)));
590
+ const abort = async () => {
591
+ aborted = true;
592
+ return killTmuxSession({ session, env: options.env, panePid: tmuxPanePid });
593
+ };
594
+ const abortListener = () => {
595
+ void abort();
596
+ };
597
+ const limiterDescription = `${options.metadata.name} tmux-exec provider command: ${options.command}`.trim();
598
+ let reservation;
599
+ try {
600
+ stdoutTail = new OutputFileTail(stdoutFile);
601
+ stderrTail = new OutputFileTail(stderrFile);
602
+ if (options.abortSignal?.aborted) {
603
+ throw new ProviderExecutionError(`[${options.metadata.name}] Provider execution aborted`, {
604
+ retryable: false,
605
+ reason: "abort"
606
+ });
607
+ }
608
+ const reservationOrWait = acquireProcessSlot(limiterDescription, options.abortSignal);
609
+ reservation = reservationOrWait instanceof Promise ? await reservationOrWait : reservationOrWait;
610
+ } catch (error) {
611
+ await removeTmpDir(tmpDir);
612
+ throw error;
613
+ }
614
+ let activeReservationId = typeof reservation === "number" ? reservation : void 0;
615
+ const reservationRenewTimer = activeReservationId !== void 0 ? setInterval(() => {
616
+ if (activeReservationId === void 0) return;
617
+ if (globalProcessLimiter.renewReservation(activeReservationId)) return;
618
+ const replacement = globalProcessLimiter.reserve();
619
+ activeReservationId = typeof replacement === "number" ? replacement : void 0;
620
+ }, 1e4) : void 0;
621
+ reservationRenewTimer?.unref?.();
622
+ const releaseReservation = () => {
623
+ if (reservationRenewTimer) {
624
+ clearInterval(reservationRenewTimer);
625
+ }
626
+ if (activeReservationId !== void 0) {
627
+ globalProcessLimiter.cancelReservation(activeReservationId);
628
+ activeReservationId = void 0;
629
+ }
630
+ };
631
+ options.abortSignal?.addEventListener("abort", abortListener, { once: true });
632
+ let tmuxPlmProcessId;
633
+ let registryPersisted = false;
634
+ let sessionStarted = false;
635
+ let settleTmuxPlmCompletion;
636
+ try {
637
+ await registerTmuxSession(session, {
638
+ env: options.env,
639
+ category: "variant",
640
+ type: "spawned",
641
+ provider: options.metadata.id ?? options.metadata.name,
642
+ tmpDir
643
+ });
644
+ registryPersisted = true;
645
+ if (aborted || options.abortSignal?.aborted) {
646
+ throw new ProviderExecutionError(`[${options.metadata.name}] Provider execution aborted`, {
647
+ retryable: false,
648
+ reason: "abort",
649
+ ...tmuxTransportStreamOptions(
650
+ await readFullTerminalStdout(),
651
+ await readFullTerminalStderr()
652
+ )
653
+ });
654
+ }
655
+ options.beforeSpawn?.();
656
+ const tmuxLaunch = await execa2(
657
+ "tmux",
658
+ [
659
+ "new-session",
660
+ "-d",
661
+ "-P",
662
+ "-F",
663
+ "#{pane_pid}",
664
+ "-s",
665
+ session,
666
+ "-c",
667
+ options.workingDir,
668
+ // Separate argv: tmux execs /bin/sh, not the default shell (zsh, fish break the wrapper).
669
+ "/bin/sh",
670
+ "-c",
671
+ shellCommand
672
+ ],
673
+ {
674
+ // Minimal client env only; extendEnv:false keeps process.env out of tmux.
675
+ env: tmuxClientEnv(options.env),
676
+ extendEnv: false,
677
+ cancelSignal: options.abortSignal,
678
+ reject: true
679
+ }
680
+ );
681
+ sessionStarted = true;
682
+ recordVariantTmuxLaunch();
683
+ tmuxPanePid = parseTmuxPanePid(tmuxLaunch.stdout);
684
+ const tmuxPlmCompletion = new Promise((resolve, reject) => {
685
+ settleTmuxPlmCompletion = { resolve, reject, settled: false };
686
+ });
687
+ tmuxPlmCompletion.catch(() => {
688
+ });
689
+ tmuxPlmProcessId = await registerTmuxProcessLifecycle({
690
+ options,
691
+ session,
692
+ panePid: tmuxPanePid,
693
+ completionPromise: tmuxPlmCompletion,
694
+ terminate: abort
695
+ });
696
+ const drainUnreadRawTails = async () => {
697
+ const stdout = await stdoutTail.read();
698
+ const stderr = await stderrTail.read();
699
+ deliverRawBytes(options.onStdoutChunk, stdout.bytes);
700
+ deliverRawBytes(options.onStderrChunk, stderr.bytes);
701
+ };
702
+ while (!aborted) {
703
+ const stdoutChunk = await stdoutTail.read();
704
+ const stderrChunk = await stderrTail.read();
705
+ if (stdoutChunk.bytes.length > 0) {
706
+ const now = Date.now();
707
+ lastActivityAt = now;
708
+ options.onActivity?.({ source: "stdout", timestampMs: now });
709
+ if (!firstOutputSeen && stdoutChunk.text.trim().length > 0) {
710
+ firstOutputSeen = true;
711
+ options.onFirstOutput?.(now);
712
+ }
713
+ deliverRawBytes(options.onStdoutChunk, stdoutChunk.bytes);
714
+ if (stdoutChunk.text.length > 0) {
715
+ try {
716
+ if (options.completionSignal?.(stdoutChunk.text, "stdout") === true) {
717
+ completionSignalSeen = true;
718
+ completionSignalSeenAt ??= Date.now();
719
+ }
720
+ } catch {
721
+ }
722
+ if (options.streamOutput === true) {
723
+ options.onData?.(stdoutChunk.text);
724
+ }
725
+ }
726
+ }
727
+ if (stderrChunk.bytes.length > 0) {
728
+ const now = Date.now();
729
+ lastActivityAt = now;
730
+ options.onActivity?.({ source: "stderr", timestampMs: now });
731
+ deliverRawBytes(options.onStderrChunk, stderrChunk.bytes);
732
+ if (stderrChunk.text.length > 0) {
733
+ try {
734
+ if (options.completionSignal?.(stderrChunk.text, "stderr") === true) {
735
+ completionSignalSeen = true;
736
+ completionSignalSeenAt ??= Date.now();
737
+ }
738
+ } catch {
739
+ }
740
+ if (options.streamOutput === true) {
741
+ options.onErrorData?.(stderrChunk.text);
742
+ }
743
+ }
744
+ }
745
+ if (idleTimeouts) {
746
+ if (Date.now() >= nextCpuPollAt) {
747
+ nextCpuPollAt = Date.now() + cpuPollMs;
748
+ const currentCpuTimeSeconds = await readCpuTimeSecondsAsync(tmuxPanePid);
749
+ const cpuProgress = evaluateCpuTimeProgressStreak({
750
+ currentCpuSeconds: currentCpuTimeSeconds,
751
+ previousCpuSeconds: lastCpuTimeSeconds,
752
+ currentBusyPolls: consecutiveBusyCpuPolls
753
+ });
754
+ consecutiveBusyCpuPolls = cpuProgress.nextBusyPolls;
755
+ if (currentCpuTimeSeconds !== void 0) lastCpuTimeSeconds = currentCpuTimeSeconds;
756
+ if (cpuProgress.shouldCountAsActivity) {
757
+ const now = Date.now();
758
+ lastActivityAt = now;
759
+ options.onActivity?.({ source: "cpu", timestampMs: now });
760
+ }
761
+ }
762
+ const idleFor = Date.now() - lastActivityAt;
763
+ if (idleFor >= idleTimeouts.killMs) {
764
+ options.onIdleTermination?.();
765
+ const killResult = await abort();
766
+ await drainUnreadRawTails();
767
+ const fullStdout2 = await readFullTerminalStdout();
768
+ const fullStderr2 = await readFullTerminalStderr();
769
+ const stderrDetail = fullStderr2.trim().length > 0 ? " Recent stderr was captured privately." : "";
770
+ const killDetail = killResult.removed ? "" : " Tmux session removal failed after pane SIGTERM/SIGKILL fallback; registry retained for orphan cleanup.";
771
+ throw new ProviderExecutionError(
772
+ `[${options.metadata.name}] tmux-exec provider execution idle timed out after ${Math.round(
773
+ idleTimeouts.killMs / 1e3
774
+ )}s with no stdout/stderr activity.${stderrDetail}${killDetail}${formatTimeoutRemedyHint()}`,
775
+ {
776
+ retryable: false,
777
+ exitCode: TIMEOUT_TERMINATION_EXIT_CODE,
778
+ reason: "idle_timeout",
779
+ idleTerminated: true,
780
+ ...tmuxTransportStreamOptions(fullStdout2, fullStderr2)
781
+ }
782
+ );
783
+ }
784
+ }
785
+ const statusPresent = (await readTextIfPresent(statusFile)).trim().length > 0;
786
+ const sessionAlive = sessionStarted ? await tmuxSessionExists(session, options.env) : false;
787
+ const paneDead = statusPresent && sessionAlive && await tmuxPaneDead(session, tmuxClientEnv(options.env));
788
+ if (isTmuxExecStatusAuthoritative({ statusPresent, sessionAlive, paneDead })) {
789
+ break;
790
+ }
791
+ if (completionSignalSeen && completionSignalSeenAt !== null && Date.now() - completionSignalSeenAt >= completionSignalGraceMs) {
792
+ exitedForCompletionSignal = true;
793
+ await killTmuxSession({ session, env: options.env, panePid: tmuxPanePid });
794
+ break;
795
+ }
796
+ const terminalFailure = await judgeTerminalFailure(lastActivityAt);
797
+ if (terminalFailure) {
798
+ await abort();
799
+ await drainUnreadRawTails();
800
+ throw terminalFailure;
801
+ }
802
+ if (Date.now() - startedAt > timeout) {
803
+ const killResult = await abort();
804
+ await drainUnreadRawTails();
805
+ const killDetail = killResult.removed ? "" : "; tmux session removal failed after pane SIGTERM/SIGKILL fallback; registry retained for orphan cleanup";
806
+ throw new ProviderExecutionError(
807
+ `[${options.metadata.name}] tmux-exec provider execution timed out after ${timeout}ms${killDetail}.${formatTimeoutRemedyHint()}`,
808
+ {
809
+ retryable: false,
810
+ exitCode: TIMEOUT_TERMINATION_EXIT_CODE,
811
+ reason: "timeout",
812
+ ...tmuxTransportStreamOptions(
813
+ await readFullTerminalStdout(),
814
+ await readFullTerminalStderr()
815
+ )
816
+ }
817
+ );
818
+ }
819
+ await sleep(250);
820
+ }
821
+ if (aborted) {
822
+ await drainUnreadRawTails();
823
+ throw new ProviderExecutionError(`[${options.metadata.name}] Provider execution aborted`, {
824
+ retryable: false,
825
+ reason: "abort",
826
+ ...tmuxTransportStreamOptions(
827
+ await readFullTerminalStdout(),
828
+ await readFullTerminalStderr()
829
+ )
830
+ });
831
+ }
832
+ const finalStdout = await stdoutTail.read();
833
+ const finalStderr = await stderrTail.read();
834
+ const finalStdoutText = finalStdout.text + stdoutTail.flushText();
835
+ const finalStderrText = finalStderr.text + stderrTail.flushText();
836
+ deliverRawBytes(options.onStdoutChunk, finalStdout.bytes);
837
+ deliverRawBytes(options.onStderrChunk, finalStderr.bytes);
838
+ if (finalStdoutText.length > 0) {
839
+ try {
840
+ if (options.completionSignal?.(finalStdoutText, "stdout") === true) {
841
+ completionSignalSeen = true;
842
+ completionSignalSeenAt ??= Date.now();
843
+ }
844
+ } catch {
845
+ }
846
+ }
847
+ if (finalStderrText.length > 0) {
848
+ try {
849
+ if (options.completionSignal?.(finalStderrText, "stderr") === true) {
850
+ completionSignalSeen = true;
851
+ completionSignalSeenAt ??= Date.now();
852
+ }
853
+ } catch {
854
+ }
855
+ }
856
+ if (options.streamOutput === true) {
857
+ if (finalStdoutText) options.onData?.(finalStdoutText);
858
+ if (finalStderrText) options.onErrorData?.(finalStderrText);
859
+ }
860
+ const statusText = await readTextIfPresent(statusFile);
861
+ const trimmedStatus = statusText.trim();
862
+ const statusIsValid = /^-?\d+$/.test(trimmedStatus);
863
+ let resolvedExitCode;
864
+ if (statusIsValid) {
865
+ resolvedExitCode = Number.parseInt(trimmedStatus, 10);
866
+ } else if (exitedForCompletionSignal || completionSignalSeen) {
867
+ resolvedExitCode = 0;
868
+ } else {
869
+ resolvedExitCode = 1;
870
+ sandboxed = void 0;
871
+ }
872
+ const fullStdout = await readTextIfPresent(stdoutFile);
873
+ const fullStderr = await readTextIfPresent(stderrFile);
874
+ const dualPublic = resolvedExitCode === 0 ? void 0 : tmuxTransportStreamOptions(fullStdout, fullStderr, {
875
+ maxPublicLength: 4096
876
+ });
877
+ const publicStdout = resolvedExitCode === 0 ? fullStdout : dualPublic?.stdout ?? "";
878
+ const publicStderr = resolvedExitCode === 0 ? fullStderr : dualPublic?.stderr ?? "";
879
+ if (options.streamOutput !== true) {
880
+ if (publicStdout) options.onData?.(publicStdout);
881
+ if (publicStderr) options.onErrorData?.(publicStderr);
882
+ } else if (resolvedExitCode === 1 && !statusIsValid && !exitedForCompletionSignal && !completionSignalSeen) {
883
+ options.onErrorData?.(
884
+ `[${options.metadata.name}] tmux-exec produced no terminal exit status; treating as failure.`
885
+ );
886
+ }
887
+ const result = {
888
+ stdout: publicStdout,
889
+ stderr: publicStderr,
890
+ exitCode: resolvedExitCode,
891
+ ...tmuxPanePid !== void 0 ? { pid: tmuxPanePid } : {}
892
+ };
893
+ throwIfTmuxNonZeroExit(options, result, { stdout: fullStdout, stderr: fullStderr }, sandboxed);
894
+ if (settleTmuxPlmCompletion && !settleTmuxPlmCompletion.settled) {
895
+ settleTmuxPlmCompletion.settled = true;
896
+ settleTmuxPlmCompletion.resolve(result);
897
+ }
898
+ return result;
899
+ } catch (error) {
900
+ if (settleTmuxPlmCompletion && !settleTmuxPlmCompletion.settled) {
901
+ settleTmuxPlmCompletion.settled = true;
902
+ settleTmuxPlmCompletion.reject(error);
903
+ }
904
+ throw error;
905
+ } finally {
906
+ options.abortSignal?.removeEventListener("abort", abortListener);
907
+ releaseReservation();
908
+ let orphanHandoffSucceeded = false;
909
+ if (registryPersisted) {
910
+ try {
911
+ orphanHandoffSucceeded = await markTmuxSessionOrphaned(session);
912
+ } catch (error) {
913
+ transportLogger.warn("[tmux-exec] failed to mark retained tmux session orphaned", {
914
+ provider: options.metadata.name,
915
+ session,
916
+ error: error instanceof Error ? error.message : String(error)
917
+ });
918
+ }
919
+ }
920
+ const killResult = registryPersisted || sessionStarted ? await killTmuxSession({ session, env: options.env, panePid: tmuxPanePid }) : { removed: true, killed: false };
921
+ if (killResult.removed) {
922
+ await unregisterTmuxSession(session);
923
+ }
924
+ if (killResult.removed) {
925
+ if (tmuxPlmProcessId) {
926
+ getProcessLifecycleManager()?.unregisterProcess(tmuxPlmProcessId);
927
+ }
928
+ await removeTmpDir(tmpDir);
929
+ } else {
930
+ if (orphanHandoffSucceeded && tmuxPlmProcessId) {
931
+ getProcessLifecycleManager()?.unregisterProcess(tmuxPlmProcessId);
932
+ }
933
+ transportLogger.warn("[tmux-exec] tmux session cleanup failed; retaining registry record", {
934
+ provider: options.metadata.name,
935
+ session,
936
+ ...tmuxPanePid !== void 0 ? { panePid: tmuxPanePid } : {},
937
+ registryOrphaned: orphanHandoffSucceeded
938
+ });
939
+ }
940
+ }
941
+ }
942
+
943
+ export {
944
+ TMUX_TERMINAL_FAILURE_REASON,
945
+ lastNonEmptyOutputLine,
946
+ resolveProviderTransportDecision,
947
+ reportTransportDecision,
948
+ selectProviderExecutor,
949
+ executeProviderCommandTmuxExec
950
+ };
951
+ //# sourceMappingURL=chunk-JYXS47FQ.js.map