@unbrained/pm-cli 2026.6.23 → 2026.6.24

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 (391) hide show
  1. package/CHANGELOG.md +28 -0
  2. package/dist/cli/commands/extension/scaffold.js +142 -54
  3. package/dist/cli/commands/extension/scaffold.js.map +1 -1
  4. package/dist/cli/commands/extension.js +10 -3
  5. package/dist/cli/commands/extension.js.map +1 -1
  6. package/dist/cli-bundle/chunks/activity-54TXGJ2T.js +18 -0
  7. package/dist/cli-bundle/chunks/{activity-H2LMOSSW.js → activity-N7RVTLBQ.js} +11 -11
  8. package/dist/cli-bundle/chunks/{aggregate-R725FC3S.js → aggregate-63NWNIBR.js} +10 -10
  9. package/dist/cli-bundle/chunks/{aggregate-EGJLZQBI.js → aggregate-YHCYX2EV.js} +10 -10
  10. package/dist/cli-bundle/chunks/{append-5J345QGU.js → append-PUKREFV5.js} +8 -8
  11. package/dist/cli-bundle/chunks/{append-O5HPBMRN.js → append-VLQQDHMJ.js} +8 -8
  12. package/dist/cli-bundle/chunks/{chunk-3VY3YQO6.js → chunk-2WCYE3IF.js} +2 -2
  13. package/dist/cli-bundle/chunks/{chunk-WZQWHN4R.js → chunk-3BKH2CL3.js} +3 -3
  14. package/dist/cli-bundle/chunks/{chunk-7UGEAPRY.js → chunk-4XDGYFHL.js} +9 -9
  15. package/dist/cli-bundle/chunks/{chunk-H4IIJDE4.js → chunk-5BBEWX6C.js} +2 -2
  16. package/dist/cli-bundle/chunks/{chunk-2CKH2LMV.js → chunk-5S4ZGDB2.js} +2 -2
  17. package/dist/cli-bundle/chunks/{chunk-4KD54S3Z.js → chunk-6EBNFQOR.js} +9 -9
  18. package/dist/cli-bundle/chunks/{chunk-QL5RVYOA.js → chunk-6EL7SW5C.js} +8 -8
  19. package/dist/cli-bundle/chunks/{chunk-MJTINN54.js → chunk-6W3Y65PL.js} +10 -10
  20. package/dist/cli-bundle/chunks/{chunk-U2Z5YUSO.js → chunk-A66VYUOV.js} +7 -7
  21. package/dist/cli-bundle/chunks/{chunk-Q2KNGP7C.js → chunk-ABYCA5VX.js} +7 -7
  22. package/dist/cli-bundle/chunks/{chunk-VFAQ4LMN.js → chunk-AEACLRVH.js} +5 -5
  23. package/dist/cli-bundle/chunks/{chunk-7AUB5HNA.js → chunk-ALKFCIIB.js} +7 -7
  24. package/dist/cli-bundle/chunks/{chunk-H2IP4QLJ.js → chunk-ALQKV6U7.js} +9 -9
  25. package/dist/cli-bundle/chunks/{chunk-G6N5VEOK.js → chunk-AYPQUFCX.js} +3 -3
  26. package/dist/cli-bundle/chunks/{chunk-7MRQ4HMK.js → chunk-B74BP6IS.js} +2 -2
  27. package/dist/cli-bundle/chunks/{chunk-7SV63ZHD.js → chunk-BFFO3AIB.js} +8 -8
  28. package/dist/cli-bundle/chunks/{chunk-NCVCO3NZ.js → chunk-C4C3EJCJ.js} +3 -3
  29. package/dist/cli-bundle/chunks/{chunk-UVC5LOR7.js → chunk-CG3KP6I5.js} +4 -4
  30. package/dist/cli-bundle/chunks/{chunk-FXR67XVQ.js → chunk-CZIFFMZI.js} +2 -2
  31. package/dist/cli-bundle/chunks/{chunk-XVF4YARA.js → chunk-DTABLLVE.js} +3 -3
  32. package/dist/cli-bundle/chunks/{chunk-7XGQXHFB.js → chunk-EOGBMLCE.js} +3 -3
  33. package/dist/cli-bundle/chunks/{chunk-TQZH6OD6.js → chunk-EWRSXOIZ.js} +7 -7
  34. package/dist/cli-bundle/chunks/{chunk-MJTSZKK5.js → chunk-EYPINTFR.js} +131 -97
  35. package/dist/cli-bundle/chunks/chunk-EYPINTFR.js.map +7 -0
  36. package/dist/cli-bundle/chunks/{chunk-IB3GYLQE.js → chunk-F32L4HR6.js} +3 -3
  37. package/dist/cli-bundle/chunks/{chunk-SBQTAVJZ.js → chunk-F4BNR2IN.js} +3 -3
  38. package/dist/cli-bundle/chunks/{chunk-S2RUQSX2.js → chunk-FBLT6WGK.js} +2 -2
  39. package/dist/cli-bundle/chunks/{chunk-2T3JG6V4.js → chunk-FMWW2JDU.js} +2 -2
  40. package/dist/cli-bundle/chunks/{chunk-W72GHSJE.js → chunk-GDUMGZK3.js} +7 -7
  41. package/dist/cli-bundle/chunks/{chunk-Y4SUQQYH.js → chunk-GQYJEEFX.js} +3 -3
  42. package/dist/cli-bundle/chunks/{chunk-AONIHR2C.js → chunk-HBAEFWX3.js} +12 -12
  43. package/dist/cli-bundle/chunks/{chunk-YUDJD3XO.js → chunk-HC2S36NB.js} +5 -5
  44. package/dist/cli-bundle/chunks/{chunk-DT5LPYOD.js → chunk-HZF5RLKX.js} +5 -5
  45. package/dist/cli-bundle/chunks/{chunk-P77P2ILI.js → chunk-I6QMJ2XT.js} +2 -2
  46. package/dist/cli-bundle/chunks/{chunk-ZRK4O56R.js → chunk-IAP5KYBQ.js} +13 -13
  47. package/dist/cli-bundle/chunks/{chunk-MVKFOLLM.js → chunk-INPHFO33.js} +119 -49
  48. package/dist/cli-bundle/chunks/chunk-INPHFO33.js.map +7 -0
  49. package/dist/cli-bundle/chunks/{chunk-SKH7OGE5.js → chunk-IOT6WRL5.js} +2 -2
  50. package/dist/cli-bundle/chunks/{chunk-66MEDTUD.js → chunk-IXAZI443.js} +2 -2
  51. package/dist/cli-bundle/chunks/{chunk-4BHT5VDC.js → chunk-J3NMWFIN.js} +2 -2
  52. package/dist/cli-bundle/chunks/{chunk-HFFUQR73.js → chunk-J7I4C5ZB.js} +5 -5
  53. package/dist/cli-bundle/chunks/{chunk-G6PYHBBR.js → chunk-JKL6HRMV.js} +12 -7
  54. package/dist/cli-bundle/chunks/chunk-JKL6HRMV.js.map +7 -0
  55. package/dist/cli-bundle/chunks/{chunk-NK3UPBVG.js → chunk-JPJDP4VU.js} +2 -2
  56. package/dist/cli-bundle/chunks/{chunk-T5472OMV.js → chunk-JV27C7OZ.js} +3 -3
  57. package/dist/cli-bundle/chunks/{chunk-ZQ3ZVXX2.js → chunk-KIEAK7YE.js} +2 -2
  58. package/dist/cli-bundle/chunks/{chunk-5UVVASSA.js → chunk-KJZOSF7J.js} +6 -6
  59. package/dist/cli-bundle/chunks/{chunk-CIIK67GW.js → chunk-KKX4Z2SE.js} +4 -4
  60. package/dist/cli-bundle/chunks/{chunk-KQMUV6LX.js → chunk-L7UXKP2I.js} +13 -8
  61. package/dist/cli-bundle/chunks/chunk-L7UXKP2I.js.map +1 -0
  62. package/dist/cli-bundle/chunks/{chunk-GAJVRGGA.js → chunk-LNEDHJNQ.js} +12 -12
  63. package/dist/cli-bundle/chunks/{chunk-BB6MDVNQ.js → chunk-LU36E6GU.js} +8 -8
  64. package/dist/cli-bundle/chunks/{chunk-CE5P2NQR.js → chunk-M6TUBOGW.js} +5 -5
  65. package/dist/cli-bundle/chunks/{chunk-55ISXAQH.js → chunk-MEXZ5XUM.js} +3 -3
  66. package/dist/cli-bundle/chunks/{chunk-AD3A7ZD6.js → chunk-MWMHZOZZ.js} +8 -8
  67. package/dist/cli-bundle/chunks/{chunk-46G6RSB6.js → chunk-N5B6WZC5.js} +8 -8
  68. package/dist/cli-bundle/chunks/{chunk-C5AOG6D2.js → chunk-NJ73ALW2.js} +120 -50
  69. package/dist/cli-bundle/chunks/chunk-NJ73ALW2.js.map +1 -0
  70. package/dist/cli-bundle/chunks/{chunk-S26C36QC.js → chunk-NVXGVEFD.js} +2 -2
  71. package/dist/cli-bundle/chunks/{chunk-2BFPAUAF.js → chunk-OF7V47P3.js} +2 -2
  72. package/dist/cli-bundle/chunks/{chunk-IPKJ6B36.js → chunk-OHDQNKJB.js} +6 -6
  73. package/dist/cli-bundle/chunks/{chunk-2RDVQEWV.js → chunk-OQ2E64FH.js} +4 -4
  74. package/dist/cli-bundle/chunks/{chunk-5VOINNKT.js → chunk-PEL2NLQE.js} +2 -2
  75. package/dist/cli-bundle/chunks/{chunk-SKN7LC5W.js → chunk-PRVTGX64.js} +5 -5
  76. package/dist/cli-bundle/chunks/{chunk-34EONI5F.js → chunk-QOUOMPHO.js} +2 -2
  77. package/dist/cli-bundle/chunks/{chunk-QH3PJYON.js → chunk-RAWA3Y7O.js} +10 -10
  78. package/dist/cli-bundle/chunks/{chunk-LRKKONT2.js → chunk-RRP6D345.js} +9 -9
  79. package/dist/cli-bundle/chunks/{chunk-FIGAZ4Y7.js → chunk-SKC4UTRP.js} +3 -3
  80. package/dist/cli-bundle/chunks/{chunk-CKGNPJAG.js → chunk-SMXSDY7J.js} +2 -2
  81. package/dist/cli-bundle/chunks/{chunk-KFWBJPSG.js → chunk-SUREE24M.js} +5 -5
  82. package/dist/cli-bundle/chunks/{chunk-O6LLO73I.js → chunk-TIM4OD74.js} +2 -2
  83. package/dist/cli-bundle/chunks/{chunk-YDEXO24S.js → chunk-TKPP4GOO.js} +2 -2
  84. package/dist/cli-bundle/chunks/{chunk-T72AZDBA.js → chunk-TSI32UEL.js} +3 -3
  85. package/dist/cli-bundle/chunks/{chunk-7K2XXO4I.js → chunk-UACWNBL2.js} +5 -5
  86. package/dist/cli-bundle/chunks/{chunk-WBRKK5QR.js → chunk-V4UYNSEM.js} +3 -3
  87. package/dist/cli-bundle/chunks/{chunk-M4T5DXD5.js → chunk-VFJYVXHL.js} +7 -7
  88. package/dist/cli-bundle/chunks/{chunk-UELRKQQU.js → chunk-VSAABFGQ.js} +125 -98
  89. package/dist/cli-bundle/chunks/chunk-VSAABFGQ.js.map +1 -0
  90. package/dist/cli-bundle/chunks/{chunk-WM5ZVBPE.js → chunk-WB5BYQMF.js} +4 -4
  91. package/dist/cli-bundle/chunks/{chunk-SR3EKWZG.js → chunk-XVYKWZNL.js} +8 -8
  92. package/dist/cli-bundle/chunks/{chunk-JR2LV3M4.js → chunk-XXKV4UWE.js} +13 -13
  93. package/dist/cli-bundle/chunks/{chunk-2A34E3BA.js → chunk-YV2OSAMS.js} +2 -2
  94. package/dist/cli-bundle/chunks/{chunk-VAYA4XFX.js → chunk-ZLWRPBOW.js} +3 -3
  95. package/dist/cli-bundle/chunks/{chunk-YJ3SUEPD.js → chunk-ZV7IQ23N.js} +2 -2
  96. package/dist/cli-bundle/chunks/{claim-4KHAA2RN.js → claim-FZZZCAY6.js} +10 -10
  97. package/dist/cli-bundle/chunks/{claim-CSPJFLNH.js → claim-XK5QBZE3.js} +10 -10
  98. package/dist/cli-bundle/chunks/close-JEBZXONN.js +15 -0
  99. package/dist/cli-bundle/chunks/{close-W56IOGYG.js → close-QHMVWM7M.js} +8 -8
  100. package/dist/cli-bundle/chunks/{close-many-BX5DCSVV.js → close-many-OIXJE2JZ.js} +15 -15
  101. package/dist/cli-bundle/chunks/{close-many-TQU5F4E4.js → close-many-SUU5BS2C.js} +15 -15
  102. package/dist/cli-bundle/chunks/{comments-U5KUC4EU.js → comments-5YM62D75.js} +10 -10
  103. package/dist/cli-bundle/chunks/{comments-VRECH75R.js → comments-RH3IBIRH.js} +10 -10
  104. package/dist/cli-bundle/chunks/{config-D3OKQO52.js → config-NCNNWF6R.js} +8 -8
  105. package/dist/cli-bundle/chunks/{config-MMJA4LLK.js → config-SW3U7XP2.js} +8 -8
  106. package/dist/cli-bundle/chunks/{context-DHLVPXN3.js → context-55VEOYI3.js} +13 -13
  107. package/dist/cli-bundle/chunks/{context-BLBD3PUB.js → context-5LB7UGKE.js} +13 -13
  108. package/dist/cli-bundle/chunks/{contracts-XGVMMPC5.js → contracts-JXFGBOYT.js} +4 -4
  109. package/dist/cli-bundle/chunks/{contracts-C3SZCXXG.js → contracts-SY6PDFIK.js} +4 -4
  110. package/dist/cli-bundle/chunks/{copy-5D5DX3VK.js → copy-IEDBJOOX.js} +7 -7
  111. package/dist/cli-bundle/chunks/{copy-HHL3K4QP.js → copy-N3GE6FYS.js} +7 -7
  112. package/dist/cli-bundle/chunks/create-CLSCHGJJ.js +30 -0
  113. package/dist/cli-bundle/chunks/{create-IXY43O4H.js → create-O4VONGPG.js} +14 -14
  114. package/dist/cli-bundle/chunks/{delete-IBUR3M42.js → delete-724EQ6OS.js} +7 -7
  115. package/dist/cli-bundle/chunks/{delete-QQC2FGUH.js → delete-LPEIF7RU.js} +7 -7
  116. package/dist/cli-bundle/chunks/{deps-VTPO4BSE.js → deps-RSBU4SIU.js} +7 -7
  117. package/dist/cli-bundle/chunks/{deps-KWKRHXIN.js → deps-T3Y6Y7RT.js} +7 -7
  118. package/dist/cli-bundle/chunks/{docs-7CHFHXLN.js → docs-75ZLCO3G.js} +9 -9
  119. package/dist/cli-bundle/chunks/{docs-IIO3FEUO.js → docs-IFS7HZPP.js} +9 -9
  120. package/dist/cli-bundle/chunks/{eval-IO7LREOL.js → eval-L2KD7W3M.js} +12 -12
  121. package/dist/cli-bundle/chunks/{eval-CEYYEPSX.js → eval-QGR7JCQO.js} +12 -12
  122. package/dist/cli-bundle/chunks/{extension-KCPUWSY2.js → extension-3JYWJ5K2.js} +6 -6
  123. package/dist/cli-bundle/chunks/{extension-UTTQDUYI.js → extension-YQF4CPIR.js} +6 -6
  124. package/dist/cli-bundle/chunks/{files-Z2HHEFGP.js → files-5BQWDRDT.js} +9 -9
  125. package/dist/cli-bundle/chunks/{files-TPUL6KWB.js → files-EPEJMJHQ.js} +9 -9
  126. package/dist/cli-bundle/chunks/{focus-JVJCGC2D.js → focus-DQVJAPOE.js} +8 -8
  127. package/dist/cli-bundle/chunks/{focus-YRNNH7IP.js → focus-RWGKD76E.js} +8 -8
  128. package/dist/cli-bundle/chunks/{gc-O5GUO3SU.js → gc-BEJMQT64.js} +3 -3
  129. package/dist/cli-bundle/chunks/{gc-PYVVEELM.js → gc-JEFQDJPA.js} +3 -3
  130. package/dist/cli-bundle/chunks/{get-X4O3HBEY.js → get-LQG6PEVG.js} +11 -11
  131. package/dist/cli-bundle/chunks/{get-ENLTEGTX.js → get-WVN75H42.js} +11 -11
  132. package/dist/cli-bundle/chunks/{health-BOTB7YSU.js → health-JJJOY7DJ.js} +14 -14
  133. package/dist/cli-bundle/chunks/{health-5EXTY44Q.js → health-P67NZ6TT.js} +14 -14
  134. package/dist/cli-bundle/chunks/history-ALTM2RRP.js +20 -0
  135. package/dist/cli-bundle/chunks/{history-AJTXLT6S.js → history-RUKPKNY7.js} +10 -10
  136. package/dist/cli-bundle/chunks/{history-compact-43OOUAWD.js → history-compact-NQ7VPRVT.js} +12 -12
  137. package/dist/cli-bundle/chunks/{history-compact-46MRHW3I.js → history-compact-ZAOWR7GD.js} +12 -12
  138. package/dist/cli-bundle/chunks/history-redact-5YGLWUDH.js +21 -0
  139. package/dist/cli-bundle/chunks/{history-redact-KUUUVUFM.js → history-redact-YY4XYVEP.js} +11 -11
  140. package/dist/cli-bundle/chunks/{history-repair-VQTYOSRS.js → history-repair-EHL4ODQY.js} +12 -12
  141. package/dist/cli-bundle/chunks/{history-repair-B5PZBOPU.js → history-repair-YSQH6SY6.js} +12 -12
  142. package/dist/cli-bundle/chunks/init-C4CRHW22.js +21 -0
  143. package/dist/cli-bundle/chunks/{init-BNLVFPRG.js → init-HBFGYS66.js} +11 -11
  144. package/dist/cli-bundle/chunks/{learnings-XSGX52S7.js → learnings-J555ZFPD.js} +10 -10
  145. package/dist/cli-bundle/chunks/{learnings-MUUU5KMC.js → learnings-KFQO7GEZ.js} +10 -10
  146. package/dist/cli-bundle/chunks/{list-32U7BSKE.js → list-C7R33MD5.js} +10 -10
  147. package/dist/cli-bundle/chunks/{list-ZEEOHLTQ.js → list-DSN6UNFB.js} +10 -10
  148. package/dist/cli-bundle/chunks/{notes-NJ45OZGF.js → notes-V4VNIQL4.js} +10 -10
  149. package/dist/cli-bundle/chunks/{notes-OHU25L3M.js → notes-VYJFN2A3.js} +10 -10
  150. package/dist/cli-bundle/chunks/{plan-KQA7CAKI.js → plan-DHRSVSHR.js} +14 -14
  151. package/dist/cli-bundle/chunks/{plan-LWWAEV5Y.js → plan-RBHQ5PO7.js} +14 -14
  152. package/dist/cli-bundle/chunks/{register-list-query-DDCHPONM.js → register-list-query-CCMHGZTF.js} +19 -19
  153. package/dist/cli-bundle/chunks/{register-list-query-YNPBVIKM.js → register-list-query-OM3E2KMY.js} +19 -19
  154. package/dist/cli-bundle/chunks/{register-mutation-7ALWDDAX.js → register-mutation-N3CDEGZU.js} +33 -33
  155. package/dist/cli-bundle/chunks/{register-mutation-LAVKYY63.js → register-mutation-UXTTWL6N.js} +33 -33
  156. package/dist/cli-bundle/chunks/{register-operations-U5JAW3WE.js → register-operations-R2FLOCRI.js} +32 -32
  157. package/dist/cli-bundle/chunks/{register-operations-R4VOQ6EF.js → register-operations-UDIFMQKD.js} +32 -32
  158. package/dist/cli-bundle/chunks/{register-setup-RCRUHMSZ.js → register-setup-G5LTSFYK.js} +17 -17
  159. package/dist/cli-bundle/chunks/{register-setup-KBXQDCXE.js → register-setup-TWHKICM2.js} +17 -17
  160. package/dist/cli-bundle/chunks/{restore-6K53WOWO.js → restore-LL2WLEDG.js} +11 -11
  161. package/dist/cli-bundle/chunks/restore-LQHXBAY5.js +19 -0
  162. package/dist/cli-bundle/chunks/{scheduling-shortcuts-OQVJXG3M.js → scheduling-shortcuts-255GI3BU.js} +14 -14
  163. package/dist/cli-bundle/chunks/{scheduling-shortcuts-NJ5UVJFB.js → scheduling-shortcuts-M4H2ZI64.js} +14 -14
  164. package/dist/cli-bundle/chunks/{schema-RBTJ2YXW.js → schema-C6QA367T.js} +9 -9
  165. package/dist/cli-bundle/chunks/{schema-MNTAVQCY.js → schema-QO5I4FBL.js} +9 -9
  166. package/dist/cli-bundle/chunks/{search-6HOIVZDU.js → search-2EI6EAXH.js} +12 -12
  167. package/dist/cli-bundle/chunks/{search-ZWYEMASC.js → search-QBFBLQRO.js} +12 -12
  168. package/dist/cli-bundle/chunks/{stats-R5OAJVZK.js → stats-TCW2SZQG.js} +8 -8
  169. package/dist/cli-bundle/chunks/{stats-FS742AMA.js → stats-TKC6CAKB.js} +8 -8
  170. package/dist/cli-bundle/chunks/{telemetry-FWEXSJLQ.js → telemetry-BT2VSWU2.js} +4 -4
  171. package/dist/cli-bundle/chunks/{telemetry-7DIGDQUO.js → telemetry-LQ6FRTUT.js} +4 -4
  172. package/dist/cli-bundle/chunks/{test-NZF7OT2F.js → test-NV2DRPUS.js} +16 -16
  173. package/dist/cli-bundle/chunks/test-WA6RZGM2.js +36 -0
  174. package/dist/cli-bundle/chunks/{test-all-KL7TLMJF.js → test-all-DZ76VTPQ.js} +16 -16
  175. package/dist/cli-bundle/chunks/{test-all-DPN62TX7.js → test-all-REW67LXT.js} +16 -16
  176. package/dist/cli-bundle/chunks/{test-runs-C6CFIVOS.js → test-runs-FQ5WNQLP.js} +5 -5
  177. package/dist/cli-bundle/chunks/{test-runs-IAJDL6CA.js → test-runs-PX73DMMI.js} +5 -5
  178. package/dist/cli-bundle/chunks/update-BSKMQOYH.js +28 -0
  179. package/dist/cli-bundle/chunks/update-FIGYNQ2I.js +24 -0
  180. package/dist/cli-bundle/chunks/{update-many-YEH2DQL6.js → update-many-2ILP6E4Y.js} +23 -23
  181. package/dist/cli-bundle/chunks/{update-many-MUTIOAP3.js → update-many-Q5ZEI64S.js} +23 -23
  182. package/dist/cli-bundle/chunks/{upgrade-UBNLBZNR.js → upgrade-DHL74PQH.js} +6 -6
  183. package/dist/cli-bundle/chunks/{upgrade-HYJ3SWWU.js → upgrade-FOZKQTQF.js} +6 -6
  184. package/dist/cli-bundle/chunks/{validate-W5V5ZGQX.js → validate-54SYJ7QW.js} +21 -21
  185. package/dist/cli-bundle/chunks/{validate-6QWQVCX2.js → validate-HYZNIB6W.js} +21 -21
  186. package/dist/cli-bundle/main.js +17 -17
  187. package/dist/core/extensions/loader.d.ts +1 -2
  188. package/dist/core/extensions/loader.js +40 -103
  189. package/dist/core/extensions/loader.js.map +1 -1
  190. package/dist/core/extensions/version-compat.d.ts +107 -0
  191. package/dist/core/extensions/version-compat.js +130 -0
  192. package/dist/core/extensions/version-compat.js.map +1 -0
  193. package/dist/sdk/compose.d.ts +341 -2
  194. package/dist/sdk/compose.js +426 -5
  195. package/dist/sdk/compose.js.map +1 -1
  196. package/dist/sdk/define.d.ts +15 -14
  197. package/dist/sdk/define.js +6 -7
  198. package/dist/sdk/define.js.map +1 -1
  199. package/dist/sdk/index.d.ts +1 -1
  200. package/dist/sdk/index.js +3 -3
  201. package/dist/sdk/index.js.map +1 -1
  202. package/dist/sdk/testing.d.ts +75 -2
  203. package/dist/sdk/testing.js +100 -3
  204. package/dist/sdk/testing.js.map +1 -1
  205. package/docs/EXTENSIONS.md +11 -10
  206. package/docs/SDK.md +212 -12
  207. package/package.json +1 -1
  208. package/dist/cli-bundle/chunks/activity-XUZ2AHCW.js +0 -18
  209. package/dist/cli-bundle/chunks/chunk-C5AOG6D2.js.map +0 -1
  210. package/dist/cli-bundle/chunks/chunk-G6PYHBBR.js.map +0 -7
  211. package/dist/cli-bundle/chunks/chunk-KQMUV6LX.js.map +0 -1
  212. package/dist/cli-bundle/chunks/chunk-MJTSZKK5.js.map +0 -7
  213. package/dist/cli-bundle/chunks/chunk-MVKFOLLM.js.map +0 -7
  214. package/dist/cli-bundle/chunks/chunk-UELRKQQU.js.map +0 -1
  215. package/dist/cli-bundle/chunks/close-A3EMKBBY.js +0 -15
  216. package/dist/cli-bundle/chunks/create-QVGFYA2X.js +0 -30
  217. package/dist/cli-bundle/chunks/history-AK3E5Z3C.js +0 -20
  218. package/dist/cli-bundle/chunks/history-redact-TWIYQV5J.js +0 -21
  219. package/dist/cli-bundle/chunks/init-RCRKW5PL.js +0 -21
  220. package/dist/cli-bundle/chunks/restore-2ZKT6UDC.js +0 -19
  221. package/dist/cli-bundle/chunks/test-QJXLKV26.js +0 -36
  222. package/dist/cli-bundle/chunks/update-2XCQNOD6.js +0 -28
  223. package/dist/cli-bundle/chunks/update-IWUCXVH2.js +0 -24
  224. /package/dist/cli-bundle/chunks/{activity-XUZ2AHCW.js.map → activity-54TXGJ2T.js.map} +0 -0
  225. /package/dist/cli-bundle/chunks/{activity-H2LMOSSW.js.map → activity-N7RVTLBQ.js.map} +0 -0
  226. /package/dist/cli-bundle/chunks/{aggregate-R725FC3S.js.map → aggregate-63NWNIBR.js.map} +0 -0
  227. /package/dist/cli-bundle/chunks/{aggregate-EGJLZQBI.js.map → aggregate-YHCYX2EV.js.map} +0 -0
  228. /package/dist/cli-bundle/chunks/{append-5J345QGU.js.map → append-PUKREFV5.js.map} +0 -0
  229. /package/dist/cli-bundle/chunks/{append-O5HPBMRN.js.map → append-VLQQDHMJ.js.map} +0 -0
  230. /package/dist/cli-bundle/chunks/{chunk-3VY3YQO6.js.map → chunk-2WCYE3IF.js.map} +0 -0
  231. /package/dist/cli-bundle/chunks/{chunk-WZQWHN4R.js.map → chunk-3BKH2CL3.js.map} +0 -0
  232. /package/dist/cli-bundle/chunks/{chunk-7UGEAPRY.js.map → chunk-4XDGYFHL.js.map} +0 -0
  233. /package/dist/cli-bundle/chunks/{chunk-H4IIJDE4.js.map → chunk-5BBEWX6C.js.map} +0 -0
  234. /package/dist/cli-bundle/chunks/{chunk-2CKH2LMV.js.map → chunk-5S4ZGDB2.js.map} +0 -0
  235. /package/dist/cli-bundle/chunks/{chunk-4KD54S3Z.js.map → chunk-6EBNFQOR.js.map} +0 -0
  236. /package/dist/cli-bundle/chunks/{chunk-QL5RVYOA.js.map → chunk-6EL7SW5C.js.map} +0 -0
  237. /package/dist/cli-bundle/chunks/{chunk-MJTINN54.js.map → chunk-6W3Y65PL.js.map} +0 -0
  238. /package/dist/cli-bundle/chunks/{chunk-U2Z5YUSO.js.map → chunk-A66VYUOV.js.map} +0 -0
  239. /package/dist/cli-bundle/chunks/{chunk-Q2KNGP7C.js.map → chunk-ABYCA5VX.js.map} +0 -0
  240. /package/dist/cli-bundle/chunks/{chunk-VFAQ4LMN.js.map → chunk-AEACLRVH.js.map} +0 -0
  241. /package/dist/cli-bundle/chunks/{chunk-7AUB5HNA.js.map → chunk-ALKFCIIB.js.map} +0 -0
  242. /package/dist/cli-bundle/chunks/{chunk-H2IP4QLJ.js.map → chunk-ALQKV6U7.js.map} +0 -0
  243. /package/dist/cli-bundle/chunks/{chunk-G6N5VEOK.js.map → chunk-AYPQUFCX.js.map} +0 -0
  244. /package/dist/cli-bundle/chunks/{chunk-7MRQ4HMK.js.map → chunk-B74BP6IS.js.map} +0 -0
  245. /package/dist/cli-bundle/chunks/{chunk-7SV63ZHD.js.map → chunk-BFFO3AIB.js.map} +0 -0
  246. /package/dist/cli-bundle/chunks/{chunk-NCVCO3NZ.js.map → chunk-C4C3EJCJ.js.map} +0 -0
  247. /package/dist/cli-bundle/chunks/{chunk-UVC5LOR7.js.map → chunk-CG3KP6I5.js.map} +0 -0
  248. /package/dist/cli-bundle/chunks/{chunk-FXR67XVQ.js.map → chunk-CZIFFMZI.js.map} +0 -0
  249. /package/dist/cli-bundle/chunks/{chunk-XVF4YARA.js.map → chunk-DTABLLVE.js.map} +0 -0
  250. /package/dist/cli-bundle/chunks/{chunk-7XGQXHFB.js.map → chunk-EOGBMLCE.js.map} +0 -0
  251. /package/dist/cli-bundle/chunks/{chunk-TQZH6OD6.js.map → chunk-EWRSXOIZ.js.map} +0 -0
  252. /package/dist/cli-bundle/chunks/{chunk-IB3GYLQE.js.map → chunk-F32L4HR6.js.map} +0 -0
  253. /package/dist/cli-bundle/chunks/{chunk-SBQTAVJZ.js.map → chunk-F4BNR2IN.js.map} +0 -0
  254. /package/dist/cli-bundle/chunks/{chunk-S2RUQSX2.js.map → chunk-FBLT6WGK.js.map} +0 -0
  255. /package/dist/cli-bundle/chunks/{chunk-2T3JG6V4.js.map → chunk-FMWW2JDU.js.map} +0 -0
  256. /package/dist/cli-bundle/chunks/{chunk-W72GHSJE.js.map → chunk-GDUMGZK3.js.map} +0 -0
  257. /package/dist/cli-bundle/chunks/{chunk-Y4SUQQYH.js.map → chunk-GQYJEEFX.js.map} +0 -0
  258. /package/dist/cli-bundle/chunks/{chunk-AONIHR2C.js.map → chunk-HBAEFWX3.js.map} +0 -0
  259. /package/dist/cli-bundle/chunks/{chunk-YUDJD3XO.js.map → chunk-HC2S36NB.js.map} +0 -0
  260. /package/dist/cli-bundle/chunks/{chunk-DT5LPYOD.js.map → chunk-HZF5RLKX.js.map} +0 -0
  261. /package/dist/cli-bundle/chunks/{chunk-P77P2ILI.js.map → chunk-I6QMJ2XT.js.map} +0 -0
  262. /package/dist/cli-bundle/chunks/{chunk-ZRK4O56R.js.map → chunk-IAP5KYBQ.js.map} +0 -0
  263. /package/dist/cli-bundle/chunks/{chunk-SKH7OGE5.js.map → chunk-IOT6WRL5.js.map} +0 -0
  264. /package/dist/cli-bundle/chunks/{chunk-66MEDTUD.js.map → chunk-IXAZI443.js.map} +0 -0
  265. /package/dist/cli-bundle/chunks/{chunk-4BHT5VDC.js.map → chunk-J3NMWFIN.js.map} +0 -0
  266. /package/dist/cli-bundle/chunks/{chunk-HFFUQR73.js.map → chunk-J7I4C5ZB.js.map} +0 -0
  267. /package/dist/cli-bundle/chunks/{chunk-NK3UPBVG.js.map → chunk-JPJDP4VU.js.map} +0 -0
  268. /package/dist/cli-bundle/chunks/{chunk-T5472OMV.js.map → chunk-JV27C7OZ.js.map} +0 -0
  269. /package/dist/cli-bundle/chunks/{chunk-ZQ3ZVXX2.js.map → chunk-KIEAK7YE.js.map} +0 -0
  270. /package/dist/cli-bundle/chunks/{chunk-5UVVASSA.js.map → chunk-KJZOSF7J.js.map} +0 -0
  271. /package/dist/cli-bundle/chunks/{chunk-CIIK67GW.js.map → chunk-KKX4Z2SE.js.map} +0 -0
  272. /package/dist/cli-bundle/chunks/{chunk-GAJVRGGA.js.map → chunk-LNEDHJNQ.js.map} +0 -0
  273. /package/dist/cli-bundle/chunks/{chunk-BB6MDVNQ.js.map → chunk-LU36E6GU.js.map} +0 -0
  274. /package/dist/cli-bundle/chunks/{chunk-CE5P2NQR.js.map → chunk-M6TUBOGW.js.map} +0 -0
  275. /package/dist/cli-bundle/chunks/{chunk-55ISXAQH.js.map → chunk-MEXZ5XUM.js.map} +0 -0
  276. /package/dist/cli-bundle/chunks/{chunk-AD3A7ZD6.js.map → chunk-MWMHZOZZ.js.map} +0 -0
  277. /package/dist/cli-bundle/chunks/{chunk-46G6RSB6.js.map → chunk-N5B6WZC5.js.map} +0 -0
  278. /package/dist/cli-bundle/chunks/{chunk-S26C36QC.js.map → chunk-NVXGVEFD.js.map} +0 -0
  279. /package/dist/cli-bundle/chunks/{chunk-2BFPAUAF.js.map → chunk-OF7V47P3.js.map} +0 -0
  280. /package/dist/cli-bundle/chunks/{chunk-IPKJ6B36.js.map → chunk-OHDQNKJB.js.map} +0 -0
  281. /package/dist/cli-bundle/chunks/{chunk-2RDVQEWV.js.map → chunk-OQ2E64FH.js.map} +0 -0
  282. /package/dist/cli-bundle/chunks/{chunk-5VOINNKT.js.map → chunk-PEL2NLQE.js.map} +0 -0
  283. /package/dist/cli-bundle/chunks/{chunk-SKN7LC5W.js.map → chunk-PRVTGX64.js.map} +0 -0
  284. /package/dist/cli-bundle/chunks/{chunk-34EONI5F.js.map → chunk-QOUOMPHO.js.map} +0 -0
  285. /package/dist/cli-bundle/chunks/{chunk-QH3PJYON.js.map → chunk-RAWA3Y7O.js.map} +0 -0
  286. /package/dist/cli-bundle/chunks/{chunk-LRKKONT2.js.map → chunk-RRP6D345.js.map} +0 -0
  287. /package/dist/cli-bundle/chunks/{chunk-FIGAZ4Y7.js.map → chunk-SKC4UTRP.js.map} +0 -0
  288. /package/dist/cli-bundle/chunks/{chunk-CKGNPJAG.js.map → chunk-SMXSDY7J.js.map} +0 -0
  289. /package/dist/cli-bundle/chunks/{chunk-KFWBJPSG.js.map → chunk-SUREE24M.js.map} +0 -0
  290. /package/dist/cli-bundle/chunks/{chunk-O6LLO73I.js.map → chunk-TIM4OD74.js.map} +0 -0
  291. /package/dist/cli-bundle/chunks/{chunk-YDEXO24S.js.map → chunk-TKPP4GOO.js.map} +0 -0
  292. /package/dist/cli-bundle/chunks/{chunk-T72AZDBA.js.map → chunk-TSI32UEL.js.map} +0 -0
  293. /package/dist/cli-bundle/chunks/{chunk-7K2XXO4I.js.map → chunk-UACWNBL2.js.map} +0 -0
  294. /package/dist/cli-bundle/chunks/{chunk-WBRKK5QR.js.map → chunk-V4UYNSEM.js.map} +0 -0
  295. /package/dist/cli-bundle/chunks/{chunk-M4T5DXD5.js.map → chunk-VFJYVXHL.js.map} +0 -0
  296. /package/dist/cli-bundle/chunks/{chunk-WM5ZVBPE.js.map → chunk-WB5BYQMF.js.map} +0 -0
  297. /package/dist/cli-bundle/chunks/{chunk-SR3EKWZG.js.map → chunk-XVYKWZNL.js.map} +0 -0
  298. /package/dist/cli-bundle/chunks/{chunk-JR2LV3M4.js.map → chunk-XXKV4UWE.js.map} +0 -0
  299. /package/dist/cli-bundle/chunks/{chunk-2A34E3BA.js.map → chunk-YV2OSAMS.js.map} +0 -0
  300. /package/dist/cli-bundle/chunks/{chunk-VAYA4XFX.js.map → chunk-ZLWRPBOW.js.map} +0 -0
  301. /package/dist/cli-bundle/chunks/{chunk-YJ3SUEPD.js.map → chunk-ZV7IQ23N.js.map} +0 -0
  302. /package/dist/cli-bundle/chunks/{claim-4KHAA2RN.js.map → claim-FZZZCAY6.js.map} +0 -0
  303. /package/dist/cli-bundle/chunks/{claim-CSPJFLNH.js.map → claim-XK5QBZE3.js.map} +0 -0
  304. /package/dist/cli-bundle/chunks/{close-A3EMKBBY.js.map → close-JEBZXONN.js.map} +0 -0
  305. /package/dist/cli-bundle/chunks/{close-W56IOGYG.js.map → close-QHMVWM7M.js.map} +0 -0
  306. /package/dist/cli-bundle/chunks/{close-many-BX5DCSVV.js.map → close-many-OIXJE2JZ.js.map} +0 -0
  307. /package/dist/cli-bundle/chunks/{close-many-TQU5F4E4.js.map → close-many-SUU5BS2C.js.map} +0 -0
  308. /package/dist/cli-bundle/chunks/{comments-U5KUC4EU.js.map → comments-5YM62D75.js.map} +0 -0
  309. /package/dist/cli-bundle/chunks/{comments-VRECH75R.js.map → comments-RH3IBIRH.js.map} +0 -0
  310. /package/dist/cli-bundle/chunks/{config-D3OKQO52.js.map → config-NCNNWF6R.js.map} +0 -0
  311. /package/dist/cli-bundle/chunks/{config-MMJA4LLK.js.map → config-SW3U7XP2.js.map} +0 -0
  312. /package/dist/cli-bundle/chunks/{context-DHLVPXN3.js.map → context-55VEOYI3.js.map} +0 -0
  313. /package/dist/cli-bundle/chunks/{context-BLBD3PUB.js.map → context-5LB7UGKE.js.map} +0 -0
  314. /package/dist/cli-bundle/chunks/{contracts-XGVMMPC5.js.map → contracts-JXFGBOYT.js.map} +0 -0
  315. /package/dist/cli-bundle/chunks/{contracts-C3SZCXXG.js.map → contracts-SY6PDFIK.js.map} +0 -0
  316. /package/dist/cli-bundle/chunks/{copy-5D5DX3VK.js.map → copy-IEDBJOOX.js.map} +0 -0
  317. /package/dist/cli-bundle/chunks/{copy-HHL3K4QP.js.map → copy-N3GE6FYS.js.map} +0 -0
  318. /package/dist/cli-bundle/chunks/{create-QVGFYA2X.js.map → create-CLSCHGJJ.js.map} +0 -0
  319. /package/dist/cli-bundle/chunks/{create-IXY43O4H.js.map → create-O4VONGPG.js.map} +0 -0
  320. /package/dist/cli-bundle/chunks/{delete-IBUR3M42.js.map → delete-724EQ6OS.js.map} +0 -0
  321. /package/dist/cli-bundle/chunks/{delete-QQC2FGUH.js.map → delete-LPEIF7RU.js.map} +0 -0
  322. /package/dist/cli-bundle/chunks/{deps-VTPO4BSE.js.map → deps-RSBU4SIU.js.map} +0 -0
  323. /package/dist/cli-bundle/chunks/{deps-KWKRHXIN.js.map → deps-T3Y6Y7RT.js.map} +0 -0
  324. /package/dist/cli-bundle/chunks/{docs-7CHFHXLN.js.map → docs-75ZLCO3G.js.map} +0 -0
  325. /package/dist/cli-bundle/chunks/{docs-IIO3FEUO.js.map → docs-IFS7HZPP.js.map} +0 -0
  326. /package/dist/cli-bundle/chunks/{eval-IO7LREOL.js.map → eval-L2KD7W3M.js.map} +0 -0
  327. /package/dist/cli-bundle/chunks/{eval-CEYYEPSX.js.map → eval-QGR7JCQO.js.map} +0 -0
  328. /package/dist/cli-bundle/chunks/{extension-KCPUWSY2.js.map → extension-3JYWJ5K2.js.map} +0 -0
  329. /package/dist/cli-bundle/chunks/{extension-UTTQDUYI.js.map → extension-YQF4CPIR.js.map} +0 -0
  330. /package/dist/cli-bundle/chunks/{files-Z2HHEFGP.js.map → files-5BQWDRDT.js.map} +0 -0
  331. /package/dist/cli-bundle/chunks/{files-TPUL6KWB.js.map → files-EPEJMJHQ.js.map} +0 -0
  332. /package/dist/cli-bundle/chunks/{focus-JVJCGC2D.js.map → focus-DQVJAPOE.js.map} +0 -0
  333. /package/dist/cli-bundle/chunks/{focus-YRNNH7IP.js.map → focus-RWGKD76E.js.map} +0 -0
  334. /package/dist/cli-bundle/chunks/{gc-O5GUO3SU.js.map → gc-BEJMQT64.js.map} +0 -0
  335. /package/dist/cli-bundle/chunks/{gc-PYVVEELM.js.map → gc-JEFQDJPA.js.map} +0 -0
  336. /package/dist/cli-bundle/chunks/{get-X4O3HBEY.js.map → get-LQG6PEVG.js.map} +0 -0
  337. /package/dist/cli-bundle/chunks/{get-ENLTEGTX.js.map → get-WVN75H42.js.map} +0 -0
  338. /package/dist/cli-bundle/chunks/{health-BOTB7YSU.js.map → health-JJJOY7DJ.js.map} +0 -0
  339. /package/dist/cli-bundle/chunks/{health-5EXTY44Q.js.map → health-P67NZ6TT.js.map} +0 -0
  340. /package/dist/cli-bundle/chunks/{history-AK3E5Z3C.js.map → history-ALTM2RRP.js.map} +0 -0
  341. /package/dist/cli-bundle/chunks/{history-AJTXLT6S.js.map → history-RUKPKNY7.js.map} +0 -0
  342. /package/dist/cli-bundle/chunks/{history-compact-43OOUAWD.js.map → history-compact-NQ7VPRVT.js.map} +0 -0
  343. /package/dist/cli-bundle/chunks/{history-compact-46MRHW3I.js.map → history-compact-ZAOWR7GD.js.map} +0 -0
  344. /package/dist/cli-bundle/chunks/{history-redact-TWIYQV5J.js.map → history-redact-5YGLWUDH.js.map} +0 -0
  345. /package/dist/cli-bundle/chunks/{history-redact-KUUUVUFM.js.map → history-redact-YY4XYVEP.js.map} +0 -0
  346. /package/dist/cli-bundle/chunks/{history-repair-VQTYOSRS.js.map → history-repair-EHL4ODQY.js.map} +0 -0
  347. /package/dist/cli-bundle/chunks/{history-repair-B5PZBOPU.js.map → history-repair-YSQH6SY6.js.map} +0 -0
  348. /package/dist/cli-bundle/chunks/{init-RCRKW5PL.js.map → init-C4CRHW22.js.map} +0 -0
  349. /package/dist/cli-bundle/chunks/{init-BNLVFPRG.js.map → init-HBFGYS66.js.map} +0 -0
  350. /package/dist/cli-bundle/chunks/{learnings-XSGX52S7.js.map → learnings-J555ZFPD.js.map} +0 -0
  351. /package/dist/cli-bundle/chunks/{learnings-MUUU5KMC.js.map → learnings-KFQO7GEZ.js.map} +0 -0
  352. /package/dist/cli-bundle/chunks/{list-32U7BSKE.js.map → list-C7R33MD5.js.map} +0 -0
  353. /package/dist/cli-bundle/chunks/{list-ZEEOHLTQ.js.map → list-DSN6UNFB.js.map} +0 -0
  354. /package/dist/cli-bundle/chunks/{notes-NJ45OZGF.js.map → notes-V4VNIQL4.js.map} +0 -0
  355. /package/dist/cli-bundle/chunks/{notes-OHU25L3M.js.map → notes-VYJFN2A3.js.map} +0 -0
  356. /package/dist/cli-bundle/chunks/{plan-KQA7CAKI.js.map → plan-DHRSVSHR.js.map} +0 -0
  357. /package/dist/cli-bundle/chunks/{plan-LWWAEV5Y.js.map → plan-RBHQ5PO7.js.map} +0 -0
  358. /package/dist/cli-bundle/chunks/{register-list-query-DDCHPONM.js.map → register-list-query-CCMHGZTF.js.map} +0 -0
  359. /package/dist/cli-bundle/chunks/{register-list-query-YNPBVIKM.js.map → register-list-query-OM3E2KMY.js.map} +0 -0
  360. /package/dist/cli-bundle/chunks/{register-mutation-7ALWDDAX.js.map → register-mutation-N3CDEGZU.js.map} +0 -0
  361. /package/dist/cli-bundle/chunks/{register-mutation-LAVKYY63.js.map → register-mutation-UXTTWL6N.js.map} +0 -0
  362. /package/dist/cli-bundle/chunks/{register-operations-U5JAW3WE.js.map → register-operations-R2FLOCRI.js.map} +0 -0
  363. /package/dist/cli-bundle/chunks/{register-operations-R4VOQ6EF.js.map → register-operations-UDIFMQKD.js.map} +0 -0
  364. /package/dist/cli-bundle/chunks/{register-setup-RCRUHMSZ.js.map → register-setup-G5LTSFYK.js.map} +0 -0
  365. /package/dist/cli-bundle/chunks/{register-setup-KBXQDCXE.js.map → register-setup-TWHKICM2.js.map} +0 -0
  366. /package/dist/cli-bundle/chunks/{restore-6K53WOWO.js.map → restore-LL2WLEDG.js.map} +0 -0
  367. /package/dist/cli-bundle/chunks/{restore-2ZKT6UDC.js.map → restore-LQHXBAY5.js.map} +0 -0
  368. /package/dist/cli-bundle/chunks/{scheduling-shortcuts-OQVJXG3M.js.map → scheduling-shortcuts-255GI3BU.js.map} +0 -0
  369. /package/dist/cli-bundle/chunks/{scheduling-shortcuts-NJ5UVJFB.js.map → scheduling-shortcuts-M4H2ZI64.js.map} +0 -0
  370. /package/dist/cli-bundle/chunks/{schema-RBTJ2YXW.js.map → schema-C6QA367T.js.map} +0 -0
  371. /package/dist/cli-bundle/chunks/{schema-MNTAVQCY.js.map → schema-QO5I4FBL.js.map} +0 -0
  372. /package/dist/cli-bundle/chunks/{search-6HOIVZDU.js.map → search-2EI6EAXH.js.map} +0 -0
  373. /package/dist/cli-bundle/chunks/{search-ZWYEMASC.js.map → search-QBFBLQRO.js.map} +0 -0
  374. /package/dist/cli-bundle/chunks/{stats-R5OAJVZK.js.map → stats-TCW2SZQG.js.map} +0 -0
  375. /package/dist/cli-bundle/chunks/{stats-FS742AMA.js.map → stats-TKC6CAKB.js.map} +0 -0
  376. /package/dist/cli-bundle/chunks/{telemetry-FWEXSJLQ.js.map → telemetry-BT2VSWU2.js.map} +0 -0
  377. /package/dist/cli-bundle/chunks/{telemetry-7DIGDQUO.js.map → telemetry-LQ6FRTUT.js.map} +0 -0
  378. /package/dist/cli-bundle/chunks/{test-NZF7OT2F.js.map → test-NV2DRPUS.js.map} +0 -0
  379. /package/dist/cli-bundle/chunks/{test-QJXLKV26.js.map → test-WA6RZGM2.js.map} +0 -0
  380. /package/dist/cli-bundle/chunks/{test-all-KL7TLMJF.js.map → test-all-DZ76VTPQ.js.map} +0 -0
  381. /package/dist/cli-bundle/chunks/{test-all-DPN62TX7.js.map → test-all-REW67LXT.js.map} +0 -0
  382. /package/dist/cli-bundle/chunks/{test-runs-C6CFIVOS.js.map → test-runs-FQ5WNQLP.js.map} +0 -0
  383. /package/dist/cli-bundle/chunks/{test-runs-IAJDL6CA.js.map → test-runs-PX73DMMI.js.map} +0 -0
  384. /package/dist/cli-bundle/chunks/{update-2XCQNOD6.js.map → update-BSKMQOYH.js.map} +0 -0
  385. /package/dist/cli-bundle/chunks/{update-IWUCXVH2.js.map → update-FIGYNQ2I.js.map} +0 -0
  386. /package/dist/cli-bundle/chunks/{update-many-YEH2DQL6.js.map → update-many-2ILP6E4Y.js.map} +0 -0
  387. /package/dist/cli-bundle/chunks/{update-many-MUTIOAP3.js.map → update-many-Q5ZEI64S.js.map} +0 -0
  388. /package/dist/cli-bundle/chunks/{upgrade-UBNLBZNR.js.map → upgrade-DHL74PQH.js.map} +0 -0
  389. /package/dist/cli-bundle/chunks/{upgrade-HYJ3SWWU.js.map → upgrade-FOZKQTQF.js.map} +0 -0
  390. /package/dist/cli-bundle/chunks/{validate-W5V5ZGQX.js.map → validate-54SYJ7QW.js.map} +0 -0
  391. /package/dist/cli-bundle/chunks/{validate-6QWQVCX2.js.map → validate-HYZNIB6W.js.map} +0 -0
