@unbrained/pm-cli 2026.7.7 → 2026.7.9

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 (428) hide show
  1. package/CHANGELOG.md +25 -0
  2. package/README.md +1 -0
  3. package/dist/cli/commands/close.js +5 -2
  4. package/dist/cli/commands/close.js.map +1 -1
  5. package/dist/cli/commands/completion.js +16 -2
  6. package/dist/cli/commands/completion.js.map +1 -1
  7. package/dist/cli/commands/context.d.ts +1 -0
  8. package/dist/cli/commands/context.js +4 -4
  9. package/dist/cli/commands/context.js.map +1 -1
  10. package/dist/cli/commands/contracts.d.ts +11 -0
  11. package/dist/cli/commands/contracts.js +112 -15
  12. package/dist/cli/commands/contracts.js.map +1 -1
  13. package/dist/cli/commands/create.js +4 -2
  14. package/dist/cli/commands/create.js.map +1 -1
  15. package/dist/cli/commands/extension.d.ts +23 -19
  16. package/dist/cli/commands/extension.js +167 -57
  17. package/dist/cli/commands/extension.js.map +1 -1
  18. package/dist/cli/commands/list.d.ts +4 -0
  19. package/dist/cli/commands/list.js +32 -3
  20. package/dist/cli/commands/list.js.map +1 -1
  21. package/dist/cli/commands/search.js +3 -3
  22. package/dist/cli/commands/search.js.map +1 -1
  23. package/dist/cli/commands/update.d.ts +32 -1
  24. package/dist/cli/commands/update.js +19 -2
  25. package/dist/cli/commands/update.js.map +1 -1
  26. package/dist/cli/help-content.js +28 -2
  27. package/dist/cli/help-content.js.map +1 -1
  28. package/dist/cli/register-list-query.js +5 -2
  29. package/dist/cli/register-list-query.js.map +1 -1
  30. package/dist/cli/register-operations.js +4 -2
  31. package/dist/cli/register-operations.js.map +1 -1
  32. package/dist/cli/register-setup.js +8 -2
  33. package/dist/cli/register-setup.js.map +1 -1
  34. package/dist/cli/registration-helpers.js +4 -2
  35. package/dist/cli/registration-helpers.js.map +1 -1
  36. package/dist/cli-bundle/chunks/append-CDPAYYSB.js +11 -0
  37. package/dist/cli-bundle/chunks/{append-PVCTBVJG.js → append-RSPHC423.js} +5 -5
  38. package/dist/cli-bundle/chunks/{chunk-6G6O3OPQ.js → chunk-26MFLA7K.js} +7 -7
  39. package/dist/cli-bundle/chunks/{chunk-LCFJ7XAM.js → chunk-2BVD4ZD2.js} +267 -232
  40. package/dist/cli-bundle/chunks/chunk-2BVD4ZD2.js.map +7 -0
  41. package/dist/cli-bundle/chunks/{chunk-7ML7JONU.js → chunk-2FKIIQMJ.js} +14 -14
  42. package/dist/cli-bundle/chunks/chunk-2FKIIQMJ.js.map +1 -0
  43. package/dist/cli-bundle/chunks/{chunk-H2SMKL2N.js → chunk-3FUXM574.js} +4 -4
  44. package/dist/cli-bundle/chunks/{chunk-DR2V5OIV.js → chunk-3SHDAKMF.js} +3 -3
  45. package/dist/cli-bundle/chunks/{chunk-MRFWUSVA.js → chunk-3UXIMY62.js} +3 -3
  46. package/dist/cli-bundle/chunks/{chunk-WCWVEXGA.js → chunk-3V5C7PUH.js} +2 -2
  47. package/dist/cli-bundle/chunks/{chunk-43YSKY75.js → chunk-3YJDIJIE.js} +3 -3
  48. package/dist/cli-bundle/chunks/{chunk-HX6QXV5P.js → chunk-4I7KS5ES.js} +2 -2
  49. package/dist/cli-bundle/chunks/{chunk-XHCVAZGM.js → chunk-4OCWJ2AP.js} +7 -7
  50. package/dist/cli-bundle/chunks/{chunk-C5ACVMOI.js → chunk-5RJ4LFD3.js} +34 -7
  51. package/dist/cli-bundle/chunks/chunk-5RJ4LFD3.js.map +7 -0
  52. package/dist/cli-bundle/chunks/{chunk-3TYOW6RR.js → chunk-5STY7NVM.js} +4 -4
  53. package/dist/cli-bundle/chunks/{chunk-7VQ3JJN5.js → chunk-5VAZHYVQ.js} +2 -2
  54. package/dist/cli-bundle/chunks/{chunk-4IQKDKGE.js → chunk-5ZMZF53A.js} +7 -7
  55. package/dist/cli-bundle/chunks/{chunk-6LCJRGPD.js → chunk-63PZJCKO.js} +10 -7
  56. package/dist/cli-bundle/chunks/chunk-63PZJCKO.js.map +1 -0
  57. package/dist/cli-bundle/chunks/{chunk-MCEUKJKW.js → chunk-6FU5BVRB.js} +4 -4
  58. package/dist/cli-bundle/chunks/{chunk-AJUON7E6.js → chunk-6RR4XM5H.js} +3 -3
  59. package/dist/cli-bundle/chunks/{chunk-TEISGNSH.js → chunk-6TD5QGIB.js} +4 -4
  60. package/dist/cli-bundle/chunks/{chunk-565WYS5W.js → chunk-6WCXSC5V.js} +5 -5
  61. package/dist/cli-bundle/chunks/{chunk-NWWL22C7.js → chunk-6ZKDMEVT.js} +3 -3
  62. package/dist/cli-bundle/chunks/{chunk-VLEA2UTQ.js → chunk-7QKSLAHB.js} +2 -2
  63. package/dist/cli-bundle/chunks/{chunk-S6VC2A2K.js → chunk-7TBUV7XS.js} +4 -4
  64. package/dist/cli-bundle/chunks/{chunk-YPMZMKN7.js → chunk-7UCBLJDF.js} +2 -2
  65. package/dist/cli-bundle/chunks/{chunk-4MZOKTI2.js → chunk-AEOFBBWO.js} +3 -3
  66. package/dist/cli-bundle/chunks/{chunk-QFBSP3NI.js → chunk-ASSVI7FP.js} +12 -10
  67. package/dist/cli-bundle/chunks/{chunk-QFBSP3NI.js.map → chunk-ASSVI7FP.js.map} +1 -1
  68. package/dist/cli-bundle/chunks/{chunk-ZO7CLOY2.js → chunk-BFNFTHWQ.js} +3 -3
  69. package/dist/cli-bundle/chunks/{chunk-YNCFP5AR.js → chunk-BPJ5NYSJ.js} +2 -2
  70. package/dist/cli-bundle/chunks/{chunk-J2VGADNG.js → chunk-BPYVKTZE.js} +122 -27
  71. package/dist/cli-bundle/chunks/chunk-BPYVKTZE.js.map +1 -0
  72. package/dist/cli-bundle/chunks/{chunk-P3MJJW7P.js → chunk-C3YU3TXX.js} +2 -2
  73. package/dist/cli-bundle/chunks/{chunk-SY75LYXR.js → chunk-C6XSTACC.js} +3 -3
  74. package/dist/cli-bundle/chunks/{chunk-S547WBYG.js → chunk-CEX2DQXZ.js} +600 -96
  75. package/dist/cli-bundle/chunks/chunk-CEX2DQXZ.js.map +7 -0
  76. package/dist/cli-bundle/chunks/{chunk-2TILG6F2.js → chunk-CGDUIPJL.js} +3 -3
  77. package/dist/cli-bundle/chunks/{chunk-LZQU6XJG.js → chunk-CHSXGTWF.js} +23 -9
  78. package/dist/cli-bundle/chunks/{chunk-LZQU6XJG.js.map → chunk-CHSXGTWF.js.map} +2 -2
  79. package/dist/cli-bundle/chunks/{chunk-J7BOLHAV.js → chunk-CXH7EMSB.js} +3 -3
  80. package/dist/cli-bundle/chunks/{chunk-W5HXHC7C.js → chunk-D6J5673C.js} +4 -4
  81. package/dist/cli-bundle/chunks/{chunk-XZWL7VNE.js → chunk-DBV5A7FT.js} +9 -7
  82. package/dist/cli-bundle/chunks/chunk-DBV5A7FT.js.map +1 -0
  83. package/dist/cli-bundle/chunks/{chunk-ARKHKYYS.js → chunk-DQLP22K2.js} +7 -7
  84. package/dist/cli-bundle/chunks/{chunk-YPD7SQ5P.js → chunk-EEJKHF7M.js} +5 -5
  85. package/dist/cli-bundle/chunks/{chunk-EDO7VXSO.js → chunk-EP2CKDS7.js} +2 -2
  86. package/dist/cli-bundle/chunks/{chunk-SIM5JDON.js → chunk-F5DDGY6R.js} +3 -3
  87. package/dist/cli-bundle/chunks/{chunk-I74FMIWA.js → chunk-FFB3WITE.js} +3 -3
  88. package/dist/cli-bundle/chunks/{chunk-43UQN754.js → chunk-FJR2S7S4.js} +7 -7
  89. package/dist/cli-bundle/chunks/{chunk-CJQM7O7R.js → chunk-FOJEBRDD.js} +5 -5
  90. package/dist/cli-bundle/chunks/{chunk-E3YQFSFE.js → chunk-GLMJLBLR.js} +3 -3
  91. package/dist/cli-bundle/chunks/{chunk-KTGJ2CBU.js → chunk-GO2X6ZRB.js} +3 -3
  92. package/dist/cli-bundle/chunks/{chunk-DDDWVPID.js → chunk-GSQVQINP.js} +4 -4
  93. package/dist/cli-bundle/chunks/{chunk-EVEPHNXJ.js → chunk-GZ365M6E.js} +4 -4
  94. package/dist/cli-bundle/chunks/{chunk-VGO73OCK.js → chunk-HZZ3AC27.js} +3 -3
  95. package/dist/cli-bundle/chunks/{chunk-7Y5N34HX.js → chunk-IINCZYM3.js} +3 -3
  96. package/dist/cli-bundle/chunks/{chunk-GLS6VMWI.js → chunk-INOWVPUD.js} +5 -5
  97. package/dist/cli-bundle/chunks/{chunk-PDXJXEZJ.js → chunk-J6AD3GWC.js} +2 -2
  98. package/dist/cli-bundle/chunks/{chunk-52NS7JDP.js → chunk-JH5XDDYS.js} +5 -5
  99. package/dist/cli-bundle/chunks/{chunk-GPIDUMMN.js → chunk-JYVPLGOW.js} +4 -4
  100. package/dist/cli-bundle/chunks/{chunk-XC3X7BQR.js → chunk-K2OKKYSO.js} +11 -9
  101. package/dist/cli-bundle/chunks/{chunk-XC3X7BQR.js.map → chunk-K2OKKYSO.js.map} +2 -2
  102. package/dist/cli-bundle/chunks/{chunk-YCVWWIKY.js → chunk-K4NMHZR3.js} +111 -24
  103. package/dist/cli-bundle/chunks/chunk-K4NMHZR3.js.map +7 -0
  104. package/dist/cli-bundle/chunks/{chunk-EIUBK2LT.js → chunk-K52C6YPA.js} +5 -5
  105. package/dist/cli-bundle/chunks/{chunk-IDIBF4E2.js → chunk-KAJNWMBE.js} +8 -8
  106. package/dist/cli-bundle/chunks/{chunk-2LEJGRQ7.js → chunk-KFL3XHMA.js} +2 -2
  107. package/dist/cli-bundle/chunks/{chunk-XS2TMNXR.js → chunk-LD2NBQ5T.js} +3 -3
  108. package/dist/cli-bundle/chunks/{chunk-II7R6KD4.js → chunk-LG4N6YOK.js} +5 -5
  109. package/dist/cli-bundle/chunks/{chunk-M62RO3XK.js → chunk-LHDHS4Z6.js} +5 -5
  110. package/dist/cli-bundle/chunks/{chunk-YTD5GICJ.js → chunk-MBLHA6LR.js} +4 -4
  111. package/dist/cli-bundle/chunks/{chunk-F6MT7KKE.js → chunk-MCH6IKK7.js} +3 -3
  112. package/dist/cli-bundle/chunks/{chunk-7PNQA24K.js → chunk-MCZK7LY6.js} +24 -10
  113. package/dist/cli-bundle/chunks/{chunk-7PNQA24K.js.map → chunk-MCZK7LY6.js.map} +1 -1
  114. package/dist/cli-bundle/chunks/{chunk-UO7XAZK6.js → chunk-MFLLULHU.js} +267 -232
  115. package/dist/cli-bundle/chunks/chunk-MFLLULHU.js.map +1 -0
  116. package/dist/cli-bundle/chunks/{chunk-FILL6BB2.js → chunk-N4S7BV43.js} +14 -14
  117. package/dist/cli-bundle/chunks/chunk-N4S7BV43.js.map +7 -0
  118. package/dist/cli-bundle/chunks/{chunk-2APXX4TZ.js → chunk-NBJCIAVV.js} +108 -21
  119. package/dist/cli-bundle/chunks/chunk-NBJCIAVV.js.map +1 -0
  120. package/dist/cli-bundle/chunks/{chunk-Y7KYVCZM.js → chunk-NGBWEYNY.js} +5 -5
  121. package/dist/cli-bundle/chunks/{chunk-RB3KLPAH.js → chunk-NRMDT4OV.js} +4 -4
  122. package/dist/cli-bundle/chunks/{chunk-TZLYO4PP.js → chunk-NRYZ4QLH.js} +121 -26
  123. package/dist/cli-bundle/chunks/chunk-NRYZ4QLH.js.map +7 -0
  124. package/dist/cli-bundle/chunks/{chunk-F6YC2A6X.js → chunk-NSPSJWGL.js} +9 -6
  125. package/dist/cli-bundle/chunks/chunk-NSPSJWGL.js.map +7 -0
  126. package/dist/cli-bundle/chunks/{chunk-GH73UOSJ.js → chunk-NTOOEVJ4.js} +2 -2
  127. package/dist/cli-bundle/chunks/{chunk-6XTSYPPO.js → chunk-ONADVBMD.js} +8 -6
  128. package/dist/cli-bundle/chunks/chunk-ONADVBMD.js.map +7 -0
  129. package/dist/cli-bundle/chunks/{chunk-Y5IKRUEM.js → chunk-P5SUMCU5.js} +167 -65
  130. package/dist/cli-bundle/chunks/chunk-P5SUMCU5.js.map +1 -0
  131. package/dist/cli-bundle/chunks/{chunk-EMXPI36L.js → chunk-PAWPLIWW.js} +5 -5
  132. package/dist/cli-bundle/chunks/{chunk-AGAVEDIE.js → chunk-PCBZ2VJD.js} +4 -4
  133. package/dist/cli-bundle/chunks/{chunk-MHNMCDWR.js → chunk-PPY3GXFK.js} +600 -96
  134. package/dist/cli-bundle/chunks/chunk-PPY3GXFK.js.map +1 -0
  135. package/dist/cli-bundle/chunks/{chunk-3X542TEY.js → chunk-Q3CFSOQZ.js} +4 -4
  136. package/dist/cli-bundle/chunks/{chunk-4BKDAEDF.js → chunk-QJZM5WO5.js} +3 -3
  137. package/dist/cli-bundle/chunks/{chunk-HHEWQXPD.js → chunk-QLEH6FTQ.js} +4 -4
  138. package/dist/cli-bundle/chunks/{chunk-D2DCTFTL.js → chunk-QYZMZD4L.js} +4 -4
  139. package/dist/cli-bundle/chunks/{chunk-6UQCNWFV.js → chunk-RFHLRMLQ.js} +3 -3
  140. package/dist/cli-bundle/chunks/{chunk-Q64AYQYW.js → chunk-RL24NAUX.js} +4 -4
  141. package/dist/cli-bundle/chunks/{chunk-QDABF2RB.js → chunk-S7J3GEHL.js} +10 -10
  142. package/dist/cli-bundle/chunks/{chunk-5FIQ4EX3.js → chunk-SCJPFQQT.js} +3 -3
  143. package/dist/cli-bundle/chunks/{chunk-42LXP4VO.js → chunk-SIQGG335.js} +7 -7
  144. package/dist/cli-bundle/chunks/{chunk-RY7PTTUB.js → chunk-TI7QSUFK.js} +35 -8
  145. package/dist/cli-bundle/chunks/chunk-TI7QSUFK.js.map +1 -0
  146. package/dist/cli-bundle/chunks/{chunk-43SIHQND.js → chunk-TKWTJGD6.js} +5 -5
  147. package/dist/cli-bundle/chunks/{chunk-EOUVR7JN.js → chunk-U72GF3I2.js} +3 -3
  148. package/dist/cli-bundle/chunks/{chunk-FN6SB4HU.js → chunk-UEATYUZW.js} +2 -2
  149. package/dist/cli-bundle/chunks/{chunk-V5ZWKJNY.js → chunk-UFNFHCAC.js} +2 -2
  150. package/dist/cli-bundle/chunks/{chunk-XBX5CBRQ.js → chunk-UH6VFRV6.js} +3 -3
  151. package/dist/cli-bundle/chunks/{chunk-GTM5HQL4.js → chunk-UIHDZS6X.js} +7 -7
  152. package/dist/cli-bundle/chunks/{chunk-TGUK6XN6.js → chunk-UURYLDDC.js} +5 -5
  153. package/dist/cli-bundle/chunks/{chunk-S5BNGFN5.js → chunk-VCGHRLJU.js} +10 -10
  154. package/dist/cli-bundle/chunks/{chunk-3G6UMXT3.js → chunk-W2VFNVSJ.js} +3 -3
  155. package/dist/cli-bundle/chunks/{chunk-ZNEG2UDO.js → chunk-WDNPNW22.js} +7 -7
  156. package/dist/cli-bundle/chunks/{chunk-DG6BSXZ7.js → chunk-WVEMZZCR.js} +3 -3
  157. package/dist/cli-bundle/chunks/{chunk-TNC6MZUD.js → chunk-XXN2B2MJ.js} +4 -4
  158. package/dist/cli-bundle/chunks/{chunk-YH5NBDFA.js → chunk-Y2736PT5.js} +8 -8
  159. package/dist/cli-bundle/chunks/{chunk-X47MKQXU.js → chunk-YHKXNGLA.js} +166 -64
  160. package/dist/cli-bundle/chunks/chunk-YHKXNGLA.js.map +7 -0
  161. package/dist/cli-bundle/chunks/{chunk-XXIYUTLK.js → chunk-YPE5MFPJ.js} +4 -4
  162. package/dist/cli-bundle/chunks/{chunk-XPMXPR7K.js → chunk-YSRXFGNV.js} +3 -3
  163. package/dist/cli-bundle/chunks/{chunk-N6ZHDLUY.js → chunk-YUMNZS3X.js} +3 -3
  164. package/dist/cli-bundle/chunks/{chunk-TEKZOS7M.js → chunk-Z2JQH2MG.js} +2 -2
  165. package/dist/cli-bundle/chunks/{chunk-E3LWJUGF.js → chunk-Z6RLSNUX.js} +3 -3
  166. package/dist/cli-bundle/chunks/close-5WY6QO5F.js +12 -0
  167. package/dist/cli-bundle/chunks/{close-3YYQ5OG2.js → close-TKTFRL7N.js} +5 -5
  168. package/dist/cli-bundle/chunks/{close-many-D366FTIG.js → close-many-HEPL66EG.js} +13 -13
  169. package/dist/cli-bundle/chunks/close-many-U2KLQ3NL.js +22 -0
  170. package/dist/cli-bundle/chunks/{comments-54XDJNFE.js → comments-PLFK5ZKK.js} +7 -7
  171. package/dist/cli-bundle/chunks/comments-ZNOD5PTV.js +13 -0
  172. package/dist/cli-bundle/chunks/copy-F7BUFY4J.js +9 -0
  173. package/dist/cli-bundle/chunks/{copy-44RT5GDW.js → copy-VH3L4MN2.js} +4 -4
  174. package/dist/cli-bundle/chunks/create-KCQM6UYM.js +25 -0
  175. package/dist/cli-bundle/chunks/{create-4GWJWPXG.js → create-LD4SEUD6.js} +9 -9
  176. package/dist/cli-bundle/chunks/delete-6KQHZYIP.js +10 -0
  177. package/dist/cli-bundle/chunks/{delete-YQ2VPXNF.js → delete-ZNXUNCZR.js} +4 -4
  178. package/dist/cli-bundle/chunks/{deps-FMANWFRP.js → deps-CVDY7FFK.js} +4 -4
  179. package/dist/cli-bundle/chunks/{deps-BU5EBJDU.js → deps-SZXQHV73.js} +4 -4
  180. package/dist/cli-bundle/chunks/{docs-OQBSJNIA.js → docs-DR74ITCD.js} +6 -6
  181. package/dist/cli-bundle/chunks/docs-WCVYY6I7.js +14 -0
  182. package/dist/cli-bundle/chunks/{files-72HZEBOE.js → files-H5YCA74Z.js} +6 -6
  183. package/dist/cli-bundle/chunks/{files-HTSB2KJG.js → files-QEFQ2M3H.js} +6 -6
  184. package/dist/cli-bundle/chunks/{focus-FOG4ALC2.js → focus-55TRYSNA.js} +5 -5
  185. package/dist/cli-bundle/chunks/focus-N2QGNS5D.js +10 -0
  186. package/dist/cli-bundle/chunks/history-compact-GWQ4UOEI.js +21 -0
  187. package/dist/cli-bundle/chunks/{history-compact-M6IFAMBP.js → history-compact-JJZ4EFL3.js} +9 -9
  188. package/dist/cli-bundle/chunks/history-redact-4GJOLXCM.js +17 -0
  189. package/dist/cli-bundle/chunks/{history-redact-NQX3OGZP.js → history-redact-TPPUT3A5.js} +7 -7
  190. package/dist/cli-bundle/chunks/history-repair-HVCVCGUF.js +19 -0
  191. package/dist/cli-bundle/chunks/{history-repair-NHOJG7WO.js → history-repair-J7PIZ6ZP.js} +9 -9
  192. package/dist/cli-bundle/chunks/{learnings-T63JGKKN.js → learnings-KB6BT4NR.js} +7 -7
  193. package/dist/cli-bundle/chunks/learnings-YYY3U2Y7.js +13 -0
  194. package/dist/cli-bundle/chunks/notes-BGG7VL72.js +13 -0
  195. package/dist/cli-bundle/chunks/{notes-U7L6HQQ2.js → notes-ZTHXVOKM.js} +7 -7
  196. package/dist/cli-bundle/chunks/plan-B42KBMX7.js +24 -0
  197. package/dist/cli-bundle/chunks/{plan-TN537L24.js → plan-LUR7C24X.js} +10 -10
  198. package/dist/cli-bundle/chunks/{profile-TIGLAKJ7.js → profile-5F75MO5O.js} +9 -9
  199. package/dist/cli-bundle/chunks/{profile-MHAMXMHQ.js → profile-JRDMDGT5.js} +9 -9
  200. package/dist/cli-bundle/chunks/{register-list-query-ZCRABAPN.js → register-list-query-GZYRZLQZ.js} +17 -16
  201. package/dist/cli-bundle/chunks/register-list-query-GZYRZLQZ.js.map +1 -0
  202. package/dist/cli-bundle/chunks/{register-list-query-OHXD7G5N.js → register-list-query-W2W7RQJJ.js} +16 -15
  203. package/dist/cli-bundle/chunks/register-list-query-W2W7RQJJ.js.map +7 -0
  204. package/dist/cli-bundle/chunks/{register-mutation-XX4H56PE.js → register-mutation-5UDT3WL3.js} +29 -29
  205. package/dist/cli-bundle/chunks/{register-mutation-P3G4XP6Q.js → register-mutation-7DMOYDPC.js} +29 -29
  206. package/dist/cli-bundle/chunks/{register-operations-V6VKTG54.js → register-operations-NW43IUPE.js} +29 -28
  207. package/dist/cli-bundle/chunks/register-operations-NW43IUPE.js.map +7 -0
  208. package/dist/cli-bundle/chunks/{register-operations-V6PIYEDU.js → register-operations-Y4E32W4D.js} +30 -29
  209. package/dist/cli-bundle/chunks/register-operations-Y4E32W4D.js.map +1 -0
  210. package/dist/cli-bundle/chunks/{register-setup-6YVUSQYD.js → register-setup-3GVJ7XPE.js} +21 -19
  211. package/dist/cli-bundle/chunks/register-setup-3GVJ7XPE.js.map +1 -0
  212. package/dist/cli-bundle/chunks/{register-setup-6RVAWT6W.js → register-setup-MPTTS52V.js} +20 -18
  213. package/dist/cli-bundle/chunks/register-setup-MPTTS52V.js.map +7 -0
  214. package/dist/cli-bundle/chunks/{restore-HC3YSWF7.js → restore-BTBEZ5CK.js} +7 -7
  215. package/dist/cli-bundle/chunks/restore-EX4UUZL6.js +15 -0
  216. package/dist/cli-bundle/chunks/{schema-DAGSYO6E.js → schema-DGSTYYQB.js} +6 -6
  217. package/dist/cli-bundle/chunks/{schema-UBXJCQAC.js → schema-HAIBEE24.js} +6 -6
  218. package/dist/cli-bundle/chunks/update-76CRUMC7.js +21 -0
  219. package/dist/cli-bundle/chunks/{update-LKD64AFP.js → update-ZMYVXM77.js} +12 -12
  220. package/dist/cli-bundle/chunks/update-many-QYQRGNPU.js +31 -0
  221. package/dist/cli-bundle/chunks/update-many-U4CEQWI4.js +35 -0
  222. package/dist/cli-bundle/main.js +39 -13
  223. package/dist/cli-bundle/main.js.map +2 -2
  224. package/dist/cli-bundle/sdk-runtime.js +149 -53
  225. package/dist/cli-bundle/sdk-testing.js +6 -6
  226. package/dist/cli-bundle/sdk.js +153 -57
  227. package/dist/cli-bundle/sdk.js.map +3 -3
  228. package/dist/core/extensions/extension-types.d.ts +1 -0
  229. package/dist/core/extensions/extension-types.js +2 -2
  230. package/dist/core/extensions/extension-types.js.map +1 -1
  231. package/dist/core/extensions/loader.js +268 -231
  232. package/dist/core/extensions/loader.js.map +1 -1
  233. package/dist/sdk/cli-contracts/commander-types.js +3 -3
  234. package/dist/sdk/cli-contracts/commander-types.js.map +1 -1
  235. package/dist/sdk/cli-contracts/flag-contracts.js +10 -3
  236. package/dist/sdk/cli-contracts/flag-contracts.js.map +1 -1
  237. package/dist/sdk/cli-contracts/tool-option-contracts.js +10 -5
  238. package/dist/sdk/cli-contracts/tool-option-contracts.js.map +1 -1
  239. package/dist/sdk/cli-contracts/tool-parameter-tables.js +20 -4
  240. package/dist/sdk/cli-contracts/tool-parameter-tables.js.map +1 -1
  241. package/dist/sdk/cli-contracts/tool-schema.d.ts +4 -0
  242. package/dist/sdk/cli-contracts/tool-schema.js +71 -12
  243. package/dist/sdk/cli-contracts/tool-schema.js.map +1 -1
  244. package/dist/sdk/index.d.ts +1 -1
  245. package/dist/sdk/index.js +3 -3
  246. package/dist/sdk/index.js.map +1 -1
  247. package/dist/sdk/runtime.d.ts +471 -25
  248. package/dist/sdk/runtime.js +611 -25
  249. package/dist/sdk/runtime.js.map +1 -1
  250. package/docs/AGENT_GUIDE.md +3 -0
  251. package/docs/COMMANDS.md +10 -1
  252. package/docs/EXTENSIONS.md +7 -20
  253. package/docs/RELEASING.md +6 -0
  254. package/docs/SDK.md +67 -0
  255. package/package.json +2 -1
  256. package/dist/cli-bundle/chunks/append-F7WPGIQL.js +0 -11
  257. package/dist/cli-bundle/chunks/chunk-2APXX4TZ.js.map +0 -1
  258. package/dist/cli-bundle/chunks/chunk-6LCJRGPD.js.map +0 -1
  259. package/dist/cli-bundle/chunks/chunk-6XTSYPPO.js.map +0 -7
  260. package/dist/cli-bundle/chunks/chunk-7ML7JONU.js.map +0 -1
  261. package/dist/cli-bundle/chunks/chunk-C5ACVMOI.js.map +0 -7
  262. package/dist/cli-bundle/chunks/chunk-F6YC2A6X.js.map +0 -7
  263. package/dist/cli-bundle/chunks/chunk-FILL6BB2.js.map +0 -7
  264. package/dist/cli-bundle/chunks/chunk-J2VGADNG.js.map +0 -1
  265. package/dist/cli-bundle/chunks/chunk-LCFJ7XAM.js.map +0 -7
  266. package/dist/cli-bundle/chunks/chunk-MHNMCDWR.js.map +0 -1
  267. package/dist/cli-bundle/chunks/chunk-RY7PTTUB.js.map +0 -1
  268. package/dist/cli-bundle/chunks/chunk-S547WBYG.js.map +0 -7
  269. package/dist/cli-bundle/chunks/chunk-TZLYO4PP.js.map +0 -7
  270. package/dist/cli-bundle/chunks/chunk-UO7XAZK6.js.map +0 -1
  271. package/dist/cli-bundle/chunks/chunk-X47MKQXU.js.map +0 -7
  272. package/dist/cli-bundle/chunks/chunk-XZWL7VNE.js.map +0 -1
  273. package/dist/cli-bundle/chunks/chunk-Y5IKRUEM.js.map +0 -1
  274. package/dist/cli-bundle/chunks/chunk-YCVWWIKY.js.map +0 -7
  275. package/dist/cli-bundle/chunks/close-Z3Q4U7TS.js +0 -12
  276. package/dist/cli-bundle/chunks/close-many-3L2RXH3M.js +0 -22
  277. package/dist/cli-bundle/chunks/comments-HGHC2PN6.js +0 -13
  278. package/dist/cli-bundle/chunks/copy-UGMUGHZA.js +0 -9
  279. package/dist/cli-bundle/chunks/create-AZXCUYKP.js +0 -25
  280. package/dist/cli-bundle/chunks/delete-Y6SXIQ4X.js +0 -10
  281. package/dist/cli-bundle/chunks/docs-VNPBZXEL.js +0 -14
  282. package/dist/cli-bundle/chunks/focus-SUTMKXGX.js +0 -10
  283. package/dist/cli-bundle/chunks/history-compact-NEXRPP2O.js +0 -21
  284. package/dist/cli-bundle/chunks/history-redact-WQJBZ3PX.js +0 -17
  285. package/dist/cli-bundle/chunks/history-repair-CBHMHAJO.js +0 -19
  286. package/dist/cli-bundle/chunks/learnings-M64NTSOR.js +0 -13
  287. package/dist/cli-bundle/chunks/notes-73WE2UV2.js +0 -13
  288. package/dist/cli-bundle/chunks/plan-OSCNYFGC.js +0 -24
  289. package/dist/cli-bundle/chunks/register-list-query-OHXD7G5N.js.map +0 -7
  290. package/dist/cli-bundle/chunks/register-list-query-ZCRABAPN.js.map +0 -1
  291. package/dist/cli-bundle/chunks/register-operations-V6PIYEDU.js.map +0 -1
  292. package/dist/cli-bundle/chunks/register-operations-V6VKTG54.js.map +0 -7
  293. package/dist/cli-bundle/chunks/register-setup-6RVAWT6W.js.map +0 -7
  294. package/dist/cli-bundle/chunks/register-setup-6YVUSQYD.js.map +0 -1
  295. package/dist/cli-bundle/chunks/restore-LFAMMRYZ.js +0 -15
  296. package/dist/cli-bundle/chunks/update-CJGG5WMV.js +0 -21
  297. package/dist/cli-bundle/chunks/update-many-G4SM7BHC.js +0 -31
  298. package/dist/cli-bundle/chunks/update-many-VLIV3D7R.js +0 -35
  299. /package/dist/cli-bundle/chunks/{append-F7WPGIQL.js.map → append-CDPAYYSB.js.map} +0 -0
  300. /package/dist/cli-bundle/chunks/{append-PVCTBVJG.js.map → append-RSPHC423.js.map} +0 -0
  301. /package/dist/cli-bundle/chunks/{chunk-6G6O3OPQ.js.map → chunk-26MFLA7K.js.map} +0 -0
  302. /package/dist/cli-bundle/chunks/{chunk-H2SMKL2N.js.map → chunk-3FUXM574.js.map} +0 -0
  303. /package/dist/cli-bundle/chunks/{chunk-DR2V5OIV.js.map → chunk-3SHDAKMF.js.map} +0 -0
  304. /package/dist/cli-bundle/chunks/{chunk-MRFWUSVA.js.map → chunk-3UXIMY62.js.map} +0 -0
  305. /package/dist/cli-bundle/chunks/{chunk-WCWVEXGA.js.map → chunk-3V5C7PUH.js.map} +0 -0
  306. /package/dist/cli-bundle/chunks/{chunk-43YSKY75.js.map → chunk-3YJDIJIE.js.map} +0 -0
  307. /package/dist/cli-bundle/chunks/{chunk-HX6QXV5P.js.map → chunk-4I7KS5ES.js.map} +0 -0
  308. /package/dist/cli-bundle/chunks/{chunk-XHCVAZGM.js.map → chunk-4OCWJ2AP.js.map} +0 -0
  309. /package/dist/cli-bundle/chunks/{chunk-3TYOW6RR.js.map → chunk-5STY7NVM.js.map} +0 -0
  310. /package/dist/cli-bundle/chunks/{chunk-7VQ3JJN5.js.map → chunk-5VAZHYVQ.js.map} +0 -0
  311. /package/dist/cli-bundle/chunks/{chunk-4IQKDKGE.js.map → chunk-5ZMZF53A.js.map} +0 -0
  312. /package/dist/cli-bundle/chunks/{chunk-MCEUKJKW.js.map → chunk-6FU5BVRB.js.map} +0 -0
  313. /package/dist/cli-bundle/chunks/{chunk-AJUON7E6.js.map → chunk-6RR4XM5H.js.map} +0 -0
  314. /package/dist/cli-bundle/chunks/{chunk-TEISGNSH.js.map → chunk-6TD5QGIB.js.map} +0 -0
  315. /package/dist/cli-bundle/chunks/{chunk-565WYS5W.js.map → chunk-6WCXSC5V.js.map} +0 -0
  316. /package/dist/cli-bundle/chunks/{chunk-NWWL22C7.js.map → chunk-6ZKDMEVT.js.map} +0 -0
  317. /package/dist/cli-bundle/chunks/{chunk-VLEA2UTQ.js.map → chunk-7QKSLAHB.js.map} +0 -0
  318. /package/dist/cli-bundle/chunks/{chunk-S6VC2A2K.js.map → chunk-7TBUV7XS.js.map} +0 -0
  319. /package/dist/cli-bundle/chunks/{chunk-YPMZMKN7.js.map → chunk-7UCBLJDF.js.map} +0 -0
  320. /package/dist/cli-bundle/chunks/{chunk-4MZOKTI2.js.map → chunk-AEOFBBWO.js.map} +0 -0
  321. /package/dist/cli-bundle/chunks/{chunk-ZO7CLOY2.js.map → chunk-BFNFTHWQ.js.map} +0 -0
  322. /package/dist/cli-bundle/chunks/{chunk-YNCFP5AR.js.map → chunk-BPJ5NYSJ.js.map} +0 -0
  323. /package/dist/cli-bundle/chunks/{chunk-P3MJJW7P.js.map → chunk-C3YU3TXX.js.map} +0 -0
  324. /package/dist/cli-bundle/chunks/{chunk-SY75LYXR.js.map → chunk-C6XSTACC.js.map} +0 -0
  325. /package/dist/cli-bundle/chunks/{chunk-2TILG6F2.js.map → chunk-CGDUIPJL.js.map} +0 -0
  326. /package/dist/cli-bundle/chunks/{chunk-J7BOLHAV.js.map → chunk-CXH7EMSB.js.map} +0 -0
  327. /package/dist/cli-bundle/chunks/{chunk-W5HXHC7C.js.map → chunk-D6J5673C.js.map} +0 -0
  328. /package/dist/cli-bundle/chunks/{chunk-ARKHKYYS.js.map → chunk-DQLP22K2.js.map} +0 -0
  329. /package/dist/cli-bundle/chunks/{chunk-YPD7SQ5P.js.map → chunk-EEJKHF7M.js.map} +0 -0
  330. /package/dist/cli-bundle/chunks/{chunk-EDO7VXSO.js.map → chunk-EP2CKDS7.js.map} +0 -0
  331. /package/dist/cli-bundle/chunks/{chunk-SIM5JDON.js.map → chunk-F5DDGY6R.js.map} +0 -0
  332. /package/dist/cli-bundle/chunks/{chunk-I74FMIWA.js.map → chunk-FFB3WITE.js.map} +0 -0
  333. /package/dist/cli-bundle/chunks/{chunk-43UQN754.js.map → chunk-FJR2S7S4.js.map} +0 -0
  334. /package/dist/cli-bundle/chunks/{chunk-CJQM7O7R.js.map → chunk-FOJEBRDD.js.map} +0 -0
  335. /package/dist/cli-bundle/chunks/{chunk-E3YQFSFE.js.map → chunk-GLMJLBLR.js.map} +0 -0
  336. /package/dist/cli-bundle/chunks/{chunk-KTGJ2CBU.js.map → chunk-GO2X6ZRB.js.map} +0 -0
  337. /package/dist/cli-bundle/chunks/{chunk-DDDWVPID.js.map → chunk-GSQVQINP.js.map} +0 -0
  338. /package/dist/cli-bundle/chunks/{chunk-EVEPHNXJ.js.map → chunk-GZ365M6E.js.map} +0 -0
  339. /package/dist/cli-bundle/chunks/{chunk-VGO73OCK.js.map → chunk-HZZ3AC27.js.map} +0 -0
  340. /package/dist/cli-bundle/chunks/{chunk-7Y5N34HX.js.map → chunk-IINCZYM3.js.map} +0 -0
  341. /package/dist/cli-bundle/chunks/{chunk-GLS6VMWI.js.map → chunk-INOWVPUD.js.map} +0 -0
  342. /package/dist/cli-bundle/chunks/{chunk-PDXJXEZJ.js.map → chunk-J6AD3GWC.js.map} +0 -0
  343. /package/dist/cli-bundle/chunks/{chunk-52NS7JDP.js.map → chunk-JH5XDDYS.js.map} +0 -0
  344. /package/dist/cli-bundle/chunks/{chunk-GPIDUMMN.js.map → chunk-JYVPLGOW.js.map} +0 -0
  345. /package/dist/cli-bundle/chunks/{chunk-EIUBK2LT.js.map → chunk-K52C6YPA.js.map} +0 -0
  346. /package/dist/cli-bundle/chunks/{chunk-IDIBF4E2.js.map → chunk-KAJNWMBE.js.map} +0 -0
  347. /package/dist/cli-bundle/chunks/{chunk-2LEJGRQ7.js.map → chunk-KFL3XHMA.js.map} +0 -0
  348. /package/dist/cli-bundle/chunks/{chunk-XS2TMNXR.js.map → chunk-LD2NBQ5T.js.map} +0 -0
  349. /package/dist/cli-bundle/chunks/{chunk-II7R6KD4.js.map → chunk-LG4N6YOK.js.map} +0 -0
  350. /package/dist/cli-bundle/chunks/{chunk-M62RO3XK.js.map → chunk-LHDHS4Z6.js.map} +0 -0
  351. /package/dist/cli-bundle/chunks/{chunk-YTD5GICJ.js.map → chunk-MBLHA6LR.js.map} +0 -0
  352. /package/dist/cli-bundle/chunks/{chunk-F6MT7KKE.js.map → chunk-MCH6IKK7.js.map} +0 -0
  353. /package/dist/cli-bundle/chunks/{chunk-Y7KYVCZM.js.map → chunk-NGBWEYNY.js.map} +0 -0
  354. /package/dist/cli-bundle/chunks/{chunk-RB3KLPAH.js.map → chunk-NRMDT4OV.js.map} +0 -0
  355. /package/dist/cli-bundle/chunks/{chunk-GH73UOSJ.js.map → chunk-NTOOEVJ4.js.map} +0 -0
  356. /package/dist/cli-bundle/chunks/{chunk-EMXPI36L.js.map → chunk-PAWPLIWW.js.map} +0 -0
  357. /package/dist/cli-bundle/chunks/{chunk-AGAVEDIE.js.map → chunk-PCBZ2VJD.js.map} +0 -0
  358. /package/dist/cli-bundle/chunks/{chunk-3X542TEY.js.map → chunk-Q3CFSOQZ.js.map} +0 -0
  359. /package/dist/cli-bundle/chunks/{chunk-4BKDAEDF.js.map → chunk-QJZM5WO5.js.map} +0 -0
  360. /package/dist/cli-bundle/chunks/{chunk-HHEWQXPD.js.map → chunk-QLEH6FTQ.js.map} +0 -0
  361. /package/dist/cli-bundle/chunks/{chunk-D2DCTFTL.js.map → chunk-QYZMZD4L.js.map} +0 -0
  362. /package/dist/cli-bundle/chunks/{chunk-6UQCNWFV.js.map → chunk-RFHLRMLQ.js.map} +0 -0
  363. /package/dist/cli-bundle/chunks/{chunk-Q64AYQYW.js.map → chunk-RL24NAUX.js.map} +0 -0
  364. /package/dist/cli-bundle/chunks/{chunk-QDABF2RB.js.map → chunk-S7J3GEHL.js.map} +0 -0
  365. /package/dist/cli-bundle/chunks/{chunk-5FIQ4EX3.js.map → chunk-SCJPFQQT.js.map} +0 -0
  366. /package/dist/cli-bundle/chunks/{chunk-42LXP4VO.js.map → chunk-SIQGG335.js.map} +0 -0
  367. /package/dist/cli-bundle/chunks/{chunk-43SIHQND.js.map → chunk-TKWTJGD6.js.map} +0 -0
  368. /package/dist/cli-bundle/chunks/{chunk-EOUVR7JN.js.map → chunk-U72GF3I2.js.map} +0 -0
  369. /package/dist/cli-bundle/chunks/{chunk-FN6SB4HU.js.map → chunk-UEATYUZW.js.map} +0 -0
  370. /package/dist/cli-bundle/chunks/{chunk-V5ZWKJNY.js.map → chunk-UFNFHCAC.js.map} +0 -0
  371. /package/dist/cli-bundle/chunks/{chunk-XBX5CBRQ.js.map → chunk-UH6VFRV6.js.map} +0 -0
  372. /package/dist/cli-bundle/chunks/{chunk-GTM5HQL4.js.map → chunk-UIHDZS6X.js.map} +0 -0
  373. /package/dist/cli-bundle/chunks/{chunk-TGUK6XN6.js.map → chunk-UURYLDDC.js.map} +0 -0
  374. /package/dist/cli-bundle/chunks/{chunk-S5BNGFN5.js.map → chunk-VCGHRLJU.js.map} +0 -0
  375. /package/dist/cli-bundle/chunks/{chunk-3G6UMXT3.js.map → chunk-W2VFNVSJ.js.map} +0 -0
  376. /package/dist/cli-bundle/chunks/{chunk-ZNEG2UDO.js.map → chunk-WDNPNW22.js.map} +0 -0
  377. /package/dist/cli-bundle/chunks/{chunk-DG6BSXZ7.js.map → chunk-WVEMZZCR.js.map} +0 -0
  378. /package/dist/cli-bundle/chunks/{chunk-TNC6MZUD.js.map → chunk-XXN2B2MJ.js.map} +0 -0
  379. /package/dist/cli-bundle/chunks/{chunk-YH5NBDFA.js.map → chunk-Y2736PT5.js.map} +0 -0
  380. /package/dist/cli-bundle/chunks/{chunk-XXIYUTLK.js.map → chunk-YPE5MFPJ.js.map} +0 -0
  381. /package/dist/cli-bundle/chunks/{chunk-XPMXPR7K.js.map → chunk-YSRXFGNV.js.map} +0 -0
  382. /package/dist/cli-bundle/chunks/{chunk-N6ZHDLUY.js.map → chunk-YUMNZS3X.js.map} +0 -0
  383. /package/dist/cli-bundle/chunks/{chunk-TEKZOS7M.js.map → chunk-Z2JQH2MG.js.map} +0 -0
  384. /package/dist/cli-bundle/chunks/{chunk-E3LWJUGF.js.map → chunk-Z6RLSNUX.js.map} +0 -0
  385. /package/dist/cli-bundle/chunks/{close-Z3Q4U7TS.js.map → close-5WY6QO5F.js.map} +0 -0
  386. /package/dist/cli-bundle/chunks/{close-3YYQ5OG2.js.map → close-TKTFRL7N.js.map} +0 -0
  387. /package/dist/cli-bundle/chunks/{close-many-D366FTIG.js.map → close-many-HEPL66EG.js.map} +0 -0
  388. /package/dist/cli-bundle/chunks/{close-many-3L2RXH3M.js.map → close-many-U2KLQ3NL.js.map} +0 -0
  389. /package/dist/cli-bundle/chunks/{comments-54XDJNFE.js.map → comments-PLFK5ZKK.js.map} +0 -0
  390. /package/dist/cli-bundle/chunks/{comments-HGHC2PN6.js.map → comments-ZNOD5PTV.js.map} +0 -0
  391. /package/dist/cli-bundle/chunks/{copy-UGMUGHZA.js.map → copy-F7BUFY4J.js.map} +0 -0
  392. /package/dist/cli-bundle/chunks/{copy-44RT5GDW.js.map → copy-VH3L4MN2.js.map} +0 -0
  393. /package/dist/cli-bundle/chunks/{create-AZXCUYKP.js.map → create-KCQM6UYM.js.map} +0 -0
  394. /package/dist/cli-bundle/chunks/{create-4GWJWPXG.js.map → create-LD4SEUD6.js.map} +0 -0
  395. /package/dist/cli-bundle/chunks/{delete-Y6SXIQ4X.js.map → delete-6KQHZYIP.js.map} +0 -0
  396. /package/dist/cli-bundle/chunks/{delete-YQ2VPXNF.js.map → delete-ZNXUNCZR.js.map} +0 -0
  397. /package/dist/cli-bundle/chunks/{deps-FMANWFRP.js.map → deps-CVDY7FFK.js.map} +0 -0
  398. /package/dist/cli-bundle/chunks/{deps-BU5EBJDU.js.map → deps-SZXQHV73.js.map} +0 -0
  399. /package/dist/cli-bundle/chunks/{docs-OQBSJNIA.js.map → docs-DR74ITCD.js.map} +0 -0
  400. /package/dist/cli-bundle/chunks/{docs-VNPBZXEL.js.map → docs-WCVYY6I7.js.map} +0 -0
  401. /package/dist/cli-bundle/chunks/{files-72HZEBOE.js.map → files-H5YCA74Z.js.map} +0 -0
  402. /package/dist/cli-bundle/chunks/{files-HTSB2KJG.js.map → files-QEFQ2M3H.js.map} +0 -0
  403. /package/dist/cli-bundle/chunks/{focus-FOG4ALC2.js.map → focus-55TRYSNA.js.map} +0 -0
  404. /package/dist/cli-bundle/chunks/{focus-SUTMKXGX.js.map → focus-N2QGNS5D.js.map} +0 -0
  405. /package/dist/cli-bundle/chunks/{history-compact-NEXRPP2O.js.map → history-compact-GWQ4UOEI.js.map} +0 -0
  406. /package/dist/cli-bundle/chunks/{history-compact-M6IFAMBP.js.map → history-compact-JJZ4EFL3.js.map} +0 -0
  407. /package/dist/cli-bundle/chunks/{history-redact-WQJBZ3PX.js.map → history-redact-4GJOLXCM.js.map} +0 -0
  408. /package/dist/cli-bundle/chunks/{history-redact-NQX3OGZP.js.map → history-redact-TPPUT3A5.js.map} +0 -0
  409. /package/dist/cli-bundle/chunks/{history-repair-CBHMHAJO.js.map → history-repair-HVCVCGUF.js.map} +0 -0
  410. /package/dist/cli-bundle/chunks/{history-repair-NHOJG7WO.js.map → history-repair-J7PIZ6ZP.js.map} +0 -0
  411. /package/dist/cli-bundle/chunks/{learnings-T63JGKKN.js.map → learnings-KB6BT4NR.js.map} +0 -0
  412. /package/dist/cli-bundle/chunks/{learnings-M64NTSOR.js.map → learnings-YYY3U2Y7.js.map} +0 -0
  413. /package/dist/cli-bundle/chunks/{notes-73WE2UV2.js.map → notes-BGG7VL72.js.map} +0 -0
  414. /package/dist/cli-bundle/chunks/{notes-U7L6HQQ2.js.map → notes-ZTHXVOKM.js.map} +0 -0
  415. /package/dist/cli-bundle/chunks/{plan-OSCNYFGC.js.map → plan-B42KBMX7.js.map} +0 -0
  416. /package/dist/cli-bundle/chunks/{plan-TN537L24.js.map → plan-LUR7C24X.js.map} +0 -0
  417. /package/dist/cli-bundle/chunks/{profile-TIGLAKJ7.js.map → profile-5F75MO5O.js.map} +0 -0
  418. /package/dist/cli-bundle/chunks/{profile-MHAMXMHQ.js.map → profile-JRDMDGT5.js.map} +0 -0
  419. /package/dist/cli-bundle/chunks/{register-mutation-XX4H56PE.js.map → register-mutation-5UDT3WL3.js.map} +0 -0
  420. /package/dist/cli-bundle/chunks/{register-mutation-P3G4XP6Q.js.map → register-mutation-7DMOYDPC.js.map} +0 -0
  421. /package/dist/cli-bundle/chunks/{restore-HC3YSWF7.js.map → restore-BTBEZ5CK.js.map} +0 -0
  422. /package/dist/cli-bundle/chunks/{restore-LFAMMRYZ.js.map → restore-EX4UUZL6.js.map} +0 -0
  423. /package/dist/cli-bundle/chunks/{schema-DAGSYO6E.js.map → schema-DGSTYYQB.js.map} +0 -0
  424. /package/dist/cli-bundle/chunks/{schema-UBXJCQAC.js.map → schema-HAIBEE24.js.map} +0 -0
  425. /package/dist/cli-bundle/chunks/{update-CJGG5WMV.js.map → update-76CRUMC7.js.map} +0 -0
  426. /package/dist/cli-bundle/chunks/{update-LKD64AFP.js.map → update-ZMYVXM77.js.map} +0 -0
  427. /package/dist/cli-bundle/chunks/{update-many-G4SM7BHC.js.map → update-many-QYQRGNPU.js.map} +0 -0
  428. /package/dist/cli-bundle/chunks/{update-many-VLIV3D7R.js.map → update-many-U4CEQWI4.js.map} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"loader.js","sources":["core/extensions/loader.ts"],"sourceRoot":"/","sourcesContent":["/**\n * @module core/extensions/loader\n *\n * Implements extension runtime contracts and governance for Loader.\n */\nimport fs from \"node:fs/promises\";\nimport path from \"node:path\";\nimport { pathToFileURL } from \"node:url\";\nimport { pathExists } from \"../fs/fs-utils.js\";\nimport { isPathWithinDirectory } from \"../fs/path-utils.js\";\nimport { resolvePmPackageRootFromModule } from \"../packages/root.js\";\nimport { resolveGlobalPmRoot } from \"../store/paths.js\";\nimport { asRecordLoose, resolveActivatablePropertyRecord } from \"../shared/primitives.js\";\nimport { flattenFlagListValue, isFlagDefaultValueCoercible, resolveFlagValueKind } from \"./flag-value-types.js\";\nimport { KNOWN_ITEM_FIELD_TYPES, normalizeItemFieldType, suggestKnownItemFieldType } from \"./item-field-types.js\";\nimport {\n compareComparableVersions,\n evaluatePmMaxVersionBound,\n evaluatePmMinVersionBound,\n parseComparableVersion,\n type PmVersionBoundEvaluation,\n} from \"./version-compat.js\";\nimport type { ProjectProfileDefinition, ProjectProfileRegistrationInput } from \"../profile/profile-presets.js\";\n// Cohesive helper groups now live in sibling modules. They are imported for the\n// discovery/activation code that stays here and re-exported below so existing\n// import sites (sdk/index.ts, commands/extension.ts, health.ts, tests, …) keep\n// importing everything from \"./loader.js\" unchanged.\nimport {\n normalizeNames,\n isKnownExtensionCapability,\n collectUnknownExtensionCapabilities,\n normalizeManifestCapabilities,\n formatUnknownExtensionCapabilityWarning,\n formatLegacyExtensionCapabilityAliasWarning,\n} from \"./extension-capability-aliases.js\";\nimport {\n normalizeExtensionPolicy,\n serializeExtensionPolicy,\n hydrateExtensionPolicy,\n normalizePolicySandboxProfile,\n evaluateExtensionPolicyForExtension,\n evaluateExtensionPolicyForCapability,\n evaluateExtensionPolicyForRegistration,\n type NormalizedExtensionPolicy,\n type PolicyExtensionRef,\n} from \"./extension-policy.js\";\nimport {\n createEmptyExtensionHookRegistry,\n createEmptyExtensionCommandRegistry,\n createEmptyExtensionParserRegistry,\n createEmptyExtensionPreflightRegistry,\n createEmptyExtensionServiceRegistry,\n createEmptyExtensionRendererRegistry,\n createEmptyExtensionRegistrationRegistry,\n} from \"./extension-registries.js\";\nimport {\n normalizeCommandName,\n cloneContextSnapshot,\n} from \"./extension-runtime-helpers.js\";\nexport {\n parseUnknownExtensionCapabilityWarning,\n parseLegacyExtensionCapabilityAliasWarning,\n} from \"./extension-capability-aliases.js\";\nexport {\n createEmptyExtensionHookRegistry,\n createEmptyExtensionCommandRegistry,\n createEmptyExtensionParserRegistry,\n createEmptyExtensionPreflightRegistry,\n createEmptyExtensionServiceRegistry,\n createEmptyExtensionRendererRegistry,\n createEmptyExtensionRegistrationRegistry,\n} from \"./extension-registries.js\";\nexport {\n runBeforeCommandHooks,\n runAfterCommandHooks,\n runOnWriteHooks,\n runOnReadHooks,\n runOnIndexHooks,\n runCommandHandler,\n runParserOverride,\n runPreflightOverride,\n runServiceOverrideSync,\n runServiceOverride,\n runCommandOverride,\n runRendererOverride,\n} from \"./extension-hook-runtime.js\";\nimport {\n KNOWN_EXTENSION_CAPABILITIES,\n KNOWN_EXTENSION_SERVICE_NAMES,\n createDefaultExtensionGovernancePolicy,\n type ExtensionDeactivationFailure,\n type ExtensionDeactivationOptions,\n type ExtensionDeactivationResult,\n type ExtensionSelfIdentity,\n type ExtensionCapability,\n type ExtensionPolicySurface,\n type ExtensionSandboxProfile,\n type ExtensionGovernancePolicy,\n type PmMaxVersionExceededMode,\n type ExtensionLayer,\n type ExtensionManifest,\n type ExtensionManifestEngines,\n type ExtensionDiagnostic,\n type EffectiveExtension,\n type ExtensionDiscoveryResult,\n type LoadedExtension,\n type FailedExtensionLoad,\n type ExtensionLoadResult,\n type BeforeCommandHook,\n type AfterCommandHook,\n type OnWriteHook,\n type OnReadHook,\n type OnIndexHook,\n type OutputRendererFormat,\n type CommandOverride,\n type RendererOverride,\n type CommandHandler,\n type ParserOverride,\n type PreflightOverride,\n type ServiceOverride,\n type ExtensionHookRegistry,\n type ExtensionServiceName,\n type ExtensionCommandArgumentDefinition,\n type CommandDefinition,\n type FlagDefinition,\n type SchemaFieldDefinition,\n type SchemaItemTypeDefinition,\n type SchemaMigrationDefinition,\n type ImportExportRegistrationOptions,\n type Importer,\n type Exporter,\n type SearchProviderDefinition,\n type VectorStoreAdapterDefinition,\n type RegisteredExtensionParserOverride,\n type RegisteredExtensionServiceOverride,\n type RegisteredExtensionRendererOverride,\n type ExtensionCommandRegistry,\n type ExtensionParserRegistry,\n type ExtensionPreflightRegistry,\n type ExtensionServiceRegistry,\n type ExtensionRendererRegistry,\n type RegisteredExtensionCommandDefinition,\n type RegisteredExtensionSchemaMigrationDefinition,\n type RegisteredExtensionSearchProvider,\n type RegisteredExtensionVectorStoreAdapter,\n type ExtensionRegistrationRegistry,\n type ExtensionRegistrationCounts,\n type ExtensionApi,\n type FailedExtensionActivation,\n type ExtensionActivationFailureTrace,\n type ExtensionActivationResult,\n type ExtensionCandidate,\n type ExtensionLayerScanResult,\n type ScannedExtensionDirectory,\n type LegacyExtensionCapabilityAliasMapping,\n type DiscoverExtensionsOptions,\n type ActivatableExtension,\n} from \"./extension-types.js\";\nexport * from \"./extension-types.js\";\n\nexport const DEFAULT_EXTENSION_PRIORITY = 100;\nlet currentPmCliVersionPromise: Promise<string | null> | null = null;\n\n/* Types now in extension-types.ts - re-exported via `export * from \"./extension-types.js\"` above */\n\nconst DEFAULT_EXTENSION_POLICY: ExtensionGovernancePolicy = Object.freeze(createDefaultExtensionGovernancePolicy());\n\nlet extensionReloadEpoch = 0;\n\n/**\n * Implements next extension reload token for the public runtime surface of this module.\n */\nexport function nextExtensionReloadToken(seed = Date.now()): string {\n extensionReloadEpoch += 1;\n return `${extensionReloadEpoch}-${seed}`;\n}\n\nfunction parseOptionalManifestString(candidate: Record<string, unknown>, field: string): string | null | undefined {\n const value = candidate[field];\n if (value === undefined || value === null) {\n return undefined;\n }\n if (typeof value !== \"string\" || value.trim().length === 0) {\n return null;\n }\n return value.trim();\n}\n\nfunction parseManifestEngines(value: unknown): ExtensionManifestEngines | null | undefined {\n if (value === undefined || value === null) {\n return undefined;\n }\n const enginesRecord = asRecordLoose(value);\n if (!enginesRecord) {\n return null;\n }\n const engines: ExtensionManifestEngines = {};\n for (const key of Object.keys(enginesRecord).sort((left, right) => left.localeCompare(right))) {\n if (key.trim().length === 0) {\n return null;\n }\n const engineValue = enginesRecord[key];\n if (typeof engineValue !== \"string\" || engineValue.trim().length === 0) {\n return null;\n }\n engines[key.trim()] = engineValue.trim();\n }\n return Object.keys(engines).length > 0 ? engines : undefined;\n}\n\n/** Parse a required manifest string field, returning `null` when it is absent, non-string, or blank. */\nfunction parseRequiredManifestString(candidate: Record<string, unknown>, field: string): string | null {\n const value = candidate[field];\n if (typeof value !== \"string\" || value.trim().length === 0) {\n return null;\n }\n return value.trim();\n}\n\n/** Parse an optional integer value (`undefined` when absent, `null` when present but not an integer). */\nfunction parseOptionalIntegerValue(value: unknown): number | null | undefined {\n if (value === undefined || value === null) {\n return undefined;\n }\n if (typeof value !== \"number\" || !Number.isInteger(value)) {\n return null;\n }\n return value;\n}\n\n/** Parse an optional boolean value (`undefined` when absent, `null` when present but not a boolean). */\nfunction parseOptionalBooleanValue(value: unknown): boolean | null | undefined {\n if (value === undefined || value === null) {\n return undefined;\n }\n if (typeof value !== \"boolean\") {\n return null;\n }\n return value;\n}\n\n/** Parse the optional integer `priority`, defaulting to {@link DEFAULT_EXTENSION_PRIORITY} when absent and rejecting (`null`) a non-integer. */\nfunction parseManifestPriority(candidate: Record<string, unknown>): number | null {\n const value = parseOptionalIntegerValue(candidate.priority);\n return value === undefined ? DEFAULT_EXTENSION_PRIORITY : value;\n}\n\n/** Parse the optional `sandbox_profile`, rejecting (`null`) any value that does not round-trip through {@link normalizePolicySandboxProfile}. */\nfunction parseManifestSandboxProfile(candidate: Record<string, unknown>): ExtensionSandboxProfile | null | undefined {\n const value = candidate.sandbox_profile;\n if (value === undefined || value === null) {\n return undefined;\n }\n if (typeof value !== \"string\") {\n return null;\n }\n const normalizedProfile = normalizePolicySandboxProfile(value);\n if (normalizedProfile !== value.trim().toLowerCase()) {\n return null;\n }\n return normalizedProfile;\n}\n\n/** Return the trimmed string when `value` is a non-blank string, otherwise `undefined`. */\nfunction optionalTrimmedString(value: unknown): string | undefined {\n return typeof value === \"string\" && value.trim().length > 0 ? value.trim() : undefined;\n}\n\n/** Parse the optional `provenance` record (`undefined` absent, `null` malformed), keeping only the present trimmed string fields and a boolean `verified`. */\nfunction parseManifestProvenance(value: unknown): ExtensionManifest[\"provenance\"] | null | undefined {\n if (value === undefined || value === null) {\n return undefined;\n }\n const provenanceRecord = asRecordLoose(value);\n if (!provenanceRecord) {\n return null;\n }\n const source = optionalTrimmedString(provenanceRecord.source);\n const signature = optionalTrimmedString(provenanceRecord.signature);\n const attestation = optionalTrimmedString(provenanceRecord.attestation);\n const verified =\n provenanceRecord.verified === undefined || provenanceRecord.verified === null\n ? undefined\n : typeof provenanceRecord.verified === \"boolean\"\n ? provenanceRecord.verified\n : null;\n if (verified === null) {\n return null;\n }\n return {\n ...(source ? { source } : {}),\n ...(signature ? { signature } : {}),\n ...(attestation ? { attestation } : {}),\n ...(typeof verified === \"boolean\" ? { verified } : {}),\n };\n}\n\n/** Parse the optional `permissions` record (`undefined` absent, `null` malformed), keeping only the boolean grants that are present. */\nfunction parseManifestPermissions(value: unknown): ExtensionManifest[\"permissions\"] | null | undefined {\n if (value === undefined || value === null) {\n return undefined;\n }\n const permissionsRecord = asRecordLoose(value);\n if (!permissionsRecord) {\n return null;\n }\n const fsRead = parseOptionalBooleanValue(permissionsRecord.fs_read);\n const fsWrite = parseOptionalBooleanValue(permissionsRecord.fs_write);\n const network = parseOptionalBooleanValue(permissionsRecord.network);\n const envRead = parseOptionalBooleanValue(permissionsRecord.env_read);\n const envWrite = parseOptionalBooleanValue(permissionsRecord.env_write);\n const processSpawn = parseOptionalBooleanValue(permissionsRecord.process_spawn);\n if ([fsRead, fsWrite, network, envRead, envWrite, processSpawn].includes(null)) {\n return null;\n }\n return {\n ...(typeof fsRead === \"boolean\" ? { fs_read: fsRead } : {}),\n ...(typeof fsWrite === \"boolean\" ? { fs_write: fsWrite } : {}),\n ...(typeof network === \"boolean\" ? { network } : {}),\n ...(typeof envRead === \"boolean\" ? { env_read: envRead } : {}),\n ...(typeof envWrite === \"boolean\" ? { env_write: envWrite } : {}),\n ...(typeof processSpawn === \"boolean\" ? { process_spawn: processSpawn } : {}),\n };\n}\n\n/** Parse the optional `capabilities` array, normalizing legacy aliases; returns empty lists when absent and `null` when the field is not a string array. */\nfunction parseManifestCapabilities(\n value: unknown,\n): { capabilities: string[]; legacy_aliases: LegacyExtensionCapabilityAliasMapping[] } | null {\n if (value === undefined || value === null) {\n return { capabilities: [], legacy_aliases: [] };\n }\n if (!Array.isArray(value) || value.some((entry) => typeof entry !== \"string\")) {\n return null;\n }\n const normalizedCapabilities = normalizeManifestCapabilities(value as string[]);\n return { capabilities: normalizedCapabilities.capabilities, legacy_aliases: normalizedCapabilities.legacy_aliases };\n}\n\n/** Parse the optional `activation` block, returning the de-duplicated sorted `commands` set, `undefined` when no command activation is declared, and `null` when the block is malformed. */\nfunction parseManifestActivation(value: unknown): ExtensionManifest[\"activation\"] | null | undefined {\n if (value === undefined || value === null) {\n return undefined;\n }\n const activationRecord = asRecordLoose(value);\n if (!activationRecord) {\n return null;\n }\n const rawCommands = activationRecord.commands;\n if (rawCommands === undefined || rawCommands === null) {\n return undefined;\n }\n if (!Array.isArray(rawCommands) || rawCommands.some((entry) => typeof entry !== \"string\")) {\n return null;\n }\n const commands = [\n ...new Set(\n rawCommands\n .map((entry) => normalizeCommandName(entry))\n .filter((entry) => entry.length > 0),\n ),\n ].sort((left, right) => left.localeCompare(right));\n return commands.length > 0 ? { commands } : undefined;\n}\n\n/** The optional metadata fields a manifest may declare, parsed and validated as a single bundle so {@link parseManifest} stays a thin orchestrator. */\ninterface ParsedManifestMetadata {\n manifest_version: number | undefined;\n pm_min_version: string | undefined;\n pm_max_version: string | undefined;\n engines: ExtensionManifestEngines | undefined;\n trusted: boolean | undefined;\n sandbox_profile: ExtensionSandboxProfile | undefined;\n provenance: ExtensionManifest[\"provenance\"];\n permissions: ExtensionManifest[\"permissions\"];\n capabilities: string[];\n legacy_capability_aliases: LegacyExtensionCapabilityAliasMapping[];\n activation: ExtensionManifest[\"activation\"];\n}\n\n/** Parse every optional manifest metadata field, returning `null` as soon as any one is malformed. */\nfunction parseManifestMetadata(candidate: Record<string, unknown>): ParsedManifestMetadata | null {\n const manifestVersion = parseOptionalIntegerValue(candidate.manifest_version);\n if (manifestVersion === null) {\n return null;\n }\n const pmMinVersion = parseOptionalManifestString(candidate, \"pm_min_version\");\n if (pmMinVersion === null) {\n return null;\n }\n const pmMaxVersion = parseOptionalManifestString(candidate, \"pm_max_version\");\n if (pmMaxVersion === null) {\n return null;\n }\n const engines = parseManifestEngines(candidate.engines);\n if (engines === null) {\n return null;\n }\n const trusted = parseOptionalBooleanValue(candidate.trusted);\n if (trusted === null) {\n return null;\n }\n const sandboxProfile = parseManifestSandboxProfile(candidate);\n if (sandboxProfile === null) {\n return null;\n }\n const provenance = parseManifestProvenance(candidate.provenance);\n if (provenance === null) {\n return null;\n }\n const permissions = parseManifestPermissions(candidate.permissions);\n if (permissions === null) {\n return null;\n }\n const capabilities = parseManifestCapabilities(candidate.capabilities);\n if (capabilities === null) {\n return null;\n }\n const activation = parseManifestActivation(candidate.activation);\n if (activation === null) {\n return null;\n }\n return {\n manifest_version: manifestVersion,\n pm_min_version: pmMinVersion,\n pm_max_version: pmMaxVersion,\n engines,\n trusted,\n sandbox_profile: sandboxProfile,\n provenance,\n permissions,\n capabilities: capabilities.capabilities,\n legacy_capability_aliases: capabilities.legacy_aliases,\n activation,\n };\n}\n\nfunction parseManifest(raw: unknown): ExtensionManifest | null {\n if (typeof raw !== \"object\" || raw === null) {\n return null;\n }\n const candidate = raw as Record<string, unknown>;\n const name = parseRequiredManifestString(candidate, \"name\");\n if (name === null) {\n return null;\n }\n const version = parseRequiredManifestString(candidate, \"version\");\n if (version === null) {\n return null;\n }\n const entry = parseRequiredManifestString(candidate, \"entry\");\n if (entry === null) {\n return null;\n }\n const priority = parseManifestPriority(candidate);\n if (priority === null) {\n return null;\n }\n const metadata = parseManifestMetadata(candidate);\n if (metadata === null) {\n return null;\n }\n return {\n name,\n version,\n entry,\n priority,\n manifest_version: metadata.manifest_version,\n pm_min_version: metadata.pm_min_version,\n pm_max_version: metadata.pm_max_version,\n engines: metadata.engines,\n trusted: metadata.trusted,\n provenance: metadata.provenance,\n sandbox_profile: metadata.sandbox_profile,\n permissions: metadata.permissions,\n activation: metadata.activation,\n capabilities: metadata.capabilities,\n legacy_capability_aliases:\n metadata.legacy_capability_aliases.length > 0 ? metadata.legacy_capability_aliases : undefined,\n };\n}\n\nfunction shouldEnable(name: string, enabled: Set<string>, disabled: Set<string>): boolean {\n if (disabled.has(name)) {\n return false;\n }\n if (enabled.size === 0) {\n return true;\n }\n return enabled.has(name);\n}\n\n/** Resolve symlinks on both paths before the containment check so a link inside the directory cannot escape it. */\nexport async function isCanonicalPathWithinDirectory(directory: string, targetPath: string): Promise<boolean> {\n const [resolvedDirectory, resolvedTargetPath] = await Promise.all([fs.realpath(directory), fs.realpath(targetPath)]);\n return isPathWithinDirectory(resolvedDirectory, resolvedTargetPath);\n}\n\n/**\n * Implements resolve extension roots for the public runtime surface of this module.\n */\nexport function resolveExtensionRoots(pmRoot: string, cwd = process.cwd()): { global: string; project: string } {\n return {\n global: path.join(resolveGlobalPmRoot(cwd), \"extensions\"),\n project: path.join(pmRoot, \"extensions\"),\n };\n}\n\nasync function listExtensionDirectories(extensionsRoot: string): Promise<string[]> {\n try {\n const entries = await fs.readdir(extensionsRoot, { withFileTypes: true });\n return entries\n .filter((entry) => entry.isDirectory())\n .map((entry) => entry.name)\n .sort((a, b) => a.localeCompare(b));\n } catch {\n return [];\n }\n}\n\nfunction summarizeCandidate(candidate: ExtensionCandidate): EffectiveExtension {\n const summary: EffectiveExtension = {\n layer: candidate.layer,\n directory: candidate.directory,\n manifest_path: candidate.manifest_path,\n name: candidate.manifest.name,\n version: candidate.manifest.version,\n entry: candidate.manifest.entry,\n priority: candidate.manifest.priority,\n entry_path: candidate.entry_path,\n manifest_version: candidate.manifest.manifest_version,\n pm_min_version: candidate.manifest.pm_min_version,\n pm_max_version: candidate.manifest.pm_max_version,\n engines: candidate.manifest.engines,\n trusted: candidate.manifest.trusted,\n provenance: candidate.manifest.provenance,\n sandbox_profile: candidate.manifest.sandbox_profile,\n permissions: candidate.manifest.permissions,\n capabilities: [...candidate.manifest.capabilities],\n activation: candidate.manifest.activation\n ? {\n commands: [...(candidate.manifest.activation.commands as string[])],\n }\n : undefined,\n };\n if (candidate.source_package) {\n summary.source_package = candidate.source_package;\n }\n return summary;\n}\n\nfunction normalizeManagedSourcePackage(value: unknown): string | undefined {\n return typeof value === \"string\" && value.trim().length > 0 ? value.trim() : undefined;\n}\n\nasync function readManagedExtensionSourcePackages(extensionsRoot: string): Promise<Map<string, string>> {\n const packages = new Map<string, string>();\n try {\n const parsed = JSON.parse(await fs.readFile(path.join(extensionsRoot, \".managed-extensions.json\"), \"utf8\")) as unknown;\n if (typeof parsed !== \"object\" || parsed === null || !Array.isArray((parsed as { entries?: unknown }).entries)) {\n return packages;\n }\n for (const entry of (parsed as { entries: unknown[] }).entries) {\n if (typeof entry !== \"object\" || entry === null) {\n continue;\n }\n const record = entry as { directory?: unknown; name?: unknown; source?: { package?: unknown } };\n const sourcePackage = normalizeManagedSourcePackage(record.source?.package);\n if (!sourcePackage) {\n continue;\n }\n if (typeof record.directory === \"string\" && record.directory.trim().length > 0) {\n packages.set(`directory:${record.directory.trim()}`, sourcePackage);\n }\n if (typeof record.name === \"string\" && record.name.trim().length > 0) {\n packages.set(`name:${record.name.trim()}`, sourcePackage);\n }\n }\n } catch {\n return packages;\n }\n return packages;\n}\n\nfunction sortCandidates(candidates: ExtensionCandidate[]): ExtensionCandidate[] {\n return [...candidates].sort((left, right) => {\n if (left.manifest.priority !== right.manifest.priority) {\n return left.manifest.priority - right.manifest.priority;\n }\n const byName = left.manifest.name.localeCompare(right.manifest.name);\n if (byName !== 0) {\n return byName;\n }\n return left.directory.localeCompare(right.directory);\n });\n}\n\nfunction buildEffectiveExtensions(\n globalCandidates: ExtensionCandidate[],\n projectCandidates: ExtensionCandidate[],\n): ExtensionCandidate[] {\n const ordered = [...sortCandidates(globalCandidates), ...sortCandidates(projectCandidates)];\n const effective: ExtensionCandidate[] = [];\n for (const candidate of ordered) {\n const existingIndex = effective.findIndex((entry) => entry.manifest.name === candidate.manifest.name);\n if (existingIndex >= 0) {\n effective.splice(existingIndex, 1);\n }\n effective.push(candidate);\n }\n return effective;\n}\n\nasync function scanExtensionLayer(\n layer: ExtensionLayer,\n extensionsRoot: string,\n enabled: Set<string>,\n disabled: Set<string>,\n pmMaxVersionExceededMode: PmMaxVersionExceededMode,\n): Promise<ExtensionLayerScanResult> {\n const diagnostics: ExtensionDiagnostic[] = [];\n const warnings: string[] = [];\n const candidates: ExtensionCandidate[] = [];\n const directories = await listExtensionDirectories(extensionsRoot);\n const managedSourcePackages = await readManagedExtensionSourcePackages(extensionsRoot);\n\n for (const directory of directories) {\n const scanned = await scanExtensionDirectory(\n layer,\n extensionsRoot,\n directory,\n enabled,\n disabled,\n managedSourcePackages,\n pmMaxVersionExceededMode,\n );\n diagnostics.push(scanned.diagnostic);\n warnings.push(...scanned.warnings);\n if (scanned.candidate) {\n candidates.push(scanned.candidate);\n }\n }\n\n return { diagnostics, warnings, candidates };\n}\n\n/**\n * Build the `warn`-status scan result for a directory whose manifest is missing\n * or unparseable, carrying the supplied diagnostic warning and no candidate.\n */\nfunction buildUnavailableExtensionScan(\n layer: ExtensionLayer,\n directory: string,\n manifestPath: string,\n warning: string,\n): ScannedExtensionDirectory {\n return {\n diagnostic: {\n layer,\n directory,\n manifest_path: manifestPath,\n name: null,\n version: null,\n entry: null,\n priority: null,\n entry_path: null,\n enabled: null,\n status: \"warn\",\n },\n warnings: [warning],\n candidate: null,\n };\n}\n\n/**\n * Collect the non-fatal load warnings for a parsed extension manifest, in\n * detection order: legacy capability aliases, unknown capabilities, an entry\n * outside or absent from the extension directory, then the pm version\n * floor/ceiling incompatibility warnings.\n */\nfunction collectScannedExtensionWarnings(\n layer: ExtensionLayer,\n manifest: ExtensionManifest,\n entryWithinDirectory: boolean,\n entryExists: boolean,\n pmVersionCompatibility: { allowed: boolean; warning?: string },\n pmMaxVersionCompatibility: { allowed: boolean; warning?: string },\n): string[] {\n const extensionWarnings: string[] = [];\n if (Array.isArray(manifest.legacy_capability_aliases) && manifest.legacy_capability_aliases.length > 0) {\n extensionWarnings.push(\n formatLegacyExtensionCapabilityAliasWarning(layer, manifest.name, manifest.legacy_capability_aliases),\n );\n }\n for (const capability of collectUnknownExtensionCapabilities(manifest.capabilities)) {\n extensionWarnings.push(formatUnknownExtensionCapabilityWarning(layer, manifest.name, capability));\n }\n if (!entryWithinDirectory) {\n extensionWarnings.push(`extension_entry_outside_extension:${layer}:${manifest.name}`);\n } else if (!entryExists) {\n extensionWarnings.push(`extension_entry_missing:${layer}:${manifest.name}`);\n }\n if (pmVersionCompatibility.warning) {\n extensionWarnings.push(pmVersionCompatibility.warning);\n }\n if (pmMaxVersionCompatibility.warning) {\n extensionWarnings.push(pmMaxVersionCompatibility.warning);\n }\n return extensionWarnings;\n}\n\nasync function scanExtensionDirectory(\n layer: ExtensionLayer,\n extensionsRoot: string,\n directory: string,\n enabled: Set<string>,\n disabled: Set<string>,\n managedSourcePackages: ReadonlyMap<string, string>,\n pmMaxVersionExceededMode: PmMaxVersionExceededMode,\n): Promise<ScannedExtensionDirectory> {\n const extensionDir = path.join(extensionsRoot, directory);\n const manifestPath = path.join(extensionDir, \"manifest.json\");\n if (!(await pathExists(manifestPath))) {\n return buildUnavailableExtensionScan(layer, directory, manifestPath, `extension_manifest_missing:${layer}:${directory}`);\n }\n\n let manifest: ExtensionManifest | null;\n try {\n const parsed = JSON.parse(await fs.readFile(manifestPath, \"utf8\")) as unknown;\n manifest = parseManifest(parsed);\n } catch {\n manifest = null;\n }\n\n if (!manifest) {\n return buildUnavailableExtensionScan(layer, directory, manifestPath, `extension_manifest_invalid:${layer}:${directory}`);\n }\n\n const entryPath = path.resolve(extensionDir, manifest.entry);\n const entryWithinDirectoryByPath = isPathWithinDirectory(extensionDir, entryPath);\n const entryExists = entryWithinDirectoryByPath ? await pathExists(entryPath) : false;\n const entryWithinDirectory =\n entryWithinDirectoryByPath && entryExists\n ? await isCanonicalPathWithinDirectory(extensionDir, entryPath)\n : entryWithinDirectoryByPath;\n const enabledForLoad = shouldEnable(manifest.name, enabled, disabled);\n const pmVersionCompatibility = await evaluatePmMinVersionCompatibility(layer, manifest);\n const pmMaxVersionCompatibility = await evaluatePmMaxVersionCompatibility(layer, manifest, pmMaxVersionExceededMode);\n const extensionWarnings = collectScannedExtensionWarnings(\n layer,\n manifest,\n entryWithinDirectory,\n entryExists,\n pmVersionCompatibility,\n pmMaxVersionCompatibility,\n );\n const extensionReady =\n entryWithinDirectory &&\n entryExists &&\n pmVersionCompatibility.allowed &&\n pmMaxVersionCompatibility.allowed;\n const sourcePackage =\n managedSourcePackages.get(`directory:${directory}`) ?? managedSourcePackages.get(`name:${manifest.name}`);\n\n return {\n diagnostic: {\n layer,\n directory,\n manifest_path: manifestPath,\n name: manifest.name,\n version: manifest.version,\n entry: manifest.entry,\n priority: manifest.priority,\n entry_path: entryPath,\n enabled: enabledForLoad,\n status: extensionReady ? \"ok\" : \"warn\",\n },\n warnings: extensionWarnings,\n candidate:\n extensionReady && enabledForLoad\n ? {\n layer,\n directory,\n manifest_path: manifestPath,\n entry_path: entryPath,\n manifest,\n source_package: sourcePackage,\n }\n : null,\n };\n}\n\n\n/**\n * Implements discover extensions for the public runtime surface of this module.\n */\nexport async function discoverExtensions(options: DiscoverExtensionsOptions): Promise<ExtensionDiscoveryResult> {\n const roots = resolveExtensionRoots(options.pmRoot, options.cwd ?? process.cwd());\n const configured_enabled = normalizeNames(options.settings.extensions.enabled);\n const configured_disabled = normalizeNames(options.settings.extensions.disabled);\n const policy = normalizeExtensionPolicy(options.settings);\n const serializedPolicy = serializeExtensionPolicy(policy);\n\n if (options.noExtensions) {\n return {\n disabled_by_flag: true,\n roots,\n configured_enabled,\n configured_disabled,\n discovered: [],\n effective: [],\n warnings: [...policy.warnings],\n policy: serializedPolicy,\n };\n }\n\n const enabled = new Set(configured_enabled);\n const disabled = new Set(configured_disabled);\n const globalScan = await scanExtensionLayer(\"global\", roots.global, enabled, disabled, policy.pmMaxVersionExceededMode.global);\n const projectScan = await scanExtensionLayer(\"project\", roots.project, enabled, disabled, policy.pmMaxVersionExceededMode.project);\n const policyWarnings: string[] = [...policy.warnings];\n const effectiveCandidates = buildEffectiveExtensions(globalScan.candidates, projectScan.candidates);\n const effective: EffectiveExtension[] = [];\n for (const candidate of effectiveCandidates) {\n const extensionRef = {\n layer: candidate.layer,\n name: candidate.manifest.name,\n trusted: candidate.manifest.trusted === true,\n provenanceVerified: candidate.manifest.provenance?.verified === true,\n sandboxProfile: candidate.manifest.sandbox_profile,\n permissions:\n candidate.manifest.permissions && typeof candidate.manifest.permissions === \"object\"\n ? {\n fs_read: candidate.manifest.permissions.fs_read,\n fs_write: candidate.manifest.permissions.fs_write,\n network: candidate.manifest.permissions.network,\n env_read: candidate.manifest.permissions.env_read,\n env_write: candidate.manifest.permissions.env_write,\n process_spawn: candidate.manifest.permissions.process_spawn,\n }\n : undefined,\n };\n const extensionDecision = evaluateExtensionPolicyForExtension(policy, extensionRef);\n if (extensionDecision.warning) {\n policyWarnings.push(extensionDecision.warning);\n }\n if (!extensionDecision.allowed) {\n continue;\n }\n for (const capability of candidate.manifest.capabilities) {\n const capabilityDecision = evaluateExtensionPolicyForCapability(policy, extensionRef, capability);\n if (capabilityDecision.warning) {\n policyWarnings.push(capabilityDecision.warning);\n }\n }\n effective.push(summarizeCandidate(candidate));\n }\n\n return {\n disabled_by_flag: false,\n roots,\n configured_enabled,\n configured_disabled,\n discovered: [...globalScan.diagnostics, ...projectScan.diagnostics],\n effective,\n warnings: [...new Set([...globalScan.warnings, ...projectScan.warnings, ...policyWarnings])],\n policy: serializedPolicy,\n };\n}\n\nfunction formatUnknownError(error: unknown): string {\n if (error instanceof Error && error.message.trim().length > 0) {\n return error.message;\n }\n return String(error);\n}\n\nasync function readCurrentPmCliVersion(): Promise<string | null> {\n try {\n const packageRoot = resolvePmPackageRootFromModule(import.meta.url, [\"../../..\"]);\n const raw = await fs.readFile(path.join(packageRoot, \"package.json\"), \"utf8\");\n const parsed = JSON.parse(raw) as { version?: unknown };\n return typeof parsed.version === \"string\" && parsed.version.trim().length > 0 ? parsed.version.trim() : null;\n } catch {\n return null;\n }\n}\n\nfunction resolveCurrentPmCliVersion(): Promise<string | null> {\n currentPmCliVersionPromise ??= readCurrentPmCliVersion();\n return currentPmCliVersionPromise;\n}\n\nfunction formatPmVersionCompatibilityWarning(\n layer: ExtensionLayer,\n manifest: ExtensionManifest,\n evaluation: PmVersionBoundEvaluation,\n): string | undefined {\n const current = evaluation.current ?? \"unknown\";\n if (evaluation.kind === \"pm_min_version\") {\n switch (evaluation.status) {\n case \"invalid\":\n return `extension_pm_min_version_invalid:${layer}:${manifest.name}:required=${evaluation.required}`;\n case \"unchecked\":\n return `extension_pm_min_version_unchecked:${layer}:${manifest.name}:required=${evaluation.required}:current=${current}`;\n case \"unmet\":\n return `extension_pm_min_version_unmet:${layer}:${manifest.name}:required=${evaluation.required}:current=${current}`;\n default:\n return undefined;\n }\n }\n switch (evaluation.status) {\n case \"invalid\":\n return `extension_pm_max_version_invalid:${layer}:${manifest.name}:allowed=${evaluation.required}`;\n case \"unchecked\":\n return `extension_pm_max_version_unchecked:${layer}:${manifest.name}:allowed=${evaluation.required}:current=${current}`;\n case \"exceeded_warn\":\n return `extension_pm_max_version_exceeded_warn:${layer}:${manifest.name}:allowed=${evaluation.required}:current=${current}`;\n case \"exceeded\":\n return `extension_pm_max_version_exceeded:${layer}:${manifest.name}:allowed=${evaluation.required}:current=${current}`;\n default:\n return undefined;\n }\n}\n\nasync function evaluatePmMinVersionCompatibility(\n layer: ExtensionLayer,\n manifest: ExtensionManifest,\n): Promise<{ allowed: boolean; warning?: string }> {\n // Resolve the current CLI version only when a bound is declared, so the common\n // no-bound case never reads package.json.\n if (manifest.pm_min_version === undefined) {\n return { allowed: true };\n }\n const evaluation = evaluatePmMinVersionBound(manifest.pm_min_version, await resolveCurrentPmCliVersion());\n const warning = formatPmVersionCompatibilityWarning(layer, manifest, evaluation);\n return warning ? { allowed: evaluation.allowed, warning } : { allowed: evaluation.allowed };\n}\n\nasync function evaluatePmMaxVersionCompatibility(\n layer: ExtensionLayer,\n manifest: ExtensionManifest,\n exceededMode: PmMaxVersionExceededMode,\n): Promise<{ allowed: boolean; warning?: string }> {\n if (manifest.pm_max_version === undefined) {\n return { allowed: true };\n }\n const evaluation = evaluatePmMaxVersionBound(\n manifest.pm_max_version,\n await resolveCurrentPmCliVersion(),\n exceededMode,\n );\n const warning = formatPmVersionCompatibilityWarning(layer, manifest, evaluation);\n return warning ? { allowed: evaluation.allowed, warning } : { allowed: evaluation.allowed };\n}\n\nasync function fingerprintPath(pathToInspect: string): Promise<string> {\n try {\n const stats = await fs.stat(pathToInspect);\n return `${Math.trunc(stats.mtimeMs)}-${stats.size}`;\n } catch {\n return \"missing\";\n }\n}\n\nasync function resolveExtensionImportHref(\n extension: EffectiveExtension,\n options: DiscoverExtensionsOptions,\n): Promise<string> {\n const baseUrl = new URL(pathToFileURL(extension.entry_path).href);\n const shouldCacheBust = options.cache_bust === true || typeof options.reload_token === \"string\";\n if (!shouldCacheBust) {\n return baseUrl.href;\n }\n const [entryFingerprint, manifestFingerprint] = await Promise.all([\n fingerprintPath(extension.entry_path),\n fingerprintPath(extension.manifest_path),\n ]);\n const reloadToken = options.reload_token ?? nextExtensionReloadToken();\n baseUrl.searchParams.set(\"pm_ext_reload\", reloadToken);\n baseUrl.searchParams.set(\"pm_ext_entry\", entryFingerprint);\n baseUrl.searchParams.set(\"pm_ext_manifest\", manifestFingerprint);\n return baseUrl.href;\n}\n\n/**\n * Implements load extensions for the public runtime surface of this module.\n */\nexport async function loadExtensions(options: DiscoverExtensionsOptions): Promise<ExtensionLoadResult> {\n const discovery = await discoverExtensions(options);\n const loaded: LoadedExtension[] = [];\n const failed: FailedExtensionLoad[] = [];\n const warnings = [...discovery.warnings];\n\n if (discovery.disabled_by_flag) {\n return {\n ...discovery,\n warnings,\n loaded,\n failed,\n };\n }\n\n const extensionsToLoad =\n typeof options.extensionFilter === \"function\" ? discovery.effective.filter(options.extensionFilter) : discovery.effective;\n for (const extension of extensionsToLoad) {\n try {\n const importHref = await resolveExtensionImportHref(extension, options);\n const module = await import(importHref);\n loaded.push({\n ...extension,\n module,\n });\n } catch (error: unknown) {\n warnings.push(`extension_load_failed:${extension.layer}:${extension.name}`);\n failed.push({\n layer: extension.layer,\n name: extension.name,\n entry_path: extension.entry_path,\n error: formatUnknownError(error),\n });\n }\n }\n\n return {\n ...discovery,\n warnings,\n loaded,\n failed,\n };\n}\n\nconst DEFAULT_EXTENSION_DEACTIVATE_TIMEOUT_MS = 5_000;\nconst MAX_EXTENSION_DEACTIVATE_TIMEOUT_MS = 2_147_483_647;\n\nfunction toActivatableExtension(source: Record<string, unknown>): ActivatableExtension {\n // Bind to `source` so a module/default-export authored with methods (or a class\n // instance) keeps its `this` across both lifecycle calls — `activate` is a\n // method call on a fresh object and `deactivate` is invoked bare, so without\n // binding the two would see different (or undefined) `this`.\n const activate = source.activate as ActivatableExtension[\"activate\"];\n const activatable: ActivatableExtension = {\n activate: activate.bind(source),\n };\n if (typeof source.deactivate === \"function\") {\n const deactivate = source.deactivate as NonNullable<ActivatableExtension[\"deactivate\"]>;\n activatable.deactivate = deactivate.bind(source);\n }\n return activatable;\n}\n\nfunction resolveActivatableExtension(module: unknown): ActivatableExtension | null {\n const activatableRecord = resolveActivatablePropertyRecord(module);\n return activatableRecord ? toActivatableExtension(activatableRecord) : null;\n}\n\n/**\n * Run the optional `deactivate` teardown hook for every loaded extension that\n * exports one. Best-effort: a throwing teardown is captured as a warning and a\n * failure entry rather than propagated, so one extension cannot block another's\n * cleanup. Hosts call this on shutdown/reload (e.g. the MCP server between\n * native-action requests) to release resources opened during `activate`.\n *\n * Pass the `activationResult` to skip extensions whose `activate` failed — they\n * never fully initialized, so (VS Code-style) their `deactivate` must not run.\n * Teardowns run concurrently and each hook has a bounded timeout by default, so\n * one slow or hanging hook cannot serialize the rest or block the host\n * indefinitely unless the host explicitly disables the timeout; the returned\n * warnings/failures preserve loaded order.\n */\nexport async function deactivateExtensions(\n loadResult: ExtensionLoadResult,\n activationResult?: Pick<ExtensionActivationResult, \"failed\">,\n options: ExtensionDeactivationOptions = {},\n): Promise<ExtensionDeactivationResult> {\n const timeoutMs = normalizeExtensionDeactivateTimeout(options?.deactivate_timeout_ms);\n const failedActivationKeys = new Set(\n (activationResult?.failed ?? []).map((entry) => `${entry.layer}:${entry.name}`),\n );\n const targets: Array<{ extension: LoadedExtension; deactivate: () => void | Promise<void> }> = [];\n for (const extension of loadResult.loaded) {\n if (failedActivationKeys.has(`${extension.layer}:${extension.name}`)) {\n continue;\n }\n const activatable = resolveActivatableExtension(extension.module);\n if (!activatable || typeof activatable.deactivate !== \"function\") {\n continue;\n }\n targets.push({ extension, deactivate: activatable.deactivate });\n }\n const outcomes = await Promise.all(\n targets.map(async ({ extension, deactivate }) => {\n try {\n await runExtensionDeactivateWithTimeout(deactivate, timeoutMs);\n return { ok: true as const };\n } catch (error: unknown) {\n return { ok: false as const, layer: extension.layer, name: extension.name, error: formatUnknownError(error) };\n }\n }),\n );\n const warnings: string[] = [];\n const failed: ExtensionDeactivationFailure[] = [];\n let deactivated = 0;\n for (const outcome of outcomes) {\n if (outcome.ok) {\n deactivated += 1;\n continue;\n }\n warnings.push(`extension_deactivate_failed:${outcome.layer}:${outcome.name}`);\n failed.push({ layer: outcome.layer, name: outcome.name, error: outcome.error });\n }\n return { deactivated, warnings, failed };\n}\n\nfunction normalizeExtensionDeactivateTimeout(rawTimeout: unknown): number {\n if (typeof rawTimeout !== \"number\" || rawTimeout < 0) {\n return DEFAULT_EXTENSION_DEACTIVATE_TIMEOUT_MS;\n }\n if (rawTimeout === 0 || rawTimeout === Infinity) {\n return 0;\n }\n if (!Number.isFinite(rawTimeout)) {\n return DEFAULT_EXTENSION_DEACTIVATE_TIMEOUT_MS;\n }\n return Math.min(MAX_EXTENSION_DEACTIVATE_TIMEOUT_MS, Math.max(1, Math.floor(rawTimeout)));\n}\n\nasync function runExtensionDeactivateWithTimeout(\n deactivate: () => void | Promise<void>,\n timeoutMs: number,\n): Promise<void> {\n if (timeoutMs === 0) {\n await deactivate();\n return;\n }\n let timeoutHandle: ReturnType<typeof setTimeout> | undefined;\n try {\n // A timed-out deactivate promise may still finish later; JavaScript promises\n // are not cancellable, so the host only stops waiting and consumes any late\n // rejection from the hook.\n const deactivatePromise = Promise.resolve().then(() => deactivate());\n deactivatePromise.catch(() => {});\n await Promise.race([\n deactivatePromise,\n new Promise<never>((_, reject) => {\n timeoutHandle = setTimeout(() => {\n reject(new Error(`extension deactivate timed out after ${timeoutMs}ms`));\n }, timeoutMs);\n timeoutHandle.unref?.();\n }),\n ]);\n } finally {\n clearTimeout(timeoutHandle as ReturnType<typeof setTimeout>);\n }\n}\n\nfunction isOutputRendererFormat(value: string): value is OutputRendererFormat {\n return value === \"toon\" || value === \"json\";\n}\n\nfunction isExtensionServiceName(value: string): value is ExtensionServiceName {\n return KNOWN_EXTENSION_SERVICE_NAMES.includes(value as ExtensionServiceName);\n}\n\nfunction assertHookHandler(hookName: string, hook: unknown): void {\n if (typeof hook !== \"function\") {\n throw new TypeError(`api.hooks.${hookName} requires a function handler`);\n }\n}\n\nfunction assertNonEmptyString(name: string, value: unknown): string {\n if (typeof value !== \"string\" || value.trim().length === 0) {\n throw new TypeError(`${name} requires a non-empty string`);\n }\n return value.trim();\n}\n\nfunction assertFunctionHandler(name: string, value: unknown): void {\n if (typeof value !== \"function\") {\n throw new TypeError(`${name} requires a function handler`);\n }\n}\n\nfunction normalizeRegistrationName(name: string): string {\n return name\n .trim()\n .toLowerCase()\n .split(/\\s+/)\n .filter((part) => part.length > 0)\n .join(\" \");\n}\n\nfunction toRegistrationCommandPath(name: string, action: \"import\" | \"export\"): string {\n return normalizeCommandName(`${name} ${action}`);\n}\n\nfunction sanitizeRegistrationValue(value: unknown): unknown {\n if (value === null) {\n return null;\n }\n if (Array.isArray(value)) {\n return value.map((entry) => sanitizeRegistrationValue(entry));\n }\n if (typeof value === \"function\") {\n return \"[Function]\";\n }\n if (typeof value === \"bigint\") {\n return value.toString();\n }\n if (typeof value === \"symbol\") {\n return value.toString();\n }\n if (typeof value === \"object\") {\n const record = value as Record<string, unknown>;\n const normalized: Record<string, unknown> = {};\n const keys = Object.keys(record).sort((left, right) => left.localeCompare(right));\n for (const key of keys) {\n normalized[key] = sanitizeRegistrationValue(record[key]);\n }\n return normalized;\n }\n return value;\n}\n\nfunction cloneRuntimeRegistrationValue(value: unknown): unknown {\n if (Array.isArray(value)) {\n return value.map((entry) => cloneRuntimeRegistrationValue(entry));\n }\n if (typeof value === \"object\" && value !== null) {\n const record = value as Record<string, unknown>;\n const cloned: Record<string, unknown> = {};\n for (const key of Object.keys(record).sort((left, right) => left.localeCompare(right))) {\n cloned[key] = cloneRuntimeRegistrationValue(record[key]);\n }\n return cloned;\n }\n return value;\n}\n\nconst EXTENSION_REGISTRATION_TRACE_SYMBOL = Symbol(\"extension_registration_trace\");\n\ntype RegistrationTraceCarrier = Error & {\n [EXTENSION_REGISTRATION_TRACE_SYMBOL]?: ExtensionActivationFailureTrace;\n};\n\nfunction createRegistrationValidationError(message: string, trace: ExtensionActivationFailureTrace): TypeError {\n const error = new TypeError(message) as RegistrationTraceCarrier;\n Object.defineProperty(error, EXTENSION_REGISTRATION_TRACE_SYMBOL, {\n value: trace,\n enumerable: false,\n configurable: false,\n writable: false,\n });\n return error;\n}\n\nfunction extractRegistrationValidationTrace(error: unknown): ExtensionActivationFailureTrace | undefined {\n if (!(error instanceof Error)) {\n return undefined;\n }\n return (error as RegistrationTraceCarrier)[EXTENSION_REGISTRATION_TRACE_SYMBOL];\n}\n\nfunction normalizeRegistrationRecord(name: string, value: unknown): Record<string, unknown> {\n if (typeof value !== \"object\" || value === null || Array.isArray(value)) {\n throw new TypeError(`${name} requires an object definition`);\n }\n return sanitizeRegistrationValue(value) as Record<string, unknown>;\n}\n\nfunction normalizeRuntimeRegistrationRecord(name: string, value: unknown): Record<string, unknown> {\n if (typeof value !== \"object\" || value === null || Array.isArray(value)) {\n throw new TypeError(`${name} requires an object definition`);\n }\n return cloneRuntimeRegistrationValue(value) as Record<string, unknown>;\n}\n\nfunction normalizeRegistrationRecordList(name: string, value: unknown): Array<Record<string, unknown>> {\n if (!Array.isArray(value)) {\n throw new TypeError(`${name} requires an array of object definitions`);\n }\n return value.map((entry) => normalizeRegistrationRecord(name, entry));\n}\n\nfunction asRegistrationRecord(name: string, value: unknown): Record<string, unknown> {\n if (typeof value !== \"object\" || value === null || Array.isArray(value)) {\n throw new TypeError(`${name} requires an object definition`);\n }\n return value as Record<string, unknown>;\n}\n\nfunction assertOptionalBooleanField(name: string, value: unknown): void {\n if (value !== undefined && typeof value !== \"boolean\") {\n throw new TypeError(`${name} must be a boolean when provided`);\n }\n}\n\nfunction assertOptionalStringField(name: string, value: unknown): void {\n if (value === undefined) {\n return;\n }\n if (typeof value !== \"string\" || value.trim().length === 0) {\n throw new TypeError(`${name} must be a non-empty string when provided`);\n }\n}\n\nfunction isFlagDefaultScalar(value: unknown): boolean {\n return typeof value === \"string\" || typeof value === \"number\" || typeof value === \"boolean\";\n}\n\nfunction assertOptionalFlagDefaultField(name: string, value: unknown): void {\n if (value === undefined) {\n return;\n }\n if (Array.isArray(value)) {\n for (const [index, item] of value.entries()) {\n if (!isFlagDefaultScalar(item)) {\n throw new TypeError(`${name}[${index}] must be a string, number, or boolean`);\n }\n }\n return;\n }\n if (!isFlagDefaultScalar(value)) {\n throw new TypeError(`${name} must be a string, number, or boolean, or an array of these when provided`);\n }\n}\n\nfunction assertOptionalStringArrayField(name: string, value: unknown): void {\n if (value === undefined) {\n return;\n }\n if (!Array.isArray(value)) {\n throw new TypeError(`${name} must be an array of non-empty strings when provided`);\n }\n for (const [index, entry] of value.entries()) {\n if (typeof entry !== \"string\" || entry.trim().length === 0) {\n throw new TypeError(`${name}[${index}] must be a non-empty string`);\n }\n }\n}\n\nfunction normalizeOptionalStringArrayField(name: string, value: unknown): string[] {\n assertOptionalStringArrayField(name, value);\n if (!Array.isArray(value)) {\n return [];\n }\n const normalized: string[] = [];\n const seen = new Set<string>();\n for (const entry of value) {\n const trimmed = entry.trim();\n if (trimmed.length === 0 || seen.has(trimmed)) {\n continue;\n }\n seen.add(trimmed);\n normalized.push(trimmed);\n }\n return normalized;\n}\n\nfunction normalizeCommandActionName(value: string): string {\n return value\n .trim()\n .toLowerCase()\n .replace(/[\\s_]+/g, \"-\")\n .replace(/[^a-z0-9-]/g, \"-\")\n .replace(/-+/g, \"-\")\n .replace(/^-+|-+$/g, \"\");\n}\n\nfunction resolveCommandDefinitionAction(commandPath: string, action: unknown): string {\n if (action === undefined) {\n return commandPath.replace(/\\s+/g, \"-\");\n }\n if (typeof action !== \"string\" || action.trim().length === 0) {\n throw new TypeError(\"registerCommand definition.action must be a non-empty string when provided\");\n }\n const normalized = normalizeCommandActionName(action);\n if (normalized.length === 0) {\n throw new TypeError(\"registerCommand definition.action must contain alphanumeric characters\");\n }\n return normalized;\n}\n\nfunction normalizeCommandDefinitionArguments(value: unknown): ExtensionCommandArgumentDefinition[] {\n if (value === undefined) {\n return [];\n }\n if (!Array.isArray(value)) {\n throw new TypeError(\"registerCommand definition.arguments must be an array when provided\");\n }\n const normalized: ExtensionCommandArgumentDefinition[] = [];\n for (const [index, entry] of value.entries()) {\n const record = asRegistrationRecord(`registerCommand definition.arguments[${index}]`, entry);\n const name = assertNonEmptyString(`registerCommand definition.arguments[${index}].name`, record.name);\n assertOptionalBooleanField(`registerCommand definition.arguments[${index}].required`, record.required);\n assertOptionalBooleanField(`registerCommand definition.arguments[${index}].variadic`, record.variadic);\n assertOptionalStringField(`registerCommand definition.arguments[${index}].description`, record.description);\n if (name.includes(\" \")) {\n throw new TypeError(`registerCommand definition.arguments[${index}].name must not contain spaces`);\n }\n const definition: ExtensionCommandArgumentDefinition = {\n name,\n };\n if (record.required === true) {\n definition.required = true;\n }\n if (record.variadic === true) {\n definition.variadic = true;\n }\n if (typeof record.description === \"string\") {\n definition.description = record.description.trim();\n }\n normalized.push(definition);\n }\n\n const variadicIndexes = normalized\n .map((argument, index) => (argument.variadic ? index : -1))\n .filter((index) => index >= 0);\n if (variadicIndexes.length > 1) {\n throw new TypeError(\"registerCommand definition.arguments supports at most one variadic argument\");\n }\n if (variadicIndexes.length === 1 && variadicIndexes[0] !== normalized.length - 1) {\n throw new TypeError(\"registerCommand definition.arguments variadic argument must be the final argument\");\n }\n\n return normalized;\n}\n\nfunction validateFlagDefinitions(flags: unknown): void {\n if (!Array.isArray(flags)) {\n throw new TypeError(\"registerFlags flags requires an array of object definitions\");\n }\n for (const [index, raw] of flags.entries()) {\n const record = asRegistrationRecord(`registerFlags flags[${index}]`, raw);\n const long = record.long;\n const short = record.short;\n if (long === undefined && short === undefined) {\n throw new TypeError(`registerFlags flags[${index}] requires at least one of long or short`);\n }\n assertOptionalStringField(`registerFlags flags[${index}].long`, long);\n assertOptionalStringField(`registerFlags flags[${index}].short`, short);\n assertOptionalStringField(`registerFlags flags[${index}].value_name`, record.value_name);\n assertOptionalStringField(`registerFlags flags[${index}].description`, record.description);\n assertOptionalBooleanField(`registerFlags flags[${index}].required`, record.required);\n assertOptionalBooleanField(`registerFlags flags[${index}].enabled`, record.enabled);\n assertOptionalBooleanField(`registerFlags flags[${index}].visible`, record.visible);\n assertOptionalBooleanField(`registerFlags flags[${index}].list`, record.list);\n assertOptionalFlagDefaultField(`registerFlags flags[${index}].default`, record.default);\n if (Array.isArray(record.default) && record.list !== true) {\n throw new TypeError(`registerFlags flags[${index}].default cannot be an array unless list is true.`);\n }\n assertFlagValueTypeAndDefault(`registerFlags flags[${index}]`, record);\n }\n}\n\n/**\n * Reject a declared `value_type`/`type` that is not a known flag value kind, and\n * a `default` whose value(s) would not cleanly coerce under that kind — so the\n * typed-flag contract is enforced at registration instead of silently leaving\n * an untyped value to surface at use time.\n */\nfunction assertFlagValueTypeAndDefault(label: string, record: Record<string, unknown>): void {\n const declaredType =\n (typeof record.value_type === \"string\" ? record.value_type : undefined) ??\n (typeof record.type === \"string\" ? record.type : undefined);\n if (declaredType === undefined) {\n return;\n }\n const kind = resolveFlagValueKind(declaredType);\n if (kind === null) {\n throw new TypeError(\n `${label} value_type \"${declaredType}\" is not a known flag value type (expected one of: string, number, boolean).`,\n );\n }\n if (record.default === undefined) {\n return;\n }\n // For list flags, validate the default exactly as the runtime will see it —\n // comma-joined strings and nested arrays are flattened first — so a valid\n // default like `value_type: \"number\", default: \"10,20\"` is not wrongly rejected.\n const defaults = record.list === true ? flattenFlagListValue(record.default) : [record.default];\n for (const [defaultIndex, defaultValue] of defaults.entries()) {\n if (!isFlagDefaultValueCoercible(defaultValue as string | number | boolean, kind)) {\n const suffix = defaults.length > 1 ? `default[${defaultIndex}]` : \"default\";\n throw new TypeError(`${label}.${suffix} (${JSON.stringify(defaultValue)}) is not coercible to ${kind}.`);\n }\n }\n}\n\nfunction validateItemFieldDefinitions(fields: unknown): void {\n if (!Array.isArray(fields)) {\n throw new TypeError(\"registerItemFields fields requires an array of object definitions\");\n }\n for (const [index, raw] of fields.entries()) {\n const record = asRegistrationRecord(`registerItemFields fields[${index}]`, raw);\n assertNonEmptyString(`registerItemFields fields[${index}].name`, record.name);\n const fieldType = assertNonEmptyString(`registerItemFields fields[${index}].type`, record.type);\n if (normalizeItemFieldType(fieldType) === null) {\n const suggestion = suggestKnownItemFieldType(fieldType);\n const hint = suggestion ? ` Did you mean \"${suggestion}\"?` : \"\";\n throw new TypeError(\n `registerItemFields fields[${index}].type \"${fieldType}\" is not a known field type ` +\n `(expected one of: ${KNOWN_ITEM_FIELD_TYPES.join(\", \")}).${hint}`,\n );\n }\n assertOptionalBooleanField(`registerItemFields fields[${index}].optional`, record.optional);\n }\n}\n\nfunction validateItemTypeDefinitions(types: unknown): void {\n if (!Array.isArray(types)) {\n throw new TypeError(\"registerItemTypes types requires an array of object definitions\");\n }\n for (const [typeIndex, raw] of types.entries()) {\n const record = asRegistrationRecord(`registerItemTypes types[${typeIndex}]`, raw);\n assertNonEmptyString(`registerItemTypes types[${typeIndex}].name`, record.name);\n assertOptionalStringField(`registerItemTypes types[${typeIndex}].folder`, record.folder);\n assertOptionalStringArrayField(`registerItemTypes types[${typeIndex}].aliases`, record.aliases);\n assertOptionalStringArrayField(\n `registerItemTypes types[${typeIndex}].required_create_fields`,\n record.required_create_fields,\n );\n assertOptionalStringArrayField(\n `registerItemTypes types[${typeIndex}].required_create_repeatables`,\n record.required_create_repeatables,\n );\n\n if (record.command_option_policies !== undefined) {\n if (!Array.isArray(record.command_option_policies)) {\n throw new TypeError(\n `registerItemTypes types[${typeIndex}].command_option_policies must be an array when provided`,\n );\n }\n for (const [policyIndex, rawPolicy] of record.command_option_policies.entries()) {\n const policy = asRegistrationRecord(\n `registerItemTypes types[${typeIndex}].command_option_policies[${policyIndex}]`,\n rawPolicy,\n );\n assertNonEmptyString(\n `registerItemTypes types[${typeIndex}].command_option_policies[${policyIndex}].command`,\n policy.command,\n );\n assertNonEmptyString(\n `registerItemTypes types[${typeIndex}].command_option_policies[${policyIndex}].option`,\n policy.option,\n );\n assertOptionalBooleanField(\n `registerItemTypes types[${typeIndex}].command_option_policies[${policyIndex}].enabled`,\n policy.enabled,\n );\n assertOptionalBooleanField(\n `registerItemTypes types[${typeIndex}].command_option_policies[${policyIndex}].required`,\n policy.required,\n );\n assertOptionalBooleanField(\n `registerItemTypes types[${typeIndex}].command_option_policies[${policyIndex}].visible`,\n policy.visible,\n );\n }\n }\n\n if (record.options !== undefined) {\n if (!Array.isArray(record.options)) {\n throw new TypeError(`registerItemTypes types[${typeIndex}].options must be an array when provided`);\n }\n for (const [optionIndex, rawOption] of record.options.entries()) {\n const option = asRegistrationRecord(`registerItemTypes types[${typeIndex}].options[${optionIndex}]`, rawOption);\n assertNonEmptyString(`registerItemTypes types[${typeIndex}].options[${optionIndex}].key`, option.key);\n assertOptionalStringArrayField(`registerItemTypes types[${typeIndex}].options[${optionIndex}].values`, option.values);\n assertOptionalBooleanField(`registerItemTypes types[${typeIndex}].options[${optionIndex}].required`, option.required);\n assertOptionalStringArrayField(\n `registerItemTypes types[${typeIndex}].options[${optionIndex}].aliases`,\n option.aliases,\n );\n }\n }\n }\n}\n\nfunction validateMigrationDefinition(definition: unknown): void {\n const record = asRegistrationRecord(\"registerMigration definition\", definition);\n if (record.id !== undefined && typeof record.id !== \"string\") {\n throw new TypeError(\"registerMigration definition.id must be a string when provided\");\n }\n if (record.description !== undefined && typeof record.description !== \"string\") {\n throw new TypeError(\"registerMigration definition.description must be a string when provided\");\n }\n if (record.status !== undefined && typeof record.status !== \"string\") {\n throw new TypeError(\"registerMigration definition.status must be a string when provided\");\n }\n assertOptionalBooleanField(\"registerMigration definition.mandatory\", record.mandatory);\n if (record.run !== undefined && typeof record.run !== \"function\") {\n throw new TypeError(\"registerMigration definition.run must be a function when provided\");\n }\n}\n\n/**\n * The seven array-valued dimensions a {@link ProjectProfileDefinition} stages.\n * Each is \"optional-by-emptiness\": an omitted dimension normalizes to an empty\n * array so the profile planner can iterate every dimension unconditionally.\n */\nconst PROJECT_PROFILE_DIMENSIONS = [\n \"types\",\n \"statuses\",\n \"fields\",\n \"workflows\",\n \"config\",\n \"templates\",\n \"packages\",\n] as const;\n\n/**\n * Validates the field shapes the profile planner, `pm profile show/apply/lint`,\n * and `describeProjectProfile` dereference without re-checking, so a structurally\n * well-formed but type-violating extension entry (e.g. a workflow whose `type` is\n * a number, or whose `allowed_transitions` is not an array) is rejected here\n * rather than crashing a downstream consumer. Dimensions whose consumers already\n * coerce or gracefully reject malformed values (statuses, fields, config) need no\n * shape check. The `entry` is an already-confirmed non-null object.\n */\nfunction validateProjectProfileEntryShape(dimension: string, index: number, entry: Record<string, unknown>): void {\n const at = `registerProfile profile.${dimension}[${index}]`;\n if (dimension === \"types\") {\n if (entry.name !== undefined && typeof entry.name !== \"string\") {\n throw new TypeError(`${at}.name must be a string when provided`);\n }\n return;\n }\n if (dimension === \"workflows\") {\n if (typeof entry.type !== \"string\") {\n throw new TypeError(`${at}.type must be a string`);\n }\n if (!Array.isArray(entry.allowed_transitions)) {\n throw new TypeError(`${at}.allowed_transitions must be an array`);\n }\n for (const [pairIndex, pair] of entry.allowed_transitions.entries()) {\n if (!Array.isArray(pair)) {\n throw new TypeError(`${at}.allowed_transitions[${pairIndex}] must be a [from, to] array`);\n }\n }\n return;\n }\n if (dimension === \"templates\") {\n if (typeof entry.name !== \"string\") {\n throw new TypeError(`${at}.name must be a string`);\n }\n if (typeof entry.options !== \"object\" || entry.options === null || Array.isArray(entry.options)) {\n throw new TypeError(`${at}.options must be an object`);\n }\n return;\n }\n if (dimension === \"packages\") {\n if (typeof entry.spec !== \"string\") {\n throw new TypeError(`${at}.spec must be a string`);\n }\n }\n}\n\nfunction validateProjectProfileDefinition(profile: unknown): void {\n const record = asRegistrationRecord(\"registerProfile profile\", profile);\n assertNonEmptyString(\"registerProfile profile.name\", record.name);\n assertNonEmptyString(\"registerProfile profile.title\", record.title);\n if (record.summary !== undefined && typeof record.summary !== \"string\") {\n throw new TypeError(\"registerProfile profile.summary must be a string when provided\");\n }\n for (const dimension of PROJECT_PROFILE_DIMENSIONS) {\n const value = record[dimension];\n if (value === undefined) {\n continue;\n }\n if (!Array.isArray(value)) {\n throw new TypeError(`registerProfile profile.${dimension} must be an array when provided`);\n }\n // Each dimension entry must be a non-null object: a primitive or null entry\n // (e.g. `statuses: [null]`, `types: [42]`) survives an array-only check but\n // crashes the profile planner and `pm profile show` when they read `entry.id`\n // / `entry.key` / `entry.type` later. Reject it at the registration boundary.\n for (const [index, entry] of value.entries()) {\n if (typeof entry !== \"object\" || entry === null || Array.isArray(entry)) {\n throw new TypeError(`registerProfile profile.${dimension}[${index}] must be an object`);\n }\n // Beyond \"is an object\", validate the specific field shapes consumers\n // dereference so a type-violating entry can never crash the planner, the\n // `pm profile` surfaces, or describeProjectProfile downstream.\n validateProjectProfileEntryShape(dimension, index, entry as Record<string, unknown>);\n }\n }\n}\n\n/**\n * Fills an already-validated profile snapshot's optional surfaces — an absent\n * `summary` becomes an empty string and every omitted dimension an empty array —\n * so the stored definition always has the full {@link ProjectProfileDefinition}\n * shape the profile planner and `pm profile` resolution rely on. It runs after\n * validation on the cloned snapshot, so it only ever supplies missing defaults\n * and never has to coerce an invalid type (those are already rejected).\n */\nfunction applyProjectProfileDefaults(profile: Record<string, unknown>): ProjectProfileDefinition {\n if (profile.summary === undefined) {\n profile.summary = \"\";\n }\n for (const dimension of PROJECT_PROFILE_DIMENSIONS) {\n if (profile[dimension] === undefined) {\n profile[dimension] = [];\n }\n }\n return profile as unknown as ProjectProfileDefinition;\n}\n\nfunction attachRuntimeDefinition<TEntry extends { definition: Record<string, unknown> }>(\n entry: TEntry,\n runtimeDefinition: Record<string, unknown>,\n): TEntry {\n Object.defineProperty(entry, \"runtime_definition\", {\n value: runtimeDefinition,\n enumerable: false,\n writable: false,\n configurable: false,\n });\n return entry;\n}\n\nfunction getDeclaredExtensionCapabilities(extension: LoadedExtension): Set<ExtensionCapability> | null {\n if (!Array.isArray(extension.capabilities)) {\n return null;\n }\n const declared = new Set<ExtensionCapability>();\n for (const capability of extension.capabilities) {\n const normalized = capability.trim().toLowerCase();\n if (isKnownExtensionCapability(normalized)) {\n declared.add(normalized);\n }\n }\n return declared;\n}\n\nfunction assertExtensionCapability(extension: LoadedExtension, capability: ExtensionCapability, method: string): void {\n const declared = getDeclaredExtensionCapabilities(extension);\n // Keep direct unit tests that construct LoadedExtension fixtures without\n // capability metadata backwards-compatible while enforcing manifest-declared\n // capabilities for runtime-loaded extensions.\n if (declared === null) {\n return;\n }\n if (!declared.has(capability)) {\n throw createRegistrationValidationError(\n `${method} requires capability '${capability}' in extension manifest capabilities`,\n {\n method,\n registration_index: -1,\n capability,\n missing_capability: capability,\n expected_schema: `\"capabilities\": [..., \"${capability}\"]`,\n received: extension.capabilities,\n hint: `Add \"${capability}\" to ${extension.name} manifest capabilities, or remove the ${method} registration call.`,\n },\n );\n }\n}\n\nfunction createExtensionApi(\n extension: LoadedExtension,\n hooks: ExtensionHookRegistry,\n commands: ExtensionCommandRegistry,\n parsers: ExtensionParserRegistry,\n preflight: ExtensionPreflightRegistry,\n services: ExtensionServiceRegistry,\n renderers: ExtensionRendererRegistry,\n registrations: ExtensionRegistrationRegistry,\n activationWarnings: string[],\n policy: NormalizedExtensionPolicy,\n): ExtensionApi {\n const selfIdentity: ExtensionSelfIdentity = Object.freeze({\n name: extension.name,\n layer: extension.layer,\n version: extension.version,\n capabilities: Object.freeze(\n (extension.capabilities ?? []).filter((capability): capability is ExtensionCapability =>\n (KNOWN_EXTENSION_CAPABILITIES as readonly string[]).includes(capability),\n ),\n ) as readonly ExtensionCapability[],\n pm_min_version: extension.pm_min_version,\n pm_max_version: extension.pm_max_version,\n source_package: extension.source_package,\n });\n const extensionRef: PolicyExtensionRef = {\n layer: extension.layer,\n name: extension.name,\n trusted: extension.trusted === true,\n provenanceVerified: extension.provenance?.verified === true,\n sandboxProfile: extension.sandbox_profile,\n permissions:\n extension.permissions && typeof extension.permissions === \"object\"\n ? {\n fs_read: extension.permissions.fs_read,\n fs_write: extension.permissions.fs_write,\n network: extension.permissions.network,\n env_read: extension.permissions.env_read,\n env_write: extension.permissions.env_write,\n process_spawn: extension.permissions.process_spawn,\n }\n : undefined,\n };\n const pushPolicyWarning = (warning: string | null): void => {\n if (warning) {\n activationWarnings.push(warning);\n }\n };\n const allowRegistration = (\n surface: ExtensionPolicySurface,\n method: string,\n capability?: ExtensionCapability,\n details?: {\n command?: string;\n action?: string;\n service?: string;\n },\n ): boolean => {\n const decision = evaluateExtensionPolicyForRegistration(policy, extensionRef, surface, method, capability, details);\n pushPolicyWarning(decision.warning);\n return decision.allowed;\n };\n const registerCommandTrace = (\n mode: \"override\" | \"definition\",\n command: string | undefined,\n expectedSchema: string,\n received: unknown,\n hint?: string,\n ): ExtensionActivationFailureTrace => ({\n method: \"registerCommand\",\n registration_index: mode === \"override\" ? commands.overrides.length : commands.handlers.length,\n command,\n expected_schema: expectedSchema,\n received: sanitizeRegistrationValue(received),\n hint,\n });\n\n const registerCommandOverride = (command: string, override: CommandOverride | undefined): void => {\n const normalizedCommand = normalizeCommandName(command);\n if (normalizedCommand.length === 0) {\n throw createRegistrationValidationError(\n \"registerCommand requires a non-empty command name\",\n registerCommandTrace(\n \"override\",\n command,\n 'registerCommand(\"<command>\", (context) => unknown)',\n command,\n \"Provide a non-empty command path as the first argument.\",\n ),\n );\n }\n if (typeof override !== \"function\") {\n const trace = registerCommandTrace(\n \"override\",\n normalizedCommand,\n 'registerCommand(\"<command>\", (context) => unknown)',\n { command, override },\n \"Provide a function as the second registerCommand argument.\",\n );\n throw createRegistrationValidationError(\n `registerCommand requires an override function when command name is provided (command=\"${normalizedCommand}\", registration_index=${trace.registration_index})`,\n trace,\n );\n }\n if (!allowRegistration(\"commands.override\", \"registerCommand\", \"commands\", { command: normalizedCommand })) {\n return;\n }\n commands.overrides.push({\n layer: extension.layer,\n name: extension.name,\n command: normalizedCommand,\n run: override,\n });\n };\n\n const resolveCommandDefinitionRunHandler = (\n definition: CommandDefinition,\n normalizedCommand: string,\n ): CommandHandler | undefined => {\n const runHandler = typeof definition.run === \"function\" ? definition.run : undefined;\n const legacyHandler = typeof definition.handler === \"function\" ? definition.handler : undefined;\n if (!runHandler && legacyHandler) {\n activationWarnings.push(\n `extension_command_definition_legacy_handler_alias:${extension.layer}:${extension.name}:${normalizedCommand}`,\n );\n }\n return runHandler ?? legacyHandler;\n };\n\n const registerCommandDefinition = (definition: CommandDefinition): void => {\n if (typeof definition !== \"object\" || definition === null) {\n throw createRegistrationValidationError(\n \"registerCommand requires a command definition object\",\n registerCommandTrace(\n \"definition\",\n undefined,\n \"{ name: string; run: (context) => unknown; }\",\n definition,\n \"Use registerCommand({ name: \\\"command path\\\", run: (context) => ... }).\",\n ),\n );\n }\n if (typeof definition.name !== \"string\") {\n throw createRegistrationValidationError(\n \"registerCommand requires a command definition name\",\n registerCommandTrace(\n \"definition\",\n undefined,\n \"{ name: string; run: (context) => unknown; }\",\n definition,\n \"Set command definition.name to a non-empty string command path.\",\n ),\n );\n }\n\n const normalizedCommand = normalizeCommandName(definition.name);\n if (normalizedCommand.length === 0) {\n throw createRegistrationValidationError(\n \"registerCommand requires a non-empty command definition name\",\n registerCommandTrace(\n \"definition\",\n definition.name,\n \"{ name: string; run: (context) => unknown; }\",\n definition,\n \"Ensure command definition.name contains a non-empty command path.\",\n ),\n );\n }\n const resolvedHandler = resolveCommandDefinitionRunHandler(definition, normalizedCommand);\n if (typeof resolvedHandler !== \"function\") {\n const trace = registerCommandTrace(\n \"definition\",\n normalizedCommand,\n \"{ name: string; run: (context) => unknown; }\",\n definition,\n \"Define command definition.run as a function.\",\n );\n throw createRegistrationValidationError(\n `registerCommand requires a command definition run handler (command=\"${normalizedCommand}\", registration_index=${trace.registration_index})`,\n trace,\n );\n }\n try {\n assertOptionalStringField(\"registerCommand definition.action\", definition.action);\n assertOptionalStringField(\"registerCommand definition.description\", definition.description);\n assertOptionalStringField(\"registerCommand definition.intent\", definition.intent);\n const action = resolveCommandDefinitionAction(normalizedCommand, definition.action);\n if (!allowRegistration(\"commands.handler\", \"registerCommand\", \"commands\", { command: normalizedCommand, action })) {\n return;\n }\n const description = definition.description?.trim();\n const intent = definition.intent?.trim();\n const examples = normalizeOptionalStringArrayField(\"registerCommand definition.examples\", definition.examples);\n const failureHints = normalizeOptionalStringArrayField(\n \"registerCommand definition.failure_hints\",\n definition.failure_hints,\n );\n const argumentsDefinition = normalizeCommandDefinitionArguments(definition.arguments);\n\n if (definition.flags !== undefined) {\n assertExtensionCapability(extension, \"schema\", \"registerCommand flags\");\n validateFlagDefinitions(definition.flags);\n registrations.flags.push({\n layer: extension.layer,\n name: extension.name,\n target_command: normalizedCommand,\n flags: normalizeRegistrationRecordList(\"registerCommand definition.flags\", definition.flags),\n });\n }\n\n const registration: RegisteredExtensionCommandDefinition = {\n layer: extension.layer,\n name: extension.name,\n source_package: extension.source_package,\n command: normalizedCommand,\n action,\n examples,\n failure_hints: failureHints,\n arguments: argumentsDefinition,\n };\n if (description) {\n registration.description = description;\n }\n if (intent) {\n registration.intent = intent;\n }\n registrations.commands.push(registration);\n } catch (error: unknown) {\n const reason = formatUnknownError(error);\n const trace = registerCommandTrace(\n \"definition\",\n normalizedCommand,\n \"{ name: string; run: (context) => unknown; action?: string; arguments?: object[]; flags?: object[]; }\",\n definition,\n \"Use schema-style metadata (action/arguments/flags/examples/intent) with valid values.\",\n );\n throw createRegistrationValidationError(\n `registerCommand definition metadata invalid (command=\"${normalizedCommand}\", registration_index=${trace.registration_index}): ${reason}`,\n trace,\n );\n }\n commands.handlers.push({\n layer: extension.layer,\n name: extension.name,\n command: normalizedCommand,\n run: resolvedHandler,\n });\n };\n\n const registerCommand = (commandOrDefinition: string | CommandDefinition, override?: CommandOverride): void => {\n assertExtensionCapability(extension, \"commands\", \"registerCommand\");\n if (typeof commandOrDefinition === \"string\") {\n registerCommandOverride(commandOrDefinition, override);\n return;\n }\n registerCommandDefinition(commandOrDefinition);\n };\n const registerParser = (command: string, override: ParserOverride): void => {\n assertExtensionCapability(extension, \"parser\", \"registerParser\");\n if (!allowRegistration(\"parser.override\", \"registerParser\", \"parser\")) {\n return;\n }\n const normalizedCommand = normalizeCommandName(assertNonEmptyString(\"registerParser command\", command));\n assertFunctionHandler(\"registerParser override\", override);\n parsers.overrides.push({\n layer: extension.layer,\n name: extension.name,\n command: normalizedCommand,\n run: override,\n });\n };\n const registerPreflight = (override: PreflightOverride): void => {\n assertExtensionCapability(extension, \"preflight\", \"registerPreflight\");\n if (!allowRegistration(\"preflight.override\", \"registerPreflight\", \"preflight\")) {\n return;\n }\n assertFunctionHandler(\"registerPreflight override\", override);\n preflight.overrides.push({\n layer: extension.layer,\n name: extension.name,\n run: override,\n });\n };\n const registerService = (service: ExtensionServiceName, override: ServiceOverride): void => {\n assertExtensionCapability(extension, \"services\", \"registerService\");\n const normalizedService = String(service).trim().toLowerCase();\n if (!isExtensionServiceName(normalizedService)) {\n throw new TypeError(`registerService service must be one of: ${KNOWN_EXTENSION_SERVICE_NAMES.join(\", \")}`);\n }\n if (!allowRegistration(\"services.override\", \"registerService\", \"services\", { service: normalizedService })) {\n return;\n }\n assertFunctionHandler(\"registerService override\", override);\n services.overrides.push({\n layer: extension.layer,\n name: extension.name,\n service: normalizedService as ExtensionServiceName,\n run: override,\n });\n };\n const registerRenderer = (format: OutputRendererFormat, renderer: RendererOverride): void => {\n assertExtensionCapability(extension, \"renderers\", \"registerRenderer\");\n if (!allowRegistration(\"renderers.override\", \"registerRenderer\", \"renderers\")) {\n return;\n }\n if (typeof renderer !== \"function\") {\n throw new TypeError(\"registerRenderer requires a renderer function\");\n }\n const normalizedFormat = String(format).trim().toLowerCase();\n if (!isOutputRendererFormat(normalizedFormat)) {\n throw new Error(`registerRenderer format must be toon|json, received: ${String(format)}`);\n }\n renderers.overrides.push({\n layer: extension.layer,\n name: extension.name,\n format: normalizedFormat,\n run: renderer,\n });\n };\n const registerFlags = (targetCommand: string, flags: FlagDefinition[]): void => {\n assertExtensionCapability(extension, \"schema\", \"registerFlags\");\n if (!allowRegistration(\"schema.flags\", \"registerFlags\", \"schema\")) {\n return;\n }\n const normalizedTargetCommand = normalizeCommandName(assertNonEmptyString(\"registerFlags targetCommand\", targetCommand));\n validateFlagDefinitions(flags);\n const normalizedFlags = normalizeRegistrationRecordList(\"registerFlags flags\", flags);\n if (normalizedFlags.length === 0) {\n throw new TypeError(\"registerFlags requires at least one flag definition\");\n }\n registrations.flags.push({\n layer: extension.layer,\n name: extension.name,\n target_command: normalizedTargetCommand,\n flags: normalizedFlags,\n });\n };\n const registerItemFields = (fields: SchemaFieldDefinition[]): void => {\n assertExtensionCapability(extension, \"schema\", \"registerItemFields\");\n if (!allowRegistration(\"schema.itemfields\", \"registerItemFields\", \"schema\")) {\n return;\n }\n validateItemFieldDefinitions(fields);\n const normalizedFields = normalizeRegistrationRecordList(\n \"registerItemFields fields\",\n fields,\n ) as SchemaFieldDefinition[];\n if (normalizedFields.length === 0) {\n throw new TypeError(\"registerItemFields requires at least one field definition\");\n }\n registrations.item_fields.push({\n layer: extension.layer,\n name: extension.name,\n fields: normalizedFields,\n });\n };\n const registerItemTypes = (types: SchemaItemTypeDefinition[]): void => {\n assertExtensionCapability(extension, \"schema\", \"registerItemTypes\");\n if (!allowRegistration(\"schema.itemtypes\", \"registerItemTypes\", \"schema\")) {\n return;\n }\n validateItemTypeDefinitions(types);\n const normalizedTypes = normalizeRegistrationRecordList(\n \"registerItemTypes types\",\n types,\n ) as SchemaItemTypeDefinition[];\n if (normalizedTypes.length === 0) {\n throw new TypeError(\"registerItemTypes requires at least one type definition\");\n }\n registrations.item_types.push({\n layer: extension.layer,\n name: extension.name,\n types: normalizedTypes,\n });\n };\n const registerMigration = (definition: SchemaMigrationDefinition): void => {\n assertExtensionCapability(extension, \"schema\", \"registerMigration\");\n if (!allowRegistration(\"schema.migrations\", \"registerMigration\", \"schema\")) {\n return;\n }\n validateMigrationDefinition(definition);\n const runtimeDefinition = normalizeRuntimeRegistrationRecord(\"registerMigration definition\", definition);\n registrations.migrations.push(\n attachRuntimeDefinition(\n {\n layer: extension.layer,\n name: extension.name,\n definition: normalizeRegistrationRecord(\"registerMigration definition\", definition),\n },\n runtimeDefinition,\n ) as RegisteredExtensionSchemaMigrationDefinition,\n );\n };\n const registerProfile = (profile: ProjectProfileRegistrationInput): void => {\n assertExtensionCapability(extension, \"schema\", \"registerProfile\");\n if (!allowRegistration(\"schema.profiles\", \"registerProfile\", \"schema\")) {\n return;\n }\n // Snapshot first, then validate and default the snapshot: cloning resolves\n // any getters once into plain data decoupled from the caller's object, so\n // validation and storage operate on the same value — a getter cannot present\n // one value to validation and another to the registry. Defaults are applied\n // only after validation, so an invalid type is rejected, not silently coerced.\n const snapshot = cloneRuntimeRegistrationValue(profile);\n validateProjectProfileDefinition(snapshot);\n registrations.profiles.push({\n layer: extension.layer,\n name: extension.name,\n profile: applyProjectProfileDefaults(snapshot as Record<string, unknown>),\n });\n };\n const applyImportExportCommandMetadata = (\n method: \"registerImporter\" | \"registerExporter\",\n commandPath: string,\n options: ImportExportRegistrationOptions | undefined,\n ): void => {\n if (options === undefined) {\n return;\n }\n if (typeof options !== \"object\" || options === null || Array.isArray(options)) {\n throw new TypeError(`${method} options must be an object when provided`);\n }\n assertOptionalStringField(`${method} options.action`, options.action);\n assertOptionalStringField(`${method} options.description`, options.description);\n assertOptionalStringField(`${method} options.intent`, options.intent);\n const action = resolveCommandDefinitionAction(commandPath, options.action);\n const examples = normalizeOptionalStringArrayField(`${method} options.examples`, options.examples);\n const failureHints = normalizeOptionalStringArrayField(`${method} options.failure_hints`, options.failure_hints);\n const argumentsDefinition = normalizeCommandDefinitionArguments(options.arguments);\n\n if (options.flags !== undefined) {\n assertExtensionCapability(extension, \"schema\", `${method} options.flags`);\n // Route metadata flags through the same surface-policy gate as registerFlags so\n // enforce-mode policies blocking schema.flags are honored even when importers are allowed.\n if (allowRegistration(\"schema.flags\", `${method} options.flags`, \"schema\")) {\n validateFlagDefinitions(options.flags);\n registrations.flags.push({\n layer: extension.layer,\n name: extension.name,\n target_command: commandPath,\n flags: normalizeRegistrationRecordList(`${method} options.flags`, options.flags),\n });\n }\n }\n\n const registration: RegisteredExtensionCommandDefinition = {\n layer: extension.layer,\n name: extension.name,\n source_package: extension.source_package,\n command: commandPath,\n action,\n examples,\n failure_hints: failureHints,\n arguments: argumentsDefinition,\n };\n const description = options.description?.trim();\n if (description) {\n registration.description = description;\n }\n const intent = options.intent?.trim();\n if (intent) {\n registration.intent = intent;\n }\n registrations.commands.push(registration);\n };\n const registerImporter = (name: string, importer: Importer, options?: ImportExportRegistrationOptions): void => {\n assertExtensionCapability(extension, \"importers\", \"registerImporter\");\n if (!allowRegistration(\"importers.importer\", \"registerImporter\", \"importers\")) {\n return;\n }\n const normalizedName = normalizeRegistrationName(assertNonEmptyString(\"registerImporter name\", name));\n assertFunctionHandler(\"registerImporter importer\", importer);\n const commandPath = toRegistrationCommandPath(normalizedName, \"import\");\n // Validate and register optional command metadata before mutating the registry\n // so an invalid options object leaves no partial importer registration.\n applyImportExportCommandMetadata(\"registerImporter\", commandPath, options);\n registrations.importers.push({\n layer: extension.layer,\n name: extension.name,\n importer: normalizedName,\n });\n commands.handlers.push({\n layer: extension.layer,\n name: extension.name,\n command: commandPath,\n run: async (context) =>\n importer({\n registration: normalizedName,\n action: \"import\",\n command: context.command,\n args: cloneContextSnapshot(context.args),\n options: cloneContextSnapshot(context.options),\n global: cloneContextSnapshot(context.global),\n pm_root: context.pm_root,\n }),\n });\n };\n const registerExporter = (name: string, exporter: Exporter, options?: ImportExportRegistrationOptions): void => {\n assertExtensionCapability(extension, \"importers\", \"registerExporter\");\n if (!allowRegistration(\"importers.exporter\", \"registerExporter\", \"importers\")) {\n return;\n }\n const normalizedName = normalizeRegistrationName(assertNonEmptyString(\"registerExporter name\", name));\n assertFunctionHandler(\"registerExporter exporter\", exporter);\n const commandPath = toRegistrationCommandPath(normalizedName, \"export\");\n // Validate and register optional command metadata before mutating the registry\n // so an invalid options object leaves no partial exporter registration.\n applyImportExportCommandMetadata(\"registerExporter\", commandPath, options);\n registrations.exporters.push({\n layer: extension.layer,\n name: extension.name,\n exporter: normalizedName,\n });\n commands.handlers.push({\n layer: extension.layer,\n name: extension.name,\n command: commandPath,\n run: async (context) =>\n exporter({\n registration: normalizedName,\n action: \"export\",\n command: context.command,\n args: cloneContextSnapshot(context.args),\n options: cloneContextSnapshot(context.options),\n global: cloneContextSnapshot(context.global),\n pm_root: context.pm_root,\n }),\n });\n };\n const registerSearchProvider = (provider: SearchProviderDefinition): void => {\n assertExtensionCapability(extension, \"search\", \"registerSearchProvider\");\n if (!allowRegistration(\"search.provider\", \"registerSearchProvider\", \"search\")) {\n return;\n }\n const runtimeDefinition = normalizeRuntimeRegistrationRecord(\"registerSearchProvider provider\", provider);\n registrations.search_providers.push(\n attachRuntimeDefinition(\n {\n layer: extension.layer,\n name: extension.name,\n definition: normalizeRegistrationRecord(\"registerSearchProvider provider\", provider),\n },\n runtimeDefinition,\n ) as RegisteredExtensionSearchProvider,\n );\n };\n const registerVectorStoreAdapter = (adapter: VectorStoreAdapterDefinition): void => {\n assertExtensionCapability(extension, \"search\", \"registerVectorStoreAdapter\");\n if (!allowRegistration(\"search.vectorstore\", \"registerVectorStoreAdapter\", \"search\")) {\n return;\n }\n const runtimeDefinition = normalizeRuntimeRegistrationRecord(\"registerVectorStoreAdapter adapter\", adapter);\n registrations.vector_store_adapters.push(\n attachRuntimeDefinition(\n {\n layer: extension.layer,\n name: extension.name,\n definition: normalizeRegistrationRecord(\"registerVectorStoreAdapter adapter\", adapter),\n },\n runtimeDefinition,\n ) as RegisteredExtensionVectorStoreAdapter,\n );\n };\n const registerBeforeCommand = (hook: BeforeCommandHook): void => {\n assertExtensionCapability(extension, \"hooks\", \"api.hooks.beforeCommand\");\n if (!allowRegistration(\"hooks.beforecommand\", \"api.hooks.beforeCommand\", \"hooks\")) {\n return;\n }\n assertHookHandler(\"beforeCommand\", hook);\n hooks.beforeCommand.push({\n layer: extension.layer,\n name: extension.name,\n run: hook,\n });\n };\n const registerAfterCommand = (hook: AfterCommandHook): void => {\n assertExtensionCapability(extension, \"hooks\", \"api.hooks.afterCommand\");\n if (!allowRegistration(\"hooks.aftercommand\", \"api.hooks.afterCommand\", \"hooks\")) {\n return;\n }\n assertHookHandler(\"afterCommand\", hook);\n hooks.afterCommand.push({\n layer: extension.layer,\n name: extension.name,\n run: hook,\n });\n };\n const registerOnWrite = (hook: OnWriteHook): void => {\n assertExtensionCapability(extension, \"hooks\", \"api.hooks.onWrite\");\n if (!allowRegistration(\"hooks.onwrite\", \"api.hooks.onWrite\", \"hooks\")) {\n return;\n }\n assertHookHandler(\"onWrite\", hook);\n hooks.onWrite.push({\n layer: extension.layer,\n name: extension.name,\n run: hook,\n });\n };\n const registerOnRead = (hook: OnReadHook): void => {\n assertExtensionCapability(extension, \"hooks\", \"api.hooks.onRead\");\n if (!allowRegistration(\"hooks.onread\", \"api.hooks.onRead\", \"hooks\")) {\n return;\n }\n assertHookHandler(\"onRead\", hook);\n hooks.onRead.push({\n layer: extension.layer,\n name: extension.name,\n run: hook,\n });\n };\n const registerOnIndex = (hook: OnIndexHook): void => {\n assertExtensionCapability(extension, \"hooks\", \"api.hooks.onIndex\");\n if (!allowRegistration(\"hooks.onindex\", \"api.hooks.onIndex\", \"hooks\")) {\n return;\n }\n assertHookHandler(\"onIndex\", hook);\n hooks.onIndex.push({\n layer: extension.layer,\n name: extension.name,\n run: hook,\n });\n };\n\n return {\n extension: selfIdentity,\n registerCommand,\n registerParser,\n registerPreflight,\n registerService,\n registerFlags,\n registerItemFields,\n registerItemTypes,\n registerMigration,\n registerProfile,\n registerRenderer,\n registerImporter,\n registerExporter,\n registerSearchProvider,\n registerVectorStoreAdapter,\n hooks: {\n beforeCommand: registerBeforeCommand,\n afterCommand: registerAfterCommand,\n onWrite: registerOnWrite,\n onRead: registerOnRead,\n onIndex: registerOnIndex,\n },\n };\n}\n\nfunction getRegistrationCounts(registrations: ExtensionRegistrationRegistry): ExtensionRegistrationCounts {\n const commandCount = registrations.commands.length;\n const flagCount = registrations.flags.reduce((total, entry) => total + entry.flags.length, 0);\n const itemFieldCount = registrations.item_fields.reduce((total, entry) => total + entry.fields.length, 0);\n const itemTypeCount = registrations.item_types.reduce((total, entry) => total + entry.types.length, 0);\n return {\n commands: commandCount,\n flags: flagCount,\n item_fields: itemFieldCount,\n item_types: itemTypeCount,\n migrations: registrations.migrations.length,\n profiles: registrations.profiles.length,\n importers: registrations.importers.length,\n exporters: registrations.exporters.length,\n search_providers: registrations.search_providers.length,\n vector_store_adapters: registrations.vector_store_adapters.length,\n };\n}\n\nfunction collectCommandCollisionWarnings(commands: ExtensionCommandRegistry): string[] {\n const warnings: string[] = [];\n const collectByCommand = <TEntry extends { layer: ExtensionLayer; name: string; command: string }>(\n entries: TEntry[],\n codePrefix: string,\n ): void => {\n const grouped = new Map<string, TEntry[]>();\n for (const entry of entries) {\n const bucket = grouped.get(entry.command) ?? [];\n bucket.push(entry);\n grouped.set(entry.command, bucket);\n }\n for (const command of [...grouped.keys()].sort((left, right) => left.localeCompare(right))) {\n const bucket = grouped.get(command)!;\n if (bucket.length <= 1) {\n continue;\n }\n const winner = bucket[bucket.length - 1];\n for (const displaced of bucket.slice(0, -1)) {\n warnings.push(\n `${codePrefix}:${command}:${winner.layer}:${winner.name}:${displaced.layer}:${displaced.name}`,\n );\n }\n }\n };\n\n collectByCommand(commands.handlers, \"extension_command_handler_collision\");\n collectByCommand(commands.overrides, \"extension_command_override_collision\");\n\n const handlerCommands = new Set(commands.handlers.map((entry) => entry.command));\n const overlapCommands = [...new Set(commands.overrides.map((entry) => entry.command))].filter((command) =>\n handlerCommands.has(command),\n );\n overlapCommands.sort((left, right) => left.localeCompare(right));\n for (const command of overlapCommands) {\n const handlers = commands.handlers.filter((entry) => entry.command === command);\n const overrides = commands.overrides.filter((entry) => entry.command === command);\n for (const override of overrides) {\n for (const handler of handlers) {\n warnings.push(\n `extension_command_override_handler_overlap:${command}:${override.layer}:${override.name}:${handler.layer}:${handler.name}`,\n );\n }\n }\n }\n\n return warnings;\n}\n\nfunction collectRendererCollisionWarnings(renderers: ExtensionRendererRegistry): string[] {\n const grouped = new Map<OutputRendererFormat, RegisteredExtensionRendererOverride[]>();\n for (const entry of renderers.overrides) {\n const bucket = grouped.get(entry.format) ?? [];\n bucket.push(entry);\n grouped.set(entry.format, bucket);\n }\n const warnings: string[] = [];\n for (const format of [...grouped.keys()].sort((left, right) => left.localeCompare(right))) {\n const bucket = grouped.get(format)!;\n if (bucket.length <= 1) {\n continue;\n }\n const winner = bucket[bucket.length - 1];\n for (const displaced of bucket.slice(0, -1)) {\n warnings.push(\n `extension_renderer_collision:${format}:${winner.layer}:${winner.name}:${displaced.layer}:${displaced.name}`,\n );\n }\n }\n return warnings;\n}\n\nfunction collectParserCollisionWarnings(parsers: ExtensionParserRegistry): string[] {\n const warnings: string[] = [];\n const grouped = new Map<string, RegisteredExtensionParserOverride[]>();\n for (const entry of parsers.overrides) {\n const bucket = grouped.get(entry.command) ?? [];\n bucket.push(entry);\n grouped.set(entry.command, bucket);\n }\n for (const command of [...grouped.keys()].sort((left, right) => left.localeCompare(right))) {\n const bucket = grouped.get(command)!;\n if (bucket.length <= 1) {\n continue;\n }\n const winner = bucket[bucket.length - 1];\n for (const displaced of bucket.slice(0, -1)) {\n warnings.push(\n `extension_parser_override_collision:${command}:${winner.layer}:${winner.name}:${displaced.layer}:${displaced.name}`,\n );\n }\n }\n return warnings;\n}\n\nfunction collectPreflightCollisionWarnings(preflight: ExtensionPreflightRegistry): string[] {\n if (preflight.overrides.length <= 1) {\n return [];\n }\n const winner = preflight.overrides[preflight.overrides.length - 1];\n return preflight.overrides.slice(0, -1).map(\n (displaced) =>\n `extension_preflight_override_collision:${winner.layer}:${winner.name}:${displaced.layer}:${displaced.name}`,\n );\n}\n\n// Services whose runtime semantics are chain/fall-through (each override gets a chance);\n// for those, registering multiple overrides is by design, not a collision.\nconst CHAINED_SERVICE_NAMES: ReadonlySet<ExtensionServiceName> = new Set<ExtensionServiceName>([\n \"output_format\",\n]);\n\nfunction collectServiceCollisionWarnings(services: ExtensionServiceRegistry): string[] {\n const warnings: string[] = [];\n const grouped = new Map<ExtensionServiceName, RegisteredExtensionServiceOverride[]>();\n for (const entry of services.overrides) {\n const bucket = grouped.get(entry.service) ?? [];\n bucket.push(entry);\n grouped.set(entry.service, bucket);\n }\n for (const service of [...grouped.keys()].sort((left, right) => left.localeCompare(right))) {\n const bucket = grouped.get(service)!;\n if (bucket.length <= 1) {\n continue;\n }\n if (CHAINED_SERVICE_NAMES.has(service)) {\n continue;\n }\n const winner = bucket[bucket.length - 1];\n for (const displaced of bucket.slice(0, -1)) {\n warnings.push(\n `extension_service_override_collision:${service}:${winner.layer}:${winner.name}:${displaced.layer}:${displaced.name}`,\n );\n }\n }\n return warnings;\n}\n\n/**\n * Implements activate extensions for the public runtime surface of this module.\n */\nexport async function activateExtensions(loadResult: ExtensionLoadResult): Promise<ExtensionActivationResult> {\n const policy = hydrateExtensionPolicy(loadResult.policy ?? DEFAULT_EXTENSION_POLICY);\n const hooks = createEmptyExtensionHookRegistry();\n const commands = createEmptyExtensionCommandRegistry();\n const parsers = createEmptyExtensionParserRegistry();\n const preflight = createEmptyExtensionPreflightRegistry();\n const services = createEmptyExtensionServiceRegistry();\n const renderers = createEmptyExtensionRendererRegistry();\n const registrations = createEmptyExtensionRegistrationRegistry();\n const failed: FailedExtensionActivation[] = [];\n const warnings: string[] = [];\n\n for (const extension of loadResult.loaded) {\n const activatable = resolveActivatableExtension(extension.module);\n if (!activatable) {\n continue;\n }\n\n try {\n await activatable.activate(\n createExtensionApi(\n extension,\n hooks,\n commands,\n parsers,\n preflight,\n services,\n renderers,\n registrations,\n warnings,\n policy,\n ),\n );\n } catch (error: unknown) {\n warnings.push(`extension_activate_failed:${extension.layer}:${extension.name}`);\n const trace = extractRegistrationValidationTrace(error);\n failed.push({\n layer: extension.layer,\n name: extension.name,\n entry_path: extension.entry_path,\n error: formatUnknownError(error),\n trace,\n });\n }\n }\n\n const collisionWarnings = [\n ...collectCommandCollisionWarnings(commands),\n ...collectParserCollisionWarnings(parsers),\n ...collectPreflightCollisionWarnings(preflight),\n ...collectServiceCollisionWarnings(services),\n ...collectRendererCollisionWarnings(renderers),\n ];\n const mergedWarnings = [...new Set([...warnings, ...collisionWarnings])];\n\n return {\n hooks,\n commands,\n parsers,\n preflight,\n services,\n renderers,\n registrations,\n failed,\n warnings: mergedWarnings,\n hook_counts: {\n before_command: hooks.beforeCommand.length,\n after_command: hooks.afterCommand.length,\n on_write: hooks.onWrite.length,\n on_read: hooks.onRead.length,\n on_index: hooks.onIndex.length,\n },\n command_override_count: commands.overrides.length,\n command_handler_count: commands.handlers.length,\n parser_override_count: parsers.overrides.length,\n preflight_override_count: preflight.overrides.length,\n service_override_count: services.overrides.length,\n renderer_override_count: renderers.overrides.length,\n registration_counts: getRegistrationCounts(registrations),\n };\n}\n\nexport const _testOnlyLoader = {\n assertFlagValueTypeAndDefault,\n assertOptionalStringField,\n compareComparableVersions,\n collectCommandCollisionWarnings,\n collectParserCollisionWarnings,\n collectRendererCollisionWarnings,\n collectServiceCollisionWarnings,\n createExtensionApi,\n createRegistrationValidationError,\n evaluatePmMaxVersionCompatibility,\n evaluatePmMinVersionCompatibility,\n extractRegistrationValidationTrace,\n fingerprintPath,\n getRegistrationCounts,\n normalizeCommandDefinitionArguments,\n normalizeExtensionDeactivateTimeout,\n normalizeOptionalStringArrayField,\n normalizeRegistrationRecord,\n normalizeRegistrationRecordList,\n normalizeRuntimeRegistrationRecord,\n parseComparableVersion,\n parseManifest,\n readCurrentPmCliVersion,\n readManagedExtensionSourcePackages,\n resolveExtensionImportHref,\n resolveCurrentPmCliVersion,\n resolveCommandDefinitionAction,\n sanitizeRegistrationValue,\n validateItemFieldDefinitions,\n resetCurrentPmCliVersionCacheForTest: () => {\n currentPmCliVersionPromise = null;\n },\n};\n"],"names":[],"mappings":"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","debugId":"07458218-1762-56b2-932e-adfacc4fa916"}
