@unbrained/pm-cli 2026.6.21 → 2026.6.23

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (429) hide show
  1. package/CHANGELOG.md +44 -0
  2. package/dist/cli/commands/completion.js +7 -4
  3. package/dist/cli/commands/completion.js.map +1 -1
  4. package/dist/cli/commands/contracts.js +4 -3
  5. package/dist/cli/commands/contracts.js.map +1 -1
  6. package/dist/cli/commands/extension/describe.d.ts +70 -0
  7. package/dist/cli/commands/extension/describe.js +76 -0
  8. package/dist/cli/commands/extension/describe.js.map +1 -0
  9. package/dist/cli/commands/extension/doctor.d.ts +11 -0
  10. package/dist/cli/commands/extension/doctor.js +31 -2
  11. package/dist/cli/commands/extension/doctor.js.map +1 -1
  12. package/dist/cli/commands/extension/scaffold.d.ts +16 -2
  13. package/dist/cli/commands/extension/scaffold.js +529 -48
  14. package/dist/cli/commands/extension/scaffold.js.map +1 -1
  15. package/dist/cli/commands/extension.d.ts +3 -1
  16. package/dist/cli/commands/extension.js +35 -5
  17. package/dist/cli/commands/extension.js.map +1 -1
  18. package/dist/cli/help-content.js +20 -4
  19. package/dist/cli/help-content.js.map +1 -1
  20. package/dist/cli/register-setup.js +14 -2
  21. package/dist/cli/register-setup.js.map +1 -1
  22. package/dist/cli-bundle/chunks/{activity-KW3IRP44.js → activity-H2LMOSSW.js} +11 -11
  23. package/dist/cli-bundle/chunks/activity-XUZ2AHCW.js +18 -0
  24. package/dist/cli-bundle/chunks/{aggregate-3ZKQG5SW.js → aggregate-EGJLZQBI.js} +10 -10
  25. package/dist/cli-bundle/chunks/{aggregate-FIGQEIL3.js → aggregate-R725FC3S.js} +10 -10
  26. package/dist/cli-bundle/chunks/{append-EWJYJ7CH.js → append-5J345QGU.js} +8 -8
  27. package/dist/cli-bundle/chunks/{append-QEOLX3XB.js → append-O5HPBMRN.js} +8 -8
  28. package/dist/cli-bundle/chunks/{chunk-GOZUHWFD.js → chunk-2A34E3BA.js} +2 -2
  29. package/dist/cli-bundle/chunks/{chunk-A4Z7ZOL5.js → chunk-2BFPAUAF.js} +31 -15
  30. package/dist/cli-bundle/chunks/chunk-2BFPAUAF.js.map +1 -0
  31. package/dist/cli-bundle/chunks/{chunk-5QICDWMV.js → chunk-2CKH2LMV.js} +2 -2
  32. package/dist/cli-bundle/chunks/{chunk-WQ7NIVDK.js → chunk-2RDVQEWV.js} +4 -4
  33. package/dist/cli-bundle/chunks/{chunk-NSBZ2CKF.js → chunk-2T3JG6V4.js} +2 -2
  34. package/dist/cli-bundle/chunks/{chunk-76Z3YSHV.js → chunk-34EONI5F.js} +2 -2
  35. package/dist/cli-bundle/chunks/{chunk-PUH4D67U.js → chunk-3VY3YQO6.js} +2 -2
  36. package/dist/cli-bundle/chunks/{chunk-N5ZJACJ6.js → chunk-46G6RSB6.js} +8 -8
  37. package/dist/cli-bundle/chunks/{chunk-SRYYRVPB.js → chunk-4BHT5VDC.js} +2 -2
  38. package/dist/cli-bundle/chunks/{chunk-PFSRUHDH.js → chunk-4KD54S3Z.js} +9 -9
  39. package/dist/cli-bundle/chunks/{chunk-QQHISQBJ.js → chunk-55ISXAQH.js} +7 -4
  40. package/dist/cli-bundle/chunks/{chunk-QQHISQBJ.js.map → chunk-55ISXAQH.js.map} +2 -2
  41. package/dist/cli-bundle/chunks/{chunk-NIUEXCFS.js → chunk-5UVVASSA.js} +6 -6
  42. package/dist/cli-bundle/chunks/{chunk-CF55WVVS.js → chunk-5VOINNKT.js} +2 -2
  43. package/dist/cli-bundle/chunks/{chunk-NIGXMNNI.js → chunk-66MEDTUD.js} +2 -2
  44. package/dist/cli-bundle/chunks/{chunk-AZMOLBN3.js → chunk-7AUB5HNA.js} +7 -7
  45. package/dist/cli-bundle/chunks/{chunk-OTHIWLMB.js → chunk-7K2XXO4I.js} +5 -5
  46. package/dist/cli-bundle/chunks/{chunk-7D3SAQXM.js → chunk-7MRQ4HMK.js} +2 -2
  47. package/dist/cli-bundle/chunks/{chunk-EBH56IXK.js → chunk-7SV63ZHD.js} +8 -8
  48. package/dist/cli-bundle/chunks/{chunk-OFYMIDF2.js → chunk-7UGEAPRY.js} +9 -9
  49. package/dist/cli-bundle/chunks/{chunk-LUWW7L4B.js → chunk-7XGQXHFB.js} +3 -3
  50. package/dist/cli-bundle/chunks/{chunk-UEMNL33O.js → chunk-AD3A7ZD6.js} +8 -8
  51. package/dist/cli-bundle/chunks/{chunk-3EWSGA7N.js → chunk-AONIHR2C.js} +12 -12
  52. package/dist/cli-bundle/chunks/{chunk-RVHYI7SL.js → chunk-BB6MDVNQ.js} +8 -8
  53. package/dist/cli-bundle/chunks/chunk-C5AOG6D2.js +691 -0
  54. package/dist/cli-bundle/chunks/chunk-C5AOG6D2.js.map +1 -0
  55. package/dist/cli-bundle/chunks/{chunk-52OCIDPG.js → chunk-CE5P2NQR.js} +5 -5
  56. package/dist/cli-bundle/chunks/{chunk-NXS7ZKAK.js → chunk-CIIK67GW.js} +4 -4
  57. package/dist/cli-bundle/chunks/{chunk-HC4AWIKT.js → chunk-CKGNPJAG.js} +31 -15
  58. package/dist/cli-bundle/chunks/chunk-CKGNPJAG.js.map +7 -0
  59. package/dist/cli-bundle/chunks/{chunk-NB3PYLQ6.js → chunk-DT5LPYOD.js} +5 -5
  60. package/dist/cli-bundle/chunks/{chunk-37QXHBIB.js → chunk-FIGAZ4Y7.js} +3 -3
  61. package/dist/cli-bundle/chunks/{chunk-UV6IYE5U.js → chunk-FXR67XVQ.js} +2 -2
  62. package/dist/cli-bundle/chunks/{chunk-3MDHREEV.js → chunk-G6N5VEOK.js} +3 -3
  63. package/dist/cli-bundle/chunks/{chunk-5PCI3UBT.js → chunk-G6PYHBBR.js} +152 -253
  64. package/dist/cli-bundle/chunks/chunk-G6PYHBBR.js.map +7 -0
  65. package/dist/cli-bundle/chunks/{chunk-2GCDRRIF.js → chunk-GAJVRGGA.js} +12 -12
  66. package/dist/cli-bundle/chunks/{chunk-HCU6WUSY.js → chunk-H2IP4QLJ.js} +9 -9
  67. package/dist/cli-bundle/chunks/{chunk-CZUB4XWO.js → chunk-H4IIJDE4.js} +2 -2
  68. package/dist/cli-bundle/chunks/{chunk-RLK7P77C.js → chunk-HFFUQR73.js} +5 -5
  69. package/dist/cli-bundle/chunks/{chunk-6M4RJS4M.js → chunk-IB3GYLQE.js} +3 -3
  70. package/dist/cli-bundle/chunks/{chunk-SX75ADBK.js → chunk-IPKJ6B36.js} +6 -6
  71. package/dist/cli-bundle/chunks/{chunk-H7NJZWG2.js → chunk-JR2LV3M4.js} +13 -13
  72. package/dist/cli-bundle/chunks/{chunk-PP2U4NMT.js → chunk-KFWBJPSG.js} +5 -5
  73. package/dist/cli-bundle/chunks/{chunk-32R4PIC6.js → chunk-KQMUV6LX.js} +145 -253
  74. package/dist/cli-bundle/chunks/chunk-KQMUV6LX.js.map +1 -0
  75. package/dist/cli-bundle/chunks/{chunk-F7K5GWP3.js → chunk-LRKKONT2.js} +9 -9
  76. package/dist/cli-bundle/chunks/{chunk-5IDI42VV.js → chunk-M4T5DXD5.js} +7 -7
  77. package/dist/cli-bundle/chunks/{chunk-2PKHRP6G.js → chunk-MJTINN54.js} +10 -10
  78. package/dist/cli-bundle/chunks/{chunk-HMOADQVT.js → chunk-MJTSZKK5.js} +107 -3
  79. package/dist/cli-bundle/chunks/chunk-MJTSZKK5.js.map +7 -0
  80. package/dist/cli-bundle/chunks/chunk-MVKFOLLM.js +694 -0
  81. package/dist/cli-bundle/chunks/chunk-MVKFOLLM.js.map +7 -0
  82. package/dist/cli-bundle/chunks/{chunk-QGG32QHW.js → chunk-NCVCO3NZ.js} +3 -3
  83. package/dist/cli-bundle/chunks/{chunk-AIS5PGI3.js → chunk-NK3UPBVG.js} +2 -2
  84. package/dist/cli-bundle/chunks/{chunk-6H4LF7AO.js → chunk-O6LLO73I.js} +2 -2
  85. package/dist/cli-bundle/chunks/{chunk-YCJX76PW.js → chunk-P77P2ILI.js} +2 -2
  86. package/dist/cli-bundle/chunks/{chunk-F5NZWFSW.js → chunk-Q2KNGP7C.js} +7 -7
  87. package/dist/cli-bundle/chunks/{chunk-GMHPNNYG.js → chunk-QH3PJYON.js} +10 -10
  88. package/dist/cli-bundle/chunks/{chunk-NJHMAJ6N.js → chunk-QL5RVYOA.js} +8 -8
  89. package/dist/cli-bundle/chunks/{chunk-O47BPOPC.js → chunk-S26C36QC.js} +2 -2
  90. package/dist/cli-bundle/chunks/{chunk-D7FYS6PG.js → chunk-S2RUQSX2.js} +2 -2
  91. package/dist/cli-bundle/chunks/{chunk-CZPXY7UW.js → chunk-SBQTAVJZ.js} +3 -3
  92. package/dist/cli-bundle/chunks/{chunk-M5XALUSL.js → chunk-SKH7OGE5.js} +2 -2
  93. package/dist/cli-bundle/chunks/{chunk-NJN7LL7U.js → chunk-SKN7LC5W.js} +5 -5
  94. package/dist/cli-bundle/chunks/{chunk-6ZXM2XNF.js → chunk-SR3EKWZG.js} +8 -8
  95. package/dist/cli-bundle/chunks/{chunk-B473GZWW.js → chunk-T5472OMV.js} +3 -3
  96. package/dist/cli-bundle/chunks/{chunk-2EIMPCE4.js → chunk-T72AZDBA.js} +3 -3
  97. package/dist/cli-bundle/chunks/{chunk-6CJWZAN7.js → chunk-TQZH6OD6.js} +7 -7
  98. package/dist/cli-bundle/chunks/{chunk-FWPDUYEY.js → chunk-U2Z5YUSO.js} +7 -7
  99. package/dist/cli-bundle/chunks/{chunk-434HM6Z5.js → chunk-UELRKQQU.js} +100 -3
  100. package/dist/cli-bundle/chunks/chunk-UELRKQQU.js.map +1 -0
  101. package/dist/cli-bundle/chunks/{chunk-HIP7WVTL.js → chunk-UVC5LOR7.js} +4 -4
  102. package/dist/cli-bundle/chunks/{chunk-LEU5GHRC.js → chunk-VAYA4XFX.js} +3 -3
  103. package/dist/cli-bundle/chunks/{chunk-J4MYYSOL.js → chunk-VFAQ4LMN.js} +5 -5
  104. package/dist/cli-bundle/chunks/{chunk-UPE3CDD7.js → chunk-W72GHSJE.js} +7 -7
  105. package/dist/cli-bundle/chunks/{chunk-C4N5I7ZW.js → chunk-WBRKK5QR.js} +3 -3
  106. package/dist/cli-bundle/chunks/{chunk-Z6T4PQI2.js → chunk-WM5ZVBPE.js} +4 -4
  107. package/dist/cli-bundle/chunks/{chunk-TKBHZPKD.js → chunk-WZQWHN4R.js} +3 -3
  108. package/dist/cli-bundle/chunks/{chunk-FKBDKV7Y.js → chunk-XVF4YARA.js} +3 -3
  109. package/dist/cli-bundle/chunks/{chunk-SBGXDO7A.js → chunk-Y4SUQQYH.js} +8 -5
  110. package/dist/cli-bundle/chunks/{chunk-SBGXDO7A.js.map → chunk-Y4SUQQYH.js.map} +1 -1
  111. package/dist/cli-bundle/chunks/{chunk-QZTWBFXJ.js → chunk-YDEXO24S.js} +2 -2
  112. package/dist/cli-bundle/chunks/{chunk-FRUFKWNK.js → chunk-YJ3SUEPD.js} +2 -2
  113. package/dist/cli-bundle/chunks/{chunk-5FIEHKEX.js → chunk-YUDJD3XO.js} +5 -5
  114. package/dist/cli-bundle/chunks/{chunk-Q2J2HJUN.js → chunk-ZQ3ZVXX2.js} +2 -2
  115. package/dist/cli-bundle/chunks/{chunk-C3AZ5ZML.js → chunk-ZRK4O56R.js} +13 -13
  116. package/dist/cli-bundle/chunks/{claim-RC56YUWG.js → claim-4KHAA2RN.js} +10 -10
  117. package/dist/cli-bundle/chunks/{claim-THOJ6CMV.js → claim-CSPJFLNH.js} +10 -10
  118. package/dist/cli-bundle/chunks/close-A3EMKBBY.js +15 -0
  119. package/dist/cli-bundle/chunks/{close-SG5MNCVQ.js → close-W56IOGYG.js} +8 -8
  120. package/dist/cli-bundle/chunks/{close-many-3L3AQZBU.js → close-many-BX5DCSVV.js} +15 -15
  121. package/dist/cli-bundle/chunks/{close-many-DKQLBGLV.js → close-many-TQU5F4E4.js} +15 -15
  122. package/dist/cli-bundle/chunks/{comments-M7ZOZNBX.js → comments-U5KUC4EU.js} +10 -10
  123. package/dist/cli-bundle/chunks/{comments-SKWMDWCW.js → comments-VRECH75R.js} +10 -10
  124. package/dist/cli-bundle/chunks/{config-OZCUABPB.js → config-D3OKQO52.js} +8 -8
  125. package/dist/cli-bundle/chunks/{config-7CK62S7T.js → config-MMJA4LLK.js} +8 -8
  126. package/dist/cli-bundle/chunks/{context-PUG2A7RC.js → context-BLBD3PUB.js} +13 -13
  127. package/dist/cli-bundle/chunks/{context-OEC366TO.js → context-DHLVPXN3.js} +13 -13
  128. package/dist/cli-bundle/chunks/{contracts-3THOLA7L.js → contracts-C3SZCXXG.js} +7 -5
  129. package/dist/cli-bundle/chunks/contracts-C3SZCXXG.js.map +7 -0
  130. package/dist/cli-bundle/chunks/{contracts-N65FXEOL.js → contracts-XGVMMPC5.js} +8 -6
  131. package/dist/cli-bundle/chunks/contracts-XGVMMPC5.js.map +1 -0
  132. package/dist/cli-bundle/chunks/{copy-JPX7VZCH.js → copy-5D5DX3VK.js} +7 -7
  133. package/dist/cli-bundle/chunks/{copy-6QLHILAC.js → copy-HHL3K4QP.js} +7 -7
  134. package/dist/cli-bundle/chunks/{create-Y54ZVVZH.js → create-IXY43O4H.js} +14 -14
  135. package/dist/cli-bundle/chunks/create-QVGFYA2X.js +30 -0
  136. package/dist/cli-bundle/chunks/{delete-63PCMQAJ.js → delete-IBUR3M42.js} +7 -7
  137. package/dist/cli-bundle/chunks/{delete-GDSMGAGJ.js → delete-QQC2FGUH.js} +7 -7
  138. package/dist/cli-bundle/chunks/{deps-XYQ73XRH.js → deps-KWKRHXIN.js} +7 -7
  139. package/dist/cli-bundle/chunks/{deps-T4ZF5G54.js → deps-VTPO4BSE.js} +7 -7
  140. package/dist/cli-bundle/chunks/{docs-EHNPDWUL.js → docs-7CHFHXLN.js} +9 -9
  141. package/dist/cli-bundle/chunks/{docs-C75YIXHC.js → docs-IIO3FEUO.js} +9 -9
  142. package/dist/cli-bundle/chunks/{eval-GTENKE24.js → eval-CEYYEPSX.js} +12 -12
  143. package/dist/cli-bundle/chunks/{eval-3WKDTRMH.js → eval-IO7LREOL.js} +12 -12
  144. package/dist/cli-bundle/chunks/{extension-D5FDZ2CO.js → extension-KCPUWSY2.js} +6 -5
  145. package/dist/cli-bundle/chunks/{extension-46NWACO3.js → extension-UTTQDUYI.js} +6 -5
  146. package/dist/cli-bundle/chunks/{files-X3H7CCBQ.js → files-TPUL6KWB.js} +9 -9
  147. package/dist/cli-bundle/chunks/{files-DSZBOSSN.js → files-Z2HHEFGP.js} +9 -9
  148. package/dist/cli-bundle/chunks/{focus-5STQXDPU.js → focus-JVJCGC2D.js} +8 -8
  149. package/dist/cli-bundle/chunks/{focus-MDVPOWB5.js → focus-YRNNH7IP.js} +8 -8
  150. package/dist/cli-bundle/chunks/{gc-ZMST3WQP.js → gc-O5GUO3SU.js} +3 -3
  151. package/dist/cli-bundle/chunks/{gc-ZC7JHBG7.js → gc-PYVVEELM.js} +3 -3
  152. package/dist/cli-bundle/chunks/{get-NT7L2HUZ.js → get-ENLTEGTX.js} +11 -11
  153. package/dist/cli-bundle/chunks/{get-J2IPJRZW.js → get-X4O3HBEY.js} +11 -11
  154. package/dist/cli-bundle/chunks/{health-WOYBR3KU.js → health-5EXTY44Q.js} +14 -13
  155. package/dist/cli-bundle/chunks/{health-WOYBR3KU.js.map → health-5EXTY44Q.js.map} +1 -1
  156. package/dist/cli-bundle/chunks/{health-IVMA3XQC.js → health-BOTB7YSU.js} +16 -15
  157. package/dist/cli-bundle/chunks/{health-IVMA3XQC.js.map → health-BOTB7YSU.js.map} +1 -1
  158. package/dist/cli-bundle/chunks/{history-RLH2QCRO.js → history-AJTXLT6S.js} +10 -10
  159. package/dist/cli-bundle/chunks/history-AK3E5Z3C.js +20 -0
  160. package/dist/cli-bundle/chunks/{history-compact-UXDIFC33.js → history-compact-43OOUAWD.js} +12 -12
  161. package/dist/cli-bundle/chunks/{history-compact-ZBEBGJM7.js → history-compact-46MRHW3I.js} +12 -12
  162. package/dist/cli-bundle/chunks/{history-redact-P7I7AWMB.js → history-redact-KUUUVUFM.js} +11 -11
  163. package/dist/cli-bundle/chunks/history-redact-TWIYQV5J.js +21 -0
  164. package/dist/cli-bundle/chunks/{history-repair-52KINVIK.js → history-repair-B5PZBOPU.js} +12 -12
  165. package/dist/cli-bundle/chunks/{history-repair-RM5ITLU5.js → history-repair-VQTYOSRS.js} +12 -12
  166. package/dist/cli-bundle/chunks/{init-2BNZOO6F.js → init-BNLVFPRG.js} +11 -10
  167. package/dist/cli-bundle/chunks/init-RCRKW5PL.js +21 -0
  168. package/dist/cli-bundle/chunks/{learnings-YGYVHWJK.js → learnings-MUUU5KMC.js} +10 -10
  169. package/dist/cli-bundle/chunks/{learnings-W6F3FIPL.js → learnings-XSGX52S7.js} +10 -10
  170. package/dist/cli-bundle/chunks/{list-K6FPV4J4.js → list-32U7BSKE.js} +10 -10
  171. package/dist/cli-bundle/chunks/{list-KPAYU5KZ.js → list-ZEEOHLTQ.js} +10 -10
  172. package/dist/cli-bundle/chunks/{notes-PU74EPKV.js → notes-NJ45OZGF.js} +10 -10
  173. package/dist/cli-bundle/chunks/{notes-YTD6ZILW.js → notes-OHU25L3M.js} +10 -10
  174. package/dist/cli-bundle/chunks/{plan-GEQYUCBW.js → plan-KQA7CAKI.js} +14 -14
  175. package/dist/cli-bundle/chunks/{plan-FNXHXRCI.js → plan-LWWAEV5Y.js} +14 -14
  176. package/dist/cli-bundle/chunks/{register-list-query-QI45RMKN.js → register-list-query-DDCHPONM.js} +19 -19
  177. package/dist/cli-bundle/chunks/{register-list-query-PHWYHENI.js → register-list-query-YNPBVIKM.js} +19 -19
  178. package/dist/cli-bundle/chunks/{register-mutation-YINRTS7L.js → register-mutation-7ALWDDAX.js} +33 -33
  179. package/dist/cli-bundle/chunks/{register-mutation-X3BUOQEL.js → register-mutation-LAVKYY63.js} +33 -33
  180. package/dist/cli-bundle/chunks/{register-operations-E5JEASRK.js → register-operations-R4VOQ6EF.js} +32 -32
  181. package/dist/cli-bundle/chunks/{register-operations-MIDTRW7S.js → register-operations-U5JAW3WE.js} +32 -32
  182. package/dist/cli-bundle/chunks/{register-setup-EG2U6CEU.js → register-setup-KBXQDCXE.js} +27 -18
  183. package/dist/cli-bundle/chunks/register-setup-KBXQDCXE.js.map +7 -0
  184. package/dist/cli-bundle/chunks/{register-setup-DYBFLEZX.js → register-setup-RCRUHMSZ.js} +28 -19
  185. package/dist/cli-bundle/chunks/register-setup-RCRUHMSZ.js.map +1 -0
  186. package/dist/cli-bundle/chunks/restore-2ZKT6UDC.js +19 -0
  187. package/dist/cli-bundle/chunks/{restore-XQYSWBV7.js → restore-6K53WOWO.js} +11 -11
  188. package/dist/cli-bundle/chunks/{scheduling-shortcuts-NNT5ASZR.js → scheduling-shortcuts-NJ5UVJFB.js} +14 -14
  189. package/dist/cli-bundle/chunks/{scheduling-shortcuts-HJMTEXKE.js → scheduling-shortcuts-OQVJXG3M.js} +14 -14
  190. package/dist/cli-bundle/chunks/{schema-263RI4WW.js → schema-MNTAVQCY.js} +9 -9
  191. package/dist/cli-bundle/chunks/{schema-TZXW6XWD.js → schema-RBTJ2YXW.js} +9 -9
  192. package/dist/cli-bundle/chunks/{search-SFRJOVDG.js → search-6HOIVZDU.js} +12 -12
  193. package/dist/cli-bundle/chunks/{search-LECJYSXE.js → search-ZWYEMASC.js} +12 -12
  194. package/dist/cli-bundle/chunks/{stats-N7ER2PNK.js → stats-FS742AMA.js} +8 -8
  195. package/dist/cli-bundle/chunks/{stats-VPBGSRQH.js → stats-R5OAJVZK.js} +8 -8
  196. package/dist/cli-bundle/chunks/{telemetry-PP3FUNBU.js → telemetry-7DIGDQUO.js} +4 -4
  197. package/dist/cli-bundle/chunks/{telemetry-L6K3BUIQ.js → telemetry-FWEXSJLQ.js} +4 -4
  198. package/dist/cli-bundle/chunks/{test-3EGNS3T5.js → test-NZF7OT2F.js} +16 -15
  199. package/dist/cli-bundle/chunks/test-QJXLKV26.js +36 -0
  200. package/dist/cli-bundle/chunks/{test-all-NJ5V2QFS.js → test-all-DPN62TX7.js} +16 -15
  201. package/dist/cli-bundle/chunks/{test-all-NJ5V2QFS.js.map → test-all-DPN62TX7.js.map} +1 -1
  202. package/dist/cli-bundle/chunks/{test-all-ZHFAWNC3.js → test-all-KL7TLMJF.js} +18 -17
  203. package/dist/cli-bundle/chunks/{test-all-ZHFAWNC3.js.map → test-all-KL7TLMJF.js.map} +1 -1
  204. package/dist/cli-bundle/chunks/{test-runs-GN3C6GOI.js → test-runs-C6CFIVOS.js} +5 -5
  205. package/dist/cli-bundle/chunks/{test-runs-AJHR6IQF.js → test-runs-IAJDL6CA.js} +5 -5
  206. package/dist/cli-bundle/chunks/update-2XCQNOD6.js +28 -0
  207. package/dist/cli-bundle/chunks/update-IWUCXVH2.js +24 -0
  208. package/dist/cli-bundle/chunks/{update-many-RYQ64CFW.js → update-many-MUTIOAP3.js} +23 -23
  209. package/dist/cli-bundle/chunks/{update-many-N2AN6ZDH.js → update-many-YEH2DQL6.js} +23 -23
  210. package/dist/cli-bundle/chunks/{upgrade-VPCIYAVW.js → upgrade-HYJ3SWWU.js} +8 -7
  211. package/dist/cli-bundle/chunks/{upgrade-VPCIYAVW.js.map → upgrade-HYJ3SWWU.js.map} +1 -1
  212. package/dist/cli-bundle/chunks/{upgrade-TJXFLZIX.js → upgrade-UBNLBZNR.js} +6 -5
  213. package/dist/cli-bundle/chunks/{upgrade-TJXFLZIX.js.map → upgrade-UBNLBZNR.js.map} +1 -1
  214. package/dist/cli-bundle/chunks/{validate-PHKIYGSY.js → validate-6QWQVCX2.js} +21 -20
  215. package/dist/cli-bundle/chunks/{validate-PHKIYGSY.js.map → validate-6QWQVCX2.js.map} +1 -1
  216. package/dist/cli-bundle/chunks/{validate-JMNWEUYF.js → validate-W5V5ZGQX.js} +23 -22
  217. package/dist/cli-bundle/chunks/{validate-JMNWEUYF.js.map → validate-W5V5ZGQX.js.map} +1 -1
  218. package/dist/cli-bundle/main.js +38 -22
  219. package/dist/cli-bundle/main.js.map +2 -2
  220. package/dist/cli.js +3 -3
  221. package/dist/cli.js.map +1 -1
  222. package/dist/core/extensions/activation-summary.d.ts +109 -0
  223. package/dist/core/extensions/activation-summary.js +60 -0
  224. package/dist/core/extensions/activation-summary.js.map +1 -0
  225. package/dist/core/extensions/capability-usage.d.ts +92 -0
  226. package/dist/core/extensions/capability-usage.js +142 -0
  227. package/dist/core/extensions/capability-usage.js.map +1 -0
  228. package/dist/core/extensions/extension-capability-aliases.d.ts +7 -0
  229. package/dist/core/extensions/extension-capability-aliases.js +12 -2
  230. package/dist/core/extensions/extension-capability-aliases.js.map +1 -1
  231. package/dist/core/extensions/index.d.ts +1 -0
  232. package/dist/core/extensions/index.js +3 -2
  233. package/dist/core/extensions/index.js.map +1 -1
  234. package/dist/core/telemetry/runtime.js +5 -2
  235. package/dist/core/telemetry/runtime.js.map +1 -1
  236. package/dist/sdk/cli-contracts/enum-contracts.d.ts +1 -1
  237. package/dist/sdk/cli-contracts/enum-contracts.js +4 -2
  238. package/dist/sdk/cli-contracts/enum-contracts.js.map +1 -1
  239. package/dist/sdk/cli-contracts.d.ts +2 -0
  240. package/dist/sdk/cli-contracts.js +26 -13
  241. package/dist/sdk/cli-contracts.js.map +1 -1
  242. package/dist/sdk/compose.d.ts +297 -0
  243. package/dist/sdk/compose.js +420 -0
  244. package/dist/sdk/compose.js.map +1 -0
  245. package/dist/sdk/define.d.ts +194 -0
  246. package/dist/sdk/define.js +205 -0
  247. package/dist/sdk/define.js.map +1 -0
  248. package/dist/sdk/index.d.ts +8 -26
  249. package/dist/sdk/index.js +8 -10
  250. package/dist/sdk/index.js.map +1 -1
  251. package/dist/sdk/testing.d.ts +667 -2
  252. package/dist/sdk/testing.js +654 -18
  253. package/dist/sdk/testing.js.map +1 -1
  254. package/docs/COMMANDS.md +1 -0
  255. package/docs/EXTENSIONS.md +10 -11
  256. package/docs/SDK.md +502 -16
  257. package/package.json +2 -2
  258. package/dist/cli-bundle/chunks/activity-CIHV64UC.js +0 -18
  259. package/dist/cli-bundle/chunks/chunk-32R4PIC6.js.map +0 -1
  260. package/dist/cli-bundle/chunks/chunk-434HM6Z5.js.map +0 -1
  261. package/dist/cli-bundle/chunks/chunk-5PCI3UBT.js.map +0 -7
  262. package/dist/cli-bundle/chunks/chunk-A4Z7ZOL5.js.map +0 -1
  263. package/dist/cli-bundle/chunks/chunk-HC4AWIKT.js.map +0 -7
  264. package/dist/cli-bundle/chunks/chunk-HMOADQVT.js.map +0 -7
  265. package/dist/cli-bundle/chunks/close-DNMHGOCX.js +0 -15
  266. package/dist/cli-bundle/chunks/contracts-3THOLA7L.js.map +0 -7
  267. package/dist/cli-bundle/chunks/contracts-N65FXEOL.js.map +0 -1
  268. package/dist/cli-bundle/chunks/create-NNP6TSFO.js +0 -30
  269. package/dist/cli-bundle/chunks/history-WX3MGFS2.js +0 -20
  270. package/dist/cli-bundle/chunks/history-redact-YQGU3XRA.js +0 -21
  271. package/dist/cli-bundle/chunks/init-SC2P6CHP.js +0 -20
  272. package/dist/cli-bundle/chunks/register-setup-DYBFLEZX.js.map +0 -1
  273. package/dist/cli-bundle/chunks/register-setup-EG2U6CEU.js.map +0 -7
  274. package/dist/cli-bundle/chunks/restore-5KHR2YYQ.js +0 -19
  275. package/dist/cli-bundle/chunks/test-RQCTSWUK.js +0 -35
  276. package/dist/cli-bundle/chunks/update-6YXOGHRT.js +0 -24
  277. package/dist/cli-bundle/chunks/update-V33YUBRP.js +0 -28
  278. /package/dist/cli-bundle/chunks/{activity-KW3IRP44.js.map → activity-H2LMOSSW.js.map} +0 -0
  279. /package/dist/cli-bundle/chunks/{activity-CIHV64UC.js.map → activity-XUZ2AHCW.js.map} +0 -0
  280. /package/dist/cli-bundle/chunks/{aggregate-3ZKQG5SW.js.map → aggregate-EGJLZQBI.js.map} +0 -0
  281. /package/dist/cli-bundle/chunks/{aggregate-FIGQEIL3.js.map → aggregate-R725FC3S.js.map} +0 -0
  282. /package/dist/cli-bundle/chunks/{append-EWJYJ7CH.js.map → append-5J345QGU.js.map} +0 -0
  283. /package/dist/cli-bundle/chunks/{append-QEOLX3XB.js.map → append-O5HPBMRN.js.map} +0 -0
  284. /package/dist/cli-bundle/chunks/{chunk-GOZUHWFD.js.map → chunk-2A34E3BA.js.map} +0 -0
  285. /package/dist/cli-bundle/chunks/{chunk-5QICDWMV.js.map → chunk-2CKH2LMV.js.map} +0 -0
  286. /package/dist/cli-bundle/chunks/{chunk-WQ7NIVDK.js.map → chunk-2RDVQEWV.js.map} +0 -0
  287. /package/dist/cli-bundle/chunks/{chunk-NSBZ2CKF.js.map → chunk-2T3JG6V4.js.map} +0 -0
  288. /package/dist/cli-bundle/chunks/{chunk-76Z3YSHV.js.map → chunk-34EONI5F.js.map} +0 -0
  289. /package/dist/cli-bundle/chunks/{chunk-PUH4D67U.js.map → chunk-3VY3YQO6.js.map} +0 -0
  290. /package/dist/cli-bundle/chunks/{chunk-N5ZJACJ6.js.map → chunk-46G6RSB6.js.map} +0 -0
  291. /package/dist/cli-bundle/chunks/{chunk-SRYYRVPB.js.map → chunk-4BHT5VDC.js.map} +0 -0
  292. /package/dist/cli-bundle/chunks/{chunk-PFSRUHDH.js.map → chunk-4KD54S3Z.js.map} +0 -0
  293. /package/dist/cli-bundle/chunks/{chunk-NIUEXCFS.js.map → chunk-5UVVASSA.js.map} +0 -0
  294. /package/dist/cli-bundle/chunks/{chunk-CF55WVVS.js.map → chunk-5VOINNKT.js.map} +0 -0
  295. /package/dist/cli-bundle/chunks/{chunk-NIGXMNNI.js.map → chunk-66MEDTUD.js.map} +0 -0
  296. /package/dist/cli-bundle/chunks/{chunk-AZMOLBN3.js.map → chunk-7AUB5HNA.js.map} +0 -0
  297. /package/dist/cli-bundle/chunks/{chunk-OTHIWLMB.js.map → chunk-7K2XXO4I.js.map} +0 -0
  298. /package/dist/cli-bundle/chunks/{chunk-7D3SAQXM.js.map → chunk-7MRQ4HMK.js.map} +0 -0
  299. /package/dist/cli-bundle/chunks/{chunk-EBH56IXK.js.map → chunk-7SV63ZHD.js.map} +0 -0
  300. /package/dist/cli-bundle/chunks/{chunk-OFYMIDF2.js.map → chunk-7UGEAPRY.js.map} +0 -0
  301. /package/dist/cli-bundle/chunks/{chunk-LUWW7L4B.js.map → chunk-7XGQXHFB.js.map} +0 -0
  302. /package/dist/cli-bundle/chunks/{chunk-UEMNL33O.js.map → chunk-AD3A7ZD6.js.map} +0 -0
  303. /package/dist/cli-bundle/chunks/{chunk-3EWSGA7N.js.map → chunk-AONIHR2C.js.map} +0 -0
  304. /package/dist/cli-bundle/chunks/{chunk-RVHYI7SL.js.map → chunk-BB6MDVNQ.js.map} +0 -0
  305. /package/dist/cli-bundle/chunks/{chunk-52OCIDPG.js.map → chunk-CE5P2NQR.js.map} +0 -0
  306. /package/dist/cli-bundle/chunks/{chunk-NXS7ZKAK.js.map → chunk-CIIK67GW.js.map} +0 -0
  307. /package/dist/cli-bundle/chunks/{chunk-NB3PYLQ6.js.map → chunk-DT5LPYOD.js.map} +0 -0
  308. /package/dist/cli-bundle/chunks/{chunk-37QXHBIB.js.map → chunk-FIGAZ4Y7.js.map} +0 -0
  309. /package/dist/cli-bundle/chunks/{chunk-UV6IYE5U.js.map → chunk-FXR67XVQ.js.map} +0 -0
  310. /package/dist/cli-bundle/chunks/{chunk-3MDHREEV.js.map → chunk-G6N5VEOK.js.map} +0 -0
  311. /package/dist/cli-bundle/chunks/{chunk-2GCDRRIF.js.map → chunk-GAJVRGGA.js.map} +0 -0
  312. /package/dist/cli-bundle/chunks/{chunk-HCU6WUSY.js.map → chunk-H2IP4QLJ.js.map} +0 -0
  313. /package/dist/cli-bundle/chunks/{chunk-CZUB4XWO.js.map → chunk-H4IIJDE4.js.map} +0 -0
  314. /package/dist/cli-bundle/chunks/{chunk-RLK7P77C.js.map → chunk-HFFUQR73.js.map} +0 -0
  315. /package/dist/cli-bundle/chunks/{chunk-6M4RJS4M.js.map → chunk-IB3GYLQE.js.map} +0 -0
  316. /package/dist/cli-bundle/chunks/{chunk-SX75ADBK.js.map → chunk-IPKJ6B36.js.map} +0 -0
  317. /package/dist/cli-bundle/chunks/{chunk-H7NJZWG2.js.map → chunk-JR2LV3M4.js.map} +0 -0
  318. /package/dist/cli-bundle/chunks/{chunk-PP2U4NMT.js.map → chunk-KFWBJPSG.js.map} +0 -0
  319. /package/dist/cli-bundle/chunks/{chunk-F7K5GWP3.js.map → chunk-LRKKONT2.js.map} +0 -0
  320. /package/dist/cli-bundle/chunks/{chunk-5IDI42VV.js.map → chunk-M4T5DXD5.js.map} +0 -0
  321. /package/dist/cli-bundle/chunks/{chunk-2PKHRP6G.js.map → chunk-MJTINN54.js.map} +0 -0
  322. /package/dist/cli-bundle/chunks/{chunk-QGG32QHW.js.map → chunk-NCVCO3NZ.js.map} +0 -0
  323. /package/dist/cli-bundle/chunks/{chunk-AIS5PGI3.js.map → chunk-NK3UPBVG.js.map} +0 -0
  324. /package/dist/cli-bundle/chunks/{chunk-6H4LF7AO.js.map → chunk-O6LLO73I.js.map} +0 -0
  325. /package/dist/cli-bundle/chunks/{chunk-YCJX76PW.js.map → chunk-P77P2ILI.js.map} +0 -0
  326. /package/dist/cli-bundle/chunks/{chunk-F5NZWFSW.js.map → chunk-Q2KNGP7C.js.map} +0 -0
  327. /package/dist/cli-bundle/chunks/{chunk-GMHPNNYG.js.map → chunk-QH3PJYON.js.map} +0 -0
  328. /package/dist/cli-bundle/chunks/{chunk-NJHMAJ6N.js.map → chunk-QL5RVYOA.js.map} +0 -0
  329. /package/dist/cli-bundle/chunks/{chunk-O47BPOPC.js.map → chunk-S26C36QC.js.map} +0 -0
  330. /package/dist/cli-bundle/chunks/{chunk-D7FYS6PG.js.map → chunk-S2RUQSX2.js.map} +0 -0
  331. /package/dist/cli-bundle/chunks/{chunk-CZPXY7UW.js.map → chunk-SBQTAVJZ.js.map} +0 -0
  332. /package/dist/cli-bundle/chunks/{chunk-M5XALUSL.js.map → chunk-SKH7OGE5.js.map} +0 -0
  333. /package/dist/cli-bundle/chunks/{chunk-NJN7LL7U.js.map → chunk-SKN7LC5W.js.map} +0 -0
  334. /package/dist/cli-bundle/chunks/{chunk-6ZXM2XNF.js.map → chunk-SR3EKWZG.js.map} +0 -0
  335. /package/dist/cli-bundle/chunks/{chunk-B473GZWW.js.map → chunk-T5472OMV.js.map} +0 -0
  336. /package/dist/cli-bundle/chunks/{chunk-2EIMPCE4.js.map → chunk-T72AZDBA.js.map} +0 -0
  337. /package/dist/cli-bundle/chunks/{chunk-6CJWZAN7.js.map → chunk-TQZH6OD6.js.map} +0 -0
  338. /package/dist/cli-bundle/chunks/{chunk-FWPDUYEY.js.map → chunk-U2Z5YUSO.js.map} +0 -0
  339. /package/dist/cli-bundle/chunks/{chunk-HIP7WVTL.js.map → chunk-UVC5LOR7.js.map} +0 -0
  340. /package/dist/cli-bundle/chunks/{chunk-LEU5GHRC.js.map → chunk-VAYA4XFX.js.map} +0 -0
  341. /package/dist/cli-bundle/chunks/{chunk-J4MYYSOL.js.map → chunk-VFAQ4LMN.js.map} +0 -0
  342. /package/dist/cli-bundle/chunks/{chunk-UPE3CDD7.js.map → chunk-W72GHSJE.js.map} +0 -0
  343. /package/dist/cli-bundle/chunks/{chunk-C4N5I7ZW.js.map → chunk-WBRKK5QR.js.map} +0 -0
  344. /package/dist/cli-bundle/chunks/{chunk-Z6T4PQI2.js.map → chunk-WM5ZVBPE.js.map} +0 -0
  345. /package/dist/cli-bundle/chunks/{chunk-TKBHZPKD.js.map → chunk-WZQWHN4R.js.map} +0 -0
  346. /package/dist/cli-bundle/chunks/{chunk-FKBDKV7Y.js.map → chunk-XVF4YARA.js.map} +0 -0
  347. /package/dist/cli-bundle/chunks/{chunk-QZTWBFXJ.js.map → chunk-YDEXO24S.js.map} +0 -0
  348. /package/dist/cli-bundle/chunks/{chunk-FRUFKWNK.js.map → chunk-YJ3SUEPD.js.map} +0 -0
  349. /package/dist/cli-bundle/chunks/{chunk-5FIEHKEX.js.map → chunk-YUDJD3XO.js.map} +0 -0
  350. /package/dist/cli-bundle/chunks/{chunk-Q2J2HJUN.js.map → chunk-ZQ3ZVXX2.js.map} +0 -0
  351. /package/dist/cli-bundle/chunks/{chunk-C3AZ5ZML.js.map → chunk-ZRK4O56R.js.map} +0 -0
  352. /package/dist/cli-bundle/chunks/{claim-RC56YUWG.js.map → claim-4KHAA2RN.js.map} +0 -0
  353. /package/dist/cli-bundle/chunks/{claim-THOJ6CMV.js.map → claim-CSPJFLNH.js.map} +0 -0
  354. /package/dist/cli-bundle/chunks/{close-DNMHGOCX.js.map → close-A3EMKBBY.js.map} +0 -0
  355. /package/dist/cli-bundle/chunks/{close-SG5MNCVQ.js.map → close-W56IOGYG.js.map} +0 -0
  356. /package/dist/cli-bundle/chunks/{close-many-3L3AQZBU.js.map → close-many-BX5DCSVV.js.map} +0 -0
  357. /package/dist/cli-bundle/chunks/{close-many-DKQLBGLV.js.map → close-many-TQU5F4E4.js.map} +0 -0
  358. /package/dist/cli-bundle/chunks/{comments-M7ZOZNBX.js.map → comments-U5KUC4EU.js.map} +0 -0
  359. /package/dist/cli-bundle/chunks/{comments-SKWMDWCW.js.map → comments-VRECH75R.js.map} +0 -0
  360. /package/dist/cli-bundle/chunks/{config-OZCUABPB.js.map → config-D3OKQO52.js.map} +0 -0
  361. /package/dist/cli-bundle/chunks/{config-7CK62S7T.js.map → config-MMJA4LLK.js.map} +0 -0
  362. /package/dist/cli-bundle/chunks/{context-PUG2A7RC.js.map → context-BLBD3PUB.js.map} +0 -0
  363. /package/dist/cli-bundle/chunks/{context-OEC366TO.js.map → context-DHLVPXN3.js.map} +0 -0
  364. /package/dist/cli-bundle/chunks/{copy-JPX7VZCH.js.map → copy-5D5DX3VK.js.map} +0 -0
  365. /package/dist/cli-bundle/chunks/{copy-6QLHILAC.js.map → copy-HHL3K4QP.js.map} +0 -0
  366. /package/dist/cli-bundle/chunks/{create-Y54ZVVZH.js.map → create-IXY43O4H.js.map} +0 -0
  367. /package/dist/cli-bundle/chunks/{create-NNP6TSFO.js.map → create-QVGFYA2X.js.map} +0 -0
  368. /package/dist/cli-bundle/chunks/{delete-63PCMQAJ.js.map → delete-IBUR3M42.js.map} +0 -0
  369. /package/dist/cli-bundle/chunks/{delete-GDSMGAGJ.js.map → delete-QQC2FGUH.js.map} +0 -0
  370. /package/dist/cli-bundle/chunks/{deps-XYQ73XRH.js.map → deps-KWKRHXIN.js.map} +0 -0
  371. /package/dist/cli-bundle/chunks/{deps-T4ZF5G54.js.map → deps-VTPO4BSE.js.map} +0 -0
  372. /package/dist/cli-bundle/chunks/{docs-EHNPDWUL.js.map → docs-7CHFHXLN.js.map} +0 -0
  373. /package/dist/cli-bundle/chunks/{docs-C75YIXHC.js.map → docs-IIO3FEUO.js.map} +0 -0
  374. /package/dist/cli-bundle/chunks/{eval-GTENKE24.js.map → eval-CEYYEPSX.js.map} +0 -0
  375. /package/dist/cli-bundle/chunks/{eval-3WKDTRMH.js.map → eval-IO7LREOL.js.map} +0 -0
  376. /package/dist/cli-bundle/chunks/{extension-D5FDZ2CO.js.map → extension-KCPUWSY2.js.map} +0 -0
  377. /package/dist/cli-bundle/chunks/{extension-46NWACO3.js.map → extension-UTTQDUYI.js.map} +0 -0
  378. /package/dist/cli-bundle/chunks/{files-X3H7CCBQ.js.map → files-TPUL6KWB.js.map} +0 -0
  379. /package/dist/cli-bundle/chunks/{files-DSZBOSSN.js.map → files-Z2HHEFGP.js.map} +0 -0
  380. /package/dist/cli-bundle/chunks/{focus-5STQXDPU.js.map → focus-JVJCGC2D.js.map} +0 -0
  381. /package/dist/cli-bundle/chunks/{focus-MDVPOWB5.js.map → focus-YRNNH7IP.js.map} +0 -0
  382. /package/dist/cli-bundle/chunks/{gc-ZMST3WQP.js.map → gc-O5GUO3SU.js.map} +0 -0
  383. /package/dist/cli-bundle/chunks/{gc-ZC7JHBG7.js.map → gc-PYVVEELM.js.map} +0 -0
  384. /package/dist/cli-bundle/chunks/{get-NT7L2HUZ.js.map → get-ENLTEGTX.js.map} +0 -0
  385. /package/dist/cli-bundle/chunks/{get-J2IPJRZW.js.map → get-X4O3HBEY.js.map} +0 -0
  386. /package/dist/cli-bundle/chunks/{history-RLH2QCRO.js.map → history-AJTXLT6S.js.map} +0 -0
  387. /package/dist/cli-bundle/chunks/{history-WX3MGFS2.js.map → history-AK3E5Z3C.js.map} +0 -0
  388. /package/dist/cli-bundle/chunks/{history-compact-UXDIFC33.js.map → history-compact-43OOUAWD.js.map} +0 -0
  389. /package/dist/cli-bundle/chunks/{history-compact-ZBEBGJM7.js.map → history-compact-46MRHW3I.js.map} +0 -0
  390. /package/dist/cli-bundle/chunks/{history-redact-P7I7AWMB.js.map → history-redact-KUUUVUFM.js.map} +0 -0
  391. /package/dist/cli-bundle/chunks/{history-redact-YQGU3XRA.js.map → history-redact-TWIYQV5J.js.map} +0 -0
  392. /package/dist/cli-bundle/chunks/{history-repair-52KINVIK.js.map → history-repair-B5PZBOPU.js.map} +0 -0
  393. /package/dist/cli-bundle/chunks/{history-repair-RM5ITLU5.js.map → history-repair-VQTYOSRS.js.map} +0 -0
  394. /package/dist/cli-bundle/chunks/{init-2BNZOO6F.js.map → init-BNLVFPRG.js.map} +0 -0
  395. /package/dist/cli-bundle/chunks/{init-SC2P6CHP.js.map → init-RCRKW5PL.js.map} +0 -0
  396. /package/dist/cli-bundle/chunks/{learnings-YGYVHWJK.js.map → learnings-MUUU5KMC.js.map} +0 -0
  397. /package/dist/cli-bundle/chunks/{learnings-W6F3FIPL.js.map → learnings-XSGX52S7.js.map} +0 -0
  398. /package/dist/cli-bundle/chunks/{list-K6FPV4J4.js.map → list-32U7BSKE.js.map} +0 -0
  399. /package/dist/cli-bundle/chunks/{list-KPAYU5KZ.js.map → list-ZEEOHLTQ.js.map} +0 -0
  400. /package/dist/cli-bundle/chunks/{notes-PU74EPKV.js.map → notes-NJ45OZGF.js.map} +0 -0
  401. /package/dist/cli-bundle/chunks/{notes-YTD6ZILW.js.map → notes-OHU25L3M.js.map} +0 -0
  402. /package/dist/cli-bundle/chunks/{plan-GEQYUCBW.js.map → plan-KQA7CAKI.js.map} +0 -0
  403. /package/dist/cli-bundle/chunks/{plan-FNXHXRCI.js.map → plan-LWWAEV5Y.js.map} +0 -0
  404. /package/dist/cli-bundle/chunks/{register-list-query-QI45RMKN.js.map → register-list-query-DDCHPONM.js.map} +0 -0
  405. /package/dist/cli-bundle/chunks/{register-list-query-PHWYHENI.js.map → register-list-query-YNPBVIKM.js.map} +0 -0
  406. /package/dist/cli-bundle/chunks/{register-mutation-YINRTS7L.js.map → register-mutation-7ALWDDAX.js.map} +0 -0
  407. /package/dist/cli-bundle/chunks/{register-mutation-X3BUOQEL.js.map → register-mutation-LAVKYY63.js.map} +0 -0
  408. /package/dist/cli-bundle/chunks/{register-operations-E5JEASRK.js.map → register-operations-R4VOQ6EF.js.map} +0 -0
  409. /package/dist/cli-bundle/chunks/{register-operations-MIDTRW7S.js.map → register-operations-U5JAW3WE.js.map} +0 -0
  410. /package/dist/cli-bundle/chunks/{restore-5KHR2YYQ.js.map → restore-2ZKT6UDC.js.map} +0 -0
  411. /package/dist/cli-bundle/chunks/{restore-XQYSWBV7.js.map → restore-6K53WOWO.js.map} +0 -0
  412. /package/dist/cli-bundle/chunks/{scheduling-shortcuts-NNT5ASZR.js.map → scheduling-shortcuts-NJ5UVJFB.js.map} +0 -0
  413. /package/dist/cli-bundle/chunks/{scheduling-shortcuts-HJMTEXKE.js.map → scheduling-shortcuts-OQVJXG3M.js.map} +0 -0
  414. /package/dist/cli-bundle/chunks/{schema-263RI4WW.js.map → schema-MNTAVQCY.js.map} +0 -0
  415. /package/dist/cli-bundle/chunks/{schema-TZXW6XWD.js.map → schema-RBTJ2YXW.js.map} +0 -0
  416. /package/dist/cli-bundle/chunks/{search-SFRJOVDG.js.map → search-6HOIVZDU.js.map} +0 -0
  417. /package/dist/cli-bundle/chunks/{search-LECJYSXE.js.map → search-ZWYEMASC.js.map} +0 -0
  418. /package/dist/cli-bundle/chunks/{stats-N7ER2PNK.js.map → stats-FS742AMA.js.map} +0 -0
  419. /package/dist/cli-bundle/chunks/{stats-VPBGSRQH.js.map → stats-R5OAJVZK.js.map} +0 -0
  420. /package/dist/cli-bundle/chunks/{telemetry-PP3FUNBU.js.map → telemetry-7DIGDQUO.js.map} +0 -0
  421. /package/dist/cli-bundle/chunks/{telemetry-L6K3BUIQ.js.map → telemetry-FWEXSJLQ.js.map} +0 -0
  422. /package/dist/cli-bundle/chunks/{test-3EGNS3T5.js.map → test-NZF7OT2F.js.map} +0 -0
  423. /package/dist/cli-bundle/chunks/{test-RQCTSWUK.js.map → test-QJXLKV26.js.map} +0 -0
  424. /package/dist/cli-bundle/chunks/{test-runs-GN3C6GOI.js.map → test-runs-C6CFIVOS.js.map} +0 -0
  425. /package/dist/cli-bundle/chunks/{test-runs-AJHR6IQF.js.map → test-runs-IAJDL6CA.js.map} +0 -0
  426. /package/dist/cli-bundle/chunks/{update-V33YUBRP.js.map → update-2XCQNOD6.js.map} +0 -0
  427. /package/dist/cli-bundle/chunks/{update-6YXOGHRT.js.map → update-IWUCXVH2.js.map} +0 -0
  428. /package/dist/cli-bundle/chunks/{update-many-RYQ64CFW.js.map → update-many-MUTIOAP3.js.map} +0 -0
  429. /package/dist/cli-bundle/chunks/{update-many-N2AN6ZDH.js.map → update-many-YEH2DQL6.js.map} +0 -0
