@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,773 @@
1
+ /**
2
+ * Isolated sprint-composition service (BPAU-03).
3
+ *
4
+ * BPAU-07A owns executable resolution, live RPC registration, and rendering.
5
+ * This module accepts only an injected runner and always sends one fixed argv
6
+ * with a false shell flag: callers cannot supply argv, env, cwd, paths, URLs, or
7
+ * an executable, and no caller-controlled `--json`, `--force`, `--no-sync`,
8
+ * `--dry-run`, `--split`, `--splitter`, `--provider`, `--model`, or `--hint`
9
+ * token can reach the child process.
10
+ *
11
+ * Authority order is fixed for every mutation: the BPAU-00B structured outcome
12
+ * outranks the fresh canonical reread, which outranks the exit code. An exit code
13
+ * is evidence of what Build reported, never evidence of what changed. Nothing is
14
+ * retried (`attempts: 1`). Build's managed sync stays on, so
15
+ * `remoteSyncConfirmedByExitCode` is a literal false.
16
+ */
17
+
18
+ import type { z } from 'zod';
19
+ import { parsePlanningWorkspaceV1 } from './planning-readback.js';
20
+ import type { PlanningWorkspaceProjection } from './planning-service.js';
21
+ import { mapPlanningWorkspace } from './planning-service.js';
22
+ import { repositorySchema } from './repository-schema.js';
23
+ import {
24
+ decideAddSprintWorkEffect,
25
+ decideCreateSprintEffect,
26
+ decideMigrateSprintTaskEffect,
27
+ decideRemoveSprintTaskEffect,
28
+ decideRenameSprintEffect,
29
+ membershipDrifted,
30
+ ProcessLocalSprintCompositionAdmission,
31
+ SPRINT_COMPOSITION_DISCLOSURE,
32
+ SPRINT_COMPOSITION_MAX_OUTPUT_BYTES,
33
+ SPRINT_COMPOSITION_MUTATION_TIMEOUT_MS,
34
+ SPRINT_COMPOSITION_READ_TIMEOUT_MS,
35
+ type SprintCompositionEffectDecision,
36
+ type SprintCompositionInvocationFacts,
37
+ sprintCompositionAdmissionIdentity,
38
+ sprintCompositionArgv,
39
+ sprintCompositionRequestedIdentities,
40
+ sprintCompositionSyncEvidence,
41
+ sprintCompositionSyncWarnings,
42
+ truncateDiagnostics,
43
+ } from './sprint-composition-model.js';
44
+ import {
45
+ parseBacklogIdentity,
46
+ parseSprintAddTaskIdentity,
47
+ parseSprintCompositionJson,
48
+ parseSprintCreateIdentity,
49
+ parseSprintList,
50
+ parseSprintStatus,
51
+ parseTaskDetailEnvelope,
52
+ type SprintMembershipState,
53
+ sprintIntegrityNotes,
54
+ sprintMembershipIds,
55
+ sprintMembershipState,
56
+ } from './sprint-composition-readback.js';
57
+ import {
58
+ type ApplySprintCompositionInput,
59
+ type ApplySprintCompositionOutput,
60
+ applySprintCompositionInputSchema,
61
+ type GetSprintOutput,
62
+ getSprintInputSchema,
63
+ type ListSprintsOutput,
64
+ listSprintsInputSchema,
65
+ SPRINT_COMPOSITION_OUTCOME_VERSION,
66
+ type SprintCompositionEvidence,
67
+ type SprintCompositionIdentityOutcome,
68
+ type SprintCompositionRereads,
69
+ type SprintListEnvelope,
70
+ type SprintStatusEnvelope,
71
+ } from './sprint-composition-schema.js';
72
+ import type { GetTaskDetailOutput } from './task-detail-schema.js';
73
+
74
+ type Repository = z.infer<typeof repositorySchema>;
75
+
76
+ export interface SprintCompositionCommand {
77
+ file: 'build';
78
+ args: readonly string[];
79
+ cwd: string;
80
+ timeoutMs:
81
+ | typeof SPRINT_COMPOSITION_READ_TIMEOUT_MS
82
+ | typeof SPRINT_COMPOSITION_MUTATION_TIMEOUT_MS;
83
+ shell: false;
84
+ }
85
+
86
+ export interface SprintCompositionCommandResult {
87
+ stdout: string;
88
+ stderr: string;
89
+ exitCode: number;
90
+ }
91
+
92
+ export type SprintCompositionRunner = (
93
+ command: SprintCompositionCommand
94
+ ) => Promise<SprintCompositionCommandResult>;
95
+
96
+ /**
97
+ * A request that cannot become an outcome: it names no accepted action, so there
98
+ * is nothing to report an effect phase about. Thrown before any spawn exists.
99
+ */
100
+ export class SprintCompositionRequestError extends Error {
101
+ constructor(message: string) {
102
+ super(message);
103
+ this.name = 'SprintCompositionRequestError';
104
+ }
105
+ }
106
+
107
+ function unavailable<T>(reason: string): SprintCompositionEvidence<T> {
108
+ return { state: 'unavailable', reason };
109
+ }
110
+
111
+ function timedOutError(error: unknown): boolean {
112
+ if (!error || typeof error !== 'object') return false;
113
+ const value = error as { code?: unknown; name?: unknown; timedOut?: unknown };
114
+ return value.timedOut === true || value.code === 'ETIMEDOUT' || value.name === 'TimeoutError';
115
+ }
116
+
117
+ /** Cap captured output per invocation before anything parses or reports it. */
118
+ function capOutput(value: string): string {
119
+ if (Buffer.byteLength(value, 'utf8') <= SPRINT_COMPOSITION_MAX_OUTPUT_BYTES) return value;
120
+ return Buffer.from(value, 'utf8')
121
+ .subarray(0, SPRINT_COMPOSITION_MAX_OUTPUT_BYTES)
122
+ .toString('utf8');
123
+ }
124
+
125
+ function membershipOf(
126
+ sprint: SprintCompositionEvidence<SprintStatusEnvelope>,
127
+ taskId: string
128
+ ): SprintMembershipState | null {
129
+ return sprint.state === 'available' ? sprintMembershipState(sprint.value, taskId) : null;
130
+ }
131
+
132
+ function notesOf(sprint: SprintCompositionEvidence<SprintStatusEnvelope>): string[] {
133
+ return sprint.state === 'available' ? sprintIntegrityNotes(sprint.value) : [];
134
+ }
135
+
136
+ export class SprintCompositionService {
137
+ constructor(
138
+ private readonly run: SprintCompositionRunner,
139
+ private readonly admission = new ProcessLocalSprintCompositionAdmission()
140
+ ) {}
141
+
142
+ /**
143
+ * Read-only multi-sprint enumeration. Current and archived sprint identities
144
+ * come from Build's own list payload; nothing is merged, re-sorted, or
145
+ * recomputed here.
146
+ */
147
+ async listSprints(repositoryValue: unknown, inputValue: unknown): Promise<ListSprintsOutput> {
148
+ const repository = repositorySchema.parse(repositoryValue);
149
+ const input = listSprintsInputSchema.safeParse(inputValue);
150
+ if (!input.success) {
151
+ throw new SprintCompositionRequestError('Invalid sprint list request.');
152
+ }
153
+ const scope = input.data.scope ?? 'all';
154
+ if (!this.identifiesRepository(repository, input.data)) {
155
+ return {
156
+ repository,
157
+ scope,
158
+ sprints: unavailable('The request does not identify the selected repository.'),
159
+ };
160
+ }
161
+ const args = ['plan', 'sprint', 'list'];
162
+ if (scope === 'current') args.push('--current');
163
+ if (scope === 'archived') args.push('--archived');
164
+ args.push('--json');
165
+
166
+ const json = await this.read(repository, args);
167
+ if (json.state !== 'available') return { repository, scope, sprints: json };
168
+ const parsed = parseSprintList(json.value);
169
+ if (parsed.state === 'available' && parsed.value.scope !== scope) {
170
+ return {
171
+ repository,
172
+ scope,
173
+ sprints: unavailable('Build returned a sprint list for a different scope.'),
174
+ };
175
+ }
176
+ return { repository, scope, sprints: parsed };
177
+ }
178
+
179
+ /**
180
+ * Read-only single-sprint projection, always with an explicit sprint id.
181
+ * Membership, capacity, readiness, and integrity are carried verbatim; there is
182
+ * no capacity command here because `sprint capacity` has no `--json` and
183
+ * parsing human output is forbidden.
184
+ */
185
+ async getSprint(repositoryValue: unknown, inputValue: unknown): Promise<GetSprintOutput> {
186
+ const repository = repositorySchema.parse(repositoryValue);
187
+ const input = getSprintInputSchema.safeParse(inputValue);
188
+ if (!input.success) {
189
+ throw new SprintCompositionRequestError('Invalid sprint status request.');
190
+ }
191
+ if (!this.identifiesRepository(repository, input.data)) {
192
+ return {
193
+ repository,
194
+ sprintId: input.data.sprintId,
195
+ sprint: unavailable('The request does not identify the selected repository.'),
196
+ integrityNotes: [],
197
+ };
198
+ }
199
+ const sprint = await this.readSprintStatus(repository, input.data.sprintId);
200
+ return {
201
+ repository,
202
+ sprintId: input.data.sprintId,
203
+ sprint,
204
+ integrityNotes: notesOf(sprint),
205
+ };
206
+ }
207
+
208
+ /**
209
+ * Run one sprint-composition mutation exactly once and report the authoritative
210
+ * outcome. Every terminal path releases process-local admission, including
211
+ * refusal and reread failure.
212
+ */
213
+ async apply(
214
+ repositoryValue: unknown,
215
+ requestValue: unknown
216
+ ): Promise<ApplySprintCompositionOutput> {
217
+ const repository = repositorySchema.parse(repositoryValue);
218
+ const parsedRequest = applySprintCompositionInputSchema.safeParse(requestValue);
219
+ if (!parsedRequest.success) {
220
+ throw new SprintCompositionRequestError(
221
+ 'Invalid sprint composition request: only the closed sprint-composition vocabulary and its declared fields are accepted.'
222
+ );
223
+ }
224
+ const request = parsedRequest.data;
225
+
226
+ const targetRefusal = this.repositoryRefusal(repository, request);
227
+ if (targetRefusal !== null) {
228
+ return this.refusedBeforeLaunch(repository, request, targetRefusal);
229
+ }
230
+
231
+ let release: () => void;
232
+ try {
233
+ release = this.admission.claim({
234
+ repositoryPath: repository.path,
235
+ identity: sprintCompositionAdmissionIdentity(request),
236
+ family: 'sprint-composition',
237
+ });
238
+ } catch (error) {
239
+ return this.refusedBeforeLaunch(
240
+ repository,
241
+ request,
242
+ error instanceof Error ? error.message : String(error)
243
+ );
244
+ }
245
+
246
+ try {
247
+ const admission = await this.admissionEvidence(repository, request);
248
+ if (admission.refusal !== null) {
249
+ return this.refusedBeforeLaunch(repository, request, admission.refusal);
250
+ }
251
+ return await this.launchAndReread(repository, request);
252
+ } finally {
253
+ release();
254
+ }
255
+ }
256
+
257
+ private identifiesRepository(
258
+ repository: Repository,
259
+ input: { projectId: string; sourceId: string }
260
+ ): boolean {
261
+ return input.projectId === repository.projectId && input.sourceId === repository.sourceId;
262
+ }
263
+
264
+ /**
265
+ * Fresh repository identity gate, re-checked immediately before spawn so a
266
+ * moved checkout or switched branch is refused rather than mutated blind.
267
+ * Build remains the authority for whether its command is valid on that branch.
268
+ */
269
+ private repositoryRefusal(
270
+ repository: Repository,
271
+ request: ApplySprintCompositionInput
272
+ ): string | null {
273
+ if (!this.identifiesRepository(repository, request)) {
274
+ return 'The request does not identify the selected repository.';
275
+ }
276
+ if (request.expected.repositoryPath !== repository.path) {
277
+ return 'The selected repository path changed since this request was built, so no command ran.';
278
+ }
279
+ if (request.expected.branch !== repository.branch) {
280
+ return 'The selected branch changed since this request was built, so no command ran.';
281
+ }
282
+ if (repository.state === 'blocked') {
283
+ return 'Build reports the selected repository as blocked, so no command ran.';
284
+ }
285
+ return null;
286
+ }
287
+
288
+ /**
289
+ * Revalidate entity identity against fresh canonical evidence before spawning.
290
+ *
291
+ * For migrate this is the load-bearing admission gate: `migrateToNextSprint`
292
+ * does not enforce non-terminal status and would reset a done task to todo, so
293
+ * BB admits the migration only when a fresh task read shows a live,
294
+ * non-archived task whose status is neither done nor cancelled and whose
295
+ * membership in the declared source sprint is confirmed.
296
+ */
297
+ private async admissionEvidence(
298
+ repository: Repository,
299
+ request: ApplySprintCompositionInput
300
+ ): Promise<{ refusal: string | null }> {
301
+ switch (request.action) {
302
+ case 'createSprint':
303
+ return { refusal: null };
304
+ case 'renameSprint':
305
+ case 'addSprintWorkFromBacklog': {
306
+ const sprint = await this.readSprintStatus(repository, request.input.sprintId);
307
+ if (sprint.state !== 'available') {
308
+ return {
309
+ refusal: `Build could not describe sprint ${request.input.sprintId}, so no command ran: ${sprint.reason}`,
310
+ };
311
+ }
312
+ if (sprint.value.status === 'completed' || sprint.value.archived) {
313
+ return {
314
+ refusal: `Build reports sprint ${request.input.sprintId} as ${sprint.value.archived ? 'archived' : 'completed'} and read-only, so no command ran.`,
315
+ };
316
+ }
317
+ return { refusal: null };
318
+ }
319
+ case 'removeSprintTask': {
320
+ const sprint = await this.readSprintStatus(repository, request.input.sprintId);
321
+ if (sprint.state !== 'available') {
322
+ return {
323
+ refusal: `Build could not describe sprint ${request.input.sprintId}, so no command ran: ${sprint.reason}`,
324
+ };
325
+ }
326
+ if (sprint.value.status === 'completed' || sprint.value.archived) {
327
+ return {
328
+ refusal: `Build reports sprint ${request.input.sprintId} as ${sprint.value.archived ? 'archived' : 'completed'} and read-only, so no command ran.`,
329
+ };
330
+ }
331
+ const membership = sprintMembershipState(sprint.value, request.input.taskId);
332
+ if (membership !== 'present') {
333
+ return {
334
+ refusal:
335
+ membership === 'missing-reference'
336
+ ? `Sprint ${request.input.sprintId} references task ${request.input.taskId} as a task id with no resolvable task file, so no command ran.`
337
+ : `Build does not list task ${request.input.taskId} as a member of sprint ${request.input.sprintId}, so no command ran.`,
338
+ };
339
+ }
340
+ if (
341
+ membershipDrifted(request.expected.observedMembership, sprintMembershipIds(sprint.value))
342
+ ) {
343
+ return {
344
+ refusal: `Sprint ${request.input.sprintId} membership changed since this request was built, so no command ran.`,
345
+ };
346
+ }
347
+ return { refusal: null };
348
+ }
349
+ case 'migrateSprintTask': {
350
+ const [task, source, target] = await Promise.all([
351
+ this.readTaskDetail(repository, request.input.taskId),
352
+ this.readSprintStatus(repository, request.input.sourceSprintId),
353
+ this.readSprintStatus(repository, request.input.targetSprintId),
354
+ ]);
355
+ if (task.task.state !== 'available') {
356
+ return {
357
+ refusal:
358
+ task.task.state === 'missing'
359
+ ? `Build reports no managed task ${request.input.taskId}, so no command ran.`
360
+ : `Build could not describe task ${request.input.taskId}, so no command ran.`,
361
+ };
362
+ }
363
+ const facts = task.task.value;
364
+ if (facts.location === 'archive' || facts.archived !== null) {
365
+ return {
366
+ refusal: `Build reports task ${request.input.taskId} as archived, so no command ran.`,
367
+ };
368
+ }
369
+ if (facts.status === 'done' || facts.status === 'cancelled') {
370
+ return {
371
+ refusal: `Build reports task ${request.input.taskId} as ${facts.status}. Migration would reset it to todo, so no command ran.`,
372
+ };
373
+ }
374
+ if (source.state !== 'available') {
375
+ return {
376
+ refusal: `Build could not describe source sprint ${request.input.sourceSprintId}, so no command ran: ${source.reason}`,
377
+ };
378
+ }
379
+ if (target.state !== 'available') {
380
+ return {
381
+ refusal: `Build could not describe target sprint ${request.input.targetSprintId}, so no command ran: ${target.reason}`,
382
+ };
383
+ }
384
+ if (target.value.status === 'completed' || target.value.archived) {
385
+ return {
386
+ refusal: `Build reports target sprint ${request.input.targetSprintId} as ${target.value.archived ? 'archived' : 'completed'} and read-only, so no command ran.`,
387
+ };
388
+ }
389
+ if (sprintMembershipState(source.value, request.input.taskId) !== 'present') {
390
+ return {
391
+ refusal: `Build does not list task ${request.input.taskId} as a member of the declared source sprint ${request.input.sourceSprintId}, so no command ran.`,
392
+ };
393
+ }
394
+ if (
395
+ membershipDrifted(request.expected.observedMembership, sprintMembershipIds(source.value))
396
+ ) {
397
+ return {
398
+ refusal: `Source sprint ${request.input.sourceSprintId} membership changed since this request was built, so no command ran.`,
399
+ };
400
+ }
401
+ return { refusal: null };
402
+ }
403
+ }
404
+ }
405
+
406
+ /** Spawn the fixed argv once, then perform the action's authoritative rereads. */
407
+ private async launchAndReread(
408
+ repository: Repository,
409
+ request: ApplySprintCompositionInput
410
+ ): Promise<ApplySprintCompositionOutput> {
411
+ const argv = sprintCompositionArgv(request);
412
+ let stdout = '';
413
+ let diagnostics: string | null = null;
414
+ let exitCode: number | null = null;
415
+ let timedOut = false;
416
+ try {
417
+ const result = await this.run({
418
+ file: 'build',
419
+ args: argv,
420
+ cwd: repository.path,
421
+ timeoutMs: SPRINT_COMPOSITION_MUTATION_TIMEOUT_MS,
422
+ shell: false,
423
+ });
424
+ stdout = capOutput(result.stdout);
425
+ diagnostics = truncateDiagnostics(capOutput(result.stderr));
426
+ exitCode = result.exitCode;
427
+ } catch (error) {
428
+ timedOut = timedOutError(error);
429
+ diagnostics = truncateDiagnostics(error instanceof Error ? error.message : String(error));
430
+ }
431
+ const facts: SprintCompositionInvocationFacts = { timedOut, exitCode };
432
+
433
+ const { identityOutcome, ambiguous, identityNotes } = this.identityEvidence(
434
+ request,
435
+ stdout,
436
+ facts
437
+ );
438
+ const { rereads, decision } = await this.rereadAndDecide(
439
+ repository,
440
+ request,
441
+ facts,
442
+ identityOutcome
443
+ );
444
+
445
+ const workspace = await this.readWorkspace(repository);
446
+ const commandState = timedOut
447
+ ? 'timed_out'
448
+ : ambiguous
449
+ ? 'ambiguous'
450
+ : exitCode === 0
451
+ ? 'succeeded'
452
+ : 'failed';
453
+
454
+ return {
455
+ outcomeVersion: SPRINT_COMPOSITION_OUTCOME_VERSION,
456
+ repository,
457
+ disclosure: SPRINT_COMPOSITION_DISCLOSURE,
458
+ action: request.action,
459
+ requestedIdentities: sprintCompositionRequestedIdentities(request),
460
+ command: {
461
+ state: commandState,
462
+ attempts: 1,
463
+ argv,
464
+ exitCode,
465
+ diagnostics,
466
+ remoteSyncConfirmedByExitCode: false,
467
+ },
468
+ identityOutcome,
469
+ effect: {
470
+ phase: decision.phase,
471
+ createdIdentities: decision.createdIdentities,
472
+ affectedIdentities: decision.affectedIdentities,
473
+ },
474
+ sync: sprintCompositionSyncEvidence(true, workspace),
475
+ syncWarnings: sprintCompositionSyncWarnings(workspace),
476
+ integrityNotes: [
477
+ ...new Set([...identityNotes, ...decision.integrityNotes, ...this.rereadNotes(rereads)]),
478
+ ],
479
+ canonicalRereads: rereads,
480
+ workspace,
481
+ };
482
+ }
483
+
484
+ /**
485
+ * Validate the BPAU-00B identity envelope for the two minting actions.
486
+ *
487
+ * A missing, malformed, or internally inconsistent envelope is refused and the
488
+ * invocation is reported as `ambiguous`: the newest list row is never
489
+ * substituted for a returned id.
490
+ */
491
+ private identityEvidence(
492
+ request: ApplySprintCompositionInput,
493
+ stdout: string,
494
+ facts: SprintCompositionInvocationFacts
495
+ ): {
496
+ identityOutcome: SprintCompositionIdentityOutcome;
497
+ ambiguous: boolean;
498
+ identityNotes: string[];
499
+ } {
500
+ if (request.action !== 'createSprint' && request.action !== 'addSprintWorkFromBacklog') {
501
+ return { identityOutcome: null, ambiguous: false, identityNotes: [] };
502
+ }
503
+ if (facts.timedOut) {
504
+ return {
505
+ identityOutcome: null,
506
+ ambiguous: false,
507
+ identityNotes: ['Build produced no identity evidence before the timeout.'],
508
+ };
509
+ }
510
+ const json = parseSprintCompositionJson(stdout);
511
+ if (json.state !== 'available') {
512
+ return { identityOutcome: null, ambiguous: true, identityNotes: [json.reason] };
513
+ }
514
+ if (request.action === 'createSprint') {
515
+ const identity = parseSprintCreateIdentity(json.value, {
516
+ name: request.input.name,
517
+ start: request.input.start,
518
+ end: request.input.end,
519
+ });
520
+ return identity.state === 'available'
521
+ ? {
522
+ identityOutcome: { kind: 'sprintCreateV1', value: identity.value },
523
+ ambiguous: false,
524
+ identityNotes: [],
525
+ }
526
+ : { identityOutcome: null, ambiguous: true, identityNotes: [identity.reason] };
527
+ }
528
+ const identity = parseSprintAddTaskIdentity(json.value, {
529
+ sprintId: request.input.sprintId,
530
+ backlogItemId: request.input.backlogItemId,
531
+ });
532
+ return identity.state === 'available'
533
+ ? {
534
+ identityOutcome: { kind: 'sprintAddTaskV1', value: identity.value },
535
+ ambiguous: false,
536
+ identityNotes: [],
537
+ }
538
+ : { identityOutcome: null, ambiguous: true, identityNotes: [identity.reason] };
539
+ }
540
+
541
+ /** Perform the action's frozen reread set, then decide the effect phase. */
542
+ private async rereadAndDecide(
543
+ repository: Repository,
544
+ request: ApplySprintCompositionInput,
545
+ facts: SprintCompositionInvocationFacts,
546
+ identityOutcome: SprintCompositionIdentityOutcome
547
+ ): Promise<{ rereads: SprintCompositionRereads; decision: SprintCompositionEffectDecision }> {
548
+ switch (request.action) {
549
+ case 'createSprint': {
550
+ const created =
551
+ identityOutcome?.kind === 'sprintCreateV1' ? identityOutcome.value.sprintId : null;
552
+ const sprints = await this.readSprintList(repository);
553
+ const sprint =
554
+ created === null ? undefined : await this.readSprintStatus(repository, created);
555
+ return {
556
+ rereads: sprint === undefined ? { sprints } : { sprints, sprint },
557
+ decision: decideCreateSprintEffect(
558
+ identityOutcome?.kind === 'sprintCreateV1' ? identityOutcome.value : null,
559
+ facts
560
+ ),
561
+ };
562
+ }
563
+ case 'renameSprint': {
564
+ const [sprints, sprint] = await Promise.all([
565
+ this.readSprintList(repository),
566
+ this.readSprintStatus(repository, request.input.sprintId),
567
+ ]);
568
+ const renamed =
569
+ sprint.state === 'available' ? sprint.value.name === request.input.name : null;
570
+ return {
571
+ rereads: { sprints, sprint },
572
+ decision: decideRenameSprintEffect(request.input.sprintId, facts, renamed),
573
+ };
574
+ }
575
+ case 'addSprintWorkFromBacklog': {
576
+ const identity = identityOutcome?.kind === 'sprintAddTaskV1' ? identityOutcome.value : null;
577
+ const [sprint, backlogItem] = await Promise.all([
578
+ this.readSprintStatus(repository, request.input.sprintId),
579
+ this.readBacklogItem(repository, request.input.backlogItemId),
580
+ ]);
581
+ const newTaskId = identity?.taskId ?? null;
582
+ const task =
583
+ newTaskId === null ? undefined : await this.readTaskEvidence(repository, newTaskId);
584
+ const membership = newTaskId === null ? null : membershipOf(sprint, newTaskId);
585
+ return {
586
+ rereads: task === undefined ? { sprint, backlogItem } : { sprint, task, backlogItem },
587
+ decision: decideAddSprintWorkEffect(identity, facts, membership),
588
+ };
589
+ }
590
+ case 'removeSprintTask': {
591
+ const [sprint, task] = await Promise.all([
592
+ this.readSprintStatus(repository, request.input.sprintId),
593
+ this.readTaskEvidence(repository, request.input.taskId),
594
+ ]);
595
+ return {
596
+ rereads: { sprint, task },
597
+ decision: decideRemoveSprintTaskEffect(
598
+ request.input.sprintId,
599
+ request.input.taskId,
600
+ facts,
601
+ membershipOf(sprint, request.input.taskId)
602
+ ),
603
+ };
604
+ }
605
+ case 'migrateSprintTask': {
606
+ const [sourceSprint, targetSprint, task] = await Promise.all([
607
+ this.readSprintStatus(repository, request.input.sourceSprintId),
608
+ this.readSprintStatus(repository, request.input.targetSprintId),
609
+ this.readTaskEvidence(repository, request.input.taskId),
610
+ ]);
611
+ return {
612
+ rereads: { sourceSprint, targetSprint, task },
613
+ decision: decideMigrateSprintTaskEffect(
614
+ {
615
+ taskId: request.input.taskId,
616
+ sourceSprintId: request.input.sourceSprintId,
617
+ targetSprintId: request.input.targetSprintId,
618
+ },
619
+ facts,
620
+ {
621
+ source: membershipOf(sourceSprint, request.input.taskId),
622
+ target: membershipOf(targetSprint, request.input.taskId),
623
+ }
624
+ ),
625
+ };
626
+ }
627
+ }
628
+ }
629
+
630
+ /** Build-reported integrity notes from whichever sprints this action reread. */
631
+ private rereadNotes(rereads: SprintCompositionRereads): string[] {
632
+ const notes: string[] = [];
633
+ for (const sprint of [rereads.sprint, rereads.sourceSprint, rereads.targetSprint]) {
634
+ if (sprint !== undefined) notes.push(...notesOf(sprint));
635
+ }
636
+ return notes;
637
+ }
638
+
639
+ private refusedBeforeLaunch(
640
+ repository: Repository,
641
+ request: ApplySprintCompositionInput,
642
+ reason: string
643
+ ): ApplySprintCompositionOutput {
644
+ const workspace = unavailable<PlanningWorkspaceProjection>(
645
+ 'No Build command ran, so BB did not reread the planning workspace.'
646
+ );
647
+ return {
648
+ outcomeVersion: SPRINT_COMPOSITION_OUTCOME_VERSION,
649
+ repository,
650
+ disclosure: SPRINT_COMPOSITION_DISCLOSURE,
651
+ action: request.action,
652
+ requestedIdentities: sprintCompositionRequestedIdentities(request),
653
+ command: {
654
+ state: 'failed',
655
+ attempts: 1,
656
+ argv: [],
657
+ exitCode: null,
658
+ diagnostics: reason,
659
+ remoteSyncConfirmedByExitCode: false,
660
+ },
661
+ identityOutcome: null,
662
+ effect: { phase: 'refused-before-launch', createdIdentities: [], affectedIdentities: [] },
663
+ sync: sprintCompositionSyncEvidence(false, workspace),
664
+ syncWarnings: [],
665
+ integrityNotes: [reason],
666
+ canonicalRereads: {},
667
+ workspace,
668
+ };
669
+ }
670
+
671
+ /** One fixed read. A nonzero exit or unparseable stdout is unavailable evidence. */
672
+ private async read(
673
+ repository: Repository,
674
+ args: readonly string[]
675
+ ): Promise<SprintCompositionEvidence<unknown>> {
676
+ let result: SprintCompositionCommandResult;
677
+ try {
678
+ result = await this.run({
679
+ file: 'build',
680
+ args,
681
+ cwd: repository.path,
682
+ timeoutMs: SPRINT_COMPOSITION_READ_TIMEOUT_MS,
683
+ shell: false,
684
+ });
685
+ } catch (error) {
686
+ return unavailable(
687
+ timedOutError(error) ? 'Build read timed out.' : 'Build read failed to run.'
688
+ );
689
+ }
690
+ if (result.exitCode !== 0) {
691
+ return unavailable('Build reported a failed read.');
692
+ }
693
+ return parseSprintCompositionJson(capOutput(result.stdout));
694
+ }
695
+
696
+ private async readSprintList(
697
+ repository: Repository
698
+ ): Promise<SprintCompositionEvidence<SprintListEnvelope>> {
699
+ const json = await this.read(repository, ['plan', 'sprint', 'list', '--json']);
700
+ return json.state === 'available' ? parseSprintList(json.value) : json;
701
+ }
702
+
703
+ private async readSprintStatus(
704
+ repository: Repository,
705
+ sprintId: string
706
+ ): Promise<SprintCompositionEvidence<SprintStatusEnvelope>> {
707
+ const json = await this.read(repository, ['plan', 'sprint', 'status', sprintId, '--json']);
708
+ return json.state === 'available' ? parseSprintStatus(json.value, sprintId) : json;
709
+ }
710
+
711
+ private async readBacklogItem(
712
+ repository: Repository,
713
+ backlogItemId: string
714
+ ): Promise<SprintCompositionEvidence<{ id: string }>> {
715
+ const json = await this.read(repository, ['plan', 'backlog', 'show', backlogItemId, '--json']);
716
+ return json.state === 'available' ? parseBacklogIdentity(json.value, backlogItemId) : json;
717
+ }
718
+
719
+ private async readTaskDetail(
720
+ repository: Repository,
721
+ taskId: string
722
+ ): Promise<GetTaskDetailOutput> {
723
+ const json = await this.read(repository, [
724
+ 'plan',
725
+ 'task',
726
+ 'status',
727
+ taskId,
728
+ '--json',
729
+ '--detail',
730
+ ]);
731
+ return json.state === 'available'
732
+ ? parseTaskDetailEnvelope(json.value)
733
+ : { schemaVersion: null, task: { state: 'unavailable' as const, reason: json.reason } };
734
+ }
735
+
736
+ /** The task reread as it appears in `canonicalRereads`. */
737
+ private async readTaskEvidence(
738
+ repository: Repository,
739
+ taskId: string
740
+ ): Promise<SprintCompositionEvidence<GetTaskDetailOutput>> {
741
+ const detail = await this.readTaskDetail(repository, taskId);
742
+ if (detail.task.state === 'available') {
743
+ return { state: 'available', value: detail };
744
+ }
745
+ return unavailable(
746
+ detail.task.state === 'missing'
747
+ ? `Build reports no managed task ${taskId}.`
748
+ : detail.task.reason
749
+ );
750
+ }
751
+
752
+ /**
753
+ * The planning workspace projection: the only source of sync health, taken from
754
+ * the bare `plan sprint status --json` form that injects `planningWorkspaceV1`.
755
+ */
756
+ private async readWorkspace(
757
+ repository: Repository
758
+ ): Promise<SprintCompositionEvidence<PlanningWorkspaceProjection>> {
759
+ const json = await this.read(repository, ['plan', 'sprint', 'status', '--json']);
760
+ if (json.state !== 'available') return json;
761
+ if (
762
+ json.value === null ||
763
+ typeof json.value !== 'object' ||
764
+ !('planningWorkspaceV1' in json.value)
765
+ ) {
766
+ return unavailable('Build returned no planning workspace projection.');
767
+ }
768
+ const readback = parsePlanningWorkspaceV1(
769
+ (json.value as { planningWorkspaceV1: unknown }).planningWorkspaceV1
770
+ );
771
+ return { state: 'available', value: mapPlanningWorkspace(readback) };
772
+ }
773
+ }