@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,16 +1,19 @@
1
+ import {
2
+ scaffoldExtensionProject
3
+ } from "./chunk-4YJA4LGU.js";
1
4
  import {
2
5
  normalizeExtensionNameForMatch,
3
6
  normalizeManagedDirectoryName,
4
7
  normalizeStringList,
5
8
  parseExtensionManifest,
6
9
  validateExtensionDirectory
7
- } from "./chunk-DKWIPIJY.js";
10
+ } from "./chunk-25XZN3JD.js";
8
11
  import {
9
12
  splitCommaList
10
13
  } from "./chunk-5HIZDR5A.js";
11
14
  import {
12
15
  nowIso
13
- } from "./chunk-B3LROPTV.js";
16
+ } from "./chunk-4JXWVHMN.js";
14
17
  import {
15
18
  EXIT_CODE,
16
19
  EXTENSION_CAPABILITY_CONTRACT,
@@ -24,18 +27,19 @@ import {
24
27
  parseUnknownExtensionCapabilityWarning,
25
28
  pathExists,
26
29
  readSettings,
30
+ reconcileExtensionCapabilityUsage,
27
31
  resolveExtensionRoots,
28
32
  resolveGlobalPmRoot,
29
33
  resolvePmPackageRootFromModule,
30
34
  resolvePmRoot,
31
35
  writeSettings
32
- } from "./chunk-QWAJPGEI.js";
36
+ } from "./chunk-RZZMSY4P.js";
33
37
 
34
38
  // dist/cli/commands/extension.js
35
39
  import { execFile as execFile2 } from "node:child_process";
36
- import fs6 from "node:fs/promises";
40
+ import fs5 from "node:fs/promises";
37
41
  import os2 from "node:os";
38
- import path6 from "node:path";
42
+ import path5 from "node:path";
39
43
  import { promisify as promisify2 } from "node:util";
40
44
 
41
45
  // dist/cli/commands/extension/managed-state.js
@@ -1178,200 +1182,11 @@ function projectPackageCatalogEntry(entry, fields) {
1178
1182
  return projected;
1179
1183
  }
1180
1184
 
