@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,1122 @@
1
+ import {
2
+ errorEvent,
3
+ infoEvent
4
+ } from "./chunk-GQXLXRFA.js";
5
+ import {
6
+ collectTrailerItemIds,
7
+ fetchGitHubPrView
8
+ } from "./chunk-AJJNW7XT.js";
9
+ import {
10
+ createCliOutputRenderer
11
+ } from "./chunk-3UBZI5DW.js";
12
+ import {
13
+ TRACKED_EXECUTE_NOTE
14
+ } from "./chunk-UVKWU3SM.js";
15
+ import {
16
+ emitPlanningStateWarning
17
+ } from "./chunk-RQFX6YRN.js";
18
+ import {
19
+ listTasksInSprint
20
+ } from "./chunk-L2CBG5IX.js";
21
+ import {
22
+ parseKindOption,
23
+ queryNextItems
24
+ } from "./chunk-S6TAFQI5.js";
25
+ import {
26
+ queryBacklogList
27
+ } from "./chunk-NKLPMBNV.js";
28
+ import {
29
+ backlogExecutionStatusCarriesDelivery,
30
+ evaluateAutoFinalizeEligibility,
31
+ isBacklogExecutionProvenanceActivelyExecuting,
32
+ listBacklogExecutionProvenanceByStatus,
33
+ loadBacklogExecutionProvenance,
34
+ updateBacklogExecutionProvenance
35
+ } from "./chunk-3WY5TU2O.js";
36
+ import {
37
+ ExitCodeError
38
+ } from "./chunk-Y4ZDDHB6.js";
39
+ import {
40
+ getPlanningRoot
41
+ } from "./chunk-CSXLLEGB.js";
42
+ import {
43
+ checkSharedBucketReadability
44
+ } from "./chunk-AJBTKGJZ.js";
45
+ import {
46
+ getBucketPathByKind
47
+ } from "./chunk-V3KLVK7B.js";
48
+ import {
49
+ loadManifest
50
+ } from "./chunk-6TRD7TEE.js";
51
+ import {
52
+ resolvePlanningContextForRoot
53
+ } from "./chunk-BBPIILO2.js";
54
+ import {
55
+ detectRemoteConfiguration
56
+ } from "./chunk-EPRMH6HO.js";
57
+ import {
58
+ classifyBranchRole,
59
+ isDisposableBranchRole,
60
+ resolveManagedSyncDefaultBranch
61
+ } from "./chunk-XGU6PBO5.js";
62
+ import {
63
+ execGit
64
+ } from "./chunk-MHLEZQQI.js";
65
+ import {
66
+ PLANNING_GIT_NETWORK_TIMEOUT_MS
67
+ } from "./chunk-I56TH7VM.js";
68
+ import {
69
+ resolveCliRepoRoot
70
+ } from "./chunk-7VRJHTGZ.js";
71
+
72
+ // src/cli/commands/next.ts
73
+ import * as fs from "fs/promises";
74
+ import * as path2 from "path";
75
+ import { Command } from "commander";
76
+
77
+ // src/planning/backlog-delivery-evidence.ts
78
+ import { execa } from "execa";
79
+ async function refreshBacklogFinalizationTarget(root) {
80
+ try {
81
+ const branch = await resolveManagedSyncDefaultBranch(root);
82
+ if (!branch) return void 0;
83
+ const fetched = await execGit(["fetch", "origin", branch], {
84
+ cwd: root,
85
+ timeoutMs: PLANNING_GIT_NETWORK_TIMEOUT_MS
86
+ });
87
+ return fetched.exitCode === 0 ? `origin/${branch}` : void 0;
88
+ } catch {
89
+ return void 0;
90
+ }
91
+ }
92
+ async function inspectBacklogDeliveryEvidence(root, record, options = {}) {
93
+ const unknown = (reason) => ({ state: "unknown", reason });
94
+ const contradicted = (reason) => ({
95
+ state: "contradicted",
96
+ reason
97
+ });
98
+ try {
99
+ if (record.status === "archived") {
100
+ const archived = await queryBacklogList(getBucketPathByKind("backlog", root), "archived");
101
+ return archived.some((item) => item.id === record.backlogItemId) ? { state: "confirmed", reason: "The item has an archive record." } : unknown("The recorded archive is unavailable in this checkout.");
102
+ }
103
+ if (record.status === "delivered-local") {
104
+ return unknown("This local-delivery receipt contains no applied commit or target witness.");
105
+ }
106
+ if (record.prNumber === null || !options.queryPr) {
107
+ return unknown("Current PR evidence is unavailable; the recorded delivery is preserved.");
108
+ }
109
+ const pr = await fetchGitHubPrView(execa, root, record.prNumber);
110
+ const merged = pr.state === "MERGED" || Boolean(pr.mergedAt);
111
+ if (pr.state === "CLOSED" && !merged) {
112
+ return contradicted(`PR #${record.prNumber} is closed without merging.`);
113
+ }
114
+ if (pr.state === "OPEN" && record.status === "pr-open") {
115
+ return { state: "confirmed", reason: `PR #${record.prNumber} is open.` };
116
+ }
117
+ if (!merged) return unknown("The PR does not establish the recorded merge.");
118
+ const commit = pr.mergeCommit?.oid;
119
+ if (!commit || !/^(?:[a-f0-9]{40}|[a-f0-9]{64})$/i.test(commit)) {
120
+ return unknown("The merged PR has no usable merge commit evidence.");
121
+ }
122
+ if (record.mergeCommit) {
123
+ if (!/^[a-f0-9]{4,64}$/i.test(record.mergeCommit)) {
124
+ return unknown("The recorded merge commit is not an immutable commit identifier.");
125
+ }
126
+ const recorded = await execGit(
127
+ [
128
+ "rev-parse",
129
+ "--verify",
130
+ "--end-of-options",
131
+ `${record.mergeCommit.toLowerCase()}^{commit}`
132
+ ],
133
+ { cwd: root }
134
+ );
135
+ if (recorded.exitCode !== 0) return unknown("The recorded merge commit cannot be resolved.");
136
+ if (recorded.stdout.trim().toLowerCase() !== commit.toLowerCase()) {
137
+ return contradicted("The recorded merge commit differs from the PR merge commit.");
138
+ }
139
+ }
140
+ if (!options.remoteTarget) {
141
+ return unknown("The finalization target could not be refreshed.");
142
+ }
143
+ const valid = await execGit(["rev-parse", "--verify", `${commit}^{commit}`], { cwd: root });
144
+ if (valid.exitCode !== 0) return unknown("The PR merge commit is not available locally.");
145
+ const onTarget = await execGit(["merge-base", "--is-ancestor", commit, options.remoteTarget], {
146
+ cwd: root
147
+ });
148
+ if (onTarget.exitCode === 1) {
149
+ return contradicted("The PR merge commit is absent from the refreshed finalization target.");
150
+ }
151
+ if (onTarget.exitCode !== 0) return unknown("The finalization target could not be inspected.");
152
+ const eligibility = evaluateAutoFinalizeEligibility({ ...record, status: "pr-open" }, commit, {
153
+ validCommit: true,
154
+ mergeCommitOnRemoteDefault: true,
155
+ prMerged: true,
156
+ mergeCommitMatchesPr: true,
157
+ backlogItemMatchesPr: collectTrailerItemIds(pr.commits ?? []).declared.includes(
158
+ record.backlogItemId
159
+ )
160
+ });
161
+ return eligibility.eligible ? {
162
+ state: "confirmed",
163
+ reason: `PR #${record.prNumber} is merged on the finalization target.`,
164
+ readyMergeCommit: eligibility.mergeCommit
165
+ } : unknown(eligibility.reason);
166
+ } catch {
167
+ return unknown("Delivery evidence could not be read; the recorded delivery is preserved.");
168
+ }
169
+ }
170
+
171
+ // src/cli/commands/backlog-execution-state.ts
172
+ import * as path from "path";
173
+ function backlogExecutionBranchName(backlogItemId, sequence = 0) {
174
+ const suffix = sequence > 0 ? `-${sequence + 1}` : "";
175
+ return `run/backlog-${backlogItemId}${suffix}`;
176
+ }
177
+ function isBacklogExecutionBranchName(backlogItemId, branch) {
178
+ if (!backlogItemId || !branch) return false;
179
+ if (branch === backlogExecutionBranchName(backlogItemId, 0)) return true;
180
+ const prefix = `run/backlog-${backlogItemId}-`;
181
+ if (!branch.startsWith(prefix)) return false;
182
+ const rest = branch.slice(prefix.length);
183
+ return /^[1-9]\d*$/.test(rest) && Number(rest) >= 2;
184
+ }
185
+ function backlogSyncBranchName(backlogItemId) {
186
+ return `chore/backlog-sync-${backlogItemId}`;
187
+ }
188
+ function backlogExecuteSignalCleanupName(backlogItemId) {
189
+ return `BacklogExecute:${backlogItemId}:${process.pid}`;
190
+ }
191
+ function backlogFinalizeSignalCleanupName(backlogItemId) {
192
+ return `BacklogFinalize:${backlogItemId}:${process.pid}`;
193
+ }
194
+ function backlogExecuteTerminalStatusCopy(status, backlogItemId) {
195
+ if (status === "delivered-local") {
196
+ return {
197
+ statusText: `Backlog item ${backlogItemId} was delivered locally.`,
198
+ nextActionText: ` Complete or archive explicitly: build plan backlog archive ${backlogItemId} --reason <reason>`
199
+ };
200
+ }
201
+ return {
202
+ statusText: `Backlog item ${backlogItemId} is already merged.`,
203
+ nextActionText: " Run `build plan backlog finalize <id> --pr <n> --commit <sha>` to archive it."
204
+ };
205
+ }
206
+ async function backlogExecuteReceiptCopy(root, record) {
207
+ const id = record.backlogItemId;
208
+ if (record.status === "delivered-local") {
209
+ return { ...backlogExecuteTerminalStatusCopy(record.status, id), confirmed: true };
210
+ }
211
+ if (record.status === "pr-open" && record.prNumber === null && hasReusableExecutionResult(record)) {
212
+ return null;
213
+ }
214
+ if (!["pr-open", "merged", "archived"].includes(record.status)) return null;
215
+ const remoteTarget = record.status === "archived" || record.prNumber === null ? void 0 : await refreshBacklogFinalizationTarget(root);
216
+ const evidence = await inspectBacklogDeliveryEvidence(root, record, {
217
+ remoteTarget,
218
+ queryPr: true
219
+ });
220
+ if (evidence.state !== "confirmed") {
221
+ return {
222
+ confirmed: false,
223
+ statusText: `Backlog item ${id} needs reconciliation: ${evidence.reason}`,
224
+ nextActionText: " Recorded delivery is preserved; inspect before resetting execution."
225
+ };
226
+ }
227
+ if (record.status === "archived") {
228
+ return {
229
+ confirmed: true,
230
+ statusText: `Backlog item ${id} is already archived.`,
231
+ nextActionText: " Archive evidence is present."
232
+ };
233
+ }
234
+ if (evidence.readyMergeCommit) {
235
+ return {
236
+ confirmed: true,
237
+ statusText: `Backlog item ${id} is already merged.`,
238
+ nextActionText: ` Finalize: build plan backlog finalize ${id} --pr ${record.prNumber} --commit ${evidence.readyMergeCommit}`
239
+ };
240
+ }
241
+ return {
242
+ confirmed: true,
243
+ statusText: `Backlog item ${id} already has an open PR.`,
244
+ nextActionText: ` Existing PR: #${record.prNumber}; finalize after merge.`
245
+ };
246
+ }
247
+ function finalizeFailureProvenanceUpdate(params) {
248
+ const base = {
249
+ prNumber: params.prNumber,
250
+ mergeCommit: params.mergeCommit,
251
+ archiveSyncPrNumber: params.archiveSyncPrNumber
252
+ };
253
+ if (params.archiveSyncPending) {
254
+ return {
255
+ ...base,
256
+ archiveSyncWarning: params.errorMessage,
257
+ status: "archive-sync-pending",
258
+ lastCompletedStep: "finalize",
259
+ failedAtStep: null,
260
+ errorMessage: null
261
+ };
262
+ }
263
+ if (backlogExecutionStatusCarriesDelivery(params.priorStatus)) {
264
+ return {
265
+ archiveSyncWarning: null,
266
+ // Status and delivery evidence are intentionally omitted: the stored
267
+ // record remains truthful when a retry supplies bad values.
268
+ failedAtStep: "finalize",
269
+ errorMessage: params.errorMessage
270
+ };
271
+ }
272
+ return {
273
+ ...base,
274
+ archiveSyncWarning: null,
275
+ status: "failed",
276
+ failedAtStep: "finalize",
277
+ errorMessage: params.errorMessage
278
+ };
279
+ }
280
+ function finalizeInterruptProvenanceUpdate(prNumber, mergeCommit, archiveSyncPrNumber, signal, priorStatus) {
281
+ return finalizeFailureProvenanceUpdate({
282
+ priorStatus: priorStatus ?? null,
283
+ prNumber,
284
+ mergeCommit,
285
+ archiveSyncPrNumber,
286
+ archiveSyncPending: archiveSyncPrNumber !== null,
287
+ errorMessage: `Interrupted by ${signal}`
288
+ });
289
+ }
290
+ function parsePrNumberFromUrl(prUrl) {
291
+ const match = prUrl.match(/\/pull\/(\d+)$/);
292
+ if (!match?.[1]) return null;
293
+ const parsed = Number.parseInt(match[1], 10);
294
+ return Number.isFinite(parsed) ? parsed : null;
295
+ }
296
+ function extractWorkflowIdFromOutput(output) {
297
+ const match = output.match(/(?:^|\n)\s*Workflow ID:\s*([^\s]+)/i);
298
+ if (match?.[1]?.trim()) {
299
+ return match[1].trim();
300
+ }
301
+ for (const line of output.split("\n")) {
302
+ const trimmed = line.trim();
303
+ if (!trimmed.startsWith("{")) continue;
304
+ try {
305
+ const parsed = JSON.parse(trimmed);
306
+ if (typeof parsed.workflowId === "string" && parsed.workflowId.trim().length > 0) {
307
+ return parsed.workflowId.trim();
308
+ }
309
+ } catch {
310
+ }
311
+ }
312
+ return null;
313
+ }
314
+ function tryParseJsonObjectAt(source, startIndex) {
315
+ let depth = 0;
316
+ let inString = false;
317
+ let escaped = false;
318
+ for (let i = startIndex; i < source.length; i += 1) {
319
+ const ch = source[i];
320
+ if (ch === void 0) break;
321
+ if (inString) {
322
+ if (escaped) {
323
+ escaped = false;
324
+ } else if (ch === "\\") {
325
+ escaped = true;
326
+ } else if (ch === '"') {
327
+ inString = false;
328
+ }
329
+ continue;
330
+ }
331
+ if (ch === '"') {
332
+ inString = true;
333
+ continue;
334
+ }
335
+ if (ch === "{") {
336
+ depth += 1;
337
+ continue;
338
+ }
339
+ if (ch === "}") {
340
+ depth -= 1;
341
+ if (depth === 0) {
342
+ try {
343
+ return JSON.parse(source.slice(startIndex, i + 1));
344
+ } catch {
345
+ return null;
346
+ }
347
+ }
348
+ }
349
+ }
350
+ return null;
351
+ }
352
+ function extractUnansweredMustHaveBlockerPayload(stderr) {
353
+ const marker = '{"error":"unanswered_must_have_blockers"';
354
+ const startIndex = stderr.lastIndexOf(marker);
355
+ if (startIndex < 0) return null;
356
+ const parsed = tryParseJsonObjectAt(stderr, startIndex);
357
+ if (!parsed || typeof parsed !== "object") return null;
358
+ const candidate = parsed;
359
+ if (candidate.error !== "unanswered_must_have_blockers" || !Array.isArray(candidate.blockers)) {
360
+ return null;
361
+ }
362
+ const blockers = candidate.blockers.filter((entry) => {
363
+ return !!entry && typeof entry === "object" && typeof entry.question === "string";
364
+ }).map((entry) => ({
365
+ ...typeof entry.id === "string" ? { id: entry.id } : {},
366
+ question: entry.question,
367
+ ...Array.isArray(entry.stageIds) ? {
368
+ stageIds: entry.stageIds.filter(
369
+ (stageId) => typeof stageId === "string"
370
+ )
371
+ } : {}
372
+ }));
373
+ if (blockers.length === 0) return null;
374
+ return { error: "unanswered_must_have_blockers", blockers };
375
+ }
376
+ function extractPlanExecuteFailurePayload(output) {
377
+ const marker = '{"error":"planned_build_failed"';
378
+ const startIndex = output.lastIndexOf(marker);
379
+ if (startIndex < 0) return null;
380
+ const parsed = tryParseJsonObjectAt(output, startIndex);
381
+ if (!parsed || typeof parsed !== "object") return null;
382
+ const candidate = parsed;
383
+ if (candidate.error !== "planned_build_failed") return null;
384
+ const errors = Array.isArray(candidate.errors) ? candidate.errors.filter((entry) => typeof entry === "string") : void 0;
385
+ return {
386
+ error: "planned_build_failed",
387
+ ...typeof candidate.message === "string" ? { message: candidate.message } : {},
388
+ ...errors && errors.length > 0 ? { errors } : {}
389
+ };
390
+ }
391
+ function extractTerminalResultFailureReason(output) {
392
+ const startIndex = output.lastIndexOf('{"kind":"result"');
393
+ if (startIndex < 0) return null;
394
+ const parsed = tryParseJsonObjectAt(output, startIndex);
395
+ const goalGap = parsed?.result?.finalOutcome?.goalGap;
396
+ if (!goalGap || goalGap.satisfied !== false || !Array.isArray(goalGap.gaps)) return null;
397
+ const gaps = goalGap.gaps.filter(
398
+ (gap) => typeof gap?.criterion === "string" && gap.criterion.trim().length > 0
399
+ );
400
+ const lead = gaps.find((gap) => gap.severity === "blocking" && gap.status !== "satisfied") ?? gaps[0];
401
+ return lead ? lead.criterion.trim() : null;
402
+ }
403
+ function extractPlanExecuteDecompositionFailurePayload(output) {
404
+ const marker = "BUILD_PLANNED_DECOMPOSITION_FAILURE ";
405
+ const markerIndex = output.lastIndexOf(marker);
406
+ if (markerIndex < 0) return null;
407
+ const parsed = tryParseJsonObjectAt(output, markerIndex + marker.length);
408
+ if (!parsed || typeof parsed !== "object") return null;
409
+ const candidate = parsed;
410
+ return {
411
+ ...typeof candidate.kind === "string" ? { kind: candidate.kind } : {},
412
+ ...typeof candidate.errorMessage === "string" ? { errorMessage: candidate.errorMessage } : {},
413
+ ...typeof candidate.failureKind === "string" ? { failureKind: candidate.failureKind } : {},
414
+ ...typeof candidate.timedOut === "boolean" ? { timedOut: candidate.timedOut } : {},
415
+ ...typeof candidate.idleTerminated === "boolean" ? { idleTerminated: candidate.idleTerminated } : {},
416
+ ...typeof candidate.workflowMaterialized === "boolean" ? { workflowMaterialized: candidate.workflowMaterialized } : {}
417
+ };
418
+ }
419
+ function extractLastNonEmptyStderrLine(stderr) {
420
+ const lines = stderr.split("\n").map((line) => line.trim()).filter((line) => line.length > 0);
421
+ const last = lines.at(-1) ?? null;
422
+ if (!last?.startsWith("{")) return last;
423
+ const marker = '{"error":"';
424
+ let structured = null;
425
+ for (let at = last.indexOf(marker); at >= 0; at = last.indexOf(marker, at + 1)) {
426
+ const parsed = tryParseJsonObjectAt(last, at);
427
+ if (typeof parsed?.error !== "string") continue;
428
+ structured = typeof parsed.message === "string" && parsed.message.trim() ? parsed.message.trim() : parsed.error;
429
+ }
430
+ return structured;
431
+ }
432
+ function summarizeUnansweredMustHaveBlockers(payload) {
433
+ const questions = payload.blockers.map((blocker) => blocker.question.trim()).filter(Boolean);
434
+ if (questions.length === 0) {
435
+ return "Blocked by unanswered must-have blockers";
436
+ }
437
+ if (questions.length === 1) {
438
+ return `Blocked by unanswered must-have blocker: ${questions[0]}`;
439
+ }
440
+ return `Blocked by ${questions.length} unanswered must-have blockers: ${questions.join(" | ")}`;
441
+ }
442
+ function pendingBlockersFromPayload(payload) {
443
+ if (!payload) return [];
444
+ return payload.blockers.map((blocker) => ({
445
+ ...blocker.id?.trim() ? { id: blocker.id.trim() } : {},
446
+ question: blocker.question,
447
+ ...blocker.stageIds && blocker.stageIds.length > 0 ? { stageIds: blocker.stageIds } : {}
448
+ }));
449
+ }
450
+ function summarizePlanExecuteFailure(payload) {
451
+ const message = payload.message?.trim();
452
+ if (message) return message;
453
+ return payload.errors?.map((entry) => entry.trim()).find((entry) => entry.length > 0) ?? null;
454
+ }
455
+ function summarizePlanExecuteDecompositionFailure(payload) {
456
+ const message = payload.errorMessage?.trim();
457
+ if (message) return message;
458
+ if (payload.timedOut) return "Provider timed out during decomposition";
459
+ if (payload.idleTerminated) return "Provider was idle-terminated during decomposition";
460
+ if (payload.failureKind) return `Decomposition failed: ${payload.failureKind}`;
461
+ return null;
462
+ }
463
+ function childCommandExitCode(result) {
464
+ if (typeof result.exitCode === "number") return result.exitCode;
465
+ return result.signal || result.failed ? 1 : 0;
466
+ }
467
+ function stoppedOnVetRevise(output) {
468
+ const startIndex = output.lastIndexOf('{"error":"plan_vet_failed"');
469
+ if (startIndex < 0) return false;
470
+ const parsed = tryParseJsonObjectAt(output, startIndex);
471
+ return parsed?.recommendation === "revise";
472
+ }
473
+ function vetReviseNextStep(backlogItemId) {
474
+ return `Revise the item with \`build plan backlog update ${backlogItemId} --body-file <path>\`, then rerun \`build plan backlog execute ${backlogItemId}\`.`;
475
+ }
476
+ function parsePlanExecuteFailure(params) {
477
+ const parsed = parsePlanExecuteFailureCause(params);
478
+ if (parsed.status !== "failed" || !params.backlogItemId || !stoppedOnVetRevise(params.output ?? params.stderr)) {
479
+ return parsed;
480
+ }
481
+ return {
482
+ ...parsed,
483
+ errorMessage: `${parsed.errorMessage}. ${vetReviseNextStep(params.backlogItemId)}`
484
+ };
485
+ }
486
+ function parsePlanExecuteFailureCause(params) {
487
+ const exitCode = params.exitCode ?? 1;
488
+ const output = params.output ?? params.stderr;
489
+ const blockerPayload = exitCode === 2 ? extractUnansweredMustHaveBlockerPayload(output) : null;
490
+ if (blockerPayload) {
491
+ return {
492
+ status: "blocked",
493
+ failedAtStep: null,
494
+ errorMessage: summarizeUnansweredMustHaveBlockers(blockerPayload),
495
+ blockerPayload
496
+ };
497
+ }
498
+ const decompositionFailurePayload = extractPlanExecuteDecompositionFailurePayload(output);
499
+ const decompositionFailureSummary = decompositionFailurePayload ? summarizePlanExecuteDecompositionFailure(decompositionFailurePayload) : null;
500
+ if (decompositionFailureSummary) {
501
+ return {
502
+ status: "failed",
503
+ failedAtStep: "execute",
504
+ errorMessage: `planned build failed: ${decompositionFailureSummary}`
505
+ };
506
+ }
507
+ const failurePayload = extractPlanExecuteFailurePayload(output);
508
+ const failureSummary = failurePayload ? summarizePlanExecuteFailure(failurePayload) : null;
509
+ if (failureSummary) {
510
+ return {
511
+ status: "failed",
512
+ failedAtStep: "execute",
513
+ errorMessage: `planned build failed: ${failureSummary}`
514
+ };
515
+ }
516
+ const terminalReason = extractTerminalResultFailureReason(output);
517
+ if (terminalReason) {
518
+ return {
519
+ status: "failed",
520
+ failedAtStep: "execute",
521
+ errorMessage: `planned build failed: ${terminalReason}`
522
+ };
523
+ }
524
+ const stderrLine = extractLastNonEmptyStderrLine(params.stderr);
525
+ return {
526
+ status: "failed",
527
+ failedAtStep: "execute",
528
+ errorMessage: `planned build failed${stderrLine ? `: ${stderrLine}` : ""}`
529
+ };
530
+ }
531
+ async function collectTrackedTaskIds(params) {
532
+ if (!params.planArtifactPath) return [];
533
+ const normalizedPlanArtifactPath = path.posix.normalize(
534
+ params.planArtifactPath.replace(/\\/g, "/").trim()
535
+ );
536
+ if (!normalizedPlanArtifactPath || normalizedPlanArtifactPath === ".") return [];
537
+ try {
538
+ const tasks = await listTasksInSprint(params.sprintId);
539
+ return tasks.filter(
540
+ (task) => typeof task.planArtifactPath === "string" && path.posix.normalize(task.planArtifactPath.replace(/\\/g, "/").trim()) === normalizedPlanArtifactPath
541
+ ).map((task) => task.id);
542
+ } catch {
543
+ return [];
544
+ }
545
+ }
546
+ async function updateBacklogExecutionTracking(params) {
547
+ const manifest = await loadManifest(params.workflowId).catch(() => null);
548
+ const sprintId = manifest?.sprintId ?? null;
549
+ const planArtifact = manifest?.planArtifactPath ?? null;
550
+ const taskIds = sprintId && planArtifact ? await collectTrackedTaskIds({ sprintId, planArtifactPath: planArtifact }) : [];
551
+ return updateBacklogExecutionProvenance(params.projectRoot, params.backlogItemId, {
552
+ workflowId: params.workflowId,
553
+ sprintId,
554
+ taskIds,
555
+ planArtifact,
556
+ status: params.status,
557
+ lastCompletedStep: params.lastCompletedStep,
558
+ failedAtStep: params.failedAtStep,
559
+ errorMessage: params.errorMessage,
560
+ ...params.pendingBlockers !== void 0 ? { pendingBlockers: params.pendingBlockers } : {},
561
+ ...params.prNumber !== void 0 ? { prNumber: params.prNumber } : {},
562
+ ...params.mergeCommit !== void 0 ? { mergeCommit: params.mergeCommit } : {},
563
+ ...params.archiveSyncPrNumber !== void 0 ? { archiveSyncPrNumber: params.archiveSyncPrNumber } : {}
564
+ });
565
+ }
566
+ function deriveBacklogExecutionFailureStep(provenance) {
567
+ if (provenance.status === "blocked") {
568
+ return "execute";
569
+ }
570
+ if (provenance.lastCompletedStep === null && provenance.status === "initialized") {
571
+ return "initialize";
572
+ }
573
+ if (provenance.lastCompletedStep === "execute") {
574
+ return "create-pr";
575
+ }
576
+ if (provenance.status === "executing" || provenance.lastCompletedStep === "prepare-branch") {
577
+ return "execute";
578
+ }
579
+ return "prepare-branch";
580
+ }
581
+ function hasReusableExecutionResult(provenance) {
582
+ return typeof provenance.workflowId === "string" && provenance.workflowId.trim().length > 0 && provenance.status !== "blocked" && provenance.lastCompletedStep === "execute" && provenance.failedAtStep !== "execute";
583
+ }
584
+ async function recordBacklogExecutionStepFailure(params) {
585
+ const errorMessage = params.interruptSignal ? `Interrupted by ${params.interruptSignal}` : params.error instanceof Error ? params.error.message : String(params.error);
586
+ return updateBacklogExecutionProvenance(params.projectRoot, params.backlogItemId, {
587
+ status: "failed",
588
+ lastCompletedStep: params.lastCompletedStep,
589
+ failedAtStep: params.failedAtStep,
590
+ errorMessage
591
+ });
592
+ }
593
+
594
+ // src/cli/commands/next-resume-guidance.ts
595
+ var NOT_GITHUB_HOST_ERROR = /point to a known github host/i;
596
+ async function resolveNextResumeGuidance(params) {
597
+ try {
598
+ const repoRoot = resolveCliRepoRoot(params.cwd);
599
+ const provenance = await loadBacklogExecutionProvenance(params.rootDir, params.itemId, {
600
+ cleanupTerminalLocks: false
601
+ });
602
+ const resumable = provenance !== null && hasReusableExecutionResult(provenance) && !backlogExecutionStatusCarriesDelivery(provenance.status) && !await isBacklogExecutionProvenanceActivelyExecuting(params.rootDir, provenance);
603
+ if (resumable) {
604
+ const remote = await detectRemoteConfiguration(repoRoot);
605
+ const noPr = remote === "none" || NOT_GITHUB_HOST_ERROR.test(provenance.errorMessage ?? "");
606
+ if (!noPr) return { kind: "resume", noPr };
607
+ const current = (await execGit(["branch", "--show-current"], { cwd: repoRoot })).stdout.trim();
608
+ const target = (current && current === provenance.branch ? provenance.sourceBranch ?? "" : current).trim();
609
+ const role = classifyBranchRole(target);
610
+ const eligible = role !== "protected" && role !== "detached" && !isDisposableBranchRole(role);
611
+ return eligible ? { kind: "resume", noPr } : { kind: "resume", noPr, ineligibleApplyBranch: target || "(detached HEAD)" };
612
+ }
613
+ const branch = await execGit(
614
+ ["show-ref", "--verify", "--quiet", `refs/heads/${params.adHocBranch}`],
615
+ { cwd: repoRoot }
616
+ );
617
+ return branch.exitCode === 0 ? { kind: "branch-collision", branch: params.adHocBranch } : null;
618
+ } catch {
619
+ return null;
620
+ }
621
+ }
622
+
623
+ // src/cli/commands/next.ts
624
+ var UNTRACKED_NOTE = "Untracked: records no lifecycle provenance.";
625
+ var BACKLOG_RUN_BRANCH_ID_MAX_LEN = 80;
626
+ function sanitizeBacklogIdForRunBranch(id) {
627
+ const sanitized = String(id ?? "").trim().replace(/[^A-Za-z0-9_-]+/g, "-").replace(/-+/g, "-").replace(/^-+|-+$/g, "").slice(0, BACKLOG_RUN_BRANCH_ID_MAX_LEN).replace(/-+$/g, "");
628
+ return sanitized.length > 0 ? sanitized : "item";
629
+ }
630
+ function backlogAdHocRunBranch(id) {
631
+ return `run/backlog-${sanitizeBacklogIdForRunBranch(id)}`;
632
+ }
633
+ async function listBacklogExecutionAttention(rootDir) {
634
+ const [
635
+ prOpenRecords,
636
+ deliveredLocalRecords,
637
+ executingRecords,
638
+ archiveSyncRecords,
639
+ mergedRecords,
640
+ archivedRecords
641
+ ] = await Promise.all([
642
+ listBacklogExecutionProvenanceByStatus(rootDir, "pr-open"),
643
+ listBacklogExecutionProvenanceByStatus(rootDir, "delivered-local"),
644
+ listBacklogExecutionProvenanceByStatus(rootDir, "executing"),
645
+ listBacklogExecutionProvenanceByStatus(rootDir, "archive-sync-pending"),
646
+ listBacklogExecutionProvenanceByStatus(rootDir, "merged"),
647
+ listBacklogExecutionProvenanceByStatus(rootDir, "archived")
648
+ ]);
649
+ const backlogDir = getBucketPathByKind("backlog", rootDir);
650
+ const activeDeliveredLocalRecords = await Promise.all(
651
+ deliveredLocalRecords.map(async (record) => {
652
+ try {
653
+ await fs.access(path2.join(backlogDir, `${record.backlogItemId}.md`));
654
+ return record;
655
+ } catch {
656
+ return null;
657
+ }
658
+ })
659
+ );
660
+ const ready = activeDeliveredLocalRecords.flatMap(
661
+ (record) => record ? [
662
+ {
663
+ backlogItemId: record.backlogItemId,
664
+ kind: "delivered-local"
665
+ }
666
+ ] : []
667
+ );
668
+ ready.push(
669
+ ...archiveSyncRecords.map((record) => ({
670
+ backlogItemId: record.backlogItemId,
671
+ kind: "archive-sync-pending",
672
+ archiveSyncPrNumber: record.archiveSyncPrNumber ?? null
673
+ }))
674
+ );
675
+ const runningRecords = await Promise.all(
676
+ executingRecords.map(async (record) => {
677
+ try {
678
+ await fs.access(path2.join(backlogDir, `${record.backlogItemId}.md`));
679
+ if (!await isBacklogExecutionProvenanceActivelyExecuting(rootDir, record)) {
680
+ return null;
681
+ }
682
+ return {
683
+ backlogItemId: record.backlogItemId,
684
+ branch: record.branch,
685
+ workflowId: record.workflowId
686
+ };
687
+ } catch {
688
+ return null;
689
+ }
690
+ })
691
+ );
692
+ const running = runningRecords.flatMap((record) => record ? [record] : []);
693
+ running.sort((a, b) => a.backlogItemId.localeCompare(b.backlogItemId));
694
+ const remoteTarget = prOpenRecords.length > 0 ? await refreshBacklogFinalizationTarget(rootDir) : void 0;
695
+ await Promise.all(
696
+ [...prOpenRecords, ...mergedRecords, ...archivedRecords].map(async (record) => {
697
+ try {
698
+ await fs.access(path2.join(backlogDir, `${record.backlogItemId}.md`));
699
+ } catch {
700
+ return;
701
+ }
702
+ const evidence = await inspectBacklogDeliveryEvidence(rootDir, record, {
703
+ remoteTarget,
704
+ // Keep the existing per-open-PR query count. Explicit execute can refresh one receipt.
705
+ queryPr: record.status === "pr-open"
706
+ });
707
+ if (evidence.readyMergeCommit && record.prNumber !== null) {
708
+ ready.push({
709
+ backlogItemId: record.backlogItemId,
710
+ kind: "merged-pr",
711
+ prNumber: record.prNumber,
712
+ mergeCommit: evidence.readyMergeCommit
713
+ });
714
+ } else if (evidence.state !== "confirmed") {
715
+ ready.push({
716
+ backlogItemId: record.backlogItemId,
717
+ kind: "reconciliation",
718
+ reason: evidence.reason
719
+ });
720
+ }
721
+ })
722
+ );
723
+ ready.sort((a, b) => a.backlogItemId.localeCompare(b.backlogItemId));
724
+ return { readyToFinalize: ready, running };
725
+ }
726
+ async function loadCurrentSprintActionSummary() {
727
+ try {
728
+ const { getCurrentSprint, listTasksInSprint: listTasksInSprint2 } = await import("./sprint-manager-MU2ZUWN2.js");
729
+ const current = await getCurrentSprint();
730
+ if (!current) {
731
+ return null;
732
+ }
733
+ const tasks = await listTasksInSprint2(current.yaml.id);
734
+ const openTaskCount = tasks.filter(
735
+ (task) => ["todo", "in_progress", "review"].includes(task.status)
736
+ ).length;
737
+ return openTaskCount > 0 ? { id: current.yaml.id, openTaskCount } : null;
738
+ } catch {
739
+ return null;
740
+ }
741
+ }
742
+ function shouldLoadNextFinalizeSummaries(options) {
743
+ return options.json !== true && options.quiet !== true && options.idsOnly !== true;
744
+ }
745
+ function buildMissingBacklogHint(buildDirExists) {
746
+ return buildDirExists ? 'Run `build plan backlog add "Your first task"` to get started.' : "Run `build init` to set up Build in this project.";
747
+ }
748
+ function createPlanNextCommand() {
749
+ const plan = new Command("plan").alias("pl");
750
+ plan.addCommand(createNextCommand());
751
+ return plan;
752
+ }
753
+ function createNextCommand() {
754
+ return new Command("next").description(
755
+ "Show actionable work items from the planning system\n\nExamples:\n build plan next\n build plan next --json\n build plan next --limit 5\n build plan next --kind debt\n build plan next --kind all"
756
+ ).option("--json", "(OPTIONAL) Output as JSON for AI parsing\n Example: --json").option("-q, --quiet", "(OPTIONAL) Suppress text output when no JSON is requested").option("-v, --verbose", "(OPTIONAL) Show extra context and follow-up commands").option(
757
+ "--ids-only",
758
+ "(OPTIONAL) Output compact id/title lines for terminal-friendly piping\n Example: --ids-only"
759
+ ).option(
760
+ "--include-duplicates",
761
+ "(OPTIONAL) Include items that may be duplicates of archived items\n Example: --include-duplicates"
762
+ ).option(
763
+ "--include-findings",
764
+ "(OPTIONAL) Include actionable findings and issues from the issue management system\n Example: --include-findings"
765
+ ).option(
766
+ "--include-blocked",
767
+ "(OPTIONAL) Include backlog items whose blocked-by prerequisites are not yet done\n (hidden by default; readiness shows only startable work)\n Example: --include-blocked"
768
+ ).option("--limit <n>", "(OPTIONAL) Limit number of results\n Example: --limit 5").option(
769
+ "--context",
770
+ "(OPTIONAL) Include body preview and acceptance criteria (opt-in, slower)\n Example: --context"
771
+ ).option(
772
+ "--kind <types>",
773
+ '(OPTIONAL) Comma-separated entity kinds to include: backlog,debt,parking or "all"\n Example: --kind debt or --kind all'
774
+ ).action(async (options) => {
775
+ const output = createCliOutputRenderer();
776
+ try {
777
+ const rootDir = getPlanningRoot();
778
+ await emitPlanningStateWarning(options.json === true);
779
+ const backlogDir = getBucketPathByKind("backlog", rootDir);
780
+ const unavailable = checkSharedBucketReadability(resolvePlanningContextForRoot(rootDir));
781
+ if (unavailable) {
782
+ output.event(errorEvent("Planning storage unavailable", { detail: unavailable.reason }));
783
+ throw new ExitCodeError(1);
784
+ }
785
+ const parsedKinds = parseKindOption(options.kind);
786
+ const limit = (() => {
787
+ if (!options.limit) {
788
+ return void 0;
789
+ }
790
+ const parsed = Number(options.limit);
791
+ if (!Number.isFinite(parsed) || parsed <= 0) {
792
+ throw new Error("--limit must be a positive integer");
793
+ }
794
+ return parsed;
795
+ })();
796
+ const backlogExists = await fs.stat(backlogDir).then(() => true).catch(() => false);
797
+ const needsBacklog = parsedKinds.length === 0 || parsedKinds.includes("backlog");
798
+ if (!backlogExists && !options.includeFindings && needsBacklog && parsedKinds.length === 0) {
799
+ if (options.json) {
800
+ console.log(JSON.stringify([], null, 2));
801
+ return;
802
+ }
803
+ const buildDirExists = await fs.stat(path2.join(rootDir, ".build-project")).then(() => true).catch(() => false);
804
+ output.event(infoEvent("No backlog/ directory found"));
805
+ output.line(buildMissingBacklogHint(buildDirExists));
806
+ return;
807
+ }
808
+ const loadHumanAttention = shouldLoadNextFinalizeSummaries(options);
809
+ const [candidates, executionAttention, currentSprint] = await Promise.all([
810
+ queryNextItems({
811
+ rootDir,
812
+ limit,
813
+ context: options.context,
814
+ includeFindings: options.includeFindings,
815
+ includeDuplicates: options.includeDuplicates,
816
+ includeBlocked: options.includeBlocked,
817
+ kinds: parsedKinds
818
+ }),
819
+ loadHumanAttention ? listBacklogExecutionAttention(rootDir) : Promise.resolve({ readyToFinalize: [], running: [] }),
820
+ loadHumanAttention ? loadCurrentSprintActionSummary() : Promise.resolve(null)
821
+ ]);
822
+ if (options.json) {
823
+ console.log(JSON.stringify(candidates, null, 2));
824
+ } else if (options.quiet) {
825
+ return;
826
+ } else if (options.idsOnly) {
827
+ printNextCandidatesIdsOnly(candidates);
828
+ } else {
829
+ const topBacklog = candidates.find((c) => c.kind === "backlog" || c.kind === "task");
830
+ const resume = !options.verbose && topBacklog && !topBacklog.blockedReason && !topBacklog.needsRefinement ? await resolveNextResumeGuidance({
831
+ rootDir,
832
+ cwd: process.cwd(),
833
+ itemId: topBacklog.id,
834
+ adHocBranch: backlogAdHocRunBranch(topBacklog.id)
835
+ }) : null;
836
+ printNextCandidates(candidates, {
837
+ resume,
838
+ verbose: options.verbose === true,
839
+ readyToFinalize: executionAttention.readyToFinalize,
840
+ running: executionAttention.running,
841
+ currentSprint
842
+ });
843
+ await printInterruptedWorkWarning(output);
844
+ }
845
+ } catch (error) {
846
+ const errorMessage = error instanceof Error ? error.message : String(error);
847
+ output.event(errorEvent("Failed to query planning system", { detail: errorMessage }));
848
+ throw new ExitCodeError(1);
849
+ }
850
+ });
851
+ }
852
+ var INTERRUPTED_WORK_DEADLINE_MS = 3e3;
853
+ async function printInterruptedWorkWarning(output) {
854
+ let timer;
855
+ try {
856
+ const { resolveCliRepoRoot: resolveCliRepoRoot2 } = await import("./repo-root-YG6MQZDW.js");
857
+ const { findInterruptedWork, formatInterruptedWorkWarning } = await import("./interrupted-work-E4TLKJLE.js");
858
+ const report = await Promise.race([
859
+ findInterruptedWork(resolveCliRepoRoot2(process.cwd())),
860
+ new Promise((resolve) => {
861
+ timer = setTimeout(() => resolve(void 0), INTERRUPTED_WORK_DEADLINE_MS);
862
+ timer.unref();
863
+ })
864
+ ]);
865
+ const line = report ? formatInterruptedWorkWarning(report) : void 0;
866
+ if (line) output.line(line);
867
+ } catch {
868
+ } finally {
869
+ clearTimeout(timer);
870
+ }
871
+ }
872
+ function printNextCandidates(candidates, options = {}) {
873
+ const output = createCliOutputRenderer();
874
+ const running = options.running ?? [];
875
+ if (running.length > 0) {
876
+ output.line(`${running.length} backlog execution${running.length === 1 ? "" : "s"} running`);
877
+ for (const entry of running) {
878
+ output.line(` ${entry.backlogItemId}`);
879
+ if (entry.branch) {
880
+ output.line(` Branch: ${entry.branch}`);
881
+ }
882
+ if (entry.workflowId) {
883
+ output.line(` Inspect: build run flywheel status ${entry.workflowId}`);
884
+ }
885
+ }
886
+ output.line("");
887
+ }
888
+ const currentSprint = options.currentSprint;
889
+ if (currentSprint) {
890
+ output.line(
891
+ `Current sprint: ${currentSprint.id} (${currentSprint.openTaskCount} open task${currentSprint.openTaskCount === 1 ? "" : "s"})`
892
+ );
893
+ output.line(` Preview: build run sprint ${currentSprint.id} --preflight`);
894
+ output.line(` Execute: build run sprint ${currentSprint.id} --apply`);
895
+ output.line("");
896
+ }
897
+ const readyToFinalize = options.readyToFinalize ?? [];
898
+ if (readyToFinalize.length > 0) {
899
+ output.line(
900
+ `${readyToFinalize.length} backlog item${readyToFinalize.length === 1 ? "" : "s"} needing completion attention`
901
+ );
902
+ for (const entry of readyToFinalize) {
903
+ if (entry.kind === "reconciliation") {
904
+ output.line(` ${entry.backlogItemId} needs reconciliation: ${entry.reason}`);
905
+ output.line(" Recorded delivery is preserved; inspect before resetting execution.");
906
+ } else if (entry.kind === "archive-sync-pending") {
907
+ output.line(
908
+ ` ${entry.backlogItemId} archive sync PR #${entry.archiveSyncPrNumber ?? "unknown"}; merge if open, then resume finalization`
909
+ );
910
+ output.line(" Resume: build plan backlog finalize --auto");
911
+ } else if (entry.kind === "delivered-local") {
912
+ output.line(` ${entry.backlogItemId} delivered locally; complete or archive explicitly`);
913
+ if (options.verbose) {
914
+ output.verbose(`build plan backlog archive ${entry.backlogItemId} --reason <reason>`);
915
+ }
916
+ } else {
917
+ output.line(` ${entry.backlogItemId} PR #${entry.prNumber}`);
918
+ if (options.verbose) {
919
+ output.verbose(
920
+ `build plan backlog finalize ${entry.backlogItemId} --pr ${entry.prNumber} --commit ${entry.mergeCommit}`
921
+ );
922
+ }
923
+ }
924
+ }
925
+ output.line("");
926
+ }
927
+ if (candidates.length === 0) {
928
+ if (running.length === 0 && readyToFinalize.length === 0 && !currentSprint) {
929
+ output.line("No actionable items found.");
930
+ if (options.verbose) {
931
+ output.verbose('Add items with: build plan backlog add "Your task"');
932
+ }
933
+ }
934
+ return;
935
+ }
936
+ output.line(`${candidates.length} actionable item${candidates.length === 1 ? "" : "s"}`);
937
+ output.line("");
938
+ const hasMultipleKinds = candidates.some((c) => c.kind === "debt" || c.kind === "parking");
939
+ const byPriority = {};
940
+ for (const candidate of candidates) {
941
+ let key;
942
+ if (candidate.kind === "debt") {
943
+ key = `debt-${candidate.severity ?? "low"}`;
944
+ } else if (candidate.kind === "parking") {
945
+ key = "parking";
946
+ } else {
947
+ key = candidate.priority || "Unprioritized";
948
+ }
949
+ if (!byPriority[key]) byPriority[key] = [];
950
+ byPriority[key]?.push(candidate);
951
+ }
952
+ const priorityLabels = {
953
+ P0: "P0 Critical",
954
+ P1: "P1 High",
955
+ P2: "P2 Medium",
956
+ P3: "P3 Low",
957
+ Unprioritized: "Unprioritized",
958
+ "debt-critical": "Tech Debt Critical",
959
+ "debt-high": "Tech Debt High",
960
+ "debt-medium": "Tech Debt Medium",
961
+ "debt-low": "Tech Debt Low",
962
+ parking: "Parking Lot"
963
+ };
964
+ const displayOrder = [
965
+ "P0",
966
+ "P1",
967
+ "debt-critical",
968
+ "debt-high",
969
+ "P2",
970
+ "P3",
971
+ "Unprioritized",
972
+ "debt-medium",
973
+ "debt-low",
974
+ "parking"
975
+ ];
976
+ for (const groupKey of displayOrder) {
977
+ const items = byPriority[groupKey];
978
+ if (!items || items.length === 0) {
979
+ continue;
980
+ }
981
+ output.line(priorityLabels[groupKey] || groupKey);
982
+ for (const item of items) {
983
+ const kindLabel = hasMultipleKinds ? item.kind === "finding" ? " [finding]" : item.kind === "issue" ? " [issue]" : item.kind === "debt" ? " [debt]" : item.kind === "parking" ? " [parking]" : " [backlog]" : item.kind === "finding" ? "[finding]" : item.kind === "issue" ? "[issue]" : "";
984
+ const duplicateBadge = item.isDuplicate ? " [dup?]" : "";
985
+ const incompleteBadge = item.blockedReason || item.needsRefinement ? " [refine]" : "";
986
+ const blockedBadge = item.blockedByOpen && item.blockedByOpen.length > 0 ? ` [blocked x${item.blockedByOpen.length}]` : "";
987
+ output.line(` ${item.title}${kindLabel}${duplicateBadge}${incompleteBadge}${blockedBadge}`);
988
+ output.line(` ${item.id}`);
989
+ if (item.kind === "debt") {
990
+ const blockingTag = item.blocking ? " blocking" : "";
991
+ output.line(
992
+ ` Severity: ${item.severity ?? "unknown"}${blockingTag} Effort: ${item.effort ?? "unknown"}`
993
+ );
994
+ } else if (item.kind === "parking") {
995
+ const reasonRaw = item.deferralReason ?? "";
996
+ const reason = reasonRaw.length > 40 ? `${reasonRaw.slice(0, 40)}...` : reasonRaw;
997
+ const overdueTag = item.isOverdue ? " overdue" : "";
998
+ const reconsiderStr = item.reconsiderDate ? ` Reconsider: ${item.reconsiderDate}${overdueTag}` : "";
999
+ if (reason) output.line(` Reason: ${reason}${reconsiderStr}`);
1000
+ else if (reconsiderStr) output.line(` ${reconsiderStr.trimStart()}`);
1001
+ } else {
1002
+ if (item.domain && item.domain !== "general") {
1003
+ output.line(` Domain: ${item.domain}`);
1004
+ }
1005
+ if (item.complexity !== void 0) {
1006
+ output.line(` Complexity: ${item.complexity}`);
1007
+ }
1008
+ if (item.duplicateOf) {
1009
+ output.line(` Possibly duplicate of: ${item.duplicateOf}`);
1010
+ }
1011
+ if (item.blockedReason) {
1012
+ output.line(` Blocked: ${item.blockedReason}`);
1013
+ const answerHint = item.blockedAnswerHint ?? `build plan backlog execute ${item.id} --answer blockerId=value`;
1014
+ output.line(` Answer with: ${answerHint}`);
1015
+ }
1016
+ if (item.blockedByOpen && item.blockedByOpen.length > 0) {
1017
+ const blockerList = item.blockedByOpen.map((b) => b.title ? `${b.id} (${b.title})` : b.id).join(", ");
1018
+ output.line(` Blocked by ${item.blockedByOpen.length} open: ${blockerList}`);
1019
+ }
1020
+ if (item.bodyPreview) {
1021
+ const previewLine = item.bodyPreview.replace(/\s+/g, " ").trim();
1022
+ output.line(` ${previewLine.slice(0, 80)}${previewLine.length > 80 ? "..." : ""}`);
1023
+ }
1024
+ if (item.acceptanceCriteria && item.acceptanceCriteria.length > 0) {
1025
+ output.line(` Acceptance criteria: ${item.acceptanceCriteria.length} item(s)`);
1026
+ }
1027
+ }
1028
+ output.line("");
1029
+ }
1030
+ }
1031
+ const topBacklog = candidates.find((c) => c.kind === "backlog" || c.kind === "task");
1032
+ if (!options.verbose && topBacklog) {
1033
+ output.line("---");
1034
+ if (topBacklog.blockedReason || topBacklog.needsRefinement) {
1035
+ output.line(`Next: ${topBacklog.id} \u2014 ${topBacklog.title}`);
1036
+ output.line(` Refine: build plan backlog refine ${topBacklog.id}`);
1037
+ } else {
1038
+ const adHocBranch = backlogAdHocRunBranch(topBacklog.id);
1039
+ const resume = options.resume;
1040
+ output.line(`Next: ${topBacklog.id} \u2014 ${topBacklog.title}`);
1041
+ if (resume?.kind === "resume") {
1042
+ const flag = resume.noPr ? " --no-open-pr" : "";
1043
+ output.line(` Resume: build plan backlog execute ${topBacklog.id}${flag}`);
1044
+ output.line(
1045
+ resume.noPr ? " Reuses the finished build, applies it locally and archives the item; origin has no GitHub PR path." : " Reuses the finished build and opens the PR."
1046
+ );
1047
+ if (resume.ineligibleApplyBranch) {
1048
+ output.line(
1049
+ ` Current branch ${resume.ineligibleApplyBranch} cannot take a local apply; first switch to or create a product branch (for example git switch -c fix/<slug>).`
1050
+ );
1051
+ }
1052
+ } else {
1053
+ output.line(` Canonical: build plan backlog execute ${topBacklog.id}`);
1054
+ output.line(` ${TRACKED_EXECUTE_NOTE}`);
1055
+ if (resume?.kind === "branch-collision") {
1056
+ output.line(
1057
+ ` Ad hoc: run branch ${resume.branch} already exists; check it out or delete it,`
1058
+ );
1059
+ } else {
1060
+ output.line(` Ad hoc: git checkout -b ${adHocBranch}`);
1061
+ }
1062
+ output.line(` then build run --backlog-item ${topBacklog.id} --no-push`);
1063
+ output.line(` ${UNTRACKED_NOTE}`);
1064
+ }
1065
+ output.line(` Show: build plan backlog show ${topBacklog.id}`);
1066
+ }
1067
+ }
1068
+ if (options.verbose) {
1069
+ output.verbose("Commands:");
1070
+ output.verbose(" build plan backlog refine <id>");
1071
+ output.verbose(" build plan backlog show <id>");
1072
+ output.verbose(" Canonical: build plan backlog execute <id>");
1073
+ output.verbose(` ${TRACKED_EXECUTE_NOTE}`);
1074
+ output.verbose(" Ad hoc: git checkout -b run/backlog-<sanitized-id>");
1075
+ output.verbose(" then build run --backlog-item <id> --no-push");
1076
+ output.verbose(` ${UNTRACKED_NOTE}`);
1077
+ }
1078
+ }
1079
+ function formatNextCandidateIdsOnlyLine(candidate) {
1080
+ return `${candidate.id} ${candidate.title}`;
1081
+ }
1082
+ function printNextCandidatesIdsOnly(candidates) {
1083
+ if (candidates.length === 0) {
1084
+ console.log("No actionable items found.");
1085
+ return;
1086
+ }
1087
+ for (const candidate of candidates) {
1088
+ console.log(formatNextCandidateIdsOnlyLine(candidate));
1089
+ }
1090
+ }
1091
+
1092
+ export {
1093
+ backlogExecutionBranchName,
1094
+ isBacklogExecutionBranchName,
1095
+ backlogSyncBranchName,
1096
+ backlogExecuteSignalCleanupName,
1097
+ backlogFinalizeSignalCleanupName,
1098
+ backlogExecuteReceiptCopy,
1099
+ finalizeFailureProvenanceUpdate,
1100
+ finalizeInterruptProvenanceUpdate,
1101
+ parsePrNumberFromUrl,
1102
+ extractWorkflowIdFromOutput,
1103
+ extractPlanExecuteFailurePayload,
1104
+ extractPlanExecuteDecompositionFailurePayload,
1105
+ pendingBlockersFromPayload,
1106
+ childCommandExitCode,
1107
+ parsePlanExecuteFailure,
1108
+ updateBacklogExecutionTracking,
1109
+ deriveBacklogExecutionFailureStep,
1110
+ hasReusableExecutionResult,
1111
+ recordBacklogExecutionStepFailure,
1112
+ sanitizeBacklogIdForRunBranch,
1113
+ backlogAdHocRunBranch,
1114
+ shouldLoadNextFinalizeSummaries,
1115
+ buildMissingBacklogHint,
1116
+ createPlanNextCommand,
1117
+ createNextCommand,
1118
+ printNextCandidates,
1119
+ formatNextCandidateIdsOnlyLine,
1120
+ printNextCandidatesIdsOnly
1121
+ };
1122
+ //# sourceMappingURL=chunk-MTU7VTNN.js.map