@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.
- package/.build-project/providers/catalog.json +13951 -0
- package/.build-project/providers/pricing.json +1978 -0
- package/.build-project/providers/registry.json +4103 -0
- package/.github/SECURITY.md +75 -0
- package/.nvmrc +1 -0
- package/CHANGELOG.md +661 -0
- package/CODE_OF_CONDUCT.md +44 -0
- package/CONTRIBUTING.md +24 -0
- package/INSTALL.md +623 -0
- package/LICENSE +21 -0
- package/README.md +118 -2
- package/THIRD_PARTY_NOTICES.txt +26 -0
- package/dist/ai-judge-UE5UOYOO.js +191 -0
- package/dist/allowlist-grounding-KPLN6NC5.js +16 -0
- package/dist/allowlist-utils-MZZKKXRD.js +31 -0
- package/dist/apply-completion-mode-EM37UZHB.js +110 -0
- package/dist/artifact-migrator-WPACNSEP.js +276 -0
- package/dist/ask-2OZ4JFQR.js +176 -0
- package/dist/auth-6UKBTJUQ.js +185 -0
- package/dist/auth-H5KJL6HL.js +165 -0
- package/dist/auth-LVJRJDMU.js +12 -0
- package/dist/auth-NHZOCNRR.js +94 -0
- package/dist/auth-PBXHWXGW.js +95 -0
- package/dist/auth-T7Y5DCAH.js +91 -0
- package/dist/auth-TVVKCHQW.js +13 -0
- package/dist/auth-UHB2UCSS.js +97 -0
- package/dist/auth-VACA3VUL.js +98 -0
- package/dist/auth-VVLC77S3.js +44 -0
- package/dist/auth-liveness-XO4AGDDD.js +53 -0
- package/dist/autoloop-cleanup-SI3VGAAR.js +106 -0
- package/dist/autoloop-evidence-gates-J5GG5YQB.js +39 -0
- package/dist/autoloop-gate-policy-SUNAEP6Q.js +169 -0
- package/dist/autoloop-helpers-VQGQNTT6.js +52 -0
- package/dist/autoloop-ledger-P6TIDP7C.js +96 -0
- package/dist/autoloop-ledger-subscriber-HFAGOZXH.js +161 -0
- package/dist/autoloop-run-defaults-GWGZBNT7.js +27 -0
- package/dist/autoloop-run-lock-GBWRM5A2.js +197 -0
- package/dist/autoloop-success-C32QVWOP.js +93 -0
- package/dist/autoloop-termination-summary-GI6IBQWD.js +58 -0
- package/dist/autoloop-trajectory-AMKSQISD.js +70 -0
- package/dist/autoloop-wall-clock-T7ZVIQOC.js +12 -0
- package/dist/automatic-branch-cleanup-R62X2C5O.js +49 -0
- package/dist/autonomous-loop-controller-2WL363LW.js +4386 -0
- package/dist/backend-YUTFDZXZ.js +30 -0
- package/dist/background-executor-Z3ODTMD7.js +260 -0
- package/dist/backlog-75QPEAMW.js +403 -0
- package/dist/backlog-execution-intent-GWUV5TUK.js +19 -0
- package/dist/backup-active-store-XHWLN34M.js +16 -0
- package/dist/backup-machine-stores-UI4LTJOY.js +251 -0
- package/dist/backup-telemetry-db-Z4ICYCNW.js +26 -0
- package/dist/branch-archive-manager-FMSQ7YJF.js +18 -0
- package/dist/branch-cleanup-manager-ST6FJGND.js +35 -0
- package/dist/build-gate-7NKWPY62.js +68 -0
- package/dist/build-root-S7DINODY.js +18 -0
- package/dist/change-summary-R6CB6VXJ.js +50 -0
- package/dist/chunk-24MNKKOM.js +173 -0
- package/dist/chunk-2H6VZFIO.js +235 -0
- package/dist/chunk-2JIX3EKV.js +39 -0
- package/dist/chunk-2KO7HVZM.js +106 -0
- package/dist/chunk-2L36U25O.js +100 -0
- package/dist/chunk-2NMNFUQA.js +475 -0
- package/dist/chunk-2OUAEH67.js +83 -0
- package/dist/chunk-2VLJUXJU.js +115 -0
- package/dist/chunk-2VUEDIUM.js +77 -0
- package/dist/chunk-2Y2IIHPI.js +430 -0
- package/dist/chunk-2YRG3LHZ.js +220 -0
- package/dist/chunk-2Z5Q3SUY.js +65 -0
- package/dist/chunk-32IYXIE5.js +873 -0
- package/dist/chunk-33IGPPUI.js +292 -0
- package/dist/chunk-352PCJLK.js +283 -0
- package/dist/chunk-35J4NE6S.js +226 -0
- package/dist/chunk-3C7WBIVK.js +1016 -0
- package/dist/chunk-3H3EY6U7.js +1225 -0
- package/dist/chunk-3H4MWYIC.js +198 -0
- package/dist/chunk-3HHWQR3N.js +2479 -0
- package/dist/chunk-3JKNRYEE.js +14 -0
- package/dist/chunk-3LECCYZY.js +128 -0
- package/dist/chunk-3LOY6YZI.js +852 -0
- package/dist/chunk-3M57DADF.js +44 -0
- package/dist/chunk-3NOTLVLG.js +3803 -0
- package/dist/chunk-3OPP2OZB.js +1480 -0
- package/dist/chunk-3P5IN5E7.js +9 -0
- package/dist/chunk-3PL22IYZ.js +20 -0
- package/dist/chunk-3REDAJUJ.js +14 -0
- package/dist/chunk-3S2R4XJI.js +203 -0
- package/dist/chunk-3UBZI5DW.js +61 -0
- package/dist/chunk-3VV5OBGG.js +308 -0
- package/dist/chunk-3WY5TU2O.js +823 -0
- package/dist/chunk-43OKHTW4.js +82 -0
- package/dist/chunk-45KUJBDI.js +112 -0
- package/dist/chunk-47X5LM7B.js +224 -0
- package/dist/chunk-4B6FQJ77.js +268 -0
- package/dist/chunk-4BTDUT2S.js +42 -0
- package/dist/chunk-4DJL2VXA.js +24 -0
- package/dist/chunk-4EBSXZ73.js +48 -0
- package/dist/chunk-4QKP6I4C.js +294 -0
- package/dist/chunk-4U6XK2DG.js +300 -0
- package/dist/chunk-4UMRUFBD.js +132 -0
- package/dist/chunk-4US4SYJ4.js +569 -0
- package/dist/chunk-4ZPLWEZO.js +154 -0
- package/dist/chunk-56WPYDJH.js +624 -0
- package/dist/chunk-57WRCJJW.js +50 -0
- package/dist/chunk-5AW4RMNG.js +24 -0
- package/dist/chunk-5EQN56OZ.js +155 -0
- package/dist/chunk-5F43TUIN.js +38 -0
- package/dist/chunk-5FKHIKTS.js +115 -0
- package/dist/chunk-5HDP7XZG.js +91 -0
- package/dist/chunk-5KQETTNS.js +152 -0
- package/dist/chunk-5PDVN2KO.js +498 -0
- package/dist/chunk-5UBIFVRD.js +509 -0
- package/dist/chunk-5YDE3Q62.js +46 -0
- package/dist/chunk-626AJVMU.js +302 -0
- package/dist/chunk-633XZ7UF.js +3583 -0
- package/dist/chunk-63DHNHGA.js +236 -0
- package/dist/chunk-666656AR.js +568 -0
- package/dist/chunk-67YRJPJO.js +19 -0
- package/dist/chunk-6CAU7VBA.js +20 -0
- package/dist/chunk-6CB3KJRY.js +21 -0
- package/dist/chunk-6DBMALXL.js +29 -0
- package/dist/chunk-6E25C4IA.js +269 -0
- package/dist/chunk-6FIBNIQU.js +73 -0
- package/dist/chunk-6G57FYBV.js +189 -0
- package/dist/chunk-6KZKRTG3.js +4885 -0
- package/dist/chunk-6LAH2UV2.js +525 -0
- package/dist/chunk-6PZY2TTU.js +921 -0
- package/dist/chunk-6T6NHXK4.js +230 -0
- package/dist/chunk-6TBEX4R4.js +432 -0
- package/dist/chunk-6TRD7TEE.js +911 -0
- package/dist/chunk-6XCP2RAI.js +47 -0
- package/dist/chunk-726G6WDL.js +351 -0
- package/dist/chunk-75EMT7BF.js +616 -0
- package/dist/chunk-762ACDZJ.js +4696 -0
- package/dist/chunk-77I6G4CO.js +1 -0
- package/dist/chunk-7DJ6SQH3.js +510 -0
- package/dist/chunk-7HPCIOMA.js +1383 -0
- package/dist/chunk-7HYBSRPZ.js +17503 -0
- package/dist/chunk-7KBEOPVB.js +73 -0
- package/dist/chunk-7LHJDJB3.js +2222 -0
- package/dist/chunk-7NVJMH52.js +306 -0
- package/dist/chunk-7RMARDVH.js +33 -0
- package/dist/chunk-7SEWU4QG.js +36 -0
- package/dist/chunk-7TUTZTI2.js +911 -0
- package/dist/chunk-7VBDFPUM.js +340 -0
- package/dist/chunk-7VRJHTGZ.js +6406 -0
- package/dist/chunk-7YAOUUKK.js +493 -0
- package/dist/chunk-AAAODV76.js +860 -0
- package/dist/chunk-AB4HUJVQ.js +339 -0
- package/dist/chunk-AEQWV746.js +611 -0
- package/dist/chunk-AHU3FKPA.js +11639 -0
- package/dist/chunk-AISTV5XU.js +226 -0
- package/dist/chunk-AJBTKGJZ.js +48 -0
- package/dist/chunk-AJJNW7XT.js +248 -0
- package/dist/chunk-AJN5Y5YZ.js +160 -0
- package/dist/chunk-ALDTFNZ3.js +150 -0
- package/dist/chunk-ARARVIZK.js +281 -0
- package/dist/chunk-ATBM6AW5.js +53 -0
- package/dist/chunk-ATKEKM3E.js +206 -0
- package/dist/chunk-AUJLW6JZ.js +92 -0
- package/dist/chunk-AY3MHEFM.js +24 -0
- package/dist/chunk-B7PYTV72.js +236 -0
- package/dist/chunk-B7YRSULE.js +1423 -0
- package/dist/chunk-BAWJNMWF.js +339 -0
- package/dist/chunk-BBPIILO2.js +88 -0
- package/dist/chunk-BD3PGW6A.js +957 -0
- package/dist/chunk-BDPYFAB4.js +44 -0
- package/dist/chunk-BIUV23HH.js +729 -0
- package/dist/chunk-BQ3VAGXH.js +243 -0
- package/dist/chunk-BQJOGAWT.js +31 -0
- package/dist/chunk-BT7EG7CO.js +68 -0
- package/dist/chunk-BV3XQQLU.js +27 -0
- package/dist/chunk-BY6ODHNZ.js +78 -0
- package/dist/chunk-BZRLSZNV.js +79 -0
- package/dist/chunk-C3DH3NCY.js +2773 -0
- package/dist/chunk-C3KCMAJP.js +756 -0
- package/dist/chunk-C7AGUJ5K.js +267 -0
- package/dist/chunk-CBSWKQCX.js +342 -0
- package/dist/chunk-CE5OZBYY.js +21 -0
- package/dist/chunk-CFCVYHSW.js +373 -0
- package/dist/chunk-CHA2HDE5.js +126 -0
- package/dist/chunk-CIHWPGS5.js +146 -0
- package/dist/chunk-CJBSZX3F.js +127 -0
- package/dist/chunk-CLA6QIJM.js +43 -0
- package/dist/chunk-CPSVQR2I.js +365 -0
- package/dist/chunk-CRPRVNQ4.js +254 -0
- package/dist/chunk-CSIE4Y7C.js +1093 -0
- package/dist/chunk-CSOPSYDY.js +142 -0
- package/dist/chunk-CSXLLEGB.js +205 -0
- package/dist/chunk-CTDLERWU.js +293 -0
- package/dist/chunk-CULBXMSK.js +110 -0
- package/dist/chunk-D2M2Y5ID.js +21 -0
- package/dist/chunk-D37WY7SH.js +1060 -0
- package/dist/chunk-D4VJFCGZ.js +89 -0
- package/dist/chunk-D6WTZMZB.js +48 -0
- package/dist/chunk-DBHOWDUH.js +976 -0
- package/dist/chunk-DCACX7BV.js +19364 -0
- package/dist/chunk-DFHX4XYA.js +128 -0
- package/dist/chunk-DIKBRRKE.js +176 -0
- package/dist/chunk-DJG5RIOR.js +9 -0
- package/dist/chunk-DNIOIISW.js +616 -0
- package/dist/chunk-DOA5G7IA.js +315 -0
- package/dist/chunk-DP7FKP6W.js +855 -0
- package/dist/chunk-DS2JZ677.js +79 -0
- package/dist/chunk-DSRLVYBS.js +82 -0
- package/dist/chunk-EAEVKNJA.js +209 -0
- package/dist/chunk-EEUESN3T.js +575 -0
- package/dist/chunk-EJ4LUU5Y.js +73 -0
- package/dist/chunk-EJIWTPSZ.js +1063 -0
- package/dist/chunk-EJVCDTAN.js +116 -0
- package/dist/chunk-EKLUBDBQ.js +627 -0
- package/dist/chunk-EN62WLFD.js +849 -0
- package/dist/chunk-ENYRCL43.js +26 -0
- package/dist/chunk-EP22ZMFO.js +273 -0
- package/dist/chunk-EP4SVAVI.js +87 -0
- package/dist/chunk-EPAMVGI3.js +1562 -0
- package/dist/chunk-EPRMH6HO.js +24 -0
- package/dist/chunk-ES6NWJ36.js +4057 -0
- package/dist/chunk-ETA2K4KI.js +30 -0
- package/dist/chunk-ETAD4NKD.js +31 -0
- package/dist/chunk-EUWIIDQ7.js +93 -0
- package/dist/chunk-EVE3OD2W.js +141 -0
- package/dist/chunk-EXA26FFC.js +459 -0
- package/dist/chunk-EXSPAA35.js +244 -0
- package/dist/chunk-F55YABKV.js +258 -0
- package/dist/chunk-F5DNGU5W.js +27 -0
- package/dist/chunk-F622MJYV.js +103 -0
- package/dist/chunk-F6NIQD74.js +5111 -0
- package/dist/chunk-FAWJTC34.js +43 -0
- package/dist/chunk-FAZBRHGG.js +47 -0
- package/dist/chunk-FIEUSGNJ.js +39 -0
- package/dist/chunk-FKCG7K6H.js +1146 -0
- package/dist/chunk-FOVVXV45.js +229 -0
- package/dist/chunk-FRBPKBFE.js +30 -0
- package/dist/chunk-FSA5BPFI.js +268 -0
- package/dist/chunk-FSJ5TTZ3.js +29 -0
- package/dist/chunk-FT7SGLXT.js +193 -0
- package/dist/chunk-FUUVZZUB.js +62 -0
- package/dist/chunk-FYMRVUNZ.js +1697 -0
- package/dist/chunk-FYTAA5FG.js +162 -0
- package/dist/chunk-G3VB2UCZ.js +3892 -0
- package/dist/chunk-G6OIMVXH.js +405 -0
- package/dist/chunk-G7PQCXVH.js +228 -0
- package/dist/chunk-GAB6UW52.js +1087 -0
- package/dist/chunk-GAFJEYLK.js +29 -0
- package/dist/chunk-GC4CRMTS.js +642 -0
- package/dist/chunk-GFHSIWHL.js +5297 -0
- package/dist/chunk-GI5M67YA.js +735 -0
- package/dist/chunk-GIJWHUWF.js +191 -0
- package/dist/chunk-GO6DRECI.js +1 -0
- package/dist/chunk-GOFVBTMN.js +314 -0
- package/dist/chunk-GQIP72ZJ.js +13 -0
- package/dist/chunk-GQXLXRFA.js +28 -0
- package/dist/chunk-GT6HFKJB.js +48 -0
- package/dist/chunk-GVJGSSKM.js +174 -0
- package/dist/chunk-GWHGTG37.js +36 -0
- package/dist/chunk-GZAJHLKO.js +18 -0
- package/dist/chunk-GZK62I3N.js +314 -0
- package/dist/chunk-H3HGMISG.js +483 -0
- package/dist/chunk-H3ISZJMJ.js +403 -0
- package/dist/chunk-H4HXVWEC.js +9 -0
- package/dist/chunk-H6MJGKAW.js +120 -0
- package/dist/chunk-HBTTGVR5.js +353 -0
- package/dist/chunk-HBZ322WZ.js +35 -0
- package/dist/chunk-HEP3ILP4.js +34 -0
- package/dist/chunk-HGFXODKO.js +106 -0
- package/dist/chunk-HHWDTB6S.js +59 -0
- package/dist/chunk-HKO45NLZ.js +286 -0
- package/dist/chunk-HLVTEA6A.js +89 -0
- package/dist/chunk-HS3SY6HN.js +160 -0
- package/dist/chunk-HT5OCGKN.js +899 -0
- package/dist/chunk-HXIIEMGF.js +78 -0
- package/dist/chunk-I56TH7VM.js +46 -0
- package/dist/chunk-I6FN3R5D.js +352 -0
- package/dist/chunk-I7SCBHJN.js +655 -0
- package/dist/chunk-IJM4GKAT.js +529 -0
- package/dist/chunk-IMEYU36R.js +344 -0
- package/dist/chunk-INJ3SS6A.js +936 -0
- package/dist/chunk-IUKOPCCE.js +441 -0
- package/dist/chunk-IVEPZQJO.js +33 -0
- package/dist/chunk-IVZEONFC.js +43 -0
- package/dist/chunk-IWBHRSG7.js +936 -0
- package/dist/chunk-IYY3HQAD.js +484 -0
- package/dist/chunk-J2ICMYDA.js +48 -0
- package/dist/chunk-J2QCFLUN.js +505 -0
- package/dist/chunk-J5HM6V5P.js +1039 -0
- package/dist/chunk-J6NZX6QH.js +398 -0
- package/dist/chunk-JBBB2Y47.js +432 -0
- package/dist/chunk-JDCZQZU7.js +42 -0
- package/dist/chunk-JEDNXGSS.js +169 -0
- package/dist/chunk-JHP7OT6K.js +89 -0
- package/dist/chunk-JLS65NUQ.js +14 -0
- package/dist/chunk-JNMWYMC6.js +38 -0
- package/dist/chunk-JNSTWNNW.js +25 -0
- package/dist/chunk-JOSK6GEU.js +9564 -0
- package/dist/chunk-JQUMSIGC.js +100 -0
- package/dist/chunk-JVHGMURQ.js +1106 -0
- package/dist/chunk-JYXS47FQ.js +951 -0
- package/dist/chunk-K2ZMW2Z5.js +2147 -0
- package/dist/chunk-K7FAFORM.js +14 -0
- package/dist/chunk-KBJXX3ON.js +333 -0
- package/dist/chunk-KHFKVQWY.js +486 -0
- package/dist/chunk-KHMEI3DQ.js +173 -0
- package/dist/chunk-KHW3UD7B.js +69 -0
- package/dist/chunk-KKQKWAMF.js +365 -0
- package/dist/chunk-KOKXJV2U.js +455 -0
- package/dist/chunk-KQ4NGOJI.js +14 -0
- package/dist/chunk-KQYQOXMS.js +342 -0
- package/dist/chunk-KTMW65UX.js +14 -0
- package/dist/chunk-KUEWV2JH.js +593 -0
- package/dist/chunk-KXYDV3HP.js +1523 -0
- package/dist/chunk-KZ4JMGZ5.js +96 -0
- package/dist/chunk-KZWGBUIO.js +2659 -0
- package/dist/chunk-L2CBG5IX.js +1892 -0
- package/dist/chunk-L2S235CU.js +314 -0
- package/dist/chunk-L32WD57F.js +98 -0
- package/dist/chunk-LDJCKAJP.js +123 -0
- package/dist/chunk-LDWNBEN7.js +541 -0
- package/dist/chunk-LJVH57G2.js +241 -0
- package/dist/chunk-LPQ7NZEN.js +209 -0
- package/dist/chunk-LRGH3CCV.js +148 -0
- package/dist/chunk-LULOGMMM.js +1133 -0
- package/dist/chunk-LWGKN2GY.js +8284 -0
- package/dist/chunk-LX4F24ZH.js +157 -0
- package/dist/chunk-M4BUEXXF.js +839 -0
- package/dist/chunk-M6UHOC4I.js +553 -0
- package/dist/chunk-MCBNWZNO.js +657 -0
- package/dist/chunk-MEMSY6VY.js +223 -0
- package/dist/chunk-MHLEZQQI.js +145 -0
- package/dist/chunk-MJ6WNSIX.js +192 -0
- package/dist/chunk-MKASIKWZ.js +442 -0
- package/dist/chunk-MNOVBYFU.js +60 -0
- package/dist/chunk-MO2BYAAF.js +2896 -0
- package/dist/chunk-MP6P7Y2A.js +180 -0
- package/dist/chunk-MQ4TFJAG.js +3365 -0
- package/dist/chunk-MT2WAIR3.js +131 -0
- package/dist/chunk-MTU7VTNN.js +1122 -0
- package/dist/chunk-MULMXX4V.js +150 -0
- package/dist/chunk-MW2DWWVA.js +147 -0
- package/dist/chunk-MY3ZPUN4.js +151 -0
- package/dist/chunk-MYLH2S4G.js +64 -0
- package/dist/chunk-MZ5WYKNA.js +28 -0
- package/dist/chunk-N3Q2JNPV.js +249 -0
- package/dist/chunk-N5DX4JAK.js +12 -0
- package/dist/chunk-NAINGKHF.js +35 -0
- package/dist/chunk-NEQUQHOX.js +223 -0
- package/dist/chunk-NHNPEZS4.js +1408 -0
- package/dist/chunk-NHTIXJCR.js +17 -0
- package/dist/chunk-NKLPMBNV.js +1154 -0
- package/dist/chunk-NMVZ5YES.js +199 -0
- package/dist/chunk-NRFRY3GE.js +256 -0
- package/dist/chunk-NTD6CSI6.js +1266 -0
- package/dist/chunk-NUO7B3SH.js +318 -0
- package/dist/chunk-NVOHIJKG.js +1319 -0
- package/dist/chunk-NXH3RX7O.js +523 -0
- package/dist/chunk-NXZ3DURF.js +257 -0
- package/dist/chunk-O26L6F7F.js +209 -0
- package/dist/chunk-O5RRIUEP.js +124 -0
- package/dist/chunk-O5X6BKAO.js +10 -0
- package/dist/chunk-O6ZQUVTR.js +31 -0
- package/dist/chunk-O7FE75QZ.js +306 -0
- package/dist/chunk-OC7Z6AJQ.js +81 -0
- package/dist/chunk-OH7IEZ63.js +307 -0
- package/dist/chunk-OI734GRS.js +115 -0
- package/dist/chunk-OJBH62DK.js +684 -0
- package/dist/chunk-OKJLVSTJ.js +247 -0
- package/dist/chunk-OMX5VL43.js +79 -0
- package/dist/chunk-ONHAMBN6.js +12 -0
- package/dist/chunk-ONYPLIVE.js +753 -0
- package/dist/chunk-OSK7QWPD.js +637 -0
- package/dist/chunk-OTXLMJKP.js +438 -0
- package/dist/chunk-OV5PKQMA.js +213 -0
- package/dist/chunk-OXK5HA4B.js +31 -0
- package/dist/chunk-OYDWFQA4.js +272 -0
- package/dist/chunk-OZAUKWHB.js +22 -0
- package/dist/chunk-P5P2EKGH.js +94 -0
- package/dist/chunk-P6SSWAKY.js +29 -0
- package/dist/chunk-P7CQGPLS.js +30 -0
- package/dist/chunk-P7RVCHQV.js +197 -0
- package/dist/chunk-PEBWDYIW.js +726 -0
- package/dist/chunk-PFCXFO7A.js +9193 -0
- package/dist/chunk-PFLDWMX6.js +168 -0
- package/dist/chunk-PHZGLQSK.js +15883 -0
- package/dist/chunk-PNFTPNSR.js +20 -0
- package/dist/chunk-PPHXX4W7.js +175 -0
- package/dist/chunk-PPZESPJT.js +262 -0
- package/dist/chunk-PRDHI2L5.js +296 -0
- package/dist/chunk-PSTKWHHN.js +32 -0
- package/dist/chunk-PV53ODOT.js +555 -0
- package/dist/chunk-PVJBTI7P.js +24 -0
- package/dist/chunk-PXKERBKX.js +100 -0
- package/dist/chunk-PZ5AY32C.js +10 -0
- package/dist/chunk-Q3DHEZA5.js +85 -0
- package/dist/chunk-Q5RZDVQK.js +204 -0
- package/dist/chunk-Q64IR2Z2.js +4933 -0
- package/dist/chunk-Q6Z5UGPL.js +398 -0
- package/dist/chunk-QAMAV4DT.js +627 -0
- package/dist/chunk-QBWF4444.js +112 -0
- package/dist/chunk-QDKYT4CI.js +22805 -0
- package/dist/chunk-QFLBRWCJ.js +126 -0
- package/dist/chunk-QILAQACE.js +107 -0
- package/dist/chunk-QJ6OEH4K.js +3683 -0
- package/dist/chunk-QK3NLYTV.js +320 -0
- package/dist/chunk-QOFLUS24.js +535 -0
- package/dist/chunk-QOIASNEJ.js +98 -0
- package/dist/chunk-QP4UTSOV.js +3587 -0
- package/dist/chunk-QP5ST7RI.js +904 -0
- package/dist/chunk-QS5AGRZN.js +167 -0
- package/dist/chunk-QTAOU53N.js +107 -0
- package/dist/chunk-QTCLJHLZ.js +351 -0
- package/dist/chunk-QTOLTG4L.js +119 -0
- package/dist/chunk-QWDV4OSL.js +142 -0
- package/dist/chunk-QWMQ74KD.js +508 -0
- package/dist/chunk-QX6LOMMH.js +158 -0
- package/dist/chunk-QXBKIHY7.js +238 -0
- package/dist/chunk-QXBKTJT6.js +270 -0
- package/dist/chunk-QYQOVOLR.js +196 -0
- package/dist/chunk-R2CKS6WT.js +73 -0
- package/dist/chunk-R2TIYG7U.js +68 -0
- package/dist/chunk-R2W3LESH.js +465 -0
- package/dist/chunk-R5EXHMUN.js +100 -0
- package/dist/chunk-RBBTBCHX.js +289 -0
- package/dist/chunk-RBKLOUXA.js +121 -0
- package/dist/chunk-RCP2Y6DQ.js +86 -0
- package/dist/chunk-RCYEJSD5.js +260 -0
- package/dist/chunk-RFDVSI4N.js +134 -0
- package/dist/chunk-RGJU63FV.js +1717 -0
- package/dist/chunk-RI4EX2QE.js +18 -0
- package/dist/chunk-RIMARPCF.js +152 -0
- package/dist/chunk-RJ6RSNT6.js +42 -0
- package/dist/chunk-RNI2GUIF.js +131 -0
- package/dist/chunk-RPHUWJ3K.js +264 -0
- package/dist/chunk-RPIMAMV7.js +361 -0
- package/dist/chunk-RQFX6YRN.js +49 -0
- package/dist/chunk-RRC5BL7B.js +285 -0
- package/dist/chunk-RSYTSBOO.js +79 -0
- package/dist/chunk-RWQQIKIC.js +35 -0
- package/dist/chunk-RZUBOZH2.js +373 -0
- package/dist/chunk-S2E632FQ.js +380 -0
- package/dist/chunk-S2VQCZO4.js +22 -0
- package/dist/chunk-S2XIMQJQ.js +681 -0
- package/dist/chunk-S47ISY27.js +183 -0
- package/dist/chunk-S6I4KISU.js +142 -0
- package/dist/chunk-S6TAFQI5.js +2403 -0
- package/dist/chunk-SBBNT5ZJ.js +27 -0
- package/dist/chunk-SDJV2DTQ.js +491 -0
- package/dist/chunk-SDPIFNLD.js +33 -0
- package/dist/chunk-SF6YK3JI.js +835 -0
- package/dist/chunk-SK3ZFONO.js +976 -0
- package/dist/chunk-SKTFRFQ7.js +1775 -0
- package/dist/chunk-SNGM452K.js +2002 -0
- package/dist/chunk-STW7OFOA.js +581 -0
- package/dist/chunk-SU6UFUQY.js +1351 -0
- package/dist/chunk-SVJM3LJA.js +27 -0
- package/dist/chunk-SVUNZOPG.js +129 -0
- package/dist/chunk-T5XLUYV3.js +34 -0
- package/dist/chunk-T7E5JS6N.js +57 -0
- package/dist/chunk-TA3N5MMO.js +450 -0
- package/dist/chunk-TAJPCXSB.js +13 -0
- package/dist/chunk-TDEMDRN2.js +1639 -0
- package/dist/chunk-TDSEX5CF.js +24 -0
- package/dist/chunk-TGCVL74Y.js +28 -0
- package/dist/chunk-TGXXYDL4.js +1012 -0
- package/dist/chunk-TIKTYUJO.js +296 -0
- package/dist/chunk-TIZAJD4M.js +6029 -0
- package/dist/chunk-TLSEZZCG.js +5549 -0
- package/dist/chunk-TMBDRHAX.js +19 -0
- package/dist/chunk-TRURQUBP.js +1217 -0
- package/dist/chunk-TSQ256N5.js +152 -0
- package/dist/chunk-TUQMMFEQ.js +2244 -0
- package/dist/chunk-U424MJLC.js +81 -0
- package/dist/chunk-U4DRS6ZW.js +11 -0
- package/dist/chunk-U5KS22IN.js +204 -0
- package/dist/chunk-UAPHFJPN.js +673 -0
- package/dist/chunk-UB7LQITD.js +1040 -0
- package/dist/chunk-UBVRHGAZ.js +237 -0
- package/dist/chunk-UDNNAQN5.js +98 -0
- package/dist/chunk-UJP3XM54.js +342 -0
- package/dist/chunk-UJYDH2MW.js +305 -0
- package/dist/chunk-UKMPASIC.js +399 -0
- package/dist/chunk-UKUL3EHK.js +763 -0
- package/dist/chunk-UPHU64NB.js +1327 -0
- package/dist/chunk-URMSZXAD.js +43 -0
- package/dist/chunk-US3RT6CY.js +525 -0
- package/dist/chunk-UTDEOPKV.js +30 -0
- package/dist/chunk-UUUDKV7N.js +13 -0
- package/dist/chunk-UVKWU3SM.js +39 -0
- package/dist/chunk-V2TVPO3X.js +521 -0
- package/dist/chunk-V3KLVK7B.js +398 -0
- package/dist/chunk-V3YFFHDR.js +17 -0
- package/dist/chunk-VAG6GUBR.js +1162 -0
- package/dist/chunk-VBENAHDA.js +1814 -0
- package/dist/chunk-VBNCKCCI.js +16 -0
- package/dist/chunk-VCGSWN5M.js +1300 -0
- package/dist/chunk-VE2O2I7M.js +115 -0
- package/dist/chunk-VIFHYTI5.js +31 -0
- package/dist/chunk-VJER3FUS.js +5080 -0
- package/dist/chunk-VLMDM56Q.js +268 -0
- package/dist/chunk-VMFZEVVX.js +99 -0
- package/dist/chunk-VNDPQVUZ.js +1853 -0
- package/dist/chunk-VSPJRLGA.js +4783 -0
- package/dist/chunk-VSWC5ZXI.js +103 -0
- package/dist/chunk-VYI4DSZP.js +2017 -0
- package/dist/chunk-W4BAIQ6L.js +1212 -0
- package/dist/chunk-W7VQAL2K.js +2203 -0
- package/dist/chunk-WEI3ZDZH.js +33 -0
- package/dist/chunk-WEIUS5NT.js +26 -0
- package/dist/chunk-WEW7UFWE.js +546 -0
- package/dist/chunk-WGQAXLNA.js +384 -0
- package/dist/chunk-WJAL4JL3.js +206 -0
- package/dist/chunk-WKFOJ5ZG.js +141 -0
- package/dist/chunk-WMWQEFLN.js +2177 -0
- package/dist/chunk-WNECKKO2.js +154 -0
- package/dist/chunk-WPKLYOAM.js +195 -0
- package/dist/chunk-WSH37YQN.js +243 -0
- package/dist/chunk-WV3KQDPE.js +84 -0
- package/dist/chunk-WZFC4V4U.js +389 -0
- package/dist/chunk-XCOIBNET.js +13 -0
- package/dist/chunk-XDM65LBX.js +53 -0
- package/dist/chunk-XGU6PBO5.js +645 -0
- package/dist/chunk-XHOI4V62.js +43 -0
- package/dist/chunk-XIBVFMLQ.js +6858 -0
- package/dist/chunk-XJ2E7YEJ.js +117 -0
- package/dist/chunk-XON4ZCYX.js +69 -0
- package/dist/chunk-XQPEWJPI.js +127 -0
- package/dist/chunk-XSJTIFUY.js +31 -0
- package/dist/chunk-XT7OVWM3.js +64 -0
- package/dist/chunk-XTXYIISX.js +1104 -0
- package/dist/chunk-XV7NZL4B.js +57 -0
- package/dist/chunk-XWIZ6B5S.js +109 -0
- package/dist/chunk-XWLIKOBX.js +240 -0
- package/dist/chunk-XZOXEIN4.js +156 -0
- package/dist/chunk-XZRS7I7W.js +3673 -0
- package/dist/chunk-Y4ZDDHB6.js +44 -0
- package/dist/chunk-Y733RB7T.js +194 -0
- package/dist/chunk-YBHUB4XR.js +14931 -0
- package/dist/chunk-YKC75XK4.js +147 -0
- package/dist/chunk-YKMXFVK7.js +27 -0
- package/dist/chunk-YO5BAJ55.js +225 -0
- package/dist/chunk-YPDCLXNZ.js +568 -0
- package/dist/chunk-YSQPGVFK.js +116 -0
- package/dist/chunk-YTVVTIWJ.js +716 -0
- package/dist/chunk-YVCMDVBB.js +698 -0
- package/dist/chunk-YYTOA6DP.js +114 -0
- package/dist/chunk-Z5WGNULV.js +88 -0
- package/dist/chunk-Z6NGVVXG.js +66 -0
- package/dist/chunk-Z7CDQNH3.js +20 -0
- package/dist/chunk-ZH4G3FU5.js +187 -0
- package/dist/chunk-ZJB6SQPA.js +257 -0
- package/dist/chunk-ZL6E4HMY.js +42 -0
- package/dist/chunk-ZMLOC3DW.js +62 -0
- package/dist/chunk-ZORW64QH.js +101 -0
- package/dist/chunk-ZVVD2XGV.js +1369 -0
- package/dist/cli-utils-ER33ODC5.js +31 -0
- package/dist/cli-validation-6CHPTANV.js +146 -0
- package/dist/commit-utils-3STAY7C7.js +49 -0
- package/dist/compatibility-notice-IHNXR2JR.js +21 -0
- package/dist/compete-config-resolver-V3GDNJMM.js +125 -0
- package/dist/compete-results-XUM3PJHS.js +318 -0
- package/dist/competition-outcome-tracker-NWSMVUPG.js +62 -0
- package/dist/config-4HHE4OIK.js +238 -0
- package/dist/config-D6YAZASH.js +10 -0
- package/dist/config-MIPRDYYV.js +46 -0
- package/dist/config-audit-GA5DCUAI.js +371 -0
- package/dist/config-explain-4LMO556H.js +71 -0
- package/dist/config-loader-RGP634PC.js +51 -0
- package/dist/config-manager-J2UTO635.js +114 -0
- package/dist/config-merger-TVUJBZTS.js +14 -0
- package/dist/config-validator-H4ZVIE56.js +122 -0
- package/dist/cost-HSIV5U2Y.js +85 -0
- package/dist/data-migration-state-OAUL2WPQ.js +35 -0
- package/dist/db-migrator-NUOW5NKR.js +34 -0
- package/dist/default-paths-UILB62BN.js +49 -0
- package/dist/discovery-V6GYUJUC.js +53 -0
- package/dist/doctor-BBSMCDWE.js +271 -0
- package/dist/doctor-context-blocks-LPY75VZA.js +231 -0
- package/dist/doctor-instructions-import-JXHDDOE5.js +70 -0
- package/dist/doctor-purpose-6YJOXPBE.js +30 -0
- package/dist/domain-analyzer-S35ABUNA.js +48 -0
- package/dist/ensure-initialized-Q6PEU55O.js +78 -0
- package/dist/entry.js +922 -0
- package/dist/error-parser-core-MZFMFANN.js +70 -0
- package/dist/evaluation-context-GQBYDAEV.js +63 -0
- package/dist/evidence-plan-resolver-5FUAP3SA.js +111 -0
- package/dist/execution-data-writer-YCG5UH37.js +72 -0
- package/dist/execution-policy-applier-PWZM5LNA.js +63 -0
- package/dist/execution-preflight-DASJWWQF.js +223 -0
- package/dist/execution-roles-KNSNNB2D.js +112 -0
- package/dist/exit-code-error-QIY5DOKF.js +18 -0
- package/dist/external-temp-cleanup-CAW7LQ6R.js +360 -0
- package/dist/factory-YCYCB7AE.js +209 -0
- package/dist/file-utils-ZQYNBQBW.js +45 -0
- package/dist/flywheel-allowlist-revert-H22HA6JE.js +21 -0
- package/dist/flywheel-autoloop-executor-PDOASJEZ.js +316 -0
- package/dist/flywheel-autoloop-unverified-TOKYFCDC.js +36 -0
- package/dist/flywheel-competition-executor-YJUMMEJO.js +320 -0
- package/dist/flywheel-executor-JWU43KAY.js +437 -0
- package/dist/flywheel-git-isolation-FQ2TRWMB.js +56 -0
- package/dist/flywheel-manifest-HDPNMWWF.js +114 -0
- package/dist/flywheel-model-defaults-UHAKTZT3.js +110 -0
- package/dist/flywheel-preflight-III2C7TH.js +163 -0
- package/dist/flywheel-resume-2O45MS7Y.js +31 -0
- package/dist/flywheel-resume-execution-lease-P2BK257J.js +59 -0
- package/dist/flywheel-safety-AVAVFXIJ.js +19 -0
- package/dist/flywheel-scope-decision-ALJUUNGG.js +14 -0
- package/dist/get-telemetry-logger-MPDVO2JA.js +155 -0
- package/dist/git-message-style-KCXGMTDT.js +104 -0
- package/dist/guidance-profile-config-G3K5YQOO.js +113 -0
- package/dist/guidance-profile-renderer-TX4TNDFL.js +23 -0
- package/dist/identity-XLQJ4YJF.js +25 -0
- package/dist/index-query-6NUY4FKX.js +37 -0
- package/dist/index.js +85588 -0
- package/dist/indexer-DL54CM3K.js +44 -0
- package/dist/init-OUZ72344.js +245 -0
- package/dist/instructions-import-offer-NSYXSITC.js +363 -0
- package/dist/instructions-run-NBII7W36.js +114 -0
- package/dist/interrupted-work-E4TLKJLE.js +43 -0
- package/dist/invoke-provider-auth-NEWEIHCI.js +38 -0
- package/dist/judge-scoring.json +64 -0
- package/dist/lab-mode-YXQ2Y3NG.js +44 -0
- package/dist/lab-utils-5QAMDJR5.js +29 -0
- package/dist/linux-host-class-YDWQX65O.js +31 -0
- package/dist/llm-judge-executor-OJSNCTFJ.js +179 -0
- package/dist/local-ci-config-VZ4WWDT5.js +48 -0
- package/dist/local-executor-DCMDDRX2.js +280 -0
- package/dist/logger-5KNKS3O4.js +154 -0
- package/dist/matrix-prompt-builder-4ZBOGZSB.js +527 -0
- package/dist/matrix-result-parser-EZJM4YXP.js +14 -0
- package/dist/merge-batch-RTEEMVDB.js +313 -0
- package/dist/merge-batch-members-VIWGVRHP.js +24 -0
- package/dist/merge-queue-TIIUSOY6.js +126 -0
- package/dist/merge-queue-trust-DUNZ4J65.js +21 -0
- package/dist/metadata-UKSMWM6J.js +29 -0
- package/dist/model-catalog-readiness-R5KJBP5M.js +202 -0
- package/dist/model-invocations-db-XTUPPQ34.js +70 -0
- package/dist/model-resolver-JFZ2MHOJ.js +39 -0
- package/dist/model-resolver-SCQ57KAQ.js +217 -0
- package/dist/model-roles-D3OR4NAH.js +110 -0
- package/dist/monitor-F4SIU5G2.js +96 -0
- package/dist/nested-worktrees-2WUWQ75N.js +23 -0
- package/dist/next-S3IRLVER.js +96 -0
- package/dist/next-UKPFRXOO.js +148 -0
- package/dist/opportunistic-TL4S26VX.js +86 -0
- package/dist/optimization-config-resolver-NAEIYU6A.js +148 -0
- package/dist/package-HJR4QJT4.js +10 -0
- package/dist/parse-git-status-7PIYFPS2.js +21 -0
- package/dist/path-security-5WJSY56G.js +41 -0
- package/dist/paths-JUI7C4KU.js +45 -0
- package/dist/plan-backlog-list-fast-SSTQL5XP.js +89 -0
- package/dist/plan-backlog-show-fast-PFRAQ3JB.js +114 -0
- package/dist/plan-sprint-list-fast-HD2KBZSY.js +110 -0
- package/dist/plan-sprint-status-fast-YFYH7WQF.js +116 -0
- package/dist/plan-task-status-fast-JU5PNLUU.js +114 -0
- package/dist/plan-to-flywheel-PY5MSY2H.js +529 -0
- package/dist/preflight-PJHGTJNZ.js +12 -0
- package/dist/process-registry-B4ZUCN7T.js +28 -0
- package/dist/process-scanner-TU3QHWVB.js +23 -0
- package/dist/processes-6FHVGT72.js +28 -0
- package/dist/processes-json-fast-YWTMUWXB.js +72 -0
- package/dist/profile-HWTC56SG.js +209 -0
- package/dist/project-runtime-paths-2UQNG5Y4.js +41 -0
- package/dist/protected-branches-N36LDBFY.js +71 -0
- package/dist/provider-aware-resource-manager-YTFAHNGJ.js +40 -0
- package/dist/provider-matrix-2KO2V5OM.js +214 -0
- package/dist/provider-matrix-renderer-MEC3PER7.js +139 -0
- package/dist/provider-output-forwarding-2AHL7YMA.js +26 -0
- package/dist/provider-registry-WCZ65QHC.js +136 -0
- package/dist/provider-temp-cleanup-IUNPJCZF.js +14 -0
- package/dist/prune-engine-EOQVWEP6.js +448 -0
- package/dist/publication-turn-S42RZTQF.js +44 -0
- package/dist/quality-gate-JQMVCKOO.js +72 -0
- package/dist/quickstart-3O6FRCFB.js +105 -0
- package/dist/readiness-GW6ABRHB.js +139 -0
- package/dist/readiness-KFZCXDTT.js +215 -0
- package/dist/registry-7XG376SY.js +217 -0
- package/dist/repair-helpers-TTV5FEF4.js +117 -0
- package/dist/repo-root-YG6MQZDW.js +28 -0
- package/dist/resolution-engine-FFEK7HQ2.js +187 -0
- package/dist/resolve-provider-cli-ZEXVZKET.js +44 -0
- package/dist/restore-telemetry-db-E7BR5PO7.js +459 -0
- package/dist/routing-events-AW6SRZ6G.js +13 -0
- package/dist/routing-history-store-FMDDQL6W.js +39 -0
- package/dist/routing-planner-C6OHO3EY.js +221 -0
- package/dist/runner-KHDNQ5KU.js +1194 -0
- package/dist/runner-PIS2BW7Y.js +1801 -0
- package/dist/safety-E3JJVSFL.js +67 -0
- package/dist/safety-stanza-HE6GXP4G.js +49 -0
- package/dist/sandbox-7LBZC5PE.js +72 -0
- package/dist/sandbox-ASWCDYZL.js +80 -0
- package/dist/schema-extensions.sql +234 -0
- package/dist/security-JI22TBEB.js +17 -0
- package/dist/setup-bb-plugin-FQXLA76Y.js +531 -0
- package/dist/setup-claude-code-NF4ZSHVE.js +197 -0
- package/dist/setup-temp-cleanup-2APZ4HMA.js +29 -0
- package/dist/shared-utils-34HJZ6JX.js +40 -0
- package/dist/simple-artifact-goal-MQLDDMMX.js +29 -0
- package/dist/sprint-N7JFTEGL.js +403 -0
- package/dist/sprint-bridge-KJXIBNRJ.js +117 -0
- package/dist/sprint-completion-dependents-34SR7JVL.js +43 -0
- package/dist/sprint-execution-service-A6JPUBWY.js +376 -0
- package/dist/sprint-manager-MU2ZUWN2.js +140 -0
- package/dist/sqlite-timeout-config-U2CT4LKU.js +13 -0
- package/dist/sqlite-wrapper-FSGJ2QEW.js +19 -0
- package/dist/stale-cleanup-orchestrator-4X6324VF.js +71 -0
- package/dist/storage-access-I3V5LER7.js +31 -0
- package/dist/store-XVG64ZR2.js +25 -0
- package/dist/task-classifier-MN2DYE5R.js +558 -0
- package/dist/task-list-fast-7AT6LTTA.js +112 -0
- package/dist/task-manager-LHPBBRRE.js +136 -0
- package/dist/task-report-OLPAWBTK.js +64 -0
- package/dist/task-type-detector-6RG3YNZF.js +27 -0
- package/dist/task-type-resolver-EQHOUIHT.js +64 -0
- package/dist/telemetry-5VYSK772.js +212 -0
- package/dist/telemetry-health-tracker-4GFW2EMP.js +12 -0
- package/dist/telemetry-path-resolver-H3NFHHQY.js +34 -0
- package/dist/telemetry-reliability-URJDTNPZ.js +76 -0
- package/dist/transports-NREZQTJK.js +106 -0
- package/dist/unified-cost-tracker-5MTBJ2CL.js +59 -0
- package/dist/unified-state-cleanup-GGAXLHXF.js +292 -0
- package/dist/universal-cost-calculator-JTFEJVWK.js +70 -0
- package/dist/user-agents-QLIGPLP2.js +30 -0
- package/dist/variant-execution-I4ZZUAWY.js +319 -0
- package/dist/variant-opt-parser-JHCXKY2K.js +251 -0
- package/dist/variant-request-input-PL37N3AN.js +11 -0
- package/dist/variant-state-cleanup-KHMXRBZN.js +287 -0
- package/dist/variant-worker-COB5YTJX.js +4517 -0
- package/dist/variant-worker.js +26 -0
- package/dist/variants-XGDSXYG3.js +267 -0
- package/dist/verification-command-YSPU4VBH.js +66 -0
- package/dist/verify-command-timeout-DQUYH33Z.js +11 -0
- package/dist/verify-commands-LOHMOFKC.js +65 -0
- package/dist/warning-JSKSFKBT.js +13 -0
- package/dist/work-edge-K65NHVWY.js +50 -0
- package/dist/work-item-writer-KY5ZWZWW.js +30 -0
- package/dist/worker-JNXXEIT6.js +1504 -0
- package/dist/worker.js +21 -0
- package/dist/workspace-tree-identity-JO5PSKTW.js +52 -0
- package/dist/worktree-environment-WTVABAQW.js +64 -0
- package/dist/worktree-metrics-VZRQI26T.js +66 -0
- package/dist/writeback-TQFQBJNU.js +50 -0
- package/docs/CLI_REFERENCE.md +8287 -0
- package/docs/PROVIDER_SETUP.md +1737 -0
- package/docs/README.md +96 -0
- package/docs/TROUBLESHOOTING.md +2209 -0
- package/docs/getting-started/QUICK_START.md +260 -0
- package/docs/getting-started/README.md +198 -0
- package/docs/getting-started/SETUP.md +25 -0
- package/docs/reference/AGENT_CONTEXT.md +84 -0
- package/docs/reference/DELIVERY_ONBOARDING.md +198 -0
- package/docs/reference/PROVIDER_RELEASE_TIERS.md +34 -0
- package/docs/reference/SECURITY.md +291 -0
- package/docs/reference/TELEMETRY_PRIVACY.md +259 -0
- package/integrations/bb-plugin-build/README.md +391 -0
- package/integrations/bb-plugin-build/app.css +431 -0
- package/integrations/bb-plugin-build/app.tsx +6210 -0
- package/integrations/bb-plugin-build/package.json +45 -0
- package/integrations/bb-plugin-build/server.ts +488 -0
- package/integrations/bb-plugin-build/src/adapter.ts +3672 -0
- package/integrations/bb-plugin-build/src/backlog-authoring-model.ts +150 -0
- package/integrations/bb-plugin-build/src/backlog-authoring-schema.ts +458 -0
- package/integrations/bb-plugin-build/src/backlog-authoring-service.ts +467 -0
- package/integrations/bb-plugin-build/src/backlog-authoring-view.ts +1025 -0
- package/integrations/bb-plugin-build/src/command-evidence-schema.ts +13 -0
- package/integrations/bb-plugin-build/src/competition-defaults-schema.ts +122 -0
- package/integrations/bb-plugin-build/src/competition-defaults-service.ts +105 -0
- package/integrations/bb-plugin-build/src/competition-defaults-view.ts +138 -0
- package/integrations/bb-plugin-build/src/contract.ts +718 -0
- package/integrations/bb-plugin-build/src/execution-activity-view.ts +98 -0
- package/integrations/bb-plugin-build/src/finalize-model.ts +205 -0
- package/integrations/bb-plugin-build/src/finalize-schema.ts +150 -0
- package/integrations/bb-plugin-build/src/finalize-service.ts +330 -0
- package/integrations/bb-plugin-build/src/finalize-view.ts +159 -0
- package/integrations/bb-plugin-build/src/judge-operations-readback.ts +303 -0
- package/integrations/bb-plugin-build/src/judge-operations-schema.ts +33 -0
- package/integrations/bb-plugin-build/src/judge-operations-view.ts +459 -0
- package/integrations/bb-plugin-build/src/model.ts +1318 -0
- package/integrations/bb-plugin-build/src/monitor-service.ts +233 -0
- package/integrations/bb-plugin-build/src/panel-read-ux.ts +97 -0
- package/integrations/bb-plugin-build/src/patch-preview-schema.ts +166 -0
- package/integrations/bb-plugin-build/src/patch-preview-service.ts +480 -0
- package/integrations/bb-plugin-build/src/patch-preview-view.ts +109 -0
- package/integrations/bb-plugin-build/src/planning-readback.ts +228 -0
- package/integrations/bb-plugin-build/src/planning-service.ts +647 -0
- package/integrations/bb-plugin-build/src/planning-sync-evidence.ts +37 -0
- package/integrations/bb-plugin-build/src/planning-workspace-readback.ts +33 -0
- package/integrations/bb-plugin-build/src/planning-workspace-schema.ts +131 -0
- package/integrations/bb-plugin-build/src/planning-workspace.ts +333 -0
- package/integrations/bb-plugin-build/src/poll-handoff.ts +136 -0
- package/integrations/bb-plugin-build/src/project-target-server.ts +21 -0
- package/integrations/bb-plugin-build/src/project-target.ts +45 -0
- package/integrations/bb-plugin-build/src/reference-index.ts +218 -0
- package/integrations/bb-plugin-build/src/repository-identity.ts +17 -0
- package/integrations/bb-plugin-build/src/repository-schema.ts +30 -0
- package/integrations/bb-plugin-build/src/result-explorer-view.ts +597 -0
- package/integrations/bb-plugin-build/src/result-readback-model.ts +163 -0
- package/integrations/bb-plugin-build/src/result-readback-schema.ts +319 -0
- package/integrations/bb-plugin-build/src/result-readback-service.ts +333 -0
- package/integrations/bb-plugin-build/src/run-page-view.ts +332 -0
- package/integrations/bb-plugin-build/src/setup-config-schema.ts +293 -0
- package/integrations/bb-plugin-build/src/setup-config-service.ts +620 -0
- package/integrations/bb-plugin-build/src/setup-config-view.ts +388 -0
- package/integrations/bb-plugin-build/src/sprint-close-model.ts +150 -0
- package/integrations/bb-plugin-build/src/sprint-close-schema.ts +128 -0
- package/integrations/bb-plugin-build/src/sprint-close-service.ts +293 -0
- package/integrations/bb-plugin-build/src/sprint-close-view.ts +116 -0
- package/integrations/bb-plugin-build/src/sprint-composition-model.ts +709 -0
- package/integrations/bb-plugin-build/src/sprint-composition-readback.ts +231 -0
- package/integrations/bb-plugin-build/src/sprint-composition-schema.ts +597 -0
- package/integrations/bb-plugin-build/src/sprint-composition-service.ts +773 -0
- package/integrations/bb-plugin-build/src/sprint-composition-view.ts +1221 -0
- package/integrations/bb-plugin-build/src/sprint-execution-schema.ts +188 -0
- package/integrations/bb-plugin-build/src/sprint-execution-service.ts +289 -0
- package/integrations/bb-plugin-build/src/sprint-execution-view.ts +54 -0
- package/integrations/bb-plugin-build/src/task-authoring-model.ts +563 -0
- package/integrations/bb-plugin-build/src/task-authoring-schema.ts +629 -0
- package/integrations/bb-plugin-build/src/task-authoring-service.ts +842 -0
- package/integrations/bb-plugin-build/src/task-authoring-view.ts +1227 -0
- package/integrations/bb-plugin-build/src/task-catalog-schema.ts +46 -0
- package/integrations/bb-plugin-build/src/task-catalog-service.ts +44 -0
- package/integrations/bb-plugin-build/src/task-detail-readback.ts +56 -0
- package/integrations/bb-plugin-build/src/task-detail-schema.ts +171 -0
- package/integrations/bb-plugin-build/src/task-navigation.ts +446 -0
- package/integrations/bb-plugin-build/src/workbench-route.ts +74 -0
- package/package.json +306 -4
- package/schemas/README.md +80 -0
- package/schemas/build.config.schema.json +2110 -0
- package/schemas/config-v1.schema.json +136 -0
- package/schemas/execution-config.schema.json +47 -0
- package/schemas/judge-scoring.schema.json +257 -0
- package/schemas/provider-config.schema.json +179 -0
- package/schemas/telemetry-config.schema.json +79 -0
- package/schemas/user-preferences.schema.json +141 -0
- package/scripts/assert-node-runtime.mjs +146 -0
- package/scripts/preflight-native.mjs +49 -0
- package/scripts/setup-git-hooks.mjs +39 -0
- package/scripts/sync.sh +2871 -0
- package/scripts/write-node-launcher.sh +138 -0
- package/src/resources/gemini/slash-packs/default/plan.toml +15 -0
- package/src/resources/gemini/slash-packs/default/summary.toml +16 -0
- package/src/resources/gemini/slash-packs/default/tests.toml +16 -0
- package/templates/.build-project/README.md +41 -0
- package/templates/.build-project/agents/README.md +50 -0
- package/templates/.build-project/agents/architect.md +10 -0
- package/templates/.build-project/agents/code-reviewer.md +10 -0
- package/templates/.build-project/agents/debugger.md +10 -0
- package/templates/.build-project/agents/documenter.md +10 -0
- package/templates/.build-project/agents/test-automator.md +10 -0
- package/templates/.build-project/config/build.config.jsonc +64 -0
- package/templates/.build-project/config/project-context.template.json +6 -0
- package/templates/.build-project/config/task-type-aliases.presets/kanban.yaml +14 -0
- package/templates/.build-project/config/task-type-aliases.presets/scrum.yaml +17 -0
- package/templates/.build-project/config/task-type-aliases.presets/xp.yaml +12 -0
- package/templates/.build-project/config/task-type-aliases.yaml +29 -0
- package/templates/.build-project/gitignore.template +70 -0
- package/templates/.build-project/task-types/analysis.yaml +38 -0
- package/templates/.build-project/task-types/architecture.yaml +35 -0
- package/templates/.build-project/task-types/doc.yaml +34 -0
- package/templates/.build-project/task-types/feature.yaml +22 -0
- package/templates/.build-project/task-types/general.yaml +4 -0
- package/templates/.build-project/task-types/security.yaml +38 -0
- package/templates/AGENTS.template.md +85 -0
- package/templates/CLAUDE.template.md +1 -0
- package/templates/GEMINI.template.md +1 -0
- package/templates/builtin-workflows/code-review.yaml +73 -0
- package/templates/builtin-workflows/skills/code-review/SKILL.md +61 -0
- package/templates/builtin-workflows/skills/execution-contract-analysis/SKILL.md +24 -0
- package/templates/builtin-workflows/skills/execution-contract-code/SKILL.md +19 -0
- package/templates/builtin-workflows/skills/execution-contract-structured/SKILL.md +17 -0
- package/templates/ci/incident-intake.mjs +787 -0
- package/templates/ci/incidents.yml.template +103 -0
- package/templates/ci/node.yml.template +17 -0
- package/templates/ci/python.yml.template +17 -0
- package/templates/guard-kit/GUARD_SETUP.md.template +258 -0
- package/templates/guard-kit/build-guard.yml.template +189 -0
- package/templates/guard-kit/check.mjs.template +932 -0
- package/templates/guard-kit/config.json.template +7 -0
- package/templates/guard-kit/policy.json.template +1 -0
- package/templates/profiles/README.md +57 -0
- package/templates/profiles/frontier-claude.json +23 -0
- package/templates/profiles/frontier-codex.json +23 -0
|
@@ -0,0 +1,535 @@
|
|
|
1
|
+
import {
|
|
2
|
+
parseJsonWithContext
|
|
3
|
+
} from "./chunk-P6SSWAKY.js";
|
|
4
|
+
import {
|
|
5
|
+
aggregateResolverOutcomes,
|
|
6
|
+
bucketCommandOutcomes,
|
|
7
|
+
classifyResolverCommand
|
|
8
|
+
} from "./chunk-6TBEX4R4.js";
|
|
9
|
+
import {
|
|
10
|
+
runVerificationCommand
|
|
11
|
+
} from "./chunk-S2E632FQ.js";
|
|
12
|
+
import {
|
|
13
|
+
DECLARABLE_CHANNELS,
|
|
14
|
+
buildProjectVerificationGuidance,
|
|
15
|
+
buildTargetWorktreeExecutionScope
|
|
16
|
+
} from "./chunk-AHU3FKPA.js";
|
|
17
|
+
import {
|
|
18
|
+
describeVerificationCommand,
|
|
19
|
+
parseVerificationCommandArgv,
|
|
20
|
+
selectFallbacksForCommand
|
|
21
|
+
} from "./chunk-EPAMVGI3.js";
|
|
22
|
+
|
|
23
|
+
// src/core/execution/quality-gate.ts
|
|
24
|
+
import { execa } from "execa";
|
|
25
|
+
|
|
26
|
+
// src/core/project/coverage-gate-commands.ts
|
|
27
|
+
import path from "path";
|
|
28
|
+
function launcher(command) {
|
|
29
|
+
const argv = parseVerificationCommandArgv(command);
|
|
30
|
+
if (!Array.isArray(argv)) return void 0;
|
|
31
|
+
const tool = argv.find(
|
|
32
|
+
(token, index) => !(index === 0 && token === "env") && !/^[A-Za-z_][A-Za-z0-9_]*=/.test(token)
|
|
33
|
+
);
|
|
34
|
+
return tool ? path.basename(tool) : void 0;
|
|
35
|
+
}
|
|
36
|
+
function coverageRunsTest(coverage, test) {
|
|
37
|
+
const coverageLanguage = describeVerificationCommand(coverage).language;
|
|
38
|
+
const testLanguage = describeVerificationCommand(test).language;
|
|
39
|
+
if (coverageLanguage !== "unknown") return coverageLanguage === testLanguage;
|
|
40
|
+
if (testLanguage === "unknown") return false;
|
|
41
|
+
const tool = launcher(coverage);
|
|
42
|
+
return tool !== void 0 && tool === launcher(test);
|
|
43
|
+
}
|
|
44
|
+
function coverageGateCommands(verification) {
|
|
45
|
+
const coverage = verification.coverage ?? [];
|
|
46
|
+
if (coverage.length === 0) return [];
|
|
47
|
+
const uncoveredTests = verification.test.filter(
|
|
48
|
+
(test) => !coverage.some((command) => coverageRunsTest(command, test))
|
|
49
|
+
);
|
|
50
|
+
return [...coverage, ...uncoveredTests];
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
// src/core/execution/quality-gate.ts
|
|
54
|
+
function isTestEvidenceGate(gate) {
|
|
55
|
+
return gate === "coverage" || gate === "tests";
|
|
56
|
+
}
|
|
57
|
+
function isTestEvidenceGateResult(gate, notMeasured) {
|
|
58
|
+
return isTestEvidenceGate(gate) && notMeasured !== true;
|
|
59
|
+
}
|
|
60
|
+
function testEvidenceGateId(results) {
|
|
61
|
+
return results.some((result) => result.gate === "tests") ? "tests" : "coverage";
|
|
62
|
+
}
|
|
63
|
+
var NON_BLOCKING_QUALITY_GATE_SKIP_MARKERS = [
|
|
64
|
+
"skipped by configuration",
|
|
65
|
+
"not applicable to this target",
|
|
66
|
+
// Legacy Node applicability-skip markers (no longer emitted by the runner;
|
|
67
|
+
// retained for defensive back-compat — see doc above).
|
|
68
|
+
"package.json not found",
|
|
69
|
+
"no supported lockfile",
|
|
70
|
+
"has no typecheck script",
|
|
71
|
+
"has no test:coverage script",
|
|
72
|
+
"packagemanager is"
|
|
73
|
+
];
|
|
74
|
+
var NodeCommandRunner = class {
|
|
75
|
+
async run(command, args, options = {}) {
|
|
76
|
+
const start = Date.now();
|
|
77
|
+
const result = await execa(command, args, {
|
|
78
|
+
cwd: options.cwd,
|
|
79
|
+
env: options.env,
|
|
80
|
+
timeout: options.timeoutMs,
|
|
81
|
+
reject: false,
|
|
82
|
+
all: false
|
|
83
|
+
});
|
|
84
|
+
return {
|
|
85
|
+
exitCode: result.exitCode ?? null,
|
|
86
|
+
stdout: result.stdout ?? "",
|
|
87
|
+
stderr: result.stderr ?? "",
|
|
88
|
+
timedOut: result.timedOut,
|
|
89
|
+
durationMs: Date.now() - start
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
};
|
|
93
|
+
var QualityGateRunner = class {
|
|
94
|
+
/**
|
|
95
|
+
* The constructor still accepts an injectable {@link CommandRunner} for API
|
|
96
|
+
* compatibility, but post-collapse the runner NO LONGER dispatches any command
|
|
97
|
+
* through it: every gate flows through the resolver-backed path, which executes
|
|
98
|
+
* via `runVerificationCommand`. An injected runner is therefore never invoked
|
|
99
|
+
* (tests rely on this to assert the old hardcoded Node path is dead). The
|
|
100
|
+
* parameter is intentionally unused.
|
|
101
|
+
*/
|
|
102
|
+
// biome-ignore lint/complexity/noUselessConstructor: retained for API/test compatibility; the injectable runner is intentionally never invoked post-collapse (proves the hardcoded Node path is dead).
|
|
103
|
+
constructor(_commandRunner = new NodeCommandRunner()) {
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Execute the configured set of quality gates and report the overall outcome.
|
|
107
|
+
*
|
|
108
|
+
* SINGLE PATH: every target language —
|
|
109
|
+
* Node and non-Node alike — flows through the resolver-backed path. Commands
|
|
110
|
+
* are read from the language-neutral resolver
|
|
111
|
+
* ({@link ProjectCapabilities.verification}, never hardcoded) and classified by
|
|
112
|
+
* the single fail-closed classifier {@link classifyResolverCommand}. The former
|
|
113
|
+
* Node fork (hardcoded `npm run test:coverage` / `npm run typecheck` /
|
|
114
|
+
* `npm audit` gates, evaluated by their own exit-code/JSON logic) is gone.
|
|
115
|
+
*/
|
|
116
|
+
async run(options = {}) {
|
|
117
|
+
const requestedSteps = buildRequestedGateSteps(options);
|
|
118
|
+
const results = [];
|
|
119
|
+
const cwd = options.cwd ?? process.cwd();
|
|
120
|
+
const scopeResult = buildTargetWorktreeExecutionScope({
|
|
121
|
+
root: cwd,
|
|
122
|
+
confirmedRoot: true
|
|
123
|
+
});
|
|
124
|
+
if (scopeResult.status === "fail") {
|
|
125
|
+
for (const step of requestedSteps) {
|
|
126
|
+
results.push(createScopeFailureResult(step, scopeResult.reason));
|
|
127
|
+
}
|
|
128
|
+
return { success: false, results };
|
|
129
|
+
}
|
|
130
|
+
if (scopeResult.status === "unavailable") {
|
|
131
|
+
for (const step of requestedSteps) {
|
|
132
|
+
results.push(createUnavailableResult(step.id, cwd, scopeResult.reason));
|
|
133
|
+
}
|
|
134
|
+
return { success: this.summarizeSuccess(results), results };
|
|
135
|
+
}
|
|
136
|
+
const capabilities = scopeResult.value.capabilities;
|
|
137
|
+
const resolverResults = await this.runResolverBackedGates(capabilities, cwd, options);
|
|
138
|
+
return {
|
|
139
|
+
success: this.summarizeSuccess(resolverResults),
|
|
140
|
+
results: resolverResults
|
|
141
|
+
};
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* Run REAL verification gates for ANY target language using resolver-derived
|
|
145
|
+
* commands, fail-closed. This is the SINGLE [B6] language-neutral path (no Node
|
|
146
|
+
* fork): commands are read from {@link ProjectCapabilities.verification} (never
|
|
147
|
+
* hardcoded) and classified by the single fail-closed classifier
|
|
148
|
+
* {@link classifyResolverCommand} (which mirrors the deterministic test gate,
|
|
149
|
+
* src/core/judge/test-gate.ts runCapabilityTestCommand).
|
|
150
|
+
*
|
|
151
|
+
* Gate-id mapping onto the {@link QualityGateId} union:
|
|
152
|
+
* - `coverage` <- resolver `coverage` bucket ONLY (Node's
|
|
153
|
+
* `npm run test:coverage`, Go's `go test -cover`, ...). When that bucket is
|
|
154
|
+
* empty coverage was NEVER MEASURED, so the gate is reported `not-measured`
|
|
155
|
+
* ({@link createNotMeasuredResult}) rather than borrowing the test run: a
|
|
156
|
+
* passing test suite is not evidence about coverage, in either direction.
|
|
157
|
+
* - `tests` <- primary `test` bucket (+`testFallback`), emitted only when the
|
|
158
|
+
* `coverage` bucket is empty (a coverage command already runs the suite). This
|
|
159
|
+
* preserves the pre-collapse non-Node behavior — a pytest/go-test project with
|
|
160
|
+
* no dedicated coverage command still verifies via its `test` runner and still
|
|
161
|
+
* contributes an EXECUTED gate to the run — while keeping test evidence under
|
|
162
|
+
* a test gate id. {@link isTestEvidenceGate} / {@link testEvidenceGateId} are
|
|
163
|
+
* the supported way for consumers to find that evidence.
|
|
164
|
+
* - `lint` <- resolver `lint` + `typecheck` + `format` (static-analysis family).
|
|
165
|
+
* - `security` <- resolver `audit` bucket (Node `npm audit ...`, Go
|
|
166
|
+
* `govulncheck`, Rust `cargo audit`, Python `pip-audit`). The audit command's
|
|
167
|
+
* pass/fail is decided by the SAME exit-code classifier as every other
|
|
168
|
+
* command. ENUMERATED INTENTIONAL DIFFERENCE vs the deleted hardcoded Node
|
|
169
|
+
* security gate: that gate produced a richer per-severity summary message via
|
|
170
|
+
* parseSecurityOutput, whereas the classifier emits a generic message. The
|
|
171
|
+
* PASS/FAIL verdict is byte-identical because `npm audit --audit-level=high`
|
|
172
|
+
* exits NONZERO iff a high/critical (blocking) vulnerability exists (low/
|
|
173
|
+
* moderate -> exit 0), exactly the blocking-count condition parseSecurityOutput
|
|
174
|
+
* enforced. The audit JSON is preserved on the gate result's `stdout`, so the
|
|
175
|
+
* downstream {@link countBlockingVulnerabilities} consumer
|
|
176
|
+
* (autonomous-loop-controller security-regression count) keeps working.
|
|
177
|
+
*
|
|
178
|
+
* Per-gate aggregation (a gate id may collect several resolver commands, e.g.
|
|
179
|
+
* lint+typecheck both map to `lint`) is FAIL-CLOSED for the whole bucket: every
|
|
180
|
+
* command is executed with a shared remaining timeout budget. Dominance order
|
|
181
|
+
* (A8): real failure/error > timeout > unavailable > passed. The gate FAILS if
|
|
182
|
+
* any command ran-and-failed; else TIMEOUT if any timed out / budget exhausted;
|
|
183
|
+
* else UNAVAILABLE if ANY command is tool-unavailable (a required verification
|
|
184
|
+
* kind we could not run cannot be certified — a passing ruff must not mask an
|
|
185
|
+
* unavailable mypy); it PASSES only when EVERY command ran and passed.
|
|
186
|
+
*
|
|
187
|
+
* Honesty contract for an ABSENT bucket: when a requested gate has NO resolver
|
|
188
|
+
* command (e.g. a Node project with no test:coverage script, a docs-only target,
|
|
189
|
+
* a pnpm project that cannot run `npm audit`), the gate is emitted as
|
|
190
|
+
* {@link createUnavailableResult} ({ skipped:true, unavailable:true,
|
|
191
|
+
* success:false }) — never a silent pass. summarizeSuccess (>=1 EXECUTED gate
|
|
192
|
+
* that succeeded) therefore drives the overall run FALSE for an all-unavailable
|
|
193
|
+
* target, preserving the pre-collapse fail-closed outcome.
|
|
194
|
+
*
|
|
195
|
+
* Caller gate-skip options are honored: options.coverage/lint/security === false
|
|
196
|
+
* emits a success:true skipped entry (createSkippedResult) and the corresponding
|
|
197
|
+
* bucket is NOT run, so summarizeSuccess filters it out (neither passes nor fails
|
|
198
|
+
* the run). `options.coverage === false` disables the whole test/coverage family
|
|
199
|
+
* (neither the coverage nor the tests bucket is dispatched), exactly as it did
|
|
200
|
+
* when both shared one gate id.
|
|
201
|
+
*
|
|
202
|
+
* The `tests` bucket honors the resolver `testFallback` contract: a fallback
|
|
203
|
+
* command is tried ONLY when the primary `test` command reports its tool
|
|
204
|
+
* unavailable; fallbacks are never additional gates. Fallback never applies to
|
|
205
|
+
* the dedicated coverage bucket.
|
|
206
|
+
*/
|
|
207
|
+
async runResolverBackedGates(capabilities, cwd, options) {
|
|
208
|
+
const verification = capabilities.verification;
|
|
209
|
+
const results = [];
|
|
210
|
+
let remainingTimeoutMs = typeof options.timeoutMs === "number" && Number.isFinite(options.timeoutMs) ? Math.max(0, Math.floor(options.timeoutMs)) : void 0;
|
|
211
|
+
const runOne = async (command, testRole) => {
|
|
212
|
+
if (options.abortSignal?.aborted || remainingTimeoutMs !== void 0 && remainingTimeoutMs <= 0) {
|
|
213
|
+
return {
|
|
214
|
+
// Shared channel/run budget exhausted: timeout tier (never a pass), ranked
|
|
215
|
+
// below real failures and above unavailable in aggregate dominance.
|
|
216
|
+
classification: options.abortSignal?.aborted ? "failed" : "timeout",
|
|
217
|
+
command,
|
|
218
|
+
message: options.abortSignal?.aborted ? "Resolver gate skipped: run cancelled." : "Resolver gate skipped: autoloop timebox exhausted.",
|
|
219
|
+
stdout: "",
|
|
220
|
+
stderr: "",
|
|
221
|
+
durationMs: 0,
|
|
222
|
+
parsed: false
|
|
223
|
+
};
|
|
224
|
+
}
|
|
225
|
+
const stepTimeoutMs = remainingTimeoutMs !== void 0 ? Math.max(1, remainingTimeoutMs) : void 0;
|
|
226
|
+
const start = Date.now();
|
|
227
|
+
try {
|
|
228
|
+
const result = await runVerificationCommand(command, {
|
|
229
|
+
cwd,
|
|
230
|
+
timeoutMs: stepTimeoutMs,
|
|
231
|
+
abortSignal: options.abortSignal
|
|
232
|
+
});
|
|
233
|
+
const durationMs = Date.now() - start;
|
|
234
|
+
if (remainingTimeoutMs !== void 0) {
|
|
235
|
+
remainingTimeoutMs = Math.max(0, remainingTimeoutMs - durationMs);
|
|
236
|
+
}
|
|
237
|
+
const bucket = testRole ? "test" : void 0;
|
|
238
|
+
return classifyResolverCommand(command, result, durationMs, { bucket });
|
|
239
|
+
} catch (error) {
|
|
240
|
+
const durationMs = Date.now() - start;
|
|
241
|
+
if (remainingTimeoutMs !== void 0) {
|
|
242
|
+
remainingTimeoutMs = Math.max(0, remainingTimeoutMs - durationMs);
|
|
243
|
+
}
|
|
244
|
+
const detail = error instanceof Error ? error.message : String(error);
|
|
245
|
+
return {
|
|
246
|
+
classification: "failed",
|
|
247
|
+
command,
|
|
248
|
+
message: `Verification command "${command}" threw before completing: ${detail}`,
|
|
249
|
+
stdout: "",
|
|
250
|
+
stderr: detail,
|
|
251
|
+
durationMs,
|
|
252
|
+
parsed: false
|
|
253
|
+
};
|
|
254
|
+
}
|
|
255
|
+
};
|
|
256
|
+
const coverageCommands = coverageGateCommands(verification);
|
|
257
|
+
const testCommands = coverageCommands.length > 0 ? [] : verification.test;
|
|
258
|
+
const lintCommands = [...verification.lint, ...verification.typecheck, ...verification.format];
|
|
259
|
+
const auditCommands = verification.audit ?? [];
|
|
260
|
+
const anyGateHasCommands = coverageCommands.length > 0 || testCommands.length > 0 || lintCommands.length > 0 || auditCommands.length > 0;
|
|
261
|
+
const runBucket = async (gate, commands, allowFallback) => {
|
|
262
|
+
const outcomes = [];
|
|
263
|
+
for (const command of commands) {
|
|
264
|
+
let outcome = await runOne(command, verification.test.includes(command));
|
|
265
|
+
if (allowFallback && outcome.classification === "unavailable") {
|
|
266
|
+
const fallbacks = selectFallbacksForCommand(command, verification.testFallback);
|
|
267
|
+
for (const fallback of fallbacks) {
|
|
268
|
+
const fallbackOutcome = await runOne(fallback, true);
|
|
269
|
+
if (fallbackOutcome.classification !== "unavailable") {
|
|
270
|
+
outcome = fallbackOutcome;
|
|
271
|
+
break;
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
outcomes.push(outcome);
|
|
276
|
+
}
|
|
277
|
+
return aggregateResolverGate(gate, outcomes);
|
|
278
|
+
};
|
|
279
|
+
if (options.coverage === false) {
|
|
280
|
+
results.push(
|
|
281
|
+
createSkippedResult("coverage", "Test coverage check skipped by configuration.")
|
|
282
|
+
);
|
|
283
|
+
} else {
|
|
284
|
+
if (coverageCommands.length > 0) {
|
|
285
|
+
results.push(await runBucket("coverage", coverageCommands, false));
|
|
286
|
+
} else if (testCommands.length > 0) {
|
|
287
|
+
results.push(createNotMeasuredResult("coverage", cwd));
|
|
288
|
+
} else if (!anyGateHasCommands) {
|
|
289
|
+
results.push(createUnavailableResult("coverage", cwd, void 0, true));
|
|
290
|
+
}
|
|
291
|
+
if (testCommands.length > 0) {
|
|
292
|
+
results.push(await runBucket("tests", testCommands, true));
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
const uncovered = capabilities.shellLintUncovered;
|
|
296
|
+
if (options.lint === false) {
|
|
297
|
+
results.push(createSkippedResult("lint", "Linting skipped by configuration."));
|
|
298
|
+
} else if (lintCommands.length > 0) {
|
|
299
|
+
const outcomes = [];
|
|
300
|
+
for (const command of lintCommands) {
|
|
301
|
+
outcomes.push(await runOne(command, false));
|
|
302
|
+
}
|
|
303
|
+
const lintGate = aggregateResolverGate("lint", outcomes);
|
|
304
|
+
if (verification.typecheck.length === 0) lintGate.styleOnly = true;
|
|
305
|
+
results.push(withUncoveredFiles(lintGate, uncovered));
|
|
306
|
+
} else if (!anyGateHasCommands) {
|
|
307
|
+
results.push(
|
|
308
|
+
withUncoveredFiles(createUnavailableResult("lint", cwd, void 0, true), uncovered)
|
|
309
|
+
);
|
|
310
|
+
} else if (uncovered && uncovered.length > 0) {
|
|
311
|
+
results.push(withUncoveredFiles(createNotMeasuredResult("lint", cwd), uncovered));
|
|
312
|
+
}
|
|
313
|
+
if (options.security === false) {
|
|
314
|
+
results.push(createSkippedResult("security", "Security audit skipped by configuration."));
|
|
315
|
+
} else if (auditCommands.length > 0) {
|
|
316
|
+
const outcomes = [];
|
|
317
|
+
for (const command of auditCommands) {
|
|
318
|
+
outcomes.push(await runOne(command, false));
|
|
319
|
+
}
|
|
320
|
+
results.push(aggregateResolverGate("security", outcomes));
|
|
321
|
+
} else if (anyGateHasCommands) {
|
|
322
|
+
if (options.securityNotModeled === "not-applicable") {
|
|
323
|
+
results.push({
|
|
324
|
+
...createSkippedResult(
|
|
325
|
+
"security",
|
|
326
|
+
"Security audit not applicable to this target: no audit command was detected."
|
|
327
|
+
),
|
|
328
|
+
notApplicable: true
|
|
329
|
+
});
|
|
330
|
+
} else if (options.security === true) {
|
|
331
|
+
results.push(
|
|
332
|
+
createUnavailableResult("security", cwd, "no security audit command was detected", true)
|
|
333
|
+
);
|
|
334
|
+
} else {
|
|
335
|
+
results.push(createNotMeasuredResult("security", cwd));
|
|
336
|
+
}
|
|
337
|
+
} else if (!anyGateHasCommands) {
|
|
338
|
+
results.push(createUnavailableResult("security", cwd, void 0, true));
|
|
339
|
+
}
|
|
340
|
+
return results;
|
|
341
|
+
}
|
|
342
|
+
summarizeSuccess(results) {
|
|
343
|
+
const executedResults = results.filter((res) => res.skipped !== true);
|
|
344
|
+
return executedResults.length > 0 && results.every((res) => res.success);
|
|
345
|
+
}
|
|
346
|
+
};
|
|
347
|
+
function buildRequestedGateSteps(options) {
|
|
348
|
+
const npmCommand = getNpmCommand();
|
|
349
|
+
const steps = [];
|
|
350
|
+
if (options.coverage !== false) {
|
|
351
|
+
steps.push({
|
|
352
|
+
id: "coverage",
|
|
353
|
+
title: "Test Coverage",
|
|
354
|
+
command: npmCommand,
|
|
355
|
+
args: ["run", "test:coverage"],
|
|
356
|
+
description: "Run the test suite with coverage reporting."
|
|
357
|
+
});
|
|
358
|
+
}
|
|
359
|
+
if (options.lint !== false) {
|
|
360
|
+
steps.push({
|
|
361
|
+
id: "lint",
|
|
362
|
+
title: "Static Analysis",
|
|
363
|
+
command: npmCommand,
|
|
364
|
+
args: ["run", "typecheck"],
|
|
365
|
+
description: "Type-driven linting using the project TypeScript configuration."
|
|
366
|
+
});
|
|
367
|
+
}
|
|
368
|
+
if (options.security !== false) {
|
|
369
|
+
steps.push({
|
|
370
|
+
id: "security",
|
|
371
|
+
title: "Dependency Security Audit",
|
|
372
|
+
command: npmCommand,
|
|
373
|
+
args: ["audit", "--omit=dev", "--audit-level=high", "--json"],
|
|
374
|
+
description: "Check production dependencies for known vulnerabilities using npm audit."
|
|
375
|
+
});
|
|
376
|
+
}
|
|
377
|
+
return steps;
|
|
378
|
+
}
|
|
379
|
+
function isSeverityBlocking(level) {
|
|
380
|
+
const normalized = level.toLowerCase();
|
|
381
|
+
return normalized === "critical" || normalized === "high";
|
|
382
|
+
}
|
|
383
|
+
function countBlockingVulnerabilities(stdout) {
|
|
384
|
+
const output = stdout.trim();
|
|
385
|
+
if (!output) {
|
|
386
|
+
return null;
|
|
387
|
+
}
|
|
388
|
+
try {
|
|
389
|
+
const parsed = parseJsonWithContext(output, "security scan output");
|
|
390
|
+
const parsedObj = parsed;
|
|
391
|
+
const metadata = parsedObj?.metadata;
|
|
392
|
+
const vulnerabilities = metadata?.vulnerabilities;
|
|
393
|
+
if (!vulnerabilities) {
|
|
394
|
+
return null;
|
|
395
|
+
}
|
|
396
|
+
return Object.entries(vulnerabilities).reduce((acc, [level, count]) => {
|
|
397
|
+
const numeric = typeof count === "number" && Number.isFinite(count) ? count : 0;
|
|
398
|
+
return isSeverityBlocking(level) ? acc + numeric : acc;
|
|
399
|
+
}, 0);
|
|
400
|
+
} catch {
|
|
401
|
+
return null;
|
|
402
|
+
}
|
|
403
|
+
}
|
|
404
|
+
function getNpmCommand() {
|
|
405
|
+
return process.platform === "win32" ? "npm.cmd" : "npm";
|
|
406
|
+
}
|
|
407
|
+
function aggregateResolverGate(gate, outcomes) {
|
|
408
|
+
const aggregate = aggregateResolverOutcomes(outcomes);
|
|
409
|
+
const representative = aggregate.representative;
|
|
410
|
+
if (aggregate.classification === "failed" || aggregate.classification === "timeout") {
|
|
411
|
+
return {
|
|
412
|
+
gate,
|
|
413
|
+
success: false,
|
|
414
|
+
message: representative?.message ?? (aggregate.classification === "timeout" ? `Resolver ${gate} gate timed out.` : `Resolver ${gate} gate failed.`),
|
|
415
|
+
command: representative?.command ?? "",
|
|
416
|
+
args: [],
|
|
417
|
+
stdout: representative?.stdout ?? "",
|
|
418
|
+
stderr: representative?.stderr ?? "",
|
|
419
|
+
durationMs: representative?.durationMs ?? 0,
|
|
420
|
+
failedCommands: bucketCommandOutcomes(outcomes)
|
|
421
|
+
};
|
|
422
|
+
}
|
|
423
|
+
if (aggregate.classification === "unavailable") {
|
|
424
|
+
const zeroTestsNoEvidence = outcomes.some((outcome) => outcome.zeroTestsNoEvidence === true) || representative?.zeroTestsNoEvidence === true;
|
|
425
|
+
return {
|
|
426
|
+
gate,
|
|
427
|
+
success: false,
|
|
428
|
+
skipped: true,
|
|
429
|
+
unavailable: true,
|
|
430
|
+
zeroTestsNoEvidence: zeroTestsNoEvidence || void 0,
|
|
431
|
+
message: representative ? representative.message : `Resolver ${gate} gate unavailable: no verification tool was found.`,
|
|
432
|
+
command: representative?.command ?? "",
|
|
433
|
+
args: [],
|
|
434
|
+
stdout: representative?.stdout ?? "",
|
|
435
|
+
stderr: representative?.stderr ?? "",
|
|
436
|
+
durationMs: representative?.durationMs ?? 0
|
|
437
|
+
};
|
|
438
|
+
}
|
|
439
|
+
return {
|
|
440
|
+
gate,
|
|
441
|
+
success: true,
|
|
442
|
+
message: representative?.message ?? `Resolver ${gate} gate passed.`,
|
|
443
|
+
command: representative?.command ?? "",
|
|
444
|
+
args: [],
|
|
445
|
+
stdout: representative?.stdout ?? "",
|
|
446
|
+
stderr: representative?.stderr ?? "",
|
|
447
|
+
durationMs: representative?.durationMs ?? 0
|
|
448
|
+
};
|
|
449
|
+
}
|
|
450
|
+
function withUncoveredFiles(result, uncoveredFiles) {
|
|
451
|
+
if (!uncoveredFiles || uncoveredFiles.length === 0) {
|
|
452
|
+
return result;
|
|
453
|
+
}
|
|
454
|
+
return { ...result, uncoveredFiles: [...uncoveredFiles] };
|
|
455
|
+
}
|
|
456
|
+
function createSkippedResult(gate, message) {
|
|
457
|
+
return {
|
|
458
|
+
gate,
|
|
459
|
+
success: true,
|
|
460
|
+
skipped: true,
|
|
461
|
+
message,
|
|
462
|
+
command: "",
|
|
463
|
+
args: [],
|
|
464
|
+
stdout: "",
|
|
465
|
+
stderr: "",
|
|
466
|
+
durationMs: 0
|
|
467
|
+
};
|
|
468
|
+
}
|
|
469
|
+
function createNotMeasuredResult(gate, cwd) {
|
|
470
|
+
let detail = "";
|
|
471
|
+
try {
|
|
472
|
+
const guidance = buildProjectVerificationGuidance(cwd);
|
|
473
|
+
detail = ` Detected target languages: ${guidance.capabilities.languages.join(", ")}.`;
|
|
474
|
+
} catch {
|
|
475
|
+
detail = "";
|
|
476
|
+
}
|
|
477
|
+
return {
|
|
478
|
+
...createSkippedResult(
|
|
479
|
+
gate,
|
|
480
|
+
`${capitalizeGateId(gate)} gate not applicable to this target: no ${gate} command was detected, so ${gate} was never measured.${detail}`
|
|
481
|
+
),
|
|
482
|
+
notMeasured: true
|
|
483
|
+
};
|
|
484
|
+
}
|
|
485
|
+
function createScopeFailureResult(step, reason) {
|
|
486
|
+
return {
|
|
487
|
+
gate: step.id,
|
|
488
|
+
success: false,
|
|
489
|
+
message: `Quality gate scope setup failed: ${reason}`,
|
|
490
|
+
command: step.command,
|
|
491
|
+
args: step.args,
|
|
492
|
+
stdout: "",
|
|
493
|
+
stderr: "",
|
|
494
|
+
durationMs: 0
|
|
495
|
+
};
|
|
496
|
+
}
|
|
497
|
+
function createUnavailableResult(gate, cwd, reason = "target project is not a Node package", notApplicable = false) {
|
|
498
|
+
let detail;
|
|
499
|
+
try {
|
|
500
|
+
const guidance = buildProjectVerificationGuidance(cwd);
|
|
501
|
+
const languages = guidance.capabilities.languages.join(", ");
|
|
502
|
+
const commandSummary = guidance.commands.length > 0 ? `Detected verification commands: ${guidance.commands.slice(0, 3).map((command) => command.command).join("; ")}${guidance.commands.length > 3 ? "; ..." : ""}.` : `No deterministic verification command was detected. Hint: declare one in .build-project/config/build.config.jsonc under a "verification" object (keys: ${DECLARABLE_CHANNELS.join(", ")}; each a string or array of strings), e.g. verification.test, so Build can run it automatically.`;
|
|
503
|
+
detail = `Detected target languages: ${languages}. ${commandSummary}`;
|
|
504
|
+
} catch (error) {
|
|
505
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
506
|
+
detail = `Project verification guidance unavailable: ${message}`;
|
|
507
|
+
}
|
|
508
|
+
return {
|
|
509
|
+
gate,
|
|
510
|
+
success: false,
|
|
511
|
+
skipped: true,
|
|
512
|
+
unavailable: true,
|
|
513
|
+
...notApplicable ? { notApplicable: true } : {},
|
|
514
|
+
message: `${capitalizeGateId(gate)} gate unavailable: ${reason}. ${detail}`,
|
|
515
|
+
command: "",
|
|
516
|
+
args: [],
|
|
517
|
+
stdout: "",
|
|
518
|
+
stderr: "",
|
|
519
|
+
durationMs: 0
|
|
520
|
+
};
|
|
521
|
+
}
|
|
522
|
+
function capitalizeGateId(gate) {
|
|
523
|
+
return gate.charAt(0).toUpperCase() + gate.slice(1);
|
|
524
|
+
}
|
|
525
|
+
|
|
526
|
+
export {
|
|
527
|
+
isTestEvidenceGate,
|
|
528
|
+
isTestEvidenceGateResult,
|
|
529
|
+
testEvidenceGateId,
|
|
530
|
+
NON_BLOCKING_QUALITY_GATE_SKIP_MARKERS,
|
|
531
|
+
NodeCommandRunner,
|
|
532
|
+
QualityGateRunner,
|
|
533
|
+
countBlockingVulnerabilities
|
|
534
|
+
};
|
|
535
|
+
//# sourceMappingURL=chunk-QOFLUS24.js.map
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
// src/core/project/tool-output-dirs.ts
|
|
2
|
+
var TOOL_OUTPUT_DIRS = [
|
|
3
|
+
// Dependency and cache trees: never first-party, at any depth.
|
|
4
|
+
{ path: "node_modules", scope: "anywhere" },
|
|
5
|
+
// npm, pnpm, yarn
|
|
6
|
+
{ path: ".venv", scope: "anywhere" },
|
|
7
|
+
// Python virtualenvs
|
|
8
|
+
{ path: "venv", scope: "anywhere" },
|
|
9
|
+
{ path: "__pycache__", scope: "anywhere" },
|
|
10
|
+
// Terraform's generated provider/module cache. A checkout containing only
|
|
11
|
+
// `.terraform/modules/.../*.tf` cache files must not be detected as a
|
|
12
|
+
// Terraform project; only first-party `*.tf` outside it counts.
|
|
13
|
+
{ path: ".terraform", scope: "anywhere" },
|
|
14
|
+
{ path: "dist-newstyle", scope: "anywhere" },
|
|
15
|
+
// cabal
|
|
16
|
+
{ path: ".stack-work", scope: "anywhere" },
|
|
17
|
+
// stack
|
|
18
|
+
{ path: ".zig-cache", scope: "anywhere" },
|
|
19
|
+
// zig
|
|
20
|
+
{ path: "zig-out", scope: "anywhere" },
|
|
21
|
+
{ path: ".gradle", scope: "anywhere" },
|
|
22
|
+
// Gradle project state
|
|
23
|
+
{ path: ".kotlin", scope: "anywhere" },
|
|
24
|
+
// Kotlin Gradle plugin state
|
|
25
|
+
{ path: ".build", scope: "anywhere" },
|
|
26
|
+
// SwiftPM
|
|
27
|
+
{ path: ".bsp", scope: "anywhere" },
|
|
28
|
+
// sbt / Bloop build-server state
|
|
29
|
+
// Names an author may also give a source directory: leading segment only.
|
|
30
|
+
{ path: "dist", scope: "root", manifests: ["package.json", "pyproject.toml", "setup.py"] },
|
|
31
|
+
{
|
|
32
|
+
path: "build",
|
|
33
|
+
scope: "root",
|
|
34
|
+
manifests: ["build.gradle", "build.gradle.kts", "CMakeLists.txt", "pyproject.toml", "setup.py"]
|
|
35
|
+
},
|
|
36
|
+
// Cargo, Maven, sbt (including sbt 2 `target/out`)
|
|
37
|
+
{ path: "target", scope: "root", manifests: ["Cargo.toml", "pom.xml", "build.sbt"] },
|
|
38
|
+
{ path: "vendor", scope: "root", manifests: ["go.mod", "composer.json", "Gemfile"] },
|
|
39
|
+
{ path: "_build", scope: "root", manifests: ["mix.exs", "dune-project"] },
|
|
40
|
+
// mix, dune
|
|
41
|
+
{ path: "project/target", scope: "root" }
|
|
42
|
+
// sbt meta-build
|
|
43
|
+
];
|
|
44
|
+
var TOOL_OUTPUT_DIR_NAMES = TOOL_OUTPUT_DIRS.filter(
|
|
45
|
+
(dir) => !dir.path.includes("/")
|
|
46
|
+
).map((dir) => dir.path);
|
|
47
|
+
var TOOL_OUTPUT_ANYWHERE_NAMES = new Set(
|
|
48
|
+
TOOL_OUTPUT_DIRS.filter((dir) => dir.scope === "anywhere").map((dir) => dir.path)
|
|
49
|
+
);
|
|
50
|
+
var TOOL_OUTPUT_ROOT_DIR_PATHS = TOOL_OUTPUT_DIRS.filter(
|
|
51
|
+
(dir) => dir.scope === "root"
|
|
52
|
+
).map((dir) => dir.path);
|
|
53
|
+
var TOOL_OUTPUT_ROOT_PREFIXES = TOOL_OUTPUT_DIRS.flatMap((dir) => [
|
|
54
|
+
`${dir.path}/`,
|
|
55
|
+
dir.path
|
|
56
|
+
]);
|
|
57
|
+
function isUnderAnywhereToolOutputDir(relativePath) {
|
|
58
|
+
return relativePath.replace(/\\/g, "/").split("/").some((segment) => TOOL_OUTPUT_ANYWHERE_NAMES.has(segment));
|
|
59
|
+
}
|
|
60
|
+
var ROOT_SCOPE_MANIFESTS = new Map(
|
|
61
|
+
TOOL_OUTPUT_DIRS.filter((dir) => dir.scope === "root" && dir.manifests).map((dir) => [
|
|
62
|
+
dir.path,
|
|
63
|
+
dir.manifests ?? []
|
|
64
|
+
])
|
|
65
|
+
);
|
|
66
|
+
function nestedToolOutputCandidates(relativePath) {
|
|
67
|
+
const segments = relativePath.replace(/\\/g, "/").replace(/^\.\//, "").split("/");
|
|
68
|
+
const candidates = [];
|
|
69
|
+
for (let index = 1; index < segments.length - 1; index++) {
|
|
70
|
+
const manifests = ROOT_SCOPE_MANIFESTS.get(segments[index] ?? "");
|
|
71
|
+
if (manifests) candidates.push({ dir: segments.slice(0, index + 1).join("/"), manifests });
|
|
72
|
+
}
|
|
73
|
+
return candidates;
|
|
74
|
+
}
|
|
75
|
+
function isUnderNestedToolOutputDir(relativePath, probe, assumedPresent) {
|
|
76
|
+
const confirm = probe?.isNestedToolOutputDir;
|
|
77
|
+
if (!confirm) return false;
|
|
78
|
+
return nestedToolOutputCandidates(relativePath).some(
|
|
79
|
+
(candidate) => confirm.call(probe, candidate, assumedPresent)
|
|
80
|
+
);
|
|
81
|
+
}
|
|
82
|
+
function isUnderRootToolOutputDir(relativePath) {
|
|
83
|
+
const normalized = relativePath.replace(/\\/g, "/").replace(/^\.\//, "");
|
|
84
|
+
return TOOL_OUTPUT_ROOT_DIR_PATHS.some(
|
|
85
|
+
(dir) => normalized === dir || normalized.startsWith(`${dir}/`)
|
|
86
|
+
) || nestedToolOutputCandidates(normalized).length > 0;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
export {
|
|
90
|
+
TOOL_OUTPUT_DIR_NAMES,
|
|
91
|
+
TOOL_OUTPUT_ANYWHERE_NAMES,
|
|
92
|
+
TOOL_OUTPUT_ROOT_DIR_PATHS,
|
|
93
|
+
TOOL_OUTPUT_ROOT_PREFIXES,
|
|
94
|
+
isUnderAnywhereToolOutputDir,
|
|
95
|
+
isUnderNestedToolOutputDir,
|
|
96
|
+
isUnderRootToolOutputDir
|
|
97
|
+
};
|
|
98
|
+
//# sourceMappingURL=chunk-QOIASNEJ.js.map
|