@unbrained/pm-cli 2026.6.20 → 2026.6.22

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (443) hide show
  1. package/CHANGELOG.md +39 -0
  2. package/dist/cli/commands/completion.js +5 -3
  3. package/dist/cli/commands/completion.js.map +1 -1
  4. package/dist/cli/commands/extension/doctor.d.ts +11 -0
  5. package/dist/cli/commands/extension/doctor.js +31 -2
  6. package/dist/cli/commands/extension/doctor.js.map +1 -1
  7. package/dist/cli/commands/extension/scaffold.d.ts +16 -2
  8. package/dist/cli/commands/extension/scaffold.js +499 -20
  9. package/dist/cli/commands/extension/scaffold.js.map +1 -1
  10. package/dist/cli/commands/extension.d.ts +1 -0
  11. package/dist/cli/commands/extension.js +16 -4
  12. package/dist/cli/commands/extension.js.map +1 -1
  13. package/dist/cli/commands/health.js +15 -3
  14. package/dist/cli/commands/health.js.map +1 -1
  15. package/dist/cli/commands/validate.d.ts +1 -1
  16. package/dist/cli/commands/validate.js +44 -2
  17. package/dist/cli/commands/validate.js.map +1 -1
  18. package/dist/cli/help-content.js +16 -4
  19. package/dist/cli/help-content.js.map +1 -1
  20. package/dist/cli/register-setup.js +6 -2
  21. package/dist/cli/register-setup.js.map +1 -1
  22. package/dist/cli-bundle/chunks/{activity-KEEITOTB.js → activity-DXS2XMQU.js} +11 -11
  23. package/dist/cli-bundle/chunks/activity-NEOI45NX.js +18 -0
  24. package/dist/cli-bundle/chunks/{aggregate-5BTHOHW2.js → aggregate-IHM4KMQ3.js} +10 -10
  25. package/dist/cli-bundle/chunks/{aggregate-GB2LJNTZ.js → aggregate-NMYDVQF7.js} +10 -10
  26. package/dist/cli-bundle/chunks/{append-BBM4MNVD.js → append-3HY5G7ET.js} +8 -8
  27. package/dist/cli-bundle/chunks/{append-BFV5UYWS.js → append-K54MDQYC.js} +8 -8
  28. package/dist/cli-bundle/chunks/{chunk-DKWIPIJY.js → chunk-25XZN3JD.js} +2 -2
  29. package/dist/cli-bundle/chunks/{chunk-GF44HVZL.js → chunk-2LEYMXI6.js} +4 -4
  30. package/dist/cli-bundle/chunks/chunk-3GL6LTUL.js +643 -0
  31. package/dist/cli-bundle/chunks/chunk-3GL6LTUL.js.map +1 -0
  32. package/dist/cli-bundle/chunks/{chunk-XNQ3YH6N.js → chunk-3VLPDG3J.js} +2 -2
  33. package/dist/cli-bundle/chunks/{chunk-W2ZESOQE.js → chunk-44O4JIN6.js} +13 -13
  34. package/dist/cli-bundle/chunks/{chunk-RADIHKJ3.js → chunk-47HTJ6BU.js} +5 -5
  35. package/dist/cli-bundle/chunks/{chunk-B3LROPTV.js → chunk-4JXWVHMN.js} +2 -2
  36. package/dist/cli-bundle/chunks/{chunk-HWHZ7EY7.js → chunk-4SDKF5BG.js} +3 -3
  37. package/dist/cli-bundle/chunks/chunk-4YJA4LGU.js +646 -0
  38. package/dist/cli-bundle/chunks/chunk-4YJA4LGU.js.map +7 -0
  39. package/dist/cli-bundle/chunks/{chunk-RNKUCHUQ.js → chunk-5SESR24H.js} +8 -8
  40. package/dist/cli-bundle/chunks/{chunk-RICT5QYR.js → chunk-6FQHNHQQ.js} +3 -3
  41. package/dist/cli-bundle/chunks/{chunk-FA5O2DEG.js → chunk-6UPTNMVW.js} +5 -5
  42. package/dist/cli-bundle/chunks/{chunk-4KFL5OYK.js → chunk-75VEYQJS.js} +3 -3
  43. package/dist/cli-bundle/chunks/{chunk-2ZY5SLNR.js → chunk-77VKGH4L.js} +10 -10
  44. package/dist/cli-bundle/chunks/{chunk-H3ZTSYPA.js → chunk-7GCCDXXN.js} +57 -223
  45. package/dist/cli-bundle/chunks/chunk-7GCCDXXN.js.map +7 -0
  46. package/dist/cli-bundle/chunks/{chunk-6Y7IQ6XN.js → chunk-7MALIV5H.js} +9 -9
  47. package/dist/cli-bundle/chunks/{chunk-MFCFHL27.js → chunk-7MPTFYT3.js} +20 -15
  48. package/dist/cli-bundle/chunks/chunk-7MPTFYT3.js.map +1 -0
  49. package/dist/cli-bundle/chunks/{chunk-NMQNXH4U.js → chunk-7PBGTIN3.js} +5 -5
  50. package/dist/cli-bundle/chunks/{chunk-3KVCMB2M.js → chunk-A25LOPRG.js} +2 -2
  51. package/dist/cli-bundle/chunks/{chunk-6KSFULO6.js → chunk-A7E4ZXG2.js} +2 -2
  52. package/dist/cli-bundle/chunks/{chunk-ZHCSGIUX.js → chunk-AJXYOYJV.js} +2 -2
  53. package/dist/cli-bundle/chunks/{chunk-PF5GLFPU.js → chunk-B2KR24R4.js} +9 -9
  54. package/dist/cli-bundle/chunks/{chunk-ZYG4TR32.js → chunk-C5SWTISA.js} +12 -12
  55. package/dist/cli-bundle/chunks/{chunk-F4EYOSNC.js → chunk-CLLVBO3I.js} +2 -2
  56. package/dist/cli-bundle/chunks/{chunk-5MWA46UN.js → chunk-CR7KFPAQ.js} +61 -4
  57. package/dist/cli-bundle/chunks/chunk-CR7KFPAQ.js.map +7 -0
  58. package/dist/cli-bundle/chunks/{chunk-4PW4C3ZB.js → chunk-CWPBGUC7.js} +2 -2
  59. package/dist/cli-bundle/chunks/{chunk-LTUB7ARL.js → chunk-D35LTIFR.js} +57 -216
  60. package/dist/cli-bundle/chunks/chunk-D35LTIFR.js.map +1 -0
  61. package/dist/cli-bundle/chunks/{chunk-J7VSEFWB.js → chunk-DBQUQ3AS.js} +3 -3
  62. package/dist/cli-bundle/chunks/{chunk-2LUNPA3U.js → chunk-DHBPJ7VG.js} +2 -2
  63. package/dist/cli-bundle/chunks/{chunk-6FSPWUBI.js → chunk-DMT4ODVN.js} +2 -2
  64. package/dist/cli-bundle/chunks/{chunk-XXGAWTH5.js → chunk-DU64SZUQ.js} +2 -2
  65. package/dist/cli-bundle/chunks/{chunk-CNPWCUDR.js → chunk-EVPVCE4R.js} +3 -3
  66. package/dist/cli-bundle/chunks/{chunk-ACULWT7G.js → chunk-FK6MV5F5.js} +12 -12
  67. package/dist/cli-bundle/chunks/{chunk-XKJDCJEH.js → chunk-GGAXE22C.js} +6 -6
  68. package/dist/cli-bundle/chunks/{chunk-SL233DQD.js → chunk-GNDHOR64.js} +6 -6
  69. package/dist/cli-bundle/chunks/{chunk-U3WTMYBX.js → chunk-GU7YHKYP.js} +2 -2
  70. package/dist/cli-bundle/chunks/{chunk-26OQTCGH.js → chunk-GXBSFKSX.js} +4 -4
  71. package/dist/cli-bundle/chunks/{chunk-AOCYDQLT.js → chunk-H6FNDCDI.js} +5 -5
  72. package/dist/cli-bundle/chunks/{chunk-ICEWMJYH.js → chunk-HYQV75IB.js} +7 -7
  73. package/dist/cli-bundle/chunks/{chunk-5XK2RYJR.js → chunk-I367IDZP.js} +7 -7
  74. package/dist/cli-bundle/chunks/{chunk-E4E7UQBT.js → chunk-I6XE47J2.js} +5 -5
  75. package/dist/cli-bundle/chunks/{chunk-NKTUBA2C.js → chunk-J2TSPY5L.js} +4 -4
  76. package/dist/cli-bundle/chunks/{chunk-IWKD7B33.js → chunk-JINYH2DB.js} +23 -2
  77. package/dist/cli-bundle/chunks/chunk-JINYH2DB.js.map +7 -0
  78. package/dist/cli-bundle/chunks/{chunk-DYOJJTCG.js → chunk-JLSC5NPC.js} +10 -10
  79. package/dist/cli-bundle/chunks/{chunk-FXKPUMIR.js → chunk-JY25IOEZ.js} +5 -5
  80. package/dist/cli-bundle/chunks/{chunk-NCGQ27PK.js → chunk-K25UDYJ4.js} +2 -2
  81. package/dist/cli-bundle/chunks/{chunk-3WAKNI2W.js → chunk-KBTREGVO.js} +3 -3
  82. package/dist/cli-bundle/chunks/{chunk-KCJZREBI.js → chunk-KK4TQ3ZP.js} +2 -2
  83. package/dist/cli-bundle/chunks/{chunk-AZ75OVK4.js → chunk-KL5ELX2X.js} +82 -3
  84. package/dist/cli-bundle/chunks/chunk-KL5ELX2X.js.map +1 -0
  85. package/dist/cli-bundle/chunks/{chunk-7MMXBIRZ.js → chunk-KRJJPDUO.js} +2 -2
  86. package/dist/cli-bundle/chunks/{chunk-BYNJWB5F.js → chunk-MD7XKVWI.js} +7 -7
  87. package/dist/cli-bundle/chunks/{chunk-WFOITX4A.js → chunk-MNGAQB2E.js} +8 -8
  88. package/dist/cli-bundle/chunks/{chunk-II4BRHKM.js → chunk-NIWY4V4Z.js} +3 -3
  89. package/dist/cli-bundle/chunks/{chunk-YT4Z2OVB.js → chunk-NKZOJPXK.js} +3 -3
  90. package/dist/cli-bundle/chunks/{chunk-YBQF4CAW.js → chunk-NVUATMTC.js} +3 -3
  91. package/dist/cli-bundle/chunks/{chunk-FSOJCFDS.js → chunk-P7ZU73BO.js} +55 -5
  92. package/dist/cli-bundle/chunks/chunk-P7ZU73BO.js.map +1 -0
  93. package/dist/cli-bundle/chunks/{chunk-MTQK5ZSB.js → chunk-PCH2JTEO.js} +2 -2
  94. package/dist/cli-bundle/chunks/{chunk-VE3BUO3R.js → chunk-PJS2J7Z4.js} +3 -3
  95. package/dist/cli-bundle/chunks/{chunk-2QJLN4KM.js → chunk-QQWEROGS.js} +7 -7
  96. package/dist/cli-bundle/chunks/{chunk-OLEP5TJH.js → chunk-R2EMWY7Q.js} +24 -3
  97. package/dist/cli-bundle/chunks/chunk-R2EMWY7Q.js.map +1 -0
  98. package/dist/cli-bundle/chunks/{chunk-6DZO5NN7.js → chunk-RPRFBXND.js} +3 -3
  99. package/dist/cli-bundle/chunks/{chunk-QWAJPGEI.js → chunk-RZZMSY4P.js} +91 -5
  100. package/dist/cli-bundle/chunks/chunk-RZZMSY4P.js.map +7 -0
  101. package/dist/cli-bundle/chunks/{chunk-BBSUVIIT.js → chunk-SFKQAVZA.js} +8 -8
  102. package/dist/cli-bundle/chunks/{chunk-X3CD2VUI.js → chunk-THKDPOS5.js} +8 -8
  103. package/dist/cli-bundle/chunks/{chunk-OVSFW4KD.js → chunk-TIKJAXQW.js} +3 -3
  104. package/dist/cli-bundle/chunks/{chunk-4YMX7XFI.js → chunk-TJABI6PR.js} +5 -5
  105. package/dist/cli-bundle/chunks/{chunk-VONJSFUW.js → chunk-TRUFOER3.js} +19 -14
  106. package/dist/cli-bundle/chunks/{chunk-VONJSFUW.js.map → chunk-TRUFOER3.js.map} +2 -2
  107. package/dist/cli-bundle/chunks/{chunk-AW4PYYNF.js → chunk-TZQKEBKF.js} +2 -2
  108. package/dist/cli-bundle/chunks/{chunk-QUTJOHGK.js → chunk-UKK2VTTH.js} +9 -9
  109. package/dist/cli-bundle/chunks/{chunk-ATRXPXAL.js → chunk-V4SM4UAL.js} +13 -13
  110. package/dist/cli-bundle/chunks/{chunk-6KARQMC6.js → chunk-VB54F347.js} +2 -2
  111. package/dist/cli-bundle/chunks/{chunk-6LTSLEHD.js → chunk-WBSYW3NT.js} +2 -2
  112. package/dist/cli-bundle/chunks/{chunk-4S4INK3B.js → chunk-WQDX7DVG.js} +7 -7
  113. package/dist/cli-bundle/chunks/{chunk-ETJKPURB.js → chunk-XKNF3VRJ.js} +5 -5
  114. package/dist/cli-bundle/chunks/{chunk-BZWIDTDE.js → chunk-Y335KFHD.js} +9 -9
  115. package/dist/cli-bundle/chunks/{chunk-K2LBDYDC.js → chunk-Y4BZEND6.js} +2 -2
  116. package/dist/cli-bundle/chunks/{chunk-EOFROIC5.js → chunk-YATDFWYK.js} +7 -7
  117. package/dist/cli-bundle/chunks/{chunk-EKMHDL6Z.js → chunk-YJICYNAV.js} +8 -8
  118. package/dist/cli-bundle/chunks/{chunk-WMQBNVZL.js → chunk-YQSWTVZF.js} +4 -4
  119. package/dist/cli-bundle/chunks/{chunk-FBBPCSJM.js → chunk-YRLLL5TY.js} +8 -8
  120. package/dist/cli-bundle/chunks/{claim-G57ZJLZ4.js → claim-MPXNVBZQ.js} +10 -10
  121. package/dist/cli-bundle/chunks/{claim-TRSDQO6L.js → claim-SKHJDLW6.js} +10 -10
  122. package/dist/cli-bundle/chunks/{close-4QMUQMON.js → close-4RKSL5L6.js} +8 -8
  123. package/dist/cli-bundle/chunks/close-Z6AI736U.js +15 -0
  124. package/dist/cli-bundle/chunks/{close-many-3UWKJRQK.js → close-many-AWTPXLHJ.js} +15 -15
  125. package/dist/cli-bundle/chunks/{close-many-A7U62CRI.js → close-many-SXODYBDP.js} +15 -15
  126. package/dist/cli-bundle/chunks/{comments-URWDZP2I.js → comments-OOH64LWW.js} +10 -10
  127. package/dist/cli-bundle/chunks/{comments-4EM7XR74.js → comments-YYW5P7AG.js} +10 -10
  128. package/dist/cli-bundle/chunks/{config-PSZ5GWAK.js → config-3445MCQQ.js} +8 -8
  129. package/dist/cli-bundle/chunks/{config-GRJYZ2O3.js → config-LCDMKRB2.js} +8 -8
  130. package/dist/cli-bundle/chunks/{context-BCR34RKM.js → context-DZMIBIVP.js} +13 -13
  131. package/dist/cli-bundle/chunks/{context-A46YAV2F.js → context-PJCURODY.js} +13 -13
  132. package/dist/cli-bundle/chunks/{contracts-JOPCQNDP.js → contracts-7YDFEJB3.js} +4 -4
  133. package/dist/cli-bundle/chunks/{contracts-HPT25X4D.js → contracts-MP2P3HL5.js} +4 -4
  134. package/dist/cli-bundle/chunks/{copy-KBTIUW7L.js → copy-63IQQRRS.js} +7 -7
  135. package/dist/cli-bundle/chunks/{copy-X7V6AEDB.js → copy-TASIH2AZ.js} +7 -7
  136. package/dist/cli-bundle/chunks/create-3BV2VA3Q.js +30 -0
  137. package/dist/cli-bundle/chunks/{create-ZPZKJDFQ.js → create-TGSB5GV4.js} +14 -14
  138. package/dist/cli-bundle/chunks/{delete-FGKVPUQZ.js → delete-ARILQQLB.js} +7 -7
  139. package/dist/cli-bundle/chunks/{delete-2ZI6CJZM.js → delete-ZQKBZYNK.js} +7 -7
  140. package/dist/cli-bundle/chunks/{deps-IUJOBF2H.js → deps-MSHQR2GY.js} +7 -7
  141. package/dist/cli-bundle/chunks/{deps-SJCEFU3C.js → deps-NJFJIMQ5.js} +7 -7
  142. package/dist/cli-bundle/chunks/{docs-UWJ75CKR.js → docs-SS4UKYYA.js} +9 -9
  143. package/dist/cli-bundle/chunks/{docs-2LXF5SVC.js → docs-XK2UVUXX.js} +9 -9
  144. package/dist/cli-bundle/chunks/{eval-ZTT3F3SL.js → eval-FVZGX5IZ.js} +12 -12
  145. package/dist/cli-bundle/chunks/{eval-FRIDCTM2.js → eval-JOTG2YHU.js} +12 -12
  146. package/dist/cli-bundle/chunks/{extension-VRYTNNSV.js → extension-NLMS47I4.js} +6 -5
  147. package/dist/cli-bundle/chunks/{extension-XFQG3BXL.js → extension-OQPS27B4.js} +6 -5
  148. package/dist/cli-bundle/chunks/{files-AJOGTTAN.js → files-3EVJQZ2N.js} +9 -9
  149. package/dist/cli-bundle/chunks/{files-B2RUCA32.js → files-Y2P6LN5A.js} +9 -9
  150. package/dist/cli-bundle/chunks/{focus-7N36RIMT.js → focus-D5ZUPTII.js} +8 -8
  151. package/dist/cli-bundle/chunks/{focus-CFE33IYC.js → focus-ZPIFTY4R.js} +8 -8
  152. package/dist/cli-bundle/chunks/{gc-SBF2FGHK.js → gc-LXXDY456.js} +3 -3
  153. package/dist/cli-bundle/chunks/{gc-OYJK4YBY.js → gc-RNOEQHSX.js} +3 -3
  154. package/dist/cli-bundle/chunks/{get-LLFWSPXW.js → get-Q3SZGQHD.js} +11 -11
  155. package/dist/cli-bundle/chunks/{get-577VLZZ7.js → get-W23G7MJX.js} +11 -11
  156. package/dist/cli-bundle/chunks/{health-PBJS7W2T.js → health-5LHSX365.js} +33 -19
  157. package/dist/cli-bundle/chunks/health-5LHSX365.js.map +7 -0
  158. package/dist/cli-bundle/chunks/{health-C2PUT6JZ.js → health-UDDGJLPP.js} +34 -20
  159. package/dist/cli-bundle/chunks/health-UDDGJLPP.js.map +1 -0
  160. package/dist/cli-bundle/chunks/{history-4FJK6Y3O.js → history-6CZVFIUJ.js} +10 -10
  161. package/dist/cli-bundle/chunks/history-YRQUD4YM.js +20 -0
  162. package/dist/cli-bundle/chunks/{history-compact-AXR6R6GU.js → history-compact-M35PDQ4G.js} +12 -12
  163. package/dist/cli-bundle/chunks/{history-compact-HXF3OT7G.js → history-compact-VWUSQH6Z.js} +12 -12
  164. package/dist/cli-bundle/chunks/history-redact-27OEOZRZ.js +21 -0
  165. package/dist/cli-bundle/chunks/{history-redact-UMPD4G3K.js → history-redact-AJGARHT3.js} +11 -11
  166. package/dist/cli-bundle/chunks/{history-repair-WHOK2ICG.js → history-repair-5RDMF7K4.js} +12 -12
  167. package/dist/cli-bundle/chunks/{history-repair-X57HE5EA.js → history-repair-YUAHIPIN.js} +12 -12
  168. package/dist/cli-bundle/chunks/init-DWAKYRXI.js +21 -0
  169. package/dist/cli-bundle/chunks/{init-N7MIIYCU.js → init-HASX3YNJ.js} +11 -10
  170. package/dist/cli-bundle/chunks/{learnings-GZRBIEAN.js → learnings-JNGUIJDK.js} +10 -10
  171. package/dist/cli-bundle/chunks/{learnings-FPG7WAVW.js → learnings-M4KA6MQE.js} +10 -10
  172. package/dist/cli-bundle/chunks/{list-ZDQ2OBSO.js → list-5UU2W24O.js} +10 -10
  173. package/dist/cli-bundle/chunks/{list-MZBCSKLU.js → list-6FMKTIH3.js} +10 -10
  174. package/dist/cli-bundle/chunks/{notes-LW53PFLH.js → notes-MODH5CBT.js} +10 -10
  175. package/dist/cli-bundle/chunks/{notes-WQAP67EC.js → notes-PYCPLA5Y.js} +10 -10
  176. package/dist/cli-bundle/chunks/{plan-VZKICKIJ.js → plan-DXRIRYRU.js} +14 -14
  177. package/dist/cli-bundle/chunks/{plan-AVJ4VJQO.js → plan-EHQALWSC.js} +14 -14
  178. package/dist/cli-bundle/chunks/{register-list-query-7BD6ZHU5.js → register-list-query-QAASVP2J.js} +19 -19
  179. package/dist/cli-bundle/chunks/{register-list-query-CM4SVAQA.js → register-list-query-WE54YJMH.js} +19 -19
  180. package/dist/cli-bundle/chunks/{register-mutation-ANZIWHUF.js → register-mutation-B6DZJTY2.js} +33 -33
  181. package/dist/cli-bundle/chunks/{register-mutation-PLFHAS4N.js → register-mutation-CPV4C2KR.js} +33 -33
  182. package/dist/cli-bundle/chunks/{register-operations-KQPQIFF2.js → register-operations-AT3BVVX2.js} +32 -32
  183. package/dist/cli-bundle/chunks/{register-operations-VLGCAWIW.js → register-operations-RC4C3423.js} +32 -32
  184. package/dist/cli-bundle/chunks/{register-setup-KPTZ36D4.js → register-setup-HXEHMDHE.js} +23 -18
  185. package/dist/cli-bundle/chunks/register-setup-HXEHMDHE.js.map +7 -0
  186. package/dist/cli-bundle/chunks/{register-setup-TMEF6V7O.js → register-setup-JSMJEFCJ.js} +24 -19
  187. package/dist/cli-bundle/chunks/register-setup-JSMJEFCJ.js.map +1 -0
  188. package/dist/cli-bundle/chunks/{restore-64JKQV7G.js → restore-FNBV4GWE.js} +11 -11
  189. package/dist/cli-bundle/chunks/restore-XY4YE2OV.js +19 -0
  190. package/dist/cli-bundle/chunks/{scheduling-shortcuts-X6D6VSZR.js → scheduling-shortcuts-ECL6GBMZ.js} +14 -14
  191. package/dist/cli-bundle/chunks/{scheduling-shortcuts-4ION7QAX.js → scheduling-shortcuts-JRIUREEU.js} +14 -14
  192. package/dist/cli-bundle/chunks/{schema-TA3NF3RG.js → schema-74YENAJL.js} +9 -9
  193. package/dist/cli-bundle/chunks/{schema-OA4RSVMI.js → schema-TCW3I7QR.js} +9 -9
  194. package/dist/cli-bundle/chunks/{search-UAIHEQZL.js → search-7USZ6XZA.js} +12 -12
  195. package/dist/cli-bundle/chunks/{search-INCM5I4J.js → search-GNAUE65M.js} +12 -12
  196. package/dist/cli-bundle/chunks/{stats-RHEMG4CE.js → stats-CVHASAEU.js} +8 -8
  197. package/dist/cli-bundle/chunks/{stats-WQWTIA5Y.js → stats-DQMKJMFT.js} +8 -8
  198. package/dist/cli-bundle/chunks/{telemetry-XA5D2QEO.js → telemetry-7P5EUWCS.js} +4 -4
  199. package/dist/cli-bundle/chunks/{telemetry-G6UKGKJU.js → telemetry-PQTL5YS2.js} +4 -4
  200. package/dist/cli-bundle/chunks/test-COWPCGBE.js +36 -0
  201. package/dist/cli-bundle/chunks/{test-ZMQF23P3.js → test-FDQZQNZ4.js} +16 -15
  202. package/dist/cli-bundle/chunks/{test-all-ZNQBMUOI.js → test-all-PIPPS4S5.js} +18 -17
  203. package/dist/cli-bundle/chunks/{test-all-ZNQBMUOI.js.map → test-all-PIPPS4S5.js.map} +1 -1
  204. package/dist/cli-bundle/chunks/{test-all-WUBBJCPU.js → test-all-WQIAZVA6.js} +16 -15
  205. package/dist/cli-bundle/chunks/{test-all-WUBBJCPU.js.map → test-all-WQIAZVA6.js.map} +1 -1
  206. package/dist/cli-bundle/chunks/{test-runs-N7LI7HLH.js → test-runs-JS6DNCCI.js} +5 -5
  207. package/dist/cli-bundle/chunks/{test-runs-RFA42EEX.js → test-runs-NZD2QGL5.js} +5 -5
  208. package/dist/cli-bundle/chunks/update-7IYQHX4Q.js +24 -0
  209. package/dist/cli-bundle/chunks/update-IJKDRBIX.js +28 -0
  210. package/dist/cli-bundle/chunks/{update-many-6XFR7TFG.js → update-many-6NTZ5J5D.js} +23 -23
  211. package/dist/cli-bundle/chunks/{update-many-NMRUQZL2.js → update-many-B3TH5TDS.js} +23 -23
  212. package/dist/cli-bundle/chunks/{upgrade-QMCSONWR.js → upgrade-4C7VE7MS.js} +8 -7
  213. package/dist/cli-bundle/chunks/{upgrade-QMCSONWR.js.map → upgrade-4C7VE7MS.js.map} +1 -1
  214. package/dist/cli-bundle/chunks/{upgrade-EJTME2YQ.js → upgrade-76IKZ6EZ.js} +6 -5
  215. package/dist/cli-bundle/chunks/{upgrade-EJTME2YQ.js.map → upgrade-76IKZ6EZ.js.map} +1 -1
  216. package/dist/cli-bundle/chunks/{validate-KIIJY5RC.js → validate-AQU7OCL3.js} +62 -23
  217. package/dist/cli-bundle/chunks/validate-AQU7OCL3.js.map +7 -0
  218. package/dist/cli-bundle/chunks/{validate-3SUCHXXX.js → validate-BPM6Z3OT.js} +63 -24
  219. package/dist/cli-bundle/chunks/validate-BPM6Z3OT.js.map +1 -0
  220. package/dist/cli-bundle/main.js +34 -22
  221. package/dist/cli-bundle/main.js.map +2 -2
  222. package/dist/cli.js +3 -3
  223. package/dist/cli.js.map +1 -1
  224. package/dist/core/diagnostics/remediation.js +23 -2
  225. package/dist/core/diagnostics/remediation.js.map +1 -1
  226. package/dist/core/extensions/capability-usage.d.ts +82 -0
  227. package/dist/core/extensions/capability-usage.js +133 -0
  228. package/dist/core/extensions/capability-usage.js.map +1 -0
  229. package/dist/core/extensions/extension-capability-aliases.d.ts +7 -0
  230. package/dist/core/extensions/extension-capability-aliases.js +12 -2
  231. package/dist/core/extensions/extension-capability-aliases.js.map +1 -1
  232. package/dist/core/extensions/index.d.ts +1 -0
  233. package/dist/core/extensions/index.js +3 -2
  234. package/dist/core/extensions/index.js.map +1 -1
  235. package/dist/core/item/item-format-version.d.ts +87 -0
  236. package/dist/core/item/item-format-version.js +85 -0
  237. package/dist/core/item/item-format-version.js.map +1 -0
  238. package/dist/core/item/item-format.js +8 -2
  239. package/dist/core/item/item-format.js.map +1 -1
  240. package/dist/core/shared/constants.js +3 -2
  241. package/dist/core/shared/constants.js.map +1 -1
  242. package/dist/sdk/cli-contracts.d.ts +1 -0
  243. package/dist/sdk/cli-contracts.js +18 -13
  244. package/dist/sdk/cli-contracts.js.map +1 -1
  245. package/dist/sdk/index.d.ts +7 -2
  246. package/dist/sdk/index.js +8 -3
  247. package/dist/sdk/index.js.map +1 -1
  248. package/dist/sdk/runtime.d.ts +1 -0
  249. package/dist/sdk/runtime.js +3 -2
  250. package/dist/sdk/runtime.js.map +1 -1
  251. package/dist/sdk/testing.d.ts +567 -1
  252. package/dist/sdk/testing.js +573 -18
  253. package/dist/sdk/testing.js.map +1 -1
  254. package/dist/types.d.ts +7 -0
  255. package/dist/types.js +2 -2
  256. package/dist/types.js.map +1 -1
  257. package/docs/ARCHITECTURE.md +2 -0
  258. package/docs/COMMANDS.md +2 -0
  259. package/docs/EXTENSIONS.md +4 -8
  260. package/docs/SDK.md +328 -0
  261. package/package.json +2 -2
  262. package/packages/pm-command-kit/README.md +4 -0
  263. package/packages/pm-todos/extensions/todos/runtime.js +191 -8
  264. package/packages/pm-todos/extensions/todos/runtime.ts +207 -7
  265. package/dist/cli-bundle/chunks/activity-7G7NNNZQ.js +0 -18
  266. package/dist/cli-bundle/chunks/chunk-5MWA46UN.js.map +0 -7
  267. package/dist/cli-bundle/chunks/chunk-AZ75OVK4.js.map +0 -1
  268. package/dist/cli-bundle/chunks/chunk-FSOJCFDS.js.map +0 -1
  269. package/dist/cli-bundle/chunks/chunk-H3ZTSYPA.js.map +0 -7
  270. package/dist/cli-bundle/chunks/chunk-IWKD7B33.js.map +0 -7
  271. package/dist/cli-bundle/chunks/chunk-LTUB7ARL.js.map +0 -1
  272. package/dist/cli-bundle/chunks/chunk-MFCFHL27.js.map +0 -1
  273. package/dist/cli-bundle/chunks/chunk-OLEP5TJH.js.map +0 -1
  274. package/dist/cli-bundle/chunks/chunk-QWAJPGEI.js.map +0 -7
  275. package/dist/cli-bundle/chunks/close-NNZZTZ5V.js +0 -15
  276. package/dist/cli-bundle/chunks/create-4KOAQ6ME.js +0 -30
  277. package/dist/cli-bundle/chunks/health-C2PUT6JZ.js.map +0 -1
  278. package/dist/cli-bundle/chunks/health-PBJS7W2T.js.map +0 -7
  279. package/dist/cli-bundle/chunks/history-ZXNWG6H4.js +0 -20
  280. package/dist/cli-bundle/chunks/history-redact-GV633Z4H.js +0 -21
  281. package/dist/cli-bundle/chunks/init-KQWZSNBX.js +0 -20
  282. package/dist/cli-bundle/chunks/register-setup-KPTZ36D4.js.map +0 -7
  283. package/dist/cli-bundle/chunks/register-setup-TMEF6V7O.js.map +0 -1
  284. package/dist/cli-bundle/chunks/restore-GKM26SAW.js +0 -19
  285. package/dist/cli-bundle/chunks/test-XF7BYLMZ.js +0 -35
  286. package/dist/cli-bundle/chunks/update-CPNOG73P.js +0 -24
  287. package/dist/cli-bundle/chunks/update-T5AYT6ZN.js +0 -28
  288. package/dist/cli-bundle/chunks/validate-3SUCHXXX.js.map +0 -1
  289. package/dist/cli-bundle/chunks/validate-KIIJY5RC.js.map +0 -7
  290. /package/dist/cli-bundle/chunks/{activity-KEEITOTB.js.map → activity-DXS2XMQU.js.map} +0 -0
  291. /package/dist/cli-bundle/chunks/{activity-7G7NNNZQ.js.map → activity-NEOI45NX.js.map} +0 -0
  292. /package/dist/cli-bundle/chunks/{aggregate-5BTHOHW2.js.map → aggregate-IHM4KMQ3.js.map} +0 -0
  293. /package/dist/cli-bundle/chunks/{aggregate-GB2LJNTZ.js.map → aggregate-NMYDVQF7.js.map} +0 -0
  294. /package/dist/cli-bundle/chunks/{append-BBM4MNVD.js.map → append-3HY5G7ET.js.map} +0 -0
  295. /package/dist/cli-bundle/chunks/{append-BFV5UYWS.js.map → append-K54MDQYC.js.map} +0 -0
  296. /package/dist/cli-bundle/chunks/{chunk-DKWIPIJY.js.map → chunk-25XZN3JD.js.map} +0 -0
  297. /package/dist/cli-bundle/chunks/{chunk-GF44HVZL.js.map → chunk-2LEYMXI6.js.map} +0 -0
  298. /package/dist/cli-bundle/chunks/{chunk-XNQ3YH6N.js.map → chunk-3VLPDG3J.js.map} +0 -0
  299. /package/dist/cli-bundle/chunks/{chunk-W2ZESOQE.js.map → chunk-44O4JIN6.js.map} +0 -0
  300. /package/dist/cli-bundle/chunks/{chunk-RADIHKJ3.js.map → chunk-47HTJ6BU.js.map} +0 -0
  301. /package/dist/cli-bundle/chunks/{chunk-B3LROPTV.js.map → chunk-4JXWVHMN.js.map} +0 -0
  302. /package/dist/cli-bundle/chunks/{chunk-HWHZ7EY7.js.map → chunk-4SDKF5BG.js.map} +0 -0
  303. /package/dist/cli-bundle/chunks/{chunk-RNKUCHUQ.js.map → chunk-5SESR24H.js.map} +0 -0
  304. /package/dist/cli-bundle/chunks/{chunk-RICT5QYR.js.map → chunk-6FQHNHQQ.js.map} +0 -0
  305. /package/dist/cli-bundle/chunks/{chunk-FA5O2DEG.js.map → chunk-6UPTNMVW.js.map} +0 -0
  306. /package/dist/cli-bundle/chunks/{chunk-4KFL5OYK.js.map → chunk-75VEYQJS.js.map} +0 -0
  307. /package/dist/cli-bundle/chunks/{chunk-2ZY5SLNR.js.map → chunk-77VKGH4L.js.map} +0 -0
  308. /package/dist/cli-bundle/chunks/{chunk-6Y7IQ6XN.js.map → chunk-7MALIV5H.js.map} +0 -0
  309. /package/dist/cli-bundle/chunks/{chunk-NMQNXH4U.js.map → chunk-7PBGTIN3.js.map} +0 -0
  310. /package/dist/cli-bundle/chunks/{chunk-3KVCMB2M.js.map → chunk-A25LOPRG.js.map} +0 -0
  311. /package/dist/cli-bundle/chunks/{chunk-6KSFULO6.js.map → chunk-A7E4ZXG2.js.map} +0 -0
  312. /package/dist/cli-bundle/chunks/{chunk-ZHCSGIUX.js.map → chunk-AJXYOYJV.js.map} +0 -0
  313. /package/dist/cli-bundle/chunks/{chunk-PF5GLFPU.js.map → chunk-B2KR24R4.js.map} +0 -0
  314. /package/dist/cli-bundle/chunks/{chunk-ZYG4TR32.js.map → chunk-C5SWTISA.js.map} +0 -0
  315. /package/dist/cli-bundle/chunks/{chunk-F4EYOSNC.js.map → chunk-CLLVBO3I.js.map} +0 -0
  316. /package/dist/cli-bundle/chunks/{chunk-4PW4C3ZB.js.map → chunk-CWPBGUC7.js.map} +0 -0
  317. /package/dist/cli-bundle/chunks/{chunk-J7VSEFWB.js.map → chunk-DBQUQ3AS.js.map} +0 -0
  318. /package/dist/cli-bundle/chunks/{chunk-2LUNPA3U.js.map → chunk-DHBPJ7VG.js.map} +0 -0
  319. /package/dist/cli-bundle/chunks/{chunk-6FSPWUBI.js.map → chunk-DMT4ODVN.js.map} +0 -0
  320. /package/dist/cli-bundle/chunks/{chunk-XXGAWTH5.js.map → chunk-DU64SZUQ.js.map} +0 -0
  321. /package/dist/cli-bundle/chunks/{chunk-CNPWCUDR.js.map → chunk-EVPVCE4R.js.map} +0 -0
  322. /package/dist/cli-bundle/chunks/{chunk-ACULWT7G.js.map → chunk-FK6MV5F5.js.map} +0 -0
  323. /package/dist/cli-bundle/chunks/{chunk-XKJDCJEH.js.map → chunk-GGAXE22C.js.map} +0 -0
  324. /package/dist/cli-bundle/chunks/{chunk-SL233DQD.js.map → chunk-GNDHOR64.js.map} +0 -0
  325. /package/dist/cli-bundle/chunks/{chunk-U3WTMYBX.js.map → chunk-GU7YHKYP.js.map} +0 -0
  326. /package/dist/cli-bundle/chunks/{chunk-26OQTCGH.js.map → chunk-GXBSFKSX.js.map} +0 -0
  327. /package/dist/cli-bundle/chunks/{chunk-AOCYDQLT.js.map → chunk-H6FNDCDI.js.map} +0 -0
  328. /package/dist/cli-bundle/chunks/{chunk-ICEWMJYH.js.map → chunk-HYQV75IB.js.map} +0 -0
  329. /package/dist/cli-bundle/chunks/{chunk-5XK2RYJR.js.map → chunk-I367IDZP.js.map} +0 -0
  330. /package/dist/cli-bundle/chunks/{chunk-E4E7UQBT.js.map → chunk-I6XE47J2.js.map} +0 -0
  331. /package/dist/cli-bundle/chunks/{chunk-NKTUBA2C.js.map → chunk-J2TSPY5L.js.map} +0 -0
  332. /package/dist/cli-bundle/chunks/{chunk-DYOJJTCG.js.map → chunk-JLSC5NPC.js.map} +0 -0
  333. /package/dist/cli-bundle/chunks/{chunk-FXKPUMIR.js.map → chunk-JY25IOEZ.js.map} +0 -0
  334. /package/dist/cli-bundle/chunks/{chunk-NCGQ27PK.js.map → chunk-K25UDYJ4.js.map} +0 -0
  335. /package/dist/cli-bundle/chunks/{chunk-3WAKNI2W.js.map → chunk-KBTREGVO.js.map} +0 -0
  336. /package/dist/cli-bundle/chunks/{chunk-KCJZREBI.js.map → chunk-KK4TQ3ZP.js.map} +0 -0
  337. /package/dist/cli-bundle/chunks/{chunk-7MMXBIRZ.js.map → chunk-KRJJPDUO.js.map} +0 -0
  338. /package/dist/cli-bundle/chunks/{chunk-BYNJWB5F.js.map → chunk-MD7XKVWI.js.map} +0 -0
  339. /package/dist/cli-bundle/chunks/{chunk-WFOITX4A.js.map → chunk-MNGAQB2E.js.map} +0 -0
  340. /package/dist/cli-bundle/chunks/{chunk-II4BRHKM.js.map → chunk-NIWY4V4Z.js.map} +0 -0
  341. /package/dist/cli-bundle/chunks/{chunk-YT4Z2OVB.js.map → chunk-NKZOJPXK.js.map} +0 -0
  342. /package/dist/cli-bundle/chunks/{chunk-YBQF4CAW.js.map → chunk-NVUATMTC.js.map} +0 -0
  343. /package/dist/cli-bundle/chunks/{chunk-MTQK5ZSB.js.map → chunk-PCH2JTEO.js.map} +0 -0
  344. /package/dist/cli-bundle/chunks/{chunk-VE3BUO3R.js.map → chunk-PJS2J7Z4.js.map} +0 -0
  345. /package/dist/cli-bundle/chunks/{chunk-2QJLN4KM.js.map → chunk-QQWEROGS.js.map} +0 -0
  346. /package/dist/cli-bundle/chunks/{chunk-6DZO5NN7.js.map → chunk-RPRFBXND.js.map} +0 -0
  347. /package/dist/cli-bundle/chunks/{chunk-BBSUVIIT.js.map → chunk-SFKQAVZA.js.map} +0 -0
  348. /package/dist/cli-bundle/chunks/{chunk-X3CD2VUI.js.map → chunk-THKDPOS5.js.map} +0 -0
  349. /package/dist/cli-bundle/chunks/{chunk-OVSFW4KD.js.map → chunk-TIKJAXQW.js.map} +0 -0
  350. /package/dist/cli-bundle/chunks/{chunk-4YMX7XFI.js.map → chunk-TJABI6PR.js.map} +0 -0
  351. /package/dist/cli-bundle/chunks/{chunk-AW4PYYNF.js.map → chunk-TZQKEBKF.js.map} +0 -0
  352. /package/dist/cli-bundle/chunks/{chunk-QUTJOHGK.js.map → chunk-UKK2VTTH.js.map} +0 -0
  353. /package/dist/cli-bundle/chunks/{chunk-ATRXPXAL.js.map → chunk-V4SM4UAL.js.map} +0 -0
  354. /package/dist/cli-bundle/chunks/{chunk-6KARQMC6.js.map → chunk-VB54F347.js.map} +0 -0
  355. /package/dist/cli-bundle/chunks/{chunk-6LTSLEHD.js.map → chunk-WBSYW3NT.js.map} +0 -0
  356. /package/dist/cli-bundle/chunks/{chunk-4S4INK3B.js.map → chunk-WQDX7DVG.js.map} +0 -0
  357. /package/dist/cli-bundle/chunks/{chunk-ETJKPURB.js.map → chunk-XKNF3VRJ.js.map} +0 -0
  358. /package/dist/cli-bundle/chunks/{chunk-BZWIDTDE.js.map → chunk-Y335KFHD.js.map} +0 -0
  359. /package/dist/cli-bundle/chunks/{chunk-K2LBDYDC.js.map → chunk-Y4BZEND6.js.map} +0 -0
  360. /package/dist/cli-bundle/chunks/{chunk-EOFROIC5.js.map → chunk-YATDFWYK.js.map} +0 -0
  361. /package/dist/cli-bundle/chunks/{chunk-EKMHDL6Z.js.map → chunk-YJICYNAV.js.map} +0 -0
  362. /package/dist/cli-bundle/chunks/{chunk-WMQBNVZL.js.map → chunk-YQSWTVZF.js.map} +0 -0
  363. /package/dist/cli-bundle/chunks/{chunk-FBBPCSJM.js.map → chunk-YRLLL5TY.js.map} +0 -0
  364. /package/dist/cli-bundle/chunks/{claim-G57ZJLZ4.js.map → claim-MPXNVBZQ.js.map} +0 -0
  365. /package/dist/cli-bundle/chunks/{claim-TRSDQO6L.js.map → claim-SKHJDLW6.js.map} +0 -0
  366. /package/dist/cli-bundle/chunks/{close-4QMUQMON.js.map → close-4RKSL5L6.js.map} +0 -0
  367. /package/dist/cli-bundle/chunks/{close-NNZZTZ5V.js.map → close-Z6AI736U.js.map} +0 -0
  368. /package/dist/cli-bundle/chunks/{close-many-3UWKJRQK.js.map → close-many-AWTPXLHJ.js.map} +0 -0
  369. /package/dist/cli-bundle/chunks/{close-many-A7U62CRI.js.map → close-many-SXODYBDP.js.map} +0 -0
  370. /package/dist/cli-bundle/chunks/{comments-URWDZP2I.js.map → comments-OOH64LWW.js.map} +0 -0
  371. /package/dist/cli-bundle/chunks/{comments-4EM7XR74.js.map → comments-YYW5P7AG.js.map} +0 -0
  372. /package/dist/cli-bundle/chunks/{config-PSZ5GWAK.js.map → config-3445MCQQ.js.map} +0 -0
  373. /package/dist/cli-bundle/chunks/{config-GRJYZ2O3.js.map → config-LCDMKRB2.js.map} +0 -0
  374. /package/dist/cli-bundle/chunks/{context-BCR34RKM.js.map → context-DZMIBIVP.js.map} +0 -0
  375. /package/dist/cli-bundle/chunks/{context-A46YAV2F.js.map → context-PJCURODY.js.map} +0 -0
  376. /package/dist/cli-bundle/chunks/{contracts-JOPCQNDP.js.map → contracts-7YDFEJB3.js.map} +0 -0
  377. /package/dist/cli-bundle/chunks/{contracts-HPT25X4D.js.map → contracts-MP2P3HL5.js.map} +0 -0
  378. /package/dist/cli-bundle/chunks/{copy-KBTIUW7L.js.map → copy-63IQQRRS.js.map} +0 -0
  379. /package/dist/cli-bundle/chunks/{copy-X7V6AEDB.js.map → copy-TASIH2AZ.js.map} +0 -0
  380. /package/dist/cli-bundle/chunks/{create-4KOAQ6ME.js.map → create-3BV2VA3Q.js.map} +0 -0
  381. /package/dist/cli-bundle/chunks/{create-ZPZKJDFQ.js.map → create-TGSB5GV4.js.map} +0 -0
  382. /package/dist/cli-bundle/chunks/{delete-FGKVPUQZ.js.map → delete-ARILQQLB.js.map} +0 -0
  383. /package/dist/cli-bundle/chunks/{delete-2ZI6CJZM.js.map → delete-ZQKBZYNK.js.map} +0 -0
  384. /package/dist/cli-bundle/chunks/{deps-IUJOBF2H.js.map → deps-MSHQR2GY.js.map} +0 -0
  385. /package/dist/cli-bundle/chunks/{deps-SJCEFU3C.js.map → deps-NJFJIMQ5.js.map} +0 -0
  386. /package/dist/cli-bundle/chunks/{docs-UWJ75CKR.js.map → docs-SS4UKYYA.js.map} +0 -0
  387. /package/dist/cli-bundle/chunks/{docs-2LXF5SVC.js.map → docs-XK2UVUXX.js.map} +0 -0
  388. /package/dist/cli-bundle/chunks/{eval-ZTT3F3SL.js.map → eval-FVZGX5IZ.js.map} +0 -0
  389. /package/dist/cli-bundle/chunks/{eval-FRIDCTM2.js.map → eval-JOTG2YHU.js.map} +0 -0
  390. /package/dist/cli-bundle/chunks/{extension-VRYTNNSV.js.map → extension-NLMS47I4.js.map} +0 -0
  391. /package/dist/cli-bundle/chunks/{extension-XFQG3BXL.js.map → extension-OQPS27B4.js.map} +0 -0
  392. /package/dist/cli-bundle/chunks/{files-AJOGTTAN.js.map → files-3EVJQZ2N.js.map} +0 -0
  393. /package/dist/cli-bundle/chunks/{files-B2RUCA32.js.map → files-Y2P6LN5A.js.map} +0 -0
  394. /package/dist/cli-bundle/chunks/{focus-7N36RIMT.js.map → focus-D5ZUPTII.js.map} +0 -0
  395. /package/dist/cli-bundle/chunks/{focus-CFE33IYC.js.map → focus-ZPIFTY4R.js.map} +0 -0
  396. /package/dist/cli-bundle/chunks/{gc-SBF2FGHK.js.map → gc-LXXDY456.js.map} +0 -0
  397. /package/dist/cli-bundle/chunks/{gc-OYJK4YBY.js.map → gc-RNOEQHSX.js.map} +0 -0
  398. /package/dist/cli-bundle/chunks/{get-LLFWSPXW.js.map → get-Q3SZGQHD.js.map} +0 -0
  399. /package/dist/cli-bundle/chunks/{get-577VLZZ7.js.map → get-W23G7MJX.js.map} +0 -0
  400. /package/dist/cli-bundle/chunks/{history-4FJK6Y3O.js.map → history-6CZVFIUJ.js.map} +0 -0
  401. /package/dist/cli-bundle/chunks/{history-ZXNWG6H4.js.map → history-YRQUD4YM.js.map} +0 -0
  402. /package/dist/cli-bundle/chunks/{history-compact-AXR6R6GU.js.map → history-compact-M35PDQ4G.js.map} +0 -0
  403. /package/dist/cli-bundle/chunks/{history-compact-HXF3OT7G.js.map → history-compact-VWUSQH6Z.js.map} +0 -0
  404. /package/dist/cli-bundle/chunks/{history-redact-GV633Z4H.js.map → history-redact-27OEOZRZ.js.map} +0 -0
  405. /package/dist/cli-bundle/chunks/{history-redact-UMPD4G3K.js.map → history-redact-AJGARHT3.js.map} +0 -0
  406. /package/dist/cli-bundle/chunks/{history-repair-WHOK2ICG.js.map → history-repair-5RDMF7K4.js.map} +0 -0
  407. /package/dist/cli-bundle/chunks/{history-repair-X57HE5EA.js.map → history-repair-YUAHIPIN.js.map} +0 -0
  408. /package/dist/cli-bundle/chunks/{init-KQWZSNBX.js.map → init-DWAKYRXI.js.map} +0 -0
  409. /package/dist/cli-bundle/chunks/{init-N7MIIYCU.js.map → init-HASX3YNJ.js.map} +0 -0
  410. /package/dist/cli-bundle/chunks/{learnings-GZRBIEAN.js.map → learnings-JNGUIJDK.js.map} +0 -0
  411. /package/dist/cli-bundle/chunks/{learnings-FPG7WAVW.js.map → learnings-M4KA6MQE.js.map} +0 -0
  412. /package/dist/cli-bundle/chunks/{list-ZDQ2OBSO.js.map → list-5UU2W24O.js.map} +0 -0
  413. /package/dist/cli-bundle/chunks/{list-MZBCSKLU.js.map → list-6FMKTIH3.js.map} +0 -0
  414. /package/dist/cli-bundle/chunks/{notes-LW53PFLH.js.map → notes-MODH5CBT.js.map} +0 -0
  415. /package/dist/cli-bundle/chunks/{notes-WQAP67EC.js.map → notes-PYCPLA5Y.js.map} +0 -0
  416. /package/dist/cli-bundle/chunks/{plan-VZKICKIJ.js.map → plan-DXRIRYRU.js.map} +0 -0
  417. /package/dist/cli-bundle/chunks/{plan-AVJ4VJQO.js.map → plan-EHQALWSC.js.map} +0 -0
  418. /package/dist/cli-bundle/chunks/{register-list-query-7BD6ZHU5.js.map → register-list-query-QAASVP2J.js.map} +0 -0
  419. /package/dist/cli-bundle/chunks/{register-list-query-CM4SVAQA.js.map → register-list-query-WE54YJMH.js.map} +0 -0
  420. /package/dist/cli-bundle/chunks/{register-mutation-ANZIWHUF.js.map → register-mutation-B6DZJTY2.js.map} +0 -0
  421. /package/dist/cli-bundle/chunks/{register-mutation-PLFHAS4N.js.map → register-mutation-CPV4C2KR.js.map} +0 -0
  422. /package/dist/cli-bundle/chunks/{register-operations-KQPQIFF2.js.map → register-operations-AT3BVVX2.js.map} +0 -0
  423. /package/dist/cli-bundle/chunks/{register-operations-VLGCAWIW.js.map → register-operations-RC4C3423.js.map} +0 -0
  424. /package/dist/cli-bundle/chunks/{restore-64JKQV7G.js.map → restore-FNBV4GWE.js.map} +0 -0
  425. /package/dist/cli-bundle/chunks/{restore-GKM26SAW.js.map → restore-XY4YE2OV.js.map} +0 -0
  426. /package/dist/cli-bundle/chunks/{scheduling-shortcuts-X6D6VSZR.js.map → scheduling-shortcuts-ECL6GBMZ.js.map} +0 -0
  427. /package/dist/cli-bundle/chunks/{scheduling-shortcuts-4ION7QAX.js.map → scheduling-shortcuts-JRIUREEU.js.map} +0 -0
  428. /package/dist/cli-bundle/chunks/{schema-TA3NF3RG.js.map → schema-74YENAJL.js.map} +0 -0
  429. /package/dist/cli-bundle/chunks/{schema-OA4RSVMI.js.map → schema-TCW3I7QR.js.map} +0 -0
  430. /package/dist/cli-bundle/chunks/{search-UAIHEQZL.js.map → search-7USZ6XZA.js.map} +0 -0
  431. /package/dist/cli-bundle/chunks/{search-INCM5I4J.js.map → search-GNAUE65M.js.map} +0 -0
  432. /package/dist/cli-bundle/chunks/{stats-RHEMG4CE.js.map → stats-CVHASAEU.js.map} +0 -0
  433. /package/dist/cli-bundle/chunks/{stats-WQWTIA5Y.js.map → stats-DQMKJMFT.js.map} +0 -0
  434. /package/dist/cli-bundle/chunks/{telemetry-XA5D2QEO.js.map → telemetry-7P5EUWCS.js.map} +0 -0
  435. /package/dist/cli-bundle/chunks/{telemetry-G6UKGKJU.js.map → telemetry-PQTL5YS2.js.map} +0 -0
  436. /package/dist/cli-bundle/chunks/{test-XF7BYLMZ.js.map → test-COWPCGBE.js.map} +0 -0
  437. /package/dist/cli-bundle/chunks/{test-ZMQF23P3.js.map → test-FDQZQNZ4.js.map} +0 -0
  438. /package/dist/cli-bundle/chunks/{test-runs-N7LI7HLH.js.map → test-runs-JS6DNCCI.js.map} +0 -0
  439. /package/dist/cli-bundle/chunks/{test-runs-RFA42EEX.js.map → test-runs-NZD2QGL5.js.map} +0 -0
  440. /package/dist/cli-bundle/chunks/{update-CPNOG73P.js.map → update-7IYQHX4Q.js.map} +0 -0
  441. /package/dist/cli-bundle/chunks/{update-T5AYT6ZN.js.map → update-IJKDRBIX.js.map} +0 -0
  442. /package/dist/cli-bundle/chunks/{update-many-6XFR7TFG.js.map → update-many-6NTZ5J5D.js.map} +0 -0
  443. /package/dist/cli-bundle/chunks/{update-many-NMRUQZL2.js.map → update-many-B3TH5TDS.js.map} +0 -0
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  EXIT_CODE,
3
3
  PmCliError
