@unbrained/pm-cli 2026.5.30 → 2026.6.5

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 (578) hide show
  1. package/CHANGELOG.md +152 -0
  2. package/dist/cli/argv-utils.js +7 -3
  3. package/dist/cli/argv-utils.js.map +1 -1
  4. package/dist/cli/bootstrap-args.d.ts +1 -0
  5. package/dist/cli/bootstrap-args.js +23 -3
  6. package/dist/cli/bootstrap-args.js.map +1 -1
  7. package/dist/cli/commands/calendar.js +96 -10
  8. package/dist/cli/commands/calendar.js.map +1 -1
  9. package/dist/cli/commands/close-many.d.ts +63 -0
  10. package/dist/cli/commands/close-many.js +302 -0
  11. package/dist/cli/commands/close-many.js.map +1 -0
  12. package/dist/cli/commands/completion.d.ts +1 -0
  13. package/dist/cli/commands/completion.js +241 -27
  14. package/dist/cli/commands/completion.js.map +1 -1
  15. package/dist/cli/commands/config.d.ts +4 -4
  16. package/dist/cli/commands/config.js +115 -3
  17. package/dist/cli/commands/config.js.map +1 -1
  18. package/dist/cli/commands/contracts.js +191 -162
  19. package/dist/cli/commands/contracts.js.map +1 -1
  20. package/dist/cli/commands/create.d.ts +1 -0
  21. package/dist/cli/commands/create.js +109 -116
  22. package/dist/cli/commands/create.js.map +1 -1
  23. package/dist/cli/commands/extension/doctor.d.ts +12 -0
  24. package/dist/cli/commands/extension/doctor.js +97 -2
  25. package/dist/cli/commands/extension/doctor.js.map +1 -1
  26. package/dist/cli/commands/extension/install-sources.d.ts +2 -0
  27. package/dist/cli/commands/extension/install-sources.js +11 -4
  28. package/dist/cli/commands/extension/install-sources.js.map +1 -1
  29. package/dist/cli/commands/extension/scaffold.js +49 -48
  30. package/dist/cli/commands/extension/scaffold.js.map +1 -1
  31. package/dist/cli/commands/extension.js +51 -23
  32. package/dist/cli/commands/extension.js.map +1 -1
  33. package/dist/cli/commands/get.js +7 -7
  34. package/dist/cli/commands/get.js.map +1 -1
  35. package/dist/cli/commands/health.js +38 -3
  36. package/dist/cli/commands/health.js.map +1 -1
  37. package/dist/cli/commands/index.d.ts +2 -1
  38. package/dist/cli/commands/index.js +4 -3
  39. package/dist/cli/commands/index.js.map +1 -1
  40. package/dist/cli/commands/init.d.ts +10 -0
  41. package/dist/cli/commands/init.js +107 -4
  42. package/dist/cli/commands/init.js.map +1 -1
  43. package/dist/cli/commands/list.d.ts +5 -0
  44. package/dist/cli/commands/list.js +58 -26
  45. package/dist/cli/commands/list.js.map +1 -1
  46. package/dist/cli/commands/reindex.js +164 -48
  47. package/dist/cli/commands/reindex.js.map +1 -1
  48. package/dist/cli/commands/repeatable-metadata-parsers.d.ts +15 -0
  49. package/dist/cli/commands/repeatable-metadata-parsers.js +120 -0
  50. package/dist/cli/commands/repeatable-metadata-parsers.js.map +1 -0
  51. package/dist/cli/commands/restore.js +25 -4
  52. package/dist/cli/commands/restore.js.map +1 -1
  53. package/dist/cli/commands/schema.d.ts +122 -1
  54. package/dist/cli/commands/schema.js +536 -6
  55. package/dist/cli/commands/schema.js.map +1 -1
  56. package/dist/cli/commands/search.d.ts +18 -0
  57. package/dist/cli/commands/search.js +56 -12
  58. package/dist/cli/commands/search.js.map +1 -1
  59. package/dist/cli/commands/test.js +4 -3
  60. package/dist/cli/commands/test.js.map +1 -1
  61. package/dist/cli/commands/update-many.js +69 -140
  62. package/dist/cli/commands/update-many.js.map +1 -1
  63. package/dist/cli/commands/update.d.ts +2 -0
  64. package/dist/cli/commands/update.js +138 -119
  65. package/dist/cli/commands/update.js.map +1 -1
  66. package/dist/cli/commands/validate.d.ts +1 -0
  67. package/dist/cli/commands/validate.js +63 -33
  68. package/dist/cli/commands/validate.js.map +1 -1
  69. package/dist/cli/error-guidance.js +26 -3
  70. package/dist/cli/error-guidance.js.map +1 -1
  71. package/dist/cli/help-content.js +82 -3
  72. package/dist/cli/help-content.js.map +1 -1
  73. package/dist/cli/main.js +377 -23
  74. package/dist/cli/main.js.map +1 -1
  75. package/dist/cli/register-list-query.js +16 -12
  76. package/dist/cli/register-list-query.js.map +1 -1
  77. package/dist/cli/register-mutation.js +217 -47
  78. package/dist/cli/register-mutation.js.map +1 -1
  79. package/dist/cli/register-operations.js +34 -25
  80. package/dist/cli/register-operations.js.map +1 -1
  81. package/dist/cli/register-setup.js +8 -8
  82. package/dist/cli/register-setup.js.map +1 -1
  83. package/dist/cli/registration-helpers.js +35 -5
  84. package/dist/cli/registration-helpers.js.map +1 -1
  85. package/dist/cli/search-refresh.d.ts +2 -0
  86. package/dist/cli/search-refresh.js +13 -0
  87. package/dist/cli/search-refresh.js.map +1 -0
  88. package/dist/cli-bundle/chunks/activity-3RWRRNOW.js +20 -0
  89. package/dist/cli-bundle/chunks/activity-3RWRRNOW.js.map +1 -0
  90. package/dist/cli-bundle/chunks/activity-P5BUMWP3.js +16 -0
  91. package/dist/cli-bundle/chunks/activity-P5BUMWP3.js.map +7 -0
  92. package/dist/cli-bundle/chunks/aggregate-J35K7WZB.js +206 -0
  93. package/dist/cli-bundle/chunks/aggregate-J35K7WZB.js.map +1 -0
  94. package/dist/cli-bundle/chunks/aggregate-OOAGKWRG.js +209 -0
  95. package/dist/cli-bundle/chunks/aggregate-OOAGKWRG.js.map +7 -0
  96. package/dist/cli-bundle/chunks/append-5JE3YGXU.js +72 -0
  97. package/dist/cli-bundle/chunks/append-5JE3YGXU.js.map +7 -0
  98. package/dist/cli-bundle/chunks/append-PNN6UIBZ.js +69 -0
  99. package/dist/cli-bundle/chunks/append-PNN6UIBZ.js.map +1 -0
  100. package/dist/cli-bundle/chunks/chunk-26KTVXJW.js +218 -0
  101. package/dist/cli-bundle/chunks/chunk-26KTVXJW.js.map +1 -0
  102. package/dist/cli-bundle/chunks/chunk-3HUE7XOF.js +27 -0
  103. package/dist/cli-bundle/chunks/chunk-3HUE7XOF.js.map +7 -0
  104. package/dist/cli-bundle/chunks/chunk-3OH4DAEB.js +761 -0
  105. package/dist/cli-bundle/chunks/chunk-3OH4DAEB.js.map +7 -0
  106. package/dist/cli-bundle/chunks/chunk-4LTBNUYT.js +5553 -0
  107. package/dist/cli-bundle/chunks/chunk-4LTBNUYT.js.map +1 -0
  108. package/dist/cli-bundle/chunks/chunk-4PJQSECJ.js +634 -0
  109. package/dist/cli-bundle/chunks/chunk-4PJQSECJ.js.map +7 -0
  110. package/dist/cli-bundle/chunks/chunk-4QCR4QW3.js +1832 -0
  111. package/dist/cli-bundle/chunks/chunk-4QCR4QW3.js.map +1 -0
  112. package/dist/cli-bundle/chunks/chunk-5IRA6IYD.js +1891 -0
  113. package/dist/cli-bundle/chunks/chunk-5IRA6IYD.js.map +7 -0
  114. package/dist/cli-bundle/chunks/chunk-5KB4X7YY.js +412 -0
  115. package/dist/cli-bundle/chunks/chunk-5KB4X7YY.js.map +1 -0
  116. package/dist/cli-bundle/chunks/chunk-5PAOPUZX.js +182 -0
  117. package/dist/cli-bundle/chunks/chunk-5PAOPUZX.js.map +1 -0
  118. package/dist/cli-bundle/chunks/chunk-7K24QB23.js +698 -0
  119. package/dist/cli-bundle/chunks/chunk-7K24QB23.js.map +1 -0
  120. package/dist/cli-bundle/chunks/chunk-A6PEXMYN.js +380 -0
  121. package/dist/cli-bundle/chunks/chunk-A6PEXMYN.js.map +1 -0
  122. package/dist/cli-bundle/chunks/chunk-ASQM3IF5.js +230 -0
  123. package/dist/cli-bundle/chunks/chunk-ASQM3IF5.js.map +1 -0
  124. package/dist/cli-bundle/chunks/chunk-ATBVS6WW.js +185 -0
  125. package/dist/cli-bundle/chunks/chunk-ATBVS6WW.js.map +7 -0
  126. package/dist/cli-bundle/chunks/chunk-AXXKLVTW.js +332 -0
  127. package/dist/cli-bundle/chunks/chunk-AXXKLVTW.js.map +1 -0
  128. package/dist/cli-bundle/chunks/chunk-B3N4TKNL.js +1681 -0
  129. package/dist/cli-bundle/chunks/chunk-B3N4TKNL.js.map +7 -0
  130. package/dist/cli-bundle/chunks/{chunk-PB2YU2E3.js → chunk-BNL6S7QH.js} +28 -70
  131. package/dist/cli-bundle/chunks/chunk-BNL6S7QH.js.map +7 -0
  132. package/dist/cli-bundle/chunks/chunk-CCUFLH4J.js +154 -0
  133. package/dist/cli-bundle/chunks/chunk-CCUFLH4J.js.map +1 -0
  134. package/dist/cli-bundle/chunks/chunk-CJDQB2ED.js +341 -0
  135. package/dist/cli-bundle/chunks/chunk-CJDQB2ED.js.map +7 -0
  136. package/dist/cli-bundle/chunks/chunk-CWT53EYT.js +1340 -0
  137. package/dist/cli-bundle/chunks/chunk-CWT53EYT.js.map +1 -0
  138. package/dist/cli-bundle/chunks/chunk-D3WUNETC.js +349 -0
  139. package/dist/cli-bundle/chunks/chunk-D3WUNETC.js.map +7 -0
  140. package/dist/cli-bundle/chunks/chunk-D5X7N6FI.js +1714 -0
  141. package/dist/cli-bundle/chunks/chunk-D5X7N6FI.js.map +7 -0
  142. package/dist/cli-bundle/chunks/chunk-DFIZGAI5.js +550 -0
  143. package/dist/cli-bundle/chunks/chunk-DFIZGAI5.js.map +7 -0
  144. package/dist/cli-bundle/chunks/chunk-DFUSXJDE.js +1704 -0
  145. package/dist/cli-bundle/chunks/chunk-DFUSXJDE.js.map +1 -0
  146. package/dist/cli-bundle/chunks/chunk-EAOG77HM.js +56 -0
  147. package/dist/cli-bundle/chunks/chunk-EAOG77HM.js.map +7 -0
  148. package/dist/cli-bundle/chunks/chunk-EHXPIKKP.js +2988 -0
  149. package/dist/cli-bundle/chunks/chunk-EHXPIKKP.js.map +1 -0
  150. package/dist/cli-bundle/chunks/chunk-FVXM3GKS.js +128 -0
  151. package/dist/cli-bundle/chunks/chunk-FVXM3GKS.js.map +1 -0
  152. package/dist/cli-bundle/chunks/chunk-G5BACLYH.js +454 -0
  153. package/dist/cli-bundle/chunks/chunk-G5BACLYH.js.map +1 -0
  154. package/dist/cli-bundle/chunks/chunk-GCAVRLGE.js +383 -0
  155. package/dist/cli-bundle/chunks/chunk-GCAVRLGE.js.map +7 -0
  156. package/dist/cli-bundle/chunks/chunk-GFWHHMVV.js +57 -0
  157. package/dist/cli-bundle/chunks/chunk-GFWHHMVV.js.map +1 -0
  158. package/dist/cli-bundle/chunks/chunk-GNHVV4SY.js +3860 -0
  159. package/dist/cli-bundle/chunks/chunk-GNHVV4SY.js.map +1 -0
  160. package/dist/cli-bundle/chunks/chunk-GPGAYASV.js +346 -0
  161. package/dist/cli-bundle/chunks/chunk-GPGAYASV.js.map +1 -0
  162. package/dist/cli-bundle/chunks/chunk-HPH6X4ZZ.js +1356 -0
  163. package/dist/cli-bundle/chunks/chunk-HPH6X4ZZ.js.map +7 -0
  164. package/dist/cli-bundle/chunks/chunk-HZOS2UG5.js +342 -0
  165. package/dist/cli-bundle/chunks/chunk-HZOS2UG5.js.map +7 -0
  166. package/dist/cli-bundle/chunks/chunk-IUV734HF.js +17 -0
  167. package/dist/cli-bundle/chunks/chunk-IUV734HF.js.map +1 -0
  168. package/dist/cli-bundle/chunks/chunk-J27KIHTG.js +15 -0
  169. package/dist/cli-bundle/chunks/chunk-J27KIHTG.js.map +1 -0
  170. package/dist/cli-bundle/chunks/chunk-JB4RGL4V.js +185 -0
  171. package/dist/cli-bundle/chunks/chunk-JB4RGL4V.js.map +7 -0
  172. package/dist/cli-bundle/chunks/chunk-JQI2HE55.js +130 -0
  173. package/dist/cli-bundle/chunks/chunk-JQI2HE55.js.map +1 -0
  174. package/dist/cli-bundle/chunks/chunk-K47WAYQV.js +60 -0
  175. package/dist/cli-bundle/chunks/chunk-K47WAYQV.js.map +7 -0
  176. package/dist/cli-bundle/chunks/chunk-KA24HME7.js +79 -0
  177. package/dist/cli-bundle/chunks/chunk-KA24HME7.js.map +7 -0
  178. package/dist/cli-bundle/chunks/chunk-KBG47ZOY.js +1325 -0
  179. package/dist/cli-bundle/chunks/chunk-KBG47ZOY.js.map +1 -0
  180. package/dist/cli-bundle/chunks/chunk-KCMIYKTA.js +242 -0
  181. package/dist/cli-bundle/chunks/chunk-KCMIYKTA.js.map +1 -0
  182. package/dist/cli-bundle/chunks/chunk-KK6YPGH3.js +221 -0
  183. package/dist/cli-bundle/chunks/chunk-KK6YPGH3.js.map +7 -0
  184. package/dist/cli-bundle/chunks/chunk-LDJK7SHN.js +157 -0
  185. package/dist/cli-bundle/chunks/chunk-LDJK7SHN.js.map +7 -0
  186. package/dist/cli-bundle/chunks/chunk-LXYVKYMQ.js +24 -0
  187. package/dist/cli-bundle/chunks/chunk-LXYVKYMQ.js.map +1 -0
  188. package/dist/cli-bundle/chunks/chunk-MISYRLEP.js +80 -0
  189. package/dist/cli-bundle/chunks/chunk-MISYRLEP.js.map +1 -0
  190. package/dist/cli-bundle/chunks/chunk-N5YF3VFN.js +457 -0
  191. package/dist/cli-bundle/chunks/chunk-N5YF3VFN.js.map +7 -0
  192. package/dist/cli-bundle/chunks/chunk-NQP3ECKF.js +173 -0
  193. package/dist/cli-bundle/chunks/chunk-NQP3ECKF.js.map +1 -0
  194. package/dist/cli-bundle/chunks/chunk-O5IBJE6S.js +338 -0
  195. package/dist/cli-bundle/chunks/chunk-O5IBJE6S.js.map +1 -0
  196. package/dist/cli-bundle/chunks/chunk-O7IWB35H.js +18 -0
  197. package/dist/cli-bundle/chunks/chunk-O7IWB35H.js.map +7 -0
  198. package/dist/cli-bundle/chunks/chunk-OIQIXTNB.js +3040 -0
  199. package/dist/cli-bundle/chunks/chunk-OIQIXTNB.js.map +7 -0
  200. package/dist/cli-bundle/chunks/chunk-ORTLYVA4.js +751 -0
  201. package/dist/cli-bundle/chunks/chunk-ORTLYVA4.js.map +1 -0
  202. package/dist/cli-bundle/chunks/chunk-OUF3ARDX.js +1861 -0
  203. package/dist/cli-bundle/chunks/chunk-OUF3ARDX.js.map +7 -0
  204. package/dist/cli-bundle/chunks/chunk-QAJBIGRA.js +20 -0
  205. package/dist/cli-bundle/chunks/chunk-QAJBIGRA.js.map +7 -0
  206. package/dist/cli-bundle/chunks/chunk-RANZIID5.js +176 -0
  207. package/dist/cli-bundle/chunks/chunk-RANZIID5.js.map +7 -0
  208. package/dist/cli-bundle/chunks/chunk-RQAWLSUU.js +140 -0
  209. package/dist/cli-bundle/chunks/chunk-RQAWLSUU.js.map +7 -0
  210. package/dist/cli-bundle/chunks/chunk-S3CV7JGJ.js +233 -0
  211. package/dist/cli-bundle/chunks/chunk-S3CV7JGJ.js.map +7 -0
  212. package/dist/cli-bundle/chunks/chunk-SRVKTWPR.js +5705 -0
  213. package/dist/cli-bundle/chunks/chunk-SRVKTWPR.js.map +7 -0
  214. package/dist/cli-bundle/chunks/chunk-SSFMJCPF.js +76 -0
  215. package/dist/cli-bundle/chunks/chunk-SSFMJCPF.js.map +1 -0
  216. package/dist/cli-bundle/chunks/chunk-SZQCER6S.js +631 -0
  217. package/dist/cli-bundle/chunks/chunk-SZQCER6S.js.map +1 -0
  218. package/dist/cli-bundle/chunks/chunk-T2ORWB6D.js +540 -0
  219. package/dist/cli-bundle/chunks/chunk-T2ORWB6D.js.map +1 -0
  220. package/dist/cli-bundle/chunks/chunk-TBQVUNVH.js +422 -0
  221. package/dist/cli-bundle/chunks/chunk-TBQVUNVH.js.map +7 -0
  222. package/dist/cli-bundle/chunks/{chunk-RJONRNXN.js → chunk-TK633IVD.js} +51 -32
  223. package/dist/cli-bundle/chunks/chunk-TK633IVD.js.map +7 -0
  224. package/dist/cli-bundle/chunks/chunk-TQ3ZK6VD.js +131 -0
  225. package/dist/cli-bundle/chunks/chunk-TQ3ZK6VD.js.map +7 -0
  226. package/dist/cli-bundle/chunks/chunk-UFCG3SWR.js +119 -0
  227. package/dist/cli-bundle/chunks/chunk-UFCG3SWR.js.map +1 -0
  228. package/dist/cli-bundle/chunks/chunk-UOVLWB47.js +1664 -0
  229. package/dist/cli-bundle/chunks/chunk-UOVLWB47.js.map +1 -0
  230. package/dist/cli-bundle/chunks/chunk-V3JQ4IPL.js +186 -0
  231. package/dist/cli-bundle/chunks/chunk-V3JQ4IPL.js.map +1 -0
  232. package/dist/cli-bundle/chunks/chunk-VGO2T3TY.js +182 -0
  233. package/dist/cli-bundle/chunks/chunk-VGO2T3TY.js.map +1 -0
  234. package/dist/cli-bundle/chunks/chunk-WIKR7KFL.js +189 -0
  235. package/dist/cli-bundle/chunks/chunk-WIKR7KFL.js.map +7 -0
  236. package/dist/cli-bundle/chunks/chunk-XG7RJYHV.js +1385 -0
  237. package/dist/cli-bundle/chunks/chunk-XG7RJYHV.js.map +7 -0
  238. package/dist/cli-bundle/chunks/chunk-XSLQSXAH.js +53 -0
  239. package/dist/cli-bundle/chunks/chunk-XSLQSXAH.js.map +1 -0
  240. package/dist/cli-bundle/chunks/chunk-XX5LRINW.js +90 -0
  241. package/dist/cli-bundle/chunks/chunk-XX5LRINW.js.map +7 -0
  242. package/dist/cli-bundle/chunks/chunk-Y2AKE2HS.js +252 -0
  243. package/dist/cli-bundle/chunks/chunk-Y2AKE2HS.js.map +7 -0
  244. package/dist/cli-bundle/chunks/chunk-ZQ4F6EC4.js +3898 -0
  245. package/dist/cli-bundle/chunks/chunk-ZQ4F6EC4.js.map +7 -0
  246. package/dist/cli-bundle/chunks/chunk-ZRVSMOMR.js +1809 -0
  247. package/dist/cli-bundle/chunks/chunk-ZRVSMOMR.js.map +1 -0
  248. package/dist/cli-bundle/chunks/claim-AZLP7YFO.js +132 -0
  249. package/dist/cli-bundle/chunks/claim-AZLP7YFO.js.map +7 -0
  250. package/dist/cli-bundle/chunks/claim-ZFA7HKU4.js +129 -0
  251. package/dist/cli-bundle/chunks/claim-ZFA7HKU4.js.map +1 -0
  252. package/dist/cli-bundle/chunks/close-65DFYAVS.js +17 -0
  253. package/dist/cli-bundle/chunks/close-65DFYAVS.js.map +1 -0
  254. package/dist/cli-bundle/chunks/close-RMHQ3KWH.js +13 -0
  255. package/dist/cli-bundle/chunks/close-RMHQ3KWH.js.map +7 -0
  256. package/dist/cli-bundle/chunks/close-many-AKPZNSGI.js +311 -0
  257. package/dist/cli-bundle/chunks/close-many-AKPZNSGI.js.map +1 -0
  258. package/dist/cli-bundle/chunks/close-many-UKZSQGM7.js +314 -0
  259. package/dist/cli-bundle/chunks/close-many-UKZSQGM7.js.map +7 -0
  260. package/dist/cli-bundle/chunks/comments-AGBNSJJH.js +103 -0
  261. package/dist/cli-bundle/chunks/comments-AGBNSJJH.js.map +7 -0
  262. package/dist/cli-bundle/chunks/comments-CJWXQI7X.js +100 -0
  263. package/dist/cli-bundle/chunks/comments-CJWXQI7X.js.map +1 -0
  264. package/dist/cli-bundle/chunks/config-5ON3ADRH.js +1688 -0
  265. package/dist/cli-bundle/chunks/config-5ON3ADRH.js.map +7 -0
  266. package/dist/cli-bundle/chunks/config-DDPYIA6J.js +1671 -0
  267. package/dist/cli-bundle/chunks/config-DDPYIA6J.js.map +1 -0
  268. package/dist/cli-bundle/chunks/context-E6U3DWVM.js +1471 -0
  269. package/dist/cli-bundle/chunks/context-E6U3DWVM.js.map +7 -0
  270. package/dist/cli-bundle/chunks/context-ZOJEN5VT.js +1461 -0
  271. package/dist/cli-bundle/chunks/context-ZOJEN5VT.js.map +1 -0
  272. package/dist/cli-bundle/chunks/contracts-CXSFM45B.js +1277 -0
  273. package/dist/cli-bundle/chunks/contracts-CXSFM45B.js.map +7 -0
  274. package/dist/cli-bundle/chunks/contracts-LCSX5R53.js +1274 -0
  275. package/dist/cli-bundle/chunks/contracts-LCSX5R53.js.map +1 -0
  276. package/dist/cli-bundle/chunks/create-ATONSAZW.js +27 -0
  277. package/dist/cli-bundle/chunks/create-ATONSAZW.js.map +7 -0
  278. package/dist/cli-bundle/chunks/create-WYFKN2U4.js +31 -0
  279. package/dist/cli-bundle/chunks/create-WYFKN2U4.js.map +1 -0
  280. package/dist/cli-bundle/chunks/delete-RONNH4F4.js +58 -0
  281. package/dist/cli-bundle/chunks/delete-RONNH4F4.js.map +7 -0
  282. package/dist/cli-bundle/chunks/delete-ZXWC56WO.js +55 -0
  283. package/dist/cli-bundle/chunks/delete-ZXWC56WO.js.map +1 -0
  284. package/dist/cli-bundle/chunks/deps-EHXIFOZR.js +225 -0
  285. package/dist/cli-bundle/chunks/deps-EHXIFOZR.js.map +1 -0
  286. package/dist/cli-bundle/chunks/deps-WII3O4HB.js +228 -0
  287. package/dist/cli-bundle/chunks/deps-WII3O4HB.js.map +7 -0
  288. package/dist/cli-bundle/chunks/docs-JMVCFNHH.js +34 -0
  289. package/dist/cli-bundle/chunks/docs-JMVCFNHH.js.map +7 -0
  290. package/dist/cli-bundle/chunks/docs-PDREIMLS.js +31 -0
  291. package/dist/cli-bundle/chunks/docs-PDREIMLS.js.map +1 -0
  292. package/dist/cli-bundle/chunks/extension-B4ROVWJD.js +28 -0
  293. package/dist/cli-bundle/chunks/extension-B4ROVWJD.js.map +1 -0
  294. package/dist/cli-bundle/chunks/extension-G6UXSM5S.js +24 -0
  295. package/dist/cli-bundle/chunks/extension-G6UXSM5S.js.map +7 -0
  296. package/dist/cli-bundle/chunks/files-2PN7UM2D.js +282 -0
  297. package/dist/cli-bundle/chunks/files-2PN7UM2D.js.map +1 -0
  298. package/dist/cli-bundle/chunks/files-MXYS5W4M.js +285 -0
  299. package/dist/cli-bundle/chunks/files-MXYS5W4M.js.map +7 -0
  300. package/dist/cli-bundle/chunks/gc-GT552UJH.js +178 -0
  301. package/dist/cli-bundle/chunks/gc-GT552UJH.js.map +1 -0
  302. package/dist/cli-bundle/chunks/gc-QNBRJG6H.js +181 -0
  303. package/dist/cli-bundle/chunks/gc-QNBRJG6H.js.map +7 -0
  304. package/dist/cli-bundle/chunks/get-CINFEUIY.js +197 -0
  305. package/dist/cli-bundle/chunks/get-CINFEUIY.js.map +7 -0
  306. package/dist/cli-bundle/chunks/get-WXMLRG7M.js +194 -0
  307. package/dist/cli-bundle/chunks/get-WXMLRG7M.js.map +1 -0
  308. package/dist/cli-bundle/chunks/health-5VPOJQ53.js +1258 -0
  309. package/dist/cli-bundle/chunks/health-5VPOJQ53.js.map +1 -0
  310. package/dist/cli-bundle/chunks/health-IT5DBPRJ.js +1261 -0
  311. package/dist/cli-bundle/chunks/health-IT5DBPRJ.js.map +7 -0
  312. package/dist/cli-bundle/chunks/history-6FC4H6HI.js +20 -0
  313. package/dist/cli-bundle/chunks/history-6FC4H6HI.js.map +7 -0
  314. package/dist/cli-bundle/chunks/history-FLZIP7PM.js +24 -0
  315. package/dist/cli-bundle/chunks/history-FLZIP7PM.js.map +1 -0
  316. package/dist/cli-bundle/chunks/history-redact-SSZBAD76.js +23 -0
  317. package/dist/cli-bundle/chunks/history-redact-SSZBAD76.js.map +1 -0
  318. package/dist/cli-bundle/chunks/history-redact-XKYEZDBL.js +19 -0
  319. package/dist/cli-bundle/chunks/history-redact-XKYEZDBL.js.map +7 -0
  320. package/dist/cli-bundle/chunks/history-repair-KC5ZOJRZ.js +196 -0
  321. package/dist/cli-bundle/chunks/history-repair-KC5ZOJRZ.js.map +7 -0
  322. package/dist/cli-bundle/chunks/history-repair-X7CO5JJZ.js +193 -0
  323. package/dist/cli-bundle/chunks/history-repair-X7CO5JJZ.js.map +1 -0
  324. package/dist/cli-bundle/chunks/init-6MRFVOLH.js +20 -0
  325. package/dist/cli-bundle/chunks/init-6MRFVOLH.js.map +1 -0
  326. package/dist/cli-bundle/chunks/init-KHX3FEEM.js +16 -0
  327. package/dist/cli-bundle/chunks/init-KHX3FEEM.js.map +7 -0
  328. package/dist/cli-bundle/chunks/learnings-A3CLB5CO.js +47 -0
  329. package/dist/cli-bundle/chunks/learnings-A3CLB5CO.js.map +7 -0
  330. package/dist/cli-bundle/chunks/learnings-DCX55BNX.js +44 -0
  331. package/dist/cli-bundle/chunks/learnings-DCX55BNX.js.map +1 -0
  332. package/dist/cli-bundle/chunks/list-53LZ2AEO.js +20 -0
  333. package/dist/cli-bundle/chunks/list-53LZ2AEO.js.map +7 -0
  334. package/dist/cli-bundle/chunks/list-DBRECOG4.js +24 -0
  335. package/dist/cli-bundle/chunks/list-DBRECOG4.js.map +1 -0
  336. package/dist/cli-bundle/chunks/notes-42LIC3UE.js +47 -0
  337. package/dist/cli-bundle/chunks/notes-42LIC3UE.js.map +7 -0
  338. package/dist/cli-bundle/chunks/notes-P5O3VMQ3.js +44 -0
  339. package/dist/cli-bundle/chunks/notes-P5O3VMQ3.js.map +1 -0
  340. package/dist/cli-bundle/chunks/plan-HDQXEUKD.js +1174 -0
  341. package/dist/cli-bundle/chunks/plan-HDQXEUKD.js.map +7 -0
  342. package/dist/cli-bundle/chunks/plan-IGTE3WOJ.js +1171 -0
  343. package/dist/cli-bundle/chunks/plan-IGTE3WOJ.js.map +1 -0
  344. package/dist/cli-bundle/chunks/{register-list-query-EIVQ5FMR.js → register-list-query-AG3XKXWL.js} +25 -18
  345. package/dist/cli-bundle/chunks/register-list-query-AG3XKXWL.js.map +7 -0
  346. package/dist/cli-bundle/chunks/register-list-query-EMNSIUO4.js +227 -0
  347. package/dist/cli-bundle/chunks/register-list-query-EMNSIUO4.js.map +1 -0
  348. package/dist/cli-bundle/chunks/register-mutation-M3YS6XDO.js +813 -0
  349. package/dist/cli-bundle/chunks/register-mutation-M3YS6XDO.js.map +1 -0
  350. package/dist/cli-bundle/chunks/{register-mutation-RSZNPSGI.js → register-mutation-RSMT6DPK.js} +160 -39
  351. package/dist/cli-bundle/chunks/register-mutation-RSMT6DPK.js.map +7 -0
  352. package/dist/cli-bundle/chunks/register-operations-KYUOOOOD.js +370 -0
  353. package/dist/cli-bundle/chunks/register-operations-KYUOOOOD.js.map +1 -0
  354. package/dist/cli-bundle/chunks/{register-operations-APUSYDMR.js → register-operations-Q54JQZUN.js} +50 -32
  355. package/dist/cli-bundle/chunks/register-operations-Q54JQZUN.js.map +7 -0
  356. package/dist/cli-bundle/chunks/register-setup-DI6P7X75.js +242 -0
  357. package/dist/cli-bundle/chunks/register-setup-DI6P7X75.js.map +1 -0
  358. package/dist/cli-bundle/chunks/{register-setup-OZOKSMPJ.js → register-setup-YJKIQRKA.js} +21 -13
  359. package/dist/cli-bundle/chunks/register-setup-YJKIQRKA.js.map +7 -0
  360. package/dist/cli-bundle/chunks/restore-2XVTBLKQ.js +21 -0
  361. package/dist/cli-bundle/chunks/restore-2XVTBLKQ.js.map +1 -0
  362. package/dist/cli-bundle/chunks/restore-JL5QIH7H.js +17 -0
  363. package/dist/cli-bundle/chunks/restore-JL5QIH7H.js.map +7 -0
  364. package/dist/cli-bundle/chunks/schema-LVXZWFGY.js +770 -0
  365. package/dist/cli-bundle/chunks/schema-LVXZWFGY.js.map +1 -0
  366. package/dist/cli-bundle/chunks/schema-V6BX65Q2.js +780 -0
  367. package/dist/cli-bundle/chunks/schema-V6BX65Q2.js.map +7 -0
  368. package/dist/cli-bundle/chunks/search-5A3BMFA7.js +1144 -0
  369. package/dist/cli-bundle/chunks/search-5A3BMFA7.js.map +7 -0
  370. package/dist/cli-bundle/chunks/search-C7NPB7G7.js +1127 -0
  371. package/dist/cli-bundle/chunks/search-C7NPB7G7.js.map +1 -0
  372. package/dist/cli-bundle/chunks/stats-FNLYVXTB.js +120 -0
  373. package/dist/cli-bundle/chunks/stats-FNLYVXTB.js.map +1 -0
  374. package/dist/cli-bundle/chunks/stats-Y2CBTZSL.js +123 -0
  375. package/dist/cli-bundle/chunks/stats-Y2CBTZSL.js.map +7 -0
  376. package/dist/cli-bundle/chunks/test-OFYONO3C.js +35 -0
  377. package/dist/cli-bundle/chunks/test-OFYONO3C.js.map +1 -0
  378. package/dist/cli-bundle/chunks/test-RJ4ZF35X.js +31 -0
  379. package/dist/cli-bundle/chunks/test-RJ4ZF35X.js.map +7 -0
  380. package/dist/cli-bundle/chunks/test-all-EEMKNTGU.js +331 -0
  381. package/dist/cli-bundle/chunks/test-all-EEMKNTGU.js.map +7 -0
  382. package/dist/cli-bundle/chunks/test-all-OJE6CIO7.js +328 -0
  383. package/dist/cli-bundle/chunks/test-all-OJE6CIO7.js.map +1 -0
  384. package/dist/cli-bundle/chunks/test-runs-IPOPFOAF.js +929 -0
  385. package/dist/cli-bundle/chunks/test-runs-IPOPFOAF.js.map +1 -0
  386. package/dist/cli-bundle/chunks/test-runs-L2M7WKH7.js +939 -0
  387. package/dist/cli-bundle/chunks/test-runs-L2M7WKH7.js.map +7 -0
  388. package/dist/cli-bundle/chunks/update-6YEHPVXH.js +25 -0
  389. package/dist/cli-bundle/chunks/update-6YEHPVXH.js.map +1 -0
  390. package/dist/cli-bundle/chunks/update-PYLVHMRD.js +21 -0
  391. package/dist/cli-bundle/chunks/update-PYLVHMRD.js.map +7 -0
  392. package/dist/cli-bundle/chunks/update-many-322CCH2L.js +608 -0
  393. package/dist/cli-bundle/chunks/update-many-322CCH2L.js.map +7 -0
  394. package/dist/cli-bundle/chunks/update-many-DYWGW57M.js +605 -0
  395. package/dist/cli-bundle/chunks/update-many-DYWGW57M.js.map +1 -0
  396. package/dist/cli-bundle/chunks/upgrade-2U727SAM.js +269 -0
  397. package/dist/cli-bundle/chunks/upgrade-2U727SAM.js.map +7 -0
  398. package/dist/cli-bundle/chunks/upgrade-3W3RVSNM.js +266 -0
  399. package/dist/cli-bundle/chunks/upgrade-3W3RVSNM.js.map +1 -0
  400. package/dist/cli-bundle/chunks/validate-GZ24NYHO.js +1120 -0
  401. package/dist/cli-bundle/chunks/validate-GZ24NYHO.js.map +1 -0
  402. package/dist/cli-bundle/chunks/validate-ZFVWPEEN.js +1123 -0
  403. package/dist/cli-bundle/chunks/validate-ZFVWPEEN.js.map +7 -0
  404. package/dist/cli-bundle/main.js +615 -121
  405. package/dist/cli-bundle/main.js.map +4 -4
  406. package/dist/core/checkpoint/mutation-checkpoint.d.ts +44 -0
  407. package/dist/core/checkpoint/mutation-checkpoint.js +119 -0
  408. package/dist/core/checkpoint/mutation-checkpoint.js.map +1 -0
  409. package/dist/core/config/positional-value.js +4 -2
  410. package/dist/core/config/positional-value.js.map +1 -1
  411. package/dist/core/diagnostics/remediation.d.ts +73 -0
  412. package/dist/core/diagnostics/remediation.js +328 -0
  413. package/dist/core/diagnostics/remediation.js.map +1 -0
  414. package/dist/core/extensions/extension-hook-runtime.js +9 -2
  415. package/dist/core/extensions/extension-hook-runtime.js.map +1 -1
  416. package/dist/core/extensions/extension-types.d.ts +60 -4
  417. package/dist/core/extensions/extension-types.js +2 -2
  418. package/dist/core/extensions/extension-types.js.map +1 -1
  419. package/dist/core/extensions/index.d.ts +5 -1
  420. package/dist/core/extensions/index.js +61 -2
  421. package/dist/core/extensions/index.js.map +1 -1
  422. package/dist/core/extensions/item-fields.d.ts +5 -1
  423. package/dist/core/extensions/item-fields.js +126 -4
  424. package/dist/core/extensions/item-fields.js.map +1 -1
  425. package/dist/core/extensions/loader.js +283 -8
  426. package/dist/core/extensions/loader.js.map +1 -1
  427. package/dist/core/item/item-format.d.ts +3 -2
  428. package/dist/core/item/item-format.js +15 -10
  429. package/dist/core/item/item-format.js.map +1 -1
  430. package/dist/core/item/item-type-definition.js +6 -2
  431. package/dist/core/item/item-type-definition.js.map +1 -1
  432. package/dist/core/item/status-filter.d.ts +29 -0
  433. package/dist/core/item/status-filter.js +97 -0
  434. package/dist/core/item/status-filter.js.map +1 -0
  435. package/dist/core/item/type-registry.d.ts +4 -0
  436. package/dist/core/item/type-registry.js +12 -2
  437. package/dist/core/item/type-registry.js.map +1 -1
  438. package/dist/core/output/output.js +17 -5
  439. package/dist/core/output/output.js.map +1 -1
  440. package/dist/core/schema/item-types-file.d.ts +15 -0
  441. package/dist/core/schema/item-types-file.js +27 -2
  442. package/dist/core/schema/item-types-file.js.map +1 -1
  443. package/dist/core/schema/runtime-field-filters.js +4 -3
  444. package/dist/core/schema/runtime-field-filters.js.map +1 -1
  445. package/dist/core/schema/runtime-field-values.d.ts +1 -1
  446. package/dist/core/schema/runtime-field-values.js +10 -4
  447. package/dist/core/schema/runtime-field-values.js.map +1 -1
  448. package/dist/core/schema/runtime-schema.js +75 -2
  449. package/dist/core/schema/runtime-schema.js.map +1 -1
  450. package/dist/core/schema/status-defs-file.d.ts +113 -0
  451. package/dist/core/schema/status-defs-file.js +260 -0
  452. package/dist/core/schema/status-defs-file.js.map +1 -0
  453. package/dist/core/schema/type-workflows.d.ts +64 -0
  454. package/dist/core/schema/type-workflows.js +98 -0
  455. package/dist/core/schema/type-workflows.js.map +1 -0
  456. package/dist/core/search/background-refresh.d.ts +53 -0
  457. package/dist/core/search/background-refresh.js +286 -0
  458. package/dist/core/search/background-refresh.js.map +1 -0
  459. package/dist/core/search/cache.d.ts +23 -2
  460. package/dist/core/search/cache.js +135 -30
  461. package/dist/core/search/cache.js.map +1 -1
  462. package/dist/core/search/http-client.d.ts +2 -2
  463. package/dist/core/search/http-client.js +2 -2
  464. package/dist/core/search/http-client.js.map +1 -1
  465. package/dist/core/search/vector-stores.d.ts +1 -0
  466. package/dist/core/search/vector-stores.js +69 -15
  467. package/dist/core/search/vector-stores.js.map +1 -1
  468. package/dist/core/search/vectorization-metadata.d.ts +13 -0
  469. package/dist/core/search/vectorization-metadata.js +65 -0
  470. package/dist/core/search/vectorization-metadata.js.map +1 -0
  471. package/dist/core/shared/constants.d.ts +2 -2
  472. package/dist/core/shared/constants.js +2 -3
  473. package/dist/core/shared/constants.js.map +1 -1
  474. package/dist/core/shared/serialization.d.ts +1 -0
  475. package/dist/core/shared/serialization.js +86 -2
  476. package/dist/core/shared/serialization.js.map +1 -1
  477. package/dist/core/store/front-matter-cache.js +14 -5
  478. package/dist/core/store/front-matter-cache.js.map +1 -1
  479. package/dist/core/store/item-format-migration.js +25 -15
  480. package/dist/core/store/item-format-migration.js.map +1 -1
  481. package/dist/core/store/item-store.d.ts +2 -0
  482. package/dist/core/store/item-store.js +61 -6
  483. package/dist/core/store/item-store.js.map +1 -1
  484. package/dist/core/store/settings-validator.js +22 -2
  485. package/dist/core/store/settings-validator.js.map +1 -1
  486. package/dist/core/store/settings.js +40 -5
  487. package/dist/core/store/settings.js.map +1 -1
  488. package/dist/core/telemetry/consent.js +3 -3
  489. package/dist/core/telemetry/consent.js.map +1 -1
  490. package/dist/core/telemetry/observability.js +4 -3
  491. package/dist/core/telemetry/observability.js.map +1 -1
  492. package/dist/core/telemetry/runtime.d.ts +10 -0
  493. package/dist/core/telemetry/runtime.js +86 -2
  494. package/dist/core/telemetry/runtime.js.map +1 -1
  495. package/dist/mcp/server.js +221 -12
  496. package/dist/mcp/server.js.map +1 -1
  497. package/dist/sdk/cli-contracts/commander-mutation-options.js +16 -2
  498. package/dist/sdk/cli-contracts/commander-mutation-options.js.map +1 -1
  499. package/dist/sdk/cli-contracts/commander-types.js +7 -2
  500. package/dist/sdk/cli-contracts/commander-types.js.map +1 -1
  501. package/dist/sdk/cli-contracts/enum-contracts.d.ts +2 -2
  502. package/dist/sdk/cli-contracts/enum-contracts.js +4 -2
  503. package/dist/sdk/cli-contracts/enum-contracts.js.map +1 -1
  504. package/dist/sdk/cli-contracts/tool-option-contracts.d.ts +1 -0
  505. package/dist/sdk/cli-contracts/tool-option-contracts.js +53 -3
  506. package/dist/sdk/cli-contracts/tool-option-contracts.js.map +1 -1
  507. package/dist/sdk/cli-contracts/tool-parameter-tables.js +37 -8
  508. package/dist/sdk/cli-contracts/tool-parameter-tables.js.map +1 -1
  509. package/dist/sdk/cli-contracts.d.ts +19 -1
  510. package/dist/sdk/cli-contracts.js +211 -18
  511. package/dist/sdk/cli-contracts.js.map +1 -1
  512. package/dist/sdk/errors.d.ts +22 -0
  513. package/dist/sdk/errors.js +46 -0
  514. package/dist/sdk/errors.js.map +1 -0
  515. package/dist/sdk/index.d.ts +2 -1
  516. package/dist/sdk/index.js +3 -2
  517. package/dist/sdk/index.js.map +1 -1
  518. package/dist/sdk/package-import-adapters.js +14 -3
  519. package/dist/sdk/package-import-adapters.js.map +1 -1
  520. package/dist/sdk/runtime.d.ts +1 -0
  521. package/dist/sdk/runtime.js +3 -2
  522. package/dist/sdk/runtime.js.map +1 -1
  523. package/dist/sdk/testing.d.ts +77 -0
  524. package/dist/sdk/testing.js +239 -0
  525. package/dist/sdk/testing.js.map +1 -0
  526. package/dist/types.d.ts +26 -1
  527. package/dist/types.js +3 -2
  528. package/dist/types.js.map +1 -1
  529. package/docs/AGENT_GUIDE.md +21 -2
  530. package/docs/COMMANDS.md +85 -5
  531. package/docs/CONFIGURATION.md +49 -2
  532. package/docs/EXTENSIONS.md +118 -6
  533. package/docs/QUICKSTART.md +2 -0
  534. package/docs/RELEASING.md +3 -3
  535. package/docs/SDK.md +273 -1
  536. package/docs/TESTING.md +17 -0
  537. package/docs/examples/policy-restricted-extension/manifest.json +1 -0
  538. package/docs/examples/starter-extension/index.js +9 -1
  539. package/docs/examples/starter-extension/manifest.json +1 -0
  540. package/package.json +12 -7
  541. package/packages/pm-beads/extensions/beads/index.js +2 -4
  542. package/packages/pm-beads/extensions/beads/index.ts +43 -33
  543. package/packages/pm-beads/extensions/beads/manifest.json +12 -1
  544. package/packages/pm-calendar/README.md +6 -0
  545. package/packages/pm-calendar/extensions/calendar/index.js +6 -1
  546. package/packages/pm-calendar/extensions/calendar/index.ts +6 -1
  547. package/packages/pm-calendar/extensions/calendar/manifest.json +6 -1
  548. package/packages/pm-governance-audit/extensions/governance-audit/manifest.json +6 -1
  549. package/packages/pm-guide-shell/README.md +4 -0
  550. package/packages/pm-guide-shell/extensions/guide-shell/index.js +22 -0
  551. package/packages/pm-guide-shell/extensions/guide-shell/index.ts +22 -0
  552. package/packages/pm-guide-shell/extensions/guide-shell/manifest.json +6 -1
  553. package/packages/pm-guide-shell/extensions/guide-shell/runtime.js +74 -3
  554. package/packages/pm-guide-shell/extensions/guide-shell/runtime.ts +84 -4
  555. package/packages/pm-lifecycle-hooks/README.md +29 -0
  556. package/packages/pm-lifecycle-hooks/extensions/lifecycle-hooks/index.js +18 -0
  557. package/packages/pm-lifecycle-hooks/extensions/lifecycle-hooks/index.ts +20 -0
  558. package/packages/pm-lifecycle-hooks/extensions/lifecycle-hooks/manifest.json +9 -0
  559. package/packages/pm-lifecycle-hooks/package.json +52 -0
  560. package/packages/pm-linked-test-adapters/extensions/linked-test-adapters/manifest.json +13 -1
  561. package/packages/pm-search-advanced/extensions/search-advanced/index.js +69 -1
  562. package/packages/pm-search-advanced/extensions/search-advanced/index.ts +91 -2
  563. package/packages/pm-search-advanced/extensions/search-advanced/manifest.json +13 -1
  564. package/packages/pm-templates/extensions/templates/manifest.json +6 -1
  565. package/packages/pm-todos/extensions/todos/index.js +3 -7
  566. package/packages/pm-todos/extensions/todos/index.ts +55 -42
  567. package/packages/pm-todos/extensions/todos/manifest.json +13 -1
  568. package/scripts/bundle-cli.mjs +121 -17
  569. package/dist/cli-bundle/chunks/chunk-PB2YU2E3.js.map +0 -7
  570. package/dist/cli-bundle/chunks/chunk-RJONRNXN.js.map +0 -7
  571. package/dist/cli-bundle/chunks/chunk-SW5BMMCU.js +0 -13864
  572. package/dist/cli-bundle/chunks/chunk-SW5BMMCU.js.map +0 -7
  573. package/dist/cli-bundle/chunks/commands-XJ4TJ5UN.js +0 -24225
  574. package/dist/cli-bundle/chunks/commands-XJ4TJ5UN.js.map +0 -7
  575. package/dist/cli-bundle/chunks/register-list-query-EIVQ5FMR.js.map +0 -7
  576. package/dist/cli-bundle/chunks/register-mutation-RSZNPSGI.js.map +0 -7
  577. package/dist/cli-bundle/chunks/register-operations-APUSYDMR.js.map +0 -7
  578. package/dist/cli-bundle/chunks/register-setup-OZOKSMPJ.js.map +0 -7