@@ -3,8 +3,14 @@
3
3
  *
4
4
  * Defines public SDK APIs and package-author helpers for Testing.
5
5
  */
6
- import type { ExtensionActivationResult, ExtensionCapability, ExtensionCommandRegistry, ExtensionGovernancePolicy, ExtensionHookRegistry, ExtensionLayer, ExtensionParserRegistry, ExtensionPreflightRegistry, ExtensionRegistrationRegistry, ExtensionRendererRegistry, ExtensionServiceName, ExtensionServiceRegistry, FlagDefinition, OutputRendererFormat, RegisteredExtensionCommandDefinition, RegisteredExtensionCommandOverride, RegisteredExtensionExporter, RegisteredExtensionFlagDefinitions, RegisteredExtensionImporter, RegisteredExtensionParserOverride, RegisteredExtensionPreflightOverride, RegisteredExtensionRendererOverride, RegisteredExtensionSchemaFieldDefinitions, RegisteredExtensionSchemaItemTypeDefinitions, RegisteredExtensionSchemaMigrationDefinition, RegisteredExtensionSearchProvider, RegisteredExtensionServiceOverride, RegisteredExtensionVectorStoreAdapter, SchemaFieldDefinition, SchemaItemTypeDefinition } from "../core/extensions/loader.js";
6
+ import type { AfterCommandHookContext, BeforeCommandHookContext, CommandHandlerResult, CommandOverrideContext, CommandOverrideResult, ExtensionActivationResult, ExtensionCapability, ExtensionCommandRegistry, ExtensionDeactivationResult, ExtensionGovernancePolicy, ExtensionHookRegistry, ExtensionLayer, ExtensionParserRegistry, ExtensionPreflightRegistry, ExtensionRegistrationRegistry, ExtensionRendererRegistry, ExtensionServiceName, ExtensionServiceRegistry, FlagDefinition, OnIndexHookContext, OnReadHookContext, OnWriteHookContext, OutputRendererFormat, ParserOverrideContext, ParserOverrideResult, PreflightOverrideContext, PreflightOverrideResult, RegisteredExtensionCommandDefinition, RegisteredExtensionCommandOverride, RegisteredExtensionExporter, RegisteredExtensionFlagDefinitions, RegisteredExtensionImporter, RegisteredExtensionParserOverride, RegisteredExtensionPreflightOverride, RegisteredExtensionRendererOverride, RegisteredExtensionSchemaFieldDefinitions, RegisteredExtensionSchemaItemTypeDefinitions, RegisteredExtensionSchemaMigrationDefinition, RegisteredExtensionSearchProvider, RegisteredExtensionServiceOverride, RegisteredExtensionVectorStoreAdapter, RendererOverrideContext, RendererOverrideResult, SchemaFieldDefinition, SchemaItemTypeDefinition, SearchProviderEmbedBatchContext, SearchProviderEmbedContext, SearchProviderQueryContext, SearchProviderQueryExpansionContext, SearchProviderQueryExpansionResult, SearchProviderQueryResult, SearchProviderRerankContext, SearchProviderRerankResult, ServiceOverrideContext, ServiceOverrideResult, VectorStoreDeleteContext, VectorStoreQueryContext, VectorStoreQueryHit, VectorStoreUpsertContext } from "../core/extensions/loader.js";
7
+ import { describeExtensionBlueprint, lintExtensionBlueprint } from "./compose.js";
8
+ import type { ExtensionBlueprint, ExtensionBlueprintLintCode, ExtensionBlueprintLintFinding, ExtensionBlueprintLintResult, ExtensionBlueprintLintSeverity, LintExtensionBlueprintOptions } from "./compose.js";
9
+ import type { GlobalOptions } from "../core/shared/command-types.js";
7
10
  import type { PmPackageManifest, PmPackageResourceKind } from "../core/packages/manifest.js";
