@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,1217 @@
1
+ import {
2
+ assertNoPlanningStorageHold,
3
+ assertNoStorageDrift,
4
+ publishManagedChange,
5
+ recordManagedChange
6
+ } from "./chunk-SNGM452K.js";
7
+ import {
8
+ repositoryFromGitHubRemoteUrl
9
+ } from "./chunk-BDPYFAB4.js";
10
+ import {
11
+ getBucketByName
12
+ } from "./chunk-V3KLVK7B.js";
13
+ import {
14
+ refreshDefaultBranchTracking
15
+ } from "./chunk-BAWJNMWF.js";
16
+ import {
17
+ resolvePlanningContextForRoot
18
+ } from "./chunk-BBPIILO2.js";
19
+ import {
20
+ ManagedSyncBranchError,
21
+ describeManagedSyncBranchRefusal,
22
+ findEmbeddedHomePathRefusal,
23
+ formatManagedSyncBranchError,
24
+ isManagedSyncBranchError
25
+ } from "./chunk-I7SCBHJN.js";
26
+ import {
27
+ isSafeGitRemoteAndRef
28
+ } from "./chunk-D2M2Y5ID.js";
29
+ import {
30
+ resolveManagedSyncDefaultBranch
31
+ } from "./chunk-XGU6PBO5.js";
32
+ import {
33
+ GitExecError,
34
+ execGit
35
+ } from "./chunk-MHLEZQQI.js";
36
+ import {
37
+ GIT_HOOK_COMMIT_TIMEOUT_MS,
38
+ PLANNING_GIT_NETWORK_TIMEOUT_MS
39
+ } from "./chunk-I56TH7VM.js";
40
+ import {
41
+ toRepoRelativePath
42
+ } from "./chunk-STW7OFOA.js";
43
+ import {
44
+ BUILD_DEFER_SYNC,
45
+ PUBLISH_OUTCOME_EXIT_CODES,
46
+ readEnv
47
+ } from "./chunk-7VRJHTGZ.js";
48
+
49
+ // src/planning/git-exec.ts
50
+ var NETWORK_GIT_SUBCOMMANDS = /* @__PURE__ */ new Set(["fetch", "ls-remote", "pull", "push"]);
51
+ async function runPlanningGit(args, options) {
52
+ const replayingRebase = args[0] === "rebase" && args[1] !== "--abort" && args[1] !== "--quit";
53
+ const networkTimeoutMs = NETWORK_GIT_SUBCOMMANDS.has(args[0] ?? "") ? PLANNING_GIT_NETWORK_TIMEOUT_MS : replayingRebase ? GIT_HOOK_COMMIT_TIMEOUT_MS : void 0;
54
+ try {
55
+ const result = await execGit(args, {
56
+ cwd: options.cwd,
57
+ ...options.input === void 0 ? {} : { input: options.input },
58
+ ...options.env ? { env: options.env } : {},
59
+ ...options.timeoutMs !== void 0 ? { timeoutMs: options.timeoutMs } : networkTimeoutMs !== void 0 ? { timeoutMs: networkTimeoutMs } : {}
60
+ });
61
+ if (options.reject !== false && result.exitCode !== 0) {
62
+ throw new Error(
63
+ `git ${args.join(" ")} failed with exit ${result.exitCode}: ${result.stderr}`
64
+ );
65
+ }
66
+ return result;
67
+ } catch (error) {
68
+ if (options.reject === false && error instanceof GitExecError) {
69
+ return {
70
+ exitCode: void 0,
71
+ stdout: "",
72
+ stderr: error.message,
73
+ ...error.timedOut ? { timedOut: true } : {}
74
+ };
75
+ }
76
+ throw error;
77
+ }
78
+ }
79
+
80
+ // src/planning/git-sync-publication-base.ts
81
+ async function readManagedSyncPublicationBase(projectRoot, remote, remoteBranch) {
82
+ const head = await runPlanningGit(["rev-parse", "HEAD"], {
83
+ cwd: projectRoot,
84
+ reject: false
85
+ });
86
+ const preSyncHeadSha = head.exitCode === 0 ? head.stdout.trim() : "";
87
+ const remoteBranchResult = await runPlanningGit(
88
+ ["ls-remote", "--heads", "--", remote, `refs/heads/${remoteBranch}`],
89
+ { cwd: projectRoot, reject: false }
90
+ );
91
+ return {
92
+ preSyncHeadSha,
93
+ remoteBranchExists: remoteBranchResult.stdout.trim().length > 0,
94
+ remoteBranchResult
95
+ };
96
+ }
97
+
98
+ // src/planning/git-sync-staging.ts
99
+ function splitNulTerminatedPaths(stdout) {
100
+ return stdout.split("\0").filter((entry) => entry.length > 0);
101
+ }
102
+ async function resolvePathsThisSyncWillStage(projectRoot, managedPaths, hadPreexistingStagedChanges) {
103
+ if (managedPaths.length === 0) {
104
+ return [];
105
+ }
106
+ if (!hadPreexistingStagedChanges) {
107
+ return [...managedPaths];
108
+ }
109
+ const alreadyStaged = new Set(await listStagedRelativePaths(projectRoot, managedPaths));
110
+ return managedPaths.filter((managedPath) => !alreadyStaged.has(managedPath));
111
+ }
112
+ async function unstageThisSyncPaths(projectRoot, paths) {
113
+ if (paths.length === 0) {
114
+ return;
115
+ }
116
+ await runPlanningGit(["reset", "--", ...paths], {
117
+ cwd: projectRoot,
118
+ reject: false
119
+ });
120
+ }
121
+ async function snapshotStagedIndexEntries(projectRoot, paths) {
122
+ if (paths.length === 0) {
123
+ return [];
124
+ }
125
+ const result = await runPlanningGit(["ls-files", "-s", "-z", "--", ...paths], {
126
+ cwd: projectRoot,
127
+ reject: false
128
+ });
129
+ if (result.exitCode !== 0 || !result.stdout) {
130
+ return [];
131
+ }
132
+ const entries = [];
133
+ for (const record of result.stdout.split("\0")) {
134
+ if (!record) continue;
135
+ const match = record.match(/^(\d{6}) ([0-9a-f]{40,64}) \d+\t(.+)$/);
136
+ if (!match?.[1] || !match[2] || !match[3]) continue;
137
+ entries.push({ mode: match[1], sha: match[2], path: match[3] });
138
+ }
139
+ return entries;
140
+ }
141
+ async function restoreStagedIndexEntries(projectRoot, entries) {
142
+ for (const entry of entries) {
143
+ await runPlanningGit(["update-index", "--cacheinfo", entry.mode, entry.sha, entry.path], {
144
+ cwd: projectRoot,
145
+ reject: false
146
+ });
147
+ }
148
+ }
149
+ async function captureManagedSyncStaging(projectRoot, managedPaths, hadPreexistingStagedChanges) {
150
+ const pathsThisSyncWillStage = await resolvePathsThisSyncWillStage(
151
+ projectRoot,
152
+ managedPaths,
153
+ hadPreexistingStagedChanges
154
+ );
155
+ return {
156
+ pathsThisSyncWillStage,
157
+ overlappingStagedSnapshots: await snapshotStagedIndexEntries(
158
+ projectRoot,
159
+ managedPaths.filter((managedPath) => !pathsThisSyncWillStage.includes(managedPath))
160
+ )
161
+ };
162
+ }
163
+ async function abandonManagedSyncStaging(projectRoot, state) {
164
+ await unstageThisSyncPaths(projectRoot, state.pathsStagedByThisSync);
165
+ await restoreStagedIndexEntries(projectRoot, state.overlappingStagedSnapshots);
166
+ }
167
+ async function listStagedRelativePaths(projectRoot, pathspecs) {
168
+ if (pathspecs.length === 0) {
169
+ return [];
170
+ }
171
+ const result = await runPlanningGit(
172
+ ["diff", "--cached", "--name-only", "-z", "--", ...pathspecs],
173
+ { cwd: projectRoot, reject: false }
174
+ );
175
+ return splitNulTerminatedPaths(result.stdout);
176
+ }
177
+
178
+ // src/planning/remote-sync-verify.ts
179
+ import * as fs from "fs/promises";
180
+ import * as path from "path";
181
+ var DEFAULT_VERIFY_DELAYS_MS = [0, 2e3, 4e3];
182
+ function sleep(ms) {
183
+ return new Promise((resolve) => setTimeout(resolve, ms));
184
+ }
185
+ async function resolveRemoteBranchSha(projectRoot, remote, remoteBranch, options = {}) {
186
+ if (!isSafeGitRemoteAndRef(remote, remoteBranch)) {
187
+ return "";
188
+ }
189
+ const ref = `refs/heads/${remoteBranch}`;
190
+ const lsRemote = await runPlanningGit(["ls-remote", "--heads", "--", remote, ref], {
191
+ cwd: projectRoot,
192
+ reject: false,
193
+ ...options.timeoutMs === void 0 ? {} : { timeoutMs: options.timeoutMs }
194
+ });
195
+ if (lsRemote.exitCode !== 0) {
196
+ return "";
197
+ }
198
+ const matches = lsRemote.stdout.trim().split(/\r?\n/).map((line) => line.trim().split(/\s+/)).filter(([, name]) => name === ref);
199
+ return matches.length === 1 ? matches[0]?.[0] ?? "" : "";
200
+ }
201
+ async function remoteContainsCommit(projectRoot, remote, remoteBranch, commitSha, options = {}) {
202
+ const remoteSha = await resolveRemoteBranchSha(projectRoot, remote, remoteBranch, options);
203
+ if (!remoteSha) {
204
+ return false;
205
+ }
206
+ if (remoteSha === commitSha) {
207
+ return true;
208
+ }
209
+ const ancestorCheck = await runPlanningGit(
210
+ ["merge-base", "--is-ancestor", commitSha, remoteSha],
211
+ {
212
+ cwd: projectRoot,
213
+ reject: false
214
+ }
215
+ );
216
+ return ancestorCheck.exitCode === 0;
217
+ }
218
+ async function remoteContainsPaths(projectRoot, remote, remoteBranch, relativePaths) {
219
+ const remoteRef = `${remote}/${remoteBranch}`;
220
+ for (const relativePath of relativePaths) {
221
+ const showResult = await runPlanningGit(["show", `${remoteRef}:${relativePath}`], {
222
+ cwd: projectRoot,
223
+ reject: false
224
+ });
225
+ if (showResult.exitCode !== 0) {
226
+ return { ok: false, missingPath: relativePath };
227
+ }
228
+ }
229
+ return { ok: true };
230
+ }
231
+ async function verifyRemoteSyncPush(options) {
232
+ const {
233
+ projectRoot,
234
+ remote,
235
+ remoteBranch,
236
+ relativePaths,
237
+ expectedCommitSha,
238
+ maxAttempts = 3,
239
+ verifyDelaysMs = DEFAULT_VERIFY_DELAYS_MS
240
+ } = options;
241
+ if (!expectedCommitSha) {
242
+ return { ok: false, reason: "missing expected commit SHA for remote verification" };
243
+ }
244
+ if (!isSafeGitRemoteAndRef(remote, remoteBranch)) {
245
+ return {
246
+ ok: false,
247
+ reason: "upstream remote or branch name is not a safe git identifier"
248
+ };
249
+ }
250
+ for (let attempt = 0; attempt < maxAttempts; attempt++) {
251
+ const delayMs = verifyDelaysMs[attempt] ?? verifyDelaysMs.at(-1) ?? 0;
252
+ if (delayMs > 0) {
253
+ await sleep(delayMs);
254
+ }
255
+ const fetchResult = await runPlanningGit(["fetch", "--", remote, remoteBranch], {
256
+ cwd: projectRoot,
257
+ reject: false
258
+ });
259
+ if (fetchResult.exitCode !== 0) {
260
+ if (attempt === maxAttempts - 1) {
261
+ const fetchDetail = fetchResult.stderr?.split("\n").find((line) => line.trim().length > 0) ?? fetchResult.stdout?.split("\n").find((line) => line.trim().length > 0) ?? "fetch failed";
262
+ return {
263
+ ok: false,
264
+ reason: `remote verification fetch failed after ${maxAttempts} attempts: ${fetchDetail}`
265
+ };
266
+ }
267
+ continue;
268
+ }
269
+ const remoteSha = await resolveRemoteBranchSha(projectRoot, remote, remoteBranch);
270
+ if (!remoteSha) {
271
+ if (attempt === maxAttempts - 1) {
272
+ return {
273
+ ok: false,
274
+ reason: `remote branch ${remote}/${remoteBranch} not found after push`
275
+ };
276
+ }
277
+ continue;
278
+ }
279
+ const commitVisible = await remoteContainsCommit(
280
+ projectRoot,
281
+ remote,
282
+ remoteBranch,
283
+ expectedCommitSha
284
+ );
285
+ if (!commitVisible) {
286
+ if (attempt === maxAttempts - 1) {
287
+ return {
288
+ ok: false,
289
+ reason: `remote ${remote}/${remoteBranch} at ${remoteSha} does not contain pushed commit ${expectedCommitSha}`
290
+ };
291
+ }
292
+ continue;
293
+ }
294
+ if (relativePaths.length > 0) {
295
+ const pathCheck = await remoteContainsPaths(projectRoot, remote, remoteBranch, relativePaths);
296
+ if (!pathCheck.ok) {
297
+ if (attempt === maxAttempts - 1) {
298
+ return {
299
+ ok: false,
300
+ reason: `remote ${remote}/${remoteBranch} is missing synced path ${pathCheck.missingPath}`
301
+ };
302
+ }
303
+ continue;
304
+ }
305
+ }
306
+ return { ok: true, remoteSha };
307
+ }
308
+ return { ok: false, reason: "remote verification failed after retries" };
309
+ }
310
+ function isRefspecPushTopology(localBranch, remoteBranch) {
311
+ return localBranch.length > 0 && remoteBranch.length > 0 && localBranch !== remoteBranch;
312
+ }
313
+ async function filterExistingRelativePaths(projectRoot, relativePaths) {
314
+ const existingPaths = [];
315
+ for (const relativePath of relativePaths) {
316
+ try {
317
+ await fs.access(path.join(projectRoot, relativePath));
318
+ existingPaths.push(relativePath);
319
+ } catch {
320
+ }
321
+ }
322
+ return existingPaths;
323
+ }
324
+
325
+ // src/planning/git-sync-push.ts
326
+ function isMissingRemoteError(output) {
327
+ return /does not appear to be a git repository|couldn't find remote ref|repository .* not found|no such remote/i.test(
328
+ output
329
+ );
330
+ }
331
+ function firstGitLine(output) {
332
+ return output?.split("\n").find((line) => line.trim().length > 0)?.trim() ?? "unknown";
333
+ }
334
+ async function resolveManagedSyncPushCandidate(projectRoot, expectedParentSha, allowedPaths) {
335
+ const headResult = await runPlanningGit(["rev-parse", "HEAD"], {
336
+ cwd: projectRoot,
337
+ reject: false
338
+ });
339
+ const candidateSha = headResult.exitCode === 0 ? headResult.stdout.trim() : "";
340
+ if (!candidateSha || !expectedParentSha) {
341
+ return {
342
+ ok: false,
343
+ reason: "could not resolve the managed sync candidate or its parent"
344
+ };
345
+ }
346
+ const parentResult = await runPlanningGit(["rev-parse", `${candidateSha}^`], {
347
+ cwd: projectRoot,
348
+ reject: false
349
+ });
350
+ if (parentResult.exitCode !== 0 || parentResult.stdout.trim() !== expectedParentSha) {
351
+ return {
352
+ ok: false,
353
+ reason: "the final candidate was not exactly one managed sync commit above the remote base"
354
+ };
355
+ }
356
+ const changedPathsResult = await runPlanningGit(
357
+ ["diff-tree", "--no-commit-id", "--name-only", "-r", "-z", candidateSha],
358
+ { cwd: projectRoot, reject: false }
359
+ );
360
+ const changedPaths = splitNulTerminatedPaths(changedPathsResult.stdout);
361
+ const allowedPathSet = new Set(allowedPaths);
362
+ if (changedPathsResult.exitCode !== 0 || changedPaths.length === 0 || changedPaths.some((changedPath) => !allowedPathSet.has(changedPath))) {
363
+ return {
364
+ ok: false,
365
+ reason: "the final candidate changed paths outside the managed sync scope"
366
+ };
367
+ }
368
+ return { ok: true, sha: candidateSha };
369
+ }
370
+ async function pushManagedCommitWithRetry(params) {
371
+ const { projectRoot, remote, remoteBranch, refspecTopology, preSyncHeadSha } = params;
372
+ const maxSyncAttempts = refspecTopology ? 1 : 3;
373
+ for (let attempt = 1; attempt <= maxSyncAttempts; attempt++) {
374
+ let expectedParentSha = preSyncHeadSha;
375
+ if (params.remoteBranchExists && !refspecTopology) {
376
+ const remoteHeadResult = await runPlanningGit(["rev-parse", "FETCH_HEAD"], {
377
+ cwd: projectRoot,
378
+ reject: false
379
+ });
380
+ expectedParentSha = remoteHeadResult.exitCode === 0 ? remoteHeadResult.stdout.trim() : "";
381
+ const rebaseResult = await runPlanningGit(["rebase", "FETCH_HEAD"], {
382
+ cwd: projectRoot,
383
+ reject: false
384
+ });
385
+ if (rebaseResult.exitCode !== 0) {
386
+ const rebaseStderr = rebaseResult.stderr ?? "";
387
+ const rebaseStdout = rebaseResult.stdout ?? "";
388
+ const rebaseOutputCombined = `${rebaseStderr}
389
+ ${rebaseStdout}`.toLowerCase();
390
+ const isConflict = rebaseOutputCombined.includes("conflict") || rebaseOutputCombined.includes("could not apply");
391
+ await runPlanningGit(["rebase", "--abort"], { cwd: projectRoot, reject: false });
392
+ const reason = isConflict ? "rebase conflicted (aborted rebase)" : `rebase failed: ${firstGitLine(rebaseStderr || rebaseStdout)}`;
393
+ return { kind: "local-only", message: `Committed locally but ${reason} - push skipped` };
394
+ }
395
+ }
396
+ const candidate = await resolveManagedSyncPushCandidate(
397
+ projectRoot,
398
+ expectedParentSha,
399
+ params.commitPaths
400
+ );
401
+ if (!candidate.ok) {
402
+ return {
403
+ kind: "local-only",
404
+ message: `Committed locally but ${candidate.reason} - push skipped`
405
+ };
406
+ }
407
+ const shouldSetUpstream = !params.hasUpstream || !params.remoteBranchExists;
408
+ const pushArgs = shouldSetUpstream ? ["push", "-u", "--", remote, `${candidate.sha}:refs/heads/${remoteBranch}`] : ["push", "--", remote, `${candidate.sha}:${remoteBranch}`];
409
+ await params.turn?.assertOwned();
410
+ const pushResult = await runPlanningGit(pushArgs, { cwd: projectRoot, reject: false });
411
+ if (pushResult.exitCode === 0) {
412
+ const verifyResult = await verifyRemoteSyncPush({
413
+ projectRoot,
414
+ remote,
415
+ remoteBranch,
416
+ relativePaths: await filterExistingRelativePaths(projectRoot, params.verifyPaths),
417
+ expectedCommitSha: candidate.sha
418
+ });
419
+ if (verifyResult.ok) return { kind: "synced" };
420
+ return {
421
+ kind: "unverified",
422
+ message: `Committed locally but remote verification failed: ${verifyResult.reason} - treat push as failed`
423
+ };
424
+ }
425
+ const pushOutput = `${pushResult.stderr ?? ""}
426
+ ${pushResult.stdout ?? ""}`;
427
+ const pushError = pushOutput.toLowerCase();
428
+ const isNonFastForward = pushError.includes("non-fast-forward") || pushError.includes("fetch first") || pushError.includes("failed to push some refs");
429
+ if (!isNonFastForward || attempt === maxSyncAttempts) {
430
+ return {
431
+ kind: "push-failed",
432
+ message: `Committed locally but push failed: ${firstGitLine(pushResult.stderr ?? pushResult.stdout)}`,
433
+ missingRemote: isMissingRemoteError(pushOutput)
434
+ };
435
+ }
436
+ const refreshedBoundary = await params.refreshBoundary();
437
+ if (!refreshedBoundary.ok) {
438
+ return {
439
+ kind: "local-only",
440
+ message: `Committed locally but ${refreshedBoundary.reason} - push skipped`
441
+ };
442
+ }
443
+ }
444
+ throw new Error("Managed sync retry loop exhausted without a terminal outcome");
445
+ }
446
+
447
+ // src/planning/storage/sync-dispatch.ts
448
+ import path2 from "path";
449
+ var ManagedStoragePathError = class extends Error {
450
+ paths;
451
+ constructor(paths) {
452
+ super(
453
+ `Managed item paths are not under the planning storage worktree; managed items never live in the code checkout under the git-branch backend: ${paths.join(", ")}`
454
+ );
455
+ this.name = "ManagedStoragePathError";
456
+ this.paths = paths;
457
+ }
458
+ };
459
+ function toManagedSyncOutcome(result) {
460
+ const status = {
461
+ published: "synced",
462
+ "local-only": "local-only",
463
+ pending: "unverified",
464
+ unverified: "unverified"
465
+ }[result.outcome];
466
+ const detail = [
467
+ result.outcome === "pending" ? "publication pending" : void 0,
468
+ result.reason,
469
+ result.pendingRef ? `candidate retained at ${result.pendingRef}` : void 0
470
+ ].filter((part) => Boolean(part));
471
+ const unpublished = result.outcome === "pending" || result.outcome === "unverified";
472
+ return {
473
+ outcome: { synced: result.outcome === "published", status },
474
+ exitCode: result.exitCode ?? PUBLISH_OUTCOME_EXIT_CODES[result.outcome],
475
+ publishOutcome: result.outcome,
476
+ ...detail.length > 0 ? { reason: detail.join("; ") } : {},
477
+ ...result.pendingRef ? { pendingRef: result.pendingRef } : {},
478
+ ...result.commitSha ? { commitSha: result.commitSha } : {},
479
+ localByPolicyPaths: result.localByPolicyPaths,
480
+ ...unpublished ? { pendingWarning: formatUnpublishedPublication(result) } : {}
481
+ };
482
+ }
483
+ function toDeferredSyncOutcome(result) {
484
+ return {
485
+ outcome: { synced: false, status: "skipped" },
486
+ exitCode: 0,
487
+ publishOutcome: result.outcome,
488
+ ...result.pendingRef ? { pendingRef: result.pendingRef } : {},
489
+ ...result.commitSha ? { commitSha: result.commitSha } : {},
490
+ localByPolicyPaths: result.localByPolicyPaths
491
+ };
492
+ }
493
+ function formatUnpublishedPublication(result) {
494
+ return [
495
+ `managed publication ${result.outcome}`,
496
+ result.reason?.replace(/[\s\p{Cc}]+/gu, " ").trim() || void 0,
497
+ result.pendingRef ? `candidate retained at ${result.pendingRef}` : void 0,
498
+ "publish it with: build plan storage sync"
499
+ ].filter((part) => Boolean(part)).join("; ");
500
+ }
501
+ function toStorageRelativePath(ctx, filePath) {
502
+ const absolute = path2.isAbsolute(filePath) ? filePath : path2.resolve(ctx.projectRoot, filePath);
503
+ const relative = toRepoRelativePath(ctx.storageRoot, absolute);
504
+ if (!relative || path2.isAbsolute(relative) || relative.split(path2.sep)[0] === "..") {
505
+ return void 0;
506
+ }
507
+ return relative.split(path2.sep).join("/");
508
+ }
509
+ function resolveStoragePaths(ctx, filePaths) {
510
+ const resolved = [];
511
+ const rejected = [];
512
+ for (const filePath of filePaths) {
513
+ const storagePath = toStorageRelativePath(ctx, filePath);
514
+ if (storagePath) {
515
+ if (!resolved.includes(storagePath)) resolved.push(storagePath);
516
+ } else {
517
+ rejected.push(filePath);
518
+ }
519
+ }
520
+ if (rejected.length > 0) {
521
+ throw new ManagedStoragePathError(rejected);
522
+ }
523
+ return resolved;
524
+ }
525
+ async function beginManagedSync(projectRoot) {
526
+ const ctx = resolvePlanningContextForRoot(projectRoot);
527
+ assertNoPlanningStorageHold();
528
+ await assertNoStorageDrift(ctx);
529
+ return ctx;
530
+ }
531
+ function codeCheckoutCarriesSharedBuckets(projectRoot) {
532
+ return resolvePlanningContextForRoot(projectRoot).backend !== "git-branch";
533
+ }
534
+ function backlogArchiveCopyPublishes(projectRoot) {
535
+ return !codeCheckoutCarriesSharedBuckets(projectRoot) && getBucketByName("backlog", projectRoot)?.archivePublished === true;
536
+ }
537
+ async function storageDriftRefusalAtPublication(projectRoot, remote) {
538
+ const ctx = resolvePlanningContextForRoot(projectRoot);
539
+ const refresh = await refreshDefaultBranchTracking(projectRoot, remote);
540
+ if (!refresh.ok) return { reason: refresh.reason, kind: "fetch-failed", blockCommit: false };
541
+ try {
542
+ await assertNoStorageDrift(ctx, { remote, defaultBranch: refresh.defaultBranch });
543
+ return void 0;
544
+ } catch (error) {
545
+ const reason = error instanceof Error ? error.message : String(error);
546
+ return { reason, kind: "storage-drift", blockCommit: true };
547
+ }
548
+ }
549
+ var UNPUBLISHED_EXIT_CODE = 2;
550
+ function reportUnpublishedOutcome(translated, reportPending) {
551
+ if (!translated.pendingWarning) return;
552
+ if (reportPending === "dispatcher") {
553
+ process.stderr.write(`Warning: ${translated.pendingWarning}
554
+ `);
555
+ }
556
+ const current = typeof process.exitCode === "number" ? process.exitCode : 0;
557
+ if (current < UNPUBLISHED_EXIT_CODE) process.exitCode = UNPUBLISHED_EXIT_CODE;
558
+ }
559
+ async function publishManagedSync(ctx, input) {
560
+ const storagePaths = resolveStoragePaths(ctx, input.paths);
561
+ const request = {
562
+ touchedPaths: storagePaths,
563
+ message: input.message,
564
+ ...input.verbose === void 0 ? {} : { verbose: input.verbose },
565
+ ...input.backlogGatePassed ? { backlogGatePassed: true } : {}
566
+ };
567
+ if (input.deferPublication) {
568
+ return { ...toDeferredSyncOutcome(await recordManagedChange(ctx, request)), storagePaths };
569
+ }
570
+ const result = await publishManagedChange(ctx, request);
571
+ const translated = toManagedSyncOutcome(result);
572
+ reportUnpublishedOutcome(translated, input.reportPending ?? "dispatcher");
573
+ return { ...translated, storagePaths };
574
+ }
575
+ async function dispatchManagedSync(projectRoot, input) {
576
+ const ctx = await beginManagedSync(projectRoot);
577
+ if (ctx.backend !== "git-branch") {
578
+ return { backend: ctx.backend, ctx, outcome: await input.legacySync() };
579
+ }
580
+ const published = await publishManagedSync(ctx, input);
581
+ return { backend: ctx.backend, ctx, ...published };
582
+ }
583
+
584
+ // src/planning/git-sync.ts
585
+ import { randomUUID } from "crypto";
586
+ import { existsSync } from "fs";
587
+ import path3 from "path";
588
+ import chalk from "chalk";
589
+
590
+ // src/core/git/commit-subject.ts
591
+ var MAX_BOOKKEEPING_SUBJECT_LENGTH = 62;
592
+ function capCommitSubject(subject, max = MAX_BOOKKEEPING_SUBJECT_LENGTH) {
593
+ const points = Array.from(subject);
594
+ if (points.length <= max) return subject;
595
+ const cut = points.slice(0, max).join("");
596
+ const atWord = points[max] === " " ? cut : cut.slice(0, Math.max(cut.lastIndexOf(" "), 0));
597
+ return (atWord || cut).replace(/[\s.,;:]+$/u, "");
598
+ }
599
+
600
+ // src/planning/managed-commit-message.ts
601
+ var CONVENTIONAL_SUBJECT = /^(build|chore|ci|docs|feat|fix|perf|refactor|revert|style|test)(\([^)]*\))?!?: /u;
602
+ var DOMAIN_SUBJECT = /^([a-z][a-z0-9-]*): (.+)$/u;
603
+ function styleManagedCommitMessage(message, style) {
604
+ const newline = message.indexOf("\n");
605
+ const subject = newline === -1 ? message : message.slice(0, newline);
606
+ const rest = newline === -1 ? "" : message.slice(newline);
607
+ if (style === "plain" || CONVENTIONAL_SUBJECT.test(subject))
608
+ return capCommitSubject(subject) + rest;
609
+ const domain = DOMAIN_SUBJECT.exec(subject);
610
+ const topic = domain ? `${domain[1]} ${domain[2]}` : subject;
611
+ return capCommitSubject(`chore(planning): ${topic}`) + rest;
612
+ }
613
+
614
+ // src/planning/git-sync.ts
615
+ var GENERATED_PLANNING_INDEX_CACHE_REL_PATH = ".build-project/planning/indexes";
616
+ function isDeferSyncEnabled() {
617
+ return readEnv(BUILD_DEFER_SYNC).value ?? false;
618
+ }
619
+ var BACKLOG_SYNC_WORKING_BRANCH_PREFIX = "chore/backlog-sync-";
620
+ async function assertManagedSyncBranch(projectRoot, branch) {
621
+ if (branch.startsWith(BACKLOG_SYNC_WORKING_BRANCH_PREFIX)) {
622
+ return;
623
+ }
624
+ const defaultBranch = await resolveManagedSyncDefaultBranch(projectRoot);
625
+ if (defaultBranch && branch === defaultBranch) return;
626
+ if (!defaultBranch) {
627
+ throw new ManagedSyncBranchError(
628
+ `Managed auto-sync refuses branch ${branch}; the repository default branch could not be established from origin/HEAD, main, or master`,
629
+ { branch, defaultBranch: "" }
630
+ );
631
+ }
632
+ throw new ManagedSyncBranchError(describeManagedSyncBranchRefusal(branch, defaultBranch), {
633
+ branch,
634
+ defaultBranch
635
+ });
636
+ }
637
+ async function verifyManagedSyncRebasePrecondition(projectRoot, managedCommitPaths) {
638
+ const unstaged = await runPlanningGit(["diff", "--quiet", "--"], {
639
+ cwd: projectRoot,
640
+ reject: false
641
+ });
642
+ if (unstaged.exitCode === 1) {
643
+ return { ok: false, reason: "rebase requires a clean worktree" };
644
+ }
645
+ if (unstaged.exitCode !== 0) {
646
+ return { ok: false, reason: "could not verify the clean worktree required for rebase" };
647
+ }
648
+ const staged = await runPlanningGit(["diff", "--cached", "--name-only", "-z"], {
649
+ cwd: projectRoot,
650
+ reject: false
651
+ });
652
+ if (staged.exitCode !== 0) {
653
+ return { ok: false, reason: "could not verify the staged paths required for rebase" };
654
+ }
655
+ const managedPathSet = new Set(managedCommitPaths);
656
+ const hasUnrelatedStagedPath = splitNulTerminatedPaths(staged.stdout).some(
657
+ (stagedPath) => !managedPathSet.has(stagedPath)
658
+ );
659
+ if (hasUnrelatedStagedPath) {
660
+ return { ok: false, reason: "rebase requires an index without unrelated staged changes" };
661
+ }
662
+ return { ok: true };
663
+ }
664
+ async function assertManagedSyncRepositoryState(projectRoot) {
665
+ for (const marker of ["rebase-merge", "rebase-apply"]) {
666
+ const markerResult = await runPlanningGit(["rev-parse", "--git-path", marker], {
667
+ cwd: projectRoot,
668
+ reject: false
669
+ });
670
+ if (markerResult.exitCode !== 0) continue;
671
+ const rawPath = markerResult.stdout.trim();
672
+ if (!rawPath) continue;
673
+ const markerPath = path3.isAbsolute(rawPath) ? rawPath : path3.resolve(projectRoot, rawPath);
674
+ if (existsSync(markerPath)) {
675
+ throw new ManagedSyncBranchError(
676
+ "Managed auto-sync refuses while a rebase is in progress; finish or abort the rebase first"
677
+ );
678
+ }
679
+ }
680
+ }
681
+ function isWithinRelPath(candidate, root) {
682
+ return candidate === root || candidate.startsWith(`${root}/`);
683
+ }
684
+ async function stageIgnoredTrackedPathsForSync(projectRoot, relRootPath) {
685
+ const trackedResult = await runPlanningGit(["ls-files", "-z", "--", relRootPath], {
686
+ cwd: projectRoot,
687
+ reject: false
688
+ });
689
+ if (trackedResult.exitCode !== 0 || trackedResult.stdout.length === 0) {
690
+ return [];
691
+ }
692
+ const trackedPaths = splitNulTerminatedPaths(trackedResult.stdout).filter(
693
+ (trackedPath) => isWithinRelPath(trackedPath, relRootPath)
694
+ );
695
+ if (trackedPaths.length === 0) {
696
+ return [];
697
+ }
698
+ const ignoredTrackedPaths = [];
699
+ for (const trackedPath of trackedPaths) {
700
+ const ignoreResult = await runPlanningGit(
701
+ ["check-ignore", "--no-index", "-q", "--", trackedPath],
702
+ {
703
+ cwd: projectRoot,
704
+ reject: false
705
+ }
706
+ );
707
+ if (ignoreResult.exitCode === 0) {
708
+ ignoredTrackedPaths.push(trackedPath);
709
+ }
710
+ }
711
+ if (ignoredTrackedPaths.length === 0) {
712
+ return [];
713
+ }
714
+ const rmResult = await runPlanningGit(
715
+ ["rm", "--cached", "--ignore-unmatch", "--", ...ignoredTrackedPaths],
716
+ {
717
+ cwd: projectRoot,
718
+ reject: false
719
+ }
720
+ );
721
+ if (rmResult.exitCode !== 0) {
722
+ return [];
723
+ }
724
+ return ignoredTrackedPaths;
725
+ }
726
+ async function stageGeneratedPlanningIndexCacheUntracking(projectRoot) {
727
+ return stageIgnoredTrackedPathsForSync(projectRoot, GENERATED_PLANNING_INDEX_CACHE_REL_PATH);
728
+ }
729
+ async function hasStagedChanges(projectRoot) {
730
+ const result = await runPlanningGit(["diff", "--cached", "--quiet"], {
731
+ cwd: projectRoot,
732
+ reject: false
733
+ });
734
+ return result.exitCode !== 0;
735
+ }
736
+ var ManagedSyncPathError = class extends Error {
737
+ detail;
738
+ paths;
739
+ /** Distinguishes a proven ignore refusal from a staging attempt outside Git. */
740
+ kind;
741
+ constructor(detail, paths, kind = "stage-failure") {
742
+ super(paths.length > 0 ? `${detail}: ${paths.join(", ")}` : detail);
743
+ this.name = "ManagedSyncPathError";
744
+ this.detail = detail;
745
+ this.paths = paths;
746
+ this.kind = kind;
747
+ }
748
+ };
749
+ function isRepositoryGitignoreSource(projectRoot, source) {
750
+ const resolvedSource = path3.resolve(projectRoot, source);
751
+ const relativeSource = path3.relative(path3.resolve(projectRoot), resolvedSource);
752
+ return source.length > 0 && path3.basename(resolvedSource) === ".gitignore" && relativeSource !== ".." && !relativeSource.startsWith(`..${path3.sep}`) && !path3.isAbsolute(relativeSource);
753
+ }
754
+ async function resolveSyncableManagedPaths(projectRoot, relativePaths) {
755
+ const resolved = { syncablePaths: [], unstageablePaths: [] };
756
+ for (const relativePath of relativePaths) {
757
+ const present = existsSync(path3.resolve(projectRoot, relativePath));
758
+ const probe = present ? { args: ["check-ignore", "-q", "--", relativePath], refusedExitCode: 0 } : { args: ["ls-files", "--error-unmatch", "--", relativePath], refusedExitCode: 1 };
759
+ const probed = await runPlanningGit(probe.args, { cwd: projectRoot, reject: false });
760
+ const refused = probed.exitCode === probe.refusedExitCode;
761
+ if (present && refused) {
762
+ const winningRule = await runPlanningGit(["check-ignore", "--stdin", "-v", "-z"], {
763
+ cwd: projectRoot,
764
+ input: `${relativePath}\0`,
765
+ reject: false
766
+ });
767
+ const source = winningRule.stdout.split("\0")[0] ?? "";
768
+ if (winningRule.exitCode !== 0 || !isRepositoryGitignoreSource(projectRoot, source)) {
769
+ throw new ManagedSyncPathError(
770
+ "Required managed paths are unexpectedly ignored outside repository .gitignore rules",
771
+ [relativePath],
772
+ "unexpected-ignore"
773
+ );
774
+ }
775
+ }
776
+ (refused ? resolved.unstageablePaths : resolved.syncablePaths).push(relativePath);
777
+ }
778
+ return resolved;
779
+ }
780
+ async function addManagedSyncPaths(projectRoot, paths) {
781
+ if (paths.length === 0) return;
782
+ const added = await runPlanningGit(["add", "--", ...paths], { cwd: projectRoot, reject: false });
783
+ if (added.exitCode !== 0) {
784
+ throw new ManagedSyncPathError("git add failed for managed paths", paths);
785
+ }
786
+ }
787
+ async function stageManagedSyncPaths(projectRoot, relativePaths, hadPreexistingStagedChanges) {
788
+ const captured = await captureManagedSyncStaging(
789
+ projectRoot,
790
+ relativePaths,
791
+ hadPreexistingStagedChanges
792
+ );
793
+ await addManagedSyncPaths(projectRoot, relativePaths);
794
+ const generatedCacheUntrackedPaths = hadPreexistingStagedChanges ? [] : await stageGeneratedPlanningIndexCacheUntracking(projectRoot);
795
+ return {
796
+ stagingState: {
797
+ overlappingStagedSnapshots: captured.overlappingStagedSnapshots,
798
+ pathsStagedByThisSync: [...captured.pathsThisSyncWillStage, ...generatedCacheUntrackedPaths]
799
+ },
800
+ generatedCacheUntrackedPaths
801
+ };
802
+ }
803
+ async function verifyManagedSyncPushBoundary(projectRoot, remote, remoteBranch, preSyncHeadSha, remoteBranchExists, commitContext) {
804
+ if (!preSyncHeadSha) {
805
+ return {
806
+ ok: false,
807
+ reason: "could not resolve the pre-sync commit",
808
+ kind: "unresolved-base",
809
+ blockCommit: false
810
+ };
811
+ }
812
+ if (!isSafeGitRemoteAndRef(remote, remoteBranchExists ? remoteBranch : "HEAD")) {
813
+ return {
814
+ ok: false,
815
+ reason: "upstream remote or branch name is not a safe git identifier",
816
+ kind: "unresolved-base",
817
+ blockCommit: false
818
+ };
819
+ }
820
+ const drift = await storageDriftRefusalAtPublication(projectRoot, remote);
821
+ if (drift) return { ok: false, ...drift };
822
+ const fetchResult = await runPlanningGit(
823
+ remoteBranchExists ? ["fetch", "--", remote, remoteBranch] : ["fetch", "--", remote],
824
+ {
825
+ cwd: projectRoot,
826
+ reject: false
827
+ }
828
+ );
829
+ if (fetchResult.exitCode !== 0) {
830
+ return {
831
+ ok: false,
832
+ reason: `fetch failed: ${firstGitLine(fetchResult.stderr ?? fetchResult.stdout)}`,
833
+ kind: "fetch-failed",
834
+ blockCommit: false
835
+ };
836
+ }
837
+ const ancestryResult = remoteBranchExists ? await runPlanningGit(["merge-base", "--is-ancestor", preSyncHeadSha, "FETCH_HEAD"], {
838
+ cwd: projectRoot,
839
+ reject: false
840
+ }) : await runPlanningGit(
841
+ [
842
+ "for-each-ref",
843
+ "--format=%(refname)",
844
+ "--contains",
845
+ preSyncHeadSha,
846
+ `refs/remotes/${remote}/`
847
+ ],
848
+ { cwd: projectRoot, reject: false }
849
+ );
850
+ const baseIsPublished = ancestryResult.exitCode === 0 && (remoteBranchExists || ancestryResult.stdout.trim().length > 0);
851
+ if (!baseIsPublished) {
852
+ return {
853
+ ok: false,
854
+ reason: "the local branch already contained commits not present on the remote before managed sync",
855
+ kind: "unpublished-base",
856
+ blockCommit: true
857
+ };
858
+ }
859
+ if (remoteBranchExists && commitContext && !isRefspecPushTopology(commitContext.branch, remoteBranch)) {
860
+ const readiness = await verifyManagedSyncRebasePrecondition(projectRoot, commitContext.paths);
861
+ if (!readiness.ok) {
862
+ return { ...readiness, kind: "rebase-precondition", blockCommit: true };
863
+ }
864
+ }
865
+ return { ok: true };
866
+ }
867
+ async function readManagedSyncTarget(projectRoot, targetBranch) {
868
+ const git = (args) => runPlanningGit(args, { cwd: projectRoot, reject: false });
869
+ let current = await git(["branch", "--show-current"]);
870
+ if (!current.stdout.trim()) current = await git(["rev-parse", "--abbrev-ref", "HEAD"]);
871
+ const branch = current.exitCode === 0 ? current.stdout.trim() : "";
872
+ const upstream = await git(["rev-parse", "--abbrev-ref", `${branch}@{upstream}`]);
873
+ const hasUpstream = upstream.exitCode === 0;
874
+ const slash = upstream.stdout.trim().indexOf("/");
875
+ const remote = !targetBranch && hasUpstream && slash > 0 ? upstream.stdout.trim().slice(0, slash) : "origin";
876
+ const remoteBranch = targetBranch ?? (hasUpstream && slash > 0 ? upstream.stdout.trim().slice(slash + 1) : branch);
877
+ return { branch, remote, remoteBranch, hasUpstream };
878
+ }
879
+ var ManagedPublicationAcquisitionError = class extends Error {
880
+ outcome = { synced: false, status: "staged" };
881
+ constructor(cause) {
882
+ const detail = cause instanceof Error ? cause.message : String(cause);
883
+ super(`Not committed: local work preserved; sync incomplete (${detail})`, { cause });
884
+ this.name = "ManagedPublicationAcquisitionError";
885
+ }
886
+ };
887
+ async function prepareManagedSyncPublication(projectRoot, options = {}) {
888
+ const target = await readManagedSyncTarget(projectRoot, options.targetBranch);
889
+ if (options.prepareOnly || !isSafeGitRemoteAndRef(target.remote, target.remoteBranch))
890
+ return target;
891
+ const readDestination = async () => {
892
+ const result = await runPlanningGit(["remote", "get-url", "--push", "--all", target.remote], {
893
+ cwd: projectRoot,
894
+ reject: false
895
+ });
896
+ if (result.exitCode !== 0 && !isMissingRemoteError(result.stderr))
897
+ throw new Error("Cannot resolve managed publication destination");
898
+ const urls = result.stdout.trim().split(/\r?\n/).filter(Boolean);
899
+ const repositories = urls.map(repositoryFromGitHubRemoteUrl);
900
+ if (urls.length > 1 && repositories.some(Boolean))
901
+ throw new Error("Managed publication requires one GitHub push destination");
902
+ return repositories[0]?.toLowerCase();
903
+ };
904
+ const repository = await readDestination();
905
+ if (!repository) return target;
906
+ if (!options.targetBranch) await assertManagedSyncBranch(projectRoot, target.branch);
907
+ const { acquirePublicationTurn } = await import("./publication-turn-S42RZTQF.js");
908
+ const turn = await acquirePublicationTurn({
909
+ repository,
910
+ targetBranch: target.remoteBranch,
911
+ ownerId: options.ownerId ?? `managed-sync:${randomUUID()}`,
912
+ recover: Boolean(options.ownerId)
913
+ }).catch((cause) => {
914
+ throw new ManagedPublicationAcquisitionError(cause);
915
+ });
916
+ try {
917
+ await turn.assertOwned();
918
+ const fresh = await readManagedSyncTarget(projectRoot, options.targetBranch);
919
+ if (JSON.stringify(fresh) !== JSON.stringify(target) || await readDestination() !== repository)
920
+ throw new Error("Managed publication destination changed while waiting; retry sync");
921
+ return { ...fresh, turn };
922
+ } catch (error) {
923
+ await turn.release();
924
+ throw error;
925
+ }
926
+ }
927
+ async function syncPlanningFiles(projectRoot, filePaths, commitMessage, options = {}) {
928
+ if (options.deferPublication && codeCheckoutCarriesSharedBuckets(projectRoot)) {
929
+ return { synced: false, status: "skipped" };
930
+ }
931
+ const dispatched = await dispatchManagedSync(projectRoot, {
932
+ paths: filePaths,
933
+ message: commitMessage,
934
+ verbose: options.silent !== true,
935
+ ...options.deferPublication ? { deferPublication: true } : {},
936
+ legacySync: () => syncPlanningFilesInCheckout(projectRoot, filePaths, commitMessage, options)
937
+ });
938
+ return dispatched.outcome;
939
+ }
940
+ async function syncPlanningFilesInCheckout(projectRoot, filePaths, commitMessage, options) {
941
+ const emitWarning = (message) => {
942
+ if (options.warningsToStderr) {
943
+ console.error(chalk.yellow(` ${message}`));
944
+ } else if (!options.silent) {
945
+ console.log(chalk.yellow(` ${message}`));
946
+ }
947
+ };
948
+ const warnOrThrow = (message) => {
949
+ if (options.strict) {
950
+ throw new Error(message);
951
+ }
952
+ emitWarning(message);
953
+ };
954
+ const warnOrThrowRemoteSync = (message) => {
955
+ if (options.strict && !options.allowPushFailure) {
956
+ throw new Error(message);
957
+ }
958
+ emitWarning(message);
959
+ };
960
+ let turn;
961
+ const stagingState = {
962
+ pathsStagedByThisSync: [],
963
+ overlappingStagedSnapshots: []
964
+ };
965
+ try {
966
+ const relativePaths = [
967
+ ...new Set(filePaths.map((fp) => toRepoRelativePath(projectRoot, fp)))
968
+ ].filter((fp) => fp.length > 0);
969
+ if (relativePaths.length === 0) {
970
+ if (options.strict && options.requireStagedChanges) {
971
+ throw new Error("Sync made no staged changes: no managed paths were provided");
972
+ }
973
+ return { synced: false, status: "skipped" };
974
+ }
975
+ const publication = await prepareManagedSyncPublication(projectRoot);
976
+ turn = publication.turn;
977
+ const { branch, remote, remoteBranch, hasUpstream } = publication;
978
+ await assertManagedSyncRepositoryState(projectRoot);
979
+ const { syncablePaths } = await resolveSyncableManagedPaths(projectRoot, relativePaths);
980
+ const homePathRefusal = await findEmbeddedHomePathRefusal(projectRoot, syncablePaths);
981
+ if (homePathRefusal) {
982
+ warnOrThrow(homePathRefusal);
983
+ return { synced: false, status: "skipped" };
984
+ }
985
+ const hadPreexistingStagedChanges = await hasStagedChanges(projectRoot);
986
+ const capturedStaging = await captureManagedSyncStaging(
987
+ projectRoot,
988
+ syncablePaths,
989
+ hadPreexistingStagedChanges
990
+ );
991
+ const pathsThisSyncWillStage = capturedStaging.pathsThisSyncWillStage;
992
+ stagingState.overlappingStagedSnapshots = capturedStaging.overlappingStagedSnapshots;
993
+ const generatedCacheUntrackedPaths = hadPreexistingStagedChanges ? [] : await stageGeneratedPlanningIndexCacheUntracking(projectRoot);
994
+ const canCommitAllStaged = generatedCacheUntrackedPaths.length > 0;
995
+ const commitPaths = [...syncablePaths, ...generatedCacheUntrackedPaths];
996
+ const commitManagedPaths = async () => {
997
+ await turn?.assertOwned();
998
+ const { resolveGitMessageStyle } = await import("./git-message-style-KCXGMTDT.js");
999
+ const message = styleManagedCommitMessage(commitMessage, resolveGitMessageStyle(projectRoot));
1000
+ return runPlanningGit(
1001
+ canCommitAllStaged ? ["commit", "-m", message] : ["commit", "-m", message, "--", ...commitPaths],
1002
+ { cwd: projectRoot, reject: false, timeoutMs: GIT_HOOK_COMMIT_TIMEOUT_MS }
1003
+ );
1004
+ };
1005
+ if (commitPaths.length === 0) {
1006
+ if (options.strict && options.requireStagedChanges) {
1007
+ throw new Error(
1008
+ `Sync made no staged changes for ignored paths: ${relativePaths.join(", ")}`
1009
+ );
1010
+ }
1011
+ return { synced: false, status: "skipped" };
1012
+ }
1013
+ await addManagedSyncPaths(projectRoot, syncablePaths);
1014
+ stagingState.pathsStagedByThisSync = [
1015
+ ...pathsThisSyncWillStage,
1016
+ ...generatedCacheUntrackedPaths
1017
+ ];
1018
+ const diffResult = await runPlanningGit(
1019
+ canCommitAllStaged ? ["diff", "--cached", "--quiet"] : ["diff", "--cached", "--quiet", "--", ...commitPaths],
1020
+ {
1021
+ cwd: projectRoot,
1022
+ reject: false
1023
+ }
1024
+ );
1025
+ if (diffResult.exitCode === 0) {
1026
+ if (options.strict && options.requireStagedChanges) {
1027
+ throw new Error(`Sync made no staged changes for: ${commitPaths.join(", ")}`);
1028
+ }
1029
+ return { synced: false, status: "skipped" };
1030
+ }
1031
+ if (!branch || branch === "HEAD") {
1032
+ throw new ManagedSyncBranchError(
1033
+ "Managed auto-sync refuses a detached HEAD; check out an eligible branch first"
1034
+ );
1035
+ }
1036
+ await assertManagedSyncBranch(projectRoot, branch);
1037
+ if (!isSafeGitRemoteAndRef(remote, remoteBranch)) {
1038
+ const unsafeCommit = await commitManagedPaths();
1039
+ if (unsafeCommit.exitCode !== 0) {
1040
+ warnOrThrow(`Commit failed: ${unsafeCommit.stderr?.split("\n")[0] ?? "unknown"}`);
1041
+ return { synced: false, status: "failed" };
1042
+ }
1043
+ warnOrThrowRemoteSync(
1044
+ "Committed locally but upstream remote or branch name is not a safe git identifier - push skipped"
1045
+ );
1046
+ return { synced: false, status: "local-only" };
1047
+ }
1048
+ const { preSyncHeadSha, remoteBranchResult, remoteBranchExists } = await readManagedSyncPublicationBase(projectRoot, remote, remoteBranch);
1049
+ if (remoteBranchResult.exitCode !== 0 && isMissingRemoteError(`${remoteBranchResult.stderr ?? ""}
1050
+ ${remoteBranchResult.stdout ?? ""}`)) {
1051
+ const offlineCommit = await commitManagedPaths();
1052
+ if (offlineCommit.exitCode !== 0) {
1053
+ warnOrThrow(`Commit failed: ${offlineCommit.stderr?.split("\n")[0] ?? "unknown"}`);
1054
+ return { synced: false, status: "failed" };
1055
+ }
1056
+ warnOrThrowRemoteSync("Committed locally; no remote repository configured - push skipped");
1057
+ return offlineOutcome(await isRemoteConfigured(projectRoot, remote));
1058
+ }
1059
+ const pushBoundary = await verifyManagedSyncPushBoundary(
1060
+ projectRoot,
1061
+ remote,
1062
+ remoteBranch,
1063
+ preSyncHeadSha,
1064
+ remoteBranchExists,
1065
+ { branch, paths: commitPaths }
1066
+ );
1067
+ if (!pushBoundary.ok && pushBoundary.blockCommit) {
1068
+ warnOrThrowRemoteSync(
1069
+ `Not committed: ${pushBoundary.reason} - managed changes left staged, push skipped`
1070
+ );
1071
+ return { synced: false, status: "staged" };
1072
+ }
1073
+ const refspecTopology = isRefspecPushTopology(branch, remoteBranch);
1074
+ const commitResult = await commitManagedPaths();
1075
+ if (commitResult.exitCode !== 0) {
1076
+ warnOrThrow(`Commit failed: ${commitResult.stderr?.split("\n")[0] ?? "unknown"}`);
1077
+ return { synced: false, status: "failed" };
1078
+ }
1079
+ if (!pushBoundary.ok) {
1080
+ warnOrThrowRemoteSync(`Committed locally but ${pushBoundary.reason} - push skipped`);
1081
+ return { synced: false, status: "local-only" };
1082
+ }
1083
+ const pushed = await pushManagedCommitWithRetry({
1084
+ projectRoot,
1085
+ remote,
1086
+ remoteBranch,
1087
+ hasUpstream,
1088
+ remoteBranchExists,
1089
+ refspecTopology,
1090
+ preSyncHeadSha,
1091
+ commitPaths,
1092
+ verifyPaths: syncablePaths,
1093
+ turn,
1094
+ refreshBoundary: () => verifyManagedSyncPushBoundary(projectRoot, remote, remoteBranch, preSyncHeadSha, true)
1095
+ });
1096
+ if (pushed.kind === "synced") {
1097
+ if (!options.silent) {
1098
+ console.log(chalk.gray(" Synced to remote"));
1099
+ }
1100
+ return { synced: true, status: "synced" };
1101
+ }
1102
+ if (pushed.kind === "push-failed" && pushed.missingRemote) {
1103
+ warnOrThrowRemoteSync("Committed locally; no remote repository configured - push skipped");
1104
+ return offlineOutcome(await isRemoteConfigured(projectRoot, remote));
1105
+ }
1106
+ warnOrThrowRemoteSync(pushed.message);
1107
+ return { synced: false, status: pushed.kind === "unverified" ? "unverified" : "local-only" };
1108
+ } catch (error) {
1109
+ if (error instanceof ManagedPublicationAcquisitionError && !options.strict) {
1110
+ emitWarning(error.message);
1111
+ return error.outcome;
1112
+ }
1113
+ if (isManagedSyncBranchError(error)) {
1114
+ await abandonManagedSyncStaging(projectRoot, stagingState);
1115
+ throw error;
1116
+ }
1117
+ if (options.strict || error instanceof ManagedSyncPathError && (error.kind === "unexpected-ignore" || await isInsideGitWorkTree(projectRoot))) {
1118
+ throw error;
1119
+ }
1120
+ emitWarning(`Auto-sync failed: ${error.message?.split("\n")[0] ?? "unknown error"}`);
1121
+ return { synced: false, status: "failed" };
1122
+ } finally {
1123
+ await turn?.release();
1124
+ }
1125
+ }
1126
+ async function isRemoteConfigured(projectRoot, remote) {
1127
+ const result = await runPlanningGit(["config", "--get", `remote.${remote}.url`], {
1128
+ cwd: projectRoot,
1129
+ reject: false
1130
+ });
1131
+ return result.exitCode === 0 && result.stdout.trim().length > 0;
1132
+ }
1133
+ function offlineOutcome(remoteConfigured) {
1134
+ return remoteConfigured ? { synced: false, status: "local-only" } : { synced: false, status: "local-only", noRemote: true };
1135
+ }
1136
+ async function isInsideGitWorkTree(projectRoot) {
1137
+ const result = await runPlanningGit(["rev-parse", "--is-inside-work-tree"], {
1138
+ cwd: projectRoot,
1139
+ reject: false
1140
+ }).catch(() => void 0);
1141
+ return result?.exitCode === 0 && result.stdout.trim() === "true";
1142
+ }
1143
+ var CHECKOUT_UNPUBLISHED_STATUSES = /* @__PURE__ */ new Set([
1144
+ "failed",
1145
+ "local-only",
1146
+ "staged",
1147
+ "unverified"
1148
+ ]);
1149
+ async function syncManagedItemFiles(projectRoot, filePaths, commitMessage, options = {}) {
1150
+ if (options.sync === false) {
1151
+ return { synced: false };
1152
+ }
1153
+ const deferred = isDeferSyncEnabled();
1154
+ if (deferred && codeCheckoutCarriesSharedBuckets(projectRoot)) {
1155
+ return { synced: false };
1156
+ }
1157
+ try {
1158
+ const dispatched = await dispatchManagedSync(projectRoot, {
1159
+ paths: filePaths,
1160
+ message: commitMessage,
1161
+ verbose: options.silent !== true,
1162
+ ...deferred ? { deferPublication: true } : {},
1163
+ legacySync: () => syncPlanningFilesInCheckout(projectRoot, filePaths, commitMessage, {
1164
+ silent: options.silent ?? false,
1165
+ warningsToStderr: options.warningsToStderr ?? false
1166
+ })
1167
+ });
1168
+ if (dispatched.reason && !dispatched.outcome.synced) {
1169
+ const message = `Managed publication ${dispatched.outcome.status}: ${dispatched.reason}`;
1170
+ if (options.warningsToStderr) console.error(chalk.yellow(` ${message}`));
1171
+ else if (!options.silent) console.log(chalk.yellow(` ${message}`));
1172
+ }
1173
+ const unpublished = dispatched.backend !== "git-branch" && !dispatched.outcome.noRemote && CHECKOUT_UNPUBLISHED_STATUSES.has(dispatched.outcome.status) && await isInsideGitWorkTree(projectRoot);
1174
+ return unpublished ? { synced: dispatched.outcome.synced, unpublished: true } : { synced: dispatched.outcome.synced };
1175
+ } catch (error) {
1176
+ if (!isManagedSyncBranchError(error)) {
1177
+ throw error;
1178
+ }
1179
+ if (options.warningsToStderr) {
1180
+ console.error(chalk.yellow(` ${formatManagedSyncBranchError(error)}`));
1181
+ } else if (!options.silent) {
1182
+ console.log(chalk.yellow(` ${formatManagedSyncBranchError(error)}`));
1183
+ }
1184
+ return { synced: false, syncStatus: "refused-branch" };
1185
+ }
1186
+ }
1187
+
1188
+ export {
1189
+ runPlanningGit,
1190
+ readManagedSyncPublicationBase,
1191
+ abandonManagedSyncStaging,
1192
+ verifyRemoteSyncPush,
1193
+ isRefspecPushTopology,
1194
+ isMissingRemoteError,
1195
+ resolveManagedSyncPushCandidate,
1196
+ pushManagedCommitWithRetry,
1197
+ capCommitSubject,
1198
+ toStorageRelativePath,
1199
+ beginManagedSync,
1200
+ codeCheckoutCarriesSharedBuckets,
1201
+ backlogArchiveCopyPublishes,
1202
+ publishManagedSync,
1203
+ isDeferSyncEnabled,
1204
+ assertManagedSyncBranch,
1205
+ assertManagedSyncRepositoryState,
1206
+ hasStagedChanges,
1207
+ ManagedSyncPathError,
1208
+ resolveSyncableManagedPaths,
1209
+ stageManagedSyncPaths,
1210
+ verifyManagedSyncPushBoundary,
1211
+ ManagedPublicationAcquisitionError,
1212
+ prepareManagedSyncPublication,
1213
+ syncPlanningFiles,
1214
+ isInsideGitWorkTree,
1215
+ syncManagedItemFiles
1216
+ };
1217
+ //# sourceMappingURL=chunk-TRURQUBP.js.map