package/docs/SDK.md CHANGED
@@ -19,6 +19,8 @@ import { defineExtension } from "@unbrained/pm-cli/sdk";
19
19
  Supported package exports:
20
20
 
21
21
  - `@unbrained/pm-cli/sdk` - stable extension and package authoring API plus CLI contract exports.
22
+ - `@unbrained/pm-cli/sdk/runtime` - runtime helpers for packages that need command implementations without private imports.
23
+ - `@unbrained/pm-cli/sdk/testing` - lightweight assertion helpers for package/extension tests.
22
24
  - `@unbrained/pm-cli/cli` - runtime CLI module entrypoint for package resolution, not a typed library API.
23
25
 
24
26
  ## Public Exports
@@ -42,6 +44,9 @@ Common authoring exports:
42
44
  - `EXTENSION_POLICY_SURFACES`
43
45
  - `EXTENSION_TRUST_MODES`
44
46
  - `EXTENSION_SANDBOX_PROFILES`
47
+ - `PM_CLI_EXPECTED_ERROR_NAME`
48
+ - `createPmCliExpectedError`
49
+ - `isPmCliExpectedError`
45
50
 
46
51
  Package manifest exports:
47
52
 
@@ -58,6 +63,15 @@ Command/action contract exports:
58
63
  - `PM_PROVIDER_TOOL_PARAMETERS_SCHEMA`
