@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,1266 @@
1
+ import {
2
+ resolveInitiatedBy
3
+ } from "./chunk-PNFTPNSR.js";
4
+ import {
5
+ COMPLETENESS_VALIDATION_THRESHOLD,
6
+ parseCompetitionDeliveryRecord
7
+ } from "./chunk-DCACX7BV.js";
8
+ import {
9
+ normalizeProviderCliVersion
10
+ } from "./chunk-S47ISY27.js";
11
+ import {
12
+ canonicalizeVariantIdentifier,
13
+ formatVariantIdentifier,
14
+ formatVariantIdentifierFromResult,
15
+ parseVariantIdentifier
16
+ } from "./chunk-TGXXYDL4.js";
17
+ import {
18
+ atomicWriteTextSync
19
+ } from "./chunk-RFDVSI4N.js";
20
+ import {
21
+ parseJsonWithContext
22
+ } from "./chunk-P6SSWAKY.js";
23
+ import {
24
+ deriveVariantOutcome,
25
+ failedGatesAlsoFailingOnBase,
26
+ hasMeaningfulCompetitionProgress,
27
+ repairOutcomeCanSupersedeRawTouchedFailure
28
+ } from "./chunk-3OPP2OZB.js";
29
+ import {
30
+ assertSafePathComponent
31
+ } from "./chunk-S2VQCZO4.js";
32
+ import {
33
+ LabPathResolver
34
+ } from "./chunk-C3KCMAJP.js";
35
+ import {
36
+ resolveCheckoutRoot
37
+ } from "./chunk-AJN5Y5YZ.js";
38
+ import {
39
+ redactPersistedTestsExecuted
40
+ } from "./chunk-WV3KQDPE.js";
41
+ import {
42
+ sanitizeSynthesisArtifactForPersistence,
43
+ sanitizeSynthesisStringForPersistence
44
+ } from "./chunk-VSWC5ZXI.js";
45
+ import {
46
+ lockOwnerIsAlive,
47
+ processIsAlive,
48
+ readProcessIdentity
49
+ } from "./chunk-MT2WAIR3.js";
50
+ import {
51
+ resolveBuildRoot
52
+ } from "./chunk-CHA2HDE5.js";
53
+ import {
54
+ getExecutionContext
55
+ } from "./chunk-7VRJHTGZ.js";
56
+
57
+ // src/core/synthesis/synthesis-result-status.ts
58
+ function hasDeliveredWinnerMaterial(fields) {
59
+ if (typeof fields.code === "string" && fields.code.trim().length > 0) return true;
60
+ const merged = Array.isArray(fields.mergedVariants) ? fields.mergedVariants : [];
61
+ return merged.length > 0;
62
+ }
63
+ function uniqueVariantCount(fields) {
64
+ const ids = [
65
+ ...Array.isArray(fields.contributingVariants) ? fields.contributingVariants : [],
66
+ ...Array.isArray(fields.mergedVariants) ? fields.mergedVariants : []
67
+ ].filter((value) => typeof value === "string" && value.trim().length > 0).map((value) => value.trim());
68
+ return new Set(ids).size;
69
+ }
70
+ function isSynthesisResultDelivered(fields) {
71
+ if (fields.deliverySucceeded === true) return true;
72
+ if (fields.winnerFallback === true) return true;
73
+ if (fields.winnerClone === true) return true;
74
+ if (fields.synthesisOutcomeStatus === "winner_carry_forward") return true;
75
+ if (fields.synthesisApplied === true) return true;
76
+ if (fields.success === true && hasDeliveredWinnerMaterial(fields)) return true;
77
+ return false;
78
+ }
79
+ function resolveSynthesisResultStatus(fields) {
80
+ if (!isSynthesisResultDelivered(fields)) return null;
81
+ if (fields.synthesisApplied === true && uniqueVariantCount(fields) > 1) {
82
+ return "synthesized";
83
+ }
84
+ return "winner_retained";
85
+ }
86
+ function resolveSynthesisDeliveryProjection(fields) {
87
+ const delivered = isSynthesisResultDelivered(fields);
88
+ return {
89
+ success: delivered,
90
+ resultStatus: resolveSynthesisResultStatus(fields)
91
+ };
92
+ }
93
+ function markSynthesisResultRejected(result, message) {
94
+ return {
95
+ ...result,
96
+ success: false,
97
+ resultStatus: void 0,
98
+ error: message,
99
+ reasoning: result.reasoning ? `${result.reasoning}
100
+ ${message}` : message,
101
+ deliverySucceeded: false,
102
+ synthesisApplied: false,
103
+ winnerFallback: false,
104
+ winnerClone: false,
105
+ fallbackReason: void 0,
106
+ patchApplyValidated: false,
107
+ gatesPassed: false,
108
+ synthesisOutcomeStatus: "generation_failed"
109
+ };
110
+ }
111
+ function withSynthesisDeliveryFields(result) {
112
+ const projection = resolveSynthesisDeliveryProjection(result);
113
+ return {
114
+ ...result,
115
+ success: projection.success,
116
+ resultStatus: projection.resultStatus ?? void 0
117
+ };
118
+ }
119
+
120
+ // src/orchestrator/basic/undelivered-worker-message.ts
121
+ var MAX_UNDELIVERED_MESSAGE_CHARS = 400;
122
+ function undeliveredWorkerMessage(facts) {
123
+ if (facts.success || facts.exitCode !== 0 || facts.filesChanged > 0) return void 0;
124
+ const message = (facts.stdout ?? "").slice(-MAX_UNDELIVERED_MESSAGE_CHARS * 4).replace(/\s+/g, " ").trim();
125
+ if (message.length === 0) return void 0;
126
+ return message.length > MAX_UNDELIVERED_MESSAGE_CHARS ? `...${message.slice(-MAX_UNDELIVERED_MESSAGE_CHARS).trimStart()}` : message;
127
+ }
128
+ function undeliveredMessageFromResult(result) {
129
+ return undeliveredWorkerMessage({
130
+ success: result.success,
131
+ exitCode: result.result?.exitCode,
132
+ filesChanged: result.filesChanged ?? result.worktreeSummary?.filesChanged ?? 0,
133
+ stdout: result.result?.stdout
134
+ });
135
+ }
136
+ function asRecord(value) {
137
+ return typeof value === "object" && value !== null && !Array.isArray(value) ? value : void 0;
138
+ }
139
+ function undeliveredMessageFromRecord(record) {
140
+ const engine = asRecord(record?.engineResult);
141
+ const evidence = asRecord(record?.evidence);
142
+ const changedFiles = Array.isArray(evidence?.changedFiles) ? evidence.changedFiles.length : 0;
143
+ return undeliveredWorkerMessage({
144
+ success: evidence?.success !== false,
145
+ exitCode: typeof engine?.exitCode === "number" ? engine.exitCode : void 0,
146
+ filesChanged: changedFiles,
147
+ stdout: typeof engine?.stdout === "string" ? engine.stdout : void 0
148
+ });
149
+ }
150
+ function formatUndeliveredWorkerLine(message) {
151
+ return `Worker said: ${message}`;
152
+ }
153
+ function undeliveredLineFromRecord(record) {
154
+ const message = undeliveredMessageFromRecord(record);
155
+ return message ? formatUndeliveredWorkerLine(message) : void 0;
156
+ }
157
+ function undeliveredLineFromTelemetry(reader, taskId, variants) {
158
+ try {
159
+ for (const variant of new Set(variants)) {
160
+ if (!variant) continue;
161
+ const record = reader.getVariantResultRecord(taskId, variant);
162
+ if (record) return undeliveredLineFromRecord(record);
163
+ }
164
+ } catch {
165
+ }
166
+ return void 0;
167
+ }
168
+ function undeliveredLineLookup(reader, taskId) {
169
+ return (variant) => undeliveredLineFromTelemetry(reader, taskId, [variant]);
170
+ }
171
+
172
+ // src/orchestrator/competition-handle.ts
173
+ import { randomUUID } from "crypto";
174
+ import * as fs from "fs";
175
+ import * as path from "path";
176
+ var TERMINAL_EVALUATION_STATUSES = /* @__PURE__ */ new Set(["completed", "failed"]);
177
+ var _seqCounters = /* @__PURE__ */ new Map();
178
+ function readExistingMaxSeq(eventsPath) {
179
+ try {
180
+ if (!fs.existsSync(eventsPath)) return -1;
181
+ const raw = fs.readFileSync(eventsPath, "utf8");
182
+ let max = -1;
183
+ for (const line of raw.split(/\r?\n/)) {
184
+ const trimmed = line.trim();
185
+ if (!trimmed) continue;
186
+ try {
187
+ const parsed = JSON.parse(trimmed);
188
+ if (typeof parsed.seq === "number" && Number.isFinite(parsed.seq)) {
189
+ max = Math.max(max, Math.floor(parsed.seq));
190
+ }
191
+ } catch {
192
+ }
193
+ }
194
+ return max;
195
+ } catch {
196
+ return -1;
197
+ }
198
+ }
199
+ function nextSeq(taskId, eventsPath) {
200
+ let prev = _seqCounters.get(taskId);
201
+ if (prev === void 0) {
202
+ prev = readExistingMaxSeq(eventsPath);
203
+ }
204
+ const next = prev + 1;
205
+ _seqCounters.set(taskId, next);
206
+ return next;
207
+ }
208
+ function sanitizeDiagnosticValue(value, depth = 0) {
209
+ if (depth > 4) return "[truncated]";
210
+ if (value == null) return value;
211
+ if (typeof value === "string") return sanitizeSynthesisStringForPersistence(value);
212
+ if (typeof value === "number" || typeof value === "boolean") return value;
213
+ if (Array.isArray(value)) {
214
+ return value.slice(0, 50).map((entry) => sanitizeDiagnosticValue(entry, depth + 1));
215
+ }
216
+ if (value instanceof Error) {
217
+ const details = {
218
+ name: sanitizeSynthesisStringForPersistence(value.name),
219
+ message: sanitizeSynthesisStringForPersistence(value.message)
220
+ };
221
+ if (typeof value.stack === "string") {
222
+ details.stack = sanitizeSynthesisStringForPersistence(value.stack);
223
+ }
224
+ return details;
225
+ }
226
+ if (typeof value === "object") {
227
+ const details = {};
228
+ for (const [key, entry] of Object.entries(value).slice(0, 100)) {
229
+ const keyAwareValue = sanitizeSynthesisArtifactForPersistence({ [key]: entry });
230
+ details[key] = keyAwareValue[key] ?? sanitizeDiagnosticValue(entry, depth + 1);
231
+ }
232
+ return details;
233
+ }
234
+ return sanitizeSynthesisStringForPersistence(String(value));
235
+ }
236
+ function sanitizeHandlePrompt(prompt) {
237
+ return sanitizeSynthesisStringForPersistence(prompt ?? "");
238
+ }
239
+ function sanitizeHandleErrorMessage(message) {
240
+ return typeof message === "string" ? sanitizeSynthesisStringForPersistence(message) : void 0;
241
+ }
242
+ var COMPETITION_HANDLE_PERSISTENCE_COMPOSITE_COMPLETENESS_SCORER_ID = "competition-handle-persistence-composite";
243
+ var COMPETITION_HANDLE_PERSISTENCE_COMPOSITE_COMPLETENESS_SCORER_VERSION = "1.0.0";
244
+ var COMPETITION_HANDLE_PERSISTENCE_COMPOSITE_COMPLETENESS_VALIDATION_THRESHOLD = {
245
+ authority: "core.validation.completeness.competition-handle-persistence-composite",
246
+ owner: COMPLETENESS_VALIDATION_THRESHOLD.owner,
247
+ minimumAcceptableScore: COMPLETENESS_VALIDATION_THRESHOLD.minimumAcceptableScore
248
+ };
249
+ var PERSISTENCE_FAIL_CLOSED_EVIDENCE_PROVENANCE = "persistence-fail-closed";
250
+ function failClosedUnderPersistenceComposite(base) {
251
+ return {
252
+ score: 0,
253
+ scorerId: COMPETITION_HANDLE_PERSISTENCE_COMPOSITE_COMPLETENESS_SCORER_ID,
254
+ scorerVersion: COMPETITION_HANDLE_PERSISTENCE_COMPOSITE_COMPLETENESS_SCORER_VERSION,
255
+ evidenceProvenance: PERSISTENCE_FAIL_CLOSED_EVIDENCE_PROVENANCE,
256
+ ok: false,
257
+ breakdown: base.breakdown,
258
+ threshold: {
259
+ authority: COMPETITION_HANDLE_PERSISTENCE_COMPOSITE_COMPLETENESS_VALIDATION_THRESHOLD.authority,
260
+ value: COMPETITION_HANDLE_PERSISTENCE_COMPOSITE_COMPLETENESS_VALIDATION_THRESHOLD.minimumAcceptableScore
261
+ },
262
+ components: [base]
263
+ };
264
+ }
265
+ function normalizePersistedCompletenessPair(completeness, completenessAssessment) {
266
+ if (completenessAssessment == null) {
267
+ return { completeness, completenessAssessment: void 0 };
268
+ }
269
+ const rawScore = completenessAssessment.score;
270
+ const scoreInRange = typeof rawScore === "number" && Number.isFinite(rawScore) && rawScore >= 0 && rawScore <= 100;
271
+ if (!scoreInRange || completenessAssessment.ok === false) {
272
+ if (completenessAssessment.scorerId === COMPETITION_HANDLE_PERSISTENCE_COMPOSITE_COMPLETENESS_SCORER_ID && completenessAssessment.score === 0 && completenessAssessment.ok === false) {
273
+ return {
274
+ completeness: 0,
275
+ completenessAssessment
276
+ };
277
+ }
278
+ const normalized = failClosedUnderPersistenceComposite(completenessAssessment);
279
+ return {
280
+ completeness: normalized.score,
281
+ completenessAssessment: normalized
282
+ };
283
+ }
284
+ return {
285
+ completeness: rawScore,
286
+ completenessAssessment
287
+ };
288
+ }
289
+ function extractErrorDetails(error) {
290
+ if (!error || typeof error !== "object" && !(error instanceof Error)) return void 0;
291
+ return sanitizeDiagnosticValue(error);
292
+ }
293
+ function getEventsPath(taskId) {
294
+ const safeTaskId = assertSafePathComponent(taskId, "evaluationId");
295
+ return path.join(getBaseDir(), `${safeTaskId}.events.jsonl`);
296
+ }
297
+ function sanitizeCompetitionEventData(data) {
298
+ const sanitized = sanitizeDiagnosticValue(data);
299
+ if (data.completenessAssessment != null && typeof data.completenessAssessment === "object") {
300
+ const pair = normalizePersistedCompletenessPair(
301
+ typeof data.completeness === "number" ? data.completeness : void 0,
302
+ data.completenessAssessment
303
+ );
304
+ sanitized.completeness = typeof pair.completeness === "number" && Number.isFinite(pair.completeness) ? pair.completeness : 0;
305
+ if (pair.completenessAssessment != null) {
306
+ sanitized.completenessAssessment = sanitizeDiagnosticValue(pair.completenessAssessment);
307
+ }
308
+ return sanitized;
309
+ }
310
+ if (typeof data.completeness === "number" && Number.isFinite(data.completeness)) {
311
+ sanitized.completeness = data.completeness;
312
+ }
313
+ return sanitized;
314
+ }
315
+ function appendCompetitionEvent(taskId, event, data = {}) {
316
+ try {
317
+ const eventsPath = getEventsPath(taskId);
318
+ fs.mkdirSync(path.dirname(eventsPath), { recursive: true });
319
+ const record = {
320
+ ts: (/* @__PURE__ */ new Date()).toISOString(),
321
+ seq: nextSeq(taskId, eventsPath),
322
+ taskId,
323
+ event,
324
+ data: sanitizeCompetitionEventData(data)
325
+ };
326
+ fs.appendFileSync(eventsPath, `${JSON.stringify(record)}
327
+ `, "utf8");
328
+ } catch (err) {
329
+ const msg = err instanceof Error ? err.message : String(err);
330
+ console.debug(`[CompetitionHandle] event append failed for ${taskId}: ${msg}`);
331
+ }
332
+ }
333
+ function getBuildDir() {
334
+ return getExecutionContext().buildDir ?? path.join(resolveBuildRoot(process.cwd()), ".build-project");
335
+ }
336
+ function getBaseDir() {
337
+ const buildDir = getBuildDir();
338
+ const stateDir = LabPathResolver.getInstance().getStateDir(buildDir);
339
+ return path.join(stateDir, "competitions");
340
+ }
341
+ function getHandlePath(taskId) {
342
+ const safeTaskId = assertSafePathComponent(taskId, "evaluationId");
343
+ return path.join(getBaseDir(), `${safeTaskId}.json`);
344
+ }
345
+ var LOCK_RETRY_DELAY_MS = 25;
346
+ var LOCK_IDENTITY_CHECK_AFTER_MS = 1e3;
347
+ function sleepSync(ms) {
348
+ if (ms <= 0) return;
349
+ Atomics.wait(new Int32Array(new SharedArrayBuffer(4)), 0, 0, ms);
350
+ }
351
+ function sleep(ms) {
352
+ return new Promise((resolve) => {
353
+ setTimeout(resolve, ms);
354
+ });
355
+ }
356
+ function parseLockOwner(raw) {
357
+ const text = raw.trim();
358
+ if (!text) return void 0;
359
+ if (/^\d+$/.test(text)) {
360
+ return { pid: Number.parseInt(text, 10) };
361
+ }
362
+ try {
363
+ const parsed = JSON.parse(text);
364
+ return {
365
+ pid: typeof parsed.pid === "number" && Number.isFinite(parsed.pid) ? parsed.pid : void 0,
366
+ token: typeof parsed.token === "string" ? parsed.token : void 0,
367
+ identity: typeof parsed.identity === "string" ? parsed.identity : void 0
368
+ };
369
+ } catch {
370
+ return void 0;
371
+ }
372
+ }
373
+ function reclaimStaleLock(lockPath, expectedRaw) {
374
+ const reclaimPath = `${lockPath}.reclaim.${process.pid}.${randomUUID()}`;
375
+ try {
376
+ fs.renameSync(lockPath, reclaimPath);
377
+ } catch {
378
+ return;
379
+ }
380
+ try {
381
+ if (fs.readFileSync(reclaimPath, "utf8") !== expectedRaw) {
382
+ try {
383
+ fs.linkSync(reclaimPath, lockPath);
384
+ } catch {
385
+ }
386
+ }
387
+ } catch {
388
+ }
389
+ try {
390
+ fs.unlinkSync(reclaimPath);
391
+ } catch {
392
+ }
393
+ }
394
+ function tryAcquireLockOnce(lockPath, payload, staleMs, deadline) {
395
+ try {
396
+ fs.writeFileSync(lockPath, payload, { flag: "wx" });
397
+ return "acquired";
398
+ } catch (err) {
399
+ if (err.code !== "EEXIST") throw err;
400
+ try {
401
+ const stat = fs.statSync(lockPath);
402
+ const raw = fs.readFileSync(lockPath, "utf8");
403
+ const owner = parseLockOwner(raw);
404
+ const ownerAlive = owner?.pid ? Date.now() - stat.mtimeMs < LOCK_IDENTITY_CHECK_AFTER_MS ? processIsAlive(owner.pid) : lockOwnerIsAlive(owner.pid, owner.identity) : true;
405
+ const staleWithoutKnownOwner = !owner?.pid && Date.now() - stat.mtimeMs > staleMs;
406
+ if (!ownerAlive || staleWithoutKnownOwner) {
407
+ reclaimStaleLock(lockPath, raw);
408
+ return "retry";
409
+ }
410
+ } catch {
411
+ }
412
+ if (Date.now() >= deadline) {
413
+ return "timeout";
414
+ }
415
+ return "wait";
416
+ }
417
+ }
418
+ function buildLockToken() {
419
+ const token = `${process.pid}:${randomUUID()}`;
420
+ const identity = readProcessIdentity(process.pid);
421
+ return { token, payload: JSON.stringify({ pid: process.pid, token, identity }) };
422
+ }
423
+ async function acquireLock(lockPath, staleMs = 3e4, timeoutMs = 5e3) {
424
+ const deadline = Date.now() + timeoutMs;
425
+ fs.mkdirSync(path.dirname(lockPath), { recursive: true });
426
+ const { token, payload } = buildLockToken();
427
+ while (true) {
428
+ const attempt = tryAcquireLockOnce(lockPath, payload, staleMs, deadline);
429
+ if (attempt === "acquired") return token;
430
+ if (attempt === "timeout") return void 0;
431
+ if (attempt === "wait") {
432
+ await sleep(LOCK_RETRY_DELAY_MS);
433
+ }
434
+ }
435
+ }
436
+ function acquireLockSync(lockPath, staleMs = 3e4, timeoutMs = 5e3) {
437
+ const deadline = Date.now() + timeoutMs;
438
+ fs.mkdirSync(path.dirname(lockPath), { recursive: true });
439
+ const { token, payload } = buildLockToken();
440
+ while (true) {
441
+ const attempt = tryAcquireLockOnce(lockPath, payload, staleMs, deadline);
442
+ if (attempt === "acquired") return token;
443
+ if (attempt === "timeout") return void 0;
444
+ if (attempt === "wait") {
445
+ sleepSync(LOCK_RETRY_DELAY_MS);
446
+ }
447
+ }
448
+ }
449
+ function releaseLock(lockPath, token) {
450
+ try {
451
+ const owner = parseLockOwner(fs.readFileSync(lockPath, "utf8"));
452
+ if (owner?.token !== token) {
453
+ return;
454
+ }
455
+ fs.unlinkSync(lockPath);
456
+ } catch {
457
+ }
458
+ }
459
+ async function initEvaluationHandleAsync(evaluationId, prompt, candidates, deliverableContract, runMetadata) {
460
+ const p = getHandlePath(evaluationId);
461
+ const lockPath = `${p}.lock`;
462
+ const lockToken = await acquireLock(lockPath);
463
+ if (!lockToken) {
464
+ throw new Error(`Timed out waiting for init lock on ${evaluationId}`);
465
+ }
466
+ try {
467
+ initEvaluationHandleLocked(
468
+ evaluationId,
469
+ prompt,
470
+ candidates,
471
+ deliverableContract,
472
+ runMetadata,
473
+ p
474
+ );
475
+ } finally {
476
+ releaseLock(lockPath, lockToken);
477
+ }
478
+ }
479
+ function initEvaluationHandleLocked(evaluationId, prompt, candidates, deliverableContract, runMetadata, handlePath) {
480
+ const now = (/* @__PURE__ */ new Date()).toISOString();
481
+ const safePrompt = sanitizeHandlePrompt(prompt);
482
+ const labContext = LabPathResolver.getInstance().getContext();
483
+ const initialCandidates = candidates.map((c) => ({
484
+ provider: c.provider,
485
+ requestedProvider: c.requestedProvider,
486
+ executionMode: c.executionMode,
487
+ model: c.model,
488
+ requestedModel: c.requestedModel,
489
+ failoverFromProvider: c.failoverFromProvider,
490
+ failoverReason: c.failoverReason,
491
+ workspaceMode: c.workspaceMode,
492
+ ...c.workspaceModeRequested !== void 0 ? { workspaceModeRequested: c.workspaceModeRequested } : {},
493
+ variant: formatVariantIdentifier(c),
494
+ reasoningEffort: c.modelReasoningEffort,
495
+ cursorPromptProfile: c.cursorPromptProfile,
496
+ variantInstanceId: c.variantInstanceId
497
+ }));
498
+ const handle = {
499
+ taskId: evaluationId,
500
+ evaluationId,
501
+ prompt: safePrompt,
502
+ initiatedBy: resolveInitiatedBy(),
503
+ createdAt: now,
504
+ updatedAt: now,
505
+ status: "running",
506
+ checkoutRoot: resolveCheckoutRoot(getBuildDir()),
507
+ ...labContext ? { labId: labContext.labId, labRunId: labContext.runId } : {},
508
+ // Initialize candidate entries without results (populated during execution)
509
+ candidates: initialCandidates,
510
+ variants: initialCandidates,
511
+ // Store contract for downstream access (judges, gates, telemetry)
512
+ deliverableContract,
513
+ ...runMetadata ? { runMetadata } : {}
514
+ };
515
+ atomicWriteTextSync(handlePath, JSON.stringify(handle, null, 2));
516
+ appendCompetitionEvent(evaluationId, "competition.started", {
517
+ prompt: safePrompt,
518
+ candidateCount: initialCandidates.length,
519
+ candidates: initialCandidates.map((c) => ({
520
+ provider: c.provider,
521
+ executionMode: c.executionMode,
522
+ variant: c.variant
523
+ }))
524
+ });
525
+ }
526
+ function warnHandleFailure(action, evaluationId, error) {
527
+ const msg = error instanceof Error ? error.message : String(error);
528
+ console.warn(`[CompetitionHandle] Failed to ${action} for ${evaluationId}: ${msg}`);
529
+ }
530
+ function updateEvaluationHandleWithResult(evaluationId, result) {
531
+ try {
532
+ const p = getHandlePath(evaluationId);
533
+ const lockPath = `${p}.lock`;
534
+ const lockToken = acquireLockSync(lockPath);
535
+ if (!lockToken) {
536
+ throw new Error(`Timed out waiting for update lock on ${evaluationId}`);
537
+ }
538
+ try {
539
+ updateEvaluationHandleWithResultLocked(evaluationId, result, p);
540
+ } finally {
541
+ releaseLock(lockPath, lockToken);
542
+ }
543
+ } catch (error) {
544
+ warnHandleFailure("update handle", evaluationId, error);
545
+ }
546
+ }
547
+ async function updateEvaluationHandleWithResultAsync(evaluationId, result) {
548
+ try {
549
+ const p = getHandlePath(evaluationId);
550
+ const lockPath = `${p}.lock`;
551
+ const lockToken = await acquireLock(lockPath);
552
+ if (!lockToken) {
553
+ throw new Error(`Timed out waiting for update lock on ${evaluationId}`);
554
+ }
555
+ try {
556
+ updateEvaluationHandleWithResultLocked(evaluationId, result, p);
557
+ } finally {
558
+ releaseLock(lockPath, lockToken);
559
+ }
560
+ } catch (error) {
561
+ warnHandleFailure("update handle", evaluationId, error);
562
+ }
563
+ }
564
+ function updateEvaluationHandleWithResultLocked(evaluationId, result, p) {
565
+ const raw = fs.existsSync(p) ? fs.readFileSync(p, "utf8") : "";
566
+ const now = (/* @__PURE__ */ new Date()).toISOString();
567
+ let handle;
568
+ if (raw) {
569
+ const parsed = parseJsonWithContext(raw, `Competition handle (${evaluationId})`);
570
+ if (parsed.status === "completed" || parsed.status === "failed") {
571
+ return;
572
+ }
573
+ handle = {
574
+ taskId: parsed.evaluationId || parsed.taskId || evaluationId,
575
+ evaluationId: parsed.evaluationId || parsed.taskId || evaluationId,
576
+ prompt: sanitizeHandlePrompt(parsed.prompt),
577
+ initiatedBy: parsed.initiatedBy,
578
+ checkoutRoot: parsed.checkoutRoot,
579
+ createdAt: parsed.createdAt || now,
580
+ updatedAt: parsed.updatedAt || now,
581
+ status: parsed.status,
582
+ outcome: parsed.outcome,
583
+ completedAt: parsed.completedAt,
584
+ errorMessage: parsed.errorMessage,
585
+ winner: parsed.winner,
586
+ candidates: parsed.candidates || parsed.variants || [],
587
+ variants: parsed.variants || parsed.candidates || [],
588
+ labId: parsed.labId,
589
+ labRunId: parsed.labRunId,
590
+ runMetadata: parsed.runMetadata,
591
+ deliverableContract: parsed.deliverableContract,
592
+ synthesis: parsed.synthesis,
593
+ application: parsed.application,
594
+ delivery: parseCompetitionDeliveryRecord(parsed.delivery),
595
+ verification: parsed.verification ?? parsed.winnerVerification
596
+ };
597
+ } else {
598
+ handle = {
599
+ taskId: evaluationId,
600
+ evaluationId,
601
+ createdAt: now,
602
+ updatedAt: now,
603
+ candidates: [],
604
+ variants: []
605
+ };
606
+ }
607
+ const resultWorkspaceMode = result.workspaceMode;
608
+ const resultWorkspaceModeRequestedRaw = result.workspaceModeRequested;
609
+ const resultWorkspaceModeIdentity = resultWorkspaceModeRequestedRaw ?? resultWorkspaceMode;
610
+ const parsedResultVariant = parseVariantIdentifier(String(result.variant ?? ""));
611
+ const resultReasoningEffort = parsedResultVariant.reasoningEffort ?? result.reasoningEffort;
612
+ const resultCursorPromptProfile = parsedResultVariant.cursorPromptProfile ?? result.cursorPromptProfile;
613
+ const resultTransport = parsedResultVariant.transport;
614
+ const resultVariantInstanceId = result.variantInstanceId;
615
+ const strictIdx = handle.candidates.findIndex(
616
+ (c) => c.provider === result.provider && c.executionMode === result.executionMode && strictIdentityFieldMatches(c.model, result.model) && strictIdentityFieldMatches(
617
+ c.workspaceModeRequested ?? c.workspaceMode,
618
+ resultWorkspaceModeIdentity
619
+ ) && strictIdentityFieldMatches(c.reasoningEffort, resultReasoningEffort) && strictIdentityFieldMatches(c.cursorPromptProfile, resultCursorPromptProfile) && strictIdentityFieldMatches(
620
+ parseVariantIdentifier(String(c.variant ?? "")).transport,
621
+ resultTransport
622
+ ) && strictIdentityFieldMatches(c.variantInstanceId, resultVariantInstanceId)
623
+ );
624
+ const idx = strictIdx >= 0 ? strictIdx : handle.candidates.findIndex(
625
+ (c) => c.provider === result.provider && c.executionMode === result.executionMode && strictIdentityFieldMatches(c.model, result.model) && lateBoundIdentityFieldMatches(
626
+ c.workspaceModeRequested ?? c.workspaceMode,
627
+ resultWorkspaceModeIdentity
628
+ ) && lateBoundIdentityFieldMatches(c.reasoningEffort, resultReasoningEffort) && lateBoundIdentityFieldMatches(c.cursorPromptProfile, resultCursorPromptProfile) && strictIdentityFieldMatches(
629
+ parseVariantIdentifier(String(c.variant ?? "")).transport,
630
+ resultTransport
631
+ ) && strictIdentityFieldMatches(c.variantInstanceId, resultVariantInstanceId)
632
+ );
633
+ const existingCandidate = idx >= 0 ? handle.candidates[idx] : void 0;
634
+ const resultWorkspaceModeRequested = resultWorkspaceModeRequestedRaw ?? existingCandidate?.workspaceModeRequested;
635
+ const resultPromptFingerprint = result.promptFingerprint ?? existingCandidate?.promptFingerprint;
636
+ const resultFinalPromptLength = result.finalPromptLength ?? existingCandidate?.finalPromptLength;
637
+ const resultVariant = typeof result.variant === "string" && result.variant.length > 0 ? formatVariantIdentifierFromResult(result) : existingCandidate?.variant;
638
+ const resultForOutcomeDerivation = result.isSynthesis === true ? { ...result, variant: resultVariant ?? result.variant } : (() => {
639
+ const { outcome: _staleOutcome, ...withoutOutcome } = result;
640
+ return { ...withoutOutcome, variant: resultVariant ?? result.variant };
641
+ })();
642
+ const derivedOutcome = result.isSynthesis === true && result.outcome ? result.outcome : deriveVariantOutcome(resultForOutcomeDerivation);
643
+ const { verification: outcomeVerification, delivery: outcomeDelivery } = derivedOutcome;
644
+ const resultHasChanges = result.hasChanges ?? outcomeDelivery.hasChanges ?? (typeof result.filesChanged === "number" ? result.filesChanged > 0 : void 0);
645
+ const { completeness: persistedCompleteness, completenessAssessment: persistedAssessment } = normalizePersistedCompletenessPair(result.completeness, result.completenessAssessment);
646
+ const patch = {
647
+ provider: result.provider,
648
+ requestedProvider: result.requestedProvider ?? existingCandidate?.requestedProvider,
649
+ executionMode: result.executionMode,
650
+ model: result.model,
651
+ requestedModel: result.requestedModel ?? existingCandidate?.requestedModel,
652
+ failoverFromProvider: result.failoverFromProvider ?? existingCandidate?.failoverFromProvider,
653
+ failoverReason: result.failoverReason ?? existingCandidate?.failoverReason,
654
+ workspaceMode: resultWorkspaceMode,
655
+ ...resultWorkspaceModeRequested !== void 0 ? { workspaceModeRequested: resultWorkspaceModeRequested } : {},
656
+ ...resultVariant !== void 0 ? { variant: resultVariant } : {},
657
+ ...resultPromptFingerprint !== void 0 ? { promptFingerprint: resultPromptFingerprint } : {},
658
+ ...resultFinalPromptLength !== void 0 ? { finalPromptLength: resultFinalPromptLength } : {},
659
+ reasoningEffort: resultReasoningEffort ?? existingCandidate?.reasoningEffort,
660
+ cursorPromptProfile: resultCursorPromptProfile ?? existingCandidate?.cursorPromptProfile,
661
+ variantInstanceId: resultVariantInstanceId ?? existingCandidate?.variantInstanceId,
662
+ resolvedModel: result.resolvedModel,
663
+ modelResolutionSource: result.modelResolutionSource,
664
+ providerCliVersion: normalizeProviderCliVersion(result.providerCliVersion),
665
+ submittedOnly: result.submittedOnly === true,
666
+ prNumber: result.prNumber,
667
+ prUrl: result.prUrl,
668
+ cloudTaskId: result.cloudTaskId,
669
+ success: result.success,
670
+ outcome: derivedOutcome,
671
+ retainedWorktreePath: result.retainedWorktreePath,
672
+ artifactPath: result.artifactPath,
673
+ completeness: persistedCompleteness,
674
+ completenessAssessment: persistedAssessment,
675
+ duration: result.duration,
676
+ errorMessage: sanitizeHandleErrorMessage(result.error?.message),
677
+ errorDetails: extractErrorDetails(result.error),
678
+ providerDiagnostics: result.providerDiagnostics ? sanitizeDiagnosticValue(
679
+ result.providerDiagnostics
680
+ ) : void 0,
681
+ authError: result.authError ? sanitizeDiagnosticValue(result.authError) : void 0,
682
+ timedOut: result.timedOut === true,
683
+ terminationReason: result.terminationReason,
684
+ inputSpecWarning: result.inputSpecWarning,
685
+ cursorMetadata: result.cursorMetadata,
686
+ contextInjection: result.contextInjection,
687
+ testsExecuted: redactPersistedTestsExecuted(result.testsExecuted),
688
+ buildStatus: result.buildStatus ?? outcomeVerification.buildStatus,
689
+ lintStatus: result.lintStatus ?? outcomeVerification.lintStatus,
690
+ // Candidate testStatus/filesChanged stay direct copies for legacy state readers.
691
+ testStatus: result.testStatus,
692
+ testMetrics: result.testMetrics,
693
+ judgeScore: result.judgeScore,
694
+ judgeEvaluation: result.judgeEvaluation,
695
+ artifactManifest: result.artifactManifest,
696
+ acceptedWorkspaceTreeSha: result.acceptedWorkspaceTreeSha,
697
+ gitMetrics: result.gitMetrics,
698
+ worktreeSummary: result.worktreeSummary,
699
+ ignoredPathEvidence: result.ignoredPathEvidence,
700
+ filesChanged: result.filesChanged,
701
+ hasChanges: resultHasChanges,
702
+ linesAdded: result.linesAdded,
703
+ linesRemoved: result.linesRemoved
704
+ };
705
+ patch.alsoFailingOnBase = failedGatesAlsoFailingOnBase(result.baselineComparison, patch);
706
+ if (idx >= 0) {
707
+ handle.candidates[idx] = { ...handle.candidates[idx], ...patch };
708
+ } else {
709
+ handle.candidates.push(patch);
710
+ }
711
+ handle.variants = handle.candidates;
712
+ handle.updatedAt = now;
713
+ atomicWriteTextSync(p, JSON.stringify(handle, null, 2));
714
+ const variantEventKind = result.success === true ? "variant.completed" : result.success === false || result.error ? "variant.failed" : "variant.completed";
715
+ appendCompetitionEvent(evaluationId, variantEventKind, {
716
+ provider: result.provider,
717
+ executionMode: result.executionMode,
718
+ model: result.model,
719
+ variant: resultVariant,
720
+ success: result.success,
721
+ completeness: persistedCompleteness,
722
+ completenessAssessment: persistedAssessment,
723
+ duration: result.duration,
724
+ timedOut: result.timedOut,
725
+ errorMessage: sanitizeHandleErrorMessage(result.error?.message),
726
+ errorDetails: extractErrorDetails(result.error),
727
+ providerDiagnostics: patch.providerDiagnostics,
728
+ authError: result.authError ? sanitizeDiagnosticValue(result.authError) : void 0,
729
+ terminationReason: result.terminationReason
730
+ });
731
+ }
732
+ function strictIdentityFieldMatches(existing, incoming) {
733
+ return existing === incoming || existing === void 0 && incoming === void 0;
734
+ }
735
+ function lateBoundIdentityFieldMatches(existing, incoming) {
736
+ return existing === incoming || existing === void 0 || incoming === void 0;
737
+ }
738
+ function candidatesDescribeSameVariant(candidate, other) {
739
+ return candidate.provider === other.provider && candidate.executionMode === other.executionMode && strictIdentityFieldMatches(candidate.model, other.model) && lateBoundIdentityFieldMatches(candidate.workspaceMode, other.workspaceMode) && lateBoundIdentityFieldMatches(candidate.reasoningEffort, other.reasoningEffort) && lateBoundIdentityFieldMatches(candidate.cursorPromptProfile, other.cursorPromptProfile) && strictIdentityFieldMatches(candidate.variantInstanceId, other.variantInstanceId);
740
+ }
741
+ function candidateHasCompletedPeer(candidate, candidates) {
742
+ return candidates.some(
743
+ (other) => other !== candidate && other.success !== void 0 && candidatesDescribeSameVariant(candidate, other)
744
+ );
745
+ }
746
+ function canonicalizeHandleWinner(winner) {
747
+ if (winner == null) return winner;
748
+ const variantSeed = typeof winner.variant === "string" ? winner.variant.trim() : "";
749
+ if (!variantSeed) {
750
+ return winner;
751
+ }
752
+ return {
753
+ ...winner,
754
+ variant: canonicalizeVariantIdentifier({
755
+ variant: variantSeed,
756
+ provider: winner.provider,
757
+ model: winner.model,
758
+ resolvedModel: winner.resolvedModel,
759
+ executionMode: winner.executionMode
760
+ })
761
+ };
762
+ }
763
+ function toEvaluationHandleWinnerMetadata(winner) {
764
+ if (winner === void 0) return void 0;
765
+ if (!winner) return null;
766
+ const winnerForOutcomeDerivation = winner.isSynthesis === true ? winner : (() => {
767
+ const { outcome: _staleOutcome, ...withoutOutcome } = winner;
768
+ return withoutOutcome;
769
+ })();
770
+ const outcome = winner.isSynthesis === true && winner.outcome ? winner.outcome : deriveVariantOutcome(winnerForOutcomeDerivation);
771
+ return {
772
+ provider: winner.provider,
773
+ model: winner.model,
774
+ resolvedModel: winner.resolvedModel,
775
+ modelResolutionSource: winner.modelResolutionSource,
776
+ executionMode: winner.executionMode,
777
+ variant: winner.variant,
778
+ variantInstanceId: winner.variantInstanceId,
779
+ winnerSelectionSource: winner.winnerSelectionSource,
780
+ winnerSelectionReason: winner.winnerSelectionReason,
781
+ buildStatus: winner.buildStatus ?? outcome.verification.buildStatus,
782
+ lintStatus: winner.lintStatus ?? outcome.verification.lintStatus,
783
+ // Explicit unsuccessful testStatus ('failed'/'error'/'timeout'/any
784
+ // non-neutral spelling — the field permits arbitrary strings the
785
+ // derivation logic cannot represent) is authoritative, EXCEPT when a
786
+ // trusted passing repair superseded it: the repair path intentionally
787
+ // preserves the original provider testStatus while deriveVariantOutcome
788
+ // recognizes the passing repair, so letting the stale explicit failure
789
+ // win there would persist a false failure on the handle. Synthesis
790
+ // winners have no repair path, so their explicit status always wins over
791
+ // the provider-supplied nested outcome (the failure-masking fix);
792
+ // the later tightening (derived beats a stale top-level 'passed')
793
+ // is preserved because only unsuccessful explicit statuses take
794
+ // precedence.
795
+ testStatus: (() => {
796
+ const explicitUnsuccessful = winner.testStatus !== void 0 && winner.testStatus !== "passed" && winner.testStatus !== "not_run" && winner.testStatus !== "skipped";
797
+ const supersededByPassingRepair = winner.isSynthesis !== true && repairOutcomeCanSupersedeRawTouchedFailure(winner);
798
+ return explicitUnsuccessful && !supersededByPassingRepair ? winner.testStatus : outcome.verification.testStatus;
799
+ })(),
800
+ testMetrics: winner.testMetrics,
801
+ testsExecuted: redactPersistedTestsExecuted(winner.testsExecuted),
802
+ filesChanged: winner.filesChanged ?? winner.gitMetrics?.filesChanged ?? winner.worktreeSummary?.filesChanged,
803
+ hasChanges: winner.hasChanges ?? outcome.delivery.hasChanges ?? (typeof winner.filesChanged === "number" ? winner.filesChanged > 0 : void 0)
804
+ };
805
+ }
806
+ function normalizeTerminalHandleErrorMessage(outcome, errorMessage) {
807
+ const sanitized = sanitizeHandleErrorMessage(errorMessage)?.trim();
808
+ return sanitized || `Competition ended with ${outcome}`;
809
+ }
810
+ function createEvaluationHandleFinalState(input) {
811
+ if (input.outcome === "winner_selected") {
812
+ if (!input.winner) {
813
+ throw new TypeError("winner_selected terminal state requires a winner");
814
+ }
815
+ return { ...input, status: "completed", outcome: "winner_selected", winner: input.winner };
816
+ }
817
+ if (input.outcome === "no_winner") {
818
+ return { ...input, status: "completed", outcome: "no_winner", winner: null };
819
+ }
820
+ if (input.outcome === "all_failed") {
821
+ return { ...input, status: "failed", outcome: "all_failed", winner: null };
822
+ }
823
+ if (input.outcome === "timed_out" || input.outcome === "error") {
824
+ return {
825
+ ...input,
826
+ status: "failed",
827
+ outcome: input.outcome,
828
+ winner: null,
829
+ errorMessage: normalizeTerminalHandleErrorMessage(input.outcome, input.errorMessage)
830
+ };
831
+ }
832
+ throw new TypeError(`Unsupported evaluation-handle terminal outcome: ${String(input.outcome)}`);
833
+ }
834
+ function isValidEvaluationHandleFinalState(state) {
835
+ if (state.status === "completed") {
836
+ return state.outcome === "winner_selected" && state.winner != null || state.outcome === "no_winner" && state.winner === null;
837
+ }
838
+ if (state.outcome === "all_failed") {
839
+ return state.winner === null;
840
+ }
841
+ return (state.outcome === "timed_out" || state.outcome === "error") && state.winner === null && typeof state.errorMessage === "string" && state.errorMessage.trim().length > 0;
842
+ }
843
+ function isDurableHandleCompletion(result, requested = "completed") {
844
+ return result.kind === "finalized" && result.status === requested || result.kind === "already_terminal" && result.status === requested;
845
+ }
846
+ var EvaluationHandleDurabilityError = class extends Error {
847
+ deliveredResult;
848
+ finalizationResult;
849
+ constructor(deliveredResult, finalizationResult) {
850
+ super(
851
+ `Required evaluation handle did not reach durable completed state (kind=${finalizationResult.kind})`
852
+ );
853
+ this.name = "EvaluationHandleDurabilityError";
854
+ this.deliveredResult = deliveredResult;
855
+ this.finalizationResult = finalizationResult;
856
+ }
857
+ };
858
+ async function deliverBeforeRequiredHandleDurabilityCheck(deliver, finalizationResult, options) {
859
+ const deliveredResult = await deliver();
860
+ if (options.required && !isDurableHandleCompletion(finalizationResult, options.requested ?? "completed")) {
861
+ throw new EvaluationHandleDurabilityError(deliveredResult, finalizationResult);
862
+ }
863
+ return deliveredResult;
864
+ }
865
+ function classifyFinalizePersistenceError(error) {
866
+ const message = error instanceof Error ? error.message : String(error);
867
+ if (/timed out waiting for finalize lock/i.test(message)) {
868
+ return { error: message, cause: "lock_timeout" };
869
+ }
870
+ if (error instanceof SyntaxError || /JSON|parse/i.test(message) || error instanceof Error && error.name === "SyntaxError") {
871
+ return { error: message, cause: "parse" };
872
+ }
873
+ if (typeof error === "object" && error !== null && "code" in error && typeof error.code === "string" && String(error.code).startsWith("ERR_") === false && /E[A-Z]+/.test(String(error.code))) {
874
+ return { error: message, cause: "io" };
875
+ }
876
+ return { error: message, cause: "unknown" };
877
+ }
878
+ function finalizeEvaluationHandle(evaluationId, finalState) {
879
+ try {
880
+ if (!isValidEvaluationHandleFinalState(finalState)) {
881
+ throw new TypeError(
882
+ `Invalid evaluation-handle terminal pair: ${finalState.status}/${finalState.outcome}`
883
+ );
884
+ }
885
+ const p = getHandlePath(evaluationId);
886
+ if (!fs.existsSync(p)) {
887
+ return { kind: "absent" };
888
+ }
889
+ const lockPath = `${p}.lock`;
890
+ const lockToken = acquireLockSync(lockPath);
891
+ if (!lockToken) {
892
+ throw new Error(`Timed out waiting for finalize lock on ${evaluationId}`);
893
+ }
894
+ try {
895
+ return finalizeEvaluationHandleLocked(evaluationId, finalState, p);
896
+ } finally {
897
+ releaseLock(lockPath, lockToken);
898
+ }
899
+ } catch (error) {
900
+ warnHandleFailure("finalize handle", evaluationId, error);
901
+ const classified = classifyFinalizePersistenceError(error);
902
+ return {
903
+ kind: "persistence_failed",
904
+ error: classified.error,
905
+ cause: classified.cause
906
+ };
907
+ }
908
+ }
909
+ async function finalizeEvaluationHandleAsync(evaluationId, finalState) {
910
+ try {
911
+ if (!isValidEvaluationHandleFinalState(finalState)) {
912
+ throw new TypeError(
913
+ `Invalid evaluation-handle terminal pair: ${finalState.status}/${finalState.outcome}`
914
+ );
915
+ }
916
+ const p = getHandlePath(evaluationId);
917
+ if (!fs.existsSync(p)) {
918
+ return { kind: "absent" };
919
+ }
920
+ const lockPath = `${p}.lock`;
921
+ const lockToken = await acquireLock(lockPath);
922
+ if (!lockToken) {
923
+ throw new Error(`Timed out waiting for finalize lock on ${evaluationId}`);
924
+ }
925
+ try {
926
+ return finalizeEvaluationHandleLocked(evaluationId, finalState, p);
927
+ } finally {
928
+ releaseLock(lockPath, lockToken);
929
+ }
930
+ } catch (error) {
931
+ warnHandleFailure("finalize handle", evaluationId, error);
932
+ const classified = classifyFinalizePersistenceError(error);
933
+ return {
934
+ kind: "persistence_failed",
935
+ error: classified.error,
936
+ cause: classified.cause
937
+ };
938
+ }
939
+ }
940
+ function finalizeEvaluationHandleLocked(evaluationId, finalState, p) {
941
+ const raw = fs.readFileSync(p, "utf8");
942
+ const parsed = parseJsonWithContext(raw, `Competition handle (${evaluationId})`);
943
+ const parsedStatus = parsed.status;
944
+ const isCompletedReconciliation = parsedStatus === "completed" && finalState.status === "completed";
945
+ if (typeof parsed.status === "string" && TERMINAL_EVALUATION_STATUSES.has(parsedStatus) && !isCompletedReconciliation) {
946
+ return {
947
+ kind: "already_terminal",
948
+ status: parsedStatus,
949
+ requested: finalState.status
950
+ };
951
+ }
952
+ const completedAt = finalState.completedAt ?? (isCompletedReconciliation && typeof parsed.completedAt === "string" ? parsed.completedAt : (/* @__PURE__ */ new Date()).toISOString());
953
+ const candidates = parsed.candidates || parsed.variants || [];
954
+ const hasActiveCandidates = finalState.status === "completed" && candidates.some(
955
+ (candidate) => !candidateHasCompletedPeer(candidate, candidates) && (candidate.submittedOnly === true || candidate.success === void 0 && candidate.timedOut !== true && !candidate.errorMessage)
956
+ );
957
+ const effectiveStatus = hasActiveCandidates ? "running" : finalState.status;
958
+ const effectiveOutcome = hasActiveCandidates ? void 0 : finalState.outcome;
959
+ const effectiveCompletedAt = hasActiveCandidates ? void 0 : completedAt;
960
+ const effectiveErrorMessage = hasActiveCandidates ? void 0 : sanitizeHandleErrorMessage(
961
+ "errorMessage" in finalState ? finalState.errorMessage : void 0
962
+ );
963
+ const parsedWinner = canonicalizeHandleWinner(
964
+ parsed.winner ?? null
965
+ );
966
+ const finalWinner = canonicalizeHandleWinner(finalState.winner);
967
+ const effectiveWinner = finalState.status === "failed" ? null : hasActiveCandidates && finalState.winner === void 0 ? parsed.winner ?? null : isCompletedReconciliation && parsedWinner && finalState.winner !== null ? parsedWinner : finalWinner;
968
+ const resolvedWinner = finalState.status === "failed" ? null : effectiveWinner === void 0 ? parsedWinner : effectiveWinner;
969
+ const resolvedWinnerVerification = finalState.status === "failed" ? null : finalState.winnerVerification === void 0 ? parsed.winnerVerification ?? null : finalState.winnerVerification;
970
+ const handle = {
971
+ taskId: parsed.evaluationId || parsed.taskId || evaluationId,
972
+ evaluationId: parsed.evaluationId || parsed.taskId || evaluationId,
973
+ prompt: sanitizeHandlePrompt(parsed.prompt),
974
+ initiatedBy: parsed.initiatedBy,
975
+ checkoutRoot: parsed.checkoutRoot,
976
+ createdAt: parsed.createdAt || completedAt,
977
+ updatedAt: completedAt,
978
+ status: effectiveStatus,
979
+ outcome: effectiveOutcome,
980
+ completedAt: effectiveCompletedAt,
981
+ errorMessage: effectiveErrorMessage,
982
+ winner: resolvedWinner,
983
+ candidates,
984
+ variants: candidates,
985
+ labId: parsed.labId,
986
+ labRunId: parsed.labRunId,
987
+ runMetadata: finalState.runMetadata ?? parsed.runMetadata,
988
+ deliverableContract: parsed.deliverableContract,
989
+ winnerVerification: resolvedWinnerVerification,
990
+ verification: resolvedWinnerVerification,
991
+ completenessTelemetry: finalState.completenessTelemetry ?? parsed.completenessTelemetry,
992
+ decision: finalState.decision ?? parsed.decision,
993
+ judgeFailures: finalState.judgeFailures ?? parsed.judgeFailures,
994
+ tieBreak: finalState.tieBreak ?? parsed.tieBreak,
995
+ synthesis: parsed.synthesis,
996
+ application: parsed.application,
997
+ // A finalizer with no delivery to record must not erase one an earlier
998
+ // writer already persisted.
999
+ delivery: finalState.delivery ?? parseCompetitionDeliveryRecord(parsed.delivery)
1000
+ };
1001
+ atomicWriteTextSync(p, JSON.stringify(handle, null, 2));
1002
+ if (isCompletedReconciliation) {
1003
+ if (handle.status === "completed" || handle.status === "failed") {
1004
+ return { kind: "finalized", status: handle.status };
1005
+ }
1006
+ return { kind: "not_terminal", status: "running", reason: "active_candidates" };
1007
+ }
1008
+ const finalEventKind = finalState.status === "failed" ? "competition.failed" : "competition.completed";
1009
+ appendCompetitionEvent(evaluationId, finalEventKind, {
1010
+ status: effectiveStatus,
1011
+ outcome: effectiveOutcome,
1012
+ errorMessage: effectiveErrorMessage,
1013
+ winner: resolvedWinner ? {
1014
+ provider: resolvedWinner.provider,
1015
+ variant: resolvedWinner.variant
1016
+ } : null
1017
+ });
1018
+ if (handle.status === "completed" || handle.status === "failed") {
1019
+ return { kind: "finalized", status: handle.status };
1020
+ }
1021
+ return { kind: "not_terminal", status: "running", reason: "active_candidates" };
1022
+ }
1023
+ function updateEvaluationHandleWithSynthesisResult(evaluationId, result) {
1024
+ try {
1025
+ const p = getHandlePath(evaluationId);
1026
+ const lockPath = `${p}.lock`;
1027
+ const lockToken = acquireLockSync(lockPath);
1028
+ if (!lockToken) {
1029
+ throw new Error(`Timed out waiting for synthesis update lock on ${evaluationId}`);
1030
+ }
1031
+ try {
1032
+ updateEvaluationHandleWithSynthesisResultLocked(evaluationId, result, p);
1033
+ } finally {
1034
+ releaseLock(lockPath, lockToken);
1035
+ }
1036
+ } catch (error) {
1037
+ warnHandleFailure("update synthesis metadata", evaluationId, error);
1038
+ }
1039
+ }
1040
+ async function updateEvaluationHandleWithSynthesisResultAsync(evaluationId, result) {
1041
+ try {
1042
+ const p = getHandlePath(evaluationId);
1043
+ const lockPath = `${p}.lock`;
1044
+ const lockToken = await acquireLock(lockPath);
1045
+ if (!lockToken) {
1046
+ throw new Error(`Timed out waiting for synthesis update lock on ${evaluationId}`);
1047
+ }
1048
+ try {
1049
+ updateEvaluationHandleWithSynthesisResultLocked(evaluationId, result, p);
1050
+ } finally {
1051
+ releaseLock(lockPath, lockToken);
1052
+ }
1053
+ } catch (error) {
1054
+ warnHandleFailure("update synthesis metadata", evaluationId, error);
1055
+ }
1056
+ }
1057
+ function updateEvaluationHandleWithSynthesisResultLocked(evaluationId, result, p) {
1058
+ const raw = fs.existsSync(p) ? fs.readFileSync(p, "utf8") : "";
1059
+ const now = (/* @__PURE__ */ new Date()).toISOString();
1060
+ const parsed = raw ? parseJsonWithContext(raw, `Competition handle (${evaluationId})`) : {};
1061
+ const handle = {
1062
+ taskId: parsed.evaluationId || parsed.taskId || evaluationId,
1063
+ evaluationId: parsed.evaluationId || parsed.taskId || evaluationId,
1064
+ prompt: sanitizeHandlePrompt(parsed.prompt),
1065
+ initiatedBy: parsed.initiatedBy,
1066
+ checkoutRoot: parsed.checkoutRoot,
1067
+ createdAt: parsed.createdAt || now,
1068
+ updatedAt: now,
1069
+ status: parsed.status,
1070
+ outcome: parsed.outcome,
1071
+ completedAt: parsed.completedAt,
1072
+ errorMessage: parsed.errorMessage,
1073
+ winner: parsed.winner,
1074
+ candidates: parsed.candidates || parsed.variants || [],
1075
+ variants: parsed.variants || parsed.candidates || [],
1076
+ labId: parsed.labId,
1077
+ labRunId: parsed.labRunId,
1078
+ runMetadata: parsed.runMetadata,
1079
+ deliverableContract: parsed.deliverableContract,
1080
+ winnerVerification: parsed.winnerVerification,
1081
+ verification: parsed.verification ?? parsed.winnerVerification,
1082
+ completenessTelemetry: parsed.completenessTelemetry,
1083
+ application: parsed.application,
1084
+ delivery: parseCompetitionDeliveryRecord(parsed.delivery),
1085
+ synthesis: sanitizeSynthesisArtifactForPersistence({
1086
+ success: result.success,
1087
+ prNumber: result.prNumber,
1088
+ prUrl: result.prUrl,
1089
+ error: result.error,
1090
+ mergedVariants: result.mergedVariants,
1091
+ synthesisIntents: result.synthesisIntents,
1092
+ donorProfiles: result.donorProfiles,
1093
+ donorSelectionDecisions: result.donorSelectionDecisions,
1094
+ intentFilteredHunkCount: result.intentFilteredHunkCount,
1095
+ excludedHunkCount: result.excludedHunkCount,
1096
+ unknownIncludedHunkCount: result.unknownIncludedHunkCount,
1097
+ unknownExcludedHunkCount: result.unknownExcludedHunkCount,
1098
+ intentMaterialSummaries: result.intentMaterialSummaries,
1099
+ overlapRejectedHunkCount: result.overlapRejectedHunkCount,
1100
+ deliverySucceeded: result.deliverySucceeded,
1101
+ synthesisApplied: result.synthesisApplied,
1102
+ winnerFallback: result.winnerFallback,
1103
+ fallbackReason: result.fallbackReason,
1104
+ patchApplyValidated: result.patchApplyValidated,
1105
+ gatesPassed: result.gatesPassed,
1106
+ gateFailureDetails: result.gateFailureDetails,
1107
+ aiGuidedFallbackAttempted: result.aiGuidedFallbackAttempted,
1108
+ aiGuidedFallbackOutcome: result.aiGuidedFallbackOutcome,
1109
+ // Diagnostics that explain WHY a run carried the winner forward
1110
+ // (agent timeout vs invalid response vs corrupt-patch apply vs
1111
+ // deliberate no-pick). Previously only persisted to the richer
1112
+ // .build-project/telemetry/synthesis/<id>.json sidecar, leaving all
1113
+ // fallback reasons indistinguishable in competition state.
1114
+ synthesisOutcomeStatus: result.synthesisOutcomeStatus,
1115
+ synthesisDurationMs: result.synthesisDurationMs,
1116
+ synthesisProvider: result.synthesisProvider,
1117
+ synthesisModel: result.synthesisModel,
1118
+ synthesisReasoningEffort: result.synthesisReasoningEffort,
1119
+ synthesisProviderDurationMs: result.synthesisProviderDurationMs,
1120
+ synthesisGateDurationMs: result.synthesisGateDurationMs,
1121
+ winnerFirstReview: result.winnerFirstReview,
1122
+ harvestManifest: result.harvestManifest,
1123
+ donorMaterialDiagnostic: result.donorMaterialDiagnostic
1124
+ })
1125
+ };
1126
+ atomicWriteTextSync(p, JSON.stringify(handle, null, 2));
1127
+ }
1128
+ function updateEvaluationHandleApplicationProvenance(evaluationId, provenance) {
1129
+ try {
1130
+ const p = getHandlePath(evaluationId);
1131
+ const lockPath = `${p}.lock`;
1132
+ const lockToken = acquireLockSync(lockPath);
1133
+ if (!lockToken) {
1134
+ throw new Error(`Timed out waiting for application update lock on ${evaluationId}`);
1135
+ }
1136
+ try {
1137
+ updateEvaluationHandleApplicationProvenanceLocked(evaluationId, provenance, p);
1138
+ } finally {
1139
+ releaseLock(lockPath, lockToken);
1140
+ }
1141
+ } catch (error) {
1142
+ warnHandleFailure("update application provenance", evaluationId, error);
1143
+ }
1144
+ }
1145
+ function updateEvaluationHandleApplicationProvenanceLocked(evaluationId, provenance, p) {
1146
+ if (!fs.existsSync(p)) {
1147
+ return;
1148
+ }
1149
+ const raw = fs.readFileSync(p, "utf8");
1150
+ const now = (/* @__PURE__ */ new Date()).toISOString();
1151
+ const parsed = parseJsonWithContext(raw, `Competition handle (${evaluationId})`);
1152
+ const candidates = parsed.candidates || parsed.variants || [];
1153
+ const handle = {
1154
+ ...parsed,
1155
+ taskId: parsed.evaluationId || parsed.taskId || evaluationId,
1156
+ evaluationId: parsed.evaluationId || parsed.taskId || evaluationId,
1157
+ prompt: sanitizeHandlePrompt(parsed.prompt),
1158
+ createdAt: parsed.createdAt || now,
1159
+ updatedAt: now,
1160
+ candidates,
1161
+ variants: candidates,
1162
+ application: provenance
1163
+ };
1164
+ atomicWriteTextSync(p, JSON.stringify(handle, null, 2));
1165
+ }
1166
+
1167
+ // src/orchestrator/competition-final-outcome.ts
1168
+ function inferCompetitionFinalOutcome(winner, results) {
1169
+ if (winner) {
1170
+ return "winner_selected";
1171
+ }
1172
+ if (results.some(
1173
+ (result) => (result.outcome ?? deriveVariantOutcome(result)).execution.status === "timed_out"
1174
+ )) {
1175
+ return "timed_out";
1176
+ }
1177
+ return results.some((result) => hasMeaningfulCompetitionProgress(result)) ? "no_winner" : "all_failed";
1178
+ }
1179
+
1180
+ // src/core/providers/invocation/thrown-transport-streams.ts
1181
+ function coerceStreamBytes(value) {
1182
+ if (typeof value === "string") {
1183
+ return value;
1184
+ }
1185
+ if (typeof Buffer !== "undefined" && Buffer.isBuffer(value)) {
1186
+ return value.toString("utf8");
1187
+ }
1188
+ if (value instanceof Uint8Array) {
1189
+ return Buffer.from(value).toString("utf8");
1190
+ }
1191
+ return void 0;
1192
+ }
1193
+ function readMaybeHiddenField(source, key) {
1194
+ const desc = Object.getOwnPropertyDescriptor(source, key);
1195
+ if (desc && "value" in desc) {
1196
+ return desc.value;
1197
+ }
1198
+ return source[key];
1199
+ }
1200
+ function firstStreamField(source, keys) {
1201
+ for (const key of keys) {
1202
+ const coerced = coerceStreamBytes(readMaybeHiddenField(source, key));
1203
+ if (coerced !== void 0) {
1204
+ return coerced;
1205
+ }
1206
+ }
1207
+ return void 0;
1208
+ }
1209
+ function extractThrownTransportStreams(error) {
1210
+ if (error === null || error === void 0 || typeof error !== "object") {
1211
+ return { stdout: "", stderr: "" };
1212
+ }
1213
+ const root = error;
1214
+ const rootRecord = error;
1215
+ const context = rootRecord.context !== null && typeof rootRecord.context === "object" && !Array.isArray(rootRecord.context) ? rootRecord.context : void 0;
1216
+ const stdoutKeys = ["rawStdout", "stdout"];
1217
+ const stderrKeys = ["rawStderr", "stderr"];
1218
+ const stdout = firstStreamField(root, stdoutKeys) ?? (context ? firstStreamField(context, stdoutKeys) : void 0) ?? "";
1219
+ const stderr = firstStreamField(root, stderrKeys) ?? (context ? firstStreamField(context, stderrKeys) : void 0) ?? "";
1220
+ return { stdout, stderr };
1221
+ }
1222
+ function extractThrownExitCode(error) {
1223
+ if (error === null || error === void 0 || typeof error !== "object") {
1224
+ return null;
1225
+ }
1226
+ const exitCode = error.exitCode;
1227
+ if (typeof exitCode === "number" && Number.isFinite(exitCode)) {
1228
+ return exitCode;
1229
+ }
1230
+ const context = error.context;
1231
+ if (context !== null && typeof context === "object" && !Array.isArray(context)) {
1232
+ const nested = context.exitCode;
1233
+ if (typeof nested === "number" && Number.isFinite(nested)) {
1234
+ return nested;
1235
+ }
1236
+ }
1237
+ return null;
1238
+ }
1239
+
1240
+ export {
1241
+ extractThrownTransportStreams,
1242
+ extractThrownExitCode,
1243
+ resolveSynthesisResultStatus,
1244
+ resolveSynthesisDeliveryProjection,
1245
+ markSynthesisResultRejected,
1246
+ withSynthesisDeliveryFields,
1247
+ undeliveredMessageFromResult,
1248
+ formatUndeliveredWorkerLine,
1249
+ undeliveredLineFromTelemetry,
1250
+ undeliveredLineLookup,
1251
+ inferCompetitionFinalOutcome,
1252
+ appendCompetitionEvent,
1253
+ initEvaluationHandleAsync,
1254
+ updateEvaluationHandleWithResult,
1255
+ updateEvaluationHandleWithResultAsync,
1256
+ toEvaluationHandleWinnerMetadata,
1257
+ createEvaluationHandleFinalState,
1258
+ isDurableHandleCompletion,
1259
+ deliverBeforeRequiredHandleDurabilityCheck,
1260
+ finalizeEvaluationHandle,
1261
+ finalizeEvaluationHandleAsync,
1262
+ updateEvaluationHandleWithSynthesisResult,
1263
+ updateEvaluationHandleWithSynthesisResultAsync,
1264
+ updateEvaluationHandleApplicationProvenance
1265
+ };
1266
+ //# sourceMappingURL=chunk-NTD6CSI6.js.map