11
+ export { describeExtensionActivation, type DescribeExtensionActivationOptions, type ExtensionActivationSummary, } from "../core/extensions/activation-summary.js";
12
+ export { describeExtensionBlueprint, lintExtensionBlueprint };
13
+ export type { ExtensionBlueprint, ExtensionBlueprintLintCode, ExtensionBlueprintLintFinding, ExtensionBlueprintLintResult, ExtensionBlueprintLintSeverity, LintExtensionBlueprintOptions, };
8
14
  /**
9
15
  * Documents the activate extension for test options payload exchanged by command, SDK, and package integrations.
10
16
  */
@@ -14,6 +20,235 @@ export interface ActivateExtensionForTestOptions {
14
20
  capabilities?: readonly ExtensionCapability[];
15
21
  policy?: ExtensionGovernancePolicy;
16
22
  }
23
+ /**
24
+ * Documents the deactivate extension for test options payload exchanged by command, SDK, and package integrations.
25
+ */
26
+ export interface DeactivateExtensionForTestOptions {
27
+ /** Overrides the in-memory extension name (defaults to `manifest.name` or `"test-extension"`). */
28
+ name?: string;
29
+ /** Overrides the layer recorded for the in-memory extension (defaults to `"project"`). */
30
+ layer?: ExtensionLayer;
31
+ /**
32
+ * Activation result returned by `activateExtensionForTest`. When provided, an
33
+ * extension whose `activate` failed is skipped — mirroring the host teardown
34
+ * contract that never deactivates a never-initialized extension. Pass the same
35
+ * `name`/`layer` to both helpers so the skip key matches.
36
+ */
37
+ activation?: Pick<ExtensionActivationResult, "failed">;
38
+ /**
39
+ * Per-hook teardown bound, forwarded as `deactivate_timeout_ms`. Use `0` (or
40
+ * `Infinity`) to wait indefinitely; omit to keep the host default.
41
+ */
42
+ deactivateTimeoutMs?: number;
43
+ }
44
+ /**
45
+ * Options for {@link runRegisteredCommandForTest} — the inputs forwarded to a
46
+ * registered extension command handler when exercising its behavior in a test.
47
+ */
48
+ export interface RunRegisteredCommandForTestOptions {
49
+ /**
50
+ * Full registered command path to invoke, e.g. `"hello"` or `"todos import"`.
51
+ * Matched against `commands.handlers[].command` after normalization (trimmed,
52
+ * lower-cased, internal whitespace collapsed), mirroring runtime dispatch.
53
+ */
54
+ command: string;
55
+ /** Positional arguments forwarded as `context.args` (default: none). */
56
+ args?: readonly string[];
57
+ /** Parsed flags/options forwarded as `context.options` (default: none). */
58
+ options?: Record<string, unknown>;
59
+ /**
60
+ * Global option overrides merged onto the agent-safe test defaults
61
+ * (`{ json: true, quiet: true, noPager: true }`), forwarded as `context.global`.
62
+ */
63
+ global?: Partial<GlobalOptions>;
64
+ /**
65
+ * Resolved pm workspace root forwarded as `context.pm_root` (default: `""`).
66
+ * Most pure handlers ignore it; set it when the handler reads workspace files.
67
+ */
68
+ pmRoot?: string;
69
+ }
70
+ /**
71
+ * Options for {@link runRegisteredHookForTest} — the lifecycle `kind` to fire and
72
+ * the synthetic context handed to every registered hook of that kind.
73
+ *
74
+ * The union keeps `context` type-safe per kind: `kind: "on_write"` requires an
75
+ * {@link OnWriteHookContext}, `kind: "after_command"` an
76
+ * {@link AfterCommandHookContext}, and so on — so authors cannot accidentally
77
+ * pass an index context to a read hook.
78
+ */
79
+ export type RunRegisteredHookForTestOptions = {
80
+ kind: "before_command";
81
+ context: BeforeCommandHookContext;
82
+ } | {
83
+ kind: "after_command";
84
+ context: AfterCommandHookContext;
85
+ } | {
86
+ kind: "on_read";
87
+ context: OnReadHookContext;
88
+ } | {
89
+ kind: "on_write";
90
+ context: OnWriteHookContext;
91
+ } | {
92
+ kind: "on_index";
93
+ context: OnIndexHookContext;
94
+ };
95
+ /**
96
+ * Maps each invokable search-provider operation to the context type its function
97
+ * receives, keeping {@link runRegisteredSearchProviderForTest} type-safe per
98
+ * operation. Mirrors the operations the host dispatches to a registered provider:
99
+ * semantic `query`, single/batch embedding (`embed`/`embedBatch`),
100
+ * `queryExpansion`, and `rerank`.
101
+ */
102
+ export interface SearchProviderOperationContexts {
103
+ query: SearchProviderQueryContext;
104
+ embed: SearchProviderEmbedContext;
105
+ embedBatch: SearchProviderEmbedBatchContext;
106
+ queryExpansion: SearchProviderQueryExpansionContext;
107
+ rerank: SearchProviderRerankContext;
108
+ }
109
+ /**
110
+ * Maps each invokable search-provider operation to the result type its function
111
+ * returns, so {@link runRegisteredSearchProviderForTest} resolves a precise return
112
+ * type from the chosen `operation` instead of a union the caller must narrow.
113
+ */
114
+ export interface SearchProviderOperationResults {
115
+ query: SearchProviderQueryResult;
116
+ embed: number[];
117
+ embedBatch: number[][];
118
+ queryExpansion: SearchProviderQueryExpansionResult;
119
+ rerank: SearchProviderRerankResult;
120
+ }
121
+ /**
122
+ * Options for {@link runRegisteredSearchProviderForTest}: the registered
123
+ * `provider` name to resolve, the `operation` to invoke, and the synthetic
124
+ * `context` handed to that operation. The discriminated union keeps `context`
125
+ * type-safe per operation — `operation: "embed"` requires a
126
+ * {@link SearchProviderEmbedContext}, `operation: "rerank"` a
127
+ * {@link SearchProviderRerankContext}, and so on.
128
+ */
129
+ export type RunRegisteredSearchProviderForTestOptions = {
130
+ [Operation in keyof SearchProviderOperationContexts]: {
131
+ /** Registered provider name to resolve, matched case-insensitively as the host does. */
132
+ provider: string;
133
+ /** Provider operation to invoke. */
134
+ operation: Operation;
135
+ /** Synthetic context handed to the resolved operation function. */
136
+ context: SearchProviderOperationContexts[Operation];
137
+ };
138
+ }[keyof SearchProviderOperationContexts];
139
+ /**
140
+ * Maps each invokable vector-store-adapter operation to the context type its
141
+ * function receives, keeping {@link runRegisteredVectorStoreAdapterForTest}
142
+ * type-safe per operation. Mirrors the operations the host dispatches to a
143
+ * registered adapter: nearest-neighbour `query`, `upsert`, and `delete`.
144
+ */
145
+ export interface VectorStoreAdapterOperationContexts {
146
+ query: VectorStoreQueryContext;
147
+ upsert: VectorStoreUpsertContext;
148
+ delete: VectorStoreDeleteContext;
149
+ }
150
+ /**
151
+ * Maps each invokable vector-store-adapter operation to the result type its
152
+ * function returns. Only `query` has a structured result
153
+ * ({@link VectorStoreQueryHit}[]); `upsert`/`delete` report success by not
154
+ * throwing, so their result is `unknown` and typically ignored.
155
+ */
156
+ export interface VectorStoreAdapterOperationResults {
157
+ query: VectorStoreQueryHit[];
158
+ upsert: unknown;
159
+ delete: unknown;
160
+ }
161
+ /**
162
+ * Options for {@link runRegisteredVectorStoreAdapterForTest}: the registered
163
+ * `adapter` name to resolve, the `operation` to invoke, and the synthetic
164
+ * `context` handed to that operation. The discriminated union keeps `context`
165
+ * type-safe per operation — `operation: "upsert"` requires a
166
+ * {@link VectorStoreUpsertContext}, `operation: "delete"` a
167
+ * {@link VectorStoreDeleteContext}, and so on.
168
+ */
169
+ export type RunRegisteredVectorStoreAdapterForTestOptions = {
170
+ [Operation in keyof VectorStoreAdapterOperationContexts]: {
171
+ /** Registered adapter name to resolve, matched case-insensitively as the host does. */
172
+ adapter: string;
173
+ /** Adapter operation to invoke. */
174
+ operation: Operation;
175
+ /** Synthetic context handed to the resolved operation function. */
176
+ context: VectorStoreAdapterOperationContexts[Operation];
177
+ };
178
+ }[keyof VectorStoreAdapterOperationContexts];
179
+ /**
180
+ * Options for {@link runRegisteredMigrationForTest}: which registered migration
181
+ * to invoke and the workspace root its run context reports.
182
+ */
183
+ export interface RunRegisteredMigrationForTestOptions {
184
+ /** Registered migration id to resolve, matched case-insensitively against `definition.id`. */
185
+ migration: string;
186
+ /** Optional extension name to disambiguate when several extensions register the same id. */
187
+ extensionName?: string;
188
+ /** Resolved pm workspace root forwarded as `context.pm_root` (default `""`). */
189
+ pmRoot?: string;
190
+ }
191
+ /**
192
+ * Options for {@link runRegisteredImporterForTest} — the registered importer name
193
+ * to invoke plus the synthetic invocation context forwarded to its handler.
194
+ *
195
+ * The `importer` name is the value passed to `api.registerImporter(name, ...)`,
196
+ * resolved case-insensitively (and whitespace-collapsed) against
197
+ * `registrations.importers`; the helper derives the `"<name> import"` command
198
+ * path internally, so authors never hand-build it.
199
+ */
200
+ export interface RunRegisteredImporterForTestOptions {
201
+ /** Registered importer name to resolve, e.g. `"csv"` for a `"csv import"` handler. */
202
+ importer: string;
203
+ /** Optional extension name to disambiguate when several extensions register the same importer. */
204
+ extensionName?: string;
205
+ /** Positional arguments forwarded as `context.args` (default: none). */
206
+ args?: readonly string[];
207
+ /** Parsed flags/options forwarded as `context.options` (default: none). */
208
+ options?: Record<string, unknown>;
209
+ /**
210
+ * Global option overrides merged onto the agent-safe test defaults
211
+ * (`{ json: true, quiet: true, noPager: true }`), forwarded as `context.global`.
212
+ */
213
+ global?: Partial<GlobalOptions>;
214
+ /** Resolved pm workspace root forwarded as `context.pm_root` (default: `""`). */
215
+ pmRoot?: string;
216
+ }
217
+ /**
218
+ * Options for {@link runRegisteredExporterForTest} — the registered exporter name
219
+ * to invoke plus the synthetic invocation context forwarded to its handler.
220
+ *
221
+ * The `exporter` name is the value passed to `api.registerExporter(name, ...)`,
222
+ * resolved case-insensitively (and whitespace-collapsed) against
223
+ * `registrations.exporters`; the helper derives the `"<name> export"` command
224
+ * path internally, so authors never hand-build it.
225
+ */
226
+ export interface RunRegisteredExporterForTestOptions {
227
+ /** Registered exporter name to resolve, e.g. `"csv"` for a `"csv export"` handler. */
228
+ exporter: string;
229
+ /** Optional extension name to disambiguate when several extensions register the same exporter. */
230
+ extensionName?: string;
231
+ /** Positional arguments forwarded as `context.args` (default: none). */
232
+ args?: readonly string[];
233
+ /** Parsed flags/options forwarded as `context.options` (default: none). */
234
+ options?: Record<string, unknown>;
235
+ /**
236
+ * Global option overrides merged onto the agent-safe test defaults
237
+ * (`{ json: true, quiet: true, noPager: true }`), forwarded as `context.global`.
238
+ */
239
+ global?: Partial<GlobalOptions>;
240
+ /** Resolved pm workspace root forwarded as `context.pm_root` (default: `""`). */
241
+ pmRoot?: string;
242
+ }
243
+ /**
244
+ * Documents the extension deactivation expectation payload exchanged by command, SDK, and package integrations.
245
+ */
246
+ export interface ExtensionDeactivationExpectation {
247
+ /** Expected count of extensions whose `deactivate` ran without throwing (default `1`). */
248
+ deactivated?: number;
249
+ /** Expected count of teardown failures (default `0`). */
250
+ failed?: number;
251
+ }
17
252
  /**
18
253
  * Documents the registered command contract expectation payload exchanged by command, SDK, and package integrations.
19
254
  */
