@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.
Files changed (429) hide show
  1. package/CHANGELOG.md +44 -0
  2. package/dist/cli/commands/completion.js +7 -4
  3. package/dist/cli/commands/completion.js.map +1 -1
  4. package/dist/cli/commands/contracts.js +4 -3
  5. package/dist/cli/commands/contracts.js.map +1 -1
  6. package/dist/cli/commands/extension/describe.d.ts +70 -0
  7. package/dist/cli/commands/extension/describe.js +76 -0
  8. package/dist/cli/commands/extension/describe.js.map +1 -0
  9. package/dist/cli/commands/extension/doctor.d.ts +11 -0
  10. package/dist/cli/commands/extension/doctor.js +31 -2
  11. package/dist/cli/commands/extension/doctor.js.map +1 -1
  12. package/dist/cli/commands/extension/scaffold.d.ts +16 -2
  13. package/dist/cli/commands/extension/scaffold.js +529 -48
  14. package/dist/cli/commands/extension/scaffold.js.map +1 -1
  15. package/dist/cli/commands/extension.d.ts +3 -1
  16. package/dist/cli/commands/extension.js +35 -5
  17. package/dist/cli/commands/extension.js.map +1 -1
  18. package/dist/cli/help-content.js +20 -4
  19. package/dist/cli/help-content.js.map +1 -1
  20. package/dist/cli/register-setup.js +14 -2
  21. package/dist/cli/register-setup.js.map +1 -1
  22. package/dist/cli-bundle/chunks/{activity-KW3IRP44.js → activity-H2LMOSSW.js} +11 -11
  23. package/dist/cli-bundle/chunks/activity-XUZ2AHCW.js +18 -0
  24. package/dist/cli-bundle/chunks/{aggregate-3ZKQG5SW.js → aggregate-EGJLZQBI.js} +10 -10
  25. package/dist/cli-bundle/chunks/{aggregate-FIGQEIL3.js → aggregate-R725FC3S.js} +10 -10
  26. package/dist/cli-bundle/chunks/{append-EWJYJ7CH.js → append-5J345QGU.js} +8 -8
  27. package/dist/cli-bundle/chunks/{append-QEOLX3XB.js → append-O5HPBMRN.js} +8 -8
  28. package/dist/cli-bundle/chunks/{chunk-GOZUHWFD.js → chunk-2A34E3BA.js} +2 -2
  29. package/dist/cli-bundle/chunks/{chunk-A4Z7ZOL5.js → chunk-2BFPAUAF.js} +31 -15
  30. package/dist/cli-bundle/chunks/chunk-2BFPAUAF.js.map +1 -0
  31. package/dist/cli-bundle/chunks/{chunk-5QICDWMV.js → chunk-2CKH2LMV.js} +2 -2
  32. package/dist/cli-bundle/chunks/{chunk-WQ7NIVDK.js → chunk-2RDVQEWV.js} +4 -4
  33. package/dist/cli-bundle/chunks/{chunk-NSBZ2CKF.js → chunk-2T3JG6V4.js} +2 -2
  34. package/dist/cli-bundle/chunks/{chunk-76Z3YSHV.js → chunk-34EONI5F.js} +2 -2
  35. package/dist/cli-bundle/chunks/{chunk-PUH4D67U.js → chunk-3VY3YQO6.js} +2 -2
  36. package/dist/cli-bundle/chunks/{chunk-N5ZJACJ6.js → chunk-46G6RSB6.js} +8 -8
  37. package/dist/cli-bundle/chunks/{chunk-SRYYRVPB.js → chunk-4BHT5VDC.js} +2 -2
  38. package/dist/cli-bundle/chunks/{chunk-PFSRUHDH.js → chunk-4KD54S3Z.js} +9 -9
  39. package/dist/cli-bundle/chunks/{chunk-QQHISQBJ.js → chunk-55ISXAQH.js} +7 -4
  40. package/dist/cli-bundle/chunks/{chunk-QQHISQBJ.js.map → chunk-55ISXAQH.js.map} +2 -2
  41. package/dist/cli-bundle/chunks/{chunk-NIUEXCFS.js → chunk-5UVVASSA.js} +6 -6
  42. package/dist/cli-bundle/chunks/{chunk-CF55WVVS.js → chunk-5VOINNKT.js} +2 -2
  43. package/dist/cli-bundle/chunks/{chunk-NIGXMNNI.js → chunk-66MEDTUD.js} +2 -2
  44. package/dist/cli-bundle/chunks/{chunk-AZMOLBN3.js → chunk-7AUB5HNA.js} +7 -7
  45. package/dist/cli-bundle/chunks/{chunk-OTHIWLMB.js → chunk-7K2XXO4I.js} +5 -5
  46. package/dist/cli-bundle/chunks/{chunk-7D3SAQXM.js → chunk-7MRQ4HMK.js} +2 -2
  47. package/dist/cli-bundle/chunks/{chunk-EBH56IXK.js → chunk-7SV63ZHD.js} +8 -8
  48. package/dist/cli-bundle/chunks/{chunk-OFYMIDF2.js → chunk-7UGEAPRY.js} +9 -9
  49. package/dist/cli-bundle/chunks/{chunk-LUWW7L4B.js → chunk-7XGQXHFB.js} +3 -3
  50. package/dist/cli-bundle/chunks/{chunk-UEMNL33O.js → chunk-AD3A7ZD6.js} +8 -8
  51. package/dist/cli-bundle/chunks/{chunk-3EWSGA7N.js → chunk-AONIHR2C.js} +12 -12
  52. package/dist/cli-bundle/chunks/{chunk-RVHYI7SL.js → chunk-BB6MDVNQ.js} +8 -8
  53. package/dist/cli-bundle/chunks/chunk-C5AOG6D2.js +691 -0
  54. package/dist/cli-bundle/chunks/chunk-C5AOG6D2.js.map +1 -0
  55. package/dist/cli-bundle/chunks/{chunk-52OCIDPG.js → chunk-CE5P2NQR.js} +5 -5
  56. package/dist/cli-bundle/chunks/{chunk-NXS7ZKAK.js → chunk-CIIK67GW.js} +4 -4
  57. package/dist/cli-bundle/chunks/{chunk-HC4AWIKT.js → chunk-CKGNPJAG.js} +31 -15
  58. package/dist/cli-bundle/chunks/chunk-CKGNPJAG.js.map +7 -0
  59. package/dist/cli-bundle/chunks/{chunk-NB3PYLQ6.js → chunk-DT5LPYOD.js} +5 -5
  60. package/dist/cli-bundle/chunks/{chunk-37QXHBIB.js → chunk-FIGAZ4Y7.js} +3 -3
  61. package/dist/cli-bundle/chunks/{chunk-UV6IYE5U.js → chunk-FXR67XVQ.js} +2 -2
  62. package/dist/cli-bundle/chunks/{chunk-3MDHREEV.js → chunk-G6N5VEOK.js} +3 -3
  63. package/dist/cli-bundle/chunks/{chunk-5PCI3UBT.js → chunk-G6PYHBBR.js} +152 -253
  64. package/dist/cli-bundle/chunks/chunk-G6PYHBBR.js.map +7 -0
  65. package/dist/cli-bundle/chunks/{chunk-2GCDRRIF.js → chunk-GAJVRGGA.js} +12 -12
  66. package/dist/cli-bundle/chunks/{chunk-HCU6WUSY.js → chunk-H2IP4QLJ.js} +9 -9
  67. package/dist/cli-bundle/chunks/{chunk-CZUB4XWO.js → chunk-H4IIJDE4.js} +2 -2
  68. package/dist/cli-bundle/chunks/{chunk-RLK7P77C.js → chunk-HFFUQR73.js} +5 -5
  69. package/dist/cli-bundle/chunks/{chunk-6M4RJS4M.js → chunk-IB3GYLQE.js} +3 -3
  70. package/dist/cli-bundle/chunks/{chunk-SX75ADBK.js → chunk-IPKJ6B36.js} +6 -6
  71. package/dist/cli-bundle/chunks/{chunk-H7NJZWG2.js → chunk-JR2LV3M4.js} +13 -13
  72. package/dist/cli-bundle/chunks/{chunk-PP2U4NMT.js → chunk-KFWBJPSG.js} +5 -5
  73. package/dist/cli-bundle/chunks/{chunk-32R4PIC6.js → chunk-KQMUV6LX.js} +145 -253
  74. package/dist/cli-bundle/chunks/chunk-KQMUV6LX.js.map +1 -0
  75. package/dist/cli-bundle/chunks/{chunk-F7K5GWP3.js → chunk-LRKKONT2.js} +9 -9
  76. package/dist/cli-bundle/chunks/{chunk-5IDI42VV.js → chunk-M4T5DXD5.js} +7 -7
  77. package/dist/cli-bundle/chunks/{chunk-2PKHRP6G.js → chunk-MJTINN54.js} +10 -10
  78. package/dist/cli-bundle/chunks/{chunk-HMOADQVT.js → chunk-MJTSZKK5.js} +107 -3
  79. package/dist/cli-bundle/chunks/chunk-MJTSZKK5.js.map +7 -0
  80. package/dist/cli-bundle/chunks/chunk-MVKFOLLM.js +694 -0
  81. package/dist/cli-bundle/chunks/chunk-MVKFOLLM.js.map +7 -0
  82. package/dist/cli-bundle/chunks/{chunk-QGG32QHW.js → chunk-NCVCO3NZ.js} +3 -3
  83. package/dist/cli-bundle/chunks/{chunk-AIS5PGI3.js → chunk-NK3UPBVG.js} +2 -2
  84. package/dist/cli-bundle/chunks/{chunk-6H4LF7AO.js → chunk-O6LLO73I.js} +2 -2
  85. package/dist/cli-bundle/chunks/{chunk-YCJX76PW.js → chunk-P77P2ILI.js} +2 -2
  86. package/dist/cli-bundle/chunks/{chunk-F5NZWFSW.js → chunk-Q2KNGP7C.js} +7 -7
  87. package/dist/cli-bundle/chunks/{chunk-GMHPNNYG.js → chunk-QH3PJYON.js} +10 -10
  88. package/dist/cli-bundle/chunks/{chunk-NJHMAJ6N.js → chunk-QL5RVYOA.js} +8 -8
  89. package/dist/cli-bundle/chunks/{chunk-O47BPOPC.js → chunk-S26C36QC.js} +2 -2
  90. package/dist/cli-bundle/chunks/{chunk-D7FYS6PG.js → chunk-S2RUQSX2.js} +2 -2
  91. package/dist/cli-bundle/chunks/{chunk-CZPXY7UW.js → chunk-SBQTAVJZ.js} +3 -3
  92. package/dist/cli-bundle/chunks/{chunk-M5XALUSL.js → chunk-SKH7OGE5.js} +2 -2
  93. package/dist/cli-bundle/chunks/{chunk-NJN7LL7U.js → chunk-SKN7LC5W.js} +5 -5
  94. package/dist/cli-bundle/chunks/{chunk-6ZXM2XNF.js → chunk-SR3EKWZG.js} +8 -8
  95. package/dist/cli-bundle/chunks/{chunk-B473GZWW.js → chunk-T5472OMV.js} +3 -3
  96. package/dist/cli-bundle/chunks/{chunk-2EIMPCE4.js → chunk-T72AZDBA.js} +3 -3
  97. package/dist/cli-bundle/chunks/{chunk-6CJWZAN7.js → chunk-TQZH6OD6.js} +7 -7
  98. package/dist/cli-bundle/chunks/{chunk-FWPDUYEY.js → chunk-U2Z5YUSO.js} +7 -7
  99. package/dist/cli-bundle/chunks/{chunk-434HM6Z5.js → chunk-UELRKQQU.js} +100 -3
  100. package/dist/cli-bundle/chunks/chunk-UELRKQQU.js.map +1 -0
  101. package/dist/cli-bundle/chunks/{chunk-HIP7WVTL.js → chunk-UVC5LOR7.js} +4 -4
  102. package/dist/cli-bundle/chunks/{chunk-LEU5GHRC.js → chunk-VAYA4XFX.js} +3 -3
  103. package/dist/cli-bundle/chunks/{chunk-J4MYYSOL.js → chunk-VFAQ4LMN.js} +5 -5
  104. package/dist/cli-bundle/chunks/{chunk-UPE3CDD7.js → chunk-W72GHSJE.js} +7 -7
  105. package/dist/cli-bundle/chunks/{chunk-C4N5I7ZW.js → chunk-WBRKK5QR.js} +3 -3
  106. package/dist/cli-bundle/chunks/{chunk-Z6T4PQI2.js → chunk-WM5ZVBPE.js} +4 -4
  107. package/dist/cli-bundle/chunks/{chunk-TKBHZPKD.js → chunk-WZQWHN4R.js} +3 -3
  108. package/dist/cli-bundle/chunks/{chunk-FKBDKV7Y.js → chunk-XVF4YARA.js} +3 -3
  109. package/dist/cli-bundle/chunks/{chunk-SBGXDO7A.js → chunk-Y4SUQQYH.js} +8 -5
  110. package/dist/cli-bundle/chunks/{chunk-SBGXDO7A.js.map → chunk-Y4SUQQYH.js.map} +1 -1
  111. package/dist/cli-bundle/chunks/{chunk-QZTWBFXJ.js → chunk-YDEXO24S.js} +2 -2
  112. package/dist/cli-bundle/chunks/{chunk-FRUFKWNK.js → chunk-YJ3SUEPD.js} +2 -2
  113. package/dist/cli-bundle/chunks/{chunk-5FIEHKEX.js → chunk-YUDJD3XO.js} +5 -5
  114. package/dist/cli-bundle/chunks/{chunk-Q2J2HJUN.js → chunk-ZQ3ZVXX2.js} +2 -2
  115. package/dist/cli-bundle/chunks/{chunk-C3AZ5ZML.js → chunk-ZRK4O56R.js} +13 -13
  116. package/dist/cli-bundle/chunks/{claim-RC56YUWG.js → claim-4KHAA2RN.js} +10 -10
  117. package/dist/cli-bundle/chunks/{claim-THOJ6CMV.js → claim-CSPJFLNH.js} +10 -10
  118. package/dist/cli-bundle/chunks/close-A3EMKBBY.js +15 -0
  119. package/dist/cli-bundle/chunks/{close-SG5MNCVQ.js → close-W56IOGYG.js} +8 -8
  120. package/dist/cli-bundle/chunks/{close-many-3L3AQZBU.js → close-many-BX5DCSVV.js} +15 -15
  121. package/dist/cli-bundle/chunks/{close-many-DKQLBGLV.js → close-many-TQU5F4E4.js} +15 -15
  122. package/dist/cli-bundle/chunks/{comments-M7ZOZNBX.js → comments-U5KUC4EU.js} +10 -10
  123. package/dist/cli-bundle/chunks/{comments-SKWMDWCW.js → comments-VRECH75R.js} +10 -10
  124. package/dist/cli-bundle/chunks/{config-OZCUABPB.js → config-D3OKQO52.js} +8 -8
  125. package/dist/cli-bundle/chunks/{config-7CK62S7T.js → config-MMJA4LLK.js} +8 -8
  126. package/dist/cli-bundle/chunks/{context-PUG2A7RC.js → context-BLBD3PUB.js} +13 -13
  127. package/dist/cli-bundle/chunks/{context-OEC366TO.js → context-DHLVPXN3.js} +13 -13
  128. package/dist/cli-bundle/chunks/{contracts-3THOLA7L.js → contracts-C3SZCXXG.js} +7 -5
  129. package/dist/cli-bundle/chunks/contracts-C3SZCXXG.js.map +7 -0
  130. package/dist/cli-bundle/chunks/{contracts-N65FXEOL.js → contracts-XGVMMPC5.js} +8 -6
  131. package/dist/cli-bundle/chunks/contracts-XGVMMPC5.js.map +1 -0
  132. package/dist/cli-bundle/chunks/{copy-JPX7VZCH.js → copy-5D5DX3VK.js} +7 -7
  133. package/dist/cli-bundle/chunks/{copy-6QLHILAC.js → copy-HHL3K4QP.js} +7 -7
  134. package/dist/cli-bundle/chunks/{create-Y54ZVVZH.js → create-IXY43O4H.js} +14 -14
  135. package/dist/cli-bundle/chunks/create-QVGFYA2X.js +30 -0
  136. package/dist/cli-bundle/chunks/{delete-63PCMQAJ.js → delete-IBUR3M42.js} +7 -7
  137. package/dist/cli-bundle/chunks/{delete-GDSMGAGJ.js → delete-QQC2FGUH.js} +7 -7
  138. package/dist/cli-bundle/chunks/{deps-XYQ73XRH.js → deps-KWKRHXIN.js} +7 -7
  139. package/dist/cli-bundle/chunks/{deps-T4ZF5G54.js → deps-VTPO4BSE.js} +7 -7
  140. package/dist/cli-bundle/chunks/{docs-EHNPDWUL.js → docs-7CHFHXLN.js} +9 -9
  141. package/dist/cli-bundle/chunks/{docs-C75YIXHC.js → docs-IIO3FEUO.js} +9 -9
  142. package/dist/cli-bundle/chunks/{eval-GTENKE24.js → eval-CEYYEPSX.js} +12 -12
  143. package/dist/cli-bundle/chunks/{eval-3WKDTRMH.js → eval-IO7LREOL.js} +12 -12
  144. package/dist/cli-bundle/chunks/{extension-D5FDZ2CO.js → extension-KCPUWSY2.js} +6 -5
  145. package/dist/cli-bundle/chunks/{extension-46NWACO3.js → extension-UTTQDUYI.js} +6 -5
  146. package/dist/cli-bundle/chunks/{files-X3H7CCBQ.js → files-TPUL6KWB.js} +9 -9
  147. package/dist/cli-bundle/chunks/{files-DSZBOSSN.js → files-Z2HHEFGP.js} +9 -9
  148. package/dist/cli-bundle/chunks/{focus-5STQXDPU.js → focus-JVJCGC2D.js} +8 -8
  149. package/dist/cli-bundle/chunks/{focus-MDVPOWB5.js → focus-YRNNH7IP.js} +8 -8
  150. package/dist/cli-bundle/chunks/{gc-ZMST3WQP.js → gc-O5GUO3SU.js} +3 -3
  151. package/dist/cli-bundle/chunks/{gc-ZC7JHBG7.js → gc-PYVVEELM.js} +3 -3
  152. package/dist/cli-bundle/chunks/{get-NT7L2HUZ.js → get-ENLTEGTX.js} +11 -11
  153. package/dist/cli-bundle/chunks/{get-J2IPJRZW.js → get-X4O3HBEY.js} +11 -11
  154. package/dist/cli-bundle/chunks/{health-WOYBR3KU.js → health-5EXTY44Q.js} +14 -13
  155. package/dist/cli-bundle/chunks/{health-WOYBR3KU.js.map → health-5EXTY44Q.js.map} +1 -1
  156. package/dist/cli-bundle/chunks/{health-IVMA3XQC.js → health-BOTB7YSU.js} +16 -15
  157. package/dist/cli-bundle/chunks/{health-IVMA3XQC.js.map → health-BOTB7YSU.js.map} +1 -1
  158. package/dist/cli-bundle/chunks/{history-RLH2QCRO.js → history-AJTXLT6S.js} +10 -10
  159. package/dist/cli-bundle/chunks/history-AK3E5Z3C.js +20 -0
  160. package/dist/cli-bundle/chunks/{history-compact-UXDIFC33.js → history-compact-43OOUAWD.js} +12 -12
  161. package/dist/cli-bundle/chunks/{history-compact-ZBEBGJM7.js → history-compact-46MRHW3I.js} +12 -12
  162. package/dist/cli-bundle/chunks/{history-redact-P7I7AWMB.js → history-redact-KUUUVUFM.js} +11 -11
  163. package/dist/cli-bundle/chunks/history-redact-TWIYQV5J.js +21 -0
  164. package/dist/cli-bundle/chunks/{history-repair-52KINVIK.js → history-repair-B5PZBOPU.js} +12 -12
  165. package/dist/cli-bundle/chunks/{history-repair-RM5ITLU5.js → history-repair-VQTYOSRS.js} +12 -12
  166. package/dist/cli-bundle/chunks/{init-2BNZOO6F.js → init-BNLVFPRG.js} +11 -10
  167. package/dist/cli-bundle/chunks/init-RCRKW5PL.js +21 -0
  168. package/dist/cli-bundle/chunks/{learnings-YGYVHWJK.js → learnings-MUUU5KMC.js} +10 -10
  169. package/dist/cli-bundle/chunks/{learnings-W6F3FIPL.js → learnings-XSGX52S7.js} +10 -10
  170. package/dist/cli-bundle/chunks/{list-K6FPV4J4.js → list-32U7BSKE.js} +10 -10
  171. package/dist/cli-bundle/chunks/{list-KPAYU5KZ.js → list-ZEEOHLTQ.js} +10 -10
  172. package/dist/cli-bundle/chunks/{notes-PU74EPKV.js → notes-NJ45OZGF.js} +10 -10
  173. package/dist/cli-bundle/chunks/{notes-YTD6ZILW.js → notes-OHU25L3M.js} +10 -10
  174. package/dist/cli-bundle/chunks/{plan-GEQYUCBW.js → plan-KQA7CAKI.js} +14 -14
  175. package/dist/cli-bundle/chunks/{plan-FNXHXRCI.js → plan-LWWAEV5Y.js} +14 -14
  176. package/dist/cli-bundle/chunks/{register-list-query-QI45RMKN.js → register-list-query-DDCHPONM.js} +19 -19
  177. package/dist/cli-bundle/chunks/{register-list-query-PHWYHENI.js → register-list-query-YNPBVIKM.js} +19 -19
  178. package/dist/cli-bundle/chunks/{register-mutation-YINRTS7L.js → register-mutation-7ALWDDAX.js} +33 -33
  179. package/dist/cli-bundle/chunks/{register-mutation-X3BUOQEL.js → register-mutation-LAVKYY63.js} +33 -33
  180. package/dist/cli-bundle/chunks/{register-operations-E5JEASRK.js → register-operations-R4VOQ6EF.js} +32 -32
  181. package/dist/cli-bundle/chunks/{register-operations-MIDTRW7S.js → register-operations-U5JAW3WE.js} +32 -32
  182. package/dist/cli-bundle/chunks/{register-setup-EG2U6CEU.js → register-setup-KBXQDCXE.js} +27 -18
  183. package/dist/cli-bundle/chunks/register-setup-KBXQDCXE.js.map +7 -0
  184. package/dist/cli-bundle/chunks/{register-setup-DYBFLEZX.js → register-setup-RCRUHMSZ.js} +28 -19
  185. package/dist/cli-bundle/chunks/register-setup-RCRUHMSZ.js.map +1 -0
  186. package/dist/cli-bundle/chunks/restore-2ZKT6UDC.js +19 -0
  187. package/dist/cli-bundle/chunks/{restore-XQYSWBV7.js → restore-6K53WOWO.js} +11 -11
  188. package/dist/cli-bundle/chunks/{scheduling-shortcuts-NNT5ASZR.js → scheduling-shortcuts-NJ5UVJFB.js} +14 -14
  189. package/dist/cli-bundle/chunks/{scheduling-shortcuts-HJMTEXKE.js → scheduling-shortcuts-OQVJXG3M.js} +14 -14
  190. package/dist/cli-bundle/chunks/{schema-263RI4WW.js → schema-MNTAVQCY.js} +9 -9
  191. package/dist/cli-bundle/chunks/{schema-TZXW6XWD.js → schema-RBTJ2YXW.js} +9 -9
  192. package/dist/cli-bundle/chunks/{search-SFRJOVDG.js → search-6HOIVZDU.js} +12 -12
  193. package/dist/cli-bundle/chunks/{search-LECJYSXE.js → search-ZWYEMASC.js} +12 -12
  194. package/dist/cli-bundle/chunks/{stats-N7ER2PNK.js → stats-FS742AMA.js} +8 -8
  195. package/dist/cli-bundle/chunks/{stats-VPBGSRQH.js → stats-R5OAJVZK.js} +8 -8
  196. package/dist/cli-bundle/chunks/{telemetry-PP3FUNBU.js → telemetry-7DIGDQUO.js} +4 -4
  197. package/dist/cli-bundle/chunks/{telemetry-L6K3BUIQ.js → telemetry-FWEXSJLQ.js} +4 -4
  198. package/dist/cli-bundle/chunks/{test-3EGNS3T5.js → test-NZF7OT2F.js} +16 -15
  199. package/dist/cli-bundle/chunks/test-QJXLKV26.js +36 -0
  200. package/dist/cli-bundle/chunks/{test-all-NJ5V2QFS.js → test-all-DPN62TX7.js} +16 -15
  201. package/dist/cli-bundle/chunks/{test-all-NJ5V2QFS.js.map → test-all-DPN62TX7.js.map} +1 -1
  202. package/dist/cli-bundle/chunks/{test-all-ZHFAWNC3.js → test-all-KL7TLMJF.js} +18 -17
  203. package/dist/cli-bundle/chunks/{test-all-ZHFAWNC3.js.map → test-all-KL7TLMJF.js.map} +1 -1
  204. package/dist/cli-bundle/chunks/{test-runs-GN3C6GOI.js → test-runs-C6CFIVOS.js} +5 -5
  205. package/dist/cli-bundle/chunks/{test-runs-AJHR6IQF.js → test-runs-IAJDL6CA.js} +5 -5
  206. package/dist/cli-bundle/chunks/update-2XCQNOD6.js +28 -0
  207. package/dist/cli-bundle/chunks/update-IWUCXVH2.js +24 -0
  208. package/dist/cli-bundle/chunks/{update-many-RYQ64CFW.js → update-many-MUTIOAP3.js} +23 -23
  209. package/dist/cli-bundle/chunks/{update-many-N2AN6ZDH.js → update-many-YEH2DQL6.js} +23 -23
  210. package/dist/cli-bundle/chunks/{upgrade-VPCIYAVW.js → upgrade-HYJ3SWWU.js} +8 -7
  211. package/dist/cli-bundle/chunks/{upgrade-VPCIYAVW.js.map → upgrade-HYJ3SWWU.js.map} +1 -1
  212. package/dist/cli-bundle/chunks/{upgrade-TJXFLZIX.js → upgrade-UBNLBZNR.js} +6 -5
  213. package/dist/cli-bundle/chunks/{upgrade-TJXFLZIX.js.map → upgrade-UBNLBZNR.js.map} +1 -1
  214. package/dist/cli-bundle/chunks/{validate-PHKIYGSY.js → validate-6QWQVCX2.js} +21 -20
  215. package/dist/cli-bundle/chunks/{validate-PHKIYGSY.js.map → validate-6QWQVCX2.js.map} +1 -1
  216. package/dist/cli-bundle/chunks/{validate-JMNWEUYF.js → validate-W5V5ZGQX.js} +23 -22
  217. package/dist/cli-bundle/chunks/{validate-JMNWEUYF.js.map → validate-W5V5ZGQX.js.map} +1 -1
  218. package/dist/cli-bundle/main.js +38 -22
  219. package/dist/cli-bundle/main.js.map +2 -2
  220. package/dist/cli.js +3 -3
  221. package/dist/cli.js.map +1 -1
  222. package/dist/core/extensions/activation-summary.d.ts +109 -0
  223. package/dist/core/extensions/activation-summary.js +60 -0
  224. package/dist/core/extensions/activation-summary.js.map +1 -0
  225. package/dist/core/extensions/capability-usage.d.ts +92 -0
  226. package/dist/core/extensions/capability-usage.js +142 -0
  227. package/dist/core/extensions/capability-usage.js.map +1 -0
  228. package/dist/core/extensions/extension-capability-aliases.d.ts +7 -0
  229. package/dist/core/extensions/extension-capability-aliases.js +12 -2
  230. package/dist/core/extensions/extension-capability-aliases.js.map +1 -1
  231. package/dist/core/extensions/index.d.ts +1 -0
  232. package/dist/core/extensions/index.js +3 -2
  233. package/dist/core/extensions/index.js.map +1 -1
  234. package/dist/core/telemetry/runtime.js +5 -2
  235. package/dist/core/telemetry/runtime.js.map +1 -1
  236. package/dist/sdk/cli-contracts/enum-contracts.d.ts +1 -1
  237. package/dist/sdk/cli-contracts/enum-contracts.js +4 -2
  238. package/dist/sdk/cli-contracts/enum-contracts.js.map +1 -1
  239. package/dist/sdk/cli-contracts.d.ts +2 -0
  240. package/dist/sdk/cli-contracts.js +26 -13
  241. package/dist/sdk/cli-contracts.js.map +1 -1
  242. package/dist/sdk/compose.d.ts +297 -0
  243. package/dist/sdk/compose.js +420 -0
  244. package/dist/sdk/compose.js.map +1 -0
  245. package/dist/sdk/define.d.ts +194 -0
  246. package/dist/sdk/define.js +205 -0
  247. package/dist/sdk/define.js.map +1 -0
  248. package/dist/sdk/index.d.ts +8 -26
  249. package/dist/sdk/index.js +8 -10
  250. package/dist/sdk/index.js.map +1 -1
  251. package/dist/sdk/testing.d.ts +667 -2
  252. package/dist/sdk/testing.js +654 -18
  253. package/dist/sdk/testing.js.map +1 -1
  254. package/docs/COMMANDS.md +1 -0
  255. package/docs/EXTENSIONS.md +10 -11
  256. package/docs/SDK.md +502 -16
  257. package/package.json +2 -2
  258. package/dist/cli-bundle/chunks/activity-CIHV64UC.js +0 -18
  259. package/dist/cli-bundle/chunks/chunk-32R4PIC6.js.map +0 -1
  260. package/dist/cli-bundle/chunks/chunk-434HM6Z5.js.map +0 -1
  261. package/dist/cli-bundle/chunks/chunk-5PCI3UBT.js.map +0 -7
  262. package/dist/cli-bundle/chunks/chunk-A4Z7ZOL5.js.map +0 -1
  263. package/dist/cli-bundle/chunks/chunk-HC4AWIKT.js.map +0 -7
  264. package/dist/cli-bundle/chunks/chunk-HMOADQVT.js.map +0 -7
  265. package/dist/cli-bundle/chunks/close-DNMHGOCX.js +0 -15
  266. package/dist/cli-bundle/chunks/contracts-3THOLA7L.js.map +0 -7
  267. package/dist/cli-bundle/chunks/contracts-N65FXEOL.js.map +0 -1
  268. package/dist/cli-bundle/chunks/create-NNP6TSFO.js +0 -30
  269. package/dist/cli-bundle/chunks/history-WX3MGFS2.js +0 -20
  270. package/dist/cli-bundle/chunks/history-redact-YQGU3XRA.js +0 -21
  271. package/dist/cli-bundle/chunks/init-SC2P6CHP.js +0 -20
  272. package/dist/cli-bundle/chunks/register-setup-DYBFLEZX.js.map +0 -1
  273. package/dist/cli-bundle/chunks/register-setup-EG2U6CEU.js.map +0 -7
  274. package/dist/cli-bundle/chunks/restore-5KHR2YYQ.js +0 -19
  275. package/dist/cli-bundle/chunks/test-RQCTSWUK.js +0 -35
  276. package/dist/cli-bundle/chunks/update-6YXOGHRT.js +0 -24
  277. package/dist/cli-bundle/chunks/update-V33YUBRP.js +0 -28
  278. /package/dist/cli-bundle/chunks/{activity-KW3IRP44.js.map → activity-H2LMOSSW.js.map} +0 -0
  279. /package/dist/cli-bundle/chunks/{activity-CIHV64UC.js.map → activity-XUZ2AHCW.js.map} +0 -0
  280. /package/dist/cli-bundle/chunks/{aggregate-3ZKQG5SW.js.map → aggregate-EGJLZQBI.js.map} +0 -0
  281. /package/dist/cli-bundle/chunks/{aggregate-FIGQEIL3.js.map → aggregate-R725FC3S.js.map} +0 -0
  282. /package/dist/cli-bundle/chunks/{append-EWJYJ7CH.js.map → append-5J345QGU.js.map} +0 -0
  283. /package/dist/cli-bundle/chunks/{append-QEOLX3XB.js.map → append-O5HPBMRN.js.map} +0 -0
  284. /package/dist/cli-bundle/chunks/{chunk-GOZUHWFD.js.map → chunk-2A34E3BA.js.map} +0 -0
  285. /package/dist/cli-bundle/chunks/{chunk-5QICDWMV.js.map → chunk-2CKH2LMV.js.map} +0 -0
  286. /package/dist/cli-bundle/chunks/{chunk-WQ7NIVDK.js.map → chunk-2RDVQEWV.js.map} +0 -0
  287. /package/dist/cli-bundle/chunks/{chunk-NSBZ2CKF.js.map → chunk-2T3JG6V4.js.map} +0 -0
  288. /package/dist/cli-bundle/chunks/{chunk-76Z3YSHV.js.map → chunk-34EONI5F.js.map} +0 -0
  289. /package/dist/cli-bundle/chunks/{chunk-PUH4D67U.js.map → chunk-3VY3YQO6.js.map} +0 -0
  290. /package/dist/cli-bundle/chunks/{chunk-N5ZJACJ6.js.map → chunk-46G6RSB6.js.map} +0 -0
  291. /package/dist/cli-bundle/chunks/{chunk-SRYYRVPB.js.map → chunk-4BHT5VDC.js.map} +0 -0
  292. /package/dist/cli-bundle/chunks/{chunk-PFSRUHDH.js.map → chunk-4KD54S3Z.js.map} +0 -0
  293. /package/dist/cli-bundle/chunks/{chunk-NIUEXCFS.js.map → chunk-5UVVASSA.js.map} +0 -0
  294. /package/dist/cli-bundle/chunks/{chunk-CF55WVVS.js.map → chunk-5VOINNKT.js.map} +0 -0
  295. /package/dist/cli-bundle/chunks/{chunk-NIGXMNNI.js.map → chunk-66MEDTUD.js.map} +0 -0
  296. /package/dist/cli-bundle/chunks/{chunk-AZMOLBN3.js.map → chunk-7AUB5HNA.js.map} +0 -0
  297. /package/dist/cli-bundle/chunks/{chunk-OTHIWLMB.js.map → chunk-7K2XXO4I.js.map} +0 -0
  298. /package/dist/cli-bundle/chunks/{chunk-7D3SAQXM.js.map → chunk-7MRQ4HMK.js.map} +0 -0
  299. /package/dist/cli-bundle/chunks/{chunk-EBH56IXK.js.map → chunk-7SV63ZHD.js.map} +0 -0
  300. /package/dist/cli-bundle/chunks/{chunk-OFYMIDF2.js.map → chunk-7UGEAPRY.js.map} +0 -0
  301. /package/dist/cli-bundle/chunks/{chunk-LUWW7L4B.js.map → chunk-7XGQXHFB.js.map} +0 -0
  302. /package/dist/cli-bundle/chunks/{chunk-UEMNL33O.js.map → chunk-AD3A7ZD6.js.map} +0 -0
  303. /package/dist/cli-bundle/chunks/{chunk-3EWSGA7N.js.map → chunk-AONIHR2C.js.map} +0 -0
  304. /package/dist/cli-bundle/chunks/{chunk-RVHYI7SL.js.map → chunk-BB6MDVNQ.js.map} +0 -0
  305. /package/dist/cli-bundle/chunks/{chunk-52OCIDPG.js.map → chunk-CE5P2NQR.js.map} +0 -0
  306. /package/dist/cli-bundle/chunks/{chunk-NXS7ZKAK.js.map → chunk-CIIK67GW.js.map} +0 -0
  307. /package/dist/cli-bundle/chunks/{chunk-NB3PYLQ6.js.map → chunk-DT5LPYOD.js.map} +0 -0
  308. /package/dist/cli-bundle/chunks/{chunk-37QXHBIB.js.map → chunk-FIGAZ4Y7.js.map} +0 -0
  309. /package/dist/cli-bundle/chunks/{chunk-UV6IYE5U.js.map → chunk-FXR67XVQ.js.map} +0 -0
  310. /package/dist/cli-bundle/chunks/{chunk-3MDHREEV.js.map → chunk-G6N5VEOK.js.map} +0 -0
  311. /package/dist/cli-bundle/chunks/{chunk-2GCDRRIF.js.map → chunk-GAJVRGGA.js.map} +0 -0
  312. /package/dist/cli-bundle/chunks/{chunk-HCU6WUSY.js.map → chunk-H2IP4QLJ.js.map} +0 -0
  313. /package/dist/cli-bundle/chunks/{chunk-CZUB4XWO.js.map → chunk-H4IIJDE4.js.map} +0 -0
  314. /package/dist/cli-bundle/chunks/{chunk-RLK7P77C.js.map → chunk-HFFUQR73.js.map} +0 -0
  315. /package/dist/cli-bundle/chunks/{chunk-6M4RJS4M.js.map → chunk-IB3GYLQE.js.map} +0 -0
  316. /package/dist/cli-bundle/chunks/{chunk-SX75ADBK.js.map → chunk-IPKJ6B36.js.map} +0 -0
  317. /package/dist/cli-bundle/chunks/{chunk-H7NJZWG2.js.map → chunk-JR2LV3M4.js.map} +0 -0
  318. /package/dist/cli-bundle/chunks/{chunk-PP2U4NMT.js.map → chunk-KFWBJPSG.js.map} +0 -0
  319. /package/dist/cli-bundle/chunks/{chunk-F7K5GWP3.js.map → chunk-LRKKONT2.js.map} +0 -0
  320. /package/dist/cli-bundle/chunks/{chunk-5IDI42VV.js.map → chunk-M4T5DXD5.js.map} +0 -0
  321. /package/dist/cli-bundle/chunks/{chunk-2PKHRP6G.js.map → chunk-MJTINN54.js.map} +0 -0
  322. /package/dist/cli-bundle/chunks/{chunk-QGG32QHW.js.map → chunk-NCVCO3NZ.js.map} +0 -0
  323. /package/dist/cli-bundle/chunks/{chunk-AIS5PGI3.js.map → chunk-NK3UPBVG.js.map} +0 -0
  324. /package/dist/cli-bundle/chunks/{chunk-6H4LF7AO.js.map → chunk-O6LLO73I.js.map} +0 -0
  325. /package/dist/cli-bundle/chunks/{chunk-YCJX76PW.js.map → chunk-P77P2ILI.js.map} +0 -0
  326. /package/dist/cli-bundle/chunks/{chunk-F5NZWFSW.js.map → chunk-Q2KNGP7C.js.map} +0 -0
  327. /package/dist/cli-bundle/chunks/{chunk-GMHPNNYG.js.map → chunk-QH3PJYON.js.map} +0 -0
  328. /package/dist/cli-bundle/chunks/{chunk-NJHMAJ6N.js.map → chunk-QL5RVYOA.js.map} +0 -0
  329. /package/dist/cli-bundle/chunks/{chunk-O47BPOPC.js.map → chunk-S26C36QC.js.map} +0 -0
  330. /package/dist/cli-bundle/chunks/{chunk-D7FYS6PG.js.map → chunk-S2RUQSX2.js.map} +0 -0
  331. /package/dist/cli-bundle/chunks/{chunk-CZPXY7UW.js.map → chunk-SBQTAVJZ.js.map} +0 -0
  332. /package/dist/cli-bundle/chunks/{chunk-M5XALUSL.js.map → chunk-SKH7OGE5.js.map} +0 -0
  333. /package/dist/cli-bundle/chunks/{chunk-NJN7LL7U.js.map → chunk-SKN7LC5W.js.map} +0 -0
  334. /package/dist/cli-bundle/chunks/{chunk-6ZXM2XNF.js.map → chunk-SR3EKWZG.js.map} +0 -0
  335. /package/dist/cli-bundle/chunks/{chunk-B473GZWW.js.map → chunk-T5472OMV.js.map} +0 -0
  336. /package/dist/cli-bundle/chunks/{chunk-2EIMPCE4.js.map → chunk-T72AZDBA.js.map} +0 -0
  337. /package/dist/cli-bundle/chunks/{chunk-6CJWZAN7.js.map → chunk-TQZH6OD6.js.map} +0 -0
  338. /package/dist/cli-bundle/chunks/{chunk-FWPDUYEY.js.map → chunk-U2Z5YUSO.js.map} +0 -0
  339. /package/dist/cli-bundle/chunks/{chunk-HIP7WVTL.js.map → chunk-UVC5LOR7.js.map} +0 -0
  340. /package/dist/cli-bundle/chunks/{chunk-LEU5GHRC.js.map → chunk-VAYA4XFX.js.map} +0 -0
  341. /package/dist/cli-bundle/chunks/{chunk-J4MYYSOL.js.map → chunk-VFAQ4LMN.js.map} +0 -0
  342. /package/dist/cli-bundle/chunks/{chunk-UPE3CDD7.js.map → chunk-W72GHSJE.js.map} +0 -0
  343. /package/dist/cli-bundle/chunks/{chunk-C4N5I7ZW.js.map → chunk-WBRKK5QR.js.map} +0 -0
  344. /package/dist/cli-bundle/chunks/{chunk-Z6T4PQI2.js.map → chunk-WM5ZVBPE.js.map} +0 -0
  345. /package/dist/cli-bundle/chunks/{chunk-TKBHZPKD.js.map → chunk-WZQWHN4R.js.map} +0 -0
  346. /package/dist/cli-bundle/chunks/{chunk-FKBDKV7Y.js.map → chunk-XVF4YARA.js.map} +0 -0
  347. /package/dist/cli-bundle/chunks/{chunk-QZTWBFXJ.js.map → chunk-YDEXO24S.js.map} +0 -0
  348. /package/dist/cli-bundle/chunks/{chunk-FRUFKWNK.js.map → chunk-YJ3SUEPD.js.map} +0 -0
  349. /package/dist/cli-bundle/chunks/{chunk-5FIEHKEX.js.map → chunk-YUDJD3XO.js.map} +0 -0
  350. /package/dist/cli-bundle/chunks/{chunk-Q2J2HJUN.js.map → chunk-ZQ3ZVXX2.js.map} +0 -0
  351. /package/dist/cli-bundle/chunks/{chunk-C3AZ5ZML.js.map → chunk-ZRK4O56R.js.map} +0 -0
  352. /package/dist/cli-bundle/chunks/{claim-RC56YUWG.js.map → claim-4KHAA2RN.js.map} +0 -0
  353. /package/dist/cli-bundle/chunks/{claim-THOJ6CMV.js.map → claim-CSPJFLNH.js.map} +0 -0
  354. /package/dist/cli-bundle/chunks/{close-DNMHGOCX.js.map → close-A3EMKBBY.js.map} +0 -0
  355. /package/dist/cli-bundle/chunks/{close-SG5MNCVQ.js.map → close-W56IOGYG.js.map} +0 -0
  356. /package/dist/cli-bundle/chunks/{close-many-3L3AQZBU.js.map → close-many-BX5DCSVV.js.map} +0 -0
  357. /package/dist/cli-bundle/chunks/{close-many-DKQLBGLV.js.map → close-many-TQU5F4E4.js.map} +0 -0
  358. /package/dist/cli-bundle/chunks/{comments-M7ZOZNBX.js.map → comments-U5KUC4EU.js.map} +0 -0
  359. /package/dist/cli-bundle/chunks/{comments-SKWMDWCW.js.map → comments-VRECH75R.js.map} +0 -0
  360. /package/dist/cli-bundle/chunks/{config-OZCUABPB.js.map → config-D3OKQO52.js.map} +0 -0
  361. /package/dist/cli-bundle/chunks/{config-7CK62S7T.js.map → config-MMJA4LLK.js.map} +0 -0
  362. /package/dist/cli-bundle/chunks/{context-PUG2A7RC.js.map → context-BLBD3PUB.js.map} +0 -0
  363. /package/dist/cli-bundle/chunks/{context-OEC366TO.js.map → context-DHLVPXN3.js.map} +0 -0
  364. /package/dist/cli-bundle/chunks/{copy-JPX7VZCH.js.map → copy-5D5DX3VK.js.map} +0 -0
  365. /package/dist/cli-bundle/chunks/{copy-6QLHILAC.js.map → copy-HHL3K4QP.js.map} +0 -0
  366. /package/dist/cli-bundle/chunks/{create-Y54ZVVZH.js.map → create-IXY43O4H.js.map} +0 -0
  367. /package/dist/cli-bundle/chunks/{create-NNP6TSFO.js.map → create-QVGFYA2X.js.map} +0 -0
  368. /package/dist/cli-bundle/chunks/{delete-63PCMQAJ.js.map → delete-IBUR3M42.js.map} +0 -0
  369. /package/dist/cli-bundle/chunks/{delete-GDSMGAGJ.js.map → delete-QQC2FGUH.js.map} +0 -0
  370. /package/dist/cli-bundle/chunks/{deps-XYQ73XRH.js.map → deps-KWKRHXIN.js.map} +0 -0
  371. /package/dist/cli-bundle/chunks/{deps-T4ZF5G54.js.map → deps-VTPO4BSE.js.map} +0 -0
  372. /package/dist/cli-bundle/chunks/{docs-EHNPDWUL.js.map → docs-7CHFHXLN.js.map} +0 -0
  373. /package/dist/cli-bundle/chunks/{docs-C75YIXHC.js.map → docs-IIO3FEUO.js.map} +0 -0
  374. /package/dist/cli-bundle/chunks/{eval-GTENKE24.js.map → eval-CEYYEPSX.js.map} +0 -0
  375. /package/dist/cli-bundle/chunks/{eval-3WKDTRMH.js.map → eval-IO7LREOL.js.map} +0 -0
  376. /package/dist/cli-bundle/chunks/{extension-D5FDZ2CO.js.map → extension-KCPUWSY2.js.map} +0 -0
  377. /package/dist/cli-bundle/chunks/{extension-46NWACO3.js.map → extension-UTTQDUYI.js.map} +0 -0
  378. /package/dist/cli-bundle/chunks/{files-X3H7CCBQ.js.map → files-TPUL6KWB.js.map} +0 -0
  379. /package/dist/cli-bundle/chunks/{files-DSZBOSSN.js.map → files-Z2HHEFGP.js.map} +0 -0
  380. /package/dist/cli-bundle/chunks/{focus-5STQXDPU.js.map → focus-JVJCGC2D.js.map} +0 -0
  381. /package/dist/cli-bundle/chunks/{focus-MDVPOWB5.js.map → focus-YRNNH7IP.js.map} +0 -0
  382. /package/dist/cli-bundle/chunks/{gc-ZMST3WQP.js.map → gc-O5GUO3SU.js.map} +0 -0
  383. /package/dist/cli-bundle/chunks/{gc-ZC7JHBG7.js.map → gc-PYVVEELM.js.map} +0 -0
  384. /package/dist/cli-bundle/chunks/{get-NT7L2HUZ.js.map → get-ENLTEGTX.js.map} +0 -0
  385. /package/dist/cli-bundle/chunks/{get-J2IPJRZW.js.map → get-X4O3HBEY.js.map} +0 -0
  386. /package/dist/cli-bundle/chunks/{history-RLH2QCRO.js.map → history-AJTXLT6S.js.map} +0 -0
  387. /package/dist/cli-bundle/chunks/{history-WX3MGFS2.js.map → history-AK3E5Z3C.js.map} +0 -0
  388. /package/dist/cli-bundle/chunks/{history-compact-UXDIFC33.js.map → history-compact-43OOUAWD.js.map} +0 -0
  389. /package/dist/cli-bundle/chunks/{history-compact-ZBEBGJM7.js.map → history-compact-46MRHW3I.js.map} +0 -0
  390. /package/dist/cli-bundle/chunks/{history-redact-P7I7AWMB.js.map → history-redact-KUUUVUFM.js.map} +0 -0
  391. /package/dist/cli-bundle/chunks/{history-redact-YQGU3XRA.js.map → history-redact-TWIYQV5J.js.map} +0 -0
  392. /package/dist/cli-bundle/chunks/{history-repair-52KINVIK.js.map → history-repair-B5PZBOPU.js.map} +0 -0
  393. /package/dist/cli-bundle/chunks/{history-repair-RM5ITLU5.js.map → history-repair-VQTYOSRS.js.map} +0 -0
  394. /package/dist/cli-bundle/chunks/{init-2BNZOO6F.js.map → init-BNLVFPRG.js.map} +0 -0
  395. /package/dist/cli-bundle/chunks/{init-SC2P6CHP.js.map → init-RCRKW5PL.js.map} +0 -0
  396. /package/dist/cli-bundle/chunks/{learnings-YGYVHWJK.js.map → learnings-MUUU5KMC.js.map} +0 -0
  397. /package/dist/cli-bundle/chunks/{learnings-W6F3FIPL.js.map → learnings-XSGX52S7.js.map} +0 -0
  398. /package/dist/cli-bundle/chunks/{list-K6FPV4J4.js.map → list-32U7BSKE.js.map} +0 -0
  399. /package/dist/cli-bundle/chunks/{list-KPAYU5KZ.js.map → list-ZEEOHLTQ.js.map} +0 -0
  400. /package/dist/cli-bundle/chunks/{notes-PU74EPKV.js.map → notes-NJ45OZGF.js.map} +0 -0
  401. /package/dist/cli-bundle/chunks/{notes-YTD6ZILW.js.map → notes-OHU25L3M.js.map} +0 -0
  402. /package/dist/cli-bundle/chunks/{plan-GEQYUCBW.js.map → plan-KQA7CAKI.js.map} +0 -0
  403. /package/dist/cli-bundle/chunks/{plan-FNXHXRCI.js.map → plan-LWWAEV5Y.js.map} +0 -0
  404. /package/dist/cli-bundle/chunks/{register-list-query-QI45RMKN.js.map → register-list-query-DDCHPONM.js.map} +0 -0
  405. /package/dist/cli-bundle/chunks/{register-list-query-PHWYHENI.js.map → register-list-query-YNPBVIKM.js.map} +0 -0
  406. /package/dist/cli-bundle/chunks/{register-mutation-YINRTS7L.js.map → register-mutation-7ALWDDAX.js.map} +0 -0
  407. /package/dist/cli-bundle/chunks/{register-mutation-X3BUOQEL.js.map → register-mutation-LAVKYY63.js.map} +0 -0
  408. /package/dist/cli-bundle/chunks/{register-operations-E5JEASRK.js.map → register-operations-R4VOQ6EF.js.map} +0 -0
  409. /package/dist/cli-bundle/chunks/{register-operations-MIDTRW7S.js.map → register-operations-U5JAW3WE.js.map} +0 -0
  410. /package/dist/cli-bundle/chunks/{restore-5KHR2YYQ.js.map → restore-2ZKT6UDC.js.map} +0 -0
  411. /package/dist/cli-bundle/chunks/{restore-XQYSWBV7.js.map → restore-6K53WOWO.js.map} +0 -0
  412. /package/dist/cli-bundle/chunks/{scheduling-shortcuts-NNT5ASZR.js.map → scheduling-shortcuts-NJ5UVJFB.js.map} +0 -0
  413. /package/dist/cli-bundle/chunks/{scheduling-shortcuts-HJMTEXKE.js.map → scheduling-shortcuts-OQVJXG3M.js.map} +0 -0
  414. /package/dist/cli-bundle/chunks/{schema-263RI4WW.js.map → schema-MNTAVQCY.js.map} +0 -0
  415. /package/dist/cli-bundle/chunks/{schema-TZXW6XWD.js.map → schema-RBTJ2YXW.js.map} +0 -0
  416. /package/dist/cli-bundle/chunks/{search-SFRJOVDG.js.map → search-6HOIVZDU.js.map} +0 -0
  417. /package/dist/cli-bundle/chunks/{search-LECJYSXE.js.map → search-ZWYEMASC.js.map} +0 -0
  418. /package/dist/cli-bundle/chunks/{stats-N7ER2PNK.js.map → stats-FS742AMA.js.map} +0 -0
  419. /package/dist/cli-bundle/chunks/{stats-VPBGSRQH.js.map → stats-R5OAJVZK.js.map} +0 -0
  420. /package/dist/cli-bundle/chunks/{telemetry-PP3FUNBU.js.map → telemetry-7DIGDQUO.js.map} +0 -0
  421. /package/dist/cli-bundle/chunks/{telemetry-L6K3BUIQ.js.map → telemetry-FWEXSJLQ.js.map} +0 -0
  422. /package/dist/cli-bundle/chunks/{test-3EGNS3T5.js.map → test-NZF7OT2F.js.map} +0 -0
  423. /package/dist/cli-bundle/chunks/{test-RQCTSWUK.js.map → test-QJXLKV26.js.map} +0 -0
  424. /package/dist/cli-bundle/chunks/{test-runs-GN3C6GOI.js.map → test-runs-C6CFIVOS.js.map} +0 -0
  425. /package/dist/cli-bundle/chunks/{test-runs-AJHR6IQF.js.map → test-runs-IAJDL6CA.js.map} +0 -0
  426. /package/dist/cli-bundle/chunks/{update-V33YUBRP.js.map → update-2XCQNOD6.js.map} +0 -0
  427. /package/dist/cli-bundle/chunks/{update-6YXOGHRT.js.map → update-IWUCXVH2.js.map} +0 -0
  428. /package/dist/cli-bundle/chunks/{update-many-RYQ64CFW.js.map → update-many-MUTIOAP3.js.map} +0 -0
  429. /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]="5b1918c3-a3a1-53f2-b547-2724ff2a4f28")}catch(e){}}();
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-SRYYRVPB.js";
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-NSBZ2CKF.js";
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-434HM6Z5.js";
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 fs6 from "node:fs/promises";
44
+ import fs5 from "node:fs/promises";
39
45
  import os2 from "node:os";