1181
- // dist/cli/commands/extension/scaffold.js
1182
- import fs5 from "node:fs/promises";
1183
- import path5 from "node:path";
1184
- !(function() {
1185
- try {
1186
- 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] = "c6f7e50f-9cce-50a2-97ec-7c06be6d85a1");
1188
- } catch (e2) {
1189
- }
1190
- })();
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
- peerDependencies: {
1232
- "@unbrained/pm-cli": "*"
1233
- },
1234
- pm: {
1235
- aliases: [extensionName],
1236
- extensions: ["."],
1237
- docs: ["README.md"],
1238
- examples: ["README.md"],
1239
- catalog: {
1240
- display_name: extensionName,
1241
- category: "workflow",
1242
- summary: "Starter pm package scaffold.",
1243
- tags: ["starter"]
1244
- }
1245
- }
1246
- }, null, 2)}
1247
- `;
1248
- const packageReadme = [
1249
- `# ${packageName}`,
1250
- "",
1251
- "Generated by `pm package init`.",
1252
- "",
1253
- "## Included Files",
1254
- "- `package.json`: package metadata and `pm` resource manifest.",
1255
- "- `manifest.json`: extension metadata and capabilities.",
1256
- "- `index.js`: starter command registration using the `commands` capability.",
1257
- "",
1258
- "## Quick Start",
1259
- "```bash",
1260
- "pm install --project <package-path>",
1261
- `pm ${commandName}`,
1262
- "pm package doctor --project --detail summary",
1263
- "```",
1264
- "",
1265
- "## Compatibility Bounds",
1266
- "`manifest.json` cannot hold comments, so the version-compatibility fields are documented here:",
1267
- `- \`manifest_version\` (integer): manifest schema generation. Leave at \`${SCAFFOLD_MANIFEST_VERSION}\` unless you adopt a newer manifest schema.`,
1268
- `- \`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.`,
1269
- "- `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.",
1270
- "",
1271
- "## Notes",
1272
- "- Keep simple starter runtime behavior at the package root so local installs work without dependency bootstrapping.",
1273
- "- Move larger runtimes into subdirectories only after adding package dependencies and validating `pm package doctor`.",
1274
- "- Add capabilities to the extension manifest only when the entrypoint uses the matching SDK API.",
1275
- "- Use `@unbrained/pm-cli/sdk` as the public SDK import for richer package runtimes.",
1276
- ""
1277
- ].join("\n");
1278
- return {
1279
- "package.json": packageJson,
1280
- "manifest.json": manifest,
1281
- "index.js": entrypoint,
1282
- "README.md": packageReadme
1283
- };
1284
- }
1285
- const readme = [
1286
- `# ${extensionName}`,
1287
- "",
1288
- "Generated by `pm extension init`.",
1289
- "",
1290
- "## Included Files",
1291
- "- `manifest.json`: extension metadata and capabilities.",
1292
- "- `index.js`: starter command registration using the `commands` capability.",
1293
- "",
1294
- "## Quick Start",
1295
- "```bash",
1296
- "pm extension --install --project <scaffold-path>",
1297
- `pm ${commandName}`,
1298
- "pm extension --doctor --project --detail summary",
1299
- "```",
1300
- "",
1301
- "## Compatibility Bounds",
1302
- "`manifest.json` cannot hold comments, so the version-compatibility fields are documented here:",
1303
- `- \`manifest_version\` (integer): manifest schema generation. Leave at \`${SCAFFOLD_MANIFEST_VERSION}\` unless you adopt a newer manifest schema.`,
1304
- `- \`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.`,
1305
- "- `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.",
1306
- "",
1307
- "## Notes",
1308
- "- This scaffold uses ESM exports so it works in package scopes with `type: module`.",
1309
- "- Update `manifest.json` capabilities and `index.js` command behavior as your extension evolves.",
1310
- ""
1311
- ].join("\n");
1312
- return {
1313
- "manifest.json": manifest,
1314
- "index.js": entrypoint,
1315
- "README.md": readme
1316
- };
1317
- }
1318
- async function scaffoldExtensionProject(target, vocabulary = "extension") {
1319
- const normalizedTarget = target.trim();
1320
- const targetPath = path5.resolve(process.cwd(), normalizedTarget);
1321
- const extensionName = normalizeManagedDirectoryName(path5.basename(targetPath));
1322
- const commandName = `${extensionName} ping`;
1323
- const scaffoldFiles = buildStarterExtensionScaffoldFiles(extensionName, commandName, vocabulary);
1324
- let createdDirectory = false;
1325
- if (await pathExists(targetPath)) {
1326
- const existingTargetStats = await fs5.stat(targetPath);
1327
- if (!existingTargetStats.isDirectory()) {
1328
- throw new PmCliError(`Scaffold target "${targetPath}" exists and is not a directory.`, EXIT_CODE.CONFLICT);
1329
- }
1330
- } else {
1331
- await fs5.mkdir(targetPath, { recursive: true });
1332
- createdDirectory = true;
1333
- }
1334
- for (const [relativePath, content] of Object.entries(scaffoldFiles)) {
1335
- const absolutePath = path5.join(targetPath, relativePath);
1336
- if (!await pathExists(absolutePath)) {
1337
- continue;
1338
- }
1339
- const existingContent = await fs5.readFile(absolutePath, "utf8");
1340
- if (existingContent !== content) {
1341
- 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);
1342
- }
1343
- }
1344
- const files = [];
1345
- for (const [relativePath, content] of Object.entries(scaffoldFiles)) {
1346
- const absolutePath = path5.join(targetPath, relativePath);
1347
- if (await pathExists(absolutePath)) {
1348
- files.push({
1349
- path: relativePath,
1350
- status: "unchanged"
1351
- });
1352
- continue;
1353
- }
1354
- await fs5.mkdir(path5.dirname(absolutePath), { recursive: true });
1355
- await fs5.writeFile(absolutePath, content, "utf8");
1356
- files.push({
1357
- path: relativePath,
1358
- status: "created"
1359
- });
1360
- }
1361
- return {
1362
- extension_name: extensionName,
1363
- command_name: commandName,
1364
- target_path: targetPath,
1365
- created_directory: createdDirectory,
1366
- files
1367
- };
1368
- }
1369
-
1370
1185
  // dist/cli/commands/extension/doctor.js
1371
1186
  !(function() {
1372
1187
  try {
1373
1188
  var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}, n = new e.Error().stack;
1374
- n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "bdfa4140-50af-5323-a37f-fbd15134a40e");
1189
+ n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "52b725dc-48e3-5436-8136-47e5314b07eb");
1375
1190
  } catch (e2) {
1376
1191
  }