package/CHANGELOG.md CHANGED
@@ -1,5 +1,33 @@
1
1
  # Changelog
2
2
 
3
+ ## 2026.6.24 - 2026-06-24
4
+
5
+ ### Added
6
+
7
+ - TypeScript-first extension & package scaffolding + SDK docs reframe ([pm-09rh](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/features/pm-09rh.toon))
8
+ - Modular declarative authoring: mergeExtensionBlueprints + composeExtensionPackage ([pm-2p38](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/features/pm-2p38.toon))
9
+ - SDK unified author-time preflight capstone: preflightExtension + assertExtensionPreflight ([pm-ozaf](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/features/pm-ozaf.toon))
10
+ - SDK author-time version-compatibility preflight: checkExtensionManifestCompatibility + assertExtensionManifestCompatible ([pm-1w0d](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/features/pm-1w0d.toon))
11
+ - SDK author-once manifest synthesis: synthesizeExtensionManifest + assertExtensionManifestMatchesBlueprint ([pm-u5le](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/features/pm-u5le.toon))
12
+
13
+ ### Changed
14
+
15
+ - Extract shared version-compat core (core/extensions/version-compat.ts); loader delegates, behavior-preserving ([pm-sjea](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-sjea.toon))
16
+
17
+ ### Other
18
+
19
+ - Reframe SDK docs & docstrings TypeScript-first (SDK.md, EXTENSIONS.md, define\*/compose\*) ([pm-l2ud](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-l2ud.toon))
20
+ - Scaffolder emits TypeScript: index.ts + tsconfig.json + build script, compiled ./index.js entry ([pm-frou](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-frou.toon))
21
+ - defineExtensionBlueprint: typed identity helper for partial blueprint fragments ([pm-nvgy](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-nvgy.toon))
22
+ - composeExtensionPackage: author-once capstone returning { module, manifest } ([pm-cn0c](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-cn0c.toon))
23
+ - mergeExtensionBlueprints: pure modular composition of partial ExtensionBlueprints ([pm-high](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-high.toon))
24
+ - assertExtensionPreflight(blueprint, options) — throwing CI/test bookend (testing.ts) + barrel re-export ([pm-t8yl](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-t8yl.toon))
25
+ - preflightExtension(blueprint, options) — pure unified author-time analyzer (compose.ts) ([pm-tcw1](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-tcw1.toon))
26
+ - assertExtensionManifestCompatible(manifest, target) — SDK testing assert ([pm-hng2](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-hng2.toon))
27
+ - checkExtensionManifestCompatibility(manifest, target) — pure author-time analyzer ([pm-knma](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-knma.toon))
28
+ - assertExtensionManifestMatchesBlueprint(manifest, blueprint): strict least-privilege CI guard against capability drift ([pm-pfxi](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-pfxi.toon))
29
+ - synthesizeExtensionManifest(blueprint, identity): generate a complete least-privilege ExtensionManifest from a blueprint ([pm-nr5j](https://github.com/unbraind/pm-cli/blob/main/.agents/pm/tasks/pm-nr5j.toon))
30
+
3
31
  ## 2026.6.23 - 2026-06-23
4
32
 
5
33
  ### Added
@@ -4,7 +4,7 @@
4
4
  * Implements extension package-management support for Scaffold.
5
5
  */
6
6
 
7
- !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="4513e1ea-24a5-55b1-9465-78d5d9febba7")}catch(e){}}();
7
+ !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="9eecdd82-fe71-5803-9186-a33244c4722d")}catch(e){}}();
8
8
  import fs from "node:fs/promises";