59
64
  - `PM_TOOL_ACTION_PARAMETER_CONTRACTS`
60
65
 
66
+ Testing helper exports (also under `@unbrained/pm-cli/sdk/testing`):
67
+
68
+ - `activateExtensionForTest`
69
+ - `assertRegisteredCommandContract`
70
+ - `assertRegisteredHook`
71
+ - `assertRegisteredSearchProvider`
72
+ - `assertRegisteredImporter`
73
+ - `assertRegisteredExporter`
74
+
61
75
  Commander option contract exports:
62
76
 
63
77
  - `CREATE_COMMANDER_OPTION_REGISTRATION_CONTRACTS`
@@ -87,9 +101,13 @@ Common types:
87
101
 
88
102
  - `ExtensionApi`
89
103
  - `ExtensionManifest`
104
+ - `ExtensionManifestEngines`
90
105
  - `CommandDefinition`
91
106
  - `FlagDefinition`
107
+ - `ImportExportRegistrationOptions`
92
108
  - `ServiceOverrideContext`
109
+ - `PmCliExpectedError`
110
+ - `CreatePmCliExpectedErrorOptions`
93
111
  - `SchemaFieldDefinition`
94
112
  - `SchemaItemTypeDefinition`
95
113
  - `SearchProviderDefinition`