4
- } from "./chunk-QWAJPGEI.js";
4
+ } from "./chunk-RZZMSY4P.js";
5
5
 
6
6
  // dist/core/item/parse.js
7
7
  !(function() {
@@ -356,4 +356,4 @@ export {
356
356
  createStdinTokenResolver,
357
357
  parseOptionalNumber
358
358
  };
359
- //# sourceMappingURL=chunk-4PW4C3ZB.js.map
359
+ //# sourceMappingURL=chunk-CWPBGUC7.js.map
@@ -1,18 +1,21 @@
1
1
 
2
- !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="0b7f7865-bed4-596b-a8fb-f30d5c0b1923")}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]="5b87215b-bb14-5510-af50-0d572df794ca")}catch(e){}}();
3
+ import {
4
+ scaffoldExtensionProject
5
+ } from "./chunk-3GL6LTUL.js";
3
6
  import {
4
7
  normalizeExtensionNameForMatch,
5
8
  normalizeManagedDirectoryName,
6
9
  normalizeStringList,
7
10
  parseExtensionManifest,
8
11
  validateExtensionDirectory
9
- } from "./chunk-6FSPWUBI.js";
12
+ } from "./chunk-DMT4ODVN.js";
10
13
  import {
11
14
  splitCommaList
12
15
  } from "./chunk-P4SESZGT.js";
