@unbrained/pm-cli 2026.6.21 → 2026.6.23

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (429) hide show
  1. package/CHANGELOG.md +44 -0
  2. package/dist/cli/commands/completion.js +7 -4
  3. package/dist/cli/commands/completion.js.map +1 -1
  4. package/dist/cli/commands/contracts.js +4 -3
  5. package/dist/cli/commands/contracts.js.map +1 -1
  6. package/dist/cli/commands/extension/describe.d.ts +70 -0
  7. package/dist/cli/commands/extension/describe.js +76 -0
  8. package/dist/cli/commands/extension/describe.js.map +1 -0
  9. package/dist/cli/commands/extension/doctor.d.ts +11 -0
  10. package/dist/cli/commands/extension/doctor.js +31 -2
  11. package/dist/cli/commands/extension/doctor.js.map +1 -1
  12. package/dist/cli/commands/extension/scaffold.d.ts +16 -2
  13. package/dist/cli/commands/extension/scaffold.js +529 -48
  14. package/dist/cli/commands/extension/scaffold.js.map +1 -1
  15. package/dist/cli/commands/extension.d.ts +3 -1
  16. package/dist/cli/commands/extension.js +35 -5
  17. package/dist/cli/commands/extension.js.map +1 -1
  18. package/dist/cli/help-content.js +20 -4
  19. package/dist/cli/help-content.js.map +1 -1
  20. package/dist/cli/register-setup.js +14 -2
  21. package/dist/cli/register-setup.js.map +1 -1
  22. package/dist/cli-bundle/chunks/{activity-KW3IRP44.js → activity-H2LMOSSW.js} +11 -11
  23. package/dist/cli-bundle/chunks/activity-XUZ2AHCW.js +18 -0
  24. package/dist/cli-bundle/chunks/{aggregate-3ZKQG5SW.js → aggregate-EGJLZQBI.js} +10 -10
  25. package/dist/cli-bundle/chunks/{aggregate-FIGQEIL3.js → aggregate-R725FC3S.js} +10 -10
  26. package/dist/cli-bundle/chunks/{append-EWJYJ7CH.js → append-5J345QGU.js} +8 -8
  27. package/dist/cli-bundle/chunks/{append-QEOLX3XB.js → append-O5HPBMRN.js} +8 -8
  28. package/dist/cli-bundle/chunks/{chunk-GOZUHWFD.js → chunk-2A34E3BA.js} +2 -2
  29. package/dist/cli-bundle/chunks/{chunk-A4Z7ZOL5.js → chunk-2BFPAUAF.js} +31 -15
  30. package/dist/cli-bundle/chunks/chunk-2BFPAUAF.js.map +1 -0
  31. package/dist/cli-bundle/chunks/{chunk-5QICDWMV.js → chunk-2CKH2LMV.js} +2 -2
  32. package/dist/cli-bundle/chunks/{chunk-WQ7NIVDK.js → chunk-2RDVQEWV.js} +4 -4
  33. package/dist/cli-bundle/chunks/{chunk-NSBZ2CKF.js → chunk-2T3JG6V4.js} +2 -2
  34. package/dist/cli-bundle/chunks/{chunk-76Z3YSHV.js → chunk-34EONI5F.js} +2 -2
  35. package/dist/cli-bundle/chunks/{chunk-PUH4D67U.js → chunk-3VY3YQO6.js} +2 -2
  36. package/dist/cli-bundle/chunks/{chunk-N5ZJACJ6.js → chunk-46G6RSB6.js} +8 -8
  37. package/dist/cli-bundle/chunks/{chunk-SRYYRVPB.js → chunk-4BHT5VDC.js} +2 -2
  38. package/dist/cli-bundle/chunks/{chunk-PFSRUHDH.js → chunk-4KD54S3Z.js} +9 -9
  39. package/dist/cli-bundle/chunks/{chunk-QQHISQBJ.js → chunk-55ISXAQH.js} +7 -4
  40. package/dist/cli-bundle/chunks/{chunk-QQHISQBJ.js.map → chunk-55ISXAQH.js.map} +2 -2
  41. package/dist/cli-bundle/chunks/{chunk-NIUEXCFS.js → chunk-5UVVASSA.js} +6 -6
  42. package/dist/cli-bundle/chunks/{chunk-CF55WVVS.js → chunk-5VOINNKT.js} +2 -2
  43. package/dist/cli-bundle/chunks/{chunk-NIGXMNNI.js → chunk-66MEDTUD.js} +2 -2
  44. package/dist/cli-bundle/chunks/{chunk-AZMOLBN3.js → chunk-7AUB5HNA.js} +7 -7
  45. package/dist/cli-bundle/chunks/{chunk-OTHIWLMB.js → chunk-7K2XXO4I.js} +5 -5
  46. package/dist/cli-bundle/chunks/{chunk-7D3SAQXM.js → chunk-7MRQ4HMK.js} +2 -2
  47. package/dist/cli-bundle/chunks/{chunk-EBH56IXK.js → chunk-7SV63ZHD.js} +8 -8
  48. package/dist/cli-bundle/chunks/{chunk-OFYMIDF2.js → chunk-7UGEAPRY.js} +9 -9
  49. package/dist/cli-bundle/chunks/{chunk-LUWW7L4B.js → chunk-7XGQXHFB.js} +3 -3
  50. package/dist/cli-bundle/chunks/{chunk-UEMNL33O.js → chunk-AD3A7ZD6.js} +8 -8
  51. package/dist/cli-bundle/chunks/{chunk-3EWSGA7N.js → chunk-AONIHR2C.js} +12 -12
  52. package/dist/cli-bundle/chunks/{chunk-RVHYI7SL.js → chunk-BB6MDVNQ.js} +8 -8
  53. package/dist/cli-bundle/chunks/chunk-C5AOG6D2.js +691 -0
  54. package/dist/cli-bundle/chunks/chunk-C5AOG6D2.js.map +1 -0
  55. package/dist/cli-bundle/chunks/{chunk-52OCIDPG.js → chunk-CE5P2NQR.js} +5 -5
  56. package/dist/cli-bundle/chunks/{chunk-NXS7ZKAK.js → chunk-CIIK67GW.js} +4 -4
  57. package/dist/cli-bundle/chunks/{chunk-HC4AWIKT.js → chunk-CKGNPJAG.js} +31 -15
  58. package/dist/cli-bundle/chunks/chunk-CKGNPJAG.js.map +7 -0
  59. package/dist/cli-bundle/chunks/{chunk-NB3PYLQ6.js → chunk-DT5LPYOD.js} +5 -5
  60. package/dist/cli-bundle/chunks/{chunk-37QXHBIB.js → chunk-FIGAZ4Y7.js} +3 -3
  61. package/dist/cli-bundle/chunks/{chunk-UV6IYE5U.js → chunk-FXR67XVQ.js} +2 -2
  62. package/dist/cli-bundle/chunks/{chunk-3MDHREEV.js → chunk-G6N5VEOK.js} +3 -3
  63. package/dist/cli-bundle/chunks/{chunk-5PCI3UBT.js → chunk-G6PYHBBR.js} +152 -253
  64. package/dist/cli-bundle/chunks/chunk-G6PYHBBR.js.map +7 -0
  65. package/dist/cli-bundle/chunks/{chunk-2GCDRRIF.js → chunk-GAJVRGGA.js} +12 -12
  66. package/dist/cli-bundle/chunks/{chunk-HCU6WUSY.js → chunk-H2IP4QLJ.js} +9 -9
  67. package/dist/cli-bundle/chunks/{chunk-CZUB4XWO.js → chunk-H4IIJDE4.js} +2 -2
  68. package/dist/cli-bundle/chunks/{chunk-RLK7P77C.js → chunk-HFFUQR73.js} +5 -5
  69. package/dist/cli-bundle/chunks/{chunk-6M4RJS4M.js → chunk-IB3GYLQE.js} +3 -3
  70. package/dist/cli-bundle/chunks/{chunk-SX75ADBK.js → chunk-IPKJ6B36.js} +6 -6
  71. package/dist/cli-bundle/chunks/{chunk-H7NJZWG2.js → chunk-JR2LV3M4.js} +13 -13
  72. package/dist/cli-bundle/chunks/{chunk-PP2U4NMT.js → chunk-KFWBJPSG.js} +5 -5
  73. package/dist/cli-bundle/chunks/{chunk-32R4PIC6.js → chunk-KQMUV6LX.js} +145 -253
  74. package/dist/cli-bundle/chunks/chunk-KQMUV6LX.js.map +1 -0
  75. package/dist/cli-bundle/chunks/{chunk-F7K5GWP3.js → chunk-LRKKONT2.js} +9 -9
  76. package/dist/cli-bundle/chunks/{chunk-5IDI42VV.js → chunk-M4T5DXD5.js} +7 -7
  77. package/dist/cli-bundle/chunks/{chunk-2PKHRP6G.js → chunk-MJTINN54.js} +10 -10
  78. package/dist/cli-bundle/chunks/{chunk-HMOADQVT.js → chunk-MJTSZKK5.js} +107 -3
  79. package/dist/cli-bundle/chunks/chunk-MJTSZKK5.js.map +7 -0
  80. package/dist/cli-bundle/chunks/chunk-MVKFOLLM.js +694 -0
  81. package/dist/cli-bundle/chunks/chunk-MVKFOLLM.js.map +7 -0
  82. package/dist/cli-bundle/chunks/{chunk-QGG32QHW.js → chunk-NCVCO3NZ.js} +3 -3
  83. package/dist/cli-bundle/chunks/{chunk-AIS5PGI3.js → chunk-NK3UPBVG.js} +2 -2
  84. package/dist/cli-bundle/chunks/{chunk-6H4LF7AO.js → chunk-O6LLO73I.js} +2 -2
  85. package/dist/cli-bundle/chunks/{chunk-YCJX76PW.js → chunk-P77P2ILI.js} +2 -2
  86. package/dist/cli-bundle/chunks/{chunk-F5NZWFSW.js → chunk-Q2KNGP7C.js} +7 -7
  87. package/dist/cli-bundle/chunks/{chunk-GMHPNNYG.js → chunk-QH3PJYON.js} +10 -10
  88. package/dist/cli-bundle/chunks/{chunk-NJHMAJ6N.js → chunk-QL5RVYOA.js} +8 -8
  89. package/dist/cli-bundle/chunks/{chunk-O47BPOPC.js → chunk-S26C36QC.js} +2 -2
  90. package/dist/cli-bundle/chunks/{chunk-D7FYS6PG.js → chunk-S2RUQSX2.js} +2 -2
  91. package/dist/cli-bundle/chunks/{chunk-CZPXY7UW.js → chunk-SBQTAVJZ.js} +3 -3
  92. package/dist/cli-bundle/chunks/{chunk-M5XALUSL.js → chunk-SKH7OGE5.js} +2 -2
  93. package/dist/cli-bundle/chunks/{chunk-NJN7LL7U.js → chunk-SKN7LC5W.js} +5 -5
  94. package/dist/cli-bundle/chunks/{chunk-6ZXM2XNF.js → chunk-SR3EKWZG.js} +8 -8
  95. package/dist/cli-bundle/chunks/{chunk-B473GZWW.js → chunk-T5472OMV.js} +3 -3
  96. package/dist/cli-bundle/chunks/{chunk-2EIMPCE4.js → chunk-T72AZDBA.js} +3 -3
  97. package/dist/cli-bundle/chunks/{chunk-6CJWZAN7.js → chunk-TQZH6OD6.js} +7 -7
  98. package/dist/cli-bundle/chunks/{chunk-FWPDUYEY.js → chunk-U2Z5YUSO.js} +7 -7
  99. package/dist/cli-bundle/chunks/{chunk-434HM6Z5.js → chunk-UELRKQQU.js} +100 -3
  100. package/dist/cli-bundle/chunks/chunk-UELRKQQU.js.map +1 -0
  101. package/dist/cli-bundle/chunks/{chunk-HIP7WVTL.js → chunk-UVC5LOR7.js} +4 -4
  102. package/dist/cli-bundle/chunks/{chunk-LEU5GHRC.js → chunk-VAYA4XFX.js} +3 -3
  103. package/dist/cli-bundle/chunks/{chunk-J4MYYSOL.js → chunk-VFAQ4LMN.js} +5 -5
  104. package/dist/cli-bundle/chunks/{chunk-UPE3CDD7.js → chunk-W72GHSJE.js} +7 -7
  105. package/dist/cli-bundle/chunks/{chunk-C4N5I7ZW.js → chunk-WBRKK5QR.js} +3 -3
  106. package/dist/cli-bundle/chunks/{chunk-Z6T4PQI2.js → chunk-WM5ZVBPE.js} +4 -4
  107. package/dist/cli-bundle/chunks/{chunk-TKBHZPKD.js → chunk-WZQWHN4R.js} +3 -3
  108. package/dist/cli-bundle/chunks/{chunk-FKBDKV7Y.js → chunk-XVF4YARA.js} +3 -3
  109. package/dist/cli-bundle/chunks/{chunk-SBGXDO7A.js → chunk-Y4SUQQYH.js} +8 -5
  110. package/dist/cli-bundle/chunks/{chunk-SBGXDO7A.js.map → chunk-Y4SUQQYH.js.map} +1 -1
  111. package/dist/cli-bundle/chunks/{chunk-QZTWBFXJ.js → chunk-YDEXO24S.js} +2 -2
  112. package/dist/cli-bundle/chunks/{chunk-FRUFKWNK.js → chunk-YJ3SUEPD.js} +2 -2
  113. package/dist/cli-bundle/chunks/{chunk-5FIEHKEX.js → chunk-YUDJD3XO.js} +5 -5
  114. package/dist/cli-bundle/chunks/{chunk-Q2J2HJUN.js → chunk-ZQ3ZVXX2.js} +2 -2
  115. package/dist/cli-bundle/chunks/{chunk-C3AZ5ZML.js → chunk-ZRK4O56R.js} +13 -13
  116. package/dist/cli-bundle/chunks/{claim-RC56YUWG.js → claim-4KHAA2RN.js} +10 -10
  117. package/dist/cli-bundle/chunks/{claim-THOJ6CMV.js → claim-CSPJFLNH.js} +10 -10
  118. package/dist/cli-bundle/chunks/close-A3EMKBBY.js +15 -0
  119. package/dist/cli-bundle/chunks/{close-SG5MNCVQ.js → close-W56IOGYG.js} +8 -8
  120. package/dist/cli-bundle/chunks/{close-many-3L3AQZBU.js → close-many-BX5DCSVV.js} +15 -15
  121. package/dist/cli-bundle/chunks/{close-many-DKQLBGLV.js → close-many-TQU5F4E4.js} +15 -15
  122. package/dist/cli-bundle/chunks/{comments-M7ZOZNBX.js → comments-U5KUC4EU.js} +10 -10
  123. package/dist/cli-bundle/chunks/{comments-SKWMDWCW.js → comments-VRECH75R.js} +10 -10
  124. package/dist/cli-bundle/chunks/{config-OZCUABPB.js → config-D3OKQO52.js} +8 -8
  125. package/dist/cli-bundle/chunks/{config-7CK62S7T.js → config-MMJA4LLK.js} +8 -8
  126. package/dist/cli-bundle/chunks/{context-PUG2A7RC.js → context-BLBD3PUB.js} +13 -13
  127. package/dist/cli-bundle/chunks/{context-OEC366TO.js → context-DHLVPXN3.js} +13 -13
  128. package/dist/cli-bundle/chunks/{contracts-3THOLA7L.js → contracts-C3SZCXXG.js} +7 -5
  129. package/dist/cli-bundle/chunks/contracts-C3SZCXXG.js.map +7 -0
  130. package/dist/cli-bundle/chunks/{contracts-N65FXEOL.js → contracts-XGVMMPC5.js} +8 -6
  131. package/dist/cli-bundle/chunks/contracts-XGVMMPC5.js.map +1 -0
  132. package/dist/cli-bundle/chunks/{copy-JPX7VZCH.js → copy-5D5DX3VK.js} +7 -7
  133. package/dist/cli-bundle/chunks/{copy-6QLHILAC.js → copy-HHL3K4QP.js} +7 -7
  134. package/dist/cli-bundle/chunks/{create-Y54ZVVZH.js → create-IXY43O4H.js} +14 -14
  135. package/dist/cli-bundle/chunks/create-QVGFYA2X.js +30 -0
  136. package/dist/cli-bundle/chunks/{delete-63PCMQAJ.js → delete-IBUR3M42.js} +7 -7
  137. package/dist/cli-bundle/chunks/{delete-GDSMGAGJ.js → delete-QQC2FGUH.js} +7 -7
  138. package/dist/cli-bundle/chunks/{deps-XYQ73XRH.js → deps-KWKRHXIN.js} +7 -7
  139. package/dist/cli-bundle/chunks/{deps-T4ZF5G54.js → deps-VTPO4BSE.js} +7 -7
  140. package/dist/cli-bundle/chunks/{docs-EHNPDWUL.js → docs-7CHFHXLN.js} +9 -9
  141. package/dist/cli-bundle/chunks/{docs-C75YIXHC.js → docs-IIO3FEUO.js} +9 -9
  142. package/dist/cli-bundle/chunks/{eval-GTENKE24.js → eval-CEYYEPSX.js} +12 -12
  143. package/dist/cli-bundle/chunks/{eval-3WKDTRMH.js → eval-IO7LREOL.js} +12 -12
  144. package/dist/cli-bundle/chunks/{extension-D5FDZ2CO.js → extension-KCPUWSY2.js} +6 -5
  145. package/dist/cli-bundle/chunks/{extension-46NWACO3.js → extension-UTTQDUYI.js} +6 -5
  146. package/dist/cli-bundle/chunks/{files-X3H7CCBQ.js → files-TPUL6KWB.js} +9 -9
  147. package/dist/cli-bundle/chunks/{files-DSZBOSSN.js → files-Z2HHEFGP.js} +9 -9
  148. package/dist/cli-bundle/chunks/{focus-5STQXDPU.js → focus-JVJCGC2D.js} +8 -8
  149. package/dist/cli-bundle/chunks/{focus-MDVPOWB5.js → focus-YRNNH7IP.js} +8 -8
  150. package/dist/cli-bundle/chunks/{gc-ZMST3WQP.js → gc-O5GUO3SU.js} +3 -3
  151. package/dist/cli-bundle/chunks/{gc-ZC7JHBG7.js → gc-PYVVEELM.js} +3 -3
  152. package/dist/cli-bundle/chunks/{get-NT7L2HUZ.js → get-ENLTEGTX.js} +11 -11
  153. package/dist/cli-bundle/chunks/{get-J2IPJRZW.js → get-X4O3HBEY.js} +11 -11
  154. package/dist/cli-bundle/chunks/{health-WOYBR3KU.js → health-5EXTY44Q.js} +14 -13
  155. package/dist/cli-bundle/chunks/{health-WOYBR3KU.js.map → health-5EXTY44Q.js.map} +1 -1
  156. package/dist/cli-bundle/chunks/{health-IVMA3XQC.js → health-BOTB7YSU.js} +16 -15
  157. package/dist/cli-bundle/chunks/{health-IVMA3XQC.js.map → health-BOTB7YSU.js.map} +1 -1
  158. package/dist/cli-bundle/chunks/{history-RLH2QCRO.js → history-AJTXLT6S.js} +10 -10
  159. package/dist/cli-bundle/chunks/history-AK3E5Z3C.js +20 -0
  160. package/dist/cli-bundle/chunks/{history-compact-UXDIFC33.js → history-compact-43OOUAWD.js} +12 -12
  161. package/dist/cli-bundle/chunks/{history-compact-ZBEBGJM7.js → history-compact-46MRHW3I.js} +12 -12
  162. package/dist/cli-bundle/chunks/{history-redact-P7I7AWMB.js → history-redact-KUUUVUFM.js} +11 -11
  163. package/dist/cli-bundle/chunks/history-redact-TWIYQV5J.js +21 -0
  164. package/dist/cli-bundle/chunks/{history-repair-52KINVIK.js → history-repair-B5PZBOPU.js} +12 -12
  165. package/dist/cli-bundle/chunks/{history-repair-RM5ITLU5.js → history-repair-VQTYOSRS.js} +12 -12
  166. package/dist/cli-bundle/chunks/{init-2BNZOO6F.js → init-BNLVFPRG.js} +11 -10
  167. package/dist/cli-bundle/chunks/init-RCRKW5PL.js +21 -0
  168. package/dist/cli-bundle/chunks/{learnings-YGYVHWJK.js → learnings-MUUU5KMC.js} +10 -10
  169. package/dist/cli-bundle/chunks/{learnings-W6F3FIPL.js → learnings-XSGX52S7.js} +10 -10
  170. package/dist/cli-bundle/chunks/{list-K6FPV4J4.js → list-32U7BSKE.js} +10 -10
  171. package/dist/cli-bundle/chunks/{list-KPAYU5KZ.js → list-ZEEOHLTQ.js} +10 -10
  172. package/dist/cli-bundle/chunks/{notes-PU74EPKV.js → notes-NJ45OZGF.js} +10 -10
  173. package/dist/cli-bundle/chunks/{notes-YTD6ZILW.js → notes-OHU25L3M.js} +10 -10
  174. package/dist/cli-bundle/chunks/{plan-GEQYUCBW.js → plan-KQA7CAKI.js} +14 -14
  175. package/dist/cli-bundle/chunks/{plan-FNXHXRCI.js → plan-LWWAEV5Y.js} +14 -14
  176. package/dist/cli-bundle/chunks/{register-list-query-QI45RMKN.js → register-list-query-DDCHPONM.js} +19 -19
  177. package/dist/cli-bundle/chunks/{register-list-query-PHWYHENI.js → register-list-query-YNPBVIKM.js} +19 -19
  178. package/dist/cli-bundle/chunks/{register-mutation-YINRTS7L.js → register-mutation-7ALWDDAX.js} +33 -33
  179. package/dist/cli-bundle/chunks/{register-mutation-X3BUOQEL.js → register-mutation-LAVKYY63.js} +33 -33
  180. package/dist/cli-bundle/chunks/{register-operations-E5JEASRK.js → register-operations-R4VOQ6EF.js} +32 -32
  181. package/dist/cli-bundle/chunks/{register-operations-MIDTRW7S.js → register-operations-U5JAW3WE.js} +32 -32
  182. package/dist/cli-bundle/chunks/{register-setup-EG2U6CEU.js → register-setup-KBXQDCXE.js} +27 -18
  183. package/dist/cli-bundle/chunks/register-setup-KBXQDCXE.js.map +7 -0
  184. package/dist/cli-bundle/chunks/{register-setup-DYBFLEZX.js → register-setup-RCRUHMSZ.js} +28 -19
  185. package/dist/cli-bundle/chunks/register-setup-RCRUHMSZ.js.map +1 -0
  186. package/dist/cli-bundle/chunks/restore-2ZKT6UDC.js +19 -0
  187. package/dist/cli-bundle/chunks/{restore-XQYSWBV7.js → restore-6K53WOWO.js} +11 -11
  188. package/dist/cli-bundle/chunks/{scheduling-shortcuts-NNT5ASZR.js → scheduling-shortcuts-NJ5UVJFB.js} +14 -14
  189. package/dist/cli-bundle/chunks/{scheduling-shortcuts-HJMTEXKE.js → scheduling-shortcuts-OQVJXG3M.js} +14 -14
  190. package/dist/cli-bundle/chunks/{schema-263RI4WW.js → schema-MNTAVQCY.js} +9 -9
  191. package/dist/cli-bundle/chunks/{schema-TZXW6XWD.js → schema-RBTJ2YXW.js} +9 -9
  192. package/dist/cli-bundle/chunks/{search-SFRJOVDG.js → search-6HOIVZDU.js} +12 -12
  193. package/dist/cli-bundle/chunks/{search-LECJYSXE.js → search-ZWYEMASC.js} +12 -12
  194. package/dist/cli-bundle/chunks/{stats-N7ER2PNK.js → stats-FS742AMA.js} +8 -8
  195. package/dist/cli-bundle/chunks/{stats-VPBGSRQH.js → stats-R5OAJVZK.js} +8 -8
  196. package/dist/cli-bundle/chunks/{telemetry-PP3FUNBU.js → telemetry-7DIGDQUO.js} +4 -4
  197. package/dist/cli-bundle/chunks/{telemetry-L6K3BUIQ.js → telemetry-FWEXSJLQ.js} +4 -4
  198. package/dist/cli-bundle/chunks/{test-3EGNS3T5.js → test-NZF7OT2F.js} +16 -15
  199. package/dist/cli-bundle/chunks/test-QJXLKV26.js +36 -0
  200. package/dist/cli-bundle/chunks/{test-all-NJ5V2QFS.js → test-all-DPN62TX7.js} +16 -15
  201. package/dist/cli-bundle/chunks/{test-all-NJ5V2QFS.js.map → test-all-DPN62TX7.js.map} +1 -1
  202. package/dist/cli-bundle/chunks/{test-all-ZHFAWNC3.js → test-all-KL7TLMJF.js} +18 -17
  203. package/dist/cli-bundle/chunks/{test-all-ZHFAWNC3.js.map → test-all-KL7TLMJF.js.map} +1 -1
  204. package/dist/cli-bundle/chunks/{test-runs-GN3C6GOI.js → test-runs-C6CFIVOS.js} +5 -5
  205. package/dist/cli-bundle/chunks/{test-runs-AJHR6IQF.js → test-runs-IAJDL6CA.js} +5 -5
  206. package/dist/cli-bundle/chunks/update-2XCQNOD6.js +28 -0
  207. package/dist/cli-bundle/chunks/update-IWUCXVH2.js +24 -0
  208. package/dist/cli-bundle/chunks/{update-many-RYQ64CFW.js → update-many-MUTIOAP3.js} +23 -23
  209. package/dist/cli-bundle/chunks/{update-many-N2AN6ZDH.js → update-many-YEH2DQL6.js} +23 -23
  210. package/dist/cli-bundle/chunks/{upgrade-VPCIYAVW.js → upgrade-HYJ3SWWU.js} +8 -7
  211. package/dist/cli-bundle/chunks/{upgrade-VPCIYAVW.js.map → upgrade-HYJ3SWWU.js.map} +1 -1
  212. package/dist/cli-bundle/chunks/{upgrade-TJXFLZIX.js → upgrade-UBNLBZNR.js} +6 -5
  213. package/dist/cli-bundle/chunks/{upgrade-TJXFLZIX.js.map → upgrade-UBNLBZNR.js.map} +1 -1
  214. package/dist/cli-bundle/chunks/{validate-PHKIYGSY.js → validate-6QWQVCX2.js} +21 -20
  215. package/dist/cli-bundle/chunks/{validate-PHKIYGSY.js.map → validate-6QWQVCX2.js.map} +1 -1
  216. package/dist/cli-bundle/chunks/{validate-JMNWEUYF.js → validate-W5V5ZGQX.js} +23 -22
  217. package/dist/cli-bundle/chunks/{validate-JMNWEUYF.js.map → validate-W5V5ZGQX.js.map} +1 -1
  218. package/dist/cli-bundle/main.js +38 -22
  219. package/dist/cli-bundle/main.js.map +2 -2
  220. package/dist/cli.js +3 -3
  221. package/dist/cli.js.map +1 -1
  222. package/dist/core/extensions/activation-summary.d.ts +109 -0
  223. package/dist/core/extensions/activation-summary.js +60 -0
  224. package/dist/core/extensions/activation-summary.js.map +1 -0
  225. package/dist/core/extensions/capability-usage.d.ts +92 -0
  226. package/dist/core/extensions/capability-usage.js +142 -0
  227. package/dist/core/extensions/capability-usage.js.map +1 -0
  228. package/dist/core/extensions/extension-capability-aliases.d.ts +7 -0
  229. package/dist/core/extensions/extension-capability-aliases.js +12 -2
  230. package/dist/core/extensions/extension-capability-aliases.js.map +1 -1
  231. package/dist/core/extensions/index.d.ts +1 -0
  232. package/dist/core/extensions/index.js +3 -2
  233. package/dist/core/extensions/index.js.map +1 -1
  234. package/dist/core/telemetry/runtime.js +5 -2
  235. package/dist/core/telemetry/runtime.js.map +1 -1
  236. package/dist/sdk/cli-contracts/enum-contracts.d.ts +1 -1
  237. package/dist/sdk/cli-contracts/enum-contracts.js +4 -2
  238. package/dist/sdk/cli-contracts/enum-contracts.js.map +1 -1
  239. package/dist/sdk/cli-contracts.d.ts +2 -0
  240. package/dist/sdk/cli-contracts.js +26 -13
  241. package/dist/sdk/cli-contracts.js.map +1 -1
  242. package/dist/sdk/compose.d.ts +297 -0
  243. package/dist/sdk/compose.js +420 -0
  244. package/dist/sdk/compose.js.map +1 -0
  245. package/dist/sdk/define.d.ts +194 -0
  246. package/dist/sdk/define.js +205 -0
  247. package/dist/sdk/define.js.map +1 -0
  248. package/dist/sdk/index.d.ts +8 -26
  249. package/dist/sdk/index.js +8 -10
  250. package/dist/sdk/index.js.map +1 -1
  251. package/dist/sdk/testing.d.ts +667 -2
  252. package/dist/sdk/testing.js +654 -18
  253. package/dist/sdk/testing.js.map +1 -1
  254. package/docs/COMMANDS.md +1 -0
  255. package/docs/EXTENSIONS.md +10 -11
  256. package/docs/SDK.md +502 -16
  257. package/package.json +2 -2
  258. package/dist/cli-bundle/chunks/activity-CIHV64UC.js +0 -18
  259. package/dist/cli-bundle/chunks/chunk-32R4PIC6.js.map +0 -1
  260. package/dist/cli-bundle/chunks/chunk-434HM6Z5.js.map +0 -1
  261. package/dist/cli-bundle/chunks/chunk-5PCI3UBT.js.map +0 -7
  262. package/dist/cli-bundle/chunks/chunk-A4Z7ZOL5.js.map +0 -1
  263. package/dist/cli-bundle/chunks/chunk-HC4AWIKT.js.map +0 -7
  264. package/dist/cli-bundle/chunks/chunk-HMOADQVT.js.map +0 -7
  265. package/dist/cli-bundle/chunks/close-DNMHGOCX.js +0 -15
  266. package/dist/cli-bundle/chunks/contracts-3THOLA7L.js.map +0 -7
  267. package/dist/cli-bundle/chunks/contracts-N65FXEOL.js.map +0 -1
  268. package/dist/cli-bundle/chunks/create-NNP6TSFO.js +0 -30
  269. package/dist/cli-bundle/chunks/history-WX3MGFS2.js +0 -20
  270. package/dist/cli-bundle/chunks/history-redact-YQGU3XRA.js +0 -21
  271. package/dist/cli-bundle/chunks/init-SC2P6CHP.js +0 -20
  272. package/dist/cli-bundle/chunks/register-setup-DYBFLEZX.js.map +0 -1
  273. package/dist/cli-bundle/chunks/register-setup-EG2U6CEU.js.map +0 -7
  274. package/dist/cli-bundle/chunks/restore-5KHR2YYQ.js +0 -19
  275. package/dist/cli-bundle/chunks/test-RQCTSWUK.js +0 -35
  276. package/dist/cli-bundle/chunks/update-6YXOGHRT.js +0 -24
  277. package/dist/cli-bundle/chunks/update-V33YUBRP.js +0 -28
  278. /package/dist/cli-bundle/chunks/{activity-KW3IRP44.js.map → activity-H2LMOSSW.js.map} +0 -0
  279. /package/dist/cli-bundle/chunks/{activity-CIHV64UC.js.map → activity-XUZ2AHCW.js.map} +0 -0
  280. /package/dist/cli-bundle/chunks/{aggregate-3ZKQG5SW.js.map → aggregate-EGJLZQBI.js.map} +0 -0
  281. /package/dist/cli-bundle/chunks/{aggregate-FIGQEIL3.js.map → aggregate-R725FC3S.js.map} +0 -0
  282. /package/dist/cli-bundle/chunks/{append-EWJYJ7CH.js.map → append-5J345QGU.js.map} +0 -0
  283. /package/dist/cli-bundle/chunks/{append-QEOLX3XB.js.map → append-O5HPBMRN.js.map} +0 -0
  284. /package/dist/cli-bundle/chunks/{chunk-GOZUHWFD.js.map → chunk-2A34E3BA.js.map} +0 -0
  285. /package/dist/cli-bundle/chunks/{chunk-5QICDWMV.js.map → chunk-2CKH2LMV.js.map} +0 -0
  286. /package/dist/cli-bundle/chunks/{chunk-WQ7NIVDK.js.map → chunk-2RDVQEWV.js.map} +0 -0
  287. /package/dist/cli-bundle/chunks/{chunk-NSBZ2CKF.js.map → chunk-2T3JG6V4.js.map} +0 -0
  288. /package/dist/cli-bundle/chunks/{chunk-76Z3YSHV.js.map → chunk-34EONI5F.js.map} +0 -0
  289. /package/dist/cli-bundle/chunks/{chunk-PUH4D67U.js.map → chunk-3VY3YQO6.js.map} +0 -0
  290. /package/dist/cli-bundle/chunks/{chunk-N5ZJACJ6.js.map → chunk-46G6RSB6.js.map} +0 -0
  291. /package/dist/cli-bundle/chunks/{chunk-SRYYRVPB.js.map → chunk-4BHT5VDC.js.map} +0 -0
  292. /package/dist/cli-bundle/chunks/{chunk-PFSRUHDH.js.map → chunk-4KD54S3Z.js.map} +0 -0
  293. /package/dist/cli-bundle/chunks/{chunk-NIUEXCFS.js.map → chunk-5UVVASSA.js.map} +0 -0
  294. /package/dist/cli-bundle/chunks/{chunk-CF55WVVS.js.map → chunk-5VOINNKT.js.map} +0 -0
  295. /package/dist/cli-bundle/chunks/{chunk-NIGXMNNI.js.map → chunk-66MEDTUD.js.map} +0 -0
  296. /package/dist/cli-bundle/chunks/{chunk-AZMOLBN3.js.map → chunk-7AUB5HNA.js.map} +0 -0
  297. /package/dist/cli-bundle/chunks/{chunk-OTHIWLMB.js.map → chunk-7K2XXO4I.js.map} +0 -0
  298. /package/dist/cli-bundle/chunks/{chunk-7D3SAQXM.js.map → chunk-7MRQ4HMK.js.map} +0 -0
  299. /package/dist/cli-bundle/chunks/{chunk-EBH56IXK.js.map → chunk-7SV63ZHD.js.map} +0 -0
  300. /package/dist/cli-bundle/chunks/{chunk-OFYMIDF2.js.map → chunk-7UGEAPRY.js.map} +0 -0
  301. /package/dist/cli-bundle/chunks/{chunk-LUWW7L4B.js.map → chunk-7XGQXHFB.js.map} +0 -0
  302. /package/dist/cli-bundle/chunks/{chunk-UEMNL33O.js.map → chunk-AD3A7ZD6.js.map} +0 -0
  303. /package/dist/cli-bundle/chunks/{chunk-3EWSGA7N.js.map → chunk-AONIHR2C.js.map} +0 -0
  304. /package/dist/cli-bundle/chunks/{chunk-RVHYI7SL.js.map → chunk-BB6MDVNQ.js.map} +0 -0
  305. /package/dist/cli-bundle/chunks/{chunk-52OCIDPG.js.map → chunk-CE5P2NQR.js.map} +0 -0
  306. /package/dist/cli-bundle/chunks/{chunk-NXS7ZKAK.js.map → chunk-CIIK67GW.js.map} +0 -0
  307. /package/dist/cli-bundle/chunks/{chunk-NB3PYLQ6.js.map → chunk-DT5LPYOD.js.map} +0 -0
  308. /package/dist/cli-bundle/chunks/{chunk-37QXHBIB.js.map → chunk-FIGAZ4Y7.js.map} +0 -0
  309. /package/dist/cli-bundle/chunks/{chunk-UV6IYE5U.js.map → chunk-FXR67XVQ.js.map} +0 -0
  310. /package/dist/cli-bundle/chunks/{chunk-3MDHREEV.js.map → chunk-G6N5VEOK.js.map} +0 -0
  311. /package/dist/cli-bundle/chunks/{chunk-2GCDRRIF.js.map → chunk-GAJVRGGA.js.map} +0 -0
  312. /package/dist/cli-bundle/chunks/{chunk-HCU6WUSY.js.map → chunk-H2IP4QLJ.js.map} +0 -0
  313. /package/dist/cli-bundle/chunks/{chunk-CZUB4XWO.js.map → chunk-H4IIJDE4.js.map} +0 -0
  314. /package/dist/cli-bundle/chunks/{chunk-RLK7P77C.js.map → chunk-HFFUQR73.js.map} +0 -0
  315. /package/dist/cli-bundle/chunks/{chunk-6M4RJS4M.js.map → chunk-IB3GYLQE.js.map} +0 -0
  316. /package/dist/cli-bundle/chunks/{chunk-SX75ADBK.js.map → chunk-IPKJ6B36.js.map} +0 -0
  317. /package/dist/cli-bundle/chunks/{chunk-H7NJZWG2.js.map → chunk-JR2LV3M4.js.map} +0 -0
  318. /package/dist/cli-bundle/chunks/{chunk-PP2U4NMT.js.map → chunk-KFWBJPSG.js.map} +0 -0
  319. /package/dist/cli-bundle/chunks/{chunk-F7K5GWP3.js.map → chunk-LRKKONT2.js.map} +0 -0
  320. /package/dist/cli-bundle/chunks/{chunk-5IDI42VV.js.map → chunk-M4T5DXD5.js.map} +0 -0
  321. /package/dist/cli-bundle/chunks/{chunk-2PKHRP6G.js.map → chunk-MJTINN54.js.map} +0 -0
  322. /package/dist/cli-bundle/chunks/{chunk-QGG32QHW.js.map → chunk-NCVCO3NZ.js.map} +0 -0
  323. /package/dist/cli-bundle/chunks/{chunk-AIS5PGI3.js.map → chunk-NK3UPBVG.js.map} +0 -0
  324. /package/dist/cli-bundle/chunks/{chunk-6H4LF7AO.js.map → chunk-O6LLO73I.js.map} +0 -0
  325. /package/dist/cli-bundle/chunks/{chunk-YCJX76PW.js.map → chunk-P77P2ILI.js.map} +0 -0
  326. /package/dist/cli-bundle/chunks/{chunk-F5NZWFSW.js.map → chunk-Q2KNGP7C.js.map} +0 -0
  327. /package/dist/cli-bundle/chunks/{chunk-GMHPNNYG.js.map → chunk-QH3PJYON.js.map} +0 -0
  328. /package/dist/cli-bundle/chunks/{chunk-NJHMAJ6N.js.map → chunk-QL5RVYOA.js.map} +0 -0
  329. /package/dist/cli-bundle/chunks/{chunk-O47BPOPC.js.map → chunk-S26C36QC.js.map} +0 -0
  330. /package/dist/cli-bundle/chunks/{chunk-D7FYS6PG.js.map → chunk-S2RUQSX2.js.map} +0 -0
  331. /package/dist/cli-bundle/chunks/{chunk-CZPXY7UW.js.map → chunk-SBQTAVJZ.js.map} +0 -0
  332. /package/dist/cli-bundle/chunks/{chunk-M5XALUSL.js.map → chunk-SKH7OGE5.js.map} +0 -0
  333. /package/dist/cli-bundle/chunks/{chunk-NJN7LL7U.js.map → chunk-SKN7LC5W.js.map} +0 -0
  334. /package/dist/cli-bundle/chunks/{chunk-6ZXM2XNF.js.map → chunk-SR3EKWZG.js.map} +0 -0
  335. /package/dist/cli-bundle/chunks/{chunk-B473GZWW.js.map → chunk-T5472OMV.js.map} +0 -0
  336. /package/dist/cli-bundle/chunks/{chunk-2EIMPCE4.js.map → chunk-T72AZDBA.js.map} +0 -0
  337. /package/dist/cli-bundle/chunks/{chunk-6CJWZAN7.js.map → chunk-TQZH6OD6.js.map} +0 -0
  338. /package/dist/cli-bundle/chunks/{chunk-FWPDUYEY.js.map → chunk-U2Z5YUSO.js.map} +0 -0
  339. /package/dist/cli-bundle/chunks/{chunk-HIP7WVTL.js.map → chunk-UVC5LOR7.js.map} +0 -0
  340. /package/dist/cli-bundle/chunks/{chunk-LEU5GHRC.js.map → chunk-VAYA4XFX.js.map} +0 -0
  341. /package/dist/cli-bundle/chunks/{chunk-J4MYYSOL.js.map → chunk-VFAQ4LMN.js.map} +0 -0
  342. /package/dist/cli-bundle/chunks/{chunk-UPE3CDD7.js.map → chunk-W72GHSJE.js.map} +0 -0
  343. /package/dist/cli-bundle/chunks/{chunk-C4N5I7ZW.js.map → chunk-WBRKK5QR.js.map} +0 -0
  344. /package/dist/cli-bundle/chunks/{chunk-Z6T4PQI2.js.map → chunk-WM5ZVBPE.js.map} +0 -0
  345. /package/dist/cli-bundle/chunks/{chunk-TKBHZPKD.js.map → chunk-WZQWHN4R.js.map} +0 -0
  346. /package/dist/cli-bundle/chunks/{chunk-FKBDKV7Y.js.map → chunk-XVF4YARA.js.map} +0 -0
  347. /package/dist/cli-bundle/chunks/{chunk-QZTWBFXJ.js.map → chunk-YDEXO24S.js.map} +0 -0
  348. /package/dist/cli-bundle/chunks/{chunk-FRUFKWNK.js.map → chunk-YJ3SUEPD.js.map} +0 -0
  349. /package/dist/cli-bundle/chunks/{chunk-5FIEHKEX.js.map → chunk-YUDJD3XO.js.map} +0 -0
  350. /package/dist/cli-bundle/chunks/{chunk-Q2J2HJUN.js.map → chunk-ZQ3ZVXX2.js.map} +0 -0
  351. /package/dist/cli-bundle/chunks/{chunk-C3AZ5ZML.js.map → chunk-ZRK4O56R.js.map} +0 -0
  352. /package/dist/cli-bundle/chunks/{claim-RC56YUWG.js.map → claim-4KHAA2RN.js.map} +0 -0
  353. /package/dist/cli-bundle/chunks/{claim-THOJ6CMV.js.map → claim-CSPJFLNH.js.map} +0 -0
  354. /package/dist/cli-bundle/chunks/{close-DNMHGOCX.js.map → close-A3EMKBBY.js.map} +0 -0
  355. /package/dist/cli-bundle/chunks/{close-SG5MNCVQ.js.map → close-W56IOGYG.js.map} +0 -0
  356. /package/dist/cli-bundle/chunks/{close-many-3L3AQZBU.js.map → close-many-BX5DCSVV.js.map} +0 -0
  357. /package/dist/cli-bundle/chunks/{close-many-DKQLBGLV.js.map → close-many-TQU5F4E4.js.map} +0 -0
  358. /package/dist/cli-bundle/chunks/{comments-M7ZOZNBX.js.map → comments-U5KUC4EU.js.map} +0 -0
  359. /package/dist/cli-bundle/chunks/{comments-SKWMDWCW.js.map → comments-VRECH75R.js.map} +0 -0
  360. /package/dist/cli-bundle/chunks/{config-OZCUABPB.js.map → config-D3OKQO52.js.map} +0 -0
  361. /package/dist/cli-bundle/chunks/{config-7CK62S7T.js.map → config-MMJA4LLK.js.map} +0 -0
  362. /package/dist/cli-bundle/chunks/{context-PUG2A7RC.js.map → context-BLBD3PUB.js.map} +0 -0
  363. /package/dist/cli-bundle/chunks/{context-OEC366TO.js.map → context-DHLVPXN3.js.map} +0 -0
  364. /package/dist/cli-bundle/chunks/{copy-JPX7VZCH.js.map → copy-5D5DX3VK.js.map} +0 -0
  365. /package/dist/cli-bundle/chunks/{copy-6QLHILAC.js.map → copy-HHL3K4QP.js.map} +0 -0
  366. /package/dist/cli-bundle/chunks/{create-Y54ZVVZH.js.map → create-IXY43O4H.js.map} +0 -0
  367. /package/dist/cli-bundle/chunks/{create-NNP6TSFO.js.map → create-QVGFYA2X.js.map} +0 -0
  368. /package/dist/cli-bundle/chunks/{delete-63PCMQAJ.js.map → delete-IBUR3M42.js.map} +0 -0
  369. /package/dist/cli-bundle/chunks/{delete-GDSMGAGJ.js.map → delete-QQC2FGUH.js.map} +0 -0
  370. /package/dist/cli-bundle/chunks/{deps-XYQ73XRH.js.map → deps-KWKRHXIN.js.map} +0 -0
  371. /package/dist/cli-bundle/chunks/{deps-T4ZF5G54.js.map → deps-VTPO4BSE.js.map} +0 -0
  372. /package/dist/cli-bundle/chunks/{docs-EHNPDWUL.js.map → docs-7CHFHXLN.js.map} +0 -0
  373. /package/dist/cli-bundle/chunks/{docs-C75YIXHC.js.map → docs-IIO3FEUO.js.map} +0 -0
  374. /package/dist/cli-bundle/chunks/{eval-GTENKE24.js.map → eval-CEYYEPSX.js.map} +0 -0
  375. /package/dist/cli-bundle/chunks/{eval-3WKDTRMH.js.map → eval-IO7LREOL.js.map} +0 -0
  376. /package/dist/cli-bundle/chunks/{extension-D5FDZ2CO.js.map → extension-KCPUWSY2.js.map} +0 -0
  377. /package/dist/cli-bundle/chunks/{extension-46NWACO3.js.map → extension-UTTQDUYI.js.map} +0 -0
  378. /package/dist/cli-bundle/chunks/{files-X3H7CCBQ.js.map → files-TPUL6KWB.js.map} +0 -0
  379. /package/dist/cli-bundle/chunks/{files-DSZBOSSN.js.map → files-Z2HHEFGP.js.map} +0 -0
  380. /package/dist/cli-bundle/chunks/{focus-5STQXDPU.js.map → focus-JVJCGC2D.js.map} +0 -0
  381. /package/dist/cli-bundle/chunks/{focus-MDVPOWB5.js.map → focus-YRNNH7IP.js.map} +0 -0
  382. /package/dist/cli-bundle/chunks/{gc-ZMST3WQP.js.map → gc-O5GUO3SU.js.map} +0 -0
  383. /package/dist/cli-bundle/chunks/{gc-ZC7JHBG7.js.map → gc-PYVVEELM.js.map} +0 -0
  384. /package/dist/cli-bundle/chunks/{get-NT7L2HUZ.js.map → get-ENLTEGTX.js.map} +0 -0
  385. /package/dist/cli-bundle/chunks/{get-J2IPJRZW.js.map → get-X4O3HBEY.js.map} +0 -0
  386. /package/dist/cli-bundle/chunks/{history-RLH2QCRO.js.map → history-AJTXLT6S.js.map} +0 -0
  387. /package/dist/cli-bundle/chunks/{history-WX3MGFS2.js.map → history-AK3E5Z3C.js.map} +0 -0
  388. /package/dist/cli-bundle/chunks/{history-compact-UXDIFC33.js.map → history-compact-43OOUAWD.js.map} +0 -0
  389. /package/dist/cli-bundle/chunks/{history-compact-ZBEBGJM7.js.map → history-compact-46MRHW3I.js.map} +0 -0
  390. /package/dist/cli-bundle/chunks/{history-redact-P7I7AWMB.js.map → history-redact-KUUUVUFM.js.map} +0 -0
  391. /package/dist/cli-bundle/chunks/{history-redact-YQGU3XRA.js.map → history-redact-TWIYQV5J.js.map} +0 -0
  392. /package/dist/cli-bundle/chunks/{history-repair-52KINVIK.js.map → history-repair-B5PZBOPU.js.map} +0 -0
  393. /package/dist/cli-bundle/chunks/{history-repair-RM5ITLU5.js.map → history-repair-VQTYOSRS.js.map} +0 -0
  394. /package/dist/cli-bundle/chunks/{init-2BNZOO6F.js.map → init-BNLVFPRG.js.map} +0 -0
  395. /package/dist/cli-bundle/chunks/{init-SC2P6CHP.js.map → init-RCRKW5PL.js.map} +0 -0
  396. /package/dist/cli-bundle/chunks/{learnings-YGYVHWJK.js.map → learnings-MUUU5KMC.js.map} +0 -0
  397. /package/dist/cli-bundle/chunks/{learnings-W6F3FIPL.js.map → learnings-XSGX52S7.js.map} +0 -0
  398. /package/dist/cli-bundle/chunks/{list-K6FPV4J4.js.map → list-32U7BSKE.js.map} +0 -0
  399. /package/dist/cli-bundle/chunks/{list-KPAYU5KZ.js.map → list-ZEEOHLTQ.js.map} +0 -0
  400. /package/dist/cli-bundle/chunks/{notes-PU74EPKV.js.map → notes-NJ45OZGF.js.map} +0 -0
  401. /package/dist/cli-bundle/chunks/{notes-YTD6ZILW.js.map → notes-OHU25L3M.js.map} +0 -0
  402. /package/dist/cli-bundle/chunks/{plan-GEQYUCBW.js.map → plan-KQA7CAKI.js.map} +0 -0
  403. /package/dist/cli-bundle/chunks/{plan-FNXHXRCI.js.map → plan-LWWAEV5Y.js.map} +0 -0
  404. /package/dist/cli-bundle/chunks/{register-list-query-QI45RMKN.js.map → register-list-query-DDCHPONM.js.map} +0 -0
  405. /package/dist/cli-bundle/chunks/{register-list-query-PHWYHENI.js.map → register-list-query-YNPBVIKM.js.map} +0 -0
  406. /package/dist/cli-bundle/chunks/{register-mutation-YINRTS7L.js.map → register-mutation-7ALWDDAX.js.map} +0 -0
  407. /package/dist/cli-bundle/chunks/{register-mutation-X3BUOQEL.js.map → register-mutation-LAVKYY63.js.map} +0 -0
  408. /package/dist/cli-bundle/chunks/{register-operations-E5JEASRK.js.map → register-operations-R4VOQ6EF.js.map} +0 -0
  409. /package/dist/cli-bundle/chunks/{register-operations-MIDTRW7S.js.map → register-operations-U5JAW3WE.js.map} +0 -0
  410. /package/dist/cli-bundle/chunks/{restore-5KHR2YYQ.js.map → restore-2ZKT6UDC.js.map} +0 -0
  411. /package/dist/cli-bundle/chunks/{restore-XQYSWBV7.js.map → restore-6K53WOWO.js.map} +0 -0
  412. /package/dist/cli-bundle/chunks/{scheduling-shortcuts-NNT5ASZR.js.map → scheduling-shortcuts-NJ5UVJFB.js.map} +0 -0
  413. /package/dist/cli-bundle/chunks/{scheduling-shortcuts-HJMTEXKE.js.map → scheduling-shortcuts-OQVJXG3M.js.map} +0 -0
  414. /package/dist/cli-bundle/chunks/{schema-263RI4WW.js.map → schema-MNTAVQCY.js.map} +0 -0
  415. /package/dist/cli-bundle/chunks/{schema-TZXW6XWD.js.map → schema-RBTJ2YXW.js.map} +0 -0
  416. /package/dist/cli-bundle/chunks/{search-SFRJOVDG.js.map → search-6HOIVZDU.js.map} +0 -0
  417. /package/dist/cli-bundle/chunks/{search-LECJYSXE.js.map → search-ZWYEMASC.js.map} +0 -0
  418. /package/dist/cli-bundle/chunks/{stats-N7ER2PNK.js.map → stats-FS742AMA.js.map} +0 -0
  419. /package/dist/cli-bundle/chunks/{stats-VPBGSRQH.js.map → stats-R5OAJVZK.js.map} +0 -0
  420. /package/dist/cli-bundle/chunks/{telemetry-PP3FUNBU.js.map → telemetry-7DIGDQUO.js.map} +0 -0
  421. /package/dist/cli-bundle/chunks/{telemetry-L6K3BUIQ.js.map → telemetry-FWEXSJLQ.js.map} +0 -0
  422. /package/dist/cli-bundle/chunks/{test-3EGNS3T5.js.map → test-NZF7OT2F.js.map} +0 -0
  423. /package/dist/cli-bundle/chunks/{test-RQCTSWUK.js.map → test-QJXLKV26.js.map} +0 -0
  424. /package/dist/cli-bundle/chunks/{test-runs-GN3C6GOI.js.map → test-runs-C6CFIVOS.js.map} +0 -0
  425. /package/dist/cli-bundle/chunks/{test-runs-AJHR6IQF.js.map → test-runs-IAJDL6CA.js.map} +0 -0
  426. /package/dist/cli-bundle/chunks/{update-V33YUBRP.js.map → update-2XCQNOD6.js.map} +0 -0
  427. /package/dist/cli-bundle/chunks/{update-6YXOGHRT.js.map → update-IWUCXVH2.js.map} +0 -0
  428. /package/dist/cli-bundle/chunks/{update-many-RYQ64CFW.js.map → update-many-MUTIOAP3.js.map} +0 -0
  429. /package/dist/cli-bundle/chunks/{update-many-N2AN6ZDH.js.map → update-many-YEH2DQL6.js.map} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"extension.js","sources":["cli/commands/extension.ts"],"sourceRoot":"/","sourcesContent":["/**\n * @module cli/commands/extension\n *\n * Implements the pm extension command surface and its agent-facing runtime behavior.\n */\nimport { execFile } from \"node:child_process\";\nimport fs from \"node:fs/promises\";\nimport os from \"node:os\";\nimport path from \"node:path\";\nimport { promisify } from \"node:util\";\nimport { activateExtensions, loadExtensions, nextExtensionReloadToken } from \"../../core/extensions/index.js\";\nimport { resolveExtensionRoots } from \"../../core/extensions/loader.js\";\nimport { pathExists } from \"../../core/fs/fs-utils.js\";\nimport { isPathWithinDirectory } from \"../../core/fs/path-utils.js\";\nimport { collectPackageExtensionDirectories } from \"../../core/packages/manifest.js\";\nimport { EXIT_CODE } from \"../../core/shared/constants.js\";\nimport type { GlobalOptions } from \"../../core/shared/command-types.js\";\nimport { PmCliError } from \"../../core/shared/errors.js\";\nimport { nowIso } from \"../../core/shared/time.js\";\nimport { resolveGlobalPmRoot, resolvePmRoot } from \"../../core/store/paths.js\";\nimport { readSettings, writeSettings } from \"../../core/store/settings.js\";\nimport type { PmSettings } from \"../../types/index.js\";\n// Cohesive helper groups now live in ./extension/* sibling modules. They are\n// imported for the command wiring that stays here and re-exported below so\n// existing import sites (sdk barrels, upgrade.ts, tests) keep importing the\n// public surface (runExtension, managed-state read/write, install-source\n// parsing, …) from \"./extension.js\" unchanged.\nimport {\n normalizeStringList,\n normalizeExtensionNameForMatch,\n normalizeManagedDirectoryName,\n parseExtensionManifest,\n validateExtensionDirectory,\n} from \"./extension/shared.js\";\nimport {\n sortManagedEntries,\n managedExtensionSourcesEquivalent,\n readManagedExtensionState,\n writeManagedExtensionState,\n upsertManagedEntry,\n resolveManagedExtensionStatePath,\n type ManagedExtensionSource,\n type ManagedExtensionRecord,\n type ManagedExtensionState,\n} from \"./extension/managed-state.js\";\nimport {\n parseExtensionInstallSource,\n resolveInstallSource,\n areDirectoriesEquivalent,\n runGitCommand,\n} from \"./extension/install-sources.js\";\nimport {\n resolveBundledExtensionAliasSource,\n isBundledPackageInstallAllTarget,\n listBundledPackageAliases,\n resolveBundledAliasManifestName,\n buildBundledPackageCatalog,\n} from \"./extension/bundled-catalog.js\";\nimport { scaffoldExtensionProject } from \"./extension/scaffold.js\";\nimport {\n applyDoctorRuntimeActivationState,\n classifyDoctorLoadFailureWarnings,\n classifyDoctorActivationFailureWarnings,\n buildExtensionTriageSummary,\n parseDoctorDetailMode,\n collectUnknownCapabilityGuidance,\n buildCapabilityContractMetadata,\n buildDoctorConsistencySummary,\n} from \"./extension/doctor.js\";\n// Re-export the public surface that lives in sibling modules but was previously\n// exported from this file (used by sdk barrels, upgrade.ts, and tests).\nexport {\n parseExtensionManifest,\n validateExtensionDirectory,\n readManagedExtensionState,\n writeManagedExtensionState,\n resolveManagedExtensionStatePath,\n parseExtensionInstallSource,\n};\nexport type {\n ManagedExtensionSource,\n ManagedExtensionRecord,\n ManagedExtensionState,\n};\nexport type { ManagedExtensionStateReadResult } from \"./extension/managed-state.js\";\n\nconst execFileAsync = promisify(execFile);\nconst EXTENSION_INSTALL_COPY_ATTEMPTS = 3;\nconst EXTENSION_INSTALL_LOCK_ATTEMPTS = 120;\nconst EXTENSION_INSTALL_LOCK_DELAY_MS = 250;\nconst EXTENSION_INSTALL_LOCK_STALE_MS = 120_000;\n\n/**\n * Restricts extension command action values accepted by command, SDK, and storage contracts.\n */\nexport type ExtensionCommandAction =\n | \"install\"\n | \"uninstall\"\n | \"explore\"\n | \"manage\"\n | \"reload\"\n | \"doctor\"\n | \"catalog\"\n | \"adopt\"\n | \"adopt-all\"\n | \"activate\"\n | \"deactivate\"\n | \"init\";\n/**\n * Restricts extension scope values accepted by command, SDK, and storage contracts.\n */\nexport type ExtensionScope = \"project\" | \"global\";\n/**\n * Restricts extension activation status values accepted by command, SDK, and storage contracts.\n */\nexport type ExtensionActivationStatus = \"ok\" | \"failed\" | \"not_loaded\" | \"unknown\";\n\n/**\n * Documents the extension command options payload exchanged by command, SDK, and package integrations.\n */\nexport interface ExtensionCommandOptions {\n install?: boolean;\n uninstall?: boolean;\n explore?: boolean;\n manage?: boolean;\n reload?: boolean;\n doctor?: boolean;\n catalog?: boolean;\n init?: boolean;\n scaffold?: boolean;\n strictExit?: boolean;\n failOnWarn?: boolean;\n adopt?: boolean;\n adoptAll?: boolean;\n activate?: boolean;\n deactivate?: boolean;\n project?: boolean;\n local?: boolean;\n global?: boolean;\n gh?: string;\n github?: string;\n ref?: string;\n detail?: string;\n trace?: boolean;\n watch?: boolean;\n runtimeProbe?: boolean;\n fixManagedState?: boolean;\n fields?: string;\n vocabulary?: \"extension\" | \"package\";\n}\n\n/**\n * Documents the managed extension summary payload exchanged by command, SDK, and package integrations.\n */\nexport interface ManagedExtensionSummary {\n name: string;\n directory: string;\n version: string;\n entry: string;\n scope: ExtensionScope;\n // Backward-compatible alias for configured enabled state. Prefer `enabled`.\n active: boolean;\n enabled: boolean;\n runtime_active: boolean | null;\n activation_status: ExtensionActivationStatus;\n command_paths?: string[];\n action_paths?: string[];\n managed: boolean;\n source?: ManagedExtensionSource;\n update_available?: boolean | null;\n last_update_check_at?: string;\n last_update_remote_commit?: string;\n update_error?: string;\n update_check_status: ExtensionUpdateCheckStatus;\n update_check_reason: string;\n}\n\n/**\n * Documents the extension command result payload exchanged by command, SDK, and package integrations.\n */\nexport interface ExtensionCommandResult {\n ok: boolean;\n action: ExtensionCommandAction;\n scope: ExtensionScope;\n roots: {\n project: string;\n global: string;\n selected: string;\n settings_root: string;\n };\n warnings: string[];\n details: Record<string, unknown>;\n}\n\nconst NATIVE_OUTPUT_MARKER = \"__pm_native_output\";\n\n/**\n * Documents the extension triage summary payload exchanged by command, SDK, and package integrations.\n */\nexport interface ExtensionTriageSummary {\n status: \"ok\" | \"warn\";\n warning_count: number;\n warning_codes: string[];\n warnings: string[];\n policy_warning_count: number;\n policy_violation_count: number;\n policy_blocked_count: number;\n total_extensions: number;\n managed_total: number;\n enabled_total: number;\n active_total: number;\n update_available_total: number;\n update_health_coverage: \"full\" | \"partial\";\n update_health_partial: boolean;\n unmanaged_loaded_extension_count: number;\n unmanaged_loaded_extensions: string[];\n unmanaged_expected_extension_count: number;\n unmanaged_expected_extensions: string[];\n unmanaged_action_required_extension_count: number;\n unmanaged_action_required_extensions: string[];\n update_check_status_totals: Record<ExtensionUpdateCheckStatus, number>;\n update_check_failed_total: number;\n top_warnings: string[];\n remediation: string[];\n collision_plan?: ExtensionCollisionPlan;\n}\n\n/**\n * Documents the extension collision plan payload exchanged by command, SDK, and package integrations.\n */\nexport interface ExtensionCollisionPlan {\n status: \"ok\" | \"conflicts_detected\";\n collision_count: number;\n extension_count: number;\n next_best_command: string;\n collisions: Array<{\n code: string;\n surface: string;\n winner: { layer: ExtensionScope; name: string };\n displaced: { layer: ExtensionScope; name: string };\n }>;\n remediation_candidates: Array<{\n action: \"deactivate\";\n extension: string;\n command: string;\n affected_collisions: number;\n feature_loss: {\n command_paths: string[];\n action_paths: string[];\n };\n }>;\n}\n\n/**\n * Restricts extension update check status values accepted by command, SDK, and storage contracts.\n */\nexport type ExtensionUpdateCheckStatus = \"checked\" | \"skipped_unmanaged\" | \"skipped_non_github\" | \"failed\" | \"not_checked\";\n\ninterface ExtensionUpdateCheckResolution {\n status: ExtensionUpdateCheckStatus;\n reason: string;\n}\n\n/**\n * Restricts extension doctor detail mode values accepted by command, SDK, and storage contracts.\n */\nexport type ExtensionDoctorDetailMode = \"summary\" | \"deep\";\nfunction buildExtensionPolicyDetails(policy: PmSettings[\"extensions\"][\"policy\"]): {\n mode: \"off\" | \"warn\" | \"enforce\";\n trust_mode: \"off\" | \"warn\" | \"enforce\";\n require_provenance: boolean;\n trusted_extensions: string[];\n default_sandbox_profile: \"none\" | \"restricted\" | \"strict\";\n allowed_extensions: string[];\n blocked_extensions: string[];\n allowed_capabilities: string[];\n blocked_capabilities: string[];\n allowed_surfaces: string[];\n blocked_surfaces: string[];\n allowed_commands: string[];\n blocked_commands: string[];\n allowed_actions: string[];\n blocked_actions: string[];\n allowed_services: string[];\n blocked_services: string[];\n extension_overrides: Array<{\n name: string;\n disabled?: boolean;\n require_trusted?: boolean;\n require_provenance?: boolean;\n sandbox_profile?: \"none\" | \"restricted\" | \"strict\";\n allowed_capabilities?: string[];\n blocked_capabilities?: string[];\n allowed_surfaces?: string[];\n blocked_surfaces?: string[];\n allowed_commands?: string[];\n blocked_commands?: string[];\n allowed_actions?: string[];\n blocked_actions?: string[];\n allowed_services?: string[];\n blocked_services?: string[];\n }>;\n} {\n const overrides = (policy.extension_overrides ?? [])\n .map((override) => ({\n name: override.name.trim(),\n disabled: override.disabled === true ? true : undefined,\n require_trusted: override.require_trusted === true ? true : undefined,\n require_provenance: override.require_provenance === true ? true : undefined,\n sandbox_profile: override.sandbox_profile,\n allowed_capabilities: normalizeStringList(override.allowed_capabilities ?? []),\n blocked_capabilities: normalizeStringList(override.blocked_capabilities ?? []),\n allowed_surfaces: normalizeStringList(override.allowed_surfaces ?? []),\n blocked_surfaces: normalizeStringList(override.blocked_surfaces ?? []),\n allowed_commands: normalizeStringList(override.allowed_commands ?? []),\n blocked_commands: normalizeStringList(override.blocked_commands ?? []),\n allowed_actions: normalizeStringList(override.allowed_actions ?? []),\n blocked_actions: normalizeStringList(override.blocked_actions ?? []),\n allowed_services: normalizeStringList(override.allowed_services ?? []),\n blocked_services: normalizeStringList(override.blocked_services ?? []),\n }))\n .filter((override) => override.name.length > 0)\n .sort((left, right) => left.name.localeCompare(right.name));\n return {\n mode: policy.mode,\n trust_mode: policy.trust_mode,\n require_provenance: policy.require_provenance === true,\n trusted_extensions: normalizeStringList(policy.trusted_extensions ?? []),\n default_sandbox_profile: policy.default_sandbox_profile ?? \"none\",\n allowed_extensions: normalizeStringList(policy.allowed_extensions ?? []),\n blocked_extensions: normalizeStringList(policy.blocked_extensions ?? []),\n allowed_capabilities: normalizeStringList(policy.allowed_capabilities ?? []),\n blocked_capabilities: normalizeStringList(policy.blocked_capabilities ?? []),\n allowed_surfaces: normalizeStringList(policy.allowed_surfaces ?? []),\n blocked_surfaces: normalizeStringList(policy.blocked_surfaces ?? []),\n allowed_commands: normalizeStringList(policy.allowed_commands ?? []),\n blocked_commands: normalizeStringList(policy.blocked_commands ?? []),\n allowed_actions: normalizeStringList(policy.allowed_actions ?? []),\n blocked_actions: normalizeStringList(policy.blocked_actions ?? []),\n allowed_services: normalizeStringList(policy.allowed_services ?? []),\n blocked_services: normalizeStringList(policy.blocked_services ?? []),\n extension_overrides: overrides.map((override) => ({\n name: override.name,\n ...(override.disabled === true ? { disabled: true } : {}),\n ...(override.require_trusted === true ? { require_trusted: true } : {}),\n ...(override.require_provenance === true ? { require_provenance: true } : {}),\n ...(override.sandbox_profile ? { sandbox_profile: override.sandbox_profile } : {}),\n ...(override.allowed_capabilities.length > 0 ? { allowed_capabilities: override.allowed_capabilities } : {}),\n ...(override.blocked_capabilities.length > 0 ? { blocked_capabilities: override.blocked_capabilities } : {}),\n ...(override.allowed_surfaces.length > 0 ? { allowed_surfaces: override.allowed_surfaces } : {}),\n ...(override.blocked_surfaces.length > 0 ? { blocked_surfaces: override.blocked_surfaces } : {}),\n ...(override.allowed_commands.length > 0 ? { allowed_commands: override.allowed_commands } : {}),\n ...(override.blocked_commands.length > 0 ? { blocked_commands: override.blocked_commands } : {}),\n ...(override.allowed_actions.length > 0 ? { allowed_actions: override.allowed_actions } : {}),\n ...(override.blocked_actions.length > 0 ? { blocked_actions: override.blocked_actions } : {}),\n ...(override.allowed_services.length > 0 ? { allowed_services: override.allowed_services } : {}),\n ...(override.blocked_services.length > 0 ? { blocked_services: override.blocked_services } : {}),\n })),\n };\n}\n\nfunction isRetriableExtensionInstallCopyError(error: unknown): boolean {\n if (typeof error !== \"object\" || error === null || !(\"code\" in error)) {\n return false;\n }\n const code = (error as { code?: unknown }).code;\n return code === \"EEXIST\" || code === \"ENOTEMPTY\" || code === \"ENOENT\";\n}\n\nfunction isErrnoCode(error: unknown, code: string): boolean {\n return typeof error === \"object\" && error !== null && \"code\" in error && (error as { code?: unknown }).code === code;\n}\n\nfunction sleep(ms: number): Promise<void> {\n return new Promise((resolve) => {\n setTimeout(resolve, ms);\n });\n}\n\n/**\n * Implements copy extension directory for install for the public runtime surface of this module.\n */\nexport async function copyExtensionDirectoryForInstall(\n sourceDirectory: string,\n destinationDirectory: string,\n copyDirectory: typeof fs.cp = fs.cp,\n): Promise<void> {\n for (let attempt = 1; attempt <= EXTENSION_INSTALL_COPY_ATTEMPTS; attempt += 1) {\n try {\n if (await pathExists(destinationDirectory)) {\n await fs.rm(destinationDirectory, { recursive: true, force: true });\n }\n await copyExtensionDirectoryWithoutSelfNesting(sourceDirectory, destinationDirectory, copyDirectory);\n return;\n } catch (error: unknown) {\n if (!isRetriableExtensionInstallCopyError(error) || attempt === EXTENSION_INSTALL_COPY_ATTEMPTS) {\n throw error;\n }\n await sleep(EXTENSION_INSTALL_LOCK_DELAY_MS);\n }\n }\n}\n\nasync function copyExtensionDirectoryWithoutSelfNesting(\n sourceDirectory: string,\n destinationDirectory: string,\n copyDirectory: typeof fs.cp,\n): Promise<void> {\n const resolvedSource = path.resolve(sourceDirectory);\n const resolvedDestination = path.resolve(destinationDirectory);\n if (resolvedSource === resolvedDestination) {\n return;\n }\n if (!isPathWithinDirectory(resolvedSource, resolvedDestination)) {\n await copyDirectory(sourceDirectory, destinationDirectory, { recursive: true, force: true });\n return;\n }\n\n const stagingRoot = await fs.mkdtemp(path.join(os.tmpdir(), \"pm-extension-copy-\"));\n const stagedDirectory = path.join(stagingRoot, \"extension\");\n try {\n await copyDirectory(sourceDirectory, stagedDirectory, { recursive: true, force: true });\n await copyDirectory(stagedDirectory, destinationDirectory, { recursive: true, force: true });\n } finally {\n await fs.rm(stagingRoot, { recursive: true, force: true });\n }\n}\n\nasync function withExtensionInstallLock<T>(\n settingsRoot: string,\n destinationDirectoryName: string,\n run: () => Promise<T>,\n options?: {\n attempts?: number;\n delay_ms?: number;\n stale_ms?: number;\n },\n): Promise<T> {\n const lockRoot = path.join(settingsRoot, \"runtime\", \"extension-install-locks\");\n const lockPath = path.join(lockRoot, `${destinationDirectoryName}.lock`);\n await fs.mkdir(lockRoot, { recursive: true });\n const attempts = Math.max(1, Math.floor(options?.attempts ?? EXTENSION_INSTALL_LOCK_ATTEMPTS));\n const delayMs = Math.max(0, Math.floor(options?.delay_ms ?? EXTENSION_INSTALL_LOCK_DELAY_MS));\n const staleMs = Math.max(0, Math.floor(options?.stale_ms ?? EXTENSION_INSTALL_LOCK_STALE_MS));\n\n let acquired = false;\n for (let attempt = 1; attempt <= attempts; attempt += 1) {\n try {\n await fs.mkdir(lockPath);\n acquired = true;\n await fs.writeFile(\n path.join(lockPath, \"owner.json\"),\n `${JSON.stringify({ pid: process.pid, created_at: nowIso(), destination: destinationDirectoryName }, null, 2)}\\n`,\n \"utf8\",\n );\n break;\n } catch (error: unknown) {\n if (!isErrnoCode(error, \"EEXIST\")) {\n throw error;\n }\n let stat: Awaited<ReturnType<typeof fs.stat>> | null = null;\n try {\n stat = await fs.stat(lockPath);\n } catch {\n stat = null;\n }\n if (stat && Date.now() - stat.mtimeMs > staleMs) {\n await fs.rm(lockPath, { recursive: true, force: true });\n continue;\n }\n await sleep(delayMs);\n }\n }\n\n if (!acquired) {\n throw new PmCliError(\n `Timed out waiting for extension install lock for \"${destinationDirectoryName}\".`,\n EXIT_CODE.CONFLICT,\n );\n }\n\n try {\n return await run();\n } finally {\n await fs.rm(lockPath, { recursive: true, force: true }).catch(() => undefined);\n }\n}\n\nasync function resolveInstalledExtensionCandidate(\n installed: ManagedExtensionSummary[],\n extensionTarget: string,\n): Promise<ManagedExtensionSummary | undefined> {\n const lookupValues = [extensionTarget];\n const bundledAliasManifestName = await resolveBundledAliasManifestName(extensionTarget);\n if (bundledAliasManifestName) {\n lookupValues.push(bundledAliasManifestName);\n }\n const normalizedLookups = [...new Set(lookupValues.map((value) => normalizeExtensionNameForMatch(value)).filter((value) => value.length > 0))];\n for (const lookup of normalizedLookups) {\n const byName = installed.find((entry) => normalizeExtensionNameForMatch(entry.name) === lookup);\n if (byName) {\n return byName;\n }\n const byDirectory = installed.find((entry) => normalizeExtensionNameForMatch(entry.directory) === lookup);\n if (byDirectory) {\n return byDirectory;\n }\n }\n return undefined;\n}\n\nfunction isExtensionEnabled(settings: PmSettings, name: string): boolean {\n const normalizedName = name.trim();\n const enabled = new Set(normalizeStringList(settings.extensions.enabled));\n const disabled = new Set(normalizeStringList(settings.extensions.disabled));\n if (disabled.has(normalizedName)) {\n return false;\n }\n if (enabled.size === 0) {\n return true;\n }\n return enabled.has(normalizedName);\n}\n\nfunction ensureActivated(settings: PmSettings, name: string): boolean {\n const normalizedName = name.trim();\n const enabled = new Set(normalizeStringList(settings.extensions.enabled));\n const disabled = new Set(normalizeStringList(settings.extensions.disabled));\n const previousEnabled = [...enabled];\n const previousDisabled = [...disabled];\n disabled.delete(normalizedName);\n if (enabled.size > 0) {\n enabled.add(normalizedName);\n }\n settings.extensions.enabled = [...enabled].sort((left, right) => left.localeCompare(right));\n settings.extensions.disabled = [...disabled].sort((left, right) => left.localeCompare(right));\n return (\n settings.extensions.enabled.join(\"\\u0000\") !== previousEnabled.join(\"\\u0000\") ||\n settings.extensions.disabled.join(\"\\u0000\") !== previousDisabled.join(\"\\u0000\")\n );\n}\n\nfunction ensureDeactivated(settings: PmSettings, name: string): boolean {\n const normalizedName = name.trim();\n const enabled = new Set(normalizeStringList(settings.extensions.enabled));\n const disabled = new Set(normalizeStringList(settings.extensions.disabled));\n const previousEnabled = [...enabled];\n const previousDisabled = [...disabled];\n enabled.delete(normalizedName);\n disabled.add(normalizedName);\n settings.extensions.enabled = [...enabled].sort((left, right) => left.localeCompare(right));\n settings.extensions.disabled = [...disabled].sort((left, right) => left.localeCompare(right));\n return (\n settings.extensions.enabled.join(\"\\u0000\") !== previousEnabled.join(\"\\u0000\") ||\n settings.extensions.disabled.join(\"\\u0000\") !== previousDisabled.join(\"\\u0000\")\n );\n}\n\nfunction clearExtensionState(settings: PmSettings, name: string): boolean {\n const normalizedName = name.trim();\n const enabled = new Set(normalizeStringList(settings.extensions.enabled));\n const disabled = new Set(normalizeStringList(settings.extensions.disabled));\n const previousEnabled = [...enabled];\n const previousDisabled = [...disabled];\n enabled.delete(normalizedName);\n disabled.delete(normalizedName);\n settings.extensions.enabled = [...enabled].sort((left, right) => left.localeCompare(right));\n settings.extensions.disabled = [...disabled].sort((left, right) => left.localeCompare(right));\n return (\n settings.extensions.enabled.join(\"\\u0000\") !== previousEnabled.join(\"\\u0000\") ||\n settings.extensions.disabled.join(\"\\u0000\") !== previousDisabled.join(\"\\u0000\")\n );\n}\n\nfunction resolveAction(target: string | undefined, options: ExtensionCommandOptions): ExtensionCommandAction {\n const selected = [...new Set([\n options.install ? \"install\" : null,\n options.uninstall ? \"uninstall\" : null,\n options.explore ? \"explore\" : null,\n options.manage ? \"manage\" : null,\n options.reload ? \"reload\" : null,\n options.doctor ? \"doctor\" : null,\n options.catalog ? \"catalog\" : null,\n options.init ? \"init\" : null,\n options.scaffold ? \"init\" : null,\n options.adopt ? \"adopt\" : null,\n options.adoptAll ? \"adopt-all\" : null,\n options.activate ? \"activate\" : null,\n options.deactivate ? \"deactivate\" : null,\n ].filter((value): value is ExtensionCommandAction => value !== null))];\n if (selected.length === 0) {\n if (typeof target === \"string\" && target.trim().toLowerCase() === \"doctor\") {\n return \"doctor\";\n }\n if (typeof target === \"string\" && target.trim().toLowerCase() === \"reload\") {\n return \"reload\";\n }\n if (typeof target === \"string\" && target.trim().toLowerCase() === \"catalog\") {\n return \"catalog\";\n }\n if (typeof target === \"string\" && (target.trim().toLowerCase() === \"init\" || target.trim().toLowerCase() === \"scaffold\")) {\n return \"init\";\n }\n if (typeof target === \"string\" && target.trim().toLowerCase() === \"explore\") {\n return \"explore\";\n }\n if (typeof target === \"string\" && target.trim().toLowerCase() === \"manage\") {\n return \"manage\";\n }\n if (typeof target === \"string\" && (target.trim().toLowerCase() === \"list\" || target.trim() === \"\")) {\n return \"explore\";\n }\n if (target === undefined) {\n return \"explore\";\n }\n throw new PmCliError(\n \"One action flag is required. Use one of: --install, --uninstall, --explore, --manage, --reload, --doctor, --catalog, --init/--scaffold, --adopt, --adopt-all, --activate, --deactivate. Bare `pm package` and `pm extension` default to --explore.\",\n EXIT_CODE.USAGE,\n );\n }\n if (selected.length > 1) {\n throw new PmCliError(\"Extension action flags are mutually exclusive.\", EXIT_CODE.USAGE);\n }\n return selected[0];\n}\n\nfunction resolveScope(options: ExtensionCommandOptions): ExtensionScope {\n const projectLike = options.project === true || options.local === true;\n const global = options.global === true;\n if (projectLike && global) {\n throw new PmCliError('Options \"--project/--local\" and \"--global\" are mutually exclusive.', EXIT_CODE.USAGE);\n }\n return global ? \"global\" : \"project\";\n}\nfunction resolveUpdateCheckResolution(managedEntry: ManagedExtensionRecord | undefined): ExtensionUpdateCheckResolution {\n if (!managedEntry) {\n return {\n status: \"skipped_unmanaged\",\n reason: \"extension_not_managed\",\n };\n }\n if (managedEntry.source.kind !== \"github\") {\n return {\n status: \"skipped_non_github\",\n reason: `managed_source_kind_${managedEntry.source.kind}`,\n };\n }\n const updateError = typeof managedEntry.update_error === \"string\" ? managedEntry.update_error.trim() : \"\";\n if (updateError.length > 0) {\n return {\n status: \"failed\",\n reason: updateError,\n };\n }\n if (typeof managedEntry.last_update_check_at === \"string\" && managedEntry.last_update_check_at.trim().length > 0) {\n if (managedEntry.update_available === true) {\n return {\n status: \"checked\",\n reason: \"update_available\",\n };\n }\n if (managedEntry.update_available === false) {\n return {\n status: \"checked\",\n reason: \"up_to_date\",\n };\n }\n return {\n status: \"checked\",\n reason: \"checked_without_commit_baseline\",\n };\n }\n return {\n status: \"not_checked\",\n reason: \"no_update_check_recorded\",\n };\n}\n\nasync function listInstalledExtensions(\n extensionsRoot: string,\n scope: ExtensionScope,\n settings: PmSettings,\n state: ManagedExtensionState,\n): Promise<{ extensions: ManagedExtensionSummary[]; warnings: string[] }> {\n if (!(await pathExists(extensionsRoot))) {\n return {\n extensions: [],\n warnings: [],\n };\n }\n\n const entries = await fs.readdir(extensionsRoot, { withFileTypes: true });\n const directories = entries\n .filter((entry) => entry.isDirectory())\n .map((entry) => entry.name)\n .sort((left, right) => left.localeCompare(right));\n\n const managedByName = new Map<string, ManagedExtensionRecord>();\n const managedByDirectory = new Map<string, ManagedExtensionRecord>();\n for (const managedEntry of state.entries) {\n managedByName.set(normalizeExtensionNameForMatch(managedEntry.name), managedEntry);\n managedByDirectory.set(normalizeExtensionNameForMatch(managedEntry.directory), managedEntry);\n }\n\n const warnings: string[] = [];\n const summaries: ManagedExtensionSummary[] = [];\n for (const directoryName of directories) {\n const extensionDirectory = path.join(extensionsRoot, directoryName);\n const manifestPath = path.join(extensionDirectory, \"manifest.json\");\n if (!(await pathExists(manifestPath))) {\n warnings.push(`extension_manifest_missing:${scope}:${directoryName}`);\n const managedEntry = managedByDirectory.get(normalizeExtensionNameForMatch(directoryName));\n const updateCheck = resolveUpdateCheckResolution(managedEntry);\n const enabled = managedEntry ? isExtensionEnabled(settings, managedEntry.name) : false;\n summaries.push({\n name: managedEntry?.name ?? directoryName,\n directory: directoryName,\n version: managedEntry?.manifest_version ?? \"unknown\",\n entry: managedEntry?.manifest_entry ?? \"unknown\",\n scope,\n active: enabled,\n enabled,\n runtime_active: null,\n activation_status: \"unknown\",\n managed: Boolean(managedEntry),\n source: managedEntry?.source,\n update_available: managedEntry?.update_available,\n last_update_check_at: managedEntry?.last_update_check_at,\n last_update_remote_commit: managedEntry?.last_update_remote_commit,\n update_error: managedEntry?.update_error,\n update_check_status: updateCheck.status,\n update_check_reason: updateCheck.reason,\n });\n continue;\n }\n\n let rawManifest: unknown;\n try {\n rawManifest = JSON.parse(await fs.readFile(manifestPath, \"utf8\")) as unknown;\n } catch {\n warnings.push(`extension_manifest_invalid_json:${scope}:${directoryName}`);\n continue;\n }\n const manifest = parseExtensionManifest(rawManifest);\n if (!manifest) {\n warnings.push(`extension_manifest_invalid:${scope}:${directoryName}`);\n continue;\n }\n const managedEntry =\n managedByName.get(normalizeExtensionNameForMatch(manifest.name)) ??\n managedByDirectory.get(normalizeExtensionNameForMatch(directoryName));\n const updateCheck = resolveUpdateCheckResolution(managedEntry);\n const enabled = isExtensionEnabled(settings, manifest.name);\n summaries.push({\n name: manifest.name,\n directory: directoryName,\n version: manifest.version,\n entry: manifest.entry,\n scope,\n active: enabled,\n enabled,\n runtime_active: null,\n activation_status: \"unknown\",\n managed: Boolean(managedEntry),\n source: managedEntry?.source,\n update_available: managedEntry?.update_available,\n last_update_check_at: managedEntry?.last_update_check_at,\n last_update_remote_commit: managedEntry?.last_update_remote_commit,\n update_error: managedEntry?.update_error,\n update_check_status: updateCheck.status,\n update_check_reason: updateCheck.reason,\n });\n }\n return {\n extensions: summaries.sort((left, right) => left.name.localeCompare(right.name)),\n warnings: warnings.sort((left, right) => left.localeCompare(right)),\n };\n}\ninterface GithubUpdateStatus {\n checked_at: string;\n available: boolean | null;\n remote_commit?: string;\n error?: string;\n}\ntype ActivationFailureEntry = Awaited<ReturnType<typeof activateExtensions>>[\"failed\"][number];\n\ninterface ActivationFailureDiagnostic {\n layer: string;\n name: string;\n entry_path: string;\n error: string;\n missing_capability?: string;\n hint?: string;\n trace?: {\n method: string;\n registration_index: number;\n expected_schema: string;\n command?: string;\n capability?: string;\n missing_capability?: string;\n hint?: string;\n };\n}\n\nfunction summarizeRuntimeCommandPathsForExtension(\n extensionName: string,\n installed: ManagedExtensionSummary[],\n): { command_paths: string[]; action_paths: string[] } {\n const normalizedName = normalizeExtensionNameForMatch(extensionName);\n const entry = installed.find((candidate) => normalizeExtensionNameForMatch(candidate.name) === normalizedName);\n return {\n command_paths: [...(entry?.command_paths ?? [])].sort((left, right) => left.localeCompare(right)),\n action_paths: [...(entry?.action_paths ?? [])].sort((left, right) => left.localeCompare(right)),\n };\n}\n\nfunction resolveCommandDiscoveryPackageName(extensionName: string, source: ManagedExtensionSource): string {\n if (source.kind === \"npm\" && typeof source.package === \"string\" && source.package.trim().length > 0) {\n return source.package.trim();\n }\n if (source.kind === \"builtin\" && typeof source.name === \"string\" && source.name.trim().length > 0) {\n return source.name.trim();\n }\n return extensionName;\n}\n\nfunction buildInstallCommandDiscovery(\n extensionName: string,\n source: ManagedExtensionSource,\n commandSummary: { command_paths: string[]; action_paths: string[] },\n): Record<string, unknown> {\n const helpCommands = commandSummary.command_paths.map((commandPath) => `pm ${commandPath} --help`);\n return {\n package_name: resolveCommandDiscoveryPackageName(extensionName, source),\n extension_name: extensionName,\n command_paths: commandSummary.command_paths,\n action_paths: commandSummary.action_paths,\n help_commands: helpCommands,\n next_steps:\n commandSummary.command_paths.length > 0\n ? helpCommands\n : [\"Run pm package doctor --project --detail deep if expected package commands are missing.\"],\n };\n}\n\nfunction summarizeActivationFailureForDiagnostics(failure: ActivationFailureEntry): ActivationFailureDiagnostic {\n const trace = failure.trace\n ? {\n method: failure.trace.method,\n registration_index: failure.trace.registration_index,\n expected_schema: failure.trace.expected_schema,\n ...(failure.trace.command ? { command: failure.trace.command } : {}),\n ...(failure.trace.capability ? { capability: failure.trace.capability } : {}),\n ...(failure.trace.missing_capability ? { missing_capability: failure.trace.missing_capability } : {}),\n ...(failure.trace.hint ? { hint: failure.trace.hint } : {}),\n }\n : undefined;\n return {\n layer: failure.layer,\n name: failure.name,\n entry_path: failure.entry_path,\n error: failure.error,\n ...(failure.trace?.missing_capability ? { missing_capability: failure.trace.missing_capability } : {}),\n ...(failure.trace?.hint ? { hint: failure.trace.hint } : {}),\n ...(trace ? { trace } : {}),\n };\n}\n\nfunction collectActivationFailureDiagnostics(failures: ActivationFailureEntry[]): ActivationFailureDiagnostic[] {\n return failures\n .map((failure) => summarizeActivationFailureForDiagnostics(failure))\n .sort((left, right) => `${left.layer}:${left.name}`.localeCompare(`${right.layer}:${right.name}`));\n}\n\nfunction findActivationFailureByName(\n extensionName: string,\n failures: ActivationFailureDiagnostic[],\n layer?: ExtensionScope,\n): ActivationFailureDiagnostic | undefined {\n const normalizedName = normalizeExtensionNameForMatch(extensionName);\n return failures.find(\n (failure) =>\n (layer === undefined || failure.layer === layer) &&\n normalizeExtensionNameForMatch(failure.name) === normalizedName,\n );\n}\n\nfunction resolveInstallRuntimeActivationStatus(\n extensionName: string,\n scope: ExtensionScope,\n runtimeInstalled: ManagedExtensionSummary[],\n installActivationFailure: ActivationFailureDiagnostic | undefined,\n): ExtensionActivationStatus {\n const runtimeInstalledExtension = runtimeInstalled.find(\n (entry) =>\n entry.scope === scope && normalizeExtensionNameForMatch(entry.name) === normalizeExtensionNameForMatch(extensionName),\n );\n return runtimeInstalledExtension?.activation_status ?? (installActivationFailure ? \"failed\" : \"unknown\");\n}\n\nasync function probeRuntimeCommandPathsForInstall(\n pmRoot: string,\n settings: PmSettings,\n refreshedInstalled: ManagedExtensionSummary[],\n global: GlobalOptions,\n): Promise<{ installed: ManagedExtensionSummary[]; warnings: string[]; activation_failures: ActivationFailureDiagnostic[] }> {\n const loadResult = await loadExtensions({\n pmRoot,\n settings,\n cwd: process.cwd(),\n noExtensions: global.noExtensions === true,\n reload_token: nextExtensionReloadToken(),\n cache_bust: true,\n });\n const activationResult = await activateExtensions({\n ...loadResult,\n loaded: loadResult.loaded,\n });\n return {\n installed: applyDoctorRuntimeActivationState(refreshedInstalled, loadResult, activationResult),\n warnings: [...loadResult.warnings, ...activationResult.warnings],\n activation_failures: collectActivationFailureDiagnostics(activationResult.failed),\n };\n}\n\nasync function checkGithubUpdate(\n source: ManagedExtensionSource,\n gitCommandRunner: typeof runGitCommand = runGitCommand,\n): Promise<GithubUpdateStatus> {\n const checkedAt = nowIso();\n if (source.kind !== \"github\" || !source.repository) {\n return {\n checked_at: checkedAt,\n available: null,\n error: \"not_a_github_managed_source\",\n };\n }\n try {\n const ref = source.ref && source.ref.trim().length > 0 ? source.ref.trim() : \"HEAD\";\n const output = await gitCommandRunner([\"ls-remote\", source.repository, ref]);\n const firstLine = output\n .split(/\\r?\\n/)\n .map((line) => line.trim())\n .find((line) => line.length > 0);\n if (!firstLine) {\n return {\n checked_at: checkedAt,\n available: null,\n error: \"no_remote_reference_found\",\n };\n }\n const [remoteCommit] = firstLine.split(/\\s+/);\n /* c8 ignore start -- firstLine is trimmed non-empty, so split always yields a non-empty first token */\n if (typeof remoteCommit !== \"string\" || remoteCommit.length === 0) {\n return {\n checked_at: checkedAt,\n available: null,\n error: \"invalid_remote_reference\",\n };\n }\n /* c8 ignore stop */\n if (typeof source.commit === \"string\" && source.commit.trim().length > 0) {\n return {\n checked_at: checkedAt,\n remote_commit: remoteCommit,\n available: remoteCommit !== source.commit.trim(),\n };\n }\n return {\n checked_at: checkedAt,\n remote_commit: remoteCommit,\n available: null,\n error: \"missing_installed_commit\",\n };\n } catch (error: unknown) {\n return {\n checked_at: checkedAt,\n available: null,\n error: error instanceof Error ? error.message : String(error),\n };\n }\n}\n\ninterface AdoptedUnmanagedExtension {\n name: string;\n directory: string;\n version: string;\n entry: string;\n source: ManagedExtensionSource;\n}\n\ninterface AdoptUnmanagedExtensionsResult {\n state: ManagedExtensionState;\n adopted_entries: AdoptedUnmanagedExtension[];\n unmanaged_candidates: ManagedExtensionSummary[];\n already_managed_count: number;\n}\n\nasync function adoptUnmanagedExtensions(\n extensionsRoot: string,\n scope: ExtensionScope,\n installedExtensions: ManagedExtensionSummary[],\n state: ManagedExtensionState,\n): Promise<AdoptUnmanagedExtensionsResult> {\n const unmanagedCandidates = installedExtensions.filter((entry) => !entry.managed);\n const sortedCandidates = [...unmanagedCandidates].sort((left, right) => {\n const byName = left.name.localeCompare(right.name);\n if (byName !== 0) {\n return byName;\n }\n return left.directory.localeCompare(right.directory);\n });\n\n let nextState = state;\n const adoptedEntries: AdoptedUnmanagedExtension[] = [];\n for (const candidate of sortedCandidates) {\n const extensionDirectory = path.join(extensionsRoot, candidate.directory);\n const validated = await validateExtensionDirectory(extensionDirectory);\n const now = nowIso();\n const sourceRecord: ManagedExtensionSource = {\n kind: \"local\",\n input: candidate.name,\n location: extensionDirectory,\n };\n nextState = upsertManagedEntry(nextState, {\n name: validated.manifest.name,\n directory: candidate.directory,\n scope,\n manifest_version: validated.manifest.version,\n manifest_entry: validated.manifest.entry,\n capabilities: [...validated.manifest.capabilities],\n installed_at: now,\n updated_at: now,\n source: sourceRecord,\n });\n adoptedEntries.push({\n name: validated.manifest.name,\n directory: candidate.directory,\n version: validated.manifest.version,\n entry: validated.manifest.entry,\n source: sourceRecord,\n });\n }\n\n if (adoptedEntries.length > 0) {\n await writeManagedExtensionState(extensionsRoot, nextState);\n }\n\n return {\n state: nextState,\n adopted_entries: adoptedEntries,\n unmanaged_candidates: sortedCandidates,\n already_managed_count: installedExtensions.length - unmanagedCandidates.length,\n };\n}\n\nfunction resolveExtensionRootsForScope(scope: ExtensionScope, global: GlobalOptions): {\n pm_root: string;\n scope: ExtensionScope;\n settings_root: string;\n selected_root: string;\n roots: { global: string; project: string };\n} {\n const pmRoot = resolvePmRoot(process.cwd(), global.path);\n const roots = resolveExtensionRoots(pmRoot, process.cwd());\n const settingsRoot = scope === \"global\" ? resolveGlobalPmRoot(process.cwd()) : pmRoot;\n const selectedRoot = scope === \"global\" ? roots.global : roots.project;\n return {\n pm_root: pmRoot,\n scope,\n settings_root: settingsRoot,\n selected_root: selectedRoot,\n roots,\n };\n}\n\nfunction resolveGithubOption(options: ExtensionCommandOptions): string | undefined {\n if (typeof options.gh === \"string\" && typeof options.github === \"string\" && options.gh.trim() !== options.github.trim()) {\n throw new PmCliError('Options \"--gh\" and \"--github\" must match when both are provided.', EXIT_CODE.USAGE);\n }\n if (typeof options.gh === \"string\" && options.gh.trim().length > 0) {\n return options.gh.trim();\n }\n if (typeof options.github === \"string\" && options.github.trim().length > 0) {\n return options.github.trim();\n }\n return undefined;\n}\n\nfunction requireTarget(target: string | undefined, action: ExtensionCommandAction): string {\n const normalized = target?.trim();\n if (!normalized) {\n if (action === \"init\") {\n throw new PmCliError(\n 'Action \"init\" requires a scaffold target path (for example: pm package init ./my-package or pm extension init ./my-extension).',\n EXIT_CODE.USAGE,\n );\n }\n throw new PmCliError(`Action \"${action}\" requires an extension name or source target argument.`, EXIT_CODE.USAGE);\n }\n return normalized;\n}\n\nfunction collectGlobalOutputOverrideDoctorWarnings(\n activationResult: Awaited<ReturnType<typeof activateExtensions>>,\n): string[] {\n const warnings: string[] = [];\n for (const entry of activationResult.services.overrides) {\n if (entry.service !== \"output_format\") {\n continue;\n }\n warnings.push(`extension_output_service_override_global:${entry.service}:${entry.layer}:${entry.name}`);\n }\n for (const entry of activationResult.renderers.overrides) {\n warnings.push(`extension_output_renderer_override_global:${entry.format}:${entry.layer}:${entry.name}`);\n }\n return [...new Set(warnings)].sort((left, right) => left.localeCompare(right));\n}\n\n/**\n * Implements run extension for the public runtime surface of this module.\n */\nexport async function runExtension(\n target: string | undefined,\n options: ExtensionCommandOptions,\n global: GlobalOptions,\n): Promise<ExtensionCommandResult> {\n const action = resolveAction(target, options);\n if ((options.strictExit === true || options.failOnWarn === true) && action !== \"doctor\") {\n throw new PmCliError(\"--strict-exit and --fail-on-warn are only valid with --doctor.\", EXIT_CODE.USAGE);\n }\n if (options.trace === true && action !== \"doctor\") {\n throw new PmCliError(\"--trace is only valid with --doctor.\", EXIT_CODE.USAGE);\n }\n if (options.watch === true && action !== \"reload\") {\n throw new PmCliError(\"--watch is only valid with --reload.\", EXIT_CODE.USAGE);\n }\n if (options.runtimeProbe === true && action !== \"manage\") {\n throw new PmCliError(\"--runtime-probe is only valid with --manage.\", EXIT_CODE.USAGE);\n }\n if (options.fixManagedState === true && action !== \"manage\" && action !== \"doctor\") {\n throw new PmCliError(\"--fix-managed-state is only valid with --manage or --doctor.\", EXIT_CODE.USAGE);\n }\n /* c8 ignore start -- alias-normalization matrix is covered by resolveAction tests; this IIFE only rewrites positional aliases */\n const normalizedTarget = (() => {\n const normalizedInput = target?.trim().toLowerCase();\n if (action === \"doctor\" && normalizedInput === \"doctor\") {\n return undefined;\n }\n if (action === \"reload\" && normalizedInput === \"reload\") {\n return undefined;\n }\n if (action === \"catalog\" && normalizedInput === \"catalog\") {\n return undefined;\n }\n const inferredInitAlias =\n action === \"init\" &&\n options.init !== true &&\n options.scaffold !== true &&\n (normalizedInput === \"init\" || normalizedInput === \"scaffold\");\n if (inferredInitAlias) {\n return undefined;\n }\n return target;\n })();\n /* c8 ignore stop */\n const scope = resolveScope(options);\n const resolvedRoots = resolveExtensionRootsForScope(scope, global);\n const warnings: string[] = [];\n\n const withResult = (details: Record<string, unknown>): ExtensionCommandResult => {\n const result: ExtensionCommandResult = {\n ok: true,\n action,\n scope,\n roots: action === \"catalog\" && typeof options.fields === \"string\" && options.fields.trim().length > 0\n ? {\n project: \"project\",\n global: \"global\",\n selected: scope,\n settings_root: \"project\",\n }\n : {\n project: resolvedRoots.roots.project,\n global: resolvedRoots.roots.global,\n selected: resolvedRoots.selected_root,\n settings_root: resolvedRoots.settings_root,\n },\n warnings: [...new Set(warnings)].sort((left, right) => left.localeCompare(right)),\n details,\n };\n if (action === \"doctor\") {\n Object.defineProperty(result, NATIVE_OUTPUT_MARKER, {\n value: true,\n enumerable: false,\n configurable: false,\n });\n }\n return result;\n };\n\n if (action === \"init\") {\n const githubOption = resolveGithubOption(options);\n if (githubOption !== undefined || (typeof options.ref === \"string\" && options.ref.trim().length > 0)) {\n throw new PmCliError('Action \"init\" does not accept --gh/--github/--ref options.', EXIT_CODE.USAGE);\n }\n const scaffoldTarget = requireTarget(normalizedTarget, action);\n const scaffold = await scaffoldExtensionProject(scaffoldTarget, options.vocabulary ?? \"extension\");\n const quotedTargetPath = JSON.stringify(scaffold.target_path);\n // Forward-slash the path for the copy-pasteable `cd` hint: Windows cmd.exe /\n // PowerShell reject the doubled backslashes JSON.stringify emits, while both\n // shells (and POSIX) accept forward slashes.\n const quotedShellTargetPath = JSON.stringify(scaffold.target_path.replace(/\\\\/g, \"/\"));\n return withResult({\n scaffolded: scaffold.created_directory || scaffold.files.some((entry) => entry.status === \"created\"),\n extension: {\n name: scaffold.extension_name,\n command: scaffold.command_name,\n },\n target_path: scaffold.target_path,\n created_directory: scaffold.created_directory,\n files: scaffold.files,\n next_steps: [\n `Install the scaffold: ${options.vocabulary === \"package\" ? \"pm install --project\" : \"pm extension --install --project\"} ${quotedTargetPath}`,\n `Smoke-test command path: pm ${scaffold.command_name}`,\n ...(options.vocabulary === \"package\"\n ? [`Validate the sample test: cd ${quotedShellTargetPath}, then run \"npm install\" and \"npm test\"`]\n : []),\n `Run diagnostics: ${options.vocabulary === \"package\" ? \"pm package doctor\" : \"pm extension --doctor\"} --project --detail summary`,\n ],\n });\n }\n\n if (action === \"reload\") {\n if (normalizedTarget !== undefined) {\n throw new PmCliError('Action \"reload\" does not accept a target argument.', EXIT_CODE.USAGE);\n }\n const settings = await readSettings(resolvedRoots.settings_root);\n const reloadToken = nextExtensionReloadToken();\n const reloaded = await loadExtensions({\n pmRoot: resolvedRoots.settings_root,\n settings,\n cwd: process.cwd(),\n noExtensions: global.noExtensions,\n reload_token: reloadToken,\n cache_bust: true,\n });\n warnings.push(...reloaded.warnings);\n const activation = await activateExtensions(reloaded);\n warnings.push(...activation.warnings);\n const details = {\n reload: {\n token: reloadToken,\n cache_bust: true,\n watch: options.watch === true,\n },\n loaded_count: reloaded.loaded.length,\n failed_count: reloaded.failed.length,\n activated_count: Math.max(0, reloaded.loaded.length - activation.failed.length),\n activation_failed_count: activation.failed.length,\n loaded_extensions: reloaded.loaded.map((entry) => ({\n name: entry.name,\n layer: entry.layer,\n version: entry.version,\n })),\n failed_extensions: reloaded.failed.map((entry) => ({\n name: entry.name,\n layer: entry.layer,\n error: entry.error,\n })),\n activation_failures: activation.failed.map((entry) => ({\n name: entry.name,\n layer: entry.layer,\n error: entry.error,\n })),\n };\n if (options.watch === true) {\n warnings.push(\"extension_reload_watch_hint:watch_mode_requested_non_interactive_single_pass_only\");\n }\n return withResult(details);\n }\n\n if (action === \"catalog\") {\n if (typeof normalizedTarget === \"string\" && normalizedTarget.length > 0 && normalizedTarget !== \"catalog\") {\n throw new PmCliError('Action \"catalog\" does not accept a package target.', EXIT_CODE.USAGE);\n }\n return withResult(await buildBundledPackageCatalog(scope, global, options));\n }\n\n if (action === \"install\") {\n const githubOption = resolveGithubOption(options);\n const explicitSourceInput = githubOption ?? requireTarget(normalizedTarget, action);\n if (typeof githubOption !== \"string\" && isBundledPackageInstallAllTarget(explicitSourceInput)) {\n if (typeof options.ref === \"string\" && options.ref.trim().length > 0) {\n throw new PmCliError('Action \"install all\" does not accept --ref.', EXIT_CODE.USAGE);\n }\n const aliases = await listBundledPackageAliases();\n const packages: Array<{ alias: string; result: ExtensionCommandResult }> = [];\n for (const alias of aliases) {\n packages.push({\n alias,\n result: await runExtension(alias, { ...options, install: true }, global),\n });\n }\n for (const entry of packages) {\n warnings.push(...entry.result.warnings);\n }\n return withResult({\n installed_all: true,\n installed_count: packages.length,\n packages: packages.map((entry) => ({\n alias: entry.alias,\n ok: entry.result.ok,\n extension: (entry.result.details as { extension?: unknown }).extension,\n source: (entry.result.details as { source?: unknown }).source,\n destination_path: (entry.result.details as { destination_path?: unknown }).destination_path,\n activated: (entry.result.details as { activated?: unknown }).activated,\n settings_changed: (entry.result.details as { settings_changed?: unknown }).settings_changed,\n command_paths: (entry.result.details as { command_paths?: unknown }).command_paths,\n action_paths: (entry.result.details as { action_paths?: unknown }).action_paths,\n command_discovery: (entry.result.details as { command_discovery?: unknown }).command_discovery,\n warnings: entry.result.warnings,\n })),\n });\n }\n /* c8 ignore start -- github/local alias-source split is exercised in install-action integration tests */\n const bundledAliasSource =\n typeof githubOption === \"string\" ? null : await resolveBundledExtensionAliasSource(explicitSourceInput);\n /* c8 ignore stop */\n const bundledAliasName = bundledAliasSource === null ? null : explicitSourceInput.trim().toLowerCase();\n const sourceInput = bundledAliasSource ?? explicitSourceInput;\n /* c8 ignore start -- install-source branch combinations are covered in install-sources focused tests */\n const installSource = parseExtensionInstallSource(sourceInput, {\n forceGithub: typeof githubOption === \"string\",\n ref: options.ref,\n });\n /* c8 ignore stop */\n const resolvedSource = await resolveInstallSource(installSource);\n try {\n const validated = await validateExtensionDirectory(resolvedSource.directory);\n const destinationDirectoryName = normalizeManagedDirectoryName(validated.manifest.name);\n return await withExtensionInstallLock(resolvedRoots.settings_root, destinationDirectoryName, async () => {\n const settings = await readSettings(resolvedRoots.settings_root);\n const managedStateRead = await readManagedExtensionState(resolvedRoots.selected_root);\n warnings.push(...managedStateRead.warnings);\n const destinationDirectory = path.join(resolvedRoots.selected_root, destinationDirectoryName);\n const destinationExists = await pathExists(destinationDirectory);\n const installInPlace = await areDirectoriesEquivalent(validated.directory, destinationDirectory);\n\n await fs.mkdir(resolvedRoots.selected_root, { recursive: true });\n if (!installInPlace) {\n await copyExtensionDirectoryForInstall(validated.directory, destinationDirectory);\n }\n\n /* c8 ignore start -- source-shape branch combinations are exercised in install-source focused tests */\n const sourceRecord: ManagedExtensionSource =\n bundledAliasName\n ? {\n kind: \"builtin\",\n input: bundledAliasName,\n location: bundledAliasName,\n name: bundledAliasName,\n }\n : installSource.kind === \"local\"\n ? {\n kind: \"local\",\n input: installSource.input,\n location: installSource.absolute_path,\n }\n : installSource.kind === \"npm\"\n ? {\n kind: \"npm\",\n input: installSource.input,\n location: resolvedSource.resolved_subpath ?? \".\",\n package: resolvedSource.npm_package,\n version: resolvedSource.npm_version,\n }\n : {\n kind: \"github\",\n input: installSource.input,\n location: resolvedSource.resolved_subpath ?? installSource.subpath ?? \".\",\n repository: installSource.repository,\n owner: installSource.owner,\n repo: installSource.repo,\n ref: installSource.ref,\n subpath: resolvedSource.resolved_subpath ?? installSource.subpath,\n commit: resolvedSource.commit,\n };\n /* c8 ignore stop */\n\n const now = nowIso();\n const existingManagedEntry = managedStateRead.state.entries.find(\n (entry) => normalizeExtensionNameForMatch(entry.name) === normalizeExtensionNameForMatch(validated.manifest.name),\n );\n const sourceUnchanged =\n existingManagedEntry !== undefined &&\n existingManagedEntry.manifest_version === validated.manifest.version &&\n managedExtensionSourcesEquivalent(existingManagedEntry.source, sourceRecord);\n const managedState = upsertManagedEntry(managedStateRead.state, {\n name: validated.manifest.name,\n directory: destinationDirectoryName,\n scope,\n manifest_version: validated.manifest.version,\n manifest_entry: validated.manifest.entry,\n capabilities: [...validated.manifest.capabilities],\n installed_at: existingManagedEntry?.installed_at ?? now,\n updated_at: sourceUnchanged ? existingManagedEntry.updated_at : now,\n source: sourceRecord,\n });\n await writeManagedExtensionState(resolvedRoots.selected_root, managedState);\n\n const activationChanged = ensureActivated(settings, validated.manifest.name);\n if (activationChanged) {\n await writeSettings(resolvedRoots.settings_root, settings, \"settings:write\");\n }\n const refreshedInstalled = await listInstalledExtensions(resolvedRoots.selected_root, scope, settings, managedState);\n warnings.push(...refreshedInstalled.warnings);\n const runtimeProbe = await probeRuntimeCommandPathsForInstall(\n resolvedRoots.pm_root,\n settings,\n refreshedInstalled.extensions,\n global,\n );\n warnings.push(...runtimeProbe.warnings);\n const commandSummary = summarizeRuntimeCommandPathsForExtension(validated.manifest.name, runtimeProbe.installed);\n const installActivationFailure = findActivationFailureByName(\n validated.manifest.name,\n runtimeProbe.activation_failures,\n scope,\n );\n const runtimeActivationStatus = resolveInstallRuntimeActivationStatus(\n validated.manifest.name,\n scope,\n runtimeProbe.installed,\n installActivationFailure,\n );\n\n return withResult({\n extension: {\n name: validated.manifest.name,\n version: validated.manifest.version,\n entry: validated.manifest.entry,\n capabilities: validated.manifest.capabilities,\n directory: destinationDirectoryName,\n },\n source: sourceRecord,\n destination_path: destinationDirectory,\n overwritten: destinationExists && !installInPlace,\n installed_in_place: installInPlace,\n activated: true,\n settings_changed: activationChanged,\n runtime_activation_status: runtimeActivationStatus,\n command_paths: commandSummary.command_paths,\n action_paths: commandSummary.action_paths,\n command_discovery: buildInstallCommandDiscovery(validated.manifest.name, sourceRecord, commandSummary),\n activation_diagnostics: {\n failed_count: runtimeProbe.activation_failures.length,\n failed: runtimeProbe.activation_failures,\n installed_extension_failed: installActivationFailure ?? null,\n },\n });\n });\n } finally {\n /* c8 ignore start -- cleanup hooks are only present for transient install sources */\n if (resolvedSource.cleanup) {\n await resolvedSource.cleanup();\n }\n /* c8 ignore stop */\n }\n }\n\n if (action === \"adopt-all\") {\n if (normalizedTarget !== undefined) {\n throw new PmCliError('Action \"adopt-all\" does not accept a target argument.', EXIT_CODE.USAGE);\n }\n const githubOption = resolveGithubOption(options);\n if (githubOption !== undefined || (typeof options.ref === \"string\" && options.ref.trim().length > 0)) {\n throw new PmCliError('Action \"adopt-all\" does not accept --gh/--github/--ref options.', EXIT_CODE.USAGE);\n }\n const settings = await readSettings(resolvedRoots.settings_root);\n const managedStateRead = await readManagedExtensionState(resolvedRoots.selected_root);\n warnings.push(...managedStateRead.warnings);\n const installed = await listInstalledExtensions(resolvedRoots.selected_root, scope, settings, managedStateRead.state);\n warnings.push(...installed.warnings);\n const adoption = await adoptUnmanagedExtensions(\n resolvedRoots.selected_root,\n scope,\n installed.extensions,\n managedStateRead.state,\n );\n const refreshedInstalled = await listInstalledExtensions(resolvedRoots.selected_root, scope, settings, adoption.state);\n warnings.push(...refreshedInstalled.warnings);\n const triage = buildExtensionTriageSummary(scope, warnings, refreshedInstalled.extensions, options);\n warnings.push(...triage.warnings);\n /* c8 ignore start -- refresh-entry optional metadata is display-only and exercised indirectly */\n const adoptedDetails = adoption.adopted_entries.map((entry) => {\n const refreshedEntry =\n refreshedInstalled.extensions.find(\n (candidate) =>\n normalizeExtensionNameForMatch(candidate.name) === normalizeExtensionNameForMatch(entry.name) &&\n normalizeExtensionNameForMatch(candidate.directory) === normalizeExtensionNameForMatch(entry.directory),\n ) ??\n /* c8 ignore next 3 -- fallback only matters if a manifest renames between adopt and refresh */\n refreshedInstalled.extensions.find(\n (candidate) => normalizeExtensionNameForMatch(candidate.directory) === normalizeExtensionNameForMatch(entry.directory),\n );\n return {\n ...entry,\n update_check_status: refreshedEntry?.update_check_status ?? null,\n update_check_reason: refreshedEntry?.update_check_reason ?? null,\n };\n });\n /* c8 ignore stop */\n /* c8 ignore start -- adopt-all summary booleans are deterministic mirrors of adoptedDetails length */\n return withResult({\n adopted_all: adoptedDetails.length > 0,\n adopted_count: adoptedDetails.length,\n already_managed_count: adoption.already_managed_count,\n extensions: adoptedDetails,\n triage,\n warning_codes: triage.warning_codes,\n update_health_partial: triage.update_health_partial,\n update_health_coverage: triage.update_health_coverage,\n });\n /* c8 ignore stop */\n }\n\n if (action === \"adopt\") {\n const extensionTarget = requireTarget(normalizedTarget, action);\n const githubOption = resolveGithubOption(options);\n const settings = await readSettings(resolvedRoots.settings_root);\n const managedStateRead = await readManagedExtensionState(resolvedRoots.selected_root);\n warnings.push(...managedStateRead.warnings);\n const installed = await listInstalledExtensions(resolvedRoots.selected_root, scope, settings, managedStateRead.state);\n warnings.push(...installed.warnings);\n const candidate = await resolveInstalledExtensionCandidate(installed.extensions, extensionTarget);\n if (!candidate) {\n throw new PmCliError(`Installed extension \"${extensionTarget}\" was not found in ${scope} scope.`, EXIT_CODE.NOT_FOUND);\n }\n if (candidate.managed) {\n return withResult({\n adopted: false,\n already_managed: true,\n extension: {\n name: candidate.name,\n directory: candidate.directory,\n },\n });\n }\n\n const extensionDirectory = path.join(resolvedRoots.selected_root, candidate.directory);\n const validated = await validateExtensionDirectory(extensionDirectory);\n const now = nowIso();\n const sourceRecord: ManagedExtensionSource =\n githubOption === undefined\n ? {\n kind: \"local\",\n input: extensionTarget,\n location: extensionDirectory,\n }\n : (() => {\n const parsed = parseExtensionInstallSource(githubOption, {\n forceGithub: true,\n ref: options.ref,\n });\n /* c8 ignore start -- forceGithub guarantees a github-kind install source */\n if (parsed.kind !== \"github\") {\n throw new PmCliError(`Invalid GitHub shorthand \"${githubOption}\".`, EXIT_CODE.USAGE);\n }\n /* c8 ignore stop */\n /* c8 ignore start -- github subpath defaults are validated in install-source parser tests */\n return {\n kind: \"github\",\n input: parsed.input,\n location: parsed.subpath ?? \".\",\n repository: parsed.repository,\n owner: parsed.owner,\n repo: parsed.repo,\n ref: parsed.ref,\n subpath: parsed.subpath,\n };\n /* c8 ignore stop */\n })();\n const managedState = upsertManagedEntry(managedStateRead.state, {\n name: validated.manifest.name,\n directory: candidate.directory,\n scope,\n manifest_version: validated.manifest.version,\n manifest_entry: validated.manifest.entry,\n capabilities: [...validated.manifest.capabilities],\n installed_at: now,\n updated_at: now,\n source: sourceRecord,\n });\n await writeManagedExtensionState(resolvedRoots.selected_root, managedState);\n const refreshedInstalled = await listInstalledExtensions(resolvedRoots.selected_root, scope, settings, managedState);\n warnings.push(...refreshedInstalled.warnings);\n /* c8 ignore start -- fallback only matters if a manifest renames between adopt and refresh */\n const refreshedEntry =\n refreshedInstalled.extensions.find(\n (entry) => normalizeExtensionNameForMatch(entry.name) === normalizeExtensionNameForMatch(validated.manifest.name),\n ) ??\n refreshedInstalled.extensions.find(\n (entry) => normalizeExtensionNameForMatch(entry.directory) === normalizeExtensionNameForMatch(candidate.directory),\n );\n /* c8 ignore stop */\n\n /* c8 ignore start -- adopt result mirrors refreshedEntry optionals for display only */\n return withResult({\n adopted: true,\n extension: {\n name: validated.manifest.name,\n directory: candidate.directory,\n version: validated.manifest.version,\n entry: validated.manifest.entry,\n },\n source: sourceRecord,\n update_check_status: refreshedEntry?.update_check_status ?? null,\n update_check_reason: refreshedEntry?.update_check_reason ?? null,\n });\n /* c8 ignore stop */\n }\n\n if (action === \"uninstall\") {\n const extensionTarget = requireTarget(normalizedTarget, action);\n const settings = await readSettings(resolvedRoots.settings_root);\n const managedStateRead = await readManagedExtensionState(resolvedRoots.selected_root);\n warnings.push(...managedStateRead.warnings);\n const installed = await listInstalledExtensions(resolvedRoots.selected_root, scope, settings, managedStateRead.state);\n warnings.push(...installed.warnings);\n const candidate = await resolveInstalledExtensionCandidate(installed.extensions, extensionTarget);\n if (!candidate) {\n throw new PmCliError(`Installed extension \"${extensionTarget}\" was not found in ${scope} scope.`, EXIT_CODE.NOT_FOUND);\n }\n const destinationDirectory = path.join(resolvedRoots.selected_root, candidate.directory);\n await fs.rm(destinationDirectory, { recursive: true, force: true });\n\n const updatedState: ManagedExtensionState = {\n ...managedStateRead.state,\n updated_at: nowIso(),\n /* c8 ignore start -- uninstall filter keeps both name+directory guards for legacy managed-state migrations */\n entries: managedStateRead.state.entries.filter(\n (entry) =>\n normalizeExtensionNameForMatch(entry.name) !== normalizeExtensionNameForMatch(candidate.name) &&\n normalizeExtensionNameForMatch(entry.directory) !== normalizeExtensionNameForMatch(candidate.directory),\n ),\n /* c8 ignore stop */\n };\n await writeManagedExtensionState(resolvedRoots.selected_root, updatedState);\n\n const stateChanged = clearExtensionState(settings, candidate.name);\n if (stateChanged) {\n await writeSettings(resolvedRoots.settings_root, settings, \"settings:write\");\n }\n\n return withResult({\n removed: true,\n extension: {\n name: candidate.name,\n directory: candidate.directory,\n },\n destination_path: destinationDirectory,\n settings_changed: stateChanged,\n });\n }\n\n if (action === \"activate\" || action === \"deactivate\") {\n const extensionTarget = requireTarget(normalizedTarget, action);\n const settings = await readSettings(resolvedRoots.settings_root);\n const managedStateRead = await readManagedExtensionState(resolvedRoots.selected_root);\n warnings.push(...managedStateRead.warnings);\n const installed = await listInstalledExtensions(resolvedRoots.selected_root, scope, settings, managedStateRead.state);\n warnings.push(...installed.warnings);\n const candidate = await resolveInstalledExtensionCandidate(installed.extensions, extensionTarget);\n if (!candidate) {\n throw new PmCliError(`Installed extension \"${extensionTarget}\" was not found in ${scope} scope.`, EXIT_CODE.NOT_FOUND);\n }\n\n const settingsChanged = action === \"activate\" ? ensureActivated(settings, candidate.name) : ensureDeactivated(settings, candidate.name);\n if (settingsChanged) {\n await writeSettings(resolvedRoots.settings_root, settings, \"settings:write\");\n }\n\n return withResult({\n extension: {\n name: candidate.name,\n directory: candidate.directory,\n },\n active: action === \"activate\",\n settings_changed: settingsChanged,\n settings: {\n enabled: [...settings.extensions.enabled],\n disabled: [...settings.extensions.disabled],\n },\n });\n }\n\n if (action === \"doctor\") {\n if (normalizedTarget && normalizedTarget.trim().length > 0) {\n throw new PmCliError('Action \"doctor\" does not accept a target argument.', EXIT_CODE.USAGE);\n }\n const detailMode = parseDoctorDetailMode(options.detail);\n const includeTrace = options.trace === true;\n if (includeTrace && detailMode !== \"deep\") {\n throw new PmCliError(\"--trace requires --detail deep with --doctor.\", EXIT_CODE.USAGE);\n }\n const settings = await readSettings(resolvedRoots.settings_root);\n const managedStateRead = await readManagedExtensionState(resolvedRoots.selected_root);\n warnings.push(...managedStateRead.warnings);\n const installed = await listInstalledExtensions(resolvedRoots.selected_root, scope, settings, managedStateRead.state);\n warnings.push(...installed.warnings);\n let managedState = managedStateRead.state;\n const managedStateFix =\n options.fixManagedState === true\n ? await adoptUnmanagedExtensions(\n resolvedRoots.selected_root,\n scope,\n installed.extensions,\n managedStateRead.state,\n )\n : null;\n if (managedStateFix) {\n managedState = managedStateFix.state;\n }\n const refreshedInstalled = await listInstalledExtensions(resolvedRoots.selected_root, scope, settings, managedState);\n warnings.push(...refreshedInstalled.warnings);\n\n const loadResult = await loadExtensions({\n pmRoot: resolvedRoots.pm_root,\n settings,\n cwd: process.cwd(),\n noExtensions: global.noExtensions === true,\n });\n const activationResult = await activateExtensions({\n ...loadResult,\n loaded: loadResult.loaded,\n });\n warnings.push(...loadResult.warnings);\n warnings.push(...classifyDoctorLoadFailureWarnings(loadResult.failed));\n warnings.push(...activationResult.warnings);\n warnings.push(...classifyDoctorActivationFailureWarnings(activationResult.failed));\n warnings.push(...collectGlobalOutputOverrideDoctorWarnings(activationResult));\n const runtimeInstalledExtensions = applyDoctorRuntimeActivationState(refreshedInstalled.extensions, loadResult, activationResult);\n const doctorConsistency = buildDoctorConsistencySummary(\n scope,\n runtimeInstalledExtensions,\n loadResult.loaded.map((entry) => ({ layer: entry.layer, name: entry.name })),\n loadResult.failed.map((entry) => ({ name: entry.name })),\n loadResult.disabled_by_flag,\n );\n warnings.push(...doctorConsistency.warnings);\n const updateCheckWarnings = runtimeInstalledExtensions\n .filter((entry) => entry.update_check_status === \"failed\")\n .map((entry) => `extension_update_check_failed:${entry.name}`);\n warnings.push(...updateCheckWarnings);\n\n const triage = buildExtensionTriageSummary(scope, warnings, runtimeInstalledExtensions, options);\n warnings.push(...triage.warnings);\n const normalizedWarnings = [...triage.warnings];\n const policySummary = {\n mode: loadResult.policy.mode,\n trust_mode: loadResult.policy.trust_mode,\n require_provenance: loadResult.policy.require_provenance,\n default_sandbox_profile: loadResult.policy.default_sandbox_profile,\n // Honest trust model (ADR pm-6ef3): keep this caveat to one concise line.\n sandbox_enforcement:\n \"advisory: sandbox_profile/permissions are declaration-based load gates, not runtime isolation (ADR pm-6ef3)\",\n trusted_extensions_count: loadResult.policy.trusted_extensions.length,\n allowed_extensions_count: loadResult.policy.allowed_extensions.length,\n blocked_extensions_count: loadResult.policy.blocked_extensions.length,\n allowed_capabilities_count: loadResult.policy.allowed_capabilities.length,\n blocked_capabilities_count: loadResult.policy.blocked_capabilities.length,\n allowed_surfaces_count: loadResult.policy.allowed_surfaces.length,\n blocked_surfaces_count: loadResult.policy.blocked_surfaces.length,\n allowed_commands_count: loadResult.policy.allowed_commands.length,\n blocked_commands_count: loadResult.policy.blocked_commands.length,\n allowed_actions_count: loadResult.policy.allowed_actions.length,\n blocked_actions_count: loadResult.policy.blocked_actions.length,\n allowed_services_count: loadResult.policy.allowed_services.length,\n blocked_services_count: loadResult.policy.blocked_services.length,\n extension_override_count: loadResult.policy.extension_overrides.length,\n };\n const capabilityGuidance = collectUnknownCapabilityGuidance(normalizedWarnings);\n const capabilityContract = buildCapabilityContractMetadata();\n const warningCodes = triage.warning_codes;\n const remediation = [\n ...new Set(\n [\n ...triage.remediation,\n /* c8 ignore start -- vocabulary-specific remediation branches are copy-only variants */\n ...(loadResult.failed.length > 0\n ? [\n options.vocabulary === \"package\"\n ? \"Run pm package explore --project and pm package explore --global to inspect load failures.\"\n : \"Run pm extension --explore --project and pm extension --explore --global to inspect load failures.\",\n ]\n : []),\n ...(activationResult.failed.length > 0\n ? [\n options.vocabulary === \"package\"\n ? \"Review activation failures in pm package doctor --detail deep output.\"\n : \"Review activation failures in pm extension --doctor --detail deep output.\",\n ]\n : []),\n /* c8 ignore stop */\n ...(managedStateFix && managedStateFix.adopted_entries.length > 0\n ? [`Managed-state fix adopted ${managedStateFix.adopted_entries.length} extension(s).`]\n : []),\n ].map((entry) => entry.trim()).filter((entry) => entry.length > 0),\n ),\n ];\n\n const summary = {\n status: triage.status,\n scope,\n warning_count: triage.warning_count,\n warning_codes: warningCodes,\n total_extensions: runtimeInstalledExtensions.length,\n managed_total: runtimeInstalledExtensions.filter((entry) => entry.managed).length,\n enabled_total: runtimeInstalledExtensions.filter((entry) => entry.enabled).length,\n active_total: runtimeInstalledExtensions.filter((entry) => entry.active).length,\n unmanaged_loaded_extension_count: triage.unmanaged_loaded_extension_count,\n unmanaged_action_required_extension_count: triage.unmanaged_action_required_extension_count,\n unmanaged_expected_extension_count: triage.unmanaged_expected_extension_count,\n runtime_active_total: runtimeInstalledExtensions.filter((entry) => entry.runtime_active === true).length,\n activation_status_totals: {\n ok: runtimeInstalledExtensions.filter((entry) => entry.activation_status === \"ok\").length,\n failed: runtimeInstalledExtensions.filter((entry) => entry.activation_status === \"failed\").length,\n not_loaded: runtimeInstalledExtensions.filter((entry) => entry.activation_status === \"not_loaded\").length,\n unknown: runtimeInstalledExtensions.filter((entry) => entry.activation_status === \"unknown\").length,\n },\n unknown_capability_count: capabilityGuidance.length,\n capability_contract_version: capabilityContract.version,\n update_available_total: runtimeInstalledExtensions.filter((entry) => entry.update_available === true).length,\n update_health_coverage: triage.update_health_coverage,\n update_health_partial: triage.update_health_partial,\n update_check_failed_total: runtimeInstalledExtensions.filter((entry) => entry.update_check_status === \"failed\").length,\n load_failure_count: loadResult.failed.length,\n activation_failure_count: activationResult.failed.length,\n blocking_failure_count: loadResult.failed.length + activationResult.failed.length,\n has_blocking_failures: loadResult.failed.length + activationResult.failed.length > 0,\n consistency_warning_count: doctorConsistency.warnings.length,\n trace_enabled: includeTrace,\n policy: policySummary,\n remediation,\n };\n\n const managedStateFixSummary = managedStateFix\n ? {\n requested: true,\n applied: managedStateFix.adopted_entries.length > 0,\n adopted_count: managedStateFix.adopted_entries.length,\n already_managed_count: managedStateFix.already_managed_count,\n adopted_extensions: managedStateFix.adopted_entries.map((entry) => entry.name),\n }\n : {\n requested: false,\n applied: false,\n adopted_count: 0,\n already_managed_count: refreshedInstalled.extensions.filter((entry) => entry.managed).length,\n adopted_extensions: [] as string[],\n };\n\n const details: Record<string, unknown> = {\n mode: detailMode,\n summary,\n triage,\n trace_enabled: includeTrace,\n capability_contract: capabilityContract,\n capability_guidance: capabilityGuidance,\n managed_state_fix: managedStateFixSummary,\n policy: loadResult.policy,\n };\n if (detailMode === \"deep\") {\n const activationFailedDetails = includeTrace\n ? activationResult.failed\n : activationResult.failed.map((entry) => {\n const { trace: _trace, ...rest } = entry;\n return rest;\n });\n details.deep = {\n warnings: normalizedWarnings,\n warning_codes: warningCodes,\n capability_contract: capabilityContract,\n capability_guidance: capabilityGuidance,\n trace_enabled: includeTrace,\n managed_state: {\n path: managedStateRead.path,\n count: managedState.entries.length,\n entries: managedState.entries,\n },\n installed_extensions: runtimeInstalledExtensions,\n load: {\n roots: loadResult.roots,\n policy: loadResult.policy,\n warnings: loadResult.warnings,\n failed: loadResult.failed,\n loaded: loadResult.loaded.map((entry) => ({\n layer: entry.layer,\n directory: entry.directory,\n name: entry.name,\n version: entry.version,\n entry: entry.entry,\n priority: entry.priority,\n })),\n },\n activation: {\n failed: activationFailedDetails,\n warnings: activationResult.warnings,\n hook_counts: activationResult.hook_counts,\n registration_counts: activationResult.registration_counts,\n parser_override_count: activationResult.parser_override_count,\n preflight_override_count: activationResult.preflight_override_count,\n service_override_count: activationResult.service_override_count,\n renderer_override_count: activationResult.renderer_override_count,\n },\n consistency: doctorConsistency.summary,\n };\n if (includeTrace) {\n (details.deep as Record<string, unknown>).trace = {\n activation_failures: activationResult.failed\n .filter((entry) => entry.trace !== undefined)\n .map((entry) => ({\n layer: entry.layer,\n name: entry.name,\n entry_path: entry.entry_path,\n error: entry.error,\n method: entry.trace?.method,\n command: entry.trace?.command,\n capability: entry.trace?.capability,\n missing_capability: entry.trace?.missing_capability,\n registration_index: entry.trace?.registration_index,\n expected_schema: entry.trace?.expected_schema,\n hint: entry.trace?.hint,\n received: entry.trace?.received,\n })),\n };\n }\n }\n return withResult(details);\n }\n\n /* c8 ignore start -- explore/manage action split is validated by dedicated command-action tests */\n if (action === \"explore\" || action === \"manage\") {\n const settings = await readSettings(resolvedRoots.settings_root);\n const configuredPolicy = buildExtensionPolicyDetails(settings.extensions.policy);\n const managedStateRead = await readManagedExtensionState(resolvedRoots.selected_root);\n warnings.push(...managedStateRead.warnings);\n const installed = await listInstalledExtensions(resolvedRoots.selected_root, scope, settings, managedStateRead.state);\n warnings.push(...installed.warnings);\n\n let managedState = managedStateRead.state;\n const managedStateFix =\n action === \"manage\" && options.fixManagedState === true\n ? await adoptUnmanagedExtensions(\n resolvedRoots.selected_root,\n scope,\n installed.extensions,\n managedStateRead.state,\n )\n : null;\n if (managedStateFix) {\n managedState = managedStateFix.state;\n }\n if (action === \"manage\") {\n const updates = await Promise.all(\n managedState.entries.map(async (entry) => {\n if (entry.source.kind !== \"github\") {\n return entry;\n }\n const updateStatus = await checkGithubUpdate(entry.source);\n return {\n ...entry,\n last_update_check_at: updateStatus.checked_at,\n last_update_remote_commit: updateStatus.remote_commit,\n update_available: updateStatus.available,\n update_error: updateStatus.error,\n };\n }),\n );\n managedState = {\n ...managedState,\n updated_at: nowIso(),\n entries: sortManagedEntries(updates),\n };\n await writeManagedExtensionState(resolvedRoots.selected_root, managedState);\n }\n\n const refreshedInstalled = await listInstalledExtensions(resolvedRoots.selected_root, scope, settings, managedState);\n warnings.push(...refreshedInstalled.warnings);\n if (action === \"manage\") {\n const updateWarnings = refreshedInstalled.extensions\n .filter((entry) => entry.update_check_status === \"failed\")\n .map((entry) => `extension_update_check_failed:${entry.name}`);\n warnings.push(...updateWarnings);\n }\n let runtimeProbeSummary: Record<string, unknown> | undefined;\n let runtimeInstalledExtensions = refreshedInstalled.extensions;\n let runtimeActivationFailures: ActivationFailureDiagnostic[] | undefined;\n if (action === \"explore\" || options.runtimeProbe === true) {\n const loadResult = await loadExtensions({\n pmRoot: resolvedRoots.pm_root,\n settings,\n cwd: process.cwd(),\n noExtensions: global.noExtensions === true,\n });\n const activationResult = await activateExtensions({\n ...loadResult,\n loaded: loadResult.loaded,\n });\n warnings.push(...loadResult.warnings);\n warnings.push(...activationResult.warnings);\n runtimeInstalledExtensions = applyDoctorRuntimeActivationState(refreshedInstalled.extensions, loadResult, activationResult);\n runtimeActivationFailures = collectActivationFailureDiagnostics(activationResult.failed);\n runtimeProbeSummary = {\n requested: true,\n executed: true,\n reason: action === \"explore\" ? \"explore_defaults_to_runtime_probe\" : \"runtime_probe_requested\",\n load_failure_count: loadResult.failed.length,\n activation_failure_count: activationResult.failed.length,\n warning_count: [...new Set([...loadResult.warnings, ...activationResult.warnings])].length,\n policy: loadResult.policy,\n };\n } else if (action === \"manage\") {\n runtimeProbeSummary = {\n requested: false,\n executed: false,\n };\n }\n\n const triage = buildExtensionTriageSummary(scope, warnings, runtimeInstalledExtensions, options);\n warnings.push(...triage.warnings);\n const details: Record<string, unknown> = {\n total: runtimeInstalledExtensions.length,\n managed_total: runtimeInstalledExtensions.filter((entry) => entry.managed).length,\n enabled_total: runtimeInstalledExtensions.filter((entry) => entry.enabled).length,\n active_total: runtimeInstalledExtensions.filter((entry) => entry.active).length,\n extensions: runtimeInstalledExtensions,\n triage,\n policy: configuredPolicy,\n };\n if (runtimeActivationFailures !== undefined) {\n details.activation_diagnostics = {\n failed_count: runtimeActivationFailures.length,\n failed: runtimeActivationFailures,\n };\n }\n if (action === \"explore\") {\n details.runtime_probe = runtimeProbeSummary;\n }\n if (action === \"manage\") {\n details.runtime_probe = runtimeProbeSummary;\n details.managed_state_fix =\n managedStateFix !== null\n ? {\n requested: true,\n applied: managedStateFix.adopted_entries.length > 0,\n adopted_count: managedStateFix.adopted_entries.length,\n adopted_extensions: managedStateFix.adopted_entries.map((entry) => entry.name),\n already_managed_count: managedStateFix.already_managed_count,\n }\n : {\n requested: false,\n applied: false,\n adopted_count: 0,\n adopted_extensions: [],\n already_managed_count: runtimeInstalledExtensions.filter((entry) => entry.managed).length,\n };\n }\n return withResult(details);\n }\n /* c8 ignore stop */\n\n /* c8 ignore start -- resolveAction returns a closed ExtensionCommandAction union */\n throw new PmCliError(`Unsupported extension action \"${action}\".`, EXIT_CODE.USAGE);\n /* c8 ignore stop */\n}\n\nexport const _testOnly = {\n adoptUnmanagedExtensions,\n buildExtensionPolicyDetails,\n buildInstallCommandDiscovery,\n checkGithubUpdate,\n clearExtensionState,\n collectActivationFailureDiagnostics,\n findActivationFailureByName,\n resolveInstallRuntimeActivationStatus,\n collectGlobalOutputOverrideDoctorWarnings,\n copyExtensionDirectoryWithoutSelfNesting,\n isErrnoCode,\n isRetriableExtensionInstallCopyError,\n listInstalledExtensions,\n requireTarget,\n resolveAction,\n resolveCommandDiscoveryPackageName,\n resolveGithubOption,\n resolveInstalledExtensionCandidate,\n resolveScope,\n resolveUpdateCheckResolution,\n withExtensionInstallLock,\n};\n"],"names":[],"mappings":"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","debugId":"b0b28569-ac5e-5484-8ffb-a578de22fd15"}