1377
1192
  })();
@@ -1618,6 +1433,15 @@ function classifyDoctorActivationFailureWarnings(activationFailures = []) {
1618
1433
  }
1619
1434
  return [...new Set(warnings)].sort((left, right) => left.localeCompare(right));
1620
1435
  }
1436
+ function classifyUnusedCapabilityWarnings(loadResult, activationResult) {
1437
+ const warnings = [];
1438
+ for (const entry of reconcileExtensionCapabilityUsage(loadResult.loaded, activationResult)) {
1439
+ for (const capability of entry.unused) {
1440
+ warnings.push(`extension_capability_unused:${entry.layer}:${entry.name}:${capability}`);
1441
+ }
1442
+ }
1443
+ return [...new Set(warnings)].sort((left, right) => left.localeCompare(right));
1444
+ }
1621
1445
  function buildExtensionTriageSummary(scope, warnings, extensions, options = {}) {
1622
1446
  const normalizedWarnings = [...new Set(warnings)].sort((left, right) => left.localeCompare(right));
1623
1447
  const managedTotal = extensions.filter((entry) => entry.managed).length;
@@ -1668,6 +1492,9 @@ function buildExtensionTriageSummary(scope, warnings, extensions, options = {})
1668
1492
  if (normalizedWarnings.some((warning) => warning.startsWith("extension_capability_missing:"))) {
1669
1493
  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.`);
1670
1494
  }
1495
+ if (normalizedWarnings.some((warning) => warning.startsWith("extension_capability_unused:"))) {
1496
+ 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.`);
1497
+ }
1671
1498
  if (normalizedWarnings.some((warning) => warning.startsWith("extension_command_definition_legacy_handler_alias:"))) {
1672
1499
  remediation.push("Extension command definitions using legacy handler were auto-remapped. Update command definitions to use run: (context) => ... for forward compatibility.");
1673
1500
  }
@@ -1829,7 +1656,7 @@ function buildDoctorConsistencySummary(scope, installedExtensions, loadedExtensi
1829
1656
  !(function() {
1830
1657
  try {
1831
1658
  var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}, n = new e.Error().stack;
1832
- n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "4c40a0ee-f2c1-5329-a52d-355491472f77");
1659
+ n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "1402dcb1-4fe9-5ec7-a34f-990b54437d1e");
1833
1660
  } catch (e2) {
1834
1661
  }
1835
1662
  })();
@@ -1909,11 +1736,11 @@ function sleep(ms) {
1909
1736
  setTimeout(resolve, ms);
1910
1737
  });
1911
1738
  }