1
+ {"version":3,"file":"loader.js","sources":["core/extensions/loader.ts"],"sourceRoot":"/","sourcesContent":["/**\n * @module core/extensions/loader\n *\n * Implements extension runtime contracts and governance for Loader.\n */\nimport fs from \"node:fs/promises\";\nimport path from \"node:path\";\nimport { pathToFileURL } from \"node:url\";\nimport { pathExists } from \"../fs/fs-utils.js\";\nimport { isPathWithinDirectory } from \"../fs/path-utils.js\";\nimport { resolvePmPackageRootFromModule } from \"../packages/root.js\";\nimport { resolveGlobalPmRoot } from \"../store/paths.js\";\nimport { asRecordLoose, resolveActivatablePropertyRecord } from \"../shared/primitives.js\";\nimport { flattenFlagListValue, isFlagDefaultValueCoercible, resolveFlagValueKind } from \"./flag-value-types.js\";\nimport { KNOWN_ITEM_FIELD_TYPES, normalizeItemFieldType, suggestKnownItemFieldType } from \"./item-field-types.js\";\nimport {\n compareComparableVersions,\n evaluatePmMaxVersionBound,\n evaluatePmMinVersionBound,\n parseComparableVersion,\n type PmVersionBoundEvaluation,\n} from \"./version-compat.js\";\nimport type { ProjectProfileDefinition, ProjectProfileRegistrationInput } from \"../profile/profile-presets.js\";\n// Cohesive helper groups now live in sibling modules. They are imported for the\n// discovery/activation code that stays here and re-exported below so existing\n// import sites (sdk/index.ts, commands/extension.ts, health.ts, tests, …) keep\n// importing everything from \"./loader.js\" unchanged.\nimport {\n normalizeNames,\n isKnownExtensionCapability,\n collectUnknownExtensionCapabilities,\n normalizeManifestCapabilities,\n formatUnknownExtensionCapabilityWarning,\n formatLegacyExtensionCapabilityAliasWarning,\n} from \"./extension-capability-aliases.js\";\nimport {\n normalizeExtensionPolicy,\n serializeExtensionPolicy,\n hydrateExtensionPolicy,\n normalizePolicySandboxProfile,\n evaluateExtensionPolicyForExtension,\n evaluateExtensionPolicyForCapability,\n evaluateExtensionPolicyForRegistration,\n type NormalizedExtensionPolicy,\n type PolicyExtensionRef,\n} from \"./extension-policy.js\";\nimport {\n createEmptyExtensionHookRegistry,\n createEmptyExtensionCommandRegistry,\n createEmptyExtensionParserRegistry,\n createEmptyExtensionPreflightRegistry,\n createEmptyExtensionServiceRegistry,\n createEmptyExtensionRendererRegistry,\n createEmptyExtensionRegistrationRegistry,\n} from \"./extension-registries.js\";\nimport {\n normalizeCommandName,\n cloneContextSnapshot,\n} from \"./extension-runtime-helpers.js\";\nexport {\n parseUnknownExtensionCapabilityWarning,\n parseLegacyExtensionCapabilityAliasWarning,\n} from \"./extension-capability-aliases.js\";\nexport {\n createEmptyExtensionHookRegistry,\n createEmptyExtensionCommandRegistry,\n createEmptyExtensionParserRegistry,\n createEmptyExtensionPreflightRegistry,\n createEmptyExtensionServiceRegistry,\n createEmptyExtensionRendererRegistry,\n createEmptyExtensionRegistrationRegistry,\n} from \"./extension-registries.js\";\nexport {\n runBeforeCommandHooks,\n runAfterCommandHooks,\n runOnWriteHooks,\n runOnReadHooks,\n runOnIndexHooks,\n runCommandHandler,\n runParserOverride,\n runPreflightOverride,\n runServiceOverrideSync,\n runServiceOverride,\n runCommandOverride,\n runRendererOverride,\n} from \"./extension-hook-runtime.js\";\nimport {\n KNOWN_EXTENSION_CAPABILITIES,\n KNOWN_EXTENSION_SERVICE_NAMES,\n createDefaultExtensionGovernancePolicy,\n type ExtensionDeactivationFailure,\n type ExtensionDeactivationOptions,\n type ExtensionDeactivationResult,\n type ExtensionSelfIdentity,\n type ExtensionCapability,\n type ExtensionPolicySurface,\n type ExtensionSandboxProfile,\n type ExtensionGovernancePolicy,\n type PmMaxVersionExceededMode,\n type ExtensionLayer,\n type ExtensionManifest,\n type ExtensionManifestEngines,\n type ExtensionDiagnostic,\n type EffectiveExtension,\n type ExtensionDiscoveryResult,\n type LoadedExtension,\n type FailedExtensionLoad,\n type ExtensionLoadResult,\n type BeforeCommandHook,\n type AfterCommandHook,\n type OnWriteHook,\n type OnReadHook,\n type OnIndexHook,\n type OutputRendererFormat,\n type CommandOverride,\n type RendererOverride,\n type CommandHandler,\n type ParserOverride,\n type PreflightOverride,\n type ServiceOverride,\n type ExtensionHookRegistry,\n type ExtensionServiceName,\n type ExtensionCommandArgumentDefinition,\n type CommandDefinition,\n type FlagDefinition,\n type SchemaFieldDefinition,\n type SchemaItemTypeDefinition,\n type SchemaMigrationDefinition,\n type ImportExportRegistrationOptions,\n type Importer,\n type Exporter,\n type SearchProviderDefinition,\n type VectorStoreAdapterDefinition,\n type RegisteredExtensionParserOverride,\n type RegisteredExtensionServiceOverride,\n type RegisteredExtensionRendererOverride,\n type ExtensionCommandRegistry,\n type ExtensionParserRegistry,\n type ExtensionPreflightRegistry,\n type ExtensionServiceRegistry,\n type ExtensionRendererRegistry,\n type RegisteredExtensionCommandDefinition,\n type RegisteredExtensionSchemaMigrationDefinition,\n type RegisteredExtensionSearchProvider,\n type RegisteredExtensionVectorStoreAdapter,\n type ExtensionRegistrationRegistry,\n type ExtensionRegistrationCounts,\n type ExtensionApi,\n type FailedExtensionActivation,\n type ExtensionActivationFailureTrace,\n type ExtensionActivationResult,\n type ExtensionCandidate,\n type ExtensionLayerScanResult,\n type ScannedExtensionDirectory,\n type LegacyExtensionCapabilityAliasMapping,\n type DiscoverExtensionsOptions,\n type ActivatableExtension,\n} from \"./extension-types.js\";\nexport * from \"./extension-types.js\";\n\nexport const DEFAULT_EXTENSION_PRIORITY = 100;\nlet currentPmCliVersionPromise: Promise<string | null> | null = null;\n\n/* Types now in extension-types.ts - re-exported via `export * from \"./extension-types.js\"` above */\n\nconst DEFAULT_EXTENSION_POLICY: ExtensionGovernancePolicy = Object.freeze(createDefaultExtensionGovernancePolicy());\n\nlet extensionReloadEpoch = 0;\n\n/**\n * Implements next extension reload token for the public runtime surface of this module.\n */\nexport function nextExtensionReloadToken(seed = Date.now()): string {\n extensionReloadEpoch += 1;\n return `${extensionReloadEpoch}-${seed}`;\n}\n\nfunction parseOptionalManifestString(candidate: Record<string, unknown>, field: string): string | null | undefined {\n const value = candidate[field];\n if (value === undefined || value === null) {\n return undefined;\n }\n if (typeof value !== \"string\" || value.trim().length === 0) {\n return null;\n }\n return value.trim();\n}\n\nfunction parseManifestEngines(value: unknown): ExtensionManifestEngines | null | undefined {\n if (value === undefined || value === null) {\n return undefined;\n }\n const enginesRecord = asRecordLoose(value);\n if (!enginesRecord) {\n return null;\n }\n const engines: ExtensionManifestEngines = {};\n for (const key of Object.keys(enginesRecord).sort((left, right) => left.localeCompare(right))) {\n if (key.trim().length === 0) {\n return null;\n }\n const engineValue = enginesRecord[key];\n if (typeof engineValue !== \"string\" || engineValue.trim().length === 0) {\n return null;\n }\n engines[key.trim()] = engineValue.trim();\n }\n return Object.keys(engines).length > 0 ? engines : undefined;\n}\n\n/** Parse a required manifest string field, returning `null` when it is absent, non-string, or blank. */\nfunction parseRequiredManifestString(candidate: Record<string, unknown>, field: string): string | null {\n const value = candidate[field];\n if (typeof value !== \"string\" || value.trim().length === 0) {\n return null;\n }\n return value.trim();\n}\n\n/** Parse an optional integer value (`undefined` when absent, `null` when present but not an integer). */\nfunction parseOptionalIntegerValue(value: unknown): number | null | undefined {\n if (value === undefined || value === null) {\n return undefined;\n }\n if (typeof value !== \"number\" || !Number.isInteger(value)) {\n return null;\n }\n return value;\n}\n\n/** Parse an optional boolean value (`undefined` when absent, `null` when present but not a boolean). */\nfunction parseOptionalBooleanValue(value: unknown): boolean | null | undefined {\n if (value === undefined || value === null) {\n return undefined;\n }\n if (typeof value !== \"boolean\") {\n return null;\n }\n return value;\n}\n\n/** Parse the optional integer `priority`, defaulting to {@link DEFAULT_EXTENSION_PRIORITY} when absent and rejecting (`null`) a non-integer. */\nfunction parseManifestPriority(candidate: Record<string, unknown>): number | null {\n const value = parseOptionalIntegerValue(candidate.priority);\n return value === undefined ? DEFAULT_EXTENSION_PRIORITY : value;\n}\n\n/** Parse the optional `sandbox_profile`, rejecting (`null`) any value that does not round-trip through {@link normalizePolicySandboxProfile}. */\nfunction parseManifestSandboxProfile(candidate: Record<string, unknown>): ExtensionSandboxProfile | null | undefined {\n const value = candidate.sandbox_profile;\n if (value === undefined || value === null) {\n return undefined;\n }\n if (typeof value !== \"string\") {\n return null;\n }\n const normalizedProfile = normalizePolicySandboxProfile(value);\n if (normalizedProfile !== value.trim().toLowerCase()) {\n return null;\n }\n return normalizedProfile;\n}\n\n/** Return the trimmed string when `value` is a non-blank string, otherwise `undefined`. */\nfunction optionalTrimmedString(value: unknown): string | undefined {\n return typeof value === \"string\" && value.trim().length > 0 ? value.trim() : undefined;\n}\n\n/** Parse the optional `provenance` record (`undefined` absent, `null` malformed), keeping only the present trimmed string fields and a boolean `verified`. */\nfunction parseManifestProvenance(value: unknown): ExtensionManifest[\"provenance\"] | null | undefined {\n if (value === undefined || value === null) {\n return undefined;\n }\n const provenanceRecord = asRecordLoose(value);\n if (!provenanceRecord) {\n return null;\n }\n const source = optionalTrimmedString(provenanceRecord.source);\n const signature = optionalTrimmedString(provenanceRecord.signature);\n const attestation = optionalTrimmedString(provenanceRecord.attestation);\n const verified =\n provenanceRecord.verified === undefined || provenanceRecord.verified === null\n ? undefined\n : typeof provenanceRecord.verified === \"boolean\"\n ? provenanceRecord.verified\n : null;\n if (verified === null) {\n return null;\n }\n return {\n ...(source ? { source } : {}),\n ...(signature ? { signature } : {}),\n ...(attestation ? { attestation } : {}),\n ...(typeof verified === \"boolean\" ? { verified } : {}),\n };\n}\n\n/** Parse the optional `permissions` record (`undefined` absent, `null` malformed), keeping only the boolean grants that are present. */\nfunction parseManifestPermissions(value: unknown): ExtensionManifest[\"permissions\"] | null | undefined {\n if (value === undefined || value === null) {\n return undefined;\n }\n const permissionsRecord = asRecordLoose(value);\n if (!permissionsRecord) {\n return null;\n }\n const fsRead = parseOptionalBooleanValue(permissionsRecord.fs_read);\n const fsWrite = parseOptionalBooleanValue(permissionsRecord.fs_write);\n const network = parseOptionalBooleanValue(permissionsRecord.network);\n const envRead = parseOptionalBooleanValue(permissionsRecord.env_read);\n const envWrite = parseOptionalBooleanValue(permissionsRecord.env_write);\n const processSpawn = parseOptionalBooleanValue(permissionsRecord.process_spawn);\n if ([fsRead, fsWrite, network, envRead, envWrite, processSpawn].includes(null)) {\n return null;\n }\n return {\n ...(typeof fsRead === \"boolean\" ? { fs_read: fsRead } : {}),\n ...(typeof fsWrite === \"boolean\" ? { fs_write: fsWrite } : {}),\n ...(typeof network === \"boolean\" ? { network } : {}),\n ...(typeof envRead === \"boolean\" ? { env_read: envRead } : {}),\n ...(typeof envWrite === \"boolean\" ? { env_write: envWrite } : {}),\n ...(typeof processSpawn === \"boolean\" ? { process_spawn: processSpawn } : {}),\n };\n}\n\n/** Parse the optional `capabilities` array, normalizing legacy aliases; returns empty lists when absent and `null` when the field is not a string array. */\nfunction parseManifestCapabilities(\n value: unknown,\n): { capabilities: string[]; legacy_aliases: LegacyExtensionCapabilityAliasMapping[] } | null {\n if (value === undefined || value === null) {\n return { capabilities: [], legacy_aliases: [] };\n }\n if (!Array.isArray(value) || value.some((entry) => typeof entry !== \"string\")) {\n return null;\n }\n const normalizedCapabilities = normalizeManifestCapabilities(value as string[]);\n return { capabilities: normalizedCapabilities.capabilities, legacy_aliases: normalizedCapabilities.legacy_aliases };\n}\n\n/** Parse the optional `activation` block, returning the de-duplicated sorted `commands` set, `undefined` when no command activation is declared, and `null` when the block is malformed. */\nfunction parseManifestActivation(value: unknown): ExtensionManifest[\"activation\"] | null | undefined {\n if (value === undefined || value === null) {\n return undefined;\n }\n const activationRecord = asRecordLoose(value);\n if (!activationRecord) {\n return null;\n }\n const rawCommands = activationRecord.commands;\n if (rawCommands === undefined || rawCommands === null) {\n return undefined;\n }\n if (!Array.isArray(rawCommands) || rawCommands.some((entry) => typeof entry !== \"string\")) {\n return null;\n }\n const commands = [\n ...new Set(\n rawCommands\n .map((entry) => normalizeCommandName(entry))\n .filter((entry) => entry.length > 0),\n ),\n ].sort((left, right) => left.localeCompare(right));\n return commands.length > 0 ? { commands } : undefined;\n}\n\n/** The optional metadata fields a manifest may declare, parsed and validated as a single bundle so {@link parseManifest} stays a thin orchestrator. */\ninterface ParsedManifestMetadata {\n manifest_version: number | undefined;\n pm_min_version: string | undefined;\n pm_max_version: string | undefined;\n engines: ExtensionManifestEngines | undefined;\n trusted: boolean | undefined;\n sandbox_profile: ExtensionSandboxProfile | undefined;\n provenance: ExtensionManifest[\"provenance\"];\n permissions: ExtensionManifest[\"permissions\"];\n capabilities: string[];\n legacy_capability_aliases: LegacyExtensionCapabilityAliasMapping[];\n activation: ExtensionManifest[\"activation\"];\n}\n\n/** Parse every optional manifest metadata field, returning `null` as soon as any one is malformed. */\nfunction parseManifestMetadata(candidate: Record<string, unknown>): ParsedManifestMetadata | null {\n const manifestVersion = parseOptionalIntegerValue(candidate.manifest_version);\n if (manifestVersion === null) {\n return null;\n }\n const pmMinVersion = parseOptionalManifestString(candidate, \"pm_min_version\");\n if (pmMinVersion === null) {\n return null;\n }\n const pmMaxVersion = parseOptionalManifestString(candidate, \"pm_max_version\");\n if (pmMaxVersion === null) {\n return null;\n }\n const engines = parseManifestEngines(candidate.engines);\n if (engines === null) {\n return null;\n }\n const trusted = parseOptionalBooleanValue(candidate.trusted);\n if (trusted === null) {\n return null;\n }\n const sandboxProfile = parseManifestSandboxProfile(candidate);\n if (sandboxProfile === null) {\n return null;\n }\n const provenance = parseManifestProvenance(candidate.provenance);\n if (provenance === null) {\n return null;\n }\n const permissions = parseManifestPermissions(candidate.permissions);\n if (permissions === null) {\n return null;\n }\n const capabilities = parseManifestCapabilities(candidate.capabilities);\n if (capabilities === null) {\n return null;\n }\n const activation = parseManifestActivation(candidate.activation);\n if (activation === null) {\n return null;\n }\n return {\n manifest_version: manifestVersion,\n pm_min_version: pmMinVersion,\n pm_max_version: pmMaxVersion,\n engines,\n trusted,\n sandbox_profile: sandboxProfile,\n provenance,\n permissions,\n capabilities: capabilities.capabilities,\n legacy_capability_aliases: capabilities.legacy_aliases,\n activation,\n };\n}\n\nfunction parseManifest(raw: unknown): ExtensionManifest | null {\n if (typeof raw !== \"object\" || raw === null) {\n return null;\n }\n const candidate = raw as Record<string, unknown>;\n const name = parseRequiredManifestString(candidate, \"name\");\n if (name === null) {\n return null;\n }\n const version = parseRequiredManifestString(candidate, \"version\");\n if (version === null) {\n return null;\n }\n const entry = parseRequiredManifestString(candidate, \"entry\");\n if (entry === null) {\n return null;\n }\n const priority = parseManifestPriority(candidate);\n if (priority === null) {\n return null;\n }\n const metadata = parseManifestMetadata(candidate);\n if (metadata === null) {\n return null;\n }\n return {\n name,\n version,\n entry,\n priority,\n manifest_version: metadata.manifest_version,\n pm_min_version: metadata.pm_min_version,\n pm_max_version: metadata.pm_max_version,\n engines: metadata.engines,\n trusted: metadata.trusted,\n provenance: metadata.provenance,\n sandbox_profile: metadata.sandbox_profile,\n permissions: metadata.permissions,\n activation: metadata.activation,\n capabilities: metadata.capabilities,\n legacy_capability_aliases:\n metadata.legacy_capability_aliases.length > 0 ? metadata.legacy_capability_aliases : undefined,\n };\n}\n\nfunction shouldEnable(name: string, enabled: Set<string>, disabled: Set<string>): boolean {\n if (disabled.has(name)) {\n return false;\n }\n if (enabled.size === 0) {\n return true;\n }\n return enabled.has(name);\n}\n\n/** Resolve symlinks on both paths before the containment check so a link inside the directory cannot escape it. */\nexport async function isCanonicalPathWithinDirectory(directory: string, targetPath: string): Promise<boolean> {\n const [resolvedDirectory, resolvedTargetPath] = await Promise.all([fs.realpath(directory), fs.realpath(targetPath)]);\n return isPathWithinDirectory(resolvedDirectory, resolvedTargetPath);\n}\n\n/**\n * Implements resolve extension roots for the public runtime surface of this module.\n */\nexport function resolveExtensionRoots(pmRoot: string, cwd = process.cwd()): { global: string; project: string } {\n return {\n global: path.join(resolveGlobalPmRoot(cwd), \"extensions\"),\n project: path.join(pmRoot, \"extensions\"),\n };\n}\n\nasync function listExtensionDirectories(extensionsRoot: string): Promise<string[]> {\n try {\n const entries = await fs.readdir(extensionsRoot, { withFileTypes: true });\n return entries\n .filter((entry) => entry.isDirectory())\n .map((entry) => entry.name)\n .sort((a, b) => a.localeCompare(b));\n } catch {\n return [];\n }\n}\n\nfunction summarizeCandidate(candidate: ExtensionCandidate): EffectiveExtension {\n const summary: EffectiveExtension = {\n layer: candidate.layer,\n directory: candidate.directory,\n manifest_path: candidate.manifest_path,\n name: candidate.manifest.name,\n version: candidate.manifest.version,\n entry: candidate.manifest.entry,\n priority: candidate.manifest.priority,\n entry_path: candidate.entry_path,\n manifest_version: candidate.manifest.manifest_version,\n pm_min_version: candidate.manifest.pm_min_version,\n pm_max_version: candidate.manifest.pm_max_version,\n engines: candidate.manifest.engines,\n trusted: candidate.manifest.trusted,\n provenance: candidate.manifest.provenance,\n sandbox_profile: candidate.manifest.sandbox_profile,\n permissions: candidate.manifest.permissions,\n capabilities: [...candidate.manifest.capabilities],\n activation: candidate.manifest.activation\n ? {\n commands: [...(candidate.manifest.activation.commands as string[])],\n }\n : undefined,\n };\n if (candidate.source_package) {\n summary.source_package = candidate.source_package;\n }\n return summary;\n}\n\nfunction normalizeManagedSourcePackage(value: unknown): string | undefined {\n return typeof value === \"string\" && value.trim().length > 0 ? value.trim() : undefined;\n}\n\nasync function readManagedExtensionSourcePackages(extensionsRoot: string): Promise<Map<string, string>> {\n const packages = new Map<string, string>();\n try {\n const parsed = JSON.parse(await fs.readFile(path.join(extensionsRoot, \".managed-extensions.json\"), \"utf8\")) as unknown;\n if (typeof parsed !== \"object\" || parsed === null || !Array.isArray((parsed as { entries?: unknown }).entries)) {\n return packages;\n }\n for (const entry of (parsed as { entries: unknown[] }).entries) {\n if (typeof entry !== \"object\" || entry === null) {\n continue;\n }\n const record = entry as { directory?: unknown; name?: unknown; source?: { package?: unknown } };\n const sourcePackage = normalizeManagedSourcePackage(record.source?.package);\n if (!sourcePackage) {\n continue;\n }\n if (typeof record.directory === \"string\" && record.directory.trim().length > 0) {\n packages.set(`directory:${record.directory.trim()}`, sourcePackage);\n }\n if (typeof record.name === \"string\" && record.name.trim().length > 0) {\n packages.set(`name:${record.name.trim()}`, sourcePackage);\n }\n }\n } catch {\n return packages;\n }\n return packages;\n}\n\nfunction sortCandidates(candidates: ExtensionCandidate[]): ExtensionCandidate[] {\n return [...candidates].sort((left, right) => {\n if (left.manifest.priority !== right.manifest.priority) {\n return left.manifest.priority - right.manifest.priority;\n }\n const byName = left.manifest.name.localeCompare(right.manifest.name);\n if (byName !== 0) {\n return byName;\n }\n return left.directory.localeCompare(right.directory);\n });\n}\n\nfunction buildEffectiveExtensions(\n globalCandidates: ExtensionCandidate[],\n projectCandidates: ExtensionCandidate[],\n): ExtensionCandidate[] {\n const ordered = [...sortCandidates(globalCandidates), ...sortCandidates(projectCandidates)];\n const effective: ExtensionCandidate[] = [];\n for (const candidate of ordered) {\n const existingIndex = effective.findIndex((entry) => entry.manifest.name === candidate.manifest.name);\n if (existingIndex >= 0) {\n effective.splice(existingIndex, 1);\n }\n effective.push(candidate);\n }\n return effective;\n}\n\nasync function scanExtensionLayer(\n layer: ExtensionLayer,\n extensionsRoot: string,\n enabled: Set<string>,\n disabled: Set<string>,\n pmMaxVersionExceededMode: PmMaxVersionExceededMode,\n): Promise<ExtensionLayerScanResult> {\n const diagnostics: ExtensionDiagnostic[] = [];\n const warnings: string[] = [];\n const candidates: ExtensionCandidate[] = [];\n const directories = await listExtensionDirectories(extensionsRoot);\n const managedSourcePackages = await readManagedExtensionSourcePackages(extensionsRoot);\n\n for (const directory of directories) {\n const scanned = await scanExtensionDirectory(\n layer,\n extensionsRoot,\n directory,\n enabled,\n disabled,\n managedSourcePackages,\n pmMaxVersionExceededMode,\n );\n diagnostics.push(scanned.diagnostic);\n warnings.push(...scanned.warnings);\n if (scanned.candidate) {\n candidates.push(scanned.candidate);\n }\n }\n\n return { diagnostics, warnings, candidates };\n}\n\nfunction emptyExtensionLayerScan(): ExtensionLayerScanResult {\n return { diagnostics: [], warnings: [], candidates: [] };\n}\n\n/**\n * Build the `warn`-status scan result for a directory whose manifest is missing\n * or unparseable, carrying the supplied diagnostic warning and no candidate.\n */\nfunction buildUnavailableExtensionScan(\n layer: ExtensionLayer,\n directory: string,\n manifestPath: string,\n warning: string,\n): ScannedExtensionDirectory {\n return {\n diagnostic: {\n layer,\n directory,\n manifest_path: manifestPath,\n name: null,\n version: null,\n entry: null,\n priority: null,\n entry_path: null,\n enabled: null,\n status: \"warn\",\n },\n warnings: [warning],\n candidate: null,\n };\n}\n\n/**\n * Collect the non-fatal load warnings for a parsed extension manifest, in\n * detection order: legacy capability aliases, unknown capabilities, an entry\n * outside or absent from the extension directory, then the pm version\n * floor/ceiling incompatibility warnings.\n */\nfunction collectScannedExtensionWarnings(\n layer: ExtensionLayer,\n manifest: ExtensionManifest,\n entryWithinDirectory: boolean,\n entryExists: boolean,\n pmVersionCompatibility: { allowed: boolean; warning?: string },\n pmMaxVersionCompatibility: { allowed: boolean; warning?: string },\n): string[] {\n const extensionWarnings: string[] = [];\n if (Array.isArray(manifest.legacy_capability_aliases) && manifest.legacy_capability_aliases.length > 0) {\n extensionWarnings.push(\n formatLegacyExtensionCapabilityAliasWarning(layer, manifest.name, manifest.legacy_capability_aliases),\n );\n }\n for (const capability of collectUnknownExtensionCapabilities(manifest.capabilities)) {\n extensionWarnings.push(formatUnknownExtensionCapabilityWarning(layer, manifest.name, capability));\n }\n if (!entryWithinDirectory) {\n extensionWarnings.push(`extension_entry_outside_extension:${layer}:${manifest.name}`);\n } else if (!entryExists) {\n extensionWarnings.push(`extension_entry_missing:${layer}:${manifest.name}`);\n }\n if (pmVersionCompatibility.warning) {\n extensionWarnings.push(pmVersionCompatibility.warning);\n }\n if (pmMaxVersionCompatibility.warning) {\n extensionWarnings.push(pmMaxVersionCompatibility.warning);\n }\n return extensionWarnings;\n}\n\nasync function scanExtensionDirectory(\n layer: ExtensionLayer,\n extensionsRoot: string,\n directory: string,\n enabled: Set<string>,\n disabled: Set<string>,\n managedSourcePackages: ReadonlyMap<string, string>,\n pmMaxVersionExceededMode: PmMaxVersionExceededMode,\n): Promise<ScannedExtensionDirectory> {\n const extensionDir = path.join(extensionsRoot, directory);\n const manifestPath = path.join(extensionDir, \"manifest.json\");\n if (!(await pathExists(manifestPath))) {\n return buildUnavailableExtensionScan(layer, directory, manifestPath, `extension_manifest_missing:${layer}:${directory}`);\n }\n\n let manifest: ExtensionManifest | null;\n try {\n const parsed = JSON.parse(await fs.readFile(manifestPath, \"utf8\")) as unknown;\n manifest = parseManifest(parsed);\n } catch {\n manifest = null;\n }\n\n if (!manifest) {\n return buildUnavailableExtensionScan(layer, directory, manifestPath, `extension_manifest_invalid:${layer}:${directory}`);\n }\n\n const entryPath = path.resolve(extensionDir, manifest.entry);\n const entryWithinDirectoryByPath = isPathWithinDirectory(extensionDir, entryPath);\n const entryExists = entryWithinDirectoryByPath ? await pathExists(entryPath) : false;\n const entryWithinDirectory =\n entryWithinDirectoryByPath && entryExists\n ? await isCanonicalPathWithinDirectory(extensionDir, entryPath)\n : entryWithinDirectoryByPath;\n const enabledForLoad = shouldEnable(manifest.name, enabled, disabled);\n const pmVersionCompatibility = await evaluatePmMinVersionCompatibility(layer, manifest);\n const pmMaxVersionCompatibility = await evaluatePmMaxVersionCompatibility(layer, manifest, pmMaxVersionExceededMode);\n const extensionWarnings = collectScannedExtensionWarnings(\n layer,\n manifest,\n entryWithinDirectory,\n entryExists,\n pmVersionCompatibility,\n pmMaxVersionCompatibility,\n );\n const extensionReady =\n entryWithinDirectory &&\n entryExists &&\n pmVersionCompatibility.allowed &&\n pmMaxVersionCompatibility.allowed;\n const sourcePackage =\n managedSourcePackages.get(`directory:${directory}`) ?? managedSourcePackages.get(`name:${manifest.name}`);\n\n return {\n diagnostic: {\n layer,\n directory,\n manifest_path: manifestPath,\n name: manifest.name,\n version: manifest.version,\n entry: manifest.entry,\n priority: manifest.priority,\n entry_path: entryPath,\n enabled: enabledForLoad,\n status: extensionReady ? \"ok\" : \"warn\",\n },\n warnings: extensionWarnings,\n candidate:\n extensionReady && enabledForLoad\n ? {\n layer,\n directory,\n manifest_path: manifestPath,\n entry_path: entryPath,\n manifest,\n source_package: sourcePackage,\n }\n : null,\n };\n}\n\n\n/**\n * Implements discover extensions for the public runtime surface of this module.\n */\nexport async function discoverExtensions(options: DiscoverExtensionsOptions): Promise<ExtensionDiscoveryResult> {\n const roots = resolveExtensionRoots(options.pmRoot, options.cwd ?? process.cwd());\n const configured_enabled = normalizeNames(options.settings.extensions.enabled);\n const configured_disabled = normalizeNames(options.settings.extensions.disabled);\n const policy = normalizeExtensionPolicy(options.settings);\n const serializedPolicy = serializeExtensionPolicy(policy);\n\n if (options.noExtensions) {\n return {\n disabled_by_flag: true,\n roots,\n configured_enabled,\n configured_disabled,\n discovered: [],\n effective: [],\n warnings: [...policy.warnings],\n policy: serializedPolicy,\n };\n }\n\n const enabled = new Set(configured_enabled);\n const disabled = new Set(configured_disabled);\n const globalScan = options.ignoreGlobalExtensions === true\n ? emptyExtensionLayerScan()\n : await scanExtensionLayer(\"global\", roots.global, enabled, disabled, policy.pmMaxVersionExceededMode.global);\n const projectScan = await scanExtensionLayer(\"project\", roots.project, enabled, disabled, policy.pmMaxVersionExceededMode.project);\n const policyWarnings: string[] = [...policy.warnings];\n const effectiveCandidates = buildEffectiveExtensions(globalScan.candidates, projectScan.candidates);\n const effective: EffectiveExtension[] = [];\n for (const candidate of effectiveCandidates) {\n const extensionRef = {\n layer: candidate.layer,\n name: candidate.manifest.name,\n trusted: candidate.manifest.trusted === true,\n provenanceVerified: candidate.manifest.provenance?.verified === true,\n sandboxProfile: candidate.manifest.sandbox_profile,\n permissions:\n candidate.manifest.permissions && typeof candidate.manifest.permissions === \"object\"\n ? {\n fs_read: candidate.manifest.permissions.fs_read,\n fs_write: candidate.manifest.permissions.fs_write,\n network: candidate.manifest.permissions.network,\n env_read: candidate.manifest.permissions.env_read,\n env_write: candidate.manifest.permissions.env_write,\n process_spawn: candidate.manifest.permissions.process_spawn,\n }\n : undefined,\n };\n const extensionDecision = evaluateExtensionPolicyForExtension(policy, extensionRef);\n if (extensionDecision.warning) {\n policyWarnings.push(extensionDecision.warning);\n }\n if (!extensionDecision.allowed) {\n continue;\n }\n for (const capability of candidate.manifest.capabilities) {\n const capabilityDecision = evaluateExtensionPolicyForCapability(policy, extensionRef, capability);\n if (capabilityDecision.warning) {\n policyWarnings.push(capabilityDecision.warning);\n }\n }\n effective.push(summarizeCandidate(candidate));\n }\n\n return {\n disabled_by_flag: false,\n roots,\n configured_enabled,\n configured_disabled,\n discovered: [...globalScan.diagnostics, ...projectScan.diagnostics],\n effective,\n warnings: [...new Set([...globalScan.warnings, ...projectScan.warnings, ...policyWarnings])],\n policy: serializedPolicy,\n };\n}\n\nfunction formatUnknownError(error: unknown): string {\n if (error instanceof Error && error.message.trim().length > 0) {\n return error.message;\n }\n return String(error);\n}\n\nasync function readCurrentPmCliVersion(): Promise<string | null> {\n try {\n const packageRoot = resolvePmPackageRootFromModule(import.meta.url, [\"../../..\"]);\n const raw = await fs.readFile(path.join(packageRoot, \"package.json\"), \"utf8\");\n const parsed = JSON.parse(raw) as { version?: unknown };\n return typeof parsed.version === \"string\" && parsed.version.trim().length > 0 ? parsed.version.trim() : null;\n } catch {\n return null;\n }\n}\n\nfunction resolveCurrentPmCliVersion(): Promise<string | null> {\n currentPmCliVersionPromise ??= readCurrentPmCliVersion();\n return currentPmCliVersionPromise;\n}\n\nfunction formatPmVersionCompatibilityWarning(\n layer: ExtensionLayer,\n manifest: ExtensionManifest,\n evaluation: PmVersionBoundEvaluation,\n): string | undefined {\n const current = evaluation.current ?? \"unknown\";\n if (evaluation.kind === \"pm_min_version\") {\n switch (evaluation.status) {\n case \"invalid\":\n return `extension_pm_min_version_invalid:${layer}:${manifest.name}:required=${evaluation.required}`;\n case \"unchecked\":\n return `extension_pm_min_version_unchecked:${layer}:${manifest.name}:required=${evaluation.required}:current=${current}`;\n case \"unmet\":\n return `extension_pm_min_version_unmet:${layer}:${manifest.name}:required=${evaluation.required}:current=${current}`;\n default:\n return undefined;\n }\n }\n switch (evaluation.status) {\n case \"invalid\":\n return `extension_pm_max_version_invalid:${layer}:${manifest.name}:allowed=${evaluation.required}`;\n case \"unchecked\":\n return `extension_pm_max_version_unchecked:${layer}:${manifest.name}:allowed=${evaluation.required}:current=${current}`;\n case \"exceeded_warn\":\n return `extension_pm_max_version_exceeded_warn:${layer}:${manifest.name}:allowed=${evaluation.required}:current=${current}`;\n case \"exceeded\":\n return `extension_pm_max_version_exceeded:${layer}:${manifest.name}:allowed=${evaluation.required}:current=${current}`;\n default:\n return undefined;\n }\n}\n\nasync function evaluatePmMinVersionCompatibility(\n layer: ExtensionLayer,\n manifest: ExtensionManifest,\n): Promise<{ allowed: boolean; warning?: string }> {\n // Resolve the current CLI version only when a bound is declared, so the common\n // no-bound case never reads package.json.\n if (manifest.pm_min_version === undefined) {\n return { allowed: true };\n }\n const evaluation = evaluatePmMinVersionBound(manifest.pm_min_version, await resolveCurrentPmCliVersion());\n const warning = formatPmVersionCompatibilityWarning(layer, manifest, evaluation);\n return warning ? { allowed: evaluation.allowed, warning } : { allowed: evaluation.allowed };\n}\n\nasync function evaluatePmMaxVersionCompatibility(\n layer: ExtensionLayer,\n manifest: ExtensionManifest,\n exceededMode: PmMaxVersionExceededMode,\n): Promise<{ allowed: boolean; warning?: string }> {\n if (manifest.pm_max_version === undefined) {\n return { allowed: true };\n }\n const evaluation = evaluatePmMaxVersionBound(\n manifest.pm_max_version,\n await resolveCurrentPmCliVersion(),\n exceededMode,\n );\n const warning = formatPmVersionCompatibilityWarning(layer, manifest, evaluation);\n return warning ? { allowed: evaluation.allowed, warning } : { allowed: evaluation.allowed };\n}\n\nasync function fingerprintPath(pathToInspect: string): Promise<string> {\n try {\n const stats = await fs.stat(pathToInspect);\n return `${Math.trunc(stats.mtimeMs)}-${stats.size}`;\n } catch {\n return \"missing\";\n }\n}\n\nasync function resolveExtensionImportHref(\n extension: EffectiveExtension,\n options: DiscoverExtensionsOptions,\n): Promise<string> {\n const baseUrl = new URL(pathToFileURL(extension.entry_path).href);\n const shouldCacheBust = options.cache_bust === true || typeof options.reload_token === \"string\";\n if (!shouldCacheBust) {\n return baseUrl.href;\n }\n const [entryFingerprint, manifestFingerprint] = await Promise.all([\n fingerprintPath(extension.entry_path),\n fingerprintPath(extension.manifest_path),\n ]);\n const reloadToken = options.reload_token ?? nextExtensionReloadToken();\n baseUrl.searchParams.set(\"pm_ext_reload\", reloadToken);\n baseUrl.searchParams.set(\"pm_ext_entry\", entryFingerprint);\n baseUrl.searchParams.set(\"pm_ext_manifest\", manifestFingerprint);\n return baseUrl.href;\n}\n\n/**\n * Implements load extensions for the public runtime surface of this module.\n */\nexport async function loadExtensions(options: DiscoverExtensionsOptions): Promise<ExtensionLoadResult> {\n const discovery = await discoverExtensions(options);\n const loaded: LoadedExtension[] = [];\n const failed: FailedExtensionLoad[] = [];\n const warnings = [...discovery.warnings];\n\n if (discovery.disabled_by_flag) {\n return {\n ...discovery,\n warnings,\n loaded,\n failed,\n };\n }\n\n const extensionsToLoad =\n typeof options.extensionFilter === \"function\" ? discovery.effective.filter(options.extensionFilter) : discovery.effective;\n for (const extension of extensionsToLoad) {\n try {\n const importHref = await resolveExtensionImportHref(extension, options);\n const module = await import(importHref);\n loaded.push({\n ...extension,\n module,\n });\n } catch (error: unknown) {\n warnings.push(`extension_load_failed:${extension.layer}:${extension.name}`);\n failed.push({\n layer: extension.layer,\n name: extension.name,\n entry_path: extension.entry_path,\n error: formatUnknownError(error),\n });\n }\n }\n\n return {\n ...discovery,\n warnings,\n loaded,\n failed,\n };\n}\n\nconst DEFAULT_EXTENSION_DEACTIVATE_TIMEOUT_MS = 5_000;\nconst MAX_EXTENSION_DEACTIVATE_TIMEOUT_MS = 2_147_483_647;\n\nfunction toActivatableExtension(source: Record<string, unknown>): ActivatableExtension {\n // Bind to `source` so a module/default-export authored with methods (or a class\n // instance) keeps its `this` across both lifecycle calls — `activate` is a\n // method call on a fresh object and `deactivate` is invoked bare, so without\n // binding the two would see different (or undefined) `this`.\n const activate = source.activate as ActivatableExtension[\"activate\"];\n const activatable: ActivatableExtension = {\n activate: activate.bind(source),\n };\n if (typeof source.deactivate === \"function\") {\n const deactivate = source.deactivate as NonNullable<ActivatableExtension[\"deactivate\"]>;\n activatable.deactivate = deactivate.bind(source);\n }\n return activatable;\n}\n\nfunction resolveActivatableExtension(module: unknown): ActivatableExtension | null {\n const activatableRecord = resolveActivatablePropertyRecord(module);\n return activatableRecord ? toActivatableExtension(activatableRecord) : null;\n}\n\n/**\n * Run the optional `deactivate` teardown hook for every loaded extension that\n * exports one. Best-effort: a throwing teardown is captured as a warning and a\n * failure entry rather than propagated, so one extension cannot block another's\n * cleanup. Hosts call this on shutdown/reload (e.g. the MCP server between\n * native-action requests) to release resources opened during `activate`.\n *\n * Pass the `activationResult` to skip extensions whose `activate` failed — they\n * never fully initialized, so (VS Code-style) their `deactivate` must not run.\n * Teardowns run concurrently and each hook has a bounded timeout by default, so\n * one slow or hanging hook cannot serialize the rest or block the host\n * indefinitely unless the host explicitly disables the timeout; the returned\n * warnings/failures preserve loaded order.\n */\nexport async function deactivateExtensions(\n loadResult: ExtensionLoadResult,\n activationResult?: Pick<ExtensionActivationResult, \"failed\">,\n options: ExtensionDeactivationOptions = {},\n): Promise<ExtensionDeactivationResult> {\n const timeoutMs = normalizeExtensionDeactivateTimeout(options?.deactivate_timeout_ms);\n const failedActivationKeys = new Set(\n (activationResult?.failed ?? []).map((entry) => `${entry.layer}:${entry.name}`),\n );\n const targets: Array<{ extension: LoadedExtension; deactivate: () => void | Promise<void> }> = [];\n for (const extension of loadResult.loaded) {\n if (failedActivationKeys.has(`${extension.layer}:${extension.name}`)) {\n continue;\n }\n const activatable = resolveActivatableExtension(extension.module);\n if (!activatable || typeof activatable.deactivate !== \"function\") {\n continue;\n }\n targets.push({ extension, deactivate: activatable.deactivate });\n }\n const outcomes = await Promise.all(\n targets.map(async ({ extension, deactivate }) => {\n try {\n await runExtensionDeactivateWithTimeout(deactivate, timeoutMs);\n return { ok: true as const };\n } catch (error: unknown) {\n return { ok: false as const, layer: extension.layer, name: extension.name, error: formatUnknownError(error) };\n }\n }),\n );\n const warnings: string[] = [];\n const failed: ExtensionDeactivationFailure[] = [];\n let deactivated = 0;\n for (const outcome of outcomes) {\n if (outcome.ok) {\n deactivated += 1;\n continue;\n }\n warnings.push(`extension_deactivate_failed:${outcome.layer}:${outcome.name}`);\n failed.push({ layer: outcome.layer, name: outcome.name, error: outcome.error });\n }\n return { deactivated, warnings, failed };\n}\n\nfunction normalizeExtensionDeactivateTimeout(rawTimeout: unknown): number {\n if (typeof rawTimeout !== \"number\" || rawTimeout < 0) {\n return DEFAULT_EXTENSION_DEACTIVATE_TIMEOUT_MS;\n }\n if (rawTimeout === 0 || rawTimeout === Infinity) {\n return 0;\n }\n if (!Number.isFinite(rawTimeout)) {\n return DEFAULT_EXTENSION_DEACTIVATE_TIMEOUT_MS;\n }\n return Math.min(MAX_EXTENSION_DEACTIVATE_TIMEOUT_MS, Math.max(1, Math.floor(rawTimeout)));\n}\n\nasync function runExtensionDeactivateWithTimeout(\n deactivate: () => void | Promise<void>,\n timeoutMs: number,\n): Promise<void> {\n if (timeoutMs === 0) {\n await deactivate();\n return;\n }\n let timeoutHandle: ReturnType<typeof setTimeout> | undefined;\n try {\n // A timed-out deactivate promise may still finish later; JavaScript promises\n // are not cancellable, so the host only stops waiting and consumes any late\n // rejection from the hook.\n const deactivatePromise = Promise.resolve().then(() => deactivate());\n deactivatePromise.catch(() => {});\n await Promise.race([\n deactivatePromise,\n new Promise<never>((_, reject) => {\n timeoutHandle = setTimeout(() => {\n reject(new Error(`extension deactivate timed out after ${timeoutMs}ms`));\n }, timeoutMs);\n timeoutHandle.unref?.();\n }),\n ]);\n } finally {\n clearTimeout(timeoutHandle as ReturnType<typeof setTimeout>);\n }\n}\n\nfunction isOutputRendererFormat(value: string): value is OutputRendererFormat {\n return value === \"toon\" || value === \"json\";\n}\n\nfunction isExtensionServiceName(value: string): value is ExtensionServiceName {\n return KNOWN_EXTENSION_SERVICE_NAMES.includes(value as ExtensionServiceName);\n}\n\nfunction assertHookHandler(hookName: string, hook: unknown): void {\n if (typeof hook !== \"function\") {\n throw new TypeError(`api.hooks.${hookName} requires a function handler`);\n }\n}\n\nfunction assertNonEmptyString(name: string, value: unknown): string {\n if (typeof value !== \"string\" || value.trim().length === 0) {\n throw new TypeError(`${name} requires a non-empty string`);\n }\n return value.trim();\n}\n\nfunction assertFunctionHandler(name: string, value: unknown): void {\n if (typeof value !== \"function\") {\n throw new TypeError(`${name} requires a function handler`);\n }\n}\n\nfunction normalizeRegistrationName(name: string): string {\n return name\n .trim()\n .toLowerCase()\n .split(/\\s+/)\n .filter((part) => part.length > 0)\n .join(\" \");\n}\n\nfunction toRegistrationCommandPath(name: string, action: \"import\" | \"export\"): string {\n return normalizeCommandName(`${name} ${action}`);\n}\n\nfunction sanitizeRegistrationValue(value: unknown): unknown {\n if (value === null) {\n return null;\n }\n if (Array.isArray(value)) {\n return value.map((entry) => sanitizeRegistrationValue(entry));\n }\n if (typeof value === \"function\") {\n return \"[Function]\";\n }\n if (typeof value === \"bigint\") {\n return value.toString();\n }\n if (typeof value === \"symbol\") {\n return value.toString();\n }\n if (typeof value === \"object\") {\n const record = value as Record<string, unknown>;\n const normalized: Record<string, unknown> = {};\n const keys = Object.keys(record).sort((left, right) => left.localeCompare(right));\n for (const key of keys) {\n normalized[key] = sanitizeRegistrationValue(record[key]);\n }\n return normalized;\n }\n return value;\n}\n\nfunction cloneRuntimeRegistrationValue(value: unknown): unknown {\n if (Array.isArray(value)) {\n return value.map((entry) => cloneRuntimeRegistrationValue(entry));\n }\n if (typeof value === \"object\" && value !== null) {\n const record = value as Record<string, unknown>;\n const cloned: Record<string, unknown> = {};\n for (const key of Object.keys(record).sort((left, right) => left.localeCompare(right))) {\n cloned[key] = cloneRuntimeRegistrationValue(record[key]);\n }\n return cloned;\n }\n return value;\n}\n\nconst EXTENSION_REGISTRATION_TRACE_SYMBOL = Symbol(\"extension_registration_trace\");\n\ntype RegistrationTraceCarrier = Error & {\n [EXTENSION_REGISTRATION_TRACE_SYMBOL]?: ExtensionActivationFailureTrace;\n};\n\nfunction createRegistrationValidationError(message: string, trace: ExtensionActivationFailureTrace): TypeError {\n const error = new TypeError(message) as RegistrationTraceCarrier;\n Object.defineProperty(error, EXTENSION_REGISTRATION_TRACE_SYMBOL, {\n value: trace,\n enumerable: false,\n configurable: false,\n writable: false,\n });\n return error;\n}\n\nfunction extractRegistrationValidationTrace(error: unknown): ExtensionActivationFailureTrace | undefined {\n if (!(error instanceof Error)) {\n return undefined;\n }\n return (error as RegistrationTraceCarrier)[EXTENSION_REGISTRATION_TRACE_SYMBOL];\n}\n\nfunction normalizeRegistrationRecord(name: string, value: unknown): Record<string, unknown> {\n if (typeof value !== \"object\" || value === null || Array.isArray(value)) {\n throw new TypeError(`${name} requires an object definition`);\n }\n return sanitizeRegistrationValue(value) as Record<string, unknown>;\n}\n\nfunction normalizeRuntimeRegistrationRecord(name: string, value: unknown): Record<string, unknown> {\n if (typeof value !== \"object\" || value === null || Array.isArray(value)) {\n throw new TypeError(`${name} requires an object definition`);\n }\n return cloneRuntimeRegistrationValue(value) as Record<string, unknown>;\n}\n\nfunction normalizeRegistrationRecordList(name: string, value: unknown): Array<Record<string, unknown>> {\n if (!Array.isArray(value)) {\n throw new TypeError(`${name} requires an array of object definitions`);\n }\n return value.map((entry) => normalizeRegistrationRecord(name, entry));\n}\n\nfunction asRegistrationRecord(name: string, value: unknown): Record<string, unknown> {\n if (typeof value !== \"object\" || value === null || Array.isArray(value)) {\n throw new TypeError(`${name} requires an object definition`);\n }\n return value as Record<string, unknown>;\n}\n\nfunction assertOptionalBooleanField(name: string, value: unknown): void {\n if (value !== undefined && typeof value !== \"boolean\") {\n throw new TypeError(`${name} must be a boolean when provided`);\n }\n}\n\nfunction assertOptionalStringField(name: string, value: unknown): void {\n if (value === undefined) {\n return;\n }\n if (typeof value !== \"string\" || value.trim().length === 0) {\n throw new TypeError(`${name} must be a non-empty string when provided`);\n }\n}\n\nfunction isFlagDefaultScalar(value: unknown): boolean {\n return typeof value === \"string\" || typeof value === \"number\" || typeof value === \"boolean\";\n}\n\nfunction assertOptionalFlagDefaultField(name: string, value: unknown): void {\n if (value === undefined) {\n return;\n }\n if (Array.isArray(value)) {\n for (const [index, item] of value.entries()) {\n if (!isFlagDefaultScalar(item)) {\n throw new TypeError(`${name}[${index}] must be a string, number, or boolean`);\n }\n }\n return;\n }\n if (!isFlagDefaultScalar(value)) {\n throw new TypeError(`${name} must be a string, number, or boolean, or an array of these when provided`);\n }\n}\n\nfunction assertOptionalStringArrayField(name: string, value: unknown): void {\n if (value === undefined) {\n return;\n }\n if (!Array.isArray(value)) {\n throw new TypeError(`${name} must be an array of non-empty strings when provided`);\n }\n for (const [index, entry] of value.entries()) {\n if (typeof entry !== \"string\" || entry.trim().length === 0) {\n throw new TypeError(`${name}[${index}] must be a non-empty string`);\n }\n }\n}\n\nfunction normalizeOptionalStringArrayField(name: string, value: unknown): string[] {\n assertOptionalStringArrayField(name, value);\n if (!Array.isArray(value)) {\n return [];\n }\n const normalized: string[] = [];\n const seen = new Set<string>();\n for (const entry of value) {\n const trimmed = entry.trim();\n if (trimmed.length === 0 || seen.has(trimmed)) {\n continue;\n }\n seen.add(trimmed);\n normalized.push(trimmed);\n }\n return normalized;\n}\n\nfunction normalizeCommandActionName(value: string): string {\n return value\n .trim()\n .toLowerCase()\n .replace(/[\\s_]+/g, \"-\")\n .replace(/[^a-z0-9-]/g, \"-\")\n .replace(/-+/g, \"-\")\n .replace(/^-+|-+$/g, \"\");\n}\n\nfunction resolveCommandDefinitionAction(commandPath: string, action: unknown): string {\n if (action === undefined) {\n return commandPath.replace(/\\s+/g, \"-\");\n }\n if (typeof action !== \"string\" || action.trim().length === 0) {\n throw new TypeError(\"registerCommand definition.action must be a non-empty string when provided\");\n }\n const normalized = normalizeCommandActionName(action);\n if (normalized.length === 0) {\n throw new TypeError(\"registerCommand definition.action must contain alphanumeric characters\");\n }\n return normalized;\n}\n\nfunction normalizeCommandDefinitionArguments(value: unknown): ExtensionCommandArgumentDefinition[] {\n if (value === undefined) {\n return [];\n }\n if (!Array.isArray(value)) {\n throw new TypeError(\"registerCommand definition.arguments must be an array when provided\");\n }\n const normalized: ExtensionCommandArgumentDefinition[] = [];\n for (const [index, entry] of value.entries()) {\n const record = asRegistrationRecord(`registerCommand definition.arguments[${index}]`, entry);\n const name = assertNonEmptyString(`registerCommand definition.arguments[${index}].name`, record.name);\n assertOptionalBooleanField(`registerCommand definition.arguments[${index}].required`, record.required);\n assertOptionalBooleanField(`registerCommand definition.arguments[${index}].variadic`, record.variadic);\n assertOptionalStringField(`registerCommand definition.arguments[${index}].description`, record.description);\n if (name.includes(\" \")) {\n throw new TypeError(`registerCommand definition.arguments[${index}].name must not contain spaces`);\n }\n const definition: ExtensionCommandArgumentDefinition = {\n name,\n };\n if (record.required === true) {\n definition.required = true;\n }\n if (record.variadic === true) {\n definition.variadic = true;\n }\n if (typeof record.description === \"string\") {\n definition.description = record.description.trim();\n }\n normalized.push(definition);\n }\n\n const variadicIndexes = normalized\n .map((argument, index) => (argument.variadic ? index : -1))\n .filter((index) => index >= 0);\n if (variadicIndexes.length > 1) {\n throw new TypeError(\"registerCommand definition.arguments supports at most one variadic argument\");\n }\n if (variadicIndexes.length === 1 && variadicIndexes[0] !== normalized.length - 1) {\n throw new TypeError(\"registerCommand definition.arguments variadic argument must be the final argument\");\n }\n\n return normalized;\n}\n\nfunction validateFlagDefinitions(flags: unknown): void {\n if (!Array.isArray(flags)) {\n throw new TypeError(\"registerFlags flags requires an array of object definitions\");\n }\n for (const [index, raw] of flags.entries()) {\n const record = asRegistrationRecord(`registerFlags flags[${index}]`, raw);\n const long = record.long;\n const short = record.short;\n if (long === undefined && short === undefined) {\n throw new TypeError(`registerFlags flags[${index}] requires at least one of long or short`);\n }\n assertOptionalStringField(`registerFlags flags[${index}].long`, long);\n assertOptionalStringField(`registerFlags flags[${index}].short`, short);\n assertOptionalStringField(`registerFlags flags[${index}].value_name`, record.value_name);\n assertOptionalStringField(`registerFlags flags[${index}].description`, record.description);\n assertOptionalBooleanField(`registerFlags flags[${index}].required`, record.required);\n assertOptionalBooleanField(`registerFlags flags[${index}].enabled`, record.enabled);\n assertOptionalBooleanField(`registerFlags flags[${index}].visible`, record.visible);\n assertOptionalBooleanField(`registerFlags flags[${index}].list`, record.list);\n assertOptionalFlagDefaultField(`registerFlags flags[${index}].default`, record.default);\n if (Array.isArray(record.default) && record.list !== true) {\n throw new TypeError(`registerFlags flags[${index}].default cannot be an array unless list is true.`);\n }\n assertFlagValueTypeAndDefault(`registerFlags flags[${index}]`, record);\n }\n}\n\n/**\n * Reject a declared `value_type`/`type` that is not a known flag value kind, and\n * a `default` whose value(s) would not cleanly coerce under that kind — so the\n * typed-flag contract is enforced at registration instead of silently leaving\n * an untyped value to surface at use time.\n */\nfunction assertFlagValueTypeAndDefault(label: string, record: Record<string, unknown>): void {\n const declaredType =\n (typeof record.value_type === \"string\" ? record.value_type : undefined) ??\n (typeof record.type === \"string\" ? record.type : undefined);\n if (declaredType === undefined) {\n return;\n }\n const kind = resolveFlagValueKind(declaredType);\n if (kind === null) {\n throw new TypeError(\n `${label} value_type \"${declaredType}\" is not a known flag value type (expected one of: string, number, boolean).`,\n );\n }\n if (record.default === undefined) {\n return;\n }\n // For list flags, validate the default exactly as the runtime will see it —\n // comma-joined strings and nested arrays are flattened first — so a valid\n // default like `value_type: \"number\", default: \"10,20\"` is not wrongly rejected.\n const defaults = record.list === true ? flattenFlagListValue(record.default) : [record.default];\n for (const [defaultIndex, defaultValue] of defaults.entries()) {\n if (!isFlagDefaultValueCoercible(defaultValue as string | number | boolean, kind)) {\n const suffix = defaults.length > 1 ? `default[${defaultIndex}]` : \"default\";\n throw new TypeError(`${label}.${suffix} (${JSON.stringify(defaultValue)}) is not coercible to ${kind}.`);\n }\n }\n}\n\nfunction validateItemFieldDefinitions(fields: unknown): void {\n if (!Array.isArray(fields)) {\n throw new TypeError(\"registerItemFields fields requires an array of object definitions\");\n }\n for (const [index, raw] of fields.entries()) {\n const record = asRegistrationRecord(`registerItemFields fields[${index}]`, raw);\n assertNonEmptyString(`registerItemFields fields[${index}].name`, record.name);\n const fieldType = assertNonEmptyString(`registerItemFields fields[${index}].type`, record.type);\n if (normalizeItemFieldType(fieldType) === null) {\n const suggestion = suggestKnownItemFieldType(fieldType);\n const hint = suggestion ? ` Did you mean \"${suggestion}\"?` : \"\";\n throw new TypeError(\n `registerItemFields fields[${index}].type \"${fieldType}\" is not a known field type ` +\n `(expected one of: ${KNOWN_ITEM_FIELD_TYPES.join(\", \")}).${hint}`,\n );\n }\n assertOptionalBooleanField(`registerItemFields fields[${index}].optional`, record.optional);\n }\n}\n\nfunction validateItemTypeDefinitions(types: unknown): void {\n if (!Array.isArray(types)) {\n throw new TypeError(\"registerItemTypes types requires an array of object definitions\");\n }\n for (const [typeIndex, raw] of types.entries()) {\n const record = asRegistrationRecord(`registerItemTypes types[${typeIndex}]`, raw);\n assertNonEmptyString(`registerItemTypes types[${typeIndex}].name`, record.name);\n assertOptionalStringField(`registerItemTypes types[${typeIndex}].folder`, record.folder);\n assertOptionalStringArrayField(`registerItemTypes types[${typeIndex}].aliases`, record.aliases);\n assertOptionalStringArrayField(\n `registerItemTypes types[${typeIndex}].required_create_fields`,\n record.required_create_fields,\n );\n assertOptionalStringArrayField(\n `registerItemTypes types[${typeIndex}].required_create_repeatables`,\n record.required_create_repeatables,\n );\n\n if (record.command_option_policies !== undefined) {\n if (!Array.isArray(record.command_option_policies)) {\n throw new TypeError(\n `registerItemTypes types[${typeIndex}].command_option_policies must be an array when provided`,\n );\n }\n for (const [policyIndex, rawPolicy] of record.command_option_policies.entries()) {\n const policy = asRegistrationRecord(\n `registerItemTypes types[${typeIndex}].command_option_policies[${policyIndex}]`,\n rawPolicy,\n );\n assertNonEmptyString(\n `registerItemTypes types[${typeIndex}].command_option_policies[${policyIndex}].command`,\n policy.command,\n );\n assertNonEmptyString(\n `registerItemTypes types[${typeIndex}].command_option_policies[${policyIndex}].option`,\n policy.option,\n );\n assertOptionalBooleanField(\n `registerItemTypes types[${typeIndex}].command_option_policies[${policyIndex}].enabled`,\n policy.enabled,\n );\n assertOptionalBooleanField(\n `registerItemTypes types[${typeIndex}].command_option_policies[${policyIndex}].required`,\n policy.required,\n );\n assertOptionalBooleanField(\n `registerItemTypes types[${typeIndex}].command_option_policies[${policyIndex}].visible`,\n policy.visible,\n );\n }\n }\n\n if (record.options !== undefined) {\n if (!Array.isArray(record.options)) {\n throw new TypeError(`registerItemTypes types[${typeIndex}].options must be an array when provided`);\n }\n for (const [optionIndex, rawOption] of record.options.entries()) {\n const option = asRegistrationRecord(`registerItemTypes types[${typeIndex}].options[${optionIndex}]`, rawOption);\n assertNonEmptyString(`registerItemTypes types[${typeIndex}].options[${optionIndex}].key`, option.key);\n assertOptionalStringArrayField(`registerItemTypes types[${typeIndex}].options[${optionIndex}].values`, option.values);\n assertOptionalBooleanField(`registerItemTypes types[${typeIndex}].options[${optionIndex}].required`, option.required);\n assertOptionalStringArrayField(\n `registerItemTypes types[${typeIndex}].options[${optionIndex}].aliases`,\n option.aliases,\n );\n }\n }\n }\n}\n\nfunction validateMigrationDefinition(definition: unknown): void {\n const record = asRegistrationRecord(\"registerMigration definition\", definition);\n if (record.id !== undefined && typeof record.id !== \"string\") {\n throw new TypeError(\"registerMigration definition.id must be a string when provided\");\n }\n if (record.description !== undefined && typeof record.description !== \"string\") {\n throw new TypeError(\"registerMigration definition.description must be a string when provided\");\n }\n if (record.status !== undefined && typeof record.status !== \"string\") {\n throw new TypeError(\"registerMigration definition.status must be a string when provided\");\n }\n assertOptionalBooleanField(\"registerMigration definition.mandatory\", record.mandatory);\n if (record.run !== undefined && typeof record.run !== \"function\") {\n throw new TypeError(\"registerMigration definition.run must be a function when provided\");\n }\n}\n\n/**\n * The seven array-valued dimensions a {@link ProjectProfileDefinition} stages.\n * Each is \"optional-by-emptiness\": an omitted dimension normalizes to an empty\n * array so the profile planner can iterate every dimension unconditionally.\n */\nconst PROJECT_PROFILE_DIMENSIONS = [\n \"types\",\n \"statuses\",\n \"fields\",\n \"workflows\",\n \"config\",\n \"templates\",\n \"packages\",\n] as const;\n\n/**\n * Validates the field shapes the profile planner, `pm profile show/apply/lint`,\n * and `describeProjectProfile` dereference without re-checking, so a structurally\n * well-formed but type-violating extension entry (e.g. a workflow whose `type` is\n * a number, or whose `allowed_transitions` is not an array) is rejected here\n * rather than crashing a downstream consumer. Dimensions whose consumers already\n * coerce or gracefully reject malformed values (statuses, fields, config) need no\n * shape check. The `entry` is an already-confirmed non-null object.\n */\nfunction validateProjectProfileEntryShape(dimension: string, index: number, entry: Record<string, unknown>): void {\n const at = `registerProfile profile.${dimension}[${index}]`;\n if (dimension === \"types\") {\n if (entry.name !== undefined && typeof entry.name !== \"string\") {\n throw new TypeError(`${at}.name must be a string when provided`);\n }\n return;\n }\n if (dimension === \"workflows\") {\n if (typeof entry.type !== \"string\") {\n throw new TypeError(`${at}.type must be a string`);\n }\n if (!Array.isArray(entry.allowed_transitions)) {\n throw new TypeError(`${at}.allowed_transitions must be an array`);\n }\n for (const [pairIndex, pair] of entry.allowed_transitions.entries()) {\n if (!Array.isArray(pair)) {\n throw new TypeError(`${at}.allowed_transitions[${pairIndex}] must be a [from, to] array`);\n }\n }\n return;\n }\n if (dimension === \"templates\") {\n if (typeof entry.name !== \"string\") {\n throw new TypeError(`${at}.name must be a string`);\n }\n if (typeof entry.options !== \"object\" || entry.options === null || Array.isArray(entry.options)) {\n throw new TypeError(`${at}.options must be an object`);\n }\n return;\n }\n if (dimension === \"packages\") {\n if (typeof entry.spec !== \"string\") {\n throw new TypeError(`${at}.spec must be a string`);\n }\n }\n}\n\nfunction validateProjectProfileDefinition(profile: unknown): void {\n const record = asRegistrationRecord(\"registerProfile profile\", profile);\n assertNonEmptyString(\"registerProfile profile.name\", record.name);\n assertNonEmptyString(\"registerProfile profile.title\", record.title);\n if (record.summary !== undefined && typeof record.summary !== \"string\") {\n throw new TypeError(\"registerProfile profile.summary must be a string when provided\");\n }\n for (const dimension of PROJECT_PROFILE_DIMENSIONS) {\n const value = record[dimension];\n if (value === undefined) {\n continue;\n }\n if (!Array.isArray(value)) {\n throw new TypeError(`registerProfile profile.${dimension} must be an array when provided`);\n }\n // Each dimension entry must be a non-null object: a primitive or null entry\n // (e.g. `statuses: [null]`, `types: [42]`) survives an array-only check but\n // crashes the profile planner and `pm profile show` when they read `entry.id`\n // / `entry.key` / `entry.type` later. Reject it at the registration boundary.\n for (const [index, entry] of value.entries()) {\n if (typeof entry !== \"object\" || entry === null || Array.isArray(entry)) {\n throw new TypeError(`registerProfile profile.${dimension}[${index}] must be an object`);\n }\n // Beyond \"is an object\", validate the specific field shapes consumers\n // dereference so a type-violating entry can never crash the planner, the\n // `pm profile` surfaces, or describeProjectProfile downstream.\n validateProjectProfileEntryShape(dimension, index, entry as Record<string, unknown>);\n }\n }\n}\n\n/**\n * Fills an already-validated profile snapshot's optional surfaces — an absent\n * `summary` becomes an empty string and every omitted dimension an empty array —\n * so the stored definition always has the full {@link ProjectProfileDefinition}\n * shape the profile planner and `pm profile` resolution rely on. It runs after\n * validation on the cloned snapshot, so it only ever supplies missing defaults\n * and never has to coerce an invalid type (those are already rejected).\n */\nfunction applyProjectProfileDefaults(profile: Record<string, unknown>): ProjectProfileDefinition {\n if (profile.summary === undefined) {\n profile.summary = \"\";\n }\n for (const dimension of PROJECT_PROFILE_DIMENSIONS) {\n if (profile[dimension] === undefined) {\n profile[dimension] = [];\n }\n }\n return profile as unknown as ProjectProfileDefinition;\n}\n\nfunction attachRuntimeDefinition<TEntry extends { definition: Record<string, unknown> }>(\n entry: TEntry,\n runtimeDefinition: Record<string, unknown>,\n): TEntry {\n Object.defineProperty(entry, \"runtime_definition\", {\n value: runtimeDefinition,\n enumerable: false,\n writable: false,\n configurable: false,\n });\n return entry;\n}\n\nfunction getDeclaredExtensionCapabilities(extension: LoadedExtension): Set<ExtensionCapability> | null {\n if (!Array.isArray(extension.capabilities)) {\n return null;\n }\n const declared = new Set<ExtensionCapability>();\n for (const capability of extension.capabilities) {\n const normalized = capability.trim().toLowerCase();\n if (isKnownExtensionCapability(normalized)) {\n declared.add(normalized);\n }\n }\n return declared;\n}\n\nfunction assertExtensionCapability(extension: LoadedExtension, capability: ExtensionCapability, method: string): void {\n const declared = getDeclaredExtensionCapabilities(extension);\n // Keep direct unit tests that construct LoadedExtension fixtures without\n // capability metadata backwards-compatible while enforcing manifest-declared\n // capabilities for runtime-loaded extensions.\n if (declared === null) {\n return;\n }\n if (!declared.has(capability)) {\n throw createRegistrationValidationError(\n `${method} requires capability '${capability}' in extension manifest capabilities`,\n {\n method,\n registration_index: -1,\n capability,\n missing_capability: capability,\n expected_schema: `\"capabilities\": [..., \"${capability}\"]`,\n received: extension.capabilities,\n hint: `Add \"${capability}\" to ${extension.name} manifest capabilities, or remove the ${method} registration call.`,\n },\n );\n }\n}\n\nfunction buildExtensionSelfIdentity(extension: LoadedExtension): ExtensionSelfIdentity {\n return Object.freeze({\n name: extension.name,\n layer: extension.layer,\n version: extension.version,\n capabilities: Object.freeze(\n (extension.capabilities ?? []).filter((capability): capability is ExtensionCapability =>\n (KNOWN_EXTENSION_CAPABILITIES as readonly string[]).includes(capability),\n ),\n ) as readonly ExtensionCapability[],\n pm_min_version: extension.pm_min_version,\n pm_max_version: extension.pm_max_version,\n source_package: extension.source_package,\n });\n}\n\nfunction buildPolicyExtensionRef(extension: LoadedExtension): PolicyExtensionRef {\n return {\n layer: extension.layer,\n name: extension.name,\n trusted: extension.trusted === true,\n provenanceVerified: extension.provenance?.verified === true,\n sandboxProfile: extension.sandbox_profile,\n permissions:\n extension.permissions && typeof extension.permissions === \"object\"\n ? {\n fs_read: extension.permissions.fs_read,\n fs_write: extension.permissions.fs_write,\n network: extension.permissions.network,\n env_read: extension.permissions.env_read,\n env_write: extension.permissions.env_write,\n process_spawn: extension.permissions.process_spawn,\n }\n : undefined,\n };\n}\n\ninterface ExtensionRegistrationPolicyDetails {\n command?: string;\n action?: string;\n service?: string;\n}\n\nclass ExtensionApiRegistrar implements ExtensionApi {\n public readonly extension: ExtensionSelfIdentity;\n public readonly hooks: ExtensionApi[\"hooks\"];\n readonly #loadedExtension: LoadedExtension;\n readonly #extensionRef: PolicyExtensionRef;\n readonly #hookRegistry: ExtensionHookRegistry;\n readonly #commandRegistry: ExtensionCommandRegistry;\n readonly #parserRegistry: ExtensionParserRegistry;\n readonly #preflightRegistry: ExtensionPreflightRegistry;\n readonly #serviceRegistry: ExtensionServiceRegistry;\n readonly #rendererRegistry: ExtensionRendererRegistry;\n readonly #registrationRegistry: ExtensionRegistrationRegistry;\n readonly #activationWarnings: string[];\n readonly #policy: NormalizedExtensionPolicy;\n\n public constructor(\n extension: LoadedExtension,\n hooks: ExtensionHookRegistry,\n commands: ExtensionCommandRegistry,\n parsers: ExtensionParserRegistry,\n preflight: ExtensionPreflightRegistry,\n services: ExtensionServiceRegistry,\n renderers: ExtensionRendererRegistry,\n registrations: ExtensionRegistrationRegistry,\n activationWarnings: string[],\n policy: NormalizedExtensionPolicy,\n ) {\n this.#loadedExtension = extension;\n this.extension = buildExtensionSelfIdentity(extension);\n this.#extensionRef = buildPolicyExtensionRef(extension);\n this.#hookRegistry = hooks;\n this.#commandRegistry = commands;\n this.#parserRegistry = parsers;\n this.#preflightRegistry = preflight;\n this.#serviceRegistry = services;\n this.#rendererRegistry = renderers;\n this.#registrationRegistry = registrations;\n this.#activationWarnings = activationWarnings;\n this.#policy = policy;\n this.registerCommand = this.registerCommand.bind(this);\n this.registerParser = this.registerParser.bind(this);\n this.registerPreflight = this.registerPreflight.bind(this);\n this.registerService = this.registerService.bind(this);\n this.registerFlags = this.registerFlags.bind(this);\n this.registerItemFields = this.registerItemFields.bind(this);\n this.registerItemTypes = this.registerItemTypes.bind(this);\n this.registerMigration = this.registerMigration.bind(this);\n this.registerProfile = this.registerProfile.bind(this);\n this.registerRenderer = this.registerRenderer.bind(this);\n this.registerImporter = this.registerImporter.bind(this);\n this.registerExporter = this.registerExporter.bind(this);\n this.registerSearchProvider = this.registerSearchProvider.bind(this);\n this.registerVectorStoreAdapter = this.registerVectorStoreAdapter.bind(this);\n this.hooks = {\n beforeCommand: (hook) => this.registerBeforeCommand(hook),\n afterCommand: (hook) => this.registerAfterCommand(hook),\n onWrite: (hook) => this.registerOnWrite(hook),\n onRead: (hook) => this.registerOnRead(hook),\n onIndex: (hook) => this.registerOnIndex(hook),\n };\n }\n\n private allowRegistration(\n surface: ExtensionPolicySurface,\n method: string,\n capability?: ExtensionCapability,\n details?: ExtensionRegistrationPolicyDetails,\n ): boolean {\n const decision = evaluateExtensionPolicyForRegistration(\n this.#policy,\n this.#extensionRef,\n surface,\n method,\n capability,\n details,\n );\n if (decision.warning) {\n this.#activationWarnings.push(decision.warning);\n }\n return decision.allowed;\n }\n\n private registerCommandTrace(\n mode: \"override\" | \"definition\",\n command: string | undefined,\n expectedSchema: string,\n received: unknown,\n hint?: string,\n ): ExtensionActivationFailureTrace {\n return {\n method: \"registerCommand\",\n registration_index: mode === \"override\" ? this.#commandRegistry.overrides.length : this.#commandRegistry.handlers.length,\n command,\n expected_schema: expectedSchema,\n received: sanitizeRegistrationValue(received),\n hint,\n };\n }\n\n private registerCommandOverride(command: string, override: CommandOverride | undefined): void {\n const normalizedCommand = normalizeCommandName(command);\n if (normalizedCommand.length === 0) {\n throw createRegistrationValidationError(\n \"registerCommand requires a non-empty command name\",\n this.registerCommandTrace(\n \"override\",\n command,\n 'registerCommand(\"<command>\", (context) => unknown)',\n command,\n \"Provide a non-empty command path as the first argument.\",\n ),\n );\n }\n if (typeof override !== \"function\") {\n const trace = this.registerCommandTrace(\n \"override\",\n normalizedCommand,\n 'registerCommand(\"<command>\", (context) => unknown)',\n override,\n \"Provide a function as the second registerCommand argument.\",\n );\n throw createRegistrationValidationError(\n `registerCommand requires an override function when command name is provided (command=\"${normalizedCommand}\", registration_index=${trace.registration_index})`,\n trace,\n );\n }\n if (!this.allowRegistration(\"commands.override\", \"registerCommand\", \"commands\", { command: normalizedCommand })) {\n return;\n }\n this.#commandRegistry.overrides.push({\n layer: this.#loadedExtension.layer,\n name: this.#loadedExtension.name,\n command: normalizedCommand,\n run: override,\n });\n }\n\n private resolveCommandDefinitionRunHandler(\n definition: CommandDefinition,\n normalizedCommand: string,\n ): CommandHandler | undefined {\n const runHandler = typeof definition.run === \"function\" ? definition.run : undefined;\n const legacyHandler = typeof definition.handler === \"function\" ? definition.handler : undefined;\n if (!runHandler && legacyHandler) {\n this.#activationWarnings.push(\n `extension_command_definition_legacy_handler_alias:${this.#loadedExtension.layer}:${this.#loadedExtension.name}:${normalizedCommand}`,\n );\n }\n return runHandler ?? legacyHandler;\n }\n\n private registerCommandDefinition(definition: CommandDefinition): void {\n if (typeof definition !== \"object\" || definition === null) {\n throw createRegistrationValidationError(\n \"registerCommand requires a command definition object\",\n this.registerCommandTrace(\n \"definition\",\n undefined,\n \"{ name: string; run: (context) => unknown; }\",\n definition,\n \"Use registerCommand({ name: \\\"command path\\\", run: (context) => ... }).\",\n ),\n );\n }\n if (typeof definition.name !== \"string\") {\n throw createRegistrationValidationError(\n \"registerCommand requires a command definition name\",\n this.registerCommandTrace(\n \"definition\",\n undefined,\n \"{ name: string; run: (context) => unknown; }\",\n definition,\n \"Set command definition.name to a non-empty string command path.\",\n ),\n );\n }\n\n const normalizedCommand = normalizeCommandName(definition.name);\n if (normalizedCommand.length === 0) {\n throw createRegistrationValidationError(\n \"registerCommand requires a non-empty command definition name\",\n this.registerCommandTrace(\n \"definition\",\n definition.name,\n \"{ name: string; run: (context) => unknown; }\",\n definition,\n \"Ensure command definition.name contains a non-empty command path.\",\n ),\n );\n }\n const resolvedHandler = this.resolveCommandDefinitionRunHandler(definition, normalizedCommand);\n if (typeof resolvedHandler !== \"function\") {\n const trace = this.registerCommandTrace(\n \"definition\",\n normalizedCommand,\n \"{ name: string; run: (context) => unknown; }\",\n resolvedHandler,\n \"Define command definition.run as a function.\",\n );\n throw createRegistrationValidationError(\n `registerCommand requires a command definition run handler (command=\"${normalizedCommand}\", registration_index=${trace.registration_index})`,\n trace,\n );\n }\n try {\n assertOptionalStringField(\"registerCommand definition.action\", definition.action);\n assertOptionalStringField(\"registerCommand definition.description\", definition.description);\n assertOptionalStringField(\"registerCommand definition.intent\", definition.intent);\n const action = resolveCommandDefinitionAction(normalizedCommand, definition.action);\n if (!this.allowRegistration(\"commands.handler\", \"registerCommand\", \"commands\", { command: normalizedCommand, action })) {\n return;\n }\n const description = definition.description?.trim();\n const intent = definition.intent?.trim();\n const examples = normalizeOptionalStringArrayField(\"registerCommand definition.examples\", definition.examples);\n const failureHints = normalizeOptionalStringArrayField(\n \"registerCommand definition.failure_hints\",\n definition.failure_hints,\n );\n const argumentsDefinition = normalizeCommandDefinitionArguments(definition.arguments);\n\n if (definition.flags !== undefined) {\n assertExtensionCapability(this.#loadedExtension, \"schema\", \"registerCommand flags\");\n if (this.allowRegistration(\"schema.flags\", \"registerCommand flags\", \"schema\")) {\n validateFlagDefinitions(definition.flags);\n this.#registrationRegistry.flags.push({\n layer: this.#loadedExtension.layer,\n name: this.#loadedExtension.name,\n target_command: normalizedCommand,\n flags: normalizeRegistrationRecordList(\"registerCommand definition.flags\", definition.flags),\n });\n }\n }\n\n const registration: RegisteredExtensionCommandDefinition = {\n layer: this.#loadedExtension.layer,\n name: this.#loadedExtension.name,\n source_package: this.#loadedExtension.source_package,\n command: normalizedCommand,\n action,\n examples,\n failure_hints: failureHints,\n arguments: argumentsDefinition,\n };\n if (description) {\n registration.description = description;\n }\n if (intent) {\n registration.intent = intent;\n }\n this.#registrationRegistry.commands.push(registration);\n } catch (error: unknown) {\n const reason = formatUnknownError(error);\n const trace = this.registerCommandTrace(\n \"definition\",\n normalizedCommand,\n \"{ name: string; run: (context) => unknown; action?: string; arguments?: object[]; flags?: object[]; }\",\n definition,\n reason,\n );\n throw createRegistrationValidationError(\n `registerCommand definition metadata invalid (command=\"${normalizedCommand}\", registration_index=${trace.registration_index}): ${reason}`,\n trace,\n );\n }\n this.#commandRegistry.handlers.push({\n layer: this.#loadedExtension.layer,\n name: this.#loadedExtension.name,\n command: normalizedCommand,\n run: resolvedHandler,\n });\n }\n\n public registerCommand(commandOrDefinition: string | CommandDefinition, override?: CommandOverride): void {\n assertExtensionCapability(this.#loadedExtension, \"commands\", \"registerCommand\");\n if (typeof commandOrDefinition === \"string\") {\n this.registerCommandOverride(commandOrDefinition, override);\n return;\n }\n this.registerCommandDefinition(commandOrDefinition);\n }\n\n public registerParser(command: string, override: ParserOverride): void {\n assertExtensionCapability(this.#loadedExtension, \"parser\", \"registerParser\");\n if (!this.allowRegistration(\"parser.override\", \"registerParser\", \"parser\")) {\n return;\n }\n const normalizedCommand = normalizeCommandName(assertNonEmptyString(\"registerParser command\", command));\n assertFunctionHandler(\"registerParser override\", override);\n this.#parserRegistry.overrides.push({\n layer: this.#loadedExtension.layer,\n name: this.#loadedExtension.name,\n command: normalizedCommand,\n run: override,\n });\n }\n\n public registerPreflight(override: PreflightOverride): void {\n assertExtensionCapability(this.#loadedExtension, \"preflight\", \"registerPreflight\");\n if (!this.allowRegistration(\"preflight.override\", \"registerPreflight\", \"preflight\")) {\n return;\n }\n assertFunctionHandler(\"registerPreflight override\", override);\n this.#preflightRegistry.overrides.push({\n layer: this.#loadedExtension.layer,\n name: this.#loadedExtension.name,\n run: override,\n });\n }\n\n public registerService(service: ExtensionServiceName, override: ServiceOverride): void {\n assertExtensionCapability(this.#loadedExtension, \"services\", \"registerService\");\n const normalizedService = String(service).trim().toLowerCase();\n if (!isExtensionServiceName(normalizedService)) {\n throw new TypeError(`registerService service must be one of: ${KNOWN_EXTENSION_SERVICE_NAMES.join(\", \")}`);\n }\n if (!this.allowRegistration(\"services.override\", \"registerService\", \"services\", { service: normalizedService })) {\n return;\n }\n assertFunctionHandler(\"registerService override\", override);\n this.#serviceRegistry.overrides.push({\n layer: this.#loadedExtension.layer,\n name: this.#loadedExtension.name,\n service: normalizedService as ExtensionServiceName,\n run: override,\n });\n }\n\n public registerRenderer(format: OutputRendererFormat, renderer: RendererOverride): void {\n assertExtensionCapability(this.#loadedExtension, \"renderers\", \"registerRenderer\");\n if (!this.allowRegistration(\"renderers.override\", \"registerRenderer\", \"renderers\")) {\n return;\n }\n if (typeof renderer !== \"function\") {\n throw new TypeError(\"registerRenderer requires a renderer function\");\n }\n const normalizedFormat = String(format).trim().toLowerCase();\n if (!isOutputRendererFormat(normalizedFormat)) {\n throw new Error(`registerRenderer format must be toon|json, received: ${String(format)}`);\n }\n this.#rendererRegistry.overrides.push({\n layer: this.#loadedExtension.layer,\n name: this.#loadedExtension.name,\n format: normalizedFormat,\n run: renderer,\n });\n }\n\n public registerFlags(targetCommand: string, flags: FlagDefinition[]): void {\n assertExtensionCapability(this.#loadedExtension, \"schema\", \"registerFlags\");\n if (!this.allowRegistration(\"schema.flags\", \"registerFlags\", \"schema\")) {\n return;\n }\n const normalizedTargetCommand = normalizeCommandName(assertNonEmptyString(\"registerFlags targetCommand\", targetCommand));\n validateFlagDefinitions(flags);\n const normalizedFlags = normalizeRegistrationRecordList(\"registerFlags flags\", flags);\n if (normalizedFlags.length === 0) {\n throw new TypeError(\"registerFlags requires at least one flag definition\");\n }\n this.#registrationRegistry.flags.push({\n layer: this.#loadedExtension.layer,\n name: this.#loadedExtension.name,\n target_command: normalizedTargetCommand,\n flags: normalizedFlags,\n });\n }\n\n public registerItemFields(fields: SchemaFieldDefinition[]): void {\n assertExtensionCapability(this.#loadedExtension, \"schema\", \"registerItemFields\");\n if (!this.allowRegistration(\"schema.itemfields\", \"registerItemFields\", \"schema\")) {\n return;\n }\n validateItemFieldDefinitions(fields);\n const normalizedFields = normalizeRegistrationRecordList(\n \"registerItemFields fields\",\n fields,\n ) as SchemaFieldDefinition[];\n if (normalizedFields.length === 0) {\n throw new TypeError(\"registerItemFields requires at least one field definition\");\n }\n this.#registrationRegistry.item_fields.push({\n layer: this.#loadedExtension.layer,\n name: this.#loadedExtension.name,\n fields: normalizedFields,\n });\n }\n\n public registerItemTypes(types: SchemaItemTypeDefinition[]): void {\n assertExtensionCapability(this.#loadedExtension, \"schema\", \"registerItemTypes\");\n if (!this.allowRegistration(\"schema.itemtypes\", \"registerItemTypes\", \"schema\")) {\n return;\n }\n validateItemTypeDefinitions(types);\n const normalizedTypes = normalizeRegistrationRecordList(\n \"registerItemTypes types\",\n types,\n ) as SchemaItemTypeDefinition[];\n if (normalizedTypes.length === 0) {\n throw new TypeError(\"registerItemTypes requires at least one type definition\");\n }\n this.#registrationRegistry.item_types.push({\n layer: this.#loadedExtension.layer,\n name: this.#loadedExtension.name,\n types: normalizedTypes,\n });\n }\n\n public registerMigration(definition: SchemaMigrationDefinition): void {\n assertExtensionCapability(this.#loadedExtension, \"schema\", \"registerMigration\");\n if (!this.allowRegistration(\"schema.migrations\", \"registerMigration\", \"schema\")) {\n return;\n }\n validateMigrationDefinition(definition);\n const runtimeDefinition = normalizeRuntimeRegistrationRecord(\"registerMigration definition\", definition);\n this.#registrationRegistry.migrations.push(\n attachRuntimeDefinition(\n {\n layer: this.#loadedExtension.layer,\n name: this.#loadedExtension.name,\n definition: normalizeRegistrationRecord(\"registerMigration definition\", definition),\n },\n runtimeDefinition,\n ) as RegisteredExtensionSchemaMigrationDefinition,\n );\n }\n\n public registerProfile(profile: ProjectProfileRegistrationInput): void {\n assertExtensionCapability(this.#loadedExtension, \"schema\", \"registerProfile\");\n if (!this.allowRegistration(\"schema.profiles\", \"registerProfile\", \"schema\")) {\n return;\n }\n // Snapshot first, then validate and default the snapshot: cloning resolves\n // any getters once into plain data decoupled from the caller's object, so\n // validation and storage operate on the same value — a getter cannot present\n // one value to validation and another to the registry. Defaults are applied\n // only after validation, so an invalid type is rejected, not silently coerced.\n const snapshot = cloneRuntimeRegistrationValue(profile);\n validateProjectProfileDefinition(snapshot);\n this.#registrationRegistry.profiles.push({\n layer: this.#loadedExtension.layer,\n name: this.#loadedExtension.name,\n profile: applyProjectProfileDefaults(snapshot as Record<string, unknown>),\n });\n }\n\n private applyImportExportCommandMetadata(\n method: \"registerImporter\" | \"registerExporter\",\n commandPath: string,\n options: ImportExportRegistrationOptions | undefined,\n ): void {\n if (options === undefined) {\n return;\n }\n if (typeof options !== \"object\" || options === null || Array.isArray(options)) {\n throw new TypeError(`${method} options must be an object when provided`);\n }\n assertOptionalStringField(`${method} options.action`, options.action);\n assertOptionalStringField(`${method} options.description`, options.description);\n assertOptionalStringField(`${method} options.intent`, options.intent);\n const action = resolveCommandDefinitionAction(commandPath, options.action);\n const examples = normalizeOptionalStringArrayField(`${method} options.examples`, options.examples);\n const failureHints = normalizeOptionalStringArrayField(`${method} options.failure_hints`, options.failure_hints);\n const argumentsDefinition = normalizeCommandDefinitionArguments(options.arguments);\n\n if (options.flags !== undefined) {\n assertExtensionCapability(this.#loadedExtension, \"schema\", `${method} options.flags`);\n // Route metadata flags through the same surface-policy gate as registerFlags so\n // enforce-mode policies blocking schema.flags are honored even when importers are allowed.\n if (this.allowRegistration(\"schema.flags\", `${method} options.flags`, \"schema\")) {\n validateFlagDefinitions(options.flags);\n this.#registrationRegistry.flags.push({\n layer: this.#loadedExtension.layer,\n name: this.#loadedExtension.name,\n target_command: commandPath,\n flags: normalizeRegistrationRecordList(`${method} options.flags`, options.flags),\n });\n }\n }\n\n const registration: RegisteredExtensionCommandDefinition = {\n layer: this.#loadedExtension.layer,\n name: this.#loadedExtension.name,\n source_package: this.#loadedExtension.source_package,\n command: commandPath,\n action,\n examples,\n failure_hints: failureHints,\n arguments: argumentsDefinition,\n };\n const description = options.description?.trim();\n if (description) {\n registration.description = description;\n }\n const intent = options.intent?.trim();\n if (intent) {\n registration.intent = intent;\n }\n this.#registrationRegistry.commands.push(registration);\n }\n\n public registerImporter(name: string, importer: Importer, options?: ImportExportRegistrationOptions): void {\n assertExtensionCapability(this.#loadedExtension, \"importers\", \"registerImporter\");\n if (!this.allowRegistration(\"importers.importer\", \"registerImporter\", \"importers\")) {\n return;\n }\n const normalizedName = normalizeRegistrationName(assertNonEmptyString(\"registerImporter name\", name));\n assertFunctionHandler(\"registerImporter importer\", importer);\n const commandPath = toRegistrationCommandPath(normalizedName, \"import\");\n // Validate and register optional command metadata before mutating the registry\n // so an invalid options object leaves no partial importer registration.\n this.applyImportExportCommandMetadata(\"registerImporter\", commandPath, options);\n this.#registrationRegistry.importers.push({\n layer: this.#loadedExtension.layer,\n name: this.#loadedExtension.name,\n importer: normalizedName,\n });\n this.#commandRegistry.handlers.push({\n layer: this.#loadedExtension.layer,\n name: this.#loadedExtension.name,\n command: commandPath,\n run: async (context) =>\n importer({\n registration: normalizedName,\n action: \"import\",\n command: context.command,\n args: cloneContextSnapshot(context.args),\n options: cloneContextSnapshot(context.options),\n global: cloneContextSnapshot(context.global),\n pm_root: context.pm_root,\n }),\n });\n }\n\n public registerExporter(name: string, exporter: Exporter, options?: ImportExportRegistrationOptions): void {\n assertExtensionCapability(this.#loadedExtension, \"importers\", \"registerExporter\");\n if (!this.allowRegistration(\"importers.exporter\", \"registerExporter\", \"importers\")) {\n return;\n }\n const normalizedName = normalizeRegistrationName(assertNonEmptyString(\"registerExporter name\", name));\n assertFunctionHandler(\"registerExporter exporter\", exporter);\n const commandPath = toRegistrationCommandPath(normalizedName, \"export\");\n // Validate and register optional command metadata before mutating the registry\n // so an invalid options object leaves no partial exporter registration.\n this.applyImportExportCommandMetadata(\"registerExporter\", commandPath, options);\n this.#registrationRegistry.exporters.push({\n layer: this.#loadedExtension.layer,\n name: this.#loadedExtension.name,\n exporter: normalizedName,\n });\n this.#commandRegistry.handlers.push({\n layer: this.#loadedExtension.layer,\n name: this.#loadedExtension.name,\n command: commandPath,\n run: async (context) =>\n exporter({\n registration: normalizedName,\n action: \"export\",\n command: context.command,\n args: cloneContextSnapshot(context.args),\n options: cloneContextSnapshot(context.options),\n global: cloneContextSnapshot(context.global),\n pm_root: context.pm_root,\n }),\n });\n }\n\n public registerSearchProvider(provider: SearchProviderDefinition): void {\n assertExtensionCapability(this.#loadedExtension, \"search\", \"registerSearchProvider\");\n if (!this.allowRegistration(\"search.provider\", \"registerSearchProvider\", \"search\")) {\n return;\n }\n const runtimeDefinition = normalizeRuntimeRegistrationRecord(\"registerSearchProvider provider\", provider);\n this.#registrationRegistry.search_providers.push(\n attachRuntimeDefinition(\n {\n layer: this.#loadedExtension.layer,\n name: this.#loadedExtension.name,\n definition: normalizeRegistrationRecord(\"registerSearchProvider provider\", provider),\n },\n runtimeDefinition,\n ) as RegisteredExtensionSearchProvider,\n );\n }\n\n public registerVectorStoreAdapter(adapter: VectorStoreAdapterDefinition): void {\n assertExtensionCapability(this.#loadedExtension, \"search\", \"registerVectorStoreAdapter\");\n if (!this.allowRegistration(\"search.vectorstore\", \"registerVectorStoreAdapter\", \"search\")) {\n return;\n }\n const runtimeDefinition = normalizeRuntimeRegistrationRecord(\"registerVectorStoreAdapter adapter\", adapter);\n this.#registrationRegistry.vector_store_adapters.push(\n attachRuntimeDefinition(\n {\n layer: this.#loadedExtension.layer,\n name: this.#loadedExtension.name,\n definition: normalizeRegistrationRecord(\"registerVectorStoreAdapter adapter\", adapter),\n },\n runtimeDefinition,\n ) as RegisteredExtensionVectorStoreAdapter,\n );\n }\n\n private registerBeforeCommand(hook: BeforeCommandHook): void {\n assertExtensionCapability(this.#loadedExtension, \"hooks\", \"api.hooks.beforeCommand\");\n if (!this.allowRegistration(\"hooks.beforecommand\", \"api.hooks.beforeCommand\", \"hooks\")) {\n return;\n }\n assertHookHandler(\"beforeCommand\", hook);\n this.#hookRegistry.beforeCommand.push({\n layer: this.#loadedExtension.layer,\n name: this.#loadedExtension.name,\n run: hook,\n });\n }\n\n private registerAfterCommand(hook: AfterCommandHook): void {\n assertExtensionCapability(this.#loadedExtension, \"hooks\", \"api.hooks.afterCommand\");\n if (!this.allowRegistration(\"hooks.aftercommand\", \"api.hooks.afterCommand\", \"hooks\")) {\n return;\n }\n assertHookHandler(\"afterCommand\", hook);\n this.#hookRegistry.afterCommand.push({\n layer: this.#loadedExtension.layer,\n name: this.#loadedExtension.name,\n run: hook,\n });\n }\n\n private registerOnWrite(hook: OnWriteHook): void {\n assertExtensionCapability(this.#loadedExtension, \"hooks\", \"api.hooks.onWrite\");\n if (!this.allowRegistration(\"hooks.onwrite\", \"api.hooks.onWrite\", \"hooks\")) {\n return;\n }\n assertHookHandler(\"onWrite\", hook);\n this.#hookRegistry.onWrite.push({\n layer: this.#loadedExtension.layer,\n name: this.#loadedExtension.name,\n run: hook,\n });\n }\n\n private registerOnRead(hook: OnReadHook): void {\n assertExtensionCapability(this.#loadedExtension, \"hooks\", \"api.hooks.onRead\");\n if (!this.allowRegistration(\"hooks.onread\", \"api.hooks.onRead\", \"hooks\")) {\n return;\n }\n assertHookHandler(\"onRead\", hook);\n this.#hookRegistry.onRead.push({\n layer: this.#loadedExtension.layer,\n name: this.#loadedExtension.name,\n run: hook,\n });\n }\n\n private registerOnIndex(hook: OnIndexHook): void {\n assertExtensionCapability(this.#loadedExtension, \"hooks\", \"api.hooks.onIndex\");\n if (!this.allowRegistration(\"hooks.onindex\", \"api.hooks.onIndex\", \"hooks\")) {\n return;\n }\n assertHookHandler(\"onIndex\", hook);\n this.#hookRegistry.onIndex.push({\n layer: this.#loadedExtension.layer,\n name: this.#loadedExtension.name,\n run: hook,\n });\n }\n}\n\nfunction createExtensionApi(\n extension: LoadedExtension,\n hooks: ExtensionHookRegistry,\n commands: ExtensionCommandRegistry,\n parsers: ExtensionParserRegistry,\n preflight: ExtensionPreflightRegistry,\n services: ExtensionServiceRegistry,\n renderers: ExtensionRendererRegistry,\n registrations: ExtensionRegistrationRegistry,\n activationWarnings: string[],\n policy: NormalizedExtensionPolicy,\n): ExtensionApi {\n return new ExtensionApiRegistrar(\n extension,\n hooks,\n commands,\n parsers,\n preflight,\n services,\n renderers,\n registrations,\n activationWarnings,\n policy,\n );\n}\n\nfunction getRegistrationCounts(registrations: ExtensionRegistrationRegistry): ExtensionRegistrationCounts {\n const commandCount = registrations.commands.length;\n const flagCount = registrations.flags.reduce((total, entry) => total + entry.flags.length, 0);\n const itemFieldCount = registrations.item_fields.reduce((total, entry) => total + entry.fields.length, 0);\n const itemTypeCount = registrations.item_types.reduce((total, entry) => total + entry.types.length, 0);\n return {\n commands: commandCount,\n flags: flagCount,\n item_fields: itemFieldCount,\n item_types: itemTypeCount,\n migrations: registrations.migrations.length,\n profiles: registrations.profiles.length,\n importers: registrations.importers.length,\n exporters: registrations.exporters.length,\n search_providers: registrations.search_providers.length,\n vector_store_adapters: registrations.vector_store_adapters.length,\n };\n}\n\nfunction collectCommandCollisionWarnings(commands: ExtensionCommandRegistry): string[] {\n const warnings: string[] = [];\n const collectByCommand = <TEntry extends { layer: ExtensionLayer; name: string; command: string }>(\n entries: TEntry[],\n codePrefix: string,\n ): void => {\n const grouped = new Map<string, TEntry[]>();\n for (const entry of entries) {\n const bucket = grouped.get(entry.command) ?? [];\n bucket.push(entry);\n grouped.set(entry.command, bucket);\n }\n for (const command of [...grouped.keys()].sort((left, right) => left.localeCompare(right))) {\n const bucket = grouped.get(command)!;\n if (bucket.length <= 1) {\n continue;\n }\n const winner = bucket[bucket.length - 1];\n for (const displaced of bucket.slice(0, -1)) {\n warnings.push(\n `${codePrefix}:${command}:${winner.layer}:${winner.name}:${displaced.layer}:${displaced.name}`,\n );\n }\n }\n };\n\n collectByCommand(commands.handlers, \"extension_command_handler_collision\");\n collectByCommand(commands.overrides, \"extension_command_override_collision\");\n\n const handlerCommands = new Set(commands.handlers.map((entry) => entry.command));\n const overlapCommands = [...new Set(commands.overrides.map((entry) => entry.command))].filter((command) =>\n handlerCommands.has(command),\n );\n overlapCommands.sort((left, right) => left.localeCompare(right));\n for (const command of overlapCommands) {\n const handlers = commands.handlers.filter((entry) => entry.command === command);\n const overrides = commands.overrides.filter((entry) => entry.command === command);\n for (const override of overrides) {\n for (const handler of handlers) {\n warnings.push(\n `extension_command_override_handler_overlap:${command}:${override.layer}:${override.name}:${handler.layer}:${handler.name}`,\n );\n }\n }\n }\n\n return warnings;\n}\n\nfunction collectRendererCollisionWarnings(renderers: ExtensionRendererRegistry): string[] {\n const grouped = new Map<OutputRendererFormat, RegisteredExtensionRendererOverride[]>();\n for (const entry of renderers.overrides) {\n const bucket = grouped.get(entry.format) ?? [];\n bucket.push(entry);\n grouped.set(entry.format, bucket);\n }\n const warnings: string[] = [];\n for (const format of [...grouped.keys()].sort((left, right) => left.localeCompare(right))) {\n const bucket = grouped.get(format)!;\n if (bucket.length <= 1) {\n continue;\n }\n const winner = bucket[bucket.length - 1];\n for (const displaced of bucket.slice(0, -1)) {\n warnings.push(\n `extension_renderer_collision:${format}:${winner.layer}:${winner.name}:${displaced.layer}:${displaced.name}`,\n );\n }\n }\n return warnings;\n}\n\nfunction collectParserCollisionWarnings(parsers: ExtensionParserRegistry): string[] {\n const warnings: string[] = [];\n const grouped = new Map<string, RegisteredExtensionParserOverride[]>();\n for (const entry of parsers.overrides) {\n const bucket = grouped.get(entry.command) ?? [];\n bucket.push(entry);\n grouped.set(entry.command, bucket);\n }\n for (const command of [...grouped.keys()].sort((left, right) => left.localeCompare(right))) {\n const bucket = grouped.get(command)!;\n if (bucket.length <= 1) {\n continue;\n }\n const winner = bucket[bucket.length - 1];\n for (const displaced of bucket.slice(0, -1)) {\n warnings.push(\n `extension_parser_override_collision:${command}:${winner.layer}:${winner.name}:${displaced.layer}:${displaced.name}`,\n );\n }\n }\n return warnings;\n}\n\nfunction collectPreflightCollisionWarnings(preflight: ExtensionPreflightRegistry): string[] {\n if (preflight.overrides.length <= 1) {\n return [];\n }\n const winner = preflight.overrides[preflight.overrides.length - 1];\n return preflight.overrides.slice(0, -1).map(\n (displaced) =>\n `extension_preflight_override_collision:${winner.layer}:${winner.name}:${displaced.layer}:${displaced.name}`,\n );\n}\n\n// Services whose runtime semantics are chain/fall-through (each override gets a chance);\n// for those, registering multiple overrides is by design, not a collision.\nconst CHAINED_SERVICE_NAMES: ReadonlySet<ExtensionServiceName> = new Set<ExtensionServiceName>([\n \"output_format\",\n]);\n\nfunction collectServiceCollisionWarnings(services: ExtensionServiceRegistry): string[] {\n const warnings: string[] = [];\n const grouped = new Map<ExtensionServiceName, RegisteredExtensionServiceOverride[]>();\n for (const entry of services.overrides) {\n const bucket = grouped.get(entry.service) ?? [];\n bucket.push(entry);\n grouped.set(entry.service, bucket);\n }\n for (const service of [...grouped.keys()].sort((left, right) => left.localeCompare(right))) {\n const bucket = grouped.get(service)!;\n if (bucket.length <= 1) {\n continue;\n }\n if (CHAINED_SERVICE_NAMES.has(service)) {\n continue;\n }\n const winner = bucket[bucket.length - 1];\n for (const displaced of bucket.slice(0, -1)) {\n warnings.push(\n `extension_service_override_collision:${service}:${winner.layer}:${winner.name}:${displaced.layer}:${displaced.name}`,\n );\n }\n }\n return warnings;\n}\n\n/**\n * Implements activate extensions for the public runtime surface of this module.\n */\nexport async function activateExtensions(loadResult: ExtensionLoadResult): Promise<ExtensionActivationResult> {\n const policy = hydrateExtensionPolicy(loadResult.policy ?? DEFAULT_EXTENSION_POLICY);\n const hooks = createEmptyExtensionHookRegistry();\n const commands = createEmptyExtensionCommandRegistry();\n const parsers = createEmptyExtensionParserRegistry();\n const preflight = createEmptyExtensionPreflightRegistry();\n const services = createEmptyExtensionServiceRegistry();\n const renderers = createEmptyExtensionRendererRegistry();\n const registrations = createEmptyExtensionRegistrationRegistry();\n const failed: FailedExtensionActivation[] = [];\n const warnings: string[] = [];\n\n for (const extension of loadResult.loaded) {\n const activatable = resolveActivatableExtension(extension.module);\n if (!activatable) {\n continue;\n }\n\n try {\n await activatable.activate(\n createExtensionApi(\n extension,\n hooks,\n commands,\n parsers,\n preflight,\n services,\n renderers,\n registrations,\n warnings,\n policy,\n ),\n );\n } catch (error: unknown) {\n warnings.push(`extension_activate_failed:${extension.layer}:${extension.name}`);\n const trace = extractRegistrationValidationTrace(error);\n failed.push({\n layer: extension.layer,\n name: extension.name,\n entry_path: extension.entry_path,\n error: formatUnknownError(error),\n trace,\n });\n }\n }\n\n const collisionWarnings = [\n ...collectCommandCollisionWarnings(commands),\n ...collectParserCollisionWarnings(parsers),\n ...collectPreflightCollisionWarnings(preflight),\n ...collectServiceCollisionWarnings(services),\n ...collectRendererCollisionWarnings(renderers),\n ];\n const mergedWarnings = [...new Set([...warnings, ...collisionWarnings])];\n\n return {\n hooks,\n commands,\n parsers,\n preflight,\n services,\n renderers,\n registrations,\n failed,\n warnings: mergedWarnings,\n hook_counts: {\n before_command: hooks.beforeCommand.length,\n after_command: hooks.afterCommand.length,\n on_write: hooks.onWrite.length,\n on_read: hooks.onRead.length,\n on_index: hooks.onIndex.length,\n },\n command_override_count: commands.overrides.length,\n command_handler_count: commands.handlers.length,\n parser_override_count: parsers.overrides.length,\n preflight_override_count: preflight.overrides.length,\n service_override_count: services.overrides.length,\n renderer_override_count: renderers.overrides.length,\n registration_counts: getRegistrationCounts(registrations),\n };\n}\n\nexport const _testOnlyLoader = {\n assertFlagValueTypeAndDefault,\n assertOptionalStringField,\n compareComparableVersions,\n collectCommandCollisionWarnings,\n collectParserCollisionWarnings,\n collectRendererCollisionWarnings,\n collectServiceCollisionWarnings,\n createExtensionApi,\n createRegistrationValidationError,\n evaluatePmMaxVersionCompatibility,\n evaluatePmMinVersionCompatibility,\n extractRegistrationValidationTrace,\n fingerprintPath,\n getRegistrationCounts,\n normalizeCommandDefinitionArguments,\n normalizeExtensionDeactivateTimeout,\n normalizeOptionalStringArrayField,\n normalizeRegistrationRecord,\n normalizeRegistrationRecordList,\n normalizeRuntimeRegistrationRecord,\n parseComparableVersion,\n parseManifest,\n readCurrentPmCliVersion,\n readManagedExtensionSourcePackages,\n resolveExtensionImportHref,\n resolveCurrentPmCliVersion,\n resolveCommandDefinitionAction,\n sanitizeRegistrationValue,\n validateItemFieldDefinitions,\n resetCurrentPmCliVersionCacheForTest: () => {\n currentPmCliVersionPromise = null;\n },\n};\n"],"names":[],"mappings":"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","debugId":"b7735a57-30b2-58a3-9d53-6805e011fd12"}