@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,18 +1,21 @@
|
|
|
1
1
|
|
|
2
|
-
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="
|
|
2
|
+
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="5b87215b-bb14-5510-af50-0d572df794ca")}catch(e){}}();
|
|
3
|
+
import {
|
|
4
|
+
scaffoldExtensionProject
|
|
5
|
+
} from "./chunk-3GL6LTUL.js";
|
|
3
6
|
import {
|
|
4
7
|
normalizeExtensionNameForMatch,
|
|
5
8
|
normalizeManagedDirectoryName,
|
|
6
9
|
normalizeStringList,
|
|
7
10
|
parseExtensionManifest,
|
|
8
11
|
validateExtensionDirectory
|
|
9
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-DMT4ODVN.js";
|
|
10
13
|
import {
|
|
11
14
|
splitCommaList
|
|
12
15
|
} from "./chunk-P4SESZGT.js";
|
|
13
16
|
import {
|
|
14
17
|
nowIso
|
|
15
|
-
} from "./chunk-
|
|
18
|
+
} from "./chunk-PCH2JTEO.js";
|
|
16
19
|
import {
|
|
17
20
|
EXIT_CODE,
|
|
18
21
|
EXTENSION_CAPABILITY_CONTRACT,
|
|
@@ -26,18 +29,19 @@ import {
|
|
|
26
29
|
parseUnknownExtensionCapabilityWarning,
|
|
27
30
|
pathExists,
|
|
28
31
|
readSettings,
|
|
32
|
+
reconcileExtensionCapabilityUsage,
|
|
29
33
|
resolveExtensionRoots,
|
|
30
34
|
resolveGlobalPmRoot,
|
|
31
35
|
resolvePmPackageRootFromModule,
|
|
32
36
|
resolvePmRoot,
|
|
33
37
|
writeSettings
|
|
34
|
-
} from "./chunk-
|
|
38
|
+
} from "./chunk-KL5ELX2X.js";
|
|
35
39
|
|
|
36
40
|
// dist/cli/commands/extension.js
|
|
37
41
|
import { execFile as execFile2 } from "node:child_process";
|
|
38
|
-
import
|
|
42
|
+
import fs5 from "node:fs/promises";
|
|
39
43
|
import os2 from "node:os";
|
|
40
|
-
import
|
|
44
|
+
import path5 from "node:path";
|
|
41
45
|
import { promisify as promisify2 } from "node:util";
|
|
42
46
|
|
|
43
47
|
// dist/cli/commands/extension/managed-state.js
|
|
@@ -1152,231 +1156,6 @@ function projectPackageCatalogEntry(entry, fields) {
|
|
|
1152
1156
|
return projected;
|
|
1153
1157
|
}
|
|
1154
1158
|
|
|
1155
|
-
// dist/cli/commands/extension/scaffold.js
|
|
1156
|
-
import fs5 from "node:fs/promises";
|
|
1157
|
-
import path5 from "node:path";
|
|
1158
|
-
var SCAFFOLD_MANIFEST_VERSION = 1;
|
|
1159
|
-
var SCAFFOLD_PM_MIN_VERSION = "2026.5.0";
|
|
1160
|
-
function buildStarterExtensionScaffoldFiles(extensionName, commandName, vocabulary) {
|
|
1161
|
-
const packageName = `pm-${extensionName}`;
|
|
1162
|
-
const manifest = `${JSON.stringify({
|
|
1163
|
-
name: extensionName,
|
|
1164
|
-
version: "0.1.0",
|
|
1165
|
-
entry: "./index.js",
|
|
1166
|
-
capabilities: ["commands"],
|
|
1167
|
-
manifest_version: SCAFFOLD_MANIFEST_VERSION,
|
|
1168
|
-
pm_min_version: SCAFFOLD_PM_MIN_VERSION
|
|
1169
|
-
}, null, 2)}
|
|
1170
|
-
`;
|
|
1171
|
-
const entrypoint = [
|
|
1172
|
-
'/** @param {import("@unbrained/pm-cli/sdk").ExtensionApi} api */',
|
|
1173
|
-
"export function activate(api) {",
|
|
1174
|
-
" api.registerCommand({",
|
|
1175
|
-
` name: ${JSON.stringify(commandName)},`,
|
|
1176
|
-
' description: "Starter scaffold command. Replace with your own behavior.",',
|
|
1177
|
-
" run: async (context) => ({",
|
|
1178
|
-
" ok: true,",
|
|
1179
|
-
` source: ${JSON.stringify(extensionName)},`,
|
|
1180
|
-
" command: context.command,",
|
|
1181
|
-
' message: "Starter extension scaffold is active.",',
|
|
1182
|
-
" }),",
|
|
1183
|
-
" });",
|
|
1184
|
-
"}",
|
|
1185
|
-
"",
|
|
1186
|
-
"export default {",
|
|
1187
|
-
" activate,",
|
|
1188
|
-
"};",
|
|
1189
|
-
""
|
|
1190
|
-
].join("\n");
|
|
1191
|
-
if (vocabulary === "package") {
|
|
1192
|
-
const packageJson = `${JSON.stringify({
|
|
1193
|
-
name: packageName,
|
|
1194
|
-
version: "0.1.0",
|
|
1195
|
-
private: true,
|
|
1196
|
-
type: "module",
|
|
1197
|
-
keywords: ["pm-package"],
|
|
1198
|
-
// `node --test` runs the colocated *.test.js sample against the peer SDK
|
|
1199
|
-
// testing helpers; no extra dev-dependency or test runner is required.
|
|
1200
|
-
scripts: {
|
|
1201
|
-
test: "node --test"
|
|
1202
|
-
},
|
|
1203
|
-
peerDependencies: {
|
|
1204
|
-
"@unbrained/pm-cli": "*"
|
|
1205
|
-
},
|
|
1206
|
-
pm: {
|
|
1207
|
-
aliases: [extensionName],
|
|
1208
|
-
extensions: ["."],
|
|
1209
|
-
docs: ["README.md"],
|
|
1210
|
-
examples: ["README.md"],
|
|
1211
|
-
catalog: {
|
|
1212
|
-
display_name: extensionName,
|
|
1213
|
-
category: "workflow",
|
|
1214
|
-
summary: "Starter pm package scaffold.",
|
|
1215
|
-
tags: ["starter"]
|
|
1216
|
-
}
|
|
1217
|
-
}
|
|
1218
|
-
}, null, 2)}
|
|
1219
|
-
`;
|
|
1220
|
-
const sampleTest = [
|
|
1221
|
-
'import assert from "node:assert/strict";',
|
|
1222
|
-
'import { test } from "node:test";',
|
|
1223
|
-
'import { activateExtensionForTest, assertRegisteredCommandContract } from "@unbrained/pm-cli/sdk/testing";',
|
|
1224
|
-
'import extension from "./index.js";',
|
|
1225
|
-
"",
|
|
1226
|
-
`test(${JSON.stringify(`${extensionName} registers its starter command`)}, async () => {`,
|
|
1227
|
-
" // `capabilities` mirrors manifest.json so the in-memory activation grants",
|
|
1228
|
-
" // the `commands` capability the entrypoint relies on.",
|
|
1229
|
-
" const activation = await activateExtensionForTest(extension, {",
|
|
1230
|
-
` name: ${JSON.stringify(extensionName)},`,
|
|
1231
|
-
' capabilities: ["commands"],',
|
|
1232
|
-
" });",
|
|
1233
|
-
" // assertRegisteredCommandContract throws if the command is not",
|
|
1234
|
-
" // registered, so reaching here already proves the wiring; assert on the",
|
|
1235
|
-
" // returned definition to demonstrate inspecting registered metadata.",
|
|
1236
|
-
" const registered = assertRegisteredCommandContract(activation.registrations, {",
|
|
1237
|
-
` command: ${JSON.stringify(commandName)},`,
|
|
1238
|
-
` extensionName: ${JSON.stringify(extensionName)},`,
|
|
1239
|
-
" });",
|
|
1240
|
-
' assert.equal(typeof registered.command.description, "string");',
|
|
1241
|
-
"});",
|
|
1242
|
-
""
|
|
1243
|
-
].join("\n");
|
|
1244
|
-
const gitignore = ["node_modules/", "*.log", ""].join("\n");
|
|
1245
|
-
const packageReadme = [
|
|
1246
|
-
`# ${packageName}`,
|
|
1247
|
-
"",
|
|
1248
|
-
"Generated by `pm package init`.",
|
|
1249
|
-
"",
|
|
1250
|
-
"## Included Files",
|
|
1251
|
-
"- `package.json`: package metadata, `test` script, and `pm` resource manifest.",
|
|
1252
|
-
"- `manifest.json`: extension metadata and capabilities.",
|
|
1253
|
-
"- `index.js`: starter command registration using the `commands` capability.",
|
|
1254
|
-
"- `index.test.js`: sample `node:test` suite using the SDK testing helpers.",
|
|
1255
|
-
"- `.gitignore`: ignores `node_modules/` and log files.",
|
|
1256
|
-
"",
|
|
1257
|
-
"## Quick Start",
|
|
1258
|
-
"```bash",
|
|
1259
|
-
"pm install --project <package-path>",
|
|
1260
|
-
`pm ${commandName}`,
|
|
1261
|
-
"pm package doctor --project --detail summary",
|
|
1262
|
-
"```",
|
|
1263
|
-
"",
|
|
1264
|
-
"## Validate the Package",
|
|
1265
|
-
"Install the peer SDK once, then run the colocated sample test:",
|
|
1266
|
-
"```bash",
|
|
1267
|
-
"npm install",
|
|
1268
|
-
"npm test",
|
|
1269
|
-
"```",
|
|
1270
|
-
"`npm test` runs `node --test`, which executes `index.test.js` against the",
|
|
1271
|
-
"`@unbrained/pm-cli/sdk/testing` helpers \u2014 no extra test runner required.",
|
|
1272
|
-
"",
|
|
1273
|
-
"## Compatibility Bounds",
|
|
1274
|
-
"`manifest.json` cannot hold comments, so the version-compatibility fields are documented here:",
|
|
1275
|
-
`- \`manifest_version\` (integer): manifest schema generation. Leave at \`${SCAFFOLD_MANIFEST_VERSION}\` unless you adopt a newer manifest schema.`,
|
|
1276
|
-
`- \`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.`,
|
|
1277
|
-
"- `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.",
|
|
1278
|
-
"",
|
|
1279
|
-
"## Notes",
|
|
1280
|
-
"- Keep simple starter runtime behavior at the package root so local installs work without dependency bootstrapping.",
|
|
1281
|
-
"- Move larger runtimes into subdirectories only after adding package dependencies and validating `pm package doctor`.",
|
|
1282
|
-
"- Add capabilities to the extension manifest only when the entrypoint uses the matching SDK API.",
|
|
1283
|
-
"- Use `@unbrained/pm-cli/sdk` as the public SDK import for richer package runtimes.",
|
|
1284
|
-
""
|
|
1285
|
-
].join("\n");
|
|
1286
|
-
return {
|
|
1287
|
-
"package.json": packageJson,
|
|
1288
|
-
"manifest.json": manifest,
|
|
1289
|
-
"index.js": entrypoint,
|
|
1290
|
-
"index.test.js": sampleTest,
|
|
1291
|
-
".gitignore": gitignore,
|
|
1292
|
-
"README.md": packageReadme
|
|
1293
|
-
};
|
|
1294
|
-
}
|
|
1295
|
-
const readme = [
|
|
1296
|
-
`# ${extensionName}`,
|
|
1297
|
-
"",
|
|
1298
|
-
"Generated by `pm extension init`.",
|
|
1299
|
-
"",
|
|
1300
|
-
"## Included Files",
|
|
1301
|
-
"- `manifest.json`: extension metadata and capabilities.",
|
|
1302
|
-
"- `index.js`: starter command registration using the `commands` capability.",
|
|
1303
|
-
"",
|
|
1304
|
-
"## Quick Start",
|
|
1305
|
-
"```bash",
|
|
1306
|
-
"pm extension --install --project <scaffold-path>",
|
|
1307
|
-
`pm ${commandName}`,
|
|
1308
|
-
"pm extension --doctor --project --detail summary",
|
|
1309
|
-
"```",
|
|
1310
|
-
"",
|
|
1311
|
-
"## Compatibility Bounds",
|
|
1312
|
-
"`manifest.json` cannot hold comments, so the version-compatibility fields are documented here:",
|
|
1313
|
-
`- \`manifest_version\` (integer): manifest schema generation. Leave at \`${SCAFFOLD_MANIFEST_VERSION}\` unless you adopt a newer manifest schema.`,
|
|
1314
|
-
`- \`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.`,
|
|
1315
|
-
"- `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.",
|
|
1316
|
-
"",
|
|
1317
|
-
"## Notes",
|
|
1318
|
-
"- This scaffold uses ESM exports so it works in package scopes with `type: module`.",
|
|
1319
|
-
"- Update `manifest.json` capabilities and `index.js` command behavior as your extension evolves.",
|
|
1320
|
-
""
|
|
1321
|
-
].join("\n");
|
|
1322
|
-
return {
|
|
1323
|
-
"manifest.json": manifest,
|
|
1324
|
-
"index.js": entrypoint,
|
|
1325
|
-
"README.md": readme
|
|
1326
|
-
};
|
|
1327
|
-
}
|
|
1328
|
-
async function scaffoldExtensionProject(target, vocabulary = "extension") {
|
|
1329
|
-
const normalizedTarget = target.trim();
|
|
1330
|
-
const targetPath = path5.resolve(process.cwd(), normalizedTarget);
|
|
1331
|
-
const extensionName = normalizeManagedDirectoryName(path5.basename(targetPath));
|
|
1332
|
-
const commandName = `${extensionName} ping`;
|
|
1333
|
-
const scaffoldFiles = buildStarterExtensionScaffoldFiles(extensionName, commandName, vocabulary);
|
|
1334
|
-
let createdDirectory = false;
|
|
1335
|
-
if (await pathExists(targetPath)) {
|
|
1336
|
-
const existingTargetStats = await fs5.stat(targetPath);
|
|
1337
|
-
if (!existingTargetStats.isDirectory()) {
|
|
1338
|
-
throw new PmCliError(`Scaffold target "${targetPath}" exists and is not a directory.`, EXIT_CODE.CONFLICT);
|
|
1339
|
-
}
|
|
1340
|
-
} else {
|
|
1341
|
-
await fs5.mkdir(targetPath, { recursive: true });
|
|
1342
|
-
createdDirectory = true;
|
|
1343
|
-
}
|
|
1344
|
-
for (const [relativePath, content] of Object.entries(scaffoldFiles)) {
|
|
1345
|
-
const absolutePath = path5.join(targetPath, relativePath);
|
|
1346
|
-
if (!await pathExists(absolutePath)) {
|
|
1347
|
-
continue;
|
|
1348
|
-
}
|
|
1349
|
-
const existingContent = await fs5.readFile(absolutePath, "utf8");
|
|
1350
|
-
if (existingContent !== content) {
|
|
1351
|
-
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);
|
|
1352
|
-
}
|
|
1353
|
-
}
|
|
1354
|
-
const files = [];
|
|
1355
|
-
for (const [relativePath, content] of Object.entries(scaffoldFiles)) {
|
|
1356
|
-
const absolutePath = path5.join(targetPath, relativePath);
|
|
1357
|
-
if (await pathExists(absolutePath)) {
|
|
1358
|
-
files.push({
|
|
1359
|
-
path: relativePath,
|
|
1360
|
-
status: "unchanged"
|
|
1361
|
-
});
|
|
1362
|
-
continue;
|
|
1363
|
-
}
|
|
1364
|
-
await fs5.mkdir(path5.dirname(absolutePath), { recursive: true });
|
|
1365
|
-
await fs5.writeFile(absolutePath, content, "utf8");
|
|
1366
|
-
files.push({
|
|
1367
|
-
path: relativePath,
|
|
1368
|
-
status: "created"
|
|
1369
|
-
});
|
|
1370
|
-
}
|
|
1371
|
-
return {
|
|
1372
|
-
extension_name: extensionName,
|
|
1373
|
-
command_name: commandName,
|
|
1374
|
-
target_path: targetPath,
|
|
1375
|
-
created_directory: createdDirectory,
|
|
1376
|
-
files
|
|
1377
|
-
};
|
|
1378
|
-
}
|
|
1379
|
-
|
|
1380
1159
|
// dist/cli/commands/extension/doctor.js
|
|
1381
1160
|
function applyDoctorRuntimeActivationState(extensions, loadResult, activationResult) {
|
|
1382
1161
|
const loadedNames = new Set(loadResult.loaded.map((entry) => normalizeExtensionNameForMatch(entry.name)));
|
|
@@ -1621,6 +1400,15 @@ function classifyDoctorActivationFailureWarnings(activationFailures = []) {
|
|
|
1621
1400
|
}
|
|
1622
1401
|
return [...new Set(warnings)].sort((left, right) => left.localeCompare(right));
|
|
1623
1402
|
}
|
|
1403
|
+
function classifyUnusedCapabilityWarnings(loadResult, activationResult) {
|
|
1404
|
+
const warnings = [];
|
|
1405
|
+
for (const entry of reconcileExtensionCapabilityUsage(loadResult.loaded, activationResult)) {
|
|
1406
|
+
for (const capability of entry.unused) {
|
|
1407
|
+
warnings.push(`extension_capability_unused:${entry.layer}:${entry.name}:${capability}`);
|
|
1408
|
+
}
|
|
1409
|
+
}
|
|
1410
|
+
return [...new Set(warnings)].sort((left, right) => left.localeCompare(right));
|
|
1411
|
+
}
|
|
1624
1412
|
function buildExtensionTriageSummary(scope, warnings, extensions, options = {}) {
|
|
1625
1413
|
const normalizedWarnings = [...new Set(warnings)].sort((left, right) => left.localeCompare(right));
|
|
1626
1414
|
const managedTotal = extensions.filter((entry) => entry.managed).length;
|
|
@@ -1671,6 +1459,9 @@ function buildExtensionTriageSummary(scope, warnings, extensions, options = {})
|
|
|
1671
1459
|
if (normalizedWarnings.some((warning) => warning.startsWith("extension_capability_missing:"))) {
|
|
1672
1460
|
remediation.push(`Extension activation failed because code registered a surface missing from manifest capabilities. Run ${lifecycleFlagCommand(options, "doctor")} ${scopeFlag} --detail deep --trace and add the reported missing_capability to manifest.json before publishing.`);
|
|
1673
1461
|
}
|
|
1462
|
+
if (normalizedWarnings.some((warning) => warning.startsWith("extension_capability_unused:"))) {
|
|
1463
|
+
remediation.push(`Extension manifests declare capabilities that are never registered against. Remove each reported unused capability from manifest.json to keep least privilege, or add the matching registration. Run ${lifecycleFlagCommand(options, "doctor")} ${scopeFlag} --detail deep --trace for per-extension registration counts.`);
|
|
1464
|
+
}
|
|
1674
1465
|
if (normalizedWarnings.some((warning) => warning.startsWith("extension_command_definition_legacy_handler_alias:"))) {
|
|
1675
1466
|
remediation.push("Extension command definitions using legacy handler were auto-remapped. Update command definitions to use run: (context) => ... for forward compatibility.");
|
|
1676
1467
|
}
|
|
@@ -1905,11 +1696,11 @@ function sleep(ms) {
|
|
|
1905
1696
|
setTimeout(resolve, ms);
|
|
1906
1697
|
});
|
|
1907
1698
|
}
|
|
1908
|
-
async function copyExtensionDirectoryForInstall(sourceDirectory, destinationDirectory, copyDirectory =
|
|
1699
|
+
async function copyExtensionDirectoryForInstall(sourceDirectory, destinationDirectory, copyDirectory = fs5.cp) {
|
|
1909
1700
|
for (let attempt = 1; attempt <= EXTENSION_INSTALL_COPY_ATTEMPTS; attempt += 1) {
|
|
1910
1701
|
try {
|
|
1911
1702
|
if (await pathExists(destinationDirectory)) {
|
|
1912
|
-
await
|
|
1703
|
+
await fs5.rm(destinationDirectory, { recursive: true, force: true });
|
|
1913
1704
|
}
|
|
1914
1705
|
await copyExtensionDirectoryWithoutSelfNesting(sourceDirectory, destinationDirectory, copyDirectory);
|
|
1915
1706
|
return;
|
|
@@ -1922,8 +1713,8 @@ async function copyExtensionDirectoryForInstall(sourceDirectory, destinationDire
|
|
|
1922
1713
|
}
|
|
1923
1714
|
}
|
|
1924
1715
|
async function copyExtensionDirectoryWithoutSelfNesting(sourceDirectory, destinationDirectory, copyDirectory) {
|
|
1925
|
-
const resolvedSource =
|
|
1926
|
-
const resolvedDestination =
|
|
1716
|
+
const resolvedSource = path5.resolve(sourceDirectory);
|
|
1717
|
+
const resolvedDestination = path5.resolve(destinationDirectory);
|
|
1927
1718
|
if (resolvedSource === resolvedDestination) {
|
|
1928
1719
|
return;
|
|
1929
1720
|
}
|
|
@@ -1931,28 +1722,28 @@ async function copyExtensionDirectoryWithoutSelfNesting(sourceDirectory, destina
|
|
|
1931
1722
|
await copyDirectory(sourceDirectory, destinationDirectory, { recursive: true, force: true });
|
|
1932
1723
|
return;
|
|
1933
1724
|
}
|
|
1934
|
-
const stagingRoot = await
|
|
1935
|
-
const stagedDirectory =
|
|
1725
|
+
const stagingRoot = await fs5.mkdtemp(path5.join(os2.tmpdir(), "pm-extension-copy-"));
|
|
1726
|
+
const stagedDirectory = path5.join(stagingRoot, "extension");
|
|
1936
1727
|
try {
|
|
1937
1728
|
await copyDirectory(sourceDirectory, stagedDirectory, { recursive: true, force: true });
|
|
1938
1729
|
await copyDirectory(stagedDirectory, destinationDirectory, { recursive: true, force: true });
|
|
1939
1730
|
} finally {
|
|
1940
|
-
await
|
|
1731
|
+
await fs5.rm(stagingRoot, { recursive: true, force: true });
|
|
1941
1732
|
}
|
|
1942
1733
|
}
|
|
1943
1734
|
async function withExtensionInstallLock(settingsRoot, destinationDirectoryName, run, options) {
|
|
1944
|
-
const lockRoot =
|
|
1945
|
-
const lockPath =
|
|
1946
|
-
await
|
|
1735
|
+
const lockRoot = path5.join(settingsRoot, "runtime", "extension-install-locks");
|
|
1736
|
+
const lockPath = path5.join(lockRoot, `${destinationDirectoryName}.lock`);
|
|
1737
|
+
await fs5.mkdir(lockRoot, { recursive: true });
|
|
1947
1738
|
const attempts = Math.max(1, Math.floor(options?.attempts ?? EXTENSION_INSTALL_LOCK_ATTEMPTS));
|
|
1948
1739
|
const delayMs = Math.max(0, Math.floor(options?.delay_ms ?? EXTENSION_INSTALL_LOCK_DELAY_MS));
|
|
1949
1740
|
const staleMs = Math.max(0, Math.floor(options?.stale_ms ?? EXTENSION_INSTALL_LOCK_STALE_MS));
|
|
1950
1741
|
let acquired = false;
|
|
1951
1742
|
for (let attempt = 1; attempt <= attempts; attempt += 1) {
|
|
1952
1743
|
try {
|
|
1953
|
-
await
|
|
1744
|
+
await fs5.mkdir(lockPath);
|
|
1954
1745
|
acquired = true;
|
|
1955
|
-
await
|
|
1746
|
+
await fs5.writeFile(path5.join(lockPath, "owner.json"), `${JSON.stringify({ pid: process.pid, created_at: nowIso(), destination: destinationDirectoryName }, null, 2)}
|
|
1956
1747
|
`, "utf8");
|
|
1957
1748
|
break;
|
|
1958
1749
|
} catch (error) {
|
|
@@ -1961,12 +1752,12 @@ async function withExtensionInstallLock(settingsRoot, destinationDirectoryName,
|
|
|
1961
1752
|
}
|
|
1962
1753
|
let stat = null;
|
|
1963
1754
|
try {
|
|
1964
|
-
stat = await
|
|
1755
|
+
stat = await fs5.stat(lockPath);
|
|
1965
1756
|
} catch {
|
|
1966
1757
|
stat = null;
|
|
1967
1758
|
}
|
|
1968
1759
|
if (stat && Date.now() - stat.mtimeMs > staleMs) {
|
|
1969
|
-
await
|
|
1760
|
+
await fs5.rm(lockPath, { recursive: true, force: true });
|
|
1970
1761
|
continue;
|
|
1971
1762
|
}
|
|
1972
1763
|
await sleep(delayMs);
|
|
@@ -1978,7 +1769,7 @@ async function withExtensionInstallLock(settingsRoot, destinationDirectoryName,
|
|
|
1978
1769
|
try {
|
|
1979
1770
|
return await run();
|
|
1980
1771
|
} finally {
|
|
1981
|
-
await
|
|
1772
|
+
await fs5.rm(lockPath, { recursive: true, force: true }).catch(() => void 0);
|
|
1982
1773
|
}
|
|
1983
1774
|
}
|
|
1984
1775
|
async function resolveInstalledExtensionCandidate(installed, extensionTarget) {
|
|
@@ -2156,7 +1947,7 @@ async function listInstalledExtensions(extensionsRoot, scope, settings, state) {
|
|
|
2156
1947
|
warnings: []
|
|
2157
1948
|
};
|
|
2158
1949
|
}
|
|
2159
|
-
const entries = await
|
|
1950
|
+
const entries = await fs5.readdir(extensionsRoot, { withFileTypes: true });
|
|
2160
1951
|
const directories = entries.filter((entry) => entry.isDirectory()).map((entry) => entry.name).sort((left, right) => left.localeCompare(right));
|
|
2161
1952
|
const managedByName = /* @__PURE__ */ new Map();
|
|
2162
1953
|
const managedByDirectory = /* @__PURE__ */ new Map();
|
|
@@ -2167,8 +1958,8 @@ async function listInstalledExtensions(extensionsRoot, scope, settings, state) {
|
|
|
2167
1958
|
const warnings = [];
|
|
2168
1959
|
const summaries = [];
|
|
2169
1960
|
for (const directoryName of directories) {
|
|
2170
|
-
const extensionDirectory =
|
|
2171
|
-
const manifestPath =
|
|
1961
|
+
const extensionDirectory = path5.join(extensionsRoot, directoryName);
|
|
1962
|
+
const manifestPath = path5.join(extensionDirectory, "manifest.json");
|
|
2172
1963
|
if (!await pathExists(manifestPath)) {
|
|
2173
1964
|
warnings.push(`extension_manifest_missing:${scope}:${directoryName}`);
|
|
2174
1965
|
const managedEntry2 = managedByDirectory.get(normalizeExtensionNameForMatch(directoryName));
|
|
@@ -2197,7 +1988,7 @@ async function listInstalledExtensions(extensionsRoot, scope, settings, state) {
|
|
|
2197
1988
|
}
|
|
2198
1989
|
let rawManifest;
|
|
2199
1990
|
try {
|
|
2200
|
-
rawManifest = JSON.parse(await
|
|
1991
|
+
rawManifest = JSON.parse(await fs5.readFile(manifestPath, "utf8"));
|
|
2201
1992
|
} catch {
|
|
2202
1993
|
warnings.push(`extension_manifest_invalid_json:${scope}:${directoryName}`);
|
|
2203
1994
|
continue;
|
|
@@ -2374,7 +2165,7 @@ async function adoptUnmanagedExtensions(extensionsRoot, scope, installedExtensio
|
|
|
2374
2165
|
let nextState = state;
|
|
2375
2166
|
const adoptedEntries = [];
|
|
2376
2167
|
for (const candidate of sortedCandidates) {
|
|
2377
|
-
const extensionDirectory =
|
|
2168
|
+
const extensionDirectory = path5.join(extensionsRoot, candidate.directory);
|
|
2378
2169
|
const validated = await validateExtensionDirectory(extensionDirectory);
|
|
2379
2170
|
const now = nowIso();
|
|
2380
2171
|
const sourceRecord = {
|
|
@@ -2476,6 +2267,9 @@ async function runExtension(target, options, global) {
|
|
|
2476
2267
|
if (options.fixManagedState === true && action !== "manage" && action !== "doctor") {
|
|
2477
2268
|
throw new PmCliError("--fix-managed-state is only valid with --manage or --doctor.", EXIT_CODE.USAGE);
|
|
2478
2269
|
}
|
|
2270
|
+
if (options.capability !== void 0 && action !== "init") {
|
|
2271
|
+
throw new PmCliError("--capability is only valid with --init/--scaffold.", EXIT_CODE.USAGE);
|
|
2272
|
+
}
|
|
2479
2273
|
const normalizedTarget = (() => {
|
|
2480
2274
|
const normalizedInput = target?.trim().toLowerCase();
|
|
2481
2275
|
if (action === "doctor" && normalizedInput === "doctor") {
|
|
@@ -2530,7 +2324,7 @@ async function runExtension(target, options, global) {
|
|
|
2530
2324
|
throw new PmCliError('Action "init" does not accept --gh/--github/--ref options.', EXIT_CODE.USAGE);
|
|
2531
2325
|
}
|
|
2532
2326
|
const scaffoldTarget = requireTarget(normalizedTarget, action);
|
|
2533
|
-
const scaffold = await scaffoldExtensionProject(scaffoldTarget, options.vocabulary ?? "extension");
|
|
2327
|
+
const scaffold = await scaffoldExtensionProject(scaffoldTarget, options.vocabulary ?? "extension", options.capability);
|
|
2534
2328
|
const quotedTargetPath = JSON.stringify(scaffold.target_path);
|
|
2535
2329
|
const quotedShellTargetPath = JSON.stringify(scaffold.target_path.replace(/\\/g, "/"));
|
|
2536
2330
|
return withResult({
|
|
@@ -2539,6 +2333,7 @@ async function runExtension(target, options, global) {
|
|
|
2539
2333
|
name: scaffold.extension_name,
|
|
2540
2334
|
command: scaffold.command_name
|
|
2541
2335
|
},
|
|
2336
|
+
capability: scaffold.capability,
|
|
2542
2337
|
target_path: scaffold.target_path,
|
|
2543
2338
|
created_directory: scaffold.created_directory,
|
|
2544
2339
|
files: scaffold.files,
|
|
@@ -2655,10 +2450,10 @@ async function runExtension(target, options, global) {
|
|
|
2655
2450
|
const settings = await readSettings(resolvedRoots.settings_root);
|
|
2656
2451
|
const managedStateRead = await readManagedExtensionState(resolvedRoots.selected_root);
|
|
2657
2452
|
warnings.push(...managedStateRead.warnings);
|
|
2658
|
-
const destinationDirectory =
|
|
2453
|
+
const destinationDirectory = path5.join(resolvedRoots.selected_root, destinationDirectoryName);
|
|
2659
2454
|
const destinationExists = await pathExists(destinationDirectory);
|
|
2660
2455
|
const installInPlace = await areDirectoriesEquivalent(validated.directory, destinationDirectory);
|
|
2661
|
-
await
|
|
2456
|
+
await fs5.mkdir(resolvedRoots.selected_root, { recursive: true });
|
|
2662
2457
|
if (!installInPlace) {
|
|
2663
2458
|
await copyExtensionDirectoryForInstall(validated.directory, destinationDirectory);
|
|
2664
2459
|
}
|
|
@@ -2805,7 +2600,7 @@ async function runExtension(target, options, global) {
|
|
|
2805
2600
|
}
|
|
2806
2601
|
});
|
|
2807
2602
|
}
|
|
2808
|
-
const extensionDirectory =
|
|
2603
|
+
const extensionDirectory = path5.join(resolvedRoots.selected_root, candidate.directory);
|
|
2809
2604
|
const validated = await validateExtensionDirectory(extensionDirectory);
|
|
2810
2605
|
const now = nowIso();
|
|
2811
2606
|
const sourceRecord = githubOption === void 0 ? {
|
|
@@ -2870,8 +2665,8 @@ async function runExtension(target, options, global) {
|
|
|
2870
2665
|
if (!candidate) {
|
|
2871
2666
|
throw new PmCliError(`Installed extension "${extensionTarget}" was not found in ${scope} scope.`, EXIT_CODE.NOT_FOUND);
|
|
2872
2667
|
}
|
|
2873
|
-
const destinationDirectory =
|
|
2874
|
-
await
|
|
2668
|
+
const destinationDirectory = path5.join(resolvedRoots.selected_root, candidate.directory);
|
|
2669
|
+
await fs5.rm(destinationDirectory, { recursive: true, force: true });
|
|
2875
2670
|
const updatedState = {
|
|
2876
2671
|
...managedStateRead.state,
|
|
2877
2672
|
updated_at: nowIso(),
|
|
@@ -2957,6 +2752,7 @@ async function runExtension(target, options, global) {
|
|
|
2957
2752
|
warnings.push(...classifyDoctorLoadFailureWarnings(loadResult.failed));
|
|
2958
2753
|
warnings.push(...activationResult.warnings);
|
|
2959
2754
|
warnings.push(...classifyDoctorActivationFailureWarnings(activationResult.failed));
|
|
2755
|
+
warnings.push(...classifyUnusedCapabilityWarnings(loadResult, activationResult));
|
|
2960
2756
|
warnings.push(...collectGlobalOutputOverrideDoctorWarnings(activationResult));
|
|
2961
2757
|
const runtimeInstalledExtensions = applyDoctorRuntimeActivationState(refreshedInstalled.extensions, loadResult, activationResult);
|
|
2962
2758
|
const doctorConsistency = buildDoctorConsistencySummary(scope, runtimeInstalledExtensions, loadResult.loaded.map((entry) => ({ layer: entry.layer, name: entry.name })), loadResult.failed.map((entry) => ({ name: entry.name })), loadResult.disabled_by_flag);
|
|
@@ -3274,6 +3070,6 @@ export {
|
|
|
3274
3070
|
runExtension,
|
|
3275
3071
|
_testOnly
|
|
3276
3072
|
};
|
|
3277
|
-
//# sourceMappingURL=chunk-
|
|
3073
|
+
//# sourceMappingURL=chunk-D35LTIFR.js.map
|
|
3278
3074
|
|
|
3279
|
-
//# debugId=
|
|
3075
|
+
//# debugId=5b87215b-bb14-5510-af50-0d572df794ca
|