1912
- async function copyExtensionDirectoryForInstall(sourceDirectory, destinationDirectory, copyDirectory = fs6.cp) {
1739
+ async function copyExtensionDirectoryForInstall(sourceDirectory, destinationDirectory, copyDirectory = fs5.cp) {
1913
1740
  for (let attempt = 1; attempt <= EXTENSION_INSTALL_COPY_ATTEMPTS; attempt += 1) {
1914
1741
  try {
1915
1742
  if (await pathExists(destinationDirectory)) {
1916
- await fs6.rm(destinationDirectory, { recursive: true, force: true });
1743
+ await fs5.rm(destinationDirectory, { recursive: true, force: true });
1917
1744
  }
1918
1745
  await copyExtensionDirectoryWithoutSelfNesting(sourceDirectory, destinationDirectory, copyDirectory);
1919
1746
  return;
@@ -1926,8 +1753,8 @@ async function copyExtensionDirectoryForInstall(sourceDirectory, destinationDire
1926
1753
  }
1927
1754
  }
1928
1755
  async function copyExtensionDirectoryWithoutSelfNesting(sourceDirectory, destinationDirectory, copyDirectory) {
1929
- const resolvedSource = path6.resolve(sourceDirectory);
1930
- const resolvedDestination = path6.resolve(destinationDirectory);
1756
+ const resolvedSource = path5.resolve(sourceDirectory);
1757
+ const resolvedDestination = path5.resolve(destinationDirectory);
1931
1758
  if (resolvedSource === resolvedDestination) {
1932
1759
  return;
1933
1760
  }
@@ -1935,28 +1762,28 @@ async function copyExtensionDirectoryWithoutSelfNesting(sourceDirectory, destina
1935
1762
  await copyDirectory(sourceDirectory, destinationDirectory, { recursive: true, force: true });
1936
1763
  return;
1937
1764
  }
1938
- const stagingRoot = await fs6.mkdtemp(path6.join(os2.tmpdir(), "pm-extension-copy-"));
1939
- const stagedDirectory = path6.join(stagingRoot, "extension");
1765
+ const stagingRoot = await fs5.mkdtemp(path5.join(os2.tmpdir(), "pm-extension-copy-"));
1766
+ const stagedDirectory = path5.join(stagingRoot, "extension");
1940
1767
  try {
1941
1768
  await copyDirectory(sourceDirectory, stagedDirectory, { recursive: true, force: true });
1942
1769
  await copyDirectory(stagedDirectory, destinationDirectory, { recursive: true, force: true });
1943
1770
  } finally {
1944
- await fs6.rm(stagingRoot, { recursive: true, force: true });
1771
+ await fs5.rm(stagingRoot, { recursive: true, force: true });
1945
1772
  }
1946
1773
  }
1947
1774
  async function withExtensionInstallLock(settingsRoot, destinationDirectoryName, run, options) {
1948
- const lockRoot = path6.join(settingsRoot, "runtime", "extension-install-locks");
1949
- const lockPath = path6.join(lockRoot, `${destinationDirectoryName}.lock`);
1950
- await fs6.mkdir(lockRoot, { recursive: true });
1775
+ const lockRoot = path5.join(settingsRoot, "runtime", "extension-install-locks");
1776
+ const lockPath = path5.join(lockRoot, `${destinationDirectoryName}.lock`);
1777
+ await fs5.mkdir(lockRoot, { recursive: true });
1951
1778
  const attempts = Math.max(1, Math.floor(options?.attempts ?? EXTENSION_INSTALL_LOCK_ATTEMPTS));
1952
1779
  const delayMs = Math.max(0, Math.floor(options?.delay_ms ?? EXTENSION_INSTALL_LOCK_DELAY_MS));
1953
1780
  const staleMs = Math.max(0, Math.floor(options?.stale_ms ?? EXTENSION_INSTALL_LOCK_STALE_MS));
1954
1781
  let acquired = false;
1955
1782
  for (let attempt = 1; attempt <= attempts; attempt += 1) {
1956
1783
  try {
1957
- await fs6.mkdir(lockPath);
1784
+ await fs5.mkdir(lockPath);
1958
1785
  acquired = true;
1959
- await fs6.writeFile(path6.join(lockPath, "owner.json"), `${JSON.stringify({ pid: process.pid, created_at: nowIso(), destination: destinationDirectoryName }, null, 2)}
1786
+ await fs5.writeFile(path5.join(lockPath, "owner.json"), `${JSON.stringify({ pid: process.pid, created_at: nowIso(), destination: destinationDirectoryName }, null, 2)}
1960
1787
  `, "utf8");
1961
1788
  break;
1962
1789
  } catch (error) {
@@ -1965,12 +1792,12 @@ async function withExtensionInstallLock(settingsRoot, destinationDirectoryName,
1965
1792
  }
1966
1793
  let stat = null;
1967
1794
  try {
1968
- stat = await fs6.stat(lockPath);
1795
+ stat = await fs5.stat(lockPath);
1969
1796
  } catch {
1970
1797
  stat = null;
1971
1798
  }
1972
1799
  if (stat && Date.now() - stat.mtimeMs > staleMs) {
1973
- await fs6.rm(lockPath, { recursive: true, force: true });
1800
+ await fs5.rm(lockPath, { recursive: true, force: true });
1974
1801
  continue;
1975
1802
  }
1976
1803
  await sleep(delayMs);
@@ -1982,7 +1809,7 @@ async function withExtensionInstallLock(settingsRoot, destinationDirectoryName,
1982
1809
  try {
1983
1810
  return await run();
1984
1811
  } finally {
1985
- await fs6.rm(lockPath, { recursive: true, force: true }).catch(() => void 0);
1812
+ await fs5.rm(lockPath, { recursive: true, force: true }).catch(() => void 0);
1986
1813
  }
1987
1814
  }
1988
1815
  async function resolveInstalledExtensionCandidate(installed, extensionTarget) {
@@ -2160,7 +1987,7 @@ async function listInstalledExtensions(extensionsRoot, scope, settings, state) {
2160
1987
  warnings: []
2161
1988
  };
2162
1989
  }
2163
- const entries = await fs6.readdir(extensionsRoot, { withFileTypes: true });
1990
+ const entries = await fs5.readdir(extensionsRoot, { withFileTypes: true });
2164
1991
  const directories = entries.filter((entry) => entry.isDirectory()).map((entry) => entry.name).sort((left, right) => left.localeCompare(right));
2165
1992
  const managedByName = /* @__PURE__ */ new Map();
2166
1993
  const managedByDirectory = /* @__PURE__ */ new Map();
@@ -2171,8 +1998,8 @@ async function listInstalledExtensions(extensionsRoot, scope, settings, state) {
2171
1998
  const warnings = [];
2172
1999
  const summaries = [];
2173
2000
  for (const directoryName of directories) {
2174
- const extensionDirectory = path6.join(extensionsRoot, directoryName);
2175
- const manifestPath = path6.join(extensionDirectory, "manifest.json");
2001
+ const extensionDirectory = path5.join(extensionsRoot, directoryName);
2002
+ const manifestPath = path5.join(extensionDirectory, "manifest.json");
2176
2003
  if (!await pathExists(manifestPath)) {
2177
2004
  warnings.push(`extension_manifest_missing:${scope}:${directoryName}`);
2178
2005
  const managedEntry2 = managedByDirectory.get(normalizeExtensionNameForMatch(directoryName));
@@ -2201,7 +2028,7 @@ async function listInstalledExtensions(extensionsRoot, scope, settings, state) {
2201
2028
  }
2202
2029
  let rawManifest;
2203
2030
  try {
2204
- rawManifest = JSON.parse(await fs6.readFile(manifestPath, "utf8"));
2031
+ rawManifest = JSON.parse(await fs5.readFile(manifestPath, "utf8"));
2205
2032
  } catch {
2206
2033
  warnings.push(`extension_manifest_invalid_json:${scope}:${directoryName}`);
2207
2034
  continue;
@@ -2378,7 +2205,7 @@ async function adoptUnmanagedExtensions(extensionsRoot, scope, installedExtensio
2378
2205
  let nextState = state;
2379
2206
  const adoptedEntries = [];
2380
2207
  for (const candidate of sortedCandidates) {
2381
- const extensionDirectory = path6.join(extensionsRoot, candidate.directory);
2208
+ const extensionDirectory = path5.join(extensionsRoot, candidate.directory);
2382
2209
  const validated = await validateExtensionDirectory(extensionDirectory);
2383
2210
  const now = nowIso();
2384
2211
  const sourceRecord = {
@@ -2480,6 +2307,9 @@ async function runExtension(target, options, global2) {
2480
2307
  if (options.fixManagedState === true && action !== "manage" && action !== "doctor") {
2481
2308
  throw new PmCliError("--fix-managed-state is only valid with --manage or --doctor.", EXIT_CODE.USAGE);
2482
2309
  }
2310
+ if (options.capability !== void 0 && action !== "init") {
2311
+ throw new PmCliError("--capability is only valid with --init/--scaffold.", EXIT_CODE.USAGE);
2312
+ }
2483
2313
  const normalizedTarget = (() => {
2484
2314
  const normalizedInput = target?.trim().toLowerCase();
2485
2315
  if (action === "doctor" && normalizedInput === "doctor") {
@@ -2534,20 +2364,23 @@ async function runExtension(target, options, global2) {
2534
2364
  throw new PmCliError('Action "init" does not accept --gh/--github/--ref options.', EXIT_CODE.USAGE);
2535
2365
  }
2536
2366
  const scaffoldTarget = requireTarget(normalizedTarget, action);
2537
- const scaffold = await scaffoldExtensionProject(scaffoldTarget, options.vocabulary ?? "extension");
2367
+ const scaffold = await scaffoldExtensionProject(scaffoldTarget, options.vocabulary ?? "extension", options.capability);
2538
2368
  const quotedTargetPath = JSON.stringify(scaffold.target_path);
2369
+ const quotedShellTargetPath = JSON.stringify(scaffold.target_path.replace(/\\/g, "/"));
2539
2370
  return withResult({
2540
2371
  scaffolded: scaffold.created_directory || scaffold.files.some((entry) => entry.status === "created"),
2541
2372
  extension: {
2542
2373
  name: scaffold.extension_name,
2543
2374
  command: scaffold.command_name
2544
2375
  },
2376
+ capability: scaffold.capability,
2545
2377
  target_path: scaffold.target_path,
2546
2378
  created_directory: scaffold.created_directory,
2547
2379
  files: scaffold.files,
2548
2380
  next_steps: [
2549
2381
  `Install the scaffold: ${options.vocabulary === "package" ? "pm install --project" : "pm extension --install --project"} ${quotedTargetPath}`,
2550
2382
  `Smoke-test command path: pm ${scaffold.command_name}`,
2383
+ ...options.vocabulary === "package" ? [`Validate the sample test: cd ${quotedShellTargetPath}, then run "npm install" and "npm test"`] : [],
2551
2384
  `Run diagnostics: ${options.vocabulary === "package" ? "pm package doctor" : "pm extension --doctor"} --project --detail summary`
2552
2385
  ]
2553
2386
  });
@@ -2657,10 +2490,10 @@ async function runExtension(target, options, global2) {
2657
2490
  const settings = await readSettings(resolvedRoots.settings_root);
2658
2491
  const managedStateRead = await readManagedExtensionState(resolvedRoots.selected_root);
2659
2492
  warnings.push(...managedStateRead.warnings);
2660
- const destinationDirectory = path6.join(resolvedRoots.selected_root, destinationDirectoryName);
2493
+ const destinationDirectory = path5.join(resolvedRoots.selected_root, destinationDirectoryName);
2661
2494
  const destinationExists = await pathExists(destinationDirectory);
2662
2495
  const installInPlace = await areDirectoriesEquivalent(validated.directory, destinationDirectory);
2663
- await fs6.mkdir(resolvedRoots.selected_root, { recursive: true });
2496
+ await fs5.mkdir(resolvedRoots.selected_root, { recursive: true });
2664
2497
  if (!installInPlace) {
2665
2498
  await copyExtensionDirectoryForInstall(validated.directory, destinationDirectory);
2666
2499
  }
@@ -2807,7 +2640,7 @@ async function runExtension(target, options, global2) {
2807
2640
  }
2808
2641
  });
2809
2642
  }
2810
- const extensionDirectory = path6.join(resolvedRoots.selected_root, candidate.directory);
2643
+ const extensionDirectory = path5.join(resolvedRoots.selected_root, candidate.directory);
2811
2644
  const validated = await validateExtensionDirectory(extensionDirectory);
2812
2645
  const now = nowIso();
2813
2646
  const sourceRecord = githubOption === void 0 ? {
@@ -2872,8 +2705,8 @@ async function runExtension(target, options, global2) {
2872
2705
  if (!candidate) {
2873
2706
  throw new PmCliError(`Installed extension "${extensionTarget}" was not found in ${scope} scope.`, EXIT_CODE.NOT_FOUND);
2874
2707
  }
2875
- const destinationDirectory = path6.join(resolvedRoots.selected_root, candidate.directory);
2876
- await fs6.rm(destinationDirectory, { recursive: true, force: true });
2708
+ const destinationDirectory = path5.join(resolvedRoots.selected_root, candidate.directory);
2709
+ await fs5.rm(destinationDirectory, { recursive: true, force: true });
2877
2710
  const updatedState = {
2878
2711
  ...managedStateRead.state,
2879
2712
  updated_at: nowIso(),
@@ -2959,6 +2792,7 @@ async function runExtension(target, options, global2) {
2959
2792
  warnings.push(...classifyDoctorLoadFailureWarnings(loadResult.failed));
2960
2793
  warnings.push(...activationResult.warnings);
2961
2794
  warnings.push(...classifyDoctorActivationFailureWarnings(activationResult.failed));
2795
+ warnings.push(...classifyUnusedCapabilityWarnings(loadResult, activationResult));
2962
2796
  warnings.push(...collectGlobalOutputOverrideDoctorWarnings(activationResult));
2963
2797
  const runtimeInstalledExtensions = applyDoctorRuntimeActivationState(refreshedInstalled.extensions, loadResult, activationResult);
2964
2798
  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);
@@ -3276,4 +3110,4 @@ export {
3276
3110
  runExtension,
3277
3111
  _testOnly
3278
3112
  };
3279
- //# sourceMappingURL=chunk-H3ZTSYPA.js.map
3113
+ //# sourceMappingURL=chunk-7GCCDXXN.js.map