@unbrained/pm-cli 2026.6.30 → 2026.7.1
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/AGENTS.md +2 -0
- package/CHANGELOG.md +20 -0
- package/dist/cli/bootstrap-args.js +89 -79
- package/dist/cli/bootstrap-args.js.map +1 -1
- package/dist/cli/commands/calendar.js +63 -62
- package/dist/cli/commands/calendar.js.map +1 -1
- package/dist/cli/commands/create.js +483 -434
- package/dist/cli/commands/create.js.map +1 -1
- package/dist/cli/commands/extension/bundled-catalog.js +59 -46
- package/dist/cli/commands/extension/bundled-catalog.js.map +1 -1
- package/dist/cli/commands/extension/doctor.js +129 -78
- package/dist/cli/commands/extension/doctor.js.map +1 -1
- package/dist/cli/commands/extension/managed-state.js +101 -57
- package/dist/cli/commands/extension/managed-state.js.map +1 -1
- package/dist/cli/commands/extension/scaffold.d.ts +7 -0
- package/dist/cli/commands/extension/scaffold.js +214 -186
- package/dist/cli/commands/extension/scaffold.js.map +1 -1
- package/dist/cli/commands/extension.d.ts +6 -1
- package/dist/cli/commands/extension.js +1034 -902
- package/dist/cli/commands/extension.js.map +1 -1
- package/dist/cli/commands/list-filter-shared.js +55 -48
- package/dist/cli/commands/list-filter-shared.js.map +1 -1
- package/dist/cli/commands/search.js +94 -68
- package/dist/cli/commands/search.js.map +1 -1
- package/dist/cli/commands/test.js +108 -122
- package/dist/cli/commands/test.js.map +1 -1
- package/dist/cli/commands/update.js +27 -77
- package/dist/cli/commands/update.js.map +1 -1
- package/dist/cli/extension-command-options.js +48 -21
- package/dist/cli/extension-command-options.js.map +1 -1
- package/dist/cli/registration-helpers.js +117 -122
- package/dist/cli/registration-helpers.js.map +1 -1
- package/dist/cli-bundle/chunks/activity-AW6XVFH6.js +16 -0
- package/dist/cli-bundle/chunks/{activity-MVSEND6D.js → activity-DBLQVIP6.js} +9 -9
- package/dist/cli-bundle/chunks/{aggregate-MOC4TR2G.js → aggregate-JTEF4BP7.js} +9 -9
- package/dist/cli-bundle/chunks/{aggregate-XJHLZQ5X.js → aggregate-SDF7DUOD.js} +9 -9
- package/dist/cli-bundle/chunks/{append-LEDBAM3K.js → append-LOVPGVPT.js} +6 -6
- package/dist/cli-bundle/chunks/{append-KDHT4GHI.js → append-QCFJSDFL.js} +6 -6
- package/dist/cli-bundle/chunks/{chunk-FBZ5XAAF.js → chunk-22WKIL3H.js} +6 -6
- package/dist/cli-bundle/chunks/{chunk-EVWYAG46.js → chunk-2466X6E4.js} +6 -6
- package/dist/cli-bundle/chunks/{chunk-3JWQCLR5.js → chunk-27BXPBAY.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-WTRUDJ3R.js → chunk-2D4HATP2.js} +5 -5
- package/dist/cli-bundle/chunks/{chunk-DORJSBGJ.js → chunk-3J6JRJ3I.js} +127 -125
- package/dist/cli-bundle/chunks/chunk-3J6JRJ3I.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-LBH7UYKY.js → chunk-3K2M5OYU.js} +4 -4
- package/dist/cli-bundle/chunks/{chunk-KTMMTOIP.js → chunk-3S2KT7NG.js} +7 -7
- package/dist/cli-bundle/chunks/{chunk-FDEVKXC4.js → chunk-3VGN2UWE.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-K46GQ265.js → chunk-3XZCOZ5J.js} +107 -117
- package/dist/cli-bundle/chunks/chunk-3XZCOZ5J.js.map +1 -0
- package/dist/cli-bundle/chunks/chunk-4A3BJ675.js +799 -0
- package/dist/cli-bundle/chunks/chunk-4A3BJ675.js.map +1 -0
- package/dist/cli-bundle/chunks/chunk-4BU75MF4.js +87 -0
- package/dist/cli-bundle/chunks/chunk-4BU75MF4.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-KYDYQMNW.js → chunk-4DSGXSBL.js} +4 -4
- package/dist/cli-bundle/chunks/{chunk-7L6TXOOC.js → chunk-4DUVCVLZ.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-UB3V5WUI.js → chunk-4XOIEKSD.js} +351 -330
- package/dist/cli-bundle/chunks/chunk-4XOIEKSD.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-DJDXAU74.js → chunk-55SNVXRQ.js} +68 -69
- package/dist/cli-bundle/chunks/chunk-55SNVXRQ.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-ZIE6WXJ2.js → chunk-5CGRF3L5.js} +7 -7
- package/dist/cli-bundle/chunks/{chunk-7WDETKGP.js → chunk-5QFDBI4F.js} +1105 -965
- package/dist/cli-bundle/chunks/chunk-5QFDBI4F.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-IBU2LLWM.js → chunk-64HNBBFQ.js} +6 -6
- package/dist/cli-bundle/chunks/{chunk-T7ZMQI4J.js → chunk-6AQZPVHQ.js} +198 -189
- package/dist/cli-bundle/chunks/chunk-6AQZPVHQ.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-CY5IJMUM.js → chunk-7R4QEMZZ.js} +361 -322
- package/dist/cli-bundle/chunks/chunk-7R4QEMZZ.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-WFJZDUM7.js → chunk-A7FPBAQS.js} +4 -4
- package/dist/cli-bundle/chunks/{chunk-74PUWBGN.js → chunk-AVEE5EHK.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-KRASIL6M.js → chunk-AXIDKKAT.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-CHRNYKNI.js → chunk-BDTISOSD.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-ZFIEEDTJ.js → chunk-BHO33VBQ.js} +509 -363
- package/dist/cli-bundle/chunks/chunk-BHO33VBQ.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-RM6MHL6A.js → chunk-BZCEN4JA.js} +98 -74
- package/dist/cli-bundle/chunks/chunk-BZCEN4JA.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-RPRW26NG.js → chunk-CF7RL6FR.js} +7 -7
- package/dist/cli-bundle/chunks/{chunk-NIBP3I7A.js → chunk-CWFNTKQJ.js} +128 -126
- package/dist/cli-bundle/chunks/chunk-CWFNTKQJ.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-BN3CWK6G.js → chunk-DDPTYJIM.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-4YIMPANT.js → chunk-EJUDVUYZ.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-73PTKMAE.js → chunk-EVMTBV6V.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-6YRAMXRS.js → chunk-FFMQB7WR.js} +99 -75
- package/dist/cli-bundle/chunks/chunk-FFMQB7WR.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-E2Q2ULMR.js → chunk-G7I7DEZA.js} +4 -4
- package/dist/cli-bundle/chunks/{chunk-IDYCAK35.js → chunk-GJ326ZKX.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-JJ4SG243.js → chunk-HPPFYYOV.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-5IRVSKPS.js → chunk-HXTQJXWT.js} +150 -224
- package/dist/cli-bundle/chunks/chunk-HXTQJXWT.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-JIP67N2K.js → chunk-HYTGA6GI.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-7RIJGN4R.js → chunk-HZZEHPRG.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-4TXTVZL3.js → chunk-IJYK2T43.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-GF7EAR22.js → chunk-IPYBJWTE.js} +7 -7
- package/dist/cli-bundle/chunks/{chunk-AWN4PPH5.js → chunk-IZBR4NRW.js} +7 -7
- package/dist/cli-bundle/chunks/{chunk-IF4ERU6A.js → chunk-JLM7BHI7.js} +6 -6
- package/dist/cli-bundle/chunks/{chunk-DU66JUGT.js → chunk-JMP4E6D7.js} +106 -116
- package/dist/cli-bundle/chunks/chunk-JMP4E6D7.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-HUYYMTGW.js → chunk-JPECA746.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-KGQ3W65B.js → chunk-JSU5P7VS.js} +4 -4
- package/dist/cli-bundle/chunks/{chunk-HIBK6H4S.js → chunk-JWXRETDF.js} +69 -70
- package/dist/cli-bundle/chunks/chunk-JWXRETDF.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-Z5BM2FKQ.js → chunk-KNPEF7QG.js} +4 -4
- package/dist/cli-bundle/chunks/{chunk-DLDCPF5X.js → chunk-L5OEFZQG.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-DRPF274X.js → chunk-LB6TP6MC.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-YEDFE4DC.js → chunk-MAUKX7JC.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-6T5ZIWBS.js → chunk-MDPEOIGN.js} +150 -224
- package/dist/cli-bundle/chunks/chunk-MDPEOIGN.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-OB3RJV5F.js → chunk-N74UMG5H.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-ZEATCVAC.js → chunk-NFDPYAIP.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-OUQ5JEFM.js → chunk-NKZAN7BD.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-5ABGFWR4.js → chunk-NOLPZMSV.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-JZG5ADVE.js → chunk-NU2UEROZ.js} +1103 -963
- package/dist/cli-bundle/chunks/chunk-NU2UEROZ.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-A3UNLXNJ.js → chunk-NUHHPVVS.js} +36 -86
- package/dist/cli-bundle/chunks/chunk-NUHHPVVS.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-QE5UFCCO.js → chunk-NWMZWYYB.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-VMY7MZEM.js → chunk-OGXLACHC.js} +6 -6
- package/dist/cli-bundle/chunks/{chunk-IHXXUIXS.js → chunk-OTUHB4HS.js} +4 -4
- package/dist/cli-bundle/chunks/{chunk-V3KLX7U7.js → chunk-QCWF6IYD.js} +510 -364
- package/dist/cli-bundle/chunks/chunk-QCWF6IYD.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-UFKNF23C.js → chunk-RGEMWD6Q.js} +5 -5
- package/dist/cli-bundle/chunks/chunk-RH5ZBYFD.js +809 -0
- package/dist/cli-bundle/chunks/chunk-RH5ZBYFD.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-Z55WX4IQ.js → chunk-RLDHZHQS.js} +7 -7
- package/dist/cli-bundle/chunks/{chunk-NO6Y6FB2.js → chunk-RMMQ74TG.js} +5 -5
- package/dist/cli-bundle/chunks/{chunk-SNUK7H5J.js → chunk-RVUALSJF.js} +361 -322
- package/dist/cli-bundle/chunks/chunk-RVUALSJF.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-IZQOJR2B.js → chunk-SDR5J34Q.js} +198 -189
- package/dist/cli-bundle/chunks/chunk-SDR5J34Q.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-SJZTPVFT.js → chunk-SLMUGTK3.js} +4 -4
- package/dist/cli-bundle/chunks/{chunk-BOWQWXLI.js → chunk-TP5Q5ZD3.js} +5 -5
- package/dist/cli-bundle/chunks/{chunk-D5LYZVGB.js → chunk-UYUYDGIB.js} +4 -4
- package/dist/cli-bundle/chunks/{chunk-JVQ7UOYC.js → chunk-UZIWVBE6.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-JTRKME24.js → chunk-V3NOKJF2.js} +6 -6
- package/dist/cli-bundle/chunks/{chunk-5T6WPLRO.js → chunk-VARHOHYV.js} +350 -329
- package/dist/cli-bundle/chunks/chunk-VARHOHYV.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-F7G53BOA.js → chunk-VICZWYGZ.js} +4 -4
- package/dist/cli-bundle/chunks/chunk-VY3VQ22F.js +84 -0
- package/dist/cli-bundle/chunks/chunk-VY3VQ22F.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-TQ6E76BE.js → chunk-W4ULYO7Z.js} +6 -6
- package/dist/cli-bundle/chunks/{chunk-MLHX6DN5.js → chunk-WYDHYJPO.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-53ARXF2O.js → chunk-YITK2PJ6.js} +6 -6
- package/dist/cli-bundle/chunks/{chunk-VD3LKZFX.js → chunk-ZETXE4SE.js} +37 -87
- package/dist/cli-bundle/chunks/chunk-ZETXE4SE.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-D6USKAMA.js → chunk-ZRP4VG5U.js} +2 -2
- package/dist/cli-bundle/chunks/{claim-6NINZYB3.js → claim-EMQLYPRW.js} +8 -8
- package/dist/cli-bundle/chunks/{claim-HMCLSLUE.js → claim-T3GCKV7C.js} +8 -8
- package/dist/cli-bundle/chunks/close-E6ZZGCJY.js +14 -0
- package/dist/cli-bundle/chunks/{close-OP3LK7Z2.js → close-TQYAAFJP.js} +7 -7
- package/dist/cli-bundle/chunks/{close-many-BFMP6HHK.js → close-many-BG5QQIDQ.js} +15 -15
- package/dist/cli-bundle/chunks/{close-many-CXJBOWWY.js → close-many-LDRVEQY2.js} +15 -15
- package/dist/cli-bundle/chunks/{comments-MU2WMBUY.js → comments-QCKR2YY2.js} +8 -8
- package/dist/cli-bundle/chunks/{comments-ETHABIY6.js → comments-YUXJRZPQ.js} +8 -8
- package/dist/cli-bundle/chunks/{config-FIXJZEQK.js → config-DMSU64QO.js} +7 -7
- package/dist/cli-bundle/chunks/{config-X3ZVCUUG.js → config-QH2DICD6.js} +7 -7
- package/dist/cli-bundle/chunks/{context-XDI4DKKT.js → context-B6275WPX.js} +12 -12
- package/dist/cli-bundle/chunks/{context-7ZEZV3BV.js → context-OCZ3FJ4Z.js} +12 -12
- package/dist/cli-bundle/chunks/{contracts-SMOAN5NF.js → contracts-HN7ABKLP.js} +3 -3
- package/dist/cli-bundle/chunks/{contracts-KP4QAGVW.js → contracts-W4FZVVD6.js} +3 -3
- package/dist/cli-bundle/chunks/{copy-CWM6SBY6.js → copy-BTJOSKKT.js} +5 -5
- package/dist/cli-bundle/chunks/{copy-JJ3KOQW2.js → copy-DEM4DATS.js} +5 -5
- package/dist/cli-bundle/chunks/create-OH3BDGBB.js +28 -0
- package/dist/cli-bundle/chunks/{create-J5Q2ELZT.js → create-RLRJMRTM.js} +12 -12
- package/dist/cli-bundle/chunks/{delete-OOQS4KVD.js → delete-BHK7VB2Z.js} +5 -5
- package/dist/cli-bundle/chunks/{delete-2GZLQEUQ.js → delete-LSVHAB4Y.js} +5 -5
- package/dist/cli-bundle/chunks/{deps-ZVGGCRR6.js → deps-4UDFJRUA.js} +5 -5
- package/dist/cli-bundle/chunks/{deps-IF4IGL4R.js → deps-XHYXWEPT.js} +5 -5
- package/dist/cli-bundle/chunks/{docs-2TIFR62T.js → docs-26S44RXU.js} +7 -7
- package/dist/cli-bundle/chunks/{docs-NFTBCQQC.js → docs-GYZNVS26.js} +7 -7
- package/dist/cli-bundle/chunks/{eval-2F6EH4XN.js → eval-PGRVIJQU.js} +10 -10
- package/dist/cli-bundle/chunks/{eval-PFKXQR3B.js → eval-UYF3ZPVO.js} +10 -10
- package/dist/cli-bundle/chunks/{extension-GMVOIP4O.js → extension-CPSLJQVE.js} +11 -10
- package/dist/cli-bundle/chunks/{extension-3LRYX7SW.js → extension-CXJ6RELI.js} +11 -10
- package/dist/cli-bundle/chunks/{files-T5ODMETM.js → files-MBNICQFM.js} +7 -7
- package/dist/cli-bundle/chunks/{files-DF3HO6XK.js → files-NQHEXUZD.js} +7 -7
- package/dist/cli-bundle/chunks/{focus-DLXKK4AH.js → focus-DWYIG7GU.js} +6 -6
- package/dist/cli-bundle/chunks/{focus-MY5ARIEK.js → focus-XZW5423D.js} +6 -6
- package/dist/cli-bundle/chunks/{gc-FULIVYR4.js → gc-7GQYOS2G.js} +3 -3
- package/dist/cli-bundle/chunks/{gc-MDGRR2SU.js → gc-LPVMKJQJ.js} +3 -3
- package/dist/cli-bundle/chunks/{get-AWK324RS.js → get-A7MAOHCU.js} +9 -9
- package/dist/cli-bundle/chunks/{get-VYPIICPC.js → get-DSDEKJ3L.js} +9 -9
- package/dist/cli-bundle/chunks/{health-Q66C43GN.js → health-3IPFLKXB.js} +17 -16
- package/dist/cli-bundle/chunks/{health-Q66C43GN.js.map → health-3IPFLKXB.js.map} +1 -1
- package/dist/cli-bundle/chunks/{health-FBCVZGSX.js → health-GZXGBZ36.js} +15 -14
- package/dist/cli-bundle/chunks/{health-FBCVZGSX.js.map → health-GZXGBZ36.js.map} +1 -1
- package/dist/cli-bundle/chunks/{history-X4OSES6K.js → history-NERDJNUB.js} +8 -8
- package/dist/cli-bundle/chunks/history-WSZHY3PN.js +18 -0
- package/dist/cli-bundle/chunks/{history-compact-WLCQEKXS.js → history-compact-2WRZ2WK4.js} +10 -10
- package/dist/cli-bundle/chunks/{history-compact-2GHT32UX.js → history-compact-HR7BB4LR.js} +10 -10
- package/dist/cli-bundle/chunks/history-redact-MP6CH7U5.js +19 -0
- package/dist/cli-bundle/chunks/{history-redact-45YW65BK.js → history-redact-O3NBCNWC.js} +9 -9
- package/dist/cli-bundle/chunks/{history-repair-GABSDSVD.js → history-repair-LCMOS45X.js} +10 -10
- package/dist/cli-bundle/chunks/{history-repair-FY75IC26.js → history-repair-XA3LC4GA.js} +10 -10
- package/dist/cli-bundle/chunks/{init-KO7CGIRQ.js → init-64XDLQJB.js} +12 -11
- package/dist/cli-bundle/chunks/init-PAX32BJA.js +22 -0
- package/dist/cli-bundle/chunks/{learnings-3F7YLI45.js → learnings-JR6MA5TI.js} +8 -8
- package/dist/cli-bundle/chunks/{learnings-LHZT5BHW.js → learnings-LPKCSJX7.js} +8 -8
- package/dist/cli-bundle/chunks/{list-ROT7JF62.js → list-DNBJVO3E.js} +8 -8
- package/dist/cli-bundle/chunks/{list-Y6AU5BJS.js → list-G5Y65VF6.js} +8 -8
- package/dist/cli-bundle/chunks/{next-66BJB4N2.js → next-BCERKDUR.js} +13 -13
- package/dist/cli-bundle/chunks/{next-N5MWJTBY.js → next-FYTQF6HG.js} +13 -13
- package/dist/cli-bundle/chunks/{notes-FW6YFLND.js → notes-2BMU3VVQ.js} +8 -8
- package/dist/cli-bundle/chunks/{notes-EVJZ3VAB.js → notes-6KTGO2OJ.js} +8 -8
- package/dist/cli-bundle/chunks/{plan-DQ7G4EDC.js → plan-4WXEQCTN.js} +12 -12
- package/dist/cli-bundle/chunks/{plan-ZHKZ7JVF.js → plan-RKZHQVXR.js} +12 -12
- package/dist/cli-bundle/chunks/{profile-UPZGCDOG.js → profile-4OMM32CD.js} +8 -8
- package/dist/cli-bundle/chunks/{profile-CHAW6SEA.js → profile-QLER5ENE.js} +8 -8
- package/dist/cli-bundle/chunks/{register-list-query-Y2VRHPCL.js → register-list-query-7LV46VAU.js} +18 -18
- package/dist/cli-bundle/chunks/{register-list-query-KY6Z6WV7.js → register-list-query-SNG5PGA4.js} +18 -18
- package/dist/cli-bundle/chunks/{register-mutation-PCARIGZS.js → register-mutation-ENNDUAZG.js} +35 -35
- package/dist/cli-bundle/chunks/{register-mutation-N6AYSKPM.js → register-mutation-KK7PHYYU.js} +35 -35
- package/dist/cli-bundle/chunks/{register-operations-YAT6FUUB.js → register-operations-C6OWLDSH.js} +30 -30
- package/dist/cli-bundle/chunks/{register-operations-L6CYTOIH.js → register-operations-HZ6XERQG.js} +30 -30
- package/dist/cli-bundle/chunks/{register-setup-N7UGXYJC.js → register-setup-P67EMBDJ.js} +15 -15
- package/dist/cli-bundle/chunks/{register-setup-MPANILQF.js → register-setup-ZKJ53RS7.js} +15 -15
- package/dist/cli-bundle/chunks/{restore-DKMCLPI5.js → restore-4MHZFJ2E.js} +9 -9
- package/dist/cli-bundle/chunks/restore-YALDGTQR.js +17 -0
- package/dist/cli-bundle/chunks/{scheduling-shortcuts-3F4QUEDH.js → scheduling-shortcuts-LB6DOLRL.js} +12 -12
- package/dist/cli-bundle/chunks/{scheduling-shortcuts-BNZLQK36.js → scheduling-shortcuts-UTOYKLXQ.js} +12 -12
- package/dist/cli-bundle/chunks/{schema-OLT6LVKH.js → schema-73HR2OJW.js} +7 -7
- package/dist/cli-bundle/chunks/{schema-XJXKJQF5.js → schema-U6LJKSIR.js} +7 -7
- package/dist/cli-bundle/chunks/{search-CX5UMV4H.js → search-AXPXKZER.js} +10 -10
- package/dist/cli-bundle/chunks/{search-KP6H7COV.js → search-KILGT37L.js} +10 -10
- package/dist/cli-bundle/chunks/{stats-QZUG6MX5.js → stats-PSYVVTNZ.js} +6 -6
- package/dist/cli-bundle/chunks/{stats-7XW4OEMK.js → stats-W5KNVJWQ.js} +6 -6
- package/dist/cli-bundle/chunks/{telemetry-WTYFUPRL.js → telemetry-BZUF6H7G.js} +4 -4
- package/dist/cli-bundle/chunks/{telemetry-DIFPXCAT.js → telemetry-GAHHQTOS.js} +4 -4
- package/dist/cli-bundle/chunks/{test-QNDXZQCW.js → test-ACD52Z3S.js} +15 -14
- package/dist/cli-bundle/chunks/{test-HU2BS7EY.js → test-PWDIZ255.js} +15 -14
- package/dist/cli-bundle/chunks/{test-all-XLPI4USF.js → test-all-L2MDDUCA.js} +17 -16
- package/dist/cli-bundle/chunks/{test-all-XLPI4USF.js.map → test-all-L2MDDUCA.js.map} +1 -1
- package/dist/cli-bundle/chunks/{test-all-PZTBLLQ6.js → test-all-RBZ6DLU2.js} +15 -14
- package/dist/cli-bundle/chunks/{test-all-PZTBLLQ6.js.map → test-all-RBZ6DLU2.js.map} +1 -1
- package/dist/cli-bundle/chunks/{test-runs-LANLLPVO.js → test-runs-PLRAZEFW.js} +4 -4
- package/dist/cli-bundle/chunks/{test-runs-CA6K32RD.js → test-runs-UXIXPDKU.js} +4 -4
- package/dist/cli-bundle/chunks/update-AMRSOIWP.js +24 -0
- package/dist/cli-bundle/chunks/{update-DJKWLBWJ.js → update-KFX2SIAC.js} +15 -15
- package/dist/cli-bundle/chunks/{update-many-VW5DGF3S.js → update-many-RNSBX2TA.js} +23 -23
- package/dist/cli-bundle/chunks/{update-many-LU3SCNK5.js → update-many-Z5GJS5LC.js} +23 -23
- package/dist/cli-bundle/chunks/{upgrade-77FRUAXN.js → upgrade-BRL6KCOJ.js} +13 -12
- package/dist/cli-bundle/chunks/{upgrade-77FRUAXN.js.map → upgrade-BRL6KCOJ.js.map} +1 -1
- package/dist/cli-bundle/chunks/{upgrade-ICXY244R.js → upgrade-HAK6JG2O.js} +11 -10
- package/dist/cli-bundle/chunks/{upgrade-ICXY244R.js.map → upgrade-HAK6JG2O.js.map} +1 -1
- package/dist/cli-bundle/chunks/{validate-2G566PKQ.js → validate-MTUVL5VC.js} +20 -19
- package/dist/cli-bundle/chunks/{validate-2G566PKQ.js.map → validate-MTUVL5VC.js.map} +1 -1
- package/dist/cli-bundle/chunks/{validate-BDPVXHHH.js → validate-X5W76YJL.js} +22 -21
- package/dist/cli-bundle/chunks/{validate-BDPVXHHH.js.map → validate-X5W76YJL.js.map} +1 -1
- package/dist/cli-bundle/main.js +55 -702
- package/dist/cli-bundle/main.js.map +4 -4
- package/dist/core/extensions/activation-summary-markdown.js +23 -12
- package/dist/core/extensions/activation-summary-markdown.js.map +1 -1
- package/dist/core/extensions/extension-policy.d.ts +18 -3
- package/dist/core/extensions/extension-policy.js +116 -106
- package/dist/core/extensions/extension-policy.js.map +1 -1
- package/dist/core/extensions/loader.js +310 -232
- package/dist/core/extensions/loader.js.map +1 -1
- package/dist/core/item/item-format.js +523 -410
- package/dist/core/item/item-format.js.map +1 -1
- package/dist/mcp/server.js +387 -367
- package/dist/mcp/server.js.map +1 -1
- package/dist/sdk/cli-contracts/flag-contracts.js +111 -180
- package/dist/sdk/cli-contracts/flag-contracts.js.map +1 -1
- package/dist/sdk/cli-contracts/tool-schema.js +76 -45
- package/dist/sdk/cli-contracts/tool-schema.js.map +1 -1
- package/dist/sdk/compose.d.ts +4 -1
- package/dist/sdk/compose.js +181 -115
- package/dist/sdk/compose.js.map +1 -1
- package/docs/RELEASING.md +2 -3
- package/package.json +1 -1
- package/dist/cli-bundle/chunks/activity-EJBMXUBH.js +0 -16
- package/dist/cli-bundle/chunks/chunk-5IRVSKPS.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-5T6WPLRO.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-6T5ZIWBS.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-6YRAMXRS.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-7WDETKGP.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-A3UNLXNJ.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-C2KCIZKZ.js +0 -115
- package/dist/cli-bundle/chunks/chunk-C2KCIZKZ.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-CY5IJMUM.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-DJDXAU74.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-DORJSBGJ.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-DU66JUGT.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-F6VH3LFC.js +0 -118
- package/dist/cli-bundle/chunks/chunk-F6VH3LFC.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-HIBK6H4S.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-ISEKN64V.js +0 -35
- package/dist/cli-bundle/chunks/chunk-ISEKN64V.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-IZQOJR2B.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-JZG5ADVE.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-K46GQ265.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-NIBP3I7A.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-RM6MHL6A.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-SNUK7H5J.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-T7ZMQI4J.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-UB3V5WUI.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-V3KLX7U7.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-VD3LKZFX.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-W2VMLL5S.js +0 -32
- package/dist/cli-bundle/chunks/chunk-W2VMLL5S.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-ZFIEEDTJ.js.map +0 -7
- package/dist/cli-bundle/chunks/close-37KEHLYM.js +0 -14
- package/dist/cli-bundle/chunks/create-DFMNBKBS.js +0 -28
- package/dist/cli-bundle/chunks/history-5XUSLAJA.js +0 -18
- package/dist/cli-bundle/chunks/history-redact-BVHWDXPR.js +0 -19
- package/dist/cli-bundle/chunks/init-TRYJELH4.js +0 -21
- package/dist/cli-bundle/chunks/restore-IRAKSWIW.js +0 -17
- package/dist/cli-bundle/chunks/update-UXDLTEOZ.js +0 -24
- /package/dist/cli-bundle/chunks/{activity-EJBMXUBH.js.map → activity-AW6XVFH6.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{activity-MVSEND6D.js.map → activity-DBLQVIP6.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{aggregate-MOC4TR2G.js.map → aggregate-JTEF4BP7.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{aggregate-XJHLZQ5X.js.map → aggregate-SDF7DUOD.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{append-LEDBAM3K.js.map → append-LOVPGVPT.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{append-KDHT4GHI.js.map → append-QCFJSDFL.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-FBZ5XAAF.js.map → chunk-22WKIL3H.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-EVWYAG46.js.map → chunk-2466X6E4.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-3JWQCLR5.js.map → chunk-27BXPBAY.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-WTRUDJ3R.js.map → chunk-2D4HATP2.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-LBH7UYKY.js.map → chunk-3K2M5OYU.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-KTMMTOIP.js.map → chunk-3S2KT7NG.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-FDEVKXC4.js.map → chunk-3VGN2UWE.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-KYDYQMNW.js.map → chunk-4DSGXSBL.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-7L6TXOOC.js.map → chunk-4DUVCVLZ.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-ZIE6WXJ2.js.map → chunk-5CGRF3L5.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-IBU2LLWM.js.map → chunk-64HNBBFQ.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-WFJZDUM7.js.map → chunk-A7FPBAQS.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-74PUWBGN.js.map → chunk-AVEE5EHK.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-KRASIL6M.js.map → chunk-AXIDKKAT.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-CHRNYKNI.js.map → chunk-BDTISOSD.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-RPRW26NG.js.map → chunk-CF7RL6FR.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-BN3CWK6G.js.map → chunk-DDPTYJIM.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-4YIMPANT.js.map → chunk-EJUDVUYZ.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-73PTKMAE.js.map → chunk-EVMTBV6V.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-E2Q2ULMR.js.map → chunk-G7I7DEZA.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-IDYCAK35.js.map → chunk-GJ326ZKX.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-JJ4SG243.js.map → chunk-HPPFYYOV.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-JIP67N2K.js.map → chunk-HYTGA6GI.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-7RIJGN4R.js.map → chunk-HZZEHPRG.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-4TXTVZL3.js.map → chunk-IJYK2T43.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-GF7EAR22.js.map → chunk-IPYBJWTE.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-AWN4PPH5.js.map → chunk-IZBR4NRW.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-IF4ERU6A.js.map → chunk-JLM7BHI7.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-HUYYMTGW.js.map → chunk-JPECA746.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-KGQ3W65B.js.map → chunk-JSU5P7VS.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-Z5BM2FKQ.js.map → chunk-KNPEF7QG.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-DLDCPF5X.js.map → chunk-L5OEFZQG.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-DRPF274X.js.map → chunk-LB6TP6MC.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-YEDFE4DC.js.map → chunk-MAUKX7JC.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-OB3RJV5F.js.map → chunk-N74UMG5H.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-ZEATCVAC.js.map → chunk-NFDPYAIP.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-OUQ5JEFM.js.map → chunk-NKZAN7BD.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-5ABGFWR4.js.map → chunk-NOLPZMSV.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-QE5UFCCO.js.map → chunk-NWMZWYYB.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-VMY7MZEM.js.map → chunk-OGXLACHC.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-IHXXUIXS.js.map → chunk-OTUHB4HS.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-UFKNF23C.js.map → chunk-RGEMWD6Q.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-Z55WX4IQ.js.map → chunk-RLDHZHQS.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-NO6Y6FB2.js.map → chunk-RMMQ74TG.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-SJZTPVFT.js.map → chunk-SLMUGTK3.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-BOWQWXLI.js.map → chunk-TP5Q5ZD3.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-D5LYZVGB.js.map → chunk-UYUYDGIB.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-JVQ7UOYC.js.map → chunk-UZIWVBE6.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-JTRKME24.js.map → chunk-V3NOKJF2.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-F7G53BOA.js.map → chunk-VICZWYGZ.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-TQ6E76BE.js.map → chunk-W4ULYO7Z.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-MLHX6DN5.js.map → chunk-WYDHYJPO.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-53ARXF2O.js.map → chunk-YITK2PJ6.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-D6USKAMA.js.map → chunk-ZRP4VG5U.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{claim-6NINZYB3.js.map → claim-EMQLYPRW.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{claim-HMCLSLUE.js.map → claim-T3GCKV7C.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{close-37KEHLYM.js.map → close-E6ZZGCJY.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{close-OP3LK7Z2.js.map → close-TQYAAFJP.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{close-many-BFMP6HHK.js.map → close-many-BG5QQIDQ.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{close-many-CXJBOWWY.js.map → close-many-LDRVEQY2.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{comments-MU2WMBUY.js.map → comments-QCKR2YY2.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{comments-ETHABIY6.js.map → comments-YUXJRZPQ.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{config-FIXJZEQK.js.map → config-DMSU64QO.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{config-X3ZVCUUG.js.map → config-QH2DICD6.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{context-XDI4DKKT.js.map → context-B6275WPX.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{context-7ZEZV3BV.js.map → context-OCZ3FJ4Z.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{contracts-SMOAN5NF.js.map → contracts-HN7ABKLP.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{contracts-KP4QAGVW.js.map → contracts-W4FZVVD6.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{copy-CWM6SBY6.js.map → copy-BTJOSKKT.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{copy-JJ3KOQW2.js.map → copy-DEM4DATS.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{create-DFMNBKBS.js.map → create-OH3BDGBB.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{create-J5Q2ELZT.js.map → create-RLRJMRTM.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{delete-OOQS4KVD.js.map → delete-BHK7VB2Z.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{delete-2GZLQEUQ.js.map → delete-LSVHAB4Y.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{deps-ZVGGCRR6.js.map → deps-4UDFJRUA.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{deps-IF4IGL4R.js.map → deps-XHYXWEPT.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{docs-2TIFR62T.js.map → docs-26S44RXU.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{docs-NFTBCQQC.js.map → docs-GYZNVS26.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{eval-2F6EH4XN.js.map → eval-PGRVIJQU.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{eval-PFKXQR3B.js.map → eval-UYF3ZPVO.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{extension-GMVOIP4O.js.map → extension-CPSLJQVE.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{extension-3LRYX7SW.js.map → extension-CXJ6RELI.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{files-T5ODMETM.js.map → files-MBNICQFM.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{files-DF3HO6XK.js.map → files-NQHEXUZD.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{focus-DLXKK4AH.js.map → focus-DWYIG7GU.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{focus-MY5ARIEK.js.map → focus-XZW5423D.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{gc-FULIVYR4.js.map → gc-7GQYOS2G.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{gc-MDGRR2SU.js.map → gc-LPVMKJQJ.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{get-AWK324RS.js.map → get-A7MAOHCU.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{get-VYPIICPC.js.map → get-DSDEKJ3L.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{history-X4OSES6K.js.map → history-NERDJNUB.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{history-5XUSLAJA.js.map → history-WSZHY3PN.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{history-compact-WLCQEKXS.js.map → history-compact-2WRZ2WK4.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{history-compact-2GHT32UX.js.map → history-compact-HR7BB4LR.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{history-redact-BVHWDXPR.js.map → history-redact-MP6CH7U5.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{history-redact-45YW65BK.js.map → history-redact-O3NBCNWC.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{history-repair-GABSDSVD.js.map → history-repair-LCMOS45X.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{history-repair-FY75IC26.js.map → history-repair-XA3LC4GA.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{init-KO7CGIRQ.js.map → init-64XDLQJB.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{init-TRYJELH4.js.map → init-PAX32BJA.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{learnings-3F7YLI45.js.map → learnings-JR6MA5TI.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{learnings-LHZT5BHW.js.map → learnings-LPKCSJX7.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{list-ROT7JF62.js.map → list-DNBJVO3E.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{list-Y6AU5BJS.js.map → list-G5Y65VF6.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{next-66BJB4N2.js.map → next-BCERKDUR.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{next-N5MWJTBY.js.map → next-FYTQF6HG.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{notes-FW6YFLND.js.map → notes-2BMU3VVQ.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{notes-EVJZ3VAB.js.map → notes-6KTGO2OJ.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{plan-DQ7G4EDC.js.map → plan-4WXEQCTN.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{plan-ZHKZ7JVF.js.map → plan-RKZHQVXR.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{profile-UPZGCDOG.js.map → profile-4OMM32CD.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{profile-CHAW6SEA.js.map → profile-QLER5ENE.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{register-list-query-Y2VRHPCL.js.map → register-list-query-7LV46VAU.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{register-list-query-KY6Z6WV7.js.map → register-list-query-SNG5PGA4.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{register-mutation-PCARIGZS.js.map → register-mutation-ENNDUAZG.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{register-mutation-N6AYSKPM.js.map → register-mutation-KK7PHYYU.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{register-operations-YAT6FUUB.js.map → register-operations-C6OWLDSH.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{register-operations-L6CYTOIH.js.map → register-operations-HZ6XERQG.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{register-setup-N7UGXYJC.js.map → register-setup-P67EMBDJ.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{register-setup-MPANILQF.js.map → register-setup-ZKJ53RS7.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{restore-DKMCLPI5.js.map → restore-4MHZFJ2E.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{restore-IRAKSWIW.js.map → restore-YALDGTQR.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{scheduling-shortcuts-3F4QUEDH.js.map → scheduling-shortcuts-LB6DOLRL.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{scheduling-shortcuts-BNZLQK36.js.map → scheduling-shortcuts-UTOYKLXQ.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{schema-OLT6LVKH.js.map → schema-73HR2OJW.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{schema-XJXKJQF5.js.map → schema-U6LJKSIR.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{search-CX5UMV4H.js.map → search-AXPXKZER.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{search-KP6H7COV.js.map → search-KILGT37L.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{stats-QZUG6MX5.js.map → stats-PSYVVTNZ.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{stats-7XW4OEMK.js.map → stats-W5KNVJWQ.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{telemetry-WTYFUPRL.js.map → telemetry-BZUF6H7G.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{telemetry-DIFPXCAT.js.map → telemetry-GAHHQTOS.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{test-QNDXZQCW.js.map → test-ACD52Z3S.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{test-HU2BS7EY.js.map → test-PWDIZ255.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{test-runs-LANLLPVO.js.map → test-runs-PLRAZEFW.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{test-runs-CA6K32RD.js.map → test-runs-UXIXPDKU.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{update-UXDLTEOZ.js.map → update-AMRSOIWP.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{update-DJKWLBWJ.js.map → update-KFX2SIAC.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{update-many-VW5DGF3S.js.map → update-many-RNSBX2TA.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{update-many-LU3SCNK5.js.map → update-many-Z5GJS5LC.js.map} +0 -0
|
@@ -2526,7 +2526,7 @@ function parseLegacyExtensionCapabilityAliasWarning(warning) {
|
|
|
2526
2526
|
!(function() {
|
|
2527
2527
|
try {
|
|
2528
2528
|
var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}, n = new e.Error().stack;
|
|
2529
|
-
n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "
|
|
2529
|
+
n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "dbc43b74-6872-52c3-859a-64fe84c02b5b");
|
|
2530
2530
|
} catch (e2) {
|
|
2531
2531
|
}
|
|
2532
2532
|
})();
|
|
@@ -2639,34 +2639,15 @@ function collectExtensionPolicyOverrides(rawOverrides) {
|
|
|
2639
2639
|
}
|
|
2640
2640
|
return overridesByName;
|
|
2641
2641
|
}
|
|
2642
|
-
function
|
|
2643
|
-
const policy = settings.extensions.policy;
|
|
2644
|
-
const mode = normalizePolicyMode(policy?.mode);
|
|
2645
|
-
const trustMode = normalizePolicyTrustMode(policy?.trust_mode);
|
|
2646
|
-
const pmMaxVersionExceededMode2 = normalizePmMaxVersionExceededMode(policy?.pm_max_version_exceeded_mode);
|
|
2647
|
-
const requireProvenance = policy?.require_provenance === true;
|
|
2648
|
-
const trustedExtensions = normalizePolicyStringSet(policy?.trusted_extensions);
|
|
2649
|
-
const defaultSandboxProfile = normalizePolicySandboxProfile(policy?.default_sandbox_profile);
|
|
2650
|
-
const allowedExtensions = normalizePolicyStringSet(policy?.allowed_extensions);
|
|
2651
|
-
const blockedExtensions = normalizePolicyStringSet(policy?.blocked_extensions);
|
|
2652
|
-
const allowedCapabilities = normalizePolicyStringSet(policy?.allowed_capabilities);
|
|
2653
|
-
const blockedCapabilities = normalizePolicyStringSet(policy?.blocked_capabilities);
|
|
2654
|
-
const allowedSurfaces = normalizePolicySurfaceSet(policy?.allowed_surfaces);
|
|
2655
|
-
const blockedSurfaces = normalizePolicySurfaceSet(policy?.blocked_surfaces);
|
|
2656
|
-
const allowedCommands = normalizePolicyStringSet(policy?.allowed_commands);
|
|
2657
|
-
const blockedCommands = normalizePolicyStringSet(policy?.blocked_commands);
|
|
2658
|
-
const allowedActions = normalizePolicyStringSet(policy?.allowed_actions);
|
|
2659
|
-
const blockedActions = normalizePolicyStringSet(policy?.blocked_actions);
|
|
2660
|
-
const allowedServices = normalizePolicyStringSet(policy?.allowed_services);
|
|
2661
|
-
const blockedServices = normalizePolicyStringSet(policy?.blocked_services);
|
|
2662
|
-
const overridesByName = collectExtensionPolicyOverrides(policy?.extension_overrides);
|
|
2642
|
+
function collectExtensionPolicyWarnings(normalized) {
|
|
2663
2643
|
const warnings = [];
|
|
2664
|
-
|
|
2644
|
+
const sortedOverrides = [...normalized.overridesByName.values()].sort((left, right) => left.name.localeCompare(right.name));
|
|
2645
|
+
for (const capability of toSortedList([...normalized.allowedCapabilities, ...normalized.blockedCapabilities])) {
|
|
2665
2646
|
if (!isKnownExtensionCapability(capability)) {
|
|
2666
2647
|
warnings.push(`extension_policy_unknown_capability:${capability}`);
|
|
2667
2648
|
}
|
|
2668
2649
|
}
|
|
2669
|
-
for (const override of
|
|
2650
|
+
for (const override of sortedOverrides) {
|
|
2670
2651
|
for (const capability of toSortedList([...override.allowedCapabilities, ...override.blockedCapabilities])) {
|
|
2671
2652
|
if (!isKnownExtensionCapability(capability)) {
|
|
2672
2653
|
warnings.push(`extension_policy_unknown_capability:${override.name}:${capability}`);
|
|
@@ -2674,39 +2655,54 @@ function normalizeExtensionPolicy(settings) {
|
|
|
2674
2655
|
}
|
|
2675
2656
|
}
|
|
2676
2657
|
const knownSurfaces = new Set(KNOWN_EXTENSION_POLICY_SURFACES);
|
|
2677
|
-
for (const surface of toSortedList([...allowedSurfaces, ...blockedSurfaces])) {
|
|
2658
|
+
for (const surface of toSortedList([...normalized.allowedSurfaces, ...normalized.blockedSurfaces])) {
|
|
2678
2659
|
if (!knownSurfaces.has(surface)) {
|
|
2679
2660
|
warnings.push(`extension_policy_unknown_surface:${surface}`);
|
|
2680
2661
|
}
|
|
2681
2662
|
}
|
|
2682
|
-
for (const override of
|
|
2663
|
+
for (const override of sortedOverrides) {
|
|
2683
2664
|
for (const surface of toSortedList([...override.allowedSurfaces, ...override.blockedSurfaces])) {
|
|
2684
2665
|
if (!knownSurfaces.has(surface)) {
|
|
2685
2666
|
warnings.push(`extension_policy_unknown_surface:${override.name}:${surface}`);
|
|
2686
2667
|
}
|
|
2687
2668
|
}
|
|
2688
2669
|
}
|
|
2670
|
+
return [...new Set(warnings)].sort((left, right) => left.localeCompare(right));
|
|
2671
|
+
}
|
|
2672
|
+
function normalizeExtensionPolicy(settings) {
|
|
2673
|
+
const policy = settings.extensions?.policy ?? {};
|
|
2674
|
+
const allowedCapabilities = normalizePolicyStringSet(policy.allowed_capabilities);
|
|
2675
|
+
const blockedCapabilities = normalizePolicyStringSet(policy.blocked_capabilities);
|
|
2676
|
+
const allowedSurfaces = normalizePolicySurfaceSet(policy.allowed_surfaces);
|
|
2677
|
+
const blockedSurfaces = normalizePolicySurfaceSet(policy.blocked_surfaces);
|
|
2678
|
+
const overridesByName = collectExtensionPolicyOverrides(policy.extension_overrides);
|
|
2689
2679
|
return {
|
|
2690
|
-
mode,
|
|
2691
|
-
trustMode,
|
|
2692
|
-
pmMaxVersionExceededMode:
|
|
2693
|
-
requireProvenance,
|
|
2694
|
-
trustedExtensions,
|
|
2695
|
-
defaultSandboxProfile,
|
|
2696
|
-
allowedExtensions,
|
|
2697
|
-
blockedExtensions,
|
|
2680
|
+
mode: normalizePolicyMode(policy.mode),
|
|
2681
|
+
trustMode: normalizePolicyTrustMode(policy.trust_mode),
|
|
2682
|
+
pmMaxVersionExceededMode: normalizePmMaxVersionExceededMode(policy.pm_max_version_exceeded_mode),
|
|
2683
|
+
requireProvenance: policy.require_provenance === true,
|
|
2684
|
+
trustedExtensions: normalizePolicyStringSet(policy.trusted_extensions),
|
|
2685
|
+
defaultSandboxProfile: normalizePolicySandboxProfile(policy.default_sandbox_profile),
|
|
2686
|
+
allowedExtensions: normalizePolicyStringSet(policy.allowed_extensions),
|
|
2687
|
+
blockedExtensions: normalizePolicyStringSet(policy.blocked_extensions),
|
|
2698
2688
|
allowedCapabilities,
|
|
2699
2689
|
blockedCapabilities,
|
|
2700
2690
|
allowedSurfaces,
|
|
2701
2691
|
blockedSurfaces,
|
|
2702
|
-
allowedCommands,
|
|
2703
|
-
blockedCommands,
|
|
2704
|
-
allowedActions,
|
|
2705
|
-
blockedActions,
|
|
2706
|
-
allowedServices,
|
|
2707
|
-
blockedServices,
|
|
2692
|
+
allowedCommands: normalizePolicyStringSet(policy.allowed_commands),
|
|
2693
|
+
blockedCommands: normalizePolicyStringSet(policy.blocked_commands),
|
|
2694
|
+
allowedActions: normalizePolicyStringSet(policy.allowed_actions),
|
|
2695
|
+
blockedActions: normalizePolicyStringSet(policy.blocked_actions),
|
|
2696
|
+
allowedServices: normalizePolicyStringSet(policy.allowed_services),
|
|
2697
|
+
blockedServices: normalizePolicyStringSet(policy.blocked_services),
|
|
2708
2698
|
overridesByName,
|
|
2709
|
-
warnings:
|
|
2699
|
+
warnings: collectExtensionPolicyWarnings({
|
|
2700
|
+
allowedCapabilities,
|
|
2701
|
+
blockedCapabilities,
|
|
2702
|
+
allowedSurfaces,
|
|
2703
|
+
blockedSurfaces,
|
|
2704
|
+
overridesByName
|
|
2705
|
+
})
|
|
2710
2706
|
};
|
|
2711
2707
|
}
|
|
2712
2708
|
function serializeExtensionPolicy(policy) {
|
|
@@ -2917,55 +2913,28 @@ function evaluateExtensionPolicyForExtension(policy, extension) {
|
|
|
2917
2913
|
if (policy.mode === "off" && policy.trustMode === "off") {
|
|
2918
2914
|
return { allowed: true, warning: null };
|
|
2919
2915
|
}
|
|
2916
|
+
const violations = [];
|
|
2920
2917
|
const reason = resolvePolicyExtensionReason(policy, extension);
|
|
2921
|
-
|
|
2922
|
-
|
|
2923
|
-
const extensionEnforced = reason && policy.mode === "enforce";
|
|
2924
|
-
const trustEnforced = trustReason && policy.trustMode === "enforce";
|
|
2925
|
-
const sandboxEnforced = sandboxReason && policy.mode === "enforce";
|
|
2926
|
-
if (!reason && !trustReason && !sandboxReason) {
|
|
2927
|
-
return { allowed: true, warning: null };
|
|
2918
|
+
if (reason) {
|
|
2919
|
+
violations.push({ reason, scope: "extension", mode: policy.mode });
|
|
2928
2920
|
}
|
|
2929
|
-
|
|
2930
|
-
|
|
2931
|
-
|
|
2932
|
-
warning: buildPolicyWarning("blocked", "extension", extension, reason)
|
|
2933
|
-
};
|
|
2921
|
+
const trustReason = resolvePolicyTrustReason(policy, extension);
|
|
2922
|
+
if (trustReason) {
|
|
2923
|
+
violations.push({ reason: trustReason, scope: "trust", mode: policy.trustMode });
|
|
2934
2924
|
}
|
|
2935
|
-
|
|
2936
|
-
|
|
2937
|
-
|
|
2938
|
-
warning: buildPolicyWarning("blocked", "trust", extension, trustReason)
|
|
2939
|
-
};
|
|
2925
|
+
const sandboxReason = resolvePolicySandboxReason(policy, extension);
|
|
2926
|
+
if (sandboxReason) {
|
|
2927
|
+
violations.push({ reason: sandboxReason, scope: "extension", mode: policy.mode });
|
|
2940
2928
|
}
|
|
2941
|
-
|
|
2942
|
-
|
|
2943
|
-
|
|
2944
|
-
warning: buildPolicyWarning("blocked", "extension", extension, sandboxReason)
|
|
2945
|
-
};
|
|
2929
|
+
const enforced = violations.find((violation) => violation.mode === "enforce");
|
|
2930
|
+
if (enforced) {
|
|
2931
|
+
return { allowed: false, warning: buildPolicyWarning("blocked", enforced.scope, extension, enforced.reason) };
|
|
2946
2932
|
}
|
|
2947
|
-
|
|
2948
|
-
|
|
2949
|
-
|
|
2950
|
-
warning: buildPolicyWarning("violation", "extension", extension, reason)
|
|
2951
|
-
};
|
|
2933
|
+
const warned = violations.find((violation) => violation.mode === "warn");
|
|
2934
|
+
if (warned) {
|
|
2935
|
+
return { allowed: true, warning: buildPolicyWarning("violation", warned.scope, extension, warned.reason) };
|
|
2952
2936
|
}
|
|
2953
|
-
|
|
2954
|
-
return {
|
|
2955
|
-
allowed: true,
|
|
2956
|
-
warning: buildPolicyWarning("violation", "trust", extension, trustReason)
|
|
2957
|
-
};
|
|
2958
|
-
}
|
|
2959
|
-
if (sandboxReason && policy.mode === "warn") {
|
|
2960
|
-
return {
|
|
2961
|
-
allowed: true,
|
|
2962
|
-
warning: buildPolicyWarning("violation", "extension", extension, sandboxReason)
|
|
2963
|
-
};
|
|
2964
|
-
}
|
|
2965
|
-
return {
|
|
2966
|
-
allowed: true,
|
|
2967
|
-
warning: null
|
|
2968
|
-
};
|
|
2937
|
+
return { allowed: true, warning: null };
|
|
2969
2938
|
}
|
|
2970
2939
|
function evaluateExtensionPolicyForCapability(policy, extension, capability) {
|
|
2971
2940
|
if (policy.mode === "off") {
|
|
@@ -2980,19 +2949,15 @@ function evaluateExtensionPolicyForCapability(policy, extension, capability) {
|
|
|
2980
2949
|
warning: buildPolicyWarning(policy.mode === "warn" ? "violation" : "blocked", "capability", extension, reason, { capability: capability.trim().toLowerCase() })
|
|
2981
2950
|
};
|
|
2982
2951
|
}
|
|
2983
|
-
function
|
|
2984
|
-
if (policy.mode === "off") {
|
|
2985
|
-
return { allowed: true, warning: null };
|
|
2986
|
-
}
|
|
2952
|
+
function resolveRegistrationPolicyReason(policy, extension, surface, capability, detail) {
|
|
2987
2953
|
const capabilityReason = typeof capability === "string" ? resolvePolicyCapabilityReason(policy, extension, capability) : null;
|
|
2988
2954
|
const surfaceReason = resolvePolicySurfaceReason(policy, extension, surface);
|
|
2989
|
-
const commandReason =
|
|
2990
|
-
const actionReason =
|
|
2991
|
-
const serviceReason =
|
|
2992
|
-
|
|
2993
|
-
|
|
2994
|
-
|
|
2995
|
-
}
|
|
2955
|
+
const commandReason = detail.command ? resolvePolicyCommandReason(policy, extension, detail.command) : null;
|
|
2956
|
+
const actionReason = detail.action ? resolvePolicyActionReason(policy, extension, detail.action) : null;
|
|
2957
|
+
const serviceReason = detail.service ? resolvePolicyServiceReason(policy, extension, detail.service) : null;
|
|
2958
|
+
return capabilityReason ?? surfaceReason ?? commandReason ?? actionReason ?? serviceReason;
|
|
2959
|
+
}
|
|
2960
|
+
function buildRegistrationPolicyWarningDetails(method, surface, capability, detail) {
|
|
2996
2961
|
const warningDetails = {
|
|
2997
2962
|
method: normalizePolicyName(method).replace(/\s+/g, "_"),
|
|
2998
2963
|
surface
|
|
@@ -3000,16 +2965,27 @@ function evaluateExtensionPolicyForRegistration(policy, extension, surface, meth
|
|
|
3000
2965
|
if (capability) {
|
|
3001
2966
|
warningDetails.capability = capability;
|
|
3002
2967
|
}
|
|
3003
|
-
if (
|
|
3004
|
-
warningDetails.command = normalizeCommandName(
|
|
2968
|
+
if (detail.command) {
|
|
2969
|
+
warningDetails.command = normalizeCommandName(detail.command);
|
|
2970
|
+
}
|
|
2971
|
+
if (detail.action) {
|
|
2972
|
+
warningDetails.action = normalizePolicyName(detail.action).replace(/\s+/g, "-");
|
|
2973
|
+
}
|
|
2974
|
+
if (detail.service) {
|
|
2975
|
+
warningDetails.service = normalizePolicyName(detail.service);
|
|
3005
2976
|
}
|
|
3006
|
-
|
|
3007
|
-
|
|
2977
|
+
return warningDetails;
|
|
2978
|
+
}
|
|
2979
|
+
function evaluateExtensionPolicyForRegistration(policy, extension, surface, method, capability, details) {
|
|
2980
|
+
if (policy.mode === "off") {
|
|
2981
|
+
return { allowed: true, warning: null };
|
|
3008
2982
|
}
|
|
3009
|
-
|
|
3010
|
-
|
|
2983
|
+
const detail = details ?? {};
|
|
2984
|
+
const reason = resolveRegistrationPolicyReason(policy, extension, surface, capability, detail);
|
|
2985
|
+
if (!reason) {
|
|
2986
|
+
return { allowed: true, warning: null };
|
|
3011
2987
|
}
|
|
3012
|
-
const warning = buildPolicyWarning(policy.mode === "warn" ? "violation" : "blocked", "registration", extension, reason,
|
|
2988
|
+
const warning = buildPolicyWarning(policy.mode === "warn" ? "violation" : "blocked", "registration", extension, reason, buildRegistrationPolicyWarningDetails(method, surface, capability, detail));
|
|
3013
2989
|
return {
|
|
3014
2990
|
allowed: policy.mode === "warn",
|
|
3015
2991
|
warning
|
|
@@ -3020,7 +2996,7 @@ function evaluateExtensionPolicyForRegistration(policy, extension, surface, meth
|
|
|
3020
2996
|
!(function() {
|
|
3021
2997
|
try {
|
|
3022
2998
|
var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}, n = new e.Error().stack;
|
|
3023
|
-
n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "
|
|
2999
|
+
n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "c04aa899-5cba-5907-be3e-4db7c63b7f13");
|
|
3024
3000
|
} catch (e2) {
|
|
3025
3001
|
}
|
|
3026
3002
|
})();
|
|
@@ -3063,33 +3039,134 @@ function parseManifestEngines(value) {
|
|
|
3063
3039
|
}
|
|
3064
3040
|
return Object.keys(engines).length > 0 ? engines : void 0;
|
|
3065
3041
|
}
|
|
3066
|
-
function
|
|
3067
|
-
|
|
3042
|
+
function parseRequiredManifestString(candidate, field) {
|
|
3043
|
+
const value = candidate[field];
|
|
3044
|
+
if (typeof value !== "string" || value.trim().length === 0) {
|
|
3068
3045
|
return null;
|
|
3069
3046
|
}
|
|
3070
|
-
|
|
3071
|
-
|
|
3047
|
+
return value.trim();
|
|
3048
|
+
}
|
|
3049
|
+
function parseOptionalIntegerValue(value) {
|
|
3050
|
+
if (value === void 0 || value === null) {
|
|
3051
|
+
return void 0;
|
|
3052
|
+
}
|
|
3053
|
+
if (typeof value !== "number" || !Number.isInteger(value)) {
|
|
3072
3054
|
return null;
|
|
3073
3055
|
}
|
|
3074
|
-
|
|
3056
|
+
return value;
|
|
3057
|
+
}
|
|
3058
|
+
function parseOptionalBooleanValue(value) {
|
|
3059
|
+
if (value === void 0 || value === null) {
|
|
3060
|
+
return void 0;
|
|
3061
|
+
}
|
|
3062
|
+
if (typeof value !== "boolean") {
|
|
3075
3063
|
return null;
|
|
3076
3064
|
}
|
|
3077
|
-
|
|
3065
|
+
return value;
|
|
3066
|
+
}
|
|
3067
|
+
function parseManifestPriority(candidate) {
|
|
3068
|
+
const value = parseOptionalIntegerValue(candidate.priority);
|
|
3069
|
+
return value === void 0 ? DEFAULT_EXTENSION_PRIORITY : value;
|
|
3070
|
+
}
|
|
3071
|
+
function parseManifestSandboxProfile(candidate) {
|
|
3072
|
+
const value = candidate.sandbox_profile;
|
|
3073
|
+
if (value === void 0 || value === null) {
|
|
3074
|
+
return void 0;
|
|
3075
|
+
}
|
|
3076
|
+
if (typeof value !== "string") {
|
|
3078
3077
|
return null;
|
|
3079
3078
|
}
|
|
3080
|
-
|
|
3081
|
-
if (
|
|
3082
|
-
|
|
3083
|
-
return null;
|
|
3084
|
-
}
|
|
3085
|
-
priority = candidate.priority;
|
|
3079
|
+
const normalizedProfile = normalizePolicySandboxProfile(value);
|
|
3080
|
+
if (normalizedProfile !== value.trim().toLowerCase()) {
|
|
3081
|
+
return null;
|
|
3086
3082
|
}
|
|
3087
|
-
|
|
3088
|
-
|
|
3089
|
-
|
|
3090
|
-
|
|
3091
|
-
|
|
3092
|
-
|
|
3083
|
+
return normalizedProfile;
|
|
3084
|
+
}
|
|
3085
|
+
function optionalTrimmedString(value) {
|
|
3086
|
+
return typeof value === "string" && value.trim().length > 0 ? value.trim() : void 0;
|
|
3087
|
+
}
|
|
3088
|
+
function parseManifestProvenance(value) {
|
|
3089
|
+
if (value === void 0 || value === null) {
|
|
3090
|
+
return void 0;
|
|
3091
|
+
}
|
|
3092
|
+
const provenanceRecord = asRecordLoose(value);
|
|
3093
|
+
if (!provenanceRecord) {
|
|
3094
|
+
return null;
|
|
3095
|
+
}
|
|
3096
|
+
const source = optionalTrimmedString(provenanceRecord.source);
|
|
3097
|
+
const signature = optionalTrimmedString(provenanceRecord.signature);
|
|
3098
|
+
const attestation = optionalTrimmedString(provenanceRecord.attestation);
|
|
3099
|
+
const verified = provenanceRecord.verified === void 0 || provenanceRecord.verified === null ? void 0 : typeof provenanceRecord.verified === "boolean" ? provenanceRecord.verified : null;
|
|
3100
|
+
if (verified === null) {
|
|
3101
|
+
return null;
|
|
3102
|
+
}
|
|
3103
|
+
return {
|
|
3104
|
+
...source ? { source } : {},
|
|
3105
|
+
...signature ? { signature } : {},
|
|
3106
|
+
...attestation ? { attestation } : {},
|
|
3107
|
+
...typeof verified === "boolean" ? { verified } : {}
|
|
3108
|
+
};
|
|
3109
|
+
}
|
|
3110
|
+
function parseManifestPermissions(value) {
|
|
3111
|
+
if (value === void 0 || value === null) {
|
|
3112
|
+
return void 0;
|
|
3113
|
+
}
|
|
3114
|
+
const permissionsRecord = asRecordLoose(value);
|
|
3115
|
+
if (!permissionsRecord) {
|
|
3116
|
+
return null;
|
|
3117
|
+
}
|
|
3118
|
+
const fsRead = parseOptionalBooleanValue(permissionsRecord.fs_read);
|
|
3119
|
+
const fsWrite = parseOptionalBooleanValue(permissionsRecord.fs_write);
|
|
3120
|
+
const network = parseOptionalBooleanValue(permissionsRecord.network);
|
|
3121
|
+
const envRead = parseOptionalBooleanValue(permissionsRecord.env_read);
|
|
3122
|
+
const envWrite = parseOptionalBooleanValue(permissionsRecord.env_write);
|
|
3123
|
+
const processSpawn = parseOptionalBooleanValue(permissionsRecord.process_spawn);
|
|
3124
|
+
if ([fsRead, fsWrite, network, envRead, envWrite, processSpawn].includes(null)) {
|
|
3125
|
+
return null;
|
|
3126
|
+
}
|
|
3127
|
+
return {
|
|
3128
|
+
...typeof fsRead === "boolean" ? { fs_read: fsRead } : {},
|
|
3129
|
+
...typeof fsWrite === "boolean" ? { fs_write: fsWrite } : {},
|
|
3130
|
+
...typeof network === "boolean" ? { network } : {},
|
|
3131
|
+
...typeof envRead === "boolean" ? { env_read: envRead } : {},
|
|
3132
|
+
...typeof envWrite === "boolean" ? { env_write: envWrite } : {},
|
|
3133
|
+
...typeof processSpawn === "boolean" ? { process_spawn: processSpawn } : {}
|
|
3134
|
+
};
|
|
3135
|
+
}
|
|
3136
|
+
function parseManifestCapabilities(value) {
|
|
3137
|
+
if (value === void 0 || value === null) {
|
|
3138
|
+
return { capabilities: [], legacy_aliases: [] };
|
|
3139
|
+
}
|
|
3140
|
+
if (!Array.isArray(value) || value.some((entry) => typeof entry !== "string")) {
|
|
3141
|
+
return null;
|
|
3142
|
+
}
|
|
3143
|
+
const normalizedCapabilities = normalizeManifestCapabilities(value);
|
|
3144
|
+
return { capabilities: normalizedCapabilities.capabilities, legacy_aliases: normalizedCapabilities.legacy_aliases };
|
|
3145
|
+
}
|
|
3146
|
+
function parseManifestActivation(value) {
|
|
3147
|
+
if (value === void 0 || value === null) {
|
|
3148
|
+
return void 0;
|
|
3149
|
+
}
|
|
3150
|
+
const activationRecord = asRecordLoose(value);
|
|
3151
|
+
if (!activationRecord) {
|
|
3152
|
+
return null;
|
|
3153
|
+
}
|
|
3154
|
+
const rawCommands = activationRecord.commands;
|
|
3155
|
+
if (rawCommands === void 0 || rawCommands === null) {
|
|
3156
|
+
return void 0;
|
|
3157
|
+
}
|
|
3158
|
+
if (!Array.isArray(rawCommands) || rawCommands.some((entry) => typeof entry !== "string")) {
|
|
3159
|
+
return null;
|
|
3160
|
+
}
|
|
3161
|
+
const commands = [
|
|
3162
|
+
...new Set(rawCommands.map((entry) => normalizeCommandName(entry)).filter((entry) => entry.length > 0))
|
|
3163
|
+
].sort((left, right) => left.localeCompare(right));
|
|
3164
|
+
return commands.length > 0 ? { commands } : void 0;
|
|
3165
|
+
}
|
|
3166
|
+
function parseManifestMetadata(candidate) {
|
|
3167
|
+
const manifestVersion = parseOptionalIntegerValue(candidate.manifest_version);
|
|
3168
|
+
if (manifestVersion === null) {
|
|
3169
|
+
return null;
|
|
3093
3170
|
}
|
|
3094
3171
|
const pmMinVersion = parseOptionalManifestString(candidate, "pm_min_version");
|
|
3095
3172
|
if (pmMinVersion === null) {
|
|
@@ -3103,124 +3180,85 @@ function parseManifest(raw) {
|
|
|
3103
3180
|
if (engines === null) {
|
|
3104
3181
|
return null;
|
|
3105
3182
|
}
|
|
3106
|
-
|
|
3107
|
-
if (
|
|
3108
|
-
|
|
3109
|
-
return null;
|
|
3110
|
-
}
|
|
3111
|
-
trusted = candidate.trusted;
|
|
3183
|
+
const trusted = parseOptionalBooleanValue(candidate.trusted);
|
|
3184
|
+
if (trusted === null) {
|
|
3185
|
+
return null;
|
|
3112
3186
|
}
|
|
3113
|
-
|
|
3114
|
-
if (
|
|
3115
|
-
|
|
3116
|
-
return null;
|
|
3117
|
-
}
|
|
3118
|
-
const normalizedProfile = normalizePolicySandboxProfile(candidate.sandbox_profile);
|
|
3119
|
-
if (normalizedProfile !== candidate.sandbox_profile.trim().toLowerCase()) {
|
|
3120
|
-
return null;
|
|
3121
|
-
}
|
|
3122
|
-
sandboxProfile = normalizedProfile;
|
|
3187
|
+
const sandboxProfile = parseManifestSandboxProfile(candidate);
|
|
3188
|
+
if (sandboxProfile === null) {
|
|
3189
|
+
return null;
|
|
3123
3190
|
}
|
|
3124
|
-
|
|
3125
|
-
if (
|
|
3126
|
-
|
|
3127
|
-
if (!provenanceRecord) {
|
|
3128
|
-
return null;
|
|
3129
|
-
}
|
|
3130
|
-
const source = typeof provenanceRecord.source === "string" && provenanceRecord.source.trim().length > 0 ? provenanceRecord.source.trim() : void 0;
|
|
3131
|
-
const signature = typeof provenanceRecord.signature === "string" && provenanceRecord.signature.trim().length > 0 ? provenanceRecord.signature.trim() : void 0;
|
|
3132
|
-
const attestation = typeof provenanceRecord.attestation === "string" && provenanceRecord.attestation.trim().length > 0 ? provenanceRecord.attestation.trim() : void 0;
|
|
3133
|
-
const verified = provenanceRecord.verified === void 0 || provenanceRecord.verified === null ? void 0 : typeof provenanceRecord.verified === "boolean" ? provenanceRecord.verified : null;
|
|
3134
|
-
if (verified === null) {
|
|
3135
|
-
return null;
|
|
3136
|
-
}
|
|
3137
|
-
provenance = {
|
|
3138
|
-
...source ? { source } : {},
|
|
3139
|
-
...signature ? { signature } : {},
|
|
3140
|
-
...attestation ? { attestation } : {},
|
|
3141
|
-
...typeof verified === "boolean" ? { verified } : {}
|
|
3142
|
-
};
|
|
3191
|
+
const provenance = parseManifestProvenance(candidate.provenance);
|
|
3192
|
+
if (provenance === null) {
|
|
3193
|
+
return null;
|
|
3143
3194
|
}
|
|
3144
|
-
|
|
3145
|
-
if (
|
|
3146
|
-
|
|
3147
|
-
if (!permissionsRecord) {
|
|
3148
|
-
return null;
|
|
3149
|
-
}
|
|
3150
|
-
const parseOptionalBoolean = (value) => {
|
|
3151
|
-
if (value === void 0 || value === null) {
|
|
3152
|
-
return void 0;
|
|
3153
|
-
}
|
|
3154
|
-
if (typeof value !== "boolean") {
|
|
3155
|
-
return null;
|
|
3156
|
-
}
|
|
3157
|
-
return value;
|
|
3158
|
-
};
|
|
3159
|
-
const fsRead = parseOptionalBoolean(permissionsRecord.fs_read);
|
|
3160
|
-
const fsWrite = parseOptionalBoolean(permissionsRecord.fs_write);
|
|
3161
|
-
const network = parseOptionalBoolean(permissionsRecord.network);
|
|
3162
|
-
const envRead = parseOptionalBoolean(permissionsRecord.env_read);
|
|
3163
|
-
const envWrite = parseOptionalBoolean(permissionsRecord.env_write);
|
|
3164
|
-
const processSpawn = parseOptionalBoolean(permissionsRecord.process_spawn);
|
|
3165
|
-
if ([fsRead, fsWrite, network, envRead, envWrite, processSpawn].includes(null)) {
|
|
3166
|
-
return null;
|
|
3167
|
-
}
|
|
3168
|
-
permissions = {
|
|
3169
|
-
...typeof fsRead === "boolean" ? { fs_read: fsRead } : {},
|
|
3170
|
-
...typeof fsWrite === "boolean" ? { fs_write: fsWrite } : {},
|
|
3171
|
-
...typeof network === "boolean" ? { network } : {},
|
|
3172
|
-
...typeof envRead === "boolean" ? { env_read: envRead } : {},
|
|
3173
|
-
...typeof envWrite === "boolean" ? { env_write: envWrite } : {},
|
|
3174
|
-
...typeof processSpawn === "boolean" ? { process_spawn: processSpawn } : {}
|
|
3175
|
-
};
|
|
3195
|
+
const permissions = parseManifestPermissions(candidate.permissions);
|
|
3196
|
+
if (permissions === null) {
|
|
3197
|
+
return null;
|
|
3176
3198
|
}
|
|
3177
|
-
|
|
3178
|
-
|
|
3179
|
-
|
|
3180
|
-
if (!Array.isArray(candidate.capabilities) || candidate.capabilities.some((value) => typeof value !== "string")) {
|
|
3181
|
-
return null;
|
|
3182
|
-
}
|
|
3183
|
-
const normalizedCapabilities = normalizeManifestCapabilities(candidate.capabilities);
|
|
3184
|
-
capabilities = normalizedCapabilities.capabilities;
|
|
3185
|
-
legacyCapabilityAliases = normalizedCapabilities.legacy_aliases;
|
|
3199
|
+
const capabilities = parseManifestCapabilities(candidate.capabilities);
|
|
3200
|
+
if (capabilities === null) {
|
|
3201
|
+
return null;
|
|
3186
3202
|
}
|
|
3187
|
-
|
|
3188
|
-
if (
|
|
3189
|
-
|
|
3190
|
-
if (!activationRecord) {
|
|
3191
|
-
return null;
|
|
3192
|
-
}
|
|
3193
|
-
const rawCommands = activationRecord.commands;
|
|
3194
|
-
if (rawCommands !== void 0 && rawCommands !== null) {
|
|
3195
|
-
if (!Array.isArray(rawCommands) || rawCommands.some((value) => typeof value !== "string")) {
|
|
3196
|
-
return null;
|
|
3197
|
-
}
|
|
3198
|
-
const commands = [
|
|
3199
|
-
...new Set(rawCommands.map((value) => normalizeCommandName(value)).filter((value) => value.length > 0))
|
|
3200
|
-
].sort((left, right) => left.localeCompare(right));
|
|
3201
|
-
if (commands.length > 0) {
|
|
3202
|
-
activation = {
|
|
3203
|
-
commands
|
|
3204
|
-
};
|
|
3205
|
-
}
|
|
3206
|
-
}
|
|
3203
|
+
const activation = parseManifestActivation(candidate.activation);
|
|
3204
|
+
if (activation === null) {
|
|
3205
|
+
return null;
|
|
3207
3206
|
}
|
|
3208
3207
|
return {
|
|
3209
|
-
name: candidate.name.trim(),
|
|
3210
|
-
version: candidate.version.trim(),
|
|
3211
|
-
entry: candidate.entry.trim(),
|
|
3212
|
-
priority,
|
|
3213
3208
|
manifest_version: manifestVersion,
|
|
3214
3209
|
pm_min_version: pmMinVersion,
|
|
3215
3210
|
pm_max_version: pmMaxVersion,
|
|
3216
3211
|
engines,
|
|
3217
3212
|
trusted,
|
|
3218
|
-
provenance,
|
|
3219
3213
|
sandbox_profile: sandboxProfile,
|
|
3214
|
+
provenance,
|
|
3220
3215
|
permissions,
|
|
3221
|
-
|
|
3222
|
-
capabilities,
|
|
3223
|
-
|
|
3216
|
+
capabilities: capabilities.capabilities,
|
|
3217
|
+
legacy_capability_aliases: capabilities.legacy_aliases,
|
|
3218
|
+
activation
|
|
3219
|
+
};
|
|
3220
|
+
}
|
|
3221
|
+
function parseManifest(raw) {
|
|
3222
|
+
if (typeof raw !== "object" || raw === null) {
|
|
3223
|
+
return null;
|
|
3224
|
+
}
|
|
3225
|
+
const candidate = raw;
|
|
3226
|
+
const name = parseRequiredManifestString(candidate, "name");
|
|
3227
|
+
if (name === null) {
|
|
3228
|
+
return null;
|
|
3229
|
+
}
|
|
3230
|
+
const version = parseRequiredManifestString(candidate, "version");
|
|
3231
|
+
if (version === null) {
|
|
3232
|
+
return null;
|
|
3233
|
+
}
|
|
3234
|
+
const entry = parseRequiredManifestString(candidate, "entry");
|
|
3235
|
+
if (entry === null) {
|
|
3236
|
+
return null;
|
|
3237
|
+
}
|
|
3238
|
+
const priority = parseManifestPriority(candidate);
|
|
3239
|
+
if (priority === null) {
|
|
3240
|
+
return null;
|
|
3241
|
+
}
|
|
3242
|
+
const metadata = parseManifestMetadata(candidate);
|
|
3243
|
+
if (metadata === null) {
|
|
3244
|
+
return null;
|
|
3245
|
+
}
|
|
3246
|
+
return {
|
|
3247
|
+
name,
|
|
3248
|
+
version,
|
|
3249
|
+
entry,
|
|
3250
|
+
priority,
|
|
3251
|
+
manifest_version: metadata.manifest_version,
|
|
3252
|
+
pm_min_version: metadata.pm_min_version,
|
|
3253
|
+
pm_max_version: metadata.pm_max_version,
|
|
3254
|
+
engines: metadata.engines,
|
|
3255
|
+
trusted: metadata.trusted,
|
|
3256
|
+
provenance: metadata.provenance,
|
|
3257
|
+
sandbox_profile: metadata.sandbox_profile,
|
|
3258
|
+
permissions: metadata.permissions,
|
|
3259
|
+
activation: metadata.activation,
|
|
3260
|
+
capabilities: metadata.capabilities,
|
|
3261
|
+
legacy_capability_aliases: metadata.legacy_capability_aliases.length > 0 ? metadata.legacy_capability_aliases : void 0
|
|
3224
3262
|
};
|
|
3225
3263
|
}
|
|
3226
3264
|
function shouldEnable(name, enabled, disabled) {
|
|
@@ -3349,26 +3387,50 @@ async function scanExtensionLayer(layer, extensionsRoot, enabled, disabled, pmMa
|
|
|
3349
3387
|
}
|
|
3350
3388
|
return { diagnostics, warnings, candidates };
|
|
3351
3389
|
}
|
|
3390
|
+
function buildUnavailableExtensionScan(layer, directory, manifestPath, warning) {
|
|
3391
|
+
return {
|
|
3392
|
+
diagnostic: {
|
|
3393
|
+
layer,
|
|
3394
|
+
directory,
|
|
3395
|
+
manifest_path: manifestPath,
|
|
3396
|
+
name: null,
|
|
3397
|
+
version: null,
|
|
3398
|
+
entry: null,
|
|
3399
|
+
priority: null,
|
|
3400
|
+
entry_path: null,
|
|
3401
|
+
enabled: null,
|
|
3402
|
+
status: "warn"
|
|
3403
|
+
},
|
|
3404
|
+
warnings: [warning],
|
|
3405
|
+
candidate: null
|
|
3406
|
+
};
|
|
3407
|
+
}
|
|
3408
|
+
function collectScannedExtensionWarnings(layer, manifest, entryWithinDirectory, entryExists, pmVersionCompatibility, pmMaxVersionCompatibility) {
|
|
3409
|
+
const extensionWarnings = [];
|
|
3410
|
+
if (Array.isArray(manifest.legacy_capability_aliases) && manifest.legacy_capability_aliases.length > 0) {
|
|
3411
|
+
extensionWarnings.push(formatLegacyExtensionCapabilityAliasWarning(layer, manifest.name, manifest.legacy_capability_aliases));
|
|
3412
|
+
}
|
|
3413
|
+
for (const capability of collectUnknownExtensionCapabilities(manifest.capabilities)) {
|
|
3414
|
+
extensionWarnings.push(formatUnknownExtensionCapabilityWarning(layer, manifest.name, capability));
|
|
3415
|
+
}
|
|
3416
|
+
if (!entryWithinDirectory) {
|
|
3417
|
+
extensionWarnings.push(`extension_entry_outside_extension:${layer}:${manifest.name}`);
|
|
3418
|
+
} else if (!entryExists) {
|
|
3419
|
+
extensionWarnings.push(`extension_entry_missing:${layer}:${manifest.name}`);
|
|
3420
|
+
}
|
|
3421
|
+
if (pmVersionCompatibility.warning) {
|
|
3422
|
+
extensionWarnings.push(pmVersionCompatibility.warning);
|
|
3423
|
+
}
|
|
3424
|
+
if (pmMaxVersionCompatibility.warning) {
|
|
3425
|
+
extensionWarnings.push(pmMaxVersionCompatibility.warning);
|
|
3426
|
+
}
|
|
3427
|
+
return extensionWarnings;
|
|
3428
|
+
}
|
|
3352
3429
|
async function scanExtensionDirectory(layer, extensionsRoot, directory, enabled, disabled, managedSourcePackages, pmMaxVersionExceededMode2) {
|
|
3353
3430
|
const extensionDir = path5.join(extensionsRoot, directory);
|
|
3354
3431
|
const manifestPath = path5.join(extensionDir, "manifest.json");
|
|
3355
3432
|
if (!await pathExists(manifestPath)) {
|
|
3356
|
-
return {
|
|
3357
|
-
diagnostic: {
|
|
3358
|
-
layer,
|
|
3359
|
-
directory,
|
|
3360
|
-
manifest_path: manifestPath,
|
|
3361
|
-
name: null,
|
|
3362
|
-
version: null,
|
|
3363
|
-
entry: null,
|
|
3364
|
-
priority: null,
|
|
3365
|
-
entry_path: null,
|
|
3366
|
-
enabled: null,
|
|
3367
|
-
status: "warn"
|
|
3368
|
-
},
|
|
3369
|
-
warnings: [`extension_manifest_missing:${layer}:${directory}`],
|
|
3370
|
-
candidate: null
|
|
3371
|
-
};
|
|
3433
|
+
return buildUnavailableExtensionScan(layer, directory, manifestPath, `extension_manifest_missing:${layer}:${directory}`);
|
|
3372
3434
|
}
|
|
3373
3435
|
let manifest = null;
|
|
3374
3436
|
try {
|
|
@@ -3378,48 +3440,16 @@ async function scanExtensionDirectory(layer, extensionsRoot, directory, enabled,
|
|
|
3378
3440
|
manifest = null;
|
|
3379
3441
|
}
|
|
3380
3442
|
if (!manifest) {
|
|
3381
|
-
return {
|
|
3382
|
-
diagnostic: {
|
|
3383
|
-
layer,
|
|
3384
|
-
directory,
|
|
3385
|
-
manifest_path: manifestPath,
|
|
3386
|
-
name: null,
|
|
3387
|
-
version: null,
|
|
3388
|
-
entry: null,
|
|
3389
|
-
priority: null,
|
|
3390
|
-
entry_path: null,
|
|
3391
|
-
enabled: null,
|
|
3392
|
-
status: "warn"
|
|
3393
|
-
},
|
|
3394
|
-
warnings: [`extension_manifest_invalid:${layer}:${directory}`],
|
|
3395
|
-
candidate: null
|
|
3396
|
-
};
|
|
3443
|
+
return buildUnavailableExtensionScan(layer, directory, manifestPath, `extension_manifest_invalid:${layer}:${directory}`);
|
|
3397
3444
|
}
|
|
3398
3445
|
const entryPath = path5.resolve(extensionDir, manifest.entry);
|
|
3399
3446
|
const entryWithinDirectoryByPath = isPathWithinDirectory(extensionDir, entryPath);
|
|
3400
3447
|
const entryExists = entryWithinDirectoryByPath ? await pathExists(entryPath) : false;
|
|
3401
3448
|
const entryWithinDirectory = entryWithinDirectoryByPath && entryExists ? await isCanonicalPathWithinDirectory(extensionDir, entryPath) : entryWithinDirectoryByPath;
|
|
3402
3449
|
const enabledForLoad = shouldEnable(manifest.name, enabled, disabled);
|
|
3403
|
-
const extensionWarnings = [];
|
|
3404
|
-
if (Array.isArray(manifest.legacy_capability_aliases) && manifest.legacy_capability_aliases.length > 0) {
|
|
3405
|
-
extensionWarnings.push(formatLegacyExtensionCapabilityAliasWarning(layer, manifest.name, manifest.legacy_capability_aliases));
|
|
3406
|
-
}
|
|
3407
|
-
for (const capability of collectUnknownExtensionCapabilities(manifest.capabilities)) {
|
|
3408
|
-
extensionWarnings.push(formatUnknownExtensionCapabilityWarning(layer, manifest.name, capability));
|
|
3409
|
-
}
|
|
3410
|
-
if (!entryWithinDirectory) {
|
|
3411
|
-
extensionWarnings.push(`extension_entry_outside_extension:${layer}:${manifest.name}`);
|
|
3412
|
-
} else if (!entryExists) {
|
|
3413
|
-
extensionWarnings.push(`extension_entry_missing:${layer}:${manifest.name}`);
|
|
3414
|
-
}
|
|
3415
3450
|
const pmVersionCompatibility = await evaluatePmMinVersionCompatibility(layer, manifest);
|
|
3416
|
-
if (pmVersionCompatibility.warning) {
|
|
3417
|
-
extensionWarnings.push(pmVersionCompatibility.warning);
|
|
3418
|
-
}
|
|
3419
3451
|
const pmMaxVersionCompatibility = await evaluatePmMaxVersionCompatibility(layer, manifest, pmMaxVersionExceededMode2);
|
|
3420
|
-
|
|
3421
|
-
extensionWarnings.push(pmMaxVersionCompatibility.warning);
|
|
3422
|
-
}
|
|
3452
|
+
const extensionWarnings = collectScannedExtensionWarnings(layer, manifest, entryWithinDirectory, entryExists, pmVersionCompatibility, pmMaxVersionCompatibility);
|
|
3423
3453
|
const extensionReady = entryWithinDirectory && entryExists && pmVersionCompatibility.allowed && pmMaxVersionCompatibility.allowed;
|
|
3424
3454
|
const sourcePackage = managedSourcePackages.get(`directory:${directory}`) ?? managedSourcePackages.get(`name:${manifest.name}`);
|
|
3425
3455
|
return {
|
|
@@ -4169,69 +4199,70 @@ function createExtensionApi(extension, hooks, commands, parsers, preflight, serv
|
|
|
4169
4199
|
received: sanitizeRegistrationValue(received),
|
|
4170
4200
|
hint
|
|
4171
4201
|
});
|
|
4172
|
-
const
|
|
4173
|
-
|
|
4174
|
-
if (
|
|
4175
|
-
|
|
4176
|
-
if (normalizedCommand2.length === 0) {
|
|
4177
|
-
throw createRegistrationValidationError("registerCommand requires a non-empty command name", registerCommandTrace("override", commandOrDefinition, 'registerCommand("<command>", (context) => unknown)', commandOrDefinition, "Provide a non-empty command path as the first argument."));
|
|
4178
|
-
}
|
|
4179
|
-
if (typeof override !== "function") {
|
|
4180
|
-
const trace = registerCommandTrace("override", normalizedCommand2, 'registerCommand("<command>", (context) => unknown)', { command: commandOrDefinition, override }, "Provide a function as the second registerCommand argument.");
|
|
4181
|
-
throw createRegistrationValidationError(`registerCommand requires an override function when command name is provided (command="${normalizedCommand2}", registration_index=${trace.registration_index})`, trace);
|
|
4182
|
-
}
|
|
4183
|
-
if (!allowRegistration("commands.override", "registerCommand", "commands", { command: normalizedCommand2 })) {
|
|
4184
|
-
return;
|
|
4185
|
-
}
|
|
4186
|
-
commands.overrides.push({
|
|
4187
|
-
layer: extension.layer,
|
|
4188
|
-
name: extension.name,
|
|
4189
|
-
command: normalizedCommand2,
|
|
4190
|
-
run: override
|
|
4191
|
-
});
|
|
4192
|
-
return;
|
|
4193
|
-
}
|
|
4194
|
-
if (typeof commandOrDefinition !== "object" || commandOrDefinition === null) {
|
|
4195
|
-
throw createRegistrationValidationError("registerCommand requires a command definition object", registerCommandTrace("definition", void 0, "{ name: string; run: (context) => unknown; }", commandOrDefinition, 'Use registerCommand({ name: "command path", run: (context) => ... }).'));
|
|
4202
|
+
const registerCommandOverride = (command, override) => {
|
|
4203
|
+
const normalizedCommand = normalizeCommandName(command);
|
|
4204
|
+
if (normalizedCommand.length === 0) {
|
|
4205
|
+
throw createRegistrationValidationError("registerCommand requires a non-empty command name", registerCommandTrace("override", command, 'registerCommand("<command>", (context) => unknown)', command, "Provide a non-empty command path as the first argument."));
|
|
4196
4206
|
}
|
|
4197
|
-
if (typeof
|
|
4198
|
-
|
|
4207
|
+
if (typeof override !== "function") {
|
|
4208
|
+
const trace = registerCommandTrace("override", normalizedCommand, 'registerCommand("<command>", (context) => unknown)', { command, override }, "Provide a function as the second registerCommand argument.");
|
|
4209
|
+
throw createRegistrationValidationError(`registerCommand requires an override function when command name is provided (command="${normalizedCommand}", registration_index=${trace.registration_index})`, trace);
|
|
4199
4210
|
}
|
|
4200
|
-
|
|
4201
|
-
|
|
4202
|
-
throw createRegistrationValidationError("registerCommand requires a non-empty command definition name", registerCommandTrace("definition", commandOrDefinition.name, "{ name: string; run: (context) => unknown; }", commandOrDefinition, "Ensure command definition.name contains a non-empty command path."));
|
|
4211
|
+
if (!allowRegistration("commands.override", "registerCommand", "commands", { command: normalizedCommand })) {
|
|
4212
|
+
return;
|
|
4203
4213
|
}
|
|
4204
|
-
|
|
4205
|
-
|
|
4214
|
+
commands.overrides.push({
|
|
4215
|
+
layer: extension.layer,
|
|
4216
|
+
name: extension.name,
|
|
4217
|
+
command: normalizedCommand,
|
|
4218
|
+
run: override
|
|
4219
|
+
});
|
|
4220
|
+
};
|
|
4221
|
+
const resolveCommandDefinitionRunHandler = (definition, normalizedCommand) => {
|
|
4222
|
+
const runHandler = typeof definition.run === "function" ? definition.run : void 0;
|
|
4223
|
+
const legacyHandler = typeof definition.handler === "function" ? definition.handler : void 0;
|
|
4206
4224
|
if (!runHandler && legacyHandler) {
|
|
4207
4225
|
activationWarnings.push(`extension_command_definition_legacy_handler_alias:${extension.layer}:${extension.name}:${normalizedCommand}`);
|
|
4208
4226
|
}
|
|
4209
|
-
|
|
4227
|
+
return runHandler ?? legacyHandler;
|
|
4228
|
+
};
|
|
4229
|
+
const registerCommandDefinition = (definition) => {
|
|
4230
|
+
if (typeof definition !== "object" || definition === null) {
|
|
4231
|
+
throw createRegistrationValidationError("registerCommand requires a command definition object", registerCommandTrace("definition", void 0, "{ name: string; run: (context) => unknown; }", definition, 'Use registerCommand({ name: "command path", run: (context) => ... }).'));
|
|
4232
|
+
}
|
|
4233
|
+
if (typeof definition.name !== "string") {
|
|
4234
|
+
throw createRegistrationValidationError("registerCommand requires a command definition name", registerCommandTrace("definition", void 0, "{ name: string; run: (context) => unknown; }", definition, "Set command definition.name to a non-empty string command path."));
|
|
4235
|
+
}
|
|
4236
|
+
const normalizedCommand = normalizeCommandName(definition.name);
|
|
4237
|
+
if (normalizedCommand.length === 0) {
|
|
4238
|
+
throw createRegistrationValidationError("registerCommand requires a non-empty command definition name", registerCommandTrace("definition", definition.name, "{ name: string; run: (context) => unknown; }", definition, "Ensure command definition.name contains a non-empty command path."));
|
|
4239
|
+
}
|
|
4240
|
+
const resolvedHandler = resolveCommandDefinitionRunHandler(definition, normalizedCommand);
|
|
4210
4241
|
if (typeof resolvedHandler !== "function") {
|
|
4211
|
-
const trace = registerCommandTrace("definition", normalizedCommand, "{ name: string; run: (context) => unknown; }",
|
|
4242
|
+
const trace = registerCommandTrace("definition", normalizedCommand, "{ name: string; run: (context) => unknown; }", definition, "Define command definition.run as a function.");
|
|
4212
4243
|
throw createRegistrationValidationError(`registerCommand requires a command definition run handler (command="${normalizedCommand}", registration_index=${trace.registration_index})`, trace);
|
|
4213
4244
|
}
|
|
4214
4245
|
try {
|
|
4215
|
-
assertOptionalStringField("registerCommand definition.action",
|
|
4216
|
-
assertOptionalStringField("registerCommand definition.description",
|
|
4217
|
-
assertOptionalStringField("registerCommand definition.intent",
|
|
4218
|
-
const action = resolveCommandDefinitionAction(normalizedCommand,
|
|
4246
|
+
assertOptionalStringField("registerCommand definition.action", definition.action);
|
|
4247
|
+
assertOptionalStringField("registerCommand definition.description", definition.description);
|
|
4248
|
+
assertOptionalStringField("registerCommand definition.intent", definition.intent);
|
|
4249
|
+
const action = resolveCommandDefinitionAction(normalizedCommand, definition.action);
|
|
4219
4250
|
if (!allowRegistration("commands.handler", "registerCommand", "commands", { command: normalizedCommand, action })) {
|
|
4220
4251
|
return;
|
|
4221
4252
|
}
|
|
4222
|
-
const description =
|
|
4223
|
-
const intent =
|
|
4224
|
-
const examples = normalizeOptionalStringArrayField("registerCommand definition.examples",
|
|
4225
|
-
const failureHints = normalizeOptionalStringArrayField("registerCommand definition.failure_hints",
|
|
4226
|
-
const argumentsDefinition = normalizeCommandDefinitionArguments(
|
|
4227
|
-
if (
|
|
4253
|
+
const description = definition.description?.trim();
|
|
4254
|
+
const intent = definition.intent?.trim();
|
|
4255
|
+
const examples = normalizeOptionalStringArrayField("registerCommand definition.examples", definition.examples);
|
|
4256
|
+
const failureHints = normalizeOptionalStringArrayField("registerCommand definition.failure_hints", definition.failure_hints);
|
|
4257
|
+
const argumentsDefinition = normalizeCommandDefinitionArguments(definition.arguments);
|
|
4258
|
+
if (definition.flags !== void 0) {
|
|
4228
4259
|
assertExtensionCapability(extension, "schema", "registerCommand flags");
|
|
4229
|
-
validateFlagDefinitions(
|
|
4260
|
+
validateFlagDefinitions(definition.flags);
|
|
4230
4261
|
registrations.flags.push({
|
|
4231
4262
|
layer: extension.layer,
|
|
4232
4263
|
name: extension.name,
|
|
4233
4264
|
target_command: normalizedCommand,
|
|
4234
|
-
flags: normalizeRegistrationRecordList("registerCommand definition.flags",
|
|
4265
|
+
flags: normalizeRegistrationRecordList("registerCommand definition.flags", definition.flags)
|
|
4235
4266
|
});
|
|
4236
4267
|
}
|
|
4237
4268
|
const registration = {
|
|
@@ -4253,7 +4284,7 @@ function createExtensionApi(extension, hooks, commands, parsers, preflight, serv
|
|
|
4253
4284
|
registrations.commands.push(registration);
|
|
4254
4285
|
} catch (error) {
|
|
4255
4286
|
const reason = formatUnknownError(error);
|
|
4256
|
-
const trace = registerCommandTrace("definition", normalizedCommand, "{ name: string; run: (context) => unknown; action?: string; arguments?: object[]; flags?: object[]; }",
|
|
4287
|
+
const trace = registerCommandTrace("definition", normalizedCommand, "{ name: string; run: (context) => unknown; action?: string; arguments?: object[]; flags?: object[]; }", definition, "Use schema-style metadata (action/arguments/flags/examples/intent) with valid values.");
|
|
4257
4288
|
throw createRegistrationValidationError(`registerCommand definition metadata invalid (command="${normalizedCommand}", registration_index=${trace.registration_index}): ${reason}`, trace);
|
|
4258
4289
|
}
|
|
4259
4290
|
commands.handlers.push({
|
|
@@ -4263,6 +4294,14 @@ function createExtensionApi(extension, hooks, commands, parsers, preflight, serv
|
|
|
4263
4294
|
run: resolvedHandler
|
|
4264
4295
|
});
|
|
4265
4296
|
};
|
|
4297
|
+
const registerCommand = (commandOrDefinition, override) => {
|
|
4298
|
+
assertExtensionCapability(extension, "commands", "registerCommand");
|
|
4299
|
+
if (typeof commandOrDefinition === "string") {
|
|
4300
|
+
registerCommandOverride(commandOrDefinition, override);
|
|
4301
|
+
return;
|
|
4302
|
+
}
|
|
4303
|
+
registerCommandDefinition(commandOrDefinition);
|
|
4304
|
+
};
|
|
4266
4305
|
const registerParser = (command, override) => {
|
|
4267
4306
|
assertExtensionCapability(extension, "parser", "registerParser");
|
|
4268
4307
|
if (!allowRegistration("parser.override", "registerParser", "parser")) {
|
|
@@ -7470,4 +7509,4 @@ export {
|
|
|
7470
7509
|
readSettings,
|
|
7471
7510
|
writeSettings
|
|
7472
7511
|
};
|
|
7473
|
-
//# sourceMappingURL=chunk-
|
|
7512
|
+
//# sourceMappingURL=chunk-RVUALSJF.js.map
|