@@ -121,6 +139,15 @@ const contracts = await getContracts("/path/to/project/.agents/pm", {
121
139
  });
122
140
  ```
123
141
 
142
+ For item-type context, use the CLI inspection primitives before issuing custom-domain mutations:
143
+
144
+ ```bash
145
+ pm schema list --json
146
+ pm schema show Experiment --json
147
+ ```
148
+
149
+ `schema list/show` include built-in, persisted custom, and extension-provided item types. Extension-provided types include provenance (`layer` and package/extension name) in `show --json`, which helps agents decide whether a missing type should be registered persistently with `pm schema add-type`, added through `pm init --type-preset`, or provided by an installed package.
150
+
124
151
  When a package-owned command is missing at runtime, CLI usage guidance now includes a deterministic install hint (for example `pm install calendar` or `pm install search-advanced`) so agents can recover in one retry.
125
152
 
126
153
  Package installs currently activate only extension resources. Additional package resource kinds (`docs`, `examples`) are metadata-first and available through package manifest/catalog inspection.
@@ -147,6 +174,20 @@ For provider-safe schemas, use `PM_PROVIDER_TOOL_PARAMETERS_SCHEMA`. It is flat
147
174
  | `registerSearchProvider` | `search` |
148
175
  | `registerVectorStoreAdapter` | `search` |
149
176
 
177
+ Some override surfaces are single-winner: command overrides, parser overrides, preflight overrides, and output renderers. Keep those handlers narrowly scoped and verify package combinations with:
178
+
179
+ ```bash
180
+ pm package doctor --project --detail deep --trace
181
+ pm health --check-only --brief
182
+ ```
183
+
184
+ Collision warnings are deterministic and include package names plus deactivation guidance.
185
+ If extension code calls a `register*` API without declaring the matching
186
+ manifest capability, activation fails with
187
+ `extension_capability_missing:<name>:<capability>` in doctor triage. Run doctor
188
+ with `--trace` to see the exact method, `missing_capability`, and manifest
189
+ capability entry to add before publishing.
190
+
150
191
  ## Minimal Command Extension
151
192
 
152
193
  ```ts
