@unbrained/pm-cli 2026.6.20 → 2026.6.22
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 +39 -0
- package/dist/cli/commands/completion.js +5 -3
- package/dist/cli/commands/completion.js.map +1 -1
- package/dist/cli/commands/extension/doctor.d.ts +11 -0
- package/dist/cli/commands/extension/doctor.js +31 -2
- package/dist/cli/commands/extension/doctor.js.map +1 -1
- package/dist/cli/commands/extension/scaffold.d.ts +16 -2
- package/dist/cli/commands/extension/scaffold.js +499 -20
- package/dist/cli/commands/extension/scaffold.js.map +1 -1
- package/dist/cli/commands/extension.d.ts +1 -0
- package/dist/cli/commands/extension.js +16 -4
- package/dist/cli/commands/extension.js.map +1 -1
- package/dist/cli/commands/health.js +15 -3
- package/dist/cli/commands/health.js.map +1 -1
- package/dist/cli/commands/validate.d.ts +1 -1
- package/dist/cli/commands/validate.js +44 -2
- package/dist/cli/commands/validate.js.map +1 -1
- package/dist/cli/help-content.js +16 -4
- package/dist/cli/help-content.js.map +1 -1
- package/dist/cli/register-setup.js +6 -2
- package/dist/cli/register-setup.js.map +1 -1
- package/dist/cli-bundle/chunks/{activity-KEEITOTB.js → activity-DXS2XMQU.js} +11 -11
- package/dist/cli-bundle/chunks/activity-NEOI45NX.js +18 -0
- package/dist/cli-bundle/chunks/{aggregate-5BTHOHW2.js → aggregate-IHM4KMQ3.js} +10 -10
- package/dist/cli-bundle/chunks/{aggregate-GB2LJNTZ.js → aggregate-NMYDVQF7.js} +10 -10
- package/dist/cli-bundle/chunks/{append-BBM4MNVD.js → append-3HY5G7ET.js} +8 -8
- package/dist/cli-bundle/chunks/{append-BFV5UYWS.js → append-K54MDQYC.js} +8 -8
- package/dist/cli-bundle/chunks/{chunk-DKWIPIJY.js → chunk-25XZN3JD.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-GF44HVZL.js → chunk-2LEYMXI6.js} +4 -4
- package/dist/cli-bundle/chunks/chunk-3GL6LTUL.js +643 -0
- package/dist/cli-bundle/chunks/chunk-3GL6LTUL.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-XNQ3YH6N.js → chunk-3VLPDG3J.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-W2ZESOQE.js → chunk-44O4JIN6.js} +13 -13
- package/dist/cli-bundle/chunks/{chunk-RADIHKJ3.js → chunk-47HTJ6BU.js} +5 -5
- package/dist/cli-bundle/chunks/{chunk-B3LROPTV.js → chunk-4JXWVHMN.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-HWHZ7EY7.js → chunk-4SDKF5BG.js} +3 -3
- package/dist/cli-bundle/chunks/chunk-4YJA4LGU.js +646 -0
- package/dist/cli-bundle/chunks/chunk-4YJA4LGU.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-RNKUCHUQ.js → chunk-5SESR24H.js} +8 -8
- package/dist/cli-bundle/chunks/{chunk-RICT5QYR.js → chunk-6FQHNHQQ.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-FA5O2DEG.js → chunk-6UPTNMVW.js} +5 -5
- package/dist/cli-bundle/chunks/{chunk-4KFL5OYK.js → chunk-75VEYQJS.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-2ZY5SLNR.js → chunk-77VKGH4L.js} +10 -10
- package/dist/cli-bundle/chunks/{chunk-H3ZTSYPA.js → chunk-7GCCDXXN.js} +57 -223
- package/dist/cli-bundle/chunks/chunk-7GCCDXXN.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-6Y7IQ6XN.js → chunk-7MALIV5H.js} +9 -9
- package/dist/cli-bundle/chunks/{chunk-MFCFHL27.js → chunk-7MPTFYT3.js} +20 -15
- package/dist/cli-bundle/chunks/chunk-7MPTFYT3.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-NMQNXH4U.js → chunk-7PBGTIN3.js} +5 -5
- package/dist/cli-bundle/chunks/{chunk-3KVCMB2M.js → chunk-A25LOPRG.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-6KSFULO6.js → chunk-A7E4ZXG2.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-ZHCSGIUX.js → chunk-AJXYOYJV.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-PF5GLFPU.js → chunk-B2KR24R4.js} +9 -9
- package/dist/cli-bundle/chunks/{chunk-ZYG4TR32.js → chunk-C5SWTISA.js} +12 -12
- package/dist/cli-bundle/chunks/{chunk-F4EYOSNC.js → chunk-CLLVBO3I.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-5MWA46UN.js → chunk-CR7KFPAQ.js} +61 -4
- package/dist/cli-bundle/chunks/chunk-CR7KFPAQ.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-4PW4C3ZB.js → chunk-CWPBGUC7.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-LTUB7ARL.js → chunk-D35LTIFR.js} +57 -216
- package/dist/cli-bundle/chunks/chunk-D35LTIFR.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-J7VSEFWB.js → chunk-DBQUQ3AS.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-2LUNPA3U.js → chunk-DHBPJ7VG.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-6FSPWUBI.js → chunk-DMT4ODVN.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-XXGAWTH5.js → chunk-DU64SZUQ.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-CNPWCUDR.js → chunk-EVPVCE4R.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-ACULWT7G.js → chunk-FK6MV5F5.js} +12 -12
- package/dist/cli-bundle/chunks/{chunk-XKJDCJEH.js → chunk-GGAXE22C.js} +6 -6
- package/dist/cli-bundle/chunks/{chunk-SL233DQD.js → chunk-GNDHOR64.js} +6 -6
- package/dist/cli-bundle/chunks/{chunk-U3WTMYBX.js → chunk-GU7YHKYP.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-26OQTCGH.js → chunk-GXBSFKSX.js} +4 -4
- package/dist/cli-bundle/chunks/{chunk-AOCYDQLT.js → chunk-H6FNDCDI.js} +5 -5
- package/dist/cli-bundle/chunks/{chunk-ICEWMJYH.js → chunk-HYQV75IB.js} +7 -7
- package/dist/cli-bundle/chunks/{chunk-5XK2RYJR.js → chunk-I367IDZP.js} +7 -7
- package/dist/cli-bundle/chunks/{chunk-E4E7UQBT.js → chunk-I6XE47J2.js} +5 -5
- package/dist/cli-bundle/chunks/{chunk-NKTUBA2C.js → chunk-J2TSPY5L.js} +4 -4
- package/dist/cli-bundle/chunks/{chunk-IWKD7B33.js → chunk-JINYH2DB.js} +23 -2
- package/dist/cli-bundle/chunks/chunk-JINYH2DB.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-DYOJJTCG.js → chunk-JLSC5NPC.js} +10 -10
- package/dist/cli-bundle/chunks/{chunk-FXKPUMIR.js → chunk-JY25IOEZ.js} +5 -5
- package/dist/cli-bundle/chunks/{chunk-NCGQ27PK.js → chunk-K25UDYJ4.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-3WAKNI2W.js → chunk-KBTREGVO.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-KCJZREBI.js → chunk-KK4TQ3ZP.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-AZ75OVK4.js → chunk-KL5ELX2X.js} +82 -3
- package/dist/cli-bundle/chunks/chunk-KL5ELX2X.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-7MMXBIRZ.js → chunk-KRJJPDUO.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-BYNJWB5F.js → chunk-MD7XKVWI.js} +7 -7
- package/dist/cli-bundle/chunks/{chunk-WFOITX4A.js → chunk-MNGAQB2E.js} +8 -8
- package/dist/cli-bundle/chunks/{chunk-II4BRHKM.js → chunk-NIWY4V4Z.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-YT4Z2OVB.js → chunk-NKZOJPXK.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-YBQF4CAW.js → chunk-NVUATMTC.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-FSOJCFDS.js → chunk-P7ZU73BO.js} +55 -5
- package/dist/cli-bundle/chunks/chunk-P7ZU73BO.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-MTQK5ZSB.js → chunk-PCH2JTEO.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-VE3BUO3R.js → chunk-PJS2J7Z4.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-2QJLN4KM.js → chunk-QQWEROGS.js} +7 -7
- package/dist/cli-bundle/chunks/{chunk-OLEP5TJH.js → chunk-R2EMWY7Q.js} +24 -3
- package/dist/cli-bundle/chunks/chunk-R2EMWY7Q.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-6DZO5NN7.js → chunk-RPRFBXND.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-QWAJPGEI.js → chunk-RZZMSY4P.js} +91 -5
- package/dist/cli-bundle/chunks/chunk-RZZMSY4P.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-BBSUVIIT.js → chunk-SFKQAVZA.js} +8 -8
- package/dist/cli-bundle/chunks/{chunk-X3CD2VUI.js → chunk-THKDPOS5.js} +8 -8
- package/dist/cli-bundle/chunks/{chunk-OVSFW4KD.js → chunk-TIKJAXQW.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-4YMX7XFI.js → chunk-TJABI6PR.js} +5 -5
- package/dist/cli-bundle/chunks/{chunk-VONJSFUW.js → chunk-TRUFOER3.js} +19 -14
- package/dist/cli-bundle/chunks/{chunk-VONJSFUW.js.map → chunk-TRUFOER3.js.map} +2 -2
- package/dist/cli-bundle/chunks/{chunk-AW4PYYNF.js → chunk-TZQKEBKF.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-QUTJOHGK.js → chunk-UKK2VTTH.js} +9 -9
- package/dist/cli-bundle/chunks/{chunk-ATRXPXAL.js → chunk-V4SM4UAL.js} +13 -13
- package/dist/cli-bundle/chunks/{chunk-6KARQMC6.js → chunk-VB54F347.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-6LTSLEHD.js → chunk-WBSYW3NT.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-4S4INK3B.js → chunk-WQDX7DVG.js} +7 -7
- package/dist/cli-bundle/chunks/{chunk-ETJKPURB.js → chunk-XKNF3VRJ.js} +5 -5
- package/dist/cli-bundle/chunks/{chunk-BZWIDTDE.js → chunk-Y335KFHD.js} +9 -9
- package/dist/cli-bundle/chunks/{chunk-K2LBDYDC.js → chunk-Y4BZEND6.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-EOFROIC5.js → chunk-YATDFWYK.js} +7 -7
- package/dist/cli-bundle/chunks/{chunk-EKMHDL6Z.js → chunk-YJICYNAV.js} +8 -8
- package/dist/cli-bundle/chunks/{chunk-WMQBNVZL.js → chunk-YQSWTVZF.js} +4 -4
- package/dist/cli-bundle/chunks/{chunk-FBBPCSJM.js → chunk-YRLLL5TY.js} +8 -8
- package/dist/cli-bundle/chunks/{claim-G57ZJLZ4.js → claim-MPXNVBZQ.js} +10 -10
- package/dist/cli-bundle/chunks/{claim-TRSDQO6L.js → claim-SKHJDLW6.js} +10 -10
- package/dist/cli-bundle/chunks/{close-4QMUQMON.js → close-4RKSL5L6.js} +8 -8
- package/dist/cli-bundle/chunks/close-Z6AI736U.js +15 -0
- package/dist/cli-bundle/chunks/{close-many-3UWKJRQK.js → close-many-AWTPXLHJ.js} +15 -15
- package/dist/cli-bundle/chunks/{close-many-A7U62CRI.js → close-many-SXODYBDP.js} +15 -15
- package/dist/cli-bundle/chunks/{comments-URWDZP2I.js → comments-OOH64LWW.js} +10 -10
- package/dist/cli-bundle/chunks/{comments-4EM7XR74.js → comments-YYW5P7AG.js} +10 -10
- package/dist/cli-bundle/chunks/{config-PSZ5GWAK.js → config-3445MCQQ.js} +8 -8
- package/dist/cli-bundle/chunks/{config-GRJYZ2O3.js → config-LCDMKRB2.js} +8 -8
- package/dist/cli-bundle/chunks/{context-BCR34RKM.js → context-DZMIBIVP.js} +13 -13
- package/dist/cli-bundle/chunks/{context-A46YAV2F.js → context-PJCURODY.js} +13 -13
- package/dist/cli-bundle/chunks/{contracts-JOPCQNDP.js → contracts-7YDFEJB3.js} +4 -4
- package/dist/cli-bundle/chunks/{contracts-HPT25X4D.js → contracts-MP2P3HL5.js} +4 -4
- package/dist/cli-bundle/chunks/{copy-KBTIUW7L.js → copy-63IQQRRS.js} +7 -7
- package/dist/cli-bundle/chunks/{copy-X7V6AEDB.js → copy-TASIH2AZ.js} +7 -7
- package/dist/cli-bundle/chunks/create-3BV2VA3Q.js +30 -0
- package/dist/cli-bundle/chunks/{create-ZPZKJDFQ.js → create-TGSB5GV4.js} +14 -14
- package/dist/cli-bundle/chunks/{delete-FGKVPUQZ.js → delete-ARILQQLB.js} +7 -7
- package/dist/cli-bundle/chunks/{delete-2ZI6CJZM.js → delete-ZQKBZYNK.js} +7 -7
- package/dist/cli-bundle/chunks/{deps-IUJOBF2H.js → deps-MSHQR2GY.js} +7 -7
- package/dist/cli-bundle/chunks/{deps-SJCEFU3C.js → deps-NJFJIMQ5.js} +7 -7
- package/dist/cli-bundle/chunks/{docs-UWJ75CKR.js → docs-SS4UKYYA.js} +9 -9
- package/dist/cli-bundle/chunks/{docs-2LXF5SVC.js → docs-XK2UVUXX.js} +9 -9
- package/dist/cli-bundle/chunks/{eval-ZTT3F3SL.js → eval-FVZGX5IZ.js} +12 -12
- package/dist/cli-bundle/chunks/{eval-FRIDCTM2.js → eval-JOTG2YHU.js} +12 -12
- package/dist/cli-bundle/chunks/{extension-VRYTNNSV.js → extension-NLMS47I4.js} +6 -5
- package/dist/cli-bundle/chunks/{extension-XFQG3BXL.js → extension-OQPS27B4.js} +6 -5
- package/dist/cli-bundle/chunks/{files-AJOGTTAN.js → files-3EVJQZ2N.js} +9 -9
- package/dist/cli-bundle/chunks/{files-B2RUCA32.js → files-Y2P6LN5A.js} +9 -9
- package/dist/cli-bundle/chunks/{focus-7N36RIMT.js → focus-D5ZUPTII.js} +8 -8
- package/dist/cli-bundle/chunks/{focus-CFE33IYC.js → focus-ZPIFTY4R.js} +8 -8
- package/dist/cli-bundle/chunks/{gc-SBF2FGHK.js → gc-LXXDY456.js} +3 -3
- package/dist/cli-bundle/chunks/{gc-OYJK4YBY.js → gc-RNOEQHSX.js} +3 -3
- package/dist/cli-bundle/chunks/{get-LLFWSPXW.js → get-Q3SZGQHD.js} +11 -11
- package/dist/cli-bundle/chunks/{get-577VLZZ7.js → get-W23G7MJX.js} +11 -11
- package/dist/cli-bundle/chunks/{health-PBJS7W2T.js → health-5LHSX365.js} +33 -19
- package/dist/cli-bundle/chunks/health-5LHSX365.js.map +7 -0
- package/dist/cli-bundle/chunks/{health-C2PUT6JZ.js → health-UDDGJLPP.js} +34 -20
- package/dist/cli-bundle/chunks/health-UDDGJLPP.js.map +1 -0
- package/dist/cli-bundle/chunks/{history-4FJK6Y3O.js → history-6CZVFIUJ.js} +10 -10
- package/dist/cli-bundle/chunks/history-YRQUD4YM.js +20 -0
- package/dist/cli-bundle/chunks/{history-compact-AXR6R6GU.js → history-compact-M35PDQ4G.js} +12 -12
- package/dist/cli-bundle/chunks/{history-compact-HXF3OT7G.js → history-compact-VWUSQH6Z.js} +12 -12
- package/dist/cli-bundle/chunks/history-redact-27OEOZRZ.js +21 -0
- package/dist/cli-bundle/chunks/{history-redact-UMPD4G3K.js → history-redact-AJGARHT3.js} +11 -11
- package/dist/cli-bundle/chunks/{history-repair-WHOK2ICG.js → history-repair-5RDMF7K4.js} +12 -12
- package/dist/cli-bundle/chunks/{history-repair-X57HE5EA.js → history-repair-YUAHIPIN.js} +12 -12
- package/dist/cli-bundle/chunks/init-DWAKYRXI.js +21 -0
- package/dist/cli-bundle/chunks/{init-N7MIIYCU.js → init-HASX3YNJ.js} +11 -10
- package/dist/cli-bundle/chunks/{learnings-GZRBIEAN.js → learnings-JNGUIJDK.js} +10 -10
- package/dist/cli-bundle/chunks/{learnings-FPG7WAVW.js → learnings-M4KA6MQE.js} +10 -10
- package/dist/cli-bundle/chunks/{list-ZDQ2OBSO.js → list-5UU2W24O.js} +10 -10
- package/dist/cli-bundle/chunks/{list-MZBCSKLU.js → list-6FMKTIH3.js} +10 -10
- package/dist/cli-bundle/chunks/{notes-LW53PFLH.js → notes-MODH5CBT.js} +10 -10
- package/dist/cli-bundle/chunks/{notes-WQAP67EC.js → notes-PYCPLA5Y.js} +10 -10
- package/dist/cli-bundle/chunks/{plan-VZKICKIJ.js → plan-DXRIRYRU.js} +14 -14
- package/dist/cli-bundle/chunks/{plan-AVJ4VJQO.js → plan-EHQALWSC.js} +14 -14
- package/dist/cli-bundle/chunks/{register-list-query-7BD6ZHU5.js → register-list-query-QAASVP2J.js} +19 -19
- package/dist/cli-bundle/chunks/{register-list-query-CM4SVAQA.js → register-list-query-WE54YJMH.js} +19 -19
- package/dist/cli-bundle/chunks/{register-mutation-ANZIWHUF.js → register-mutation-B6DZJTY2.js} +33 -33
- package/dist/cli-bundle/chunks/{register-mutation-PLFHAS4N.js → register-mutation-CPV4C2KR.js} +33 -33
- package/dist/cli-bundle/chunks/{register-operations-KQPQIFF2.js → register-operations-AT3BVVX2.js} +32 -32
- package/dist/cli-bundle/chunks/{register-operations-VLGCAWIW.js → register-operations-RC4C3423.js} +32 -32
- package/dist/cli-bundle/chunks/{register-setup-KPTZ36D4.js → register-setup-HXEHMDHE.js} +23 -18
- package/dist/cli-bundle/chunks/register-setup-HXEHMDHE.js.map +7 -0
- package/dist/cli-bundle/chunks/{register-setup-TMEF6V7O.js → register-setup-JSMJEFCJ.js} +24 -19
- package/dist/cli-bundle/chunks/register-setup-JSMJEFCJ.js.map +1 -0
- package/dist/cli-bundle/chunks/{restore-64JKQV7G.js → restore-FNBV4GWE.js} +11 -11
- package/dist/cli-bundle/chunks/restore-XY4YE2OV.js +19 -0
- package/dist/cli-bundle/chunks/{scheduling-shortcuts-X6D6VSZR.js → scheduling-shortcuts-ECL6GBMZ.js} +14 -14
- package/dist/cli-bundle/chunks/{scheduling-shortcuts-4ION7QAX.js → scheduling-shortcuts-JRIUREEU.js} +14 -14
- package/dist/cli-bundle/chunks/{schema-TA3NF3RG.js → schema-74YENAJL.js} +9 -9
- package/dist/cli-bundle/chunks/{schema-OA4RSVMI.js → schema-TCW3I7QR.js} +9 -9
- package/dist/cli-bundle/chunks/{search-UAIHEQZL.js → search-7USZ6XZA.js} +12 -12
- package/dist/cli-bundle/chunks/{search-INCM5I4J.js → search-GNAUE65M.js} +12 -12
- package/dist/cli-bundle/chunks/{stats-RHEMG4CE.js → stats-CVHASAEU.js} +8 -8
- package/dist/cli-bundle/chunks/{stats-WQWTIA5Y.js → stats-DQMKJMFT.js} +8 -8
- package/dist/cli-bundle/chunks/{telemetry-XA5D2QEO.js → telemetry-7P5EUWCS.js} +4 -4
- package/dist/cli-bundle/chunks/{telemetry-G6UKGKJU.js → telemetry-PQTL5YS2.js} +4 -4
- package/dist/cli-bundle/chunks/test-COWPCGBE.js +36 -0
- package/dist/cli-bundle/chunks/{test-ZMQF23P3.js → test-FDQZQNZ4.js} +16 -15
- package/dist/cli-bundle/chunks/{test-all-ZNQBMUOI.js → test-all-PIPPS4S5.js} +18 -17
- package/dist/cli-bundle/chunks/{test-all-ZNQBMUOI.js.map → test-all-PIPPS4S5.js.map} +1 -1
- package/dist/cli-bundle/chunks/{test-all-WUBBJCPU.js → test-all-WQIAZVA6.js} +16 -15
- package/dist/cli-bundle/chunks/{test-all-WUBBJCPU.js.map → test-all-WQIAZVA6.js.map} +1 -1
- package/dist/cli-bundle/chunks/{test-runs-N7LI7HLH.js → test-runs-JS6DNCCI.js} +5 -5
- package/dist/cli-bundle/chunks/{test-runs-RFA42EEX.js → test-runs-NZD2QGL5.js} +5 -5
- package/dist/cli-bundle/chunks/update-7IYQHX4Q.js +24 -0
- package/dist/cli-bundle/chunks/update-IJKDRBIX.js +28 -0
- package/dist/cli-bundle/chunks/{update-many-6XFR7TFG.js → update-many-6NTZ5J5D.js} +23 -23
- package/dist/cli-bundle/chunks/{update-many-NMRUQZL2.js → update-many-B3TH5TDS.js} +23 -23
- package/dist/cli-bundle/chunks/{upgrade-QMCSONWR.js → upgrade-4C7VE7MS.js} +8 -7
- package/dist/cli-bundle/chunks/{upgrade-QMCSONWR.js.map → upgrade-4C7VE7MS.js.map} +1 -1
- package/dist/cli-bundle/chunks/{upgrade-EJTME2YQ.js → upgrade-76IKZ6EZ.js} +6 -5
- package/dist/cli-bundle/chunks/{upgrade-EJTME2YQ.js.map → upgrade-76IKZ6EZ.js.map} +1 -1
- package/dist/cli-bundle/chunks/{validate-KIIJY5RC.js → validate-AQU7OCL3.js} +62 -23
- package/dist/cli-bundle/chunks/validate-AQU7OCL3.js.map +7 -0
- package/dist/cli-bundle/chunks/{validate-3SUCHXXX.js → validate-BPM6Z3OT.js} +63 -24
- package/dist/cli-bundle/chunks/validate-BPM6Z3OT.js.map +1 -0
- package/dist/cli-bundle/main.js +34 -22
- package/dist/cli-bundle/main.js.map +2 -2
- package/dist/cli.js +3 -3
- package/dist/cli.js.map +1 -1
- package/dist/core/diagnostics/remediation.js +23 -2
- package/dist/core/diagnostics/remediation.js.map +1 -1
- package/dist/core/extensions/capability-usage.d.ts +82 -0
- package/dist/core/extensions/capability-usage.js +133 -0
- package/dist/core/extensions/capability-usage.js.map +1 -0
- package/dist/core/extensions/extension-capability-aliases.d.ts +7 -0
- package/dist/core/extensions/extension-capability-aliases.js +12 -2
- package/dist/core/extensions/extension-capability-aliases.js.map +1 -1
- package/dist/core/extensions/index.d.ts +1 -0
- package/dist/core/extensions/index.js +3 -2
- package/dist/core/extensions/index.js.map +1 -1
- package/dist/core/item/item-format-version.d.ts +87 -0
- package/dist/core/item/item-format-version.js +85 -0
- package/dist/core/item/item-format-version.js.map +1 -0
- package/dist/core/item/item-format.js +8 -2
- package/dist/core/item/item-format.js.map +1 -1
- package/dist/core/shared/constants.js +3 -2
- package/dist/core/shared/constants.js.map +1 -1
- package/dist/sdk/cli-contracts.d.ts +1 -0
- package/dist/sdk/cli-contracts.js +18 -13
- package/dist/sdk/cli-contracts.js.map +1 -1
- package/dist/sdk/index.d.ts +7 -2
- package/dist/sdk/index.js +8 -3
- package/dist/sdk/index.js.map +1 -1
- package/dist/sdk/runtime.d.ts +1 -0
- package/dist/sdk/runtime.js +3 -2
- package/dist/sdk/runtime.js.map +1 -1
- package/dist/sdk/testing.d.ts +567 -1
- package/dist/sdk/testing.js +573 -18
- package/dist/sdk/testing.js.map +1 -1
- package/dist/types.d.ts +7 -0
- package/dist/types.js +2 -2
- package/dist/types.js.map +1 -1
- package/docs/ARCHITECTURE.md +2 -0
- package/docs/COMMANDS.md +2 -0
- package/docs/EXTENSIONS.md +4 -8
- package/docs/SDK.md +328 -0
- package/package.json +2 -2
- package/packages/pm-command-kit/README.md +4 -0
- package/packages/pm-todos/extensions/todos/runtime.js +191 -8
- package/packages/pm-todos/extensions/todos/runtime.ts +207 -7
- package/dist/cli-bundle/chunks/activity-7G7NNNZQ.js +0 -18
- package/dist/cli-bundle/chunks/chunk-5MWA46UN.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-AZ75OVK4.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-FSOJCFDS.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-H3ZTSYPA.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-IWKD7B33.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-LTUB7ARL.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-MFCFHL27.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-OLEP5TJH.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-QWAJPGEI.js.map +0 -7
- package/dist/cli-bundle/chunks/close-NNZZTZ5V.js +0 -15
- package/dist/cli-bundle/chunks/create-4KOAQ6ME.js +0 -30
- package/dist/cli-bundle/chunks/health-C2PUT6JZ.js.map +0 -1
- package/dist/cli-bundle/chunks/health-PBJS7W2T.js.map +0 -7
- package/dist/cli-bundle/chunks/history-ZXNWG6H4.js +0 -20
- package/dist/cli-bundle/chunks/history-redact-GV633Z4H.js +0 -21
- package/dist/cli-bundle/chunks/init-KQWZSNBX.js +0 -20
- package/dist/cli-bundle/chunks/register-setup-KPTZ36D4.js.map +0 -7
- package/dist/cli-bundle/chunks/register-setup-TMEF6V7O.js.map +0 -1
- package/dist/cli-bundle/chunks/restore-GKM26SAW.js +0 -19
- package/dist/cli-bundle/chunks/test-XF7BYLMZ.js +0 -35
- package/dist/cli-bundle/chunks/update-CPNOG73P.js +0 -24
- package/dist/cli-bundle/chunks/update-T5AYT6ZN.js +0 -28
- package/dist/cli-bundle/chunks/validate-3SUCHXXX.js.map +0 -1
- package/dist/cli-bundle/chunks/validate-KIIJY5RC.js.map +0 -7
- /package/dist/cli-bundle/chunks/{activity-KEEITOTB.js.map → activity-DXS2XMQU.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{activity-7G7NNNZQ.js.map → activity-NEOI45NX.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{aggregate-5BTHOHW2.js.map → aggregate-IHM4KMQ3.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{aggregate-GB2LJNTZ.js.map → aggregate-NMYDVQF7.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{append-BBM4MNVD.js.map → append-3HY5G7ET.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{append-BFV5UYWS.js.map → append-K54MDQYC.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-DKWIPIJY.js.map → chunk-25XZN3JD.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-GF44HVZL.js.map → chunk-2LEYMXI6.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-XNQ3YH6N.js.map → chunk-3VLPDG3J.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-W2ZESOQE.js.map → chunk-44O4JIN6.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-RADIHKJ3.js.map → chunk-47HTJ6BU.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-B3LROPTV.js.map → chunk-4JXWVHMN.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-HWHZ7EY7.js.map → chunk-4SDKF5BG.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-RNKUCHUQ.js.map → chunk-5SESR24H.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-RICT5QYR.js.map → chunk-6FQHNHQQ.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-FA5O2DEG.js.map → chunk-6UPTNMVW.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-4KFL5OYK.js.map → chunk-75VEYQJS.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-2ZY5SLNR.js.map → chunk-77VKGH4L.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-6Y7IQ6XN.js.map → chunk-7MALIV5H.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-NMQNXH4U.js.map → chunk-7PBGTIN3.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-3KVCMB2M.js.map → chunk-A25LOPRG.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-6KSFULO6.js.map → chunk-A7E4ZXG2.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-ZHCSGIUX.js.map → chunk-AJXYOYJV.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-PF5GLFPU.js.map → chunk-B2KR24R4.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-ZYG4TR32.js.map → chunk-C5SWTISA.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-F4EYOSNC.js.map → chunk-CLLVBO3I.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-4PW4C3ZB.js.map → chunk-CWPBGUC7.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-J7VSEFWB.js.map → chunk-DBQUQ3AS.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-2LUNPA3U.js.map → chunk-DHBPJ7VG.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-6FSPWUBI.js.map → chunk-DMT4ODVN.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-XXGAWTH5.js.map → chunk-DU64SZUQ.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-CNPWCUDR.js.map → chunk-EVPVCE4R.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-ACULWT7G.js.map → chunk-FK6MV5F5.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-XKJDCJEH.js.map → chunk-GGAXE22C.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-SL233DQD.js.map → chunk-GNDHOR64.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-U3WTMYBX.js.map → chunk-GU7YHKYP.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-26OQTCGH.js.map → chunk-GXBSFKSX.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-AOCYDQLT.js.map → chunk-H6FNDCDI.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-ICEWMJYH.js.map → chunk-HYQV75IB.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-5XK2RYJR.js.map → chunk-I367IDZP.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-E4E7UQBT.js.map → chunk-I6XE47J2.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-NKTUBA2C.js.map → chunk-J2TSPY5L.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-DYOJJTCG.js.map → chunk-JLSC5NPC.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-FXKPUMIR.js.map → chunk-JY25IOEZ.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-NCGQ27PK.js.map → chunk-K25UDYJ4.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-3WAKNI2W.js.map → chunk-KBTREGVO.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-KCJZREBI.js.map → chunk-KK4TQ3ZP.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-7MMXBIRZ.js.map → chunk-KRJJPDUO.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-BYNJWB5F.js.map → chunk-MD7XKVWI.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-WFOITX4A.js.map → chunk-MNGAQB2E.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-II4BRHKM.js.map → chunk-NIWY4V4Z.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-YT4Z2OVB.js.map → chunk-NKZOJPXK.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-YBQF4CAW.js.map → chunk-NVUATMTC.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-MTQK5ZSB.js.map → chunk-PCH2JTEO.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-VE3BUO3R.js.map → chunk-PJS2J7Z4.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-2QJLN4KM.js.map → chunk-QQWEROGS.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-6DZO5NN7.js.map → chunk-RPRFBXND.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-BBSUVIIT.js.map → chunk-SFKQAVZA.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-X3CD2VUI.js.map → chunk-THKDPOS5.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-OVSFW4KD.js.map → chunk-TIKJAXQW.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-4YMX7XFI.js.map → chunk-TJABI6PR.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-AW4PYYNF.js.map → chunk-TZQKEBKF.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-QUTJOHGK.js.map → chunk-UKK2VTTH.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-ATRXPXAL.js.map → chunk-V4SM4UAL.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-6KARQMC6.js.map → chunk-VB54F347.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-6LTSLEHD.js.map → chunk-WBSYW3NT.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-4S4INK3B.js.map → chunk-WQDX7DVG.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-ETJKPURB.js.map → chunk-XKNF3VRJ.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-BZWIDTDE.js.map → chunk-Y335KFHD.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-K2LBDYDC.js.map → chunk-Y4BZEND6.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-EOFROIC5.js.map → chunk-YATDFWYK.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-EKMHDL6Z.js.map → chunk-YJICYNAV.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-WMQBNVZL.js.map → chunk-YQSWTVZF.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-FBBPCSJM.js.map → chunk-YRLLL5TY.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{claim-G57ZJLZ4.js.map → claim-MPXNVBZQ.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{claim-TRSDQO6L.js.map → claim-SKHJDLW6.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{close-4QMUQMON.js.map → close-4RKSL5L6.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{close-NNZZTZ5V.js.map → close-Z6AI736U.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{close-many-3UWKJRQK.js.map → close-many-AWTPXLHJ.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{close-many-A7U62CRI.js.map → close-many-SXODYBDP.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{comments-URWDZP2I.js.map → comments-OOH64LWW.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{comments-4EM7XR74.js.map → comments-YYW5P7AG.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{config-PSZ5GWAK.js.map → config-3445MCQQ.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{config-GRJYZ2O3.js.map → config-LCDMKRB2.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{context-BCR34RKM.js.map → context-DZMIBIVP.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{context-A46YAV2F.js.map → context-PJCURODY.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{contracts-JOPCQNDP.js.map → contracts-7YDFEJB3.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{contracts-HPT25X4D.js.map → contracts-MP2P3HL5.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{copy-KBTIUW7L.js.map → copy-63IQQRRS.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{copy-X7V6AEDB.js.map → copy-TASIH2AZ.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{create-4KOAQ6ME.js.map → create-3BV2VA3Q.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{create-ZPZKJDFQ.js.map → create-TGSB5GV4.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{delete-FGKVPUQZ.js.map → delete-ARILQQLB.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{delete-2ZI6CJZM.js.map → delete-ZQKBZYNK.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{deps-IUJOBF2H.js.map → deps-MSHQR2GY.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{deps-SJCEFU3C.js.map → deps-NJFJIMQ5.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{docs-UWJ75CKR.js.map → docs-SS4UKYYA.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{docs-2LXF5SVC.js.map → docs-XK2UVUXX.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{eval-ZTT3F3SL.js.map → eval-FVZGX5IZ.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{eval-FRIDCTM2.js.map → eval-JOTG2YHU.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{extension-VRYTNNSV.js.map → extension-NLMS47I4.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{extension-XFQG3BXL.js.map → extension-OQPS27B4.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{files-AJOGTTAN.js.map → files-3EVJQZ2N.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{files-B2RUCA32.js.map → files-Y2P6LN5A.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{focus-7N36RIMT.js.map → focus-D5ZUPTII.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{focus-CFE33IYC.js.map → focus-ZPIFTY4R.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{gc-SBF2FGHK.js.map → gc-LXXDY456.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{gc-OYJK4YBY.js.map → gc-RNOEQHSX.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{get-LLFWSPXW.js.map → get-Q3SZGQHD.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{get-577VLZZ7.js.map → get-W23G7MJX.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{history-4FJK6Y3O.js.map → history-6CZVFIUJ.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{history-ZXNWG6H4.js.map → history-YRQUD4YM.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{history-compact-AXR6R6GU.js.map → history-compact-M35PDQ4G.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{history-compact-HXF3OT7G.js.map → history-compact-VWUSQH6Z.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{history-redact-GV633Z4H.js.map → history-redact-27OEOZRZ.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{history-redact-UMPD4G3K.js.map → history-redact-AJGARHT3.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{history-repair-WHOK2ICG.js.map → history-repair-5RDMF7K4.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{history-repair-X57HE5EA.js.map → history-repair-YUAHIPIN.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{init-KQWZSNBX.js.map → init-DWAKYRXI.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{init-N7MIIYCU.js.map → init-HASX3YNJ.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{learnings-GZRBIEAN.js.map → learnings-JNGUIJDK.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{learnings-FPG7WAVW.js.map → learnings-M4KA6MQE.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{list-ZDQ2OBSO.js.map → list-5UU2W24O.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{list-MZBCSKLU.js.map → list-6FMKTIH3.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{notes-LW53PFLH.js.map → notes-MODH5CBT.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{notes-WQAP67EC.js.map → notes-PYCPLA5Y.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{plan-VZKICKIJ.js.map → plan-DXRIRYRU.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{plan-AVJ4VJQO.js.map → plan-EHQALWSC.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{register-list-query-7BD6ZHU5.js.map → register-list-query-QAASVP2J.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{register-list-query-CM4SVAQA.js.map → register-list-query-WE54YJMH.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{register-mutation-ANZIWHUF.js.map → register-mutation-B6DZJTY2.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{register-mutation-PLFHAS4N.js.map → register-mutation-CPV4C2KR.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{register-operations-KQPQIFF2.js.map → register-operations-AT3BVVX2.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{register-operations-VLGCAWIW.js.map → register-operations-RC4C3423.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{restore-64JKQV7G.js.map → restore-FNBV4GWE.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{restore-GKM26SAW.js.map → restore-XY4YE2OV.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{scheduling-shortcuts-X6D6VSZR.js.map → scheduling-shortcuts-ECL6GBMZ.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{scheduling-shortcuts-4ION7QAX.js.map → scheduling-shortcuts-JRIUREEU.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{schema-TA3NF3RG.js.map → schema-74YENAJL.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{schema-OA4RSVMI.js.map → schema-TCW3I7QR.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{search-UAIHEQZL.js.map → search-7USZ6XZA.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{search-INCM5I4J.js.map → search-GNAUE65M.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{stats-RHEMG4CE.js.map → stats-CVHASAEU.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{stats-WQWTIA5Y.js.map → stats-DQMKJMFT.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{telemetry-XA5D2QEO.js.map → telemetry-7P5EUWCS.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{telemetry-G6UKGKJU.js.map → telemetry-PQTL5YS2.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{test-XF7BYLMZ.js.map → test-COWPCGBE.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{test-ZMQF23P3.js.map → test-FDQZQNZ4.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{test-runs-N7LI7HLH.js.map → test-runs-JS6DNCCI.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{test-runs-RFA42EEX.js.map → test-runs-NZD2QGL5.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{update-CPNOG73P.js.map → update-7IYQHX4Q.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{update-T5AYT6ZN.js.map → update-IJKDRBIX.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{update-many-6XFR7TFG.js.map → update-many-6NTZ5J5D.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{update-many-NMRUQZL2.js.map → update-many-B3TH5TDS.js.map} +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
EXIT_CODE,
|
|
3
3
|
PmCliError
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-RZZMSY4P.js";
|
|
5
5
|
|
|
6
6
|
// dist/core/item/parse.js
|
|
7
7
|
!(function() {
|
|
@@ -356,4 +356,4 @@ export {
|
|
|
356
356
|
createStdinTokenResolver,
|
|
357
357
|
parseOptionalNumber
|
|
358
358
|
};
|
|
359
|
-
//# sourceMappingURL=chunk-
|
|
359
|
+
//# sourceMappingURL=chunk-CWPBGUC7.js.map
|
|
@@ -1,18 +1,21 @@
|
|
|
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]="5b87215b-bb14-5510-af50-0d572df794ca")}catch(e){}}();
|
|
3
|
+
import {
|
|
4
|
+
scaffoldExtensionProject
|
|
5
|
+
} from "./chunk-3GL6LTUL.js";
|
|
3
6
|
import {
|
|
4
7
|
normalizeExtensionNameForMatch,
|
|
5
8
|
normalizeManagedDirectoryName,
|
|
6
9
|
normalizeStringList,
|
|
7
10
|
parseExtensionManifest,
|
|
8
11
|
validateExtensionDirectory
|
|
9
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-DMT4ODVN.js";
|
|
10
13
|
import {
|
|
11
14
|
splitCommaList
|
|
12
15
|
} from "./chunk-P4SESZGT.js";
|
|
13
16
|
import {
|
|
14
17
|
nowIso
|
|
15
|
-
} from "./chunk-
|
|
18
|
+
} from "./chunk-PCH2JTEO.js";
|
|
16
19
|
import {
|
|
17
20
|
EXIT_CODE,
|
|
18
21
|
EXTENSION_CAPABILITY_CONTRACT,
|
|
@@ -26,18 +29,19 @@ import {
|
|
|
26
29
|
parseUnknownExtensionCapabilityWarning,
|
|
27
30
|
pathExists,
|
|
28
31
|
readSettings,
|
|
32
|
+
reconcileExtensionCapabilityUsage,
|
|
29
33
|
resolveExtensionRoots,
|
|
30
34
|
resolveGlobalPmRoot,
|
|
31
35
|
resolvePmPackageRootFromModule,
|
|
32
36
|
resolvePmRoot,
|
|
33
37
|
writeSettings
|
|
34
|
-
} from "./chunk-
|
|
38
|
+
} from "./chunk-KL5ELX2X.js";
|
|
35
39
|
|
|
36
40
|
// dist/cli/commands/extension.js
|
|
37
41
|
import { execFile as execFile2 } from "node:child_process";
|
|
38
|
-
import
|
|
42
|
+
import fs5 from "node:fs/promises";
|
|
39
43
|
import os2 from "node:os";
|
|
40
|
-
import
|
|
44
|
+
import path5 from "node:path";
|
|
41
45
|
import { promisify as promisify2 } from "node:util";
|
|
42
46
|
|
|
43
47
|
// dist/cli/commands/extension/managed-state.js
|
|
@@ -1152,188 +1156,6 @@ function projectPackageCatalogEntry(entry, fields) {
|
|
|
1152
1156
|
return projected;
|
|
1153
1157
|
}
|
|
1154
1158
|
|
|
1155
|
-
// dist/cli/commands/extension/scaffold.js
|
|
1156
|
-
import fs5 from "node:fs/promises";
|
|
1157
|
-
import path5 from "node:path";
|
|
1158
|
-
var SCAFFOLD_MANIFEST_VERSION = 1;
|
|
1159
|
-
var SCAFFOLD_PM_MIN_VERSION = "2026.5.0";
|
|
1160
|
-
function buildStarterExtensionScaffoldFiles(extensionName, commandName, vocabulary) {
|
|
1161
|
-
const packageName = `pm-${extensionName}`;
|
|
1162
|
-
const manifest = `${JSON.stringify({
|
|
1163
|
-
name: extensionName,
|
|
1164
|
-
version: "0.1.0",
|
|
1165
|
-
entry: "./index.js",
|
|
1166
|
-
capabilities: ["commands"],
|
|
1167
|
-
manifest_version: SCAFFOLD_MANIFEST_VERSION,
|
|
1168
|
-
pm_min_version: SCAFFOLD_PM_MIN_VERSION
|
|
1169
|
-
}, null, 2)}
|
|
1170
|
-
`;
|
|
1171
|
-
const entrypoint = [
|
|
1172
|
-
'/** @param {import("@unbrained/pm-cli/sdk").ExtensionApi} api */',
|
|
1173
|
-
"export function activate(api) {",
|
|
1174
|
-
" api.registerCommand({",
|
|
1175
|
-
` name: ${JSON.stringify(commandName)},`,
|
|
1176
|
-
' description: "Starter scaffold command. Replace with your own behavior.",',
|
|
1177
|
-
" run: async (context) => ({",
|
|
1178
|
-
" ok: true,",
|
|
1179
|
-
` source: ${JSON.stringify(extensionName)},`,
|
|
1180
|
-
" command: context.command,",
|
|
1181
|
-
' message: "Starter extension scaffold is active.",',
|
|
1182
|
-
" }),",
|
|
1183
|
-
" });",
|
|
1184
|
-
"}",
|
|
1185
|
-
"",
|
|
1186
|
-
"export default {",
|
|
1187
|
-
" activate,",
|
|
1188
|
-
"};",
|
|
1189
|
-
""
|
|
1190
|
-
].join("\n");
|
|
1191
|
-
if (vocabulary === "package") {
|
|
1192
|
-
const packageJson = `${JSON.stringify({
|
|
1193
|
-
name: packageName,
|
|
1194
|
-
version: "0.1.0",
|
|
1195
|
-
private: true,
|
|
1196
|
-
type: "module",
|
|
1197
|
-
keywords: ["pm-package"],
|
|
1198
|
-
peerDependencies: {
|
|
1199
|
-
"@unbrained/pm-cli": "*"
|
|
1200
|
-
},
|
|
1201
|
-
pm: {
|
|
1202
|
-
aliases: [extensionName],
|
|
1203
|
-
extensions: ["."],
|
|
1204
|
-
docs: ["README.md"],
|
|
1205
|
-
examples: ["README.md"],
|
|
1206
|
-
catalog: {
|
|
1207
|
-
display_name: extensionName,
|
|
1208
|
-
category: "workflow",
|
|
1209
|
-
summary: "Starter pm package scaffold.",
|
|
1210
|
-
tags: ["starter"]
|
|
1211
|
-
}
|
|
1212
|
-
}
|
|
1213
|
-
}, null, 2)}
|
|
1214
|
-
`;
|
|
1215
|
-
const packageReadme = [
|
|
1216
|
-
`# ${packageName}`,
|
|
1217
|
-
"",
|
|
1218
|
-
"Generated by `pm package init`.",
|
|
1219
|
-
"",
|
|
1220
|
-
"## Included Files",
|
|
1221
|
-
"- `package.json`: package metadata and `pm` resource manifest.",
|
|
1222
|
-
"- `manifest.json`: extension metadata and capabilities.",
|
|
1223
|
-
"- `index.js`: starter command registration using the `commands` capability.",
|
|
1224
|
-
"",
|
|
1225
|
-
"## Quick Start",
|
|
1226
|
-
"```bash",
|
|
1227
|
-
"pm install --project <package-path>",
|
|
1228
|
-
`pm ${commandName}`,
|
|
1229
|
-
"pm package doctor --project --detail summary",
|
|
1230
|
-
"```",
|
|
1231
|
-
"",
|
|
1232
|
-
"## Compatibility Bounds",
|
|
1233
|
-
"`manifest.json` cannot hold comments, so the version-compatibility fields are documented here:",
|
|
1234
|
-
`- \`manifest_version\` (integer): manifest schema generation. Leave at \`${SCAFFOLD_MANIFEST_VERSION}\` unless you adopt a newer manifest schema.`,
|
|
1235
|
-
`- \`pm_min_version\` (string): lowest pm CLI version that may load this package. Scaffolded as \`${SCAFFOLD_PM_MIN_VERSION}\`. The loader blocks the package on older CLIs.`,
|
|
1236
|
-
"- `pm_max_version` (string, optional): highest pm CLI version that may load this package. Add it to block CLIs that are newer than the version you have validated against. The loader blocks the package when the CLI exceeds this bound.",
|
|
1237
|
-
"",
|
|
1238
|
-
"## Notes",
|
|
1239
|
-
"- Keep simple starter runtime behavior at the package root so local installs work without dependency bootstrapping.",
|
|
1240
|
-
"- Move larger runtimes into subdirectories only after adding package dependencies and validating `pm package doctor`.",
|
|
1241
|
-
"- Add capabilities to the extension manifest only when the entrypoint uses the matching SDK API.",
|
|
1242
|
-
"- Use `@unbrained/pm-cli/sdk` as the public SDK import for richer package runtimes.",
|
|
1243
|
-
""
|
|
1244
|
-
].join("\n");
|
|
1245
|
-
return {
|
|
1246
|
-
"package.json": packageJson,
|
|
1247
|
-
"manifest.json": manifest,
|
|
1248
|
-
"index.js": entrypoint,
|
|
1249
|
-
"README.md": packageReadme
|
|
1250
|
-
};
|
|
1251
|
-
}
|
|
1252
|
-
const readme = [
|
|
1253
|
-
`# ${extensionName}`,
|
|
1254
|
-
"",
|
|
1255
|
-
"Generated by `pm extension init`.",
|
|
1256
|
-
"",
|
|
1257
|
-
"## Included Files",
|
|
1258
|
-
"- `manifest.json`: extension metadata and capabilities.",
|
|
1259
|
-
"- `index.js`: starter command registration using the `commands` capability.",
|
|
1260
|
-
"",
|
|
1261
|
-
"## Quick Start",
|
|
1262
|
-
"```bash",
|
|
1263
|
-
"pm extension --install --project <scaffold-path>",
|
|
1264
|
-
`pm ${commandName}`,
|
|
1265
|
-
"pm extension --doctor --project --detail summary",
|
|
1266
|
-
"```",
|
|
1267
|
-
"",
|
|
1268
|
-
"## Compatibility Bounds",
|
|
1269
|
-
"`manifest.json` cannot hold comments, so the version-compatibility fields are documented here:",
|
|
1270
|
-
`- \`manifest_version\` (integer): manifest schema generation. Leave at \`${SCAFFOLD_MANIFEST_VERSION}\` unless you adopt a newer manifest schema.`,
|
|
1271
|
-
`- \`pm_min_version\` (string): lowest pm CLI version that may load this extension. Scaffolded as \`${SCAFFOLD_PM_MIN_VERSION}\`. The loader blocks the extension on older CLIs.`,
|
|
1272
|
-
"- `pm_max_version` (string, optional): highest pm CLI version that may load this extension. Add it to block CLIs that are newer than the version you have validated against. The loader blocks the extension when the CLI exceeds this bound.",
|
|
1273
|
-
"",
|
|
1274
|
-
"## Notes",
|
|
1275
|
-
"- This scaffold uses ESM exports so it works in package scopes with `type: module`.",
|
|
1276
|
-
"- Update `manifest.json` capabilities and `index.js` command behavior as your extension evolves.",
|
|
1277
|
-
""
|
|
1278
|
-
].join("\n");
|
|
1279
|
-
return {
|
|
1280
|
-
"manifest.json": manifest,
|
|
1281
|
-
"index.js": entrypoint,
|
|
1282
|
-
"README.md": readme
|
|
1283
|
-
};
|
|
1284
|
-
}
|
|
1285
|
-
async function scaffoldExtensionProject(target, vocabulary = "extension") {
|
|
1286
|
-
const normalizedTarget = target.trim();
|
|
1287
|
-
const targetPath = path5.resolve(process.cwd(), normalizedTarget);
|
|
1288
|
-
const extensionName = normalizeManagedDirectoryName(path5.basename(targetPath));
|
|
1289
|
-
const commandName = `${extensionName} ping`;
|
|
1290
|
-
const scaffoldFiles = buildStarterExtensionScaffoldFiles(extensionName, commandName, vocabulary);
|
|
1291
|
-
let createdDirectory = false;
|
|
1292
|
-
if (await pathExists(targetPath)) {
|
|
1293
|
-
const existingTargetStats = await fs5.stat(targetPath);
|
|
1294
|
-
if (!existingTargetStats.isDirectory()) {
|
|
1295
|
-
throw new PmCliError(`Scaffold target "${targetPath}" exists and is not a directory.`, EXIT_CODE.CONFLICT);
|
|
1296
|
-
}
|
|
1297
|
-
} else {
|
|
1298
|
-
await fs5.mkdir(targetPath, { recursive: true });
|
|
1299
|
-
createdDirectory = true;
|
|
1300
|
-
}
|
|
1301
|
-
for (const [relativePath, content] of Object.entries(scaffoldFiles)) {
|
|
1302
|
-
const absolutePath = path5.join(targetPath, relativePath);
|
|
1303
|
-
if (!await pathExists(absolutePath)) {
|
|
1304
|
-
continue;
|
|
1305
|
-
}
|
|
1306
|
-
const existingContent = await fs5.readFile(absolutePath, "utf8");
|
|
1307
|
-
if (existingContent !== content) {
|
|
1308
|
-
throw new PmCliError(`Scaffold file "${relativePath}" already exists with different content in "${targetPath}". Choose a new target path or remove conflicting files.`, EXIT_CODE.CONFLICT);
|
|
1309
|
-
}
|
|
1310
|
-
}
|
|
1311
|
-
const files = [];
|
|
1312
|
-
for (const [relativePath, content] of Object.entries(scaffoldFiles)) {
|
|
1313
|
-
const absolutePath = path5.join(targetPath, relativePath);
|
|
1314
|
-
if (await pathExists(absolutePath)) {
|
|
1315
|
-
files.push({
|
|
1316
|
-
path: relativePath,
|
|
1317
|
-
status: "unchanged"
|
|
1318
|
-
});
|
|
1319
|
-
continue;
|
|
1320
|
-
}
|
|
1321
|
-
await fs5.mkdir(path5.dirname(absolutePath), { recursive: true });
|
|
1322
|
-
await fs5.writeFile(absolutePath, content, "utf8");
|
|
1323
|
-
files.push({
|
|
1324
|
-
path: relativePath,
|
|
1325
|
-
status: "created"
|
|
1326
|
-
});
|
|
1327
|
-
}
|
|
1328
|
-
return {
|
|
1329
|
-
extension_name: extensionName,
|
|
1330
|
-
command_name: commandName,
|
|
1331
|
-
target_path: targetPath,
|
|
1332
|
-
created_directory: createdDirectory,
|
|
1333
|
-
files
|
|
1334
|
-
};
|
|
1335
|
-
}
|
|
1336
|
-
|
|
1337
1159
|
// dist/cli/commands/extension/doctor.js
|
|
1338
1160
|
function applyDoctorRuntimeActivationState(extensions, loadResult, activationResult) {
|
|
1339
1161
|
const loadedNames = new Set(loadResult.loaded.map((entry) => normalizeExtensionNameForMatch(entry.name)));
|
|
@@ -1578,6 +1400,15 @@ function classifyDoctorActivationFailureWarnings(activationFailures = []) {
|
|
|
1578
1400
|
}
|
|
1579
1401
|
return [...new Set(warnings)].sort((left, right) => left.localeCompare(right));
|
|
1580
1402
|
}
|
|
1403
|
+
function classifyUnusedCapabilityWarnings(loadResult, activationResult) {
|
|
1404
|
+
const warnings = [];
|
|
1405
|
+
for (const entry of reconcileExtensionCapabilityUsage(loadResult.loaded, activationResult)) {
|
|
1406
|
+
for (const capability of entry.unused) {
|
|
1407
|
+
warnings.push(`extension_capability_unused:${entry.layer}:${entry.name}:${capability}`);
|
|
1408
|
+
}
|
|
1409
|
+
}
|
|
1410
|
+
return [...new Set(warnings)].sort((left, right) => left.localeCompare(right));
|
|
1411
|
+
}
|
|
1581
1412
|
function buildExtensionTriageSummary(scope, warnings, extensions, options = {}) {
|
|
1582
1413
|
const normalizedWarnings = [...new Set(warnings)].sort((left, right) => left.localeCompare(right));
|
|
1583
1414
|
const managedTotal = extensions.filter((entry) => entry.managed).length;
|
|
@@ -1628,6 +1459,9 @@ function buildExtensionTriageSummary(scope, warnings, extensions, options = {})
|
|
|
1628
1459
|
if (normalizedWarnings.some((warning) => warning.startsWith("extension_capability_missing:"))) {
|
|
1629
1460
|
remediation.push(`Extension activation failed because code registered a surface missing from manifest capabilities. Run ${lifecycleFlagCommand(options, "doctor")} ${scopeFlag} --detail deep --trace and add the reported missing_capability to manifest.json before publishing.`);
|
|
1630
1461
|
}
|
|
1462
|
+
if (normalizedWarnings.some((warning) => warning.startsWith("extension_capability_unused:"))) {
|
|
1463
|
+
remediation.push(`Extension manifests declare capabilities that are never registered against. Remove each reported unused capability from manifest.json to keep least privilege, or add the matching registration. Run ${lifecycleFlagCommand(options, "doctor")} ${scopeFlag} --detail deep --trace for per-extension registration counts.`);
|
|
1464
|
+
}
|
|
1631
1465
|
if (normalizedWarnings.some((warning) => warning.startsWith("extension_command_definition_legacy_handler_alias:"))) {
|
|
1632
1466
|
remediation.push("Extension command definitions using legacy handler were auto-remapped. Update command definitions to use run: (context) => ... for forward compatibility.");
|
|
1633
1467
|
}
|
|
@@ -1862,11 +1696,11 @@ function sleep(ms) {
|
|
|
1862
1696
|
setTimeout(resolve, ms);
|
|
1863
1697
|
});
|
|
1864
1698
|
}
|
|
1865
|
-
async function copyExtensionDirectoryForInstall(sourceDirectory, destinationDirectory, copyDirectory =
|
|
1699
|
+
async function copyExtensionDirectoryForInstall(sourceDirectory, destinationDirectory, copyDirectory = fs5.cp) {
|
|
1866
1700
|
for (let attempt = 1; attempt <= EXTENSION_INSTALL_COPY_ATTEMPTS; attempt += 1) {
|
|
1867
1701
|
try {
|
|
1868
1702
|
if (await pathExists(destinationDirectory)) {
|
|
1869
|
-
await
|
|
1703
|
+
await fs5.rm(destinationDirectory, { recursive: true, force: true });
|
|
1870
1704
|
}
|
|
1871
1705
|
await copyExtensionDirectoryWithoutSelfNesting(sourceDirectory, destinationDirectory, copyDirectory);
|
|
1872
1706
|
return;
|
|
@@ -1879,8 +1713,8 @@ async function copyExtensionDirectoryForInstall(sourceDirectory, destinationDire
|
|
|
1879
1713
|
}
|
|
1880
1714
|
}
|
|
1881
1715
|
async function copyExtensionDirectoryWithoutSelfNesting(sourceDirectory, destinationDirectory, copyDirectory) {
|
|
1882
|
-
const resolvedSource =
|
|
1883
|
-
const resolvedDestination =
|
|
1716
|
+
const resolvedSource = path5.resolve(sourceDirectory);
|
|
1717
|
+
const resolvedDestination = path5.resolve(destinationDirectory);
|
|
1884
1718
|
if (resolvedSource === resolvedDestination) {
|
|
1885
1719
|
return;
|
|
1886
1720
|
}
|
|
@@ -1888,28 +1722,28 @@ async function copyExtensionDirectoryWithoutSelfNesting(sourceDirectory, destina
|
|
|
1888
1722
|
await copyDirectory(sourceDirectory, destinationDirectory, { recursive: true, force: true });
|
|
1889
1723
|
return;
|
|
1890
1724
|
}
|
|
1891
|
-
const stagingRoot = await
|
|
1892
|
-
const stagedDirectory =
|
|
1725
|
+
const stagingRoot = await fs5.mkdtemp(path5.join(os2.tmpdir(), "pm-extension-copy-"));
|
|
1726
|
+
const stagedDirectory = path5.join(stagingRoot, "extension");
|
|
1893
1727
|
try {
|
|
1894
1728
|
await copyDirectory(sourceDirectory, stagedDirectory, { recursive: true, force: true });
|
|
1895
1729
|
await copyDirectory(stagedDirectory, destinationDirectory, { recursive: true, force: true });
|
|
1896
1730
|
} finally {
|
|
1897
|
-
await
|
|
1731
|
+
await fs5.rm(stagingRoot, { recursive: true, force: true });
|
|
1898
1732
|
}
|
|
1899
1733
|
}
|
|
1900
1734
|
async function withExtensionInstallLock(settingsRoot, destinationDirectoryName, run, options) {
|
|
1901
|
-
const lockRoot =
|
|
1902
|
-
const lockPath =
|
|
1903
|
-
await
|
|
1735
|
+
const lockRoot = path5.join(settingsRoot, "runtime", "extension-install-locks");
|
|
1736
|
+
const lockPath = path5.join(lockRoot, `${destinationDirectoryName}.lock`);
|
|
1737
|
+
await fs5.mkdir(lockRoot, { recursive: true });
|
|
1904
1738
|
const attempts = Math.max(1, Math.floor(options?.attempts ?? EXTENSION_INSTALL_LOCK_ATTEMPTS));
|
|
1905
1739
|
const delayMs = Math.max(0, Math.floor(options?.delay_ms ?? EXTENSION_INSTALL_LOCK_DELAY_MS));
|
|
1906
1740
|
const staleMs = Math.max(0, Math.floor(options?.stale_ms ?? EXTENSION_INSTALL_LOCK_STALE_MS));
|
|
1907
1741
|
let acquired = false;
|
|
1908
1742
|
for (let attempt = 1; attempt <= attempts; attempt += 1) {
|
|
1909
1743
|
try {
|
|
1910
|
-
await
|
|
1744
|
+
await fs5.mkdir(lockPath);
|
|
1911
1745
|
acquired = true;
|
|
1912
|
-
await
|
|
1746
|
+
await fs5.writeFile(path5.join(lockPath, "owner.json"), `${JSON.stringify({ pid: process.pid, created_at: nowIso(), destination: destinationDirectoryName }, null, 2)}
|
|
1913
1747
|
`, "utf8");
|
|
1914
1748
|
break;
|
|
1915
1749
|
} catch (error) {
|
|
@@ -1918,12 +1752,12 @@ async function withExtensionInstallLock(settingsRoot, destinationDirectoryName,
|
|
|
1918
1752
|
}
|
|
1919
1753
|
let stat = null;
|
|
1920
1754
|
try {
|
|
1921
|
-
stat = await
|
|
1755
|
+
stat = await fs5.stat(lockPath);
|
|
1922
1756
|
} catch {
|
|
1923
1757
|
stat = null;
|
|
1924
1758
|
}
|
|
1925
1759
|
if (stat && Date.now() - stat.mtimeMs > staleMs) {
|
|
1926
|
-
await
|
|
1760
|
+
await fs5.rm(lockPath, { recursive: true, force: true });
|
|
1927
1761
|
continue;
|
|
1928
1762
|
}
|
|
1929
1763
|
await sleep(delayMs);
|
|
@@ -1935,7 +1769,7 @@ async function withExtensionInstallLock(settingsRoot, destinationDirectoryName,
|
|
|
1935
1769
|
try {
|
|
1936
1770
|
return await run();
|
|
1937
1771
|
} finally {
|
|
1938
|
-
await
|
|
1772
|
+
await fs5.rm(lockPath, { recursive: true, force: true }).catch(() => void 0);
|
|
1939
1773
|
}
|
|
1940
1774
|
}
|
|
1941
1775
|
async function resolveInstalledExtensionCandidate(installed, extensionTarget) {
|
|
@@ -2113,7 +1947,7 @@ async function listInstalledExtensions(extensionsRoot, scope, settings, state) {
|
|
|
2113
1947
|
warnings: []
|
|
2114
1948
|
};
|
|
2115
1949
|
}
|
|
2116
|
-
const entries = await
|
|
1950
|
+
const entries = await fs5.readdir(extensionsRoot, { withFileTypes: true });
|
|
2117
1951
|
const directories = entries.filter((entry) => entry.isDirectory()).map((entry) => entry.name).sort((left, right) => left.localeCompare(right));
|
|
2118
1952
|
const managedByName = /* @__PURE__ */ new Map();
|
|
2119
1953
|
const managedByDirectory = /* @__PURE__ */ new Map();
|
|
@@ -2124,8 +1958,8 @@ async function listInstalledExtensions(extensionsRoot, scope, settings, state) {
|
|
|
2124
1958
|
const warnings = [];
|
|
2125
1959
|
const summaries = [];
|
|
2126
1960
|
for (const directoryName of directories) {
|
|
2127
|
-
const extensionDirectory =
|
|
2128
|
-
const manifestPath =
|
|
1961
|
+
const extensionDirectory = path5.join(extensionsRoot, directoryName);
|
|
1962
|
+
const manifestPath = path5.join(extensionDirectory, "manifest.json");
|
|
2129
1963
|
if (!await pathExists(manifestPath)) {
|
|
2130
1964
|
warnings.push(`extension_manifest_missing:${scope}:${directoryName}`);
|
|
2131
1965
|
const managedEntry2 = managedByDirectory.get(normalizeExtensionNameForMatch(directoryName));
|
|
@@ -2154,7 +1988,7 @@ async function listInstalledExtensions(extensionsRoot, scope, settings, state) {
|
|
|
2154
1988
|
}
|
|
2155
1989
|
let rawManifest;
|
|
2156
1990
|
try {
|
|
2157
|
-
rawManifest = JSON.parse(await
|
|
1991
|
+
rawManifest = JSON.parse(await fs5.readFile(manifestPath, "utf8"));
|
|
2158
1992
|
} catch {
|
|
2159
1993
|
warnings.push(`extension_manifest_invalid_json:${scope}:${directoryName}`);
|
|
2160
1994
|
continue;
|
|
@@ -2331,7 +2165,7 @@ async function adoptUnmanagedExtensions(extensionsRoot, scope, installedExtensio
|
|
|
2331
2165
|
let nextState = state;
|
|
2332
2166
|
const adoptedEntries = [];
|
|
2333
2167
|
for (const candidate of sortedCandidates) {
|
|
2334
|
-
const extensionDirectory =
|
|
2168
|
+
const extensionDirectory = path5.join(extensionsRoot, candidate.directory);
|
|
2335
2169
|
const validated = await validateExtensionDirectory(extensionDirectory);
|
|
2336
2170
|
const now = nowIso();
|
|
2337
2171
|
const sourceRecord = {
|
|
@@ -2433,6 +2267,9 @@ async function runExtension(target, options, global) {
|
|
|
2433
2267
|
if (options.fixManagedState === true && action !== "manage" && action !== "doctor") {
|
|
2434
2268
|
throw new PmCliError("--fix-managed-state is only valid with --manage or --doctor.", EXIT_CODE.USAGE);
|
|
2435
2269
|
}
|
|
2270
|
+
if (options.capability !== void 0 && action !== "init") {
|
|
2271
|
+
throw new PmCliError("--capability is only valid with --init/--scaffold.", EXIT_CODE.USAGE);
|
|
2272
|
+
}
|
|
2436
2273
|
const normalizedTarget = (() => {
|
|
2437
2274
|
const normalizedInput = target?.trim().toLowerCase();
|
|
2438
2275
|
if (action === "doctor" && normalizedInput === "doctor") {
|
|
@@ -2487,20 +2324,23 @@ async function runExtension(target, options, global) {
|
|
|
2487
2324
|
throw new PmCliError('Action "init" does not accept --gh/--github/--ref options.', EXIT_CODE.USAGE);
|
|
2488
2325
|
}
|
|
2489
2326
|
const scaffoldTarget = requireTarget(normalizedTarget, action);
|
|
2490
|
-
const scaffold = await scaffoldExtensionProject(scaffoldTarget, options.vocabulary ?? "extension");
|
|
2327
|
+
const scaffold = await scaffoldExtensionProject(scaffoldTarget, options.vocabulary ?? "extension", options.capability);
|
|
2491
2328
|
const quotedTargetPath = JSON.stringify(scaffold.target_path);
|
|
2329
|
+
const quotedShellTargetPath = JSON.stringify(scaffold.target_path.replace(/\\/g, "/"));
|
|
2492
2330
|
return withResult({
|
|
2493
2331
|
scaffolded: scaffold.created_directory || scaffold.files.some((entry) => entry.status === "created"),
|
|
2494
2332
|
extension: {
|
|
2495
2333
|
name: scaffold.extension_name,
|
|
2496
2334
|
command: scaffold.command_name
|
|
2497
2335
|
},
|
|
2336
|
+
capability: scaffold.capability,
|
|
2498
2337
|
target_path: scaffold.target_path,
|
|
2499
2338
|
created_directory: scaffold.created_directory,
|
|
2500
2339
|
files: scaffold.files,
|
|
2501
2340
|
next_steps: [
|
|
2502
2341
|
`Install the scaffold: ${options.vocabulary === "package" ? "pm install --project" : "pm extension --install --project"} ${quotedTargetPath}`,
|
|
2503
2342
|
`Smoke-test command path: pm ${scaffold.command_name}`,
|
|
2343
|
+
...options.vocabulary === "package" ? [`Validate the sample test: cd ${quotedShellTargetPath}, then run "npm install" and "npm test"`] : [],
|
|
2504
2344
|
`Run diagnostics: ${options.vocabulary === "package" ? "pm package doctor" : "pm extension --doctor"} --project --detail summary`
|
|
2505
2345
|
]
|
|
2506
2346
|
});
|
|
@@ -2610,10 +2450,10 @@ async function runExtension(target, options, global) {
|
|
|
2610
2450
|
const settings = await readSettings(resolvedRoots.settings_root);
|
|
2611
2451
|
const managedStateRead = await readManagedExtensionState(resolvedRoots.selected_root);
|
|
2612
2452
|
warnings.push(...managedStateRead.warnings);
|
|
2613
|
-
const destinationDirectory =
|
|
2453
|
+
const destinationDirectory = path5.join(resolvedRoots.selected_root, destinationDirectoryName);
|
|
2614
2454
|
const destinationExists = await pathExists(destinationDirectory);
|
|
2615
2455
|
const installInPlace = await areDirectoriesEquivalent(validated.directory, destinationDirectory);
|
|
2616
|
-
await
|
|
2456
|
+
await fs5.mkdir(resolvedRoots.selected_root, { recursive: true });
|
|
2617
2457
|
if (!installInPlace) {
|
|
2618
2458
|
await copyExtensionDirectoryForInstall(validated.directory, destinationDirectory);
|
|
2619
2459
|
}
|
|
@@ -2760,7 +2600,7 @@ async function runExtension(target, options, global) {
|
|
|
2760
2600
|
}
|
|
2761
2601
|
});
|
|
2762
2602
|
}
|
|
2763
|
-
const extensionDirectory =
|
|
2603
|
+
const extensionDirectory = path5.join(resolvedRoots.selected_root, candidate.directory);
|
|
2764
2604
|
const validated = await validateExtensionDirectory(extensionDirectory);
|
|
2765
2605
|
const now = nowIso();
|
|
2766
2606
|
const sourceRecord = githubOption === void 0 ? {
|
|
@@ -2825,8 +2665,8 @@ async function runExtension(target, options, global) {
|
|
|
2825
2665
|
if (!candidate) {
|
|
2826
2666
|
throw new PmCliError(`Installed extension "${extensionTarget}" was not found in ${scope} scope.`, EXIT_CODE.NOT_FOUND);
|
|
2827
2667
|
}
|
|
2828
|
-
const destinationDirectory =
|
|
2829
|
-
await
|
|
2668
|
+
const destinationDirectory = path5.join(resolvedRoots.selected_root, candidate.directory);
|
|
2669
|
+
await fs5.rm(destinationDirectory, { recursive: true, force: true });
|
|
2830
2670
|
const updatedState = {
|
|
2831
2671
|
...managedStateRead.state,
|
|
2832
2672
|
updated_at: nowIso(),
|
|
@@ -2912,6 +2752,7 @@ async function runExtension(target, options, global) {
|
|
|
2912
2752
|
warnings.push(...classifyDoctorLoadFailureWarnings(loadResult.failed));
|
|
2913
2753
|
warnings.push(...activationResult.warnings);
|
|
2914
2754
|
warnings.push(...classifyDoctorActivationFailureWarnings(activationResult.failed));
|
|
2755
|
+
warnings.push(...classifyUnusedCapabilityWarnings(loadResult, activationResult));
|
|
2915
2756
|
warnings.push(...collectGlobalOutputOverrideDoctorWarnings(activationResult));
|
|
2916
2757
|
const runtimeInstalledExtensions = applyDoctorRuntimeActivationState(refreshedInstalled.extensions, loadResult, activationResult);
|
|
2917
2758
|
const doctorConsistency = buildDoctorConsistencySummary(scope, runtimeInstalledExtensions, loadResult.loaded.map((entry) => ({ layer: entry.layer, name: entry.name })), loadResult.failed.map((entry) => ({ name: entry.name })), loadResult.disabled_by_flag);
|
|
@@ -3229,6 +3070,6 @@ export {
|
|
|
3229
3070
|
runExtension,
|
|
3230
3071
|
_testOnly
|
|
3231
3072
|
};
|
|
3232
|
-
//# sourceMappingURL=chunk-
|
|
3073
|
+
//# sourceMappingURL=chunk-D35LTIFR.js.map
|
|
3233
3074
|
|
|
3234
|
-
//# debugId=
|
|
3075
|
+
//# debugId=5b87215b-bb14-5510-af50-0d572df794ca
|