@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,16 +1,19 @@
|
|
|
1
|
+
import {
|
|
2
|
+
scaffoldExtensionProject
|
|
3
|
+
} from "./chunk-4YJA4LGU.js";
|
|
1
4
|
import {
|
|
2
5
|
normalizeExtensionNameForMatch,
|
|
3
6
|
normalizeManagedDirectoryName,
|
|
4
7
|
normalizeStringList,
|
|
5
8
|
parseExtensionManifest,
|
|
6
9
|
validateExtensionDirectory
|
|
7
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-25XZN3JD.js";
|
|
8
11
|
import {
|
|
9
12
|
splitCommaList
|
|
10
13
|
} from "./chunk-5HIZDR5A.js";
|
|
11
14
|
import {
|
|
12
15
|
nowIso
|
|
13
|
-
} from "./chunk-
|
|
16
|
+
} from "./chunk-4JXWVHMN.js";
|
|
14
17
|
import {
|
|
15
18
|
EXIT_CODE,
|
|
16
19
|
EXTENSION_CAPABILITY_CONTRACT,
|
|
@@ -24,18 +27,19 @@ import {
|
|
|
24
27
|
parseUnknownExtensionCapabilityWarning,
|
|
25
28
|
pathExists,
|
|
26
29
|
readSettings,
|
|
30
|
+
reconcileExtensionCapabilityUsage,
|
|
27
31
|
resolveExtensionRoots,
|
|
28
32
|
resolveGlobalPmRoot,
|
|
29
33
|
resolvePmPackageRootFromModule,
|
|
30
34
|
resolvePmRoot,
|
|
31
35
|
writeSettings
|
|
32
|
-
} from "./chunk-
|
|
36
|
+
} from "./chunk-RZZMSY4P.js";
|
|
33
37
|
|
|
34
38
|
// dist/cli/commands/extension.js
|
|
35
39
|
import { execFile as execFile2 } from "node:child_process";
|
|
36
|
-
import
|
|
40
|
+
import fs5 from "node:fs/promises";
|
|
37
41
|
import os2 from "node:os";
|
|
38
|
-
import
|
|
42
|
+
import path5 from "node:path";
|
|
39
43
|
import { promisify as promisify2 } from "node:util";
|
|
40
44
|
|
|
41
45
|
// dist/cli/commands/extension/managed-state.js
|
|
@@ -1178,200 +1182,11 @@ function projectPackageCatalogEntry(entry, fields) {
|
|
|
1178
1182
|
return projected;
|
|
1179
1183
|
}
|
|
1180
1184
|
|
|
1181
|
-
// dist/cli/commands/extension/scaffold.js
|
|
1182
|
-
import fs5 from "node:fs/promises";
|
|
1183
|
-
import path5 from "node:path";
|
|
1184
|
-
!(function() {
|
|
1185
|
-
try {
|
|
1186
|
-
var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}, n = new e.Error().stack;
|
|
1187
|
-
n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "c6f7e50f-9cce-50a2-97ec-7c06be6d85a1");
|
|
1188
|
-
} catch (e2) {
|
|
1189
|
-
}
|
|
1190
|
-
})();
|
|
1191
|
-
var SCAFFOLD_MANIFEST_VERSION = 1;
|
|
1192
|
-
var SCAFFOLD_PM_MIN_VERSION = "2026.5.0";
|
|
1193
|
-
function buildStarterExtensionScaffoldFiles(extensionName, commandName, vocabulary) {
|
|
1194
|
-
const packageName = `pm-${extensionName}`;
|
|
1195
|
-
const manifest = `${JSON.stringify({
|
|
1196
|
-
name: extensionName,
|
|
1197
|
-
version: "0.1.0",
|
|
1198
|
-
entry: "./index.js",
|
|
1199
|
-
capabilities: ["commands"],
|
|
1200
|
-
manifest_version: SCAFFOLD_MANIFEST_VERSION,
|
|
1201
|
-
pm_min_version: SCAFFOLD_PM_MIN_VERSION
|
|
1202
|
-
}, null, 2)}
|
|
1203
|
-
`;
|
|
1204
|
-
const entrypoint = [
|
|
1205
|
-
'/** @param {import("@unbrained/pm-cli/sdk").ExtensionApi} api */',
|
|
1206
|
-
"export function activate(api) {",
|
|
1207
|
-
" api.registerCommand({",
|
|
1208
|
-
` name: ${JSON.stringify(commandName)},`,
|
|
1209
|
-
' description: "Starter scaffold command. Replace with your own behavior.",',
|
|
1210
|
-
" run: async (context) => ({",
|
|
1211
|
-
" ok: true,",
|
|
1212
|
-
` source: ${JSON.stringify(extensionName)},`,
|
|
1213
|
-
" command: context.command,",
|
|
1214
|
-
' message: "Starter extension scaffold is active.",',
|
|
1215
|
-
" }),",
|
|
1216
|
-
" });",
|
|
1217
|
-
"}",
|
|
1218
|
-
"",
|
|
1219
|
-
"export default {",
|
|
1220
|
-
" activate,",
|
|
1221
|
-
"};",
|
|
1222
|
-
""
|
|
1223
|
-
].join("\n");
|
|
1224
|
-
if (vocabulary === "package") {
|
|
1225
|
-
const packageJson = `${JSON.stringify({
|
|
1226
|
-
name: packageName,
|
|
1227
|
-
version: "0.1.0",
|
|
1228
|
-
private: true,
|
|
1229
|
-
type: "module",
|
|
1230
|
-
keywords: ["pm-package"],
|
|
1231
|
-
peerDependencies: {
|
|
1232
|
-
"@unbrained/pm-cli": "*"
|
|
1233
|
-
},
|
|
1234
|
-
pm: {
|
|
1235
|
-
aliases: [extensionName],
|
|
1236
|
-
extensions: ["."],
|
|
1237
|
-
docs: ["README.md"],
|
|
1238
|
-
examples: ["README.md"],
|
|
1239
|
-
catalog: {
|
|
1240
|
-
display_name: extensionName,
|
|
1241
|
-
category: "workflow",
|
|
1242
|
-
summary: "Starter pm package scaffold.",
|
|
1243
|
-
tags: ["starter"]
|
|
1244
|
-
}
|
|
1245
|
-
}
|
|
1246
|
-
}, null, 2)}
|
|
1247
|
-
`;
|
|
1248
|
-
const packageReadme = [
|
|
1249
|
-
`# ${packageName}`,
|
|
1250
|
-
"",
|
|
1251
|
-
"Generated by `pm package init`.",
|
|
1252
|
-
"",
|
|
1253
|
-
"## Included Files",
|
|
1254
|
-
"- `package.json`: package metadata and `pm` resource manifest.",
|
|
1255
|
-
"- `manifest.json`: extension metadata and capabilities.",
|
|
1256
|
-
"- `index.js`: starter command registration using the `commands` capability.",
|
|
1257
|
-
"",
|
|
1258
|
-
"## Quick Start",
|
|
1259
|
-
"```bash",
|
|
1260
|
-
"pm install --project <package-path>",
|
|
1261
|
-
`pm ${commandName}`,
|
|
1262
|
-
"pm package doctor --project --detail summary",
|
|
1263
|
-
"```",
|
|
1264
|
-
"",
|
|
1265
|
-
"## Compatibility Bounds",
|
|
1266
|
-
"`manifest.json` cannot hold comments, so the version-compatibility fields are documented here:",
|
|
1267
|
-
`- \`manifest_version\` (integer): manifest schema generation. Leave at \`${SCAFFOLD_MANIFEST_VERSION}\` unless you adopt a newer manifest schema.`,
|
|
1268
|
-
`- \`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.`,
|
|
1269
|
-
"- `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.",
|
|
1270
|
-
"",
|
|
1271
|
-
"## Notes",
|
|
1272
|
-
"- Keep simple starter runtime behavior at the package root so local installs work without dependency bootstrapping.",
|
|
1273
|
-
"- Move larger runtimes into subdirectories only after adding package dependencies and validating `pm package doctor`.",
|
|
1274
|
-
"- Add capabilities to the extension manifest only when the entrypoint uses the matching SDK API.",
|
|
1275
|
-
"- Use `@unbrained/pm-cli/sdk` as the public SDK import for richer package runtimes.",
|
|
1276
|
-
""
|
|
1277
|
-
].join("\n");
|
|
1278
|
-
return {
|
|
1279
|
-
"package.json": packageJson,
|
|
1280
|
-
"manifest.json": manifest,
|
|
1281
|
-
"index.js": entrypoint,
|
|
1282
|
-
"README.md": packageReadme
|
|
1283
|
-
};
|
|
1284
|
-
}
|
|
1285
|
-
const readme = [
|
|
1286
|
-
`# ${extensionName}`,
|
|
1287
|
-
"",
|
|
1288
|
-
"Generated by `pm extension init`.",
|
|
1289
|
-
"",
|
|
1290
|
-
"## Included Files",
|
|
1291
|
-
"- `manifest.json`: extension metadata and capabilities.",
|
|
1292
|
-
"- `index.js`: starter command registration using the `commands` capability.",
|
|
1293
|
-
"",
|
|
1294
|
-
"## Quick Start",
|
|
1295
|
-
"```bash",
|
|
1296
|
-
"pm extension --install --project <scaffold-path>",
|
|
1297
|
-
`pm ${commandName}`,
|
|
1298
|
-
"pm extension --doctor --project --detail summary",
|
|
1299
|
-
"```",
|
|
1300
|
-
"",
|
|
1301
|
-
"## Compatibility Bounds",
|
|
1302
|
-
"`manifest.json` cannot hold comments, so the version-compatibility fields are documented here:",
|
|
1303
|
-
`- \`manifest_version\` (integer): manifest schema generation. Leave at \`${SCAFFOLD_MANIFEST_VERSION}\` unless you adopt a newer manifest schema.`,
|
|
1304
|
-
`- \`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.`,
|
|
1305
|
-
"- `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.",
|
|
1306
|
-
"",
|
|
1307
|
-
"## Notes",
|
|
1308
|
-
"- This scaffold uses ESM exports so it works in package scopes with `type: module`.",
|
|
1309
|
-
"- Update `manifest.json` capabilities and `index.js` command behavior as your extension evolves.",
|
|
1310
|
-
""
|
|
1311
|
-
].join("\n");
|
|
1312
|
-
return {
|
|
1313
|
-
"manifest.json": manifest,
|
|
1314
|
-
"index.js": entrypoint,
|
|
1315
|
-
"README.md": readme
|
|
1316
|
-
};
|
|
1317
|
-
}
|
|
1318
|
-
async function scaffoldExtensionProject(target, vocabulary = "extension") {
|
|
1319
|
-
const normalizedTarget = target.trim();
|
|
1320
|
-
const targetPath = path5.resolve(process.cwd(), normalizedTarget);
|
|
1321
|
-
const extensionName = normalizeManagedDirectoryName(path5.basename(targetPath));
|
|
1322
|
-
const commandName = `${extensionName} ping`;
|
|
1323
|
-
const scaffoldFiles = buildStarterExtensionScaffoldFiles(extensionName, commandName, vocabulary);
|
|
1324
|
-
let createdDirectory = false;
|
|
1325
|
-
if (await pathExists(targetPath)) {
|
|
1326
|
-
const existingTargetStats = await fs5.stat(targetPath);
|
|
1327
|
-
if (!existingTargetStats.isDirectory()) {
|
|
1328
|
-
throw new PmCliError(`Scaffold target "${targetPath}" exists and is not a directory.`, EXIT_CODE.CONFLICT);
|
|
1329
|
-
}
|
|
1330
|
-
} else {
|
|
1331
|
-
await fs5.mkdir(targetPath, { recursive: true });
|
|
1332
|
-
createdDirectory = true;
|
|
1333
|
-
}
|
|
1334
|
-
for (const [relativePath, content] of Object.entries(scaffoldFiles)) {
|
|
1335
|
-
const absolutePath = path5.join(targetPath, relativePath);
|
|
1336
|
-
if (!await pathExists(absolutePath)) {
|
|
1337
|
-
continue;
|
|
1338
|
-
}
|
|
1339
|
-
const existingContent = await fs5.readFile(absolutePath, "utf8");
|
|
1340
|
-
if (existingContent !== content) {
|
|
1341
|
-
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);
|
|
1342
|
-
}
|
|
1343
|
-
}
|
|
1344
|
-
const files = [];
|
|
1345
|
-
for (const [relativePath, content] of Object.entries(scaffoldFiles)) {
|
|
1346
|
-
const absolutePath = path5.join(targetPath, relativePath);
|
|
1347
|
-
if (await pathExists(absolutePath)) {
|
|
1348
|
-
files.push({
|
|
1349
|
-
path: relativePath,
|
|
1350
|
-
status: "unchanged"
|
|
1351
|
-
});
|
|
1352
|
-
continue;
|
|
1353
|
-
}
|
|
1354
|
-
await fs5.mkdir(path5.dirname(absolutePath), { recursive: true });
|
|
1355
|
-
await fs5.writeFile(absolutePath, content, "utf8");
|
|
1356
|
-
files.push({
|
|
1357
|
-
path: relativePath,
|
|
1358
|
-
status: "created"
|
|
1359
|
-
});
|
|
1360
|
-
}
|
|
1361
|
-
return {
|
|
1362
|
-
extension_name: extensionName,
|
|
1363
|
-
command_name: commandName,
|
|
1364
|
-
target_path: targetPath,
|
|
1365
|
-
created_directory: createdDirectory,
|
|
1366
|
-
files
|
|
1367
|
-
};
|
|
1368
|
-
}
|
|
1369
|
-
|
|
1370
1185
|
// dist/cli/commands/extension/doctor.js
|
|
1371
1186
|
!(function() {
|
|
1372
1187
|
try {
|
|
1373
1188
|
var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}, n = new e.Error().stack;
|
|
1374
|
-
n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "
|
|
1189
|
+
n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "52b725dc-48e3-5436-8136-47e5314b07eb");
|
|
1375
1190
|
} catch (e2) {
|
|
1376
1191
|
}
|
|
1377
1192
|
})();
|
|
@@ -1618,6 +1433,15 @@ function classifyDoctorActivationFailureWarnings(activationFailures = []) {
|
|
|
1618
1433
|
}
|
|
1619
1434
|
return [...new Set(warnings)].sort((left, right) => left.localeCompare(right));
|
|
1620
1435
|
}
|
|
1436
|
+
function classifyUnusedCapabilityWarnings(loadResult, activationResult) {
|
|
1437
|
+
const warnings = [];
|
|
1438
|
+
for (const entry of reconcileExtensionCapabilityUsage(loadResult.loaded, activationResult)) {
|
|
1439
|
+
for (const capability of entry.unused) {
|
|
1440
|
+
warnings.push(`extension_capability_unused:${entry.layer}:${entry.name}:${capability}`);
|
|
1441
|
+
}
|
|
1442
|
+
}
|
|
1443
|
+
return [...new Set(warnings)].sort((left, right) => left.localeCompare(right));
|
|
1444
|
+
}
|
|
1621
1445
|
function buildExtensionTriageSummary(scope, warnings, extensions, options = {}) {
|
|
1622
1446
|
const normalizedWarnings = [...new Set(warnings)].sort((left, right) => left.localeCompare(right));
|
|
1623
1447
|
const managedTotal = extensions.filter((entry) => entry.managed).length;
|
|
@@ -1668,6 +1492,9 @@ function buildExtensionTriageSummary(scope, warnings, extensions, options = {})
|
|
|
1668
1492
|
if (normalizedWarnings.some((warning) => warning.startsWith("extension_capability_missing:"))) {
|
|
1669
1493
|
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.`);
|
|
1670
1494
|
}
|
|
1495
|
+
if (normalizedWarnings.some((warning) => warning.startsWith("extension_capability_unused:"))) {
|
|
1496
|
+
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.`);
|
|
1497
|
+
}
|
|
1671
1498
|
if (normalizedWarnings.some((warning) => warning.startsWith("extension_command_definition_legacy_handler_alias:"))) {
|
|
1672
1499
|
remediation.push("Extension command definitions using legacy handler were auto-remapped. Update command definitions to use run: (context) => ... for forward compatibility.");
|
|
1673
1500
|
}
|
|
@@ -1829,7 +1656,7 @@ function buildDoctorConsistencySummary(scope, installedExtensions, loadedExtensi
|
|
|
1829
1656
|
!(function() {
|
|
1830
1657
|
try {
|
|
1831
1658
|
var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}, n = new e.Error().stack;
|
|
1832
|
-
n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "
|
|
1659
|
+
n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "1402dcb1-4fe9-5ec7-a34f-990b54437d1e");
|
|
1833
1660
|
} catch (e2) {
|
|
1834
1661
|
}
|
|
1835
1662
|
})();
|
|
@@ -1909,11 +1736,11 @@ function sleep(ms) {
|
|
|
1909
1736
|
setTimeout(resolve, ms);
|
|
1910
1737
|
});
|
|
1911
1738
|
}
|
|
1912
|
-
async function copyExtensionDirectoryForInstall(sourceDirectory, destinationDirectory, copyDirectory =
|
|
1739
|
+
async function copyExtensionDirectoryForInstall(sourceDirectory, destinationDirectory, copyDirectory = fs5.cp) {
|
|
1913
1740
|
for (let attempt = 1; attempt <= EXTENSION_INSTALL_COPY_ATTEMPTS; attempt += 1) {
|
|
1914
1741
|
try {
|
|
1915
1742
|
if (await pathExists(destinationDirectory)) {
|
|
1916
|
-
await
|
|
1743
|
+
await fs5.rm(destinationDirectory, { recursive: true, force: true });
|
|
1917
1744
|
}
|
|
1918
1745
|
await copyExtensionDirectoryWithoutSelfNesting(sourceDirectory, destinationDirectory, copyDirectory);
|
|
1919
1746
|
return;
|
|
@@ -1926,8 +1753,8 @@ async function copyExtensionDirectoryForInstall(sourceDirectory, destinationDire
|
|
|
1926
1753
|
}
|
|
1927
1754
|
}
|
|
1928
1755
|
async function copyExtensionDirectoryWithoutSelfNesting(sourceDirectory, destinationDirectory, copyDirectory) {
|
|
1929
|
-
const resolvedSource =
|
|
1930
|
-
const resolvedDestination =
|
|
1756
|
+
const resolvedSource = path5.resolve(sourceDirectory);
|
|
1757
|
+
const resolvedDestination = path5.resolve(destinationDirectory);
|
|
1931
1758
|
if (resolvedSource === resolvedDestination) {
|
|
1932
1759
|
return;
|
|
1933
1760
|
}
|
|
@@ -1935,28 +1762,28 @@ async function copyExtensionDirectoryWithoutSelfNesting(sourceDirectory, destina
|
|
|
1935
1762
|
await copyDirectory(sourceDirectory, destinationDirectory, { recursive: true, force: true });
|
|
1936
1763
|
return;
|
|
1937
1764
|
}
|
|
1938
|
-
const stagingRoot = await
|
|
1939
|
-
const stagedDirectory =
|
|
1765
|
+
const stagingRoot = await fs5.mkdtemp(path5.join(os2.tmpdir(), "pm-extension-copy-"));
|
|
1766
|
+
const stagedDirectory = path5.join(stagingRoot, "extension");
|
|
1940
1767
|
try {
|
|
1941
1768
|
await copyDirectory(sourceDirectory, stagedDirectory, { recursive: true, force: true });
|
|
1942
1769
|
await copyDirectory(stagedDirectory, destinationDirectory, { recursive: true, force: true });
|
|
1943
1770
|
} finally {
|
|
1944
|
-
await
|
|
1771
|
+
await fs5.rm(stagingRoot, { recursive: true, force: true });
|
|
1945
1772
|
}
|
|
1946
1773
|
}
|
|
1947
1774
|
async function withExtensionInstallLock(settingsRoot, destinationDirectoryName, run, options) {
|
|
1948
|
-
const lockRoot =
|
|
1949
|
-
const lockPath =
|
|
1950
|
-
await
|
|
1775
|
+
const lockRoot = path5.join(settingsRoot, "runtime", "extension-install-locks");
|
|
1776
|
+
const lockPath = path5.join(lockRoot, `${destinationDirectoryName}.lock`);
|
|
1777
|
+
await fs5.mkdir(lockRoot, { recursive: true });
|
|
1951
1778
|
const attempts = Math.max(1, Math.floor(options?.attempts ?? EXTENSION_INSTALL_LOCK_ATTEMPTS));
|
|
1952
1779
|
const delayMs = Math.max(0, Math.floor(options?.delay_ms ?? EXTENSION_INSTALL_LOCK_DELAY_MS));
|
|
1953
1780
|
const staleMs = Math.max(0, Math.floor(options?.stale_ms ?? EXTENSION_INSTALL_LOCK_STALE_MS));
|
|
1954
1781
|
let acquired = false;
|
|
1955
1782
|
for (let attempt = 1; attempt <= attempts; attempt += 1) {
|
|
1956
1783
|
try {
|
|
1957
|
-
await
|
|
1784
|
+
await fs5.mkdir(lockPath);
|
|
1958
1785
|
acquired = true;
|
|
1959
|
-
await
|
|
1786
|
+
await fs5.writeFile(path5.join(lockPath, "owner.json"), `${JSON.stringify({ pid: process.pid, created_at: nowIso(), destination: destinationDirectoryName }, null, 2)}
|
|
1960
1787
|
`, "utf8");
|
|
1961
1788
|
break;
|
|
1962
1789
|
} catch (error) {
|
|
@@ -1965,12 +1792,12 @@ async function withExtensionInstallLock(settingsRoot, destinationDirectoryName,
|
|
|
1965
1792
|
}
|
|
1966
1793
|
let stat = null;
|
|
1967
1794
|
try {
|
|
1968
|
-
stat = await
|
|
1795
|
+
stat = await fs5.stat(lockPath);
|
|
1969
1796
|
} catch {
|
|
1970
1797
|
stat = null;
|
|
1971
1798
|
}
|
|
1972
1799
|
if (stat && Date.now() - stat.mtimeMs > staleMs) {
|
|
1973
|
-
await
|
|
1800
|
+
await fs5.rm(lockPath, { recursive: true, force: true });
|
|
1974
1801
|
continue;
|
|
1975
1802
|
}
|
|
1976
1803
|
await sleep(delayMs);
|
|
@@ -1982,7 +1809,7 @@ async function withExtensionInstallLock(settingsRoot, destinationDirectoryName,
|
|
|
1982
1809
|
try {
|
|
1983
1810
|
return await run();
|
|
1984
1811
|
} finally {
|
|
1985
|
-
await
|
|
1812
|
+
await fs5.rm(lockPath, { recursive: true, force: true }).catch(() => void 0);
|
|
1986
1813
|
}
|
|
1987
1814
|
}
|
|
1988
1815
|
async function resolveInstalledExtensionCandidate(installed, extensionTarget) {
|
|
@@ -2160,7 +1987,7 @@ async function listInstalledExtensions(extensionsRoot, scope, settings, state) {
|
|
|
2160
1987
|
warnings: []
|
|
2161
1988
|
};
|
|
2162
1989
|
}
|
|
2163
|
-
const entries = await
|
|
1990
|
+
const entries = await fs5.readdir(extensionsRoot, { withFileTypes: true });
|
|
2164
1991
|
const directories = entries.filter((entry) => entry.isDirectory()).map((entry) => entry.name).sort((left, right) => left.localeCompare(right));
|
|
2165
1992
|
const managedByName = /* @__PURE__ */ new Map();
|
|
2166
1993
|
const managedByDirectory = /* @__PURE__ */ new Map();
|
|
@@ -2171,8 +1998,8 @@ async function listInstalledExtensions(extensionsRoot, scope, settings, state) {
|
|
|
2171
1998
|
const warnings = [];
|
|
2172
1999
|
const summaries = [];
|
|
2173
2000
|
for (const directoryName of directories) {
|
|
2174
|
-
const extensionDirectory =
|
|
2175
|
-
const manifestPath =
|
|
2001
|
+
const extensionDirectory = path5.join(extensionsRoot, directoryName);
|
|
2002
|
+
const manifestPath = path5.join(extensionDirectory, "manifest.json");
|
|
2176
2003
|
if (!await pathExists(manifestPath)) {
|
|
2177
2004
|
warnings.push(`extension_manifest_missing:${scope}:${directoryName}`);
|
|
2178
2005
|
const managedEntry2 = managedByDirectory.get(normalizeExtensionNameForMatch(directoryName));
|
|
@@ -2201,7 +2028,7 @@ async function listInstalledExtensions(extensionsRoot, scope, settings, state) {
|
|
|
2201
2028
|
}
|
|
2202
2029
|
let rawManifest;
|
|
2203
2030
|
try {
|
|
2204
|
-
rawManifest = JSON.parse(await
|
|
2031
|
+
rawManifest = JSON.parse(await fs5.readFile(manifestPath, "utf8"));
|
|
2205
2032
|
} catch {
|
|
2206
2033
|
warnings.push(`extension_manifest_invalid_json:${scope}:${directoryName}`);
|
|
2207
2034
|
continue;
|
|
@@ -2378,7 +2205,7 @@ async function adoptUnmanagedExtensions(extensionsRoot, scope, installedExtensio
|
|
|
2378
2205
|
let nextState = state;
|
|
2379
2206
|
const adoptedEntries = [];
|
|
2380
2207
|
for (const candidate of sortedCandidates) {
|
|
2381
|
-
const extensionDirectory =
|
|
2208
|
+
const extensionDirectory = path5.join(extensionsRoot, candidate.directory);
|
|
2382
2209
|
const validated = await validateExtensionDirectory(extensionDirectory);
|
|
2383
2210
|
const now = nowIso();
|
|
2384
2211
|
const sourceRecord = {
|
|
@@ -2480,6 +2307,9 @@ async function runExtension(target, options, global2) {
|
|
|
2480
2307
|
if (options.fixManagedState === true && action !== "manage" && action !== "doctor") {
|
|
2481
2308
|
throw new PmCliError("--fix-managed-state is only valid with --manage or --doctor.", EXIT_CODE.USAGE);
|
|
2482
2309
|
}
|
|
2310
|
+
if (options.capability !== void 0 && action !== "init") {
|
|
2311
|
+
throw new PmCliError("--capability is only valid with --init/--scaffold.", EXIT_CODE.USAGE);
|
|
2312
|
+
}
|
|
2483
2313
|
const normalizedTarget = (() => {
|
|
2484
2314
|
const normalizedInput = target?.trim().toLowerCase();
|
|
2485
2315
|
if (action === "doctor" && normalizedInput === "doctor") {
|
|
@@ -2534,20 +2364,23 @@ async function runExtension(target, options, global2) {
|
|
|
2534
2364
|
throw new PmCliError('Action "init" does not accept --gh/--github/--ref options.', EXIT_CODE.USAGE);
|
|
2535
2365
|
}
|
|
2536
2366
|
const scaffoldTarget = requireTarget(normalizedTarget, action);
|
|
2537
|
-
const scaffold = await scaffoldExtensionProject(scaffoldTarget, options.vocabulary ?? "extension");
|
|
2367
|
+
const scaffold = await scaffoldExtensionProject(scaffoldTarget, options.vocabulary ?? "extension", options.capability);
|
|
2538
2368
|
const quotedTargetPath = JSON.stringify(scaffold.target_path);
|
|
2369
|
+
const quotedShellTargetPath = JSON.stringify(scaffold.target_path.replace(/\\/g, "/"));
|
|
2539
2370
|
return withResult({
|
|
2540
2371
|
scaffolded: scaffold.created_directory || scaffold.files.some((entry) => entry.status === "created"),
|
|
2541
2372
|
extension: {
|
|
2542
2373
|
name: scaffold.extension_name,
|
|
2543
2374
|
command: scaffold.command_name
|
|
2544
2375
|
},
|
|
2376
|
+
capability: scaffold.capability,
|
|
2545
2377
|
target_path: scaffold.target_path,
|
|
2546
2378
|
created_directory: scaffold.created_directory,
|
|
2547
2379
|
files: scaffold.files,
|
|
2548
2380
|
next_steps: [
|
|
2549
2381
|
`Install the scaffold: ${options.vocabulary === "package" ? "pm install --project" : "pm extension --install --project"} ${quotedTargetPath}`,
|
|
2550
2382
|
`Smoke-test command path: pm ${scaffold.command_name}`,
|
|
2383
|
+
...options.vocabulary === "package" ? [`Validate the sample test: cd ${quotedShellTargetPath}, then run "npm install" and "npm test"`] : [],
|
|
2551
2384
|
`Run diagnostics: ${options.vocabulary === "package" ? "pm package doctor" : "pm extension --doctor"} --project --detail summary`
|
|
2552
2385
|
]
|
|
2553
2386
|
});
|
|
@@ -2657,10 +2490,10 @@ async function runExtension(target, options, global2) {
|
|
|
2657
2490
|
const settings = await readSettings(resolvedRoots.settings_root);
|
|
2658
2491
|
const managedStateRead = await readManagedExtensionState(resolvedRoots.selected_root);
|
|
2659
2492
|
warnings.push(...managedStateRead.warnings);
|
|
2660
|
-
const destinationDirectory =
|
|
2493
|
+
const destinationDirectory = path5.join(resolvedRoots.selected_root, destinationDirectoryName);
|
|
2661
2494
|
const destinationExists = await pathExists(destinationDirectory);
|
|
2662
2495
|
const installInPlace = await areDirectoriesEquivalent(validated.directory, destinationDirectory);
|
|
2663
|
-
await
|
|
2496
|
+
await fs5.mkdir(resolvedRoots.selected_root, { recursive: true });
|
|
2664
2497
|
if (!installInPlace) {
|
|
2665
2498
|
await copyExtensionDirectoryForInstall(validated.directory, destinationDirectory);
|
|
2666
2499
|
}
|
|
@@ -2807,7 +2640,7 @@ async function runExtension(target, options, global2) {
|
|
|
2807
2640
|
}
|
|
2808
2641
|
});
|
|
2809
2642
|
}
|
|
2810
|
-
const extensionDirectory =
|
|
2643
|
+
const extensionDirectory = path5.join(resolvedRoots.selected_root, candidate.directory);
|
|
2811
2644
|
const validated = await validateExtensionDirectory(extensionDirectory);
|
|
2812
2645
|
const now = nowIso();
|
|
2813
2646
|
const sourceRecord = githubOption === void 0 ? {
|
|
@@ -2872,8 +2705,8 @@ async function runExtension(target, options, global2) {
|
|
|
2872
2705
|
if (!candidate) {
|
|
2873
2706
|
throw new PmCliError(`Installed extension "${extensionTarget}" was not found in ${scope} scope.`, EXIT_CODE.NOT_FOUND);
|
|
2874
2707
|
}
|
|
2875
|
-
const destinationDirectory =
|
|
2876
|
-
await
|
|
2708
|
+
const destinationDirectory = path5.join(resolvedRoots.selected_root, candidate.directory);
|
|
2709
|
+
await fs5.rm(destinationDirectory, { recursive: true, force: true });
|
|
2877
2710
|
const updatedState = {
|
|
2878
2711
|
...managedStateRead.state,
|
|
2879
2712
|
updated_at: nowIso(),
|
|
@@ -2959,6 +2792,7 @@ async function runExtension(target, options, global2) {
|
|
|
2959
2792
|
warnings.push(...classifyDoctorLoadFailureWarnings(loadResult.failed));
|
|
2960
2793
|
warnings.push(...activationResult.warnings);
|
|
2961
2794
|
warnings.push(...classifyDoctorActivationFailureWarnings(activationResult.failed));
|
|
2795
|
+
warnings.push(...classifyUnusedCapabilityWarnings(loadResult, activationResult));
|
|
2962
2796
|
warnings.push(...collectGlobalOutputOverrideDoctorWarnings(activationResult));
|
|
2963
2797
|
const runtimeInstalledExtensions = applyDoctorRuntimeActivationState(refreshedInstalled.extensions, loadResult, activationResult);
|
|
2964
2798
|
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);
|
|
@@ -3276,4 +3110,4 @@ export {
|
|
|
3276
3110
|
runExtension,
|
|
3277
3111
|
_testOnly
|
|
3278
3112
|
};
|
|
3279
|
-
//# sourceMappingURL=chunk-
|
|
3113
|
+
//# sourceMappingURL=chunk-7GCCDXXN.js.map
|