13
16
  import {
14
17
  nowIso
15
- } from "./chunk-MTQK5ZSB.js";
18
+ } from "./chunk-PCH2JTEO.js";
16
19
  import {
17
20
  EXIT_CODE,
18
21
  EXTENSION_CAPABILITY_CONTRACT,
@@ -26,18 +29,19 @@ import {
26
29
  parseUnknownExtensionCapabilityWarning,
27
30
  pathExists,
28
31
  readSettings,
32
+ reconcileExtensionCapabilityUsage,
29
33
  resolveExtensionRoots,
30
34
  resolveGlobalPmRoot,
31
35
  resolvePmPackageRootFromModule,
32
36
  resolvePmRoot,
33
37
  writeSettings
34
- } from "./chunk-AZ75OVK4.js";
38
+ } from "./chunk-KL5ELX2X.js";
35
39
 
36
40
  // dist/cli/commands/extension.js
37
41
  import { execFile as execFile2 } from "node:child_process";
38
- import fs6 from "node:fs/promises";
42
+ import fs5 from "node:fs/promises";
39
43
  import os2 from "node:os";
40
- import path6 from "node:path";
44
+ import path5 from "node:path";
41
45
  import { promisify as promisify2 } from "node:util";
42
46
 
43
47
  // dist/cli/commands/extension/managed-state.js
