@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,1162 @@
1
+ import {
2
+ normalizeRef
3
+ } from "./chunk-P5P2EKGH.js";
4
+ import {
5
+ assertSharedBucketsReadable
6
+ } from "./chunk-AJBTKGJZ.js";
7
+ import {
8
+ getBucketArchivePath,
9
+ getBucketArchivePathByKind,
10
+ getBucketPath,
11
+ getBucketPathByKind,
12
+ getBuckets,
13
+ listEnabledBuckets
14
+ } from "./chunk-V3KLVK7B.js";
15
+ import {
16
+ resolvePlanningContextForRoot
17
+ } from "./chunk-BBPIILO2.js";
18
+ import {
19
+ isSafeGitRef,
20
+ isSafeGitRemote
21
+ } from "./chunk-D2M2Y5ID.js";
22
+ import {
23
+ parseJsonWithContext
24
+ } from "./chunk-P6SSWAKY.js";
25
+ import {
26
+ parsePorcelainLinePaths
27
+ } from "./chunk-5KQETTNS.js";
28
+ import {
29
+ ensureDirectoryExists,
30
+ listMarkdownFiles,
31
+ listMarkdownFilesRecursive,
32
+ readMarkdownFile
33
+ } from "./chunk-352PCJLK.js";
34
+ import {
35
+ SHARED_BUCKET_NAMES,
36
+ emitCustomWarning,
37
+ emitWarning
38
+ } from "./chunk-7VRJHTGZ.js";
39
+
40
+ // src/planning/indexer.ts
41
+ import { execSync } from "child_process";
42
+ import { createHash as createHash2 } from "crypto";
43
+ import { readFileSync } from "fs";
44
+ import * as fs from "fs/promises";
45
+ import * as path3 from "path";
46
+
47
+ // src/planning/index-front-matter.ts
48
+ function createMemoizedFrontMatterReader() {
49
+ const reads = /* @__PURE__ */ new Map();
50
+ return (file) => {
51
+ let read = reads.get(file);
52
+ if (!read) {
53
+ read = readMarkdownFile(file).then(({ frontMatter }) => frontMatter);
54
+ reads.set(file, read);
55
+ }
56
+ return read;
57
+ };
58
+ }
59
+
60
+ // src/planning/storage/index-fingerprint.ts
61
+ import { createHash } from "crypto";
62
+ import * as path2 from "path";
63
+
64
+ // src/planning/storage/bucket-scope.ts
65
+ import { realpathSync } from "fs";
66
+ import * as path from "path";
67
+ var SHARED_BUCKETS = new Set(SHARED_BUCKET_NAMES);
68
+ function isSharedBucketName(name) {
69
+ return SHARED_BUCKETS.has(name);
70
+ }
71
+ function bucketRootForKind(ctx, kind) {
72
+ return isSharedBucketName(kind) ? ctx.storageRoot : ctx.projectRoot;
73
+ }
74
+ function findBucketConfig(ctx, kind) {
75
+ const normalized = kind.toLowerCase().trim();
76
+ return getBuckets(ctx.projectRoot).find((bucket) => bucket.name === normalized);
77
+ }
78
+ function bucketArchiveRootForContext(ctx, kind) {
79
+ const bucket = findBucketConfig(ctx, kind);
80
+ if (!bucket) {
81
+ throw new Error(`Unknown bucket kind: ${kind}`);
82
+ }
83
+ return getBucketArchivePath(bucket, bucketRootForKind(ctx, kind));
84
+ }
85
+ function bucketArchiveRootUnderBucket(ctx, kind, bucketDir) {
86
+ const bucket = findBucketConfig(ctx, kind);
87
+ return bucket ? getBucketArchivePath(bucket, bucketRootForKind(ctx, kind)) : path.join(bucketDir, "archive");
88
+ }
89
+ function bucketArchiveRootForProjectRoot(projectRoot, kind, bucketDir) {
90
+ return bucketArchiveRootUnderBucket(resolvePlanningContextForRoot(projectRoot), kind, bucketDir);
91
+ }
92
+ function groupFor(buckets, root) {
93
+ let canonicalRoot;
94
+ try {
95
+ canonicalRoot = realpathSync.native(root);
96
+ } catch {
97
+ return null;
98
+ }
99
+ const relativePaths = /* @__PURE__ */ new Set();
100
+ for (const bucket of buckets) {
101
+ for (const absolute of [
102
+ getBucketPath(bucket, canonicalRoot),
103
+ getBucketArchivePath(bucket, canonicalRoot)
104
+ ]) {
105
+ const relative3 = path.relative(canonicalRoot, absolute).replace(/\\/g, "/");
106
+ if (relative3.length > 0 && !relative3.startsWith("..")) {
107
+ relativePaths.add(relative3);
108
+ }
109
+ }
110
+ }
111
+ return { root: canonicalRoot, relativePaths: Array.from(relativePaths).sort() };
112
+ }
113
+ function sharedBucketPathspecs(ctx) {
114
+ const buckets = getBuckets(ctx.projectRoot).filter((bucket) => isSharedBucketName(bucket.name));
115
+ return groupFor(buckets, ctx.storageRoot);
116
+ }
117
+ function localBucketPathspecs(ctx) {
118
+ const buckets = getBuckets(ctx.projectRoot).filter((bucket) => !isSharedBucketName(bucket.name));
119
+ return groupFor(buckets, ctx.projectRoot);
120
+ }
121
+
122
+ // src/planning/storage/index-fingerprint.ts
123
+ var CLEAN_PLANNING_TREE_SIGNATURE = "clean";
124
+ function computeBucketLayoutSignature(ctx) {
125
+ let buckets;
126
+ try {
127
+ buckets = getBuckets(ctx.projectRoot);
128
+ } catch {
129
+ return null;
130
+ }
131
+ const rows = buckets.map(
132
+ (bucket) => [bucket.name, bucket.path, bucket.archivePath, bucket.archivePublished, bucket.shared].join(
133
+ " "
134
+ )
135
+ ).sort();
136
+ return createHash("sha256").update(
137
+ [
138
+ `backend:${ctx.backend}`,
139
+ `branch:${ctx.branch ?? ""}`,
140
+ `worktree:${ctx.worktree ?? ""}`,
141
+ ...rows
142
+ ].join("\n")
143
+ ).digest("hex");
144
+ }
145
+ function shellQuotePathspec(value) {
146
+ return `'${value.replace(/'/g, `'\\''`)}'`;
147
+ }
148
+ function parseDirtyStatusPaths(normalizedStatus) {
149
+ const paths = /* @__PURE__ */ new Set();
150
+ for (const line of normalizedStatus.split("\n")) {
151
+ for (const normalizedPath of parsePorcelainLinePaths(line)) {
152
+ if (normalizedPath.length > 0 && !path2.isAbsolute(normalizedPath) && !normalizedPath.split("/").includes("..")) {
153
+ paths.add(normalizedPath);
154
+ }
155
+ }
156
+ }
157
+ return Array.from(paths).sort();
158
+ }
159
+ function computeGroupDirtySignature(group, probes) {
160
+ if (group === null) {
161
+ return null;
162
+ }
163
+ if (group.relativePaths.length === 0) {
164
+ return CLEAN_PLANNING_TREE_SIGNATURE;
165
+ }
166
+ const output = probes.status(group.root, group.relativePaths);
167
+ if (output === null) {
168
+ return null;
169
+ }
170
+ const normalizedStatus = output.split(/\r?\n/u).map((line) => line.trimEnd()).filter((line) => line.length > 0).sort().join("\n");
171
+ if (normalizedStatus.length === 0) {
172
+ return CLEAN_PLANNING_TREE_SIGNATURE;
173
+ }
174
+ const dirtyFileHashes = parseDirtyStatusPaths(normalizedStatus).map(
175
+ (dirtyPath) => `${dirtyPath}:${probes.hashFile(group.root, dirtyPath)}`
176
+ );
177
+ return createHash("sha256").update([normalizedStatus, ...dirtyFileHashes].join("\n")).digest("hex");
178
+ }
179
+ function composePlanningDirtySignature(shared, local, extra = []) {
180
+ if (shared === null || local === null) {
181
+ return null;
182
+ }
183
+ if (extra.length === 0 && shared === CLEAN_PLANNING_TREE_SIGNATURE && local === CLEAN_PLANNING_TREE_SIGNATURE) {
184
+ return CLEAN_PLANNING_TREE_SIGNATURE;
185
+ }
186
+ return createHash("sha256").update([`shared:${shared}`, `local:${local}`, ...extra].join("\n")).digest("hex");
187
+ }
188
+ function computePlanningDirtySignature(ctx, probes) {
189
+ let shared;
190
+ let local;
191
+ const extra = [];
192
+ try {
193
+ shared = computeGroupDirtySignature(sharedBucketPathspecs(ctx), probes);
194
+ local = computeGroupDirtySignature(localBucketPathspecs(ctx), probes);
195
+ if (ctx.backend === "git-branch") {
196
+ const layout = computeBucketLayoutSignature(ctx);
197
+ const codeRevision = probes.headRevision?.(ctx.projectRoot) ?? null;
198
+ if (layout === null || codeRevision === null) return null;
199
+ extra.push(`layout:${layout}`, `codeRevision:${codeRevision}`);
200
+ }
201
+ } catch {
202
+ return null;
203
+ }
204
+ return composePlanningDirtySignature(shared, local, extra);
205
+ }
206
+ function isPlanningIndexStale(inputs) {
207
+ if (!inputs.currentRevision) {
208
+ return false;
209
+ }
210
+ if (typeof inputs.indexRevision !== "string" || inputs.indexRevision.length === 0) {
211
+ return true;
212
+ }
213
+ if (inputs.currentRevision !== inputs.indexRevision) {
214
+ return true;
215
+ }
216
+ if (inputs.currentDirtySignature === null || inputs.currentDirtySignature === void 0) {
217
+ return true;
218
+ }
219
+ if (typeof inputs.indexDirtySignature !== "string") {
220
+ return inputs.currentDirtySignature !== CLEAN_PLANNING_TREE_SIGNATURE;
221
+ }
222
+ return inputs.currentDirtySignature !== inputs.indexDirtySignature;
223
+ }
224
+
225
+ // src/planning/indexer.ts
226
+ var GIT_TERMINAL_PROMPT_ENV = { ...process.env, GIT_TERMINAL_PROMPT: "0" };
227
+ var DEFAULT_GIT_TIMEOUT_MS = 5e3;
228
+ var warnedStaleIndexes = /* @__PURE__ */ new Set();
229
+ function coerceIndexNumber(value) {
230
+ if (typeof value === "number" && Number.isFinite(value)) return value;
231
+ if (typeof value === "string" && value.trim() !== "") {
232
+ const parsed = Number(value);
233
+ if (Number.isFinite(parsed)) return parsed;
234
+ }
235
+ return void 0;
236
+ }
237
+ function staleIndexWarningKey(indexName, index) {
238
+ const metadata = index;
239
+ return `${indexName}:${index.lastGitSha ?? "unknown"}:${metadata.planningDirtySignature ?? "unknown"}`;
240
+ }
241
+ async function writeIndexJson(indexFile, data) {
242
+ const content = JSON.stringify(data, null, 2);
243
+ const tempFile = path3.join(
244
+ path3.dirname(indexFile),
245
+ `.${path3.basename(indexFile)}.${process.pid}.${Date.now()}.tmp`
246
+ );
247
+ await fs.writeFile(tempFile, content, "utf8");
248
+ await fs.rename(tempFile, indexFile);
249
+ }
250
+ function hashDirtyPlanningFile(rootDir, dirtyPath) {
251
+ try {
252
+ const content = readFileSync(path3.join(rootDir, dirtyPath));
253
+ return createHash2("sha256").update(content).digest("hex");
254
+ } catch {
255
+ return "missing";
256
+ }
257
+ }
258
+ function indexMetadata(gitSha, planningDirtySignature) {
259
+ return {
260
+ generated: (/* @__PURE__ */ new Date()).toISOString(),
261
+ lastGitSha: gitSha,
262
+ ...planningDirtySignature !== null && planningDirtySignature !== void 0 ? { planningDirtySignature } : {}
263
+ };
264
+ }
265
+ async function getGitHeadSha(rootDir) {
266
+ return getGitHeadShaSync(rootDir);
267
+ }
268
+ function getGitHeadShaSync(rootDir) {
269
+ try {
270
+ const sha = execSync("git rev-parse HEAD", {
271
+ cwd: rootDir,
272
+ encoding: "utf8",
273
+ timeout: DEFAULT_GIT_TIMEOUT_MS,
274
+ env: GIT_TERMINAL_PROMPT_ENV,
275
+ stdio: ["ignore", "pipe", "ignore"]
276
+ }).trim();
277
+ return sha || null;
278
+ } catch {
279
+ return null;
280
+ }
281
+ }
282
+ async function getStorageRevision(rootDir) {
283
+ return getStorageRevisionSync(rootDir);
284
+ }
285
+ function getStorageRevisionSync(rootDir) {
286
+ return getGitHeadShaSync(resolvePlanningContextForRoot(rootDir).storageRoot);
287
+ }
288
+ function runPlanningStatusSync(root, relativePaths) {
289
+ try {
290
+ return execSync(
291
+ `git status --porcelain=v1 --untracked-files=all -- ${relativePaths.map(shellQuotePathspec).join(" ")}`,
292
+ {
293
+ cwd: root,
294
+ encoding: "utf8",
295
+ timeout: DEFAULT_GIT_TIMEOUT_MS,
296
+ env: GIT_TERMINAL_PROMPT_ENV,
297
+ stdio: ["ignore", "pipe", "ignore"]
298
+ }
299
+ );
300
+ } catch {
301
+ return null;
302
+ }
303
+ }
304
+ async function getPlanningDirtySignature(rootDir) {
305
+ return getPlanningDirtySignatureSync(rootDir);
306
+ }
307
+ function getPlanningDirtySignatureSync(rootDir) {
308
+ return computePlanningDirtySignature(resolvePlanningContextForRoot(rootDir), {
309
+ status: runPlanningStatusSync,
310
+ hashFile: hashDirtyPlanningFile,
311
+ headRevision: getGitHeadShaSync
312
+ });
313
+ }
314
+ async function checkGitDrift(rootDir, options = {}) {
315
+ try {
316
+ const remote = options.remote ?? "origin";
317
+ const branch = options.branch ?? "main";
318
+ const timeoutMs = options.timeoutMs ?? DEFAULT_GIT_TIMEOUT_MS;
319
+ if (!isSafeGitRemote(remote) || !isSafeGitRef(branch)) {
320
+ return null;
321
+ }
322
+ if (options.fetch) {
323
+ try {
324
+ execSync(`git fetch --quiet --no-tags ${remote} ${branch}`, {
325
+ cwd: rootDir,
326
+ stdio: "ignore",
327
+ timeout: timeoutMs,
328
+ env: GIT_TERMINAL_PROMPT_ENV
329
+ });
330
+ } catch {
331
+ }
332
+ }
333
+ const output = execSync(`git rev-list --left-right --count HEAD...${remote}/${branch}`, {
334
+ cwd: rootDir,
335
+ encoding: "utf8",
336
+ timeout: timeoutMs,
337
+ env: GIT_TERMINAL_PROMPT_ENV,
338
+ stdio: ["ignore", "pipe", "ignore"]
339
+ }).trim();
340
+ const [aheadStr, behindStr] = output.split(/\s+/);
341
+ const ahead = Number.parseInt(aheadStr || "0", 10);
342
+ const behind = Number.parseInt(behindStr || "0", 10);
343
+ return { ahead, behind };
344
+ } catch {
345
+ return null;
346
+ }
347
+ }
348
+ async function generateIndexes(rootDir) {
349
+ assertSharedBucketsReadable(resolvePlanningContextForRoot(rootDir));
350
+ const indexDir = path3.join(rootDir, ".build-project", "planning", "indexes");
351
+ await ensureDirectoryExists(indexDir);
352
+ const gitSha = await getStorageRevision(rootDir) ?? void 0;
353
+ const planningDirtySignature = await getPlanningDirtySignature(rootDir);
354
+ const read = createMemoizedFrontMatterReader();
355
+ await generateRefAliasIndex(rootDir, indexDir, read, gitSha, planningDirtySignature);
356
+ await generateBacklogByStatusIndex(rootDir, indexDir, read, gitSha, planningDirtySignature);
357
+ await generateBacklogByPriorityIndex(rootDir, indexDir, read, gitSha, planningDirtySignature);
358
+ await generateDebtBySeverityIndex(rootDir, indexDir, read, gitSha, planningDirtySignature);
359
+ await generateTasksBySprintIndex(rootDir, indexDir, read, gitSha, planningDirtySignature);
360
+ await generateBlockersIndex(rootDir, indexDir, read, gitSha, planningDirtySignature);
361
+ await generateParkingOverdueIndex(rootDir, indexDir, read, gitSha, planningDirtySignature);
362
+ await generateFindingsByStatusIndex(rootDir, indexDir, read, gitSha, planningDirtySignature);
363
+ await generateFindingsByFingerprintIndex(rootDir, indexDir, read, gitSha, planningDirtySignature);
364
+ await generateIssuesByStatusIndex(rootDir, indexDir, read, gitSha, planningDirtySignature);
365
+ await generateIssuesBySeverityIndex(rootDir, indexDir, read, gitSha, planningDirtySignature);
366
+ }
367
+ async function generateRefAliasIndex(rootDir, indexDir, read, gitSha, planningDirtySignature) {
368
+ const refs = {};
369
+ const aliases = {};
370
+ const collisions = [];
371
+ for (const bucket of listEnabledBuckets(rootDir)) {
372
+ const dirs = [
373
+ { dir: getBucketPathByKind(bucket.name, rootDir), isArchive: false },
374
+ { dir: getBucketArchivePathByKind(bucket.name, rootDir), isArchive: true }
375
+ ];
376
+ for (const { dir, isArchive } of dirs) {
377
+ const files = isArchive ? await listMarkdownFilesRecursive(dir) : await listMarkdownFiles(dir);
378
+ for (const file of files) {
379
+ if (path3.basename(file).toLowerCase() === "readme.md") {
380
+ continue;
381
+ }
382
+ try {
383
+ const frontMatter = await read(file);
384
+ const entry = {
385
+ id: frontMatter.id,
386
+ title: frontMatter.title,
387
+ status: frontMatter.status,
388
+ filePath: file,
389
+ priority: frontMatter.priority
390
+ };
391
+ if (entry.id) {
392
+ const normalizedId = normalizeRef(entry.id);
393
+ if (!refs[normalizedId]) {
394
+ refs[normalizedId] = entry;
395
+ }
396
+ if (!aliases[normalizedId]) {
397
+ aliases[normalizedId] = entry;
398
+ }
399
+ }
400
+ const ref = frontMatter.ref;
401
+ if (ref) {
402
+ const normalized = normalizeRef(ref);
403
+ const existing = refs[normalized];
404
+ if (existing && existing.id !== entry.id) {
405
+ collisions.push({ key: ref, items: [existing.id, entry.id] });
406
+ } else {
407
+ refs[normalized] = entry;
408
+ }
409
+ }
410
+ const aliasArray = frontMatter.aliases;
411
+ if (Array.isArray(aliasArray)) {
412
+ for (const alias of aliasArray) {
413
+ if (!alias) continue;
414
+ const normalized = normalizeRef(alias);
415
+ const existing = aliases[normalized];
416
+ if (existing && existing.id !== entry.id) {
417
+ collisions.push({ key: alias, items: [existing.id, entry.id] });
418
+ } else {
419
+ aliases[normalized] = entry;
420
+ }
421
+ }
422
+ }
423
+ } catch (error) {
424
+ emitWarning(
425
+ "CFG-002",
426
+ {
427
+ taskId: "indexer",
428
+ subsystem: "planning",
429
+ executionPhase: "execution"
430
+ },
431
+ {
432
+ severity: "INFO" /* INFO */,
433
+ metadata: {
434
+ error: error instanceof Error ? error.message : String(error),
435
+ file: path3.relative(rootDir, file),
436
+ operation: "generate-ref-alias-index"
437
+ }
438
+ }
439
+ );
440
+ }
441
+ }
442
+ }
443
+ }
444
+ if (collisions.length > 0) {
445
+ for (const collision of collisions) {
446
+ emitWarning(
447
+ "CFG-002",
448
+ {
449
+ taskId: "indexer",
450
+ subsystem: "planning",
451
+ executionPhase: "execution"
452
+ },
453
+ {
454
+ severity: "WARN" /* WARN */,
455
+ metadata: {
456
+ message: `Ref/alias collision detected: "${collision.key}"`,
457
+ conflictingItems: collision.items,
458
+ operation: "generate-ref-alias-index"
459
+ }
460
+ }
461
+ );
462
+ }
463
+ }
464
+ const indexFile = path3.join(indexDir, "ref-alias.json");
465
+ await writeIndexJson(indexFile, {
466
+ ...indexMetadata(gitSha, planningDirtySignature),
467
+ refs,
468
+ aliases
469
+ });
470
+ }
471
+ async function generateBacklogByStatusIndex(rootDir, indexDir, read, gitSha, planningDirtySignature) {
472
+ const backlogDirs = [
473
+ getBucketPathByKind("backlog", rootDir),
474
+ getBucketArchivePathByKind("backlog", rootDir)
475
+ ];
476
+ const index = {
477
+ inbox: [],
478
+ reviewed: [],
479
+ done: [],
480
+ archived: []
481
+ };
482
+ for (const dir of backlogDirs) {
483
+ const isArchive = dir === backlogDirs[1];
484
+ const files = isArchive ? await listMarkdownFilesRecursive(dir) : await listMarkdownFiles(dir);
485
+ for (const file of files) {
486
+ if (path3.basename(file).toLowerCase() === "readme.md") {
487
+ continue;
488
+ }
489
+ try {
490
+ const frontMatter = await read(file);
491
+ const rawStatus = frontMatter.status || "unknown";
492
+ const status = rawStatus === "parked" ? "done" : rawStatus;
493
+ const entry = {
494
+ id: frontMatter.id,
495
+ title: frontMatter.title,
496
+ status,
497
+ priority: frontMatter.priority,
498
+ estimatedComplexity: frontMatter.estimatedComplexity,
499
+ domain: frontMatter.domain,
500
+ // Declared terminology is OPAQUE: indexed VERBATIM, never normalized.
501
+ declaredType: frontMatter.declaredType,
502
+ resolvedTaskTypeId: frontMatter.resolvedTaskTypeId,
503
+ filePath: path3.relative(rootDir, file)
504
+ };
505
+ const statusKey = status;
506
+ const bucketEntries = index[statusKey];
507
+ if (bucketEntries) bucketEntries.push(entry);
508
+ } catch (error) {
509
+ emitWarning(
510
+ "WS-003",
511
+ {
512
+ taskId: "planning-indexer",
513
+ subsystem: "planning",
514
+ executionPhase: "execution"
515
+ },
516
+ {
517
+ severity: "ERROR" /* ERROR */,
518
+ metadata: {
519
+ error: error instanceof Error ? error.message : String(error),
520
+ file: path3.relative(rootDir, file),
521
+ operation: "parse-backlog-by-status"
522
+ }
523
+ }
524
+ );
525
+ }
526
+ }
527
+ }
528
+ const indexFile = path3.join(indexDir, "backlog-by-status.json");
529
+ await writeIndexJson(indexFile, {
530
+ ...indexMetadata(gitSha, planningDirtySignature),
531
+ index
532
+ });
533
+ }
534
+ async function generateBacklogByPriorityIndex(rootDir, indexDir, read, gitSha, planningDirtySignature) {
535
+ const backlogDirs = [
536
+ getBucketPathByKind("backlog", rootDir),
537
+ getBucketArchivePathByKind("backlog", rootDir)
538
+ ];
539
+ const files = (await Promise.all(
540
+ backlogDirs.map(async (dir) => {
541
+ const isArchive = dir === backlogDirs[1];
542
+ return isArchive ? await listMarkdownFilesRecursive(dir) : await listMarkdownFiles(dir);
543
+ })
544
+ )).flat();
545
+ const index = {
546
+ P0: [],
547
+ P1: [],
548
+ P2: [],
549
+ P3: []
550
+ };
551
+ for (const file of files) {
552
+ if (path3.basename(file).toLowerCase() === "readme.md") {
553
+ continue;
554
+ }
555
+ try {
556
+ const frontMatter = await read(file);
557
+ const priority = frontMatter.priority || "P3";
558
+ const entry = {
559
+ id: frontMatter.id,
560
+ title: frontMatter.title,
561
+ status: frontMatter.status,
562
+ priority,
563
+ estimatedComplexity: coerceIndexNumber(frontMatter.estimatedComplexity),
564
+ estimatedHours: coerceIndexNumber(frontMatter.estimatedHours),
565
+ expectedRuntimeMinutes: coerceIndexNumber(frontMatter.expectedRuntimeMinutes),
566
+ filePath: path3.relative(rootDir, file)
567
+ };
568
+ const priorityKey = priority;
569
+ const bucketEntries = index[priorityKey];
570
+ if (bucketEntries) bucketEntries.push(entry);
571
+ } catch (error) {
572
+ emitWarning(
573
+ "WS-003",
574
+ {
575
+ taskId: "planning-indexer",
576
+ subsystem: "planning",
577
+ executionPhase: "execution"
578
+ },
579
+ {
580
+ severity: "ERROR" /* ERROR */,
581
+ metadata: {
582
+ error: error instanceof Error ? error.message : String(error),
583
+ file: path3.relative(rootDir, file),
584
+ operation: "parse-backlog-by-priority"
585
+ }
586
+ }
587
+ );
588
+ }
589
+ }
590
+ const indexFile = path3.join(indexDir, "backlog-by-priority.json");
591
+ await writeIndexJson(indexFile, {
592
+ ...indexMetadata(gitSha, planningDirtySignature),
593
+ index
594
+ });
595
+ }
596
+ async function generateDebtBySeverityIndex(rootDir, indexDir, read, gitSha, planningDirtySignature) {
597
+ const debtDir = getBucketPathByKind("tech-debt", rootDir);
598
+ const files = await listMarkdownFiles(debtDir);
599
+ const index = {
600
+ critical: [],
601
+ high: [],
602
+ medium: [],
603
+ low: []
604
+ };
605
+ for (const file of files) {
606
+ if (path3.basename(file).toLowerCase() === "readme.md") {
607
+ continue;
608
+ }
609
+ try {
610
+ const frontMatter = await read(file);
611
+ const severity = frontMatter.severity || "low";
612
+ const entry = {
613
+ id: frontMatter.id,
614
+ title: frontMatter.title,
615
+ status: frontMatter.status,
616
+ severity,
617
+ effort: frontMatter.effort,
618
+ blocking: frontMatter.blocking,
619
+ estimatedComplexity: coerceIndexNumber(frontMatter.estimatedComplexity),
620
+ estimatedHours: coerceIndexNumber(frontMatter.estimatedHours),
621
+ expectedRuntimeMinutes: coerceIndexNumber(frontMatter.expectedRuntimeMinutes),
622
+ filePath: path3.relative(rootDir, file)
623
+ };
624
+ const severityKey = severity;
625
+ const bucketEntries = index[severityKey];
626
+ if (bucketEntries) bucketEntries.push(entry);
627
+ } catch (error) {
628
+ emitWarning(
629
+ "WS-003",
630
+ {
631
+ taskId: "planning-indexer",
632
+ subsystem: "planning",
633
+ executionPhase: "execution"
634
+ },
635
+ {
636
+ severity: "ERROR" /* ERROR */,
637
+ metadata: {
638
+ error: error instanceof Error ? error.message : String(error),
639
+ file: path3.relative(rootDir, file),
640
+ operation: "parse-debt-by-severity"
641
+ }
642
+ }
643
+ );
644
+ }
645
+ }
646
+ const indexFile = path3.join(indexDir, "debt-by-severity.json");
647
+ await writeIndexJson(indexFile, {
648
+ ...indexMetadata(gitSha, planningDirtySignature),
649
+ index
650
+ });
651
+ }
652
+ async function generateTasksBySprintIndex(rootDir, indexDir, read, gitSha, planningDirtySignature) {
653
+ const tasksDir = getBucketPathByKind("task", rootDir);
654
+ const files = await listMarkdownFilesRecursive(tasksDir);
655
+ const index = {};
656
+ for (const file of files) {
657
+ if (path3.basename(file).toLowerCase() === "readme.md") {
658
+ continue;
659
+ }
660
+ try {
661
+ const frontMatter = await read(file);
662
+ const sprintId = frontMatter.sprintId || frontMatter.originalSprintId || "unassigned";
663
+ const entry = {
664
+ id: frontMatter.id,
665
+ title: frontMatter.title,
666
+ status: frontMatter.status,
667
+ priority: frontMatter.priority,
668
+ complexity: coerceIndexNumber(frontMatter.complexity),
669
+ estimatedHours: coerceIndexNumber(frontMatter.estimatedHours),
670
+ expectedRuntimeMinutes: coerceIndexNumber(frontMatter.expectedRuntimeMinutes),
671
+ dependencies: frontMatter.dependencies,
672
+ filePath: path3.relative(rootDir, file)
673
+ };
674
+ let sprintEntries = index[sprintId];
675
+ if (!sprintEntries) {
676
+ sprintEntries = [];
677
+ index[sprintId] = sprintEntries;
678
+ }
679
+ sprintEntries.push(entry);
680
+ } catch (error) {
681
+ emitWarning(
682
+ "WS-003",
683
+ {
684
+ taskId: "planning-indexer",
685
+ subsystem: "planning",
686
+ executionPhase: "execution"
687
+ },
688
+ {
689
+ severity: "ERROR" /* ERROR */,
690
+ metadata: {
691
+ error: error instanceof Error ? error.message : String(error),
692
+ file: path3.relative(rootDir, file),
693
+ operation: "parse-tasks-by-sprint"
694
+ }
695
+ }
696
+ );
697
+ }
698
+ }
699
+ const indexFile = path3.join(indexDir, "tasks-by-sprint.json");
700
+ await writeIndexJson(indexFile, {
701
+ ...indexMetadata(gitSha, planningDirtySignature),
702
+ index
703
+ });
704
+ }
705
+ async function generateBlockersIndex(rootDir, indexDir, read, gitSha, planningDirtySignature) {
706
+ const dirs = [getBucketPathByKind("task", rootDir), getBucketPathByKind("tech-debt", rootDir)];
707
+ const entries = [];
708
+ for (const dir of dirs) {
709
+ const files = await listMarkdownFiles(dir);
710
+ for (const file of files) {
711
+ if (path3.basename(file).toLowerCase() === "readme.md") {
712
+ continue;
713
+ }
714
+ try {
715
+ const frontMatter = await read(file);
716
+ const hasBlockers = frontMatter.blockers && Array.isArray(frontMatter.blockers) && frontMatter.blockers.length > 0 || frontMatter.status === "blocked";
717
+ if (hasBlockers) {
718
+ const entry = {
719
+ id: frontMatter.id,
720
+ title: frontMatter.title,
721
+ status: frontMatter.status,
722
+ blockers: frontMatter.blockers || [],
723
+ blockingReason: frontMatter.blockingReason,
724
+ filePath: path3.relative(rootDir, file)
725
+ };
726
+ entries.push(entry);
727
+ }
728
+ } catch (error) {
729
+ emitWarning(
730
+ "WS-003",
731
+ {
732
+ taskId: "planning-indexer",
733
+ subsystem: "planning",
734
+ executionPhase: "execution"
735
+ },
736
+ {
737
+ severity: "ERROR" /* ERROR */,
738
+ metadata: {
739
+ error: error instanceof Error ? error.message : String(error),
740
+ file: path3.relative(rootDir, file),
741
+ operation: "parse-blockers"
742
+ }
743
+ }
744
+ );
745
+ }
746
+ }
747
+ }
748
+ const indexFile = path3.join(indexDir, "blockers.json");
749
+ await writeIndexJson(indexFile, {
750
+ ...indexMetadata(gitSha, planningDirtySignature),
751
+ entries
752
+ });
753
+ }
754
+ async function generateParkingOverdueIndex(rootDir, indexDir, read, gitSha, planningDirtySignature) {
755
+ const parkingDir = getBucketPathByKind("parking-lot", rootDir);
756
+ const files = await listMarkdownFiles(parkingDir);
757
+ const entries = [];
758
+ const now = /* @__PURE__ */ new Date();
759
+ for (const file of files) {
760
+ if (path3.basename(file).toLowerCase() === "readme.md") {
761
+ continue;
762
+ }
763
+ try {
764
+ const frontMatter = await read(file);
765
+ if (frontMatter.reconsiderDate) {
766
+ const reconsiderDate = new Date(frontMatter.reconsiderDate);
767
+ if (reconsiderDate <= now) {
768
+ const entry = {
769
+ id: frontMatter.id,
770
+ title: frontMatter.title,
771
+ status: frontMatter.status,
772
+ reconsiderDate: frontMatter.reconsiderDate,
773
+ deferralReason: frontMatter.deferralReason,
774
+ daysOverdue: Math.floor(
775
+ (now.getTime() - reconsiderDate.getTime()) / (1e3 * 60 * 60 * 24)
776
+ ),
777
+ filePath: path3.relative(rootDir, file)
778
+ };
779
+ entries.push(entry);
780
+ }
781
+ }
782
+ } catch (error) {
783
+ emitWarning(
784
+ "WS-003",
785
+ {
786
+ taskId: "planning-indexer",
787
+ subsystem: "planning",
788
+ executionPhase: "execution"
789
+ },
790
+ {
791
+ severity: "ERROR" /* ERROR */,
792
+ metadata: {
793
+ error: error instanceof Error ? error.message : String(error),
794
+ file: path3.relative(rootDir, file),
795
+ operation: "parse-parking-overdue"
796
+ }
797
+ }
798
+ );
799
+ }
800
+ }
801
+ entries.sort((a, b) => (b.daysOverdue || 0) - (a.daysOverdue || 0));
802
+ const indexFile = path3.join(indexDir, "parking-overdue.json");
803
+ await writeIndexJson(indexFile, {
804
+ ...indexMetadata(gitSha, planningDirtySignature),
805
+ entries
806
+ });
807
+ }
808
+ async function readIndex(rootDir, indexName, allowRegeneration = true) {
809
+ assertSharedBucketsReadable(resolvePlanningContextForRoot(rootDir));
810
+ const indexFile = path3.join(
811
+ rootDir,
812
+ ".build-project",
813
+ "planning",
814
+ "indexes",
815
+ `${indexName}.json`
816
+ );
817
+ try {
818
+ const content = await fs.readFile(indexFile, "utf-8");
819
+ const index = parseJsonWithContext(content, `planning index: ${indexName}`);
820
+ const currentSha = await getStorageRevision(rootDir);
821
+ const currentDirtySignature = await getPlanningDirtySignature(rootDir);
822
+ const needsRegeneration = await isIndexStale(rootDir, index, currentSha, currentDirtySignature);
823
+ if (needsRegeneration && allowRegeneration) {
824
+ await generateIndexes(rootDir);
825
+ const { clearIndexCache } = await import("./index-query-6NUY4FKX.js");
826
+ clearIndexCache();
827
+ warnedStaleIndexes.delete(staleIndexWarningKey(indexName, index));
828
+ return readIndex(rootDir, indexName, false);
829
+ }
830
+ if (needsRegeneration) {
831
+ await warnIfIndexStale(rootDir, indexName, index, currentSha, currentDirtySignature);
832
+ }
833
+ const prunedMissingEntries = await removeMissingEntriesFromIndex(index, rootDir);
834
+ if (prunedMissingEntries) {
835
+ await writeIndexJson(indexFile, index);
836
+ }
837
+ return index;
838
+ } catch {
839
+ return null;
840
+ }
841
+ }
842
+ async function findIndexDesyncEntries(rootDir) {
843
+ const indexDir = path3.join(rootDir, ".build-project", "planning", "indexes");
844
+ const indexFiles = [
845
+ "ref-alias.json",
846
+ "backlog-by-status.json",
847
+ "backlog-by-priority.json",
848
+ "debt-by-severity.json",
849
+ "tasks-by-sprint.json",
850
+ "blockers.json",
851
+ "parking-overdue.json",
852
+ "findings-by-status.json",
853
+ "findings-by-fingerprint.json",
854
+ "issues-by-status.json",
855
+ "issues-by-severity.json"
856
+ ];
857
+ const missing = [];
858
+ for (const indexFile of indexFiles) {
859
+ const indexPath = path3.join(indexDir, indexFile);
860
+ try {
861
+ const content = await fs.readFile(indexPath, "utf-8");
862
+ const indexData = JSON.parse(content);
863
+ let entries = [];
864
+ if (indexFile === "ref-alias.json") {
865
+ const refs = indexData.refs;
866
+ const aliases = indexData.aliases;
867
+ entries = [...Object.values(refs ?? {}), ...Object.values(aliases ?? {})];
868
+ } else if ("index" in indexData && typeof indexData.index === "object" && indexData.index !== null) {
869
+ const grouped = indexData.index;
870
+ entries = Object.values(grouped).flat();
871
+ } else if ("entries" in indexData && Array.isArray(indexData.entries)) {
872
+ entries = indexData.entries;
873
+ }
874
+ for (const entry of entries) {
875
+ if (!entry.filePath) continue;
876
+ const fullPath = path3.isAbsolute(entry.filePath) ? entry.filePath : path3.join(rootDir, entry.filePath);
877
+ try {
878
+ await fs.access(fullPath);
879
+ } catch {
880
+ missing.push({
881
+ indexFile,
882
+ id: entry.id || "unknown",
883
+ title: entry.title || "Unknown",
884
+ filePath: entry.filePath
885
+ });
886
+ }
887
+ }
888
+ } catch {
889
+ }
890
+ }
891
+ return missing;
892
+ }
893
+ async function warnIfIndexStale(rootDir, indexName, index, currentSha, currentDirtySignature) {
894
+ if (!await isIndexStale(rootDir, index, currentSha, currentDirtySignature)) {
895
+ return;
896
+ }
897
+ const warnKey = staleIndexWarningKey(indexName, index);
898
+ if (warnedStaleIndexes.has(warnKey)) {
899
+ return;
900
+ }
901
+ warnedStaleIndexes.add(warnKey);
902
+ const resolvedCurrentSha = currentSha ?? await getStorageRevision(rootDir);
903
+ const short = (sha) => sha ? `${sha.slice(0, 7)}\u2026` : "unknown";
904
+ if (currentDirtySignature === void 0) {
905
+ currentDirtySignature = await getPlanningDirtySignature(rootDir);
906
+ }
907
+ const dirtyMessage = currentDirtySignature && currentDirtySignature !== CLEAN_PLANNING_TREE_SIGNATURE ? "; planning bucket files have uncommitted changes" : "";
908
+ emitCustomWarning(
909
+ "WARN" /* WARN */,
910
+ "configuration" /* CONFIGURATION */,
911
+ `Planning index "${indexName}" is stale (generated ${index.generated} at ${short(index.lastGitSha)}; HEAD is ${short(resolvedCurrentSha)}${dirtyMessage}). Run 'build planning index' to regenerate.`,
912
+ {
913
+ subsystem: "planning",
914
+ executionPhase: "execution"
915
+ },
916
+ {
917
+ skipConsole: true,
918
+ metadata: {
919
+ taskId: "planning-indexer",
920
+ indexName,
921
+ generated: index.generated,
922
+ indexGitSha: index.lastGitSha ?? null,
923
+ currentGitSha: resolvedCurrentSha ?? null,
924
+ planningDirty: currentDirtySignature !== null && currentDirtySignature !== void 0 && currentDirtySignature !== CLEAN_PLANNING_TREE_SIGNATURE,
925
+ operation: "read-index-stale",
926
+ remediation: "build planning index"
927
+ }
928
+ }
929
+ );
930
+ }
931
+ async function isIndexStale(rootDir, index, currentSha, currentDirtySignature) {
932
+ const resolvedCurrentSha = currentSha ?? await getStorageRevision(rootDir);
933
+ const resolvedDirtySignature = currentDirtySignature === void 0 ? await getPlanningDirtySignature(rootDir) : currentDirtySignature;
934
+ return isPlanningIndexStale({
935
+ currentRevision: resolvedCurrentSha,
936
+ indexRevision: index.lastGitSha,
937
+ currentDirtySignature: resolvedDirtySignature,
938
+ indexDirtySignature: index.planningDirtySignature
939
+ });
940
+ }
941
+ async function removeMissingEntriesFromIndex(index, rootDir) {
942
+ let changed = false;
943
+ if ("entries" in index && Array.isArray(index.entries)) {
944
+ const filteredEntries = await filterEntriesByExistingPath(index.entries, rootDir);
945
+ changed = filteredEntries.length !== index.entries.length;
946
+ index.entries = filteredEntries;
947
+ return changed;
948
+ }
949
+ if ("index" in index && typeof index.index === "object" && index.index !== null) {
950
+ for (const group of Object.keys(index.index)) {
951
+ const entries = Array.isArray(index.index[group]) ? index.index[group] : [];
952
+ const filteredEntries = await filterEntriesByExistingPath(entries, rootDir);
953
+ if (filteredEntries.length !== entries.length) {
954
+ changed = true;
955
+ }
956
+ index.index[group] = filteredEntries;
957
+ }
958
+ }
959
+ return changed;
960
+ }
961
+ async function filterEntriesByExistingPath(entries, rootDir) {
962
+ const filtered = [];
963
+ for (const entry of entries) {
964
+ if (!entry.filePath) {
965
+ filtered.push(entry);
966
+ continue;
967
+ }
968
+ if (await doesFileExist(rootDir, entry.filePath)) {
969
+ filtered.push(entry);
970
+ }
971
+ }
972
+ return filtered;
973
+ }
974
+ async function doesFileExist(rootDir, entryFilePath) {
975
+ const resolvedPath = path3.isAbsolute(entryFilePath) ? entryFilePath : path3.resolve(rootDir, entryFilePath);
976
+ try {
977
+ await fs.stat(resolvedPath);
978
+ return true;
979
+ } catch {
980
+ return false;
981
+ }
982
+ }
983
+ async function generateFindingsByStatusIndex(rootDir, indexDir, read, gitSha, planningDirtySignature) {
984
+ let findingDir;
985
+ try {
986
+ findingDir = getBucketPathByKind("finding", rootDir);
987
+ } catch {
988
+ return;
989
+ }
990
+ const index = {
991
+ raw: [],
992
+ open: [],
993
+ closed: []
994
+ };
995
+ const files = await listMarkdownFiles(findingDir);
996
+ for (const file of files) {
997
+ try {
998
+ const frontMatter = await read(file);
999
+ const status = frontMatter.status || "raw";
1000
+ const entry = {
1001
+ id: frontMatter.id,
1002
+ title: frontMatter.title,
1003
+ status,
1004
+ severity: frontMatter.severity,
1005
+ filePath: path3.relative(rootDir, file)
1006
+ };
1007
+ const bucket = index[status];
1008
+ if (bucket) bucket.push(entry);
1009
+ } catch (error) {
1010
+ emitWarning(
1011
+ "IDX-007",
1012
+ { taskId: "indexer", subsystem: "planning", executionPhase: "setup" },
1013
+ {
1014
+ severity: "INFO" /* INFO */,
1015
+ metadata: {
1016
+ file,
1017
+ error: error instanceof Error ? error.message : String(error)
1018
+ }
1019
+ }
1020
+ );
1021
+ }
1022
+ }
1023
+ const indexFile = path3.join(indexDir, "findings-by-status.json");
1024
+ await writeIndexJson(indexFile, {
1025
+ ...indexMetadata(gitSha, planningDirtySignature),
1026
+ index
1027
+ });
1028
+ }
1029
+ async function generateFindingsByFingerprintIndex(rootDir, indexDir, read, gitSha, planningDirtySignature) {
1030
+ let findingDir;
1031
+ try {
1032
+ findingDir = getBucketPathByKind("finding", rootDir);
1033
+ } catch {
1034
+ return;
1035
+ }
1036
+ const index = {};
1037
+ const files = await listMarkdownFiles(findingDir);
1038
+ for (const file of files) {
1039
+ try {
1040
+ const frontMatter = await read(file);
1041
+ const fp = frontMatter.fingerprint;
1042
+ const hash = fp?.compositeHash;
1043
+ if (!hash) continue;
1044
+ const entry = {
1045
+ id: frontMatter.id,
1046
+ title: frontMatter.title,
1047
+ status: frontMatter.status || "raw",
1048
+ filePath: path3.relative(rootDir, file)
1049
+ };
1050
+ if (!index[hash]) index[hash] = [];
1051
+ index[hash]?.push(entry);
1052
+ } catch {
1053
+ }
1054
+ }
1055
+ const indexFile = path3.join(indexDir, "findings-by-fingerprint.json");
1056
+ await writeIndexJson(indexFile, {
1057
+ ...indexMetadata(gitSha, planningDirtySignature),
1058
+ index
1059
+ });
1060
+ }
1061
+ async function generateIssuesByStatusIndex(rootDir, indexDir, read, gitSha, planningDirtySignature) {
1062
+ let issueDir;
1063
+ try {
1064
+ issueDir = getBucketPathByKind("issue", rootDir);
1065
+ } catch {
1066
+ return;
1067
+ }
1068
+ const index = {
1069
+ open: [],
1070
+ claimed: [],
1071
+ resolved: [],
1072
+ wontfix: [],
1073
+ duplicate: []
1074
+ };
1075
+ const files = await listMarkdownFiles(issueDir);
1076
+ for (const file of files) {
1077
+ try {
1078
+ const frontMatter = await read(file);
1079
+ const status = frontMatter.status || "open";
1080
+ const entry = {
1081
+ id: frontMatter.id,
1082
+ title: frontMatter.title,
1083
+ status,
1084
+ severity: frontMatter.severity,
1085
+ filePath: path3.relative(rootDir, file)
1086
+ };
1087
+ const bucket = index[status];
1088
+ if (bucket) bucket.push(entry);
1089
+ } catch (error) {
1090
+ emitWarning(
1091
+ "IDX-008",
1092
+ { taskId: "indexer", subsystem: "planning", executionPhase: "setup" },
1093
+ {
1094
+ severity: "INFO" /* INFO */,
1095
+ metadata: {
1096
+ file,
1097
+ error: error instanceof Error ? error.message : String(error)
1098
+ }
1099
+ }
1100
+ );
1101
+ }
1102
+ }
1103
+ const indexFile = path3.join(indexDir, "issues-by-status.json");
1104
+ await writeIndexJson(indexFile, {
1105
+ ...indexMetadata(gitSha, planningDirtySignature),
1106
+ index
1107
+ });
1108
+ }
1109
+ async function generateIssuesBySeverityIndex(rootDir, indexDir, read, gitSha, planningDirtySignature) {
1110
+ let issueDir;
1111
+ try {
1112
+ issueDir = getBucketPathByKind("issue", rootDir);
1113
+ } catch {
1114
+ return;
1115
+ }
1116
+ const index = {
1117
+ critical: [],
1118
+ high: [],
1119
+ medium: [],
1120
+ low: []
1121
+ };
1122
+ const files = await listMarkdownFiles(issueDir);
1123
+ for (const file of files) {
1124
+ try {
1125
+ const frontMatter = await read(file);
1126
+ const severity = frontMatter.severity || "medium";
1127
+ const entry = {
1128
+ id: frontMatter.id,
1129
+ title: frontMatter.title,
1130
+ status: frontMatter.status || "open",
1131
+ severity,
1132
+ filePath: path3.relative(rootDir, file)
1133
+ };
1134
+ const bucket = index[severity];
1135
+ if (bucket) bucket.push(entry);
1136
+ } catch {
1137
+ }
1138
+ }
1139
+ const indexFile = path3.join(indexDir, "issues-by-severity.json");
1140
+ await writeIndexJson(indexFile, {
1141
+ ...indexMetadata(gitSha, planningDirtySignature),
1142
+ index
1143
+ });
1144
+ }
1145
+
1146
+ export {
1147
+ bucketArchiveRootForContext,
1148
+ bucketArchiveRootForProjectRoot,
1149
+ CLEAN_PLANNING_TREE_SIGNATURE,
1150
+ isPlanningIndexStale,
1151
+ getGitHeadSha,
1152
+ getGitHeadShaSync,
1153
+ getStorageRevision,
1154
+ getStorageRevisionSync,
1155
+ getPlanningDirtySignature,
1156
+ getPlanningDirtySignatureSync,
1157
+ checkGitDrift,
1158
+ generateIndexes,
1159
+ readIndex,
1160
+ findIndexDesyncEntries
1161
+ };
1162
+ //# sourceMappingURL=chunk-VAG6GUBR.js.map