@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,41 +1,47 @@
1
+ import {
2
+ scaffoldExtensionProject
3
+ } from "./chunk-MVKFOLLM.js";
1
4
  import {
2
5
  normalizeExtensionNameForMatch,
3
6
  normalizeManagedDirectoryName,
4
7
  normalizeStringList,
5
8
  parseExtensionManifest,
6
9
  validateExtensionDirectory
7
- } from "./chunk-CF55WVVS.js";
10
+ } from "./chunk-5VOINNKT.js";
8
11
  import {
9
12
  splitCommaList
10
13
  } from "./chunk-5HIZDR5A.js";
11
14
  import {
12
15
  nowIso
13
- } from "./chunk-YCJX76PW.js";
16
+ } from "./chunk-P77P2ILI.js";
14
17
  import {
15
18
  EXIT_CODE,
16
19
  EXTENSION_CAPABILITY_CONTRACT,
17
20
  KNOWN_EXTENSION_CAPABILITIES,
18
21
  PmCliError,
19
22
  activateExtensions,
23
+ collectUsedExtensionCapabilities,
20
24
  isPathWithinDirectory,
21
25
  loadExtensions,
22
26
  nextExtensionReloadToken,
27
+ normalizeExtensionName,
23
28
  parseLegacyExtensionCapabilityAliasWarning,
24
29
  parseUnknownExtensionCapabilityWarning,
25
30
  pathExists,
26
31
  readSettings,
32
+ reconcileExtensionCapabilityUsage,
27
33
  resolveExtensionRoots,
28
34
  resolveGlobalPmRoot,
29
35
  resolvePmPackageRootFromModule,
30
36
  resolvePmRoot,
31
37
  writeSettings
32
- } from "./chunk-HMOADQVT.js";
38
+ } from "./chunk-MJTSZKK5.js";
33
39
 
34
40
  // dist/cli/commands/extension.js
35
41
  import { execFile as execFile2 } from "node:child_process";
36
- import fs6 from "node:fs/promises";
42
+ import fs5 from "node:fs/promises";
37
43
  import os2 from "node:os";
38
- import path6 from "node:path";
44
+ import path5 from "node:path";
39
45
  import { promisify as promisify2 } from "node:util";
40
46
 
41
47
  // dist/cli/commands/extension/managed-state.js
@@ -1178,235 +1184,87 @@ function projectPackageCatalogEntry(entry, fields) {
1178
1184
  return projected;
1179
1185
  }
1180
1186
 
1181
- // dist/cli/commands/extension/scaffold.js
1182
- import fs5 from "node:fs/promises";
1183
- import path5 from "node:path";
1187
+ // dist/core/extensions/activation-summary.js
1184
1188
  !(function() {
1185
1189
  try {
1186
1190
  var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}, n = new e.Error().stack;
1187
- n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "3abac9c3-3fc0-575e-8f5d-d2624fe7a20c");
1191
+ n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "13c88992-4da1-549d-8644-3ac448f6960e");
1188
1192
  } catch (e2) {
1189
1193
  }
1190
1194
  })();