@@ -1152,188 +1156,6 @@ function projectPackageCatalogEntry(entry, fields) {
1152
1156
  return projected;
1153
1157
  }
1154
1158
 
1155
- // dist/cli/commands/extension/scaffold.js
1156
- import fs5 from "node:fs/promises";
1157
- import path5 from "node:path";
1158
- var SCAFFOLD_MANIFEST_VERSION = 1;
1159
- var SCAFFOLD_PM_MIN_VERSION = "2026.5.0";
1160
- function buildStarterExtensionScaffoldFiles(extensionName, commandName, vocabulary) {
1161
- const packageName = `pm-${extensionName}`;
1162
- const manifest = `${JSON.stringify({
1163
- name: extensionName,
1164
- version: "0.1.0",
1165
- entry: "./index.js",
1166
- capabilities: ["commands"],
1167
- manifest_version: SCAFFOLD_MANIFEST_VERSION,
1168
- pm_min_version: SCAFFOLD_PM_MIN_VERSION
1169
- }, null, 2)}
1170
- `;
1171
- const entrypoint = [
1172
- '/** @param {import("@unbrained/pm-cli/sdk").ExtensionApi} api */',
1173
- "export function activate(api) {",
1174
- " api.registerCommand({",
1175
- ` name: ${JSON.stringify(commandName)},`,
1176
- ' description: "Starter scaffold command. Replace with your own behavior.",',
1177
- " run: async (context) => ({",
1178
- " ok: true,",
1179
- ` source: ${JSON.stringify(extensionName)},`,
1180
- " command: context.command,",
1181
- ' message: "Starter extension scaffold is active.",',
1182
- " }),",
1183
- " });",
1184
- "}",
1185
- "",
1186
- "export default {",
1187
- " activate,",
1188
- "};",
1189
- ""
1190
- ].join("\n");
1191
- if (vocabulary === "package") {
1192
- const packageJson = `${JSON.stringify({
1193
- name: packageName,
1194
- version: "0.1.0",
1195
- private: true,
1196
- type: "module",
1197
- keywords: ["pm-package"],
1198
- peerDependencies: {
1199
- "@unbrained/pm-cli": "*"
1200
- },
1201
- pm: {
1202
- aliases: [extensionName],
1203
- extensions: ["."],
1204
- docs: ["README.md"],
1205
- examples: ["README.md"],
1206
- catalog: {
1207
- display_name: extensionName,
1208
- category: "workflow",
1209
- summary: "Starter pm package scaffold.",
1210
- tags: ["starter"]
1211
- }
1212
- }
1213
- }, null, 2)}
1214
- `;
1215
- const packageReadme = [
1216
- `# ${packageName}`,
1217
- "",
1218
- "Generated by `pm package init`.",
1219
- "",
1220
- "## Included Files",
1221
- "- `package.json`: package metadata and `pm` resource manifest.",
1222
- "- `manifest.json`: extension metadata and capabilities.",
1223
- "- `index.js`: starter command registration using the `commands` capability.",
1224
- "",
1225
- "## Quick Start",
1226
- "```bash",
1227
- "pm install --project <package-path>",
1228
- `pm ${commandName}`,
1229
- "pm package doctor --project --detail summary",
1230
- "```",
1231
- "",
1232
- "## Compatibility Bounds",
1233
- "`manifest.json` cannot hold comments, so the version-compatibility fields are documented here:",
1234
- `- \`manifest_version\` (integer): manifest schema generation. Leave at \`${SCAFFOLD_MANIFEST_VERSION}\` unless you adopt a newer manifest schema.`,
1235
- `- \`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.`,
1236
- "- `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.",
1237
- "",
1238
- "## Notes",
1239
- "- Keep simple starter runtime behavior at the package root so local installs work without dependency bootstrapping.",
1240
- "- Move larger runtimes into subdirectories only after adding package dependencies and validating `pm package doctor`.",
1241
- "- Add capabilities to the extension manifest only when the entrypoint uses the matching SDK API.",
1242
- "- Use `@unbrained/pm-cli/sdk` as the public SDK import for richer package runtimes.",
1243
- ""
1244
- ].join("\n");
1245
- return {
1246
- "package.json": packageJson,
1247
- "manifest.json": manifest,
1248
- "index.js": entrypoint,
1249
- "README.md": packageReadme
1250
- };
1251
- }
1252
- const readme = [
1253
- `# ${extensionName}`,
1254
- "",
1255
- "Generated by `pm extension init`.",
1256
- "",
1257
- "## Included Files",
1258
- "- `manifest.json`: extension metadata and capabilities.",
1259
- "- `index.js`: starter command registration using the `commands` capability.",
1260
- "",
1261
- "## Quick Start",
1262
- "```bash",
1263
- "pm extension --install --project <scaffold-path>",
1264
- `pm ${commandName}`,
1265
- "pm extension --doctor --project --detail summary",
1266
- "```",
1267
- "",
1268
- "## Compatibility Bounds",
1269
- "`manifest.json` cannot hold comments, so the version-compatibility fields are documented here:",
1270
- `- \`manifest_version\` (integer): manifest schema generation. Leave at \`${SCAFFOLD_MANIFEST_VERSION}\` unless you adopt a newer manifest schema.`,
1271
- `- \`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.`,
1272
- "- `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.",
1273
- "",
1274
- "## Notes",
1275
- "- This scaffold uses ESM exports so it works in package scopes with `type: module`.",
1276
- "- Update `manifest.json` capabilities and `index.js` command behavior as your extension evolves.",
1277
- ""
1278
- ].join("\n");
1279
- return {
1280
- "manifest.json": manifest,
1281
- "index.js": entrypoint,
1282
- "README.md": readme
1283
- };
1284
- }
1285
- async function scaffoldExtensionProject(target, vocabulary = "extension") {
1286
- const normalizedTarget = target.trim();
1287
- const targetPath = path5.resolve(process.cwd(), normalizedTarget);
1288
- const extensionName = normalizeManagedDirectoryName(path5.basename(targetPath));
1289
- const commandName = `${extensionName} ping`;
1290
- const scaffoldFiles = buildStarterExtensionScaffoldFiles(extensionName, commandName, vocabulary);
1291
- let createdDirectory = false;
1292
- if (await pathExists(targetPath)) {
1293
- const existingTargetStats = await fs5.stat(targetPath);
1294
- if (!existingTargetStats.isDirectory()) {
1295
- throw new PmCliError(`Scaffold target "${targetPath}" exists and is not a directory.`, EXIT_CODE.CONFLICT);
1296
- }
1297
- } else {
1298
- await fs5.mkdir(targetPath, { recursive: true });
1299
- createdDirectory = true;
1300
- }
1301
- for (const [relativePath, content] of Object.entries(scaffoldFiles)) {
1302
- const absolutePath = path5.join(targetPath, relativePath);
1303
- if (!await pathExists(absolutePath)) {
1304
- continue;
1305
- }
1306
- const existingContent = await fs5.readFile(absolutePath, "utf8");
1307
- if (existingContent !== content) {
1308
- 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);
1309
- }
1310
- }
1311
- const files = [];
1312
- for (const [relativePath, content] of Object.entries(scaffoldFiles)) {
1313
- const absolutePath = path5.join(targetPath, relativePath);
1314
- if (await pathExists(absolutePath)) {
1315
- files.push({
1316
- path: relativePath,
1317
- status: "unchanged"
1318
- });
1319
- continue;
1320
- }
1321
- await fs5.mkdir(path5.dirname(absolutePath), { recursive: true });
1322
- await fs5.writeFile(absolutePath, content, "utf8");
1323
- files.push({
1324
- path: relativePath,
1325
- status: "created"
1326
- });
1327
- }
1328
- return {
1329
- extension_name: extensionName,
1330
- command_name: commandName,
1331
- target_path: targetPath,
1332
- created_directory: createdDirectory,
1333
- files
1334
- };
1335
- }
1336
-
1337
1159
  // dist/cli/commands/extension/doctor.js