9
9
  import path from "node:path";
10
10
  import { pathExists } from "../../../core/fs/fs-utils.js";
@@ -25,6 +25,40 @@ const SCAFFOLD_DECLARED_PERMISSIONS = {
25
25
  env_write: false,
26
26
  process_spawn: false,
27
27
  };
28
+ // TypeScript dev-dependency floor for scaffolded packages, matching the CLI's own
29
+ // toolchain so generated packages compile against the same compiler generation.
30
+ const SCAFFOLD_TYPESCRIPT_VERSION = "^6.0.0";
31
+ // `@types/node` floor for scaffolded packages: the colocated `index.test.ts`
32
+ // imports `node:test`/`node:assert`, which need Node's ambient type definitions
33
+ // to compile. Pinned to the engines floor (Node >=20), matching the CLI itself.
34
+ const SCAFFOLD_TYPES_NODE_VERSION = "^20.0.0";
35
+ // Strict NodeNext tsconfig emitted into every scaffold (ADR pm-2c28: extensions
36
+ // are authored fully in TypeScript). It compiles `index.ts` (and the colocated
37
+ // `index.test.ts`) in place to the `./index.js` entry the manifest loads, so the
38
+ // authored source is type-checked against the SDK contracts while the loader keeps
39
+ // importing plain compiled JavaScript. NodeNext resolution matches the explicit
40
+ // `.js` import specifiers the emitted ESM uses. No `outDir` is set on purpose:
41
+ // tsc auto-excludes its `outDir`, and an in-package `outDir` would exclude the
42
+ // whole package root, leaving the `*.ts` inputs unmatched (TS18003). Emitting
43
+ // beside the source mirrors the first-party `packages/pm-*` layout.
44
+ const SCAFFOLD_TSCONFIG = {
45
+ compilerOptions: {
46
+ target: "ES2022",
47
+ module: "NodeNext",
48
+ moduleResolution: "NodeNext",
49
+ strict: true,
50
+ esModuleInterop: true,
51
+ skipLibCheck: true,
52
+ declaration: false,
53
+ // `node:test`/`node:assert` in the colocated test (and Node globals) resolve
54
+ // from `@types/node`; name it explicitly so it is loaded regardless of how the
55
+ // package manager lays out `node_modules/@types`.
56
+ types: ["node"],
57
+ },
58
+ // Recursive so a package that grows into subdirectory `*.ts` modules still
59
+ // type-checks and compiles them; tsc excludes `node_modules` by default.
60
+ include: ["**/*.ts"],
61
+ };
28
62
  /**
29
63
  * Capability shapes the package/extension scaffolder can target via the
30
64
  * `--capability` selector. `commands` emits the default command-only starter;
@@ -47,23 +81,24 @@ const SAMPLE_TEST_CAPABILITIES_LITERAL = {
47
81
  importers: '["commands", "schema", "importers"]',
48
82
  };
49
83
  const ENTRYPOINT_BULLETS = {
50
- commands: "- `index.js`: starter command registration plus a `deactivate` teardown stub.",
51
- hooks: "- `index.js`: starter command registration, an `after_command` lifecycle hook, and a `deactivate` teardown stub.",
52
- search: "- `index.js`: starter command registration, a search provider, a vector-store adapter, and a `deactivate` teardown stub.",
53
- importers: "- `index.js`: starter command registration, importer/exporter command registrations, and a `deactivate` teardown stub.",
84
+ commands: "- `index.ts`: starter command registration plus a `deactivate` teardown stub (compiled to `index.js`).",
85
+ hooks: "- `index.ts`: starter command registration, an `after_command` lifecycle hook, and a `deactivate` teardown stub (compiled to `index.js`).",
86
+ search: "- `index.ts`: starter command registration, a search provider, a vector-store adapter, and a `deactivate` teardown stub (compiled to `index.js`).",
87
+ importers: "- `index.ts`: starter command registration, importer/exporter command registrations, and a `deactivate` teardown stub (compiled to `index.js`).",
54
88
  };
55
89
  const SAMPLE_TEST_BULLETS = {
56
- commands: "- `index.test.js`: sample `node:test` suite covering activation, command invocation, and teardown via the SDK testing helpers.",
57
- hooks: "- `index.test.js`: sample `node:test` suite covering activation, command invocation, the after_command hook, and teardown via the SDK testing helpers.",
58
- search: "- `index.test.js`: sample `node:test` suite covering activation, command invocation, search provider/vector adapter invocation, and teardown via the SDK testing helpers.",
59
- importers: "- `index.test.js`: sample `node:test` suite covering activation, command invocation, importer/exporter invocation, and teardown via the SDK testing helpers.",
90
+ commands: "- `index.test.ts`: sample `node:test` suite covering activation, command invocation, and teardown via the SDK testing helpers.",
91
+ hooks: "- `index.test.ts`: sample `node:test` suite covering activation, command invocation, the after_command hook, and teardown via the SDK testing helpers.",
92
+ search: "- `index.test.ts`: sample `node:test` suite covering activation, command invocation, search provider/vector adapter invocation, and teardown via the SDK testing helpers.",
93
+ importers: "- `index.test.ts`: sample `node:test` suite covering activation, command invocation, importer/exporter invocation, and teardown via the SDK testing helpers.",
60
94
  };
95
+ const TSCONFIG_BULLET = "- `tsconfig.json`: strict TypeScript config that compiles `index.ts` to the `./index.js` entry.";
61
96
  const PACKAGE_CAPABILITY_README_SECTIONS = {
62
97
  commands: [],
63
98
  hooks: [
64
99
  "",
65
100
  "## Lifecycle Hook",
66
- "`index.js` registers an `after_command` hook via `api.hooks.afterCommand`.",
101
+ "`index.ts` registers an `after_command` hook via `api.hooks.afterCommand`.",
67
102
  "pm fires it once a command finishes, passing the command outcome and the",
68
103
  "items it mutated (`context.affected`). React there to keep external context",
69
104
  "in sync - sync records, emit telemetry, or refresh derived state. The",
@@ -73,7 +108,7 @@ const PACKAGE_CAPABILITY_README_SECTIONS = {
73
108
  search: [
74
109
  "",
75
110
  "## Search Provider",
76
- "`index.js` registers a deterministic in-memory search provider and",
111
+ "`index.ts` registers a deterministic in-memory search provider and",
77
112
  "vector-store adapter through `api.registerSearchProvider` and",
78
113
  "`api.registerVectorStoreAdapter`. Replace the sample scoring,",
79
114
  "embedding, and storage behavior with your project-specific retrieval",
@@ -83,7 +118,7 @@ const PACKAGE_CAPABILITY_README_SECTIONS = {
83
118
  importers: [
84
119
  "",
85
120
  "## Importer and Exporter",
86
- "`index.js` registers paired project-context import/export commands through",
121
+ "`index.ts` registers paired project-context import/export commands through",
87
122
  "`api.registerImporter` and `api.registerExporter`. Replace the starter",
88
123
  "payloads with your domain adapter: GitHub issues, CSV rows, documents,",
89
124
  "tickets, or another project-management source of truth. The `importers`",
@@ -96,7 +131,7 @@ const EXTENSION_CAPABILITY_README_SECTIONS = {
96
131
  hooks: [
97
132
  "",
98
133
  "## Lifecycle Hook",
99
- "`index.js` registers an `after_command` hook via `api.hooks.afterCommand`.",
134
+ "`index.ts` registers an `after_command` hook via `api.hooks.afterCommand`.",
100
135
  "pm fires it once a command finishes, passing the command outcome and the",
101
136
  "items it mutated (`context.affected`). React there to keep external context",
102
137
  "in sync. The `hooks` capability in `manifest.json` grants the registration;",
@@ -105,7 +140,7 @@ const EXTENSION_CAPABILITY_README_SECTIONS = {
105
140
  search: [
106
141
  "",
107
142
  "## Search Provider",
108
- "`index.js` registers a deterministic in-memory search provider and",
143
+ "`index.ts` registers a deterministic in-memory search provider and",
109
144
  "vector-store adapter through `api.registerSearchProvider` and",
110
145
  "`api.registerVectorStoreAdapter`. Replace the sample scoring, embedding,",
111
146
  "and storage behavior with your project-specific retrieval logic. The",
@@ -114,7 +149,7 @@ const EXTENSION_CAPABILITY_README_SECTIONS = {
114
149
  importers: [
115
150
  "",
116
151
  "## Importer and Exporter",
117
- "`index.js` registers paired project-context import/export commands through",
152
+ "`index.ts` registers paired project-context import/export commands through",
118
153
  "`api.registerImporter` and `api.registerExporter`. Replace the starter",
119
154
  "payloads with your domain adapter. The `importers` capability grants both",
120
155
  "registrations, and `schema` grants the example command flag metadata.",
@@ -253,8 +288,10 @@ function buildActivateBodyLines(extensionName, commandName, capability) {
253
288
  ];
254
289
  }
255
290
  /**
256
- * Build the colocated `node:test` sample suite for the chosen capability. Every
257
- * variant covers activation, command invocation, and teardown via the SDK
291
+ * Build the colocated `node:test` sample suite (`index.test.ts`) for the chosen
292
+ * capability. Authored in TypeScript and run through `npm test` (`tsc && node
293
+ * --test`), it imports the compiled `./index.js` entry under NodeNext resolution.
294
+ * Every variant covers activation, command invocation, and teardown via the SDK
258
295
  * testing helpers; the `hooks` variant adds a test that asserts the
259
296
  * `after_command` hook is registered and fires cleanly through the public SDK
260
297
  * testing helper `runRegisteredHookForTest`.
@@ -327,6 +364,8 @@ function buildSampleTestSource(extensionName, commandName, capability) {
327
364
  ` extensionName: ${JSON.stringify(extensionName)},`,
328
365
  " });",
329
366
  "",
367
+ " // The starter provider reads only document title/id, so `settings` is a",
368
+ " // minimal typed stub and `documents` carry just the fields it inspects.",
330
369
  " const query = await runRegisteredSearchProviderForTest(activation.registrations, {",
331
370
  ` provider: ${JSON.stringify(searchProviderName)},`,
332
371
  ' operation: "query",',
@@ -335,11 +374,11 @@ function buildSampleTestSource(extensionName, commandName, capability) {
335
374
  ' mode: "semantic",',
336
375
  ' tokens: ["sync"],',
337
376
  " options: {},",
338
- " settings: {},",
377
+ " settings: {} as PmSettings,",
339
378
  " documents: [",
340
379
  ' { metadata: { id: "pm-1", title: "Sync external context" }, body: "" },',
341
380
  ' { metadata: { id: "pm-2", title: "Unrelated task" }, body: "" },',
342
- " ],",
381
+ " ] as ItemDocument[],",
343
382
  " },",
344
383
  " });",
345
384
  ' assert.deepEqual(query, { hits: [{ id: "pm-1", score: 1, matched_fields: ["title"] }] });',
@@ -347,14 +386,14 @@ function buildSampleTestSource(extensionName, commandName, capability) {
347
386
  " const embedding = await runRegisteredSearchProviderForTest(activation.registrations, {",
348
387
  ` provider: ${JSON.stringify(searchProviderName)},`,
349
388
  ' operation: "embed",',
350
- ' context: { input: "abc", settings: {}, model: "starter-model" },',
389
+ ' context: { input: "abc", settings: {} as PmSettings, model: "starter-model" },',
351
390
  " });",
352
391
  " assert.deepEqual(embedding, [3]);",
353
392
  "",
354
393
  " const vectorHits = await runRegisteredVectorStoreAdapterForTest(activation.registrations, {",
355
394
  ` adapter: ${JSON.stringify(vectorAdapterName)},`,
356
395
  ' operation: "query",',
357
- " context: { vector: [0.1, 0.2], limit: 2, settings: {} },",
396
+ " context: { vector: [0.1, 0.2], limit: 2, settings: {} as PmSettings },",
358
397
  " });",
359
398
  ' assert.deepEqual(vectorHits, [{ id: "starter-vector-hit", score: 2 }]);',
360
399
  "});",
@@ -402,6 +441,9 @@ function buildSampleTestSource(extensionName, commandName, capability) {
402
441
  "import {",
403
442
  ...importNames,
404
443
  '} from "@unbrained/pm-cli/sdk/testing";',
444
+ // The search sample's synthetic query/vector contexts reference these SDK types
445
+ // for their typed-stub fixtures; other capabilities need no extra type imports.
446
+ ...(searchEnabled ? ['import type { ItemDocument, PmSettings } from "@unbrained/pm-cli/sdk";'] : []),
405
447
  'import extension from "./index.js";',
406
448
  "",
407
449
  `test(${JSON.stringify(`${extensionName} registers its starter command`)}, async () => {`,
@@ -427,8 +469,14 @@ function buildSampleTestSource(extensionName, commandName, capability) {
427
469
  ` command: ${JSON.stringify(commandName)},`,
428
470
  " });",
429
471
  " assert.equal(invocation.handled, true);",
430
- " assert.equal(invocation.result.ok, true);",
431
- ` assert.equal(invocation.result.command, ${JSON.stringify(commandName)});`,
472
+ " // The handler result is typed `unknown`, so deep-equality on the whole",
473
+ " // structured payload keeps the assertion type-safe without a cast.",
474
+ " assert.deepEqual(invocation.result, {",
475
+ " ok: true,",
476
+ ` source: ${JSON.stringify(extensionName)},`,
477
+ ` command: ${JSON.stringify(commandName)},`,
478
+ ' message: "Starter extension scaffold is active.",',
479
+ " });",
432
480
  "});",
433
481
  "",
434
482
  ...hookTestLines,
@@ -465,13 +513,15 @@ export function buildStarterExtensionScaffoldFiles(extensionName, commandName, v
465
513
  permissions: { ...SCAFFOLD_DECLARED_PERMISSIONS },
466
514
  capabilities,
467
515
  }, null, 2)}\n`;
468
- // Keep scaffolds dependency-light by default: even package mode can be
469
- // installed before peer dependencies are materialized in the generated root.
470
- // The JSDoc import preserves editor narrowing without forcing the runtime
471
- // loader to resolve @unbrained/pm-cli/sdk from a freshly generated scaffold.
516
+ // The entrypoint is authored fully in TypeScript (ADR pm-2c28): the `import
517
+ // type` is erased at compile time, so the typed `ExtensionApi` parameter is
518
+ // checked against the SDK contract at author time while the emitted ./index.js
519
+ // stays import-light. `npm run build` (tsc) compiles this index.ts to the
520
+ // ./index.js the manifest entry loads.
472
521
  const entrypoint = [
473
- '/** @param {import("@unbrained/pm-cli/sdk").ExtensionApi} api */',
474
- "export function activate(api) {",
522
+ 'import type { ExtensionApi } from "@unbrained/pm-cli/sdk";',
523
+ "",
524
+ "export function activate(api: ExtensionApi): void {",
475
525
  ...buildActivateBodyLines(extensionName, commandName, capability),