@@ -174,10 +215,167 @@ Manifest:
174
215
  "name": "hello",
175
216
  "version": "0.1.0",
176
217
  "entry": "./index.js",
218
+ "pm_min_version": "2026.5.31",
177
219
  "capabilities": ["commands"]
178
220
  }
179
221
  ```
180
222
 
223
+ `pm_min_version` is an inclusive minimum pm CLI version. When the installed CLI is older than the manifest requires, discovery emits `extension_pm_min_version_unmet:<layer>:<name>:required=<version>:current=<version>` and does not load the extension. Use a plain numeric version such as `2026.5.31`; `>=2026.5.31` is accepted for compatibility with `engines.pm`, but ranges beyond an inclusive minimum are not interpreted.
224
+
225
+ Manifest typing also accepts optional `engines` metadata:
226
+
227
+ ```json
228
+ {
229
+ "engines": {
230
+ "pm": ">=2026.5.31",
231
+ "node": ">=20"
232
+ }
233
+ }
234
+ ```
235
+
236
+ Use `pm_min_version` for the loader gate. Keep `engines` as package-manager and tooling metadata.
237
+
238
+ ## Expected CLI Errors
239
+
240
+ Package commands should throw expected user/action errors with the public SDK shape so the CLI can preserve exit codes and Sentry can filter expected retry failures:
241
+
242
+ ```ts
243
+ import { EXIT_CODE, createPmCliExpectedError } from "@unbrained/pm-cli/sdk";
244
+
245
+ throw createPmCliExpectedError("hello requires --name", {
246
+ exitCode: EXIT_CODE.USAGE,
247
+ context: {
248
+ code: "missing_name",
249
+ why: "The command needs a target name.",
250
+ },
251
+ });
252
+ ```
253
+
254
+ The helper returns an `Error` whose public name is `PmCliError` and whose `exitCode` is structural. That makes it safe for bundled, linked, and separately installed package code even when class identity is not shared with the running CLI.
255
+
256
+ ## Package Runtime Imports
257
+
258
+ Third-party packages should import from stable public SDK subpaths:
259
+
260
+ ```ts
261
+ import { defineExtension } from "@unbrained/pm-cli/sdk";
262
+ import { createPmCliExpectedError } from "@unbrained/pm-cli/sdk/runtime";
263
+ ```
264
+
265
+ `PM_CLI_PACKAGE_ROOT` is reserved for first-party packages bundled inside this repository. Those packages use it to locate the running CLI's `dist/sdk/runtime.js` before they are installed as independent npm packages. External packages must not depend on `PM_CLI_PACKAGE_ROOT`, `dist/` paths, or `src/core/...`; declare `@unbrained/pm-cli` as a dependency or peer dependency and import the public SDK subpaths instead.
266
+
267
+ ## Testing Helpers
268
+
269
+ Package tests can assert registration contracts without depending on Vitest-specific
270
+ helpers. Every assertion normalizes the expected name, returns the matched registration
271
+ entry, and throws an `Error` that lists what _is_ available when the expectation is
272
+ missing. They are exported from both `@unbrained/pm-cli/sdk/testing` and the main
273
+ `@unbrained/pm-cli/sdk` barrel.
274
+
275
+ Activate an in-memory extension module without private loader imports:
276
+
277
+ ```ts
278
+ import {
279
+ activateExtensionForTest,
280
+ assertRegisteredCommandContract,
281
+ } from "@unbrained/pm-cli/sdk/testing";
282
+
283
+ const activation = await activateExtensionForTest({
284
+ manifest: {
285
+ name: "hello-ext",
286
+ version: "0.1.0",
287
+ entry: "./index.js",
288
+ priority: 0,
289
+ capabilities: ["commands", "schema"],
290
+ },
291
+ activate(api) {
292
+ api.registerCommand({
293
+ name: "hello",
294
+ action: "hello",
295
+ description: "Return a deterministic hello payload.",
296
+ flags: [{ long: "--name", value_type: "string" }],
297
+ run: async () => ({ ok: true }),
298
+ });
299
+ },
300
+ });
301
+
302
+ assertRegisteredCommandContract(activation.registrations, {
303
+ command: "hello",
304
+ action: "hello",
305
+ flags: ["--name"],
306
+ });
307
+ ```
308
+
309
+ `activateExtensionForTest` uses the real pm activation engine and capability
310
+ guardrails, but it does not discover files or install packages. Use it for unit
311
+ tests of extension registration shape; keep `pm package doctor` and runtime
312
+ contracts in integration tests.
313
+
314
+ Assert a command registration contract:
315
+
316
+ ```ts
317
+ import { assertRegisteredCommandContract } from "@unbrained/pm-cli/sdk/testing";
318
+
319
+ assertRegisteredCommandContract(activation.registrations, {
320
+ command: "hello",
321
+ action: "hello",
322
+ flags: ["--name"],
323
+ });
324
+ ```
325
+
326
+ Assert importer, exporter, and search-provider registrations against an
327
+ `ExtensionRegistrationRegistry` (from `activation.registrations`). The optional
328
+ `extensionName` narrows the match to a single extension:
329
+
330
+ ```ts
331
+ import {
332
+ assertRegisteredExporter,
333
+ assertRegisteredImporter,
334
+ assertRegisteredSearchProvider,
335
+ } from "@unbrained/pm-cli/sdk/testing";
336
+
337
+ assertRegisteredImporter(activation.registrations, { importer: "jsonl" });
338
+ assertRegisteredExporter(activation.registrations, {
339
+ exporter: "jsonl",
340
+ extensionName: "my-ext",
341
+ });
342
+ assertRegisteredSearchProvider(activation.registrations, { provider: "semantic-local" });
343
+ ```
344
+
345
+ Hooks are surfaced via `activation.hooks` (an `ExtensionHookRegistry`), not the command
346
+ registry, so `assertRegisteredHook` takes the hook registry and a lifecycle `kind`
347
+ (`before_command` | `after_command` | `on_read` | `on_write` | `on_index`):
348
+
349
+ ```ts
350
+ import { assertRegisteredHook } from "@unbrained/pm-cli/sdk/testing";
351
+
352
+ const hook = assertRegisteredHook(activation.hooks, {
353
+ kind: "on_write",
354
+ extensionName: "my-ext",
355
+ });
356
+ // hook.run is the registered OnWriteHook handler
357
+ ```
358
+
359
+ The bundled `pm-lifecycle-hooks` package is the first-party hooks exemplar. It
360
+ declares only the `hooks` capability and registers a default-inert `afterCommand`
361
+ hook, so package authors can copy a lifecycle pattern that does not write files,
362
+ produce output, or alter command behavior.
363
+
364
+ `afterCommand` receives the command outcome plus an optional `affected` array for
365
+ item mutations. Each affected entry is a compact command context:
366
+ `id`, `op`, `item_type`, `previous_status`, `status`, `changed_fields`, and
367
+ partial `previous`/`current` front matter snapshots. Use this for
368
+ transition-aware packages such as notifications; do not parse the untyped
369
+ `result` payload when the transition fields are available.
370
+
371
+ `onWrite` receives `{ path, scope, op }` for every observed write. When the write
372
+ is tied to an item mutation, the context also includes `item_id`, `item_type`,
373
+ `before`, `after`, and `changed_fields`, so sync packages can mirror the exact
374
+ item change without reparsing files. Non-item writes omit those item fields.
375
+ `changed_fields` lists mutated fields for updates and uses lifecycle sentinels
376
+ for item lifecycle writes: `["imported"]` for package imports, `["restored"]`
377
+ for restores, and `["deleted"]` for deletes.
378
+
181
379
  ## Custom Item Type
182
380
 
183
381
  ```ts
