@unbrained/pm-cli 2026.6.21 → 2026.6.23
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 +44 -0
- package/dist/cli/commands/completion.js +7 -4
- package/dist/cli/commands/completion.js.map +1 -1
- package/dist/cli/commands/contracts.js +4 -3
- package/dist/cli/commands/contracts.js.map +1 -1
- package/dist/cli/commands/extension/describe.d.ts +70 -0
- package/dist/cli/commands/extension/describe.js +76 -0
- package/dist/cli/commands/extension/describe.js.map +1 -0
- 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 +529 -48
- package/dist/cli/commands/extension/scaffold.js.map +1 -1
- package/dist/cli/commands/extension.d.ts +3 -1
- package/dist/cli/commands/extension.js +35 -5
- package/dist/cli/commands/extension.js.map +1 -1
- package/dist/cli/help-content.js +20 -4
- package/dist/cli/help-content.js.map +1 -1
- package/dist/cli/register-setup.js +14 -2
- package/dist/cli/register-setup.js.map +1 -1
- package/dist/cli-bundle/chunks/{activity-KW3IRP44.js → activity-H2LMOSSW.js} +11 -11
- package/dist/cli-bundle/chunks/activity-XUZ2AHCW.js +18 -0
- package/dist/cli-bundle/chunks/{aggregate-3ZKQG5SW.js → aggregate-EGJLZQBI.js} +10 -10
- package/dist/cli-bundle/chunks/{aggregate-FIGQEIL3.js → aggregate-R725FC3S.js} +10 -10
- package/dist/cli-bundle/chunks/{append-EWJYJ7CH.js → append-5J345QGU.js} +8 -8
- package/dist/cli-bundle/chunks/{append-QEOLX3XB.js → append-O5HPBMRN.js} +8 -8
- package/dist/cli-bundle/chunks/{chunk-GOZUHWFD.js → chunk-2A34E3BA.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-A4Z7ZOL5.js → chunk-2BFPAUAF.js} +31 -15
- package/dist/cli-bundle/chunks/chunk-2BFPAUAF.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-5QICDWMV.js → chunk-2CKH2LMV.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-WQ7NIVDK.js → chunk-2RDVQEWV.js} +4 -4
- package/dist/cli-bundle/chunks/{chunk-NSBZ2CKF.js → chunk-2T3JG6V4.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-76Z3YSHV.js → chunk-34EONI5F.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-PUH4D67U.js → chunk-3VY3YQO6.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-N5ZJACJ6.js → chunk-46G6RSB6.js} +8 -8
- package/dist/cli-bundle/chunks/{chunk-SRYYRVPB.js → chunk-4BHT5VDC.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-PFSRUHDH.js → chunk-4KD54S3Z.js} +9 -9
- package/dist/cli-bundle/chunks/{chunk-QQHISQBJ.js → chunk-55ISXAQH.js} +7 -4
- package/dist/cli-bundle/chunks/{chunk-QQHISQBJ.js.map → chunk-55ISXAQH.js.map} +2 -2
- package/dist/cli-bundle/chunks/{chunk-NIUEXCFS.js → chunk-5UVVASSA.js} +6 -6
- package/dist/cli-bundle/chunks/{chunk-CF55WVVS.js → chunk-5VOINNKT.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-NIGXMNNI.js → chunk-66MEDTUD.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-AZMOLBN3.js → chunk-7AUB5HNA.js} +7 -7
- package/dist/cli-bundle/chunks/{chunk-OTHIWLMB.js → chunk-7K2XXO4I.js} +5 -5
- package/dist/cli-bundle/chunks/{chunk-7D3SAQXM.js → chunk-7MRQ4HMK.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-EBH56IXK.js → chunk-7SV63ZHD.js} +8 -8
- package/dist/cli-bundle/chunks/{chunk-OFYMIDF2.js → chunk-7UGEAPRY.js} +9 -9
- package/dist/cli-bundle/chunks/{chunk-LUWW7L4B.js → chunk-7XGQXHFB.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-UEMNL33O.js → chunk-AD3A7ZD6.js} +8 -8
- package/dist/cli-bundle/chunks/{chunk-3EWSGA7N.js → chunk-AONIHR2C.js} +12 -12
- package/dist/cli-bundle/chunks/{chunk-RVHYI7SL.js → chunk-BB6MDVNQ.js} +8 -8
- package/dist/cli-bundle/chunks/chunk-C5AOG6D2.js +691 -0
- package/dist/cli-bundle/chunks/chunk-C5AOG6D2.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-52OCIDPG.js → chunk-CE5P2NQR.js} +5 -5
- package/dist/cli-bundle/chunks/{chunk-NXS7ZKAK.js → chunk-CIIK67GW.js} +4 -4
- package/dist/cli-bundle/chunks/{chunk-HC4AWIKT.js → chunk-CKGNPJAG.js} +31 -15
- package/dist/cli-bundle/chunks/chunk-CKGNPJAG.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-NB3PYLQ6.js → chunk-DT5LPYOD.js} +5 -5
- package/dist/cli-bundle/chunks/{chunk-37QXHBIB.js → chunk-FIGAZ4Y7.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-UV6IYE5U.js → chunk-FXR67XVQ.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-3MDHREEV.js → chunk-G6N5VEOK.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-5PCI3UBT.js → chunk-G6PYHBBR.js} +152 -253
- package/dist/cli-bundle/chunks/chunk-G6PYHBBR.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-2GCDRRIF.js → chunk-GAJVRGGA.js} +12 -12
- package/dist/cli-bundle/chunks/{chunk-HCU6WUSY.js → chunk-H2IP4QLJ.js} +9 -9
- package/dist/cli-bundle/chunks/{chunk-CZUB4XWO.js → chunk-H4IIJDE4.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-RLK7P77C.js → chunk-HFFUQR73.js} +5 -5
- package/dist/cli-bundle/chunks/{chunk-6M4RJS4M.js → chunk-IB3GYLQE.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-SX75ADBK.js → chunk-IPKJ6B36.js} +6 -6
- package/dist/cli-bundle/chunks/{chunk-H7NJZWG2.js → chunk-JR2LV3M4.js} +13 -13
- package/dist/cli-bundle/chunks/{chunk-PP2U4NMT.js → chunk-KFWBJPSG.js} +5 -5
- package/dist/cli-bundle/chunks/{chunk-32R4PIC6.js → chunk-KQMUV6LX.js} +145 -253
- package/dist/cli-bundle/chunks/chunk-KQMUV6LX.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-F7K5GWP3.js → chunk-LRKKONT2.js} +9 -9
- package/dist/cli-bundle/chunks/{chunk-5IDI42VV.js → chunk-M4T5DXD5.js} +7 -7
- package/dist/cli-bundle/chunks/{chunk-2PKHRP6G.js → chunk-MJTINN54.js} +10 -10
- package/dist/cli-bundle/chunks/{chunk-HMOADQVT.js → chunk-MJTSZKK5.js} +107 -3
- package/dist/cli-bundle/chunks/chunk-MJTSZKK5.js.map +7 -0
- package/dist/cli-bundle/chunks/chunk-MVKFOLLM.js +694 -0
- package/dist/cli-bundle/chunks/chunk-MVKFOLLM.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-QGG32QHW.js → chunk-NCVCO3NZ.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-AIS5PGI3.js → chunk-NK3UPBVG.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-6H4LF7AO.js → chunk-O6LLO73I.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-YCJX76PW.js → chunk-P77P2ILI.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-F5NZWFSW.js → chunk-Q2KNGP7C.js} +7 -7
- package/dist/cli-bundle/chunks/{chunk-GMHPNNYG.js → chunk-QH3PJYON.js} +10 -10
- package/dist/cli-bundle/chunks/{chunk-NJHMAJ6N.js → chunk-QL5RVYOA.js} +8 -8
- package/dist/cli-bundle/chunks/{chunk-O47BPOPC.js → chunk-S26C36QC.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-D7FYS6PG.js → chunk-S2RUQSX2.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-CZPXY7UW.js → chunk-SBQTAVJZ.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-M5XALUSL.js → chunk-SKH7OGE5.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-NJN7LL7U.js → chunk-SKN7LC5W.js} +5 -5
- package/dist/cli-bundle/chunks/{chunk-6ZXM2XNF.js → chunk-SR3EKWZG.js} +8 -8
- package/dist/cli-bundle/chunks/{chunk-B473GZWW.js → chunk-T5472OMV.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-2EIMPCE4.js → chunk-T72AZDBA.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-6CJWZAN7.js → chunk-TQZH6OD6.js} +7 -7
- package/dist/cli-bundle/chunks/{chunk-FWPDUYEY.js → chunk-U2Z5YUSO.js} +7 -7
- package/dist/cli-bundle/chunks/{chunk-434HM6Z5.js → chunk-UELRKQQU.js} +100 -3
- package/dist/cli-bundle/chunks/chunk-UELRKQQU.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-HIP7WVTL.js → chunk-UVC5LOR7.js} +4 -4
- package/dist/cli-bundle/chunks/{chunk-LEU5GHRC.js → chunk-VAYA4XFX.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-J4MYYSOL.js → chunk-VFAQ4LMN.js} +5 -5
- package/dist/cli-bundle/chunks/{chunk-UPE3CDD7.js → chunk-W72GHSJE.js} +7 -7
- package/dist/cli-bundle/chunks/{chunk-C4N5I7ZW.js → chunk-WBRKK5QR.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-Z6T4PQI2.js → chunk-WM5ZVBPE.js} +4 -4
- package/dist/cli-bundle/chunks/{chunk-TKBHZPKD.js → chunk-WZQWHN4R.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-FKBDKV7Y.js → chunk-XVF4YARA.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-SBGXDO7A.js → chunk-Y4SUQQYH.js} +8 -5
- package/dist/cli-bundle/chunks/{chunk-SBGXDO7A.js.map → chunk-Y4SUQQYH.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-QZTWBFXJ.js → chunk-YDEXO24S.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-FRUFKWNK.js → chunk-YJ3SUEPD.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-5FIEHKEX.js → chunk-YUDJD3XO.js} +5 -5
- package/dist/cli-bundle/chunks/{chunk-Q2J2HJUN.js → chunk-ZQ3ZVXX2.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-C3AZ5ZML.js → chunk-ZRK4O56R.js} +13 -13
- package/dist/cli-bundle/chunks/{claim-RC56YUWG.js → claim-4KHAA2RN.js} +10 -10
- package/dist/cli-bundle/chunks/{claim-THOJ6CMV.js → claim-CSPJFLNH.js} +10 -10
- package/dist/cli-bundle/chunks/close-A3EMKBBY.js +15 -0
- package/dist/cli-bundle/chunks/{close-SG5MNCVQ.js → close-W56IOGYG.js} +8 -8
- package/dist/cli-bundle/chunks/{close-many-3L3AQZBU.js → close-many-BX5DCSVV.js} +15 -15
- package/dist/cli-bundle/chunks/{close-many-DKQLBGLV.js → close-many-TQU5F4E4.js} +15 -15
- package/dist/cli-bundle/chunks/{comments-M7ZOZNBX.js → comments-U5KUC4EU.js} +10 -10
- package/dist/cli-bundle/chunks/{comments-SKWMDWCW.js → comments-VRECH75R.js} +10 -10
- package/dist/cli-bundle/chunks/{config-OZCUABPB.js → config-D3OKQO52.js} +8 -8
- package/dist/cli-bundle/chunks/{config-7CK62S7T.js → config-MMJA4LLK.js} +8 -8
- package/dist/cli-bundle/chunks/{context-PUG2A7RC.js → context-BLBD3PUB.js} +13 -13
- package/dist/cli-bundle/chunks/{context-OEC366TO.js → context-DHLVPXN3.js} +13 -13
- package/dist/cli-bundle/chunks/{contracts-3THOLA7L.js → contracts-C3SZCXXG.js} +7 -5
- package/dist/cli-bundle/chunks/contracts-C3SZCXXG.js.map +7 -0
- package/dist/cli-bundle/chunks/{contracts-N65FXEOL.js → contracts-XGVMMPC5.js} +8 -6
- package/dist/cli-bundle/chunks/contracts-XGVMMPC5.js.map +1 -0
- package/dist/cli-bundle/chunks/{copy-JPX7VZCH.js → copy-5D5DX3VK.js} +7 -7
- package/dist/cli-bundle/chunks/{copy-6QLHILAC.js → copy-HHL3K4QP.js} +7 -7
- package/dist/cli-bundle/chunks/{create-Y54ZVVZH.js → create-IXY43O4H.js} +14 -14
- package/dist/cli-bundle/chunks/create-QVGFYA2X.js +30 -0
- package/dist/cli-bundle/chunks/{delete-63PCMQAJ.js → delete-IBUR3M42.js} +7 -7
- package/dist/cli-bundle/chunks/{delete-GDSMGAGJ.js → delete-QQC2FGUH.js} +7 -7
- package/dist/cli-bundle/chunks/{deps-XYQ73XRH.js → deps-KWKRHXIN.js} +7 -7
- package/dist/cli-bundle/chunks/{deps-T4ZF5G54.js → deps-VTPO4BSE.js} +7 -7
- package/dist/cli-bundle/chunks/{docs-EHNPDWUL.js → docs-7CHFHXLN.js} +9 -9
- package/dist/cli-bundle/chunks/{docs-C75YIXHC.js → docs-IIO3FEUO.js} +9 -9
- package/dist/cli-bundle/chunks/{eval-GTENKE24.js → eval-CEYYEPSX.js} +12 -12
- package/dist/cli-bundle/chunks/{eval-3WKDTRMH.js → eval-IO7LREOL.js} +12 -12
- package/dist/cli-bundle/chunks/{extension-D5FDZ2CO.js → extension-KCPUWSY2.js} +6 -5
- package/dist/cli-bundle/chunks/{extension-46NWACO3.js → extension-UTTQDUYI.js} +6 -5
- package/dist/cli-bundle/chunks/{files-X3H7CCBQ.js → files-TPUL6KWB.js} +9 -9
- package/dist/cli-bundle/chunks/{files-DSZBOSSN.js → files-Z2HHEFGP.js} +9 -9
- package/dist/cli-bundle/chunks/{focus-5STQXDPU.js → focus-JVJCGC2D.js} +8 -8
- package/dist/cli-bundle/chunks/{focus-MDVPOWB5.js → focus-YRNNH7IP.js} +8 -8
- package/dist/cli-bundle/chunks/{gc-ZMST3WQP.js → gc-O5GUO3SU.js} +3 -3
- package/dist/cli-bundle/chunks/{gc-ZC7JHBG7.js → gc-PYVVEELM.js} +3 -3
- package/dist/cli-bundle/chunks/{get-NT7L2HUZ.js → get-ENLTEGTX.js} +11 -11
- package/dist/cli-bundle/chunks/{get-J2IPJRZW.js → get-X4O3HBEY.js} +11 -11
- package/dist/cli-bundle/chunks/{health-WOYBR3KU.js → health-5EXTY44Q.js} +14 -13
- package/dist/cli-bundle/chunks/{health-WOYBR3KU.js.map → health-5EXTY44Q.js.map} +1 -1
- package/dist/cli-bundle/chunks/{health-IVMA3XQC.js → health-BOTB7YSU.js} +16 -15
- package/dist/cli-bundle/chunks/{health-IVMA3XQC.js.map → health-BOTB7YSU.js.map} +1 -1
- package/dist/cli-bundle/chunks/{history-RLH2QCRO.js → history-AJTXLT6S.js} +10 -10
- package/dist/cli-bundle/chunks/history-AK3E5Z3C.js +20 -0
- package/dist/cli-bundle/chunks/{history-compact-UXDIFC33.js → history-compact-43OOUAWD.js} +12 -12
- package/dist/cli-bundle/chunks/{history-compact-ZBEBGJM7.js → history-compact-46MRHW3I.js} +12 -12
- package/dist/cli-bundle/chunks/{history-redact-P7I7AWMB.js → history-redact-KUUUVUFM.js} +11 -11
- package/dist/cli-bundle/chunks/history-redact-TWIYQV5J.js +21 -0
- package/dist/cli-bundle/chunks/{history-repair-52KINVIK.js → history-repair-B5PZBOPU.js} +12 -12
- package/dist/cli-bundle/chunks/{history-repair-RM5ITLU5.js → history-repair-VQTYOSRS.js} +12 -12
- package/dist/cli-bundle/chunks/{init-2BNZOO6F.js → init-BNLVFPRG.js} +11 -10
- package/dist/cli-bundle/chunks/init-RCRKW5PL.js +21 -0
- package/dist/cli-bundle/chunks/{learnings-YGYVHWJK.js → learnings-MUUU5KMC.js} +10 -10
- package/dist/cli-bundle/chunks/{learnings-W6F3FIPL.js → learnings-XSGX52S7.js} +10 -10
- package/dist/cli-bundle/chunks/{list-K6FPV4J4.js → list-32U7BSKE.js} +10 -10
- package/dist/cli-bundle/chunks/{list-KPAYU5KZ.js → list-ZEEOHLTQ.js} +10 -10
- package/dist/cli-bundle/chunks/{notes-PU74EPKV.js → notes-NJ45OZGF.js} +10 -10
- package/dist/cli-bundle/chunks/{notes-YTD6ZILW.js → notes-OHU25L3M.js} +10 -10
- package/dist/cli-bundle/chunks/{plan-GEQYUCBW.js → plan-KQA7CAKI.js} +14 -14
- package/dist/cli-bundle/chunks/{plan-FNXHXRCI.js → plan-LWWAEV5Y.js} +14 -14
- package/dist/cli-bundle/chunks/{register-list-query-QI45RMKN.js → register-list-query-DDCHPONM.js} +19 -19
- package/dist/cli-bundle/chunks/{register-list-query-PHWYHENI.js → register-list-query-YNPBVIKM.js} +19 -19
- package/dist/cli-bundle/chunks/{register-mutation-YINRTS7L.js → register-mutation-7ALWDDAX.js} +33 -33
- package/dist/cli-bundle/chunks/{register-mutation-X3BUOQEL.js → register-mutation-LAVKYY63.js} +33 -33
- package/dist/cli-bundle/chunks/{register-operations-E5JEASRK.js → register-operations-R4VOQ6EF.js} +32 -32
- package/dist/cli-bundle/chunks/{register-operations-MIDTRW7S.js → register-operations-U5JAW3WE.js} +32 -32
- package/dist/cli-bundle/chunks/{register-setup-EG2U6CEU.js → register-setup-KBXQDCXE.js} +27 -18
- package/dist/cli-bundle/chunks/register-setup-KBXQDCXE.js.map +7 -0
- package/dist/cli-bundle/chunks/{register-setup-DYBFLEZX.js → register-setup-RCRUHMSZ.js} +28 -19
- package/dist/cli-bundle/chunks/register-setup-RCRUHMSZ.js.map +1 -0
- package/dist/cli-bundle/chunks/restore-2ZKT6UDC.js +19 -0
- package/dist/cli-bundle/chunks/{restore-XQYSWBV7.js → restore-6K53WOWO.js} +11 -11
- package/dist/cli-bundle/chunks/{scheduling-shortcuts-NNT5ASZR.js → scheduling-shortcuts-NJ5UVJFB.js} +14 -14
- package/dist/cli-bundle/chunks/{scheduling-shortcuts-HJMTEXKE.js → scheduling-shortcuts-OQVJXG3M.js} +14 -14
- package/dist/cli-bundle/chunks/{schema-263RI4WW.js → schema-MNTAVQCY.js} +9 -9
- package/dist/cli-bundle/chunks/{schema-TZXW6XWD.js → schema-RBTJ2YXW.js} +9 -9
- package/dist/cli-bundle/chunks/{search-SFRJOVDG.js → search-6HOIVZDU.js} +12 -12
- package/dist/cli-bundle/chunks/{search-LECJYSXE.js → search-ZWYEMASC.js} +12 -12
- package/dist/cli-bundle/chunks/{stats-N7ER2PNK.js → stats-FS742AMA.js} +8 -8
- package/dist/cli-bundle/chunks/{stats-VPBGSRQH.js → stats-R5OAJVZK.js} +8 -8
- package/dist/cli-bundle/chunks/{telemetry-PP3FUNBU.js → telemetry-7DIGDQUO.js} +4 -4
- package/dist/cli-bundle/chunks/{telemetry-L6K3BUIQ.js → telemetry-FWEXSJLQ.js} +4 -4
- package/dist/cli-bundle/chunks/{test-3EGNS3T5.js → test-NZF7OT2F.js} +16 -15
- package/dist/cli-bundle/chunks/test-QJXLKV26.js +36 -0
- package/dist/cli-bundle/chunks/{test-all-NJ5V2QFS.js → test-all-DPN62TX7.js} +16 -15
- package/dist/cli-bundle/chunks/{test-all-NJ5V2QFS.js.map → test-all-DPN62TX7.js.map} +1 -1
- package/dist/cli-bundle/chunks/{test-all-ZHFAWNC3.js → test-all-KL7TLMJF.js} +18 -17
- package/dist/cli-bundle/chunks/{test-all-ZHFAWNC3.js.map → test-all-KL7TLMJF.js.map} +1 -1
- package/dist/cli-bundle/chunks/{test-runs-GN3C6GOI.js → test-runs-C6CFIVOS.js} +5 -5
- package/dist/cli-bundle/chunks/{test-runs-AJHR6IQF.js → test-runs-IAJDL6CA.js} +5 -5
- package/dist/cli-bundle/chunks/update-2XCQNOD6.js +28 -0
- package/dist/cli-bundle/chunks/update-IWUCXVH2.js +24 -0
- package/dist/cli-bundle/chunks/{update-many-RYQ64CFW.js → update-many-MUTIOAP3.js} +23 -23
- package/dist/cli-bundle/chunks/{update-many-N2AN6ZDH.js → update-many-YEH2DQL6.js} +23 -23
- package/dist/cli-bundle/chunks/{upgrade-VPCIYAVW.js → upgrade-HYJ3SWWU.js} +8 -7
- package/dist/cli-bundle/chunks/{upgrade-VPCIYAVW.js.map → upgrade-HYJ3SWWU.js.map} +1 -1
- package/dist/cli-bundle/chunks/{upgrade-TJXFLZIX.js → upgrade-UBNLBZNR.js} +6 -5
- package/dist/cli-bundle/chunks/{upgrade-TJXFLZIX.js.map → upgrade-UBNLBZNR.js.map} +1 -1
- package/dist/cli-bundle/chunks/{validate-PHKIYGSY.js → validate-6QWQVCX2.js} +21 -20
- package/dist/cli-bundle/chunks/{validate-PHKIYGSY.js.map → validate-6QWQVCX2.js.map} +1 -1
- package/dist/cli-bundle/chunks/{validate-JMNWEUYF.js → validate-W5V5ZGQX.js} +23 -22
- package/dist/cli-bundle/chunks/{validate-JMNWEUYF.js.map → validate-W5V5ZGQX.js.map} +1 -1
- package/dist/cli-bundle/main.js +38 -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/activation-summary.d.ts +109 -0
- package/dist/core/extensions/activation-summary.js +60 -0
- package/dist/core/extensions/activation-summary.js.map +1 -0
- package/dist/core/extensions/capability-usage.d.ts +92 -0
- package/dist/core/extensions/capability-usage.js +142 -0
- package/dist/core/extensions/capability-usage.js.map +1 -0
- package/dist/core/extensions/extension-capability-aliases.d.ts +7 -0
- package/dist/core/extensions/extension-capability-aliases.js +12 -2
- package/dist/core/extensions/extension-capability-aliases.js.map +1 -1
- package/dist/core/extensions/index.d.ts +1 -0
- package/dist/core/extensions/index.js +3 -2
- package/dist/core/extensions/index.js.map +1 -1
- package/dist/core/telemetry/runtime.js +5 -2
- package/dist/core/telemetry/runtime.js.map +1 -1
- package/dist/sdk/cli-contracts/enum-contracts.d.ts +1 -1
- package/dist/sdk/cli-contracts/enum-contracts.js +4 -2
- package/dist/sdk/cli-contracts/enum-contracts.js.map +1 -1
- package/dist/sdk/cli-contracts.d.ts +2 -0
- package/dist/sdk/cli-contracts.js +26 -13
- package/dist/sdk/cli-contracts.js.map +1 -1
- package/dist/sdk/compose.d.ts +297 -0
- package/dist/sdk/compose.js +420 -0
- package/dist/sdk/compose.js.map +1 -0
- package/dist/sdk/define.d.ts +194 -0
- package/dist/sdk/define.js +205 -0
- package/dist/sdk/define.js.map +1 -0
- package/dist/sdk/index.d.ts +8 -26
- package/dist/sdk/index.js +8 -10
- package/dist/sdk/index.js.map +1 -1
- package/dist/sdk/testing.d.ts +667 -2
- package/dist/sdk/testing.js +654 -18
- package/dist/sdk/testing.js.map +1 -1
- package/docs/COMMANDS.md +1 -0
- package/docs/EXTENSIONS.md +10 -11
- package/docs/SDK.md +502 -16
- 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-HC4AWIKT.js.map +0 -7
- 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/contracts-3THOLA7L.js.map +0 -7
- package/dist/cli-bundle/chunks/contracts-N65FXEOL.js.map +0 -1
- 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-H2LMOSSW.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{activity-CIHV64UC.js.map → activity-XUZ2AHCW.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{aggregate-3ZKQG5SW.js.map → aggregate-EGJLZQBI.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{aggregate-FIGQEIL3.js.map → aggregate-R725FC3S.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{append-EWJYJ7CH.js.map → append-5J345QGU.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{append-QEOLX3XB.js.map → append-O5HPBMRN.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-GOZUHWFD.js.map → chunk-2A34E3BA.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-5QICDWMV.js.map → chunk-2CKH2LMV.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-WQ7NIVDK.js.map → chunk-2RDVQEWV.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-NSBZ2CKF.js.map → chunk-2T3JG6V4.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-76Z3YSHV.js.map → chunk-34EONI5F.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-PUH4D67U.js.map → chunk-3VY3YQO6.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-N5ZJACJ6.js.map → chunk-46G6RSB6.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-SRYYRVPB.js.map → chunk-4BHT5VDC.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-PFSRUHDH.js.map → chunk-4KD54S3Z.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-NIUEXCFS.js.map → chunk-5UVVASSA.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-CF55WVVS.js.map → chunk-5VOINNKT.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-NIGXMNNI.js.map → chunk-66MEDTUD.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-AZMOLBN3.js.map → chunk-7AUB5HNA.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-OTHIWLMB.js.map → chunk-7K2XXO4I.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-7D3SAQXM.js.map → chunk-7MRQ4HMK.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-EBH56IXK.js.map → chunk-7SV63ZHD.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-OFYMIDF2.js.map → chunk-7UGEAPRY.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-LUWW7L4B.js.map → chunk-7XGQXHFB.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-UEMNL33O.js.map → chunk-AD3A7ZD6.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-3EWSGA7N.js.map → chunk-AONIHR2C.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-RVHYI7SL.js.map → chunk-BB6MDVNQ.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-52OCIDPG.js.map → chunk-CE5P2NQR.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-NXS7ZKAK.js.map → chunk-CIIK67GW.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-NB3PYLQ6.js.map → chunk-DT5LPYOD.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-37QXHBIB.js.map → chunk-FIGAZ4Y7.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-UV6IYE5U.js.map → chunk-FXR67XVQ.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-3MDHREEV.js.map → chunk-G6N5VEOK.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-2GCDRRIF.js.map → chunk-GAJVRGGA.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-HCU6WUSY.js.map → chunk-H2IP4QLJ.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-CZUB4XWO.js.map → chunk-H4IIJDE4.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-RLK7P77C.js.map → chunk-HFFUQR73.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-6M4RJS4M.js.map → chunk-IB3GYLQE.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-SX75ADBK.js.map → chunk-IPKJ6B36.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-H7NJZWG2.js.map → chunk-JR2LV3M4.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-PP2U4NMT.js.map → chunk-KFWBJPSG.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-F7K5GWP3.js.map → chunk-LRKKONT2.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-5IDI42VV.js.map → chunk-M4T5DXD5.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-2PKHRP6G.js.map → chunk-MJTINN54.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-QGG32QHW.js.map → chunk-NCVCO3NZ.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-AIS5PGI3.js.map → chunk-NK3UPBVG.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-6H4LF7AO.js.map → chunk-O6LLO73I.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-YCJX76PW.js.map → chunk-P77P2ILI.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-F5NZWFSW.js.map → chunk-Q2KNGP7C.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-GMHPNNYG.js.map → chunk-QH3PJYON.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-NJHMAJ6N.js.map → chunk-QL5RVYOA.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-O47BPOPC.js.map → chunk-S26C36QC.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-D7FYS6PG.js.map → chunk-S2RUQSX2.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-CZPXY7UW.js.map → chunk-SBQTAVJZ.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-M5XALUSL.js.map → chunk-SKH7OGE5.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-NJN7LL7U.js.map → chunk-SKN7LC5W.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-6ZXM2XNF.js.map → chunk-SR3EKWZG.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-B473GZWW.js.map → chunk-T5472OMV.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-2EIMPCE4.js.map → chunk-T72AZDBA.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-6CJWZAN7.js.map → chunk-TQZH6OD6.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-FWPDUYEY.js.map → chunk-U2Z5YUSO.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-HIP7WVTL.js.map → chunk-UVC5LOR7.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-LEU5GHRC.js.map → chunk-VAYA4XFX.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-J4MYYSOL.js.map → chunk-VFAQ4LMN.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-UPE3CDD7.js.map → chunk-W72GHSJE.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-C4N5I7ZW.js.map → chunk-WBRKK5QR.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-Z6T4PQI2.js.map → chunk-WM5ZVBPE.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-TKBHZPKD.js.map → chunk-WZQWHN4R.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-FKBDKV7Y.js.map → chunk-XVF4YARA.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-QZTWBFXJ.js.map → chunk-YDEXO24S.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-FRUFKWNK.js.map → chunk-YJ3SUEPD.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-5FIEHKEX.js.map → chunk-YUDJD3XO.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-Q2J2HJUN.js.map → chunk-ZQ3ZVXX2.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-C3AZ5ZML.js.map → chunk-ZRK4O56R.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{claim-RC56YUWG.js.map → claim-4KHAA2RN.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{claim-THOJ6CMV.js.map → claim-CSPJFLNH.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{close-DNMHGOCX.js.map → close-A3EMKBBY.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{close-SG5MNCVQ.js.map → close-W56IOGYG.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{close-many-3L3AQZBU.js.map → close-many-BX5DCSVV.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{close-many-DKQLBGLV.js.map → close-many-TQU5F4E4.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{comments-M7ZOZNBX.js.map → comments-U5KUC4EU.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{comments-SKWMDWCW.js.map → comments-VRECH75R.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{config-OZCUABPB.js.map → config-D3OKQO52.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{config-7CK62S7T.js.map → config-MMJA4LLK.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{context-PUG2A7RC.js.map → context-BLBD3PUB.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{context-OEC366TO.js.map → context-DHLVPXN3.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{copy-JPX7VZCH.js.map → copy-5D5DX3VK.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{copy-6QLHILAC.js.map → copy-HHL3K4QP.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{create-Y54ZVVZH.js.map → create-IXY43O4H.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{create-NNP6TSFO.js.map → create-QVGFYA2X.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{delete-63PCMQAJ.js.map → delete-IBUR3M42.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{delete-GDSMGAGJ.js.map → delete-QQC2FGUH.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{deps-XYQ73XRH.js.map → deps-KWKRHXIN.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{deps-T4ZF5G54.js.map → deps-VTPO4BSE.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{docs-EHNPDWUL.js.map → docs-7CHFHXLN.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{docs-C75YIXHC.js.map → docs-IIO3FEUO.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{eval-GTENKE24.js.map → eval-CEYYEPSX.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{eval-3WKDTRMH.js.map → eval-IO7LREOL.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{extension-D5FDZ2CO.js.map → extension-KCPUWSY2.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{extension-46NWACO3.js.map → extension-UTTQDUYI.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{files-X3H7CCBQ.js.map → files-TPUL6KWB.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{files-DSZBOSSN.js.map → files-Z2HHEFGP.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{focus-5STQXDPU.js.map → focus-JVJCGC2D.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{focus-MDVPOWB5.js.map → focus-YRNNH7IP.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{gc-ZMST3WQP.js.map → gc-O5GUO3SU.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{gc-ZC7JHBG7.js.map → gc-PYVVEELM.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{get-NT7L2HUZ.js.map → get-ENLTEGTX.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{get-J2IPJRZW.js.map → get-X4O3HBEY.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{history-RLH2QCRO.js.map → history-AJTXLT6S.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{history-WX3MGFS2.js.map → history-AK3E5Z3C.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{history-compact-UXDIFC33.js.map → history-compact-43OOUAWD.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{history-compact-ZBEBGJM7.js.map → history-compact-46MRHW3I.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{history-redact-P7I7AWMB.js.map → history-redact-KUUUVUFM.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{history-redact-YQGU3XRA.js.map → history-redact-TWIYQV5J.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{history-repair-52KINVIK.js.map → history-repair-B5PZBOPU.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{history-repair-RM5ITLU5.js.map → history-repair-VQTYOSRS.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{init-2BNZOO6F.js.map → init-BNLVFPRG.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{init-SC2P6CHP.js.map → init-RCRKW5PL.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{learnings-YGYVHWJK.js.map → learnings-MUUU5KMC.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{learnings-W6F3FIPL.js.map → learnings-XSGX52S7.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{list-K6FPV4J4.js.map → list-32U7BSKE.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{list-KPAYU5KZ.js.map → list-ZEEOHLTQ.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{notes-PU74EPKV.js.map → notes-NJ45OZGF.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{notes-YTD6ZILW.js.map → notes-OHU25L3M.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{plan-GEQYUCBW.js.map → plan-KQA7CAKI.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{plan-FNXHXRCI.js.map → plan-LWWAEV5Y.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{register-list-query-QI45RMKN.js.map → register-list-query-DDCHPONM.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{register-list-query-PHWYHENI.js.map → register-list-query-YNPBVIKM.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{register-mutation-YINRTS7L.js.map → register-mutation-7ALWDDAX.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{register-mutation-X3BUOQEL.js.map → register-mutation-LAVKYY63.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{register-operations-E5JEASRK.js.map → register-operations-R4VOQ6EF.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{register-operations-MIDTRW7S.js.map → register-operations-U5JAW3WE.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{restore-5KHR2YYQ.js.map → restore-2ZKT6UDC.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{restore-XQYSWBV7.js.map → restore-6K53WOWO.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{scheduling-shortcuts-NNT5ASZR.js.map → scheduling-shortcuts-NJ5UVJFB.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{scheduling-shortcuts-HJMTEXKE.js.map → scheduling-shortcuts-OQVJXG3M.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{schema-263RI4WW.js.map → schema-MNTAVQCY.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{schema-TZXW6XWD.js.map → schema-RBTJ2YXW.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{search-SFRJOVDG.js.map → search-6HOIVZDU.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{search-LECJYSXE.js.map → search-ZWYEMASC.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{stats-N7ER2PNK.js.map → stats-FS742AMA.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{stats-VPBGSRQH.js.map → stats-R5OAJVZK.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{telemetry-PP3FUNBU.js.map → telemetry-7DIGDQUO.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{telemetry-L6K3BUIQ.js.map → telemetry-FWEXSJLQ.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{test-3EGNS3T5.js.map → test-NZF7OT2F.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{test-RQCTSWUK.js.map → test-QJXLKV26.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{test-runs-GN3C6GOI.js.map → test-runs-C6CFIVOS.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{test-runs-AJHR6IQF.js.map → test-runs-IAJDL6CA.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{update-V33YUBRP.js.map → update-2XCQNOD6.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{update-6YXOGHRT.js.map → update-IWUCXVH2.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{update-many-RYQ64CFW.js.map → update-many-MUTIOAP3.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{update-many-N2AN6ZDH.js.map → update-many-YEH2DQL6.js.map} +0 -0
|
@@ -1,43 +1,49 @@
|
|
|
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]="db37d572-333e-53e5-a56d-c59f51332387")}catch(e){}}();
|
|
3
|
+
import {
|
|
4
|
+
scaffoldExtensionProject
|
|
5
|
+
} from "./chunk-C5AOG6D2.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-4BHT5VDC.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-2T3JG6V4.js";
|
|
16
19
|
import {
|
|
17
20
|
EXIT_CODE,
|
|
18
21
|
EXTENSION_CAPABILITY_CONTRACT,
|
|
19
22
|
KNOWN_EXTENSION_CAPABILITIES,
|
|
20
23
|
PmCliError,
|
|
21
24
|
activateExtensions,
|
|
25
|
+
collectUsedExtensionCapabilities,
|
|
22
26
|
isPathWithinDirectory,
|
|
23
27
|
loadExtensions,
|
|
24
28
|
nextExtensionReloadToken,
|
|
29
|
+
normalizeExtensionName,
|
|
25
30
|
parseLegacyExtensionCapabilityAliasWarning,
|
|
26
31
|
parseUnknownExtensionCapabilityWarning,
|
|
27
32
|
pathExists,
|
|
28
33
|
readSettings,
|
|
34
|
+
reconcileExtensionCapabilityUsage,
|
|
29
35
|
resolveExtensionRoots,
|
|
30
36
|
resolveGlobalPmRoot,
|
|
31
37
|
resolvePmPackageRootFromModule,
|
|
32
38
|
resolvePmRoot,
|
|
33
39
|
writeSettings
|
|
34
|
-
} from "./chunk-
|
|
40
|
+
} from "./chunk-UELRKQQU.js";
|
|
35
41
|
|
|
36
42
|
// dist/cli/commands/extension.js
|
|
37
43
|
import { execFile as execFile2 } from "node:child_process";
|
|
38
|
-
import
|
|
44
|
+
import fs5 from "node:fs/promises";
|
|
39
45
|
import os2 from "node:os";
|
|
40
|
-
import
|
|
46
|
+
import path5 from "node:path";
|
|
41
47
|
import { promisify as promisify2 } from "node:util";
|
|
42
48
|
|
|
43
49
|
// dist/cli/commands/extension/managed-state.js
|
|
@@ -1152,228 +1158,73 @@ function projectPackageCatalogEntry(entry, fields) {
|
|
|
1152
1158
|
return projected;
|
|
1153
1159
|
}
|
|
1154
1160
|
|
|
1155
|
-
// dist/
|
|
1156
|
-
|
|
1157
|
-
|
|
1158
|
-
|
|
1159
|
-
|
|
1160
|
-
|
|
1161
|
-
|
|
1162
|
-
|
|
1163
|
-
|
|
1164
|
-
|
|
1165
|
-
|
|
1166
|
-
|
|
1167
|
-
|
|
1168
|
-
|
|
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");
|
|
1161
|
+
// dist/core/extensions/activation-summary.js
|
|
1162
|
+
var HOOK_REGISTRY_FIELD_TO_KIND = [
|
|
1163
|
+
["beforeCommand", "before_command"],
|
|
1164
|
+
["afterCommand", "after_command"],
|
|
1165
|
+
["onWrite", "on_write"],
|
|
1166
|
+
["onRead", "on_read"],
|
|
1167
|
+
["onIndex", "on_index"]
|
|
1168
|
+
];
|
|
1169
|
+
function describeExtensionActivation(activation, options = {}) {
|
|
1170
|
+
const filter = options.extensionName !== void 0 ? normalizeExtensionName(options.extensionName) : null;
|
|
1171
|
+
const matches = (name) => filter === null || normalizeExtensionName(name) === filter;
|
|
1172
|
+
const collect = (entries, identify) => sortUnique(entries.filter((entry) => matches(entry.name)).map(identify));
|
|
1173
|
+
const collectFlat = (entries, expand) => sortUnique(entries.filter((entry) => matches(entry.name)).flatMap(expand));
|
|
1174
|
+
const { registrations, commands, parsers, preflight, services, renderers, hooks } = activation;
|
|
1322
1175
|
return {
|
|
1323
|
-
|
|
1324
|
-
|
|
1325
|
-
|
|
1176
|
+
capabilities: collectUsedExtensionCapabilities(activation, options),
|
|
1177
|
+
commands: collect(registrations.commands, (entry) => entry.command),
|
|
1178
|
+
command_overrides: collect(commands.overrides, (entry) => entry.command),
|
|
1179
|
+
command_handlers: collect(commands.handlers, (entry) => entry.command),
|
|
1180
|
+
hooks: HOOK_REGISTRY_FIELD_TO_KIND.filter(([field]) => hooks[field].some((entry) => matches(entry.name))).map(([, kind]) => kind),
|
|
1181
|
+
flag_commands: collect(registrations.flags, (entry) => entry.target_command),
|
|
1182
|
+
item_types: collectFlat(registrations.item_types, (entry) => entry.types.map((type) => type.name)),
|
|
1183
|
+
item_fields: collectFlat(registrations.item_fields, (entry) => entry.fields.map((field) => field.name)),
|
|
1184
|
+
migrations: collectFlat(registrations.migrations, (entry) => typeof entry.definition.id === "string" ? [entry.definition.id] : []),
|
|
1185
|
+
importers: collect(registrations.importers, (entry) => entry.importer),
|
|
1186
|
+
exporters: collect(registrations.exporters, (entry) => entry.exporter),
|
|
1187
|
+
search_providers: collect(registrations.search_providers, (entry) => entry.definition.name),
|
|
1188
|
+
vector_store_adapters: collect(registrations.vector_store_adapters, (entry) => entry.definition.name),
|
|
1189
|
+
parser_overrides: collect(parsers.overrides, (entry) => entry.command),
|
|
1190
|
+
service_overrides: collect(services.overrides, (entry) => entry.service),
|
|
1191
|
+
renderer_overrides: collect(renderers.overrides, (entry) => entry.format),
|
|
1192
|
+
preflight_overrides: preflight.overrides.filter((entry) => matches(entry.name)).length
|
|
1326
1193
|
};
|
|
1327
1194
|
}
|
|
1328
|
-
|
|
1329
|
-
|
|
1330
|
-
|
|
1331
|
-
|
|
1332
|
-
|
|
1333
|
-
|
|
1334
|
-
|
|
1335
|
-
|
|
1336
|
-
|
|
1337
|
-
|
|
1338
|
-
|
|
1339
|
-
|
|
1340
|
-
|
|
1341
|
-
|
|
1342
|
-
|
|
1343
|
-
|
|
1344
|
-
|
|
1345
|
-
|
|
1346
|
-
|
|
1347
|
-
|
|
1348
|
-
|
|
1349
|
-
|
|
1350
|
-
|
|
1351
|
-
|
|
1352
|
-
}
|
|
1353
|
-
|
|
1354
|
-
const
|
|
1355
|
-
|
|
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
|
-
}
|
|
1195
|
+
function sortUnique(values) {
|
|
1196
|
+
return [...new Set(values)].sort((left, right) => left.localeCompare(right));
|
|
1197
|
+
}
|
|
1198
|
+
|
|
1199
|
+
// dist/cli/commands/extension/describe.js
|
|
1200
|
+
function layerNameKey(layer, name) {
|
|
1201
|
+
return `${layer}:${normalizeExtensionNameForMatch(name)}`;
|
|
1202
|
+
}
|
|
1203
|
+
function buildExtensionDescribeResult(target, loadResult, activationResult) {
|
|
1204
|
+
const activationFailedKeys = new Set(activationResult.failed.map((entry) => layerNameKey(entry.layer, entry.name)));
|
|
1205
|
+
const candidates = [
|
|
1206
|
+
...loadResult.loaded.map((entry) => ({
|
|
1207
|
+
name: entry.name,
|
|
1208
|
+
layer: entry.layer,
|
|
1209
|
+
version: entry.version,
|
|
1210
|
+
activation_status: activationFailedKeys.has(layerNameKey(entry.layer, entry.name)) ? "failed" : "ok",
|
|
1211
|
+
surfaces: describeExtensionActivation(activationResult, { extensionName: entry.name })
|
|
1212
|
+
})),
|
|
1213
|
+
...loadResult.failed.map((entry) => ({
|
|
1214
|
+
name: entry.name,
|
|
1215
|
+
layer: entry.layer,
|
|
1216
|
+
version: "unknown",
|
|
1217
|
+
activation_status: "not_loaded",
|
|
1218
|
+
surfaces: describeExtensionActivation(activationResult, { extensionName: entry.name })
|
|
1219
|
+
}))
|
|
1220
|
+
].sort((left, right) => left.name.localeCompare(right.name) || left.layer.localeCompare(right.layer));
|
|
1221
|
+
const normalizedTarget = typeof target === "string" ? normalizeExtensionNameForMatch(target) : null;
|
|
1222
|
+
const extensions = normalizedTarget === null ? candidates : candidates.filter((entry) => normalizeExtensionNameForMatch(entry.name) === normalizedTarget);
|
|
1371
1223
|
return {
|
|
1372
|
-
|
|
1373
|
-
|
|
1374
|
-
|
|
1375
|
-
|
|
1376
|
-
files
|
|
1224
|
+
target: typeof target === "string" ? target.trim() : null,
|
|
1225
|
+
total: extensions.length,
|
|
1226
|
+
extensions,
|
|
1227
|
+
union: describeExtensionActivation(activationResult, normalizedTarget === null ? {} : { extensionName: target })
|
|
1377
1228
|
};
|
|
1378
1229
|
}
|
|
1379
1230
|
|
|
@@ -1621,6 +1472,15 @@ function classifyDoctorActivationFailureWarnings(activationFailures = []) {
|
|
|
1621
1472
|
}
|
|
1622
1473
|
return [...new Set(warnings)].sort((left, right) => left.localeCompare(right));
|
|
1623
1474
|
}
|
|
1475
|
+
function classifyUnusedCapabilityWarnings(loadResult, activationResult) {
|
|
1476
|
+
const warnings = [];
|
|
1477
|
+
for (const entry of reconcileExtensionCapabilityUsage(loadResult.loaded, activationResult)) {
|
|
1478
|
+
for (const capability of entry.unused) {
|
|
1479
|
+
warnings.push(`extension_capability_unused:${entry.layer}:${entry.name}:${capability}`);
|
|
1480
|
+
}
|
|
1481
|
+
}
|
|
1482
|
+
return [...new Set(warnings)].sort((left, right) => left.localeCompare(right));
|
|
1483
|
+
}
|
|
1624
1484
|
function buildExtensionTriageSummary(scope, warnings, extensions, options = {}) {
|
|
1625
1485
|
const normalizedWarnings = [...new Set(warnings)].sort((left, right) => left.localeCompare(right));
|
|
1626
1486
|
const managedTotal = extensions.filter((entry) => entry.managed).length;
|
|
@@ -1671,6 +1531,9 @@ function buildExtensionTriageSummary(scope, warnings, extensions, options = {})
|
|
|
1671
1531
|
if (normalizedWarnings.some((warning) => warning.startsWith("extension_capability_missing:"))) {
|
|
1672
1532
|
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
1533
|
}
|
|
1534
|
+
if (normalizedWarnings.some((warning) => warning.startsWith("extension_capability_unused:"))) {
|
|
1535
|
+
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.`);
|
|
1536
|
+
}
|
|
1674
1537
|
if (normalizedWarnings.some((warning) => warning.startsWith("extension_command_definition_legacy_handler_alias:"))) {
|
|
1675
1538
|
remediation.push("Extension command definitions using legacy handler were auto-remapped. Update command definitions to use run: (context) => ... for forward compatibility.");
|
|
1676
1539
|
}
|
|
@@ -1905,11 +1768,11 @@ function sleep(ms) {
|
|
|
1905
1768
|
setTimeout(resolve, ms);
|
|
1906
1769
|
});
|
|
1907
1770
|
}
|
|
1908
|
-
async function copyExtensionDirectoryForInstall(sourceDirectory, destinationDirectory, copyDirectory =
|
|
1771
|
+
async function copyExtensionDirectoryForInstall(sourceDirectory, destinationDirectory, copyDirectory = fs5.cp) {
|
|
1909
1772
|
for (let attempt = 1; attempt <= EXTENSION_INSTALL_COPY_ATTEMPTS; attempt += 1) {
|
|
1910
1773
|
try {
|
|
1911
1774
|
if (await pathExists(destinationDirectory)) {
|
|
1912
|
-
await
|
|
1775
|
+
await fs5.rm(destinationDirectory, { recursive: true, force: true });
|
|
1913
1776
|
}
|
|
1914
1777
|
await copyExtensionDirectoryWithoutSelfNesting(sourceDirectory, destinationDirectory, copyDirectory);
|
|
1915
1778
|
return;
|
|
@@ -1922,8 +1785,8 @@ async function copyExtensionDirectoryForInstall(sourceDirectory, destinationDire
|
|
|
1922
1785
|
}
|
|
1923
1786
|
}
|
|
1924
1787
|
async function copyExtensionDirectoryWithoutSelfNesting(sourceDirectory, destinationDirectory, copyDirectory) {
|
|
1925
|
-
const resolvedSource =
|
|
1926
|
-
const resolvedDestination =
|
|
1788
|
+
const resolvedSource = path5.resolve(sourceDirectory);
|
|
1789
|
+
const resolvedDestination = path5.resolve(destinationDirectory);
|
|
1927
1790
|
if (resolvedSource === resolvedDestination) {
|
|
1928
1791
|
return;
|
|
1929
1792
|
}
|
|
@@ -1931,28 +1794,28 @@ async function copyExtensionDirectoryWithoutSelfNesting(sourceDirectory, destina
|
|
|
1931
1794
|
await copyDirectory(sourceDirectory, destinationDirectory, { recursive: true, force: true });
|
|
1932
1795
|
return;
|
|
1933
1796
|
}
|
|
1934
|
-
const stagingRoot = await
|
|
1935
|
-
const stagedDirectory =
|
|
1797
|
+
const stagingRoot = await fs5.mkdtemp(path5.join(os2.tmpdir(), "pm-extension-copy-"));
|
|
1798
|
+
const stagedDirectory = path5.join(stagingRoot, "extension");
|
|
1936
1799
|
try {
|
|
1937
1800
|
await copyDirectory(sourceDirectory, stagedDirectory, { recursive: true, force: true });
|
|
1938
1801
|
await copyDirectory(stagedDirectory, destinationDirectory, { recursive: true, force: true });
|
|
1939
1802
|
} finally {
|
|
1940
|
-
await
|
|
1803
|
+
await fs5.rm(stagingRoot, { recursive: true, force: true });
|
|
1941
1804
|
}
|
|
1942
1805
|
}
|
|
1943
1806
|
async function withExtensionInstallLock(settingsRoot, destinationDirectoryName, run, options) {
|
|
1944
|
-
const lockRoot =
|
|
1945
|
-
const lockPath =
|
|
1946
|
-
await
|
|
1807
|
+
const lockRoot = path5.join(settingsRoot, "runtime", "extension-install-locks");
|
|
1808
|
+
const lockPath = path5.join(lockRoot, `${destinationDirectoryName}.lock`);
|
|
1809
|
+
await fs5.mkdir(lockRoot, { recursive: true });
|
|
1947
1810
|
const attempts = Math.max(1, Math.floor(options?.attempts ?? EXTENSION_INSTALL_LOCK_ATTEMPTS));
|
|
1948
1811
|
const delayMs = Math.max(0, Math.floor(options?.delay_ms ?? EXTENSION_INSTALL_LOCK_DELAY_MS));
|
|
1949
1812
|
const staleMs = Math.max(0, Math.floor(options?.stale_ms ?? EXTENSION_INSTALL_LOCK_STALE_MS));
|
|
1950
1813
|
let acquired = false;
|
|
1951
1814
|
for (let attempt = 1; attempt <= attempts; attempt += 1) {
|
|
1952
1815
|
try {
|
|
1953
|
-
await
|
|
1816
|
+
await fs5.mkdir(lockPath);
|
|
1954
1817
|
acquired = true;
|
|
1955
|
-
await
|
|
1818
|
+
await fs5.writeFile(path5.join(lockPath, "owner.json"), `${JSON.stringify({ pid: process.pid, created_at: nowIso(), destination: destinationDirectoryName }, null, 2)}
|
|
1956
1819
|
`, "utf8");
|
|
1957
1820
|
break;
|
|
1958
1821
|
} catch (error) {
|
|
@@ -1961,12 +1824,12 @@ async function withExtensionInstallLock(settingsRoot, destinationDirectoryName,
|
|
|
1961
1824
|
}
|
|
1962
1825
|
let stat = null;
|
|
1963
1826
|
try {
|
|
1964
|
-
stat = await
|
|
1827
|
+
stat = await fs5.stat(lockPath);
|
|
1965
1828
|
} catch {
|
|
1966
1829
|
stat = null;
|
|
1967
1830
|
}
|
|
1968
1831
|
if (stat && Date.now() - stat.mtimeMs > staleMs) {
|
|
1969
|
-
await
|
|
1832
|
+
await fs5.rm(lockPath, { recursive: true, force: true });
|
|
1970
1833
|
continue;
|
|
1971
1834
|
}
|
|
1972
1835
|
await sleep(delayMs);
|
|
@@ -1978,7 +1841,7 @@ async function withExtensionInstallLock(settingsRoot, destinationDirectoryName,
|
|
|
1978
1841
|
try {
|
|
1979
1842
|
return await run();
|
|
1980
1843
|
} finally {
|
|
1981
|
-
await
|
|
1844
|
+
await fs5.rm(lockPath, { recursive: true, force: true }).catch(() => void 0);
|
|
1982
1845
|
}
|
|
1983
1846
|
}
|
|
1984
1847
|
async function resolveInstalledExtensionCandidate(installed, extensionTarget) {
|
|
@@ -2056,6 +1919,7 @@ function resolveAction(target, options) {
|
|
|
2056
1919
|
options.uninstall ? "uninstall" : null,
|
|
2057
1920
|
options.explore ? "explore" : null,
|
|
2058
1921
|
options.manage ? "manage" : null,
|
|
1922
|
+
options.describe ? "describe" : null,
|
|
2059
1923
|
options.reload ? "reload" : null,
|
|
2060
1924
|
options.doctor ? "doctor" : null,
|
|
2061
1925
|
options.catalog ? "catalog" : null,
|
|
@@ -2091,7 +1955,7 @@ function resolveAction(target, options) {
|
|
|
2091
1955
|
if (target === void 0) {
|
|
2092
1956
|
return "explore";
|
|
2093
1957
|
}
|
|
2094
|
-
throw new PmCliError("One action flag is required. Use one of: --install, --uninstall, --explore, --manage, --reload, --doctor, --catalog, --init/--scaffold, --adopt, --adopt-all, --activate, --deactivate. Bare `pm package` and `pm extension` default to --explore.", EXIT_CODE.USAGE);
|
|
1958
|
+
throw new PmCliError("One action flag is required. Use one of: --install, --uninstall, --explore, --manage, --describe, --reload, --doctor, --catalog, --init/--scaffold, --adopt, --adopt-all, --activate, --deactivate. Bare `pm package` and `pm extension` default to --explore.", EXIT_CODE.USAGE);
|
|
2095
1959
|
}
|
|
2096
1960
|
if (selected.length > 1) {
|
|
2097
1961
|
throw new PmCliError("Extension action flags are mutually exclusive.", EXIT_CODE.USAGE);
|
|
@@ -2156,7 +2020,7 @@ async function listInstalledExtensions(extensionsRoot, scope, settings, state) {
|
|
|
2156
2020
|
warnings: []
|
|
2157
2021
|
};
|
|
2158
2022
|
}
|
|
2159
|
-
const entries = await
|
|
2023
|
+
const entries = await fs5.readdir(extensionsRoot, { withFileTypes: true });
|
|
2160
2024
|
const directories = entries.filter((entry) => entry.isDirectory()).map((entry) => entry.name).sort((left, right) => left.localeCompare(right));
|
|
2161
2025
|
const managedByName = /* @__PURE__ */ new Map();
|
|
2162
2026
|
const managedByDirectory = /* @__PURE__ */ new Map();
|
|
@@ -2167,8 +2031,8 @@ async function listInstalledExtensions(extensionsRoot, scope, settings, state) {
|
|
|
2167
2031
|
const warnings = [];
|
|
2168
2032
|
const summaries = [];
|
|
2169
2033
|
for (const directoryName of directories) {
|
|
2170
|
-
const extensionDirectory =
|
|
2171
|
-
const manifestPath =
|
|
2034
|
+
const extensionDirectory = path5.join(extensionsRoot, directoryName);
|
|
2035
|
+
const manifestPath = path5.join(extensionDirectory, "manifest.json");
|
|
2172
2036
|
if (!await pathExists(manifestPath)) {
|
|
2173
2037
|
warnings.push(`extension_manifest_missing:${scope}:${directoryName}`);
|
|
2174
2038
|
const managedEntry2 = managedByDirectory.get(normalizeExtensionNameForMatch(directoryName));
|
|
@@ -2197,7 +2061,7 @@ async function listInstalledExtensions(extensionsRoot, scope, settings, state) {
|
|
|
2197
2061
|
}
|
|
2198
2062
|
let rawManifest;
|
|
2199
2063
|
try {
|
|
2200
|
-
rawManifest = JSON.parse(await
|
|
2064
|
+
rawManifest = JSON.parse(await fs5.readFile(manifestPath, "utf8"));
|
|
2201
2065
|
} catch {
|
|
2202
2066
|
warnings.push(`extension_manifest_invalid_json:${scope}:${directoryName}`);
|
|
2203
2067
|
continue;
|
|
@@ -2374,7 +2238,7 @@ async function adoptUnmanagedExtensions(extensionsRoot, scope, installedExtensio
|
|
|
2374
2238
|
let nextState = state;
|
|
2375
2239
|
const adoptedEntries = [];
|
|
2376
2240
|
for (const candidate of sortedCandidates) {
|
|
2377
|
-
const extensionDirectory =
|
|
2241
|
+
const extensionDirectory = path5.join(extensionsRoot, candidate.directory);
|
|
2378
2242
|
const validated = await validateExtensionDirectory(extensionDirectory);
|
|
2379
2243
|
const now = nowIso();
|
|
2380
2244
|
const sourceRecord = {
|
|
@@ -2476,6 +2340,9 @@ async function runExtension(target, options, global) {
|
|
|
2476
2340
|
if (options.fixManagedState === true && action !== "manage" && action !== "doctor") {
|
|
2477
2341
|
throw new PmCliError("--fix-managed-state is only valid with --manage or --doctor.", EXIT_CODE.USAGE);
|
|
2478
2342
|
}
|
|
2343
|
+
if (options.capability !== void 0 && action !== "init") {
|
|
2344
|
+
throw new PmCliError("--capability is only valid with --init/--scaffold.", EXIT_CODE.USAGE);
|
|
2345
|
+
}
|
|
2479
2346
|
const normalizedTarget = (() => {
|
|
2480
2347
|
const normalizedInput = target?.trim().toLowerCase();
|
|
2481
2348
|
if (action === "doctor" && normalizedInput === "doctor") {
|
|
@@ -2530,7 +2397,7 @@ async function runExtension(target, options, global) {
|
|
|
2530
2397
|
throw new PmCliError('Action "init" does not accept --gh/--github/--ref options.', EXIT_CODE.USAGE);
|
|
2531
2398
|
}
|
|
2532
2399
|
const scaffoldTarget = requireTarget(normalizedTarget, action);
|
|
2533
|
-
const scaffold = await scaffoldExtensionProject(scaffoldTarget, options.vocabulary ?? "extension");
|
|
2400
|
+
const scaffold = await scaffoldExtensionProject(scaffoldTarget, options.vocabulary ?? "extension", options.capability);
|
|
2534
2401
|
const quotedTargetPath = JSON.stringify(scaffold.target_path);
|
|
2535
2402
|
const quotedShellTargetPath = JSON.stringify(scaffold.target_path.replace(/\\/g, "/"));
|
|
2536
2403
|
return withResult({
|
|
@@ -2539,6 +2406,7 @@ async function runExtension(target, options, global) {
|
|
|
2539
2406
|
name: scaffold.extension_name,
|
|
2540
2407
|
command: scaffold.command_name
|
|
2541
2408
|
},
|
|
2409
|
+
capability: scaffold.capability,
|
|
2542
2410
|
target_path: scaffold.target_path,
|
|
2543
2411
|
created_directory: scaffold.created_directory,
|
|
2544
2412
|
files: scaffold.files,
|
|
@@ -2655,10 +2523,10 @@ async function runExtension(target, options, global) {
|
|
|
2655
2523
|
const settings = await readSettings(resolvedRoots.settings_root);
|
|
2656
2524
|
const managedStateRead = await readManagedExtensionState(resolvedRoots.selected_root);
|
|
2657
2525
|
warnings.push(...managedStateRead.warnings);
|
|
2658
|
-
const destinationDirectory =
|
|
2526
|
+
const destinationDirectory = path5.join(resolvedRoots.selected_root, destinationDirectoryName);
|
|
2659
2527
|
const destinationExists = await pathExists(destinationDirectory);
|
|
2660
2528
|
const installInPlace = await areDirectoriesEquivalent(validated.directory, destinationDirectory);
|
|
2661
|
-
await
|
|
2529
|
+
await fs5.mkdir(resolvedRoots.selected_root, { recursive: true });
|
|
2662
2530
|
if (!installInPlace) {
|
|
2663
2531
|
await copyExtensionDirectoryForInstall(validated.directory, destinationDirectory);
|
|
2664
2532
|
}
|
|
@@ -2805,7 +2673,7 @@ async function runExtension(target, options, global) {
|
|
|
2805
2673
|
}
|
|
2806
2674
|
});
|
|
2807
2675
|
}
|
|
2808
|
-
const extensionDirectory =
|
|
2676
|
+
const extensionDirectory = path5.join(resolvedRoots.selected_root, candidate.directory);
|
|
2809
2677
|
const validated = await validateExtensionDirectory(extensionDirectory);
|
|
2810
2678
|
const now = nowIso();
|
|
2811
2679
|
const sourceRecord = githubOption === void 0 ? {
|
|
@@ -2870,8 +2738,8 @@ async function runExtension(target, options, global) {
|
|
|
2870
2738
|
if (!candidate) {
|
|
2871
2739
|
throw new PmCliError(`Installed extension "${extensionTarget}" was not found in ${scope} scope.`, EXIT_CODE.NOT_FOUND);
|
|
2872
2740
|
}
|
|
2873
|
-
const destinationDirectory =
|
|
2874
|
-
await
|
|
2741
|
+
const destinationDirectory = path5.join(resolvedRoots.selected_root, candidate.directory);
|
|
2742
|
+
await fs5.rm(destinationDirectory, { recursive: true, force: true });
|
|
2875
2743
|
const updatedState = {
|
|
2876
2744
|
...managedStateRead.state,
|
|
2877
2745
|
updated_at: nowIso(),
|
|
@@ -2957,6 +2825,7 @@ async function runExtension(target, options, global) {
|
|
|
2957
2825
|
warnings.push(...classifyDoctorLoadFailureWarnings(loadResult.failed));
|
|
2958
2826
|
warnings.push(...activationResult.warnings);
|
|
2959
2827
|
warnings.push(...classifyDoctorActivationFailureWarnings(activationResult.failed));
|
|
2828
|
+
warnings.push(...classifyUnusedCapabilityWarnings(loadResult, activationResult));
|
|
2960
2829
|
warnings.push(...collectGlobalOutputOverrideDoctorWarnings(activationResult));
|
|
2961
2830
|
const runtimeInstalledExtensions = applyDoctorRuntimeActivationState(refreshedInstalled.extensions, loadResult, activationResult);
|
|
2962
2831
|
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);
|
|
@@ -3126,6 +2995,29 @@ async function runExtension(target, options, global) {
|
|
|
3126
2995
|
}
|
|
3127
2996
|
return withResult(details);
|
|
3128
2997
|
}
|
|
2998
|
+
if (action === "describe") {
|
|
2999
|
+
const settings = await readSettings(resolvedRoots.settings_root);
|
|
3000
|
+
const loadResult = await loadExtensions({
|
|
3001
|
+
pmRoot: resolvedRoots.pm_root,
|
|
3002
|
+
settings,
|
|
3003
|
+
cwd: process.cwd(),
|
|
3004
|
+
noExtensions: global.noExtensions === true
|
|
3005
|
+
});
|
|
3006
|
+
const activationResult = await activateExtensions(loadResult);
|
|
3007
|
+
warnings.push(...loadResult.warnings);
|
|
3008
|
+
warnings.push(...activationResult.warnings);
|
|
3009
|
+
const describeResult = buildExtensionDescribeResult(normalizedTarget, loadResult, activationResult);
|
|
3010
|
+
if (normalizedTarget !== void 0 && describeResult.extensions.length === 0) {
|
|
3011
|
+
const noun = options.vocabulary === "package" ? "package" : "extension";
|
|
3012
|
+
throw new PmCliError(`No loaded ${noun} named "${normalizedTarget}" was found in ${scope} scope. Run pm ${noun} explore to list discovered ${noun}s.`, EXIT_CODE.NOT_FOUND);
|
|
3013
|
+
}
|
|
3014
|
+
return withResult({
|
|
3015
|
+
target: describeResult.target,
|
|
3016
|
+
total: describeResult.total,
|
|
3017
|
+
extensions: describeResult.extensions,
|
|
3018
|
+
union: describeResult.union
|
|
3019
|
+
});
|
|
3020
|
+
}
|
|
3129
3021
|
if (action === "explore" || action === "manage") {
|
|
3130
3022
|
const settings = await readSettings(resolvedRoots.settings_root);
|
|
3131
3023
|
const configuredPolicy = buildExtensionPolicyDetails(settings.extensions.policy);
|
|
@@ -3274,6 +3166,6 @@ export {
|
|
|
3274
3166
|
runExtension,
|
|
3275
3167
|
_testOnly
|
|
3276
3168
|
};
|
|
3277
|
-
//# sourceMappingURL=chunk-
|
|
3169
|
+
//# sourceMappingURL=chunk-KQMUV6LX.js.map
|
|
3278
3170
|
|
|
3279
|
-
//# debugId=
|
|
3171
|
+
//# debugId=db37d572-333e-53e5-a56d-c59f51332387
|