476
526
  "}",
477
527
  "",
@@ -479,7 +529,7 @@ export function buildStarterExtensionScaffoldFiles(extensionName, commandName, v
479
529
  "// shutdown/reload (e.g. the MCP server between requests) to release anything",
480
530
  "// `activate` opened - timers, connections, caches. This starter holds no such",
481
531
  "// resources, so it stays a documented no-op; add cleanup here as you grow.",
482
- "export function deactivate() {}",
532
+ "export function deactivate(): void {}",
483
533
  "",
484
534
  "export default {",
485
535
  " activate,",
@@ -487,7 +537,8 @@ export function buildStarterExtensionScaffoldFiles(extensionName, commandName, v
487
537
  "};",
488
538
  "",
489
539
  ].join("\n");
490
- // README bullet describing what index.js wires, kept in sync with the chosen
540
+ const tsconfig = `${JSON.stringify(SCAFFOLD_TSCONFIG, null, 2)}\n`;
541
+ // README bullet describing what index.ts wires, kept in sync with the chosen
491
542
  // capability so the generated docs match the generated code.
492
543
  const entrypointBullet = ENTRYPOINT_BULLETS[capability];
493
544
  if (vocabulary === "package") {
@@ -497,14 +548,21 @@ export function buildStarterExtensionScaffoldFiles(extensionName, commandName, v
497
548
  private: true,
498
549
  type: "module",
499
550
  keywords: ["pm-package"],
500
- // `node --test` runs the colocated *.test.js sample against the peer SDK
501
- // testing helpers; no extra dev-dependency or test runner is required.
551
+ // `build` compiles index.ts to the ./index.js the manifest loads; `test`
552
+ // compiles first (Node's `node --test` runs the emitted *.test.js, not the
553
+ // TypeScript source) then runs the colocated sample against the peer SDK
554
+ // testing helpers — no third-party test runner required.
502
555
  scripts: {
503
- test: "node --test",
556
+ build: "tsc",
557
+ test: "tsc && node --test",
504
558
  },
505
559
  peerDependencies: {
506
560
  "@unbrained/pm-cli": "*",
507
561
  },
562
+ devDependencies: {
563
+ "@types/node": SCAFFOLD_TYPES_NODE_VERSION,
564
+ typescript: SCAFFOLD_TYPESCRIPT_VERSION,
565
+ },
508
566
  pm: {
509
567
  aliases: [extensionName],
510
568
  extensions: ["."],
@@ -524,7 +582,20 @@ export function buildStarterExtensionScaffoldFiles(extensionName, commandName, v
524
582
  // capability, the after_command lifecycle hook).
525
583
  const sampleTest = buildSampleTestSource(extensionName, commandName, capability);
526
584
  const sampleTestBullet = SAMPLE_TEST_BULLETS[capability];
527
- const gitignore = ["node_modules/", "*.log", ""].join("\n");
585
+ // Ignore compiled TypeScript output wherever tsc emits it. Authors can add
586
+ // sibling or subdirectory modules, and tsc writes each .js next to its source.
587
+ const gitignore = [
588
+ "node_modules/",
589
+ "*.log",
590
+ "",
591
+ "# Compiled TypeScript output (npm run build)",
592
+ "*.js",
593
+ "*.test.js",
594
+ "*.js.map",
595
+ "*.d.ts",
596
+ "*.d.ts.map",
597
+ "",
598
+ ].join("\n");
528
599
  const searchProviderName = `${extensionName}-search`;
529
600
  const vectorAdapterName = `${extensionName}-vector`;
530
601
  const adapterName = `${extensionName.replace(/-/g, " ")} items`;
@@ -535,8 +606,9 @@ export function buildStarterExtensionScaffoldFiles(extensionName, commandName, v
535
606
  ...(capability === "importers" ? ["defineImporter", "defineExporter"] : []),
536
607
  ].join(", ");
537
608
  const defineBuilderSnippet = [
538
- "```js",
609
+ "```ts",
539
610
  `import { ${defineBuilderImports} } from "@unbrained/pm-cli/sdk";`,
611
+ 'import type { ExtensionApi } from "@unbrained/pm-cli/sdk";',
540
612
  "",
541
613
  "export const pingCommand = defineCommand({",
542
614
  ` name: ${JSON.stringify(commandName)},`,
@@ -553,7 +625,7 @@ export function buildStarterExtensionScaffoldFiles(extensionName, commandName, v
553
625
  if (capability === "importers") {
554
626
  defineBuilderSnippet.push("", "export const importer = defineImporter(async (context) => ({", " imported: 1,", " source: context.options.source ?? \"starter\",", " args: context.args,", "}));", "", "export const exporter = defineExporter(async (context) => ({", " exported: true,", " destination: context.options.destination ?? \"stdout\",", " args: context.args,", "}));");
555
627
  }
556
- defineBuilderSnippet.push("", "export function activate(api) {", " api.registerCommand(pingCommand);");
628
+ defineBuilderSnippet.push("", "export function activate(api: ExtensionApi): void {", " api.registerCommand(pingCommand);");
557
629
  if (capability === "hooks") {
558
630
  defineBuilderSnippet.push(" api.hooks.afterCommand(afterCommandHook);");
559
631
  }
@@ -563,40 +635,47 @@ export function buildStarterExtensionScaffoldFiles(extensionName, commandName, v
563
635
  if (capability === "importers") {
564
636
  defineBuilderSnippet.push(` api.registerImporter(${JSON.stringify(adapterName)}, importer, {`, ` action: ${JSON.stringify(`${adapterName} import`)},`, ' description: "Import starter records into pm context.",', " flags: [", " {", ' long: "--source",', ' value_name: "name",', ' value_type: "string",', ' description: "Source name or path to import from.",', " },", " ],", " });", ` api.registerExporter(${JSON.stringify(adapterName)}, exporter, {`, ` action: ${JSON.stringify(`${adapterName} export`)},`, ' description: "Export pm context into starter records.",', " flags: [", " {", ' long: "--destination",', ' value_name: "name",', ' value_type: "string",', ' description: "Destination name or path to export to.",', " },", " ],", " });");
565
637
  }
566
- defineBuilderSnippet.push("}", "", "export function deactivate() {}", "", "export default { activate, deactivate };", "```");
638
+ defineBuilderSnippet.push("}", "", "export function deactivate(): void {}", "", "export default { activate, deactivate };", "```");
567
639
  const packageReadme = [
568
640
  `# ${packageName}`,
569
641
  "",
570
642
  "Generated by `pm package init`.",
571
643
  "",
572
644
  "## Included Files",
573
- "- `package.json`: package metadata, `test` script, and `pm` resource manifest.",
645
+ "- `package.json`: package metadata, `build`/`test` scripts, and `pm` resource manifest.",
574
646
  "- `manifest.json`: extension metadata and capabilities.",
575
647
  entrypointBullet,
576
648
  sampleTestBullet,
577
- "- `.gitignore`: ignores `node_modules/` and log files.",
649
+ TSCONFIG_BULLET,
650
+ "- `.gitignore`: ignores `node_modules/`, logs, and compiled JavaScript/declaration output.",
578
651
  "",
579
652
  "## Quick Start",
653
+ "This package is authored in TypeScript; build it once so the manifest's",
654
+ "`./index.js` entry exists, then install it:",
580
655
  "```bash",
656
+ "npm install",
657
+ "npm run build",
581
658
  "pm install --project <package-path>",
582
659
  `pm ${commandName}`,
583
660
  "pm package doctor --project --detail summary",
584
661
  "```",
585
662
  "",
586
663
  "## Validate the Package",
587
- "Install the peer SDK once, then run the colocated sample test:",
664
+ "`npm install` pulls the peer SDK and TypeScript; `npm test` compiles and runs",
665
+ "the colocated sample test:",
588
666
  "```bash",
589
667
  "npm install",
590
668
  "npm test",
591
669
  "```",
592
- "`npm test` runs `node --test`, which executes `index.test.js` against the",
670
+ "`npm test` runs `tsc && node --test`: it compiles `index.ts`/`index.test.ts`",
671
+ "then executes the emitted `index.test.js` against the",
593
672
  "`@unbrained/pm-cli/sdk/testing` helpers - no extra test runner required.",
594
673
  "",
595
674
  "## Authoring With define* Builders",
596
- "`index.js` stays import-free so the package can be installed locally before",
597
- "`npm install` materializes peer dependencies. After installing dependencies,",
598
- "use the public SDK authoring builders for exported definitions you want",
599
- "editor type-checking, contextual handler inference, and direct unit tests for:",
675
+ "`index.ts` is authored fully in TypeScript so every registration is checked",
676
+ "against the SDK contracts at author time. Use the public SDK authoring",
677
+ "builders for exported definitions you want literal-type preservation,",
678
+ "contextual handler inference, and direct unit tests for:",
600
679
  ...defineBuilderSnippet,
601
680
  "The builders return their argument unchanged; runtime validation still lives",
602
681
  "in `api.register*`, and behavior validation lives in `sdk/testing`.",
@@ -612,8 +691,8 @@ export function buildStarterExtensionScaffoldFiles(extensionName, commandName, v
612
691
  "The starter command is pure compute, so `manifest.json` declares `trusted: true`, `sandbox_profile: \"strict\"`, and all six permission keys as `false`. Keep that least-privilege shape for pure packages; relax only the specific permission your package actually needs and verify with `pm package doctor --project --detail deep --trace`.",
613
692
  "",
614
693
  "## Notes",
615
- "- Keep simple starter runtime behavior at the package root so local installs work without dependency bootstrapping.",
616
- "- Move larger runtimes into subdirectories only after adding package dependencies and validating `pm package doctor`.",
694
+ "- Author in `index.ts`; `npm run build` (tsc) emits the `./index.js` the manifest loads, so rebuild after editing before installing or reloading.",
695
+ "- Move larger runtimes into sibling or subdirectory `*.ts` modules and import them; `tsconfig.json` compiles every `*.ts` in the package (recursively).",
617
696
  "- Add capabilities to the extension manifest only when the entrypoint uses the matching SDK API.",
618
697
  "- Use `@unbrained/pm-cli/sdk` as the public SDK import for richer package runtimes.",
619
698
  "",
@@ -621,8 +700,9 @@ export function buildStarterExtensionScaffoldFiles(extensionName, commandName, v
621
700
  return {
622
701
  "package.json": packageJson,
623
702
  "manifest.json": manifest,
624
- "index.js": entrypoint,
625
- "index.test.js": sampleTest,
703
+ "index.ts": entrypoint,
704
+ "index.test.ts": sampleTest,
705
+ "tsconfig.json": tsconfig,
626
706
  ".gitignore": gitignore,
627
707
  "README.md": packageReadme,
628
708
  };
@@ -635,9 +715,16 @@ export function buildStarterExtensionScaffoldFiles(extensionName, commandName, v
635
715
  "## Included Files",
636
716
  "- `manifest.json`: extension metadata and capabilities.",
637
717
  entrypointBullet,
718
+ TSCONFIG_BULLET,
638
719
  "",
639
720
  "## Quick Start",
721
+ "This extension is authored in TypeScript; compile `index.ts` to the manifest's",
722
+ "`./index.js` entry, then install it. The SDK types resolve once",
723
+ "`@unbrained/pm-cli` is available to the compiler (install it, Node types, and TypeScript, or",
724
+ "build from a project that already depends on the CLI):",
640
725
  "```bash",
726
+ "npm install -D typescript @types/node @unbrained/pm-cli",
727
+ "npx tsc",
641
728
  "pm extension --install --project <scaffold-path>",
642
729
  `pm ${commandName}`,
643
730
  "pm extension --doctor --project --detail summary",
@@ -654,14 +741,15 @@ export function buildStarterExtensionScaffoldFiles(extensionName, commandName, v
654
741
  "The starter command is pure compute, so `manifest.json` declares `trusted: true`, `sandbox_profile: \"strict\"`, and all six permission keys as `false`. Keep that least-privilege shape for pure extensions; relax only the specific permission your extension actually needs and verify with `pm extension --doctor --project --detail deep --trace`.",
655
742
  "",
656
743
  "## Notes",
657
- "- This scaffold uses ESM exports so it works in package scopes with `type: module`.",
658
- "- Update `manifest.json` capabilities and `index.js` command behavior as your extension evolves.",
744
+ "- This scaffold uses TypeScript ESM source compiled to ESM output, so it works in package scopes with `type: module`.",
745
+ "- Author in `index.ts` and recompile to `index.js` (the manifest entry) after editing capabilities or command behavior.",
659
746
  "- Release any resources `activate` opens (timers, connections, caches) in the `deactivate` teardown hook.",
660
747
  "",
661
748
  ].join("\n");
662
749
  return {
663
750
  "manifest.json": manifest,
664
- "index.js": entrypoint,
751
+ "index.ts": entrypoint,
752
+ "tsconfig.json": tsconfig,
665
753
  "README.md": readme,
666
754
  };
667
755
  }
@@ -730,4 +818,4 @@ export async function scaffoldExtensionProject(target, vocabulary = "extension",
730
818
  };
731
819
  }
732
820
  //# sourceMappingURL=scaffold.js.map
733
- //# debugId=4513e1ea-24a5-55b1-9465-78d5d9febba7
821
+ //# debugId=9eecdd82-fe71-5803-9186-a33244c4722d