1191
- var SCAFFOLD_MANIFEST_VERSION = 1;
1192
- var SCAFFOLD_PM_MIN_VERSION = "2026.5.0";
1193
- function buildStarterExtensionScaffoldFiles(extensionName, commandName, vocabulary) {
1194
- const packageName = `pm-${extensionName}`;
1195
- const manifest = `${JSON.stringify({
1196
- name: extensionName,
1197
- version: "0.1.0",
1198
- entry: "./index.js",
1199
- capabilities: ["commands"],
1200
- manifest_version: SCAFFOLD_MANIFEST_VERSION,
1201
- pm_min_version: SCAFFOLD_PM_MIN_VERSION
1202
- }, null, 2)}
1203
- `;
1204
- const entrypoint = [
1205
- '/** @param {import("@unbrained/pm-cli/sdk").ExtensionApi} api */',
1206
- "export function activate(api) {",
1207
- " api.registerCommand({",
1208
- ` name: ${JSON.stringify(commandName)},`,
1209
- ' description: "Starter scaffold command. Replace with your own behavior.",',
1210
- " run: async (context) => ({",
1211
- " ok: true,",
1212
- ` source: ${JSON.stringify(extensionName)},`,
1213
- " command: context.command,",
1214
- ' message: "Starter extension scaffold is active.",',
1215
- " }),",
1216
- " });",
1217
- "}",
1218
- "",
1219
- "export default {",
1220
- " activate,",
1221
- "};",
1222
- ""
1223
- ].join("\n");
1224
- if (vocabulary === "package") {
1225
- const packageJson = `${JSON.stringify({
1226
- name: packageName,
1227
- version: "0.1.0",
1228
- private: true,
1229
- type: "module",
1230
- keywords: ["pm-package"],
1231
- // `node --test` runs the colocated *.test.js sample against the peer SDK
1232
- // testing helpers; no extra dev-dependency or test runner is required.
1233
- scripts: {
1234
- test: "node --test"
1235
- },
1236
- peerDependencies: {
1237
- "@unbrained/pm-cli": "*"
1238
- },
1239
- pm: {
1240
- aliases: [extensionName],
1241
- extensions: ["."],
1242
- docs: ["README.md"],
1243
- examples: ["README.md"],
1244
- catalog: {
1245
- display_name: extensionName,
1246
- category: "workflow",
1247
- summary: "Starter pm package scaffold.",
1248
- tags: ["starter"]
1249
- }
1250
- }
1251
- }, null, 2)}
1252
- `;
1253
- const sampleTest = [
1254
- 'import assert from "node:assert/strict";',
1255
- 'import { test } from "node:test";',
1256
- 'import { activateExtensionForTest, assertRegisteredCommandContract } from "@unbrained/pm-cli/sdk/testing";',
1257
- 'import extension from "./index.js";',
1258
- "",
1259
- `test(${JSON.stringify(`${extensionName} registers its starter command`)}, async () => {`,
1260
- " // `capabilities` mirrors manifest.json so the in-memory activation grants",
1261
- " // the `commands` capability the entrypoint relies on.",
1262
- " const activation = await activateExtensionForTest(extension, {",
1263
- ` name: ${JSON.stringify(extensionName)},`,
1264
- ' capabilities: ["commands"],',
1265
- " });",
1266
- " // assertRegisteredCommandContract throws if the command is not",
1267
- " // registered, so reaching here already proves the wiring; assert on the",
1268
- " // returned definition to demonstrate inspecting registered metadata.",
1269
- " const registered = assertRegisteredCommandContract(activation.registrations, {",
1270
- ` command: ${JSON.stringify(commandName)},`,
1271
- ` extensionName: ${JSON.stringify(extensionName)},`,
1272
- " });",
1273
- ' assert.equal(typeof registered.command.description, "string");',
1274
- "});",
1275
- ""
1276
- ].join("\n");
1277
- const gitignore = ["node_modules/", "*.log", ""].join("\n");
1278
- const packageReadme = [
1279
- `# ${packageName}`,
1280
- "",
1281
- "Generated by `pm package init`.",
1282
- "",
1283
- "## Included Files",
1284
- "- `package.json`: package metadata, `test` script, and `pm` resource manifest.",
1285
- "- `manifest.json`: extension metadata and capabilities.",
1286
- "- `index.js`: starter command registration using the `commands` capability.",
1287
- "- `index.test.js`: sample `node:test` suite using the SDK testing helpers.",
1288
- "- `.gitignore`: ignores `node_modules/` and log files.",
1289
- "",
1290
- "## Quick Start",
1291
- "```bash",
1292
- "pm install --project <package-path>",
1293
- `pm ${commandName}`,
1294
- "pm package doctor --project --detail summary",
1295
- "```",
1296
- "",
1297
- "## Validate the Package",
1298
- "Install the peer SDK once, then run the colocated sample test:",
1299
- "```bash",
1300
- "npm install",
1301
- "npm test",
1302
- "```",
1303
- "`npm test` runs `node --test`, which executes `index.test.js` against the",
1304
- "`@unbrained/pm-cli/sdk/testing` helpers \u2014 no extra test runner required.",
1305
- "",
1306
- "## Compatibility Bounds",
1307
- "`manifest.json` cannot hold comments, so the version-compatibility fields are documented here:",
1308
- `- \`manifest_version\` (integer): manifest schema generation. Leave at \`${SCAFFOLD_MANIFEST_VERSION}\` unless you adopt a newer manifest schema.`,
1309
- `- \`pm_min_version\` (string): lowest pm CLI version that may load this package. Scaffolded as \`${SCAFFOLD_PM_MIN_VERSION}\`. The loader blocks the package on older CLIs.`,
1310
- "- `pm_max_version` (string, optional): highest pm CLI version that may load this package. Add it to block CLIs that are newer than the version you have validated against. The loader blocks the package when the CLI exceeds this bound.",
1311
- "",
1312
- "## Notes",
1313
- "- Keep simple starter runtime behavior at the package root so local installs work without dependency bootstrapping.",
1314
- "- Move larger runtimes into subdirectories only after adding package dependencies and validating `pm package doctor`.",
1315
- "- Add capabilities to the extension manifest only when the entrypoint uses the matching SDK API.",
1316
- "- Use `@unbrained/pm-cli/sdk` as the public SDK import for richer package runtimes.",
1317
- ""
1318
- ].join("\n");
1319
- return {
1320
- "package.json": packageJson,
1321
- "manifest.json": manifest,
1322
- "index.js": entrypoint,
1323
- "index.test.js": sampleTest,
1324
- ".gitignore": gitignore,
1325
- "README.md": packageReadme
1326
- };
1327
- }
1328
- const readme = [
1329
- `# ${extensionName}`,
1330
- "",
1331
- "Generated by `pm extension init`.",
1332
- "",
1333
- "## Included Files",
1334
- "- `manifest.json`: extension metadata and capabilities.",
1335
- "- `index.js`: starter command registration using the `commands` capability.",
1336
- "",
1337
- "## Quick Start",
1338
- "```bash",
1339
- "pm extension --install --project <scaffold-path>",
1340
- `pm ${commandName}`,
1341
- "pm extension --doctor --project --detail summary",
1342
- "```",
1343
- "",
1344
- "## Compatibility Bounds",
1345
- "`manifest.json` cannot hold comments, so the version-compatibility fields are documented here:",
1346
- `- \`manifest_version\` (integer): manifest schema generation. Leave at \`${SCAFFOLD_MANIFEST_VERSION}\` unless you adopt a newer manifest schema.`,
1347
- `- \`pm_min_version\` (string): lowest pm CLI version that may load this extension. Scaffolded as \`${SCAFFOLD_PM_MIN_VERSION}\`. The loader blocks the extension on older CLIs.`,
1348
- "- `pm_max_version` (string, optional): highest pm CLI version that may load this extension. Add it to block CLIs that are newer than the version you have validated against. The loader blocks the extension when the CLI exceeds this bound.",
1349
- "",
1350
- "## Notes",
1351
- "- This scaffold uses ESM exports so it works in package scopes with `type: module`.",
1352
- "- Update `manifest.json` capabilities and `index.js` command behavior as your extension evolves.",
1353
- ""
1354
- ].join("\n");
1195
+ var HOOK_REGISTRY_FIELD_TO_KIND = [
1196
+ ["beforeCommand", "before_command"],
1197
+ ["afterCommand", "after_command"],
1198
+ ["onWrite", "on_write"],
1199
+ ["onRead", "on_read"],
1200
+ ["onIndex", "on_index"]
1201
+ ];
1202
+ function describeExtensionActivation(activation, options = {}) {
1203
+ const filter = options.extensionName !== void 0 ? normalizeExtensionName(options.extensionName) : null;
1204
+ const matches = (name) => filter === null || normalizeExtensionName(name) === filter;
1205
+ const collect = (entries, identify) => sortUnique(entries.filter((entry) => matches(entry.name)).map(identify));
1206
+ const collectFlat = (entries, expand) => sortUnique(entries.filter((entry) => matches(entry.name)).flatMap(expand));
1207
+ const { registrations, commands, parsers, preflight, services, renderers, hooks } = activation;
1355
1208
  return {
1356
- "manifest.json": manifest,
1357
- "index.js": entrypoint,
1358
- "README.md": readme
1209
+ capabilities: collectUsedExtensionCapabilities(activation, options),
1210
+ commands: collect(registrations.commands, (entry) => entry.command),
1211
+ command_overrides: collect(commands.overrides, (entry) => entry.command),
1212
+ command_handlers: collect(commands.handlers, (entry) => entry.command),
1213
+ hooks: HOOK_REGISTRY_FIELD_TO_KIND.filter(([field]) => hooks[field].some((entry) => matches(entry.name))).map(([, kind]) => kind),
1214
+ flag_commands: collect(registrations.flags, (entry) => entry.target_command),
1215
+ item_types: collectFlat(registrations.item_types, (entry) => entry.types.map((type) => type.name)),
1216
+ item_fields: collectFlat(registrations.item_fields, (entry) => entry.fields.map((field) => field.name)),
1217
+ migrations: collectFlat(registrations.migrations, (entry) => typeof entry.definition.id === "string" ? [entry.definition.id] : []),
1218
+ importers: collect(registrations.importers, (entry) => entry.importer),
1219
+ exporters: collect(registrations.exporters, (entry) => entry.exporter),
1220
+ search_providers: collect(registrations.search_providers, (entry) => entry.definition.name),
1221
+ vector_store_adapters: collect(registrations.vector_store_adapters, (entry) => entry.definition.name),
1222
+ parser_overrides: collect(parsers.overrides, (entry) => entry.command),
1223
+ service_overrides: collect(services.overrides, (entry) => entry.service),
1224
+ renderer_overrides: collect(renderers.overrides, (entry) => entry.format),
1225
+ preflight_overrides: preflight.overrides.filter((entry) => matches(entry.name)).length
1359
1226
  };
1360
1227
  }
1361
- async function scaffoldExtensionProject(target, vocabulary = "extension") {
1362
- const normalizedTarget = target.trim();
1363
- const targetPath = path5.resolve(process.cwd(), normalizedTarget);
1364
- const extensionName = normalizeManagedDirectoryName(path5.basename(targetPath));
1365
- const commandName = `${extensionName} ping`;
1366
- const scaffoldFiles = buildStarterExtensionScaffoldFiles(extensionName, commandName, vocabulary);
1367
- let createdDirectory = false;
1368
- if (await pathExists(targetPath)) {
1369
- const existingTargetStats = await fs5.stat(targetPath);
1370
- if (!existingTargetStats.isDirectory()) {
1371
- throw new PmCliError(`Scaffold target "${targetPath}" exists and is not a directory.`, EXIT_CODE.CONFLICT);
1372
- }
1373
- } else {
1374
- await fs5.mkdir(targetPath, { recursive: true });
1375
- createdDirectory = true;
1376
- }
1377
- for (const [relativePath, content] of Object.entries(scaffoldFiles)) {
1378
- const absolutePath = path5.join(targetPath, relativePath);
1379
- if (!await pathExists(absolutePath)) {
1380
- continue;
1381
- }
1382
- const existingContent = await fs5.readFile(absolutePath, "utf8");
1383
- if (existingContent !== content) {
1384
- throw new PmCliError(`Scaffold file "${relativePath}" already exists with different content in "${targetPath}". Choose a new target path or remove conflicting files.`, EXIT_CODE.CONFLICT);
1385
- }
1386
- }
1387
- const files = [];
1388
- for (const [relativePath, content] of Object.entries(scaffoldFiles)) {
1389
- const absolutePath = path5.join(targetPath, relativePath);
1390
- if (await pathExists(absolutePath)) {
1391
- files.push({
1392
- path: relativePath,
1393
- status: "unchanged"
1394
- });
1395
- continue;
1396
- }
1397
- await fs5.mkdir(path5.dirname(absolutePath), { recursive: true });
1398
- await fs5.writeFile(absolutePath, content, "utf8");
1399
- files.push({
1400
- path: relativePath,
1401
- status: "created"
1402
- });
1228
+ function sortUnique(values) {
1229
+ return [...new Set(values)].sort((left, right) => left.localeCompare(right));
1230
+ }
1231
+
1232
+ // dist/cli/commands/extension/describe.js
1233
+ !(function() {
1234
+ try {
1235
+ var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}, n = new e.Error().stack;
1236
+ n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "7a92163a-99b2-5969-acc2-e2b6b0336c2e");
1237
+ } catch (e2) {
1403
1238
  }
1239
+ })();
1240
+ function layerNameKey(layer, name) {
1241
+ return `${layer}:${normalizeExtensionNameForMatch(name)}`;
1242
+ }
1243
+ function buildExtensionDescribeResult(target, loadResult, activationResult) {
1244
+ const activationFailedKeys = new Set(activationResult.failed.map((entry) => layerNameKey(entry.layer, entry.name)));
1245
+ const candidates = [
1246
+ ...loadResult.loaded.map((entry) => ({
1247
+ name: entry.name,
1248
+ layer: entry.layer,
1249
+ version: entry.version,
1250
+ activation_status: activationFailedKeys.has(layerNameKey(entry.layer, entry.name)) ? "failed" : "ok",
1251
+ surfaces: describeExtensionActivation(activationResult, { extensionName: entry.name })
1252
+ })),
1253
+ ...loadResult.failed.map((entry) => ({
1254
+ name: entry.name,
1255
+ layer: entry.layer,
1256
+ version: "unknown",
1257
+ activation_status: "not_loaded",
1258
+ surfaces: describeExtensionActivation(activationResult, { extensionName: entry.name })
1259
+ }))
1260
+ ].sort((left, right) => left.name.localeCompare(right.name) || left.layer.localeCompare(right.layer));
1261
+ const normalizedTarget = typeof target === "string" ? normalizeExtensionNameForMatch(target) : null;
1262
+ const extensions = normalizedTarget === null ? candidates : candidates.filter((entry) => normalizeExtensionNameForMatch(entry.name) === normalizedTarget);
1404
1263
  return {
1405
- extension_name: extensionName,
1406
- command_name: commandName,
1407
- target_path: targetPath,
1408
- created_directory: createdDirectory,
1409
- files
1264
+ target: typeof target === "string" ? target.trim() : null,
1265
+ total: extensions.length,
1266
+ extensions,
1267
+ union: describeExtensionActivation(activationResult, normalizedTarget === null ? {} : { extensionName: target })
1410
1268
  };
1411
1269
  }
1412
1270
 
@@ -1414,7 +1272,7 @@ async function scaffoldExtensionProject(target, vocabulary = "extension") {
1414
1272
  !(function() {
1415
1273
  try {
1416
1274
  var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}, n = new e.Error().stack;
1417
- n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "bdfa4140-50af-5323-a37f-fbd15134a40e");
1275
+ n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "52b725dc-48e3-5436-8136-47e5314b07eb");
1418
1276
  } catch (e2) {
1419
1277
  }
1420
1278
  })();
