@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,729 @@
|
|
|
1
|
+
import {
|
|
2
|
+
ProjectLinkRetargetError,
|
|
3
|
+
clearDependencySetupFailure,
|
|
4
|
+
cloneDirectory,
|
|
5
|
+
describeDependencySourceMismatch,
|
|
6
|
+
ensureEmptyTarget,
|
|
7
|
+
ensureWorktreeDependencyExcludes,
|
|
8
|
+
ensureWorktreeGitExclude,
|
|
9
|
+
findProjectLinks,
|
|
10
|
+
listNodeWorkspaceMembers,
|
|
11
|
+
parseProjectDependencySetupCommand,
|
|
12
|
+
prepareWorktreeEnvironments,
|
|
13
|
+
recordDependencySetupFailure,
|
|
14
|
+
retargetProjectLinks,
|
|
15
|
+
runDependencySetup
|
|
16
|
+
} from "./chunk-AHU3FKPA.js";
|
|
17
|
+
import {
|
|
18
|
+
execGit
|
|
19
|
+
} from "./chunk-MHLEZQQI.js";
|
|
20
|
+
import {
|
|
21
|
+
isTrustedProjectRoot
|
|
22
|
+
} from "./chunk-QJ6OEH4K.js";
|
|
23
|
+
import {
|
|
24
|
+
BUILD_WORKTREE_DEPENDENCY_ROOT,
|
|
25
|
+
BUILD_WORKTREE_DEPENDENCY_ROOTS,
|
|
26
|
+
BUILD_WORKTREE_NODE_MODULES_STRATEGY,
|
|
27
|
+
getRuntimeEnv,
|
|
28
|
+
readRawEnv
|
|
29
|
+
} from "./chunk-7VRJHTGZ.js";
|
|
30
|
+
|
|
31
|
+
// src/core/project/installed-dependency-drift.ts
|
|
32
|
+
import * as fs from "fs/promises";
|
|
33
|
+
import * as path from "path";
|
|
34
|
+
var NODE_MODULES_SEGMENT = "node_modules/";
|
|
35
|
+
async function readLockfilePackages(filePath) {
|
|
36
|
+
const parsed = JSON.parse(await fs.readFile(filePath, "utf8"));
|
|
37
|
+
if (typeof parsed !== "object" || parsed === null) return null;
|
|
38
|
+
const packages = parsed.packages;
|
|
39
|
+
return typeof packages === "object" && packages !== null ? packages : null;
|
|
40
|
+
}
|
|
41
|
+
function entryVersion(entry) {
|
|
42
|
+
if (typeof entry !== "object" || entry === null) return void 0;
|
|
43
|
+
const version = entry.version;
|
|
44
|
+
return typeof version === "string" ? version : void 0;
|
|
45
|
+
}
|
|
46
|
+
function compareInstalledDependencyPackages(locked, installed) {
|
|
47
|
+
const drift = [];
|
|
48
|
+
for (const [key, entry] of Object.entries(installed)) {
|
|
49
|
+
const installedVersion = entryVersion(entry);
|
|
50
|
+
const lockedVersion = entryVersion(locked[key]);
|
|
51
|
+
if (!installedVersion || !lockedVersion || installedVersion === lockedVersion) continue;
|
|
52
|
+
const nameStart = key.lastIndexOf(NODE_MODULES_SEGMENT);
|
|
53
|
+
drift.push({
|
|
54
|
+
name: nameStart >= 0 ? key.slice(nameStart + NODE_MODULES_SEGMENT.length) : key,
|
|
55
|
+
installed: installedVersion,
|
|
56
|
+
locked: lockedVersion
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
return drift;
|
|
60
|
+
}
|
|
61
|
+
async function findInstalledDependencyDrift(projectRoot, installedRoot = projectRoot) {
|
|
62
|
+
const lockfilePath = path.join(projectRoot, "package-lock.json");
|
|
63
|
+
const installedPath = path.join(installedRoot, "node_modules", ".package-lock.json");
|
|
64
|
+
try {
|
|
65
|
+
const [locked, installed] = await Promise.all([
|
|
66
|
+
readLockfilePackages(lockfilePath),
|
|
67
|
+
readLockfilePackages(installedPath)
|
|
68
|
+
]);
|
|
69
|
+
if (!locked || !installed) return [];
|
|
70
|
+
return compareInstalledDependencyPackages(locked, installed);
|
|
71
|
+
} catch {
|
|
72
|
+
return [];
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
// src/utils/node-modules.ts
|
|
77
|
+
import { existsSync, readFileSync } from "fs";
|
|
78
|
+
import * as fs3 from "fs/promises";
|
|
79
|
+
import path3 from "path";
|
|
80
|
+
import { fileURLToPath } from "url";
|
|
81
|
+
import { execa } from "execa";
|
|
82
|
+
|
|
83
|
+
// src/utils/node-workspace-modules.ts
|
|
84
|
+
import { lstatSync } from "fs";
|
|
85
|
+
import * as fs2 from "fs/promises";
|
|
86
|
+
import path2 from "path";
|
|
87
|
+
function isRealDirectory(target) {
|
|
88
|
+
try {
|
|
89
|
+
const stat = lstatSync(target);
|
|
90
|
+
return stat.isDirectory() && !stat.isSymbolicLink();
|
|
91
|
+
} catch {
|
|
92
|
+
return false;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
function exists(target) {
|
|
96
|
+
try {
|
|
97
|
+
lstatSync(target);
|
|
98
|
+
return true;
|
|
99
|
+
} catch {
|
|
100
|
+
return false;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
async function materializeWorkspaceNodeModules(options) {
|
|
104
|
+
const created = [];
|
|
105
|
+
try {
|
|
106
|
+
for (const member of listNodeWorkspaceMembers(options.worktreePath)) {
|
|
107
|
+
const from = path2.join(options.sourceRoot, member, "node_modules");
|
|
108
|
+
const to = path2.join(options.worktreePath, member, "node_modules");
|
|
109
|
+
if (!isRealDirectory(from) || exists(to)) continue;
|
|
110
|
+
await fs2.mkdir(path2.dirname(to), { recursive: true });
|
|
111
|
+
created.push(to);
|
|
112
|
+
await cloneDirectory(from, to);
|
|
113
|
+
retargetProjectLinks(to, options.sourceRoot, options.worktreePath);
|
|
114
|
+
}
|
|
115
|
+
} catch (error) {
|
|
116
|
+
for (const directory of created) await ensureEmptyTarget(directory);
|
|
117
|
+
throw error;
|
|
118
|
+
}
|
|
119
|
+
const relative = created.map(
|
|
120
|
+
(directory) => path2.relative(options.worktreePath, directory).replace(/\\/g, "/")
|
|
121
|
+
);
|
|
122
|
+
if (relative.length > 0) {
|
|
123
|
+
await ensureWorktreeDependencyExcludes(options.worktreePath, relative);
|
|
124
|
+
}
|
|
125
|
+
return relative;
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
// src/utils/node-modules.ts
|
|
129
|
+
var BUILD_PACKAGE_NAME = "@ebrindley/build";
|
|
130
|
+
function parseStrategy(raw) {
|
|
131
|
+
const value = (raw ?? "").trim().toLowerCase();
|
|
132
|
+
if (value === "clone" || value === "symlink" || value === "off") return value;
|
|
133
|
+
return "clone";
|
|
134
|
+
}
|
|
135
|
+
async function pathExists(p) {
|
|
136
|
+
try {
|
|
137
|
+
await fs3.access(p);
|
|
138
|
+
return true;
|
|
139
|
+
} catch {
|
|
140
|
+
return false;
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
function recordWarning(warnings, logger, message) {
|
|
144
|
+
warnings.push(message);
|
|
145
|
+
logger?.warn?.(message);
|
|
146
|
+
}
|
|
147
|
+
function uniqueExistingRoots(roots) {
|
|
148
|
+
const seen = /* @__PURE__ */ new Set();
|
|
149
|
+
const result = [];
|
|
150
|
+
for (const root of roots) {
|
|
151
|
+
const trimmed = root?.trim();
|
|
152
|
+
if (!trimmed) continue;
|
|
153
|
+
const resolved = path3.resolve(trimmed);
|
|
154
|
+
if (seen.has(resolved)) continue;
|
|
155
|
+
seen.add(resolved);
|
|
156
|
+
result.push(resolved);
|
|
157
|
+
}
|
|
158
|
+
return result;
|
|
159
|
+
}
|
|
160
|
+
function splitEnvPathList(value) {
|
|
161
|
+
return value ? value.split(path3.delimiter).map((entry) => entry.trim()).filter(Boolean) : [];
|
|
162
|
+
}
|
|
163
|
+
async function findBuildPackageRoot() {
|
|
164
|
+
let current = path3.dirname(fileURLToPath(import.meta.url));
|
|
165
|
+
for (let depth = 0; depth < 8; depth += 1) {
|
|
166
|
+
const packageJson = path3.join(current, "package.json");
|
|
167
|
+
try {
|
|
168
|
+
const parsed = JSON.parse(await fs3.readFile(packageJson, "utf8"));
|
|
169
|
+
if (parsed.name === "@ebrindley/build") return current;
|
|
170
|
+
} catch {
|
|
171
|
+
}
|
|
172
|
+
const parent = path3.dirname(current);
|
|
173
|
+
if (parent === current) break;
|
|
174
|
+
current = parent;
|
|
175
|
+
}
|
|
176
|
+
return void 0;
|
|
177
|
+
}
|
|
178
|
+
async function readPackageName(root) {
|
|
179
|
+
try {
|
|
180
|
+
const parsed = JSON.parse(await fs3.readFile(path3.join(root, "package.json"), "utf8"));
|
|
181
|
+
return typeof parsed.name === "string" ? parsed.name : void 0;
|
|
182
|
+
} catch {
|
|
183
|
+
return void 0;
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
async function resolvePackageRootFallback(repoRoot) {
|
|
187
|
+
const packageRoot = await findBuildPackageRoot();
|
|
188
|
+
if (!packageRoot) return void 0;
|
|
189
|
+
const [repoName, packageName] = await Promise.all([
|
|
190
|
+
readPackageName(repoRoot),
|
|
191
|
+
readPackageName(packageRoot)
|
|
192
|
+
]);
|
|
193
|
+
return repoName && repoName === packageName ? packageRoot : void 0;
|
|
194
|
+
}
|
|
195
|
+
async function resolveLinkedWorktreeSourceRoot(repoRoot) {
|
|
196
|
+
try {
|
|
197
|
+
const dotGit = await fs3.readFile(path3.join(repoRoot, ".git"), "utf8");
|
|
198
|
+
const match = /^gitdir:\s*(.+)$/m.exec(dotGit.trim());
|
|
199
|
+
if (!match?.[1]) return void 0;
|
|
200
|
+
const gitDir = path3.resolve(repoRoot, match[1]);
|
|
201
|
+
const worktreesDir = path3.dirname(gitDir);
|
|
202
|
+
if (path3.basename(worktreesDir) !== "worktrees") return void 0;
|
|
203
|
+
const commonGitDir = path3.dirname(worktreesDir);
|
|
204
|
+
const sourceRoot = path3.dirname(commonGitDir);
|
|
205
|
+
if (sourceRoot === repoRoot) return void 0;
|
|
206
|
+
await fs3.access(path3.join(sourceRoot, ".git"));
|
|
207
|
+
return sourceRoot;
|
|
208
|
+
} catch {
|
|
209
|
+
return void 0;
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
async function resolveNodeModulesSource(options, warnings) {
|
|
213
|
+
const repoRoot = path3.resolve(options.repoRoot);
|
|
214
|
+
const repoPackageName = await readPackageName(repoRoot);
|
|
215
|
+
const log = options.logger;
|
|
216
|
+
const roots = uniqueExistingRoots([
|
|
217
|
+
...splitEnvPathList(readRawEnv(BUILD_WORKTREE_DEPENDENCY_ROOTS)),
|
|
218
|
+
...splitEnvPathList(readRawEnv(BUILD_WORKTREE_DEPENDENCY_ROOT)),
|
|
219
|
+
...options.sourceRoots ?? [],
|
|
220
|
+
repoRoot,
|
|
221
|
+
await resolveLinkedWorktreeSourceRoot(repoRoot),
|
|
222
|
+
await resolvePackageRootFallback(options.repoRoot)
|
|
223
|
+
]);
|
|
224
|
+
for (const root of roots) {
|
|
225
|
+
const nodeModulesPath = path3.join(root, "node_modules");
|
|
226
|
+
if (!await pathExists(nodeModulesPath)) continue;
|
|
227
|
+
const mismatch = await describeDependencySourceMismatch(options.worktreePath, root, "node");
|
|
228
|
+
const drift = await findInstalledDependencyDrift(options.worktreePath, root);
|
|
229
|
+
if (mismatch || drift.length > 0) {
|
|
230
|
+
recordWarning(
|
|
231
|
+
warnings,
|
|
232
|
+
log,
|
|
233
|
+
`[worktrees] skipping node_modules source ${root}: ${mismatch ?? "installed dependencies differ from candidate package-lock.json"}`
|
|
234
|
+
);
|
|
235
|
+
continue;
|
|
236
|
+
}
|
|
237
|
+
const sourcePackageName = root === repoRoot ? repoPackageName : await readPackageName(root);
|
|
238
|
+
if (root !== repoRoot) {
|
|
239
|
+
if (repoPackageName && sourcePackageName && repoPackageName !== sourcePackageName) {
|
|
240
|
+
recordWarning(
|
|
241
|
+
warnings,
|
|
242
|
+
log,
|
|
243
|
+
`[worktrees] skipping node_modules source ${root}: package name "${sourcePackageName}" does not match "${repoPackageName}"`
|
|
244
|
+
);
|
|
245
|
+
continue;
|
|
246
|
+
}
|
|
247
|
+
if (repoPackageName && !sourcePackageName) {
|
|
248
|
+
recordWarning(
|
|
249
|
+
warnings,
|
|
250
|
+
log,
|
|
251
|
+
`[worktrees] skipping node_modules source ${root}: missing package.json name for compatibility check`
|
|
252
|
+
);
|
|
253
|
+
continue;
|
|
254
|
+
}
|
|
255
|
+
if (!repoPackageName || !sourcePackageName) {
|
|
256
|
+
recordWarning(
|
|
257
|
+
warnings,
|
|
258
|
+
log,
|
|
259
|
+
`[worktrees] using node_modules source ${root} without package-name compatibility confirmation`
|
|
260
|
+
);
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
if (sourcePackageName === BUILD_PACKAGE_NAME) {
|
|
264
|
+
const preflightPath = path3.join(root, "scripts", "assert-node-runtime.mjs");
|
|
265
|
+
if (!await pathExists(preflightPath)) {
|
|
266
|
+
recordWarning(
|
|
267
|
+
warnings,
|
|
268
|
+
log,
|
|
269
|
+
`[worktrees] skipping node_modules source ${root}: Node runtime preflight is unavailable`
|
|
270
|
+
);
|
|
271
|
+
continue;
|
|
272
|
+
}
|
|
273
|
+
const preflight = await execa(
|
|
274
|
+
process.execPath,
|
|
275
|
+
[preflightPath, "--root", root, "--native", "required"],
|
|
276
|
+
{ reject: false, stdio: "pipe" }
|
|
277
|
+
);
|
|
278
|
+
if ((preflight.exitCode ?? 1) !== 0) {
|
|
279
|
+
const detail = String(preflight.stderr ?? preflight.stdout ?? "").trim();
|
|
280
|
+
recordWarning(
|
|
281
|
+
warnings,
|
|
282
|
+
log,
|
|
283
|
+
`[worktrees] skipping node_modules source ${root}: Node/native readiness failed${detail ? ` (${detail.slice(-500)})` : ""}`
|
|
284
|
+
);
|
|
285
|
+
continue;
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
return { root, nodeModulesPath };
|
|
289
|
+
}
|
|
290
|
+
return void 0;
|
|
291
|
+
}
|
|
292
|
+
async function resolveSymlinkSource(source, repoRoot, candidateRoot) {
|
|
293
|
+
const repoNodeModules = path3.join(repoRoot, "node_modules");
|
|
294
|
+
if (await pathExists(repoNodeModules) && !await describeDependencySourceMismatch(candidateRoot, repoRoot, "node") && (await findInstalledDependencyDrift(candidateRoot, repoRoot)).length === 0) {
|
|
295
|
+
return { root: repoRoot, nodeModulesPath: repoNodeModules };
|
|
296
|
+
}
|
|
297
|
+
return source;
|
|
298
|
+
}
|
|
299
|
+
function usesYarnPnp(root) {
|
|
300
|
+
if (existsSync(path3.join(root, ".pnp.cjs")) || existsSync(path3.join(root, ".pnp.js"))) {
|
|
301
|
+
return true;
|
|
302
|
+
}
|
|
303
|
+
try {
|
|
304
|
+
return /^\s*nodeLinker:\s*["']?pnp["']?\s*(?:#.*)?$/m.test(
|
|
305
|
+
readFileSync(path3.join(root, ".yarnrc.yml"), "utf8")
|
|
306
|
+
);
|
|
307
|
+
} catch {
|
|
308
|
+
return false;
|
|
309
|
+
}
|
|
310
|
+
}
|
|
311
|
+
async function provisionWorkspaceMemberModules(worktreePath, sourceRoot) {
|
|
312
|
+
if (usesYarnPnp(worktreePath)) return;
|
|
313
|
+
await materializeWorkspaceNodeModules({ sourceRoot, worktreePath });
|
|
314
|
+
}
|
|
315
|
+
function isDisposableWorktree(options) {
|
|
316
|
+
const own = path3.resolve(options.worktreePath);
|
|
317
|
+
return ![options.repoRoot, ...options.sourceRoots ?? []].some(
|
|
318
|
+
(root) => path3.resolve(root) === own
|
|
319
|
+
);
|
|
320
|
+
}
|
|
321
|
+
async function installNodeDependenciesFromLockfile(options, setupPlan, warnings) {
|
|
322
|
+
if (!isDisposableWorktree(options) || usesYarnPnp(options.worktreePath)) return void 0;
|
|
323
|
+
const installs = (setupPlan?.commands ?? []).filter((command) => {
|
|
324
|
+
const setup = parseProjectDependencySetupCommand(command);
|
|
325
|
+
return setup !== null && ["npm", "pnpm", "yarn", "bun"].includes(setup.file) && (setup.args[0] === "ci" || setup.args[0] === "install");
|
|
326
|
+
});
|
|
327
|
+
if (installs.length === 0) return void 0;
|
|
328
|
+
const worktreePath = options.worktreePath;
|
|
329
|
+
const target = path3.join(worktreePath, "node_modules");
|
|
330
|
+
const locked = installs.every((command) => {
|
|
331
|
+
const args = parseProjectDependencySetupCommand(command)?.args ?? [];
|
|
332
|
+
return args[0] === "ci" || args.includes("--frozen-lockfile");
|
|
333
|
+
});
|
|
334
|
+
const bootstrap = options.allowManifestBootstrap === true && !await pathExists(path3.join(options.repoRoot, "package.json"));
|
|
335
|
+
if (!locked && !bootstrap) {
|
|
336
|
+
const reason = "No node_modules source and no lockfile to install from; run the package manager install in the worktree";
|
|
337
|
+
recordDependencySetupFailure(worktreePath, {
|
|
338
|
+
ecosystem: "node",
|
|
339
|
+
cause: reason,
|
|
340
|
+
ignoredOnceInstalled: true
|
|
341
|
+
});
|
|
342
|
+
return { ecosystem: "node", action: "setup-required", reason, warnings };
|
|
343
|
+
}
|
|
344
|
+
try {
|
|
345
|
+
await ensureWorktreeGitExclude(worktreePath, ["node_modules/"]);
|
|
346
|
+
await ensureWorktreeDependencyExcludes(worktreePath, ["node_modules"]);
|
|
347
|
+
for (const command of installs) await runDependencySetup(worktreePath, command);
|
|
348
|
+
if (!await pathExists(target)) {
|
|
349
|
+
throw new Error("Lockfile install completed without creating node_modules");
|
|
350
|
+
}
|
|
351
|
+
clearDependencySetupFailure(worktreePath, "node");
|
|
352
|
+
return {
|
|
353
|
+
ecosystem: "node",
|
|
354
|
+
action: "provisioned",
|
|
355
|
+
reason: `Installed project dependencies in the worktree (${installs.join(" && ")})`,
|
|
356
|
+
warnings
|
|
357
|
+
};
|
|
358
|
+
} catch (error) {
|
|
359
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
360
|
+
await ensureEmptyTarget(target);
|
|
361
|
+
recordWarning(
|
|
362
|
+
warnings,
|
|
363
|
+
options.logger,
|
|
364
|
+
`[worktrees] failed to install node dependencies for ${worktreePath}: ${message}`
|
|
365
|
+
);
|
|
366
|
+
recordDependencySetupFailure(worktreePath, { ecosystem: "node", cause: message });
|
|
367
|
+
if (!(options.bestEffort ?? true)) throw error;
|
|
368
|
+
return { ecosystem: "node", action: "setup-required", reason: message, warnings };
|
|
369
|
+
}
|
|
370
|
+
}
|
|
371
|
+
async function prepareNodeWorktreeDependencies(options, setupPlan) {
|
|
372
|
+
const explicitStrategy = readRawEnv(BUILD_WORKTREE_NODE_MODULES_STRATEGY);
|
|
373
|
+
if (options.artifactMode === "cache-only" && !explicitStrategy && !options.strategy) {
|
|
374
|
+
return {
|
|
375
|
+
ecosystem: "node",
|
|
376
|
+
action: "cache-relied",
|
|
377
|
+
reason: "Node dependency preparation relies on package-manager caches; repo-local node_modules cloning is disabled for this worktree",
|
|
378
|
+
warnings: []
|
|
379
|
+
};
|
|
380
|
+
}
|
|
381
|
+
const strategy = options.strategy ?? parseStrategy(explicitStrategy);
|
|
382
|
+
const bestEffort = options.bestEffort ?? true;
|
|
383
|
+
const log = options.logger;
|
|
384
|
+
const warnings = [];
|
|
385
|
+
if (strategy === "off") {
|
|
386
|
+
return {
|
|
387
|
+
ecosystem: "node",
|
|
388
|
+
action: "skipped",
|
|
389
|
+
reason: "Node dependency preparation disabled by strategy off",
|
|
390
|
+
warnings
|
|
391
|
+
};
|
|
392
|
+
}
|
|
393
|
+
const target = path3.join(options.worktreePath, "node_modules");
|
|
394
|
+
const excludeDependencies = async () => {
|
|
395
|
+
await ensureWorktreeDependencyExcludes(options.worktreePath, ["node_modules"]).catch(
|
|
396
|
+
(error) => {
|
|
397
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
398
|
+
recordWarning(
|
|
399
|
+
warnings,
|
|
400
|
+
log,
|
|
401
|
+
`[worktrees] failed to exclude node_modules for ${options.worktreePath}: ${message}`
|
|
402
|
+
);
|
|
403
|
+
if (!bestEffort) throw error;
|
|
404
|
+
}
|
|
405
|
+
);
|
|
406
|
+
};
|
|
407
|
+
let existingTarget;
|
|
408
|
+
try {
|
|
409
|
+
existingTarget = await fs3.lstat(target);
|
|
410
|
+
} catch {
|
|
411
|
+
}
|
|
412
|
+
if (existingTarget && !existingTarget.isSymbolicLink()) {
|
|
413
|
+
await excludeDependencies();
|
|
414
|
+
return {
|
|
415
|
+
ecosystem: "node",
|
|
416
|
+
action: "skipped",
|
|
417
|
+
reason: "Worktree already has node_modules",
|
|
418
|
+
sourcePath: target,
|
|
419
|
+
warnings
|
|
420
|
+
};
|
|
421
|
+
}
|
|
422
|
+
const source = await resolveNodeModulesSource(options, warnings);
|
|
423
|
+
if (!source) {
|
|
424
|
+
const installed = await pathExists(target) ? void 0 : await installNodeDependenciesFromLockfile(options, setupPlan, warnings);
|
|
425
|
+
if (installed) return installed;
|
|
426
|
+
return {
|
|
427
|
+
ecosystem: "node",
|
|
428
|
+
action: "skipped",
|
|
429
|
+
reason: "No compatible node_modules source found",
|
|
430
|
+
warnings
|
|
431
|
+
};
|
|
432
|
+
}
|
|
433
|
+
await excludeDependencies();
|
|
434
|
+
try {
|
|
435
|
+
if (existingTarget?.isSymbolicLink() && strategy !== "symlink") {
|
|
436
|
+
await ensureEmptyTarget(target);
|
|
437
|
+
} else if (existingTarget) {
|
|
438
|
+
return {
|
|
439
|
+
ecosystem: "node",
|
|
440
|
+
action: "skipped",
|
|
441
|
+
reason: "Worktree already has node_modules",
|
|
442
|
+
sourcePath: source.nodeModulesPath,
|
|
443
|
+
sourceRoot: source.root,
|
|
444
|
+
warnings
|
|
445
|
+
};
|
|
446
|
+
}
|
|
447
|
+
} catch {
|
|
448
|
+
}
|
|
449
|
+
try {
|
|
450
|
+
const symlinkSource = strategy === "symlink" ? await resolveSymlinkSource(source, path3.resolve(options.repoRoot), options.worktreePath) : void 0;
|
|
451
|
+
const projectLinks = symlinkSource ? findProjectLinks(symlinkSource.nodeModulesPath, symlinkSource.root) : [];
|
|
452
|
+
if (symlinkSource && projectLinks.length === 0) {
|
|
453
|
+
await fs3.symlink(
|
|
454
|
+
symlinkSource.nodeModulesPath,
|
|
455
|
+
target,
|
|
456
|
+
process.platform === "win32" ? "junction" : "dir"
|
|
457
|
+
);
|
|
458
|
+
await provisionWorkspaceMemberModules(options.worktreePath, symlinkSource.root);
|
|
459
|
+
clearDependencySetupFailure(options.worktreePath, "node");
|
|
460
|
+
return {
|
|
461
|
+
ecosystem: "node",
|
|
462
|
+
action: "symlinked",
|
|
463
|
+
reason: "Symlinked node_modules from compatible dependency source",
|
|
464
|
+
sourcePath: symlinkSource.nodeModulesPath,
|
|
465
|
+
sourceRoot: symlinkSource.root,
|
|
466
|
+
warnings
|
|
467
|
+
};
|
|
468
|
+
}
|
|
469
|
+
log?.debug?.(`[worktrees] cloning node_modules from ${source.root} into ${target}`);
|
|
470
|
+
await cloneDirectory(source.nodeModulesPath, target);
|
|
471
|
+
retargetProjectLinks(target, source.root, options.worktreePath);
|
|
472
|
+
await provisionWorkspaceMemberModules(options.worktreePath, source.root);
|
|
473
|
+
clearDependencySetupFailure(options.worktreePath, "node");
|
|
474
|
+
return {
|
|
475
|
+
ecosystem: "node",
|
|
476
|
+
action: "cloned",
|
|
477
|
+
reason: projectLinks.length > 0 ? "Cloned node_modules instead of symlinking it: workspace or file: links would load the source checkout" : "Cloned node_modules from compatible dependency source",
|
|
478
|
+
sourcePath: source.nodeModulesPath,
|
|
479
|
+
sourceRoot: source.root,
|
|
480
|
+
warnings
|
|
481
|
+
};
|
|
482
|
+
} catch (error) {
|
|
483
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
484
|
+
await ensureEmptyTarget(target);
|
|
485
|
+
recordWarning(
|
|
486
|
+
warnings,
|
|
487
|
+
log,
|
|
488
|
+
`[worktrees] failed to provision node_modules for ${options.worktreePath}: ${message}`
|
|
489
|
+
);
|
|
490
|
+
recordDependencySetupFailure(options.worktreePath, {
|
|
491
|
+
ecosystem: "node",
|
|
492
|
+
cause: message
|
|
493
|
+
});
|
|
494
|
+
if (!bestEffort) throw error;
|
|
495
|
+
return {
|
|
496
|
+
ecosystem: "node",
|
|
497
|
+
action: "skipped",
|
|
498
|
+
reason: error instanceof ProjectLinkRetargetError ? `node_modules cloned from the source checkout is unusable for verification: ${message}` : "Failed to provision node_modules; continuing because preparation is best-effort",
|
|
499
|
+
sourcePath: source.nodeModulesPath,
|
|
500
|
+
sourceRoot: source.root,
|
|
501
|
+
warnings
|
|
502
|
+
};
|
|
503
|
+
}
|
|
504
|
+
}
|
|
505
|
+
function toEnvironmentResult(result) {
|
|
506
|
+
const provisioned = result.action === "cloned" || result.action === "symlinked" || result.action === "provisioned";
|
|
507
|
+
const present = result.action === "skipped" && /already has/.test(result.reason);
|
|
508
|
+
const action = provisioned || present ? "provisioned" : result.action === "cache-relied" ? "cache-relied" : "setup-required";
|
|
509
|
+
return {
|
|
510
|
+
ecosystem: result.ecosystem,
|
|
511
|
+
action,
|
|
512
|
+
reason: result.reason,
|
|
513
|
+
envRoot: result.sourcePath,
|
|
514
|
+
sourceRoot: result.sourceRoot,
|
|
515
|
+
warnings: result.warnings
|
|
516
|
+
};
|
|
517
|
+
}
|
|
518
|
+
async function prepareWorktreeDependencies(options) {
|
|
519
|
+
const repoRoot = path3.resolve(options.repoRoot);
|
|
520
|
+
let nodeResult;
|
|
521
|
+
const environments = await prepareWorktreeEnvironments({
|
|
522
|
+
repoRoot,
|
|
523
|
+
worktreePath: options.worktreePath,
|
|
524
|
+
sourceRoots: options.sourceRoots,
|
|
525
|
+
bestEffort: options.bestEffort,
|
|
526
|
+
logger: options.logger,
|
|
527
|
+
prepareNode: async (setupPlan) => {
|
|
528
|
+
nodeResult = await prepareNodeWorktreeDependencies({ ...options, repoRoot }, setupPlan);
|
|
529
|
+
return toEnvironmentResult(nodeResult);
|
|
530
|
+
}
|
|
531
|
+
});
|
|
532
|
+
const warnings = environments.flatMap((environment) => environment.warnings);
|
|
533
|
+
if (nodeResult)
|
|
534
|
+
return { ...nodeResult, warnings, environments };
|
|
535
|
+
const primary = environments[0];
|
|
536
|
+
if (!primary) throw new Error("worktree environment preparation returned no result");
|
|
537
|
+
return {
|
|
538
|
+
ecosystem: primary.ecosystem,
|
|
539
|
+
action: primary.action === "unavailable" ? "unsupported" : primary.action,
|
|
540
|
+
reason: primary.reason,
|
|
541
|
+
sourcePath: primary.envRoot,
|
|
542
|
+
sourceRoot: primary.sourceRoot,
|
|
543
|
+
warnings,
|
|
544
|
+
environments
|
|
545
|
+
};
|
|
546
|
+
}
|
|
547
|
+
|
|
548
|
+
// src/utils/worktree-env-files.ts
|
|
549
|
+
import { chmod, copyFile, lstat as lstat2, mkdir as mkdir2, realpath } from "fs/promises";
|
|
550
|
+
import path4 from "path";
|
|
551
|
+
var LEGACY_ENV_FILE_NAMES = [".env", ".env.local"];
|
|
552
|
+
var USER_SCOPE_SOURCE_TYPES = ["user", "profile"];
|
|
553
|
+
var GIT_PROBE_TIMEOUT_MS = 15e3;
|
|
554
|
+
var managersByRoot = /* @__PURE__ */ new Map();
|
|
555
|
+
var untrustedProjectNoticeRoots = /* @__PURE__ */ new Set();
|
|
556
|
+
function normalizeEnvFileName(raw) {
|
|
557
|
+
if (typeof raw !== "string") return void 0;
|
|
558
|
+
const trimmed = raw.trim();
|
|
559
|
+
if (!trimmed || trimmed.includes("\0") || /[*?[\]{}]/.test(trimmed)) return void 0;
|
|
560
|
+
if (path4.isAbsolute(trimmed) || path4.win32.isAbsolute(trimmed)) return void 0;
|
|
561
|
+
const normalized = path4.posix.normalize(trimmed.replace(/\\/g, "/"));
|
|
562
|
+
if (normalized === "." || normalized === ".." || normalized.startsWith("../")) return void 0;
|
|
563
|
+
if (normalized.endsWith("/")) return void 0;
|
|
564
|
+
const firstSegment = normalized.split("/")[0];
|
|
565
|
+
if (firstSegment === ".git") return void 0;
|
|
566
|
+
return normalized;
|
|
567
|
+
}
|
|
568
|
+
function configuredNamesFromSources(sources, repoRoot, logger) {
|
|
569
|
+
const names = [];
|
|
570
|
+
for (const source of sources) {
|
|
571
|
+
const list = source.data?.worktree?.copyEnvFiles;
|
|
572
|
+
if (!Array.isArray(list)) continue;
|
|
573
|
+
if (USER_SCOPE_SOURCE_TYPES.includes(source.type)) {
|
|
574
|
+
names.push(...list);
|
|
575
|
+
} else if (source.type === "project") {
|
|
576
|
+
if (isTrustedProjectRoot(repoRoot)) {
|
|
577
|
+
names.push(...list);
|
|
578
|
+
} else if (!untrustedProjectNoticeRoots.has(repoRoot)) {
|
|
579
|
+
untrustedProjectNoticeRoots.add(repoRoot);
|
|
580
|
+
logger?.warn?.(
|
|
581
|
+
"Ignoring worktree.copyEnvFiles from project config: copying env files needs BUILD_TRUST_PROJECT_PROVIDER_TEMPLATES to name this project root, or set it in user config."
|
|
582
|
+
);
|
|
583
|
+
}
|
|
584
|
+
}
|
|
585
|
+
}
|
|
586
|
+
return names;
|
|
587
|
+
}
|
|
588
|
+
async function resolveWorktreeEnvFileNames(repoRoot, logger) {
|
|
589
|
+
const raw = [];
|
|
590
|
+
if (getRuntimeEnv("BUILD_COPY_ENV_TO_WORKTREES") === "1") raw.push(...LEGACY_ENV_FILE_NAMES);
|
|
591
|
+
try {
|
|
592
|
+
let manager = managersByRoot.get(repoRoot);
|
|
593
|
+
if (!manager) {
|
|
594
|
+
const { ConfigManager: Manager } = await import("./config-manager-J2UTO635.js");
|
|
595
|
+
manager = new Manager({ cwd: repoRoot });
|
|
596
|
+
managersByRoot.set(repoRoot, manager);
|
|
597
|
+
}
|
|
598
|
+
const loaded = await manager.loadConfig();
|
|
599
|
+
raw.push(...configuredNamesFromSources(loaded.sources, repoRoot, logger));
|
|
600
|
+
} catch {
|
|
601
|
+
}
|
|
602
|
+
const names = [];
|
|
603
|
+
for (const entry of raw) {
|
|
604
|
+
const name = normalizeEnvFileName(entry);
|
|
605
|
+
if (name === void 0) {
|
|
606
|
+
logger?.warn?.(
|
|
607
|
+
"Ignoring an invalid worktree.copyEnvFiles entry: use a repo-relative file path."
|
|
608
|
+
);
|
|
609
|
+
continue;
|
|
610
|
+
}
|
|
611
|
+
if (!names.includes(name)) names.push(name);
|
|
612
|
+
}
|
|
613
|
+
return names;
|
|
614
|
+
}
|
|
615
|
+
async function isTracked(worktreePath, name) {
|
|
616
|
+
try {
|
|
617
|
+
const result = await execGit(["ls-files", "--error-unmatch", "--", name], {
|
|
618
|
+
cwd: worktreePath,
|
|
619
|
+
timeoutMs: GIT_PROBE_TIMEOUT_MS
|
|
620
|
+
});
|
|
621
|
+
return result.exitCode !== 1;
|
|
622
|
+
} catch {
|
|
623
|
+
return true;
|
|
624
|
+
}
|
|
625
|
+
}
|
|
626
|
+
async function isIgnored(worktreePath, name) {
|
|
627
|
+
try {
|
|
628
|
+
const result = await execGit(["check-ignore", "-q", "--", name], {
|
|
629
|
+
cwd: worktreePath,
|
|
630
|
+
timeoutMs: GIT_PROBE_TIMEOUT_MS
|
|
631
|
+
});
|
|
632
|
+
return result.exitCode === 0;
|
|
633
|
+
} catch {
|
|
634
|
+
return false;
|
|
635
|
+
}
|
|
636
|
+
}
|
|
637
|
+
function isWithin(root, candidate) {
|
|
638
|
+
const relative = path4.relative(root, candidate);
|
|
639
|
+
return !relative.startsWith("..") && !path4.isAbsolute(relative);
|
|
640
|
+
}
|
|
641
|
+
async function sourceRejection(repoRoot, name) {
|
|
642
|
+
const source = path4.join(repoRoot, ...name.split("/"));
|
|
643
|
+
let stat;
|
|
644
|
+
try {
|
|
645
|
+
stat = await lstat2(source);
|
|
646
|
+
} catch {
|
|
647
|
+
return "not present in the checkout";
|
|
648
|
+
}
|
|
649
|
+
if (!stat.isFile()) return "not a regular file";
|
|
650
|
+
try {
|
|
651
|
+
if (!isWithin(await realpath(repoRoot), await realpath(source))) {
|
|
652
|
+
return "resolves outside the checkout";
|
|
653
|
+
}
|
|
654
|
+
} catch {
|
|
655
|
+
return "not present in the checkout";
|
|
656
|
+
}
|
|
657
|
+
return void 0;
|
|
658
|
+
}
|
|
659
|
+
async function destinationRejection(worktreePath, name) {
|
|
660
|
+
const destination = path4.join(worktreePath, ...name.split("/"));
|
|
661
|
+
try {
|
|
662
|
+
const stat = await lstat2(destination);
|
|
663
|
+
if (stat.isSymbolicLink() || !stat.isFile()) return "destination is not a regular file";
|
|
664
|
+
} catch {
|
|
665
|
+
}
|
|
666
|
+
try {
|
|
667
|
+
await mkdir2(path4.dirname(destination), { recursive: true });
|
|
668
|
+
if (!isWithin(await realpath(worktreePath), await realpath(path4.dirname(destination)))) {
|
|
669
|
+
return "destination resolves outside the worktree";
|
|
670
|
+
}
|
|
671
|
+
} catch {
|
|
672
|
+
return "destination directory is not writable";
|
|
673
|
+
}
|
|
674
|
+
return void 0;
|
|
675
|
+
}
|
|
676
|
+
async function copyConfiguredEnvFilesToWorktree(options) {
|
|
677
|
+
const result = { copied: [], skipped: [] };
|
|
678
|
+
const repoRoot = path4.resolve(options.repoRoot);
|
|
679
|
+
const worktreePath = path4.resolve(options.worktreePath);
|
|
680
|
+
const names = options.names ?? await resolveWorktreeEnvFileNames(repoRoot, options.logger);
|
|
681
|
+
if (names.length === 0 || repoRoot === worktreePath) return result;
|
|
682
|
+
const skip = (name, reason) => {
|
|
683
|
+
result.skipped.push({ name, reason });
|
|
684
|
+
options.logger?.warn?.(`Skipping ${name} env file copy: ${reason}.`);
|
|
685
|
+
};
|
|
686
|
+
for (const name of names) {
|
|
687
|
+
const rejected = await sourceRejection(repoRoot, name);
|
|
688
|
+
if (rejected) {
|
|
689
|
+
result.skipped.push({ name, reason: rejected });
|
|
690
|
+
options.logger?.debug?.(`Skipping ${name} env file copy: ${rejected}.`);
|
|
691
|
+
continue;
|
|
692
|
+
}
|
|
693
|
+
if (await isTracked(worktreePath, name)) {
|
|
694
|
+
skip(name, "tracked at the requested ref, so copying would dirty the worktree");
|
|
695
|
+
continue;
|
|
696
|
+
}
|
|
697
|
+
if (!await isIgnored(worktreePath, name)) {
|
|
698
|
+
await ensureWorktreeGitExclude(worktreePath, [`/${name}`]).catch(() => void 0);
|
|
699
|
+
if (!await isIgnored(worktreePath, name)) {
|
|
700
|
+
skip(name, "could not exclude it from git status");
|
|
701
|
+
continue;
|
|
702
|
+
}
|
|
703
|
+
}
|
|
704
|
+
const blocked = await destinationRejection(worktreePath, name);
|
|
705
|
+
if (blocked) {
|
|
706
|
+
skip(name, blocked);
|
|
707
|
+
continue;
|
|
708
|
+
}
|
|
709
|
+
try {
|
|
710
|
+
const destination = path4.join(worktreePath, ...name.split("/"));
|
|
711
|
+
await copyFile(path4.join(repoRoot, ...name.split("/")), destination);
|
|
712
|
+
await chmod(destination, 384);
|
|
713
|
+
result.copied.push(name);
|
|
714
|
+
} catch {
|
|
715
|
+
skip(name, "copy failed");
|
|
716
|
+
}
|
|
717
|
+
}
|
|
718
|
+
if (result.copied.length > 0) {
|
|
719
|
+
options.logger?.debug?.(`Copied ${result.copied.length} env file(s) into the worktree.`);
|
|
720
|
+
}
|
|
721
|
+
return result;
|
|
722
|
+
}
|
|
723
|
+
|
|
724
|
+
export {
|
|
725
|
+
findInstalledDependencyDrift,
|
|
726
|
+
prepareWorktreeDependencies,
|
|
727
|
+
copyConfiguredEnvFilesToWorktree
|
|
728
|
+
};
|
|
729
|
+
//# sourceMappingURL=chunk-BIUV23HH.js.map
|