@unbrained/pm-cli 2026.7.3 → 2026.7.5
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/CHANGELOG.md +36 -0
- package/CONTRIBUTING.md +36 -7
- package/README.md +1 -9
- package/dist/cli/commands/calendar.d.ts +3 -2
- package/dist/cli/commands/calendar.js +5 -5
- package/dist/cli/commands/calendar.js.map +1 -1
- package/dist/cli/commands/claim.js +17 -3
- package/dist/cli/commands/claim.js.map +1 -1
- package/dist/cli/commands/close.js +34 -16
- package/dist/cli/commands/close.js.map +1 -1
- package/dist/cli/commands/completion.js +231 -345
- package/dist/cli/commands/completion.js.map +1 -1
- package/dist/cli/commands/copy.js +3 -3
- package/dist/cli/commands/copy.js.map +1 -1
- package/dist/cli/commands/create.d.ts +9 -59
- package/dist/cli/commands/create.js +162 -132
- package/dist/cli/commands/create.js.map +1 -1
- package/dist/cli/commands/extension/bundled-catalog.d.ts +6 -0
- package/dist/cli/commands/extension/bundled-catalog.js +15 -2
- package/dist/cli/commands/extension/bundled-catalog.js.map +1 -1
- package/dist/cli/commands/extension/describe.d.ts +6 -3
- package/dist/cli/commands/extension/describe.js +21 -9
- package/dist/cli/commands/extension/describe.js.map +1 -1
- package/dist/cli/commands/extension/doctor.d.ts +0 -4
- package/dist/cli/commands/extension/doctor.js +3 -3
- package/dist/cli/commands/extension/doctor.js.map +1 -1
- package/dist/cli/commands/extension/scaffold.js +59 -133
- package/dist/cli/commands/extension/scaffold.js.map +1 -1
- package/dist/cli/commands/extension/shared.d.ts +2 -7
- package/dist/cli/commands/extension/shared.js +4 -10
- package/dist/cli/commands/extension/shared.js.map +1 -1
- package/dist/cli/commands/extension.js +33 -8
- package/dist/cli/commands/extension.js.map +1 -1
- package/dist/cli/commands/files.js +3 -3
- package/dist/cli/commands/files.js.map +1 -1
- package/dist/cli/commands/history-compact.js +9 -18
- package/dist/cli/commands/history-compact.js.map +1 -1
- package/dist/cli/commands/history-repair.js +9 -19
- package/dist/cli/commands/history-repair.js.map +1 -1
- package/dist/cli/commands/init-agent-guidance.js +133 -97
- package/dist/cli/commands/init-agent-guidance.js.map +1 -1
- package/dist/cli/commands/init.js +3 -3
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/item-filter-options.d.ts +2 -0
- package/dist/cli/commands/item-filter-options.js +2 -2
- package/dist/cli/commands/item-filter-options.js.map +1 -1
- package/dist/cli/commands/mutation-command-options.d.ts +78 -0
- package/dist/cli/commands/mutation-command-options.js +10 -0
- package/dist/cli/commands/mutation-command-options.js.map +1 -0
- package/dist/cli/commands/profile.js +3 -3
- package/dist/cli/commands/profile.js.map +1 -1
- package/dist/cli/commands/reindex.js +4 -4
- package/dist/cli/commands/reindex.js.map +1 -1
- package/dist/cli/commands/restore.js +3 -3
- package/dist/cli/commands/restore.js.map +1 -1
- package/dist/cli/commands/schema.js +10 -10
- package/dist/cli/commands/schema.js.map +1 -1
- package/dist/cli/commands/shared-unset-fields.d.ts +19 -0
- package/dist/cli/commands/shared-unset-fields.js +31 -2
- package/dist/cli/commands/shared-unset-fields.js.map +1 -1
- package/dist/cli/commands/update.d.ts +2 -59
- package/dist/cli/commands/update.js +29 -98
- package/dist/cli/commands/update.js.map +1 -1
- package/dist/cli/commands/validate.js +4 -4
- package/dist/cli/commands/validate.js.map +1 -1
- package/dist/cli/error-guidance.js +107 -7
- package/dist/cli/error-guidance.js.map +1 -1
- package/dist/cli/main.d.ts +6 -2
- package/dist/cli/main.js +33 -12
- package/dist/cli/main.js.map +1 -1
- package/dist/cli/register-list-query.js +4 -2
- package/dist/cli/register-list-query.js.map +1 -1
- package/dist/cli/registration-helpers.js +12 -6
- package/dist/cli/registration-helpers.js.map +1 -1
- package/dist/cli-bundle/chunks/activity-4XQIDNM5.js +18 -0
- package/dist/cli-bundle/chunks/{activity-5YWLSPGE.js → activity-YKAKZTZ4.js} +11 -9
- package/dist/cli-bundle/chunks/{aggregate-2V2M3JZU.js → aggregate-EQX2RGB7.js} +16 -13
- package/dist/cli-bundle/chunks/{aggregate-2V2M3JZU.js.map → aggregate-EQX2RGB7.js.map} +1 -1
- package/dist/cli-bundle/chunks/{aggregate-EK7DXML7.js → aggregate-PEGZGJXD.js} +18 -15
- package/dist/cli-bundle/chunks/{aggregate-EK7DXML7.js.map → aggregate-PEGZGJXD.js.map} +1 -1
- package/dist/cli-bundle/chunks/{append-EZESUVJT.js → append-CZGUZ45Q.js} +11 -8
- package/dist/cli-bundle/chunks/{append-EZESUVJT.js.map → append-CZGUZ45Q.js.map} +1 -1
- package/dist/cli-bundle/chunks/{append-JFG4WQMG.js → append-NSQBCXZJ.js} +13 -10
- package/dist/cli-bundle/chunks/{append-JFG4WQMG.js.map → append-NSQBCXZJ.js.map} +1 -1
- package/dist/cli-bundle/chunks/chunk-3JZNEQBA.js +1413 -0
- package/dist/cli-bundle/chunks/chunk-3JZNEQBA.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-NOIEVOK5.js → chunk-3PL6LEKP.js} +16 -14
- package/dist/cli-bundle/chunks/{chunk-NOIEVOK5.js.map → chunk-3PL6LEKP.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-6KRFL33E.js → chunk-3U3VEWK6.js} +277 -119
- package/dist/cli-bundle/chunks/chunk-3U3VEWK6.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-Z5F6XZXE.js → chunk-3Y4OESPP.js} +14 -12
- package/dist/cli-bundle/chunks/{chunk-Z5F6XZXE.js.map → chunk-3Y4OESPP.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-HB4FAT3O.js → chunk-4LRVSBO6.js} +21 -15
- package/dist/cli-bundle/chunks/chunk-4LRVSBO6.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-T3P7PMZP.js → chunk-4OFLJHX6.js} +7 -5
- package/dist/cli-bundle/chunks/{chunk-T3P7PMZP.js.map → chunk-4OFLJHX6.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-JPATY4SE.js → chunk-4QQ6PM7M.js} +45 -557
- package/dist/cli-bundle/chunks/chunk-4QQ6PM7M.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-6CDCWKSX.js → chunk-53BTLLAF.js} +68 -331
- package/dist/cli-bundle/chunks/chunk-53BTLLAF.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-4WB6S4YX.js → chunk-57C2RLW5.js} +277 -112
- package/dist/cli-bundle/chunks/chunk-57C2RLW5.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-PULUSQAV.js → chunk-5B3X4Y22.js} +52 -63
- package/dist/cli-bundle/chunks/{chunk-PULUSQAV.js.map → chunk-5B3X4Y22.js.map} +3 -3
- package/dist/cli-bundle/chunks/{chunk-7LYO6S5A.js → chunk-5J2XPTAD.js} +10 -8
- package/dist/cli-bundle/chunks/{chunk-7LYO6S5A.js.map → chunk-5J2XPTAD.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-QCDTQCMW.js → chunk-5JE6SMYS.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-MHRS5FUX.js → chunk-5JZ7APJU.js} +153 -108
- package/dist/cli-bundle/chunks/chunk-5JZ7APJU.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-KHVGM5CS.js → chunk-5VVUKE3U.js} +544 -2368
- package/dist/cli-bundle/chunks/chunk-5VVUKE3U.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-RJH5VQHW.js → chunk-75U6M5ZD.js} +22 -16
- package/dist/cli-bundle/chunks/chunk-75U6M5ZD.js.map +1 -0
- package/dist/cli-bundle/chunks/chunk-7C2O74AE.js +23 -0
- package/dist/cli-bundle/chunks/chunk-7C2O74AE.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-ZFTKYWIF.js → chunk-7EQNAZX2.js} +14 -12
- package/dist/cli-bundle/chunks/{chunk-ZFTKYWIF.js.map → chunk-7EQNAZX2.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-Z4DGFQDH.js → chunk-7LQKVMPA.js} +14 -4
- package/dist/cli-bundle/chunks/chunk-7LQKVMPA.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-ERG65A2L.js → chunk-7MDXZAZS.js} +29 -7
- package/dist/cli-bundle/chunks/chunk-7MDXZAZS.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-OGLGI22K.js → chunk-7QH7DHUB.js} +74 -8
- package/dist/cli-bundle/chunks/chunk-7QH7DHUB.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-JBZ2NTKX.js → chunk-7WYXBPYQ.js} +7 -5
- package/dist/cli-bundle/chunks/{chunk-JBZ2NTKX.js.map → chunk-7WYXBPYQ.js.map} +1 -1
- package/dist/cli-bundle/chunks/chunk-AAEQMOC6.js +150 -0
- package/dist/cli-bundle/chunks/chunk-AAEQMOC6.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-K5DT2YKM.js → chunk-ABRA3BHY.js} +18 -16
- package/dist/cli-bundle/chunks/{chunk-K5DT2YKM.js.map → chunk-ABRA3BHY.js.map} +2 -2
- package/dist/cli-bundle/chunks/chunk-B5KXLBSJ.js +47 -0
- package/dist/cli-bundle/chunks/chunk-B5KXLBSJ.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-7CLLC75T.js → chunk-BFVHCAOO.js} +9 -7
- package/dist/cli-bundle/chunks/{chunk-7CLLC75T.js.map → chunk-BFVHCAOO.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-MDHWWBNZ.js → chunk-BVEUCSH2.js} +6 -4
- package/dist/cli-bundle/chunks/{chunk-MDHWWBNZ.js.map → chunk-BVEUCSH2.js.map} +1 -1
- package/dist/cli-bundle/chunks/chunk-C3PMDWGX.js +160 -0
- package/dist/cli-bundle/chunks/chunk-C3PMDWGX.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-T4XBKJ3F.js → chunk-D3UCE7RW.js} +7 -5
- package/dist/cli-bundle/chunks/{chunk-T4XBKJ3F.js.map → chunk-D3UCE7RW.js.map} +1 -1
- package/dist/cli-bundle/chunks/chunk-DC3QJQWI.js +275 -0
- package/dist/cli-bundle/chunks/chunk-DC3QJQWI.js.map +7 -0
- package/dist/cli-bundle/chunks/chunk-DLQ4ZTCU.js +634 -0
- package/dist/cli-bundle/chunks/chunk-DLQ4ZTCU.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-AJHYQCBJ.js → chunk-DRBV5UC2.js} +8 -23
- package/dist/cli-bundle/chunks/chunk-DRBV5UC2.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-NZ7QIUP5.js → chunk-E2FUG6GD.js} +67 -351
- package/dist/cli-bundle/chunks/chunk-E2FUG6GD.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-4PFVUUYV.js → chunk-EEY54JMF.js} +5 -3
- package/dist/cli-bundle/chunks/{chunk-4PFVUUYV.js.map → chunk-EEY54JMF.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-3W2HJKJX.js → chunk-EZFKWSC7.js} +94 -16
- package/dist/cli-bundle/chunks/{chunk-3W2HJKJX.js.map → chunk-EZFKWSC7.js.map} +4 -4
- package/dist/cli-bundle/chunks/{chunk-F6WNBITZ.js → chunk-FDBARR33.js} +40 -19
- package/dist/cli-bundle/chunks/{chunk-F6WNBITZ.js.map → chunk-FDBARR33.js.map} +3 -3
- package/dist/cli-bundle/chunks/{chunk-WRYERRZX.js → chunk-FGQKEDE4.js} +36 -12
- package/dist/cli-bundle/chunks/chunk-FGQKEDE4.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-CXR3CMBQ.js → chunk-FJRKQREY.js} +10 -18
- package/dist/cli-bundle/chunks/chunk-FJRKQREY.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-QNNQAAZ5.js → chunk-FUM6UMY4.js} +10 -11
- package/dist/cli-bundle/chunks/{chunk-QNNQAAZ5.js.map → chunk-FUM6UMY4.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-TQ6AX5SQ.js → chunk-GIWXVMZ3.js} +140 -334
- package/dist/cli-bundle/chunks/chunk-GIWXVMZ3.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-FZJM2TXF.js → chunk-HBYZDSK5.js} +19 -17
- package/dist/cli-bundle/chunks/{chunk-FZJM2TXF.js.map → chunk-HBYZDSK5.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-5IZUBZBR.js → chunk-HJE4JTKQ.js} +6 -4
- package/dist/cli-bundle/chunks/{chunk-5IZUBZBR.js.map → chunk-HJE4JTKQ.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-YSDFIY7N.js → chunk-HK72NWAD.js} +89 -18
- package/dist/cli-bundle/chunks/chunk-HK72NWAD.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-LBE5QFMZ.js → chunk-IJ6CO3JV.js} +41 -20
- package/dist/cli-bundle/chunks/{chunk-LBE5QFMZ.js.map → chunk-IJ6CO3JV.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-YF746GTH.js → chunk-JFCVQXZX.js} +139 -326
- package/dist/cli-bundle/chunks/chunk-JFCVQXZX.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-A3OQ7TFW.js → chunk-JLA7EVYV.js} +12 -10
- package/dist/cli-bundle/chunks/{chunk-A3OQ7TFW.js.map → chunk-JLA7EVYV.js.map} +1 -1
- package/dist/cli-bundle/chunks/chunk-K32L7HZO.js +76 -0
- package/dist/cli-bundle/chunks/chunk-K32L7HZO.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-32IUNTG4.js → chunk-K3AGVXSF.js} +37 -13
- package/dist/cli-bundle/chunks/chunk-K3AGVXSF.js.map +1 -0
- package/dist/cli-bundle/chunks/chunk-KDZ6K25I.js +79 -0
- package/dist/cli-bundle/chunks/chunk-KDZ6K25I.js.map +7 -0
- package/dist/cli-bundle/chunks/chunk-KGHH652T.js +44 -0
- package/dist/cli-bundle/chunks/chunk-KGHH652T.js.map +1 -0
- package/dist/cli-bundle/chunks/chunk-KL22PY6L.js +915 -0
- package/dist/cli-bundle/chunks/chunk-KL22PY6L.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-BI4R7HI2.js → chunk-KLG4ZULO.js} +12 -10
- package/dist/cli-bundle/chunks/{chunk-BI4R7HI2.js.map → chunk-KLG4ZULO.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-XRYSCRZR.js → chunk-LEKT4K7I.js} +74 -8
- package/dist/cli-bundle/chunks/chunk-LEKT4K7I.js.map +7 -0
- package/dist/cli-bundle/chunks/{contracts-X74F2GSM.js → chunk-MNZ7DRNC.js} +13 -10
- package/dist/cli-bundle/chunks/{contracts-X74F2GSM.js.map → chunk-MNZ7DRNC.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-4EXFFP7T.js → chunk-MTTXDAK4.js} +206 -147
- package/dist/cli-bundle/chunks/chunk-MTTXDAK4.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-KEZOIPCR.js → chunk-MZ7VNEVY.js} +8 -6
- package/dist/cli-bundle/chunks/{chunk-KEZOIPCR.js.map → chunk-MZ7VNEVY.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-5JIWFWOZ.js → chunk-N6DNM2FA.js} +2 -2
- package/dist/cli-bundle/chunks/{test-runs-QIR5MJPL.js → chunk-N7X4WP6L.js} +11 -8
- package/dist/cli-bundle/chunks/{test-runs-QIR5MJPL.js.map → chunk-N7X4WP6L.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-U3S2B7TA.js → chunk-NBFCNJ7Q.js} +206 -147
- package/dist/cli-bundle/chunks/chunk-NBFCNJ7Q.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-GVJE5T7Q.js → chunk-NER3KUUS.js} +2 -2
- package/dist/cli-bundle/chunks/chunk-NNHHXJB2.js +20 -0
- package/dist/cli-bundle/chunks/chunk-NNHHXJB2.js.map +1 -0
- package/dist/cli-bundle/chunks/chunk-OBA2WH65.js +918 -0
- package/dist/cli-bundle/chunks/chunk-OBA2WH65.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-YPWUSH72.js → chunk-OESSOFJ4.js} +14 -12
- package/dist/cli-bundle/chunks/{chunk-YPWUSH72.js.map → chunk-OESSOFJ4.js.map} +1 -1
- package/dist/cli-bundle/chunks/chunk-OK5NXCZB.js +238 -0
- package/dist/cli-bundle/chunks/chunk-OK5NXCZB.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-FUFFPIYA.js → chunk-OWTIRHX4.js} +28 -6
- package/dist/cli-bundle/chunks/chunk-OWTIRHX4.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-Z7RPDF2Y.js → chunk-P3VRG72Q.js} +10 -8
- package/dist/cli-bundle/chunks/{chunk-Z7RPDF2Y.js.map → chunk-P3VRG72Q.js.map} +1 -1
- package/dist/cli-bundle/chunks/chunk-P5TFTLWW.js +1423 -0
- package/dist/cli-bundle/chunks/chunk-P5TFTLWW.js.map +7 -0
- package/dist/cli-bundle/chunks/chunk-P5YORJRH.js +1977 -0
- package/dist/cli-bundle/chunks/chunk-P5YORJRH.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-MEZZZBYX.js → chunk-PDXT6Q55.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-EJ2OCBHF.js → chunk-PJ3A56YF.js} +46 -537
- package/dist/cli-bundle/chunks/chunk-PJ3A56YF.js.map +1 -0
- package/dist/cli-bundle/chunks/{test-runs-MG5VIGSK.js → chunk-PPAJG4GB.js} +13 -10
- package/dist/cli-bundle/chunks/{test-runs-MG5VIGSK.js.map → chunk-PPAJG4GB.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-572FKBRL.js → chunk-PPE4YUQM.js} +1725 -1663
- package/dist/cli-bundle/chunks/chunk-PPE4YUQM.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-ER4ME5U2.js → chunk-QHZO65XW.js} +8 -6
- package/dist/cli-bundle/chunks/{chunk-ER4ME5U2.js.map → chunk-QHZO65XW.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-T6AXEBOP.js → chunk-R3ZBLGTC.js} +9 -10
- package/dist/cli-bundle/chunks/{chunk-T6AXEBOP.js.map → chunk-R3ZBLGTC.js.map} +2 -2
- package/dist/cli-bundle/chunks/chunk-RCT3YJOK.js +624 -0
- package/dist/cli-bundle/chunks/chunk-RCT3YJOK.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-YVKZ3ANP.js → chunk-RX3HQSYG.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-LOWVNZBZ.js → chunk-S4APD35C.js} +4 -4
- package/dist/cli-bundle/chunks/{chunk-FH2H3CBD.js → chunk-S5AYOUT5.js} +8 -6
- package/dist/cli-bundle/chunks/{chunk-FH2H3CBD.js.map → chunk-S5AYOUT5.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-SYE6WMV6.js → chunk-STPSZ2XY.js} +19 -744
- package/dist/cli-bundle/chunks/chunk-STPSZ2XY.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-6NYJGMTY.js → chunk-T35XLYZF.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-P5L7Z2O6.js → chunk-T3ABIMGW.js} +5 -3
- package/dist/cli-bundle/chunks/{chunk-P5L7Z2O6.js.map → chunk-T3ABIMGW.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-SU2E4AWU.js → chunk-T3F4DF23.js} +16 -14
- package/dist/cli-bundle/chunks/{chunk-SU2E4AWU.js.map → chunk-T3F4DF23.js.map} +1 -1
- package/dist/cli-bundle/chunks/chunk-T4MX77AK.js +272 -0
- package/dist/cli-bundle/chunks/chunk-T4MX77AK.js.map +1 -0
- package/dist/cli-bundle/chunks/chunk-T5Y3QSNF.js +5354 -0
- package/dist/cli-bundle/chunks/chunk-T5Y3QSNF.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-ECU6MMTQ.js → chunk-TSPKZRRW.js} +50 -116
- package/dist/cli-bundle/chunks/chunk-TSPKZRRW.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-BE2SR6QL.js → chunk-TT42JUMF.js} +4 -4
- package/dist/cli-bundle/chunks/chunk-UHKX7I75.js +165 -0
- package/dist/cli-bundle/chunks/chunk-UHKX7I75.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-RAHINBVP.js → chunk-UI5BJ6DO.js} +1339 -1277
- package/dist/cli-bundle/chunks/chunk-UI5BJ6DO.js.map +7 -0
- package/dist/cli-bundle/chunks/chunk-US3T3W5J.js +1932 -0
- package/dist/cli-bundle/chunks/chunk-US3T3W5J.js.map +1 -0
- package/dist/cli-bundle/chunks/chunk-UZRDBL6W.js +175 -0
- package/dist/cli-bundle/chunks/chunk-UZRDBL6W.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-B4O5S7I3.js → chunk-VUHVWI4C.js} +13 -3
- package/dist/cli-bundle/chunks/chunk-VUHVWI4C.js.map +7 -0
- package/dist/cli-bundle/chunks/{contracts-L6ODXNUM.js → chunk-VZIYHZDX.js} +11 -8
- package/dist/cli-bundle/chunks/{contracts-L6ODXNUM.js.map → chunk-VZIYHZDX.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-U5TR4N7J.js → chunk-WISPVC2E.js} +9 -7
- package/dist/cli-bundle/chunks/{chunk-U5TR4N7J.js.map → chunk-WISPVC2E.js.map} +1 -1
- package/dist/cli-bundle/chunks/chunk-WVSGSZ6J.js +5434 -0
- package/dist/cli-bundle/chunks/chunk-WVSGSZ6J.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-HQAF23Q2.js → chunk-XQCG2JGW.js} +17 -749
- package/dist/cli-bundle/chunks/chunk-XQCG2JGW.js.map +7 -0
- package/dist/cli-bundle/chunks/chunk-Y76TWC45.js +550 -0
- package/dist/cli-bundle/chunks/chunk-Y76TWC45.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-L4SLHV6G.js → chunk-YD5FML7K.js} +464 -2239
- package/dist/cli-bundle/chunks/chunk-YD5FML7K.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-YSGTMDWC.js → chunk-YFIE7YK6.js} +7 -5
- package/dist/cli-bundle/chunks/{chunk-YSGTMDWC.js.map → chunk-YFIE7YK6.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-WYOIIFSE.js → chunk-YMABYTNG.js} +49 -115
- package/dist/cli-bundle/chunks/chunk-YMABYTNG.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-SU3TB4NS.js → chunk-YOF5VPKM.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-WJA3PXW7.js → chunk-YPPVU5GX.js} +11 -9
- package/dist/cli-bundle/chunks/{chunk-WJA3PXW7.js.map → chunk-YPPVU5GX.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-GUYNUXQT.js → chunk-YQMMMONE.js} +6 -4
- package/dist/cli-bundle/chunks/{chunk-GUYNUXQT.js.map → chunk-YQMMMONE.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-AIKU3IIL.js → chunk-YSAH5FY5.js} +16 -14
- package/dist/cli-bundle/chunks/{chunk-AIKU3IIL.js.map → chunk-YSAH5FY5.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-KS6ATO47.js → chunk-YZIR4R3U.js} +153 -108
- package/dist/cli-bundle/chunks/chunk-YZIR4R3U.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-LCWQP6NM.js → chunk-Z2CRRZYF.js} +14 -12
- package/dist/cli-bundle/chunks/{chunk-LCWQP6NM.js.map → chunk-Z2CRRZYF.js.map} +1 -1
- package/dist/cli-bundle/chunks/chunk-ZAHXPXVY.js +533 -0
- package/dist/cli-bundle/chunks/chunk-ZAHXPXVY.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-UMNQZS4H.js → chunk-ZCJAA3JK.js} +8 -6
- package/dist/cli-bundle/chunks/{chunk-UMNQZS4H.js.map → chunk-ZCJAA3JK.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-EQURFOMH.js → chunk-ZD34OFFQ.js} +5 -3
- package/dist/cli-bundle/chunks/{chunk-EQURFOMH.js.map → chunk-ZD34OFFQ.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-67LARBDL.js → chunk-ZJB3UV5U.js} +54 -58
- package/dist/cli-bundle/chunks/chunk-ZJB3UV5U.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-5E7N4T2Z.js → chunk-ZMD35NYG.js} +2 -2
- package/dist/cli-bundle/chunks/chunk-ZVDL32GJ.js +241 -0
- package/dist/cli-bundle/chunks/chunk-ZVDL32GJ.js.map +7 -0
- package/dist/cli-bundle/chunks/{claim-5GU7OE67.js → claim-4DROPSIS.js} +30 -13
- package/dist/cli-bundle/chunks/claim-4DROPSIS.js.map +1 -0
- package/dist/cli-bundle/chunks/{claim-2BGBGSVI.js → claim-VX54TV5U.js} +29 -12
- package/dist/cli-bundle/chunks/claim-VX54TV5U.js.map +7 -0
- package/dist/cli-bundle/chunks/{close-AFVKPR57.js → close-3YRR3XY6.js} +9 -7
- package/dist/cli-bundle/chunks/close-OB2Y4QP5.js +16 -0
- package/dist/cli-bundle/chunks/{close-many-JKUJMHLG.js → close-many-AP4MWU36.js} +21 -18
- package/dist/cli-bundle/chunks/{close-many-JKUJMHLG.js.map → close-many-AP4MWU36.js.map} +1 -1
- package/dist/cli-bundle/chunks/{close-many-7KLOSYLP.js → close-many-OMZIGZB4.js} +19 -16
- package/dist/cli-bundle/chunks/{close-many-7KLOSYLP.js.map → close-many-OMZIGZB4.js.map} +1 -1
- package/dist/cli-bundle/chunks/{comments-DNWHEBOS.js → comments-MIW5MZOX.js} +12 -9
- package/dist/cli-bundle/chunks/{comments-DNWHEBOS.js.map → comments-MIW5MZOX.js.map} +1 -1
- package/dist/cli-bundle/chunks/{comments-RW23R3VE.js → comments-SAG5LSKL.js} +14 -11
- package/dist/cli-bundle/chunks/{comments-RW23R3VE.js.map → comments-SAG5LSKL.js.map} +1 -1
- package/dist/cli-bundle/chunks/{config-AUM5WBYA.js → config-DJJKZB5R.js} +20 -17
- package/dist/cli-bundle/chunks/{config-AUM5WBYA.js.map → config-DJJKZB5R.js.map} +1 -1
- package/dist/cli-bundle/chunks/{config-OZWSA2NP.js → config-V57QD47V.js} +22 -19
- package/dist/cli-bundle/chunks/{config-OZWSA2NP.js.map → config-V57QD47V.js.map} +1 -1
- package/dist/cli-bundle/chunks/{context-PKCEHQY3.js → context-4OQGIPSO.js} +15 -12
- package/dist/cli-bundle/chunks/{context-OYXRGY7S.js → context-WLA6IAWE.js} +15 -12
- package/dist/cli-bundle/chunks/contracts-HXJLKCRI.js +12 -0
- package/dist/cli-bundle/chunks/contracts-OJEXMKVW.js +16 -0
- package/dist/cli-bundle/chunks/{copy-I4NCLBR4.js → copy-LEE6P6EM.js} +17 -14
- package/dist/cli-bundle/chunks/{copy-I4NCLBR4.js.map → copy-LEE6P6EM.js.map} +2 -2
- package/dist/cli-bundle/chunks/{copy-6XOR3HKN.js → copy-OTJOWFL6.js} +18 -15
- package/dist/cli-bundle/chunks/{copy-6XOR3HKN.js.map → copy-OTJOWFL6.js.map} +1 -1
- package/dist/cli-bundle/chunks/create-WKOZKPQR.js +30 -0
- package/dist/cli-bundle/chunks/{create-PM45M6PE.js → create-XWWQFQ6S.js} +14 -12
- package/dist/cli-bundle/chunks/{delete-7YXHYG67.js → delete-62JQTYT4.js} +10 -7
- package/dist/cli-bundle/chunks/{delete-7YXHYG67.js.map → delete-62JQTYT4.js.map} +1 -1
- package/dist/cli-bundle/chunks/{delete-LPISP43T.js → delete-HQKGRNRZ.js} +12 -9
- package/dist/cli-bundle/chunks/{delete-LPISP43T.js.map → delete-HQKGRNRZ.js.map} +1 -1
- package/dist/cli-bundle/chunks/{deps-WATKQDE3.js → deps-55FTG6Z5.js} +12 -9
- package/dist/cli-bundle/chunks/{deps-WATKQDE3.js.map → deps-55FTG6Z5.js.map} +1 -1
- package/dist/cli-bundle/chunks/{deps-N2T26FME.js → deps-L2FPIAD3.js} +10 -7
- package/dist/cli-bundle/chunks/{deps-N2T26FME.js.map → deps-L2FPIAD3.js.map} +1 -1
- package/dist/cli-bundle/chunks/{docs-6LQ3GLM7.js → docs-6CRCSVKK.js} +11 -9
- package/dist/cli-bundle/chunks/{docs-6LQ3GLM7.js.map → docs-6CRCSVKK.js.map} +1 -1
- package/dist/cli-bundle/chunks/{docs-Z3X6JZLT.js → docs-S6UTOTO5.js} +9 -7
- package/dist/cli-bundle/chunks/{docs-Z3X6JZLT.js.map → docs-S6UTOTO5.js.map} +1 -1
- package/dist/cli-bundle/chunks/{eval-6DCLG52D.js → eval-N6UHFWVO.js} +15 -11
- package/dist/cli-bundle/chunks/{eval-6DCLG52D.js.map → eval-N6UHFWVO.js.map} +1 -1
- package/dist/cli-bundle/chunks/{eval-Y3ZCUTHK.js → eval-PHOTWYHI.js} +17 -13
- package/dist/cli-bundle/chunks/{eval-Y3ZCUTHK.js.map → eval-PHOTWYHI.js.map} +1 -1
- package/dist/cli-bundle/chunks/{extension-BNINIMT7.js → extension-NBAH62ML.js} +17 -11
- package/dist/cli-bundle/chunks/{extension-QWE4YYK5.js → extension-ZF6ZZPOU.js} +17 -11
- package/dist/cli-bundle/chunks/{files-FUYPSOFJ.js → files-6P57MRKL.js} +14 -11
- package/dist/cli-bundle/chunks/files-6P57MRKL.js.map +7 -0
- package/dist/cli-bundle/chunks/{files-6SGKHS6O.js → files-JPU3FNJ7.js} +15 -12
- package/dist/cli-bundle/chunks/files-JPU3FNJ7.js.map +1 -0
- package/dist/cli-bundle/chunks/{focus-2Q3K76G2.js → focus-LFZ6IDBR.js} +15 -11
- package/dist/cli-bundle/chunks/{focus-2Q3K76G2.js.map → focus-LFZ6IDBR.js.map} +1 -1
- package/dist/cli-bundle/chunks/{focus-ATLBWXXD.js → focus-WNMYCVYA.js} +13 -9
- package/dist/cli-bundle/chunks/{focus-ATLBWXXD.js.map → focus-WNMYCVYA.js.map} +1 -1
- package/dist/cli-bundle/chunks/{gc-RUYEMNRF.js → gc-AETFKZ44.js} +10 -7
- package/dist/cli-bundle/chunks/{gc-RUYEMNRF.js.map → gc-AETFKZ44.js.map} +1 -1
- package/dist/cli-bundle/chunks/{gc-TDWSDR66.js → gc-RLBP4QVN.js} +12 -9
- package/dist/cli-bundle/chunks/{gc-TDWSDR66.js.map → gc-RLBP4QVN.js.map} +1 -1
- package/dist/cli-bundle/chunks/{get-LY6M2JIM.js → get-NH2MPBCI.js} +18 -15
- package/dist/cli-bundle/chunks/{get-LY6M2JIM.js.map → get-NH2MPBCI.js.map} +1 -1
- package/dist/cli-bundle/chunks/{get-2WGLX74N.js → get-P4ZQXCPZ.js} +16 -13
- package/dist/cli-bundle/chunks/{get-2WGLX74N.js.map → get-P4ZQXCPZ.js.map} +1 -1
- package/dist/cli-bundle/chunks/{health-4RKHYS3T.js → health-3GVPMQBL.js} +36 -29
- package/dist/cli-bundle/chunks/{health-4RKHYS3T.js.map → health-3GVPMQBL.js.map} +1 -1
- package/dist/cli-bundle/chunks/{health-TMFVNYRA.js → health-DNTM72GJ.js} +34 -27
- package/dist/cli-bundle/chunks/{health-TMFVNYRA.js.map → health-DNTM72GJ.js.map} +1 -1
- package/dist/cli-bundle/chunks/history-RYKLC72X.js +20 -0
- package/dist/cli-bundle/chunks/{history-SGRRS72R.js → history-SGPYRAFT.js} +10 -8
- package/dist/cli-bundle/chunks/{history-compact-LOED43R3.js → history-compact-3F6VELO7.js} +26 -30
- package/dist/cli-bundle/chunks/history-compact-3F6VELO7.js.map +7 -0
- package/dist/cli-bundle/chunks/{history-compact-V5DNAQHH.js → history-compact-656Y2TN4.js} +27 -31
- package/dist/cli-bundle/chunks/history-compact-656Y2TN4.js.map +1 -0
- package/dist/cli-bundle/chunks/history-redact-4H3FCKF3.js +21 -0
- package/dist/cli-bundle/chunks/{history-redact-IRL7WJ3E.js → history-redact-54ICFKXM.js} +11 -9
- package/dist/cli-bundle/chunks/{history-repair-PGYQJMGD.js → history-repair-4N6SDVHK.js} +25 -30
- package/dist/cli-bundle/chunks/history-repair-4N6SDVHK.js.map +7 -0
- package/dist/cli-bundle/chunks/{history-repair-4WVBVHFR.js → history-repair-EVTO6LIH.js} +26 -31
- package/dist/cli-bundle/chunks/history-repair-EVTO6LIH.js.map +1 -0
- package/dist/cli-bundle/chunks/init-RPIPQUNV.js +32 -0
- package/dist/cli-bundle/chunks/init-SKQAESQS.js +28 -0
- package/dist/cli-bundle/chunks/{learnings-4FJY7WIW.js → learnings-2HTPZNGZ.js} +10 -8
- package/dist/cli-bundle/chunks/{learnings-4FJY7WIW.js.map → learnings-2HTPZNGZ.js.map} +1 -1
- package/dist/cli-bundle/chunks/{learnings-4BHWFFUV.js → learnings-YBIHY3D6.js} +12 -10
- package/dist/cli-bundle/chunks/{learnings-4BHWFFUV.js.map → learnings-YBIHY3D6.js.map} +1 -1
- package/dist/cli-bundle/chunks/{list-472TIOVK.js → list-64LHZ3HM.js} +10 -8
- package/dist/cli-bundle/chunks/{list-D7BF5CL2.js → list-7LXBTEKI.js} +10 -8
- package/dist/cli-bundle/chunks/{next-SFQZVX2B.js → next-7ODPAQ4U.js} +22 -18
- package/dist/cli-bundle/chunks/{next-SFQZVX2B.js.map → next-7ODPAQ4U.js.map} +1 -1
- package/dist/cli-bundle/chunks/{next-D5STGWI2.js → next-ODJUM4ZM.js} +24 -20
- package/dist/cli-bundle/chunks/{next-D5STGWI2.js.map → next-ODJUM4ZM.js.map} +1 -1
- package/dist/cli-bundle/chunks/{notes-6KNOSLIT.js → notes-72YXN5JX.js} +10 -8
- package/dist/cli-bundle/chunks/{notes-6KNOSLIT.js.map → notes-72YXN5JX.js.map} +1 -1
- package/dist/cli-bundle/chunks/{notes-W4UEICGF.js → notes-NJ7IQJX4.js} +12 -10
- package/dist/cli-bundle/chunks/{notes-W4UEICGF.js.map → notes-NJ7IQJX4.js.map} +1 -1
- package/dist/cli-bundle/chunks/{plan-MJQW5XK3.js → plan-R4NDQ27E.js} +18 -15
- package/dist/cli-bundle/chunks/{plan-MJQW5XK3.js.map → plan-R4NDQ27E.js.map} +1 -1
- package/dist/cli-bundle/chunks/{plan-JO6V7BXO.js → plan-XWY5T67S.js} +20 -17
- package/dist/cli-bundle/chunks/{plan-JO6V7BXO.js.map → plan-XWY5T67S.js.map} +1 -1
- package/dist/cli-bundle/chunks/profile-XQWEQKS3.js +397 -0
- package/dist/cli-bundle/chunks/profile-XQWEQKS3.js.map +1 -0
- package/dist/cli-bundle/chunks/profile-YRDHLMRO.js +400 -0
- package/dist/cli-bundle/chunks/profile-YRDHLMRO.js.map +7 -0
- package/dist/cli-bundle/chunks/{register-list-query-ELBHCCFI.js → register-list-query-5H66WFYF.js} +24 -21
- package/dist/cli-bundle/chunks/register-list-query-5H66WFYF.js.map +7 -0
- package/dist/cli-bundle/chunks/{register-list-query-GAPQ6DM3.js → register-list-query-FB3FNDLZ.js} +25 -22
- package/dist/cli-bundle/chunks/{register-list-query-ELBHCCFI.js.map → register-list-query-FB3FNDLZ.js.map} +1 -7
- package/dist/cli-bundle/chunks/{register-mutation-SJWMVIJ2.js → register-mutation-UJO23C7R.js} +42 -39
- package/dist/cli-bundle/chunks/{register-mutation-SJWMVIJ2.js.map → register-mutation-UJO23C7R.js.map} +1 -1
- package/dist/cli-bundle/chunks/{register-mutation-ROFE2YPC.js → register-mutation-Z2ETYHKS.js} +40 -37
- package/dist/cli-bundle/chunks/{register-mutation-ROFE2YPC.js.map → register-mutation-Z2ETYHKS.js.map} +1 -1
- package/dist/cli-bundle/chunks/{register-operations-MEKU3AKC.js → register-operations-A3XAM5J7.js} +39 -36
- package/dist/cli-bundle/chunks/{register-operations-MEKU3AKC.js.map → register-operations-A3XAM5J7.js.map} +1 -1
- package/dist/cli-bundle/chunks/{register-operations-IADFVH53.js → register-operations-SG7HBSUP.js} +37 -34
- package/dist/cli-bundle/chunks/{register-operations-IADFVH53.js.map → register-operations-SG7HBSUP.js.map} +1 -1
- package/dist/cli-bundle/chunks/{register-setup-AJWUSSQX.js → register-setup-I45OGJUV.js} +25 -19
- package/dist/cli-bundle/chunks/{register-setup-AJWUSSQX.js.map → register-setup-I45OGJUV.js.map} +1 -1
- package/dist/cli-bundle/chunks/{register-setup-3QJY43CY.js → register-setup-K6U3NVY5.js} +23 -17
- package/dist/cli-bundle/chunks/{register-setup-3QJY43CY.js.map → register-setup-K6U3NVY5.js.map} +1 -1
- package/dist/cli-bundle/chunks/restore-PXOFL6AM.js +19 -0
- package/dist/cli-bundle/chunks/{restore-44IHMMZZ.js → restore-YJ2ET6AT.js} +11 -9
- package/dist/cli-bundle/chunks/{scheduling-shortcuts-TSBK4AY5.js → scheduling-shortcuts-SSC4MYWQ.js} +14 -12
- package/dist/cli-bundle/chunks/{scheduling-shortcuts-TSBK4AY5.js.map → scheduling-shortcuts-SSC4MYWQ.js.map} +1 -1
- package/dist/cli-bundle/chunks/{scheduling-shortcuts-OLHNLAZY.js → scheduling-shortcuts-ULRG7MNP.js} +16 -14
- package/dist/cli-bundle/chunks/{scheduling-shortcuts-OLHNLAZY.js.map → scheduling-shortcuts-ULRG7MNP.js.map} +1 -1
- package/dist/cli-bundle/chunks/{schema-VBCELP5G.js → schema-2PUXCZ25.js} +10 -7
- package/dist/cli-bundle/chunks/{schema-IB2NZZWD.js → schema-Y6DXXK2F.js} +10 -7
- package/dist/cli-bundle/chunks/{search-7UBETML4.js → search-3S72CTD6.js} +13 -10
- package/dist/cli-bundle/chunks/{search-R227JOL6.js → search-WNUNBQXO.js} +13 -10
- package/dist/cli-bundle/chunks/{stats-FAG7COEH.js → stats-IJYTRQGV.js} +13 -10
- package/dist/cli-bundle/chunks/{stats-FAG7COEH.js.map → stats-IJYTRQGV.js.map} +1 -1
- package/dist/cli-bundle/chunks/{stats-MCK7PLYS.js → stats-L2D5Y2O5.js} +15 -12
- package/dist/cli-bundle/chunks/{stats-MCK7PLYS.js.map → stats-L2D5Y2O5.js.map} +1 -1
- package/dist/cli-bundle/chunks/{telemetry-DRPDZMAO.js → telemetry-L2CVOKVN.js} +11 -8
- package/dist/cli-bundle/chunks/{telemetry-DRPDZMAO.js.map → telemetry-L2CVOKVN.js.map} +1 -1
- package/dist/cli-bundle/chunks/{telemetry-GVVUQSJQ.js → telemetry-QBYWQA76.js} +13 -10
- package/dist/cli-bundle/chunks/{telemetry-GVVUQSJQ.js.map → telemetry-QBYWQA76.js.map} +1 -1
- package/dist/cli-bundle/chunks/{test-QY44WAMR.js → test-DQ2QFJ7W.js} +21 -15
- package/dist/cli-bundle/chunks/test-W7QBLVJS.js +41 -0
- package/dist/cli-bundle/chunks/{test-all-USPJHXFR.js → test-all-636NTRTT.js} +26 -19
- package/dist/cli-bundle/chunks/{test-all-USPJHXFR.js.map → test-all-636NTRTT.js.map} +1 -1
- package/dist/cli-bundle/chunks/{test-all-QD6QAEG7.js → test-all-DWYK3RG6.js} +24 -17
- package/dist/cli-bundle/chunks/{test-all-QD6QAEG7.js.map → test-all-DWYK3RG6.js.map} +1 -1
- package/dist/cli-bundle/chunks/test-runs-245OINZR.js +28 -0
- package/dist/cli-bundle/chunks/test-runs-245OINZR.js.map +1 -0
- package/dist/cli-bundle/chunks/test-runs-ZRD4GCTT.js +24 -0
- package/dist/cli-bundle/chunks/test-runs-ZRD4GCTT.js.map +7 -0
- package/dist/cli-bundle/chunks/update-SFLZPJXX.js +30 -0
- package/dist/cli-bundle/chunks/update-SFLZPJXX.js.map +1 -0
- package/dist/cli-bundle/chunks/update-SJZ6S77U.js +26 -0
- package/dist/cli-bundle/chunks/update-SJZ6S77U.js.map +7 -0
- package/dist/cli-bundle/chunks/{update-many-RATAARHU.js → update-many-DC7X3EWM.js} +32 -29
- package/dist/cli-bundle/chunks/{update-many-RATAARHU.js.map → update-many-DC7X3EWM.js.map} +1 -1
- package/dist/cli-bundle/chunks/{update-many-BEMTDA2X.js → update-many-SLLAMHT7.js} +34 -31
- package/dist/cli-bundle/chunks/{update-many-BEMTDA2X.js.map → update-many-SLLAMHT7.js.map} +1 -1
- package/dist/cli-bundle/chunks/{upgrade-VU46BLJZ.js → upgrade-HFFXLZJA.js} +19 -12
- package/dist/cli-bundle/chunks/{upgrade-VU46BLJZ.js.map → upgrade-HFFXLZJA.js.map} +1 -1
- package/dist/cli-bundle/chunks/{upgrade-NWMR3VQL.js → upgrade-UYQKM7RF.js} +21 -14
- package/dist/cli-bundle/chunks/{upgrade-NWMR3VQL.js.map → upgrade-UYQKM7RF.js.map} +1 -1
- package/dist/cli-bundle/chunks/{validate-NRY6MFXN.js → validate-PA4FDTOV.js} +35 -28
- package/dist/cli-bundle/chunks/validate-PA4FDTOV.js.map +7 -0
- package/dist/cli-bundle/chunks/{validate-GAJ6FUSI.js → validate-Z7L75YEJ.js} +35 -28
- package/dist/cli-bundle/chunks/validate-Z7L75YEJ.js.map +1 -0
- package/dist/cli-bundle/main.js +173 -57
- package/dist/cli-bundle/main.js.map +2 -2
- package/dist/cli-bundle/sdk-runtime.js +247 -0
- package/dist/cli-bundle/sdk-runtime.js.map +7 -0
- package/dist/cli-bundle/sdk-testing.js +101 -0
- package/dist/cli-bundle/sdk-testing.js.map +7 -0
- package/dist/cli-bundle/sdk.js +787 -0
- package/dist/cli-bundle/sdk.js.map +7 -0
- package/dist/core/config/nested-settings.d.ts +4 -3
- package/dist/core/config/nested-settings.js +17 -6
- package/dist/core/config/nested-settings.js.map +1 -1
- package/dist/core/extensions/activation-summary.d.ts +6 -0
- package/dist/core/extensions/activation-summary.js +10 -4
- package/dist/core/extensions/activation-summary.js.map +1 -1
- package/dist/core/extensions/capability-usage.d.ts +6 -0
- package/dist/core/extensions/capability-usage.js +10 -4
- package/dist/core/extensions/capability-usage.js.map +1 -1
- package/dist/core/extensions/extension-types.d.ts +6 -2
- package/dist/core/extensions/extension-types.js +2 -2
- package/dist/core/extensions/extension-types.js.map +1 -1
- package/dist/core/extensions/loader.d.ts +3 -0
- package/dist/core/extensions/loader.js +11 -19
- package/dist/core/extensions/loader.js.map +1 -1
- package/dist/core/history/history-rewrite.d.ts +10 -0
- package/dist/core/history/history-rewrite.js +28 -4
- package/dist/core/history/history-rewrite.js.map +1 -1
- package/dist/core/item/parent-reference-policy.d.ts +9 -1
- package/dist/core/item/parent-reference-policy.js +28 -4
- package/dist/core/item/parent-reference-policy.js.map +1 -1
- package/dist/core/item/type-registry.d.ts +1 -0
- package/dist/core/item/type-registry.js +153 -177
- package/dist/core/item/type-registry.js.map +1 -1
- package/dist/core/lock/lock.d.ts +28 -1
- package/dist/core/lock/lock.js +254 -20
- package/dist/core/lock/lock.js.map +1 -1
- package/dist/core/search/background-refresh.js +7 -19
- package/dist/core/search/background-refresh.js.map +1 -1
- package/dist/core/search/http-client.d.ts +0 -1
- package/dist/core/search/http-client.js +3 -3
- package/dist/core/search/http-client.js.map +1 -1
- package/dist/core/shared/constants.js +3 -2
- package/dist/core/shared/constants.js.map +1 -1
- package/dist/core/shared/errors.d.ts +1 -0
- package/dist/core/shared/errors.js +2 -2
- package/dist/core/shared/errors.js.map +1 -1
- package/dist/core/shared/primitives.d.ts +12 -0
- package/dist/core/shared/primitives.js +29 -2
- package/dist/core/shared/primitives.js.map +1 -1
- package/dist/core/store/item-store.js +3 -3
- package/dist/core/store/item-store.js.map +1 -1
- package/dist/core/store/settings-validator.d.ts +1 -0
- package/dist/core/store/settings-validator.js +6 -3
- package/dist/core/store/settings-validator.js.map +1 -1
- package/dist/core/store/settings.js +3 -3
- package/dist/core/store/settings.js.map +1 -1
- package/dist/core/validate/fix-planning.d.ts +0 -2
- package/dist/core/validate/fix-planning.js +3 -3
- package/dist/core/validate/fix-planning.js.map +1 -1
- package/dist/sdk/cli-contracts/commander-mutation-options.js +3 -2
- package/dist/sdk/cli-contracts/commander-mutation-options.js.map +1 -1
- package/dist/sdk/cli-contracts/flag-contracts.js +5 -2
- package/dist/sdk/cli-contracts/flag-contracts.js.map +1 -1
- package/dist/sdk/cli-contracts/tool-option-contracts.js +4 -2
- package/dist/sdk/cli-contracts/tool-option-contracts.js.map +1 -1
- package/dist/sdk/cli-contracts/tool-schema.js +55 -94
- package/dist/sdk/cli-contracts/tool-schema.js.map +1 -1
- package/dist/sdk/errors.d.ts +21 -2
- package/dist/sdk/errors.js +8 -2
- package/dist/sdk/errors.js.map +1 -1
- package/dist/sdk/package-import-adapters.d.ts +90 -2
- package/dist/sdk/package-import-adapters.js +275 -3
- package/dist/sdk/package-import-adapters.js.map +1 -1
- package/dist/sdk/runtime.d.ts +1 -1
- package/dist/sdk/runtime.js +3 -3
- package/dist/sdk/runtime.js.map +1 -1
- package/dist/sdk/testing.js +41 -19
- package/dist/sdk/testing.js.map +1 -1
- package/dist/types.d.ts +6 -0
- package/dist/types.js +2 -2
- package/dist/types.js.map +1 -1
- package/docs/ARCHITECTURE.md +27 -0
- package/docs/CONFIGURATION.md +3 -0
- package/docs/README.md +1 -0
- package/docs/SDK_PRIMITIVE_INVENTORY.md +55 -0
- package/docs/TESTING.md +5 -1
- package/docs/examples/ci/github-actions-pm-extension-gate.yml +5 -5
- package/docs/examples/ci/gitlab-ci-pm-extension-gate.yml +1 -1
- package/docs/examples/ci/jenkins-pm-extension-gate.Jenkinsfile +1 -1
- package/package.json +14 -26
- package/packages/pm-beads/extensions/beads/package.json +3 -0
- package/packages/pm-beads/extensions/beads/runtime-loader.ts +50 -41
- package/packages/pm-beads/extensions/beads/runtime.ts +106 -223
- package/packages/pm-calendar/extensions/calendar/package.json +3 -0
- package/packages/pm-calendar/extensions/calendar/runtime.ts +21 -18
- package/packages/pm-command-kit/extensions/command-kit/package.json +3 -0
- package/packages/pm-governance-audit/extensions/governance-audit/package.json +3 -0
- package/packages/pm-guide-shell/extensions/guide-shell/package.json +3 -0
- package/packages/pm-guide-shell/extensions/guide-shell/runtime.ts +9 -11
- package/packages/pm-kanban/extensions/kanban/package.json +3 -0
- package/packages/pm-lifecycle-hooks/extensions/lifecycle-hooks/package.json +3 -0
- package/packages/pm-search-advanced/extensions/search-advanced/package.json +3 -0
- package/packages/pm-templates/extensions/templates/package.json +3 -0
- package/packages/pm-todos/extensions/todos/package.json +3 -0
- package/packages/pm-todos/extensions/todos/runtime-loader.ts +62 -72
- package/packages/pm-todos/extensions/todos/runtime.ts +61 -257
- package/plugins/pm-claude/scripts/pm-mcp-server.mjs +73 -31
- package/plugins/pm-codex/scripts/pm-mcp-server.mjs +80 -34
- package/scripts/bundle-cli.mjs +12 -2
- package/scripts/install.ps1 +7 -7
- package/dist/cli-bundle/chunks/activity-BIML7K2D.js +0 -16
- package/dist/cli-bundle/chunks/chunk-32IUNTG4.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-4EXFFP7T.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-4WB6S4YX.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-572FKBRL.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-67LARBDL.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-6CDCWKSX.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-6KRFL33E.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-AJHYQCBJ.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-B4O5S7I3.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-CXR3CMBQ.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-ECU6MMTQ.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-EJ2OCBHF.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-ERG65A2L.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-FUFFPIYA.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-HB4FAT3O.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-HQAF23Q2.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-JPATY4SE.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-KHVGM5CS.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-KS6ATO47.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-L4SLHV6G.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-MHRS5FUX.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-NZ7QIUP5.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-OGLGI22K.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-RAHINBVP.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-RJH5VQHW.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-SYE6WMV6.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-TQ6AX5SQ.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-U3S2B7TA.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-WRYERRZX.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-WYOIIFSE.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-XRYSCRZR.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-YF746GTH.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-YSDFIY7N.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-Z4DGFQDH.js.map +0 -1
- package/dist/cli-bundle/chunks/claim-2BGBGSVI.js.map +0 -7
- package/dist/cli-bundle/chunks/claim-5GU7OE67.js.map +0 -1
- package/dist/cli-bundle/chunks/close-6YODBUIV.js +0 -14
- package/dist/cli-bundle/chunks/create-Z7YCH3BE.js +0 -28
- package/dist/cli-bundle/chunks/files-6SGKHS6O.js.map +0 -1
- package/dist/cli-bundle/chunks/files-FUYPSOFJ.js.map +0 -7
- package/dist/cli-bundle/chunks/history-CGNQJXFE.js +0 -18
- package/dist/cli-bundle/chunks/history-compact-LOED43R3.js.map +0 -7
- package/dist/cli-bundle/chunks/history-compact-V5DNAQHH.js.map +0 -1
- package/dist/cli-bundle/chunks/history-redact-N3JK7VBW.js +0 -19
- package/dist/cli-bundle/chunks/history-repair-4WVBVHFR.js.map +0 -1
- package/dist/cli-bundle/chunks/history-repair-PGYQJMGD.js.map +0 -7
- package/dist/cli-bundle/chunks/init-4GESW7RM.js +0 -26
- package/dist/cli-bundle/chunks/init-XIDPABA4.js +0 -22
- package/dist/cli-bundle/chunks/profile-3TOTMUR4.js +0 -1243
- package/dist/cli-bundle/chunks/profile-3TOTMUR4.js.map +0 -7
- package/dist/cli-bundle/chunks/profile-WIQY2KCV.js +0 -1205
- package/dist/cli-bundle/chunks/profile-WIQY2KCV.js.map +0 -1
- package/dist/cli-bundle/chunks/register-list-query-GAPQ6DM3.js.map +0 -1
- package/dist/cli-bundle/chunks/restore-EXHU34EU.js +0 -17
- package/dist/cli-bundle/chunks/test-SY76DZTO.js +0 -35
- package/dist/cli-bundle/chunks/update-A7EICML6.js +0 -24
- package/dist/cli-bundle/chunks/update-IKJZWLQC.js +0 -28
- package/dist/cli-bundle/chunks/validate-GAJ6FUSI.js.map +0 -1
- package/dist/cli-bundle/chunks/validate-NRY6MFXN.js.map +0 -7
- /package/dist/cli-bundle/chunks/{activity-BIML7K2D.js.map → activity-4XQIDNM5.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{activity-5YWLSPGE.js.map → activity-YKAKZTZ4.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-QCDTQCMW.js.map → chunk-5JE6SMYS.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-5JIWFWOZ.js.map → chunk-N6DNM2FA.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-GVJE5T7Q.js.map → chunk-NER3KUUS.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-MEZZZBYX.js.map → chunk-PDXT6Q55.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-YVKZ3ANP.js.map → chunk-RX3HQSYG.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-LOWVNZBZ.js.map → chunk-S4APD35C.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-6NYJGMTY.js.map → chunk-T35XLYZF.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-BE2SR6QL.js.map → chunk-TT42JUMF.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-SU3TB4NS.js.map → chunk-YOF5VPKM.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-5E7N4T2Z.js.map → chunk-ZMD35NYG.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{close-AFVKPR57.js.map → close-3YRR3XY6.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{close-6YODBUIV.js.map → close-OB2Y4QP5.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{context-PKCEHQY3.js.map → context-4OQGIPSO.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{context-OYXRGY7S.js.map → context-WLA6IAWE.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{create-Z7YCH3BE.js.map → contracts-HXJLKCRI.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{create-PM45M6PE.js.map → contracts-OJEXMKVW.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{extension-BNINIMT7.js.map → create-WKOZKPQR.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{extension-QWE4YYK5.js.map → create-XWWQFQ6S.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{history-CGNQJXFE.js.map → extension-NBAH62ML.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{history-SGRRS72R.js.map → extension-ZF6ZZPOU.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{history-redact-N3JK7VBW.js.map → history-RYKLC72X.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{history-redact-IRL7WJ3E.js.map → history-SGPYRAFT.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{init-XIDPABA4.js.map → history-redact-4H3FCKF3.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{init-4GESW7RM.js.map → history-redact-54ICFKXM.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{list-D7BF5CL2.js.map → init-RPIPQUNV.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{list-472TIOVK.js.map → init-SKQAESQS.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{restore-EXHU34EU.js.map → list-64LHZ3HM.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{restore-44IHMMZZ.js.map → list-7LXBTEKI.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{schema-VBCELP5G.js.map → restore-PXOFL6AM.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{schema-IB2NZZWD.js.map → restore-YJ2ET6AT.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{search-R227JOL6.js.map → schema-2PUXCZ25.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{search-7UBETML4.js.map → schema-Y6DXXK2F.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{test-QY44WAMR.js.map → search-3S72CTD6.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{test-SY76DZTO.js.map → search-WNUNBQXO.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{update-IKJZWLQC.js.map → test-DQ2QFJ7W.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{update-A7EICML6.js.map → test-W7QBLVJS.js.map} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../../../../core/shared/time.ts"],"sourcesContent":["/**\n * @module core/shared/time\n *\n * Provides shared primitives and utilities for Time.\n */\nimport { PmCliError } from \"./errors.js\";\nimport { evictOldestMemoEntries } from \"./memo.js\";\nimport { EXIT_CODE } from \"./constants.js\";\n\nconst RELATIVE_DEADLINE = /^([+-]?)(\\d+)([hdwm])$/i;\nconst COMPOUND_RELATIVE_DEADLINE = /^[+-]?\\d+[hdwm](?:[+-]\\d+[hdwm])+$/i;\nconst COMPACT_DATE = /^(\\d{4})(\\d{2})(\\d{2})$/;\nconst COMPACT_DATETIME = /^(\\d{4})(\\d{2})(\\d{2})(?:[T\\s]?)(\\d{2})(\\d{2})(\\d{2})?([.,]\\d{1,3})?(Z|[+-]\\d{2}:?\\d{2})?$/i;\nconst HYPHEN_TIME = /^(\\d{4}-\\d{2}-\\d{2})[T\\s](\\d{2})-(\\d{2})(?:-(\\d{2}))?([.,]\\d{1,3})?(Z|[+-]\\d{2}:?\\d{2})?$/i;\nconst COMPACT_TIME = /^(\\d{4}-\\d{2}-\\d{2})[T\\s](\\d{2})(\\d{2})(\\d{2})?([.,]\\d{1,3})?(Z|[+-]\\d{2}:?\\d{2})?$/i;\n\n/**\n * Implements now iso for the public runtime surface of this module.\n */\nexport function nowIso(): string {\n return new Date().toISOString();\n}\n\n/**\n * Implements check whether timestamp literal for the public runtime surface of this module.\n */\nexport function isTimestampLiteral(input: string): boolean {\n return Number.isFinite(Date.parse(input));\n}\n\n/**\n * Memoized `Date.parse` for {@link compareTimestampStrings}. Sort comparators call it\n * O(n log n) times over a corpus whose timestamp strings repeat heavily, and\n * `Date.parse` is expensive enough to show up in list/next/context profiles. The cap\n * bounds memory in long-lived hosts (the MCP server); half-eviction keeps the\n * newest-inserted half when the cap is hit.\n */\nconst TIMESTAMP_PARSE_MEMO_MAX_ENTRIES = 10_000;\nconst timestampParseMemo = new Map<string, number>();\n\nfunction parseTimestampMsMemoized(value: string): number {\n const memoized = timestampParseMemo.get(value);\n if (memoized !== undefined) {\n return memoized;\n }\n const parsed = Date.parse(value);\n if (timestampParseMemo.size >= TIMESTAMP_PARSE_MEMO_MAX_ENTRIES) {\n evictOldestMemoEntries(timestampParseMemo);\n }\n timestampParseMemo.set(value, parsed);\n return parsed;\n}\n\n/**\n * Implements compare timestamp strings for the public runtime surface of this module.\n */\nexport function compareTimestampStrings(left: string, right: string): number {\n const leftMs = parseTimestampMsMemoized(left);\n const rightMs = parseTimestampMsMemoized(right);\n if (Number.isFinite(leftMs) && Number.isFinite(rightMs) && leftMs !== rightMs) {\n return leftMs - rightMs;\n }\n return left.localeCompare(right);\n}\n\nfunction normalizeFraction(raw: string | undefined): string {\n if (!raw) return \"\";\n const digits = raw.slice(1);\n return `.${digits.padEnd(3, \"0\").slice(0, 3)}`;\n}\n\nfunction normalizeOffset(raw: string | undefined): string {\n if (!raw) return \"\";\n if (raw.toUpperCase() === \"Z\") return \"Z\";\n const compact = /^([+-]\\d{2})(\\d{2})$/.exec(raw);\n if (compact) return `${compact[1]}:${compact[2]}`;\n return raw;\n}\n\nfunction pushTimestampCandidate(candidates: string[], input: string, value: string | undefined): void {\n if (!value) return;\n if (value === input) return;\n if (candidates.includes(value)) return;\n candidates.push(value);\n}\n\nfunction normalizeTimestampCandidates(input: string): string[] {\n const candidates: string[] = [];\n const push = (value: string | undefined): void => pushTimestampCandidate(candidates, input, value);\n\n const compactDate = COMPACT_DATE.exec(input);\n if (compactDate) {\n const [, year, month, day] = compactDate;\n push(`${year}-${month}-${day}`);\n }\n\n const compactDateTime = COMPACT_DATETIME.exec(input);\n if (compactDateTime) {\n const [, year, month, day, hour, minute, secondRaw, fractionRaw, offsetRaw] = compactDateTime;\n const second = secondRaw ? `:${secondRaw}` : \"\";\n push(\n `${year}-${month}-${day}T${hour}:${minute}${second}${normalizeFraction(fractionRaw)}${normalizeOffset(offsetRaw)}`,\n );\n }\n\n const hyphenTime = HYPHEN_TIME.exec(input);\n if (hyphenTime) {\n const [, datePart, hour, minute, secondRaw, fractionRaw, offsetRaw] = hyphenTime;\n const second = secondRaw ? `:${secondRaw}` : \"\";\n push(`${datePart}T${hour}:${minute}${second}${normalizeFraction(fractionRaw)}${normalizeOffset(offsetRaw)}`);\n }\n\n const compactTime = COMPACT_TIME.exec(input);\n if (compactTime) {\n const [, datePart, hour, minute, secondRaw, fractionRaw, offsetRaw] = compactTime;\n const second = secondRaw ? `:${secondRaw}` : \"\";\n push(`${datePart}T${hour}:${minute}${second}${normalizeFraction(fractionRaw)}${normalizeOffset(offsetRaw)}`);\n }\n\n const datePrefixLength = 10;\n const datePrefix = input.slice(0, datePrefixLength);\n if (isHyphenDatePrefix(datePrefix)) {\n let index = datePrefixLength;\n while (index < input.length && isWhitespaceCharacter(input[index])) {\n index += 1;\n }\n if (index < input.length) {\n push(`${datePrefix}T${input.slice(index)}`);\n }\n }\n\n return candidates;\n}\n\nfunction parseTimestampWithFallbacks(input: string): number {\n const direct = Date.parse(input);\n if (Number.isFinite(direct)) return direct;\n for (const candidate of normalizeTimestampCandidates(input)) {\n const parsed = Date.parse(candidate);\n if (Number.isFinite(parsed)) return parsed;\n }\n return Number.NaN;\n}\n\nfunction isHyphenDatePrefix(value: string): boolean {\n if (value.length !== 10) {\n return false;\n }\n for (let index = 0; index < value.length; index += 1) {\n const character = value[index];\n if (index === 4 || index === 7) {\n if (character !== \"-\") {\n return false;\n }\n continue;\n }\n const code = character.charCodeAt(0);\n if (code < 48 || code > 57) {\n return false;\n }\n }\n return true;\n}\n\nfunction isWhitespaceCharacter(character: string | undefined): boolean {\n if (!character) {\n return false;\n }\n return (\n character === \" \" ||\n character === \"\\t\" ||\n character === \"\\n\" ||\n character === \"\\r\" ||\n character === \"\\f\" ||\n character === \"\\v\"\n );\n}\n\nfunction daysInUtcMonth(year: number, monthIndex: number): number {\n return new Date(Date.UTC(year, monthIndex + 1, 0)).getUTCDate();\n}\n\nconst MONTH_NAMES = [\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\",\n] as const;\n\n// Leading literal calendar date in either hyphenated (`2026-02-30`) or compact\n// (`20260230`) form, optionally followed by any time/zone component. We validate\n// the digits the caller actually typed — not the parsed instant — so timezone\n// offsets never produce a false \"impossible date\" rejection. The hyphenated form\n// is unambiguous, so anything may follow (`T`/space time, `Z`, `+/-` offset). The\n// compact form must be followed by end-of-string or a time digit (with an optional\n// `T`/space separator) so a no-separator compact datetime like `20260230135900Z`\n// is still guarded and a 7-digit non-date is not misread as a date.\nconst LEADING_HYPHEN_DATE = /^(\\d{4})-(\\d{2})-(\\d{2})/;\nconst LEADING_COMPACT_DATE = /^(\\d{4})(\\d{2})(\\d{2})(?:[T ]?\\d{2}|$)/;\n\n/**\n * Reject literal calendar dates whose day cannot exist (e.g. `2026-02-30`, which JS\n * `Date` silently rolls forward to March 2). Without this, agents that pass an\n * impossible deadline get a silently-wrong stored date instead of an actionable\n * error. Only triggers on a leading literal date; relative tokens, \"now\", and pure\n * times are untouched. Month 00 / >12 is also rejected with a clear message rather\n * than falling through to the generic \"invalid value\" path.\n */\nfunction assertRealCalendarDate(originalInput: string, trimmed: string, fieldLabel: string): void {\n const match = LEADING_HYPHEN_DATE.exec(trimmed) ?? LEADING_COMPACT_DATE.exec(trimmed);\n if (!match) {\n return;\n }\n const year = Number.parseInt(match[1], 10);\n const month = Number.parseInt(match[2], 10);\n const day = Number.parseInt(match[3], 10);\n const label = fieldLabel?.trim() || \"deadline\";\n if (month < 1 || month > 12) {\n throw new PmCliError(\n `Invalid ${label} value \"${originalInput}\". Month \"${match[2]}\" is out of range — use a month between 01 and 12.`,\n EXIT_CODE.USAGE,\n );\n }\n const maxDay = daysInUtcMonth(year, month - 1);\n if (day < 1 || day > maxDay) {\n throw new PmCliError(\n `Invalid ${label} value \"${originalInput}\". ${MONTH_NAMES[month - 1]} ${year} has ${maxDay} days, so day \"${match[3]}\" does not exist. Use a real YYYY-MM-DD calendar date.`,\n EXIT_CODE.USAGE,\n );\n }\n}\n\nfunction addUtcMonths(now: Date, amount: number): Date {\n const result = new Date(now.getTime());\n const startDay = result.getUTCDate();\n const targetMonthIndex = result.getUTCMonth() + amount;\n const targetYear = result.getUTCFullYear() + Math.floor(targetMonthIndex / 12);\n const targetMonth = ((targetMonthIndex % 12) + 12) % 12;\n const day = Math.min(startDay, daysInUtcMonth(targetYear, targetMonth));\n result.setUTCFullYear(targetYear, targetMonth, day);\n return result;\n}\n\n/**\n * Implements resolve iso or relative for the public runtime surface of this module.\n */\nexport function resolveIsoOrRelative(\n input: string,\n now: Date = new Date(),\n fieldLabel = \"deadline\",\n): string {\n const trimmed = input.trim();\n if (trimmed.toLowerCase() === \"now\") {\n return now.toISOString();\n }\n const relative = RELATIVE_DEADLINE.exec(trimmed);\n if (relative) {\n const sign = relative[1] === \"-\" ? -1 : 1;\n const amount = Number.parseInt(relative[2], 10) * sign;\n const unit = relative[3].toLowerCase();\n if (unit === \"m\") {\n return addUtcMonths(now, amount).toISOString();\n }\n const msPerUnit = unit === \"h\" ? 60 * 60 * 1000 : unit === \"d\" ? 24 * 60 * 60 * 1000 : 7 * 24 * 60 * 60 * 1000;\n return new Date(now.getTime() + amount * msPerUnit).toISOString();\n }\n\n assertRealCalendarDate(input, trimmed, fieldLabel);\n\n const timestamp = parseTimestampWithFallbacks(trimmed);\n if (!Number.isFinite(timestamp)) {\n const normalizedLabel = fieldLabel.trim().length > 0 ? fieldLabel.trim() : \"deadline\";\n const guidance = COMPOUND_RELATIVE_DEADLINE.test(trimmed)\n ? \"Compound relative expressions like +3d+1h are not supported; use a single relative token (for example +3d) or an ISO/date string.\"\n : 'Use ISO/date string input, \"now\", or relative +6h/-6h/+1d/-1d/+2w/-2w/+6m/-6m.';\n throw new PmCliError(\n `Invalid ${normalizedLabel} value \"${input}\". ${guidance}`,\n EXIT_CODE.USAGE,\n );\n }\n return new Date(timestamp).toISOString();\n}\n\nexport const _testOnly = {\n normalizeOffset,\n pushTimestampCandidate,\n normalizeTimestampCandidates,\n parseTimestampWithFallbacks,\n isWhitespaceCharacter,\n};\n"],"names":[],"mappings":"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","debugId":"6beae0c5-95ce-5ca2-9c64-67075f518c1a"}
|
|
@@ -1,15 +1,19 @@
|
|
|
1
1
|
|
|
2
|
-
!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]="
|
|
2
|
+
!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]="c4de3378-47cb-508f-a6a6-8635b65148e0")}catch(e){}}();
|
|
3
3
|
import {
|
|
4
4
|
resolveSubcommandFlagContractsForCommand
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-PPE4YUQM.js";
|
|
6
6
|
import {
|
|
7
|
+
PmCliError
|
|
8
|
+
} from "./chunk-US3T3W5J.js";
|
|
9
|
+
import {
|
|
10
|
+
DEFAULT_EXTENSION_PRIORITY,
|
|
7
11
|
EXIT_CODE,
|
|
8
|
-
|
|
12
|
+
isCanonicalPathWithinDirectory,
|
|
9
13
|
isPathWithinDirectory,
|
|
10
14
|
levenshteinDistanceWithinLimit,
|
|
11
15
|
pathExists
|
|
12
|
-
} from "./chunk-
|
|
16
|
+
} from "./chunk-YD5FML7K.js";
|
|
13
17
|
|
|
14
18
|
// dist/cli/bootstrap-args.js
|
|
15
19
|
function parseBootstrapPathToken(token, next) {
|
|
@@ -686,7 +690,6 @@ function parseBootstrapTypeValue(argv) {
|
|
|
686
690
|
// dist/cli/commands/extension/shared.js
|
|
687
691
|
import fs from "node:fs/promises";
|
|
688
692
|
import path from "node:path";
|
|
689
|
-
var DEFAULT_EXTENSION_PRIORITY = 100;
|
|
690
693
|
function normalizeStringList(values) {
|
|
691
694
|
return [...new Set(values.map((value) => value.trim()).filter((value) => value.length > 0))].sort((left, right) => left.localeCompare(right));
|
|
692
695
|
}
|
|
@@ -745,10 +748,6 @@ function parseExtensionManifest(raw) {
|
|
|
745
748
|
capabilities
|
|
746
749
|
};
|
|
747
750
|
}
|
|
748
|
-
async function isCanonicalPathWithinDirectory(directory, targetPath) {
|
|
749
|
-
const [resolvedDirectory, resolvedTargetPath] = await Promise.all([fs.realpath(directory), fs.realpath(targetPath)]);
|
|
750
|
-
return isPathWithinDirectory(resolvedDirectory, resolvedTargetPath);
|
|
751
|
-
}
|
|
752
751
|
async function validateExtensionDirectory(directory) {
|
|
753
752
|
const manifestPath = path.join(directory, "manifest.json");
|
|
754
753
|
if (!await pathExists(manifestPath)) {
|
|
@@ -800,6 +799,6 @@ export {
|
|
|
800
799
|
parseExtensionManifest,
|
|
801
800
|
validateExtensionDirectory
|
|
802
801
|
};
|
|
803
|
-
//# sourceMappingURL=chunk-
|
|
802
|
+
//# sourceMappingURL=chunk-FUM6UMY4.js.map
|
|
804
803
|
|
|
805
|
-
//# debugId=
|
|
804
|
+
//# debugId=c4de3378-47cb-508f-a6a6-8635b65148e0
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../../../cli/bootstrap-args.ts","../../../../../../../../cli/commands/extension/shared.ts"],"sourcesContent":["/**\n * @module cli/bootstrap-args\n *\n * Provides CLI runtime support for Bootstrap Args.\n */\nimport { resolveSubcommandFlagContractsForCommand, type CliFlagContract } from \"../sdk/cli-contracts.js\";\nimport { levenshteinDistanceWithinLimit } from \"../core/shared/levenshtein.js\";\n\nfunction parseBootstrapPathToken(\n token: string,\n next: string | undefined,\n): { consumed: number; pathValue?: string; preferred: boolean } | null {\n if (token === \"--path\" || token === \"--pm-path\") {\n if (typeof next === \"string\" && next.length > 0) {\n return {\n consumed: 2,\n pathValue: next,\n preferred: token === \"--pm-path\",\n };\n }\n return {\n consumed: 1,\n preferred: token === \"--pm-path\",\n };\n }\n\n const inlinePrefix = token.startsWith(\"--path=\")\n ? \"--path=\"\n : token.startsWith(\"--pm-path=\")\n ? \"--pm-path=\"\n : undefined;\n if (!inlinePrefix) {\n return null;\n }\n\n const value = token.slice(inlinePrefix.length);\n if (value.length > 0) {\n return {\n consumed: 1,\n pathValue: value,\n preferred: inlinePrefix === \"--pm-path=\",\n };\n }\n return {\n consumed: 1,\n preferred: inlinePrefix === \"--pm-path=\",\n };\n}\n\n/**\n * Documents the bootstrap global options payload exchanged by command, SDK, and package integrations.\n */\nexport interface BootstrapGlobalOptions {\n path?: string;\n noExtensions: boolean;\n noPager: boolean;\n json: boolean;\n quiet: boolean;\n}\n\n/**\n * Implements parse bootstrap global options for the public runtime surface of this module.\n */\nexport function parseBootstrapGlobalOptions(argv: string[]): BootstrapGlobalOptions {\n let legacyPathValue: string | undefined;\n let pmPathValue: string | undefined;\n let noExtensions = false;\n let noPager = false;\n let json = false;\n let quiet = false;\n let index = 0;\n while (index < argv.length) {\n const token = argv[index];\n if (token === \"--\") {\n break;\n }\n if (token === \"--no-extensions\") {\n noExtensions = true;\n index += 1;\n continue;\n }\n if (token === \"--no-pager\") {\n noPager = true;\n index += 1;\n continue;\n }\n if (token === \"--json\") {\n json = true;\n index += 1;\n continue;\n }\n if (token === \"--quiet\") {\n quiet = true;\n index += 1;\n continue;\n }\n const parsedPath = parseBootstrapPathToken(token, argv[index + 1]);\n if (parsedPath) {\n if (parsedPath.pathValue !== undefined) {\n if (parsedPath.preferred) {\n pmPathValue = parsedPath.pathValue;\n } else {\n legacyPathValue = parsedPath.pathValue;\n }\n }\n index += parsedPath.consumed;\n continue;\n }\n index += 1;\n }\n return {\n path: pmPathValue ?? legacyPathValue,\n noExtensions,\n noPager,\n json,\n quiet,\n };\n}\n\n/**\n * Implements strip global bootstrap tokens for the public runtime surface of this module.\n */\nexport function stripGlobalBootstrapTokens(argv: string[]): string[] {\n const remaining: string[] = [];\n let index = 0;\n while (index < argv.length) {\n const token = argv[index];\n if (token === \"--\") {\n break;\n }\n if (\n token === \"--json\" ||\n token === \"--quiet\" ||\n token === \"--no-extensions\" ||\n token === \"--no-pager\" ||\n token === \"--profile\" ||\n token === \"--id-only\" ||\n token === \"--explain\"\n ) {\n index += 1;\n continue;\n }\n if (token === \"--path\" || token === \"--pm-path\") {\n index += 2;\n continue;\n }\n if (token.startsWith(\"--path=\") || token.startsWith(\"--pm-path=\")) {\n index += 1;\n continue;\n }\n remaining.push(token);\n index += 1;\n }\n return remaining;\n}\n\n/**\n * Documents the bootstrap help request payload exchanged by command, SDK, and package integrations.\n */\nexport interface BootstrapHelpRequest {\n requested: boolean;\n commandPathTokens: string[];\n}\n\n/**\n * Implements parse bootstrap help request for the public runtime surface of this module.\n */\nexport function parseBootstrapHelpRequest(argv: string[]): BootstrapHelpRequest {\n const stripped = stripGlobalBootstrapTokens(argv);\n const first = stripped[0]?.trim().toLowerCase();\n if (first === \"help\") {\n const commandPathTokens: string[] = [];\n for (let index = 1; index < stripped.length; index += 1) {\n const token = stripped[index];\n if (token.startsWith(\"-\")) {\n break;\n }\n commandPathTokens.push(token.trim().toLowerCase());\n }\n return {\n requested: true,\n commandPathTokens,\n };\n }\n\n const helpFlagIndex = stripped.findIndex((token) => token === \"--help\" || token === \"-h\");\n if (helpFlagIndex < 0) {\n return {\n requested: false,\n commandPathTokens: [],\n };\n }\n\n const commandPathTokens: string[] = [];\n for (const token of stripped) {\n if (token.startsWith(\"-\")) {\n break;\n }\n commandPathTokens.push(token.trim().toLowerCase());\n }\n return {\n requested: true,\n commandPathTokens,\n };\n}\n\n/**\n * Index of the command token in argv — the first non-flag token, skipping the\n * value-consuming/global bootstrap flags. Returns undefined when there is none\n * (bare invocation, only global flags, or a leading `--`). Single source of truth\n * for command-position scanning shared by {@link parseBootstrapCommandName} and the\n * command-alias rewrite so their precedence rules can never drift apart.\n */\nfunction findCommandTokenIndex(argv: string[]): number | undefined {\n for (let index = 0; index < argv.length; index += 1) {\n const token = argv[index];\n if (token === \"--\") {\n return undefined;\n }\n if (token === \"--path\" || token === \"--pm-path\") {\n index += 1;\n continue;\n }\n if (\n token.startsWith(\"--path=\") ||\n token.startsWith(\"--pm-path=\") ||\n token === \"--json\" ||\n token === \"--quiet\" ||\n token === \"--no-extensions\" ||\n token === \"--no-pager\" ||\n token === \"--profile\" ||\n token === \"--id-only\" ||\n token === \"--explain\"\n ) {\n continue;\n }\n if (token.startsWith(\"-\")) {\n continue;\n }\n return index;\n }\n return undefined;\n}\n\n/**\n * Implements parse bootstrap command name for the public runtime surface of this module.\n */\nexport function parseBootstrapCommandName(argv: string[]): string | undefined {\n const index = findCommandTokenIndex(argv);\n return index === undefined ? undefined : argv[index].trim().toLowerCase();\n}\n\nfunction shouldDisablePagerForInvocation(argv: string[], bootstrapGlobal: BootstrapGlobalOptions): boolean {\n if (bootstrapGlobal.noPager) {\n return true;\n }\n if (process.stdout.isTTY === true) {\n return false;\n }\n const helpRequest = parseBootstrapHelpRequest(argv);\n return helpRequest.requested;\n}\n\n/**\n * Implements apply bootstrap pager policy for the public runtime surface of this module.\n */\nexport function applyBootstrapPagerPolicy(argv: string[]): void {\n const bootstrapGlobal = parseBootstrapGlobalOptions(argv);\n if (!shouldDisablePagerForInvocation(argv, bootstrapGlobal)) {\n return;\n }\n process.env.PAGER = \"cat\";\n process.env.MANPAGER = \"cat\";\n process.env.GIT_PAGER = \"cat\";\n if (typeof process.env.LESS !== \"string\" || process.env.LESS.trim().length === 0) {\n process.env.LESS = \"FRX\";\n }\n}\n\ntype ExtensionSubcommandAction =\n | \"init\"\n | \"install\"\n | \"uninstall\"\n | \"explore\"\n | \"manage\"\n | \"doctor\"\n | \"adopt\"\n | \"adopt-all\"\n | \"activate\"\n | \"deactivate\";\n\nconst EXTENSION_ACTION_SYNTAX_TOKENS = new Set<ExtensionSubcommandAction>([\n \"install\",\n \"uninstall\",\n \"explore\",\n \"manage\",\n \"doctor\",\n \"adopt\",\n \"adopt-all\",\n \"activate\",\n \"deactivate\",\n]);\n\n/**\n * Implements normalize legacy extension action syntax for the public runtime surface of this module.\n */\nexport function normalizeLegacyExtensionActionSyntax(argv: string[]): string[] {\n const extensionIndex = argv.findIndex((token) => token === \"extension\");\n if (extensionIndex < 0) {\n return [...argv];\n }\n const actionToken = argv[extensionIndex + 1];\n if (!actionToken || actionToken.startsWith(\"-\")) {\n return [...argv];\n }\n if (!EXTENSION_ACTION_SYNTAX_TOKENS.has(actionToken as ExtensionSubcommandAction)) {\n return [...argv];\n }\n if (argv.includes(\"--help\") || argv.includes(\"-h\")) {\n return [...argv];\n }\n const forcedActionFlag = `--${actionToken}`;\n if (argv.includes(forcedActionFlag)) {\n return [...argv];\n }\n return [...argv.slice(0, extensionIndex + 1), forcedActionFlag, ...argv.slice(extensionIndex + 2)];\n}\n\ntype BootstrapNormalizationReason =\n | \"legacy_extension_action\"\n | \"command_alias\"\n | \"flag_alias\"\n | \"flag_typo\"\n | \"bare_key_value\"\n | \"list_merge\";\ntype BootstrapNormalizationConfidence = \"high\" | \"medium\";\n\n/**\n * Executable command aliases: a leading command token here is rewritten to its\n * canonical command BEFORE commander parses, so the alias actually runs instead of\n * merely being suggested. These are the highest-frequency aliases real agents type\n * (telemetry: `pm show <id>` alone is the single most common unknown-command) and\n * each target takes the same positional/flags as the alias (with `--comment`/\n * `--note`/`--learning` flag-aliased to `--add` on the target command). Keeping this\n * in one place means the alias is consistent across registration, commander dispatch,\n * telemetry, and error handling — all of which read the normalized argv.\n */\nexport const EXECUTABLE_COMMAND_ALIASES: Readonly<Record<string, string>> = {\n show: \"get\",\n view: \"get\",\n comment: \"comments\",\n note: \"notes\",\n learning: \"learnings\",\n};\n\n/**\n * Rewrite a leading command-alias token (e.g. `show` -> `get`) in place. Only the\n * command position is considered — the same token appearing later as an argument\n * (`pm get show`) is left untouched — and only when it is not preceded by `--` or a\n * value-consuming global flag, mirroring {@link parseBootstrapCommandName}.\n */\nfunction rewriteCommandAlias(argv: string[], trace: BootstrapNormalizationEvent[]): string[] {\n const index = findCommandTokenIndex(argv);\n if (index === undefined) {\n return argv;\n }\n const token = argv[index];\n const canonical = EXECUTABLE_COMMAND_ALIASES[token.trim().toLowerCase()];\n if (!canonical) {\n return argv;\n }\n const rewritten = [...argv];\n rewritten[index] = canonical;\n trace.push({ from: token, to: [canonical], reason: \"command_alias\", confidence: \"high\" });\n return rewritten;\n}\n\n/**\n * Documents the bootstrap normalization event payload exchanged by command, SDK, and package integrations.\n */\nexport interface BootstrapNormalizationEvent {\n from: string;\n to: string[];\n reason: BootstrapNormalizationReason;\n confidence: BootstrapNormalizationConfidence;\n}\n\n/**\n * Documents the bootstrap invocation normalization result payload exchanged by command, SDK, and package integrations.\n */\nexport interface BootstrapInvocationNormalizationResult {\n argv: string[];\n commandName: string | undefined;\n trace: BootstrapNormalizationEvent[];\n}\n\ninterface FlagLookup {\n canonicalByNormalized: Map<string, string | null>;\n canonicalByCompact: Map<string, string | null>;\n canonicalComparables: Array<{ canonicalFlag: string; comparable: string }>;\n listCanonicalFlags: Set<string>;\n}\n\nfunction normalizeFlagKeyToken(raw: string): string {\n const withoutPrefix = raw.replace(/^--?/, \"\");\n return withoutPrefix\n .replace(/_/g, \"-\")\n .replace(/([a-z0-9])([A-Z])/g, \"$1-$2\")\n .toLowerCase();\n}\n\nfunction toComparableFlagKey(raw: string): string {\n return normalizeFlagKeyToken(raw).replace(/-/g, \"\");\n}\n\nfunction markUnambiguousFlag(\n map: Map<string, string | null>,\n key: string,\n canonicalFlag: string,\n): void {\n const existing = map.get(key);\n if (existing === undefined) {\n map.set(key, canonicalFlag);\n return;\n }\n if (existing !== canonicalFlag) {\n map.set(key, null);\n }\n}\n\nfunction collectLongFlagCandidates(contract: CliFlagContract): string[] {\n const candidates: string[] = [];\n const pushLongFlag = (value: string | undefined): void => {\n if (typeof value !== \"string\") {\n return;\n }\n if (!value.startsWith(\"--\")) {\n return;\n }\n candidates.push(value);\n };\n pushLongFlag(contract.flag);\n for (const alias of contract.aliases ?? []) {\n pushLongFlag(alias);\n }\n return candidates;\n}\n\nfunction buildFlagLookup(\n commandName: string | undefined,\n contractsOverride?: CliFlagContract[],\n): FlagLookup {\n const contracts = contractsOverride ?? resolveSubcommandFlagContractsForCommand(commandName);\n const canonicalByNormalized = new Map<string, string | null>();\n const canonicalByCompact = new Map<string, string | null>();\n const canonicalComparablesMap = new Map<string, string>();\n const listCanonicalFlags = new Set<string>();\n for (const contract of contracts) {\n const longCandidates = collectLongFlagCandidates(contract);\n if (longCandidates.length === 0) {\n continue;\n }\n const canonicalFlag = `--${normalizeFlagKeyToken(longCandidates[0])}`;\n for (const candidate of longCandidates) {\n markUnambiguousFlag(canonicalByNormalized, normalizeFlagKeyToken(candidate), canonicalFlag);\n markUnambiguousFlag(canonicalByCompact, toComparableFlagKey(candidate), canonicalFlag);\n }\n const comparable = toComparableFlagKey(canonicalFlag);\n if (!canonicalComparablesMap.has(canonicalFlag)) {\n canonicalComparablesMap.set(canonicalFlag, comparable);\n }\n if (contract.list === true) {\n listCanonicalFlags.add(canonicalFlag);\n }\n }\n return {\n canonicalByNormalized,\n canonicalByCompact,\n canonicalComparables: [...canonicalComparablesMap.entries()].map(([canonicalFlag, comparable]) => ({\n canonicalFlag,\n comparable,\n })),\n listCanonicalFlags,\n };\n}\n\nfunction resolveCanonicalFlag(\n rawKey: string,\n lookup: FlagLookup,\n): { flag: string; reason: \"flag_alias\" | \"flag_typo\"; confidence: BootstrapNormalizationConfidence } | null {\n const normalizedKey = normalizeFlagKeyToken(rawKey);\n const direct = lookup.canonicalByNormalized.get(normalizedKey);\n if (typeof direct === \"string\") {\n return {\n flag: direct,\n reason: \"flag_alias\",\n confidence: \"high\",\n };\n }\n const comparableKey = normalizedKey.replace(/-/g, \"\");\n const compactMatch = lookup.canonicalByCompact.get(comparableKey);\n if (typeof compactMatch === \"string\") {\n return {\n flag: compactMatch,\n reason: \"flag_alias\",\n confidence: \"high\",\n };\n }\n const maxDistance = comparableKey.length >= 8 ? 2 : 1;\n let bestDistance = Number.POSITIVE_INFINITY;\n let bestFlag: string | undefined;\n let tied = false;\n for (const candidate of lookup.canonicalComparables) {\n const distance = levenshteinDistanceWithinLimit(comparableKey, candidate.comparable, maxDistance);\n if (distance === null) {\n continue;\n }\n if (distance < bestDistance) {\n bestDistance = distance;\n bestFlag = candidate.canonicalFlag;\n tied = false;\n continue;\n }\n if (distance === bestDistance && bestFlag !== candidate.canonicalFlag) {\n tied = true;\n }\n }\n if (!bestFlag || tied || !Number.isFinite(bestDistance) || bestDistance <= 0) {\n return null;\n }\n return {\n flag: bestFlag,\n reason: \"flag_typo\",\n confidence: bestDistance >= 2 ? \"medium\" : \"high\",\n };\n}\n\n/**\n * Implements list alias plural keys for the public runtime surface of this module.\n */\nexport function listAliasPluralKeys(normalizedKey: string): string[] {\n const candidates = [`${normalizedKey}s`];\n if (normalizedKey.endsWith(\"y\") && normalizedKey.length > 1) {\n candidates.push(`${normalizedKey.slice(0, -1)}ies`);\n }\n return candidates;\n}\n\nfunction parseBareKeyValueToken(token: string): { key: string; value: string } | null {\n if (token.includes(\"://\")) {\n return null;\n }\n const match = token.match(/^([A-Za-z][A-Za-z0-9_-]{1,63})([:=])(.*)$/);\n if (!match) {\n return null;\n }\n const key = match[1];\n const value = match[3];\n if (value.length === 0) {\n return null;\n }\n return {\n key,\n value,\n };\n}\n\nfunction normalizeLongOptionToken(\n token: string,\n lookup: FlagLookup,\n): { tokens: string[]; event?: BootstrapNormalizationEvent } {\n if (!token.startsWith(\"--\")) {\n return { tokens: [token] };\n }\n const equalsIndex = token.indexOf(\"=\");\n const key = equalsIndex >= 0 ? token.slice(0, equalsIndex) : token;\n const inlineValue = equalsIndex >= 0 ? token.slice(equalsIndex + 1) : undefined;\n const resolution = resolveCanonicalFlag(key, lookup);\n if (!resolution) {\n return { tokens: [token] };\n }\n const normalizedToken = inlineValue === undefined ? resolution.flag : `${resolution.flag}=${inlineValue}`;\n if (normalizedToken === token) {\n return { tokens: [token] };\n }\n return {\n tokens: [normalizedToken],\n event: {\n from: token,\n to: [normalizedToken],\n reason: resolution.reason,\n confidence: resolution.confidence,\n },\n };\n}\n\n// Global option flags whose value may legitimately begin with \"--\" (commander\n// accepts such values). Their value token must not be reinterpreted as a list\n// flag during coalescing. `--pm-path <dir>` and its legacy `--path <dir>`\n// alias are the documented cases; other globals\n// (--json/--quiet/--no-extensions/--no-pager/--profile) are boolean.\nconst GLOBAL_VALUE_CONSUMING_FLAGS = new Set<string>([\"--pm-path\", \"--path\"]);\n\nfunction splitCanonicalListToken(token: string): { flag: string; inlineValue?: string } | null {\n if (!token.startsWith(\"--\")) {\n return null;\n }\n const equalsIndex = token.indexOf(\"=\");\n if (equalsIndex < 0) {\n return { flag: token };\n }\n return {\n flag: token.slice(0, equalsIndex),\n inlineValue: token.slice(equalsIndex + 1),\n };\n}\n\ninterface ListFlagSlot {\n outputIndex: number;\n originalTokens: string[];\n values: string[];\n occurrences: number;\n}\n\ninterface ListFlagOccurrence {\n originalTokens: string[];\n value: string | undefined;\n consumed: number;\n}\n\ninterface ValuedListFlagOccurrence {\n originalTokens: string[];\n value: string;\n}\n\nfunction copyValueConsumingFlag(argv: string[], index: number, result: (string | null)[]): number {\n result.push(argv[index]);\n const next = argv[index + 1];\n if (typeof next === \"string\" && next !== \"--\") {\n result.push(next);\n return index + 2;\n }\n return index + 1;\n}\n\nfunction readListFlagOccurrence(\n argv: string[],\n index: number,\n parsed: { flag: string; inlineValue?: string },\n multiValueListFlags: Set<string>,\n): ListFlagOccurrence {\n if (parsed.inlineValue !== undefined) {\n return {\n originalTokens: [argv[index]],\n value: parsed.inlineValue,\n consumed: 1,\n };\n }\n\n const values: string[] = [];\n let valueIndex = index + 1;\n while (\n valueIndex < argv.length &&\n argv[valueIndex] !== \"--\" &&\n !argv[valueIndex].startsWith(\"-\") &&\n (values.length === 0 || multiValueListFlags.has(parsed.flag))\n ) {\n values.push(argv[valueIndex]);\n valueIndex += 1;\n }\n\n const consumed = values.length === 0 ? 1 : 1 + values.length;\n return {\n originalTokens: argv.slice(index, index + consumed),\n value: values.length === 0 ? undefined : values.join(\",\"),\n consumed,\n };\n}\n\nfunction recordListFlagOccurrence(\n slots: Map<string, ListFlagSlot>,\n result: (string | null)[],\n flag: string,\n occurrence: ValuedListFlagOccurrence,\n): void {\n const existing = slots.get(flag);\n if (existing) {\n existing.values.push(occurrence.value);\n existing.occurrences += 1;\n return;\n }\n\n slots.set(flag, {\n outputIndex: result.length,\n originalTokens: occurrence.originalTokens,\n values: [occurrence.value],\n occurrences: 1,\n });\n // Reserve the anchor position; finalized after the walk so we know the full\n // merged value or can restore the original token form for single uses.\n result.push(null);\n}\n\nfunction buildListFlagCoalescingSplices(\n slots: Map<string, ListFlagSlot>,\n multiValueListFlags: Set<string>,\n): {\n events: BootstrapNormalizationEvent[];\n splices: Array<{ outputIndex: number; tokens: string[] }>;\n} {\n const events: BootstrapNormalizationEvent[] = [];\n const splices: Array<{ outputIndex: number; tokens: string[] }> = [];\n for (const [flag, slot] of slots) {\n const shouldMerge = slot.occurrences >= 2 || (multiValueListFlags.has(flag) && slot.originalTokens.length > 2);\n if (!shouldMerge) {\n splices.push({ outputIndex: slot.outputIndex, tokens: slot.originalTokens });\n continue;\n }\n const mergedToken = `${flag}=${slot.values.join(\",\")}`;\n splices.push({ outputIndex: slot.outputIndex, tokens: [mergedToken] });\n events.push({\n from: `${flag} (x${slot.occurrences})`,\n to: [mergedToken],\n reason: \"list_merge\",\n confidence: \"high\",\n });\n }\n return { events, splices };\n}\n\nfunction applyListFlagSplices(result: (string | null)[], splices: Array<{ outputIndex: number; tokens: string[] }>): void {\n splices.sort((a, b) => b.outputIndex - a.outputIndex);\n for (const splice of splices) {\n result.splice(splice.outputIndex, 1, ...splice.tokens);\n }\n}\n\n/**\n * Coalesce repeated occurrences of comma-separated list flags into a single\n * `--flag=v1,v2,v3` token anchored at the FIRST occurrence. Without this,\n * Commander treats these flags as scalars and silently keeps only the last\n * value (data loss). Both `--flag value` and `--flag=value` forms are merged;\n * a value-less occurrence is preserved untouched, and a `--` terminator stops\n * coalescing (remainder is passed through verbatim).\n *\n * `valueConsumingFlags` lists option flags (e.g. global `--path`) whose value\n * may itself begin with `--`. Their value token is emitted verbatim so a\n * list-flag-looking value (`--path --tags`) is never reinterpreted as a flag\n * nor allowed to swallow the following command/positional token.\n */\nexport function coalesceRepeatedListFlags(\n argv: string[],\n listFlags: Set<string>,\n valueConsumingFlags: Set<string> = new Set(),\n multiValueListFlags: Set<string> = new Set(),\n): { argv: string[]; events: BootstrapNormalizationEvent[] } {\n if (listFlags.size === 0) {\n return { argv: [...argv], events: [] };\n }\n\n const result: (string | null)[] = [];\n const slots = new Map<string, ListFlagSlot>();\n let index = 0;\n while (index < argv.length) {\n const token = argv[index];\n if (token === \"--\") {\n result.push(...argv.slice(index));\n break;\n }\n // A value-consuming option in space form owns the next token as its value,\n // even when that value begins with \"--\". Emit both verbatim so the value is\n // never misread as a list-flag occurrence.\n if (valueConsumingFlags.has(token)) {\n index = copyValueConsumingFlag(argv, index, result);\n continue;\n }\n const parsed = splitCanonicalListToken(token);\n if (!parsed || !listFlags.has(parsed.flag)) {\n result.push(token);\n index += 1;\n continue;\n }\n\n const occurrence = readListFlagOccurrence(argv, index, parsed, multiValueListFlags);\n if (occurrence.value === undefined) {\n // Value-less occurrence: leave untouched, do not coalesce.\n result.push(token);\n index += occurrence.consumed;\n continue;\n }\n\n recordListFlagOccurrence(slots, result, parsed.flag, {\n originalTokens: occurrence.originalTokens,\n value: occurrence.value,\n });\n index += occurrence.consumed;\n }\n\n // Apply anchor splices from the end so earlier indices stay valid when a\n // single-occurrence anchor expands back into two tokens.\n const { events, splices } = buildListFlagCoalescingSplices(slots, multiValueListFlags);\n applyListFlagSplices(result, splices);\n\n return { argv: result as string[], events };\n}\n\n/**\n * Linked-test entry keys accepted in the two-token form `pm test <id> --add command\n * \"npm test -- parser\"` (GH-191). Only entry-identity keys are merged: `command`/`cmd`\n * name the shell command and `path` names the test file, so a single key=value entry is\n * meaningful for them. Other structured keys (scope, env_set, assertions, ...) cannot\n * form a valid standalone entry and are left for the normal parser to reject. `--remove`\n * matches existing entries by `command=`/`path=` only, so `cmd` is excluded there.\n * Key names mirror STRUCTURED_LINKED_TEST_KEYS in src/cli/commands/linked-test-entry.ts.\n */\nconst LINKED_TEST_TWO_TOKEN_KEYS_BY_FLAG: ReadonlyMap<string, ReadonlySet<string>> = new Map([\n [\"--add\", new Set([\"command\", \"cmd\", \"path\"])],\n [\"--remove\", new Set([\"command\", \"path\"])],\n]);\n\n/**\n * Sandbox-safe linked-test commands legitimately start with env assignments\n * (`PM_PATH=... PM_GLOBAL_PATH=... vitest run -- parser`), which look like bare\n * key=value settings tokens. When the two preceding tokens are a linked-test\n * flag plus a bare two-token key (`--add command <value>`), the value must be\n * left intact for mergeLinkedTestTwoTokenEntries instead of being rewritten\n * into a canonical flag (e.g. PM_PATH= -> --pm-path), which would silently\n * corrupt the command into `--add command --pm-path ...`.\n */\nfunction isLinkedTestTwoTokenValuePosition(commandName: string | undefined, emittedTokens: readonly string[]): boolean {\n if (commandName !== \"test\" || emittedTokens.length < 2) {\n return false;\n }\n const key = emittedTokens[emittedTokens.length - 1];\n const flag = emittedTokens[emittedTokens.length - 2];\n const keys = LINKED_TEST_TWO_TOKEN_KEYS_BY_FLAG.get(flag);\n return keys !== undefined && keys.has(key);\n}\n\n/**\n * Accept the two-token linked-test form `pm test <id> --add command \"npm test -- parser\"`\n * by merging the bare key token and its single quoted value into the documented\n * `--add command=...` shape. Without this merge Commander binds the bare key as the\n * option value and treats the quoted command as an excess positional, failing with\n * \"too many arguments\" (GH-191). The merge only fires when EXACTLY ONE non-flag token\n * follows the bare key, i.e. the value was quoted into one shell token — an unquoted\n * multi-token value stays ambiguous (it may swallow the item id), still fails fast, and\n * is routed to targeted quoting guidance by the commander error classifier instead.\n */\nexport function mergeLinkedTestTwoTokenEntries(\n argv: string[],\n commandName: string | undefined,\n trace: BootstrapNormalizationEvent[],\n): string[] {\n if (commandName !== \"test\") {\n return argv;\n }\n const result: string[] = [];\n let index = 0;\n while (index < argv.length) {\n const token = argv[index];\n if (token === \"--\") {\n result.push(...argv.slice(index));\n return result;\n }\n const keys = LINKED_TEST_TWO_TOKEN_KEYS_BY_FLAG.get(token);\n const key = keys ? argv[index + 1] : undefined;\n if (!keys || typeof key !== \"string\" || !keys.has(key)) {\n result.push(token);\n index += 1;\n continue;\n }\n let runEnd = index + 2;\n while (runEnd < argv.length && !argv[runEnd].startsWith(\"-\")) {\n runEnd += 1;\n }\n if (runEnd - (index + 2) !== 1) {\n result.push(token);\n index += 1;\n continue;\n }\n const value = argv[index + 2];\n const mergedValue = `${key}=${value}`;\n result.push(token, mergedValue);\n trace.push({\n from: `${token} ${key} ${value}`,\n to: [token, mergedValue],\n reason: \"bare_key_value\",\n confidence: \"high\",\n });\n index += 3;\n }\n return result;\n}\n\n/**\n * Implements normalize bootstrap invocation for the public runtime surface of this module.\n */\nexport function normalizeBootstrapInvocation(argv: string[]): BootstrapInvocationNormalizationResult {\n const trace: BootstrapNormalizationEvent[] = [];\n const legacyNormalized = normalizeLegacyExtensionActionSyntax(argv);\n if (legacyNormalized.length !== argv.length || legacyNormalized.some((token, index) => token !== argv[index])) {\n trace.push({\n from: argv.join(\" \"),\n to: [...legacyNormalized],\n reason: \"legacy_extension_action\",\n confidence: \"high\",\n });\n }\n const aliasNormalized = rewriteCommandAlias(legacyNormalized, trace);\n const commandName = parseBootstrapCommandName(aliasNormalized);\n const commandPathName = parseBootstrapCommandPathName(aliasNormalized);\n const lookup = buildFlagLookup(commandPathName ?? commandName);\n const normalizedArgv: string[] = [];\n for (let index = 0; index < aliasNormalized.length; index += 1) {\n const token = aliasNormalized[index];\n if (token === \"--\") {\n normalizedArgv.push(...aliasNormalized.slice(index));\n break;\n }\n const previous = normalizedArgv[normalizedArgv.length - 1];\n if (token.startsWith(\"--\")) {\n const normalizedToken = normalizeLongOptionToken(token, lookup);\n normalizedArgv.push(...normalizedToken.tokens);\n if (normalizedToken.event) {\n trace.push(normalizedToken.event);\n }\n continue;\n }\n const bareKeyValue = parseBareKeyValueToken(token);\n if (\n bareKeyValue &&\n !(typeof previous === \"string\" && previous.startsWith(\"-\")) &&\n !isLinkedTestTwoTokenValuePosition(commandName, normalizedArgv)\n ) {\n const resolution = resolveCanonicalFlag(bareKeyValue.key, lookup);\n if (resolution) {\n const replacement = [resolution.flag, bareKeyValue.value];\n normalizedArgv.push(...replacement);\n trace.push({\n from: token,\n to: replacement,\n reason: \"bare_key_value\",\n confidence: resolution.confidence,\n });\n continue;\n }\n }\n normalizedArgv.push(token);\n }\n const linkedTestNormalized = mergeLinkedTestTwoTokenEntries(normalizedArgv, commandName, trace);\n const coalesced = coalesceRepeatedListFlags(\n linkedTestNormalized,\n lookup.listCanonicalFlags,\n GLOBAL_VALUE_CONSUMING_FLAGS,\n commandName === \"create\" ? new Set([\"--tags\"]) : new Set(),\n );\n for (const event of coalesced.events) {\n trace.push(event);\n }\n return {\n argv: coalesced.argv,\n commandName,\n trace,\n };\n}\n\nfunction parseBootstrapCommandPathName(argv: string[]): string | undefined {\n const stripped = stripGlobalBootstrapTokens(argv);\n const first = stripped[0]?.trim().toLowerCase();\n const second = stripped[1]?.trim().toLowerCase();\n if (\n (first === \"extension\" || first === \"package\" || first === \"packages\") &&\n typeof second === \"string\" &&\n second.length > 0 &&\n !second.startsWith(\"-\")\n ) {\n return `${first} ${second}`;\n }\n return first;\n}\n\n/**\n * Implements parse bootstrap type value for the public runtime surface of this module.\n */\nexport function parseBootstrapTypeValue(argv: string[]): string | undefined {\n for (let index = 0; index < argv.length; index += 1) {\n const token = argv[index];\n if (token === \"--type\") {\n const candidate = argv[index + 1];\n if (typeof candidate === \"string\" && candidate.trim().length > 0) {\n return candidate.trim();\n }\n continue;\n }\n if (token.startsWith(\"--type=\")) {\n const candidate = token.slice(\"--type=\".length).trim();\n if (candidate.length > 0) {\n return candidate;\n }\n }\n }\n return undefined;\n}\n\nexport const _testOnly = {\n buildFlagLookup,\n collectLongFlagCandidates,\n markUnambiguousFlag,\n normalizeLongOptionToken,\n resolveCanonicalFlag,\n};\n","/**\n * @module cli/commands/extension/shared\n *\n * Implements extension package-management support for Shared.\n */\nimport fs from \"node:fs/promises\";\nimport path from \"node:path\";\nimport { pathExists } from \"../../../core/fs/fs-utils.js\";\nimport { isPathWithinDirectory } from \"../../../core/fs/path-utils.js\";\nimport { EXIT_CODE } from \"../../../core/shared/constants.js\";\nimport { PmCliError } from \"../../../core/shared/errors.js\";\nimport type { ExtensionManifest } from \"../../../core/extensions/loader.js\";\n\nexport const DEFAULT_EXTENSION_PRIORITY = 100;\n\n/**\n * Documents the validated extension directory payload exchanged by command, SDK, and package integrations.\n */\nexport interface ValidatedExtensionDirectory {\n directory: string;\n manifest_path: string;\n entry_path: string;\n manifest: ExtensionManifest;\n}\n\n/**\n * Implements normalize string list for the public runtime surface of this module.\n */\nexport function normalizeStringList(values: readonly string[]): string[] {\n return [...new Set(values.map((value) => value.trim()).filter((value) => value.length > 0))].sort((left, right) =>\n left.localeCompare(right),\n );\n}\n\n/**\n * Implements normalize extension name for match for the public runtime surface of this module.\n */\nexport function normalizeExtensionNameForMatch(value: string): string {\n return value.trim().toLowerCase();\n}\n\n/**\n * Implements normalize managed directory name for the public runtime surface of this module.\n */\nexport function normalizeManagedDirectoryName(name: string): string {\n const normalized = name\n .trim()\n .toLowerCase()\n .replace(/[^a-z0-9._-]+/g, \"-\")\n .replace(/^-+|-+$/g, \"\");\n if (normalized.length === 0) {\n throw new PmCliError(\"Extension manifest name must resolve to a non-empty directory name.\", EXIT_CODE.USAGE);\n }\n if (normalized === \".\" || normalized === \"..\") {\n // Manifest-controlled input must resolve to a dedicated child directory, never\n // the extensions root itself or its parent (path-traversal guard).\n throw new PmCliError(\"Extension manifest name must not resolve to \\\".\\\" or \\\"..\\\".\", EXIT_CODE.USAGE);\n }\n return normalized;\n}\n\nfunction parseOptionalManifestPriority(value: unknown): number | null {\n if (value === undefined || value === null) {\n return DEFAULT_EXTENSION_PRIORITY;\n }\n return typeof value === \"number\" && Number.isInteger(value) ? value : null;\n}\n\nfunction parseOptionalManifestCapabilities(value: unknown): string[] | null {\n if (value === undefined || value === null) {\n return [];\n }\n if (!Array.isArray(value) || value.some((entry) => typeof entry !== \"string\")) {\n return null;\n }\n return normalizeStringList(value.map((entry) => String(entry).toLowerCase()));\n}\n\n/**\n * Implements parse extension manifest for the public runtime surface of this module.\n */\nexport function parseExtensionManifest(raw: unknown): ExtensionManifest | null {\n if (typeof raw !== \"object\" || raw === null) {\n return null;\n }\n const candidate = raw as Record<string, unknown>;\n if (typeof candidate.name !== \"string\" || candidate.name.trim().length === 0) {\n return null;\n }\n if (typeof candidate.version !== \"string\" || candidate.version.trim().length === 0) {\n return null;\n }\n if (typeof candidate.entry !== \"string\" || candidate.entry.trim().length === 0) {\n return null;\n }\n\n const priority = parseOptionalManifestPriority(candidate.priority);\n const capabilities = parseOptionalManifestCapabilities(candidate.capabilities);\n if (priority === null || capabilities === null) {\n return null;\n }\n\n return {\n name: candidate.name.trim(),\n version: candidate.version.trim(),\n entry: candidate.entry.trim(),\n priority,\n capabilities,\n };\n}\n\n/**\n * Implements check whether canonical path within directory for the public runtime surface of this module.\n */\nexport async function isCanonicalPathWithinDirectory(directory: string, targetPath: string): Promise<boolean> {\n const [resolvedDirectory, resolvedTargetPath] = await Promise.all([fs.realpath(directory), fs.realpath(targetPath)]);\n return isPathWithinDirectory(resolvedDirectory, resolvedTargetPath);\n}\n\n/**\n * Implements validate extension directory for the public runtime surface of this module.\n */\nexport async function validateExtensionDirectory(directory: string): Promise<ValidatedExtensionDirectory> {\n const manifestPath = path.join(directory, \"manifest.json\");\n if (!(await pathExists(manifestPath))) {\n throw new PmCliError(`Extension manifest is missing at \"${manifestPath}\".`, EXIT_CODE.USAGE);\n }\n\n let parsedManifest: unknown;\n try {\n parsedManifest = JSON.parse(await fs.readFile(manifestPath, \"utf8\")) as unknown;\n } catch (error: unknown) {\n throw new PmCliError(\n `Failed to parse extension manifest at \"${manifestPath}\": ${formatManifestReadError(error)}`,\n EXIT_CODE.USAGE,\n );\n }\n\n const manifest = parseExtensionManifest(parsedManifest);\n if (!manifest) {\n throw new PmCliError(`Extension manifest at \"${manifestPath}\" is invalid.`, EXIT_CODE.USAGE);\n }\n\n const entryPath = path.resolve(directory, manifest.entry);\n if (!isPathWithinDirectory(directory, entryPath)) {\n throw new PmCliError(\n `Extension entry \"${manifest.entry}\" resolves outside extension directory \"${directory}\".`,\n EXIT_CODE.USAGE,\n );\n }\n if (!(await pathExists(entryPath))) {\n throw new PmCliError(`Extension entry file is missing at \"${entryPath}\".`, EXIT_CODE.USAGE);\n }\n if (!(await isCanonicalPathWithinDirectory(directory, entryPath))) {\n throw new PmCliError(\n `Extension entry \"${manifest.entry}\" resolves outside extension directory after symlink resolution.`,\n EXIT_CODE.USAGE,\n );\n }\n\n return {\n directory,\n manifest_path: manifestPath,\n entry_path: entryPath,\n manifest,\n };\n}\n\nfunction formatManifestReadError(error: unknown): string {\n return error instanceof Error ? error.message : String(error);\n}\n\nexport const _testOnlyExtensionShared = {\n formatManifestReadError,\n};\n"],"names":["commandPathTokens"],"mappings":"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","debugId":"7df0fcc5-8ff4-5817-b72d-925ba746d847"}
|
|
1
|
+
{"version":3,"sources":["../../../../../../../../cli/bootstrap-args.ts","../../../../../../../../cli/commands/extension/shared.ts"],"sourcesContent":["/**\n * @module cli/bootstrap-args\n *\n * Provides CLI runtime support for Bootstrap Args.\n */\nimport { resolveSubcommandFlagContractsForCommand, type CliFlagContract } from \"../sdk/cli-contracts.js\";\nimport { levenshteinDistanceWithinLimit } from \"../core/shared/levenshtein.js\";\n\nfunction parseBootstrapPathToken(\n token: string,\n next: string | undefined,\n): { consumed: number; pathValue?: string; preferred: boolean } | null {\n if (token === \"--path\" || token === \"--pm-path\") {\n if (typeof next === \"string\" && next.length > 0) {\n return {\n consumed: 2,\n pathValue: next,\n preferred: token === \"--pm-path\",\n };\n }\n return {\n consumed: 1,\n preferred: token === \"--pm-path\",\n };\n }\n\n const inlinePrefix = token.startsWith(\"--path=\")\n ? \"--path=\"\n : token.startsWith(\"--pm-path=\")\n ? \"--pm-path=\"\n : undefined;\n if (!inlinePrefix) {\n return null;\n }\n\n const value = token.slice(inlinePrefix.length);\n if (value.length > 0) {\n return {\n consumed: 1,\n pathValue: value,\n preferred: inlinePrefix === \"--pm-path=\",\n };\n }\n return {\n consumed: 1,\n preferred: inlinePrefix === \"--pm-path=\",\n };\n}\n\n/**\n * Documents the bootstrap global options payload exchanged by command, SDK, and package integrations.\n */\nexport interface BootstrapGlobalOptions {\n path?: string;\n noExtensions: boolean;\n noPager: boolean;\n json: boolean;\n quiet: boolean;\n}\n\n/**\n * Implements parse bootstrap global options for the public runtime surface of this module.\n */\nexport function parseBootstrapGlobalOptions(argv: string[]): BootstrapGlobalOptions {\n let legacyPathValue: string | undefined;\n let pmPathValue: string | undefined;\n let noExtensions = false;\n let noPager = false;\n let json = false;\n let quiet = false;\n let index = 0;\n while (index < argv.length) {\n const token = argv[index];\n if (token === \"--\") {\n break;\n }\n if (token === \"--no-extensions\") {\n noExtensions = true;\n index += 1;\n continue;\n }\n if (token === \"--no-pager\") {\n noPager = true;\n index += 1;\n continue;\n }\n if (token === \"--json\") {\n json = true;\n index += 1;\n continue;\n }\n if (token === \"--quiet\") {\n quiet = true;\n index += 1;\n continue;\n }\n const parsedPath = parseBootstrapPathToken(token, argv[index + 1]);\n if (parsedPath) {\n if (parsedPath.pathValue !== undefined) {\n if (parsedPath.preferred) {\n pmPathValue = parsedPath.pathValue;\n } else {\n legacyPathValue = parsedPath.pathValue;\n }\n }\n index += parsedPath.consumed;\n continue;\n }\n index += 1;\n }\n return {\n path: pmPathValue ?? legacyPathValue,\n noExtensions,\n noPager,\n json,\n quiet,\n };\n}\n\n/**\n * Implements strip global bootstrap tokens for the public runtime surface of this module.\n */\nexport function stripGlobalBootstrapTokens(argv: string[]): string[] {\n const remaining: string[] = [];\n let index = 0;\n while (index < argv.length) {\n const token = argv[index];\n if (token === \"--\") {\n break;\n }\n if (\n token === \"--json\" ||\n token === \"--quiet\" ||\n token === \"--no-extensions\" ||\n token === \"--no-pager\" ||\n token === \"--profile\" ||\n token === \"--id-only\" ||\n token === \"--explain\"\n ) {\n index += 1;\n continue;\n }\n if (token === \"--path\" || token === \"--pm-path\") {\n index += 2;\n continue;\n }\n if (token.startsWith(\"--path=\") || token.startsWith(\"--pm-path=\")) {\n index += 1;\n continue;\n }\n remaining.push(token);\n index += 1;\n }\n return remaining;\n}\n\n/**\n * Documents the bootstrap help request payload exchanged by command, SDK, and package integrations.\n */\nexport interface BootstrapHelpRequest {\n requested: boolean;\n commandPathTokens: string[];\n}\n\n/**\n * Implements parse bootstrap help request for the public runtime surface of this module.\n */\nexport function parseBootstrapHelpRequest(argv: string[]): BootstrapHelpRequest {\n const stripped = stripGlobalBootstrapTokens(argv);\n const first = stripped[0]?.trim().toLowerCase();\n if (first === \"help\") {\n const commandPathTokens: string[] = [];\n for (let index = 1; index < stripped.length; index += 1) {\n const token = stripped[index];\n if (token.startsWith(\"-\")) {\n break;\n }\n commandPathTokens.push(token.trim().toLowerCase());\n }\n return {\n requested: true,\n commandPathTokens,\n };\n }\n\n const helpFlagIndex = stripped.findIndex((token) => token === \"--help\" || token === \"-h\");\n if (helpFlagIndex < 0) {\n return {\n requested: false,\n commandPathTokens: [],\n };\n }\n\n const commandPathTokens: string[] = [];\n for (const token of stripped) {\n if (token.startsWith(\"-\")) {\n break;\n }\n commandPathTokens.push(token.trim().toLowerCase());\n }\n return {\n requested: true,\n commandPathTokens,\n };\n}\n\n/**\n * Index of the command token in argv — the first non-flag token, skipping the\n * value-consuming/global bootstrap flags. Returns undefined when there is none\n * (bare invocation, only global flags, or a leading `--`). Single source of truth\n * for command-position scanning shared by {@link parseBootstrapCommandName} and the\n * command-alias rewrite so their precedence rules can never drift apart.\n */\nfunction findCommandTokenIndex(argv: string[]): number | undefined {\n for (let index = 0; index < argv.length; index += 1) {\n const token = argv[index];\n if (token === \"--\") {\n return undefined;\n }\n if (token === \"--path\" || token === \"--pm-path\") {\n index += 1;\n continue;\n }\n if (\n token.startsWith(\"--path=\") ||\n token.startsWith(\"--pm-path=\") ||\n token === \"--json\" ||\n token === \"--quiet\" ||\n token === \"--no-extensions\" ||\n token === \"--no-pager\" ||\n token === \"--profile\" ||\n token === \"--id-only\" ||\n token === \"--explain\"\n ) {\n continue;\n }\n if (token.startsWith(\"-\")) {\n continue;\n }\n return index;\n }\n return undefined;\n}\n\n/**\n * Implements parse bootstrap command name for the public runtime surface of this module.\n */\nexport function parseBootstrapCommandName(argv: string[]): string | undefined {\n const index = findCommandTokenIndex(argv);\n return index === undefined ? undefined : argv[index].trim().toLowerCase();\n}\n\nfunction shouldDisablePagerForInvocation(argv: string[], bootstrapGlobal: BootstrapGlobalOptions): boolean {\n if (bootstrapGlobal.noPager) {\n return true;\n }\n if (process.stdout.isTTY === true) {\n return false;\n }\n const helpRequest = parseBootstrapHelpRequest(argv);\n return helpRequest.requested;\n}\n\n/**\n * Implements apply bootstrap pager policy for the public runtime surface of this module.\n */\nexport function applyBootstrapPagerPolicy(argv: string[]): void {\n const bootstrapGlobal = parseBootstrapGlobalOptions(argv);\n if (!shouldDisablePagerForInvocation(argv, bootstrapGlobal)) {\n return;\n }\n process.env.PAGER = \"cat\";\n process.env.MANPAGER = \"cat\";\n process.env.GIT_PAGER = \"cat\";\n if (typeof process.env.LESS !== \"string\" || process.env.LESS.trim().length === 0) {\n process.env.LESS = \"FRX\";\n }\n}\n\ntype ExtensionSubcommandAction =\n | \"init\"\n | \"install\"\n | \"uninstall\"\n | \"explore\"\n | \"manage\"\n | \"doctor\"\n | \"adopt\"\n | \"adopt-all\"\n | \"activate\"\n | \"deactivate\";\n\nconst EXTENSION_ACTION_SYNTAX_TOKENS = new Set<ExtensionSubcommandAction>([\n \"install\",\n \"uninstall\",\n \"explore\",\n \"manage\",\n \"doctor\",\n \"adopt\",\n \"adopt-all\",\n \"activate\",\n \"deactivate\",\n]);\n\n/**\n * Implements normalize legacy extension action syntax for the public runtime surface of this module.\n */\nexport function normalizeLegacyExtensionActionSyntax(argv: string[]): string[] {\n const extensionIndex = argv.findIndex((token) => token === \"extension\");\n if (extensionIndex < 0) {\n return [...argv];\n }\n const actionToken = argv[extensionIndex + 1];\n if (!actionToken || actionToken.startsWith(\"-\")) {\n return [...argv];\n }\n if (!EXTENSION_ACTION_SYNTAX_TOKENS.has(actionToken as ExtensionSubcommandAction)) {\n return [...argv];\n }\n if (argv.includes(\"--help\") || argv.includes(\"-h\")) {\n return [...argv];\n }\n const forcedActionFlag = `--${actionToken}`;\n if (argv.includes(forcedActionFlag)) {\n return [...argv];\n }\n return [...argv.slice(0, extensionIndex + 1), forcedActionFlag, ...argv.slice(extensionIndex + 2)];\n}\n\ntype BootstrapNormalizationReason =\n | \"legacy_extension_action\"\n | \"command_alias\"\n | \"flag_alias\"\n | \"flag_typo\"\n | \"bare_key_value\"\n | \"list_merge\";\ntype BootstrapNormalizationConfidence = \"high\" | \"medium\";\n\n/**\n * Executable command aliases: a leading command token here is rewritten to its\n * canonical command BEFORE commander parses, so the alias actually runs instead of\n * merely being suggested. These are the highest-frequency aliases real agents type\n * (telemetry: `pm show <id>` alone is the single most common unknown-command) and\n * each target takes the same positional/flags as the alias (with `--comment`/\n * `--note`/`--learning` flag-aliased to `--add` on the target command). Keeping this\n * in one place means the alias is consistent across registration, commander dispatch,\n * telemetry, and error handling — all of which read the normalized argv.\n */\nexport const EXECUTABLE_COMMAND_ALIASES: Readonly<Record<string, string>> = {\n show: \"get\",\n view: \"get\",\n comment: \"comments\",\n note: \"notes\",\n learning: \"learnings\",\n};\n\n/**\n * Rewrite a leading command-alias token (e.g. `show` -> `get`) in place. Only the\n * command position is considered — the same token appearing later as an argument\n * (`pm get show`) is left untouched — and only when it is not preceded by `--` or a\n * value-consuming global flag, mirroring {@link parseBootstrapCommandName}.\n */\nfunction rewriteCommandAlias(argv: string[], trace: BootstrapNormalizationEvent[]): string[] {\n const index = findCommandTokenIndex(argv);\n if (index === undefined) {\n return argv;\n }\n const token = argv[index];\n const canonical = EXECUTABLE_COMMAND_ALIASES[token.trim().toLowerCase()];\n if (!canonical) {\n return argv;\n }\n const rewritten = [...argv];\n rewritten[index] = canonical;\n trace.push({ from: token, to: [canonical], reason: \"command_alias\", confidence: \"high\" });\n return rewritten;\n}\n\n/**\n * Documents the bootstrap normalization event payload exchanged by command, SDK, and package integrations.\n */\nexport interface BootstrapNormalizationEvent {\n from: string;\n to: string[];\n reason: BootstrapNormalizationReason;\n confidence: BootstrapNormalizationConfidence;\n}\n\n/**\n * Documents the bootstrap invocation normalization result payload exchanged by command, SDK, and package integrations.\n */\nexport interface BootstrapInvocationNormalizationResult {\n argv: string[];\n commandName: string | undefined;\n trace: BootstrapNormalizationEvent[];\n}\n\ninterface FlagLookup {\n canonicalByNormalized: Map<string, string | null>;\n canonicalByCompact: Map<string, string | null>;\n canonicalComparables: Array<{ canonicalFlag: string; comparable: string }>;\n listCanonicalFlags: Set<string>;\n}\n\nfunction normalizeFlagKeyToken(raw: string): string {\n const withoutPrefix = raw.replace(/^--?/, \"\");\n return withoutPrefix\n .replace(/_/g, \"-\")\n .replace(/([a-z0-9])([A-Z])/g, \"$1-$2\")\n .toLowerCase();\n}\n\nfunction toComparableFlagKey(raw: string): string {\n return normalizeFlagKeyToken(raw).replace(/-/g, \"\");\n}\n\nfunction markUnambiguousFlag(\n map: Map<string, string | null>,\n key: string,\n canonicalFlag: string,\n): void {\n const existing = map.get(key);\n if (existing === undefined) {\n map.set(key, canonicalFlag);\n return;\n }\n if (existing !== canonicalFlag) {\n map.set(key, null);\n }\n}\n\nfunction collectLongFlagCandidates(contract: CliFlagContract): string[] {\n const candidates: string[] = [];\n const pushLongFlag = (value: string | undefined): void => {\n if (typeof value !== \"string\") {\n return;\n }\n if (!value.startsWith(\"--\")) {\n return;\n }\n candidates.push(value);\n };\n pushLongFlag(contract.flag);\n for (const alias of contract.aliases ?? []) {\n pushLongFlag(alias);\n }\n return candidates;\n}\n\nfunction buildFlagLookup(\n commandName: string | undefined,\n contractsOverride?: CliFlagContract[],\n): FlagLookup {\n const contracts = contractsOverride ?? resolveSubcommandFlagContractsForCommand(commandName);\n const canonicalByNormalized = new Map<string, string | null>();\n const canonicalByCompact = new Map<string, string | null>();\n const canonicalComparablesMap = new Map<string, string>();\n const listCanonicalFlags = new Set<string>();\n for (const contract of contracts) {\n const longCandidates = collectLongFlagCandidates(contract);\n if (longCandidates.length === 0) {\n continue;\n }\n const canonicalFlag = `--${normalizeFlagKeyToken(longCandidates[0])}`;\n for (const candidate of longCandidates) {\n markUnambiguousFlag(canonicalByNormalized, normalizeFlagKeyToken(candidate), canonicalFlag);\n markUnambiguousFlag(canonicalByCompact, toComparableFlagKey(candidate), canonicalFlag);\n }\n const comparable = toComparableFlagKey(canonicalFlag);\n if (!canonicalComparablesMap.has(canonicalFlag)) {\n canonicalComparablesMap.set(canonicalFlag, comparable);\n }\n if (contract.list === true) {\n listCanonicalFlags.add(canonicalFlag);\n }\n }\n return {\n canonicalByNormalized,\n canonicalByCompact,\n canonicalComparables: [...canonicalComparablesMap.entries()].map(([canonicalFlag, comparable]) => ({\n canonicalFlag,\n comparable,\n })),\n listCanonicalFlags,\n };\n}\n\nfunction resolveCanonicalFlag(\n rawKey: string,\n lookup: FlagLookup,\n): { flag: string; reason: \"flag_alias\" | \"flag_typo\"; confidence: BootstrapNormalizationConfidence } | null {\n const normalizedKey = normalizeFlagKeyToken(rawKey);\n const direct = lookup.canonicalByNormalized.get(normalizedKey);\n if (typeof direct === \"string\") {\n return {\n flag: direct,\n reason: \"flag_alias\",\n confidence: \"high\",\n };\n }\n const comparableKey = normalizedKey.replace(/-/g, \"\");\n const compactMatch = lookup.canonicalByCompact.get(comparableKey);\n if (typeof compactMatch === \"string\") {\n return {\n flag: compactMatch,\n reason: \"flag_alias\",\n confidence: \"high\",\n };\n }\n const maxDistance = comparableKey.length >= 8 ? 2 : 1;\n let bestDistance = Number.POSITIVE_INFINITY;\n let bestFlag: string | undefined;\n let tied = false;\n for (const candidate of lookup.canonicalComparables) {\n const distance = levenshteinDistanceWithinLimit(comparableKey, candidate.comparable, maxDistance);\n if (distance === null) {\n continue;\n }\n if (distance < bestDistance) {\n bestDistance = distance;\n bestFlag = candidate.canonicalFlag;\n tied = false;\n continue;\n }\n if (distance === bestDistance && bestFlag !== candidate.canonicalFlag) {\n tied = true;\n }\n }\n if (!bestFlag || tied || !Number.isFinite(bestDistance) || bestDistance <= 0) {\n return null;\n }\n return {\n flag: bestFlag,\n reason: \"flag_typo\",\n confidence: bestDistance >= 2 ? \"medium\" : \"high\",\n };\n}\n\n/**\n * Implements list alias plural keys for the public runtime surface of this module.\n */\nexport function listAliasPluralKeys(normalizedKey: string): string[] {\n const candidates = [`${normalizedKey}s`];\n if (normalizedKey.endsWith(\"y\") && normalizedKey.length > 1) {\n candidates.push(`${normalizedKey.slice(0, -1)}ies`);\n }\n return candidates;\n}\n\nfunction parseBareKeyValueToken(token: string): { key: string; value: string } | null {\n if (token.includes(\"://\")) {\n return null;\n }\n const match = token.match(/^([A-Za-z][A-Za-z0-9_-]{1,63})([:=])(.*)$/);\n if (!match) {\n return null;\n }\n const key = match[1];\n const value = match[3];\n if (value.length === 0) {\n return null;\n }\n return {\n key,\n value,\n };\n}\n\nfunction normalizeLongOptionToken(\n token: string,\n lookup: FlagLookup,\n): { tokens: string[]; event?: BootstrapNormalizationEvent } {\n if (!token.startsWith(\"--\")) {\n return { tokens: [token] };\n }\n const equalsIndex = token.indexOf(\"=\");\n const key = equalsIndex >= 0 ? token.slice(0, equalsIndex) : token;\n const inlineValue = equalsIndex >= 0 ? token.slice(equalsIndex + 1) : undefined;\n const resolution = resolveCanonicalFlag(key, lookup);\n if (!resolution) {\n return { tokens: [token] };\n }\n const normalizedToken = inlineValue === undefined ? resolution.flag : `${resolution.flag}=${inlineValue}`;\n if (normalizedToken === token) {\n return { tokens: [token] };\n }\n return {\n tokens: [normalizedToken],\n event: {\n from: token,\n to: [normalizedToken],\n reason: resolution.reason,\n confidence: resolution.confidence,\n },\n };\n}\n\n// Global option flags whose value may legitimately begin with \"--\" (commander\n// accepts such values). Their value token must not be reinterpreted as a list\n// flag during coalescing. `--pm-path <dir>` and its legacy `--path <dir>`\n// alias are the documented cases; other globals\n// (--json/--quiet/--no-extensions/--no-pager/--profile) are boolean.\nconst GLOBAL_VALUE_CONSUMING_FLAGS = new Set<string>([\"--pm-path\", \"--path\"]);\n\nfunction splitCanonicalListToken(token: string): { flag: string; inlineValue?: string } | null {\n if (!token.startsWith(\"--\")) {\n return null;\n }\n const equalsIndex = token.indexOf(\"=\");\n if (equalsIndex < 0) {\n return { flag: token };\n }\n return {\n flag: token.slice(0, equalsIndex),\n inlineValue: token.slice(equalsIndex + 1),\n };\n}\n\ninterface ListFlagSlot {\n outputIndex: number;\n originalTokens: string[];\n values: string[];\n occurrences: number;\n}\n\ninterface ListFlagOccurrence {\n originalTokens: string[];\n value: string | undefined;\n consumed: number;\n}\n\ninterface ValuedListFlagOccurrence {\n originalTokens: string[];\n value: string;\n}\n\nfunction copyValueConsumingFlag(argv: string[], index: number, result: (string | null)[]): number {\n result.push(argv[index]);\n const next = argv[index + 1];\n if (typeof next === \"string\" && next !== \"--\") {\n result.push(next);\n return index + 2;\n }\n return index + 1;\n}\n\nfunction readListFlagOccurrence(\n argv: string[],\n index: number,\n parsed: { flag: string; inlineValue?: string },\n multiValueListFlags: Set<string>,\n): ListFlagOccurrence {\n if (parsed.inlineValue !== undefined) {\n return {\n originalTokens: [argv[index]],\n value: parsed.inlineValue,\n consumed: 1,\n };\n }\n\n const values: string[] = [];\n let valueIndex = index + 1;\n while (\n valueIndex < argv.length &&\n argv[valueIndex] !== \"--\" &&\n !argv[valueIndex].startsWith(\"-\") &&\n (values.length === 0 || multiValueListFlags.has(parsed.flag))\n ) {\n values.push(argv[valueIndex]);\n valueIndex += 1;\n }\n\n const consumed = values.length === 0 ? 1 : 1 + values.length;\n return {\n originalTokens: argv.slice(index, index + consumed),\n value: values.length === 0 ? undefined : values.join(\",\"),\n consumed,\n };\n}\n\nfunction recordListFlagOccurrence(\n slots: Map<string, ListFlagSlot>,\n result: (string | null)[],\n flag: string,\n occurrence: ValuedListFlagOccurrence,\n): void {\n const existing = slots.get(flag);\n if (existing) {\n existing.values.push(occurrence.value);\n existing.occurrences += 1;\n return;\n }\n\n slots.set(flag, {\n outputIndex: result.length,\n originalTokens: occurrence.originalTokens,\n values: [occurrence.value],\n occurrences: 1,\n });\n // Reserve the anchor position; finalized after the walk so we know the full\n // merged value or can restore the original token form for single uses.\n result.push(null);\n}\n\nfunction buildListFlagCoalescingSplices(\n slots: Map<string, ListFlagSlot>,\n multiValueListFlags: Set<string>,\n): {\n events: BootstrapNormalizationEvent[];\n splices: Array<{ outputIndex: number; tokens: string[] }>;\n} {\n const events: BootstrapNormalizationEvent[] = [];\n const splices: Array<{ outputIndex: number; tokens: string[] }> = [];\n for (const [flag, slot] of slots) {\n const shouldMerge = slot.occurrences >= 2 || (multiValueListFlags.has(flag) && slot.originalTokens.length > 2);\n if (!shouldMerge) {\n splices.push({ outputIndex: slot.outputIndex, tokens: slot.originalTokens });\n continue;\n }\n const mergedToken = `${flag}=${slot.values.join(\",\")}`;\n splices.push({ outputIndex: slot.outputIndex, tokens: [mergedToken] });\n events.push({\n from: `${flag} (x${slot.occurrences})`,\n to: [mergedToken],\n reason: \"list_merge\",\n confidence: \"high\",\n });\n }\n return { events, splices };\n}\n\nfunction applyListFlagSplices(result: (string | null)[], splices: Array<{ outputIndex: number; tokens: string[] }>): void {\n splices.sort((a, b) => b.outputIndex - a.outputIndex);\n for (const splice of splices) {\n result.splice(splice.outputIndex, 1, ...splice.tokens);\n }\n}\n\n/**\n * Coalesce repeated occurrences of comma-separated list flags into a single\n * `--flag=v1,v2,v3` token anchored at the FIRST occurrence. Without this,\n * Commander treats these flags as scalars and silently keeps only the last\n * value (data loss). Both `--flag value` and `--flag=value` forms are merged;\n * a value-less occurrence is preserved untouched, and a `--` terminator stops\n * coalescing (remainder is passed through verbatim).\n *\n * `valueConsumingFlags` lists option flags (e.g. global `--path`) whose value\n * may itself begin with `--`. Their value token is emitted verbatim so a\n * list-flag-looking value (`--path --tags`) is never reinterpreted as a flag\n * nor allowed to swallow the following command/positional token.\n */\nexport function coalesceRepeatedListFlags(\n argv: string[],\n listFlags: Set<string>,\n valueConsumingFlags: Set<string> = new Set(),\n multiValueListFlags: Set<string> = new Set(),\n): { argv: string[]; events: BootstrapNormalizationEvent[] } {\n if (listFlags.size === 0) {\n return { argv: [...argv], events: [] };\n }\n\n const result: (string | null)[] = [];\n const slots = new Map<string, ListFlagSlot>();\n let index = 0;\n while (index < argv.length) {\n const token = argv[index];\n if (token === \"--\") {\n result.push(...argv.slice(index));\n break;\n }\n // A value-consuming option in space form owns the next token as its value,\n // even when that value begins with \"--\". Emit both verbatim so the value is\n // never misread as a list-flag occurrence.\n if (valueConsumingFlags.has(token)) {\n index = copyValueConsumingFlag(argv, index, result);\n continue;\n }\n const parsed = splitCanonicalListToken(token);\n if (!parsed || !listFlags.has(parsed.flag)) {\n result.push(token);\n index += 1;\n continue;\n }\n\n const occurrence = readListFlagOccurrence(argv, index, parsed, multiValueListFlags);\n if (occurrence.value === undefined) {\n // Value-less occurrence: leave untouched, do not coalesce.\n result.push(token);\n index += occurrence.consumed;\n continue;\n }\n\n recordListFlagOccurrence(slots, result, parsed.flag, {\n originalTokens: occurrence.originalTokens,\n value: occurrence.value,\n });\n index += occurrence.consumed;\n }\n\n // Apply anchor splices from the end so earlier indices stay valid when a\n // single-occurrence anchor expands back into two tokens.\n const { events, splices } = buildListFlagCoalescingSplices(slots, multiValueListFlags);\n applyListFlagSplices(result, splices);\n\n return { argv: result as string[], events };\n}\n\n/**\n * Linked-test entry keys accepted in the two-token form `pm test <id> --add command\n * \"npm test -- parser\"` (GH-191). Only entry-identity keys are merged: `command`/`cmd`\n * name the shell command and `path` names the test file, so a single key=value entry is\n * meaningful for them. Other structured keys (scope, env_set, assertions, ...) cannot\n * form a valid standalone entry and are left for the normal parser to reject. `--remove`\n * matches existing entries by `command=`/`path=` only, so `cmd` is excluded there.\n * Key names mirror STRUCTURED_LINKED_TEST_KEYS in src/cli/commands/linked-test-entry.ts.\n */\nconst LINKED_TEST_TWO_TOKEN_KEYS_BY_FLAG: ReadonlyMap<string, ReadonlySet<string>> = new Map([\n [\"--add\", new Set([\"command\", \"cmd\", \"path\"])],\n [\"--remove\", new Set([\"command\", \"path\"])],\n]);\n\n/**\n * Sandbox-safe linked-test commands legitimately start with env assignments\n * (`PM_PATH=... PM_GLOBAL_PATH=... vitest run -- parser`), which look like bare\n * key=value settings tokens. When the two preceding tokens are a linked-test\n * flag plus a bare two-token key (`--add command <value>`), the value must be\n * left intact for mergeLinkedTestTwoTokenEntries instead of being rewritten\n * into a canonical flag (e.g. PM_PATH= -> --pm-path), which would silently\n * corrupt the command into `--add command --pm-path ...`.\n */\nfunction isLinkedTestTwoTokenValuePosition(commandName: string | undefined, emittedTokens: readonly string[]): boolean {\n if (commandName !== \"test\" || emittedTokens.length < 2) {\n return false;\n }\n const key = emittedTokens[emittedTokens.length - 1];\n const flag = emittedTokens[emittedTokens.length - 2];\n const keys = LINKED_TEST_TWO_TOKEN_KEYS_BY_FLAG.get(flag);\n return keys !== undefined && keys.has(key);\n}\n\n/**\n * Accept the two-token linked-test form `pm test <id> --add command \"npm test -- parser\"`\n * by merging the bare key token and its single quoted value into the documented\n * `--add command=...` shape. Without this merge Commander binds the bare key as the\n * option value and treats the quoted command as an excess positional, failing with\n * \"too many arguments\" (GH-191). The merge only fires when EXACTLY ONE non-flag token\n * follows the bare key, i.e. the value was quoted into one shell token — an unquoted\n * multi-token value stays ambiguous (it may swallow the item id), still fails fast, and\n * is routed to targeted quoting guidance by the commander error classifier instead.\n */\nexport function mergeLinkedTestTwoTokenEntries(\n argv: string[],\n commandName: string | undefined,\n trace: BootstrapNormalizationEvent[],\n): string[] {\n if (commandName !== \"test\") {\n return argv;\n }\n const result: string[] = [];\n let index = 0;\n while (index < argv.length) {\n const token = argv[index];\n if (token === \"--\") {\n result.push(...argv.slice(index));\n return result;\n }\n const keys = LINKED_TEST_TWO_TOKEN_KEYS_BY_FLAG.get(token);\n const key = keys ? argv[index + 1] : undefined;\n if (!keys || typeof key !== \"string\" || !keys.has(key)) {\n result.push(token);\n index += 1;\n continue;\n }\n let runEnd = index + 2;\n while (runEnd < argv.length && !argv[runEnd].startsWith(\"-\")) {\n runEnd += 1;\n }\n if (runEnd - (index + 2) !== 1) {\n result.push(token);\n index += 1;\n continue;\n }\n const value = argv[index + 2];\n const mergedValue = `${key}=${value}`;\n result.push(token, mergedValue);\n trace.push({\n from: `${token} ${key} ${value}`,\n to: [token, mergedValue],\n reason: \"bare_key_value\",\n confidence: \"high\",\n });\n index += 3;\n }\n return result;\n}\n\n/**\n * Implements normalize bootstrap invocation for the public runtime surface of this module.\n */\nexport function normalizeBootstrapInvocation(argv: string[]): BootstrapInvocationNormalizationResult {\n const trace: BootstrapNormalizationEvent[] = [];\n const legacyNormalized = normalizeLegacyExtensionActionSyntax(argv);\n if (legacyNormalized.length !== argv.length || legacyNormalized.some((token, index) => token !== argv[index])) {\n trace.push({\n from: argv.join(\" \"),\n to: [...legacyNormalized],\n reason: \"legacy_extension_action\",\n confidence: \"high\",\n });\n }\n const aliasNormalized = rewriteCommandAlias(legacyNormalized, trace);\n const commandName = parseBootstrapCommandName(aliasNormalized);\n const commandPathName = parseBootstrapCommandPathName(aliasNormalized);\n const lookup = buildFlagLookup(commandPathName ?? commandName);\n const normalizedArgv: string[] = [];\n for (let index = 0; index < aliasNormalized.length; index += 1) {\n const token = aliasNormalized[index];\n if (token === \"--\") {\n normalizedArgv.push(...aliasNormalized.slice(index));\n break;\n }\n const previous = normalizedArgv[normalizedArgv.length - 1];\n if (token.startsWith(\"--\")) {\n const normalizedToken = normalizeLongOptionToken(token, lookup);\n normalizedArgv.push(...normalizedToken.tokens);\n if (normalizedToken.event) {\n trace.push(normalizedToken.event);\n }\n continue;\n }\n const bareKeyValue = parseBareKeyValueToken(token);\n if (\n bareKeyValue &&\n !(typeof previous === \"string\" && previous.startsWith(\"-\")) &&\n !isLinkedTestTwoTokenValuePosition(commandName, normalizedArgv)\n ) {\n const resolution = resolveCanonicalFlag(bareKeyValue.key, lookup);\n if (resolution) {\n const replacement = [resolution.flag, bareKeyValue.value];\n normalizedArgv.push(...replacement);\n trace.push({\n from: token,\n to: replacement,\n reason: \"bare_key_value\",\n confidence: resolution.confidence,\n });\n continue;\n }\n }\n normalizedArgv.push(token);\n }\n const linkedTestNormalized = mergeLinkedTestTwoTokenEntries(normalizedArgv, commandName, trace);\n const coalesced = coalesceRepeatedListFlags(\n linkedTestNormalized,\n lookup.listCanonicalFlags,\n GLOBAL_VALUE_CONSUMING_FLAGS,\n commandName === \"create\" ? new Set([\"--tags\"]) : new Set(),\n );\n for (const event of coalesced.events) {\n trace.push(event);\n }\n return {\n argv: coalesced.argv,\n commandName,\n trace,\n };\n}\n\nfunction parseBootstrapCommandPathName(argv: string[]): string | undefined {\n const stripped = stripGlobalBootstrapTokens(argv);\n const first = stripped[0]?.trim().toLowerCase();\n const second = stripped[1]?.trim().toLowerCase();\n if (\n (first === \"extension\" || first === \"package\" || first === \"packages\") &&\n typeof second === \"string\" &&\n second.length > 0 &&\n !second.startsWith(\"-\")\n ) {\n return `${first} ${second}`;\n }\n return first;\n}\n\n/**\n * Implements parse bootstrap type value for the public runtime surface of this module.\n */\nexport function parseBootstrapTypeValue(argv: string[]): string | undefined {\n for (let index = 0; index < argv.length; index += 1) {\n const token = argv[index];\n if (token === \"--type\") {\n const candidate = argv[index + 1];\n if (typeof candidate === \"string\" && candidate.trim().length > 0) {\n return candidate.trim();\n }\n continue;\n }\n if (token.startsWith(\"--type=\")) {\n const candidate = token.slice(\"--type=\".length).trim();\n if (candidate.length > 0) {\n return candidate;\n }\n }\n }\n return undefined;\n}\n\nexport const _testOnly = {\n buildFlagLookup,\n collectLongFlagCandidates,\n markUnambiguousFlag,\n normalizeLongOptionToken,\n resolveCanonicalFlag,\n};\n","/**\n * @module cli/commands/extension/shared\n *\n * Implements extension package-management support for Shared.\n */\nimport fs from \"node:fs/promises\";\nimport path from \"node:path\";\nimport { pathExists } from \"../../../core/fs/fs-utils.js\";\nimport { isPathWithinDirectory } from \"../../../core/fs/path-utils.js\";\nimport { EXIT_CODE } from \"../../../core/shared/constants.js\";\nimport { PmCliError } from \"../../../core/shared/errors.js\";\nimport { DEFAULT_EXTENSION_PRIORITY, isCanonicalPathWithinDirectory, type ExtensionManifest } from \"../../../core/extensions/loader.js\";\n\nexport { DEFAULT_EXTENSION_PRIORITY, isCanonicalPathWithinDirectory };\n\n/**\n * Documents the validated extension directory payload exchanged by command, SDK, and package integrations.\n */\nexport interface ValidatedExtensionDirectory {\n directory: string;\n manifest_path: string;\n entry_path: string;\n manifest: ExtensionManifest;\n}\n\n/**\n * Implements normalize string list for the public runtime surface of this module.\n */\nexport function normalizeStringList(values: readonly string[]): string[] {\n return [...new Set(values.map((value) => value.trim()).filter((value) => value.length > 0))].sort((left, right) =>\n left.localeCompare(right),\n );\n}\n\n/**\n * Implements normalize extension name for match for the public runtime surface of this module.\n */\nexport function normalizeExtensionNameForMatch(value: string): string {\n return value.trim().toLowerCase();\n}\n\n/**\n * Implements normalize managed directory name for the public runtime surface of this module.\n */\nexport function normalizeManagedDirectoryName(name: string): string {\n const normalized = name\n .trim()\n .toLowerCase()\n .replace(/[^a-z0-9._-]+/g, \"-\")\n .replace(/^-+|-+$/g, \"\");\n if (normalized.length === 0) {\n throw new PmCliError(\"Extension manifest name must resolve to a non-empty directory name.\", EXIT_CODE.USAGE);\n }\n if (normalized === \".\" || normalized === \"..\") {\n // Manifest-controlled input must resolve to a dedicated child directory, never\n // the extensions root itself or its parent (path-traversal guard).\n throw new PmCliError(\"Extension manifest name must not resolve to \\\".\\\" or \\\"..\\\".\", EXIT_CODE.USAGE);\n }\n return normalized;\n}\n\nfunction parseOptionalManifestPriority(value: unknown): number | null {\n if (value === undefined || value === null) {\n return DEFAULT_EXTENSION_PRIORITY;\n }\n return typeof value === \"number\" && Number.isInteger(value) ? value : null;\n}\n\nfunction parseOptionalManifestCapabilities(value: unknown): string[] | null {\n if (value === undefined || value === null) {\n return [];\n }\n if (!Array.isArray(value) || value.some((entry) => typeof entry !== \"string\")) {\n return null;\n }\n return normalizeStringList(value.map((entry) => String(entry).toLowerCase()));\n}\n\n/**\n * Implements parse extension manifest for the public runtime surface of this module.\n */\nexport function parseExtensionManifest(raw: unknown): ExtensionManifest | null {\n if (typeof raw !== \"object\" || raw === null) {\n return null;\n }\n const candidate = raw as Record<string, unknown>;\n if (typeof candidate.name !== \"string\" || candidate.name.trim().length === 0) {\n return null;\n }\n if (typeof candidate.version !== \"string\" || candidate.version.trim().length === 0) {\n return null;\n }\n if (typeof candidate.entry !== \"string\" || candidate.entry.trim().length === 0) {\n return null;\n }\n\n const priority = parseOptionalManifestPriority(candidate.priority);\n const capabilities = parseOptionalManifestCapabilities(candidate.capabilities);\n if (priority === null || capabilities === null) {\n return null;\n }\n\n return {\n name: candidate.name.trim(),\n version: candidate.version.trim(),\n entry: candidate.entry.trim(),\n priority,\n capabilities,\n };\n}\n\n/**\n * Implements validate extension directory for the public runtime surface of this module.\n */\nexport async function validateExtensionDirectory(directory: string): Promise<ValidatedExtensionDirectory> {\n const manifestPath = path.join(directory, \"manifest.json\");\n if (!(await pathExists(manifestPath))) {\n throw new PmCliError(`Extension manifest is missing at \"${manifestPath}\".`, EXIT_CODE.USAGE);\n }\n\n let parsedManifest: unknown;\n try {\n parsedManifest = JSON.parse(await fs.readFile(manifestPath, \"utf8\")) as unknown;\n } catch (error: unknown) {\n throw new PmCliError(\n `Failed to parse extension manifest at \"${manifestPath}\": ${formatManifestReadError(error)}`,\n EXIT_CODE.USAGE,\n );\n }\n\n const manifest = parseExtensionManifest(parsedManifest);\n if (!manifest) {\n throw new PmCliError(`Extension manifest at \"${manifestPath}\" is invalid.`, EXIT_CODE.USAGE);\n }\n\n const entryPath = path.resolve(directory, manifest.entry);\n if (!isPathWithinDirectory(directory, entryPath)) {\n throw new PmCliError(\n `Extension entry \"${manifest.entry}\" resolves outside extension directory \"${directory}\".`,\n EXIT_CODE.USAGE,\n );\n }\n if (!(await pathExists(entryPath))) {\n throw new PmCliError(`Extension entry file is missing at \"${entryPath}\".`, EXIT_CODE.USAGE);\n }\n if (!(await isCanonicalPathWithinDirectory(directory, entryPath))) {\n throw new PmCliError(\n `Extension entry \"${manifest.entry}\" resolves outside extension directory after symlink resolution.`,\n EXIT_CODE.USAGE,\n );\n }\n\n return {\n directory,\n manifest_path: manifestPath,\n entry_path: entryPath,\n manifest,\n };\n}\n\nfunction formatManifestReadError(error: unknown): string {\n return error instanceof Error ? error.message : String(error);\n}\n\nexport const _testOnlyExtensionShared = {\n formatManifestReadError,\n};\n"],"names":["commandPathTokens"],"mappings":"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","debugId":"c4de3378-47cb-508f-a6a6-8635b65148e0"}
|