@@ -1661,6 +1519,15 @@ function classifyDoctorActivationFailureWarnings(activationFailures = []) {
1661
1519
  }
1662
1520
  return [...new Set(warnings)].sort((left, right) => left.localeCompare(right));
1663
1521
  }
1522
+ function classifyUnusedCapabilityWarnings(loadResult, activationResult) {
1523
+ const warnings = [];
1524
+ for (const entry of reconcileExtensionCapabilityUsage(loadResult.loaded, activationResult)) {
1525
+ for (const capability of entry.unused) {
1526
+ warnings.push(`extension_capability_unused:${entry.layer}:${entry.name}:${capability}`);
1527
+ }
1528
+ }
1529
+ return [...new Set(warnings)].sort((left, right) => left.localeCompare(right));
1530
+ }
1664
1531
  function buildExtensionTriageSummary(scope, warnings, extensions, options = {}) {
1665
1532
  const normalizedWarnings = [...new Set(warnings)].sort((left, right) => left.localeCompare(right));
1666
1533
  const managedTotal = extensions.filter((entry) => entry.managed).length;
@@ -1711,6 +1578,9 @@ function buildExtensionTriageSummary(scope, warnings, extensions, options = {})
1711
1578
  if (normalizedWarnings.some((warning) => warning.startsWith("extension_capability_missing:"))) {
1712
1579
  remediation.push(`Extension activation failed because code registered a surface missing from manifest capabilities. Run ${lifecycleFlagCommand(options, "doctor")} ${scopeFlag} --detail deep --trace and add the reported missing_capability to manifest.json before publishing.`);
1713
1580
  }
1581
+ if (normalizedWarnings.some((warning) => warning.startsWith("extension_capability_unused:"))) {
1582
+ 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.`);
1583
+ }
1714
1584
  if (normalizedWarnings.some((warning) => warning.startsWith("extension_command_definition_legacy_handler_alias:"))) {
1715
1585
  remediation.push("Extension command definitions using legacy handler were auto-remapped. Update command definitions to use run: (context) => ... for forward compatibility.");
1716
1586
  }
@@ -1872,7 +1742,7 @@ function buildDoctorConsistencySummary(scope, installedExtensions, loadedExtensi
1872
1742
  !(function() {
1873
1743
  try {
1874
1744
  var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}, n = new e.Error().stack;
1875
- n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "b0b28569-ac5e-5484-8ffb-a578de22fd15");
1745
+ n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "bc327a80-93b0-5be9-9ebf-8864cf67d23d");
1876
1746
  } catch (e2) {
1877
1747
  }
1878
1748
  })();
@@ -1952,11 +1822,11 @@ function sleep(ms) {
1952
1822
  setTimeout(resolve, ms);
1953
1823
  });
1954
1824
  }
1955
- async function copyExtensionDirectoryForInstall(sourceDirectory, destinationDirectory, copyDirectory = fs6.cp) {
1825
+ async function copyExtensionDirectoryForInstall(sourceDirectory, destinationDirectory, copyDirectory = fs5.cp) {
1956
1826
  for (let attempt = 1; attempt <= EXTENSION_INSTALL_COPY_ATTEMPTS; attempt += 1) {
1957
1827
  try {
1958
1828
  if (await pathExists(destinationDirectory)) {
1959
- await fs6.rm(destinationDirectory, { recursive: true, force: true });
1829
+ await fs5.rm(destinationDirectory, { recursive: true, force: true });
1960
1830
  }
1961
1831
  await copyExtensionDirectoryWithoutSelfNesting(sourceDirectory, destinationDirectory, copyDirectory);
1962
1832
  return;
@@ -1969,8 +1839,8 @@ async function copyExtensionDirectoryForInstall(sourceDirectory, destinationDire
1969
1839
  }
1970
1840
  }
1971
1841
  async function copyExtensionDirectoryWithoutSelfNesting(sourceDirectory, destinationDirectory, copyDirectory) {
1972
- const resolvedSource = path6.resolve(sourceDirectory);
1973
- const resolvedDestination = path6.resolve(destinationDirectory);
1842
+ const resolvedSource = path5.resolve(sourceDirectory);
1843
+ const resolvedDestination = path5.resolve(destinationDirectory);
1974
1844
  if (resolvedSource === resolvedDestination) {
1975
1845
  return;
1976
1846
  }
@@ -1978,28 +1848,28 @@ async function copyExtensionDirectoryWithoutSelfNesting(sourceDirectory, destina
1978
1848
  await copyDirectory(sourceDirectory, destinationDirectory, { recursive: true, force: true });
1979
1849
  return;
1980
1850
  }
1981
- const stagingRoot = await fs6.mkdtemp(path6.join(os2.tmpdir(), "pm-extension-copy-"));
1982
- const stagedDirectory = path6.join(stagingRoot, "extension");
1851
+ const stagingRoot = await fs5.mkdtemp(path5.join(os2.tmpdir(), "pm-extension-copy-"));
1852
+ const stagedDirectory = path5.join(stagingRoot, "extension");
1983
1853
  try {
1984
1854
  await copyDirectory(sourceDirectory, stagedDirectory, { recursive: true, force: true });
1985
1855
  await copyDirectory(stagedDirectory, destinationDirectory, { recursive: true, force: true });
1986
1856
  } finally {
1987
- await fs6.rm(stagingRoot, { recursive: true, force: true });
1857
+ await fs5.rm(stagingRoot, { recursive: true, force: true });
1988
1858
  }
1989
1859
  }
1990
1860
  async function withExtensionInstallLock(settingsRoot, destinationDirectoryName, run, options) {
1991
- const lockRoot = path6.join(settingsRoot, "runtime", "extension-install-locks");
1992
- const lockPath = path6.join(lockRoot, `${destinationDirectoryName}.lock`);
1993
- await fs6.mkdir(lockRoot, { recursive: true });
1861
+ const lockRoot = path5.join(settingsRoot, "runtime", "extension-install-locks");
1862
+ const lockPath = path5.join(lockRoot, `${destinationDirectoryName}.lock`);
1863
+ await fs5.mkdir(lockRoot, { recursive: true });
1994
1864
  const attempts = Math.max(1, Math.floor(options?.attempts ?? EXTENSION_INSTALL_LOCK_ATTEMPTS));
1995
1865
  const delayMs = Math.max(0, Math.floor(options?.delay_ms ?? EXTENSION_INSTALL_LOCK_DELAY_MS));
1996
1866
  const staleMs = Math.max(0, Math.floor(options?.stale_ms ?? EXTENSION_INSTALL_LOCK_STALE_MS));
1997
1867
  let acquired = false;
1998
1868
  for (let attempt = 1; attempt <= attempts; attempt += 1) {
1999
1869
  try {
2000
- await fs6.mkdir(lockPath);
1870
+ await fs5.mkdir(lockPath);
2001
1871
  acquired = true;
2002
- await fs6.writeFile(path6.join(lockPath, "owner.json"), `${JSON.stringify({ pid: process.pid, created_at: nowIso(), destination: destinationDirectoryName }, null, 2)}
1872
+ await fs5.writeFile(path5.join(lockPath, "owner.json"), `${JSON.stringify({ pid: process.pid, created_at: nowIso(), destination: destinationDirectoryName }, null, 2)}
2003
1873
  `, "utf8");
2004
1874
  break;
2005
1875
  } catch (error) {
@@ -2008,12 +1878,12 @@ async function withExtensionInstallLock(settingsRoot, destinationDirectoryName,
2008
1878
  }
2009
1879
  let stat = null;
2010
1880
  try {
2011
- stat = await fs6.stat(lockPath);
1881
+ stat = await fs5.stat(lockPath);
2012
1882
  } catch {
2013
1883
  stat = null;
2014
1884
  }
2015
1885
  if (stat && Date.now() - stat.mtimeMs > staleMs) {
2016
- await fs6.rm(lockPath, { recursive: true, force: true });
1886
+ await fs5.rm(lockPath, { recursive: true, force: true });
2017
1887
  continue;
2018
1888
  }
2019
1889
  await sleep(delayMs);
@@ -2025,7 +1895,7 @@ async function withExtensionInstallLock(settingsRoot, destinationDirectoryName,
2025
1895
  try {
2026
1896
  return await run();
2027
1897
  } finally {
2028
- await fs6.rm(lockPath, { recursive: true, force: true }).catch(() => void 0);
1898
+ await fs5.rm(lockPath, { recursive: true, force: true }).catch(() => void 0);
2029
1899
  }
2030
1900
  }
2031
1901
  async function resolveInstalledExtensionCandidate(installed, extensionTarget) {
@@ -2103,6 +1973,7 @@ function resolveAction(target, options) {
2103
1973
  options.uninstall ? "uninstall" : null,
2104
1974
  options.explore ? "explore" : null,
2105
1975
  options.manage ? "manage" : null,
1976
+ options.describe ? "describe" : null,
2106
1977
  options.reload ? "reload" : null,
2107
1978
  options.doctor ? "doctor" : null,
2108
1979
  options.catalog ? "catalog" : null,
@@ -2138,7 +2009,7 @@ function resolveAction(target, options) {
2138
2009
  if (target === void 0) {
2139
2010
  return "explore";
2140
2011
  }
2141
- 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);
2012
+ 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);
2142
2013
  }
2143
2014
  if (selected.length > 1) {
2144
2015
  throw new PmCliError("Extension action flags are mutually exclusive.", EXIT_CODE.USAGE);
@@ -2203,7 +2074,7 @@ async function listInstalledExtensions(extensionsRoot, scope, settings, state) {
2203
2074
  warnings: []
2204
2075
  };
2205
2076
  }
2206
- const entries = await fs6.readdir(extensionsRoot, { withFileTypes: true });
2077
+ const entries = await fs5.readdir(extensionsRoot, { withFileTypes: true });
2207
2078
  const directories = entries.filter((entry) => entry.isDirectory()).map((entry) => entry.name).sort((left, right) => left.localeCompare(right));
2208
2079
  const managedByName = /* @__PURE__ */ new Map();
2209
2080
  const managedByDirectory = /* @__PURE__ */ new Map();
@@ -2214,8 +2085,8 @@ async function listInstalledExtensions(extensionsRoot, scope, settings, state) {
2214
2085
  const warnings = [];
2215
2086
  const summaries = [];
2216
2087
  for (const directoryName of directories) {
2217
- const extensionDirectory = path6.join(extensionsRoot, directoryName);
2218
- const manifestPath = path6.join(extensionDirectory, "manifest.json");
2088
+ const extensionDirectory = path5.join(extensionsRoot, directoryName);
2089
+ const manifestPath = path5.join(extensionDirectory, "manifest.json");
2219
2090
  if (!await pathExists(manifestPath)) {
2220
2091
  warnings.push(`extension_manifest_missing:${scope}:${directoryName}`);
2221
2092
  const managedEntry2 = managedByDirectory.get(normalizeExtensionNameForMatch(directoryName));
@@ -2244,7 +2115,7 @@ async function listInstalledExtensions(extensionsRoot, scope, settings, state) {
2244
2115
  }
2245
2116
  let rawManifest;
2246
2117
  try {
2247
- rawManifest = JSON.parse(await fs6.readFile(manifestPath, "utf8"));
2118
+ rawManifest = JSON.parse(await fs5.readFile(manifestPath, "utf8"));
2248
2119
  } catch {
2249
2120
  warnings.push(`extension_manifest_invalid_json:${scope}:${directoryName}`);
2250
2121
  continue;
@@ -2421,7 +2292,7 @@ async function adoptUnmanagedExtensions(extensionsRoot, scope, installedExtensio
2421
2292
  let nextState = state;
2422
2293
  const adoptedEntries = [];
2423
2294
  for (const candidate of sortedCandidates) {
2424
- const extensionDirectory = path6.join(extensionsRoot, candidate.directory);
2295
+ const extensionDirectory = path5.join(extensionsRoot, candidate.directory);
2425
2296
  const validated = await validateExtensionDirectory(extensionDirectory);
2426
2297
  const now = nowIso();
2427
2298
  const sourceRecord = {
@@ -2523,6 +2394,9 @@ async function runExtension(target, options, global2) {
2523
2394
  if (options.fixManagedState === true && action !== "manage" && action !== "doctor") {
2524
2395
  throw new PmCliError("--fix-managed-state is only valid with --manage or --doctor.", EXIT_CODE.USAGE);
2525
2396
  }
2397
+ if (options.capability !== void 0 && action !== "init") {
2398
+ throw new PmCliError("--capability is only valid with --init/--scaffold.", EXIT_CODE.USAGE);
2399
+ }
2526
2400
  const normalizedTarget = (() => {
2527
2401
  const normalizedInput = target?.trim().toLowerCase();
2528
2402
  if (action === "doctor" && normalizedInput === "doctor") {
@@ -2577,7 +2451,7 @@ async function runExtension(target, options, global2) {
2577
2451
  throw new PmCliError('Action "init" does not accept --gh/--github/--ref options.', EXIT_CODE.USAGE);
2578
2452
  }
2579
2453
  const scaffoldTarget = requireTarget(normalizedTarget, action);
2580
- const scaffold = await scaffoldExtensionProject(scaffoldTarget, options.vocabulary ?? "extension");
2454
+ const scaffold = await scaffoldExtensionProject(scaffoldTarget, options.vocabulary ?? "extension", options.capability);
2581
2455
  const quotedTargetPath = JSON.stringify(scaffold.target_path);
2582
2456
  const quotedShellTargetPath = JSON.stringify(scaffold.target_path.replace(/\\/g, "/"));
2583
2457
  return withResult({
@@ -2586,6 +2460,7 @@ async function runExtension(target, options, global2) {
2586
2460
  name: scaffold.extension_name,
2587
2461
  command: scaffold.command_name
2588
2462
  },
2463
+ capability: scaffold.capability,
2589
2464
  target_path: scaffold.target_path,
2590
2465
  created_directory: scaffold.created_directory,
2591
2466
  files: scaffold.files,
@@ -2702,10 +2577,10 @@ async function runExtension(target, options, global2) {
2702
2577
  const settings = await readSettings(resolvedRoots.settings_root);
2703
2578
  const managedStateRead = await readManagedExtensionState(resolvedRoots.selected_root);
2704
2579
  warnings.push(...managedStateRead.warnings);
2705
- const destinationDirectory = path6.join(resolvedRoots.selected_root, destinationDirectoryName);
2580
+ const destinationDirectory = path5.join(resolvedRoots.selected_root, destinationDirectoryName);
2706
2581
  const destinationExists = await pathExists(destinationDirectory);
2707
2582
  const installInPlace = await areDirectoriesEquivalent(validated.directory, destinationDirectory);
2708
- await fs6.mkdir(resolvedRoots.selected_root, { recursive: true });
2583
+ await fs5.mkdir(resolvedRoots.selected_root, { recursive: true });
2709
2584
  if (!installInPlace) {
2710
2585
  await copyExtensionDirectoryForInstall(validated.directory, destinationDirectory);
2711
2586
  }
@@ -2852,7 +2727,7 @@ async function runExtension(target, options, global2) {
2852
2727
  }
2853
2728
  });
2854
2729
  }
2855
- const extensionDirectory = path6.join(resolvedRoots.selected_root, candidate.directory);
2730
+ const extensionDirectory = path5.join(resolvedRoots.selected_root, candidate.directory);
2856
2731
  const validated = await validateExtensionDirectory(extensionDirectory);
2857
2732
  const now = nowIso();
2858
2733
  const sourceRecord = githubOption === void 0 ? {
@@ -2917,8 +2792,8 @@ async function runExtension(target, options, global2) {
2917
2792
  if (!candidate) {
2918
2793
  throw new PmCliError(`Installed extension "${extensionTarget}" was not found in ${scope} scope.`, EXIT_CODE.NOT_FOUND);
2919
2794
  }
2920
- const destinationDirectory = path6.join(resolvedRoots.selected_root, candidate.directory);
2921
- await fs6.rm(destinationDirectory, { recursive: true, force: true });
2795
+ const destinationDirectory = path5.join(resolvedRoots.selected_root, candidate.directory);
2796
+ await fs5.rm(destinationDirectory, { recursive: true, force: true });
2922
2797
  const updatedState = {
2923
2798
  ...managedStateRead.state,
2924
2799
  updated_at: nowIso(),
@@ -3004,6 +2879,7 @@ async function runExtension(target, options, global2) {
3004
2879
  warnings.push(...classifyDoctorLoadFailureWarnings(loadResult.failed));
3005
2880
  warnings.push(...activationResult.warnings);
3006
2881
  warnings.push(...classifyDoctorActivationFailureWarnings(activationResult.failed));
2882
+ warnings.push(...classifyUnusedCapabilityWarnings(loadResult, activationResult));
3007
2883
  warnings.push(...collectGlobalOutputOverrideDoctorWarnings(activationResult));
3008
2884
  const runtimeInstalledExtensions = applyDoctorRuntimeActivationState(refreshedInstalled.extensions, loadResult, activationResult);
3009
2885
  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);
@@ -3173,6 +3049,29 @@ async function runExtension(target, options, global2) {
3173
3049
  }
3174
3050
  return withResult(details);
3175
3051
  }
3052
+ if (action === "describe") {
3053
+ const settings = await readSettings(resolvedRoots.settings_root);
3054
+ const loadResult = await loadExtensions({
3055
+ pmRoot: resolvedRoots.pm_root,
3056
+ settings,
3057
+ cwd: process.cwd(),
3058
+ noExtensions: global2.noExtensions === true
3059
+ });
3060
+ const activationResult = await activateExtensions(loadResult);
3061
+ warnings.push(...loadResult.warnings);
3062
+ warnings.push(...activationResult.warnings);
3063
+ const describeResult = buildExtensionDescribeResult(normalizedTarget, loadResult, activationResult);
3064
+ if (normalizedTarget !== void 0 && describeResult.extensions.length === 0) {
3065
+ const noun = options.vocabulary === "package" ? "package" : "extension";
3066
+ 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);
3067
+ }
3068
+ return withResult({
3069
+ target: describeResult.target,
3070
+ total: describeResult.total,
3071
+ extensions: describeResult.extensions,
3072
+ union: describeResult.union
3073
+ });
3074
+ }
3176
3075
  if (action === "explore" || action === "manage") {
3177
3076
  const settings = await readSettings(resolvedRoots.settings_root);
3178
3077
  const configuredPolicy = buildExtensionPolicyDetails(settings.extensions.policy);
@@ -3321,4 +3220,4 @@ export {
3321
3220
  runExtension,
3322
3221
  _testOnly
3323
3222
  };
3324
- //# sourceMappingURL=chunk-5PCI3UBT.js.map
3223
+ //# sourceMappingURL=chunk-G6PYHBBR.js.map