1338
1160
  function applyDoctorRuntimeActivationState(extensions, loadResult, activationResult) {
1339
1161
  const loadedNames = new Set(loadResult.loaded.map((entry) => normalizeExtensionNameForMatch(entry.name)));
@@ -1578,6 +1400,15 @@ function classifyDoctorActivationFailureWarnings(activationFailures = []) {
1578
1400
  }
1579
1401
  return [...new Set(warnings)].sort((left, right) => left.localeCompare(right));
1580
1402
  }
1403
+ function classifyUnusedCapabilityWarnings(loadResult, activationResult) {
1404
+ const warnings = [];
1405
+ for (const entry of reconcileExtensionCapabilityUsage(loadResult.loaded, activationResult)) {
1406
+ for (const capability of entry.unused) {
1407
+ warnings.push(`extension_capability_unused:${entry.layer}:${entry.name}:${capability}`);
1408
+ }
1409
+ }
1410
+ return [...new Set(warnings)].sort((left, right) => left.localeCompare(right));
1411
+ }
1581
1412
  function buildExtensionTriageSummary(scope, warnings, extensions, options = {}) {
1582
1413
  const normalizedWarnings = [...new Set(warnings)].sort((left, right) => left.localeCompare(right));
1583
1414
  const managedTotal = extensions.filter((entry) => entry.managed).length;
@@ -1628,6 +1459,9 @@ function buildExtensionTriageSummary(scope, warnings, extensions, options = {})
1628
1459
  if (normalizedWarnings.some((warning) => warning.startsWith("extension_capability_missing:"))) {
1629
1460
  remediation.push(`Extension activation failed because code registered a surface missing from manifest capabilities. Run ${lifecycleFlagCommand(options, "doctor")} ${scopeFlag} --detail deep --trace and add the reported missing_capability to manifest.json before publishing.`);
1630
1461
  }
1462
+ if (normalizedWarnings.some((warning) => warning.startsWith("extension_capability_unused:"))) {
1463
+ remediation.push(`Extension manifests declare capabilities that are never registered against. Remove each reported unused capability from manifest.json to keep least privilege, or add the matching registration. Run ${lifecycleFlagCommand(options, "doctor")} ${scopeFlag} --detail deep --trace for per-extension registration counts.`);
1464
+ }
1631
1465
  if (normalizedWarnings.some((warning) => warning.startsWith("extension_command_definition_legacy_handler_alias:"))) {
1632
1466
  remediation.push("Extension command definitions using legacy handler were auto-remapped. Update command definitions to use run: (context) => ... for forward compatibility.");
1633
1467
  }
@@ -1862,11 +1696,11 @@ function sleep(ms) {
1862
1696
  setTimeout(resolve, ms);
1863
1697
  });
