@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.
- package/CHANGELOG.md +152 -0
- package/dist/cli/argv-utils.js +7 -3
- package/dist/cli/argv-utils.js.map +1 -1
- package/dist/cli/bootstrap-args.d.ts +1 -0
- package/dist/cli/bootstrap-args.js +23 -3
- package/dist/cli/bootstrap-args.js.map +1 -1
- package/dist/cli/commands/calendar.js +96 -10
- package/dist/cli/commands/calendar.js.map +1 -1
- package/dist/cli/commands/close-many.d.ts +63 -0
- package/dist/cli/commands/close-many.js +302 -0
- package/dist/cli/commands/close-many.js.map +1 -0
- package/dist/cli/commands/completion.d.ts +1 -0
- package/dist/cli/commands/completion.js +241 -27
- package/dist/cli/commands/completion.js.map +1 -1
- package/dist/cli/commands/config.d.ts +4 -4
- package/dist/cli/commands/config.js +115 -3
- package/dist/cli/commands/config.js.map +1 -1
- package/dist/cli/commands/contracts.js +191 -162
- package/dist/cli/commands/contracts.js.map +1 -1
- package/dist/cli/commands/create.d.ts +1 -0
- package/dist/cli/commands/create.js +109 -116
- package/dist/cli/commands/create.js.map +1 -1
- package/dist/cli/commands/extension/doctor.d.ts +12 -0
- package/dist/cli/commands/extension/doctor.js +97 -2
- package/dist/cli/commands/extension/doctor.js.map +1 -1
- package/dist/cli/commands/extension/install-sources.d.ts +2 -0
- package/dist/cli/commands/extension/install-sources.js +11 -4
- package/dist/cli/commands/extension/install-sources.js.map +1 -1
- package/dist/cli/commands/extension/scaffold.js +49 -48
- package/dist/cli/commands/extension/scaffold.js.map +1 -1
- package/dist/cli/commands/extension.js +51 -23
- package/dist/cli/commands/extension.js.map +1 -1
- package/dist/cli/commands/get.js +7 -7
- package/dist/cli/commands/get.js.map +1 -1
- package/dist/cli/commands/health.js +38 -3
- package/dist/cli/commands/health.js.map +1 -1
- package/dist/cli/commands/index.d.ts +2 -1
- package/dist/cli/commands/index.js +4 -3
- package/dist/cli/commands/index.js.map +1 -1
- package/dist/cli/commands/init.d.ts +10 -0
- package/dist/cli/commands/init.js +107 -4
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/list.d.ts +5 -0
- package/dist/cli/commands/list.js +58 -26
- package/dist/cli/commands/list.js.map +1 -1
- package/dist/cli/commands/reindex.js +164 -48
- package/dist/cli/commands/reindex.js.map +1 -1
- package/dist/cli/commands/repeatable-metadata-parsers.d.ts +15 -0
- package/dist/cli/commands/repeatable-metadata-parsers.js +120 -0
- package/dist/cli/commands/repeatable-metadata-parsers.js.map +1 -0
- package/dist/cli/commands/restore.js +25 -4
- package/dist/cli/commands/restore.js.map +1 -1
- package/dist/cli/commands/schema.d.ts +122 -1
- package/dist/cli/commands/schema.js +536 -6
- package/dist/cli/commands/schema.js.map +1 -1
- package/dist/cli/commands/search.d.ts +18 -0
- package/dist/cli/commands/search.js +56 -12
- package/dist/cli/commands/search.js.map +1 -1
- package/dist/cli/commands/test.js +4 -3
- package/dist/cli/commands/test.js.map +1 -1
- package/dist/cli/commands/update-many.js +69 -140
- package/dist/cli/commands/update-many.js.map +1 -1
- package/dist/cli/commands/update.d.ts +2 -0
- package/dist/cli/commands/update.js +138 -119
- package/dist/cli/commands/update.js.map +1 -1
- package/dist/cli/commands/validate.d.ts +1 -0
- package/dist/cli/commands/validate.js +63 -33
- package/dist/cli/commands/validate.js.map +1 -1
- package/dist/cli/error-guidance.js +26 -3
- package/dist/cli/error-guidance.js.map +1 -1
- package/dist/cli/help-content.js +82 -3
- package/dist/cli/help-content.js.map +1 -1
- package/dist/cli/main.js +377 -23
- package/dist/cli/main.js.map +1 -1
- package/dist/cli/register-list-query.js +16 -12
- package/dist/cli/register-list-query.js.map +1 -1
- package/dist/cli/register-mutation.js +217 -47
- package/dist/cli/register-mutation.js.map +1 -1
- package/dist/cli/register-operations.js +34 -25
- package/dist/cli/register-operations.js.map +1 -1
- package/dist/cli/register-setup.js +8 -8
- package/dist/cli/register-setup.js.map +1 -1
- package/dist/cli/registration-helpers.js +35 -5
- package/dist/cli/registration-helpers.js.map +1 -1
- package/dist/cli/search-refresh.d.ts +2 -0
- package/dist/cli/search-refresh.js +13 -0
- package/dist/cli/search-refresh.js.map +1 -0
- package/dist/cli-bundle/chunks/activity-3RWRRNOW.js +20 -0
- package/dist/cli-bundle/chunks/activity-3RWRRNOW.js.map +1 -0
- package/dist/cli-bundle/chunks/activity-P5BUMWP3.js +16 -0
- package/dist/cli-bundle/chunks/activity-P5BUMWP3.js.map +7 -0
- package/dist/cli-bundle/chunks/aggregate-J35K7WZB.js +206 -0
- package/dist/cli-bundle/chunks/aggregate-J35K7WZB.js.map +1 -0
- package/dist/cli-bundle/chunks/aggregate-OOAGKWRG.js +209 -0
- package/dist/cli-bundle/chunks/aggregate-OOAGKWRG.js.map +7 -0
- package/dist/cli-bundle/chunks/append-5JE3YGXU.js +72 -0
- package/dist/cli-bundle/chunks/append-5JE3YGXU.js.map +7 -0
- package/dist/cli-bundle/chunks/append-PNN6UIBZ.js +69 -0
- package/dist/cli-bundle/chunks/append-PNN6UIBZ.js.map +1 -0
- package/dist/cli-bundle/chunks/chunk-26KTVXJW.js +218 -0
- package/dist/cli-bundle/chunks/chunk-26KTVXJW.js.map +1 -0
- package/dist/cli-bundle/chunks/chunk-3HUE7XOF.js +27 -0
- package/dist/cli-bundle/chunks/chunk-3HUE7XOF.js.map +7 -0
- package/dist/cli-bundle/chunks/chunk-3OH4DAEB.js +761 -0
- package/dist/cli-bundle/chunks/chunk-3OH4DAEB.js.map +7 -0
- package/dist/cli-bundle/chunks/chunk-4LTBNUYT.js +5553 -0
- package/dist/cli-bundle/chunks/chunk-4LTBNUYT.js.map +1 -0
- package/dist/cli-bundle/chunks/chunk-4PJQSECJ.js +634 -0
- package/dist/cli-bundle/chunks/chunk-4PJQSECJ.js.map +7 -0
- package/dist/cli-bundle/chunks/chunk-4QCR4QW3.js +1832 -0
- package/dist/cli-bundle/chunks/chunk-4QCR4QW3.js.map +1 -0
- package/dist/cli-bundle/chunks/chunk-5IRA6IYD.js +1891 -0
- package/dist/cli-bundle/chunks/chunk-5IRA6IYD.js.map +7 -0
- package/dist/cli-bundle/chunks/chunk-5KB4X7YY.js +412 -0
- package/dist/cli-bundle/chunks/chunk-5KB4X7YY.js.map +1 -0
- package/dist/cli-bundle/chunks/chunk-5PAOPUZX.js +182 -0
- package/dist/cli-bundle/chunks/chunk-5PAOPUZX.js.map +1 -0
- package/dist/cli-bundle/chunks/chunk-7K24QB23.js +698 -0
- package/dist/cli-bundle/chunks/chunk-7K24QB23.js.map +1 -0
- package/dist/cli-bundle/chunks/chunk-A6PEXMYN.js +380 -0
- package/dist/cli-bundle/chunks/chunk-A6PEXMYN.js.map +1 -0
- package/dist/cli-bundle/chunks/chunk-ASQM3IF5.js +230 -0
- package/dist/cli-bundle/chunks/chunk-ASQM3IF5.js.map +1 -0
- package/dist/cli-bundle/chunks/chunk-ATBVS6WW.js +185 -0
- package/dist/cli-bundle/chunks/chunk-ATBVS6WW.js.map +7 -0
- package/dist/cli-bundle/chunks/chunk-AXXKLVTW.js +332 -0
- package/dist/cli-bundle/chunks/chunk-AXXKLVTW.js.map +1 -0
- package/dist/cli-bundle/chunks/chunk-B3N4TKNL.js +1681 -0
- package/dist/cli-bundle/chunks/chunk-B3N4TKNL.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-PB2YU2E3.js → chunk-BNL6S7QH.js} +28 -70
- package/dist/cli-bundle/chunks/chunk-BNL6S7QH.js.map +7 -0
- package/dist/cli-bundle/chunks/chunk-CCUFLH4J.js +154 -0
- package/dist/cli-bundle/chunks/chunk-CCUFLH4J.js.map +1 -0
- package/dist/cli-bundle/chunks/chunk-CJDQB2ED.js +341 -0
- package/dist/cli-bundle/chunks/chunk-CJDQB2ED.js.map +7 -0
- package/dist/cli-bundle/chunks/chunk-CWT53EYT.js +1340 -0
- package/dist/cli-bundle/chunks/chunk-CWT53EYT.js.map +1 -0
- package/dist/cli-bundle/chunks/chunk-D3WUNETC.js +349 -0
- package/dist/cli-bundle/chunks/chunk-D3WUNETC.js.map +7 -0
- package/dist/cli-bundle/chunks/chunk-D5X7N6FI.js +1714 -0
- package/dist/cli-bundle/chunks/chunk-D5X7N6FI.js.map +7 -0
- package/dist/cli-bundle/chunks/chunk-DFIZGAI5.js +550 -0
- package/dist/cli-bundle/chunks/chunk-DFIZGAI5.js.map +7 -0
- package/dist/cli-bundle/chunks/chunk-DFUSXJDE.js +1704 -0
- package/dist/cli-bundle/chunks/chunk-DFUSXJDE.js.map +1 -0
- package/dist/cli-bundle/chunks/chunk-EAOG77HM.js +56 -0
- package/dist/cli-bundle/chunks/chunk-EAOG77HM.js.map +7 -0
- package/dist/cli-bundle/chunks/chunk-EHXPIKKP.js +2988 -0
- package/dist/cli-bundle/chunks/chunk-EHXPIKKP.js.map +1 -0
- package/dist/cli-bundle/chunks/chunk-FVXM3GKS.js +128 -0
- package/dist/cli-bundle/chunks/chunk-FVXM3GKS.js.map +1 -0
- package/dist/cli-bundle/chunks/chunk-G5BACLYH.js +454 -0
- package/dist/cli-bundle/chunks/chunk-G5BACLYH.js.map +1 -0
- package/dist/cli-bundle/chunks/chunk-GCAVRLGE.js +383 -0
- package/dist/cli-bundle/chunks/chunk-GCAVRLGE.js.map +7 -0
- package/dist/cli-bundle/chunks/chunk-GFWHHMVV.js +57 -0
- package/dist/cli-bundle/chunks/chunk-GFWHHMVV.js.map +1 -0
- package/dist/cli-bundle/chunks/chunk-GNHVV4SY.js +3860 -0
- package/dist/cli-bundle/chunks/chunk-GNHVV4SY.js.map +1 -0
- package/dist/cli-bundle/chunks/chunk-GPGAYASV.js +346 -0
- package/dist/cli-bundle/chunks/chunk-GPGAYASV.js.map +1 -0
- package/dist/cli-bundle/chunks/chunk-HPH6X4ZZ.js +1356 -0
- package/dist/cli-bundle/chunks/chunk-HPH6X4ZZ.js.map +7 -0
- package/dist/cli-bundle/chunks/chunk-HZOS2UG5.js +342 -0
- package/dist/cli-bundle/chunks/chunk-HZOS2UG5.js.map +7 -0
- package/dist/cli-bundle/chunks/chunk-IUV734HF.js +17 -0
- package/dist/cli-bundle/chunks/chunk-IUV734HF.js.map +1 -0
- package/dist/cli-bundle/chunks/chunk-J27KIHTG.js +15 -0
- package/dist/cli-bundle/chunks/chunk-J27KIHTG.js.map +1 -0
- package/dist/cli-bundle/chunks/chunk-JB4RGL4V.js +185 -0
- package/dist/cli-bundle/chunks/chunk-JB4RGL4V.js.map +7 -0
- package/dist/cli-bundle/chunks/chunk-JQI2HE55.js +130 -0
- package/dist/cli-bundle/chunks/chunk-JQI2HE55.js.map +1 -0
- package/dist/cli-bundle/chunks/chunk-K47WAYQV.js +60 -0
- package/dist/cli-bundle/chunks/chunk-K47WAYQV.js.map +7 -0
- package/dist/cli-bundle/chunks/chunk-KA24HME7.js +79 -0
- package/dist/cli-bundle/chunks/chunk-KA24HME7.js.map +7 -0
- package/dist/cli-bundle/chunks/chunk-KBG47ZOY.js +1325 -0
- package/dist/cli-bundle/chunks/chunk-KBG47ZOY.js.map +1 -0
- package/dist/cli-bundle/chunks/chunk-KCMIYKTA.js +242 -0
- package/dist/cli-bundle/chunks/chunk-KCMIYKTA.js.map +1 -0
- package/dist/cli-bundle/chunks/chunk-KK6YPGH3.js +221 -0
- package/dist/cli-bundle/chunks/chunk-KK6YPGH3.js.map +7 -0
- package/dist/cli-bundle/chunks/chunk-LDJK7SHN.js +157 -0
- package/dist/cli-bundle/chunks/chunk-LDJK7SHN.js.map +7 -0
- package/dist/cli-bundle/chunks/chunk-LXYVKYMQ.js +24 -0
- package/dist/cli-bundle/chunks/chunk-LXYVKYMQ.js.map +1 -0
- package/dist/cli-bundle/chunks/chunk-MISYRLEP.js +80 -0
- package/dist/cli-bundle/chunks/chunk-MISYRLEP.js.map +1 -0
- package/dist/cli-bundle/chunks/chunk-N5YF3VFN.js +457 -0
- package/dist/cli-bundle/chunks/chunk-N5YF3VFN.js.map +7 -0
- package/dist/cli-bundle/chunks/chunk-NQP3ECKF.js +173 -0
- package/dist/cli-bundle/chunks/chunk-NQP3ECKF.js.map +1 -0
- package/dist/cli-bundle/chunks/chunk-O5IBJE6S.js +338 -0
- package/dist/cli-bundle/chunks/chunk-O5IBJE6S.js.map +1 -0
- package/dist/cli-bundle/chunks/chunk-O7IWB35H.js +18 -0
- package/dist/cli-bundle/chunks/chunk-O7IWB35H.js.map +7 -0
- package/dist/cli-bundle/chunks/chunk-OIQIXTNB.js +3040 -0
- package/dist/cli-bundle/chunks/chunk-OIQIXTNB.js.map +7 -0
- package/dist/cli-bundle/chunks/chunk-ORTLYVA4.js +751 -0
- package/dist/cli-bundle/chunks/chunk-ORTLYVA4.js.map +1 -0
- package/dist/cli-bundle/chunks/chunk-OUF3ARDX.js +1861 -0
- package/dist/cli-bundle/chunks/chunk-OUF3ARDX.js.map +7 -0
- package/dist/cli-bundle/chunks/chunk-QAJBIGRA.js +20 -0
- package/dist/cli-bundle/chunks/chunk-QAJBIGRA.js.map +7 -0
- package/dist/cli-bundle/chunks/chunk-RANZIID5.js +176 -0
- package/dist/cli-bundle/chunks/chunk-RANZIID5.js.map +7 -0
- package/dist/cli-bundle/chunks/chunk-RQAWLSUU.js +140 -0
- package/dist/cli-bundle/chunks/chunk-RQAWLSUU.js.map +7 -0
- package/dist/cli-bundle/chunks/chunk-S3CV7JGJ.js +233 -0
- package/dist/cli-bundle/chunks/chunk-S3CV7JGJ.js.map +7 -0
- package/dist/cli-bundle/chunks/chunk-SRVKTWPR.js +5705 -0
- package/dist/cli-bundle/chunks/chunk-SRVKTWPR.js.map +7 -0
- package/dist/cli-bundle/chunks/chunk-SSFMJCPF.js +76 -0
- package/dist/cli-bundle/chunks/chunk-SSFMJCPF.js.map +1 -0
- package/dist/cli-bundle/chunks/chunk-SZQCER6S.js +631 -0
- package/dist/cli-bundle/chunks/chunk-SZQCER6S.js.map +1 -0
- package/dist/cli-bundle/chunks/chunk-T2ORWB6D.js +540 -0
- package/dist/cli-bundle/chunks/chunk-T2ORWB6D.js.map +1 -0
- package/dist/cli-bundle/chunks/chunk-TBQVUNVH.js +422 -0
- package/dist/cli-bundle/chunks/chunk-TBQVUNVH.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-RJONRNXN.js → chunk-TK633IVD.js} +51 -32
- package/dist/cli-bundle/chunks/chunk-TK633IVD.js.map +7 -0
- package/dist/cli-bundle/chunks/chunk-TQ3ZK6VD.js +131 -0
- package/dist/cli-bundle/chunks/chunk-TQ3ZK6VD.js.map +7 -0
- package/dist/cli-bundle/chunks/chunk-UFCG3SWR.js +119 -0
- package/dist/cli-bundle/chunks/chunk-UFCG3SWR.js.map +1 -0
- package/dist/cli-bundle/chunks/chunk-UOVLWB47.js +1664 -0
- package/dist/cli-bundle/chunks/chunk-UOVLWB47.js.map +1 -0
- package/dist/cli-bundle/chunks/chunk-V3JQ4IPL.js +186 -0
- package/dist/cli-bundle/chunks/chunk-V3JQ4IPL.js.map +1 -0
- package/dist/cli-bundle/chunks/chunk-VGO2T3TY.js +182 -0
- package/dist/cli-bundle/chunks/chunk-VGO2T3TY.js.map +1 -0
- package/dist/cli-bundle/chunks/chunk-WIKR7KFL.js +189 -0
- package/dist/cli-bundle/chunks/chunk-WIKR7KFL.js.map +7 -0
- package/dist/cli-bundle/chunks/chunk-XG7RJYHV.js +1385 -0
- package/dist/cli-bundle/chunks/chunk-XG7RJYHV.js.map +7 -0
- package/dist/cli-bundle/chunks/chunk-XSLQSXAH.js +53 -0
- package/dist/cli-bundle/chunks/chunk-XSLQSXAH.js.map +1 -0
- package/dist/cli-bundle/chunks/chunk-XX5LRINW.js +90 -0
- package/dist/cli-bundle/chunks/chunk-XX5LRINW.js.map +7 -0
- package/dist/cli-bundle/chunks/chunk-Y2AKE2HS.js +252 -0
- package/dist/cli-bundle/chunks/chunk-Y2AKE2HS.js.map +7 -0
- package/dist/cli-bundle/chunks/chunk-ZQ4F6EC4.js +3898 -0
- package/dist/cli-bundle/chunks/chunk-ZQ4F6EC4.js.map +7 -0
- package/dist/cli-bundle/chunks/chunk-ZRVSMOMR.js +1809 -0
- package/dist/cli-bundle/chunks/chunk-ZRVSMOMR.js.map +1 -0
- package/dist/cli-bundle/chunks/claim-AZLP7YFO.js +132 -0
- package/dist/cli-bundle/chunks/claim-AZLP7YFO.js.map +7 -0
- package/dist/cli-bundle/chunks/claim-ZFA7HKU4.js +129 -0
- package/dist/cli-bundle/chunks/claim-ZFA7HKU4.js.map +1 -0
- package/dist/cli-bundle/chunks/close-65DFYAVS.js +17 -0
- package/dist/cli-bundle/chunks/close-65DFYAVS.js.map +1 -0
- package/dist/cli-bundle/chunks/close-RMHQ3KWH.js +13 -0
- package/dist/cli-bundle/chunks/close-RMHQ3KWH.js.map +7 -0
- package/dist/cli-bundle/chunks/close-many-AKPZNSGI.js +311 -0
- package/dist/cli-bundle/chunks/close-many-AKPZNSGI.js.map +1 -0
- package/dist/cli-bundle/chunks/close-many-UKZSQGM7.js +314 -0
- package/dist/cli-bundle/chunks/close-many-UKZSQGM7.js.map +7 -0
- package/dist/cli-bundle/chunks/comments-AGBNSJJH.js +103 -0
- package/dist/cli-bundle/chunks/comments-AGBNSJJH.js.map +7 -0
- package/dist/cli-bundle/chunks/comments-CJWXQI7X.js +100 -0
- package/dist/cli-bundle/chunks/comments-CJWXQI7X.js.map +1 -0
- package/dist/cli-bundle/chunks/config-5ON3ADRH.js +1688 -0
- package/dist/cli-bundle/chunks/config-5ON3ADRH.js.map +7 -0
- package/dist/cli-bundle/chunks/config-DDPYIA6J.js +1671 -0
- package/dist/cli-bundle/chunks/config-DDPYIA6J.js.map +1 -0
- package/dist/cli-bundle/chunks/context-E6U3DWVM.js +1471 -0
- package/dist/cli-bundle/chunks/context-E6U3DWVM.js.map +7 -0
- package/dist/cli-bundle/chunks/context-ZOJEN5VT.js +1461 -0
- package/dist/cli-bundle/chunks/context-ZOJEN5VT.js.map +1 -0
- package/dist/cli-bundle/chunks/contracts-CXSFM45B.js +1277 -0
- package/dist/cli-bundle/chunks/contracts-CXSFM45B.js.map +7 -0
- package/dist/cli-bundle/chunks/contracts-LCSX5R53.js +1274 -0
- package/dist/cli-bundle/chunks/contracts-LCSX5R53.js.map +1 -0
- package/dist/cli-bundle/chunks/create-ATONSAZW.js +27 -0
- package/dist/cli-bundle/chunks/create-ATONSAZW.js.map +7 -0
- package/dist/cli-bundle/chunks/create-WYFKN2U4.js +31 -0
- package/dist/cli-bundle/chunks/create-WYFKN2U4.js.map +1 -0
- package/dist/cli-bundle/chunks/delete-RONNH4F4.js +58 -0
- package/dist/cli-bundle/chunks/delete-RONNH4F4.js.map +7 -0
- package/dist/cli-bundle/chunks/delete-ZXWC56WO.js +55 -0
- package/dist/cli-bundle/chunks/delete-ZXWC56WO.js.map +1 -0
- package/dist/cli-bundle/chunks/deps-EHXIFOZR.js +225 -0
- package/dist/cli-bundle/chunks/deps-EHXIFOZR.js.map +1 -0
- package/dist/cli-bundle/chunks/deps-WII3O4HB.js +228 -0
- package/dist/cli-bundle/chunks/deps-WII3O4HB.js.map +7 -0
- package/dist/cli-bundle/chunks/docs-JMVCFNHH.js +34 -0
- package/dist/cli-bundle/chunks/docs-JMVCFNHH.js.map +7 -0
- package/dist/cli-bundle/chunks/docs-PDREIMLS.js +31 -0
- package/dist/cli-bundle/chunks/docs-PDREIMLS.js.map +1 -0
- package/dist/cli-bundle/chunks/extension-B4ROVWJD.js +28 -0
- package/dist/cli-bundle/chunks/extension-B4ROVWJD.js.map +1 -0
- package/dist/cli-bundle/chunks/extension-G6UXSM5S.js +24 -0
- package/dist/cli-bundle/chunks/extension-G6UXSM5S.js.map +7 -0
- package/dist/cli-bundle/chunks/files-2PN7UM2D.js +282 -0
- package/dist/cli-bundle/chunks/files-2PN7UM2D.js.map +1 -0
- package/dist/cli-bundle/chunks/files-MXYS5W4M.js +285 -0
- package/dist/cli-bundle/chunks/files-MXYS5W4M.js.map +7 -0
- package/dist/cli-bundle/chunks/gc-GT552UJH.js +178 -0
- package/dist/cli-bundle/chunks/gc-GT552UJH.js.map +1 -0
- package/dist/cli-bundle/chunks/gc-QNBRJG6H.js +181 -0
- package/dist/cli-bundle/chunks/gc-QNBRJG6H.js.map +7 -0
- package/dist/cli-bundle/chunks/get-CINFEUIY.js +197 -0
- package/dist/cli-bundle/chunks/get-CINFEUIY.js.map +7 -0
- package/dist/cli-bundle/chunks/get-WXMLRG7M.js +194 -0
- package/dist/cli-bundle/chunks/get-WXMLRG7M.js.map +1 -0
- package/dist/cli-bundle/chunks/health-5VPOJQ53.js +1258 -0
- package/dist/cli-bundle/chunks/health-5VPOJQ53.js.map +1 -0
- package/dist/cli-bundle/chunks/health-IT5DBPRJ.js +1261 -0
- package/dist/cli-bundle/chunks/health-IT5DBPRJ.js.map +7 -0
- package/dist/cli-bundle/chunks/history-6FC4H6HI.js +20 -0
- package/dist/cli-bundle/chunks/history-6FC4H6HI.js.map +7 -0
- package/dist/cli-bundle/chunks/history-FLZIP7PM.js +24 -0
- package/dist/cli-bundle/chunks/history-FLZIP7PM.js.map +1 -0
- package/dist/cli-bundle/chunks/history-redact-SSZBAD76.js +23 -0
- package/dist/cli-bundle/chunks/history-redact-SSZBAD76.js.map +1 -0
- package/dist/cli-bundle/chunks/history-redact-XKYEZDBL.js +19 -0
- package/dist/cli-bundle/chunks/history-redact-XKYEZDBL.js.map +7 -0
- package/dist/cli-bundle/chunks/history-repair-KC5ZOJRZ.js +196 -0
- package/dist/cli-bundle/chunks/history-repair-KC5ZOJRZ.js.map +7 -0
- package/dist/cli-bundle/chunks/history-repair-X7CO5JJZ.js +193 -0
- package/dist/cli-bundle/chunks/history-repair-X7CO5JJZ.js.map +1 -0
- package/dist/cli-bundle/chunks/init-6MRFVOLH.js +20 -0
- package/dist/cli-bundle/chunks/init-6MRFVOLH.js.map +1 -0
- package/dist/cli-bundle/chunks/init-KHX3FEEM.js +16 -0
- package/dist/cli-bundle/chunks/init-KHX3FEEM.js.map +7 -0
- package/dist/cli-bundle/chunks/learnings-A3CLB5CO.js +47 -0
- package/dist/cli-bundle/chunks/learnings-A3CLB5CO.js.map +7 -0
- package/dist/cli-bundle/chunks/learnings-DCX55BNX.js +44 -0
- package/dist/cli-bundle/chunks/learnings-DCX55BNX.js.map +1 -0
- package/dist/cli-bundle/chunks/list-53LZ2AEO.js +20 -0
- package/dist/cli-bundle/chunks/list-53LZ2AEO.js.map +7 -0
- package/dist/cli-bundle/chunks/list-DBRECOG4.js +24 -0
- package/dist/cli-bundle/chunks/list-DBRECOG4.js.map +1 -0
- package/dist/cli-bundle/chunks/notes-42LIC3UE.js +47 -0
- package/dist/cli-bundle/chunks/notes-42LIC3UE.js.map +7 -0
- package/dist/cli-bundle/chunks/notes-P5O3VMQ3.js +44 -0
- package/dist/cli-bundle/chunks/notes-P5O3VMQ3.js.map +1 -0
- package/dist/cli-bundle/chunks/plan-HDQXEUKD.js +1174 -0
- package/dist/cli-bundle/chunks/plan-HDQXEUKD.js.map +7 -0
- package/dist/cli-bundle/chunks/plan-IGTE3WOJ.js +1171 -0
- package/dist/cli-bundle/chunks/plan-IGTE3WOJ.js.map +1 -0
- package/dist/cli-bundle/chunks/{register-list-query-EIVQ5FMR.js → register-list-query-AG3XKXWL.js} +25 -18
- package/dist/cli-bundle/chunks/register-list-query-AG3XKXWL.js.map +7 -0
- package/dist/cli-bundle/chunks/register-list-query-EMNSIUO4.js +227 -0
- package/dist/cli-bundle/chunks/register-list-query-EMNSIUO4.js.map +1 -0
- package/dist/cli-bundle/chunks/register-mutation-M3YS6XDO.js +813 -0
- package/dist/cli-bundle/chunks/register-mutation-M3YS6XDO.js.map +1 -0
- package/dist/cli-bundle/chunks/{register-mutation-RSZNPSGI.js → register-mutation-RSMT6DPK.js} +160 -39
- package/dist/cli-bundle/chunks/register-mutation-RSMT6DPK.js.map +7 -0
- package/dist/cli-bundle/chunks/register-operations-KYUOOOOD.js +370 -0
- package/dist/cli-bundle/chunks/register-operations-KYUOOOOD.js.map +1 -0
- package/dist/cli-bundle/chunks/{register-operations-APUSYDMR.js → register-operations-Q54JQZUN.js} +50 -32
- package/dist/cli-bundle/chunks/register-operations-Q54JQZUN.js.map +7 -0
- package/dist/cli-bundle/chunks/register-setup-DI6P7X75.js +242 -0
- package/dist/cli-bundle/chunks/register-setup-DI6P7X75.js.map +1 -0
- package/dist/cli-bundle/chunks/{register-setup-OZOKSMPJ.js → register-setup-YJKIQRKA.js} +21 -13
- package/dist/cli-bundle/chunks/register-setup-YJKIQRKA.js.map +7 -0
- package/dist/cli-bundle/chunks/restore-2XVTBLKQ.js +21 -0
- package/dist/cli-bundle/chunks/restore-2XVTBLKQ.js.map +1 -0
- package/dist/cli-bundle/chunks/restore-JL5QIH7H.js +17 -0
- package/dist/cli-bundle/chunks/restore-JL5QIH7H.js.map +7 -0
- package/dist/cli-bundle/chunks/schema-LVXZWFGY.js +770 -0
- package/dist/cli-bundle/chunks/schema-LVXZWFGY.js.map +1 -0
- package/dist/cli-bundle/chunks/schema-V6BX65Q2.js +780 -0
- package/dist/cli-bundle/chunks/schema-V6BX65Q2.js.map +7 -0
- package/dist/cli-bundle/chunks/search-5A3BMFA7.js +1144 -0
- package/dist/cli-bundle/chunks/search-5A3BMFA7.js.map +7 -0
- package/dist/cli-bundle/chunks/search-C7NPB7G7.js +1127 -0
- package/dist/cli-bundle/chunks/search-C7NPB7G7.js.map +1 -0
- package/dist/cli-bundle/chunks/stats-FNLYVXTB.js +120 -0
- package/dist/cli-bundle/chunks/stats-FNLYVXTB.js.map +1 -0
- package/dist/cli-bundle/chunks/stats-Y2CBTZSL.js +123 -0
- package/dist/cli-bundle/chunks/stats-Y2CBTZSL.js.map +7 -0
- package/dist/cli-bundle/chunks/test-OFYONO3C.js +35 -0
- package/dist/cli-bundle/chunks/test-OFYONO3C.js.map +1 -0
- package/dist/cli-bundle/chunks/test-RJ4ZF35X.js +31 -0
- package/dist/cli-bundle/chunks/test-RJ4ZF35X.js.map +7 -0
- package/dist/cli-bundle/chunks/test-all-EEMKNTGU.js +331 -0
- package/dist/cli-bundle/chunks/test-all-EEMKNTGU.js.map +7 -0
- package/dist/cli-bundle/chunks/test-all-OJE6CIO7.js +328 -0
- package/dist/cli-bundle/chunks/test-all-OJE6CIO7.js.map +1 -0
- package/dist/cli-bundle/chunks/test-runs-IPOPFOAF.js +929 -0
- package/dist/cli-bundle/chunks/test-runs-IPOPFOAF.js.map +1 -0
- package/dist/cli-bundle/chunks/test-runs-L2M7WKH7.js +939 -0
- package/dist/cli-bundle/chunks/test-runs-L2M7WKH7.js.map +7 -0
- package/dist/cli-bundle/chunks/update-6YEHPVXH.js +25 -0
- package/dist/cli-bundle/chunks/update-6YEHPVXH.js.map +1 -0
- package/dist/cli-bundle/chunks/update-PYLVHMRD.js +21 -0
- package/dist/cli-bundle/chunks/update-PYLVHMRD.js.map +7 -0
- package/dist/cli-bundle/chunks/update-many-322CCH2L.js +608 -0
- package/dist/cli-bundle/chunks/update-many-322CCH2L.js.map +7 -0
- package/dist/cli-bundle/chunks/update-many-DYWGW57M.js +605 -0
- package/dist/cli-bundle/chunks/update-many-DYWGW57M.js.map +1 -0
- package/dist/cli-bundle/chunks/upgrade-2U727SAM.js +269 -0
- package/dist/cli-bundle/chunks/upgrade-2U727SAM.js.map +7 -0
- package/dist/cli-bundle/chunks/upgrade-3W3RVSNM.js +266 -0
- package/dist/cli-bundle/chunks/upgrade-3W3RVSNM.js.map +1 -0
- package/dist/cli-bundle/chunks/validate-GZ24NYHO.js +1120 -0
- package/dist/cli-bundle/chunks/validate-GZ24NYHO.js.map +1 -0
- package/dist/cli-bundle/chunks/validate-ZFVWPEEN.js +1123 -0
- package/dist/cli-bundle/chunks/validate-ZFVWPEEN.js.map +7 -0
- package/dist/cli-bundle/main.js +615 -121
- package/dist/cli-bundle/main.js.map +4 -4
- package/dist/core/checkpoint/mutation-checkpoint.d.ts +44 -0
- package/dist/core/checkpoint/mutation-checkpoint.js +119 -0
- package/dist/core/checkpoint/mutation-checkpoint.js.map +1 -0
- package/dist/core/config/positional-value.js +4 -2
- package/dist/core/config/positional-value.js.map +1 -1
- package/dist/core/diagnostics/remediation.d.ts +73 -0
- package/dist/core/diagnostics/remediation.js +328 -0
- package/dist/core/diagnostics/remediation.js.map +1 -0
- package/dist/core/extensions/extension-hook-runtime.js +9 -2
- package/dist/core/extensions/extension-hook-runtime.js.map +1 -1
- package/dist/core/extensions/extension-types.d.ts +60 -4
- package/dist/core/extensions/extension-types.js +2 -2
- package/dist/core/extensions/extension-types.js.map +1 -1
- package/dist/core/extensions/index.d.ts +5 -1
- package/dist/core/extensions/index.js +61 -2
- package/dist/core/extensions/index.js.map +1 -1
- package/dist/core/extensions/item-fields.d.ts +5 -1
- package/dist/core/extensions/item-fields.js +126 -4
- package/dist/core/extensions/item-fields.js.map +1 -1
- package/dist/core/extensions/loader.js +283 -8
- package/dist/core/extensions/loader.js.map +1 -1
- package/dist/core/item/item-format.d.ts +3 -2
- package/dist/core/item/item-format.js +15 -10
- package/dist/core/item/item-format.js.map +1 -1
- package/dist/core/item/item-type-definition.js +6 -2
- package/dist/core/item/item-type-definition.js.map +1 -1
- package/dist/core/item/status-filter.d.ts +29 -0
- package/dist/core/item/status-filter.js +97 -0
- package/dist/core/item/status-filter.js.map +1 -0
- package/dist/core/item/type-registry.d.ts +4 -0
- package/dist/core/item/type-registry.js +12 -2
- package/dist/core/item/type-registry.js.map +1 -1
- package/dist/core/output/output.js +17 -5
- package/dist/core/output/output.js.map +1 -1
- package/dist/core/schema/item-types-file.d.ts +15 -0
- package/dist/core/schema/item-types-file.js +27 -2
- package/dist/core/schema/item-types-file.js.map +1 -1
- package/dist/core/schema/runtime-field-filters.js +4 -3
- package/dist/core/schema/runtime-field-filters.js.map +1 -1
- package/dist/core/schema/runtime-field-values.d.ts +1 -1
- package/dist/core/schema/runtime-field-values.js +10 -4
- package/dist/core/schema/runtime-field-values.js.map +1 -1
- package/dist/core/schema/runtime-schema.js +75 -2
- package/dist/core/schema/runtime-schema.js.map +1 -1
- package/dist/core/schema/status-defs-file.d.ts +113 -0
- package/dist/core/schema/status-defs-file.js +260 -0
- package/dist/core/schema/status-defs-file.js.map +1 -0
- package/dist/core/schema/type-workflows.d.ts +64 -0
- package/dist/core/schema/type-workflows.js +98 -0
- package/dist/core/schema/type-workflows.js.map +1 -0
- package/dist/core/search/background-refresh.d.ts +53 -0
- package/dist/core/search/background-refresh.js +286 -0
- package/dist/core/search/background-refresh.js.map +1 -0
- package/dist/core/search/cache.d.ts +23 -2
- package/dist/core/search/cache.js +135 -30
- package/dist/core/search/cache.js.map +1 -1
- package/dist/core/search/http-client.d.ts +2 -2
- package/dist/core/search/http-client.js +2 -2
- package/dist/core/search/http-client.js.map +1 -1
- package/dist/core/search/vector-stores.d.ts +1 -0
- package/dist/core/search/vector-stores.js +69 -15
- package/dist/core/search/vector-stores.js.map +1 -1
- package/dist/core/search/vectorization-metadata.d.ts +13 -0
- package/dist/core/search/vectorization-metadata.js +65 -0
- package/dist/core/search/vectorization-metadata.js.map +1 -0
- package/dist/core/shared/constants.d.ts +2 -2
- package/dist/core/shared/constants.js +2 -3
- package/dist/core/shared/constants.js.map +1 -1
- package/dist/core/shared/serialization.d.ts +1 -0
- package/dist/core/shared/serialization.js +86 -2
- package/dist/core/shared/serialization.js.map +1 -1
- package/dist/core/store/front-matter-cache.js +14 -5
- package/dist/core/store/front-matter-cache.js.map +1 -1
- package/dist/core/store/item-format-migration.js +25 -15
- package/dist/core/store/item-format-migration.js.map +1 -1
- package/dist/core/store/item-store.d.ts +2 -0
- package/dist/core/store/item-store.js +61 -6
- package/dist/core/store/item-store.js.map +1 -1
- package/dist/core/store/settings-validator.js +22 -2
- package/dist/core/store/settings-validator.js.map +1 -1
- package/dist/core/store/settings.js +40 -5
- package/dist/core/store/settings.js.map +1 -1
- package/dist/core/telemetry/consent.js +3 -3
- package/dist/core/telemetry/consent.js.map +1 -1
- package/dist/core/telemetry/observability.js +4 -3
- package/dist/core/telemetry/observability.js.map +1 -1
- package/dist/core/telemetry/runtime.d.ts +10 -0
- package/dist/core/telemetry/runtime.js +86 -2
- package/dist/core/telemetry/runtime.js.map +1 -1
- package/dist/mcp/server.js +221 -12
- package/dist/mcp/server.js.map +1 -1
- package/dist/sdk/cli-contracts/commander-mutation-options.js +16 -2
- package/dist/sdk/cli-contracts/commander-mutation-options.js.map +1 -1
- package/dist/sdk/cli-contracts/commander-types.js +7 -2
- package/dist/sdk/cli-contracts/commander-types.js.map +1 -1
- package/dist/sdk/cli-contracts/enum-contracts.d.ts +2 -2
- package/dist/sdk/cli-contracts/enum-contracts.js +4 -2
- package/dist/sdk/cli-contracts/enum-contracts.js.map +1 -1
- package/dist/sdk/cli-contracts/tool-option-contracts.d.ts +1 -0
- package/dist/sdk/cli-contracts/tool-option-contracts.js +53 -3
- package/dist/sdk/cli-contracts/tool-option-contracts.js.map +1 -1
- package/dist/sdk/cli-contracts/tool-parameter-tables.js +37 -8
- package/dist/sdk/cli-contracts/tool-parameter-tables.js.map +1 -1
- package/dist/sdk/cli-contracts.d.ts +19 -1
- package/dist/sdk/cli-contracts.js +211 -18
- package/dist/sdk/cli-contracts.js.map +1 -1
- package/dist/sdk/errors.d.ts +22 -0
- package/dist/sdk/errors.js +46 -0
- package/dist/sdk/errors.js.map +1 -0
- package/dist/sdk/index.d.ts +2 -1
- package/dist/sdk/index.js +3 -2
- package/dist/sdk/index.js.map +1 -1
- package/dist/sdk/package-import-adapters.js +14 -3
- package/dist/sdk/package-import-adapters.js.map +1 -1
- package/dist/sdk/runtime.d.ts +1 -0
- package/dist/sdk/runtime.js +3 -2
- package/dist/sdk/runtime.js.map +1 -1
- package/dist/sdk/testing.d.ts +77 -0
- package/dist/sdk/testing.js +239 -0
- package/dist/sdk/testing.js.map +1 -0
- package/dist/types.d.ts +26 -1
- package/dist/types.js +3 -2
- package/dist/types.js.map +1 -1
- package/docs/AGENT_GUIDE.md +21 -2
- package/docs/COMMANDS.md +85 -5
- package/docs/CONFIGURATION.md +49 -2
- package/docs/EXTENSIONS.md +118 -6
- package/docs/QUICKSTART.md +2 -0
- package/docs/RELEASING.md +3 -3
- package/docs/SDK.md +273 -1
- package/docs/TESTING.md +17 -0
- package/docs/examples/policy-restricted-extension/manifest.json +1 -0
- package/docs/examples/starter-extension/index.js +9 -1
- package/docs/examples/starter-extension/manifest.json +1 -0
- package/package.json +12 -7
- package/packages/pm-beads/extensions/beads/index.js +2 -4
- package/packages/pm-beads/extensions/beads/index.ts +43 -33
- package/packages/pm-beads/extensions/beads/manifest.json +12 -1
- package/packages/pm-calendar/README.md +6 -0
- package/packages/pm-calendar/extensions/calendar/index.js +6 -1
- package/packages/pm-calendar/extensions/calendar/index.ts +6 -1
- package/packages/pm-calendar/extensions/calendar/manifest.json +6 -1
- package/packages/pm-governance-audit/extensions/governance-audit/manifest.json +6 -1
- package/packages/pm-guide-shell/README.md +4 -0
- package/packages/pm-guide-shell/extensions/guide-shell/index.js +22 -0
- package/packages/pm-guide-shell/extensions/guide-shell/index.ts +22 -0
- package/packages/pm-guide-shell/extensions/guide-shell/manifest.json +6 -1
- package/packages/pm-guide-shell/extensions/guide-shell/runtime.js +74 -3
- package/packages/pm-guide-shell/extensions/guide-shell/runtime.ts +84 -4
- package/packages/pm-lifecycle-hooks/README.md +29 -0
- package/packages/pm-lifecycle-hooks/extensions/lifecycle-hooks/index.js +18 -0
- package/packages/pm-lifecycle-hooks/extensions/lifecycle-hooks/index.ts +20 -0
- package/packages/pm-lifecycle-hooks/extensions/lifecycle-hooks/manifest.json +9 -0
- package/packages/pm-lifecycle-hooks/package.json +52 -0
- package/packages/pm-linked-test-adapters/extensions/linked-test-adapters/manifest.json +13 -1
- package/packages/pm-search-advanced/extensions/search-advanced/index.js +69 -1
- package/packages/pm-search-advanced/extensions/search-advanced/index.ts +91 -2
- package/packages/pm-search-advanced/extensions/search-advanced/manifest.json +13 -1
- package/packages/pm-templates/extensions/templates/manifest.json +6 -1
- package/packages/pm-todos/extensions/todos/index.js +3 -7
- package/packages/pm-todos/extensions/todos/index.ts +55 -42
- package/packages/pm-todos/extensions/todos/manifest.json +13 -1
- package/scripts/bundle-cli.mjs +121 -17
- package/dist/cli-bundle/chunks/chunk-PB2YU2E3.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-RJONRNXN.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-SW5BMMCU.js +0 -13864
- package/dist/cli-bundle/chunks/chunk-SW5BMMCU.js.map +0 -7
- package/dist/cli-bundle/chunks/commands-XJ4TJ5UN.js +0 -24225
- package/dist/cli-bundle/chunks/commands-XJ4TJ5UN.js.map +0 -7
- package/dist/cli-bundle/chunks/register-list-query-EIVQ5FMR.js.map +0 -7
- package/dist/cli-bundle/chunks/register-mutation-RSZNPSGI.js.map +0 -7
- package/dist/cli-bundle/chunks/register-operations-APUSYDMR.js.map +0 -7
- 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.
|
|
@@ -94,8 +94,16 @@ export default defineExtension({
|
|
|
94
94
|
});
|
|
95
95
|
|
|
96
96
|
// renderers
|
|
97
|
-
api.registerRenderer("json", (context) =>
|
|
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 [
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@unbrained/pm-cli",
|
|
3
|
-
"version": "2026.5
|
|
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.
|
|
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.
|
|
131
|
+
"@sentry/cli": "^3.5.0",
|
|
126
132
|
"@types/node": "^25.9.1",
|
|
127
|
-
"@vitest/coverage-v8": "^4.1.
|
|
128
|
-
"c8": "^11.0.0",
|
|
133
|
+
"@vitest/coverage-v8": "^4.1.8",
|
|
129
134
|
"esbuild": "0.28.0",
|
|
130
|
-
"tsx": "^4.22.
|
|
135
|
+
"tsx": "^4.22.4",
|
|
131
136
|
"typescript": "^6.0.3",
|
|
132
|
-
"vitest": "^4.1.
|
|
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.
|
|
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 {
|
|
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
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
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": [
|
|
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
|
-
{
|
|
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
|
-
{
|
|
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
|
}
|