1
+ {"version":3,"file":"extension.js","sources":["cli/commands/extension.ts"],"sourceRoot":"/","sourcesContent":["/**\n * @module cli/commands/extension\n *\n * Implements the pm extension command surface and its agent-facing runtime behavior.\n */\nimport { execFile } from \"node:child_process\";\nimport fs from \"node:fs/promises\";\nimport os from \"node:os\";\nimport path from \"node:path\";\nimport { promisify } from \"node:util\";\nimport { activateExtensions, loadExtensions, nextExtensionReloadToken } from \"../../core/extensions/index.js\";\nimport { resolveExtensionRoots } from \"../../core/extensions/loader.js\";\nimport { pathExists } from \"../../core/fs/fs-utils.js\";\nimport { isPathWithinDirectory } from \"../../core/fs/path-utils.js\";\nimport { collectPackageExtensionDirectories } from \"../../core/packages/manifest.js\";\nimport { EXIT_CODE } from \"../../core/shared/constants.js\";\nimport type { GlobalOptions } from \"../../core/shared/command-types.js\";\nimport { PmCliError } from \"../../core/shared/errors.js\";\nimport { nowIso } from \"../../core/shared/time.js\";\nimport { resolveGlobalPmRoot, resolvePmRoot } from \"../../core/store/paths.js\";\nimport { readSettings, writeSettings } from \"../../core/store/settings.js\";\nimport type { PmSettings } from \"../../types/index.js\";\n// Cohesive helper groups now live in ./extension/* sibling modules. They are\n// imported for the command wiring that stays here and re-exported below so\n// existing import sites (sdk barrels, upgrade.ts, tests) keep importing the\n// public surface (runExtension, managed-state read/write, install-source\n// parsing, …) from \"./extension.js\" unchanged.\nimport {\n normalizeStringList,\n normalizeExtensionNameForMatch,\n normalizeManagedDirectoryName,\n parseExtensionManifest,\n validateExtensionDirectory,\n} from \"./extension/shared.js\";\nimport {\n sortManagedEntries,\n managedExtensionSourcesEquivalent,\n readManagedExtensionState,\n writeManagedExtensionState,\n upsertManagedEntry,\n resolveManagedExtensionStatePath,\n type ManagedExtensionSource,\n type ManagedExtensionRecord,\n type ManagedExtensionState,\n} from \"./extension/managed-state.js\";\nimport {\n parseExtensionInstallSource,\n resolveInstallSource,\n areDirectoriesEquivalent,\n runGitCommand,\n} from \"./extension/install-sources.js\";\nimport {\n resolveBundledExtensionAliasSource,\n isBundledPackageInstallAllTarget,\n listBundledPackageAliases,\n resolveBundledAliasManifestName,\n buildBundledPackageCatalog,\n} from \"./extension/bundled-catalog.js\";\nimport { scaffoldExtensionProject } from \"./extension/scaffold.js\";\nimport { buildExtensionDescribeResult } from \"./extension/describe.js\";\nimport {\n applyDoctorRuntimeActivationState,\n classifyDoctorLoadFailureWarnings,\n classifyDoctorActivationFailureWarnings,\n classifyUnusedCapabilityWarnings,\n buildExtensionTriageSummary,\n parseDoctorDetailMode,\n collectUnknownCapabilityGuidance,\n buildCapabilityContractMetadata,\n buildDoctorConsistencySummary,\n} from \"./extension/doctor.js\";\n// Re-export the public surface that lives in sibling modules but was previously\n// exported from this file (used by sdk barrels, upgrade.ts, and tests).\nexport {\n parseExtensionManifest,\n validateExtensionDirectory,\n readManagedExtensionState,\n writeManagedExtensionState,\n resolveManagedExtensionStatePath,\n parseExtensionInstallSource,\n};\nexport type {\n ManagedExtensionSource,\n ManagedExtensionRecord,\n ManagedExtensionState,\n};\nexport type { ManagedExtensionStateReadResult } from \"./extension/managed-state.js\";\n\nconst execFileAsync = promisify(execFile);\nconst EXTENSION_INSTALL_COPY_ATTEMPTS = 3;\nconst EXTENSION_INSTALL_LOCK_ATTEMPTS = 120;\nconst EXTENSION_INSTALL_LOCK_DELAY_MS = 250;\nconst EXTENSION_INSTALL_LOCK_STALE_MS = 120_000;\n\n/**\n * Restricts extension command action values accepted by command, SDK, and storage contracts.\n */\nexport type ExtensionCommandAction =\n | \"install\"\n | \"uninstall\"\n | \"explore\"\n | \"manage\"\n | \"describe\"\n | \"reload\"\n | \"doctor\"\n | \"catalog\"\n | \"adopt\"\n | \"adopt-all\"\n | \"activate\"\n | \"deactivate\"\n | \"init\";\n/**\n * Restricts extension scope values accepted by command, SDK, and storage contracts.\n */\nexport type ExtensionScope = \"project\" | \"global\";\n/**\n * Restricts extension activation status values accepted by command, SDK, and storage contracts.\n */\nexport type ExtensionActivationStatus = \"ok\" | \"failed\" | \"not_loaded\" | \"unknown\";\n\n/**\n * Documents the extension command options payload exchanged by command, SDK, and package integrations.\n */\nexport interface ExtensionCommandOptions {\n install?: boolean;\n uninstall?: boolean;\n explore?: boolean;\n manage?: boolean;\n describe?: boolean;\n reload?: boolean;\n doctor?: boolean;\n catalog?: boolean;\n init?: boolean;\n scaffold?: boolean;\n strictExit?: boolean;\n failOnWarn?: boolean;\n adopt?: boolean;\n adoptAll?: boolean;\n activate?: boolean;\n deactivate?: boolean;\n project?: boolean;\n local?: boolean;\n global?: boolean;\n gh?: string;\n github?: string;\n ref?: string;\n detail?: string;\n trace?: boolean;\n watch?: boolean;\n runtimeProbe?: boolean;\n fixManagedState?: boolean;\n fields?: string;\n capability?: string;\n vocabulary?: \"extension\" | \"package\";\n}\n\n/**\n * Documents the managed extension summary payload exchanged by command, SDK, and package integrations.\n */\nexport interface ManagedExtensionSummary {\n name: string;\n directory: string;\n version: string;\n entry: string;\n scope: ExtensionScope;\n // Backward-compatible alias for configured enabled state. Prefer `enabled`.\n active: boolean;\n enabled: boolean;\n runtime_active: boolean | null;\n activation_status: ExtensionActivationStatus;\n command_paths?: string[];\n action_paths?: string[];\n managed: boolean;\n source?: ManagedExtensionSource;\n update_available?: boolean | null;\n last_update_check_at?: string;\n last_update_remote_commit?: string;\n update_error?: string;\n update_check_status: ExtensionUpdateCheckStatus;\n update_check_reason: string;\n}\n\n/**\n * Documents the extension command result payload exchanged by command, SDK, and package integrations.\n */\nexport interface ExtensionCommandResult {\n ok: boolean;\n action: ExtensionCommandAction;\n scope: ExtensionScope;\n roots: {\n project: string;\n global: string;\n selected: string;\n settings_root: string;\n };\n warnings: string[];\n details: Record<string, unknown>;\n}\n\nconst NATIVE_OUTPUT_MARKER = \"__pm_native_output\";\n\n/**\n * Documents the extension triage summary payload exchanged by command, SDK, and package integrations.\n */\nexport interface ExtensionTriageSummary {\n status: \"ok\" | \"warn\";\n warning_count: number;\n warning_codes: string[];\n warnings: string[];\n policy_warning_count: number;\n policy_violation_count: number;\n policy_blocked_count: number;\n total_extensions: number;\n managed_total: number;\n enabled_total: number;\n active_total: number;\n update_available_total: number;\n update_health_coverage: \"full\" | \"partial\";\n update_health_partial: boolean;\n unmanaged_loaded_extension_count: number;\n unmanaged_loaded_extensions: string[];\n unmanaged_expected_extension_count: number;\n unmanaged_expected_extensions: string[];\n unmanaged_action_required_extension_count: number;\n unmanaged_action_required_extensions: string[];\n update_check_status_totals: Record<ExtensionUpdateCheckStatus, number>;\n update_check_failed_total: number;\n top_warnings: string[];\n remediation: string[];\n collision_plan?: ExtensionCollisionPlan;\n}\n\n/**\n * Documents the extension collision plan payload exchanged by command, SDK, and package integrations.\n */\nexport interface ExtensionCollisionPlan {\n status: \"ok\" | \"conflicts_detected\";\n collision_count: number;\n extension_count: number;\n next_best_command: string;\n collisions: Array<{\n code: string;\n surface: string;\n winner: { layer: ExtensionScope; name: string };\n displaced: { layer: ExtensionScope; name: string };\n }>;\n remediation_candidates: Array<{\n action: \"deactivate\";\n extension: string;\n command: string;\n affected_collisions: number;\n feature_loss: {\n command_paths: string[];\n action_paths: string[];\n };\n }>;\n}\n\n/**\n * Restricts extension update check status values accepted by command, SDK, and storage contracts.\n */\nexport type ExtensionUpdateCheckStatus = \"checked\" | \"skipped_unmanaged\" | \"skipped_non_github\" | \"failed\" | \"not_checked\";\n\ninterface ExtensionUpdateCheckResolution {\n status: ExtensionUpdateCheckStatus;\n reason: string;\n}\n\n/**\n * Restricts extension doctor detail mode values accepted by command, SDK, and storage contracts.\n */\nexport type ExtensionDoctorDetailMode = \"summary\" | \"deep\";\nfunction buildExtensionPolicyDetails(policy: PmSettings[\"extensions\"][\"policy\"]): {\n mode: \"off\" | \"warn\" | \"enforce\";\n trust_mode: \"off\" | \"warn\" | \"enforce\";\n require_provenance: boolean;\n trusted_extensions: string[];\n default_sandbox_profile: \"none\" | \"restricted\" | \"strict\";\n allowed_extensions: string[];\n blocked_extensions: string[];\n allowed_capabilities: string[];\n blocked_capabilities: string[];\n allowed_surfaces: string[];\n blocked_surfaces: string[];\n allowed_commands: string[];\n blocked_commands: string[];\n allowed_actions: string[];\n blocked_actions: string[];\n allowed_services: string[];\n blocked_services: string[];\n extension_overrides: Array<{\n name: string;\n disabled?: boolean;\n require_trusted?: boolean;\n require_provenance?: boolean;\n sandbox_profile?: \"none\" | \"restricted\" | \"strict\";\n allowed_capabilities?: string[];\n blocked_capabilities?: string[];\n allowed_surfaces?: string[];\n blocked_surfaces?: string[];\n allowed_commands?: string[];\n blocked_commands?: string[];\n allowed_actions?: string[];\n blocked_actions?: string[];\n allowed_services?: string[];\n blocked_services?: string[];\n }>;\n} {\n const overrides = (policy.extension_overrides ?? [])\n .map((override) => ({\n name: override.name.trim(),\n disabled: override.disabled === true ? true : undefined,\n require_trusted: override.require_trusted === true ? true : undefined,\n require_provenance: override.require_provenance === true ? true : undefined,\n sandbox_profile: override.sandbox_profile,\n allowed_capabilities: normalizeStringList(override.allowed_capabilities ?? []),\n blocked_capabilities: normalizeStringList(override.blocked_capabilities ?? []),\n allowed_surfaces: normalizeStringList(override.allowed_surfaces ?? []),\n blocked_surfaces: normalizeStringList(override.blocked_surfaces ?? []),\n allowed_commands: normalizeStringList(override.allowed_commands ?? []),\n blocked_commands: normalizeStringList(override.blocked_commands ?? []),\n allowed_actions: normalizeStringList(override.allowed_actions ?? []),\n blocked_actions: normalizeStringList(override.blocked_actions ?? []),\n allowed_services: normalizeStringList(override.allowed_services ?? []),\n blocked_services: normalizeStringList(override.blocked_services ?? []),\n }))\n .filter((override) => override.name.length > 0)\n .sort((left, right) => left.name.localeCompare(right.name));\n return {\n mode: policy.mode,\n trust_mode: policy.trust_mode,\n require_provenance: policy.require_provenance === true,\n trusted_extensions: normalizeStringList(policy.trusted_extensions ?? []),\n default_sandbox_profile: policy.default_sandbox_profile ?? \"none\",\n allowed_extensions: normalizeStringList(policy.allowed_extensions ?? []),\n blocked_extensions: normalizeStringList(policy.blocked_extensions ?? []),\n allowed_capabilities: normalizeStringList(policy.allowed_capabilities ?? []),\n blocked_capabilities: normalizeStringList(policy.blocked_capabilities ?? []),\n allowed_surfaces: normalizeStringList(policy.allowed_surfaces ?? []),\n blocked_surfaces: normalizeStringList(policy.blocked_surfaces ?? []),\n allowed_commands: normalizeStringList(policy.allowed_commands ?? []),\n blocked_commands: normalizeStringList(policy.blocked_commands ?? []),\n allowed_actions: normalizeStringList(policy.allowed_actions ?? []),\n blocked_actions: normalizeStringList(policy.blocked_actions ?? []),\n allowed_services: normalizeStringList(policy.allowed_services ?? []),\n blocked_services: normalizeStringList(policy.blocked_services ?? []),\n extension_overrides: overrides.map((override) => ({\n name: override.name,\n ...(override.disabled === true ? { disabled: true } : {}),\n ...(override.require_trusted === true ? { require_trusted: true } : {}),\n ...(override.require_provenance === true ? { require_provenance: true } : {}),\n ...(override.sandbox_profile ? { sandbox_profile: override.sandbox_profile } : {}),\n ...(override.allowed_capabilities.length > 0 ? { allowed_capabilities: override.allowed_capabilities } : {}),\n ...(override.blocked_capabilities.length > 0 ? { blocked_capabilities: override.blocked_capabilities } : {}),\n ...(override.allowed_surfaces.length > 0 ? { allowed_surfaces: override.allowed_surfaces } : {}),\n ...(override.blocked_surfaces.length > 0 ? { blocked_surfaces: override.blocked_surfaces } : {}),\n ...(override.allowed_commands.length > 0 ? { allowed_commands: override.allowed_commands } : {}),\n ...(override.blocked_commands.length > 0 ? { blocked_commands: override.blocked_commands } : {}),\n ...(override.allowed_actions.length > 0 ? { allowed_actions: override.allowed_actions } : {}),\n ...(override.blocked_actions.length > 0 ? { blocked_actions: override.blocked_actions } : {}),\n ...(override.allowed_services.length > 0 ? { allowed_services: override.allowed_services } : {}),\n ...(override.blocked_services.length > 0 ? { blocked_services: override.blocked_services } : {}),\n })),\n };\n}\n\nfunction isRetriableExtensionInstallCopyError(error: unknown): boolean {\n if (typeof error !== \"object\" || error === null || !(\"code\" in error)) {\n return false;\n }\n const code = (error as { code?: unknown }).code;\n return code === \"EEXIST\" || code === \"ENOTEMPTY\" || code === \"ENOENT\";\n}\n\nfunction isErrnoCode(error: unknown, code: string): boolean {\n return typeof error === \"object\" && error !== null && \"code\" in error && (error as { code?: unknown }).code === code;\n}\n\nfunction sleep(ms: number): Promise<void> {\n return new Promise((resolve) => {\n setTimeout(resolve, ms);\n });\n}\n\n/**\n * Implements copy extension directory for install for the public runtime surface of this module.\n */\nexport async function copyExtensionDirectoryForInstall(\n sourceDirectory: string,\n destinationDirectory: string,\n copyDirectory: typeof fs.cp = fs.cp,\n): Promise<void> {\n for (let attempt = 1; attempt <= EXTENSION_INSTALL_COPY_ATTEMPTS; attempt += 1) {\n try {\n if (await pathExists(destinationDirectory)) {\n await fs.rm(destinationDirectory, { recursive: true, force: true });\n }\n await copyExtensionDirectoryWithoutSelfNesting(sourceDirectory, destinationDirectory, copyDirectory);\n return;\n } catch (error: unknown) {\n if (!isRetriableExtensionInstallCopyError(error) || attempt === EXTENSION_INSTALL_COPY_ATTEMPTS) {\n throw error;\n }\n await sleep(EXTENSION_INSTALL_LOCK_DELAY_MS);\n }\n }\n}\n\nasync function copyExtensionDirectoryWithoutSelfNesting(\n sourceDirectory: string,\n destinationDirectory: string,\n copyDirectory: typeof fs.cp,\n): Promise<void> {\n const resolvedSource = path.resolve(sourceDirectory);\n const resolvedDestination = path.resolve(destinationDirectory);\n if (resolvedSource === resolvedDestination) {\n return;\n }\n if (!isPathWithinDirectory(resolvedSource, resolvedDestination)) {\n await copyDirectory(sourceDirectory, destinationDirectory, { recursive: true, force: true });\n return;\n }\n\n const stagingRoot = await fs.mkdtemp(path.join(os.tmpdir(), \"pm-extension-copy-\"));\n const stagedDirectory = path.join(stagingRoot, \"extension\");\n try {\n await copyDirectory(sourceDirectory, stagedDirectory, { recursive: true, force: true });\n await copyDirectory(stagedDirectory, destinationDirectory, { recursive: true, force: true });\n } finally {\n await fs.rm(stagingRoot, { recursive: true, force: true });\n }\n}\n\nasync function withExtensionInstallLock<T>(\n settingsRoot: string,\n destinationDirectoryName: string,\n run: () => Promise<T>,\n options?: {\n attempts?: number;\n delay_ms?: number;\n stale_ms?: number;\n },\n): Promise<T> {\n const lockRoot = path.join(settingsRoot, \"runtime\", \"extension-install-locks\");\n const lockPath = path.join(lockRoot, `${destinationDirectoryName}.lock`);\n await fs.mkdir(lockRoot, { recursive: true });\n const attempts = Math.max(1, Math.floor(options?.attempts ?? EXTENSION_INSTALL_LOCK_ATTEMPTS));\n const delayMs = Math.max(0, Math.floor(options?.delay_ms ?? EXTENSION_INSTALL_LOCK_DELAY_MS));\n const staleMs = Math.max(0, Math.floor(options?.stale_ms ?? EXTENSION_INSTALL_LOCK_STALE_MS));\n\n let acquired = false;\n for (let attempt = 1; attempt <= attempts; attempt += 1) {\n try {\n await fs.mkdir(lockPath);\n acquired = true;\n await fs.writeFile(\n path.join(lockPath, \"owner.json\"),\n `${JSON.stringify({ pid: process.pid, created_at: nowIso(), destination: destinationDirectoryName }, null, 2)}\\n`,\n \"utf8\",\n );\n break;\n } catch (error: unknown) {\n if (!isErrnoCode(error, \"EEXIST\")) {\n throw error;\n }\n let stat: Awaited<ReturnType<typeof fs.stat>> | null = null;\n try {\n stat = await fs.stat(lockPath);\n } catch {\n stat = null;\n }\n if (stat && Date.now() - stat.mtimeMs > staleMs) {\n await fs.rm(lockPath, { recursive: true, force: true });\n continue;\n }\n await sleep(delayMs);\n }\n }\n\n if (!acquired) {\n throw new PmCliError(\n `Timed out waiting for extension install lock for \"${destinationDirectoryName}\".`,\n EXIT_CODE.CONFLICT,\n );\n }\n\n try {\n return await run();\n } finally {\n await fs.rm(lockPath, { recursive: true, force: true }).catch(() => undefined);\n }\n}\n\nasync function resolveInstalledExtensionCandidate(\n installed: ManagedExtensionSummary[],\n extensionTarget: string,\n): Promise<ManagedExtensionSummary | undefined> {\n const lookupValues = [extensionTarget];\n const bundledAliasManifestName = await resolveBundledAliasManifestName(extensionTarget);\n if (bundledAliasManifestName) {\n lookupValues.push(bundledAliasManifestName);\n }\n const normalizedLookups = [...new Set(lookupValues.map((value) => normalizeExtensionNameForMatch(value)).filter((value) => value.length > 0))];\n for (const lookup of normalizedLookups) {\n const byName = installed.find((entry) => normalizeExtensionNameForMatch(entry.name) === lookup);\n if (byName) {\n return byName;\n }\n const byDirectory = installed.find((entry) => normalizeExtensionNameForMatch(entry.directory) === lookup);\n if (byDirectory) {\n return byDirectory;\n }\n }\n return undefined;\n}\n\nfunction isExtensionEnabled(settings: PmSettings, name: string): boolean {\n const normalizedName = name.trim();\n const enabled = new Set(normalizeStringList(settings.extensions.enabled));\n const disabled = new Set(normalizeStringList(settings.extensions.disabled));\n if (disabled.has(normalizedName)) {\n return false;\n }\n if (enabled.size === 0) {\n return true;\n }\n return enabled.has(normalizedName);\n}\n\nfunction ensureActivated(settings: PmSettings, name: string): boolean {\n const normalizedName = name.trim();\n const enabled = new Set(normalizeStringList(settings.extensions.enabled));\n const disabled = new Set(normalizeStringList(settings.extensions.disabled));\n const previousEnabled = [...enabled];\n const previousDisabled = [...disabled];\n disabled.delete(normalizedName);\n if (enabled.size > 0) {\n enabled.add(normalizedName);\n }\n settings.extensions.enabled = [...enabled].sort((left, right) => left.localeCompare(right));\n settings.extensions.disabled = [...disabled].sort((left, right) => left.localeCompare(right));\n return (\n settings.extensions.enabled.join(\"\\u0000\") !== previousEnabled.join(\"\\u0000\") ||\n settings.extensions.disabled.join(\"\\u0000\") !== previousDisabled.join(\"\\u0000\")\n );\n}\n\nfunction ensureDeactivated(settings: PmSettings, name: string): boolean {\n const normalizedName = name.trim();\n const enabled = new Set(normalizeStringList(settings.extensions.enabled));\n const disabled = new Set(normalizeStringList(settings.extensions.disabled));\n const previousEnabled = [...enabled];\n const previousDisabled = [...disabled];\n enabled.delete(normalizedName);\n disabled.add(normalizedName);\n settings.extensions.enabled = [...enabled].sort((left, right) => left.localeCompare(right));\n settings.extensions.disabled = [...disabled].sort((left, right) => left.localeCompare(right));\n return (\n settings.extensions.enabled.join(\"\\u0000\") !== previousEnabled.join(\"\\u0000\") ||\n settings.extensions.disabled.join(\"\\u0000\") !== previousDisabled.join(\"\\u0000\")\n );\n}\n\nfunction clearExtensionState(settings: PmSettings, name: string): boolean {\n const normalizedName = name.trim();\n const enabled = new Set(normalizeStringList(settings.extensions.enabled));\n const disabled = new Set(normalizeStringList(settings.extensions.disabled));\n const previousEnabled = [...enabled];\n const previousDisabled = [...disabled];\n enabled.delete(normalizedName);\n disabled.delete(normalizedName);\n settings.extensions.enabled = [...enabled].sort((left, right) => left.localeCompare(right));\n settings.extensions.disabled = [...disabled].sort((left, right) => left.localeCompare(right));\n return (\n settings.extensions.enabled.join(\"\\u0000\") !== previousEnabled.join(\"\\u0000\") ||\n settings.extensions.disabled.join(\"\\u0000\") !== previousDisabled.join(\"\\u0000\")\n );\n}\n\nfunction resolveAction(target: string | undefined, options: ExtensionCommandOptions): ExtensionCommandAction {\n const selected = [...new Set([\n options.install ? \"install\" : null,\n options.uninstall ? \"uninstall\" : null,\n options.explore ? \"explore\" : null,\n options.manage ? \"manage\" : null,\n options.describe ? \"describe\" : null,\n options.reload ? \"reload\" : null,\n options.doctor ? \"doctor\" : null,\n options.catalog ? \"catalog\" : null,\n options.init ? \"init\" : null,\n options.scaffold ? \"init\" : null,\n options.adopt ? \"adopt\" : null,\n options.adoptAll ? \"adopt-all\" : null,\n options.activate ? \"activate\" : null,\n options.deactivate ? \"deactivate\" : null,\n ].filter((value): value is ExtensionCommandAction => value !== null))];\n if (selected.length === 0) {\n if (typeof target === \"string\" && target.trim().toLowerCase() === \"doctor\") {\n return \"doctor\";\n }\n if (typeof target === \"string\" && target.trim().toLowerCase() === \"reload\") {\n return \"reload\";\n }\n if (typeof target === \"string\" && target.trim().toLowerCase() === \"catalog\") {\n return \"catalog\";\n }\n if (typeof target === \"string\" && (target.trim().toLowerCase() === \"init\" || target.trim().toLowerCase() === \"scaffold\")) {\n return \"init\";\n }\n if (typeof target === \"string\" && target.trim().toLowerCase() === \"explore\") {\n return \"explore\";\n }\n if (typeof target === \"string\" && target.trim().toLowerCase() === \"manage\") {\n return \"manage\";\n }\n if (typeof target === \"string\" && (target.trim().toLowerCase() === \"list\" || target.trim() === \"\")) {\n return \"explore\";\n }\n if (target === undefined) {\n return \"explore\";\n }\n throw new PmCliError(\n \"One action flag is required. Use one of: --install, --uninstall, --explore, --manage, --describe, --reload, --doctor, --catalog, --init/--scaffold, --adopt, --adopt-all, --activate, --deactivate. Bare `pm package` and `pm extension` default to --explore.\",\n EXIT_CODE.USAGE,\n );\n }\n if (selected.length > 1) {\n throw new PmCliError(\"Extension action flags are mutually exclusive.\", EXIT_CODE.USAGE);\n }\n return selected[0];\n}\n\nfunction resolveScope(options: ExtensionCommandOptions): ExtensionScope {\n const projectLike = options.project === true || options.local === true;\n const global = options.global === true;\n if (projectLike && global) {\n throw new PmCliError('Options \"--project/--local\" and \"--global\" are mutually exclusive.', EXIT_CODE.USAGE);\n }\n return global ? \"global\" : \"project\";\n}\nfunction resolveUpdateCheckResolution(managedEntry: ManagedExtensionRecord | undefined): ExtensionUpdateCheckResolution {\n if (!managedEntry) {\n return {\n status: \"skipped_unmanaged\",\n reason: \"extension_not_managed\",\n };\n }\n if (managedEntry.source.kind !== \"github\") {\n return {\n status: \"skipped_non_github\",\n reason: `managed_source_kind_${managedEntry.source.kind}`,\n };\n }\n const updateError = typeof managedEntry.update_error === \"string\" ? managedEntry.update_error.trim() : \"\";\n if (updateError.length > 0) {\n return {\n status: \"failed\",\n reason: updateError,\n };\n }\n if (typeof managedEntry.last_update_check_at === \"string\" && managedEntry.last_update_check_at.trim().length > 0) {\n if (managedEntry.update_available === true) {\n return {\n status: \"checked\",\n reason: \"update_available\",\n };\n }\n if (managedEntry.update_available === false) {\n return {\n status: \"checked\",\n reason: \"up_to_date\",\n };\n }\n return {\n status: \"checked\",\n reason: \"checked_without_commit_baseline\",\n };\n }\n return {\n status: \"not_checked\",\n reason: \"no_update_check_recorded\",\n };\n}\n\nasync function listInstalledExtensions(\n extensionsRoot: string,\n scope: ExtensionScope,\n settings: PmSettings,\n state: ManagedExtensionState,\n): Promise<{ extensions: ManagedExtensionSummary[]; warnings: string[] }> {\n if (!(await pathExists(extensionsRoot))) {\n return {\n extensions: [],\n warnings: [],\n };\n }\n\n const entries = await fs.readdir(extensionsRoot, { withFileTypes: true });\n const directories = entries\n .filter((entry) => entry.isDirectory())\n .map((entry) => entry.name)\n .sort((left, right) => left.localeCompare(right));\n\n const managedByName = new Map<string, ManagedExtensionRecord>();\n const managedByDirectory = new Map<string, ManagedExtensionRecord>();\n for (const managedEntry of state.entries) {\n managedByName.set(normalizeExtensionNameForMatch(managedEntry.name), managedEntry);\n managedByDirectory.set(normalizeExtensionNameForMatch(managedEntry.directory), managedEntry);\n }\n\n const warnings: string[] = [];\n const summaries: ManagedExtensionSummary[] = [];\n for (const directoryName of directories) {\n const extensionDirectory = path.join(extensionsRoot, directoryName);\n const manifestPath = path.join(extensionDirectory, \"manifest.json\");\n if (!(await pathExists(manifestPath))) {\n warnings.push(`extension_manifest_missing:${scope}:${directoryName}`);\n const managedEntry = managedByDirectory.get(normalizeExtensionNameForMatch(directoryName));\n const updateCheck = resolveUpdateCheckResolution(managedEntry);\n const enabled = managedEntry ? isExtensionEnabled(settings, managedEntry.name) : false;\n summaries.push({\n name: managedEntry?.name ?? directoryName,\n directory: directoryName,\n version: managedEntry?.manifest_version ?? \"unknown\",\n entry: managedEntry?.manifest_entry ?? \"unknown\",\n scope,\n active: enabled,\n enabled,\n runtime_active: null,\n activation_status: \"unknown\",\n managed: Boolean(managedEntry),\n source: managedEntry?.source,\n update_available: managedEntry?.update_available,\n last_update_check_at: managedEntry?.last_update_check_at,\n last_update_remote_commit: managedEntry?.last_update_remote_commit,\n update_error: managedEntry?.update_error,\n update_check_status: updateCheck.status,\n update_check_reason: updateCheck.reason,\n });\n continue;\n }\n\n let rawManifest: unknown;\n try {\n rawManifest = JSON.parse(await fs.readFile(manifestPath, \"utf8\")) as unknown;\n } catch {\n warnings.push(`extension_manifest_invalid_json:${scope}:${directoryName}`);\n continue;\n }\n const manifest = parseExtensionManifest(rawManifest);\n if (!manifest) {\n warnings.push(`extension_manifest_invalid:${scope}:${directoryName}`);\n continue;\n }\n const managedEntry =\n managedByName.get(normalizeExtensionNameForMatch(manifest.name)) ??\n managedByDirectory.get(normalizeExtensionNameForMatch(directoryName));\n const updateCheck = resolveUpdateCheckResolution(managedEntry);\n const enabled = isExtensionEnabled(settings, manifest.name);\n summaries.push({\n name: manifest.name,\n directory: directoryName,\n version: manifest.version,\n entry: manifest.entry,\n scope,\n active: enabled,\n enabled,\n runtime_active: null,\n activation_status: \"unknown\",\n managed: Boolean(managedEntry),\n source: managedEntry?.source,\n update_available: managedEntry?.update_available,\n last_update_check_at: managedEntry?.last_update_check_at,\n last_update_remote_commit: managedEntry?.last_update_remote_commit,\n update_error: managedEntry?.update_error,\n update_check_status: updateCheck.status,\n update_check_reason: updateCheck.reason,\n });\n }\n return {\n extensions: summaries.sort((left, right) => left.name.localeCompare(right.name)),\n warnings: warnings.sort((left, right) => left.localeCompare(right)),\n };\n}\ninterface GithubUpdateStatus {\n checked_at: string;\n available: boolean | null;\n remote_commit?: string;\n error?: string;\n}\ntype ActivationFailureEntry = Awaited<ReturnType<typeof activateExtensions>>[\"failed\"][number];\n\ninterface ActivationFailureDiagnostic {\n layer: string;\n name: string;\n entry_path: string;\n error: string;\n missing_capability?: string;\n hint?: string;\n trace?: {\n method: string;\n registration_index: number;\n expected_schema: string;\n command?: string;\n capability?: string;\n missing_capability?: string;\n hint?: string;\n };\n}\n\nfunction summarizeRuntimeCommandPathsForExtension(\n extensionName: string,\n installed: ManagedExtensionSummary[],\n): { command_paths: string[]; action_paths: string[] } {\n const normalizedName = normalizeExtensionNameForMatch(extensionName);\n const entry = installed.find((candidate) => normalizeExtensionNameForMatch(candidate.name) === normalizedName);\n return {\n command_paths: [...(entry?.command_paths ?? [])].sort((left, right) => left.localeCompare(right)),\n action_paths: [...(entry?.action_paths ?? [])].sort((left, right) => left.localeCompare(right)),\n };\n}\n\nfunction resolveCommandDiscoveryPackageName(extensionName: string, source: ManagedExtensionSource): string {\n if (source.kind === \"npm\" && typeof source.package === \"string\" && source.package.trim().length > 0) {\n return source.package.trim();\n }\n if (source.kind === \"builtin\" && typeof source.name === \"string\" && source.name.trim().length > 0) {\n return source.name.trim();\n }\n return extensionName;\n}\n\nfunction buildInstallCommandDiscovery(\n extensionName: string,\n source: ManagedExtensionSource,\n commandSummary: { command_paths: string[]; action_paths: string[] },\n): Record<string, unknown> {\n const helpCommands = commandSummary.command_paths.map((commandPath) => `pm ${commandPath} --help`);\n return {\n package_name: resolveCommandDiscoveryPackageName(extensionName, source),\n extension_name: extensionName,\n command_paths: commandSummary.command_paths,\n action_paths: commandSummary.action_paths,\n help_commands: helpCommands,\n next_steps:\n commandSummary.command_paths.length > 0\n ? helpCommands\n : [\"Run pm package doctor --project --detail deep if expected package commands are missing.\"],\n };\n}\n\nfunction summarizeActivationFailureForDiagnostics(failure: ActivationFailureEntry): ActivationFailureDiagnostic {\n const trace = failure.trace\n ? {\n method: failure.trace.method,\n registration_index: failure.trace.registration_index,\n expected_schema: failure.trace.expected_schema,\n ...(failure.trace.command ? { command: failure.trace.command } : {}),\n ...(failure.trace.capability ? { capability: failure.trace.capability } : {}),\n ...(failure.trace.missing_capability ? { missing_capability: failure.trace.missing_capability } : {}),\n ...(failure.trace.hint ? { hint: failure.trace.hint } : {}),\n }\n : undefined;\n return {\n layer: failure.layer,\n name: failure.name,\n entry_path: failure.entry_path,\n error: failure.error,\n ...(failure.trace?.missing_capability ? { missing_capability: failure.trace.missing_capability } : {}),\n ...(failure.trace?.hint ? { hint: failure.trace.hint } : {}),\n ...(trace ? { trace } : {}),\n };\n}\n\nfunction collectActivationFailureDiagnostics(failures: ActivationFailureEntry[]): ActivationFailureDiagnostic[] {\n return failures\n .map((failure) => summarizeActivationFailureForDiagnostics(failure))\n .sort((left, right) => `${left.layer}:${left.name}`.localeCompare(`${right.layer}:${right.name}`));\n}\n\nfunction findActivationFailureByName(\n extensionName: string,\n failures: ActivationFailureDiagnostic[],\n layer?: ExtensionScope,\n): ActivationFailureDiagnostic | undefined {\n const normalizedName = normalizeExtensionNameForMatch(extensionName);\n return failures.find(\n (failure) =>\n (layer === undefined || failure.layer === layer) &&\n normalizeExtensionNameForMatch(failure.name) === normalizedName,\n );\n}\n\nfunction resolveInstallRuntimeActivationStatus(\n extensionName: string,\n scope: ExtensionScope,\n runtimeInstalled: ManagedExtensionSummary[],\n installActivationFailure: ActivationFailureDiagnostic | undefined,\n): ExtensionActivationStatus {\n const runtimeInstalledExtension = runtimeInstalled.find(\n (entry) =>\n entry.scope === scope && normalizeExtensionNameForMatch(entry.name) === normalizeExtensionNameForMatch(extensionName),\n );\n return runtimeInstalledExtension?.activation_status ?? (installActivationFailure ? \"failed\" : \"unknown\");\n}\n\nasync function probeRuntimeCommandPathsForInstall(\n pmRoot: string,\n settings: PmSettings,\n refreshedInstalled: ManagedExtensionSummary[],\n global: GlobalOptions,\n): Promise<{ installed: ManagedExtensionSummary[]; warnings: string[]; activation_failures: ActivationFailureDiagnostic[] }> {\n const loadResult = await loadExtensions({\n pmRoot,\n settings,\n cwd: process.cwd(),\n noExtensions: global.noExtensions === true,\n reload_token: nextExtensionReloadToken(),\n cache_bust: true,\n });\n const activationResult = await activateExtensions({\n ...loadResult,\n loaded: loadResult.loaded,\n });\n return {\n installed: applyDoctorRuntimeActivationState(refreshedInstalled, loadResult, activationResult),\n warnings: [...loadResult.warnings, ...activationResult.warnings],\n activation_failures: collectActivationFailureDiagnostics(activationResult.failed),\n };\n}\n\nasync function checkGithubUpdate(\n source: ManagedExtensionSource,\n gitCommandRunner: typeof runGitCommand = runGitCommand,\n): Promise<GithubUpdateStatus> {\n const checkedAt = nowIso();\n if (source.kind !== \"github\" || !source.repository) {\n return {\n checked_at: checkedAt,\n available: null,\n error: \"not_a_github_managed_source\",\n };\n }\n try {\n const ref = source.ref && source.ref.trim().length > 0 ? source.ref.trim() : \"HEAD\";\n const output = await gitCommandRunner([\"ls-remote\", source.repository, ref]);\n const firstLine = output\n .split(/\\r?\\n/)\n .map((line) => line.trim())\n .find((line) => line.length > 0);\n if (!firstLine) {\n return {\n checked_at: checkedAt,\n available: null,\n error: \"no_remote_reference_found\",\n };\n }\n const [remoteCommit] = firstLine.split(/\\s+/);\n /* c8 ignore start -- firstLine is trimmed non-empty, so split always yields a non-empty first token */\n if (typeof remoteCommit !== \"string\" || remoteCommit.length === 0) {\n return {\n checked_at: checkedAt,\n available: null,\n error: \"invalid_remote_reference\",\n };\n }\n /* c8 ignore stop */\n if (typeof source.commit === \"string\" && source.commit.trim().length > 0) {\n return {\n checked_at: checkedAt,\n remote_commit: remoteCommit,\n available: remoteCommit !== source.commit.trim(),\n };\n }\n return {\n checked_at: checkedAt,\n remote_commit: remoteCommit,\n available: null,\n error: \"missing_installed_commit\",\n };\n } catch (error: unknown) {\n return {\n checked_at: checkedAt,\n available: null,\n error: error instanceof Error ? error.message : String(error),\n };\n }\n}\n\ninterface AdoptedUnmanagedExtension {\n name: string;\n directory: string;\n version: string;\n entry: string;\n source: ManagedExtensionSource;\n}\n\ninterface AdoptUnmanagedExtensionsResult {\n state: ManagedExtensionState;\n adopted_entries: AdoptedUnmanagedExtension[];\n unmanaged_candidates: ManagedExtensionSummary[];\n already_managed_count: number;\n}\n\nasync function adoptUnmanagedExtensions(\n extensionsRoot: string,\n scope: ExtensionScope,\n installedExtensions: ManagedExtensionSummary[],\n state: ManagedExtensionState,\n): Promise<AdoptUnmanagedExtensionsResult> {\n const unmanagedCandidates = installedExtensions.filter((entry) => !entry.managed);\n const sortedCandidates = [...unmanagedCandidates].sort((left, right) => {\n const byName = left.name.localeCompare(right.name);\n if (byName !== 0) {\n return byName;\n }\n return left.directory.localeCompare(right.directory);\n });\n\n let nextState = state;\n const adoptedEntries: AdoptedUnmanagedExtension[] = [];\n for (const candidate of sortedCandidates) {\n const extensionDirectory = path.join(extensionsRoot, candidate.directory);\n const validated = await validateExtensionDirectory(extensionDirectory);\n const now = nowIso();\n const sourceRecord: ManagedExtensionSource = {\n kind: \"local\",\n input: candidate.name,\n location: extensionDirectory,\n };\n nextState = upsertManagedEntry(nextState, {\n name: validated.manifest.name,\n directory: candidate.directory,\n scope,\n manifest_version: validated.manifest.version,\n manifest_entry: validated.manifest.entry,\n capabilities: [...validated.manifest.capabilities],\n installed_at: now,\n updated_at: now,\n source: sourceRecord,\n });\n adoptedEntries.push({\n name: validated.manifest.name,\n directory: candidate.directory,\n version: validated.manifest.version,\n entry: validated.manifest.entry,\n source: sourceRecord,\n });\n }\n\n if (adoptedEntries.length > 0) {\n await writeManagedExtensionState(extensionsRoot, nextState);\n }\n\n return {\n state: nextState,\n adopted_entries: adoptedEntries,\n unmanaged_candidates: sortedCandidates,\n already_managed_count: installedExtensions.length - unmanagedCandidates.length,\n };\n}\n\nfunction resolveExtensionRootsForScope(scope: ExtensionScope, global: GlobalOptions): {\n pm_root: string;\n scope: ExtensionScope;\n settings_root: string;\n selected_root: string;\n roots: { global: string; project: string };\n} {\n const pmRoot = resolvePmRoot(process.cwd(), global.path);\n const roots = resolveExtensionRoots(pmRoot, process.cwd());\n const settingsRoot = scope === \"global\" ? resolveGlobalPmRoot(process.cwd()) : pmRoot;\n const selectedRoot = scope === \"global\" ? roots.global : roots.project;\n return {\n pm_root: pmRoot,\n scope,\n settings_root: settingsRoot,\n selected_root: selectedRoot,\n roots,\n };\n}\n\nfunction resolveGithubOption(options: ExtensionCommandOptions): string | undefined {\n if (typeof options.gh === \"string\" && typeof options.github === \"string\" && options.gh.trim() !== options.github.trim()) {\n throw new PmCliError('Options \"--gh\" and \"--github\" must match when both are provided.', EXIT_CODE.USAGE);\n }\n if (typeof options.gh === \"string\" && options.gh.trim().length > 0) {\n return options.gh.trim();\n }\n if (typeof options.github === \"string\" && options.github.trim().length > 0) {\n return options.github.trim();\n }\n return undefined;\n}\n\nfunction requireTarget(target: string | undefined, action: ExtensionCommandAction): string {\n const normalized = target?.trim();\n if (!normalized) {\n if (action === \"init\") {\n throw new PmCliError(\n 'Action \"init\" requires a scaffold target path (for example: pm package init ./my-package or pm extension init ./my-extension).',\n EXIT_CODE.USAGE,\n );\n }\n throw new PmCliError(`Action \"${action}\" requires an extension name or source target argument.`, EXIT_CODE.USAGE);\n }\n return normalized;\n}\n\nfunction collectGlobalOutputOverrideDoctorWarnings(\n activationResult: Awaited<ReturnType<typeof activateExtensions>>,\n): string[] {\n const warnings: string[] = [];\n for (const entry of activationResult.services.overrides) {\n if (entry.service !== \"output_format\") {\n continue;\n }\n warnings.push(`extension_output_service_override_global:${entry.service}:${entry.layer}:${entry.name}`);\n }\n for (const entry of activationResult.renderers.overrides) {\n warnings.push(`extension_output_renderer_override_global:${entry.format}:${entry.layer}:${entry.name}`);\n }\n return [...new Set(warnings)].sort((left, right) => left.localeCompare(right));\n}\n\n/**\n * Implements run extension for the public runtime surface of this module.\n */\nexport async function runExtension(\n target: string | undefined,\n options: ExtensionCommandOptions,\n global: GlobalOptions,\n): Promise<ExtensionCommandResult> {\n const action = resolveAction(target, options);\n if ((options.strictExit === true || options.failOnWarn === true) && action !== \"doctor\") {\n throw new PmCliError(\"--strict-exit and --fail-on-warn are only valid with --doctor.\", EXIT_CODE.USAGE);\n }\n if (options.trace === true && action !== \"doctor\") {\n throw new PmCliError(\"--trace is only valid with --doctor.\", EXIT_CODE.USAGE);\n }\n if (options.watch === true && action !== \"reload\") {\n throw new PmCliError(\"--watch is only valid with --reload.\", EXIT_CODE.USAGE);\n }\n if (options.runtimeProbe === true && action !== \"manage\") {\n throw new PmCliError(\"--runtime-probe is only valid with --manage.\", EXIT_CODE.USAGE);\n }\n if (options.fixManagedState === true && action !== \"manage\" && action !== \"doctor\") {\n throw new PmCliError(\"--fix-managed-state is only valid with --manage or --doctor.\", EXIT_CODE.USAGE);\n }\n if (options.capability !== undefined && action !== \"init\") {\n throw new PmCliError(\"--capability is only valid with --init/--scaffold.\", EXIT_CODE.USAGE);\n }\n /* c8 ignore start -- alias-normalization matrix is covered by resolveAction tests; this IIFE only rewrites positional aliases */\n const normalizedTarget = (() => {\n const normalizedInput = target?.trim().toLowerCase();\n if (action === \"doctor\" && normalizedInput === \"doctor\") {\n return undefined;\n }\n if (action === \"reload\" && normalizedInput === \"reload\") {\n return undefined;\n }\n if (action === \"catalog\" && normalizedInput === \"catalog\") {\n return undefined;\n }\n const inferredInitAlias =\n action === \"init\" &&\n options.init !== true &&\n options.scaffold !== true &&\n (normalizedInput === \"init\" || normalizedInput === \"scaffold\");\n if (inferredInitAlias) {\n return undefined;\n }\n return target;\n })();\n /* c8 ignore stop */\n const scope = resolveScope(options);\n const resolvedRoots = resolveExtensionRootsForScope(scope, global);\n const warnings: string[] = [];\n\n const withResult = (details: Record<string, unknown>): ExtensionCommandResult => {\n const result: ExtensionCommandResult = {\n ok: true,\n action,\n scope,\n roots: action === \"catalog\" && typeof options.fields === \"string\" && options.fields.trim().length > 0\n ? {\n project: \"project\",\n global: \"global\",\n selected: scope,\n settings_root: \"project\",\n }\n : {\n project: resolvedRoots.roots.project,\n global: resolvedRoots.roots.global,\n selected: resolvedRoots.selected_root,\n settings_root: resolvedRoots.settings_root,\n },\n warnings: [...new Set(warnings)].sort((left, right) => left.localeCompare(right)),\n details,\n };\n if (action === \"doctor\") {\n Object.defineProperty(result, NATIVE_OUTPUT_MARKER, {\n value: true,\n enumerable: false,\n configurable: false,\n });\n }\n return result;\n };\n\n if (action === \"init\") {\n const githubOption = resolveGithubOption(options);\n if (githubOption !== undefined || (typeof options.ref === \"string\" && options.ref.trim().length > 0)) {\n throw new PmCliError('Action \"init\" does not accept --gh/--github/--ref options.', EXIT_CODE.USAGE);\n }\n const scaffoldTarget = requireTarget(normalizedTarget, action);\n const scaffold = await scaffoldExtensionProject(scaffoldTarget, options.vocabulary ?? \"extension\", options.capability);\n const quotedTargetPath = JSON.stringify(scaffold.target_path);\n // Forward-slash the path for the copy-pasteable `cd` hint: Windows cmd.exe /\n // PowerShell reject the doubled backslashes JSON.stringify emits, while both\n // shells (and POSIX) accept forward slashes.\n const quotedShellTargetPath = JSON.stringify(scaffold.target_path.replace(/\\\\/g, \"/\"));\n return withResult({\n scaffolded: scaffold.created_directory || scaffold.files.some((entry) => entry.status === \"created\"),\n extension: {\n name: scaffold.extension_name,\n command: scaffold.command_name,\n },\n capability: scaffold.capability,\n target_path: scaffold.target_path,\n created_directory: scaffold.created_directory,\n files: scaffold.files,\n next_steps: [\n `Install the scaffold: ${options.vocabulary === \"package\" ? \"pm install --project\" : \"pm extension --install --project\"} ${quotedTargetPath}`,\n `Smoke-test command path: pm ${scaffold.command_name}`,\n ...(options.vocabulary === \"package\"\n ? [`Validate the sample test: cd ${quotedShellTargetPath}, then run \"npm install\" and \"npm test\"`]\n : []),\n `Run diagnostics: ${options.vocabulary === \"package\" ? \"pm package doctor\" : \"pm extension --doctor\"} --project --detail summary`,\n ],\n });\n }\n\n if (action === \"reload\") {\n if (normalizedTarget !== undefined) {\n throw new PmCliError('Action \"reload\" does not accept a target argument.', EXIT_CODE.USAGE);\n }\n const settings = await readSettings(resolvedRoots.settings_root);\n const reloadToken = nextExtensionReloadToken();\n const reloaded = await loadExtensions({\n pmRoot: resolvedRoots.settings_root,\n settings,\n cwd: process.cwd(),\n noExtensions: global.noExtensions,\n reload_token: reloadToken,\n cache_bust: true,\n });\n warnings.push(...reloaded.warnings);\n const activation = await activateExtensions(reloaded);\n warnings.push(...activation.warnings);\n const details = {\n reload: {\n token: reloadToken,\n cache_bust: true,\n watch: options.watch === true,\n },\n loaded_count: reloaded.loaded.length,\n failed_count: reloaded.failed.length,\n activated_count: Math.max(0, reloaded.loaded.length - activation.failed.length),\n activation_failed_count: activation.failed.length,\n loaded_extensions: reloaded.loaded.map((entry) => ({\n name: entry.name,\n layer: entry.layer,\n version: entry.version,\n })),\n failed_extensions: reloaded.failed.map((entry) => ({\n name: entry.name,\n layer: entry.layer,\n error: entry.error,\n })),\n activation_failures: activation.failed.map((entry) => ({\n name: entry.name,\n layer: entry.layer,\n error: entry.error,\n })),\n };\n if (options.watch === true) {\n warnings.push(\"extension_reload_watch_hint:watch_mode_requested_non_interactive_single_pass_only\");\n }\n return withResult(details);\n }\n\n if (action === \"catalog\") {\n if (typeof normalizedTarget === \"string\" && normalizedTarget.length > 0 && normalizedTarget !== \"catalog\") {\n throw new PmCliError('Action \"catalog\" does not accept a package target.', EXIT_CODE.USAGE);\n }\n return withResult(await buildBundledPackageCatalog(scope, global, options));\n }\n\n if (action === \"install\") {\n const githubOption = resolveGithubOption(options);\n const explicitSourceInput = githubOption ?? requireTarget(normalizedTarget, action);\n if (typeof githubOption !== \"string\" && isBundledPackageInstallAllTarget(explicitSourceInput)) {\n if (typeof options.ref === \"string\" && options.ref.trim().length > 0) {\n throw new PmCliError('Action \"install all\" does not accept --ref.', EXIT_CODE.USAGE);\n }\n const aliases = await listBundledPackageAliases();\n const packages: Array<{ alias: string; result: ExtensionCommandResult }> = [];\n for (const alias of aliases) {\n packages.push({\n alias,\n result: await runExtension(alias, { ...options, install: true }, global),\n });\n }\n for (const entry of packages) {\n warnings.push(...entry.result.warnings);\n }\n return withResult({\n installed_all: true,\n installed_count: packages.length,\n packages: packages.map((entry) => ({\n alias: entry.alias,\n ok: entry.result.ok,\n extension: (entry.result.details as { extension?: unknown }).extension,\n source: (entry.result.details as { source?: unknown }).source,\n destination_path: (entry.result.details as { destination_path?: unknown }).destination_path,\n activated: (entry.result.details as { activated?: unknown }).activated,\n settings_changed: (entry.result.details as { settings_changed?: unknown }).settings_changed,\n command_paths: (entry.result.details as { command_paths?: unknown }).command_paths,\n action_paths: (entry.result.details as { action_paths?: unknown }).action_paths,\n command_discovery: (entry.result.details as { command_discovery?: unknown }).command_discovery,\n warnings: entry.result.warnings,\n })),\n });\n }\n /* c8 ignore start -- github/local alias-source split is exercised in install-action integration tests */\n const bundledAliasSource =\n typeof githubOption === \"string\" ? null : await resolveBundledExtensionAliasSource(explicitSourceInput);\n /* c8 ignore stop */\n const bundledAliasName = bundledAliasSource === null ? null : explicitSourceInput.trim().toLowerCase();\n const sourceInput = bundledAliasSource ?? explicitSourceInput;\n /* c8 ignore start -- install-source branch combinations are covered in install-sources focused tests */\n const installSource = parseExtensionInstallSource(sourceInput, {\n forceGithub: typeof githubOption === \"string\",\n ref: options.ref,\n });\n /* c8 ignore stop */\n const resolvedSource = await resolveInstallSource(installSource);\n try {\n const validated = await validateExtensionDirectory(resolvedSource.directory);\n const destinationDirectoryName = normalizeManagedDirectoryName(validated.manifest.name);\n return await withExtensionInstallLock(resolvedRoots.settings_root, destinationDirectoryName, async () => {\n const settings = await readSettings(resolvedRoots.settings_root);\n const managedStateRead = await readManagedExtensionState(resolvedRoots.selected_root);\n warnings.push(...managedStateRead.warnings);\n const destinationDirectory = path.join(resolvedRoots.selected_root, destinationDirectoryName);\n const destinationExists = await pathExists(destinationDirectory);\n const installInPlace = await areDirectoriesEquivalent(validated.directory, destinationDirectory);\n\n await fs.mkdir(resolvedRoots.selected_root, { recursive: true });\n if (!installInPlace) {\n await copyExtensionDirectoryForInstall(validated.directory, destinationDirectory);\n }\n\n /* c8 ignore start -- source-shape branch combinations are exercised in install-source focused tests */\n const sourceRecord: ManagedExtensionSource =\n bundledAliasName\n ? {\n kind: \"builtin\",\n input: bundledAliasName,\n location: bundledAliasName,\n name: bundledAliasName,\n }\n : installSource.kind === \"local\"\n ? {\n kind: \"local\",\n input: installSource.input,\n location: installSource.absolute_path,\n }\n : installSource.kind === \"npm\"\n ? {\n kind: \"npm\",\n input: installSource.input,\n location: resolvedSource.resolved_subpath ?? \".\",\n package: resolvedSource.npm_package,\n version: resolvedSource.npm_version,\n }\n : {\n kind: \"github\",\n input: installSource.input,\n location: resolvedSource.resolved_subpath ?? installSource.subpath ?? \".\",\n repository: installSource.repository,\n owner: installSource.owner,\n repo: installSource.repo,\n ref: installSource.ref,\n subpath: resolvedSource.resolved_subpath ?? installSource.subpath,\n commit: resolvedSource.commit,\n };\n /* c8 ignore stop */\n\n const now = nowIso();\n const existingManagedEntry = managedStateRead.state.entries.find(\n (entry) => normalizeExtensionNameForMatch(entry.name) === normalizeExtensionNameForMatch(validated.manifest.name),\n );\n const sourceUnchanged =\n existingManagedEntry !== undefined &&\n existingManagedEntry.manifest_version === validated.manifest.version &&\n managedExtensionSourcesEquivalent(existingManagedEntry.source, sourceRecord);\n const managedState = upsertManagedEntry(managedStateRead.state, {\n name: validated.manifest.name,\n directory: destinationDirectoryName,\n scope,\n manifest_version: validated.manifest.version,\n manifest_entry: validated.manifest.entry,\n capabilities: [...validated.manifest.capabilities],\n installed_at: existingManagedEntry?.installed_at ?? now,\n updated_at: sourceUnchanged ? existingManagedEntry.updated_at : now,\n source: sourceRecord,\n });\n await writeManagedExtensionState(resolvedRoots.selected_root, managedState);\n\n const activationChanged = ensureActivated(settings, validated.manifest.name);\n if (activationChanged) {\n await writeSettings(resolvedRoots.settings_root, settings, \"settings:write\");\n }\n const refreshedInstalled = await listInstalledExtensions(resolvedRoots.selected_root, scope, settings, managedState);\n warnings.push(...refreshedInstalled.warnings);\n const runtimeProbe = await probeRuntimeCommandPathsForInstall(\n resolvedRoots.pm_root,\n settings,\n refreshedInstalled.extensions,\n global,\n );\n warnings.push(...runtimeProbe.warnings);\n const commandSummary = summarizeRuntimeCommandPathsForExtension(validated.manifest.name, runtimeProbe.installed);\n const installActivationFailure = findActivationFailureByName(\n validated.manifest.name,\n runtimeProbe.activation_failures,\n scope,\n );\n const runtimeActivationStatus = resolveInstallRuntimeActivationStatus(\n validated.manifest.name,\n scope,\n runtimeProbe.installed,\n installActivationFailure,\n );\n\n return withResult({\n extension: {\n name: validated.manifest.name,\n version: validated.manifest.version,\n entry: validated.manifest.entry,\n capabilities: validated.manifest.capabilities,\n directory: destinationDirectoryName,\n },\n source: sourceRecord,\n destination_path: destinationDirectory,\n overwritten: destinationExists && !installInPlace,\n installed_in_place: installInPlace,\n activated: true,\n settings_changed: activationChanged,\n runtime_activation_status: runtimeActivationStatus,\n command_paths: commandSummary.command_paths,\n action_paths: commandSummary.action_paths,\n command_discovery: buildInstallCommandDiscovery(validated.manifest.name, sourceRecord, commandSummary),\n activation_diagnostics: {\n failed_count: runtimeProbe.activation_failures.length,\n failed: runtimeProbe.activation_failures,\n installed_extension_failed: installActivationFailure ?? null,\n },\n });\n });\n } finally {\n /* c8 ignore start -- cleanup hooks are only present for transient install sources */\n if (resolvedSource.cleanup) {\n await resolvedSource.cleanup();\n }\n /* c8 ignore stop */\n }\n }\n\n if (action === \"adopt-all\") {\n if (normalizedTarget !== undefined) {\n throw new PmCliError('Action \"adopt-all\" does not accept a target argument.', EXIT_CODE.USAGE);\n }\n const githubOption = resolveGithubOption(options);\n if (githubOption !== undefined || (typeof options.ref === \"string\" && options.ref.trim().length > 0)) {\n throw new PmCliError('Action \"adopt-all\" does not accept --gh/--github/--ref options.', EXIT_CODE.USAGE);\n }\n const settings = await readSettings(resolvedRoots.settings_root);\n const managedStateRead = await readManagedExtensionState(resolvedRoots.selected_root);\n warnings.push(...managedStateRead.warnings);\n const installed = await listInstalledExtensions(resolvedRoots.selected_root, scope, settings, managedStateRead.state);\n warnings.push(...installed.warnings);\n const adoption = await adoptUnmanagedExtensions(\n resolvedRoots.selected_root,\n scope,\n installed.extensions,\n managedStateRead.state,\n );\n const refreshedInstalled = await listInstalledExtensions(resolvedRoots.selected_root, scope, settings, adoption.state);\n warnings.push(...refreshedInstalled.warnings);\n const triage = buildExtensionTriageSummary(scope, warnings, refreshedInstalled.extensions, options);\n warnings.push(...triage.warnings);\n /* c8 ignore start -- refresh-entry optional metadata is display-only and exercised indirectly */\n const adoptedDetails = adoption.adopted_entries.map((entry) => {\n const refreshedEntry =\n refreshedInstalled.extensions.find(\n (candidate) =>\n normalizeExtensionNameForMatch(candidate.name) === normalizeExtensionNameForMatch(entry.name) &&\n normalizeExtensionNameForMatch(candidate.directory) === normalizeExtensionNameForMatch(entry.directory),\n ) ??\n /* c8 ignore next 3 -- fallback only matters if a manifest renames between adopt and refresh */\n refreshedInstalled.extensions.find(\n (candidate) => normalizeExtensionNameForMatch(candidate.directory) === normalizeExtensionNameForMatch(entry.directory),\n );\n return {\n ...entry,\n update_check_status: refreshedEntry?.update_check_status ?? null,\n update_check_reason: refreshedEntry?.update_check_reason ?? null,\n };\n });\n /* c8 ignore stop */\n /* c8 ignore start -- adopt-all summary booleans are deterministic mirrors of adoptedDetails length */\n return withResult({\n adopted_all: adoptedDetails.length > 0,\n adopted_count: adoptedDetails.length,\n already_managed_count: adoption.already_managed_count,\n extensions: adoptedDetails,\n triage,\n warning_codes: triage.warning_codes,\n update_health_partial: triage.update_health_partial,\n update_health_coverage: triage.update_health_coverage,\n });\n /* c8 ignore stop */\n }\n\n if (action === \"adopt\") {\n const extensionTarget = requireTarget(normalizedTarget, action);\n const githubOption = resolveGithubOption(options);\n const settings = await readSettings(resolvedRoots.settings_root);\n const managedStateRead = await readManagedExtensionState(resolvedRoots.selected_root);\n warnings.push(...managedStateRead.warnings);\n const installed = await listInstalledExtensions(resolvedRoots.selected_root, scope, settings, managedStateRead.state);\n warnings.push(...installed.warnings);\n const candidate = await resolveInstalledExtensionCandidate(installed.extensions, extensionTarget);\n if (!candidate) {\n throw new PmCliError(`Installed extension \"${extensionTarget}\" was not found in ${scope} scope.`, EXIT_CODE.NOT_FOUND);\n }\n if (candidate.managed) {\n return withResult({\n adopted: false,\n already_managed: true,\n extension: {\n name: candidate.name,\n directory: candidate.directory,\n },\n });\n }\n\n const extensionDirectory = path.join(resolvedRoots.selected_root, candidate.directory);\n const validated = await validateExtensionDirectory(extensionDirectory);\n const now = nowIso();\n const sourceRecord: ManagedExtensionSource =\n githubOption === undefined\n ? {\n kind: \"local\",\n input: extensionTarget,\n location: extensionDirectory,\n }\n : (() => {\n const parsed = parseExtensionInstallSource(githubOption, {\n forceGithub: true,\n ref: options.ref,\n });\n /* c8 ignore start -- forceGithub guarantees a github-kind install source */\n if (parsed.kind !== \"github\") {\n throw new PmCliError(`Invalid GitHub shorthand \"${githubOption}\".`, EXIT_CODE.USAGE);\n }\n /* c8 ignore stop */\n /* c8 ignore start -- github subpath defaults are validated in install-source parser tests */\n return {\n kind: \"github\",\n input: parsed.input,\n location: parsed.subpath ?? \".\",\n repository: parsed.repository,\n owner: parsed.owner,\n repo: parsed.repo,\n ref: parsed.ref,\n subpath: parsed.subpath,\n };\n /* c8 ignore stop */\n })();\n const managedState = upsertManagedEntry(managedStateRead.state, {\n name: validated.manifest.name,\n directory: candidate.directory,\n scope,\n manifest_version: validated.manifest.version,\n manifest_entry: validated.manifest.entry,\n capabilities: [...validated.manifest.capabilities],\n installed_at: now,\n updated_at: now,\n source: sourceRecord,\n });\n await writeManagedExtensionState(resolvedRoots.selected_root, managedState);\n const refreshedInstalled = await listInstalledExtensions(resolvedRoots.selected_root, scope, settings, managedState);\n warnings.push(...refreshedInstalled.warnings);\n /* c8 ignore start -- fallback only matters if a manifest renames between adopt and refresh */\n const refreshedEntry =\n refreshedInstalled.extensions.find(\n (entry) => normalizeExtensionNameForMatch(entry.name) === normalizeExtensionNameForMatch(validated.manifest.name),\n ) ??\n refreshedInstalled.extensions.find(\n (entry) => normalizeExtensionNameForMatch(entry.directory) === normalizeExtensionNameForMatch(candidate.directory),\n );\n /* c8 ignore stop */\n\n /* c8 ignore start -- adopt result mirrors refreshedEntry optionals for display only */\n return withResult({\n adopted: true,\n extension: {\n name: validated.manifest.name,\n directory: candidate.directory,\n version: validated.manifest.version,\n entry: validated.manifest.entry,\n },\n source: sourceRecord,\n update_check_status: refreshedEntry?.update_check_status ?? null,\n update_check_reason: refreshedEntry?.update_check_reason ?? null,\n });\n /* c8 ignore stop */\n }\n\n if (action === \"uninstall\") {\n const extensionTarget = requireTarget(normalizedTarget, action);\n const settings = await readSettings(resolvedRoots.settings_root);\n const managedStateRead = await readManagedExtensionState(resolvedRoots.selected_root);\n warnings.push(...managedStateRead.warnings);\n const installed = await listInstalledExtensions(resolvedRoots.selected_root, scope, settings, managedStateRead.state);\n warnings.push(...installed.warnings);\n const candidate = await resolveInstalledExtensionCandidate(installed.extensions, extensionTarget);\n if (!candidate) {\n throw new PmCliError(`Installed extension \"${extensionTarget}\" was not found in ${scope} scope.`, EXIT_CODE.NOT_FOUND);\n }\n const destinationDirectory = path.join(resolvedRoots.selected_root, candidate.directory);\n await fs.rm(destinationDirectory, { recursive: true, force: true });\n\n const updatedState: ManagedExtensionState = {\n ...managedStateRead.state,\n updated_at: nowIso(),\n /* c8 ignore start -- uninstall filter keeps both name+directory guards for legacy managed-state migrations */\n entries: managedStateRead.state.entries.filter(\n (entry) =>\n normalizeExtensionNameForMatch(entry.name) !== normalizeExtensionNameForMatch(candidate.name) &&\n normalizeExtensionNameForMatch(entry.directory) !== normalizeExtensionNameForMatch(candidate.directory),\n ),\n /* c8 ignore stop */\n };\n await writeManagedExtensionState(resolvedRoots.selected_root, updatedState);\n\n const stateChanged = clearExtensionState(settings, candidate.name);\n if (stateChanged) {\n await writeSettings(resolvedRoots.settings_root, settings, \"settings:write\");\n }\n\n return withResult({\n removed: true,\n extension: {\n name: candidate.name,\n directory: candidate.directory,\n },\n destination_path: destinationDirectory,\n settings_changed: stateChanged,\n });\n }\n\n if (action === \"activate\" || action === \"deactivate\") {\n const extensionTarget = requireTarget(normalizedTarget, action);\n const settings = await readSettings(resolvedRoots.settings_root);\n const managedStateRead = await readManagedExtensionState(resolvedRoots.selected_root);\n warnings.push(...managedStateRead.warnings);\n const installed = await listInstalledExtensions(resolvedRoots.selected_root, scope, settings, managedStateRead.state);\n warnings.push(...installed.warnings);\n const candidate = await resolveInstalledExtensionCandidate(installed.extensions, extensionTarget);\n if (!candidate) {\n throw new PmCliError(`Installed extension \"${extensionTarget}\" was not found in ${scope} scope.`, EXIT_CODE.NOT_FOUND);\n }\n\n const settingsChanged = action === \"activate\" ? ensureActivated(settings, candidate.name) : ensureDeactivated(settings, candidate.name);\n if (settingsChanged) {\n await writeSettings(resolvedRoots.settings_root, settings, \"settings:write\");\n }\n\n return withResult({\n extension: {\n name: candidate.name,\n directory: candidate.directory,\n },\n active: action === \"activate\",\n settings_changed: settingsChanged,\n settings: {\n enabled: [...settings.extensions.enabled],\n disabled: [...settings.extensions.disabled],\n },\n });\n }\n\n if (action === \"doctor\") {\n if (normalizedTarget && normalizedTarget.trim().length > 0) {\n throw new PmCliError('Action \"doctor\" does not accept a target argument.', EXIT_CODE.USAGE);\n }\n const detailMode = parseDoctorDetailMode(options.detail);\n const includeTrace = options.trace === true;\n if (includeTrace && detailMode !== \"deep\") {\n throw new PmCliError(\"--trace requires --detail deep with --doctor.\", EXIT_CODE.USAGE);\n }\n const settings = await readSettings(resolvedRoots.settings_root);\n const managedStateRead = await readManagedExtensionState(resolvedRoots.selected_root);\n warnings.push(...managedStateRead.warnings);\n const installed = await listInstalledExtensions(resolvedRoots.selected_root, scope, settings, managedStateRead.state);\n warnings.push(...installed.warnings);\n let managedState = managedStateRead.state;\n const managedStateFix =\n options.fixManagedState === true\n ? await adoptUnmanagedExtensions(\n resolvedRoots.selected_root,\n scope,\n installed.extensions,\n managedStateRead.state,\n )\n : null;\n if (managedStateFix) {\n managedState = managedStateFix.state;\n }\n const refreshedInstalled = await listInstalledExtensions(resolvedRoots.selected_root, scope, settings, managedState);\n warnings.push(...refreshedInstalled.warnings);\n\n const loadResult = await loadExtensions({\n pmRoot: resolvedRoots.pm_root,\n settings,\n cwd: process.cwd(),\n noExtensions: global.noExtensions === true,\n });\n const activationResult = await activateExtensions({\n ...loadResult,\n loaded: loadResult.loaded,\n });\n warnings.push(...loadResult.warnings);\n warnings.push(...classifyDoctorLoadFailureWarnings(loadResult.failed));\n warnings.push(...activationResult.warnings);\n warnings.push(...classifyDoctorActivationFailureWarnings(activationResult.failed));\n warnings.push(...classifyUnusedCapabilityWarnings(loadResult, activationResult));\n warnings.push(...collectGlobalOutputOverrideDoctorWarnings(activationResult));\n const runtimeInstalledExtensions = applyDoctorRuntimeActivationState(refreshedInstalled.extensions, loadResult, activationResult);\n const doctorConsistency = buildDoctorConsistencySummary(\n scope,\n runtimeInstalledExtensions,\n loadResult.loaded.map((entry) => ({ layer: entry.layer, name: entry.name })),\n loadResult.failed.map((entry) => ({ name: entry.name })),\n loadResult.disabled_by_flag,\n );\n warnings.push(...doctorConsistency.warnings);\n const updateCheckWarnings = runtimeInstalledExtensions\n .filter((entry) => entry.update_check_status === \"failed\")\n .map((entry) => `extension_update_check_failed:${entry.name}`);\n warnings.push(...updateCheckWarnings);\n\n const triage = buildExtensionTriageSummary(scope, warnings, runtimeInstalledExtensions, options);\n warnings.push(...triage.warnings);\n const normalizedWarnings = [...triage.warnings];\n const policySummary = {\n mode: loadResult.policy.mode,\n trust_mode: loadResult.policy.trust_mode,\n require_provenance: loadResult.policy.require_provenance,\n default_sandbox_profile: loadResult.policy.default_sandbox_profile,\n // Honest trust model (ADR pm-6ef3): keep this caveat to one concise line.\n sandbox_enforcement:\n \"advisory: sandbox_profile/permissions are declaration-based load gates, not runtime isolation (ADR pm-6ef3)\",\n trusted_extensions_count: loadResult.policy.trusted_extensions.length,\n allowed_extensions_count: loadResult.policy.allowed_extensions.length,\n blocked_extensions_count: loadResult.policy.blocked_extensions.length,\n allowed_capabilities_count: loadResult.policy.allowed_capabilities.length,\n blocked_capabilities_count: loadResult.policy.blocked_capabilities.length,\n allowed_surfaces_count: loadResult.policy.allowed_surfaces.length,\n blocked_surfaces_count: loadResult.policy.blocked_surfaces.length,\n allowed_commands_count: loadResult.policy.allowed_commands.length,\n blocked_commands_count: loadResult.policy.blocked_commands.length,\n allowed_actions_count: loadResult.policy.allowed_actions.length,\n blocked_actions_count: loadResult.policy.blocked_actions.length,\n allowed_services_count: loadResult.policy.allowed_services.length,\n blocked_services_count: loadResult.policy.blocked_services.length,\n extension_override_count: loadResult.policy.extension_overrides.length,\n };\n const capabilityGuidance = collectUnknownCapabilityGuidance(normalizedWarnings);\n const capabilityContract = buildCapabilityContractMetadata();\n const warningCodes = triage.warning_codes;\n const remediation = [\n ...new Set(\n [\n ...triage.remediation,\n /* c8 ignore start -- vocabulary-specific remediation branches are copy-only variants */\n ...(loadResult.failed.length > 0\n ? [\n options.vocabulary === \"package\"\n ? \"Run pm package explore --project and pm package explore --global to inspect load failures.\"\n : \"Run pm extension --explore --project and pm extension --explore --global to inspect load failures.\",\n ]\n : []),\n ...(activationResult.failed.length > 0\n ? [\n options.vocabulary === \"package\"\n ? \"Review activation failures in pm package doctor --detail deep output.\"\n : \"Review activation failures in pm extension --doctor --detail deep output.\",\n ]\n : []),\n /* c8 ignore stop */\n ...(managedStateFix && managedStateFix.adopted_entries.length > 0\n ? [`Managed-state fix adopted ${managedStateFix.adopted_entries.length} extension(s).`]\n : []),\n ].map((entry) => entry.trim()).filter((entry) => entry.length > 0),\n ),\n ];\n\n const summary = {\n status: triage.status,\n scope,\n warning_count: triage.warning_count,\n warning_codes: warningCodes,\n total_extensions: runtimeInstalledExtensions.length,\n managed_total: runtimeInstalledExtensions.filter((entry) => entry.managed).length,\n enabled_total: runtimeInstalledExtensions.filter((entry) => entry.enabled).length,\n active_total: runtimeInstalledExtensions.filter((entry) => entry.active).length,\n unmanaged_loaded_extension_count: triage.unmanaged_loaded_extension_count,\n unmanaged_action_required_extension_count: triage.unmanaged_action_required_extension_count,\n unmanaged_expected_extension_count: triage.unmanaged_expected_extension_count,\n runtime_active_total: runtimeInstalledExtensions.filter((entry) => entry.runtime_active === true).length,\n activation_status_totals: {\n ok: runtimeInstalledExtensions.filter((entry) => entry.activation_status === \"ok\").length,\n failed: runtimeInstalledExtensions.filter((entry) => entry.activation_status === \"failed\").length,\n not_loaded: runtimeInstalledExtensions.filter((entry) => entry.activation_status === \"not_loaded\").length,\n unknown: runtimeInstalledExtensions.filter((entry) => entry.activation_status === \"unknown\").length,\n },\n unknown_capability_count: capabilityGuidance.length,\n capability_contract_version: capabilityContract.version,\n update_available_total: runtimeInstalledExtensions.filter((entry) => entry.update_available === true).length,\n update_health_coverage: triage.update_health_coverage,\n update_health_partial: triage.update_health_partial,\n update_check_failed_total: runtimeInstalledExtensions.filter((entry) => entry.update_check_status === \"failed\").length,\n load_failure_count: loadResult.failed.length,\n activation_failure_count: activationResult.failed.length,\n blocking_failure_count: loadResult.failed.length + activationResult.failed.length,\n has_blocking_failures: loadResult.failed.length + activationResult.failed.length > 0,\n consistency_warning_count: doctorConsistency.warnings.length,\n trace_enabled: includeTrace,\n policy: policySummary,\n remediation,\n };\n\n const managedStateFixSummary = managedStateFix\n ? {\n requested: true,\n applied: managedStateFix.adopted_entries.length > 0,\n adopted_count: managedStateFix.adopted_entries.length,\n already_managed_count: managedStateFix.already_managed_count,\n adopted_extensions: managedStateFix.adopted_entries.map((entry) => entry.name),\n }\n : {\n requested: false,\n applied: false,\n adopted_count: 0,\n already_managed_count: refreshedInstalled.extensions.filter((entry) => entry.managed).length,\n adopted_extensions: [] as string[],\n };\n\n const details: Record<string, unknown> = {\n mode: detailMode,\n summary,\n triage,\n trace_enabled: includeTrace,\n capability_contract: capabilityContract,\n capability_guidance: capabilityGuidance,\n managed_state_fix: managedStateFixSummary,\n policy: loadResult.policy,\n };\n if (detailMode === \"deep\") {\n const activationFailedDetails = includeTrace\n ? activationResult.failed\n : activationResult.failed.map((entry) => {\n const { trace: _trace, ...rest } = entry;\n return rest;\n });\n details.deep = {\n warnings: normalizedWarnings,\n warning_codes: warningCodes,\n capability_contract: capabilityContract,\n capability_guidance: capabilityGuidance,\n trace_enabled: includeTrace,\n managed_state: {\n path: managedStateRead.path,\n count: managedState.entries.length,\n entries: managedState.entries,\n },\n installed_extensions: runtimeInstalledExtensions,\n load: {\n roots: loadResult.roots,\n policy: loadResult.policy,\n warnings: loadResult.warnings,\n failed: loadResult.failed,\n loaded: loadResult.loaded.map((entry) => ({\n layer: entry.layer,\n directory: entry.directory,\n name: entry.name,\n version: entry.version,\n entry: entry.entry,\n priority: entry.priority,\n })),\n },\n activation: {\n failed: activationFailedDetails,\n warnings: activationResult.warnings,\n hook_counts: activationResult.hook_counts,\n registration_counts: activationResult.registration_counts,\n parser_override_count: activationResult.parser_override_count,\n preflight_override_count: activationResult.preflight_override_count,\n service_override_count: activationResult.service_override_count,\n renderer_override_count: activationResult.renderer_override_count,\n },\n consistency: doctorConsistency.summary,\n };\n if (includeTrace) {\n (details.deep as Record<string, unknown>).trace = {\n activation_failures: activationResult.failed\n .filter((entry) => entry.trace !== undefined)\n .map((entry) => ({\n layer: entry.layer,\n name: entry.name,\n entry_path: entry.entry_path,\n error: entry.error,\n method: entry.trace?.method,\n command: entry.trace?.command,\n capability: entry.trace?.capability,\n missing_capability: entry.trace?.missing_capability,\n registration_index: entry.trace?.registration_index,\n expected_schema: entry.trace?.expected_schema,\n hint: entry.trace?.hint,\n received: entry.trace?.received,\n })),\n };\n }\n }\n return withResult(details);\n }\n\n if (action === \"describe\") {\n const settings = await readSettings(resolvedRoots.settings_root);\n const loadResult = await loadExtensions({\n pmRoot: resolvedRoots.pm_root,\n settings,\n cwd: process.cwd(),\n noExtensions: global.noExtensions === true,\n });\n const activationResult = await activateExtensions(loadResult);\n warnings.push(...loadResult.warnings);\n warnings.push(...activationResult.warnings);\n const describeResult = buildExtensionDescribeResult(normalizedTarget, loadResult, activationResult);\n if (normalizedTarget !== undefined && describeResult.extensions.length === 0) {\n const noun = options.vocabulary === \"package\" ? \"package\" : \"extension\";\n throw new PmCliError(\n `No loaded ${noun} named \"${normalizedTarget}\" was found in ${scope} scope. Run pm ${noun} explore to list discovered ${noun}s.`,\n EXIT_CODE.NOT_FOUND,\n );\n }\n return withResult({\n target: describeResult.target,\n total: describeResult.total,\n extensions: describeResult.extensions,\n union: describeResult.union,\n });\n }\n\n /* c8 ignore start -- explore/manage action split is validated by dedicated command-action tests */\n if (action === \"explore\" || action === \"manage\") {\n const settings = await readSettings(resolvedRoots.settings_root);\n const configuredPolicy = buildExtensionPolicyDetails(settings.extensions.policy);\n const managedStateRead = await readManagedExtensionState(resolvedRoots.selected_root);\n warnings.push(...managedStateRead.warnings);\n const installed = await listInstalledExtensions(resolvedRoots.selected_root, scope, settings, managedStateRead.state);\n warnings.push(...installed.warnings);\n\n let managedState = managedStateRead.state;\n const managedStateFix =\n action === \"manage\" && options.fixManagedState === true\n ? await adoptUnmanagedExtensions(\n resolvedRoots.selected_root,\n scope,\n installed.extensions,\n managedStateRead.state,\n )\n : null;\n if (managedStateFix) {\n managedState = managedStateFix.state;\n }\n if (action === \"manage\") {\n const updates = await Promise.all(\n managedState.entries.map(async (entry) => {\n if (entry.source.kind !== \"github\") {\n return entry;\n }\n const updateStatus = await checkGithubUpdate(entry.source);\n return {\n ...entry,\n last_update_check_at: updateStatus.checked_at,\n last_update_remote_commit: updateStatus.remote_commit,\n update_available: updateStatus.available,\n update_error: updateStatus.error,\n };\n }),\n );\n managedState = {\n ...managedState,\n updated_at: nowIso(),\n entries: sortManagedEntries(updates),\n };\n await writeManagedExtensionState(resolvedRoots.selected_root, managedState);\n }\n\n const refreshedInstalled = await listInstalledExtensions(resolvedRoots.selected_root, scope, settings, managedState);\n warnings.push(...refreshedInstalled.warnings);\n if (action === \"manage\") {\n const updateWarnings = refreshedInstalled.extensions\n .filter((entry) => entry.update_check_status === \"failed\")\n .map((entry) => `extension_update_check_failed:${entry.name}`);\n warnings.push(...updateWarnings);\n }\n let runtimeProbeSummary: Record<string, unknown> | undefined;\n let runtimeInstalledExtensions = refreshedInstalled.extensions;\n let runtimeActivationFailures: ActivationFailureDiagnostic[] | undefined;\n if (action === \"explore\" || options.runtimeProbe === true) {\n const loadResult = await loadExtensions({\n pmRoot: resolvedRoots.pm_root,\n settings,\n cwd: process.cwd(),\n noExtensions: global.noExtensions === true,\n });\n const activationResult = await activateExtensions({\n ...loadResult,\n loaded: loadResult.loaded,\n });\n warnings.push(...loadResult.warnings);\n warnings.push(...activationResult.warnings);\n runtimeInstalledExtensions = applyDoctorRuntimeActivationState(refreshedInstalled.extensions, loadResult, activationResult);\n runtimeActivationFailures = collectActivationFailureDiagnostics(activationResult.failed);\n runtimeProbeSummary = {\n requested: true,\n executed: true,\n reason: action === \"explore\" ? \"explore_defaults_to_runtime_probe\" : \"runtime_probe_requested\",\n load_failure_count: loadResult.failed.length,\n activation_failure_count: activationResult.failed.length,\n warning_count: [...new Set([...loadResult.warnings, ...activationResult.warnings])].length,\n policy: loadResult.policy,\n };\n } else if (action === \"manage\") {\n runtimeProbeSummary = {\n requested: false,\n executed: false,\n };\n }\n\n const triage = buildExtensionTriageSummary(scope, warnings, runtimeInstalledExtensions, options);\n warnings.push(...triage.warnings);\n const details: Record<string, unknown> = {\n total: runtimeInstalledExtensions.length,\n managed_total: runtimeInstalledExtensions.filter((entry) => entry.managed).length,\n enabled_total: runtimeInstalledExtensions.filter((entry) => entry.enabled).length,\n active_total: runtimeInstalledExtensions.filter((entry) => entry.active).length,\n extensions: runtimeInstalledExtensions,\n triage,\n policy: configuredPolicy,\n };\n if (runtimeActivationFailures !== undefined) {\n details.activation_diagnostics = {\n failed_count: runtimeActivationFailures.length,\n failed: runtimeActivationFailures,\n };\n }\n if (action === \"explore\") {\n details.runtime_probe = runtimeProbeSummary;\n }\n if (action === \"manage\") {\n details.runtime_probe = runtimeProbeSummary;\n details.managed_state_fix =\n managedStateFix !== null\n ? {\n requested: true,\n applied: managedStateFix.adopted_entries.length > 0,\n adopted_count: managedStateFix.adopted_entries.length,\n adopted_extensions: managedStateFix.adopted_entries.map((entry) => entry.name),\n already_managed_count: managedStateFix.already_managed_count,\n }\n : {\n requested: false,\n applied: false,\n adopted_count: 0,\n adopted_extensions: [],\n already_managed_count: runtimeInstalledExtensions.filter((entry) => entry.managed).length,\n };\n }\n return withResult(details);\n }\n /* c8 ignore stop */\n\n /* c8 ignore start -- resolveAction returns a closed ExtensionCommandAction union */\n throw new PmCliError(`Unsupported extension action \"${action}\".`, EXIT_CODE.USAGE);\n /* c8 ignore stop */\n}\n\nexport const _testOnly = {\n adoptUnmanagedExtensions,\n buildExtensionPolicyDetails,\n buildInstallCommandDiscovery,\n checkGithubUpdate,\n clearExtensionState,\n collectActivationFailureDiagnostics,\n findActivationFailureByName,\n resolveInstallRuntimeActivationStatus,\n collectGlobalOutputOverrideDoctorWarnings,\n copyExtensionDirectoryWithoutSelfNesting,\n isErrnoCode,\n isRetriableExtensionInstallCopyError,\n listInstalledExtensions,\n requireTarget,\n resolveAction,\n resolveCommandDiscoveryPackageName,\n resolveGithubOption,\n resolveInstalledExtensionCandidate,\n resolveScope,\n resolveUpdateCheckResolution,\n withExtensionInstallLock,\n};\n"],"names":[],"mappings":"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","debugId":"bc327a80-93b0-5be9-9ebf-8864cf67d23d"}