1864
1698
  }
1865
- async function copyExtensionDirectoryForInstall(sourceDirectory, destinationDirectory, copyDirectory = fs6.cp) {
1699
+ async function copyExtensionDirectoryForInstall(sourceDirectory, destinationDirectory, copyDirectory = fs5.cp) {
1866
1700
  for (let attempt = 1; attempt <= EXTENSION_INSTALL_COPY_ATTEMPTS; attempt += 1) {
1867
1701
  try {
1868
1702
  if (await pathExists(destinationDirectory)) {
1869
- await fs6.rm(destinationDirectory, { recursive: true, force: true });
1703
+ await fs5.rm(destinationDirectory, { recursive: true, force: true });
1870
1704
  }
1871
1705
  await copyExtensionDirectoryWithoutSelfNesting(sourceDirectory, destinationDirectory, copyDirectory);
1872
1706
  return;
@@ -1879,8 +1713,8 @@ async function copyExtensionDirectoryForInstall(sourceDirectory, destinationDire
1879
1713
  }
1880
1714
  }
1881
1715
  async function copyExtensionDirectoryWithoutSelfNesting(sourceDirectory, destinationDirectory, copyDirectory) {
1882
- const resolvedSource = path6.resolve(sourceDirectory);
1883
- const resolvedDestination = path6.resolve(destinationDirectory);
1716
+ const resolvedSource = path5.resolve(sourceDirectory);
1717
+ const resolvedDestination = path5.resolve(destinationDirectory);
1884
1718
  if (resolvedSource === resolvedDestination) {
1885
1719
  return;
1886
1720
  }
@@ -1888,28 +1722,28 @@ async function copyExtensionDirectoryWithoutSelfNesting(sourceDirectory, destina
1888
1722
  await copyDirectory(sourceDirectory, destinationDirectory, { recursive: true, force: true });
1889
1723
  return;
1890
1724
  }
1891
- const stagingRoot = await fs6.mkdtemp(path6.join(os2.tmpdir(), "pm-extension-copy-"));
1892
- const stagedDirectory = path6.join(stagingRoot, "extension");
1725
+ const stagingRoot = await fs5.mkdtemp(path5.join(os2.tmpdir(), "pm-extension-copy-"));
1726
+ const stagedDirectory = path5.join(stagingRoot, "extension");
1893
1727
  try {
1894
1728
  await copyDirectory(sourceDirectory, stagedDirectory, { recursive: true, force: true });
1895
1729
  await copyDirectory(stagedDirectory, destinationDirectory, { recursive: true, force: true });
1896
1730
  } finally {
1897
- await fs6.rm(stagingRoot, { recursive: true, force: true });
1731
+ await fs5.rm(stagingRoot, { recursive: true, force: true });
1898
1732
  }
1899
1733
  }
1900
1734
  async function withExtensionInstallLock(settingsRoot, destinationDirectoryName, run, options) {
1901
- const lockRoot = path6.join(settingsRoot, "runtime", "extension-install-locks");
1902
- const lockPath = path6.join(lockRoot, `${destinationDirectoryName}.lock`);
1903
- await fs6.mkdir(lockRoot, { recursive: true });
1735
+ const lockRoot = path5.join(settingsRoot, "runtime", "extension-install-locks");
1736
+ const lockPath = path5.join(lockRoot, `${destinationDirectoryName}.lock`);
1737
+ await fs5.mkdir(lockRoot, { recursive: true });
1904
1738
  const attempts = Math.max(1, Math.floor(options?.attempts ?? EXTENSION_INSTALL_LOCK_ATTEMPTS));
1905
1739
  const delayMs = Math.max(0, Math.floor(options?.delay_ms ?? EXTENSION_INSTALL_LOCK_DELAY_MS));
1906
1740
  const staleMs = Math.max(0, Math.floor(options?.stale_ms ?? EXTENSION_INSTALL_LOCK_STALE_MS));
1907
1741
  let acquired = false;
1908
1742
  for (let attempt = 1; attempt <= attempts; attempt += 1) {
1909
1743
  try {
1910
- await fs6.mkdir(lockPath);
1744
+ await fs5.mkdir(lockPath);
1911
1745
  acquired = true;
1912
- await fs6.writeFile(path6.join(lockPath, "owner.json"), `${JSON.stringify({ pid: process.pid, created_at: nowIso(), destination: destinationDirectoryName }, null, 2)}
1746
+ await fs5.writeFile(path5.join(lockPath, "owner.json"), `${JSON.stringify({ pid: process.pid, created_at: nowIso(), destination: destinationDirectoryName }, null, 2)}
1913
1747
  `, "utf8");
1914
1748
  break;
1915
1749
  } catch (error) {
@@ -1918,12 +1752,12 @@ async function withExtensionInstallLock(settingsRoot, destinationDirectoryName,
1918
1752
  }
1919
1753
  let stat = null;
1920
1754
  try {
1921
- stat = await fs6.stat(lockPath);
1755
+ stat = await fs5.stat(lockPath);
1922
1756
  } catch {
1923
1757
  stat = null;
1924
1758
  }
1925
1759
  if (stat && Date.now() - stat.mtimeMs > staleMs) {
1926
- await fs6.rm(lockPath, { recursive: true, force: true });
1760
+ await fs5.rm(lockPath, { recursive: true, force: true });
1927
1761
  continue;
1928
1762
  }
1929
1763
  await sleep(delayMs);
@@ -1935,7 +1769,7 @@ async function withExtensionInstallLock(settingsRoot, destinationDirectoryName,
1935
1769
  try {
1936
1770
  return await run();
1937
1771
  } finally {
1938
- await fs6.rm(lockPath, { recursive: true, force: true }).catch(() => void 0);
1772
+ await fs5.rm(lockPath, { recursive: true, force: true }).catch(() => void 0);
1939
1773
  }
1940
1774
  }
1941
1775
  async function resolveInstalledExtensionCandidate(installed, extensionTarget) {
@@ -2113,7 +1947,7 @@ async function listInstalledExtensions(extensionsRoot, scope, settings, state) {
2113
1947
  warnings: []
2114
1948
  };
2115
1949
  }
2116
- const entries = await fs6.readdir(extensionsRoot, { withFileTypes: true });
1950
+ const entries = await fs5.readdir(extensionsRoot, { withFileTypes: true });
2117
1951
  const directories = entries.filter((entry) => entry.isDirectory()).map((entry) => entry.name).sort((left, right) => left.localeCompare(right));
2118
1952
  const managedByName = /* @__PURE__ */ new Map();
2119
1953
  const managedByDirectory = /* @__PURE__ */ new Map();
@@ -2124,8 +1958,8 @@ async function listInstalledExtensions(extensionsRoot, scope, settings, state) {
2124
1958
  const warnings = [];
2125
1959
  const summaries = [];
2126
1960
  for (const directoryName of directories) {
2127
- const extensionDirectory = path6.join(extensionsRoot, directoryName);
2128
- const manifestPath = path6.join(extensionDirectory, "manifest.json");
1961
+ const extensionDirectory = path5.join(extensionsRoot, directoryName);
1962
+ const manifestPath = path5.join(extensionDirectory, "manifest.json");
2129
1963
  if (!await pathExists(manifestPath)) {
2130
1964
  warnings.push(`extension_manifest_missing:${scope}:${directoryName}`);
2131
1965
  const managedEntry2 = managedByDirectory.get(normalizeExtensionNameForMatch(directoryName));
@@ -2154,7 +1988,7 @@ async function listInstalledExtensions(extensionsRoot, scope, settings, state) {
2154
1988
  }
2155
1989
  let rawManifest;
2156
1990
  try {
2157
- rawManifest = JSON.parse(await fs6.readFile(manifestPath, "utf8"));
1991
+ rawManifest = JSON.parse(await fs5.readFile(manifestPath, "utf8"));
2158
1992
  } catch {
2159
1993
  warnings.push(`extension_manifest_invalid_json:${scope}:${directoryName}`);
2160
1994
  continue;
@@ -2331,7 +2165,7 @@ async function adoptUnmanagedExtensions(extensionsRoot, scope, installedExtensio
2331
2165
  let nextState = state;
2332
2166
  const adoptedEntries = [];
2333
2167
  for (const candidate of sortedCandidates) {
2334
- const extensionDirectory = path6.join(extensionsRoot, candidate.directory);
2168
+ const extensionDirectory = path5.join(extensionsRoot, candidate.directory);
2335
2169
  const validated = await validateExtensionDirectory(extensionDirectory);
2336
2170
  const now = nowIso();
2337
2171
  const sourceRecord = {
@@ -2433,6 +2267,9 @@ async function runExtension(target, options, global) {
2433
2267
  if (options.fixManagedState === true && action !== "manage" && action !== "doctor") {
2434
2268
  throw new PmCliError("--fix-managed-state is only valid with --manage or --doctor.", EXIT_CODE.USAGE);
2435
2269
  }
2270
+ if (options.capability !== void 0 && action !== "init") {
2271
+ throw new PmCliError("--capability is only valid with --init/--scaffold.", EXIT_CODE.USAGE);
2272
+ }
2436
2273
  const normalizedTarget = (() => {
2437
2274
  const normalizedInput = target?.trim().toLowerCase();
2438
2275
  if (action === "doctor" && normalizedInput === "doctor") {
@@ -2487,20 +2324,23 @@ async function runExtension(target, options, global) {
2487
2324
  throw new PmCliError('Action "init" does not accept --gh/--github/--ref options.', EXIT_CODE.USAGE);
2488
2325
  }
2489
2326
  const scaffoldTarget = requireTarget(normalizedTarget, action);
2490
- const scaffold = await scaffoldExtensionProject(scaffoldTarget, options.vocabulary ?? "extension");
2327
+ const scaffold = await scaffoldExtensionProject(scaffoldTarget, options.vocabulary ?? "extension", options.capability);
2491
2328
  const quotedTargetPath = JSON.stringify(scaffold.target_path);
2329
+ const quotedShellTargetPath = JSON.stringify(scaffold.target_path.replace(/\\/g, "/"));
2492
2330
  return withResult({
2493
2331
  scaffolded: scaffold.created_directory || scaffold.files.some((entry) => entry.status === "created"),
2494
2332
  extension: {
2495
2333
  name: scaffold.extension_name,
2496
2334
  command: scaffold.command_name
2497
2335
  },
2336
+ capability: scaffold.capability,
2498
2337
  target_path: scaffold.target_path,
2499
2338
  created_directory: scaffold.created_directory,
2500
2339
  files: scaffold.files,
2501
2340
  next_steps: [
2502
2341
  `Install the scaffold: ${options.vocabulary === "package" ? "pm install --project" : "pm extension --install --project"} ${quotedTargetPath}`,
2503
2342
  `Smoke-test command path: pm ${scaffold.command_name}`,
2343
+ ...options.vocabulary === "package" ? [`Validate the sample test: cd ${quotedShellTargetPath}, then run "npm install" and "npm test"`] : [],
2504
2344
  `Run diagnostics: ${options.vocabulary === "package" ? "pm package doctor" : "pm extension --doctor"} --project --detail summary`
2505
2345
  ]
2506
2346
  });
@@ -2610,10 +2450,10 @@ async function runExtension(target, options, global) {
2610
2450
  const settings = await readSettings(resolvedRoots.settings_root);
2611
2451
  const managedStateRead = await readManagedExtensionState(resolvedRoots.selected_root);
2612
2452
  warnings.push(...managedStateRead.warnings);
2613
- const destinationDirectory = path6.join(resolvedRoots.selected_root, destinationDirectoryName);
2453
+ const destinationDirectory = path5.join(resolvedRoots.selected_root, destinationDirectoryName);
2614
2454
  const destinationExists = await pathExists(destinationDirectory);
2615
2455
  const installInPlace = await areDirectoriesEquivalent(validated.directory, destinationDirectory);
2616
- await fs6.mkdir(resolvedRoots.selected_root, { recursive: true });
2456
+ await fs5.mkdir(resolvedRoots.selected_root, { recursive: true });
2617
2457
  if (!installInPlace) {
2618
2458
  await copyExtensionDirectoryForInstall(validated.directory, destinationDirectory);
2619
2459
  }
@@ -2760,7 +2600,7 @@ async function runExtension(target, options, global) {
2760
2600
  }
2761
2601
  });
2762
2602
  }
2763
- const extensionDirectory = path6.join(resolvedRoots.selected_root, candidate.directory);
2603
+ const extensionDirectory = path5.join(resolvedRoots.selected_root, candidate.directory);
2764
2604
  const validated = await validateExtensionDirectory(extensionDirectory);
2765
2605
  const now = nowIso();
2766
2606
  const sourceRecord = githubOption === void 0 ? {
@@ -2825,8 +2665,8 @@ async function runExtension(target, options, global) {
2825
2665
  if (!candidate) {
2826
2666
  throw new PmCliError(`Installed extension "${extensionTarget}" was not found in ${scope} scope.`, EXIT_CODE.NOT_FOUND);
2827
2667
  }
2828
- const destinationDirectory = path6.join(resolvedRoots.selected_root, candidate.directory);
2829
- await fs6.rm(destinationDirectory, { recursive: true, force: true });
2668
+ const destinationDirectory = path5.join(resolvedRoots.selected_root, candidate.directory);
2669
+ await fs5.rm(destinationDirectory, { recursive: true, force: true });
2830
2670
  const updatedState = {
2831
2671
  ...managedStateRead.state,
2832
2672
  updated_at: nowIso(),
@@ -2912,6 +2752,7 @@ async function runExtension(target, options, global) {
2912
2752
  warnings.push(...classifyDoctorLoadFailureWarnings(loadResult.failed));
2913
2753
  warnings.push(...activationResult.warnings);
2914
2754
  warnings.push(...classifyDoctorActivationFailureWarnings(activationResult.failed));
2755
+ warnings.push(...classifyUnusedCapabilityWarnings(loadResult, activationResult));
2915
2756
  warnings.push(...collectGlobalOutputOverrideDoctorWarnings(activationResult));
2916
2757
  const runtimeInstalledExtensions = applyDoctorRuntimeActivationState(refreshedInstalled.extensions, loadResult, activationResult);
2917
2758
  const doctorConsistency = buildDoctorConsistencySummary(scope, runtimeInstalledExtensions, loadResult.loaded.map((entry) => ({ layer: entry.layer, name: entry.name })), loadResult.failed.map((entry) => ({ name: entry.name })), loadResult.disabled_by_flag);
@@ -3229,6 +3070,6 @@ export {
3229
3070
  runExtension,
3230
3071
  _testOnly
3231
3072
  };
3232
- //# sourceMappingURL=chunk-LTUB7ARL.js.map
3073
+ //# sourceMappingURL=chunk-D35LTIFR.js.map
3233
3074
 
3234
- //# debugId=0b7f7865-bed4-596b-a8fb-f30d5c0b1923
3075
+ //# debugId=5b87215b-bb14-5510-af50-0d572df794ca