@unbrained/pm-cli 2026.6.21 → 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 +22 -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 +481 -48
- 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 +9 -4
- package/dist/cli/commands/extension.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-KW3IRP44.js → activity-DXS2XMQU.js} +11 -11
- package/dist/cli-bundle/chunks/activity-NEOI45NX.js +18 -0
- package/dist/cli-bundle/chunks/{aggregate-FIGQEIL3.js → aggregate-IHM4KMQ3.js} +10 -10
- package/dist/cli-bundle/chunks/{aggregate-3ZKQG5SW.js → aggregate-NMYDVQF7.js} +10 -10
- package/dist/cli-bundle/chunks/{append-EWJYJ7CH.js → append-3HY5G7ET.js} +8 -8
- package/dist/cli-bundle/chunks/{append-QEOLX3XB.js → append-K54MDQYC.js} +8 -8
- package/dist/cli-bundle/chunks/{chunk-CF55WVVS.js → chunk-25XZN3JD.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-WQ7NIVDK.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-FRUFKWNK.js → chunk-3VLPDG3J.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-C3AZ5ZML.js → chunk-44O4JIN6.js} +13 -13
- package/dist/cli-bundle/chunks/{chunk-J4MYYSOL.js → chunk-47HTJ6BU.js} +5 -5
- package/dist/cli-bundle/chunks/{chunk-YCJX76PW.js → chunk-4JXWVHMN.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-37QXHBIB.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-NJHMAJ6N.js → chunk-5SESR24H.js} +8 -8
- package/dist/cli-bundle/chunks/{chunk-2EIMPCE4.js → chunk-6FQHNHQQ.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-5FIEHKEX.js → chunk-6UPTNMVW.js} +5 -5
- package/dist/cli-bundle/chunks/{chunk-FKBDKV7Y.js → chunk-75VEYQJS.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-GMHPNNYG.js → chunk-77VKGH4L.js} +10 -10
- package/dist/cli-bundle/chunks/{chunk-5PCI3UBT.js → chunk-7GCCDXXN.js} +55 -266
- package/dist/cli-bundle/chunks/chunk-7GCCDXXN.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-OFYMIDF2.js → chunk-7MALIV5H.js} +9 -9
- package/dist/cli-bundle/chunks/{chunk-A4Z7ZOL5.js → chunk-7MPTFYT3.js} +20 -15
- package/dist/cli-bundle/chunks/chunk-7MPTFYT3.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-RLK7P77C.js → chunk-7PBGTIN3.js} +5 -5
- package/dist/cli-bundle/chunks/{chunk-6H4LF7AO.js → chunk-A25LOPRG.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-M5XALUSL.js → chunk-A7E4ZXG2.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-7D3SAQXM.js → chunk-AJXYOYJV.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-HCU6WUSY.js → chunk-B2KR24R4.js} +9 -9
- package/dist/cli-bundle/chunks/{chunk-2GCDRRIF.js → chunk-C5SWTISA.js} +12 -12
- package/dist/cli-bundle/chunks/{chunk-AIS5PGI3.js → chunk-CLLVBO3I.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-QGG32QHW.js → chunk-CR7KFPAQ.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-UV6IYE5U.js → chunk-CWPBGUC7.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-32R4PIC6.js → chunk-D35LTIFR.js} +55 -259
- package/dist/cli-bundle/chunks/chunk-D35LTIFR.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-QQHISQBJ.js → chunk-DBQUQ3AS.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-5QICDWMV.js → chunk-DHBPJ7VG.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-SRYYRVPB.js → chunk-DMT4ODVN.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-PUH4D67U.js → chunk-DU64SZUQ.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-C4N5I7ZW.js → chunk-EVPVCE4R.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-3EWSGA7N.js → chunk-FK6MV5F5.js} +12 -12
- package/dist/cli-bundle/chunks/{chunk-NIUEXCFS.js → chunk-GGAXE22C.js} +6 -6
- package/dist/cli-bundle/chunks/{chunk-SX75ADBK.js → chunk-GNDHOR64.js} +6 -6
- package/dist/cli-bundle/chunks/{chunk-GOZUHWFD.js → chunk-GU7YHKYP.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-NXS7ZKAK.js → chunk-GXBSFKSX.js} +4 -4
- package/dist/cli-bundle/chunks/{chunk-NJN7LL7U.js → chunk-H6FNDCDI.js} +5 -5
- package/dist/cli-bundle/chunks/{chunk-FWPDUYEY.js → chunk-HYQV75IB.js} +7 -7
- package/dist/cli-bundle/chunks/{chunk-F5NZWFSW.js → chunk-I367IDZP.js} +7 -7
- package/dist/cli-bundle/chunks/{chunk-52OCIDPG.js → chunk-I6XE47J2.js} +5 -5
- package/dist/cli-bundle/chunks/{chunk-HIP7WVTL.js → chunk-J2TSPY5L.js} +4 -4
- package/dist/cli-bundle/chunks/{chunk-2PKHRP6G.js → chunk-JLSC5NPC.js} +10 -10
- package/dist/cli-bundle/chunks/{chunk-PP2U4NMT.js → chunk-JY25IOEZ.js} +5 -5
- package/dist/cli-bundle/chunks/{chunk-Q2J2HJUN.js → chunk-K25UDYJ4.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-SBGXDO7A.js → chunk-KBTREGVO.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-QZTWBFXJ.js → chunk-KK4TQ3ZP.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-434HM6Z5.js → chunk-KL5ELX2X.js} +81 -3
- package/dist/cli-bundle/chunks/chunk-KL5ELX2X.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-NIGXMNNI.js → chunk-KRJJPDUO.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-AZMOLBN3.js → chunk-MD7XKVWI.js} +7 -7
- package/dist/cli-bundle/chunks/{chunk-6ZXM2XNF.js → chunk-MNGAQB2E.js} +8 -8
- package/dist/cli-bundle/chunks/{chunk-3MDHREEV.js → chunk-NIWY4V4Z.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-TKBHZPKD.js → chunk-NKZOJPXK.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-CZPXY7UW.js → chunk-NVUATMTC.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-LEU5GHRC.js → chunk-P7ZU73BO.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-NSBZ2CKF.js → chunk-PCH2JTEO.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-B473GZWW.js → chunk-PJS2J7Z4.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-5IDI42VV.js → chunk-QQWEROGS.js} +7 -7
- package/dist/cli-bundle/chunks/{chunk-6M4RJS4M.js → chunk-RPRFBXND.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-HMOADQVT.js → chunk-RZZMSY4P.js} +88 -3
- package/dist/cli-bundle/chunks/chunk-RZZMSY4P.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-N5ZJACJ6.js → chunk-SFKQAVZA.js} +8 -8
- package/dist/cli-bundle/chunks/{chunk-EBH56IXK.js → chunk-THKDPOS5.js} +8 -8
- package/dist/cli-bundle/chunks/{chunk-LUWW7L4B.js → chunk-TIKJAXQW.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-OTHIWLMB.js → chunk-TJABI6PR.js} +5 -5
- package/dist/cli-bundle/chunks/{chunk-HC4AWIKT.js → chunk-TRUFOER3.js} +19 -14
- package/dist/cli-bundle/chunks/{chunk-HC4AWIKT.js.map → chunk-TRUFOER3.js.map} +2 -2
- package/dist/cli-bundle/chunks/{chunk-76Z3YSHV.js → chunk-TZQKEBKF.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-PFSRUHDH.js → chunk-UKK2VTTH.js} +9 -9
- package/dist/cli-bundle/chunks/{chunk-H7NJZWG2.js → chunk-V4SM4UAL.js} +13 -13
- package/dist/cli-bundle/chunks/{chunk-CZUB4XWO.js → chunk-VB54F347.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-O47BPOPC.js → chunk-WBSYW3NT.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-UPE3CDD7.js → chunk-WQDX7DVG.js} +7 -7
- package/dist/cli-bundle/chunks/{chunk-NB3PYLQ6.js → chunk-XKNF3VRJ.js} +5 -5
- package/dist/cli-bundle/chunks/{chunk-F7K5GWP3.js → chunk-Y335KFHD.js} +9 -9
- package/dist/cli-bundle/chunks/{chunk-D7FYS6PG.js → chunk-Y4BZEND6.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-6CJWZAN7.js → chunk-YATDFWYK.js} +7 -7
- package/dist/cli-bundle/chunks/{chunk-UEMNL33O.js → chunk-YJICYNAV.js} +8 -8
- package/dist/cli-bundle/chunks/{chunk-Z6T4PQI2.js → chunk-YQSWTVZF.js} +4 -4
- package/dist/cli-bundle/chunks/{chunk-RVHYI7SL.js → chunk-YRLLL5TY.js} +8 -8
- package/dist/cli-bundle/chunks/{claim-RC56YUWG.js → claim-MPXNVBZQ.js} +10 -10
- package/dist/cli-bundle/chunks/{claim-THOJ6CMV.js → claim-SKHJDLW6.js} +10 -10
- package/dist/cli-bundle/chunks/{close-SG5MNCVQ.js → close-4RKSL5L6.js} +8 -8
- package/dist/cli-bundle/chunks/close-Z6AI736U.js +15 -0
- package/dist/cli-bundle/chunks/{close-many-DKQLBGLV.js → close-many-AWTPXLHJ.js} +15 -15
- package/dist/cli-bundle/chunks/{close-many-3L3AQZBU.js → close-many-SXODYBDP.js} +15 -15
- package/dist/cli-bundle/chunks/{comments-SKWMDWCW.js → comments-OOH64LWW.js} +10 -10
- package/dist/cli-bundle/chunks/{comments-M7ZOZNBX.js → comments-YYW5P7AG.js} +10 -10
- package/dist/cli-bundle/chunks/{config-OZCUABPB.js → config-3445MCQQ.js} +8 -8
- package/dist/cli-bundle/chunks/{config-7CK62S7T.js → config-LCDMKRB2.js} +8 -8
- package/dist/cli-bundle/chunks/{context-PUG2A7RC.js → context-DZMIBIVP.js} +13 -13
- package/dist/cli-bundle/chunks/{context-OEC366TO.js → context-PJCURODY.js} +13 -13
- package/dist/cli-bundle/chunks/{contracts-3THOLA7L.js → contracts-7YDFEJB3.js} +4 -4
- package/dist/cli-bundle/chunks/{contracts-N65FXEOL.js → contracts-MP2P3HL5.js} +4 -4
- package/dist/cli-bundle/chunks/{copy-JPX7VZCH.js → copy-63IQQRRS.js} +7 -7
- package/dist/cli-bundle/chunks/{copy-6QLHILAC.js → copy-TASIH2AZ.js} +7 -7
- package/dist/cli-bundle/chunks/create-3BV2VA3Q.js +30 -0
- package/dist/cli-bundle/chunks/{create-Y54ZVVZH.js → create-TGSB5GV4.js} +14 -14
- package/dist/cli-bundle/chunks/{delete-63PCMQAJ.js → delete-ARILQQLB.js} +7 -7
- package/dist/cli-bundle/chunks/{delete-GDSMGAGJ.js → delete-ZQKBZYNK.js} +7 -7
- package/dist/cli-bundle/chunks/{deps-T4ZF5G54.js → deps-MSHQR2GY.js} +7 -7
- package/dist/cli-bundle/chunks/{deps-XYQ73XRH.js → deps-NJFJIMQ5.js} +7 -7
- package/dist/cli-bundle/chunks/{docs-C75YIXHC.js → docs-SS4UKYYA.js} +9 -9
- package/dist/cli-bundle/chunks/{docs-EHNPDWUL.js → docs-XK2UVUXX.js} +9 -9
- package/dist/cli-bundle/chunks/{eval-GTENKE24.js → eval-FVZGX5IZ.js} +12 -12
- package/dist/cli-bundle/chunks/{eval-3WKDTRMH.js → eval-JOTG2YHU.js} +12 -12
- package/dist/cli-bundle/chunks/{extension-46NWACO3.js → extension-NLMS47I4.js} +6 -5
- package/dist/cli-bundle/chunks/{extension-D5FDZ2CO.js → extension-OQPS27B4.js} +6 -5
- package/dist/cli-bundle/chunks/{files-X3H7CCBQ.js → files-3EVJQZ2N.js} +9 -9
- package/dist/cli-bundle/chunks/{files-DSZBOSSN.js → files-Y2P6LN5A.js} +9 -9
- package/dist/cli-bundle/chunks/{focus-5STQXDPU.js → focus-D5ZUPTII.js} +8 -8
- package/dist/cli-bundle/chunks/{focus-MDVPOWB5.js → focus-ZPIFTY4R.js} +8 -8
- package/dist/cli-bundle/chunks/{gc-ZMST3WQP.js → gc-LXXDY456.js} +3 -3
- package/dist/cli-bundle/chunks/{gc-ZC7JHBG7.js → gc-RNOEQHSX.js} +3 -3
- package/dist/cli-bundle/chunks/{get-NT7L2HUZ.js → get-Q3SZGQHD.js} +11 -11
- package/dist/cli-bundle/chunks/{get-J2IPJRZW.js → get-W23G7MJX.js} +11 -11
- package/dist/cli-bundle/chunks/{health-WOYBR3KU.js → health-5LHSX365.js} +14 -13
- package/dist/cli-bundle/chunks/{health-WOYBR3KU.js.map → health-5LHSX365.js.map} +1 -1
- package/dist/cli-bundle/chunks/{health-IVMA3XQC.js → health-UDDGJLPP.js} +16 -15
- package/dist/cli-bundle/chunks/{health-IVMA3XQC.js.map → health-UDDGJLPP.js.map} +1 -1
- package/dist/cli-bundle/chunks/{history-RLH2QCRO.js → history-6CZVFIUJ.js} +10 -10
- package/dist/cli-bundle/chunks/history-YRQUD4YM.js +20 -0
- package/dist/cli-bundle/chunks/{history-compact-ZBEBGJM7.js → history-compact-M35PDQ4G.js} +12 -12
- package/dist/cli-bundle/chunks/{history-compact-UXDIFC33.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-P7I7AWMB.js → history-redact-AJGARHT3.js} +11 -11
- package/dist/cli-bundle/chunks/{history-repair-52KINVIK.js → history-repair-5RDMF7K4.js} +12 -12
- package/dist/cli-bundle/chunks/{history-repair-RM5ITLU5.js → history-repair-YUAHIPIN.js} +12 -12
- package/dist/cli-bundle/chunks/init-DWAKYRXI.js +21 -0
- package/dist/cli-bundle/chunks/{init-2BNZOO6F.js → init-HASX3YNJ.js} +11 -10
- package/dist/cli-bundle/chunks/{learnings-W6F3FIPL.js → learnings-JNGUIJDK.js} +10 -10
- package/dist/cli-bundle/chunks/{learnings-YGYVHWJK.js → learnings-M4KA6MQE.js} +10 -10
- package/dist/cli-bundle/chunks/{list-KPAYU5KZ.js → list-5UU2W24O.js} +10 -10
- package/dist/cli-bundle/chunks/{list-K6FPV4J4.js → list-6FMKTIH3.js} +10 -10
- package/dist/cli-bundle/chunks/{notes-YTD6ZILW.js → notes-MODH5CBT.js} +10 -10
- package/dist/cli-bundle/chunks/{notes-PU74EPKV.js → notes-PYCPLA5Y.js} +10 -10
- package/dist/cli-bundle/chunks/{plan-GEQYUCBW.js → plan-DXRIRYRU.js} +14 -14
- package/dist/cli-bundle/chunks/{plan-FNXHXRCI.js → plan-EHQALWSC.js} +14 -14
- package/dist/cli-bundle/chunks/{register-list-query-QI45RMKN.js → register-list-query-QAASVP2J.js} +19 -19
- package/dist/cli-bundle/chunks/{register-list-query-PHWYHENI.js → register-list-query-WE54YJMH.js} +19 -19
- package/dist/cli-bundle/chunks/{register-mutation-YINRTS7L.js → register-mutation-B6DZJTY2.js} +33 -33
- package/dist/cli-bundle/chunks/{register-mutation-X3BUOQEL.js → register-mutation-CPV4C2KR.js} +33 -33
- package/dist/cli-bundle/chunks/{register-operations-E5JEASRK.js → register-operations-AT3BVVX2.js} +32 -32
- package/dist/cli-bundle/chunks/{register-operations-MIDTRW7S.js → register-operations-RC4C3423.js} +32 -32
- package/dist/cli-bundle/chunks/{register-setup-EG2U6CEU.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-DYBFLEZX.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-XQYSWBV7.js → restore-FNBV4GWE.js} +11 -11
- package/dist/cli-bundle/chunks/restore-XY4YE2OV.js +19 -0
- package/dist/cli-bundle/chunks/{scheduling-shortcuts-HJMTEXKE.js → scheduling-shortcuts-ECL6GBMZ.js} +14 -14
- package/dist/cli-bundle/chunks/{scheduling-shortcuts-NNT5ASZR.js → scheduling-shortcuts-JRIUREEU.js} +14 -14
- package/dist/cli-bundle/chunks/{schema-TZXW6XWD.js → schema-74YENAJL.js} +9 -9
- package/dist/cli-bundle/chunks/{schema-263RI4WW.js → schema-TCW3I7QR.js} +9 -9
- package/dist/cli-bundle/chunks/{search-SFRJOVDG.js → search-7USZ6XZA.js} +12 -12
- package/dist/cli-bundle/chunks/{search-LECJYSXE.js → search-GNAUE65M.js} +12 -12
- package/dist/cli-bundle/chunks/{stats-VPBGSRQH.js → stats-CVHASAEU.js} +8 -8
- package/dist/cli-bundle/chunks/{stats-N7ER2PNK.js → stats-DQMKJMFT.js} +8 -8
- package/dist/cli-bundle/chunks/{telemetry-PP3FUNBU.js → telemetry-7P5EUWCS.js} +4 -4
- package/dist/cli-bundle/chunks/{telemetry-L6K3BUIQ.js → telemetry-PQTL5YS2.js} +4 -4
- package/dist/cli-bundle/chunks/test-COWPCGBE.js +36 -0
- package/dist/cli-bundle/chunks/{test-3EGNS3T5.js → test-FDQZQNZ4.js} +16 -15
- package/dist/cli-bundle/chunks/{test-all-ZHFAWNC3.js → test-all-PIPPS4S5.js} +18 -17
- package/dist/cli-bundle/chunks/{test-all-ZHFAWNC3.js.map → test-all-PIPPS4S5.js.map} +1 -1
- package/dist/cli-bundle/chunks/{test-all-NJ5V2QFS.js → test-all-WQIAZVA6.js} +16 -15
- package/dist/cli-bundle/chunks/{test-all-NJ5V2QFS.js.map → test-all-WQIAZVA6.js.map} +1 -1
- package/dist/cli-bundle/chunks/{test-runs-GN3C6GOI.js → test-runs-JS6DNCCI.js} +5 -5
- package/dist/cli-bundle/chunks/{test-runs-AJHR6IQF.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-RYQ64CFW.js → update-many-6NTZ5J5D.js} +23 -23
- package/dist/cli-bundle/chunks/{update-many-N2AN6ZDH.js → update-many-B3TH5TDS.js} +23 -23
- package/dist/cli-bundle/chunks/{upgrade-VPCIYAVW.js → upgrade-4C7VE7MS.js} +8 -7
- package/dist/cli-bundle/chunks/{upgrade-VPCIYAVW.js.map → upgrade-4C7VE7MS.js.map} +1 -1
- package/dist/cli-bundle/chunks/{upgrade-TJXFLZIX.js → upgrade-76IKZ6EZ.js} +6 -5
- package/dist/cli-bundle/chunks/{upgrade-TJXFLZIX.js.map → upgrade-76IKZ6EZ.js.map} +1 -1
- package/dist/cli-bundle/chunks/{validate-PHKIYGSY.js → validate-AQU7OCL3.js} +21 -20
- package/dist/cli-bundle/chunks/{validate-PHKIYGSY.js.map → validate-AQU7OCL3.js.map} +1 -1
- package/dist/cli-bundle/chunks/{validate-JMNWEUYF.js → validate-BPM6Z3OT.js} +23 -22
- package/dist/cli-bundle/chunks/{validate-JMNWEUYF.js.map → validate-BPM6Z3OT.js.map} +1 -1
- 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/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/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/testing.d.ts +520 -1
- package/dist/sdk/testing.js +477 -18
- package/dist/sdk/testing.js.map +1 -1
- package/docs/EXTENSIONS.md +4 -8
- package/docs/SDK.md +257 -0
- package/package.json +2 -2
- package/dist/cli-bundle/chunks/activity-CIHV64UC.js +0 -18
- package/dist/cli-bundle/chunks/chunk-32R4PIC6.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-434HM6Z5.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-5PCI3UBT.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-A4Z7ZOL5.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-HMOADQVT.js.map +0 -7
- package/dist/cli-bundle/chunks/close-DNMHGOCX.js +0 -15
- package/dist/cli-bundle/chunks/create-NNP6TSFO.js +0 -30
- package/dist/cli-bundle/chunks/history-WX3MGFS2.js +0 -20
- package/dist/cli-bundle/chunks/history-redact-YQGU3XRA.js +0 -21
- package/dist/cli-bundle/chunks/init-SC2P6CHP.js +0 -20
- package/dist/cli-bundle/chunks/register-setup-DYBFLEZX.js.map +0 -1
- package/dist/cli-bundle/chunks/register-setup-EG2U6CEU.js.map +0 -7
- package/dist/cli-bundle/chunks/restore-5KHR2YYQ.js +0 -19
- package/dist/cli-bundle/chunks/test-RQCTSWUK.js +0 -35
- package/dist/cli-bundle/chunks/update-6YXOGHRT.js +0 -24
- package/dist/cli-bundle/chunks/update-V33YUBRP.js +0 -28
- /package/dist/cli-bundle/chunks/{activity-KW3IRP44.js.map → activity-DXS2XMQU.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{activity-CIHV64UC.js.map → activity-NEOI45NX.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{aggregate-FIGQEIL3.js.map → aggregate-IHM4KMQ3.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{aggregate-3ZKQG5SW.js.map → aggregate-NMYDVQF7.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{append-EWJYJ7CH.js.map → append-3HY5G7ET.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{append-QEOLX3XB.js.map → append-K54MDQYC.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-CF55WVVS.js.map → chunk-25XZN3JD.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-WQ7NIVDK.js.map → chunk-2LEYMXI6.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-FRUFKWNK.js.map → chunk-3VLPDG3J.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-C3AZ5ZML.js.map → chunk-44O4JIN6.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-J4MYYSOL.js.map → chunk-47HTJ6BU.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-YCJX76PW.js.map → chunk-4JXWVHMN.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-37QXHBIB.js.map → chunk-4SDKF5BG.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-NJHMAJ6N.js.map → chunk-5SESR24H.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-2EIMPCE4.js.map → chunk-6FQHNHQQ.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-5FIEHKEX.js.map → chunk-6UPTNMVW.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-FKBDKV7Y.js.map → chunk-75VEYQJS.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-GMHPNNYG.js.map → chunk-77VKGH4L.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-OFYMIDF2.js.map → chunk-7MALIV5H.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-RLK7P77C.js.map → chunk-7PBGTIN3.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-6H4LF7AO.js.map → chunk-A25LOPRG.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-M5XALUSL.js.map → chunk-A7E4ZXG2.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-7D3SAQXM.js.map → chunk-AJXYOYJV.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-HCU6WUSY.js.map → chunk-B2KR24R4.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-2GCDRRIF.js.map → chunk-C5SWTISA.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-AIS5PGI3.js.map → chunk-CLLVBO3I.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-QGG32QHW.js.map → chunk-CR7KFPAQ.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-UV6IYE5U.js.map → chunk-CWPBGUC7.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-QQHISQBJ.js.map → chunk-DBQUQ3AS.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-5QICDWMV.js.map → chunk-DHBPJ7VG.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-SRYYRVPB.js.map → chunk-DMT4ODVN.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-PUH4D67U.js.map → chunk-DU64SZUQ.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-C4N5I7ZW.js.map → chunk-EVPVCE4R.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-3EWSGA7N.js.map → chunk-FK6MV5F5.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-NIUEXCFS.js.map → chunk-GGAXE22C.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-SX75ADBK.js.map → chunk-GNDHOR64.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-GOZUHWFD.js.map → chunk-GU7YHKYP.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-NXS7ZKAK.js.map → chunk-GXBSFKSX.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-NJN7LL7U.js.map → chunk-H6FNDCDI.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-FWPDUYEY.js.map → chunk-HYQV75IB.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-F5NZWFSW.js.map → chunk-I367IDZP.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-52OCIDPG.js.map → chunk-I6XE47J2.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-HIP7WVTL.js.map → chunk-J2TSPY5L.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-2PKHRP6G.js.map → chunk-JLSC5NPC.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-PP2U4NMT.js.map → chunk-JY25IOEZ.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-Q2J2HJUN.js.map → chunk-K25UDYJ4.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-SBGXDO7A.js.map → chunk-KBTREGVO.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-QZTWBFXJ.js.map → chunk-KK4TQ3ZP.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-NIGXMNNI.js.map → chunk-KRJJPDUO.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-AZMOLBN3.js.map → chunk-MD7XKVWI.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-6ZXM2XNF.js.map → chunk-MNGAQB2E.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-3MDHREEV.js.map → chunk-NIWY4V4Z.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-TKBHZPKD.js.map → chunk-NKZOJPXK.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-CZPXY7UW.js.map → chunk-NVUATMTC.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-LEU5GHRC.js.map → chunk-P7ZU73BO.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-NSBZ2CKF.js.map → chunk-PCH2JTEO.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-B473GZWW.js.map → chunk-PJS2J7Z4.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-5IDI42VV.js.map → chunk-QQWEROGS.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-6M4RJS4M.js.map → chunk-RPRFBXND.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-N5ZJACJ6.js.map → chunk-SFKQAVZA.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-EBH56IXK.js.map → chunk-THKDPOS5.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-LUWW7L4B.js.map → chunk-TIKJAXQW.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-OTHIWLMB.js.map → chunk-TJABI6PR.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-76Z3YSHV.js.map → chunk-TZQKEBKF.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-PFSRUHDH.js.map → chunk-UKK2VTTH.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-H7NJZWG2.js.map → chunk-V4SM4UAL.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-CZUB4XWO.js.map → chunk-VB54F347.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-O47BPOPC.js.map → chunk-WBSYW3NT.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-UPE3CDD7.js.map → chunk-WQDX7DVG.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-NB3PYLQ6.js.map → chunk-XKNF3VRJ.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-F7K5GWP3.js.map → chunk-Y335KFHD.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-D7FYS6PG.js.map → chunk-Y4BZEND6.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-6CJWZAN7.js.map → chunk-YATDFWYK.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-UEMNL33O.js.map → chunk-YJICYNAV.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-Z6T4PQI2.js.map → chunk-YQSWTVZF.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-RVHYI7SL.js.map → chunk-YRLLL5TY.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{claim-RC56YUWG.js.map → claim-MPXNVBZQ.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{claim-THOJ6CMV.js.map → claim-SKHJDLW6.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{close-SG5MNCVQ.js.map → close-4RKSL5L6.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{close-DNMHGOCX.js.map → close-Z6AI736U.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{close-many-DKQLBGLV.js.map → close-many-AWTPXLHJ.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{close-many-3L3AQZBU.js.map → close-many-SXODYBDP.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{comments-SKWMDWCW.js.map → comments-OOH64LWW.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{comments-M7ZOZNBX.js.map → comments-YYW5P7AG.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{config-OZCUABPB.js.map → config-3445MCQQ.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{config-7CK62S7T.js.map → config-LCDMKRB2.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{context-PUG2A7RC.js.map → context-DZMIBIVP.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{context-OEC366TO.js.map → context-PJCURODY.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{contracts-3THOLA7L.js.map → contracts-7YDFEJB3.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{contracts-N65FXEOL.js.map → contracts-MP2P3HL5.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{copy-JPX7VZCH.js.map → copy-63IQQRRS.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{copy-6QLHILAC.js.map → copy-TASIH2AZ.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{create-NNP6TSFO.js.map → create-3BV2VA3Q.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{create-Y54ZVVZH.js.map → create-TGSB5GV4.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{delete-63PCMQAJ.js.map → delete-ARILQQLB.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{delete-GDSMGAGJ.js.map → delete-ZQKBZYNK.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{deps-T4ZF5G54.js.map → deps-MSHQR2GY.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{deps-XYQ73XRH.js.map → deps-NJFJIMQ5.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{docs-C75YIXHC.js.map → docs-SS4UKYYA.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{docs-EHNPDWUL.js.map → docs-XK2UVUXX.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{eval-GTENKE24.js.map → eval-FVZGX5IZ.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{eval-3WKDTRMH.js.map → eval-JOTG2YHU.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{extension-46NWACO3.js.map → extension-NLMS47I4.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{extension-D5FDZ2CO.js.map → extension-OQPS27B4.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{files-X3H7CCBQ.js.map → files-3EVJQZ2N.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{files-DSZBOSSN.js.map → files-Y2P6LN5A.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{focus-5STQXDPU.js.map → focus-D5ZUPTII.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{focus-MDVPOWB5.js.map → focus-ZPIFTY4R.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{gc-ZMST3WQP.js.map → gc-LXXDY456.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{gc-ZC7JHBG7.js.map → gc-RNOEQHSX.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{get-NT7L2HUZ.js.map → get-Q3SZGQHD.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{get-J2IPJRZW.js.map → get-W23G7MJX.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{history-RLH2QCRO.js.map → history-6CZVFIUJ.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{history-WX3MGFS2.js.map → history-YRQUD4YM.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{history-compact-ZBEBGJM7.js.map → history-compact-M35PDQ4G.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{history-compact-UXDIFC33.js.map → history-compact-VWUSQH6Z.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{history-redact-YQGU3XRA.js.map → history-redact-27OEOZRZ.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{history-redact-P7I7AWMB.js.map → history-redact-AJGARHT3.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{history-repair-52KINVIK.js.map → history-repair-5RDMF7K4.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{history-repair-RM5ITLU5.js.map → history-repair-YUAHIPIN.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{init-SC2P6CHP.js.map → init-DWAKYRXI.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{init-2BNZOO6F.js.map → init-HASX3YNJ.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{learnings-W6F3FIPL.js.map → learnings-JNGUIJDK.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{learnings-YGYVHWJK.js.map → learnings-M4KA6MQE.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{list-KPAYU5KZ.js.map → list-5UU2W24O.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{list-K6FPV4J4.js.map → list-6FMKTIH3.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{notes-YTD6ZILW.js.map → notes-MODH5CBT.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{notes-PU74EPKV.js.map → notes-PYCPLA5Y.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{plan-GEQYUCBW.js.map → plan-DXRIRYRU.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{plan-FNXHXRCI.js.map → plan-EHQALWSC.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{register-list-query-QI45RMKN.js.map → register-list-query-QAASVP2J.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{register-list-query-PHWYHENI.js.map → register-list-query-WE54YJMH.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{register-mutation-YINRTS7L.js.map → register-mutation-B6DZJTY2.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{register-mutation-X3BUOQEL.js.map → register-mutation-CPV4C2KR.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{register-operations-E5JEASRK.js.map → register-operations-AT3BVVX2.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{register-operations-MIDTRW7S.js.map → register-operations-RC4C3423.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{restore-XQYSWBV7.js.map → restore-FNBV4GWE.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{restore-5KHR2YYQ.js.map → restore-XY4YE2OV.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{scheduling-shortcuts-HJMTEXKE.js.map → scheduling-shortcuts-ECL6GBMZ.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{scheduling-shortcuts-NNT5ASZR.js.map → scheduling-shortcuts-JRIUREEU.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{schema-TZXW6XWD.js.map → schema-74YENAJL.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{schema-263RI4WW.js.map → schema-TCW3I7QR.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{search-SFRJOVDG.js.map → search-7USZ6XZA.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{search-LECJYSXE.js.map → search-GNAUE65M.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{stats-VPBGSRQH.js.map → stats-CVHASAEU.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{stats-N7ER2PNK.js.map → stats-DQMKJMFT.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{telemetry-PP3FUNBU.js.map → telemetry-7P5EUWCS.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{telemetry-L6K3BUIQ.js.map → telemetry-PQTL5YS2.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{test-RQCTSWUK.js.map → test-COWPCGBE.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{test-3EGNS3T5.js.map → test-FDQZQNZ4.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{test-runs-GN3C6GOI.js.map → test-runs-JS6DNCCI.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{test-runs-AJHR6IQF.js.map → test-runs-NZD2QGL5.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{update-6YXOGHRT.js.map → update-7IYQHX4Q.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{update-V33YUBRP.js.map → update-IJKDRBIX.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{update-many-RYQ64CFW.js.map → update-many-6NTZ5J5D.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{update-many-N2AN6ZDH.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,243 +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] = "3abac9c3-3fc0-575e-8f5d-d2624fe7a20c");
|
|
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
|
-
// `node --test` runs the colocated *.test.js sample against the peer SDK
|
|
1232
|
-
// testing helpers; no extra dev-dependency or test runner is required.
|
|
1233
|
-
scripts: {
|
|
1234
|
-
test: "node --test"
|
|
1235
|
-
},
|
|
1236
|
-
peerDependencies: {
|
|
1237
|
-
"@unbrained/pm-cli": "*"
|
|
1238
|
-
},
|
|
1239
|
-
pm: {
|
|
1240
|
-
aliases: [extensionName],
|
|
1241
|
-
extensions: ["."],
|
|
1242
|
-
docs: ["README.md"],
|
|
1243
|
-
examples: ["README.md"],
|
|
1244
|
-
catalog: {
|
|
1245
|
-
display_name: extensionName,
|
|
1246
|
-
category: "workflow",
|
|
1247
|
-
summary: "Starter pm package scaffold.",
|
|
1248
|
-
tags: ["starter"]
|
|
1249
|
-
}
|
|
1250
|
-
}
|
|
1251
|
-
}, null, 2)}
|
|
1252
|
-
`;
|
|
1253
|
-
const sampleTest = [
|
|
1254
|
-
'import assert from "node:assert/strict";',
|
|
1255
|
-
'import { test } from "node:test";',
|
|
1256
|
-
'import { activateExtensionForTest, assertRegisteredCommandContract } from "@unbrained/pm-cli/sdk/testing";',
|
|
1257
|
-
'import extension from "./index.js";',
|
|
1258
|
-
"",
|
|
1259
|
-
`test(${JSON.stringify(`${extensionName} registers its starter command`)}, async () => {`,
|
|
1260
|
-
" // `capabilities` mirrors manifest.json so the in-memory activation grants",
|
|
1261
|
-
" // the `commands` capability the entrypoint relies on.",
|
|
1262
|
-
" const activation = await activateExtensionForTest(extension, {",
|
|
1263
|
-
` name: ${JSON.stringify(extensionName)},`,
|
|
1264
|
-
' capabilities: ["commands"],',
|
|
1265
|
-
" });",
|
|
1266
|
-
" // assertRegisteredCommandContract throws if the command is not",
|
|
1267
|
-
" // registered, so reaching here already proves the wiring; assert on the",
|
|
1268
|
-
" // returned definition to demonstrate inspecting registered metadata.",
|
|
1269
|
-
" const registered = assertRegisteredCommandContract(activation.registrations, {",
|
|
1270
|
-
` command: ${JSON.stringify(commandName)},`,
|
|
1271
|
-
` extensionName: ${JSON.stringify(extensionName)},`,
|
|
1272
|
-
" });",
|
|
1273
|
-
' assert.equal(typeof registered.command.description, "string");',
|
|
1274
|
-
"});",
|
|
1275
|
-
""
|
|
1276
|
-
].join("\n");
|
|
1277
|
-
const gitignore = ["node_modules/", "*.log", ""].join("\n");
|
|
1278
|
-
const packageReadme = [
|
|
1279
|
-
`# ${packageName}`,
|
|
1280
|
-
"",
|
|
1281
|
-
"Generated by `pm package init`.",
|
|
1282
|
-
"",
|
|
1283
|
-
"## Included Files",
|
|
1284
|
-
"- `package.json`: package metadata, `test` script, and `pm` resource manifest.",
|
|
1285
|
-
"- `manifest.json`: extension metadata and capabilities.",
|
|
1286
|
-
"- `index.js`: starter command registration using the `commands` capability.",
|
|
1287
|
-
"- `index.test.js`: sample `node:test` suite using the SDK testing helpers.",
|
|
1288
|
-
"- `.gitignore`: ignores `node_modules/` and log files.",
|
|
1289
|
-
"",
|
|
1290
|
-
"## Quick Start",
|
|
1291
|
-
"```bash",
|
|
1292
|
-
"pm install --project <package-path>",
|
|
1293
|
-
`pm ${commandName}`,
|
|
1294
|
-
"pm package doctor --project --detail summary",
|
|
1295
|
-
"```",
|
|
1296
|
-
"",
|
|
1297
|
-
"## Validate the Package",
|
|
1298
|
-
"Install the peer SDK once, then run the colocated sample test:",
|
|
1299
|
-
"```bash",
|
|
1300
|
-
"npm install",
|
|
1301
|
-
"npm test",
|
|
1302
|
-
"```",
|
|
1303
|
-
"`npm test` runs `node --test`, which executes `index.test.js` against the",
|
|
1304
|
-
"`@unbrained/pm-cli/sdk/testing` helpers \u2014 no extra test runner required.",
|
|
1305
|
-
"",
|
|
1306
|
-
"## Compatibility Bounds",
|
|
1307
|
-
"`manifest.json` cannot hold comments, so the version-compatibility fields are documented here:",
|
|
1308
|
-
`- \`manifest_version\` (integer): manifest schema generation. Leave at \`${SCAFFOLD_MANIFEST_VERSION}\` unless you adopt a newer manifest schema.`,
|
|
1309
|
-
`- \`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.`,
|
|
1310
|
-
"- `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.",
|
|
1311
|
-
"",
|
|
1312
|
-
"## Notes",
|
|
1313
|
-
"- Keep simple starter runtime behavior at the package root so local installs work without dependency bootstrapping.",
|
|
1314
|
-
"- Move larger runtimes into subdirectories only after adding package dependencies and validating `pm package doctor`.",
|
|
1315
|
-
"- Add capabilities to the extension manifest only when the entrypoint uses the matching SDK API.",
|
|
1316
|
-
"- Use `@unbrained/pm-cli/sdk` as the public SDK import for richer package runtimes.",
|
|
1317
|
-
""
|
|
1318
|
-
].join("\n");
|
|
1319
|
-
return {
|
|
1320
|
-
"package.json": packageJson,
|
|
1321
|
-
"manifest.json": manifest,
|
|
1322
|
-
"index.js": entrypoint,
|
|
1323
|
-
"index.test.js": sampleTest,
|
|
1324
|
-
".gitignore": gitignore,
|
|
1325
|
-
"README.md": packageReadme
|
|
1326
|
-
};
|
|
1327
|
-
}
|
|
1328
|
-
const readme = [
|
|
1329
|
-
`# ${extensionName}`,
|
|
1330
|
-
"",
|
|
1331
|
-
"Generated by `pm extension init`.",
|
|
1332
|
-
"",
|
|
1333
|
-
"## Included Files",
|
|
1334
|
-
"- `manifest.json`: extension metadata and capabilities.",
|
|
1335
|
-
"- `index.js`: starter command registration using the `commands` capability.",
|
|
1336
|
-
"",
|
|
1337
|
-
"## Quick Start",
|
|
1338
|
-
"```bash",
|
|
1339
|
-
"pm extension --install --project <scaffold-path>",
|
|
1340
|
-
`pm ${commandName}`,
|
|
1341
|
-
"pm extension --doctor --project --detail summary",
|
|
1342
|
-
"```",
|
|
1343
|
-
"",
|
|
1344
|
-
"## Compatibility Bounds",
|
|
1345
|
-
"`manifest.json` cannot hold comments, so the version-compatibility fields are documented here:",
|
|
1346
|
-
`- \`manifest_version\` (integer): manifest schema generation. Leave at \`${SCAFFOLD_MANIFEST_VERSION}\` unless you adopt a newer manifest schema.`,
|
|
1347
|
-
`- \`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.`,
|
|
1348
|
-
"- `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.",
|
|
1349
|
-
"",
|
|
1350
|
-
"## Notes",
|
|
1351
|
-
"- This scaffold uses ESM exports so it works in package scopes with `type: module`.",
|
|
1352
|
-
"- Update `manifest.json` capabilities and `index.js` command behavior as your extension evolves.",
|
|
1353
|
-
""
|
|
1354
|
-
].join("\n");
|
|
1355
|
-
return {
|
|
1356
|
-
"manifest.json": manifest,
|
|
1357
|
-
"index.js": entrypoint,
|
|
1358
|
-
"README.md": readme
|
|
1359
|
-
};
|
|
1360
|
-
}
|
|
1361
|
-
async function scaffoldExtensionProject(target, vocabulary = "extension") {
|
|
1362
|
-
const normalizedTarget = target.trim();
|
|
1363
|
-
const targetPath = path5.resolve(process.cwd(), normalizedTarget);
|
|
1364
|
-
const extensionName = normalizeManagedDirectoryName(path5.basename(targetPath));
|
|
1365
|
-
const commandName = `${extensionName} ping`;
|
|
1366
|
-
const scaffoldFiles = buildStarterExtensionScaffoldFiles(extensionName, commandName, vocabulary);
|
|
1367
|
-
let createdDirectory = false;
|
|
1368
|
-
if (await pathExists(targetPath)) {
|
|
1369
|
-
const existingTargetStats = await fs5.stat(targetPath);
|
|
1370
|
-
if (!existingTargetStats.isDirectory()) {
|
|
1371
|
-
throw new PmCliError(`Scaffold target "${targetPath}" exists and is not a directory.`, EXIT_CODE.CONFLICT);
|
|
1372
|
-
}
|
|
1373
|
-
} else {
|
|
1374
|
-
await fs5.mkdir(targetPath, { recursive: true });
|
|
1375
|
-
createdDirectory = true;
|
|
1376
|
-
}
|
|
1377
|
-
for (const [relativePath, content] of Object.entries(scaffoldFiles)) {
|
|
1378
|
-
const absolutePath = path5.join(targetPath, relativePath);
|
|
1379
|
-
if (!await pathExists(absolutePath)) {
|
|
1380
|
-
continue;
|
|
1381
|
-
}
|
|
1382
|
-
const existingContent = await fs5.readFile(absolutePath, "utf8");
|
|
1383
|
-
if (existingContent !== content) {
|
|
1384
|
-
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);
|
|
1385
|
-
}
|
|
1386
|
-
}
|
|
1387
|
-
const files = [];
|
|
1388
|
-
for (const [relativePath, content] of Object.entries(scaffoldFiles)) {
|
|
1389
|
-
const absolutePath = path5.join(targetPath, relativePath);
|
|
1390
|
-
if (await pathExists(absolutePath)) {
|
|
1391
|
-
files.push({
|
|
1392
|
-
path: relativePath,
|
|
1393
|
-
status: "unchanged"
|
|
1394
|
-
});
|
|
1395
|
-
continue;
|
|
1396
|
-
}
|
|
1397
|
-
await fs5.mkdir(path5.dirname(absolutePath), { recursive: true });
|
|
1398
|
-
await fs5.writeFile(absolutePath, content, "utf8");
|
|
1399
|
-
files.push({
|
|
1400
|
-
path: relativePath,
|
|
1401
|
-
status: "created"
|
|
1402
|
-
});
|
|
1403
|
-
}
|
|
1404
|
-
return {
|
|
1405
|
-
extension_name: extensionName,
|
|
1406
|
-
command_name: commandName,
|
|
1407
|
-
target_path: targetPath,
|
|
1408
|
-
created_directory: createdDirectory,
|
|
1409
|
-
files
|
|
1410
|
-
};
|
|
1411
|
-
}
|
|
1412
|
-
|
|
1413
1185
|
// dist/cli/commands/extension/doctor.js
|
|
1414
1186
|
!(function() {
|
|
1415
1187
|
try {
|
|
1416
1188
|
var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}, n = new e.Error().stack;
|
|
1417
|
-
n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "
|
|
1189
|
+
n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "52b725dc-48e3-5436-8136-47e5314b07eb");
|
|
1418
1190
|
} catch (e2) {
|
|
1419
1191
|
}
|
|
1420
1192
|
})();
|
|
@@ -1661,6 +1433,15 @@ function classifyDoctorActivationFailureWarnings(activationFailures = []) {
|
|
|
1661
1433
|
}
|
|
1662
1434
|
return [...new Set(warnings)].sort((left, right) => left.localeCompare(right));
|
|
1663
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
|
+
}
|
|
1664
1445
|
function buildExtensionTriageSummary(scope, warnings, extensions, options = {}) {
|
|
1665
1446
|
const normalizedWarnings = [...new Set(warnings)].sort((left, right) => left.localeCompare(right));
|
|
1666
1447
|
const managedTotal = extensions.filter((entry) => entry.managed).length;
|
|
@@ -1711,6 +1492,9 @@ function buildExtensionTriageSummary(scope, warnings, extensions, options = {})
|
|
|
1711
1492
|
if (normalizedWarnings.some((warning) => warning.startsWith("extension_capability_missing:"))) {
|
|
1712
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.`);
|
|
1713
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
|
+
}
|
|
1714
1498
|
if (normalizedWarnings.some((warning) => warning.startsWith("extension_command_definition_legacy_handler_alias:"))) {
|
|
1715
1499
|
remediation.push("Extension command definitions using legacy handler were auto-remapped. Update command definitions to use run: (context) => ... for forward compatibility.");
|
|
1716
1500
|
}
|
|
@@ -1872,7 +1656,7 @@ function buildDoctorConsistencySummary(scope, installedExtensions, loadedExtensi
|
|
|
1872
1656
|
!(function() {
|
|
1873
1657
|
try {
|
|
1874
1658
|
var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}, n = new e.Error().stack;
|
|
1875
|
-
n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "
|
|
1659
|
+
n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "1402dcb1-4fe9-5ec7-a34f-990b54437d1e");
|
|
1876
1660
|
} catch (e2) {
|
|
1877
1661
|
}
|
|
1878
1662
|
})();
|
|
@@ -1952,11 +1736,11 @@ function sleep(ms) {
|
|
|
1952
1736
|
setTimeout(resolve, ms);
|
|
1953
1737
|
});
|
|
1954
1738
|
}
|
|
1955
|
-
async function copyExtensionDirectoryForInstall(sourceDirectory, destinationDirectory, copyDirectory =
|
|
1739
|
+
async function copyExtensionDirectoryForInstall(sourceDirectory, destinationDirectory, copyDirectory = fs5.cp) {
|
|
1956
1740
|
for (let attempt = 1; attempt <= EXTENSION_INSTALL_COPY_ATTEMPTS; attempt += 1) {
|
|
1957
1741
|
try {
|
|
1958
1742
|
if (await pathExists(destinationDirectory)) {
|
|
1959
|
-
await
|
|
1743
|
+
await fs5.rm(destinationDirectory, { recursive: true, force: true });
|
|
1960
1744
|
}
|
|
1961
1745
|
await copyExtensionDirectoryWithoutSelfNesting(sourceDirectory, destinationDirectory, copyDirectory);
|
|
1962
1746
|
return;
|
|
@@ -1969,8 +1753,8 @@ async function copyExtensionDirectoryForInstall(sourceDirectory, destinationDire
|
|
|
1969
1753
|
}
|
|
1970
1754
|
}
|
|
1971
1755
|
async function copyExtensionDirectoryWithoutSelfNesting(sourceDirectory, destinationDirectory, copyDirectory) {
|
|
1972
|
-
const resolvedSource =
|
|
1973
|
-
const resolvedDestination =
|
|
1756
|
+
const resolvedSource = path5.resolve(sourceDirectory);
|
|
1757
|
+
const resolvedDestination = path5.resolve(destinationDirectory);
|
|
1974
1758
|
if (resolvedSource === resolvedDestination) {
|
|
1975
1759
|
return;
|
|
1976
1760
|
}
|
|
@@ -1978,28 +1762,28 @@ async function copyExtensionDirectoryWithoutSelfNesting(sourceDirectory, destina
|
|
|
1978
1762
|
await copyDirectory(sourceDirectory, destinationDirectory, { recursive: true, force: true });
|
|
1979
1763
|
return;
|
|
1980
1764
|
}
|
|
1981
|
-
const stagingRoot = await
|
|
1982
|
-
const stagedDirectory =
|
|
1765
|
+
const stagingRoot = await fs5.mkdtemp(path5.join(os2.tmpdir(), "pm-extension-copy-"));
|
|
1766
|
+
const stagedDirectory = path5.join(stagingRoot, "extension");
|
|
1983
1767
|
try {
|
|
1984
1768
|
await copyDirectory(sourceDirectory, stagedDirectory, { recursive: true, force: true });
|
|
1985
1769
|
await copyDirectory(stagedDirectory, destinationDirectory, { recursive: true, force: true });
|
|
1986
1770
|
} finally {
|
|
1987
|
-
await
|
|
1771
|
+
await fs5.rm(stagingRoot, { recursive: true, force: true });
|
|
1988
1772
|
}
|
|
1989
1773
|
}
|
|
1990
1774
|
async function withExtensionInstallLock(settingsRoot, destinationDirectoryName, run, options) {
|
|
1991
|
-
const lockRoot =
|
|
1992
|
-
const lockPath =
|
|
1993
|
-
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 });
|
|
1994
1778
|
const attempts = Math.max(1, Math.floor(options?.attempts ?? EXTENSION_INSTALL_LOCK_ATTEMPTS));
|
|
1995
1779
|
const delayMs = Math.max(0, Math.floor(options?.delay_ms ?? EXTENSION_INSTALL_LOCK_DELAY_MS));
|
|
1996
1780
|
const staleMs = Math.max(0, Math.floor(options?.stale_ms ?? EXTENSION_INSTALL_LOCK_STALE_MS));
|
|
1997
1781
|
let acquired = false;
|
|
1998
1782
|
for (let attempt = 1; attempt <= attempts; attempt += 1) {
|
|
1999
1783
|
try {
|
|
2000
|
-
await
|
|
1784
|
+
await fs5.mkdir(lockPath);
|
|
2001
1785
|
acquired = true;
|
|
2002
|
-
await
|
|
1786
|
+
await fs5.writeFile(path5.join(lockPath, "owner.json"), `${JSON.stringify({ pid: process.pid, created_at: nowIso(), destination: destinationDirectoryName }, null, 2)}
|
|
2003
1787
|
`, "utf8");
|
|
2004
1788
|
break;
|
|
2005
1789
|
} catch (error) {
|
|
@@ -2008,12 +1792,12 @@ async function withExtensionInstallLock(settingsRoot, destinationDirectoryName,
|
|
|
2008
1792
|
}
|
|
2009
1793
|
let stat = null;
|
|
2010
1794
|
try {
|
|
2011
|
-
stat = await
|
|
1795
|
+
stat = await fs5.stat(lockPath);
|
|
2012
1796
|
} catch {
|
|
2013
1797
|
stat = null;
|
|
2014
1798
|
}
|
|
2015
1799
|
if (stat && Date.now() - stat.mtimeMs > staleMs) {
|
|
2016
|
-
await
|
|
1800
|
+
await fs5.rm(lockPath, { recursive: true, force: true });
|
|
2017
1801
|
continue;
|
|
2018
1802
|
}
|
|
2019
1803
|
await sleep(delayMs);
|
|
@@ -2025,7 +1809,7 @@ async function withExtensionInstallLock(settingsRoot, destinationDirectoryName,
|
|
|
2025
1809
|
try {
|
|
2026
1810
|
return await run();
|
|
2027
1811
|
} finally {
|
|
2028
|
-
await
|
|
1812
|
+
await fs5.rm(lockPath, { recursive: true, force: true }).catch(() => void 0);
|
|
2029
1813
|
}
|
|
2030
1814
|
}
|
|
2031
1815
|
async function resolveInstalledExtensionCandidate(installed, extensionTarget) {
|
|
@@ -2203,7 +1987,7 @@ async function listInstalledExtensions(extensionsRoot, scope, settings, state) {
|
|
|
2203
1987
|
warnings: []
|
|
2204
1988
|
};
|
|
2205
1989
|
}
|
|
2206
|
-
const entries = await
|
|
1990
|
+
const entries = await fs5.readdir(extensionsRoot, { withFileTypes: true });
|
|
2207
1991
|
const directories = entries.filter((entry) => entry.isDirectory()).map((entry) => entry.name).sort((left, right) => left.localeCompare(right));
|
|
2208
1992
|
const managedByName = /* @__PURE__ */ new Map();
|
|
2209
1993
|
const managedByDirectory = /* @__PURE__ */ new Map();
|
|
@@ -2214,8 +1998,8 @@ async function listInstalledExtensions(extensionsRoot, scope, settings, state) {
|
|
|
2214
1998
|
const warnings = [];
|
|
2215
1999
|
const summaries = [];
|
|
2216
2000
|
for (const directoryName of directories) {
|
|
2217
|
-
const extensionDirectory =
|
|
2218
|
-
const manifestPath =
|
|
2001
|
+
const extensionDirectory = path5.join(extensionsRoot, directoryName);
|
|
2002
|
+
const manifestPath = path5.join(extensionDirectory, "manifest.json");
|
|
2219
2003
|
if (!await pathExists(manifestPath)) {
|
|
2220
2004
|
warnings.push(`extension_manifest_missing:${scope}:${directoryName}`);
|
|
2221
2005
|
const managedEntry2 = managedByDirectory.get(normalizeExtensionNameForMatch(directoryName));
|
|
@@ -2244,7 +2028,7 @@ async function listInstalledExtensions(extensionsRoot, scope, settings, state) {
|
|
|
2244
2028
|
}
|
|
2245
2029
|
let rawManifest;
|
|
2246
2030
|
try {
|
|
2247
|
-
rawManifest = JSON.parse(await
|
|
2031
|
+
rawManifest = JSON.parse(await fs5.readFile(manifestPath, "utf8"));
|
|
2248
2032
|
} catch {
|
|
2249
2033
|
warnings.push(`extension_manifest_invalid_json:${scope}:${directoryName}`);
|
|
2250
2034
|
continue;
|
|
@@ -2421,7 +2205,7 @@ async function adoptUnmanagedExtensions(extensionsRoot, scope, installedExtensio
|
|
|
2421
2205
|
let nextState = state;
|
|
2422
2206
|
const adoptedEntries = [];
|
|
2423
2207
|
for (const candidate of sortedCandidates) {
|
|
2424
|
-
const extensionDirectory =
|
|
2208
|
+
const extensionDirectory = path5.join(extensionsRoot, candidate.directory);
|
|
2425
2209
|
const validated = await validateExtensionDirectory(extensionDirectory);
|
|
2426
2210
|
const now = nowIso();
|
|
2427
2211
|
const sourceRecord = {
|
|
@@ -2523,6 +2307,9 @@ async function runExtension(target, options, global2) {
|
|
|
2523
2307
|
if (options.fixManagedState === true && action !== "manage" && action !== "doctor") {
|
|
2524
2308
|
throw new PmCliError("--fix-managed-state is only valid with --manage or --doctor.", EXIT_CODE.USAGE);
|
|
2525
2309
|
}
|
|
2310
|
+
if (options.capability !== void 0 && action !== "init") {
|
|
2311
|
+
throw new PmCliError("--capability is only valid with --init/--scaffold.", EXIT_CODE.USAGE);
|
|
2312
|
+
}
|
|
2526
2313
|
const normalizedTarget = (() => {
|
|
2527
2314
|
const normalizedInput = target?.trim().toLowerCase();
|
|
2528
2315
|
if (action === "doctor" && normalizedInput === "doctor") {
|
|
@@ -2577,7 +2364,7 @@ async function runExtension(target, options, global2) {
|
|
|
2577
2364
|
throw new PmCliError('Action "init" does not accept --gh/--github/--ref options.', EXIT_CODE.USAGE);
|
|
2578
2365
|
}
|
|
2579
2366
|
const scaffoldTarget = requireTarget(normalizedTarget, action);
|
|
2580
|
-
const scaffold = await scaffoldExtensionProject(scaffoldTarget, options.vocabulary ?? "extension");
|
|
2367
|
+
const scaffold = await scaffoldExtensionProject(scaffoldTarget, options.vocabulary ?? "extension", options.capability);
|
|
2581
2368
|
const quotedTargetPath = JSON.stringify(scaffold.target_path);
|
|
2582
2369
|
const quotedShellTargetPath = JSON.stringify(scaffold.target_path.replace(/\\/g, "/"));
|
|
2583
2370
|
return withResult({
|
|
@@ -2586,6 +2373,7 @@ async function runExtension(target, options, global2) {
|
|
|
2586
2373
|
name: scaffold.extension_name,
|
|
2587
2374
|
command: scaffold.command_name
|
|
2588
2375
|
},
|
|
2376
|
+
capability: scaffold.capability,
|
|
2589
2377
|
target_path: scaffold.target_path,
|
|
2590
2378
|
created_directory: scaffold.created_directory,
|
|
2591
2379
|
files: scaffold.files,
|
|
@@ -2702,10 +2490,10 @@ async function runExtension(target, options, global2) {
|
|
|
2702
2490
|
const settings = await readSettings(resolvedRoots.settings_root);
|
|
2703
2491
|
const managedStateRead = await readManagedExtensionState(resolvedRoots.selected_root);
|
|
2704
2492
|
warnings.push(...managedStateRead.warnings);
|
|
2705
|
-
const destinationDirectory =
|
|
2493
|
+
const destinationDirectory = path5.join(resolvedRoots.selected_root, destinationDirectoryName);
|
|
2706
2494
|
const destinationExists = await pathExists(destinationDirectory);
|
|
2707
2495
|
const installInPlace = await areDirectoriesEquivalent(validated.directory, destinationDirectory);
|
|
2708
|
-
await
|
|
2496
|
+
await fs5.mkdir(resolvedRoots.selected_root, { recursive: true });
|
|
2709
2497
|
if (!installInPlace) {
|
|
2710
2498
|
await copyExtensionDirectoryForInstall(validated.directory, destinationDirectory);
|
|
2711
2499
|
}
|
|
@@ -2852,7 +2640,7 @@ async function runExtension(target, options, global2) {
|
|
|
2852
2640
|
}
|
|
2853
2641
|
});
|
|
2854
2642
|
}
|
|
2855
|
-
const extensionDirectory =
|
|
2643
|
+
const extensionDirectory = path5.join(resolvedRoots.selected_root, candidate.directory);
|
|
2856
2644
|
const validated = await validateExtensionDirectory(extensionDirectory);
|
|
2857
2645
|
const now = nowIso();
|
|
2858
2646
|
const sourceRecord = githubOption === void 0 ? {
|
|
@@ -2917,8 +2705,8 @@ async function runExtension(target, options, global2) {
|
|
|
2917
2705
|
if (!candidate) {
|
|
2918
2706
|
throw new PmCliError(`Installed extension "${extensionTarget}" was not found in ${scope} scope.`, EXIT_CODE.NOT_FOUND);
|
|
2919
2707
|
}
|
|
2920
|
-
const destinationDirectory =
|
|
2921
|
-
await
|
|
2708
|
+
const destinationDirectory = path5.join(resolvedRoots.selected_root, candidate.directory);
|
|
2709
|
+
await fs5.rm(destinationDirectory, { recursive: true, force: true });
|
|
2922
2710
|
const updatedState = {
|
|
2923
2711
|
...managedStateRead.state,
|
|
2924
2712
|
updated_at: nowIso(),
|
|
@@ -3004,6 +2792,7 @@ async function runExtension(target, options, global2) {
|
|
|
3004
2792
|
warnings.push(...classifyDoctorLoadFailureWarnings(loadResult.failed));
|
|
3005
2793
|
warnings.push(...activationResult.warnings);
|
|
3006
2794
|
warnings.push(...classifyDoctorActivationFailureWarnings(activationResult.failed));
|
|
2795
|
+
warnings.push(...classifyUnusedCapabilityWarnings(loadResult, activationResult));
|
|
3007
2796
|
warnings.push(...collectGlobalOutputOverrideDoctorWarnings(activationResult));
|
|
3008
2797
|
const runtimeInstalledExtensions = applyDoctorRuntimeActivationState(refreshedInstalled.extensions, loadResult, activationResult);
|
|
3009
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);
|
|
@@ -3321,4 +3110,4 @@ export {
|
|
|
3321
3110
|
runExtension,
|
|
3322
3111
|
_testOnly
|
|
3323
3112
|
};
|
|
3324
|
-
//# sourceMappingURL=chunk-
|
|
3113
|
+
//# sourceMappingURL=chunk-7GCCDXXN.js.map
|