@@ -208,6 +406,70 @@ export default defineExtension({
208
406
 
209
407
  Manifest capability: `schema`.
210
408
 
409
+ Declared item fields are first-class create/update inputs. Agents and importers can persist extension provenance without description markers:
410
+
411
+ ```bash
412
+ pm create "Import issue" --type Incident --field service=api --field severity=critical
413
+ pm update pm-1234 --field service=worker
414
+ ```
415
+
416
+ `--field` accepts only fields declared by active `registerItemFields` registrations and coerces values using the declared field type.
417
+
418
+ ## Importer / Exporter
419
+
420
+ `registerImporter(name, importer)` and `registerExporter(name, exporter)` register
421
+ a data adapter and automatically create a `<name> import` / `<name> export` command
422
+ path that invokes it. The handler receives an `ImportExportContext`
423
+ (`registration`, `action`, `command`, `args`, `options`, `global`, `pm_root`).
424
+
425
+ By default the auto-created command only has a handler. Pass an optional third
426
+ `ImportExportRegistrationOptions` argument to make it a first-class command with a
427
+ description, flags, intent, examples, failure hints, and positional arguments —
428
+ surfaced in `--help` and runtime contracts exactly like `registerCommand`:
429
+
430
+ ```ts
431
+ import { defineExtension } from "@unbrained/pm-cli/sdk";
432
+
433
+ export default defineExtension({
434
+ activate(api) {
435
+ api.registerImporter(
436
+ "jsonl",
437
+ async (context) => {
438
+ // context.options.file, context.global, context.pm_root, ...
439
+ return { ok: true, imported: 0 };
440
+ },
441
+ {
442
+ action: "jsonl-import",
443
+ description: "Import JSONL records into pm items.",
444
+ intent: "ingest external task records",
445
+ examples: ["pm jsonl import --file source.jsonl"],
446
+ failure_hints: ["Verify the JSONL source path exists."],
447
+ flags: [
448
+ {
449
+ long: "--file",
450
+ value_name: "path",
451
+ value_type: "string",
452
+ description: "Path to the JSONL source file.",
453
+ },
454
+ ],
455
+ },
456
+ );
457
+
458
+ api.registerExporter("jsonl", async () => ({ ok: true }), {
459
+ description: "Export pm items to JSONL.",
460
+ });
461
+ },
462
+ });
463
+ ```
464
+
465
+ Manifest capability: `importers` (and `schema` when supplying `flags`). The two-argument
466
+ form remains supported; supplying the options object never produces a command-handler
467
+ collision because the definition and handler share the same command path and extension.
468
+
469
+ The bundled `pm-beads` and `pm-todos` packages are first-party importer/exporter
470
+ exemplars that use this registration path and expose runtime contracts for their
471
+ generated commands.
472
+
211
473
  ## Search Provider
212
474
 
213
475
  ```ts
@@ -229,6 +491,15 @@ export default defineExtension({
229
491
 
230
492
  Manifest capability: `search`.
231
493
 
494
+ Core search invokes the registered `query` when `settings.search.provider` matches
495
+ the provider `name`. The bundled `pm-search-advanced` package ships a working
496
+ first-party exemplar: `searchAdvancedLocalProvider()` registers a deterministic,
497
+ dependency-free local lexical ranker named `search-advanced-local` (enable with
498
+ `pm config set search.provider search-advanced-local`). Authors building
499
+ embedding-backed providers (for example Ollama or a hosted model) implement
500
+ `embed`/`embedBatch` on the same `SearchProviderDefinition` shape, and may also
501
+ `registerVectorStoreAdapter` for a custom vector store.
502
+
232
503
  ## Robust Automation Pattern
233
504
 
234
505
  1. Read `PM_TOOL_ACTIONS` or `PM_TOOL_PARAMETERS_SCHEMA` for baseline static validation.
@@ -261,8 +532,9 @@ Treat `recovery.suggested_retry` as the first-choice deterministic replay comman
261
532
 
262
533
  - Keep handlers deterministic and JSON-like.
263
534
  - Return data, not pre-rendered terminal text, unless implementing a renderer or output service.
264
- - Keep service and preflight overrides narrow.
535
+ - Keep service, renderer, and preflight overrides narrow. For `output_format`, return `context.payload`, `null`, or `undefined` for unrelated commands; for renderers, return `null` when the payload should fall back to native rendering.
265
536
  - Declare only capabilities in use.
537
+ - Set `pm_min_version` when the package requires SDK or runtime behavior added after older pm releases.
266
538
  - Include examples and failure hints in dynamic commands.
267
539
  - Add `pm package doctor` diagnostics to testing instructions.
268
540
 
package/docs/TESTING.md CHANGED
@@ -48,6 +48,23 @@ pm test-all --status in_progress --progress
48
48
 
49
49
  Do not link `pm test-all` itself as an item-level test command. It creates recursive orchestration.
50
50
 
51
+ ## Package Ecosystem Smoke
52
+
53
+ After `pnpm build`, external package compatibility can be checked without
54
+ touching the repository tracker:
55
+
56
+ ```bash
57
+ pnpm smoke:external-packages -- --limit 10
58
+ pnpm smoke:external-packages -- --package pm-changelog
59
+ ```
60
+
61
+ The harness creates one temporary project per package, sets sandboxed `PM_PATH`
62
+ and `PM_GLOBAL_PATH`, installs the package with `pm install npm:<name>
63
+ --project`, runs `pm package doctor --project --detail deep --trace`, and probes
64
+ runtime contracts with `pm contracts --runtime-only --availability-only`. Use
65
+ `--discover-only` for the npm package list and `--keep-temp` only when debugging
66
+ a failing package root.
67
+
51
68
  ## PM Context Modes
52
69
 
53
70
  Linked PM commands default to schema context: settings and extensions are seeded, but tracker item data stays isolated.
@@ -3,6 +3,7 @@
3
3
  "version": "0.1.0",
4
4
  "entry": "./index.js",
5
5
  "manifest_version": 2,
6
+ "pm_min_version": "2026.5.0",
6
7
  "trusted": true,
7
8
  "provenance": {
8
9
  "source": "docs/examples/policy-restricted-extension",
@@ -94,8 +94,16 @@ export default defineExtension({
94
94
  });
95
95
 
96
96
  // renderers
97
- api.registerRenderer("json", (context) => stableJson(context.result));
97
+ api.registerRenderer("json", (context) => {
98
+ if (context.command !== "starter ping") {
99
+ return null;
100
+ }
101
+ return stableJson(context.result);
102
+ });
98
103
  api.registerRenderer("toon", (context) => {
104
+ if (context.command !== "starter ping") {
105
+ return null;
106
+ }
99
107
  const result = asRecord(context.result);
100
108
  const hooks = asRecord(result.hook_counts);
101
109
  return [
@@ -4,6 +4,7 @@
4
4
  "description": "SDK-first starter extension demonstrating all pm extension capabilities.",
5
5
  "entry": "./index.js",
6
6
  "manifest_version": 2,
7
+ "pm_min_version": "2026.5.0",
7
8
  "trusted": true,
8
9
  "provenance": {
9
10
  "source": "docs/examples/starter-extension",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@unbrained/pm-cli",
3
- "version": "2026.5.30",
3
+ "version": "2026.6.5",
4
4
  "description": "Git-native project management CLI for humans and agents.",
5
5
  "type": "module",
6
6
  "author": "unbrained",
@@ -33,6 +33,11 @@
33
33
  "import": "./dist/sdk/runtime.js",
34
34
  "default": "./dist/sdk/runtime.js"
35
35
  },
36
+ "./sdk/testing": {
37
+ "types": "./dist/sdk/testing.d.ts",
38
+ "import": "./dist/sdk/testing.js",
39
+ "default": "./dist/sdk/testing.js"
40
+ },
36
41
  "./cli": {
37
42
  "types": "./dist/cli/main.d.ts",
38
43
  "import": "./dist/cli/main.js",
@@ -70,6 +75,7 @@
70
75
  "quality:static": "node scripts/release/static-quality-gate.mjs",
71
76
  "quality:docs-skills": "node scripts/release/docs-skills-gate.mjs",
72
77
  "dogfood:package-first": "node scripts/dogfood-package-first.mjs",
78
+ "smoke:external-packages": "node scripts/smoke-external-packages.mjs",
73
79
  "smoke:codex-plugin": "node scripts/smoke-codex-plugin-mcp.mjs",
74
80
  "smoke:claude-plugin": "node scripts/smoke-claude-plugin.mjs",
75
81
  "version:check": "node scripts/release-version.mjs check",
@@ -115,21 +121,20 @@
115
121
  }
116
122
  },
117
123
  "dependencies": {
118
- "@sentry/node": "^10.55.0",
124
+ "@sentry/node": "^10.56.0",
119
125
  "@toon-format/toon": "^2.3.0",
120
126
  "commander": "^14.0.3",
121
127
  "fast-glob": "^3.3.3",
122
128
  "fast-json-patch": "^3.1.1"
123
129
  },
124
130
  "devDependencies": {
125
- "@sentry/cli": "^3.4.3",
131
+ "@sentry/cli": "^3.5.0",
126
132
  "@types/node": "^25.9.1",
127
- "@vitest/coverage-v8": "^4.1.7",
128
- "c8": "^11.0.0",
133
+ "@vitest/coverage-v8": "^4.1.8",
129
134
  "esbuild": "0.28.0",
130
- "tsx": "^4.22.3",
135
+ "tsx": "^4.22.4",
131
136
  "typescript": "^6.0.3",
132
- "vitest": "^4.1.7"
137
+ "vitest": "^4.1.8"
133
138
  },
134
139
  "pnpm": {
135
140
  "onlyBuiltDependencies": [
@@ -4,7 +4,7 @@ export const manifest = {
4
4
  version: "0.1.0",
5
5
  entry: "./index.js",
6
6
  priority: 0,
7
- capabilities: ["commands", "schema"],
7
+ capabilities: ["commands", "schema", "importers"],
8
8
  };
9
9
  function asOptionalString(value) {
10
10
  return typeof value === "string" ? value : undefined;
@@ -28,8 +28,7 @@ async function runBeadsImportFromRuntime(options, global) {
28
28
  return runtime.runBeadsImport(options, global);
29
29
  }
30
30
  export function activate(api) {
31
- api.registerCommand({
32
- name: "beads import",
31
+ api.registerImporter("beads", async (context) => runBeadsImportFromRuntime(toBeadsImportOptions(context.options), context.global), {
33
32
  action: "beads-import",
34
33
  description: "Import Beads JSONL records into pm items.",
35
34
  flags: [
@@ -57,7 +56,6 @@ export function activate(api) {
57
56
  description: "Preserve source IDs from Beads payload records when possible.",
58
57
  },
59
58
  ],
60
- run: async (context) => runBeadsImportFromRuntime(toBeadsImportOptions(context.options), context.global),
61
59
  });
62
60
  }
63
61
  export default {
@@ -1,4 +1,9 @@
1
- import type { CommandDefinition, ExtensionApi, GlobalOptions } from "../../../../src/sdk/index.js";
1
+ import type {
2
+ ExtensionApi,
3
+ GlobalOptions,
4
+ ImportExportContext,
5
+ ImportExportRegistrationOptions,
6
+ } from "../../../../src/sdk/index.js";
2
7
  import type { BeadsImportOptions, BeadsImportResult } from "./runtime.js";
3
8
  import { loadPackageRuntimeModule } from "./runtime-loader.js";
4
9
 
@@ -7,7 +12,7 @@ export const manifest = {
7
12
  version: "0.1.0",
8
13
  entry: "./index.js",
9
14
  priority: 0,
10
- capabilities: ["commands", "schema"],
15
+ capabilities: ["commands", "schema", "importers"],
11
16
  };
12
17
 
13
18
  type RuntimeModule = {
@@ -40,37 +45,42 @@ async function runBeadsImportFromRuntime(options: BeadsImportOptions, global: Gl
40
45
  }
41
46
 
42
47
  export function activate(api: ExtensionApi): void {
43
- api.registerCommand({
44
- name: "beads import",
45
- action: "beads-import",
46
- description: "Import Beads JSONL records into pm items.",
47
- flags: [
48
- {
49
- long: "--file",
50
- value_name: "path",
51
- value_type: "string",
52
- description: "Path to the Beads JSONL source file.",
53
- },
54
- {
55
- long: "--author",
56
- value_name: "author",
57
- value_type: "string",
58
- description: "Override import mutation author.",
59
- },
60
- {
61
- long: "--message",
62
- value_name: "text",
63
- value_type: "string",
64
- description: "Override import history message.",
65
- },
66
- {
67
- long: "--preserve-source-ids",
68
- value_type: "boolean",
69
- description: "Preserve source IDs from Beads payload records when possible.",
70
- },
71
- ],
72
- run: async (context) => runBeadsImportFromRuntime(toBeadsImportOptions(context.options), context.global),
73
- } satisfies CommandDefinition);
48
+ // First-party exemplar for the importers capability: registerImporter creates
49
+ // the `beads import` command path, and the options object keeps the command
50
+ // description + flags discoverable in help and runtime contracts.
51
+ api.registerImporter(
52
+ "beads",
53
+ async (context: ImportExportContext) => runBeadsImportFromRuntime(toBeadsImportOptions(context.options), context.global),
54
+ {
55
+ action: "beads-import",
56
+ description: "Import Beads JSONL records into pm items.",
57
+ flags: [
58
+ {
59
+ long: "--file",
60
+ value_name: "path",
61
+ value_type: "string",
62
+ description: "Path to the Beads JSONL source file.",
63
+ },
64
+ {
65
+ long: "--author",
66
+ value_name: "author",
67
+ value_type: "string",
68
+ description: "Override import mutation author.",
69
+ },
70
+ {
71
+ long: "--message",
72
+ value_name: "text",
73
+ value_type: "string",
74
+ description: "Override import history message.",
75
+ },
76
+ {
77
+ long: "--preserve-source-ids",
78
+ value_type: "boolean",
79
+ description: "Preserve source IDs from Beads payload records when possible.",
80
+ },
81
+ ],
82
+ } satisfies ImportExportRegistrationOptions,
83
+ );
74
84
  }
75
85
 
76
86
  export default {
@@ -3,5 +3,16 @@
3
3
  "version": "0.1.0",
4
4
  "entry": "./index.js",
5
5
  "priority": 0,
6
- "capabilities": ["commands", "schema"]
6
+ "capabilities": [
7
+ "commands",
8
+ "schema",
9
+ "importers"
10
+ ],
11
+ "manifest_version": 1,
12
+ "pm_min_version": "2026.5.0",
13
+ "activation": {
14
+ "commands": [
15
+ "beads import"
16
+ ]
17
+ }
7
18
  }
@@ -13,3 +13,9 @@ pm cal --json --view agenda --include reminders,events
13
13
  The package owns presentation commands for deadline, reminder, and scheduled event views. Core pm still owns item metadata such as `deadline`, `reminders`, and `events`, plus create/update parsing for those fields.
14
14
 
15
15
  Runtime sources are authored in TypeScript and use only the public `@unbrained/pm-cli/sdk` surface.
16
+
17
+ ## Recurrence Notes
18
+
19
+ Recurring event `recur_count` values are counted from the event series `start`, not from the query window. For example, a daily event starting April 1 with `recur_count=3` has its counted occurrences on April 1, 2, and 3; querying April 10 does not restart the count.
20
+
21
+ `recur_exdates` exclude occurrences by instant. Equivalent timestamp spellings such as `2026-04-02T09:00:00Z`, `2026-04-02T09:00:00.000Z`, and `2026-04-02T09:00:00.000+00:00` match the same generated occurrence.
@@ -40,7 +40,12 @@ const calendarFlags = [
40
40
  { long: "--include", value_name: "value", value_type: "string", description: "Include sources: deadlines|reminders|events|scheduled|all." },
41
41
  { long: "--recurrence-lookahead-days", value_name: "n", value_type: "string", description: "Bound open-ended recurrence lookahead days." },
42
42
  { long: "--recurrence-lookback-days", value_name: "n", value_type: "string", description: "Bound open-ended recurrence lookback days." },
43
- { long: "--occurrence-limit", value_name: "n", value_type: "string", description: "Cap generated occurrences per recurring event." },
43
+ {
44
+ long: "--occurrence-limit",
45
+ value_name: "n",
46
+ value_type: "string",
47
+ description: "Cap generated occurrences per recurring event; stored recur_count starts at series start, not the query window.",
48
+ },
44
49
  { long: "--limit", value_name: "n", value_type: "string", description: "Limit returned event count." },
45
50
  { long: "--format", value_name: "value", value_type: "string", description: "Calendar output override: markdown|toon|json." },
46
51
  ];
@@ -47,7 +47,12 @@ const calendarFlags = [
47
47
  { long: "--include", value_name: "value", value_type: "string", description: "Include sources: deadlines|reminders|events|scheduled|all." },
48
48
  { long: "--recurrence-lookahead-days", value_name: "n", value_type: "string", description: "Bound open-ended recurrence lookahead days." },
49
49
  { long: "--recurrence-lookback-days", value_name: "n", value_type: "string", description: "Bound open-ended recurrence lookback days." },
50
- { long: "--occurrence-limit", value_name: "n", value_type: "string", description: "Cap generated occurrences per recurring event." },
50
+ {
51
+ long: "--occurrence-limit",
52
+ value_name: "n",
53
+ value_type: "string",
54
+ description: "Cap generated occurrences per recurring event; stored recur_count starts at series start, not the query window.",
55
+ },
51
56
  { long: "--limit", value_name: "n", value_type: "string", description: "Limit returned event count." },
52
57
  { long: "--format", value_name: "value", value_type: "string", description: "Calendar output override: markdown|toon|json." },
53
58
  ] as const;
@@ -3,5 +3,10 @@
3
3
  "version": "0.1.0",
4
4
  "entry": "./index.js",
5
5
  "priority": 0,
6
- "capabilities": ["commands", "schema", "services"]
6
+ "capabilities": ["commands", "schema", "services"],
7
+ "manifest_version": 1,
8
+ "pm_min_version": "2026.5.0",
9
+ "activation": {
10
+ "commands": ["cal", "calendar"]
11
+ }
7
12
  }
@@ -3,5 +3,10 @@
3
3
  "version": "0.1.0",
4
4
  "entry": "./index.js",
5
5
  "priority": 0,
6
- "capabilities": ["commands", "schema"]
6
+ "capabilities": ["commands", "schema"],
7
+ "manifest_version": 1,
8
+ "pm_min_version": "2026.5.0",
9
+ "activation": {
10
+ "commands": ["comments-audit", "dedupe-audit", "normalize"]
11
+ }
7
12
  }