@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
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// dist/core/fs/fs-utils.js
|
|
2
2
|
|
|
3
|
-
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="
|
|
3
|
+
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="03ed13d8-75ea-5f3b-b089-a7347a59acca")}catch(e){}}();
|
|
4
4
|
import * as fs from "node:fs/promises";
|
|
5
5
|
import path from "node:path";
|
|
6
6
|
import crypto from "node:crypto";
|
|
@@ -2499,34 +2499,15 @@ function collectExtensionPolicyOverrides(rawOverrides) {
|
|
|
2499
2499
|
}
|
|
2500
2500
|
return overridesByName;
|
|
2501
2501
|
}
|
|
2502
|
-
function
|
|
2503
|
-
const policy = settings.extensions.policy;
|
|
2504
|
-
const mode = normalizePolicyMode(policy?.mode);
|
|
2505
|
-
const trustMode = normalizePolicyTrustMode(policy?.trust_mode);
|
|
2506
|
-
const pmMaxVersionExceededMode2 = normalizePmMaxVersionExceededMode(policy?.pm_max_version_exceeded_mode);
|
|
2507
|
-
const requireProvenance = policy?.require_provenance === true;
|
|
2508
|
-
const trustedExtensions = normalizePolicyStringSet(policy?.trusted_extensions);
|
|
2509
|
-
const defaultSandboxProfile = normalizePolicySandboxProfile(policy?.default_sandbox_profile);
|
|
2510
|
-
const allowedExtensions = normalizePolicyStringSet(policy?.allowed_extensions);
|
|
2511
|
-
const blockedExtensions = normalizePolicyStringSet(policy?.blocked_extensions);
|
|
2512
|
-
const allowedCapabilities = normalizePolicyStringSet(policy?.allowed_capabilities);
|
|
2513
|
-
const blockedCapabilities = normalizePolicyStringSet(policy?.blocked_capabilities);
|
|
2514
|
-
const allowedSurfaces = normalizePolicySurfaceSet(policy?.allowed_surfaces);
|
|
2515
|
-
const blockedSurfaces = normalizePolicySurfaceSet(policy?.blocked_surfaces);
|
|
2516
|
-
const allowedCommands = normalizePolicyStringSet(policy?.allowed_commands);
|
|
2517
|
-
const blockedCommands = normalizePolicyStringSet(policy?.blocked_commands);
|
|
2518
|
-
const allowedActions = normalizePolicyStringSet(policy?.allowed_actions);
|
|
2519
|
-
const blockedActions = normalizePolicyStringSet(policy?.blocked_actions);
|
|
2520
|
-
const allowedServices = normalizePolicyStringSet(policy?.allowed_services);
|
|
2521
|
-
const blockedServices = normalizePolicyStringSet(policy?.blocked_services);
|
|
2522
|
-
const overridesByName = collectExtensionPolicyOverrides(policy?.extension_overrides);
|
|
2502
|
+
function collectExtensionPolicyWarnings(normalized) {
|
|
2523
2503
|
const warnings = [];
|
|
2524
|
-
|
|
2504
|
+
const sortedOverrides = [...normalized.overridesByName.values()].sort((left, right) => left.name.localeCompare(right.name));
|
|
2505
|
+
for (const capability of toSortedList([...normalized.allowedCapabilities, ...normalized.blockedCapabilities])) {
|
|
2525
2506
|
if (!isKnownExtensionCapability(capability)) {
|
|
2526
2507
|
warnings.push(`extension_policy_unknown_capability:${capability}`);
|
|
2527
2508
|
}
|
|
2528
2509
|
}
|
|
2529
|
-
for (const override of
|
|
2510
|
+
for (const override of sortedOverrides) {
|
|
2530
2511
|
for (const capability of toSortedList([...override.allowedCapabilities, ...override.blockedCapabilities])) {
|
|
2531
2512
|
if (!isKnownExtensionCapability(capability)) {
|
|
2532
2513
|
warnings.push(`extension_policy_unknown_capability:${override.name}:${capability}`);
|
|
@@ -2534,39 +2515,54 @@ function normalizeExtensionPolicy(settings) {
|
|
|
2534
2515
|
}
|
|
2535
2516
|
}
|
|
2536
2517
|
const knownSurfaces = new Set(KNOWN_EXTENSION_POLICY_SURFACES);
|
|
2537
|
-
for (const surface of toSortedList([...allowedSurfaces, ...blockedSurfaces])) {
|
|
2518
|
+
for (const surface of toSortedList([...normalized.allowedSurfaces, ...normalized.blockedSurfaces])) {
|
|
2538
2519
|
if (!knownSurfaces.has(surface)) {
|
|
2539
2520
|
warnings.push(`extension_policy_unknown_surface:${surface}`);
|
|
2540
2521
|
}
|
|
2541
2522
|
}
|
|
2542
|
-
for (const override of
|
|
2523
|
+
for (const override of sortedOverrides) {
|
|
2543
2524
|
for (const surface of toSortedList([...override.allowedSurfaces, ...override.blockedSurfaces])) {
|
|
2544
2525
|
if (!knownSurfaces.has(surface)) {
|
|
2545
2526
|
warnings.push(`extension_policy_unknown_surface:${override.name}:${surface}`);
|
|
2546
2527
|
}
|
|
2547
2528
|
}
|
|
2548
2529
|
}
|
|
2530
|
+
return [...new Set(warnings)].sort((left, right) => left.localeCompare(right));
|
|
2531
|
+
}
|
|
2532
|
+
function normalizeExtensionPolicy(settings) {
|
|
2533
|
+
const policy = settings.extensions?.policy ?? {};
|
|
2534
|
+
const allowedCapabilities = normalizePolicyStringSet(policy.allowed_capabilities);
|
|
2535
|
+
const blockedCapabilities = normalizePolicyStringSet(policy.blocked_capabilities);
|
|
2536
|
+
const allowedSurfaces = normalizePolicySurfaceSet(policy.allowed_surfaces);
|
|
2537
|
+
const blockedSurfaces = normalizePolicySurfaceSet(policy.blocked_surfaces);
|
|
2538
|
+
const overridesByName = collectExtensionPolicyOverrides(policy.extension_overrides);
|
|
2549
2539
|
return {
|
|
2550
|
-
mode,
|
|
2551
|
-
trustMode,
|
|
2552
|
-
pmMaxVersionExceededMode:
|
|
2553
|
-
requireProvenance,
|
|
2554
|
-
trustedExtensions,
|
|
2555
|
-
defaultSandboxProfile,
|
|
2556
|
-
allowedExtensions,
|
|
2557
|
-
blockedExtensions,
|
|
2540
|
+
mode: normalizePolicyMode(policy.mode),
|
|
2541
|
+
trustMode: normalizePolicyTrustMode(policy.trust_mode),
|
|
2542
|
+
pmMaxVersionExceededMode: normalizePmMaxVersionExceededMode(policy.pm_max_version_exceeded_mode),
|
|
2543
|
+
requireProvenance: policy.require_provenance === true,
|
|
2544
|
+
trustedExtensions: normalizePolicyStringSet(policy.trusted_extensions),
|
|
2545
|
+
defaultSandboxProfile: normalizePolicySandboxProfile(policy.default_sandbox_profile),
|
|
2546
|
+
allowedExtensions: normalizePolicyStringSet(policy.allowed_extensions),
|
|
2547
|
+
blockedExtensions: normalizePolicyStringSet(policy.blocked_extensions),
|
|
2558
2548
|
allowedCapabilities,
|
|
2559
2549
|
blockedCapabilities,
|
|
2560
2550
|
allowedSurfaces,
|
|
2561
2551
|
blockedSurfaces,
|
|
2562
|
-
allowedCommands,
|
|
2563
|
-
blockedCommands,
|
|
2564
|
-
allowedActions,
|
|
2565
|
-
blockedActions,
|
|
2566
|
-
allowedServices,
|
|
2567
|
-
blockedServices,
|
|
2552
|
+
allowedCommands: normalizePolicyStringSet(policy.allowed_commands),
|
|
2553
|
+
blockedCommands: normalizePolicyStringSet(policy.blocked_commands),
|
|
2554
|
+
allowedActions: normalizePolicyStringSet(policy.allowed_actions),
|
|
2555
|
+
blockedActions: normalizePolicyStringSet(policy.blocked_actions),
|
|
2556
|
+
allowedServices: normalizePolicyStringSet(policy.allowed_services),
|
|
2557
|
+
blockedServices: normalizePolicyStringSet(policy.blocked_services),
|
|
2568
2558
|
overridesByName,
|
|
2569
|
-
warnings:
|
|
2559
|
+
warnings: collectExtensionPolicyWarnings({
|
|
2560
|
+
allowedCapabilities,
|
|
2561
|
+
blockedCapabilities,
|
|
2562
|
+
allowedSurfaces,
|
|
2563
|
+
blockedSurfaces,
|
|
2564
|
+
overridesByName
|
|
2565
|
+
})
|
|
2570
2566
|
};
|
|
2571
2567
|
}
|
|
2572
2568
|
function serializeExtensionPolicy(policy) {
|
|
@@ -2777,55 +2773,28 @@ function evaluateExtensionPolicyForExtension(policy, extension) {
|
|
|
2777
2773
|
if (policy.mode === "off" && policy.trustMode === "off") {
|
|
2778
2774
|
return { allowed: true, warning: null };
|
|
2779
2775
|
}
|
|
2776
|
+
const violations = [];
|
|
2780
2777
|
const reason = resolvePolicyExtensionReason(policy, extension);
|
|
2781
|
-
|
|
2782
|
-
|
|
2783
|
-
const extensionEnforced = reason && policy.mode === "enforce";
|
|
2784
|
-
const trustEnforced = trustReason && policy.trustMode === "enforce";
|
|
2785
|
-
const sandboxEnforced = sandboxReason && policy.mode === "enforce";
|
|
2786
|
-
if (!reason && !trustReason && !sandboxReason) {
|
|
2787
|
-
return { allowed: true, warning: null };
|
|
2778
|
+
if (reason) {
|
|
2779
|
+
violations.push({ reason, scope: "extension", mode: policy.mode });
|
|
2788
2780
|
}
|
|
2789
|
-
|
|
2790
|
-
|
|
2791
|
-
|
|
2792
|
-
warning: buildPolicyWarning("blocked", "extension", extension, reason)
|
|
2793
|
-
};
|
|
2781
|
+
const trustReason = resolvePolicyTrustReason(policy, extension);
|
|
2782
|
+
if (trustReason) {
|
|
2783
|
+
violations.push({ reason: trustReason, scope: "trust", mode: policy.trustMode });
|
|
2794
2784
|
}
|
|
2795
|
-
|
|
2796
|
-
|
|
2797
|
-
|
|
2798
|
-
warning: buildPolicyWarning("blocked", "trust", extension, trustReason)
|
|
2799
|
-
};
|
|
2785
|
+
const sandboxReason = resolvePolicySandboxReason(policy, extension);
|
|
2786
|
+
if (sandboxReason) {
|
|
2787
|
+
violations.push({ reason: sandboxReason, scope: "extension", mode: policy.mode });
|
|
2800
2788
|
}
|
|
2801
|
-
|
|
2802
|
-
|
|
2803
|
-
|
|
2804
|
-
warning: buildPolicyWarning("blocked", "extension", extension, sandboxReason)
|
|
2805
|
-
};
|
|
2789
|
+
const enforced = violations.find((violation) => violation.mode === "enforce");
|
|
2790
|
+
if (enforced) {
|
|
2791
|
+
return { allowed: false, warning: buildPolicyWarning("blocked", enforced.scope, extension, enforced.reason) };
|
|
2806
2792
|
}
|
|
2807
|
-
|
|
2808
|
-
|
|
2809
|
-
|
|
2810
|
-
warning: buildPolicyWarning("violation", "extension", extension, reason)
|
|
2811
|
-
};
|
|
2793
|
+
const warned = violations.find((violation) => violation.mode === "warn");
|
|
2794
|
+
if (warned) {
|
|
2795
|
+
return { allowed: true, warning: buildPolicyWarning("violation", warned.scope, extension, warned.reason) };
|
|
2812
2796
|
}
|
|
2813
|
-
|
|
2814
|
-
return {
|
|
2815
|
-
allowed: true,
|
|
2816
|
-
warning: buildPolicyWarning("violation", "trust", extension, trustReason)
|
|
2817
|
-
};
|
|
2818
|
-
}
|
|
2819
|
-
if (sandboxReason && policy.mode === "warn") {
|
|
2820
|
-
return {
|
|
2821
|
-
allowed: true,
|
|
2822
|
-
warning: buildPolicyWarning("violation", "extension", extension, sandboxReason)
|
|
2823
|
-
};
|
|
2824
|
-
}
|
|
2825
|
-
return {
|
|
2826
|
-
allowed: true,
|
|
2827
|
-
warning: null
|
|
2828
|
-
};
|
|
2797
|
+
return { allowed: true, warning: null };
|
|
2829
2798
|
}
|
|
2830
2799
|
function evaluateExtensionPolicyForCapability(policy, extension, capability) {
|
|
2831
2800
|
if (policy.mode === "off") {
|
|
@@ -2840,19 +2809,15 @@ function evaluateExtensionPolicyForCapability(policy, extension, capability) {
|
|
|
2840
2809
|
warning: buildPolicyWarning(policy.mode === "warn" ? "violation" : "blocked", "capability", extension, reason, { capability: capability.trim().toLowerCase() })
|
|
2841
2810
|
};
|
|
2842
2811
|
}
|
|
2843
|
-
function
|
|
2844
|
-
if (policy.mode === "off") {
|
|
2845
|
-
return { allowed: true, warning: null };
|
|
2846
|
-
}
|
|
2812
|
+
function resolveRegistrationPolicyReason(policy, extension, surface, capability, detail) {
|
|
2847
2813
|
const capabilityReason = typeof capability === "string" ? resolvePolicyCapabilityReason(policy, extension, capability) : null;
|
|
2848
2814
|
const surfaceReason = resolvePolicySurfaceReason(policy, extension, surface);
|
|
2849
|
-
const commandReason =
|
|
2850
|
-
const actionReason =
|
|
2851
|
-
const serviceReason =
|
|
2852
|
-
|
|
2853
|
-
|
|
2854
|
-
|
|
2855
|
-
}
|
|
2815
|
+
const commandReason = detail.command ? resolvePolicyCommandReason(policy, extension, detail.command) : null;
|
|
2816
|
+
const actionReason = detail.action ? resolvePolicyActionReason(policy, extension, detail.action) : null;
|
|
2817
|
+
const serviceReason = detail.service ? resolvePolicyServiceReason(policy, extension, detail.service) : null;
|
|
2818
|
+
return capabilityReason ?? surfaceReason ?? commandReason ?? actionReason ?? serviceReason;
|
|
2819
|
+
}
|
|
2820
|
+
function buildRegistrationPolicyWarningDetails(method, surface, capability, detail) {
|
|
2856
2821
|
const warningDetails = {
|
|
2857
2822
|
method: normalizePolicyName(method).replace(/\s+/g, "_"),
|
|
2858
2823
|
surface
|
|
@@ -2860,16 +2825,27 @@ function evaluateExtensionPolicyForRegistration(policy, extension, surface, meth
|
|
|
2860
2825
|
if (capability) {
|
|
2861
2826
|
warningDetails.capability = capability;
|
|
2862
2827
|
}
|
|
2863
|
-
if (
|
|
2864
|
-
warningDetails.command = normalizeCommandName(
|
|
2828
|
+
if (detail.command) {
|
|
2829
|
+
warningDetails.command = normalizeCommandName(detail.command);
|
|
2830
|
+
}
|
|
2831
|
+
if (detail.action) {
|
|
2832
|
+
warningDetails.action = normalizePolicyName(detail.action).replace(/\s+/g, "-");
|
|
2833
|
+
}
|
|
2834
|
+
if (detail.service) {
|
|
2835
|
+
warningDetails.service = normalizePolicyName(detail.service);
|
|
2865
2836
|
}
|
|
2866
|
-
|
|
2867
|
-
|
|
2837
|
+
return warningDetails;
|
|
2838
|
+
}
|
|
2839
|
+
function evaluateExtensionPolicyForRegistration(policy, extension, surface, method, capability, details) {
|
|
2840
|
+
if (policy.mode === "off") {
|
|
2841
|
+
return { allowed: true, warning: null };
|
|
2868
2842
|
}
|
|
2869
|
-
|
|
2870
|
-
|
|
2843
|
+
const detail = details ?? {};
|
|
2844
|
+
const reason = resolveRegistrationPolicyReason(policy, extension, surface, capability, detail);
|
|
2845
|
+
if (!reason) {
|
|
2846
|
+
return { allowed: true, warning: null };
|
|
2871
2847
|
}
|
|
2872
|
-
const warning = buildPolicyWarning(policy.mode === "warn" ? "violation" : "blocked", "registration", extension, reason,
|
|
2848
|
+
const warning = buildPolicyWarning(policy.mode === "warn" ? "violation" : "blocked", "registration", extension, reason, buildRegistrationPolicyWarningDetails(method, surface, capability, detail));
|
|
2873
2849
|
return {
|
|
2874
2850
|
allowed: policy.mode === "warn",
|
|
2875
2851
|
warning
|
|
@@ -2916,33 +2892,134 @@ function parseManifestEngines(value) {
|
|
|
2916
2892
|
}
|
|
2917
2893
|
return Object.keys(engines).length > 0 ? engines : void 0;
|
|
2918
2894
|
}
|
|
2919
|
-
function
|
|
2920
|
-
|
|
2895
|
+
function parseRequiredManifestString(candidate, field) {
|
|
2896
|
+
const value = candidate[field];
|
|
2897
|
+
if (typeof value !== "string" || value.trim().length === 0) {
|
|
2921
2898
|
return null;
|
|
2922
2899
|
}
|
|
2923
|
-
|
|
2924
|
-
|
|
2900
|
+
return value.trim();
|
|
2901
|
+
}
|
|
2902
|
+
function parseOptionalIntegerValue(value) {
|
|
2903
|
+
if (value === void 0 || value === null) {
|
|
2904
|
+
return void 0;
|
|
2905
|
+
}
|
|
2906
|
+
if (typeof value !== "number" || !Number.isInteger(value)) {
|
|
2925
2907
|
return null;
|
|
2926
2908
|
}
|
|
2927
|
-
|
|
2909
|
+
return value;
|
|
2910
|
+
}
|
|
2911
|
+
function parseOptionalBooleanValue(value) {
|
|
2912
|
+
if (value === void 0 || value === null) {
|
|
2913
|
+
return void 0;
|
|
2914
|
+
}
|
|
2915
|
+
if (typeof value !== "boolean") {
|
|
2928
2916
|
return null;
|
|
2929
2917
|
}
|
|
2930
|
-
|
|
2918
|
+
return value;
|
|
2919
|
+
}
|
|
2920
|
+
function parseManifestPriority(candidate) {
|
|
2921
|
+
const value = parseOptionalIntegerValue(candidate.priority);
|
|
2922
|
+
return value === void 0 ? DEFAULT_EXTENSION_PRIORITY : value;
|
|
2923
|
+
}
|
|
2924
|
+
function parseManifestSandboxProfile(candidate) {
|
|
2925
|
+
const value = candidate.sandbox_profile;
|
|
2926
|
+
if (value === void 0 || value === null) {
|
|
2927
|
+
return void 0;
|
|
2928
|
+
}
|
|
2929
|
+
if (typeof value !== "string") {
|
|
2931
2930
|
return null;
|
|
2932
2931
|
}
|
|
2933
|
-
|
|
2934
|
-
if (
|
|
2935
|
-
|
|
2936
|
-
return null;
|
|
2937
|
-
}
|
|
2938
|
-
priority = candidate.priority;
|
|
2932
|
+
const normalizedProfile = normalizePolicySandboxProfile(value);
|
|
2933
|
+
if (normalizedProfile !== value.trim().toLowerCase()) {
|
|
2934
|
+
return null;
|
|
2939
2935
|
}
|
|
2940
|
-
|
|
2941
|
-
|
|
2942
|
-
|
|
2943
|
-
|
|
2944
|
-
|
|
2945
|
-
|
|
2936
|
+
return normalizedProfile;
|
|
2937
|
+
}
|
|
2938
|
+
function optionalTrimmedString(value) {
|
|
2939
|
+
return typeof value === "string" && value.trim().length > 0 ? value.trim() : void 0;
|
|
2940
|
+
}
|
|
2941
|
+
function parseManifestProvenance(value) {
|
|
2942
|
+
if (value === void 0 || value === null) {
|
|
2943
|
+
return void 0;
|
|
2944
|
+
}
|
|
2945
|
+
const provenanceRecord = asRecordLoose(value);
|
|
2946
|
+
if (!provenanceRecord) {
|
|
2947
|
+
return null;
|
|
2948
|
+
}
|
|
2949
|
+
const source = optionalTrimmedString(provenanceRecord.source);
|
|
2950
|
+
const signature = optionalTrimmedString(provenanceRecord.signature);
|
|
2951
|
+
const attestation = optionalTrimmedString(provenanceRecord.attestation);
|
|
2952
|
+
const verified = provenanceRecord.verified === void 0 || provenanceRecord.verified === null ? void 0 : typeof provenanceRecord.verified === "boolean" ? provenanceRecord.verified : null;
|
|
2953
|
+
if (verified === null) {
|
|
2954
|
+
return null;
|
|
2955
|
+
}
|
|
2956
|
+
return {
|
|
2957
|
+
...source ? { source } : {},
|
|
2958
|
+
...signature ? { signature } : {},
|
|
2959
|
+
...attestation ? { attestation } : {},
|
|
2960
|
+
...typeof verified === "boolean" ? { verified } : {}
|
|
2961
|
+
};
|
|
2962
|
+
}
|
|
2963
|
+
function parseManifestPermissions(value) {
|
|
2964
|
+
if (value === void 0 || value === null) {
|
|
2965
|
+
return void 0;
|
|
2966
|
+
}
|
|
2967
|
+
const permissionsRecord = asRecordLoose(value);
|
|
2968
|
+
if (!permissionsRecord) {
|
|
2969
|
+
return null;
|
|
2970
|
+
}
|
|
2971
|
+
const fsRead = parseOptionalBooleanValue(permissionsRecord.fs_read);
|
|
2972
|
+
const fsWrite = parseOptionalBooleanValue(permissionsRecord.fs_write);
|
|
2973
|
+
const network = parseOptionalBooleanValue(permissionsRecord.network);
|
|
2974
|
+
const envRead = parseOptionalBooleanValue(permissionsRecord.env_read);
|
|
2975
|
+
const envWrite = parseOptionalBooleanValue(permissionsRecord.env_write);
|
|
2976
|
+
const processSpawn = parseOptionalBooleanValue(permissionsRecord.process_spawn);
|
|
2977
|
+
if ([fsRead, fsWrite, network, envRead, envWrite, processSpawn].includes(null)) {
|
|
2978
|
+
return null;
|
|
2979
|
+
}
|
|
2980
|
+
return {
|
|
2981
|
+
...typeof fsRead === "boolean" ? { fs_read: fsRead } : {},
|
|
2982
|
+
...typeof fsWrite === "boolean" ? { fs_write: fsWrite } : {},
|
|
2983
|
+
...typeof network === "boolean" ? { network } : {},
|
|
2984
|
+
...typeof envRead === "boolean" ? { env_read: envRead } : {},
|
|
2985
|
+
...typeof envWrite === "boolean" ? { env_write: envWrite } : {},
|
|
2986
|
+
...typeof processSpawn === "boolean" ? { process_spawn: processSpawn } : {}
|
|
2987
|
+
};
|
|
2988
|
+
}
|
|
2989
|
+
function parseManifestCapabilities(value) {
|
|
2990
|
+
if (value === void 0 || value === null) {
|
|
2991
|
+
return { capabilities: [], legacy_aliases: [] };
|
|
2992
|
+
}
|
|
2993
|
+
if (!Array.isArray(value) || value.some((entry) => typeof entry !== "string")) {
|
|
2994
|
+
return null;
|
|
2995
|
+
}
|
|
2996
|
+
const normalizedCapabilities = normalizeManifestCapabilities(value);
|
|
2997
|
+
return { capabilities: normalizedCapabilities.capabilities, legacy_aliases: normalizedCapabilities.legacy_aliases };
|
|
2998
|
+
}
|
|
2999
|
+
function parseManifestActivation(value) {
|
|
3000
|
+
if (value === void 0 || value === null) {
|
|
3001
|
+
return void 0;
|
|
3002
|
+
}
|
|
3003
|
+
const activationRecord = asRecordLoose(value);
|
|
3004
|
+
if (!activationRecord) {
|
|
3005
|
+
return null;
|
|
3006
|
+
}
|
|
3007
|
+
const rawCommands = activationRecord.commands;
|
|
3008
|
+
if (rawCommands === void 0 || rawCommands === null) {
|
|
3009
|
+
return void 0;
|
|
3010
|
+
}
|
|
3011
|
+
if (!Array.isArray(rawCommands) || rawCommands.some((entry) => typeof entry !== "string")) {
|
|
3012
|
+
return null;
|
|
3013
|
+
}
|
|
3014
|
+
const commands = [
|
|
3015
|
+
...new Set(rawCommands.map((entry) => normalizeCommandName(entry)).filter((entry) => entry.length > 0))
|
|
3016
|
+
].sort((left, right) => left.localeCompare(right));
|
|
3017
|
+
return commands.length > 0 ? { commands } : void 0;
|
|
3018
|
+
}
|
|
3019
|
+
function parseManifestMetadata(candidate) {
|
|
3020
|
+
const manifestVersion = parseOptionalIntegerValue(candidate.manifest_version);
|
|
3021
|
+
if (manifestVersion === null) {
|
|
3022
|
+
return null;
|
|
2946
3023
|
}
|
|
2947
3024
|
const pmMinVersion = parseOptionalManifestString(candidate, "pm_min_version");
|
|
2948
3025
|
if (pmMinVersion === null) {
|
|
@@ -2956,124 +3033,85 @@ function parseManifest(raw) {
|
|
|
2956
3033
|
if (engines === null) {
|
|
2957
3034
|
return null;
|
|
2958
3035
|
}
|
|
2959
|
-
|
|
2960
|
-
if (
|
|
2961
|
-
|
|
2962
|
-
return null;
|
|
2963
|
-
}
|
|
2964
|
-
trusted = candidate.trusted;
|
|
3036
|
+
const trusted = parseOptionalBooleanValue(candidate.trusted);
|
|
3037
|
+
if (trusted === null) {
|
|
3038
|
+
return null;
|
|
2965
3039
|
}
|
|
2966
|
-
|
|
2967
|
-
if (
|
|
2968
|
-
|
|
2969
|
-
return null;
|
|
2970
|
-
}
|
|
2971
|
-
const normalizedProfile = normalizePolicySandboxProfile(candidate.sandbox_profile);
|
|
2972
|
-
if (normalizedProfile !== candidate.sandbox_profile.trim().toLowerCase()) {
|
|
2973
|
-
return null;
|
|
2974
|
-
}
|
|
2975
|
-
sandboxProfile = normalizedProfile;
|
|
3040
|
+
const sandboxProfile = parseManifestSandboxProfile(candidate);
|
|
3041
|
+
if (sandboxProfile === null) {
|
|
3042
|
+
return null;
|
|
2976
3043
|
}
|
|
2977
|
-
|
|
2978
|
-
if (
|
|
2979
|
-
|
|
2980
|
-
if (!provenanceRecord) {
|
|
2981
|
-
return null;
|
|
2982
|
-
}
|
|
2983
|
-
const source = typeof provenanceRecord.source === "string" && provenanceRecord.source.trim().length > 0 ? provenanceRecord.source.trim() : void 0;
|
|
2984
|
-
const signature = typeof provenanceRecord.signature === "string" && provenanceRecord.signature.trim().length > 0 ? provenanceRecord.signature.trim() : void 0;
|
|
2985
|
-
const attestation = typeof provenanceRecord.attestation === "string" && provenanceRecord.attestation.trim().length > 0 ? provenanceRecord.attestation.trim() : void 0;
|
|
2986
|
-
const verified = provenanceRecord.verified === void 0 || provenanceRecord.verified === null ? void 0 : typeof provenanceRecord.verified === "boolean" ? provenanceRecord.verified : null;
|
|
2987
|
-
if (verified === null) {
|
|
2988
|
-
return null;
|
|
2989
|
-
}
|
|
2990
|
-
provenance = {
|
|
2991
|
-
...source ? { source } : {},
|
|
2992
|
-
...signature ? { signature } : {},
|
|
2993
|
-
...attestation ? { attestation } : {},
|
|
2994
|
-
...typeof verified === "boolean" ? { verified } : {}
|
|
2995
|
-
};
|
|
3044
|
+
const provenance = parseManifestProvenance(candidate.provenance);
|
|
3045
|
+
if (provenance === null) {
|
|
3046
|
+
return null;
|
|
2996
3047
|
}
|
|
2997
|
-
|
|
2998
|
-
if (
|
|
2999
|
-
|
|
3000
|
-
if (!permissionsRecord) {
|
|
3001
|
-
return null;
|
|
3002
|
-
}
|
|
3003
|
-
const parseOptionalBoolean = (value) => {
|
|
3004
|
-
if (value === void 0 || value === null) {
|
|
3005
|
-
return void 0;
|
|
3006
|
-
}
|
|
3007
|
-
if (typeof value !== "boolean") {
|
|
3008
|
-
return null;
|
|
3009
|
-
}
|
|
3010
|
-
return value;
|
|
3011
|
-
};
|
|
3012
|
-
const fsRead = parseOptionalBoolean(permissionsRecord.fs_read);
|
|
3013
|
-
const fsWrite = parseOptionalBoolean(permissionsRecord.fs_write);
|
|
3014
|
-
const network = parseOptionalBoolean(permissionsRecord.network);
|
|
3015
|
-
const envRead = parseOptionalBoolean(permissionsRecord.env_read);
|
|
3016
|
-
const envWrite = parseOptionalBoolean(permissionsRecord.env_write);
|
|
3017
|
-
const processSpawn = parseOptionalBoolean(permissionsRecord.process_spawn);
|
|
3018
|
-
if ([fsRead, fsWrite, network, envRead, envWrite, processSpawn].includes(null)) {
|
|
3019
|
-
return null;
|
|
3020
|
-
}
|
|
3021
|
-
permissions = {
|
|
3022
|
-
...typeof fsRead === "boolean" ? { fs_read: fsRead } : {},
|
|
3023
|
-
...typeof fsWrite === "boolean" ? { fs_write: fsWrite } : {},
|
|
3024
|
-
...typeof network === "boolean" ? { network } : {},
|
|
3025
|
-
...typeof envRead === "boolean" ? { env_read: envRead } : {},
|
|
3026
|
-
...typeof envWrite === "boolean" ? { env_write: envWrite } : {},
|
|
3027
|
-
...typeof processSpawn === "boolean" ? { process_spawn: processSpawn } : {}
|
|
3028
|
-
};
|
|
3048
|
+
const permissions = parseManifestPermissions(candidate.permissions);
|
|
3049
|
+
if (permissions === null) {
|
|
3050
|
+
return null;
|
|
3029
3051
|
}
|
|
3030
|
-
|
|
3031
|
-
|
|
3032
|
-
|
|
3033
|
-
if (!Array.isArray(candidate.capabilities) || candidate.capabilities.some((value) => typeof value !== "string")) {
|
|
3034
|
-
return null;
|
|
3035
|
-
}
|
|
3036
|
-
const normalizedCapabilities = normalizeManifestCapabilities(candidate.capabilities);
|
|
3037
|
-
capabilities = normalizedCapabilities.capabilities;
|
|
3038
|
-
legacyCapabilityAliases = normalizedCapabilities.legacy_aliases;
|
|
3052
|
+
const capabilities = parseManifestCapabilities(candidate.capabilities);
|
|
3053
|
+
if (capabilities === null) {
|
|
3054
|
+
return null;
|
|
3039
3055
|
}
|
|
3040
|
-
|
|
3041
|
-
if (
|
|
3042
|
-
|
|
3043
|
-
if (!activationRecord) {
|
|
3044
|
-
return null;
|
|
3045
|
-
}
|
|
3046
|
-
const rawCommands = activationRecord.commands;
|
|
3047
|
-
if (rawCommands !== void 0 && rawCommands !== null) {
|
|
3048
|
-
if (!Array.isArray(rawCommands) || rawCommands.some((value) => typeof value !== "string")) {
|
|
3049
|
-
return null;
|
|
3050
|
-
}
|
|
3051
|
-
const commands = [
|
|
3052
|
-
...new Set(rawCommands.map((value) => normalizeCommandName(value)).filter((value) => value.length > 0))
|
|
3053
|
-
].sort((left, right) => left.localeCompare(right));
|
|
3054
|
-
if (commands.length > 0) {
|
|
3055
|
-
activation = {
|
|
3056
|
-
commands
|
|
3057
|
-
};
|
|
3058
|
-
}
|
|
3059
|
-
}
|
|
3056
|
+
const activation = parseManifestActivation(candidate.activation);
|
|
3057
|
+
if (activation === null) {
|
|
3058
|
+
return null;
|
|
3060
3059
|
}
|
|
3061
3060
|
return {
|
|
3062
|
-
name: candidate.name.trim(),
|
|
3063
|
-
version: candidate.version.trim(),
|
|
3064
|
-
entry: candidate.entry.trim(),
|
|
3065
|
-
priority,
|
|
3066
3061
|
manifest_version: manifestVersion,
|
|
3067
3062
|
pm_min_version: pmMinVersion,
|
|
3068
3063
|
pm_max_version: pmMaxVersion,
|
|
3069
3064
|
engines,
|
|
3070
3065
|
trusted,
|
|
3071
|
-
provenance,
|
|
3072
3066
|
sandbox_profile: sandboxProfile,
|
|
3067
|
+
provenance,
|
|
3073
3068
|
permissions,
|
|
3074
|
-
|
|
3075
|
-
capabilities,
|
|
3076
|
-
|
|
3069
|
+
capabilities: capabilities.capabilities,
|
|
3070
|
+
legacy_capability_aliases: capabilities.legacy_aliases,
|
|
3071
|
+
activation
|
|
3072
|
+
};
|
|
3073
|
+
}
|
|
3074
|
+
function parseManifest(raw) {
|
|
3075
|
+
if (typeof raw !== "object" || raw === null) {
|
|
3076
|
+
return null;
|
|
3077
|
+
}
|
|
3078
|
+
const candidate = raw;
|
|
3079
|
+
const name = parseRequiredManifestString(candidate, "name");
|
|
3080
|
+
if (name === null) {
|
|
3081
|
+
return null;
|
|
3082
|
+
}
|
|
3083
|
+
const version = parseRequiredManifestString(candidate, "version");
|
|
3084
|
+
if (version === null) {
|
|
3085
|
+
return null;
|
|
3086
|
+
}
|
|
3087
|
+
const entry = parseRequiredManifestString(candidate, "entry");
|
|
3088
|
+
if (entry === null) {
|
|
3089
|
+
return null;
|
|
3090
|
+
}
|
|
3091
|
+
const priority = parseManifestPriority(candidate);
|
|
3092
|
+
if (priority === null) {
|
|
3093
|
+
return null;
|
|
3094
|
+
}
|
|
3095
|
+
const metadata = parseManifestMetadata(candidate);
|
|
3096
|
+
if (metadata === null) {
|
|
3097
|
+
return null;
|
|
3098
|
+
}
|
|
3099
|
+
return {
|
|
3100
|
+
name,
|
|
3101
|
+
version,
|
|
3102
|
+
entry,
|
|
3103
|
+
priority,
|
|
3104
|
+
manifest_version: metadata.manifest_version,
|
|
3105
|
+
pm_min_version: metadata.pm_min_version,
|
|
3106
|
+
pm_max_version: metadata.pm_max_version,
|
|
3107
|
+
engines: metadata.engines,
|
|
3108
|
+
trusted: metadata.trusted,
|
|
3109
|
+
provenance: metadata.provenance,
|
|
3110
|
+
sandbox_profile: metadata.sandbox_profile,
|
|
3111
|
+
permissions: metadata.permissions,
|
|
3112
|
+
activation: metadata.activation,
|
|
3113
|
+
capabilities: metadata.capabilities,
|
|
3114
|
+
legacy_capability_aliases: metadata.legacy_capability_aliases.length > 0 ? metadata.legacy_capability_aliases : void 0
|
|
3077
3115
|
};
|
|
3078
3116
|
}
|
|
3079
3117
|
function shouldEnable(name, enabled, disabled) {
|
|
@@ -3202,26 +3240,50 @@ async function scanExtensionLayer(layer, extensionsRoot, enabled, disabled, pmMa
|
|
|
3202
3240
|
}
|
|
3203
3241
|
return { diagnostics, warnings, candidates };
|
|
3204
3242
|
}
|
|
3243
|
+
function buildUnavailableExtensionScan(layer, directory, manifestPath, warning) {
|
|
3244
|
+
return {
|
|
3245
|
+
diagnostic: {
|
|
3246
|
+
layer,
|
|
3247
|
+
directory,
|
|
3248
|
+
manifest_path: manifestPath,
|
|
3249
|
+
name: null,
|
|
3250
|
+
version: null,
|
|
3251
|
+
entry: null,
|
|
3252
|
+
priority: null,
|
|
3253
|
+
entry_path: null,
|
|
3254
|
+
enabled: null,
|
|
3255
|
+
status: "warn"
|
|
3256
|
+
},
|
|
3257
|
+
warnings: [warning],
|
|
3258
|
+
candidate: null
|
|
3259
|
+
};
|
|
3260
|
+
}
|
|
3261
|
+
function collectScannedExtensionWarnings(layer, manifest, entryWithinDirectory, entryExists, pmVersionCompatibility, pmMaxVersionCompatibility) {
|
|
3262
|
+
const extensionWarnings = [];
|
|
3263
|
+
if (Array.isArray(manifest.legacy_capability_aliases) && manifest.legacy_capability_aliases.length > 0) {
|
|
3264
|
+
extensionWarnings.push(formatLegacyExtensionCapabilityAliasWarning(layer, manifest.name, manifest.legacy_capability_aliases));
|
|
3265
|
+
}
|
|
3266
|
+
for (const capability of collectUnknownExtensionCapabilities(manifest.capabilities)) {
|
|
3267
|
+
extensionWarnings.push(formatUnknownExtensionCapabilityWarning(layer, manifest.name, capability));
|
|
3268
|
+
}
|
|
3269
|
+
if (!entryWithinDirectory) {
|
|
3270
|
+
extensionWarnings.push(`extension_entry_outside_extension:${layer}:${manifest.name}`);
|
|
3271
|
+
} else if (!entryExists) {
|
|
3272
|
+
extensionWarnings.push(`extension_entry_missing:${layer}:${manifest.name}`);
|
|
3273
|
+
}
|
|
3274
|
+
if (pmVersionCompatibility.warning) {
|
|
3275
|
+
extensionWarnings.push(pmVersionCompatibility.warning);
|
|
3276
|
+
}
|
|
3277
|
+
if (pmMaxVersionCompatibility.warning) {
|
|
3278
|
+
extensionWarnings.push(pmMaxVersionCompatibility.warning);
|
|
3279
|
+
}
|
|
3280
|
+
return extensionWarnings;
|
|
3281
|
+
}
|
|
3205
3282
|
async function scanExtensionDirectory(layer, extensionsRoot, directory, enabled, disabled, managedSourcePackages, pmMaxVersionExceededMode2) {
|
|
3206
3283
|
const extensionDir = path5.join(extensionsRoot, directory);
|
|
3207
3284
|
const manifestPath = path5.join(extensionDir, "manifest.json");
|
|
3208
3285
|
if (!await pathExists(manifestPath)) {
|
|
3209
|
-
return {
|
|
3210
|
-
diagnostic: {
|
|
3211
|
-
layer,
|
|
3212
|
-
directory,
|
|
3213
|
-
manifest_path: manifestPath,
|
|
3214
|
-
name: null,
|
|
3215
|
-
version: null,
|
|
3216
|
-
entry: null,
|
|
3217
|
-
priority: null,
|
|
3218
|
-
entry_path: null,
|
|
3219
|
-
enabled: null,
|
|
3220
|
-
status: "warn"
|
|
3221
|
-
},
|
|
3222
|
-
warnings: [`extension_manifest_missing:${layer}:${directory}`],
|
|
3223
|
-
candidate: null
|
|
3224
|
-
};
|
|
3286
|
+
return buildUnavailableExtensionScan(layer, directory, manifestPath, `extension_manifest_missing:${layer}:${directory}`);
|
|
3225
3287
|
}
|
|
3226
3288
|
let manifest = null;
|
|
3227
3289
|
try {
|
|
@@ -3231,48 +3293,16 @@ async function scanExtensionDirectory(layer, extensionsRoot, directory, enabled,
|
|
|
3231
3293
|
manifest = null;
|
|
3232
3294
|
}
|
|
3233
3295
|
if (!manifest) {
|
|
3234
|
-
return {
|
|
3235
|
-
diagnostic: {
|
|
3236
|
-
layer,
|
|
3237
|
-
directory,
|
|
3238
|
-
manifest_path: manifestPath,
|
|
3239
|
-
name: null,
|
|
3240
|
-
version: null,
|
|
3241
|
-
entry: null,
|
|
3242
|
-
priority: null,
|
|
3243
|
-
entry_path: null,
|
|
3244
|
-
enabled: null,
|
|
3245
|
-
status: "warn"
|
|
3246
|
-
},
|
|
3247
|
-
warnings: [`extension_manifest_invalid:${layer}:${directory}`],
|
|
3248
|
-
candidate: null
|
|
3249
|
-
};
|
|
3296
|
+
return buildUnavailableExtensionScan(layer, directory, manifestPath, `extension_manifest_invalid:${layer}:${directory}`);
|
|
3250
3297
|
}
|
|
3251
3298
|
const entryPath = path5.resolve(extensionDir, manifest.entry);
|
|
3252
3299
|
const entryWithinDirectoryByPath = isPathWithinDirectory(extensionDir, entryPath);
|
|
3253
3300
|
const entryExists = entryWithinDirectoryByPath ? await pathExists(entryPath) : false;
|
|
3254
3301
|
const entryWithinDirectory = entryWithinDirectoryByPath && entryExists ? await isCanonicalPathWithinDirectory(extensionDir, entryPath) : entryWithinDirectoryByPath;
|
|
3255
3302
|
const enabledForLoad = shouldEnable(manifest.name, enabled, disabled);
|
|
3256
|
-
const extensionWarnings = [];
|
|
3257
|
-
if (Array.isArray(manifest.legacy_capability_aliases) && manifest.legacy_capability_aliases.length > 0) {
|
|
3258
|
-
extensionWarnings.push(formatLegacyExtensionCapabilityAliasWarning(layer, manifest.name, manifest.legacy_capability_aliases));
|
|
3259
|
-
}
|
|
3260
|
-
for (const capability of collectUnknownExtensionCapabilities(manifest.capabilities)) {
|
|
3261
|
-
extensionWarnings.push(formatUnknownExtensionCapabilityWarning(layer, manifest.name, capability));
|
|
3262
|
-
}
|
|
3263
|
-
if (!entryWithinDirectory) {
|
|
3264
|
-
extensionWarnings.push(`extension_entry_outside_extension:${layer}:${manifest.name}`);
|
|
3265
|
-
} else if (!entryExists) {
|
|
3266
|
-
extensionWarnings.push(`extension_entry_missing:${layer}:${manifest.name}`);
|
|
3267
|
-
}
|
|
3268
3303
|
const pmVersionCompatibility = await evaluatePmMinVersionCompatibility(layer, manifest);
|
|
3269
|
-
if (pmVersionCompatibility.warning) {
|
|
3270
|
-
extensionWarnings.push(pmVersionCompatibility.warning);
|
|
3271
|
-
}
|
|
3272
3304
|
const pmMaxVersionCompatibility = await evaluatePmMaxVersionCompatibility(layer, manifest, pmMaxVersionExceededMode2);
|
|
3273
|
-
|
|
3274
|
-
extensionWarnings.push(pmMaxVersionCompatibility.warning);
|
|
3275
|
-
}
|
|
3305
|
+
const extensionWarnings = collectScannedExtensionWarnings(layer, manifest, entryWithinDirectory, entryExists, pmVersionCompatibility, pmMaxVersionCompatibility);
|
|
3276
3306
|
const extensionReady = entryWithinDirectory && entryExists && pmVersionCompatibility.allowed && pmMaxVersionCompatibility.allowed;
|
|
3277
3307
|
const sourcePackage = managedSourcePackages.get(`directory:${directory}`) ?? managedSourcePackages.get(`name:${manifest.name}`);
|
|
3278
3308
|
return {
|
|
@@ -4022,69 +4052,70 @@ function createExtensionApi(extension, hooks, commands, parsers, preflight, serv
|
|
|
4022
4052
|
received: sanitizeRegistrationValue(received),
|
|
4023
4053
|
hint
|
|
4024
4054
|
});
|
|
4025
|
-
const
|
|
4026
|
-
|
|
4027
|
-
if (
|
|
4028
|
-
|
|
4029
|
-
if (normalizedCommand2.length === 0) {
|
|
4030
|
-
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."));
|
|
4031
|
-
}
|
|
4032
|
-
if (typeof override !== "function") {
|
|
4033
|
-
const trace = registerCommandTrace("override", normalizedCommand2, 'registerCommand("<command>", (context) => unknown)', { command: commandOrDefinition, override }, "Provide a function as the second registerCommand argument.");
|
|
4034
|
-
throw createRegistrationValidationError(`registerCommand requires an override function when command name is provided (command="${normalizedCommand2}", registration_index=${trace.registration_index})`, trace);
|
|
4035
|
-
}
|
|
4036
|
-
if (!allowRegistration("commands.override", "registerCommand", "commands", { command: normalizedCommand2 })) {
|
|
4037
|
-
return;
|
|
4038
|
-
}
|
|
4039
|
-
commands.overrides.push({
|
|
4040
|
-
layer: extension.layer,
|
|
4041
|
-
name: extension.name,
|
|
4042
|
-
command: normalizedCommand2,
|
|
4043
|
-
run: override
|
|
4044
|
-
});
|
|
4045
|
-
return;
|
|
4046
|
-
}
|
|
4047
|
-
if (typeof commandOrDefinition !== "object" || commandOrDefinition === null) {
|
|
4048
|
-
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) => ... }).'));
|
|
4055
|
+
const registerCommandOverride = (command, override) => {
|
|
4056
|
+
const normalizedCommand = normalizeCommandName(command);
|
|
4057
|
+
if (normalizedCommand.length === 0) {
|
|
4058
|
+
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."));
|
|
4049
4059
|
}
|
|
4050
|
-
if (typeof
|
|
4051
|
-
|
|
4060
|
+
if (typeof override !== "function") {
|
|
4061
|
+
const trace = registerCommandTrace("override", normalizedCommand, 'registerCommand("<command>", (context) => unknown)', { command, override }, "Provide a function as the second registerCommand argument.");
|
|
4062
|
+
throw createRegistrationValidationError(`registerCommand requires an override function when command name is provided (command="${normalizedCommand}", registration_index=${trace.registration_index})`, trace);
|
|
4052
4063
|
}
|
|
4053
|
-
|
|
4054
|
-
|
|
4055
|
-
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."));
|
|
4064
|
+
if (!allowRegistration("commands.override", "registerCommand", "commands", { command: normalizedCommand })) {
|
|
4065
|
+
return;
|
|
4056
4066
|
}
|
|
4057
|
-
|
|
4058
|
-
|
|
4067
|
+
commands.overrides.push({
|
|
4068
|
+
layer: extension.layer,
|
|
4069
|
+
name: extension.name,
|
|
4070
|
+
command: normalizedCommand,
|
|
4071
|
+
run: override
|
|
4072
|
+
});
|
|
4073
|
+
};
|
|
4074
|
+
const resolveCommandDefinitionRunHandler = (definition, normalizedCommand) => {
|
|
4075
|
+
const runHandler = typeof definition.run === "function" ? definition.run : void 0;
|
|
4076
|
+
const legacyHandler = typeof definition.handler === "function" ? definition.handler : void 0;
|
|
4059
4077
|
if (!runHandler && legacyHandler) {
|
|
4060
4078
|
activationWarnings.push(`extension_command_definition_legacy_handler_alias:${extension.layer}:${extension.name}:${normalizedCommand}`);
|
|
4061
4079
|
}
|
|
4062
|
-
|
|
4080
|
+
return runHandler ?? legacyHandler;
|
|
4081
|
+
};
|
|
4082
|
+
const registerCommandDefinition = (definition) => {
|
|
4083
|
+
if (typeof definition !== "object" || definition === null) {
|
|
4084
|
+
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) => ... }).'));
|
|
4085
|
+
}
|
|
4086
|
+
if (typeof definition.name !== "string") {
|
|
4087
|
+
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."));
|
|
4088
|
+
}
|
|
4089
|
+
const normalizedCommand = normalizeCommandName(definition.name);
|
|
4090
|
+
if (normalizedCommand.length === 0) {
|
|
4091
|
+
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."));
|
|
4092
|
+
}
|
|
4093
|
+
const resolvedHandler = resolveCommandDefinitionRunHandler(definition, normalizedCommand);
|
|
4063
4094
|
if (typeof resolvedHandler !== "function") {
|
|
4064
|
-
const trace = registerCommandTrace("definition", normalizedCommand, "{ name: string; run: (context) => unknown; }",
|
|
4095
|
+
const trace = registerCommandTrace("definition", normalizedCommand, "{ name: string; run: (context) => unknown; }", definition, "Define command definition.run as a function.");
|
|
4065
4096
|
throw createRegistrationValidationError(`registerCommand requires a command definition run handler (command="${normalizedCommand}", registration_index=${trace.registration_index})`, trace);
|
|
4066
4097
|
}
|
|
4067
4098
|
try {
|
|
4068
|
-
assertOptionalStringField("registerCommand definition.action",
|
|
4069
|
-
assertOptionalStringField("registerCommand definition.description",
|
|
4070
|
-
assertOptionalStringField("registerCommand definition.intent",
|
|
4071
|
-
const action = resolveCommandDefinitionAction(normalizedCommand,
|
|
4099
|
+
assertOptionalStringField("registerCommand definition.action", definition.action);
|
|
4100
|
+
assertOptionalStringField("registerCommand definition.description", definition.description);
|
|
4101
|
+
assertOptionalStringField("registerCommand definition.intent", definition.intent);
|
|
4102
|
+
const action = resolveCommandDefinitionAction(normalizedCommand, definition.action);
|
|
4072
4103
|
if (!allowRegistration("commands.handler", "registerCommand", "commands", { command: normalizedCommand, action })) {
|
|
4073
4104
|
return;
|
|
4074
4105
|
}
|
|
4075
|
-
const description =
|
|
4076
|
-
const intent =
|
|
4077
|
-
const examples = normalizeOptionalStringArrayField("registerCommand definition.examples",
|
|
4078
|
-
const failureHints = normalizeOptionalStringArrayField("registerCommand definition.failure_hints",
|
|
4079
|
-
const argumentsDefinition = normalizeCommandDefinitionArguments(
|
|
4080
|
-
if (
|
|
4106
|
+
const description = definition.description?.trim();
|
|
4107
|
+
const intent = definition.intent?.trim();
|
|
4108
|
+
const examples = normalizeOptionalStringArrayField("registerCommand definition.examples", definition.examples);
|
|
4109
|
+
const failureHints = normalizeOptionalStringArrayField("registerCommand definition.failure_hints", definition.failure_hints);
|
|
4110
|
+
const argumentsDefinition = normalizeCommandDefinitionArguments(definition.arguments);
|
|
4111
|
+
if (definition.flags !== void 0) {
|
|
4081
4112
|
assertExtensionCapability(extension, "schema", "registerCommand flags");
|
|
4082
|
-
validateFlagDefinitions(
|
|
4113
|
+
validateFlagDefinitions(definition.flags);
|
|
4083
4114
|
registrations.flags.push({
|
|
4084
4115
|
layer: extension.layer,
|
|
4085
4116
|
name: extension.name,
|
|
4086
4117
|
target_command: normalizedCommand,
|
|
4087
|
-
flags: normalizeRegistrationRecordList("registerCommand definition.flags",
|
|
4118
|
+
flags: normalizeRegistrationRecordList("registerCommand definition.flags", definition.flags)
|
|
4088
4119
|
});
|
|
4089
4120
|
}
|
|
4090
4121
|
const registration = {
|
|
@@ -4106,7 +4137,7 @@ function createExtensionApi(extension, hooks, commands, parsers, preflight, serv
|
|
|
4106
4137
|
registrations.commands.push(registration);
|
|
4107
4138
|
} catch (error) {
|
|
4108
4139
|
const reason = formatUnknownError(error);
|
|
4109
|
-
const trace = registerCommandTrace("definition", normalizedCommand, "{ name: string; run: (context) => unknown; action?: string; arguments?: object[]; flags?: object[]; }",
|
|
4140
|
+
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.");
|
|
4110
4141
|
throw createRegistrationValidationError(`registerCommand definition metadata invalid (command="${normalizedCommand}", registration_index=${trace.registration_index}): ${reason}`, trace);
|
|
4111
4142
|
}
|
|
4112
4143
|
commands.handlers.push({
|
|
@@ -4116,6 +4147,14 @@ function createExtensionApi(extension, hooks, commands, parsers, preflight, serv
|
|
|
4116
4147
|
run: resolvedHandler
|
|
4117
4148
|
});
|
|
4118
4149
|
};
|
|
4150
|
+
const registerCommand = (commandOrDefinition, override) => {
|
|
4151
|
+
assertExtensionCapability(extension, "commands", "registerCommand");
|
|
4152
|
+
if (typeof commandOrDefinition === "string") {
|
|
4153
|
+
registerCommandOverride(commandOrDefinition, override);
|
|
4154
|
+
return;
|
|
4155
|
+
}
|
|
4156
|
+
registerCommandDefinition(commandOrDefinition);
|
|
4157
|
+
};
|
|
4119
4158
|
const registerParser = (command, override) => {
|
|
4120
4159
|
assertExtensionCapability(extension, "parser", "registerParser");
|
|
4121
4160
|
if (!allowRegistration("parser.override", "registerParser", "parser")) {
|
|
@@ -7260,6 +7299,6 @@ export {
|
|
|
7260
7299
|
readSettings,
|
|
7261
7300
|
writeSettings
|
|
7262
7301
|
};
|
|
7263
|
-
//# sourceMappingURL=chunk-
|
|
7302
|
+
//# sourceMappingURL=chunk-7R4QEMZZ.js.map
|
|
7264
7303
|
|
|
7265
|
-
//# debugId=
|
|
7304
|
+
//# debugId=03ed13d8-75ea-5f3b-b089-a7347a59acca
|