@@ -151,6 +386,35 @@ export interface RegisteredMigrationExpectation {
151
386
  extensionName?: string;
152
387
  mandatory?: boolean;
153
388
  }
389
+ /**
390
+ * Documents the extension capability usage expectation payload exchanged by command, SDK, and package integrations.
391
+ */
392
+ export interface ExtensionCapabilityUsageExpectation {
393
+ /**
394
+ * Capabilities the manifest declares. Mirror `manifest.capabilities` here so
395
+ * the assertion fails when the manifest grants more than the code uses.
396
+ */
397
+ declared: readonly ExtensionCapability[];
398
+ /** Restrict reconciliation to a single extension when the activation has several. */
399
+ extensionName?: string;
400
+ /**
401
+ * Capabilities allowed to be declared without being exercised (e.g. ones a
402
+ * runtime registers only behind a config flag). These are excluded from the
403
+ * least-privilege failure.
404
+ */
405
+ allowUnused?: readonly ExtensionCapability[];
406
+ }
407
+ /**
408
+ * Documents the extension capability usage assertion payload exchanged by command, SDK, and package integrations.
409
+ */
410
+ export interface ExtensionCapabilityUsageAssertion {
411
+ /** Declared capabilities considered, sorted and de-duplicated. */
412
+ declared: ExtensionCapability[];
413
+ /** Capabilities the extension actually registered against, sorted. */
414
+ used: ExtensionCapability[];
415
+ /** Declared capabilities with no matching registration after the allowlist. */
416
+ unused: ExtensionCapability[];
417
+ }
154
418
  /**
155
419
  * Restricts package manifest resource expectation values accepted by command, SDK, and storage contracts.
156
420
  */