40
- import path6 from "node:path";
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/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");
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
- "manifest.json": manifest,
1324
- "index.js": entrypoint,
1325
- "README.md": readme
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
- 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
- }
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
- extension_name: extensionName,
1373
- command_name: commandName,
1374
- target_path: targetPath,
1375
- created_directory: createdDirectory,
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 = fs6.cp) {
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 fs6.rm(destinationDirectory, { recursive: true, force: true });
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 = path6.resolve(sourceDirectory);
1926
- const resolvedDestination = path6.resolve(destinationDirectory);
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 fs6.mkdtemp(path6.join(os2.tmpdir(), "pm-extension-copy-"));
1935
- const stagedDirectory = path6.join(stagingRoot, "extension");
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 fs6.rm(stagingRoot, { recursive: true, force: true });
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 = path6.join(settingsRoot, "runtime", "extension-install-locks");
1945
- const lockPath = path6.join(lockRoot, `${destinationDirectoryName}.lock`);
1946
- await fs6.mkdir(lockRoot, { recursive: true });
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 fs6.mkdir(lockPath);
1816
+ await fs5.mkdir(lockPath);
1954
1817
  acquired = true;
1955
- await fs6.writeFile(path6.join(lockPath, "owner.json"), `${JSON.stringify({ pid: process.pid, created_at: nowIso(), destination: destinationDirectoryName }, null, 2)}
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 fs6.stat(lockPath);
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 fs6.rm(lockPath, { recursive: true, force: true });
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 fs6.rm(lockPath, { recursive: true, force: true }).catch(() => void 0);
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 fs6.readdir(extensionsRoot, { withFileTypes: true });
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 = path6.join(extensionsRoot, directoryName);
2171
- const manifestPath = path6.join(extensionDirectory, "manifest.json");
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 fs6.readFile(manifestPath, "utf8"));
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 = path6.join(extensionsRoot, candidate.directory);
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 = path6.join(resolvedRoots.selected_root, destinationDirectoryName);
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 fs6.mkdir(resolvedRoots.selected_root, { recursive: true });
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 = path6.join(resolvedRoots.selected_root, candidate.directory);
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 = path6.join(resolvedRoots.selected_root, candidate.directory);
2874
- await fs6.rm(destinationDirectory, { recursive: true, force: true });
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-32R4PIC6.js.map
3169
+ //# sourceMappingURL=chunk-KQMUV6LX.js.map
3278
3170
 
3279
- //# debugId=5b1918c3-a3a1-53f2-b547-2724ff2a4f28
3171
+ //# debugId=db37d572-333e-53e5-a56d-c59f51332387