@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,855 @@
|
|
|
1
|
+
import {
|
|
2
|
+
getContainedHomeSiblingRuntimeRoot,
|
|
3
|
+
resolveTrustedBuildHome
|
|
4
|
+
} from "./chunk-56WPYDJH.js";
|
|
5
|
+
import {
|
|
6
|
+
BUILD_HOME_DIR_NAME
|
|
7
|
+
} from "./chunk-7VRJHTGZ.js";
|
|
8
|
+
|
|
9
|
+
// src/core/sandbox/provider-manifests.ts
|
|
10
|
+
import fs from "fs";
|
|
11
|
+
import os from "os";
|
|
12
|
+
import path from "path";
|
|
13
|
+
|
|
14
|
+
// src/core/sandbox/provider-manifest-table.ts
|
|
15
|
+
var sub = (homeRelative, note) => ({
|
|
16
|
+
kind: "subpath",
|
|
17
|
+
homeRelative,
|
|
18
|
+
note
|
|
19
|
+
});
|
|
20
|
+
var lit = (homeRelative, note) => ({
|
|
21
|
+
kind: "literal",
|
|
22
|
+
homeRelative,
|
|
23
|
+
note
|
|
24
|
+
});
|
|
25
|
+
var rgx = (homeRelative, note, probeName) => ({
|
|
26
|
+
kind: "regex",
|
|
27
|
+
homeRelative,
|
|
28
|
+
note,
|
|
29
|
+
...probeName ? { probeName } : {}
|
|
30
|
+
});
|
|
31
|
+
var COMMON_TOOLCHAIN_WRITE_PATHS = [
|
|
32
|
+
sub(".cache", "XDG cache"),
|
|
33
|
+
sub("Library/Caches", "macOS user caches"),
|
|
34
|
+
sub(".npm"),
|
|
35
|
+
sub(".bun"),
|
|
36
|
+
sub(".m2"),
|
|
37
|
+
sub(".gradle")
|
|
38
|
+
];
|
|
39
|
+
var CURSOR_KEYCHAIN_WRITE = {
|
|
40
|
+
kind: "subpath",
|
|
41
|
+
homeRelative: "Library/Keychains",
|
|
42
|
+
note: "macOS Keychain state for Cursor CLI login lookup",
|
|
43
|
+
// The cursor mcp.json authority-deny applies to the config dir, not here.
|
|
44
|
+
authorityDenyExempt: true
|
|
45
|
+
};
|
|
46
|
+
var CLAUDE_OPTIONAL_STATE_SUBPATHS = [
|
|
47
|
+
"file-history",
|
|
48
|
+
"plans",
|
|
49
|
+
"debug",
|
|
50
|
+
"paste-cache",
|
|
51
|
+
"uploads",
|
|
52
|
+
"session-env",
|
|
53
|
+
"tasks",
|
|
54
|
+
"shell-snapshots",
|
|
55
|
+
"backups",
|
|
56
|
+
"feedback-bundles",
|
|
57
|
+
"feedback",
|
|
58
|
+
"usage-data",
|
|
59
|
+
"cache",
|
|
60
|
+
"agent-memory",
|
|
61
|
+
"skills",
|
|
62
|
+
"agents",
|
|
63
|
+
"commands",
|
|
64
|
+
"workflows",
|
|
65
|
+
"rules",
|
|
66
|
+
"output-styles"
|
|
67
|
+
];
|
|
68
|
+
var CLAUDE_STATE_FILE_REGEX = "\\.claude/(?:history\\.jsonl|stats-cache\\.json|\\.credentials\\.json|\\.credentials\\.lock|CLAUDE\\.md)(?:\\.[^/]*)?$";
|
|
69
|
+
var GEMINI_STACK_POLICY_DENY_PATHS = [
|
|
70
|
+
{ kind: "literal", relativePath: "settings.json" },
|
|
71
|
+
{ kind: "literal", relativePath: "trustedFolders.json" },
|
|
72
|
+
{ kind: "subpath", relativePath: "policies" }
|
|
73
|
+
];
|
|
74
|
+
var PROVIDER_MANIFESTS = {
|
|
75
|
+
"project-verification": {
|
|
76
|
+
providerId: "project-verification",
|
|
77
|
+
requiredWritePaths: [
|
|
78
|
+
...COMMON_TOOLCHAIN_WRITE_PATHS,
|
|
79
|
+
sub(".cargo/registry"),
|
|
80
|
+
sub(".cargo/git"),
|
|
81
|
+
sub(".nuget/packages"),
|
|
82
|
+
sub(".pub-cache"),
|
|
83
|
+
sub(".gem"),
|
|
84
|
+
sub("Library/pnpm/store"),
|
|
85
|
+
sub(".local/share/pnpm/store"),
|
|
86
|
+
sub("go/pkg/mod")
|
|
87
|
+
]
|
|
88
|
+
},
|
|
89
|
+
claude: {
|
|
90
|
+
providerId: "claude",
|
|
91
|
+
authorityStateRoot: ".claude",
|
|
92
|
+
// Enumerated, not the whole ~/.claude root: Claude writes its own app data
|
|
93
|
+
// and the content it authors (skills, agents, memory), never settings,
|
|
94
|
+
// hooks, plugins or the native-install binary. Names follow
|
|
95
|
+
// https://code.claude.com/docs/en/claude-directory (Application data and
|
|
96
|
+
// State files to keep). remote-settings.json and policy-limits.json are
|
|
97
|
+
// server-delivered policy caches and are deliberately not granted.
|
|
98
|
+
// Each static subpath is authorityDenyExempt: the authority denies below
|
|
99
|
+
// are joined onto granted roots, and joining them onto these narrow
|
|
100
|
+
// subpaths would only emit meaningless denies (and would block an authored
|
|
101
|
+
// skill that happens to be named `hooks`).
|
|
102
|
+
requiredWritePaths: [
|
|
103
|
+
...[
|
|
104
|
+
sub(".claude/projects", "Claude CLI transcripts and auto memory"),
|
|
105
|
+
sub(".claude/sessions", "Claude CLI per-session liveness files"),
|
|
106
|
+
...CLAUDE_OPTIONAL_STATE_SUBPATHS.map((entry) => ({
|
|
107
|
+
...sub(`.claude/${entry}`, "Claude CLI app data or authored content"),
|
|
108
|
+
probeExempt: true
|
|
109
|
+
})),
|
|
110
|
+
sub(".claude.json.lock", "Claude CLI atomic-write lock")
|
|
111
|
+
].map((spec) => ({ ...spec, authorityDenyExempt: true })),
|
|
112
|
+
{
|
|
113
|
+
...rgx(CLAUDE_STATE_FILE_REGEX, "Claude CLI state files and their atomic-write temps"),
|
|
114
|
+
probeExempt: true
|
|
115
|
+
},
|
|
116
|
+
lit(".claude.json", "Claude CLI root config"),
|
|
117
|
+
// Claude writes a lock dir + atomic temp files next to ~/.claude.json;
|
|
118
|
+
// blocking these forces non-atomic writes that can corrupt the config.
|
|
119
|
+
// Observed temp name: .claude.json.tmp.<pid>.<12 hex>.
|
|
120
|
+
rgx(
|
|
121
|
+
"\\.claude\\.json\\.tmp\\.[^/]+$",
|
|
122
|
+
"Claude CLI atomic-write temp",
|
|
123
|
+
".claude.json.tmp.build-cap-{id}"
|
|
124
|
+
)
|
|
125
|
+
],
|
|
126
|
+
// A CLAUDE_CONFIG_DIR runtime root is granted whole (a dedicated dir), so
|
|
127
|
+
// these are re-denied beneath it. Settings and hooks alter policy; plugins,
|
|
128
|
+
// local (native install) and dev-mods supply code that later runs.
|
|
129
|
+
persistentAuthorityWriteDenyPaths: [
|
|
130
|
+
{ kind: "literal", relativePath: "settings.json" },
|
|
131
|
+
{ kind: "literal", relativePath: "settings.local.json" },
|
|
132
|
+
{ kind: "subpath", relativePath: "hooks" },
|
|
133
|
+
{ kind: "subpath", relativePath: "plugins" },
|
|
134
|
+
{ kind: "subpath", relativePath: "local" },
|
|
135
|
+
{ kind: "subpath", relativePath: "dev-mods" }
|
|
136
|
+
],
|
|
137
|
+
// ${CLAUDE_PLUGIN_DATA} resolves to ~/.claude/plugins/data/<id>/: runtime
|
|
138
|
+
// plugin data (dependencies, caches), kept across plugin updates. Plugin
|
|
139
|
+
// code and config stay denied. Source:
|
|
140
|
+
// https://code.claude.com/docs/en/plugins/manifest-reference#environment-variables
|
|
141
|
+
persistentAuthorityWriteReallowPaths: [{ kind: "subpath", relativePath: "plugins/data" }]
|
|
142
|
+
},
|
|
143
|
+
codex: {
|
|
144
|
+
providerId: "codex",
|
|
145
|
+
requiredWritePaths: [sub(".codex", "Codex CLI state (CODEX_HOME)")],
|
|
146
|
+
// config.toml / profile sidecars steer later invocations (model_provider,
|
|
147
|
+
// approvals); rules/ is the exec policy, hooks.json supplies commands, and
|
|
148
|
+
// requirements/managed_config are managed policy. auth.json stays writable
|
|
149
|
+
// — it is required Codex state, not a deferred-execution policy surface.
|
|
150
|
+
persistentAuthorityWriteDenyPaths: [
|
|
151
|
+
{ kind: "literal", relativePath: "config.toml" },
|
|
152
|
+
{ kind: "literal", relativePath: "requirements.toml" },
|
|
153
|
+
{ kind: "literal", relativePath: "managed_config.toml" },
|
|
154
|
+
{ kind: "literal", relativePath: "hooks.json" },
|
|
155
|
+
{ kind: "subpath", relativePath: "rules" }
|
|
156
|
+
]
|
|
157
|
+
},
|
|
158
|
+
copilot: {
|
|
159
|
+
providerId: "copilot",
|
|
160
|
+
requiredWritePaths: [
|
|
161
|
+
sub(".copilot", "Copilot CLI state"),
|
|
162
|
+
{
|
|
163
|
+
...sub("Library/Application Support/github-copilot", "Copilot macOS state"),
|
|
164
|
+
authorityDenyExempt: true
|
|
165
|
+
},
|
|
166
|
+
{
|
|
167
|
+
...sub("Library/Application Support/GitHub Copilot", "Copilot macOS state"),
|
|
168
|
+
authorityDenyExempt: true
|
|
169
|
+
},
|
|
170
|
+
{ ...sub(".config/gh", "gh CLI auth used by Copilot"), authorityDenyExempt: true }
|
|
171
|
+
],
|
|
172
|
+
// config.json carries trusted folders and permissions, settings.json the
|
|
173
|
+
// user settings, mcp-config.json the MCP servers and hooks/ the hook code
|
|
174
|
+
// that later turns load.
|
|
175
|
+
persistentAuthorityWriteDenyPaths: [
|
|
176
|
+
{ kind: "literal", relativePath: "config.json" },
|
|
177
|
+
{ kind: "literal", relativePath: "settings.json" },
|
|
178
|
+
{ kind: "literal", relativePath: "mcp-config.json" },
|
|
179
|
+
{ kind: "literal", relativePath: "permissions-config.json" },
|
|
180
|
+
{ kind: "literal", relativePath: "permissions-config" },
|
|
181
|
+
{ kind: "subpath", relativePath: "hooks" }
|
|
182
|
+
]
|
|
183
|
+
},
|
|
184
|
+
cursor: {
|
|
185
|
+
providerId: "cursor",
|
|
186
|
+
requiredWritePaths: [sub(".cursor", "Cursor CLI state"), CURSOR_KEYCHAIN_WRITE],
|
|
187
|
+
// User-level MCP config and hooks are loaded by later Cursor turns
|
|
188
|
+
// (`--approve-mcps` and project `.cursor/mcp.json` are the documented MCP
|
|
189
|
+
// surfaces). cli-config.json holds the permission allow/deny lists,
|
|
190
|
+
// approval mode and sandbox settings, so it is denied too; the login
|
|
191
|
+
// itself lives in the Keychain and the Build-seeded runtime copy is
|
|
192
|
+
// written before launch, not by the confined process.
|
|
193
|
+
persistentAuthorityWriteDenyPaths: [
|
|
194
|
+
{ kind: "literal", relativePath: "mcp.json" },
|
|
195
|
+
{ kind: "literal", relativePath: "cli-config.json", staticRootOnly: true },
|
|
196
|
+
{ kind: "literal", relativePath: "hooks.json" },
|
|
197
|
+
{ kind: "literal", relativePath: "sandbox.json" },
|
|
198
|
+
{ kind: "subpath", relativePath: "sandbox-policies" }
|
|
199
|
+
]
|
|
200
|
+
},
|
|
201
|
+
gemini: {
|
|
202
|
+
providerId: "gemini",
|
|
203
|
+
requiredWritePaths: [
|
|
204
|
+
sub(".gemini", "Gemini CLI state"),
|
|
205
|
+
{ ...sub(".gcloud", "gcloud auth cache"), authorityDenyExempt: true },
|
|
206
|
+
{ ...sub(".config/gcloud", "gcloud auth config"), authorityDenyExempt: true },
|
|
207
|
+
// Gemini CLI 0.53.1 stores an interactively-entered API key in the macOS
|
|
208
|
+
// Keychain (service "gemini-cli-api-key"). Security.framework updates
|
|
209
|
+
// lock/session state and the keychain db during an ordinary LOOKUP, so
|
|
210
|
+
// reading a secret requires WRITE access here — a read grant is not
|
|
211
|
+
// sufficient. Established by bisection: granting only login.keychain-db,
|
|
212
|
+
// that file plus the session UUID dir, or plus a .fl* lock regex all fail,
|
|
213
|
+
// and granting the directory then re-denying the db also fails.
|
|
214
|
+
//
|
|
215
|
+
// Declared per-provider (not in the shared write block) so only providers
|
|
216
|
+
// that actually need the keychain receive it, and so the inherited-sandbox
|
|
217
|
+
// capability probe checks it — an outer sandbox that denies this path now
|
|
218
|
+
// fails closed as sandbox_capability_denied instead of launching Gemini
|
|
219
|
+
// with its internal protections bypassed and failing at credential access.
|
|
220
|
+
{
|
|
221
|
+
...sub("Library/Keychains", "macOS Keychain state for Gemini CLI API-key lookup"),
|
|
222
|
+
authorityDenyExempt: true
|
|
223
|
+
}
|
|
224
|
+
],
|
|
225
|
+
persistentAuthorityWriteDenyPaths: GEMINI_STACK_POLICY_DENY_PATHS
|
|
226
|
+
},
|
|
227
|
+
grok: {
|
|
228
|
+
providerId: "grok",
|
|
229
|
+
requiredWritePaths: [sub(".grok", "Grok CLI session/auth state")],
|
|
230
|
+
// ~/.grok stays writable for sessions, auth, skills, plugins, AGENTS.md and
|
|
231
|
+
// memory. These are the paths Grok's own sandbox write-denies under every
|
|
232
|
+
// built-in profile (docs/user-guide/18-sandbox.md, "Direct global write
|
|
233
|
+
// protection"): settings, folder trust, managed policy and sandbox
|
|
234
|
+
// profiles (unmatched tools inherit always-approve / ask rules from
|
|
235
|
+
// config.toml), hook sources, and bundle caches that load as built-ins.
|
|
236
|
+
// bin/, downloads/ and vendor/ hold the executables a later launch runs.
|
|
237
|
+
// hooks-paths lists further hook sources, which are denied as well.
|
|
238
|
+
persistentAuthorityWriteDenyPaths: [
|
|
239
|
+
{ kind: "literal", relativePath: "config.toml" },
|
|
240
|
+
{ kind: "literal", relativePath: "sandbox.toml" },
|
|
241
|
+
{ kind: "literal", relativePath: "requirements.toml" },
|
|
242
|
+
{ kind: "literal", relativePath: "managed_config.toml" },
|
|
243
|
+
{ kind: "literal", relativePath: "trusted_folders.toml" },
|
|
244
|
+
{ kind: "literal", relativePath: "hooks-paths" },
|
|
245
|
+
{ kind: "subpath", relativePath: "hooks" },
|
|
246
|
+
{ kind: "subpath", relativePath: "bundled" },
|
|
247
|
+
{ kind: "subpath", relativePath: "bundles" },
|
|
248
|
+
{ kind: "subpath", relativePath: "bin" },
|
|
249
|
+
{ kind: "subpath", relativePath: "downloads" },
|
|
250
|
+
{ kind: "subpath", relativePath: "vendor" }
|
|
251
|
+
],
|
|
252
|
+
authorityPathRegistry: "hooks-paths"
|
|
253
|
+
},
|
|
254
|
+
kiro: {
|
|
255
|
+
providerId: "kiro",
|
|
256
|
+
requiredWritePaths: [sub(".kiro", "Kiro CLI state"), sub(".config/kiro", "Kiro CLI config")],
|
|
257
|
+
// CLI settings and MCP servers are loaded by later turns. settings/ also
|
|
258
|
+
// holds runtime feed and survey state, so only the two files are denied.
|
|
259
|
+
persistentAuthorityWriteDenyPaths: [
|
|
260
|
+
{ kind: "literal", relativePath: "settings/cli.json" },
|
|
261
|
+
{ kind: "literal", relativePath: "settings/mcp.json" }
|
|
262
|
+
]
|
|
263
|
+
},
|
|
264
|
+
antigravity: {
|
|
265
|
+
providerId: "antigravity",
|
|
266
|
+
// Antigravity (`agy`) is built on the Gemini stack and writes across the
|
|
267
|
+
// whole ~/.gemini tree at runtime: OAuth token (~/.gemini/oauth_creds.json),
|
|
268
|
+
// auto-created project config (~/.gemini/config/projects/*.json), and CLI
|
|
269
|
+
// state (~/.gemini/antigravity-cli/). Granting the subtree mirrors the
|
|
270
|
+
// gemini manifest; scoping to subdirs caused `operation not permitted` on
|
|
271
|
+
// the project-config write and a hard exit 2 under the seatbelt.
|
|
272
|
+
requiredWritePaths: [sub(".gemini", "Antigravity/Gemini CLI state, OAuth, and project config")],
|
|
273
|
+
persistentAuthorityWriteDenyPaths: GEMINI_STACK_POLICY_DENY_PATHS
|
|
274
|
+
},
|
|
275
|
+
opencode: {
|
|
276
|
+
providerId: "opencode",
|
|
277
|
+
requiredWritePaths: [sub(".config/opencode", "OpenCode CLI state")],
|
|
278
|
+
// Isolated runs already treat these as user config (commands / agents)
|
|
279
|
+
// that would otherwise leak into later invocations.
|
|
280
|
+
persistentAuthorityWriteDenyPaths: [
|
|
281
|
+
{ kind: "literal", relativePath: "opencode/opencode.json" },
|
|
282
|
+
{ kind: "literal", relativePath: "opencode/opencode.jsonc" },
|
|
283
|
+
{ kind: "literal", relativePath: "opencode/config.json" },
|
|
284
|
+
{ kind: "subpath", relativePath: "opencode/agent" }
|
|
285
|
+
]
|
|
286
|
+
},
|
|
287
|
+
pi: {
|
|
288
|
+
providerId: "pi",
|
|
289
|
+
// Pi writes auth.json, models.json, the model store, and a security event
|
|
290
|
+
// log under ~/.pi/agent. Build passes --no-session so session files are not
|
|
291
|
+
// created, but the agent dir itself is still written at startup: without
|
|
292
|
+
// this grant Pi dies with EPERM on mkdir before the model is reached.
|
|
293
|
+
requiredWritePaths: [
|
|
294
|
+
{
|
|
295
|
+
...sub(".pi", "Pi agent auth, model catalog, and event log"),
|
|
296
|
+
authorityPathPrefix: "agent"
|
|
297
|
+
}
|
|
298
|
+
],
|
|
299
|
+
persistentAuthorityWriteDenyPaths: [
|
|
300
|
+
{ kind: "subpath", relativePath: "extensions" },
|
|
301
|
+
{ kind: "subpath", relativePath: "npm" },
|
|
302
|
+
{ kind: "subpath", relativePath: "git" },
|
|
303
|
+
{ kind: "literal", relativePath: "settings.json" },
|
|
304
|
+
{ kind: "literal", relativePath: "trust.json" },
|
|
305
|
+
{ kind: "literal", relativePath: "models.json" }
|
|
306
|
+
],
|
|
307
|
+
protectAuthorityRoot: true
|
|
308
|
+
}
|
|
309
|
+
};
|
|
310
|
+
|
|
311
|
+
// src/core/sandbox/provider-manifests.ts
|
|
312
|
+
var isRuntimeOverride = (spec) => !!spec.absolutePath && !spec.staticAlias;
|
|
313
|
+
var absoluteSubpath = (absolutePath, note) => ({
|
|
314
|
+
kind: "subpath",
|
|
315
|
+
homeRelative: absolutePath,
|
|
316
|
+
absolutePath,
|
|
317
|
+
note
|
|
318
|
+
});
|
|
319
|
+
var absoluteLiteral = (absolutePath, note) => ({
|
|
320
|
+
kind: "literal",
|
|
321
|
+
homeRelative: absolutePath,
|
|
322
|
+
absolutePath,
|
|
323
|
+
note
|
|
324
|
+
});
|
|
325
|
+
var rejectedRuntimeDir = (absolutePath, note) => ({
|
|
326
|
+
kind: "subpath",
|
|
327
|
+
homeRelative: absolutePath,
|
|
328
|
+
absolutePath,
|
|
329
|
+
note,
|
|
330
|
+
rejected: true
|
|
331
|
+
});
|
|
332
|
+
var BUILD_SHARED_WRITE_PATHS = [
|
|
333
|
+
// `.build` covers the default config/data/state roots (~/.build/{config,data,state})
|
|
334
|
+
// as well as the runtime dirs that always lived there. The two XDG entries remain
|
|
335
|
+
// for installs that explicitly set XDG_STATE_HOME / XDG_DATA_HOME.
|
|
336
|
+
sub(BUILD_HOME_DIR_NAME, "Build home (config/data/state and runtime dirs)"),
|
|
337
|
+
sub(".local/state/build", "Build XDG state (legacy/explicit XDG_STATE_HOME)"),
|
|
338
|
+
sub(".local/share/build", "Build XDG data (legacy/explicit XDG_DATA_HOME)")
|
|
339
|
+
];
|
|
340
|
+
function getKnownSandboxProviderIds() {
|
|
341
|
+
return Object.keys(PROVIDER_MANIFESTS).sort();
|
|
342
|
+
}
|
|
343
|
+
function getProviderFilesystemManifest(providerId) {
|
|
344
|
+
if (!providerId) return void 0;
|
|
345
|
+
return PROVIDER_MANIFESTS[providerId.toLowerCase()];
|
|
346
|
+
}
|
|
347
|
+
function getRequiredWritePathsForProvider(providerId, options = {}) {
|
|
348
|
+
const manifest = getProviderFilesystemManifest(providerId);
|
|
349
|
+
const providerPaths = resolveRuntimeProviderWritePaths(providerId, manifest, options.env);
|
|
350
|
+
return [
|
|
351
|
+
...providerPaths,
|
|
352
|
+
...options.includeSharedPaths === false ? [] : resolveRuntimeSharedWritePaths(options.env)
|
|
353
|
+
];
|
|
354
|
+
}
|
|
355
|
+
function getProviderAuthorityWriteDenyPathSpecs(providerId, options = {}) {
|
|
356
|
+
return collectAuthorityPathSpecs(providerId, options, "deny");
|
|
357
|
+
}
|
|
358
|
+
function getProviderAuthorityWriteReallowPathSpecs(providerId, options = {}) {
|
|
359
|
+
return collectAuthorityPathSpecs(providerId, options, "reallow");
|
|
360
|
+
}
|
|
361
|
+
var MAX_AUTHORITY_REGISTRY_BYTES = 64 * 1024;
|
|
362
|
+
var MAX_AUTHORITY_REGISTRY_ENTRIES = 256;
|
|
363
|
+
function readAuthorityRegistryTargets(registryPath, home) {
|
|
364
|
+
let text;
|
|
365
|
+
try {
|
|
366
|
+
const stat = fs.lstatSync(registryPath);
|
|
367
|
+
if (!stat.isFile() || stat.size > MAX_AUTHORITY_REGISTRY_BYTES) return [];
|
|
368
|
+
text = fs.readFileSync(registryPath, "utf8");
|
|
369
|
+
} catch {
|
|
370
|
+
return [];
|
|
371
|
+
}
|
|
372
|
+
if (text.includes("\0")) return [];
|
|
373
|
+
const resolvedHome = home ? path.resolve(home) : void 0;
|
|
374
|
+
const targets = /* @__PURE__ */ new Set();
|
|
375
|
+
for (const rawLine of text.split(/\r?\n/).slice(0, MAX_AUTHORITY_REGISTRY_ENTRIES)) {
|
|
376
|
+
const line = rawLine.trim();
|
|
377
|
+
if (!line || line.startsWith("#") || !path.isAbsolute(line)) continue;
|
|
378
|
+
const lexical = path.resolve(line);
|
|
379
|
+
const real = resolveExistingPathPrefix(lexical);
|
|
380
|
+
const candidates = real ? [lexical, real] : [lexical];
|
|
381
|
+
for (const candidate of candidates) {
|
|
382
|
+
const containsHome = resolvedHome ? isPathWithin(resolvedHome, candidate) : false;
|
|
383
|
+
if (candidate === path.parse(candidate).root || containsHome) continue;
|
|
384
|
+
targets.add(candidate);
|
|
385
|
+
}
|
|
386
|
+
}
|
|
387
|
+
return [...targets];
|
|
388
|
+
}
|
|
389
|
+
function collectAuthorityPathSpecs(providerId, options, mode) {
|
|
390
|
+
const manifests = providerId ? [getProviderFilesystemManifest(providerId)].filter(
|
|
391
|
+
(manifest) => !!manifest
|
|
392
|
+
) : Object.values(PROVIDER_MANIFESTS);
|
|
393
|
+
const seen = /* @__PURE__ */ new Set();
|
|
394
|
+
const results = [];
|
|
395
|
+
for (const manifest of manifests) {
|
|
396
|
+
const entries = mode === "deny" ? manifest.persistentAuthorityWriteDenyPaths ?? [] : manifest.persistentAuthorityWriteReallowPaths ?? [];
|
|
397
|
+
const registry = mode === "deny" ? manifest.authorityPathRegistry : void 0;
|
|
398
|
+
if (!entries.length && !registry) continue;
|
|
399
|
+
const runtimeRoots = resolveRuntimeProviderWritePaths(
|
|
400
|
+
manifest.providerId,
|
|
401
|
+
manifest,
|
|
402
|
+
options.env
|
|
403
|
+
);
|
|
404
|
+
const runtimeRootPaths = new Set(
|
|
405
|
+
runtimeRoots.flatMap((spec) => isRuntimeOverride(spec) ? [spec.absolutePath] : [])
|
|
406
|
+
);
|
|
407
|
+
const stateRoot = manifest.authorityStateRoot && (!providerId || !runtimeRoots.some(isRuntimeOverride)) ? [sub(manifest.authorityStateRoot)] : [];
|
|
408
|
+
const roots = [
|
|
409
|
+
...providerId ? runtimeRoots : [...manifest.requiredWritePaths, ...runtimeRoots],
|
|
410
|
+
...stateRoot
|
|
411
|
+
];
|
|
412
|
+
for (const rootSpec of roots) {
|
|
413
|
+
if (rootSpec.rejected || rootSpec.kind !== "subpath") continue;
|
|
414
|
+
if (rootSpec.authorityDenyExempt) continue;
|
|
415
|
+
const isOpencode = manifest.providerId === "opencode";
|
|
416
|
+
const isOpencodeRuntimeRoot = rootSpec.note?.includes("OpenCode XDG_") === true;
|
|
417
|
+
if (isOpencodeRuntimeRoot && !rootSpec.note?.includes("XDG_CONFIG_HOME")) continue;
|
|
418
|
+
const root = resolveWritePathSpec(rootSpec, options.env?.HOME);
|
|
419
|
+
if (!root) continue;
|
|
420
|
+
const isRuntimeRoot = isRuntimeOverride(rootSpec) || runtimeRootPaths.has(root);
|
|
421
|
+
const push = (kind, absolutePath) => {
|
|
422
|
+
const key = `${kind}:${absolutePath}`;
|
|
423
|
+
if (seen.has(key)) return;
|
|
424
|
+
seen.add(key);
|
|
425
|
+
results.push({
|
|
426
|
+
kind,
|
|
427
|
+
homeRelative: absolutePath,
|
|
428
|
+
absolutePath,
|
|
429
|
+
note: `${manifest.providerId} persistent authority surface`
|
|
430
|
+
});
|
|
431
|
+
};
|
|
432
|
+
for (const entry of entries) {
|
|
433
|
+
if (entry.staticRootOnly && isRuntimeRoot) continue;
|
|
434
|
+
const relativePath = isOpencode && !isOpencodeRuntimeRoot ? entry.relativePath.replace(/^opencode\//, "") : entry.relativePath;
|
|
435
|
+
push(entry.kind, path.join(root, rootSpec.authorityPathPrefix ?? "", relativePath));
|
|
436
|
+
}
|
|
437
|
+
if (registry) {
|
|
438
|
+
const registryPath = path.join(root, rootSpec.authorityPathPrefix ?? "", registry);
|
|
439
|
+
for (const target of readAuthorityRegistryTargets(registryPath, options.env?.HOME)) {
|
|
440
|
+
push("subpath", target);
|
|
441
|
+
}
|
|
442
|
+
}
|
|
443
|
+
}
|
|
444
|
+
}
|
|
445
|
+
return results;
|
|
446
|
+
}
|
|
447
|
+
function getProviderAuthorityRoots(providerId, options = {}) {
|
|
448
|
+
const manifests = providerId ? [getProviderFilesystemManifest(providerId)].filter(
|
|
449
|
+
(manifest) => !!manifest
|
|
450
|
+
) : Object.values(PROVIDER_MANIFESTS);
|
|
451
|
+
const roots = /* @__PURE__ */ new Set();
|
|
452
|
+
for (const manifest of manifests) {
|
|
453
|
+
if (!manifest.protectAuthorityRoot) continue;
|
|
454
|
+
const runtimeRoots = resolveRuntimeProviderWritePaths(
|
|
455
|
+
manifest.providerId,
|
|
456
|
+
manifest,
|
|
457
|
+
options.env
|
|
458
|
+
);
|
|
459
|
+
for (const spec of providerId ? runtimeRoots : [...manifest.requiredWritePaths, ...runtimeRoots]) {
|
|
460
|
+
if (spec.rejected || spec.kind !== "subpath" || spec.authorityDenyExempt) continue;
|
|
461
|
+
const root = resolveWritePathSpec(spec, options.env?.HOME);
|
|
462
|
+
if (root) roots.add(path.join(root, spec.authorityPathPrefix ?? ""));
|
|
463
|
+
}
|
|
464
|
+
}
|
|
465
|
+
return [...roots];
|
|
466
|
+
}
|
|
467
|
+
function isPathWithin(candidate, parent) {
|
|
468
|
+
const relative = path.relative(parent, candidate);
|
|
469
|
+
return relative === "" || !!relative && !relative.startsWith("..") && !path.isAbsolute(relative);
|
|
470
|
+
}
|
|
471
|
+
function allowedRuntimeConfigRoots(env = process.env) {
|
|
472
|
+
const roots = /* @__PURE__ */ new Set();
|
|
473
|
+
const home = env?.HOME ?? process.env.HOME ?? os.homedir();
|
|
474
|
+
if (home) {
|
|
475
|
+
const resolvedHome = path.resolve(home);
|
|
476
|
+
const realHome = resolveExistingPathPrefix(resolvedHome);
|
|
477
|
+
const addHomeRoot = (root) => {
|
|
478
|
+
const real = resolveExistingPathPrefix(root);
|
|
479
|
+
if (!real || !realHome) return;
|
|
480
|
+
if (real === path.parse(real).root || isPathWithin(realHome, real)) return;
|
|
481
|
+
roots.add(root);
|
|
482
|
+
};
|
|
483
|
+
addHomeRoot(path.join(resolvedHome, ".config", "build"));
|
|
484
|
+
addHomeRoot(path.join(resolvedHome, ".build"));
|
|
485
|
+
addHomeRoot(path.join(resolvedHome, ".local", "share", "build"));
|
|
486
|
+
addHomeRoot(path.join(resolvedHome, ".local", "state", "build"));
|
|
487
|
+
addHomeRoot(path.join(resolvedHome, ".claude"));
|
|
488
|
+
addHomeRoot(path.join(resolvedHome, ".codex"));
|
|
489
|
+
addHomeRoot(path.join(resolvedHome, ".grok"));
|
|
490
|
+
addHomeRoot(path.join(resolvedHome, ".pi"));
|
|
491
|
+
addHomeRoot(path.join(resolvedHome, ".cursor"));
|
|
492
|
+
}
|
|
493
|
+
const containedRuntimeRoot = getContainedHomeSiblingRuntimeRoot(env);
|
|
494
|
+
if (containedRuntimeRoot) {
|
|
495
|
+
roots.add(containedRuntimeRoot);
|
|
496
|
+
}
|
|
497
|
+
for (const leaf of ["state", "data"]) {
|
|
498
|
+
const buildHomeLeaf = resolveTrustedBuildHomeLeaf(env, leaf);
|
|
499
|
+
if (buildHomeLeaf) roots.add(buildHomeLeaf);
|
|
500
|
+
}
|
|
501
|
+
roots.add(path.join(path.resolve(process.cwd()), ".build-project"));
|
|
502
|
+
for (const tmpRoot of [
|
|
503
|
+
os.tmpdir(),
|
|
504
|
+
"/tmp",
|
|
505
|
+
"/private/tmp",
|
|
506
|
+
"/var/folders",
|
|
507
|
+
"/private/var/folders"
|
|
508
|
+
]) {
|
|
509
|
+
if (tmpRoot) roots.add(path.resolve(tmpRoot));
|
|
510
|
+
}
|
|
511
|
+
return [...roots];
|
|
512
|
+
}
|
|
513
|
+
function resolveTrustedBuildHomeLeaf(env, leaf) {
|
|
514
|
+
const rawHome = expandLeadingTilde(env?.BUILD_HOME);
|
|
515
|
+
if (!rawHome) return void 0;
|
|
516
|
+
const home = env?.HOME ?? process.env.HOME ?? os.homedir();
|
|
517
|
+
const resolvedHome = resolveTrustedBuildHome(path.resolve(rawHome), env, home);
|
|
518
|
+
if (!resolvedHome) return void 0;
|
|
519
|
+
const resolvedLeaf = resolveExistingPathPrefix(path.join(resolvedHome, leaf));
|
|
520
|
+
return resolvedLeaf && isPathWithin(resolvedLeaf, resolvedHome) ? resolvedLeaf : void 0;
|
|
521
|
+
}
|
|
522
|
+
function withResolvedTarget(lexical) {
|
|
523
|
+
const real = resolveExistingPathPrefix(lexical);
|
|
524
|
+
return real && real !== lexical ? [lexical, real] : [lexical];
|
|
525
|
+
}
|
|
526
|
+
function resolveExistingPathPrefix(candidate) {
|
|
527
|
+
const segments = [];
|
|
528
|
+
let current = candidate;
|
|
529
|
+
while (!fs.existsSync(current)) {
|
|
530
|
+
const parent = path.dirname(current);
|
|
531
|
+
if (parent === current) {
|
|
532
|
+
return path.resolve(candidate);
|
|
533
|
+
}
|
|
534
|
+
segments.unshift(path.basename(current));
|
|
535
|
+
current = parent;
|
|
536
|
+
}
|
|
537
|
+
try {
|
|
538
|
+
const realPrefix = fs.realpathSync(current);
|
|
539
|
+
return path.join(realPrefix, ...segments);
|
|
540
|
+
} catch {
|
|
541
|
+
return void 0;
|
|
542
|
+
}
|
|
543
|
+
}
|
|
544
|
+
function expandLeadingTilde(rawValue) {
|
|
545
|
+
if (rawValue === void 0) return void 0;
|
|
546
|
+
const trimmed = rawValue.trim();
|
|
547
|
+
if (!trimmed) return trimmed;
|
|
548
|
+
if (trimmed !== "~" && !trimmed.startsWith("~/")) return trimmed;
|
|
549
|
+
const home = process.env.HOME ?? os.homedir();
|
|
550
|
+
if (!home) return trimmed;
|
|
551
|
+
return trimmed === "~" ? home : path.join(home, trimmed.slice(2));
|
|
552
|
+
}
|
|
553
|
+
function resolveAllowedRuntimeConfigDir(rawValue, env) {
|
|
554
|
+
const trimmed = rawValue?.trim();
|
|
555
|
+
if (!trimmed) return void 0;
|
|
556
|
+
const resolved = resolveExistingPathPrefix(path.resolve(trimmed));
|
|
557
|
+
if (!resolved) return void 0;
|
|
558
|
+
return isAllowedRuntimeWritePath(resolved, env) ? resolved : void 0;
|
|
559
|
+
}
|
|
560
|
+
function isAllowedRuntimeWritePath(absolutePath, env = process.env) {
|
|
561
|
+
if (!absolutePath || !path.isAbsolute(absolutePath)) return false;
|
|
562
|
+
const resolved = resolveExistingPathPrefix(path.resolve(absolutePath));
|
|
563
|
+
if (!resolved) return false;
|
|
564
|
+
return allowedRuntimeConfigRoots(env).some((root) => {
|
|
565
|
+
const resolvedRoot = resolveExistingPathPrefix(root);
|
|
566
|
+
return resolvedRoot ? isPathWithin(resolved, resolvedRoot) : false;
|
|
567
|
+
});
|
|
568
|
+
}
|
|
569
|
+
function withCanonicalStateTargets(specs, env) {
|
|
570
|
+
const home = env?.HOME ?? process.env.HOME ?? os.homedir();
|
|
571
|
+
if (!home) return specs;
|
|
572
|
+
let realHome;
|
|
573
|
+
try {
|
|
574
|
+
realHome = fs.realpathSync(home);
|
|
575
|
+
} catch {
|
|
576
|
+
return specs;
|
|
577
|
+
}
|
|
578
|
+
const result = [];
|
|
579
|
+
for (const spec of specs) {
|
|
580
|
+
result.push(spec);
|
|
581
|
+
if (spec.kind === "regex" || spec.rejected || spec.absolutePath) continue;
|
|
582
|
+
let real;
|
|
583
|
+
try {
|
|
584
|
+
real = fs.realpathSync(path.join(home, spec.homeRelative));
|
|
585
|
+
} catch {
|
|
586
|
+
continue;
|
|
587
|
+
}
|
|
588
|
+
if (real === path.join(realHome, spec.homeRelative)) continue;
|
|
589
|
+
if (real === path.parse(real).root || isPathWithin(realHome, real)) continue;
|
|
590
|
+
result.push({
|
|
591
|
+
...spec,
|
|
592
|
+
homeRelative: real,
|
|
593
|
+
absolutePath: real,
|
|
594
|
+
note: `${spec.note ?? spec.homeRelative} (symlink target)`,
|
|
595
|
+
staticAlias: true
|
|
596
|
+
});
|
|
597
|
+
}
|
|
598
|
+
return result;
|
|
599
|
+
}
|
|
600
|
+
function resolveRuntimeProviderWritePaths(providerId, manifest, env) {
|
|
601
|
+
return withCanonicalStateTargets(
|
|
602
|
+
resolveRuntimeProviderWritePathsUncanonical(providerId, manifest, env),
|
|
603
|
+
env
|
|
604
|
+
);
|
|
605
|
+
}
|
|
606
|
+
function resolveRuntimeProviderWritePathsUncanonical(providerId, manifest, env) {
|
|
607
|
+
const normalized = providerId?.toLowerCase();
|
|
608
|
+
const basePaths = manifest?.requiredWritePaths ?? [];
|
|
609
|
+
if (normalized === "claude") {
|
|
610
|
+
const configDir = resolveAllowedRuntimeConfigDir(env?.CLAUDE_CONFIG_DIR, env);
|
|
611
|
+
if (configDir) {
|
|
612
|
+
return [absoluteSubpath(configDir, "Claude CLI config dir (CLAUDE_CONFIG_DIR)")];
|
|
613
|
+
}
|
|
614
|
+
return basePaths;
|
|
615
|
+
}
|
|
616
|
+
if (normalized === "cursor") {
|
|
617
|
+
const configDir = resolveAllowedRuntimeConfigDir(
|
|
618
|
+
env?.CURSOR_CONFIG_DIR ?? env?.BUILD_CURSOR_CONFIG_DIR,
|
|
619
|
+
env
|
|
620
|
+
);
|
|
621
|
+
if (configDir) {
|
|
622
|
+
return [
|
|
623
|
+
absoluteSubpath(configDir, "Cursor CLI config dir (CURSOR_CONFIG_DIR)"),
|
|
624
|
+
CURSOR_KEYCHAIN_WRITE
|
|
625
|
+
];
|
|
626
|
+
}
|
|
627
|
+
return basePaths;
|
|
628
|
+
}
|
|
629
|
+
if (normalized === "codex") {
|
|
630
|
+
const rawCodexHome = expandLeadingTilde(env?.CODEX_HOME);
|
|
631
|
+
if (rawCodexHome) {
|
|
632
|
+
const configDir = resolveAllowedRuntimeConfigDir(rawCodexHome, env);
|
|
633
|
+
return [
|
|
634
|
+
configDir ? absoluteSubpath(configDir, "Codex CLI state (CODEX_HOME)") : rejectedRuntimeDir(
|
|
635
|
+
path.resolve(rawCodexHome),
|
|
636
|
+
"Codex CLI state (CODEX_HOME, rejected: outside allowed roots)"
|
|
637
|
+
)
|
|
638
|
+
];
|
|
639
|
+
}
|
|
640
|
+
return basePaths;
|
|
641
|
+
}
|
|
642
|
+
if (normalized === "grok") {
|
|
643
|
+
const rawGrokHome = expandLeadingTilde(env?.GROK_HOME);
|
|
644
|
+
const home = env?.HOME ?? process.env.HOME ?? os.homedir();
|
|
645
|
+
if (rawGrokHome && path.resolve(rawGrokHome) !== path.join(path.resolve(home), ".grok")) {
|
|
646
|
+
const configDir = resolveAllowedRuntimeConfigDir(rawGrokHome, env);
|
|
647
|
+
return [
|
|
648
|
+
configDir ? absoluteSubpath(configDir, "Grok CLI state (GROK_HOME)") : rejectedRuntimeDir(
|
|
649
|
+
path.resolve(rawGrokHome),
|
|
650
|
+
"Grok CLI state (GROK_HOME, rejected: outside allowed roots)"
|
|
651
|
+
)
|
|
652
|
+
];
|
|
653
|
+
}
|
|
654
|
+
return basePaths;
|
|
655
|
+
}
|
|
656
|
+
if (normalized === "opencode") {
|
|
657
|
+
const xdgDirs = [
|
|
658
|
+
{ value: env?.XDG_DATA_HOME, note: "OpenCode XDG_DATA_HOME (isolated)" },
|
|
659
|
+
{
|
|
660
|
+
value: env?.XDG_CONFIG_HOME,
|
|
661
|
+
note: "OpenCode XDG_CONFIG_HOME (isolated)"
|
|
662
|
+
},
|
|
663
|
+
{
|
|
664
|
+
value: env?.XDG_STATE_HOME,
|
|
665
|
+
note: "OpenCode XDG_STATE_HOME (isolated)"
|
|
666
|
+
},
|
|
667
|
+
{
|
|
668
|
+
value: env?.XDG_CACHE_HOME,
|
|
669
|
+
note: "OpenCode XDG_CACHE_HOME (isolated)"
|
|
670
|
+
}
|
|
671
|
+
];
|
|
672
|
+
const anyPresent = xdgDirs.some((d) => d.value?.trim());
|
|
673
|
+
if (!anyPresent) {
|
|
674
|
+
return basePaths;
|
|
675
|
+
}
|
|
676
|
+
const resolvedSpecs = [];
|
|
677
|
+
for (const { value, note } of xdgDirs) {
|
|
678
|
+
const trimmed = value?.trim();
|
|
679
|
+
if (!trimmed) continue;
|
|
680
|
+
const resolved = resolveAllowedRuntimeConfigDir(trimmed, env);
|
|
681
|
+
resolvedSpecs.push(
|
|
682
|
+
resolved ? absoluteSubpath(resolved, note) : rejectedRuntimeDir(path.resolve(trimmed), `${note} (rejected: outside allowed roots)`)
|
|
683
|
+
);
|
|
684
|
+
}
|
|
685
|
+
return resolvedSpecs.length > 0 ? resolvedSpecs : basePaths;
|
|
686
|
+
}
|
|
687
|
+
if (normalized === "pi") {
|
|
688
|
+
const rawAgentDir = expandLeadingTilde(env?.PI_CODING_AGENT_DIR);
|
|
689
|
+
if (rawAgentDir) {
|
|
690
|
+
const configDir = resolveAllowedRuntimeConfigDir(rawAgentDir, env);
|
|
691
|
+
return [
|
|
692
|
+
configDir ? absoluteSubpath(configDir, "Pi agent dir (PI_CODING_AGENT_DIR)") : rejectedRuntimeDir(
|
|
693
|
+
path.resolve(rawAgentDir),
|
|
694
|
+
"Pi agent dir (PI_CODING_AGENT_DIR, rejected: outside allowed roots)"
|
|
695
|
+
)
|
|
696
|
+
];
|
|
697
|
+
}
|
|
698
|
+
return basePaths;
|
|
699
|
+
}
|
|
700
|
+
return basePaths;
|
|
701
|
+
}
|
|
702
|
+
function resolveRuntimeBuildStatePath(env) {
|
|
703
|
+
const buildHome = expandLeadingTilde(env.BUILD_HOME);
|
|
704
|
+
if (buildHome) {
|
|
705
|
+
const statePath = path.join(buildHome, "state");
|
|
706
|
+
const resolved = resolveAllowedRuntimeConfigDir(statePath, env);
|
|
707
|
+
return resolved ? absoluteSubpath(resolved, "Build home state dir (BUILD_HOME/state)") : rejectedRuntimeDir(
|
|
708
|
+
path.resolve(statePath),
|
|
709
|
+
"Build home state dir (BUILD_HOME/state, rejected: outside allowed roots)"
|
|
710
|
+
);
|
|
711
|
+
}
|
|
712
|
+
const xdgStateHome = env.XDG_STATE_HOME?.trim();
|
|
713
|
+
if (xdgStateHome) {
|
|
714
|
+
const resolved = resolveAllowedRuntimeConfigDir(path.join(xdgStateHome, "build"), env);
|
|
715
|
+
if (resolved) {
|
|
716
|
+
return absoluteSubpath(resolved, "Build XDG state (XDG_STATE_HOME)");
|
|
717
|
+
}
|
|
718
|
+
}
|
|
719
|
+
return void 0;
|
|
720
|
+
}
|
|
721
|
+
function resolveRuntimeSharedWritePaths(env) {
|
|
722
|
+
if (!env) return BUILD_SHARED_WRITE_PATHS;
|
|
723
|
+
const stateDir = resolveRuntimeBuildStatePath(env);
|
|
724
|
+
const dataDir = resolveRuntimeBuildDataPath(env);
|
|
725
|
+
const configDir = resolveAllowedRuntimeConfigDir(env.BUILD_CONFIG_DIR, env);
|
|
726
|
+
if (!stateDir && !dataDir && !configDir) return BUILD_SHARED_WRITE_PATHS;
|
|
727
|
+
return [
|
|
728
|
+
stateDir ?? sub(BUILD_HOME_DIR_NAME, "Build home state (default ~/.build/state)"),
|
|
729
|
+
dataDir ?? sub(BUILD_HOME_DIR_NAME, "Build home data (default ~/.build/data)"),
|
|
730
|
+
configDir ? absoluteSubpath(configDir, "Build config dir (BUILD_CONFIG_DIR)") : sub(BUILD_HOME_DIR_NAME, "Build home config and runtime dirs")
|
|
731
|
+
];
|
|
732
|
+
}
|
|
733
|
+
function getBuildAuthorityWriteDenyPathSpecs(env = process.env) {
|
|
734
|
+
const specs = [
|
|
735
|
+
sub(`${BUILD_HOME_DIR_NAME}/config`, "Build executable-selection config (default)")
|
|
736
|
+
];
|
|
737
|
+
const explicitConfigDir = env.BUILD_CONFIG_DIR?.trim();
|
|
738
|
+
if (explicitConfigDir) {
|
|
739
|
+
const resolved = resolveAllowedRuntimeConfigDir(explicitConfigDir, env);
|
|
740
|
+
if (resolved) specs.push(absoluteSubpath(resolved, "Build executable-selection config"));
|
|
741
|
+
}
|
|
742
|
+
const buildHome = expandLeadingTilde(env.BUILD_HOME);
|
|
743
|
+
if (buildHome) {
|
|
744
|
+
const lexical = path.resolve(buildHome, "config");
|
|
745
|
+
specs.push(absoluteSubpath(lexical, "Build executable-selection config"));
|
|
746
|
+
const real = resolveExistingPathPrefix(lexical);
|
|
747
|
+
if (real && real !== lexical) {
|
|
748
|
+
specs.push(absoluteSubpath(real, "Build executable-selection config (resolved)"));
|
|
749
|
+
}
|
|
750
|
+
}
|
|
751
|
+
const xdgConfigHome = env.XDG_CONFIG_HOME?.trim();
|
|
752
|
+
if (xdgConfigHome) {
|
|
753
|
+
const resolved = resolveAllowedRuntimeConfigDir(path.join(xdgConfigHome, "build"), env);
|
|
754
|
+
if (resolved) specs.push(absoluteSubpath(resolved, "Build executable-selection config"));
|
|
755
|
+
}
|
|
756
|
+
specs.push(...getHomeDotEnvWriteDenyPathSpecs(env));
|
|
757
|
+
return specs;
|
|
758
|
+
}
|
|
759
|
+
function getHomeDotEnvWriteDenyPathSpecs(env) {
|
|
760
|
+
const homes = /* @__PURE__ */ new Set();
|
|
761
|
+
for (const home of [env.HOME, process.env.HOME ?? os.homedir()]) {
|
|
762
|
+
if (home) homes.add(path.resolve(home));
|
|
763
|
+
}
|
|
764
|
+
const specs = [];
|
|
765
|
+
for (const home of homes) {
|
|
766
|
+
const lexical = path.join(home, ".build", ".env");
|
|
767
|
+
specs.push(absoluteLiteral(lexical, "Build home dotenv file"));
|
|
768
|
+
const real = resolveExistingPathPrefix(lexical);
|
|
769
|
+
if (real && real !== lexical) {
|
|
770
|
+
specs.push(absoluteLiteral(real, "Build home dotenv file (resolved)"));
|
|
771
|
+
}
|
|
772
|
+
}
|
|
773
|
+
return specs;
|
|
774
|
+
}
|
|
775
|
+
function resolveRuntimeBuildDataPath(env) {
|
|
776
|
+
const explicitDataDir = env.BUILD_DATA_DIR?.trim();
|
|
777
|
+
if (explicitDataDir) {
|
|
778
|
+
const resolved = resolveAllowedRuntimeConfigDir(explicitDataDir, env);
|
|
779
|
+
if (resolved) {
|
|
780
|
+
return absoluteSubpath(resolved, "Build data dir (BUILD_DATA_DIR)");
|
|
781
|
+
}
|
|
782
|
+
}
|
|
783
|
+
const buildHome = expandLeadingTilde(env.BUILD_HOME);
|
|
784
|
+
if (buildHome) {
|
|
785
|
+
const dataPath = path.join(buildHome, "data");
|
|
786
|
+
const resolved = resolveAllowedRuntimeConfigDir(dataPath, env);
|
|
787
|
+
return resolved ? absoluteSubpath(resolved, "Build home data dir (BUILD_HOME/data)") : rejectedRuntimeDir(
|
|
788
|
+
path.resolve(dataPath),
|
|
789
|
+
"Build home data dir (BUILD_HOME/data, rejected: outside allowed roots)"
|
|
790
|
+
);
|
|
791
|
+
}
|
|
792
|
+
const xdgDataHome = env.XDG_DATA_HOME?.trim();
|
|
793
|
+
if (xdgDataHome) {
|
|
794
|
+
const resolved = resolveAllowedRuntimeConfigDir(path.join(xdgDataHome, "build"), env);
|
|
795
|
+
if (resolved) {
|
|
796
|
+
return absoluteSubpath(resolved, "Build XDG data (XDG_DATA_HOME)");
|
|
797
|
+
}
|
|
798
|
+
}
|
|
799
|
+
return void 0;
|
|
800
|
+
}
|
|
801
|
+
function getAllProviderWritePathSpecs(options = {}) {
|
|
802
|
+
const seen = /* @__PURE__ */ new Set();
|
|
803
|
+
const result = [];
|
|
804
|
+
const pushUnique = (spec) => {
|
|
805
|
+
const key = `${spec.kind}:${spec.absolutePath ?? spec.homeRelative}`;
|
|
806
|
+
if (seen.has(key)) return;
|
|
807
|
+
seen.add(key);
|
|
808
|
+
result.push(spec);
|
|
809
|
+
};
|
|
810
|
+
for (const manifest of Object.values(PROVIDER_MANIFESTS)) {
|
|
811
|
+
for (const spec of withCanonicalStateTargets(manifest.requiredWritePaths, options.env)) {
|
|
812
|
+
pushUnique(spec);
|
|
813
|
+
}
|
|
814
|
+
}
|
|
815
|
+
const claudeRuntimeConfigDir = resolveAllowedRuntimeConfigDir(
|
|
816
|
+
options.env?.CLAUDE_CONFIG_DIR,
|
|
817
|
+
options.env
|
|
818
|
+
);
|
|
819
|
+
if (claudeRuntimeConfigDir) {
|
|
820
|
+
pushUnique(
|
|
821
|
+
absoluteSubpath(claudeRuntimeConfigDir, "Claude CLI config dir (CLAUDE_CONFIG_DIR)")
|
|
822
|
+
);
|
|
823
|
+
}
|
|
824
|
+
const cursorRuntimeConfigDir = resolveAllowedRuntimeConfigDir(
|
|
825
|
+
options.env?.CURSOR_CONFIG_DIR ?? options.env?.BUILD_CURSOR_CONFIG_DIR,
|
|
826
|
+
options.env
|
|
827
|
+
);
|
|
828
|
+
if (cursorRuntimeConfigDir) {
|
|
829
|
+
pushUnique(
|
|
830
|
+
absoluteSubpath(cursorRuntimeConfigDir, "Cursor CLI config dir (CURSOR_CONFIG_DIR)")
|
|
831
|
+
);
|
|
832
|
+
}
|
|
833
|
+
for (const spec of resolveRuntimeSharedWritePaths(options.env)) pushUnique(spec);
|
|
834
|
+
for (const spec of COMMON_TOOLCHAIN_WRITE_PATHS) pushUnique(spec);
|
|
835
|
+
return result;
|
|
836
|
+
}
|
|
837
|
+
function resolveWritePathSpec(spec, home = process.env.HOME ?? os.homedir()) {
|
|
838
|
+
if (spec.kind === "regex") return void 0;
|
|
839
|
+
if (spec.absolutePath) return spec.absolutePath;
|
|
840
|
+
return `${home}/${spec.homeRelative}`;
|
|
841
|
+
}
|
|
842
|
+
|
|
843
|
+
export {
|
|
844
|
+
getKnownSandboxProviderIds,
|
|
845
|
+
getRequiredWritePathsForProvider,
|
|
846
|
+
getProviderAuthorityWriteDenyPathSpecs,
|
|
847
|
+
getProviderAuthorityWriteReallowPathSpecs,
|
|
848
|
+
getProviderAuthorityRoots,
|
|
849
|
+
withResolvedTarget,
|
|
850
|
+
isAllowedRuntimeWritePath,
|
|
851
|
+
getBuildAuthorityWriteDenyPathSpecs,
|
|
852
|
+
getAllProviderWritePathSpecs,
|
|
853
|
+
resolveWritePathSpec
|
|
854
|
+
};
|
|
855
|
+
//# sourceMappingURL=chunk-DP7FKP6W.js.map
|