@@ -170,6 +434,254 @@ export interface PackageManifestExpectation {
170
434
  * avoiding private loader imports, filesystem manifests, or workspace setup.
171
435
  */
172
436
  export declare function activateExtensionForTest(module: unknown, options?: ActivateExtensionForTestOptions): Promise<ExtensionActivationResult>;
437
+ /**
438
+ * Deactivate one in-memory extension module for package tests — the teardown
439
+ * counterpart to {@link activateExtensionForTest}.
440
+ *
441
+ * Runs pm's real `deactivateExtensions` engine (including its bounded per-hook
442
+ * timeout and best-effort failure capture) over a single synthetic load entry,
443
+ * so authors can prove an extension's `deactivate` releases the resources its
444
+ * `activate` opened — without importing private loader internals or staging a
445
+ * workspace. Resolve `name`/`layer` the same way {@link activateExtensionForTest}
446
+ * does so a forwarded `activation` result skips a failed extension correctly.
447
+ */
448
+ export declare function deactivateExtensionForTest(module: unknown, options?: DeactivateExtensionForTestOptions): Promise<ExtensionDeactivationResult>;
449
+ /**
450
+ * Invoke a registered extension command handler and return its real
451
+ * {@link CommandHandlerResult} so package tests can assert on behavior — not
452
+ * just that the command was registered.
453
+ *
454
+ * This is the "invoke" verb that completes the package-author testing loop:
455
+ * `activateExtensionForTest` → `assertRegisteredCommandContract` → **run** →
456
+ * `deactivateExtensionForTest`. It runs pm's real handler-dispatch engine
457
+ * (`runCommandHandler`) over `activation.commands`, building the
458
+ * `CommandHandlerContext` with agent-safe global defaults
459
+ * (`{ json: true, quiet: true, noPager: true }`) that callers may override.
460
+ *
461
+ * Because `registerImporter`/`registerExporter` register their handlers under
462
+ * the `"<name> import"` / `"<name> export"` command paths, this same helper
463
+ * exercises importer and exporter handlers too.
464
+ *
465
+ * Throws a descriptive error (listing the available handler command paths) when
466
+ * no handler is registered for `command`, since that is a wiring/typo bug in the
467
+ * test rather than a behavior under test. When a handler is found, the result is
468
+ * returned verbatim: a clean run yields `{ handled: true, result, warnings: [] }`,
469
+ * while a handler that throws a non-exit error yields
470
+ * `{ handled: false, warnings: [code], errorMessage }` so the failure can be
471
+ * asserted. A handler that throws an error carrying a numeric `exitCode`
472
+ * propagates the throw, matching runtime semantics.
473
+ */
474
+ export declare function runRegisteredCommandForTest(commands: ExtensionCommandRegistry, options: RunRegisteredCommandForTestOptions): Promise<CommandHandlerResult>;
475
+ /**
476
+ * Fire every registered lifecycle hook of a given `kind` through pm's real hook
477
+ * runner and return the warnings array so package tests can assert on behavior —
478
+ * not just that a hook was registered.
479
+ *
480
+ * This is the hook counterpart to {@link runRegisteredCommandForTest}, extending
481
+ * the package-author "invoke" verb to the `api.hooks.*` surface. Pass the
482
+ * `ExtensionHookRegistry` from `activateExtensionForTest(...).hooks` together with
483
+ * the lifecycle `kind` and a synthetic context. Hooks observe their inputs via a
484
+ * cloned context snapshot (mutations never leak back to the caller), so the
485
+ * observable signal is twofold: any side effects the hook performs, and the
486
+ * returned warnings. A clean run returns `[]`; a hook that throws contributes one
487
+ * `extension_hook_failed:<layer>:<name>:<hookName>` warning, mirroring runtime
488
+ * dispatch which isolates a failing hook without aborting the others.
489
+ *
490
+ * Throws a descriptive error (listing the hook kinds that do have registrations)
491
+ * when no hook of `kind` is registered, since firing a hook the extension never
492
+ * registered is a wiring/typo bug in the test rather than a behavior under test.
493
+ */
494
+ export declare function runRegisteredHookForTest(hooks: ExtensionHookRegistry, options: RunRegisteredHookForTestOptions): Promise<string[]>;
495
+ /**
496
+ * Invoke a registered parser override through pm's real runner and return the
497
+ * resolved {@link ParserOverrideResult}, so package tests can assert the rewritten
498
+ * args/options/global an override produces for a command before dispatch.
499
+ *
500
+ * Guards that a parser override is registered for the (normalized) target command
501
+ * before delegating: without a match `runParserOverride` would silently return
502
+ * `overridden: false`, hiding a typo'd command name in the test. When a match
503
+ * exists the result is returned verbatim — `overridden: true` with the rewritten
504
+ * context on success, or `overridden: false` with an
505
+ * `extension_parser_override_failed:*` warning when the override throws.
506
+ */
507
+ export declare function runRegisteredParserOverrideForTest(parsers: ExtensionParserRegistry, context: ParserOverrideContext): Promise<ParserOverrideResult>;
508
+ /**
509
+ * Invoke the active preflight override through pm's real runner and return the
510
+ * resolved {@link PreflightOverrideResult}, so package tests can assert the
511
+ * migration/format gate decision an override yields.
512
+ *
513
+ * Unlike command-scoped overrides, the runtime applies the **last** registered
514
+ * preflight override regardless of command, so this helper guards only that at
515
+ * least one preflight override is registered before delegating. The result is
516
+ * returned verbatim — `overridden: true` with the adjusted decision on success,
517
+ * or `overridden: false` with an `extension_preflight_override_failed:*` warning
518
+ * when the override throws.
519
+ */
520
+ export declare function runRegisteredPreflightOverrideForTest(preflight: ExtensionPreflightRegistry, context: PreflightOverrideContext): Promise<PreflightOverrideResult>;
521
+ /**
522
+ * Invoke a registered command-result override through pm's real runner and return
523
+ * the resolved {@link CommandOverrideResult}, so package tests can assert how an
524
+ * override transforms a command's result payload.
525
+ *
526
+ * Accepts the same `ExtensionCommandRegistry` exposed as
527
+ * `activateExtensionForTest(...).commands` (it carries both handlers and
528
+ * overrides). Guards that an override is registered for the (normalized) target
529
+ * command before delegating, so a typo'd command name surfaces as a clear error
530
+ * rather than a silent `overridden: false`. The result is returned verbatim —
531
+ * including the `extension_command_override_async_unsupported:*` warning the
532
+ * runtime emits when an override returns a Promise (command overrides are
533
+ * synchronous), or an `extension_command_override_failed:*` warning on throw.
534
+ */
535
+ export declare function runRegisteredCommandOverrideForTest(commands: ExtensionCommandRegistry, context: CommandOverrideContext): Promise<CommandOverrideResult>;
536
+ /**
537
+ * Invoke a registered renderer override through pm's real runner and return the
538
+ * resolved {@link RendererOverrideResult}, so package tests can assert the custom
539
+ * string an override renders for a given output `format`.
540
+ *
541
+ * Guards that a renderer override is registered for `context.format` before
542
+ * delegating, so a wrong format surfaces as a clear error rather than a silent
543
+ * `overridden: false`. The result is returned verbatim — `overridden: true` with
544
+ * the rendered string on success, or `overridden: false` (with an
545
+ * `extension_renderer_invalid_result:*` / `extension_renderer_failed:*` warning
546
+ * where applicable) when the override returns a non-string or throws.
547
+ */
548
+ export declare function runRegisteredRendererOverrideForTest(renderers: ExtensionRendererRegistry, context: RendererOverrideContext): Promise<RendererOverrideResult>;
549
+ /**
550
+ * Invoke a registered service override through pm's real runner and return the
551
+ * resolved {@link ServiceOverrideResult}, so package tests can assert how an
552
+ * override handles an internal service payload (e.g. `output_format`).
553
+ *
554
+ * Guards that a service override is registered for `context.service` before
555
+ * delegating, so a wrong service name surfaces as a clear error rather than a
556
+ * silent `handled: false`. The result is returned verbatim — `handled: true` with
557
+ * the override's result when it claims the payload, or `handled: false` with the
558
+ * original payload (and any `extension_service_override_*` warnings) otherwise.
559
+ */
560
+ export declare function runRegisteredServiceOverrideForTest(services: ExtensionServiceRegistry, context: ServiceOverrideContext): Promise<ServiceOverrideResult>;
561
+ /**
562
+ * Invoke an operation of a registered search provider through the same name
563
+ * resolution the host uses and return the operation's result, so package tests
564
+ * can assert a custom provider's runtime behavior — not just that it registered.
565
+ *
566
+ * This is the search-provider counterpart to {@link runRegisteredCommandForTest},
567
+ * extending the package-author "invoke" verb to the `api.registerSearchProvider`
568
+ * surface. Pass the `ExtensionRegistrationRegistry` from
569
+ * `activateExtensionForTest(...).registrations`, the registered provider name, the
570
+ * `operation` to exercise (`query`, `embed`, `embedBatch`, `queryExpansion`, or
571
+ * `rerank`), and a synthetic context. The provider is resolved via
572
+ * {@link resolveRegisteredSearchProvider} (case-insensitive, last registration
573
+ * wins) and the operation is invoked on its `runtime_definition` — the clone that
574
+ * preserves live functions, matching what the runtime dispatches.
575
+ *
576
+ * Throws a descriptive error listing the available providers when the name is not
577
+ * registered, and a separate error when the resolved provider does not implement
578
+ * the requested operation, since invoking an absent provider/operation is a
579
+ * wiring bug in the test rather than a behavior under test.
580
+ */
581
+ export declare function runRegisteredSearchProviderForTest<Operation extends keyof SearchProviderOperationContexts>(registrations: ExtensionRegistrationRegistry, options: {
582
+ provider: string;
583
+ operation: Operation;
584
+ context: SearchProviderOperationContexts[Operation];
585
+ }): Promise<SearchProviderOperationResults[Operation]>;
586
+ /**
587
+ * Invoke an operation of a registered vector store adapter through the same name
588
+ * resolution the host uses and return the operation's result, so package tests
589
+ * can assert a custom adapter's runtime behavior — not just that it registered.
590
+ *
591
+ * This is the vector-store counterpart to {@link runRegisteredSearchProviderForTest}.
592
+ * Pass the `ExtensionRegistrationRegistry` from
593
+ * `activateExtensionForTest(...).registrations`, the registered adapter name, the
594
+ * `operation` to exercise (`query`, `upsert`, or `delete`), and a synthetic
595
+ * context. The adapter is resolved via {@link resolveRegisteredVectorStoreAdapter}
596
+ * (case-insensitive, last registration wins) and the operation is invoked on its
597
+ * `runtime_definition` — the clone that preserves live functions, matching what
598
+ * the runtime dispatches.
599
+ *
600
+ * Throws a descriptive error listing the available adapters when the name is not
601
+ * registered, and a separate error when the resolved adapter does not implement
602
+ * the requested operation.
603
+ */
604
+ export declare function runRegisteredVectorStoreAdapterForTest<Operation extends keyof VectorStoreAdapterOperationContexts>(registrations: ExtensionRegistrationRegistry, options: {
605
+ adapter: string;
606
+ operation: Operation;
607
+ context: VectorStoreAdapterOperationContexts[Operation];
608
+ }): Promise<VectorStoreAdapterOperationResults[Operation]>;
609
+ /**
610
+ * Invoke a registered schema migration's `run` function through the same runtime
611
+ * definition the host executes and return its result, so package tests can assert
612
+ * a migration's behavior — not just that it registered.
613
+ *
614
+ * This completes the package-author "invoke" verb across every executable
615
+ * registration surface. The migration is resolved by id via
616
+ * {@link assertRegisteredMigration} (which throws a descriptive "available
617
+ * migrations" error when absent), then `run` is invoked on its
618
+ * `runtime_definition` with a context mirroring the one
619
+ * `executeRegisteredRuntimeMigrations` builds at runtime: the resolved id,
620
+ * `command: "migration"`, the registering extension's layer/name, the supplied
621
+ * `pmRoot`, and the migration's normalized status. Unlike the runtime — which
622
+ * skips already-applied migrations and folds a throw into a warning — this helper
623
+ * always invokes `run` and lets a throw propagate, so authors can assert both the
624
+ * success result and failure via rejection.
625
+ *
626
+ * Throws when the resolved migration declares no `run` function, since invoking a
627
+ * runless migration is a wiring bug in the test rather than a behavior under test.
628
+ */
629
+ export declare function runRegisteredMigrationForTest(registrations: ExtensionRegistrationRegistry, options: RunRegisteredMigrationForTestOptions): Promise<unknown>;
630
+ /**
631
+ * Invoke a registered extension importer through pm's real handler-dispatch
632
+ * engine and return its {@link CommandHandlerResult}, so package tests can assert
633
+ * an importer's behavior — not just that it registered.
634
+ *
635
+ * This is the importer counterpart to {@link runRegisteredCommandForTest},
636
+ * extending the package-author "invoke" verb to the `api.registerImporter`
637
+ * surface. Because `registerImporter(name, fn)` wraps `fn` into a command handler
638
+ * at the `"<name> import"` path, invoking it through `runRegisteredCommandForTest`
639
+ * requires the author to know that naming convention and to remember that an
640
+ * importer is reachable as a command at all. This helper closes both gaps: it
641
+ * accepts the registered importer name directly, validates via
642
+ * {@link assertRegisteredImporter} that it is genuinely a registered importer
643
+ * (not merely some command parked at that path), derives the command path, and
644
+ * dispatches through the same engine.
645
+ *
646
+ * The full activation result is required because importer execution spans two
647
+ * sub-registries: `registrations.importers` proves the importer exists, while
648
+ * `commands` holds the wrapped handler. The result is returned verbatim from the
649
+ * command engine: a clean run yields `{ handled: true, result, warnings: [] }`
650
+ * (where `result` is the importer's return value), a non-exit throw yields
651
+ * `{ handled: false, warnings: [code], errorMessage }`, and an error carrying a
652
+ * numeric `exitCode` propagates — matching runtime import semantics.
653
+ *
654
+ * Throws a descriptive "available importers" error (via `assertRegisteredImporter`)
655
+ * when no importer matches, since that is a wiring/typo bug in the test rather
656
+ * than a behavior under test.
657
+ */
658
+ export declare function runRegisteredImporterForTest(activation: ExtensionActivationResult, options: RunRegisteredImporterForTestOptions): Promise<CommandHandlerResult>;
659
+ /**
660
+ * Invoke a registered extension exporter through pm's real handler-dispatch
661
+ * engine and return its {@link CommandHandlerResult}, so package tests can assert
662
+ * an exporter's behavior — not just that it registered.
663
+ *
664
+ * This is the exporter counterpart to {@link runRegisteredImporterForTest} and
665
+ * the final surface in the package-author "invoke" verb. Because
666
+ * `registerExporter(name, fn)` wraps `fn` into a command handler at the
667
+ * `"<name> export"` path, this helper accepts the registered exporter name
668
+ * directly, validates via {@link assertRegisteredExporter} that it is genuinely a
669
+ * registered exporter, derives the command path, and dispatches through the same
670
+ * engine. See {@link runRegisteredImporterForTest} for the full activation
671
+ * rationale and return semantics (which apply identically here).
672
+ *
673
+ * Throws a descriptive "available exporters" error (via `assertRegisteredExporter`)
674
+ * when no exporter matches, since that is a wiring/typo bug in the test rather
675
+ * than a behavior under test.
676
+ */
677
+ export declare function runRegisteredExporterForTest(activation: ExtensionActivationResult, options: RunRegisteredExporterForTestOptions): Promise<CommandHandlerResult>;
678
+ /**
679
+ * Assert that an {@link ExtensionDeactivationResult} reports the expected clean
680
+ * teardown counts, throwing a descriptive error otherwise. Defaults assert the
681
+ * single-extension happy path — exactly one extension deactivated and none
682
+ * failed. Returns the result so assertions can chain.
683
+ */
684
+ export declare function assertExtensionDeactivated(result: ExtensionDeactivationResult, expectation?: ExtensionDeactivationExpectation): ExtensionDeactivationResult;
173
685
  /**
174
686
  * Assert that a normalized package manifest advertises expected package
175
687
  * resources. Pair with `readPmPackageManifest(packageRoot)` in package tests.
@@ -284,4 +796,157 @@ export declare function assertRegisteredServiceOverride(services: ExtensionServi
284
796
  * Migrations are surfaced via `ExtensionActivationResult.registrations.migrations`.
285
797
  */
286
798
  export declare function assertRegisteredMigration(registrations: ExtensionRegistrationRegistry, expectation: RegisteredMigrationExpectation): RegisteredExtensionSchemaMigrationDefinition;
287
- export {};
799
+ /**
800
+ * Assert that an activated extension declares no capability it never uses
801
+ * (least privilege). Pass the same capabilities as `manifest.capabilities` via
802
+ * `expectation.declared`; the helper computes what the extension actually
803
+ * registered against and throws when any declared capability is unused.
804
+ *
805
+ * This is the package-test counterpart of the advisory
806
+ * `extension_capability_unused` warning `pm package doctor` emits, letting an
807
+ * author catch an over-broad manifest at `npm test` time. Returns the
808
+ * declared/used/unused breakdown for further assertions.
809
+ */
810
+ export declare function assertExtensionCapabilityUsage(activation: ExtensionActivationResult, expectation: ExtensionCapabilityUsageExpectation): ExtensionCapabilityUsageAssertion;
811
+ /**
812
+ * Preflight a declarative {@link ExtensionBlueprint} in a test, throwing if it has
813
+ * any `error`-severity issue (today: capability the blueprint exercises but the
814
+ * declared set omits, which would fail activation with `extension_capability_missing`).
815
+ *
816
+ * The throwing counterpart to {@link lintExtensionBlueprint} and the `assert*`
817
+ * family member for declarative authoring: drop `assertExtensionBlueprint(blueprint)`
818
+ * into a package's `node:test`/Vitest suite to fail CI before the blueprint is
819
+ * ever activated. The full {@link ExtensionBlueprintLintResult} is returned on
820
+ * success so a test can still inspect advisory warnings (unused capability,
821
+ * duplicate command, empty surface) without failing on them.
822
+ */
823
+ export declare function assertExtensionBlueprint(blueprint: ExtensionBlueprint, options?: LintExtensionBlueprintOptions): ExtensionBlueprintLintResult;
824
+ /**
825
+ * A fluent, single-extension test fixture returned by
826
+ * {@link createExtensionTestHarness}.
827
+ *
828
+ * Every method binds one of the standalone SDK testing helpers to the correct
829
+ * sub-registry of a single {@link ExtensionActivationResult}, so a package author
830
+ * never threads `activation.registrations` vs `activation.commands` vs
831
+ * `activation.hooks` (etc.) by hand — picking the wrong sub-registry is a common
832
+ * footgun that surfaces as a confusing `available: (none)` error. Methods do not
833
+ * use `this`; they close over the activation, so they remain safe to destructure
834
+ * (`const { runCommand, assertCommandContract } = harness;`).
835
+ *
836
+ * The `assert*` methods verify registration wiring (returning the matched
837
+ * registration); the `run*` methods invoke a registered surface through pm's real
838
+ * dispatch engine (returning its runtime result); {@link deactivate} runs the real
839
+ * teardown engine. The raw {@link activation} stays public as an escape hatch to
840
+ * the standalone helpers for any surface not covered by a convenience method.
841
+ */
842
+ export interface ExtensionTestHarness {
843
+ /** The in-memory extension module supplied to {@link createExtensionTestHarness}. */
844
+ readonly module: unknown;
845
+ /** Resolved extension name (manifest name, explicit override, or `"test-extension"`). */
846
+ readonly name: string;
847
+ /** Layer recorded for the in-memory extension (defaults to `"project"`). */
848
+ readonly layer: ExtensionLayer;
849
+ /** The underlying activation result; use it to reach standalone helpers directly. */
850
+ readonly activation: ExtensionActivationResult;
851
+ /** Bound {@link assertRegisteredCommandContract} over `activation.registrations`. */
852
+ assertCommandContract(expectation: RegisteredCommandContractExpectation): RegisteredCommandContractAssertion;
853
+ /** Bound {@link assertRegisteredFlags} over `activation.registrations`. */
854
+ assertFlags(expectation: RegisteredFlagsExpectation): RegisteredExtensionFlagDefinitions;
855
+ /** Bound {@link assertRegisteredItemField} over `activation.registrations`. */
856
+ assertItemField(expectation: RegisteredItemFieldExpectation): RegisteredItemFieldAssertion;
857
+ /** Bound {@link assertRegisteredItemType} over `activation.registrations`. */
858
+ assertItemType(expectation: RegisteredItemTypeExpectation): RegisteredItemTypeAssertion;
859
+ /** Bound {@link assertRegisteredHook} over `activation.hooks`. */
860
+ assertHook<TKind extends RegisteredHookKind>(expectation: RegisteredHookExpectation & {
861
+ kind: TKind;
862
+ }): ExtensionHookRegistry[(typeof HOOK_KIND_TO_REGISTRY_FIELD)[TKind]][number];
863
+ /** Bound {@link assertRegisteredCommandOverride} over `activation.commands`. */
864
+ assertCommandOverride(expectation: RegisteredCommandOverrideExpectation): RegisteredExtensionCommandOverride;
865
+ /** Bound {@link assertRegisteredParserOverride} over `activation.parsers`. */
866
+ assertParserOverride(expectation: RegisteredParserOverrideExpectation): RegisteredExtensionParserOverride;
867
+ /** Bound {@link assertRegisteredPreflightOverride} over `activation.preflight`. */
868
+ assertPreflightOverride(expectation?: RegisteredPreflightOverrideExpectation): RegisteredExtensionPreflightOverride;
869
+ /** Bound {@link assertRegisteredRendererOverride} over `activation.renderers`. */
870
+ assertRendererOverride(expectation: RegisteredRendererOverrideExpectation): RegisteredExtensionRendererOverride;
871
+ /** Bound {@link assertRegisteredServiceOverride} over `activation.services`. */
872
+ assertServiceOverride(expectation: RegisteredServiceOverrideExpectation): RegisteredExtensionServiceOverride;
873
+ /** Bound {@link assertRegisteredSearchProvider} over `activation.registrations`. */
874
+ assertSearchProvider(expectation: RegisteredSearchProviderExpectation): RegisteredExtensionSearchProvider;
875
+ /** Bound {@link assertRegisteredVectorStoreAdapter} over `activation.registrations`. */
876
+ assertVectorStoreAdapter(expectation: RegisteredVectorStoreAdapterExpectation): RegisteredExtensionVectorStoreAdapter;
877
+ /** Bound {@link assertRegisteredImporter} over `activation.registrations`. */
878
+ assertImporter(expectation: RegisteredImporterExpectation): RegisteredExtensionImporter;
879
+ /** Bound {@link assertRegisteredExporter} over `activation.registrations`. */
880
+ assertExporter(expectation: RegisteredExporterExpectation): RegisteredExtensionExporter;
881
+ /** Bound {@link assertRegisteredMigration} over `activation.registrations`. */
882
+ assertMigration(expectation: RegisteredMigrationExpectation): RegisteredExtensionSchemaMigrationDefinition;
883
+ /** Bound {@link assertExtensionCapabilityUsage} over the whole `activation`. */
884
+ assertCapabilityUsage(expectation: ExtensionCapabilityUsageExpectation): ExtensionCapabilityUsageAssertion;
885
+ /** Bound {@link runRegisteredCommandForTest} over `activation.commands`. */
886
+ runCommand(options: RunRegisteredCommandForTestOptions): Promise<CommandHandlerResult>;
887
+ /** Bound {@link runRegisteredHookForTest} over `activation.hooks`. */
888
+ runHook(options: RunRegisteredHookForTestOptions): Promise<string[]>;
889
+ /** Bound {@link runRegisteredCommandOverrideForTest} over `activation.commands`. */
890
+ runCommandOverride(context: CommandOverrideContext): Promise<CommandOverrideResult>;
891
+ /** Bound {@link runRegisteredParserOverrideForTest} over `activation.parsers`. */
892
+ runParserOverride(context: ParserOverrideContext): Promise<ParserOverrideResult>;
893
+ /** Bound {@link runRegisteredPreflightOverrideForTest} over `activation.preflight`. */
894
+ runPreflightOverride(context: PreflightOverrideContext): Promise<PreflightOverrideResult>;
895
+ /** Bound {@link runRegisteredRendererOverrideForTest} over `activation.renderers`. */
896
+ runRendererOverride(context: RendererOverrideContext): Promise<RendererOverrideResult>;
897
+ /** Bound {@link runRegisteredServiceOverrideForTest} over `activation.services`. */
898
+ runServiceOverride(context: ServiceOverrideContext): Promise<ServiceOverrideResult>;
899
+ /** Bound {@link runRegisteredSearchProviderForTest} over `activation.registrations`. */
900
+ runSearchProvider<Operation extends keyof SearchProviderOperationContexts>(options: {
901
+ provider: string;
902
+ operation: Operation;
903
+ context: SearchProviderOperationContexts[Operation];
904
+ }): Promise<SearchProviderOperationResults[Operation]>;
905
+ /** Bound {@link runRegisteredVectorStoreAdapterForTest} over `activation.registrations`. */
906
+ runVectorStoreAdapter<Operation extends keyof VectorStoreAdapterOperationContexts>(options: {
907
+ adapter: string;
908
+ operation: Operation;
909
+ context: VectorStoreAdapterOperationContexts[Operation];
910
+ }): Promise<VectorStoreAdapterOperationResults[Operation]>;
911
+ /** Bound {@link runRegisteredMigrationForTest} over `activation.registrations`. */
912
+ runMigration(options: RunRegisteredMigrationForTestOptions): Promise<unknown>;
913
+ /** Bound {@link runRegisteredImporterForTest} over the whole `activation`. */
914
+ runImporter(options: RunRegisteredImporterForTestOptions): Promise<CommandHandlerResult>;
915
+ /** Bound {@link runRegisteredExporterForTest} over the whole `activation`. */
916
+ runExporter(options: RunRegisteredExporterForTestOptions): Promise<CommandHandlerResult>;
917
+ /**
918
+ * Bound {@link deactivateExtensionForTest} — runs the real teardown engine for
919
+ * this harness's module, forwarding its resolved `name`/`layer`/`activation` so
920
+ * the skip-key matches and a never-initialized extension is not deactivated.
921
+ */
922
+ deactivate(options?: {
923
+ deactivateTimeoutMs?: number;
924
+ }): Promise<ExtensionDeactivationResult>;
925
+ }
926
+ /**
927
+ * Activate one in-memory extension module and return a fluent
928
+ * {@link ExtensionTestHarness} that binds every SDK testing helper to the right
929
+ * sub-registry of the resulting activation.
930
+ *
931
+ * This is the ergonomic capstone over the standalone helpers: instead of
932
+ * `activateExtensionForTest(module)` followed by repeatedly threading
933
+ * `activation.registrations` / `activation.commands` / `activation.hooks` into
934
+ * each `assertRegistered*` / `runRegistered*` call, an author writes
935
+ * `const ext = await createExtensionTestHarness(module, { capabilities });` and
936
+ * then `ext.assertCommandContract(...)`, `await ext.runCommand(...)`,
937
+ * `await ext.deactivate()` — never needing to know pm's internal registry layout.
938
+ *
939
+ * `name` and `layer` are resolved exactly as {@link activateExtensionForTest}
940
+ * resolves them, and captured so {@link ExtensionTestHarness.deactivate} forwards
941
+ * a matching skip-key. Activation runs pm's real validation/activation engine, so
942
+ * every bound helper exercises real wiring and dispatch — not mocks.
943
+ *
944
+ * Fails fast: if the module does not activate cleanly (e.g. a registration is
945
+ * dropped because the manifest omits the required capability), this throws a
946
+ * descriptive error listing each failure instead of returning a harness whose
947
+ * registries are empty — which would otherwise surface later as the confusing
948
+ * `available: (none)` assertion error this helper exists to prevent. Tests that
949
+ * deliberately exercise a *failed* activation should call
950
+ * {@link activateExtensionForTest} directly and inspect `activation.failed`.
951
+ */
952
+ export declare function createExtensionTestHarness(module: unknown, options?: ActivateExtensionForTestOptions): Promise<ExtensionTestHarness>;