@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,1146 @@
|
|
|
1
|
+
import {
|
|
2
|
+
normalizeReasoningEffortInput
|
|
3
|
+
} from "./chunk-4BTDUT2S.js";
|
|
4
|
+
import {
|
|
5
|
+
MAX_CONCURRENT_DEFAULT
|
|
6
|
+
} from "./chunk-U4DRS6ZW.js";
|
|
7
|
+
|
|
8
|
+
// src/core/config/schemas/config-schemas.ts
|
|
9
|
+
import { hostname } from "os";
|
|
10
|
+
import { z } from "zod";
|
|
11
|
+
var ConfigNumberSchema = z.preprocess((value) => {
|
|
12
|
+
if (typeof value === "string" && value.trim() !== "") {
|
|
13
|
+
const parsed = Number(value);
|
|
14
|
+
return Number.isNaN(parsed) ? value : parsed;
|
|
15
|
+
}
|
|
16
|
+
return value;
|
|
17
|
+
}, z.number());
|
|
18
|
+
var ConfigBooleanSchema = z.preprocess((value) => {
|
|
19
|
+
if (typeof value === "string") {
|
|
20
|
+
const normalized = value.trim().toLowerCase();
|
|
21
|
+
if (normalized === "true") return true;
|
|
22
|
+
if (normalized === "false") return false;
|
|
23
|
+
}
|
|
24
|
+
return value;
|
|
25
|
+
}, z.boolean());
|
|
26
|
+
function normalizeJudgeType(value) {
|
|
27
|
+
return typeof value === "string" ? value.trim().toLowerCase() : value;
|
|
28
|
+
}
|
|
29
|
+
var JudgeTypeSchema = z.preprocess(normalizeJudgeType, z.enum(["ai", "multi-lens"]));
|
|
30
|
+
var ModelChangeContextTypeSchema = z.enum(["cli_flag", "config_edit", "first_time"]);
|
|
31
|
+
var ModelFamilySchema = z.enum(["sonnet", "gpt", "glm", "kimi"]);
|
|
32
|
+
var ModelRoutingRouteSchema = z.object({
|
|
33
|
+
/**
|
|
34
|
+
* Execution provider (tool/facade) Build will run (e.g. codex/claude/cursor/copilot/opencode).
|
|
35
|
+
* Note: This is NOT the upstream provider/host.
|
|
36
|
+
*/
|
|
37
|
+
engine: z.string(),
|
|
38
|
+
/** Upstream provider/host label for display/debugging (OpenAI/Anthropic/Z.ai/Moonshot/...) */
|
|
39
|
+
upstream: z.string().optional(),
|
|
40
|
+
/**
|
|
41
|
+
* Model template or literal model ID to pass to the execution provider.
|
|
42
|
+
*
|
|
43
|
+
* Supported placeholders:
|
|
44
|
+
* - {{latest}}: resolved best-available model for this engine+family request (deterministic, local)
|
|
45
|
+
* - {{family}}: model family (sonnet/gpt/glm/kimi)
|
|
46
|
+
* - {{version}}: resolved family version (e.g. "4.5", "5.2")
|
|
47
|
+
* - {{version_dash}}: resolved family version with '.' replaced by '-' (e.g. "4-5", "5-2")
|
|
48
|
+
*/
|
|
49
|
+
modelTemplate: z.string().optional()
|
|
50
|
+
}).strict();
|
|
51
|
+
var ModelRoutingFailoverSchema = z.object({
|
|
52
|
+
enabled: z.boolean().optional(),
|
|
53
|
+
maxAttempts: z.number().int().min(1).max(10).optional()
|
|
54
|
+
}).optional();
|
|
55
|
+
var ModelRoutingPreferencesSchema = z.object({
|
|
56
|
+
/** Retired, still read this release (retired-config-keys.ts): ordered routes per family */
|
|
57
|
+
routes: z.record(ModelFamilySchema, z.array(ModelRoutingRouteSchema)).optional(),
|
|
58
|
+
failover: ModelRoutingFailoverSchema
|
|
59
|
+
// retired, still read: use execution.failover
|
|
60
|
+
}).optional();
|
|
61
|
+
var CursorConfigSchema = z.object({
|
|
62
|
+
enabled: z.boolean().optional(),
|
|
63
|
+
model: z.string().optional(),
|
|
64
|
+
aliases: z.object({
|
|
65
|
+
models: z.record(z.string(), z.string()).optional()
|
|
66
|
+
}).optional(),
|
|
67
|
+
preferences: z.object({
|
|
68
|
+
firstSeen: z.iso.datetime().optional(),
|
|
69
|
+
lastModelChange: z.iso.datetime().optional(),
|
|
70
|
+
userChosenDefault: z.string().optional(),
|
|
71
|
+
usageCount: z.number().optional(),
|
|
72
|
+
version: z.string().optional()
|
|
73
|
+
}).optional()
|
|
74
|
+
}).strict();
|
|
75
|
+
var ClaudeConfigSchema = z.object({
|
|
76
|
+
enabled: z.boolean().optional(),
|
|
77
|
+
model: z.string().optional(),
|
|
78
|
+
aliases: z.object({
|
|
79
|
+
models: z.record(z.string(), z.string()).optional()
|
|
80
|
+
}).optional()
|
|
81
|
+
}).strict();
|
|
82
|
+
var CodexConfigSchema = z.object({
|
|
83
|
+
enabled: z.boolean().optional(),
|
|
84
|
+
model: z.string().optional(),
|
|
85
|
+
aliases: z.object({
|
|
86
|
+
models: z.record(z.string(), z.string()).optional()
|
|
87
|
+
}).optional()
|
|
88
|
+
}).strict();
|
|
89
|
+
var CopilotConfigSchema = z.object({
|
|
90
|
+
enabled: z.boolean().optional(),
|
|
91
|
+
organization: z.string().optional(),
|
|
92
|
+
seat: z.string().optional(),
|
|
93
|
+
aliases: z.object({
|
|
94
|
+
models: z.record(z.string(), z.string()).optional()
|
|
95
|
+
}).optional()
|
|
96
|
+
}).strict();
|
|
97
|
+
var GeminiConfigSchema = z.object({
|
|
98
|
+
enabled: z.boolean().optional(),
|
|
99
|
+
model: z.string().optional(),
|
|
100
|
+
aliases: z.object({
|
|
101
|
+
models: z.record(z.string(), z.string()).optional()
|
|
102
|
+
}).optional()
|
|
103
|
+
}).loose();
|
|
104
|
+
var OpencodeConfigSchema = z.object({
|
|
105
|
+
enabled: z.boolean().optional(),
|
|
106
|
+
model: z.string().optional(),
|
|
107
|
+
aliases: z.object({
|
|
108
|
+
models: z.record(z.string(), z.string()).optional()
|
|
109
|
+
}).optional()
|
|
110
|
+
}).loose();
|
|
111
|
+
var GrokConfigSchema = z.object({
|
|
112
|
+
enabled: z.boolean().optional(),
|
|
113
|
+
model: z.string().optional(),
|
|
114
|
+
aliases: z.object({
|
|
115
|
+
models: z.record(z.string(), z.string()).optional()
|
|
116
|
+
}).optional()
|
|
117
|
+
}).loose();
|
|
118
|
+
var OpenrouterConfigSchema = z.object({
|
|
119
|
+
enabled: z.boolean().optional(),
|
|
120
|
+
model: z.string().optional(),
|
|
121
|
+
aliases: z.object({
|
|
122
|
+
models: z.record(z.string(), z.string()).optional()
|
|
123
|
+
}).optional()
|
|
124
|
+
}).loose();
|
|
125
|
+
var KiroConfigSchema = z.object({
|
|
126
|
+
enabled: z.boolean().optional(),
|
|
127
|
+
model: z.string().optional(),
|
|
128
|
+
aliases: z.object({
|
|
129
|
+
models: z.record(z.string(), z.string()).optional()
|
|
130
|
+
}).optional()
|
|
131
|
+
}).loose();
|
|
132
|
+
var AntigravityConfigSchema = z.object({
|
|
133
|
+
enabled: z.boolean().optional(),
|
|
134
|
+
model: z.string().optional(),
|
|
135
|
+
aliases: z.object({
|
|
136
|
+
models: z.record(z.string(), z.string()).optional()
|
|
137
|
+
}).optional()
|
|
138
|
+
}).loose();
|
|
139
|
+
var PiConfigSchema = z.object({
|
|
140
|
+
enabled: z.boolean().optional(),
|
|
141
|
+
model: z.string().optional(),
|
|
142
|
+
aliases: z.object({
|
|
143
|
+
models: z.record(z.string(), z.string()).optional()
|
|
144
|
+
}).optional()
|
|
145
|
+
}).loose();
|
|
146
|
+
var ProvidersConfigSchema = z.object({
|
|
147
|
+
claude: ClaudeConfigSchema.optional(),
|
|
148
|
+
codex: CodexConfigSchema.optional(),
|
|
149
|
+
cursor: CursorConfigSchema.optional(),
|
|
150
|
+
copilot: CopilotConfigSchema.optional(),
|
|
151
|
+
gemini: GeminiConfigSchema.optional(),
|
|
152
|
+
opencode: OpencodeConfigSchema.optional(),
|
|
153
|
+
grok: GrokConfigSchema.optional(),
|
|
154
|
+
openrouter: OpenrouterConfigSchema.optional(),
|
|
155
|
+
kiro: KiroConfigSchema.optional(),
|
|
156
|
+
antigravity: AntigravityConfigSchema.optional(),
|
|
157
|
+
pi: PiConfigSchema.optional()
|
|
158
|
+
}).strict();
|
|
159
|
+
var QualityConfigSchema = z.object({
|
|
160
|
+
// Legacy project config key accepted for backwards-compatible `build config set`.
|
|
161
|
+
enforce: ConfigBooleanSchema.optional(),
|
|
162
|
+
coverage: z.object({
|
|
163
|
+
enabled: ConfigBooleanSchema,
|
|
164
|
+
threshold: ConfigNumberSchema
|
|
165
|
+
}).optional(),
|
|
166
|
+
lint: z.object({
|
|
167
|
+
enabled: ConfigBooleanSchema
|
|
168
|
+
}).optional(),
|
|
169
|
+
security: z.object({
|
|
170
|
+
enabled: ConfigBooleanSchema
|
|
171
|
+
}).optional()
|
|
172
|
+
}).strict();
|
|
173
|
+
var LEGACY_REPO_LOCAL_TELEMETRY_DATABASE = ".build-project/telemetry/db/variants.db";
|
|
174
|
+
var TelemetryConfigSchema = z.object({
|
|
175
|
+
enabled: z.boolean().optional(),
|
|
176
|
+
/**
|
|
177
|
+
* DEPRECATED override. Set only to relocate telemetry outside the repository.
|
|
178
|
+
*
|
|
179
|
+
* Telemetry is written under the Build data root; there is no default value.
|
|
180
|
+
* A value equal to the historical repo-local default
|
|
181
|
+
* (`.build-project/telemetry/db/variants.db`) is ignored, and any other value is
|
|
182
|
+
* honored with a one-time deprecation warning.
|
|
183
|
+
*/
|
|
184
|
+
database: z.string().optional(),
|
|
185
|
+
ephemeralReplication: z.boolean().optional(),
|
|
186
|
+
retention: z.object({
|
|
187
|
+
backups_days: z.number().positive().optional(),
|
|
188
|
+
backups_monthly_count: z.number().nonnegative().optional(),
|
|
189
|
+
backups_max_bytes: z.number().nonnegative().optional(),
|
|
190
|
+
logs_days: z.number().positive().optional(),
|
|
191
|
+
vacuum_on_cleanup: z.boolean().optional()
|
|
192
|
+
}).strict().optional()
|
|
193
|
+
}).strict();
|
|
194
|
+
var VariantsConfigSchema = z.object({
|
|
195
|
+
/**
|
|
196
|
+
* Removed by ADR-025 (variant strategy axis). Accepted for one release so an
|
|
197
|
+
* existing consumer config still loads; the value is ignored by resolution
|
|
198
|
+
* and reported once by the config validator.
|
|
199
|
+
*/
|
|
200
|
+
strategies: z.record(
|
|
201
|
+
z.string(),
|
|
202
|
+
z.object({
|
|
203
|
+
weight: z.number()
|
|
204
|
+
})
|
|
205
|
+
).optional(),
|
|
206
|
+
maxConcurrent: z.number().optional()
|
|
207
|
+
}).strict();
|
|
208
|
+
var ComplexityNumberSchema = z.union([
|
|
209
|
+
z.number(),
|
|
210
|
+
z.object({
|
|
211
|
+
low: z.number(),
|
|
212
|
+
medium: z.number(),
|
|
213
|
+
high: z.number()
|
|
214
|
+
})
|
|
215
|
+
]);
|
|
216
|
+
var ReasoningEffortSchema = z.preprocess(
|
|
217
|
+
(value) => {
|
|
218
|
+
if (value === void 0 || value === null) return void 0;
|
|
219
|
+
const normalized = normalizeReasoningEffortInput(value);
|
|
220
|
+
return normalized ?? value;
|
|
221
|
+
},
|
|
222
|
+
z.enum(["low", "medium", "high", "xhigh", "max"])
|
|
223
|
+
);
|
|
224
|
+
var OptimizationVariantRecipeSchema = z.object({
|
|
225
|
+
provider: z.string().trim().min(1),
|
|
226
|
+
model: z.string().trim().min(1).optional(),
|
|
227
|
+
modelRole: z.string().trim().min(1).optional(),
|
|
228
|
+
fallbackModelRole: z.string().trim().min(1).optional(),
|
|
229
|
+
// Retired: still read this release.
|
|
230
|
+
reasoningEffort: ReasoningEffortSchema.optional(),
|
|
231
|
+
/** Removed by ADR-025; accepted for one release and ignored. */
|
|
232
|
+
strategy: z.string().trim().min(1).optional(),
|
|
233
|
+
mode: z.enum(["local", "cloud"]).optional()
|
|
234
|
+
}).strict().superRefine((recipe, ctx) => {
|
|
235
|
+
if (recipe.mode === "cloud") {
|
|
236
|
+
ctx.addIssue({
|
|
237
|
+
code: "custom",
|
|
238
|
+
path: ["mode"],
|
|
239
|
+
message: 'Cloud execution is not supported; use mode "local"'
|
|
240
|
+
});
|
|
241
|
+
}
|
|
242
|
+
});
|
|
243
|
+
var OptimizationModeRecipeSchema = z.object({
|
|
244
|
+
/** Retired: speed/cost still read it this release; quality ignores it. */
|
|
245
|
+
providerPreference: z.array(z.string().trim().min(1)).optional(),
|
|
246
|
+
modelRole: z.string().trim().min(1).optional(),
|
|
247
|
+
fallbackModelRole: z.string().trim().min(1).optional(),
|
|
248
|
+
// Retired: speed/cost still read it; quality ignores it.
|
|
249
|
+
reasoningEffort: ReasoningEffortSchema.optional(),
|
|
250
|
+
variants: z.array(OptimizationVariantRecipeSchema).optional(),
|
|
251
|
+
parallel: ComplexityNumberSchema.optional(),
|
|
252
|
+
maxConcurrent: ComplexityNumberSchema.optional(),
|
|
253
|
+
earlyExit: z.boolean().optional(),
|
|
254
|
+
streamResults: z.boolean().optional(),
|
|
255
|
+
compete: z.boolean().optional(),
|
|
256
|
+
aiJudge: z.boolean().optional(),
|
|
257
|
+
synthesize: z.boolean().optional(),
|
|
258
|
+
autoloop: z.boolean().optional(),
|
|
259
|
+
autoloopMaxIterations: ComplexityNumberSchema.optional(),
|
|
260
|
+
autoloopTimeboxMinutes: ComplexityNumberSchema.optional(),
|
|
261
|
+
autoloopMinProgress: z.number().min(0).max(1).optional(),
|
|
262
|
+
autoloopJudge: z.boolean().optional(),
|
|
263
|
+
autoloopQualityGates: z.boolean().optional(),
|
|
264
|
+
// Phase B schema catch-up: runtime/flag concepts that already exist
|
|
265
|
+
// (`--autoloop-completion-promise`, `--autoloop-completion-signal`,
|
|
266
|
+
// `--autoloop-validation`) but were not previously schema-covered.
|
|
267
|
+
autoloopCompletionPromise: z.string().optional(),
|
|
268
|
+
autoloopCompletionSignal: z.string().optional(),
|
|
269
|
+
autoloopValidationMode: z.enum(["heuristic", "none", "deterministic"]).optional()
|
|
270
|
+
}).strict();
|
|
271
|
+
var OptimizationAutoloopRecipeSchema = z.object({
|
|
272
|
+
// Retired semanticVerifier* keys: still read this release (retired-config-keys.ts).
|
|
273
|
+
semanticVerifierProviderPreference: z.array(z.string().trim().min(1)).optional(),
|
|
274
|
+
semanticVerifierProvider: z.string().trim().min(1).optional(),
|
|
275
|
+
semanticVerifierModel: z.string().trim().min(1).optional(),
|
|
276
|
+
semanticVerifierModelRole: z.string().trim().min(1).optional(),
|
|
277
|
+
fallbackModelRole: z.string().trim().min(1).optional()
|
|
278
|
+
// Retired: still read this release.
|
|
279
|
+
}).strict();
|
|
280
|
+
var OptimizationConfigSchema = z.object({
|
|
281
|
+
reasoningEffortByRole: z.record(z.string().trim().min(1), ReasoningEffortSchema).optional(),
|
|
282
|
+
speed: OptimizationModeRecipeSchema.optional(),
|
|
283
|
+
quality: OptimizationModeRecipeSchema.optional(),
|
|
284
|
+
cost: OptimizationModeRecipeSchema.optional(),
|
|
285
|
+
autoloop: OptimizationAutoloopRecipeSchema.optional()
|
|
286
|
+
}).strict();
|
|
287
|
+
var ExecutionContractRefSchema = z.object({
|
|
288
|
+
id: z.string().trim().min(1),
|
|
289
|
+
version: z.string().trim().min(1).optional()
|
|
290
|
+
}).strict();
|
|
291
|
+
var PlanExecuteBlockerModeSchema = z.enum(["non-interactive", "interactive"]);
|
|
292
|
+
var CompeteConfigSchema = z.record(z.string(), z.unknown()).optional();
|
|
293
|
+
var PlanExecuteConfigSchema = z.object({
|
|
294
|
+
blockerMode: PlanExecuteBlockerModeSchema.optional()
|
|
295
|
+
}).strict();
|
|
296
|
+
var WorktreeConfigSchema = z.object({
|
|
297
|
+
poolSize: z.number().optional(),
|
|
298
|
+
maxConcurrent: z.number().optional(),
|
|
299
|
+
cleanupInterval: z.number().optional(),
|
|
300
|
+
healthCheckInterval: z.number().optional(),
|
|
301
|
+
/**
|
|
302
|
+
* Repo-root-relative gitignored env files (for example `.env`) to copy into
|
|
303
|
+
* variant, synthesis and baseline worktrees. Off when unset. Project config
|
|
304
|
+
* is honored only for a trusted project root (secrets boundary).
|
|
305
|
+
*/
|
|
306
|
+
copyEnvFiles: z.array(z.string()).optional()
|
|
307
|
+
}).strict();
|
|
308
|
+
var FuzzyFileMatchingSchema = z.object({
|
|
309
|
+
enabled: z.boolean().optional(),
|
|
310
|
+
basenameMatch: z.boolean().optional(),
|
|
311
|
+
normalizedPath: z.boolean().optional(),
|
|
312
|
+
caseInsensitive: z.boolean().optional()
|
|
313
|
+
}).strict();
|
|
314
|
+
var DefaultsConfigSchema = z.object({
|
|
315
|
+
provider: z.string().optional(),
|
|
316
|
+
/** Removed by ADR-025; accepted for one release and ignored. */
|
|
317
|
+
strategy: z.string().optional(),
|
|
318
|
+
model: z.string().optional(),
|
|
319
|
+
/** Removed; accepted for one release and ignored. */
|
|
320
|
+
routingPolicy: z.enum(["strict", "reroute"]).optional(),
|
|
321
|
+
providerOrder: z.array(z.string()).optional(),
|
|
322
|
+
synthesis: z.object({
|
|
323
|
+
provider: z.string().optional(),
|
|
324
|
+
model: z.string().optional(),
|
|
325
|
+
reasoningEffort: ReasoningEffortSchema.optional(),
|
|
326
|
+
/** Compare a validated synthesis with the judged winner before shipping it (default true). */
|
|
327
|
+
headToHead: z.boolean().optional(),
|
|
328
|
+
/** Retired: still read this release; use defaults.providerOrder. */
|
|
329
|
+
providerOrder: z.array(z.string()).optional()
|
|
330
|
+
}).optional(),
|
|
331
|
+
splitter: z.object({
|
|
332
|
+
provider: z.string().optional(),
|
|
333
|
+
model: z.string().optional(),
|
|
334
|
+
reasoningEffort: ReasoningEffortSchema.optional()
|
|
335
|
+
}).optional(),
|
|
336
|
+
intent: z.object({
|
|
337
|
+
decompositionHints: z.array(z.string()).optional(),
|
|
338
|
+
nonGoals: z.array(z.string()).optional(),
|
|
339
|
+
disableRepoContext: z.boolean().optional(),
|
|
340
|
+
decomposition: z.object({
|
|
341
|
+
/** Retired: still read this release; use defaults.providerOrder. */
|
|
342
|
+
providerOrder: z.array(z.string()).optional(),
|
|
343
|
+
/** Removed; accepted for one release and ignored. */
|
|
344
|
+
routingPolicy: z.enum(["strict", "reroute"]).optional(),
|
|
345
|
+
/** Never supported; accepted for one release and ignored. */
|
|
346
|
+
model: z.unknown().optional()
|
|
347
|
+
}).optional()
|
|
348
|
+
}).optional(),
|
|
349
|
+
judge: z.object({
|
|
350
|
+
type: JudgeTypeSchema.optional(),
|
|
351
|
+
provider: z.string().optional(),
|
|
352
|
+
model: z.string().optional(),
|
|
353
|
+
reasoningEffort: ReasoningEffortSchema.optional(),
|
|
354
|
+
/** Removed; accepted for one release and ignored. */
|
|
355
|
+
providerOrder: z.array(z.string()).optional()
|
|
356
|
+
}).optional(),
|
|
357
|
+
providers: z.record(
|
|
358
|
+
z.string(),
|
|
359
|
+
z.object({
|
|
360
|
+
model: z.string().optional(),
|
|
361
|
+
/** Overrides the providers.yaml fast slot for anything that wants a fast model. */
|
|
362
|
+
fastModel: z.string().optional(),
|
|
363
|
+
reasoningEffort: ReasoningEffortSchema.optional(),
|
|
364
|
+
/** Removed by ADR-025; accepted for one release and ignored. */
|
|
365
|
+
strategy: z.string().optional(),
|
|
366
|
+
modelOrder: z.array(z.string()).optional()
|
|
367
|
+
// Retired: still read; set `model` instead.
|
|
368
|
+
})
|
|
369
|
+
).optional()
|
|
370
|
+
}).strict();
|
|
371
|
+
var AutomationConfigSchema = z.object({
|
|
372
|
+
flywheel: z.object({
|
|
373
|
+
merge: z.object({
|
|
374
|
+
biomeRepair: z.boolean().optional()
|
|
375
|
+
}).optional()
|
|
376
|
+
}).optional()
|
|
377
|
+
}).strict();
|
|
378
|
+
var SyncConfigSchema = z.object({
|
|
379
|
+
routeMain: z.boolean().optional(),
|
|
380
|
+
autoPublish: z.boolean().optional(),
|
|
381
|
+
protectMain: z.enum(["off", "warn", "confirm", "block"]).optional(),
|
|
382
|
+
checkoutMain: z.boolean().optional()
|
|
383
|
+
}).strict();
|
|
384
|
+
var JudgeConfigSchema = z.object({
|
|
385
|
+
/** Custom prompt template for AI Judge evaluation */
|
|
386
|
+
prompt: z.string().optional(),
|
|
387
|
+
/** Provider to use for AI Judge (defaults to claude) */
|
|
388
|
+
provider: z.string().optional(),
|
|
389
|
+
/** Model to use for AI Judge (defaults to resolved from config) */
|
|
390
|
+
model: z.string().optional(),
|
|
391
|
+
/** Reasoning effort applied to judge calls when the tier does not override it. */
|
|
392
|
+
reasoningEffort: ReasoningEffortSchema.optional(),
|
|
393
|
+
/**
|
|
394
|
+
* Thinking budget token hint for judge execution (provider-specific).
|
|
395
|
+
*
|
|
396
|
+
* For Claude CLI, Build uses env-based toggles (e.g. MAX_THINKING_TOKENS / ANTHROPIC_MAX_THINKING_TOKENS).
|
|
397
|
+
*/
|
|
398
|
+
thinkingBudgetTokens: z.number().int().min(0).optional(),
|
|
399
|
+
/**
|
|
400
|
+
* When true, Build will fail the judge call if thinking cannot be verified.
|
|
401
|
+
* Intended for "always thinking" enforcement in judge evaluation.
|
|
402
|
+
*/
|
|
403
|
+
requireThinking: z.boolean().optional(),
|
|
404
|
+
/**
|
|
405
|
+
* Per-judge overrides. These take precedence over the top-level judge.* fields.
|
|
406
|
+
*/
|
|
407
|
+
ai: z.object({
|
|
408
|
+
provider: z.string().optional(),
|
|
409
|
+
model: z.string().optional(),
|
|
410
|
+
reasoningEffort: ReasoningEffortSchema.optional(),
|
|
411
|
+
thinkingBudgetTokens: z.number().int().min(0).optional(),
|
|
412
|
+
requireThinking: z.boolean().optional()
|
|
413
|
+
}).optional(),
|
|
414
|
+
multiLens: z.object({
|
|
415
|
+
provider: z.string().optional(),
|
|
416
|
+
model: z.string().optional(),
|
|
417
|
+
reasoningEffort: ReasoningEffortSchema.optional(),
|
|
418
|
+
thinkingBudgetTokens: z.number().int().min(0).optional(),
|
|
419
|
+
requireThinking: z.boolean().optional()
|
|
420
|
+
}).optional(),
|
|
421
|
+
matrixEscalation: z.object({
|
|
422
|
+
closeCallMargin: z.number().min(0).optional(),
|
|
423
|
+
borderlineMargin: z.number().min(0).optional(),
|
|
424
|
+
confidenceThreshold: z.number().min(0).max(1).optional()
|
|
425
|
+
}).optional(),
|
|
426
|
+
/**
|
|
427
|
+
* Retired: the multi-agent judge tier. Accepted so existing configs still load;
|
|
428
|
+
* nothing reads it.
|
|
429
|
+
*/
|
|
430
|
+
multiAgent: z.unknown().optional().describe("Retired. Accepted and ignored.")
|
|
431
|
+
}).strict();
|
|
432
|
+
var ProviderTempCleanupConfigSchema = z.object({
|
|
433
|
+
roots: z.array(z.string()).optional(),
|
|
434
|
+
maxAgeHours: z.number().min(1).optional()
|
|
435
|
+
}).strict();
|
|
436
|
+
var PruneRetentionConfigSchema = z.object({
|
|
437
|
+
ttls: z.record(z.string(), z.number().int().min(1)).optional()
|
|
438
|
+
}).strict();
|
|
439
|
+
var BranchCleanupConfigSchema = z.object({
|
|
440
|
+
automatic: z.boolean().optional(),
|
|
441
|
+
idleDays: z.number().int().min(1).optional(),
|
|
442
|
+
holdDays: z.number().int().min(1).optional()
|
|
443
|
+
}).strict();
|
|
444
|
+
var CleanupConfigSchema = z.object({
|
|
445
|
+
providerTemp: ProviderTempCleanupConfigSchema.optional(),
|
|
446
|
+
prune: PruneRetentionConfigSchema.optional(),
|
|
447
|
+
branches: BranchCleanupConfigSchema.optional()
|
|
448
|
+
}).strict();
|
|
449
|
+
var ExecutionTransportModeSchema = z.enum([
|
|
450
|
+
"auto",
|
|
451
|
+
"headless",
|
|
452
|
+
"tmux-exec",
|
|
453
|
+
"interactive"
|
|
454
|
+
]);
|
|
455
|
+
var ExecutionTransportConfigSchema = z.object({
|
|
456
|
+
default: ExecutionTransportModeSchema.optional(),
|
|
457
|
+
providers: z.record(z.string(), ExecutionTransportModeSchema).optional()
|
|
458
|
+
}).strict();
|
|
459
|
+
var ExecutionConfigSchema = z.object({
|
|
460
|
+
// Legacy project config key accepted for backwards-compatible `build config set`.
|
|
461
|
+
timeout: ConfigNumberSchema.optional(),
|
|
462
|
+
defaultTimeout: ConfigNumberSchema.optional(),
|
|
463
|
+
concurrencyMultiplier: ConfigNumberSchema.optional(),
|
|
464
|
+
transport: ExecutionTransportConfigSchema.optional(),
|
|
465
|
+
fuzzyFileMatching: FuzzyFileMatchingSchema.optional(),
|
|
466
|
+
failover: z.boolean().optional(),
|
|
467
|
+
// failover for run --model and read-only calls; default true
|
|
468
|
+
biomeRepair: z.object({
|
|
469
|
+
provider: z.string().optional(),
|
|
470
|
+
model: z.string().optional(),
|
|
471
|
+
reasoningEffort: ReasoningEffortSchema.optional()
|
|
472
|
+
}).optional()
|
|
473
|
+
}).strict();
|
|
474
|
+
var FeaturesConfigSchema = z.object({
|
|
475
|
+
competeZeroFlag: z.boolean().optional()
|
|
476
|
+
}).loose();
|
|
477
|
+
var RoutingModeSchema = z.enum(["frugal", "balanced", "quality", "speed"]);
|
|
478
|
+
var TaskTypeTraitsSchema = z.object({
|
|
479
|
+
code: z.boolean().optional(),
|
|
480
|
+
reasoning: z.boolean().optional(),
|
|
481
|
+
longContext: z.boolean().optional(),
|
|
482
|
+
fast: z.boolean().optional(),
|
|
483
|
+
thinking: z.boolean().optional()
|
|
484
|
+
}).strict();
|
|
485
|
+
var TaskTypePreferenceSchema = z.object({
|
|
486
|
+
traits: TaskTypeTraitsSchema.default({}),
|
|
487
|
+
preferredTier: z.enum(["premium", "standard", "economy"]).optional()
|
|
488
|
+
}).strict();
|
|
489
|
+
var TierThresholdsSchema = z.object({
|
|
490
|
+
basicMax: z.number().min(0.05).max(0.95).optional(),
|
|
491
|
+
standardMax: z.number().min(0.05).max(0.95).optional()
|
|
492
|
+
}).strict();
|
|
493
|
+
var RoutingBehaviorSchema = z.enum(["legacy", "adaptive"]);
|
|
494
|
+
var RoutingConfigSchema = z.object({
|
|
495
|
+
behavior: RoutingBehaviorSchema.optional(),
|
|
496
|
+
mode: RoutingModeSchema.optional(),
|
|
497
|
+
taskTypePreferences: z.record(z.string(), TaskTypePreferenceSchema).optional(),
|
|
498
|
+
thresholds: TierThresholdsSchema.optional()
|
|
499
|
+
}).strict();
|
|
500
|
+
var VerificationConfigSchema = z.object({
|
|
501
|
+
format: z.union([z.string(), z.array(z.string())]).optional(),
|
|
502
|
+
build: z.union([z.string(), z.array(z.string())]).optional(),
|
|
503
|
+
typecheck: z.union([z.string(), z.array(z.string())]).optional(),
|
|
504
|
+
lint: z.union([z.string(), z.array(z.string())]).optional(),
|
|
505
|
+
test: z.union([z.string(), z.array(z.string())]).optional(),
|
|
506
|
+
audit: z.union([z.string(), z.array(z.string())]).optional(),
|
|
507
|
+
coverage: z.union([z.string(), z.array(z.string())]).optional()
|
|
508
|
+
}).optional();
|
|
509
|
+
function isSafeCiAuthorityPathEntry(value) {
|
|
510
|
+
const raw = value.trim();
|
|
511
|
+
if (!raw || raw === "." || raw === "./" || raw.includes("\0")) return false;
|
|
512
|
+
if (raw.startsWith("/") || raw.startsWith("\\")) return false;
|
|
513
|
+
if (raw.startsWith("\\\\")) return false;
|
|
514
|
+
if (/^[a-zA-Z]:/.test(raw)) return false;
|
|
515
|
+
const withForward = raw.replace(/\\/g, "/").replace(/^\.\//, "");
|
|
516
|
+
if (!withForward || withForward === ".") return false;
|
|
517
|
+
if (withForward.startsWith("/") || withForward.startsWith("//")) return false;
|
|
518
|
+
if (/^[a-zA-Z]:/.test(withForward)) return false;
|
|
519
|
+
const segments = withForward.split("/");
|
|
520
|
+
if (segments.includes("..")) return false;
|
|
521
|
+
const cleaned = segments.filter((segment) => segment.length > 0 && segment !== ".").join("/");
|
|
522
|
+
if (!cleaned || cleaned === ".") return false;
|
|
523
|
+
return true;
|
|
524
|
+
}
|
|
525
|
+
var SAFE_CI_REPO_RELATIVE_PATH_PATTERN = /^(?!\s*$)(?!\s*(?:\.[/\\]+)*\.(?:[/\\]+)?\s*$)(?!\s*[A-Za-z]:)(?!\s*[/\\])(?!\s*\.\.(?:[/\\]|$))(?!.*(?:^|[/\\])\.\.(?:[/\\]|$))[^\0]+$/;
|
|
526
|
+
var SAFE_CI_PATH_ENTRY_MESSAGE = "path entries must be repo-relative (no absolute, UNC, drive, empty, dot-only, or parent traversal)";
|
|
527
|
+
var CiSafePathListSchema = z.array(
|
|
528
|
+
z.string().trim().min(1).max(500).regex(SAFE_CI_REPO_RELATIVE_PATH_PATTERN, SAFE_CI_PATH_ENTRY_MESSAGE).refine(isSafeCiAuthorityPathEntry, {
|
|
529
|
+
message: SAFE_CI_PATH_ENTRY_MESSAGE
|
|
530
|
+
})
|
|
531
|
+
).max(64);
|
|
532
|
+
var CiValidationProfileSchema = z.object({
|
|
533
|
+
id: z.string().trim().regex(
|
|
534
|
+
/^[a-z][a-z0-9_-]{0,31}$/,
|
|
535
|
+
"validation profile id must be a lowercase identifier (not reserved full)"
|
|
536
|
+
).refine((id) => id !== "full", {
|
|
537
|
+
message: "validation profile id must not be the reserved value 'full'"
|
|
538
|
+
}),
|
|
539
|
+
include: CiSafePathListSchema.min(1).max(32),
|
|
540
|
+
extensions: z.array(
|
|
541
|
+
z.string().trim().regex(
|
|
542
|
+
/^\.[A-Za-z0-9_+.-]{1,32}$/,
|
|
543
|
+
"extensions must be case-sensitive tokens with a leading dot (e.g. .md)"
|
|
544
|
+
)
|
|
545
|
+
).min(1).max(16)
|
|
546
|
+
}).strict();
|
|
547
|
+
var CiConfigSchema = z.object({
|
|
548
|
+
enabled: z.boolean().optional(),
|
|
549
|
+
commands: z.union([z.string(), z.array(z.string())]).optional(),
|
|
550
|
+
authorityPaths: CiSafePathListSchema.optional(),
|
|
551
|
+
authorityPathsComplete: z.boolean().optional(),
|
|
552
|
+
/**
|
|
553
|
+
* Trusted-base exact paths/prefixes eligible for automatic merge.
|
|
554
|
+
* Separate from validation authority; empty/omitted is fail-closed.
|
|
555
|
+
*/
|
|
556
|
+
autoMergePaths: CiSafePathListSchema.optional(),
|
|
557
|
+
/**
|
|
558
|
+
* Trusted-base validation profiles for optional narrowing (max 8).
|
|
559
|
+
* Unique ids; nonempty include paths and extensions. Runtime fail-closes
|
|
560
|
+
* on overlap, incomplete authority, or non-regular change metadata.
|
|
561
|
+
*/
|
|
562
|
+
validationProfiles: z.array(CiValidationProfileSchema).max(8).optional(),
|
|
563
|
+
statusContext: z.string().trim().min(1).max(100).optional(),
|
|
564
|
+
autoMerge: z.boolean().optional(),
|
|
565
|
+
mergeMethod: z.enum(["merge", "squash", "rebase"]).optional(),
|
|
566
|
+
maxConcurrent: z.number().int().min(1).max(8).optional(),
|
|
567
|
+
/**
|
|
568
|
+
* Let the local merge queue land waiting reviewed PRs as one batch PR
|
|
569
|
+
* through one gate. Default false.
|
|
570
|
+
*/
|
|
571
|
+
mergeBatching: z.boolean().optional(),
|
|
572
|
+
/**
|
|
573
|
+
* Let merge-queue workers on different hosts take turns landing through a lease ref on the
|
|
574
|
+
* remote, so one host's landing does not discard another's gate. Efficiency only; default
|
|
575
|
+
* true. BUILD_LOCAL_CI_LANDING_LEASE=0 also turns it off.
|
|
576
|
+
*/
|
|
577
|
+
landingLease: z.boolean().optional()
|
|
578
|
+
}).strict().superRefine((value, ctx) => {
|
|
579
|
+
if (value.authorityPathsComplete === true) {
|
|
580
|
+
const paths = value.authorityPaths ?? [];
|
|
581
|
+
if (paths.length === 0) {
|
|
582
|
+
ctx.addIssue({
|
|
583
|
+
code: z.ZodIssueCode.custom,
|
|
584
|
+
path: ["authorityPathsComplete"],
|
|
585
|
+
message: "authorityPathsComplete=true requires at least one valid authorityPaths entry"
|
|
586
|
+
});
|
|
587
|
+
}
|
|
588
|
+
}
|
|
589
|
+
const profiles = value.validationProfiles ?? [];
|
|
590
|
+
const seenIds = /* @__PURE__ */ new Set();
|
|
591
|
+
for (let index = 0; index < profiles.length; index += 1) {
|
|
592
|
+
const id = profiles[index]?.id;
|
|
593
|
+
if (!id) continue;
|
|
594
|
+
if (seenIds.has(id)) {
|
|
595
|
+
ctx.addIssue({
|
|
596
|
+
code: z.ZodIssueCode.custom,
|
|
597
|
+
path: ["validationProfiles", index, "id"],
|
|
598
|
+
message: `duplicate validation profile id '${id}'`
|
|
599
|
+
});
|
|
600
|
+
}
|
|
601
|
+
seenIds.add(id);
|
|
602
|
+
}
|
|
603
|
+
}).optional();
|
|
604
|
+
var ProgressNarrationConfigSchema = z.object({
|
|
605
|
+
enabled: z.boolean().optional(),
|
|
606
|
+
provider: z.string().trim().min(1).optional(),
|
|
607
|
+
model: z.string().trim().min(1).optional(),
|
|
608
|
+
minIntervalMs: z.int().positive().max(6e5).optional(),
|
|
609
|
+
maxAgeMs: z.int().positive().max(6e5).optional(),
|
|
610
|
+
maxChars: z.int().positive().max(160).optional(),
|
|
611
|
+
timeoutMs: z.int().positive().max(12e4).optional(),
|
|
612
|
+
maxConsecutiveFailures: z.int().positive().max(20).optional()
|
|
613
|
+
}).strict().optional();
|
|
614
|
+
var AskPresetSchema = z.object({
|
|
615
|
+
to: z.string().optional(),
|
|
616
|
+
model: z.string().optional(),
|
|
617
|
+
effort: z.string().optional()
|
|
618
|
+
}).strict();
|
|
619
|
+
var InheritanceConfigSchema = z.object({
|
|
620
|
+
automated: z.enum(["build", "native", "native+build"]).optional(),
|
|
621
|
+
ask: z.enum(["build", "native", "native+build"]).optional()
|
|
622
|
+
}).strict().optional();
|
|
623
|
+
var AskConfigSchema = z.object({
|
|
624
|
+
presets: z.record(
|
|
625
|
+
z.string().regex(/^[a-z0-9][a-z0-9-]{0,63}$/, "preset names are kebab-case"),
|
|
626
|
+
AskPresetSchema
|
|
627
|
+
).optional(),
|
|
628
|
+
/**
|
|
629
|
+
* Time budget for one consult, in whole seconds. Wall-clock only — no cost,
|
|
630
|
+
* spend, or token figure participates ([B5]). Defaults live in
|
|
631
|
+
* src/core/ask/ask-budget.ts (hard 900, idle warn 300, idle kill 600,
|
|
632
|
+
* stdin deadline 30).
|
|
633
|
+
*/
|
|
634
|
+
timeoutSeconds: z.int().positive().optional(),
|
|
635
|
+
idleWarnSeconds: z.int().positive().optional(),
|
|
636
|
+
idleKillSeconds: z.int().positive().optional(),
|
|
637
|
+
/** Deadline for the non-TTY stdin read (first byte through EOF). */
|
|
638
|
+
stdinDeadlineSeconds: z.int().positive().optional()
|
|
639
|
+
}).strict().optional();
|
|
640
|
+
var RolesSubagentsSchema = z.preprocess(
|
|
641
|
+
(value) => {
|
|
642
|
+
if (typeof value === "string") {
|
|
643
|
+
const normalized = value.trim().toLowerCase();
|
|
644
|
+
if (normalized === "advisory" || normalized === "off") {
|
|
645
|
+
return normalized;
|
|
646
|
+
}
|
|
647
|
+
if (normalized !== "") {
|
|
648
|
+
const parsed = Number(normalized);
|
|
649
|
+
return Number.isNaN(parsed) ? value : parsed;
|
|
650
|
+
}
|
|
651
|
+
}
|
|
652
|
+
return value;
|
|
653
|
+
},
|
|
654
|
+
z.union([z.int().positive(), z.literal("advisory"), z.literal("off")])
|
|
655
|
+
);
|
|
656
|
+
var RolesReviewerGateSchema = z.enum(["off", "advisory", "high-severity-blocks"]);
|
|
657
|
+
var RolesReviewerThresholdSchema = z.enum(["critical", "high", "medium", "low"]);
|
|
658
|
+
var RolesReviewerPolicySchema = z.enum([
|
|
659
|
+
"off",
|
|
660
|
+
"advisory",
|
|
661
|
+
"block:critical",
|
|
662
|
+
"block:high",
|
|
663
|
+
"block:medium",
|
|
664
|
+
"block:low",
|
|
665
|
+
"repair:critical",
|
|
666
|
+
"repair:high",
|
|
667
|
+
"repair:medium",
|
|
668
|
+
"repair:low"
|
|
669
|
+
]);
|
|
670
|
+
var RolesExecutorTransportSchema = z.enum(["auto", "headless", "tmux-exec"]);
|
|
671
|
+
var RolesReasoningEffortSchema = ReasoningEffortSchema;
|
|
672
|
+
var RolesOrchestratorSchema = z.object({
|
|
673
|
+
provider: z.string().optional(),
|
|
674
|
+
model: z.string().optional(),
|
|
675
|
+
modelRole: z.string().optional(),
|
|
676
|
+
fallbackModelRole: z.string().optional(),
|
|
677
|
+
// Retired: still read this release.
|
|
678
|
+
reasoningEffort: RolesReasoningEffortSchema.optional(),
|
|
679
|
+
/** Removed; accepted for one release and ignored. */
|
|
680
|
+
candidates: z.unknown().optional(),
|
|
681
|
+
/** Removed; accepted for one release and ignored. */
|
|
682
|
+
onExhausted: z.unknown().optional()
|
|
683
|
+
}).strict().superRefine((value, ctx) => {
|
|
684
|
+
if (!value.provider && (value.model || value.modelRole || value.fallbackModelRole)) {
|
|
685
|
+
ctx.addIssue({
|
|
686
|
+
code: "custom",
|
|
687
|
+
path: ["provider"],
|
|
688
|
+
message: "provider is required when orchestrator model or modelRole is configured"
|
|
689
|
+
});
|
|
690
|
+
}
|
|
691
|
+
});
|
|
692
|
+
var RolesExecutorSchema = z.object({
|
|
693
|
+
provider: z.string().optional(),
|
|
694
|
+
model: z.string().optional(),
|
|
695
|
+
modelRole: z.string().optional(),
|
|
696
|
+
subagents: RolesSubagentsSchema.optional(),
|
|
697
|
+
transport: RolesExecutorTransportSchema.optional(),
|
|
698
|
+
reasoningEffort: RolesReasoningEffortSchema.optional(),
|
|
699
|
+
/** Removed; accepted for one release and ignored. */
|
|
700
|
+
candidates: z.unknown().optional(),
|
|
701
|
+
/** Removed; accepted for one release and ignored. */
|
|
702
|
+
onExhausted: z.unknown().optional()
|
|
703
|
+
}).strict();
|
|
704
|
+
var RolesReviewerSchema = z.object({
|
|
705
|
+
provider: z.string().optional(),
|
|
706
|
+
model: z.string().optional(),
|
|
707
|
+
modelRole: z.string().optional(),
|
|
708
|
+
policy: RolesReviewerPolicySchema.optional(),
|
|
709
|
+
gate: RolesReviewerGateSchema.optional(),
|
|
710
|
+
threshold: RolesReviewerThresholdSchema.optional(),
|
|
711
|
+
/**
|
|
712
|
+
* Retired: still read this release; use `provider` or defaults.providerOrder.
|
|
713
|
+
* Preferred provider ids for automatic reviewer selection (highest first),
|
|
714
|
+
* then the remaining enabled providers in registry order.
|
|
715
|
+
*/
|
|
716
|
+
providerPreference: z.array(z.string().trim().min(1)).optional(),
|
|
717
|
+
reasoningEffort: RolesReasoningEffortSchema.optional(),
|
|
718
|
+
/** Removed; accepted for one release and ignored. */
|
|
719
|
+
candidates: z.unknown().optional(),
|
|
720
|
+
/** Removed; accepted for one release and ignored. */
|
|
721
|
+
onExhausted: z.unknown().optional()
|
|
722
|
+
}).strict();
|
|
723
|
+
var RolesConfigSchema = z.object({
|
|
724
|
+
orchestrator: RolesOrchestratorSchema.optional(),
|
|
725
|
+
executor: RolesExecutorSchema.optional(),
|
|
726
|
+
reviewer: RolesReviewerSchema.optional()
|
|
727
|
+
}).strict();
|
|
728
|
+
var ProviderInvocationConfigSchema = z.object({
|
|
729
|
+
/**
|
|
730
|
+
* Absolute directory roots under which invoke workingDirectory must resolve.
|
|
731
|
+
* When omitted, invoke defaults to the process cwd realpath as the sole root.
|
|
732
|
+
* Dangerous roots (`/`, `$HOME`, system tmp, etc.) are always refused.
|
|
733
|
+
*/
|
|
734
|
+
allowedRoots: z.array(z.string().min(1)).optional()
|
|
735
|
+
}).strict();
|
|
736
|
+
var GitAttributionModeSchema = z.enum(["allow", "human-only"]);
|
|
737
|
+
var GitMessageStyleSchema = z.enum(["plain", "conventional"]);
|
|
738
|
+
var GitConfigSchema = z.object({
|
|
739
|
+
attribution: GitAttributionModeSchema.optional(),
|
|
740
|
+
messageStyle: GitMessageStyleSchema.optional()
|
|
741
|
+
}).strict();
|
|
742
|
+
var BuildConfigSchema = z.object({
|
|
743
|
+
$schema: z.string().optional(),
|
|
744
|
+
defaultProvider: z.string().optional(),
|
|
745
|
+
providers: ProvidersConfigSchema.optional(),
|
|
746
|
+
quality: QualityConfigSchema.optional(),
|
|
747
|
+
telemetry: TelemetryConfigSchema.optional(),
|
|
748
|
+
variants: VariantsConfigSchema.optional(),
|
|
749
|
+
optimization: OptimizationConfigSchema.optional(),
|
|
750
|
+
execution: ExecutionConfigSchema.optional(),
|
|
751
|
+
worktree: WorktreeConfigSchema.optional(),
|
|
752
|
+
defaults: DefaultsConfigSchema.optional(),
|
|
753
|
+
compete: CompeteConfigSchema,
|
|
754
|
+
planExecute: PlanExecuteConfigSchema.optional(),
|
|
755
|
+
routing: RoutingConfigSchema.optional(),
|
|
756
|
+
automation: AutomationConfigSchema.optional(),
|
|
757
|
+
judge: JudgeConfigSchema.optional(),
|
|
758
|
+
sync: SyncConfigSchema.optional(),
|
|
759
|
+
features: FeaturesConfigSchema.optional(),
|
|
760
|
+
cleanup: CleanupConfigSchema.optional(),
|
|
761
|
+
verification: VerificationConfigSchema,
|
|
762
|
+
ci: CiConfigSchema,
|
|
763
|
+
progressNarration: ProgressNarrationConfigSchema,
|
|
764
|
+
ask: AskConfigSchema,
|
|
765
|
+
inheritance: InheritanceConfigSchema,
|
|
766
|
+
roles: RolesConfigSchema.optional(),
|
|
767
|
+
providerInvocation: ProviderInvocationConfigSchema.optional(),
|
|
768
|
+
git: GitConfigSchema.optional()
|
|
769
|
+
}).strip();
|
|
770
|
+
var KNOWN_BUILD_CONFIG_ROOTS = Object.keys(BuildConfigSchema.shape);
|
|
771
|
+
var FirstTimeSetupV2StateSchema = z.object({
|
|
772
|
+
version: z.literal(2),
|
|
773
|
+
defaultsInitialized: z.boolean(),
|
|
774
|
+
defaultsInitializedAt: z.iso.datetime().optional(),
|
|
775
|
+
completed: z.boolean(),
|
|
776
|
+
completedAt: z.iso.datetime().optional(),
|
|
777
|
+
readyProviderIds: z.array(z.string().min(1))
|
|
778
|
+
}).passthrough().refine((state) => !state.completed || state.readyProviderIds.length > 0, {
|
|
779
|
+
message: "Completed first-run state requires at least one ready provider",
|
|
780
|
+
path: ["readyProviderIds"]
|
|
781
|
+
}).refine((state) => !state.completed || state.defaultsInitialized, {
|
|
782
|
+
message: "Completed first-run state requires initialized defaults",
|
|
783
|
+
path: ["defaultsInitialized"]
|
|
784
|
+
});
|
|
785
|
+
var LegacyFirstTimeSetupStateSchema = z.object({
|
|
786
|
+
version: z.never().optional(),
|
|
787
|
+
completed: z.boolean(),
|
|
788
|
+
timestamp: z.iso.datetime().optional(),
|
|
789
|
+
provider: z.string().optional()
|
|
790
|
+
}).passthrough();
|
|
791
|
+
var FirstTimeSetupStateSchema = z.union([
|
|
792
|
+
FirstTimeSetupV2StateSchema,
|
|
793
|
+
LegacyFirstTimeSetupStateSchema
|
|
794
|
+
]);
|
|
795
|
+
var UserPreferencesSchema = z.object({
|
|
796
|
+
version: z.string(),
|
|
797
|
+
userId: z.string(),
|
|
798
|
+
modelRouting: ModelRoutingPreferencesSchema,
|
|
799
|
+
preferences: z.object({
|
|
800
|
+
cursor: z.object({
|
|
801
|
+
defaultModel: z.string(),
|
|
802
|
+
userChosenDefault: z.string().optional(),
|
|
803
|
+
lastModelChange: z.iso.datetime().optional(),
|
|
804
|
+
firstTimeSetup: z.object({
|
|
805
|
+
completed: z.boolean(),
|
|
806
|
+
timestamp: z.iso.datetime().optional(),
|
|
807
|
+
autoModelChosen: z.boolean().optional()
|
|
808
|
+
}),
|
|
809
|
+
usageHistory: z.object({
|
|
810
|
+
lastUsed: z.string().optional(),
|
|
811
|
+
usageCount: z.number(),
|
|
812
|
+
modelChanges: z.array(
|
|
813
|
+
z.object({
|
|
814
|
+
from: z.string(),
|
|
815
|
+
to: z.string(),
|
|
816
|
+
timestamp: z.iso.datetime(),
|
|
817
|
+
context: ModelChangeContextTypeSchema
|
|
818
|
+
})
|
|
819
|
+
).optional()
|
|
820
|
+
})
|
|
821
|
+
})
|
|
822
|
+
}),
|
|
823
|
+
globalDefaults: z.object({
|
|
824
|
+
cursorModel: z.string(),
|
|
825
|
+
defaultProvider: z.string().optional(),
|
|
826
|
+
defaultModel: z.string().optional(),
|
|
827
|
+
aiJudgeModel: z.string().optional()
|
|
828
|
+
}),
|
|
829
|
+
migrations: z.object({
|
|
830
|
+
lastAppliedVersion: z.string()
|
|
831
|
+
}),
|
|
832
|
+
firstTimeSetup: FirstTimeSetupStateSchema.optional()
|
|
833
|
+
});
|
|
834
|
+
var SystemConfigSchema = z.object({
|
|
835
|
+
providers: z.object({
|
|
836
|
+
cursor: z.object({
|
|
837
|
+
enabled: z.boolean(),
|
|
838
|
+
model: z.string(),
|
|
839
|
+
systemDefaults: z.object({
|
|
840
|
+
autoModelForNewUsers: z.boolean(),
|
|
841
|
+
allowUserOverride: z.boolean(),
|
|
842
|
+
restrictedModels: z.array(z.string())
|
|
843
|
+
})
|
|
844
|
+
})
|
|
845
|
+
})
|
|
846
|
+
});
|
|
847
|
+
var ConfigSourceTypeSchema = z.enum([
|
|
848
|
+
"cli",
|
|
849
|
+
"project",
|
|
850
|
+
"user",
|
|
851
|
+
"system",
|
|
852
|
+
"default",
|
|
853
|
+
"env",
|
|
854
|
+
"profile",
|
|
855
|
+
"merged"
|
|
856
|
+
]);
|
|
857
|
+
var DEFAULT_CONFIG = {
|
|
858
|
+
providers: {
|
|
859
|
+
claude: {
|
|
860
|
+
enabled: true
|
|
861
|
+
// model omitted: resolved at runtime from providers.yaml registry default
|
|
862
|
+
},
|
|
863
|
+
codex: {
|
|
864
|
+
enabled: true
|
|
865
|
+
// model omitted: resolved at runtime from providers.yaml registry default
|
|
866
|
+
},
|
|
867
|
+
cursor: {
|
|
868
|
+
enabled: true
|
|
869
|
+
// model omitted: resolved at runtime from providers.yaml registry default
|
|
870
|
+
}
|
|
871
|
+
},
|
|
872
|
+
quality: {
|
|
873
|
+
coverage: {
|
|
874
|
+
enabled: true,
|
|
875
|
+
threshold: 80
|
|
876
|
+
},
|
|
877
|
+
lint: {
|
|
878
|
+
enabled: true
|
|
879
|
+
},
|
|
880
|
+
security: {
|
|
881
|
+
enabled: true
|
|
882
|
+
}
|
|
883
|
+
},
|
|
884
|
+
// `database` is deliberately omitted: telemetry resolves to the Build data
|
|
885
|
+
// root, and a default here would be written into every generated config and
|
|
886
|
+
// then honored as a repo-local override.
|
|
887
|
+
telemetry: {
|
|
888
|
+
enabled: true
|
|
889
|
+
},
|
|
890
|
+
// No provider lists or panels: speed and cost follow the provider order, quality
|
|
891
|
+
// (best) runs its first 3 installed providers, and the is-it-done check runs on
|
|
892
|
+
// the provider that did the work.
|
|
893
|
+
optimization: {
|
|
894
|
+
speed: {
|
|
895
|
+
modelRole: "fast",
|
|
896
|
+
parallel: { low: 2, medium: 3, high: 4 },
|
|
897
|
+
maxConcurrent: { low: 2, medium: 3, high: 6 },
|
|
898
|
+
earlyExit: true,
|
|
899
|
+
streamResults: true
|
|
900
|
+
},
|
|
901
|
+
quality: {
|
|
902
|
+
parallel: { low: 2, medium: 3, high: 4 },
|
|
903
|
+
maxConcurrent: { low: 2, medium: 3, high: 4 },
|
|
904
|
+
aiJudge: true,
|
|
905
|
+
synthesize: true,
|
|
906
|
+
earlyExit: true,
|
|
907
|
+
streamResults: true,
|
|
908
|
+
autoloop: true,
|
|
909
|
+
autoloopMaxIterations: { low: 3, medium: 4, high: 5 },
|
|
910
|
+
autoloopTimeboxMinutes: { low: 45, medium: 60, high: 90 },
|
|
911
|
+
autoloopMinProgress: 0.15,
|
|
912
|
+
autoloopJudge: true,
|
|
913
|
+
autoloopQualityGates: true
|
|
914
|
+
},
|
|
915
|
+
cost: {
|
|
916
|
+
modelRole: "fast",
|
|
917
|
+
compete: false,
|
|
918
|
+
maxConcurrent: 1,
|
|
919
|
+
autoloop: false
|
|
920
|
+
}
|
|
921
|
+
},
|
|
922
|
+
execution: {
|
|
923
|
+
defaultTimeout: 30,
|
|
924
|
+
concurrencyMultiplier: 2,
|
|
925
|
+
fuzzyFileMatching: {
|
|
926
|
+
enabled: false,
|
|
927
|
+
// Opt-in for backwards compatibility
|
|
928
|
+
basenameMatch: true,
|
|
929
|
+
normalizedPath: true,
|
|
930
|
+
caseInsensitive: false
|
|
931
|
+
}
|
|
932
|
+
},
|
|
933
|
+
planExecute: {
|
|
934
|
+
blockerMode: "non-interactive"
|
|
935
|
+
},
|
|
936
|
+
worktree: {
|
|
937
|
+
poolSize: 4,
|
|
938
|
+
maxConcurrent: MAX_CONCURRENT_DEFAULT,
|
|
939
|
+
cleanupInterval: 36e5,
|
|
940
|
+
// 1 hour
|
|
941
|
+
healthCheckInterval: 3e5
|
|
942
|
+
// 5 minutes
|
|
943
|
+
},
|
|
944
|
+
sync: {
|
|
945
|
+
routeMain: false,
|
|
946
|
+
// Push directly to main; QG self-heals failures via fix PRs
|
|
947
|
+
autoPublish: false,
|
|
948
|
+
// Publishing a new branch requires an explicit user preference or --publish
|
|
949
|
+
protectMain: "confirm",
|
|
950
|
+
// Prompt on protected branches; block non-interactive commits by default
|
|
951
|
+
checkoutMain: false
|
|
952
|
+
// Auto-checkout main after successful sync
|
|
953
|
+
},
|
|
954
|
+
routing: {
|
|
955
|
+
behavior: "legacy",
|
|
956
|
+
mode: "balanced"
|
|
957
|
+
}
|
|
958
|
+
};
|
|
959
|
+
var DEFAULT_USER_PREFERENCES = {
|
|
960
|
+
version: "1.0",
|
|
961
|
+
userId: `${process.env.USER || "unknown"}@${hostname()}`,
|
|
962
|
+
preferences: {
|
|
963
|
+
cursor: {
|
|
964
|
+
defaultModel: "auto",
|
|
965
|
+
userChosenDefault: void 0,
|
|
966
|
+
lastModelChange: void 0,
|
|
967
|
+
firstTimeSetup: {
|
|
968
|
+
completed: false
|
|
969
|
+
},
|
|
970
|
+
usageHistory: {
|
|
971
|
+
usageCount: 0
|
|
972
|
+
}
|
|
973
|
+
}
|
|
974
|
+
},
|
|
975
|
+
globalDefaults: {
|
|
976
|
+
cursorModel: "auto",
|
|
977
|
+
defaultProvider: void 0,
|
|
978
|
+
defaultModel: void 0,
|
|
979
|
+
aiJudgeModel: void 0
|
|
980
|
+
},
|
|
981
|
+
migrations: {
|
|
982
|
+
lastAppliedVersion: "1.0"
|
|
983
|
+
}
|
|
984
|
+
};
|
|
985
|
+
|
|
986
|
+
// src/core/config/canonical-read.ts
|
|
987
|
+
import { existsSync, readFileSync } from "fs";
|
|
988
|
+
import { parse as parseJsonc } from "jsonc-parser";
|
|
989
|
+
var RETIRED_BUILD_CONFIG_ROOTS = /* @__PURE__ */ new Set(["tui", "lifecycle"]);
|
|
990
|
+
function buildConfigCandidates(filePath) {
|
|
991
|
+
const base = filePath.replace(/\.(jsonc|json)$/i, "");
|
|
992
|
+
return [`${base}.jsonc`, `${base}.json`];
|
|
993
|
+
}
|
|
994
|
+
function selectedBuildConfigCandidate(filePath) {
|
|
995
|
+
const candidates = buildConfigCandidates(filePath);
|
|
996
|
+
return candidates.find((candidate) => existsSync(candidate)) ?? candidates[0];
|
|
997
|
+
}
|
|
998
|
+
var BuildConfigReadError = class extends Error {
|
|
999
|
+
constructor(filePath, reason, diagnostics, cause) {
|
|
1000
|
+
const detail = diagnostics.map((diagnostic) => diagnostic.message).join("; ");
|
|
1001
|
+
super(`Invalid Build configuration at ${filePath} (${reason}): ${detail}`);
|
|
1002
|
+
this.filePath = filePath;
|
|
1003
|
+
this.reason = reason;
|
|
1004
|
+
this.diagnostics = diagnostics;
|
|
1005
|
+
this.name = "BuildConfigReadError";
|
|
1006
|
+
if (cause !== void 0) {
|
|
1007
|
+
this.cause = cause;
|
|
1008
|
+
}
|
|
1009
|
+
}
|
|
1010
|
+
filePath;
|
|
1011
|
+
reason;
|
|
1012
|
+
diagnostics;
|
|
1013
|
+
code = "BUILD_CONFIG_READ_INVALID";
|
|
1014
|
+
};
|
|
1015
|
+
function nodeErrorCode(error) {
|
|
1016
|
+
if (!error || typeof error !== "object" || !("code" in error)) return void 0;
|
|
1017
|
+
const code = error.code;
|
|
1018
|
+
return typeof code === "string" || typeof code === "number" ? String(code) : void 0;
|
|
1019
|
+
}
|
|
1020
|
+
function offsetToLineColumn(source, offset) {
|
|
1021
|
+
const lines = source.slice(0, offset).split("\n");
|
|
1022
|
+
return {
|
|
1023
|
+
line: lines.length,
|
|
1024
|
+
column: (lines[lines.length - 1]?.length ?? 0) + 1
|
|
1025
|
+
};
|
|
1026
|
+
}
|
|
1027
|
+
function parseDiagnostics(source, errors) {
|
|
1028
|
+
return errors.map((error) => {
|
|
1029
|
+
const location = offsetToLineColumn(source, error.offset);
|
|
1030
|
+
return {
|
|
1031
|
+
message: `JSONC parse error ${error.error} at line ${location.line}, column ${location.column}`,
|
|
1032
|
+
code: error.error,
|
|
1033
|
+
offset: error.offset,
|
|
1034
|
+
line: location.line,
|
|
1035
|
+
column: location.column
|
|
1036
|
+
};
|
|
1037
|
+
});
|
|
1038
|
+
}
|
|
1039
|
+
function readCanonicalBuildConfig(filePath) {
|
|
1040
|
+
let source;
|
|
1041
|
+
try {
|
|
1042
|
+
source = readFileSync(filePath, "utf8");
|
|
1043
|
+
} catch (error) {
|
|
1044
|
+
if (nodeErrorCode(error) === "ENOENT") {
|
|
1045
|
+
return { status: "missing", filePath };
|
|
1046
|
+
}
|
|
1047
|
+
const detail = error instanceof Error ? error.message : String(error);
|
|
1048
|
+
return {
|
|
1049
|
+
status: "invalid",
|
|
1050
|
+
filePath,
|
|
1051
|
+
error: new BuildConfigReadError(
|
|
1052
|
+
filePath,
|
|
1053
|
+
"unreadable",
|
|
1054
|
+
[{ message: `Unable to read config file: ${detail}`, code: nodeErrorCode(error) }],
|
|
1055
|
+
error
|
|
1056
|
+
)
|
|
1057
|
+
};
|
|
1058
|
+
}
|
|
1059
|
+
return parseCanonicalBuildConfig(source, filePath);
|
|
1060
|
+
}
|
|
1061
|
+
function parseCanonicalBuildConfig(source, filePath) {
|
|
1062
|
+
const errors = [];
|
|
1063
|
+
const parsed = parseJsonc(source, errors, {
|
|
1064
|
+
allowTrailingComma: true,
|
|
1065
|
+
allowEmptyContent: false,
|
|
1066
|
+
disallowComments: false
|
|
1067
|
+
});
|
|
1068
|
+
if (errors.length > 0) {
|
|
1069
|
+
return {
|
|
1070
|
+
status: "invalid",
|
|
1071
|
+
filePath,
|
|
1072
|
+
error: new BuildConfigReadError(filePath, "parse", parseDiagnostics(source, errors))
|
|
1073
|
+
};
|
|
1074
|
+
}
|
|
1075
|
+
const validation = BuildConfigSchema.safeParse(parsed);
|
|
1076
|
+
if (!validation.success) {
|
|
1077
|
+
const diagnostics = validation.error.issues.map((issue) => {
|
|
1078
|
+
const path = issue.path.map(String).join(".");
|
|
1079
|
+
return {
|
|
1080
|
+
message: `${path || "<root>"}: ${issue.message}`,
|
|
1081
|
+
path: path || void 0,
|
|
1082
|
+
code: issue.code
|
|
1083
|
+
};
|
|
1084
|
+
});
|
|
1085
|
+
return {
|
|
1086
|
+
status: "invalid",
|
|
1087
|
+
filePath,
|
|
1088
|
+
error: new BuildConfigReadError(filePath, "schema", diagnostics, validation.error),
|
|
1089
|
+
parsed
|
|
1090
|
+
};
|
|
1091
|
+
}
|
|
1092
|
+
const unknownTopLevelKeys = parsed && typeof parsed === "object" && !Array.isArray(parsed) ? Object.keys(parsed).filter(
|
|
1093
|
+
(key) => !KNOWN_BUILD_CONFIG_ROOTS.includes(key) && !RETIRED_BUILD_CONFIG_ROOTS.has(key)
|
|
1094
|
+
) : [];
|
|
1095
|
+
if (unknownTopLevelKeys.length > 0) {
|
|
1096
|
+
return {
|
|
1097
|
+
status: "invalid",
|
|
1098
|
+
filePath,
|
|
1099
|
+
error: new BuildConfigReadError(
|
|
1100
|
+
filePath,
|
|
1101
|
+
"schema",
|
|
1102
|
+
unknownTopLevelKeys.map((key) => ({
|
|
1103
|
+
message: `${key}: Unknown top-level configuration key`,
|
|
1104
|
+
path: key,
|
|
1105
|
+
code: "unrecognized_key"
|
|
1106
|
+
}))
|
|
1107
|
+
),
|
|
1108
|
+
parsed
|
|
1109
|
+
};
|
|
1110
|
+
}
|
|
1111
|
+
return {
|
|
1112
|
+
status: "valid",
|
|
1113
|
+
filePath,
|
|
1114
|
+
config: validation.data,
|
|
1115
|
+
unknownTopLevelKeys: []
|
|
1116
|
+
};
|
|
1117
|
+
}
|
|
1118
|
+
function isBuildConfigReadError(error) {
|
|
1119
|
+
return error instanceof BuildConfigReadError;
|
|
1120
|
+
}
|
|
1121
|
+
function consumeBuildConfigRead(result) {
|
|
1122
|
+
if (result.status === "missing") return null;
|
|
1123
|
+
if (result.status === "invalid") throw result.error;
|
|
1124
|
+
return result.config;
|
|
1125
|
+
}
|
|
1126
|
+
|
|
1127
|
+
export {
|
|
1128
|
+
JudgeTypeSchema,
|
|
1129
|
+
LEGACY_REPO_LOCAL_TELEMETRY_DATABASE,
|
|
1130
|
+
TelemetryConfigSchema,
|
|
1131
|
+
ReasoningEffortSchema,
|
|
1132
|
+
RolesConfigSchema,
|
|
1133
|
+
BuildConfigSchema,
|
|
1134
|
+
KNOWN_BUILD_CONFIG_ROOTS,
|
|
1135
|
+
UserPreferencesSchema,
|
|
1136
|
+
DEFAULT_CONFIG,
|
|
1137
|
+
DEFAULT_USER_PREFERENCES,
|
|
1138
|
+
buildConfigCandidates,
|
|
1139
|
+
selectedBuildConfigCandidate,
|
|
1140
|
+
BuildConfigReadError,
|
|
1141
|
+
readCanonicalBuildConfig,
|
|
1142
|
+
parseCanonicalBuildConfig,
|
|
1143
|
+
isBuildConfigReadError,
|
|
1144
|
+
consumeBuildConfigRead
|
|
1145
|
+
};
|
|
1146
|
+
//# sourceMappingURL=chunk-FKCG7K6H.js.map
|