@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
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../../../../core/config/positional-value.ts", "../../../../../../../../core/config/nested-settings.ts", "../../../../../../../../cli/commands/config.ts"],
|
|
4
|
+
"sourcesContent": ["/**\n * Pure routing helper for the optional positional `value` argument of `pm config set`.\n *\n * `pm config set <key> <value>` is the intuitive form agents reach for, but config\n * VALUES are actually carried by typed flags (`--format`, `--policy`, `--criterion`).\n * This module maps a config key (kebab or snake form, canonical or alias) plus a raw\n * positional value onto the typed flag it should populate, applying enabled/disabled\n * synonyms (off/on/true/false) for boolean-style policy keys. The existing per-key\n * validators in config.ts still run on the routed value, so bad values keep their\n * good error messages.\n */\n\n/** The typed flag a positional value routes to. */\nexport type ConfigPositionalFlag = \"format\" | \"policy\" | \"criterion\";\n\n/** Successful routing of a positional value to a single-value typed flag. */\nexport interface ConfigPositionalScalarRouted {\n routable: true;\n flag: \"format\" | \"policy\";\n /** Normalized scalar value for single-value flags. */\n value: string;\n}\n\n/** Successful routing of a positional value to the criteria-list flag. */\nexport interface ConfigPositionalListRouted {\n routable: true;\n flag: \"criterion\";\n /** Criteria-list flag (`--criterion`) value, supplied as a values array. */\n values: string[];\n}\n\nexport type ConfigPositionalRouted = ConfigPositionalScalarRouted | ConfigPositionalListRouted;\n\n/** A key whose value cannot be carried by a single positional (e.g. `context`). */\nexport interface ConfigPositionalNotRoutable {\n routable: false;\n /** Human/agent-facing reason + the flags to use instead. */\n reason: string;\n}\n\nexport type ConfigPositionalResult = ConfigPositionalRouted | ConfigPositionalNotRoutable;\n\n/** Canonical snake-case config keys this helper understands. */\ntype CanonicalConfigKey =\n | \"definition_of_done\"\n | \"item_format\"\n | \"history_missing_stream_policy\"\n | \"sprint_release_format_policy\"\n | \"parent_reference_policy\"\n | \"metadata_validation_profile\"\n | \"metadata_required_fields\"\n | \"lifecycle_stale_blocker_reason_patterns\"\n | \"lifecycle_closure_like_blocked_reason_patterns\"\n | \"lifecycle_closure_like_resolution_patterns\"\n | \"lifecycle_closure_like_actual_result_patterns\"\n | \"governance_preset\"\n | \"governance_ownership_enforcement\"\n | \"governance_create_mode_default\"\n | \"governance_close_validation_default\"\n | \"governance_create_default_type\"\n | \"governance_workflow_enforcement\"\n | \"governance_parent_reference_policy\"\n | \"governance_metadata_validation_profile\"\n | \"governance_force_required_for_stale_lock\"\n | \"test_result_tracking\"\n | \"telemetry_tracking\"\n | \"context\";\n\nconst FORMAT_KEYS: ReadonlySet<CanonicalConfigKey> = new Set<CanonicalConfigKey>([\"item_format\"]);\n\nconst CRITERIA_KEYS: ReadonlySet<CanonicalConfigKey> = new Set<CanonicalConfigKey>([\n \"definition_of_done\",\n \"metadata_required_fields\",\n \"lifecycle_stale_blocker_reason_patterns\",\n \"lifecycle_closure_like_blocked_reason_patterns\",\n \"lifecycle_closure_like_resolution_patterns\",\n \"lifecycle_closure_like_actual_result_patterns\",\n]);\n\nconst POLICY_KEYS: ReadonlySet<CanonicalConfigKey> = new Set<CanonicalConfigKey>([\n \"history_missing_stream_policy\",\n \"sprint_release_format_policy\",\n \"parent_reference_policy\",\n \"metadata_validation_profile\",\n \"governance_preset\",\n \"governance_ownership_enforcement\",\n \"governance_create_mode_default\",\n \"governance_close_validation_default\",\n \"governance_create_default_type\",\n \"governance_workflow_enforcement\",\n \"governance_parent_reference_policy\",\n \"governance_metadata_validation_profile\",\n \"governance_force_required_for_stale_lock\",\n \"test_result_tracking\",\n \"telemetry_tracking\",\n]);\n\n/**\n * Policy keys whose only valid values are enabled/disabled. For these we accept the\n * intuitive synonyms off/on/true/false. Other policy keys pass through unchanged so\n * their own validators report the precise allowed set.\n */\nconst ENABLED_DISABLED_POLICY_KEYS: ReadonlySet<CanonicalConfigKey> = new Set<CanonicalConfigKey>([\n \"governance_force_required_for_stale_lock\",\n \"test_result_tracking\",\n \"telemetry_tracking\",\n]);\n\nconst ENABLED_DISABLED_SYNONYMS: Record<string, string> = {\n off: \"disabled\",\n on: \"enabled\",\n true: \"enabled\",\n false: \"disabled\",\n enabled: \"enabled\",\n disabled: \"disabled\",\n};\n\n/** Normalize any kebab/snake key form to the canonical snake key (or undefined). */\nfunction toCanonicalKey(keyOrAlias: string): CanonicalConfigKey | undefined {\n const normalized = keyOrAlias.trim().toLowerCase().replaceAll(\"-\", \"_\");\n if (\n FORMAT_KEYS.has(normalized as CanonicalConfigKey) ||\n CRITERIA_KEYS.has(normalized as CanonicalConfigKey) ||\n POLICY_KEYS.has(normalized as CanonicalConfigKey) ||\n normalized === \"context\"\n ) {\n return normalized as CanonicalConfigKey;\n }\n return undefined;\n}\n\n/**\n * Map an enabled/disabled-style value through its synonyms (case-insensitive). Values\n * that are not synonyms pass through unchanged so the downstream validator can reject\n * them with its own message.\n */\nfunction normalizeEnabledDisabled(value: string): string {\n const normalized = value.trim().toLowerCase();\n return ENABLED_DISABLED_SYNONYMS[normalized] ?? value;\n}\n\n/**\n * Resolve which typed flag a positional `pm config set <key> <value>` value should\n * populate, plus the normalized value.\n *\n * Returns `{ routable: false, reason }` for keys that require multiple/structured\n * flags (e.g. `context`). Unknown keys also return `routable: false` so the caller\n * can fall back to the existing invalid-key path.\n */\nexport function resolveConfigPositionalValue(\n canonicalKeyOrAlias: string,\n value: string,\n): ConfigPositionalResult {\n const key = toCanonicalKey(canonicalKeyOrAlias);\n if (key === undefined) {\n return {\n routable: false,\n reason: `Unknown config key \"${canonicalKeyOrAlias}\" cannot route a positional value.`,\n };\n }\n\n if (key === \"context\") {\n return {\n routable: false,\n reason:\n 'Config set context does not accept a positional value. Use --default-depth, --activity-limit, --stale-threshold-days, or --section-<name> flags.',\n };\n }\n\n if (FORMAT_KEYS.has(key)) {\n return { routable: true, flag: \"format\", value };\n }\n\n if (CRITERIA_KEYS.has(key)) {\n return { routable: true, flag: \"criterion\", values: [value] };\n }\n\n // policy key\n const policyValue = ENABLED_DISABLED_POLICY_KEYS.has(key) ? normalizeEnabledDisabled(value) : value;\n return { routable: true, flag: \"policy\", value: policyValue };\n}\n", "/**\n * Nested leaf settings exposed via `pm config <scope> set/get <key> <value>`.\n *\n * These are simple string/number leaves of {@link PmSettings} (provider URLs,\n * vector-store adapter, search tuning) that previously required hand-editing\n * `.agents/pm/settings.json`. They live here so the same dotted path is\n * documented in one place and surfaced both to the config dispatcher and to\n * `pm config list` (so `pm config list --json` is discoverable).\n *\n * Shape conventions:\n * - `path` is the dotted JSON path in {@link PmSettings} (e.g. `search.provider`).\n * - `kind` is the value shape: \"string\" | \"integer\" | \"number\" | \"ratio\"\n * - \"ratio\" must be a finite number in [0, 1].\n * - \"integer\" must be a finite non-negative integer. Set `min: 1` for keys\n * where the runtime silently falls back when 0 is supplied (e.g. batch\n * size, timeout, max-results limits).\n * - \"number\" must be a finite number — negatives ARE allowed (e.g. score\n * thresholds may legitimately be negative when a provider normalizes\n * scores into a signed range).\n *\n * Adding a key here makes it acceptable to `pm config <scope> set <key> <value>`\n * with no other code changes — the dispatcher walks the dotted path on the\n * already-validated PmSettings shape.\n */\n\nexport type NestedSettingKind = \"string\" | \"integer\" | \"number\" | \"ratio\";\n\nexport interface NestedSettingDescriptor {\n /** CLI key (snake_case). Kebab-case form is accepted by normalizing `-` → `_`. */\n key: string;\n /** Dotted JSON path in PmSettings. */\n path: string;\n /** Value shape. */\n kind: NestedSettingKind;\n /** Short human-facing summary for `pm config list`. */\n summary: string;\n /** Optional accepted values for string settings. */\n choices?: readonly string[];\n /**\n * Optional minimum value for `integer` / `number` kinds. When set,\n * `parseNestedSettingValue` rejects values strictly below `min`. Useful for\n * settings where 0 would be silently ignored by the runtime (batch sizes,\n * timeouts, max-results limits).\n */\n min?: number;\n}\n\n/**\n * Search/provider/vector-store leaves. Order is the display order in\n * `pm config list` and in error hints.\n */\nexport const NESTED_SETTING_DESCRIPTORS: readonly NestedSettingDescriptor[] = [\n {\n key: \"search_provider\",\n path: \"search.provider\",\n kind: \"string\",\n summary: \"Search embedding provider name (e.g. openai, ollama, or an extension provider).\",\n },\n {\n key: \"search_mutation_refresh_policy\",\n path: \"search.mutation_refresh_policy\",\n kind: \"string\",\n choices: [\"cache_only\", \"semantic_configured\", \"semantic_auto\"],\n summary: \"Mutation-time search refresh policy: cache_only, semantic_configured, or semantic_auto.\",\n },\n {\n key: \"search_embedding_model\",\n path: \"search.embedding_model\",\n kind: \"string\",\n summary: \"Default embedding model name (overrides provider-specific model when set).\",\n },\n {\n key: \"search_embedding_batch_size\",\n path: \"search.embedding_batch_size\",\n kind: \"integer\",\n min: 1,\n summary: \"Number of items embedded per request batch.\",\n },\n {\n key: \"search_embedding_timeout_ms\",\n path: \"search.embedding_timeout_ms\",\n kind: \"integer\",\n min: 1,\n summary: \"Per-request embedding timeout in milliseconds.\",\n },\n {\n key: \"search_score_threshold\",\n path: \"search.score_threshold\",\n kind: \"number\",\n summary: \"Minimum score for a hit to be returned (0 keeps all matches).\",\n },\n {\n key: \"search_hybrid_semantic_weight\",\n path: \"search.hybrid_semantic_weight\",\n kind: \"ratio\",\n summary: \"Hybrid mode semantic weight in [0, 1] (1-weight goes to keyword).\",\n },\n {\n key: \"search_max_results\",\n path: \"search.max_results\",\n kind: \"integer\",\n min: 1,\n summary: \"Default upper bound on search hits when --limit is not supplied.\",\n },\n {\n key: \"openai_base_url\",\n path: \"providers.openai.base_url\",\n kind: \"string\",\n summary: \"OpenAI-compatible API base URL (LM Studio/vLLM also use this).\",\n },\n {\n key: \"openai_api_key\",\n path: \"providers.openai.api_key\",\n kind: \"string\",\n summary: \"OpenAI-compatible API key.\",\n },\n {\n key: \"openai_model\",\n path: \"providers.openai.model\",\n kind: \"string\",\n summary: \"OpenAI-compatible embedding model name.\",\n },\n {\n key: \"ollama_base_url\",\n path: \"providers.ollama.base_url\",\n kind: \"string\",\n summary: \"Ollama API base URL (typically http://localhost:11434).\",\n },\n {\n key: \"ollama_model\",\n path: \"providers.ollama.model\",\n kind: \"string\",\n summary: \"Ollama embedding model name (e.g. nomic-embed-text).\",\n },\n {\n key: \"vector_store_adapter\",\n path: \"vector_store.adapter\",\n kind: \"string\",\n summary: \"Vector store adapter name (lancedb, qdrant, or an extension adapter).\",\n },\n {\n key: \"qdrant_url\",\n path: \"vector_store.qdrant.url\",\n kind: \"string\",\n summary: \"Qdrant HTTP API URL.\",\n },\n {\n key: \"qdrant_api_key\",\n path: \"vector_store.qdrant.api_key\",\n kind: \"string\",\n summary: \"Qdrant API key (empty if running unauthenticated).\",\n },\n {\n key: \"lancedb_path\",\n path: \"vector_store.lancedb.path\",\n kind: \"string\",\n summary: \"LanceDB storage path (relative to pm root or absolute).\",\n },\n];\n\nconst DESCRIPTOR_BY_KEY: ReadonlyMap<string, NestedSettingDescriptor> = new Map(\n NESTED_SETTING_DESCRIPTORS.map((descriptor) => [descriptor.key, descriptor]),\n);\n\n/** Canonical CLI keys (in declaration order). */\nexport const NESTED_SETTING_KEYS: readonly string[] = NESTED_SETTING_DESCRIPTORS.map(\n (descriptor) => descriptor.key,\n);\n\n/**\n * Map a raw user-supplied key (kebab or snake case, any casing) onto a known\n * nested-leaf descriptor. Returns `undefined` when the key is not a nested\n * leaf (callers can then fall back to the regular ConfigKey path).\n */\nexport function resolveNestedSettingDescriptor(raw: string | undefined): NestedSettingDescriptor | undefined {\n if (typeof raw !== \"string\") {\n return undefined;\n }\n const normalized = raw.trim().toLowerCase().replaceAll(\"-\", \"_\");\n if (normalized.length === 0) {\n return undefined;\n }\n return DESCRIPTOR_BY_KEY.get(normalized);\n}\n\n/** Recoverable parsed value with the descriptor it satisfied. */\nexport interface NestedSettingParsedValue {\n descriptor: NestedSettingDescriptor;\n value: string | number;\n}\n\n/** Throwable validation error returned as a structured result. */\nexport interface NestedSettingParseError {\n message: string;\n}\n\nexport type NestedSettingParseResult =\n | { ok: true; parsed: NestedSettingParsedValue }\n | { ok: false; error: NestedSettingParseError };\n\n/**\n * Validate and coerce a raw string value for a nested-leaf setting. The\n * returned value is the typed leaf that should be written into PmSettings.\n *\n * Empty strings are allowed for \"string\" leaves (used to clear a value).\n */\nexport function parseNestedSettingValue(\n descriptor: NestedSettingDescriptor,\n rawValue: string,\n): NestedSettingParseResult {\n if (typeof rawValue !== \"string\") {\n return { ok: false, error: { message: `Config set ${descriptor.key} requires a string value` } };\n }\n const trimmed = rawValue.trim();\n if (descriptor.kind === \"string\") {\n if (descriptor.choices && !descriptor.choices.includes(trimmed)) {\n return {\n ok: false,\n error: {\n message: `Config set ${descriptor.key} must be one of ${descriptor.choices.join(\"|\")}, got \"${rawValue}\"`,\n },\n };\n }\n return { ok: true, parsed: { descriptor, value: trimmed } };\n }\n\n // Number(\"\") === 0, which would silently accept empty / whitespace-only input\n // as a valid zero. Reject explicitly so misconfigurations don't slip through.\n if (trimmed.length === 0) {\n return {\n ok: false,\n error: { message: `Config set ${descriptor.key} requires a non-empty value` },\n };\n }\n\n const parsed = Number(trimmed);\n if (!Number.isFinite(parsed)) {\n return {\n ok: false,\n error: { message: `Config set ${descriptor.key} requires a finite number, got \"${rawValue}\"` },\n };\n }\n if (descriptor.kind === \"integer\") {\n if (!Number.isInteger(parsed) || parsed < 0) {\n return {\n ok: false,\n error: { message: `Config set ${descriptor.key} requires a non-negative integer, got \"${rawValue}\"` },\n };\n }\n if (descriptor.min !== undefined && parsed < descriptor.min) {\n return {\n ok: false,\n error: {\n message: `Config set ${descriptor.key} requires an integer >= ${descriptor.min}, got \"${rawValue}\" (the runtime silently ignores 0 here and falls back to the default)`,\n },\n };\n }\n return { ok: true, parsed: { descriptor, value: parsed } };\n }\n if (descriptor.kind === \"ratio\") {\n if (parsed < 0 || parsed > 1) {\n return {\n ok: false,\n error: { message: `Config set ${descriptor.key} requires a number in [0, 1], got \"${rawValue}\"` },\n };\n }\n return { ok: true, parsed: { descriptor, value: parsed } };\n }\n // kind === \"number\" — negatives are allowed; only apply an explicit `min`.\n if (descriptor.min !== undefined && parsed < descriptor.min) {\n return {\n ok: false,\n error: { message: `Config set ${descriptor.key} requires a number >= ${descriptor.min}, got \"${rawValue}\"` },\n };\n }\n return { ok: true, parsed: { descriptor, value: parsed } };\n}\n\n/** Walk a dotted path on an arbitrary record (best-effort, returns null on miss). */\nexport function readNestedSettingValue(settings: unknown, descriptor: NestedSettingDescriptor): string | number | null {\n const segments = descriptor.path.split(\".\");\n let cursor: unknown = settings;\n for (const segment of segments) {\n if (typeof cursor !== \"object\" || cursor === null) {\n return null;\n }\n cursor = (cursor as Record<string, unknown>)[segment];\n }\n if (typeof cursor === \"string\" || typeof cursor === \"number\") {\n return cursor;\n }\n return null;\n}\n\n/**\n * Set a leaf value on a settings object by walking the descriptor's dotted\n * path. Missing intermediate objects are created. Returns `true` when the\n * value actually changed.\n */\nexport function writeNestedSettingValue(\n settings: Record<string, unknown>,\n descriptor: NestedSettingDescriptor,\n value: string | number,\n): boolean {\n const segments = descriptor.path.split(\".\");\n let cursor: Record<string, unknown> = settings;\n for (let index = 0; index < segments.length - 1; index += 1) {\n const segment = segments[index];\n const existing = cursor[segment];\n if (typeof existing !== \"object\" || existing === null || Array.isArray(existing)) {\n const next: Record<string, unknown> = {};\n cursor[segment] = next;\n cursor = next;\n } else {\n cursor = existing as Record<string, unknown>;\n }\n }\n const leafKey = segments[segments.length - 1];\n const previous = cursor[leafKey];\n if (previous === value) {\n return false;\n }\n cursor[leafKey] = value;\n return true;\n}\n", "import { pathExists } from \"../../core/fs/fs-utils.js\";\nimport { resolveConfigPositionalValue } from \"../../core/config/positional-value.js\";\nimport {\n NESTED_SETTING_DESCRIPTORS,\n parseNestedSettingValue,\n readNestedSettingValue,\n resolveNestedSettingDescriptor,\n writeNestedSettingValue,\n type NestedSettingDescriptor,\n} from \"../../core/config/nested-settings.js\";\nimport { getActiveExtensionRegistrations } from \"../../core/extensions/index.js\";\nimport { normalizeParentReferencePolicy } from \"../../core/item/parent-reference-policy.js\";\nimport { normalizeSprintReleaseFormatPolicy } from \"../../core/item/sprint-release-format.js\";\nimport { resolveItemTypeRegistry, resolveTypeName } from \"../../core/item/type-registry.js\";\nimport { buildInvalidTypeError } from \"../../core/schema/item-types-file.js\";\nimport { EXIT_CODE } from \"../../core/shared/constants.js\";\nimport type { GlobalOptions } from \"../../core/shared/command-types.js\";\nimport { PmCliError } from \"../../core/shared/errors.js\";\nimport { migrateItemFilesToFormat } from \"../../core/store/item-format-migration.js\";\nimport {\n getSettingsPath,\n resolveGlobalPmRoot,\n resolvePmRoot,\n} from \"../../core/store/paths.js\";\nimport { readSettingsWithMetadata, writeSettings } from \"../../core/store/settings.js\";\nimport type {\n ContextDepth,\n GovernanceCloseValidationDefault,\n GovernanceCreateModeDefault,\n GovernanceOwnershipEnforcement,\n GovernancePreset,\n GovernanceWorkflowEnforcement,\n ItemFormat,\n ParentReferencePolicy,\n SprintReleaseFormatPolicy,\n ValidateMetadataProfile,\n ValidateMetadataRequiredField,\n} from \"../../types/index.js\";\nimport { CONTEXT_DEPTH_VALUES, CONTEXT_SECTION_VALUES } from \"../../types/index.js\";\n\nconst CONFIG_SCOPE_VALUES = [\"project\", \"global\"] as const;\ntype ConfigScope = (typeof CONFIG_SCOPE_VALUES)[number];\n\nconst CONFIG_KEY_VALUES = [\n \"definition-of-done\",\n \"definition_of_done\",\n \"item-format\",\n \"item_format\",\n \"history-missing-stream-policy\",\n \"history_missing_stream_policy\",\n \"sprint-release-format-policy\",\n \"sprint_release_format_policy\",\n \"parent-reference-policy\",\n \"parent_reference_policy\",\n \"metadata-validation-profile\",\n \"metadata_validation_profile\",\n \"metadata-required-fields\",\n \"metadata_required_fields\",\n \"lifecycle-stale-blocker-reason-patterns\",\n \"lifecycle_stale_blocker_reason_patterns\",\n \"lifecycle-closure-like-blocked-reason-patterns\",\n \"lifecycle_closure_like_blocked_reason_patterns\",\n \"lifecycle-closure-like-resolution-patterns\",\n \"lifecycle_closure_like_resolution_patterns\",\n \"lifecycle-closure-like-actual-result-patterns\",\n \"lifecycle_closure_like_actual_result_patterns\",\n \"governance-preset\",\n \"governance_preset\",\n \"governance-ownership-enforcement\",\n \"governance_ownership_enforcement\",\n \"governance-create-mode-default\",\n \"governance_create_mode_default\",\n \"governance-close-validation-default\",\n \"governance_close_validation_default\",\n \"governance-create-default-type\",\n \"governance_create_default_type\",\n \"governance-workflow-enforcement\",\n \"governance_workflow_enforcement\",\n \"governance-parent-reference-policy\",\n \"governance_parent_reference_policy\",\n \"governance-metadata-validation-profile\",\n \"governance_metadata_validation_profile\",\n \"governance-force-required-for-stale-lock\",\n \"governance_force_required_for_stale_lock\",\n \"test-result-tracking\",\n \"test_result_tracking\",\n \"telemetry-tracking\",\n \"telemetry_tracking\",\n \"context\",\n] as const;\ntype ConfigAction = \"get\" | \"set\" | \"list\" | \"export\";\ntype ConfigKey =\n | \"definition_of_done\"\n | \"item_format\"\n | \"history_missing_stream_policy\"\n | \"sprint_release_format_policy\"\n | \"parent_reference_policy\"\n | \"metadata_validation_profile\"\n | \"metadata_required_fields\"\n | \"lifecycle_stale_blocker_reason_patterns\"\n | \"lifecycle_closure_like_blocked_reason_patterns\"\n | \"lifecycle_closure_like_resolution_patterns\"\n | \"lifecycle_closure_like_actual_result_patterns\"\n | \"governance_preset\"\n | \"governance_ownership_enforcement\"\n | \"governance_create_mode_default\"\n | \"governance_close_validation_default\"\n | \"governance_create_default_type\"\n | \"governance_workflow_enforcement\"\n | \"governance_parent_reference_policy\"\n | \"governance_metadata_validation_profile\"\n | \"governance_force_required_for_stale_lock\"\n | \"test_result_tracking\"\n | \"telemetry_tracking\"\n | \"context\";\ntype HistoryMissingStreamPolicy = \"auto_create\" | \"strict_error\";\ntype TestResultTrackingPolicy = \"enabled\" | \"disabled\";\ntype TelemetryTrackingPolicy = \"enabled\" | \"disabled\";\ntype GovernanceForceRequiredForStaleLockPolicy = \"enabled\" | \"disabled\";\ntype ConfigValue =\n | string\n | string[]\n | ItemFormat\n | HistoryMissingStreamPolicy\n | SprintReleaseFormatPolicy\n | ParentReferencePolicy\n | ValidateMetadataProfile\n | GovernancePreset\n | GovernanceOwnershipEnforcement\n | GovernanceCreateModeDefault\n | GovernanceCloseValidationDefault\n | GovernanceWorkflowEnforcement\n | GovernanceForceRequiredForStaleLockPolicy\n | TestResultTrackingPolicy\n | TelemetryTrackingPolicy\n | ContextConfigValue;\n\ninterface ContextConfigValue {\n default_depth: string;\n activity_limit: number;\n stale_threshold_days: number;\n sections: Record<string, boolean>;\n}\n\ninterface ConfigKeyDescriptor {\n key: ConfigKey;\n aliases: string[];\n value_kind: \"string_array\" | \"enum\" | \"object\";\n set_flags: string[];\n summary: string;\n value: ConfigValue;\n}\n\nexport interface ConfigCommandOptions {\n criterion?: string[];\n format?: string;\n policy?: string;\n value?: string;\n clearCriteria?: boolean;\n defaultDepth?: string;\n activityLimit?: string;\n staleThresholdDays?: string;\n sectionHierarchy?: string;\n sectionActivity?: string;\n sectionProgress?: string;\n sectionBlockers?: string;\n sectionFiles?: string;\n sectionWorkload?: string;\n sectionStaleness?: string;\n sectionTests?: string;\n}\n\nexport interface NestedSettingResultValue {\n key: string;\n path: string;\n kind: NestedSettingDescriptor[\"kind\"];\n value: string | number | null;\n}\n\nexport interface ConfigResult {\n scope: ConfigScope;\n key?: ConfigKey | string;\n criteria?: string[];\n format?: ItemFormat;\n policy?:\n | HistoryMissingStreamPolicy\n | SprintReleaseFormatPolicy\n | ParentReferencePolicy\n | ValidateMetadataProfile\n | GovernancePreset\n | GovernanceOwnershipEnforcement\n | GovernanceCreateModeDefault\n | GovernanceCloseValidationDefault\n | GovernanceWorkflowEnforcement\n | GovernanceForceRequiredForStaleLockPolicy\n | TestResultTrackingPolicy\n | TelemetryTrackingPolicy\n | string;\n nested_setting?: NestedSettingResultValue;\n nested_settings?: NestedSettingResultValue[];\n keys?: ConfigKeyDescriptor[];\n values?: Record<ConfigKey, ConfigValue>;\n count?: number;\n context_settings?: ContextConfigValue;\n has_explicit_item_format?: boolean;\n migration?: {\n target_format: ItemFormat;\n scanned: number;\n migrated: string[];\n removed: string[];\n warnings: string[];\n };\n settings_path: string;\n changed: boolean;\n warnings?: string[];\n}\n\nconst CONFIG_KEY_ALIASES: Record<ConfigKey, string[]> = {\n definition_of_done: [\"definition-of-done\", \"definition_of_done\"],\n item_format: [\"item-format\", \"item_format\"],\n history_missing_stream_policy: [\"history-missing-stream-policy\", \"history_missing_stream_policy\"],\n sprint_release_format_policy: [\"sprint-release-format-policy\", \"sprint_release_format_policy\"],\n parent_reference_policy: [\"parent-reference-policy\", \"parent_reference_policy\"],\n metadata_validation_profile: [\"metadata-validation-profile\", \"metadata_validation_profile\"],\n metadata_required_fields: [\"metadata-required-fields\", \"metadata_required_fields\"],\n lifecycle_stale_blocker_reason_patterns: [\n \"lifecycle-stale-blocker-reason-patterns\",\n \"lifecycle_stale_blocker_reason_patterns\",\n ],\n lifecycle_closure_like_blocked_reason_patterns: [\n \"lifecycle-closure-like-blocked-reason-patterns\",\n \"lifecycle_closure_like_blocked_reason_patterns\",\n ],\n lifecycle_closure_like_resolution_patterns: [\n \"lifecycle-closure-like-resolution-patterns\",\n \"lifecycle_closure_like_resolution_patterns\",\n ],\n lifecycle_closure_like_actual_result_patterns: [\n \"lifecycle-closure-like-actual-result-patterns\",\n \"lifecycle_closure_like_actual_result_patterns\",\n ],\n governance_preset: [\"governance-preset\", \"governance_preset\"],\n governance_ownership_enforcement: [\"governance-ownership-enforcement\", \"governance_ownership_enforcement\"],\n governance_create_mode_default: [\"governance-create-mode-default\", \"governance_create_mode_default\"],\n governance_close_validation_default: [\n \"governance-close-validation-default\",\n \"governance_close_validation_default\",\n ],\n governance_create_default_type: [\"governance-create-default-type\", \"governance_create_default_type\"],\n governance_workflow_enforcement: [\"governance-workflow-enforcement\", \"governance_workflow_enforcement\"],\n governance_parent_reference_policy: [\"governance-parent-reference-policy\", \"governance_parent_reference_policy\"],\n governance_metadata_validation_profile: [\n \"governance-metadata-validation-profile\",\n \"governance_metadata_validation_profile\",\n ],\n governance_force_required_for_stale_lock: [\n \"governance-force-required-for-stale-lock\",\n \"governance_force_required_for_stale_lock\",\n ],\n test_result_tracking: [\"test-result-tracking\", \"test_result_tracking\"],\n telemetry_tracking: [\"telemetry-tracking\", \"telemetry_tracking\"],\n context: [\"context\"],\n};\n\n// Canonical kebab-case forms (first alias entry per key). Used for the invalid-key\n// hint so agents see ~21 keys instead of all ~45 kebab+snake variants; snake_case\n// forms stay fully accepted as input via CONFIG_KEY_VALUES/normalizeKey.\nconst CANONICAL_CONFIG_KEYS: readonly string[] = (Object.keys(CONFIG_KEY_ALIASES) as ConfigKey[]).map(\n (candidate) => CONFIG_KEY_ALIASES[candidate][0],\n);\n\nconst CONFIG_KEY_SUMMARIES: Record<ConfigKey, string> = {\n definition_of_done: \"Definition of Done criteria list.\",\n item_format: \"Default item file format.\",\n history_missing_stream_policy: \"Missing history stream handling policy.\",\n sprint_release_format_policy: \"Sprint/release format validation policy.\",\n parent_reference_policy: \"Parent reference validation policy.\",\n metadata_validation_profile: \"Validate metadata profile policy (core|strict|custom).\",\n metadata_required_fields: \"Validate custom metadata required-fields list.\",\n lifecycle_stale_blocker_reason_patterns:\n \"Validate lifecycle stale-blocker reason substring patterns (criteria list).\",\n lifecycle_closure_like_blocked_reason_patterns:\n \"Validate lifecycle closure-like blocked_reason substring patterns (criteria list).\",\n lifecycle_closure_like_resolution_patterns:\n \"Validate lifecycle closure-like resolution substring patterns (criteria list).\",\n lifecycle_closure_like_actual_result_patterns:\n \"Validate lifecycle closure-like actual_result substring patterns (criteria list).\",\n governance_preset: \"Governance preset policy (minimal|default|strict|custom).\",\n governance_ownership_enforcement: \"Governance ownership enforcement policy (none|warn|strict).\",\n governance_create_mode_default: \"Governance default create mode (progressive|strict).\",\n governance_close_validation_default: \"Governance default close validation mode (off|warn|strict).\",\n governance_create_default_type: \"Governance default item type for `pm create` when --type is omitted.\",\n governance_workflow_enforcement: \"Governance per-type transition enforcement mode (off|warn|strict).\",\n governance_parent_reference_policy: \"Governance parent reference policy (warn|strict_error).\",\n governance_metadata_validation_profile: \"Governance metadata validation profile (core|strict|custom).\",\n governance_force_required_for_stale_lock: \"Governance stale-lock force policy (enabled|disabled).\",\n test_result_tracking: \"Item-level linked test result persistence policy.\",\n telemetry_tracking: \"Telemetry usage reporting policy.\",\n context: \"Context command settings (depth, section toggles, limits).\",\n};\n\nconst LIFECYCLE_PATTERN_CONFIG_KEYS: ConfigKey[] = [\n \"lifecycle_stale_blocker_reason_patterns\",\n \"lifecycle_closure_like_blocked_reason_patterns\",\n \"lifecycle_closure_like_resolution_patterns\",\n \"lifecycle_closure_like_actual_result_patterns\",\n];\n\nfunction isCriteriaConfigKey(key: ConfigKey): boolean {\n return key === \"definition_of_done\" || key === \"metadata_required_fields\" || LIFECYCLE_PATTERN_CONFIG_KEYS.includes(key);\n}\n\nfunction normalizeScope(value: string): ConfigScope {\n if ((CONFIG_SCOPE_VALUES as readonly string[]).includes(value)) {\n return value as ConfigScope;\n }\n throw new PmCliError(\n `Invalid config scope \"${value}\". Allowed: ${CONFIG_SCOPE_VALUES.join(\", \")}`,\n EXIT_CODE.USAGE,\n );\n}\n\nfunction normalizeAction(value: string): ConfigAction {\n if (value === \"get\" || value === \"set\" || value === \"list\" || value === \"export\") {\n return value;\n }\n throw new PmCliError(`Invalid config action \"${value}\". Allowed: get, set, list, export`, EXIT_CODE.USAGE);\n}\n\nfunction normalizeKey(value: string): ConfigKey {\n if ((CONFIG_KEY_VALUES as readonly string[]).includes(value)) {\n if (value === \"item-format\" || value === \"item_format\") {\n return \"item_format\";\n }\n if (value === \"history-missing-stream-policy\" || value === \"history_missing_stream_policy\") {\n return \"history_missing_stream_policy\";\n }\n if (value === \"sprint-release-format-policy\" || value === \"sprint_release_format_policy\") {\n return \"sprint_release_format_policy\";\n }\n if (value === \"parent-reference-policy\" || value === \"parent_reference_policy\") {\n return \"parent_reference_policy\";\n }\n if (value === \"metadata-validation-profile\" || value === \"metadata_validation_profile\") {\n return \"metadata_validation_profile\";\n }\n if (value === \"metadata-required-fields\" || value === \"metadata_required_fields\") {\n return \"metadata_required_fields\";\n }\n if (\n value === \"lifecycle-stale-blocker-reason-patterns\" ||\n value === \"lifecycle_stale_blocker_reason_patterns\"\n ) {\n return \"lifecycle_stale_blocker_reason_patterns\";\n }\n if (\n value === \"lifecycle-closure-like-blocked-reason-patterns\" ||\n value === \"lifecycle_closure_like_blocked_reason_patterns\"\n ) {\n return \"lifecycle_closure_like_blocked_reason_patterns\";\n }\n if (\n value === \"lifecycle-closure-like-resolution-patterns\" ||\n value === \"lifecycle_closure_like_resolution_patterns\"\n ) {\n return \"lifecycle_closure_like_resolution_patterns\";\n }\n if (\n value === \"lifecycle-closure-like-actual-result-patterns\" ||\n value === \"lifecycle_closure_like_actual_result_patterns\"\n ) {\n return \"lifecycle_closure_like_actual_result_patterns\";\n }\n if (value === \"governance-preset\" || value === \"governance_preset\") {\n return \"governance_preset\";\n }\n if (value === \"governance-ownership-enforcement\" || value === \"governance_ownership_enforcement\") {\n return \"governance_ownership_enforcement\";\n }\n if (value === \"governance-create-mode-default\" || value === \"governance_create_mode_default\") {\n return \"governance_create_mode_default\";\n }\n if (value === \"governance-close-validation-default\" || value === \"governance_close_validation_default\") {\n return \"governance_close_validation_default\";\n }\n if (value === \"governance-create-default-type\" || value === \"governance_create_default_type\") {\n return \"governance_create_default_type\";\n }\n if (value === \"governance-workflow-enforcement\" || value === \"governance_workflow_enforcement\") {\n return \"governance_workflow_enforcement\";\n }\n if (value === \"governance-parent-reference-policy\" || value === \"governance_parent_reference_policy\") {\n return \"governance_parent_reference_policy\";\n }\n if (\n value === \"governance-metadata-validation-profile\" ||\n value === \"governance_metadata_validation_profile\"\n ) {\n return \"governance_metadata_validation_profile\";\n }\n if (\n value === \"governance-force-required-for-stale-lock\" ||\n value === \"governance_force_required_for_stale_lock\"\n ) {\n return \"governance_force_required_for_stale_lock\";\n }\n if (value === \"test-result-tracking\" || value === \"test_result_tracking\") {\n return \"test_result_tracking\";\n }\n if (value === \"telemetry-tracking\" || value === \"telemetry_tracking\") {\n return \"telemetry_tracking\";\n }\n if (value === \"context\") {\n return \"context\";\n }\n return \"definition_of_done\";\n }\n const nestedKeys = NESTED_SETTING_DESCRIPTORS.map((descriptor) => descriptor.key).join(\", \");\n throw new PmCliError(\n `Invalid config key \"${value}\". Supported: ${CANONICAL_CONFIG_KEYS.join(\", \")} (underscore variants also accepted). Nested leaf settings: ${nestedKeys}.`,\n EXIT_CODE.USAGE,\n );\n}\n\nfunction normalizeCriteria(values: string[] | undefined, clearCriteria: boolean | undefined): string[] {\n const normalized = [...new Set((values ?? []).map((value) => value.trim()).filter((value) => value.length > 0))].sort(\n (left, right) => left.localeCompare(right),\n );\n if (clearCriteria) {\n if (normalized.length > 0) {\n throw new PmCliError(\n \"Config set definition-of-done cannot combine --clear-criteria with --criterion values\",\n EXIT_CODE.USAGE,\n );\n }\n return [];\n }\n if (normalized.length === 0) {\n throw new PmCliError(\n \"Config set definition-of-done requires at least one non-empty --criterion value (or --clear-criteria to clear)\",\n EXIT_CODE.USAGE,\n );\n }\n return normalized;\n}\n\nfunction normalizeItemFormat(value: string | undefined): ItemFormat {\n const normalized = value?.trim().toLowerCase();\n if (normalized === \"toon\") {\n return \"toon\";\n }\n if (normalized === \"json_markdown\") {\n throw new PmCliError(\n \"Config set item-format no longer accepts json_markdown. Markdown item files are legacy read/migration input only.\",\n EXIT_CODE.USAGE,\n );\n }\n throw new PmCliError(\"Config set item-format requires --format toon\", EXIT_CODE.USAGE);\n}\n\nfunction normalizeHistoryMissingStreamPolicy(value: string | undefined): HistoryMissingStreamPolicy {\n const normalized = value?.trim().toLowerCase().replaceAll(\"-\", \"_\");\n if (normalized === \"auto_create\" || normalized === \"strict_error\") {\n return normalized;\n }\n throw new PmCliError(\n \"Config set history-missing-stream-policy requires --policy with one of: auto_create, strict_error\",\n EXIT_CODE.USAGE,\n );\n}\n\nfunction normalizeTestResultTrackingPolicy(value: string | undefined): TestResultTrackingPolicy {\n const normalized = value?.trim().toLowerCase().replaceAll(\"-\", \"_\");\n if (normalized === \"enabled\" || normalized === \"disabled\") {\n return normalized;\n }\n throw new PmCliError(\n \"Config set test-result-tracking requires --policy with one of: enabled, disabled\",\n EXIT_CODE.USAGE,\n );\n}\n\nfunction normalizeTelemetryTrackingPolicy(value: string | undefined): TelemetryTrackingPolicy {\n const normalized = value?.trim().toLowerCase().replaceAll(\"-\", \"_\");\n if (normalized === \"enabled\" || normalized === \"disabled\") {\n return normalized;\n }\n throw new PmCliError(\n \"Config set telemetry-tracking requires --policy with one of: enabled, disabled\",\n EXIT_CODE.USAGE,\n );\n}\n\nfunction normalizeValidateMetadataProfile(value: string | undefined): ValidateMetadataProfile {\n const normalized = value?.trim().toLowerCase().replaceAll(\"-\", \"_\");\n if (normalized === \"core\" || normalized === \"strict\" || normalized === \"custom\") {\n return normalized;\n }\n throw new PmCliError(\n \"Config set metadata-validation-profile requires --policy with one of: core, strict, custom\",\n EXIT_CODE.USAGE,\n );\n}\n\nfunction normalizeGovernancePreset(value: string | undefined): GovernancePreset {\n const normalized = value?.trim().toLowerCase().replaceAll(\"-\", \"_\");\n if (normalized === \"minimal\" || normalized === \"default\" || normalized === \"strict\" || normalized === \"custom\") {\n return normalized;\n }\n throw new PmCliError(\n \"Config set governance-preset requires --policy with one of: minimal, default, strict, custom\",\n EXIT_CODE.USAGE,\n );\n}\n\nfunction normalizeGovernanceOwnershipEnforcement(value: string | undefined): GovernanceOwnershipEnforcement {\n const normalized = value?.trim().toLowerCase().replaceAll(\"-\", \"_\");\n if (normalized === \"none\" || normalized === \"warn\" || normalized === \"strict\") {\n return normalized;\n }\n throw new PmCliError(\n \"Config set governance-ownership-enforcement requires --policy with one of: none, warn, strict\",\n EXIT_CODE.USAGE,\n );\n}\n\nfunction normalizeGovernanceCreateModeDefault(value: string | undefined): GovernanceCreateModeDefault {\n const normalized = value?.trim().toLowerCase().replaceAll(\"-\", \"_\");\n if (normalized === \"progressive\" || normalized === \"strict\") {\n return normalized;\n }\n throw new PmCliError(\n \"Config set governance-create-mode-default requires --policy with one of: progressive, strict\",\n EXIT_CODE.USAGE,\n );\n}\n\nfunction normalizeGovernanceCloseValidationDefault(value: string | undefined): GovernanceCloseValidationDefault {\n const normalized = value?.trim().toLowerCase().replaceAll(\"-\", \"_\");\n if (normalized === \"off\" || normalized === \"warn\" || normalized === \"strict\") {\n return normalized;\n }\n if (normalized === \"none\" || normalized === \"disabled\") {\n return \"off\";\n }\n throw new PmCliError(\n \"Config set governance-close-validation-default requires --policy with one of: off, warn, strict\",\n EXIT_CODE.USAGE,\n );\n}\n\nfunction normalizeGovernanceWorkflowEnforcement(value: unknown): GovernanceWorkflowEnforcement {\n const normalized =\n typeof value === \"string\" ? value.trim().toLowerCase().replaceAll(\"-\", \"_\") : undefined;\n if (normalized === \"off\" || normalized === \"warn\" || normalized === \"strict\") {\n return normalized;\n }\n if (normalized === \"none\" || normalized === \"disabled\") {\n return \"off\";\n }\n throw new PmCliError(\n \"Config set governance-workflow-enforcement requires one of: off, warn, strict\",\n EXIT_CODE.USAGE,\n );\n}\n\nfunction normalizeGovernanceForceRequiredForStaleLockPolicy(\n value: string | undefined,\n): GovernanceForceRequiredForStaleLockPolicy {\n const normalized = value?.trim().toLowerCase().replaceAll(\"-\", \"_\");\n if (normalized === \"enabled\" || normalized === \"disabled\") {\n return normalized;\n }\n throw new PmCliError(\n \"Config set governance-force-required-for-stale-lock requires --policy with one of: enabled, disabled\",\n EXIT_CODE.USAGE,\n );\n}\n\nfunction normalizePolicyForConflict(key: ConfigKey | undefined, value: string): string {\n switch (key) {\n case \"history_missing_stream_policy\":\n return normalizeHistoryMissingStreamPolicy(value);\n case \"sprint_release_format_policy\":\n return normalizeSprintReleaseFormatPolicy(value);\n case \"parent_reference_policy\":\n case \"governance_parent_reference_policy\":\n return normalizeParentReferencePolicy(value);\n case \"metadata_validation_profile\":\n case \"governance_metadata_validation_profile\":\n return normalizeValidateMetadataProfile(value);\n case \"governance_preset\":\n return normalizeGovernancePreset(value);\n case \"governance_ownership_enforcement\":\n return normalizeGovernanceOwnershipEnforcement(value);\n case \"governance_create_mode_default\":\n return normalizeGovernanceCreateModeDefault(value);\n case \"governance_close_validation_default\":\n return normalizeGovernanceCloseValidationDefault(value);\n case \"governance_workflow_enforcement\":\n return normalizeGovernanceWorkflowEnforcement(value);\n case \"governance_force_required_for_stale_lock\":\n return normalizeGovernanceForceRequiredForStaleLockPolicy(value);\n case \"test_result_tracking\":\n return normalizeTestResultTrackingPolicy(value);\n case \"telemetry_tracking\":\n return normalizeTelemetryTrackingPolicy(value);\n default:\n return value.trim().toLowerCase().replaceAll(\"-\", \"_\");\n }\n}\n\nconst METADATA_REQUIRED_FIELD_ALIAS_MAP: Record<string, ValidateMetadataRequiredField> = {\n author: \"author\",\n acceptance_criteria: \"acceptance_criteria\",\n \"acceptance-criteria\": \"acceptance_criteria\",\n estimated_minutes: \"estimated_minutes\",\n \"estimated-minutes\": \"estimated_minutes\",\n estimate: \"estimated_minutes\",\n close_reason: \"close_reason\",\n \"close-reason\": \"close_reason\",\n reviewer: \"reviewer\",\n risk: \"risk\",\n confidence: \"confidence\",\n sprint: \"sprint\",\n release: \"release\",\n};\nconst METADATA_REQUIRED_FIELD_OPTIONS = [\n \"author\",\n \"acceptance_criteria\",\n \"estimated_minutes\",\n \"close_reason\",\n \"reviewer\",\n \"risk\",\n \"confidence\",\n \"sprint\",\n \"release\",\n] as const;\n\nfunction normalizeMetadataRequiredFields(\n values: string[] | undefined,\n clearCriteria: boolean | undefined,\n): ValidateMetadataRequiredField[] {\n const normalized = [...new Set((values ?? []).map((value) => value.trim()).filter((value) => value.length > 0))];\n if (clearCriteria) {\n if (normalized.length > 0) {\n throw new PmCliError(\n \"Config set metadata-required-fields cannot combine --clear-criteria with --criterion values\",\n EXIT_CODE.USAGE,\n );\n }\n return [];\n }\n if (normalized.length === 0) {\n throw new PmCliError(\n \"Config set metadata-required-fields requires at least one --criterion value (or --clear-criteria to clear)\",\n EXIT_CODE.USAGE,\n );\n }\n const lowered = normalized.map((value) => value.toLowerCase().replaceAll(\"-\", \"_\"));\n const unsupported = lowered.filter((value) => METADATA_REQUIRED_FIELD_ALIAS_MAP[value] === undefined);\n if (unsupported.length > 0) {\n throw new PmCliError(\n `Config set metadata-required-fields received unsupported values: ${unsupported.join(\", \")}. ` +\n `Supported values: ${METADATA_REQUIRED_FIELD_OPTIONS.join(\", \")}`,\n EXIT_CODE.USAGE,\n );\n }\n return [...new Set(lowered.map((value) => METADATA_REQUIRED_FIELD_ALIAS_MAP[value] as ValidateMetadataRequiredField))].sort(\n (left, right) => left.localeCompare(right),\n );\n}\n\nfunction normalizeLifecyclePatternCriteria(\n key: ConfigKey,\n values: string[] | undefined,\n clearCriteria: boolean | undefined,\n): string[] {\n const normalized = [...new Set((values ?? []).map((value) => value.trim().toLowerCase()).filter((value) => value.length > 0))].sort(\n (left, right) => left.localeCompare(right),\n );\n if (clearCriteria) {\n if (normalized.length > 0) {\n throw new PmCliError(\n `Config set ${CONFIG_KEY_ALIASES[key][0]} cannot combine --clear-criteria with --criterion values`,\n EXIT_CODE.USAGE,\n );\n }\n return [];\n }\n if (normalized.length === 0) {\n throw new PmCliError(\n `Config set ${CONFIG_KEY_ALIASES[key][0]} requires at least one --criterion value (or --clear-criteria to clear)`,\n EXIT_CODE.USAGE,\n );\n }\n return normalized;\n}\n\nfunction normalizeWarnings(values: string[]): string[] {\n return [...new Set(values)].sort((left, right) => left.localeCompare(right));\n}\n\nfunction normalizeKeyForAction(action: ConfigAction, value: string | undefined): ConfigKey | undefined {\n if (action === \"list\" || action === \"export\") {\n if (typeof value === \"string\" && value.trim().length > 0) {\n throw new PmCliError(`Config action \"${action}\" does not accept <key>`, EXIT_CODE.USAGE);\n }\n return undefined;\n }\n if (typeof value !== \"string\" || value.trim().length === 0) {\n throw new PmCliError(`Config action \"${action}\" requires <key>`, EXIT_CODE.USAGE);\n }\n return normalizeKey(value);\n}\n\nfunction readConfigValue(settings: {\n workflow: { definition_of_done: string[] };\n item_format: ItemFormat;\n history: { missing_stream: HistoryMissingStreamPolicy };\n validation: {\n sprint_release_format: SprintReleaseFormatPolicy;\n parent_reference: ParentReferencePolicy;\n metadata_profile: ValidateMetadataProfile;\n metadata_required_fields: ValidateMetadataRequiredField[];\n lifecycle_stale_blocker_reason_patterns: string[];\n lifecycle_closure_like_blocked_reason_patterns: string[];\n lifecycle_closure_like_resolution_patterns: string[];\n lifecycle_closure_like_actual_result_patterns: string[];\n };\n governance: {\n preset: GovernancePreset;\n ownership_enforcement: GovernanceOwnershipEnforcement;\n create_mode_default: GovernanceCreateModeDefault;\n close_validation_default: GovernanceCloseValidationDefault;\n parent_reference: ParentReferencePolicy;\n metadata_profile: ValidateMetadataProfile;\n force_required_for_stale_lock: boolean;\n create_default_type?: string;\n workflow_enforcement?: GovernanceWorkflowEnforcement;\n };\n testing: { record_results_to_items: boolean };\n telemetry: { enabled: boolean };\n context: import(\"../../types/index.js\").ContextSettings;\n}, key: ConfigKey): ConfigValue {\n if (key === \"item_format\") {\n return settings.item_format;\n }\n if (key === \"history_missing_stream_policy\") {\n return settings.history.missing_stream;\n }\n if (key === \"sprint_release_format_policy\") {\n return settings.validation.sprint_release_format;\n }\n if (key === \"parent_reference_policy\") {\n return settings.validation.parent_reference;\n }\n if (key === \"metadata_validation_profile\") {\n return settings.validation.metadata_profile;\n }\n if (key === \"metadata_required_fields\") {\n return [...settings.validation.metadata_required_fields];\n }\n if (key === \"lifecycle_stale_blocker_reason_patterns\") {\n return [...settings.validation.lifecycle_stale_blocker_reason_patterns];\n }\n if (key === \"lifecycle_closure_like_blocked_reason_patterns\") {\n return [...settings.validation.lifecycle_closure_like_blocked_reason_patterns];\n }\n if (key === \"lifecycle_closure_like_resolution_patterns\") {\n return [...settings.validation.lifecycle_closure_like_resolution_patterns];\n }\n if (key === \"lifecycle_closure_like_actual_result_patterns\") {\n return [...settings.validation.lifecycle_closure_like_actual_result_patterns];\n }\n if (key === \"governance_preset\") {\n return settings.governance.preset;\n }\n if (key === \"governance_ownership_enforcement\") {\n return settings.governance.ownership_enforcement;\n }\n if (key === \"governance_create_mode_default\") {\n return settings.governance.create_mode_default;\n }\n if (key === \"governance_close_validation_default\") {\n return settings.governance.close_validation_default;\n }\n if (key === \"governance_create_default_type\") {\n return settings.governance.create_default_type ?? \"\";\n }\n if (key === \"governance_workflow_enforcement\") {\n return settings.governance.workflow_enforcement ?? \"off\";\n }\n if (key === \"governance_parent_reference_policy\") {\n return settings.governance.parent_reference;\n }\n if (key === \"governance_metadata_validation_profile\") {\n return settings.governance.metadata_profile;\n }\n if (key === \"governance_force_required_for_stale_lock\") {\n return settings.governance.force_required_for_stale_lock ? \"enabled\" : \"disabled\";\n }\n if (key === \"test_result_tracking\") {\n return settings.testing.record_results_to_items ? \"enabled\" : \"disabled\";\n }\n if (key === \"telemetry_tracking\") {\n return settings.telemetry.enabled ? \"enabled\" : \"disabled\";\n }\n if (key === \"context\") {\n return {\n default_depth: settings.context.default_depth,\n activity_limit: settings.context.activity_limit,\n stale_threshold_days: settings.context.stale_threshold_days,\n sections: { ...settings.context.sections },\n } satisfies ContextConfigValue;\n }\n return [...settings.workflow.definition_of_done];\n}\n\nfunction withWarnings(result: ConfigResult, warnings: string[]): ConfigResult {\n if (warnings.length === 0) {\n return result;\n }\n return {\n ...result,\n warnings,\n };\n}\n\nasync function resolveSettingsTarget(\n scope: ConfigScope,\n global: GlobalOptions,\n): Promise<{ pmRoot: string; settingsPath: string }> {\n const cwd = process.cwd();\n const pmRoot = scope === \"project\" ? resolvePmRoot(cwd, global.path) : resolveGlobalPmRoot(cwd);\n const settingsPath = getSettingsPath(pmRoot);\n if (scope === \"project\" && !(await pathExists(settingsPath))) {\n throw new PmCliError(`Tracker is not initialized at ${pmRoot}. Run pm init first.`, EXIT_CODE.NOT_FOUND);\n }\n return { pmRoot, settingsPath };\n}\n\nfunction parseSectionToggle(raw: string | undefined): boolean | undefined {\n if (raw === undefined) return undefined;\n const normalized = raw.trim().toLowerCase();\n if (normalized === \"true\" || normalized === \"enabled\" || normalized === \"on\" || normalized === \"1\") return true;\n if (normalized === \"false\" || normalized === \"disabled\" || normalized === \"off\" || normalized === \"0\") return false;\n throw new PmCliError(\n `Context section toggle must be true|false|enabled|disabled, got \"${raw}\"`,\n EXIT_CODE.USAGE,\n );\n}\n\nasync function applyContextConfig(\n settings: import(\"../../types/index.js\").PmSettings,\n options: ConfigCommandOptions,\n target: { pmRoot: string; settingsPath: string },\n scope: ConfigScope,\n warnings: string[],\n): Promise<ConfigResult> {\n let changed = false;\n const ctx = settings.context;\n\n if (options.defaultDepth !== undefined) {\n const normalized = options.defaultDepth.trim().toLowerCase();\n if (!CONTEXT_DEPTH_VALUES.includes(normalized as ContextDepth)) {\n throw new PmCliError(\n `Context --default-depth must be one of ${CONTEXT_DEPTH_VALUES.join(\"|\")}`,\n EXIT_CODE.USAGE,\n );\n }\n if (ctx.default_depth !== normalized) {\n ctx.default_depth = normalized as ContextDepth;\n changed = true;\n }\n }\n\n if (options.activityLimit !== undefined) {\n const parsed = parseInt(options.activityLimit.trim(), 10);\n if (isNaN(parsed) || parsed <= 0) {\n throw new PmCliError(\"Context --activity-limit must be a positive integer\", EXIT_CODE.USAGE);\n }\n if (ctx.activity_limit !== parsed) {\n ctx.activity_limit = parsed;\n changed = true;\n }\n }\n\n if (options.staleThresholdDays !== undefined) {\n const parsed = parseInt(options.staleThresholdDays.trim(), 10);\n if (isNaN(parsed) || parsed <= 0) {\n throw new PmCliError(\"Context --stale-threshold-days must be a positive integer\", EXIT_CODE.USAGE);\n }\n if (ctx.stale_threshold_days !== parsed) {\n ctx.stale_threshold_days = parsed;\n changed = true;\n }\n }\n\n const sectionToggles: [string, string | undefined][] = [\n [\"hierarchy\", options.sectionHierarchy],\n [\"activity\", options.sectionActivity],\n [\"progress\", options.sectionProgress],\n [\"blockers\", options.sectionBlockers],\n [\"files\", options.sectionFiles],\n [\"workload\", options.sectionWorkload],\n [\"staleness\", options.sectionStaleness],\n [\"tests\", options.sectionTests],\n ];\n\n for (const [sectionName, rawValue] of sectionToggles) {\n const toggle = parseSectionToggle(rawValue);\n if (toggle !== undefined) {\n const key = sectionName as keyof typeof ctx.sections;\n if (ctx.sections[key] !== toggle) {\n ctx.sections[key] = toggle;\n changed = true;\n }\n }\n }\n\n if (changed) {\n await writeSettings(target.pmRoot, settings, \"config:set:context\");\n }\n\n return withWarnings({\n scope,\n key: \"context\",\n context_settings: {\n default_depth: ctx.default_depth,\n activity_limit: ctx.activity_limit,\n stale_threshold_days: ctx.stale_threshold_days,\n sections: { ...ctx.sections },\n },\n settings_path: target.settingsPath,\n changed,\n }, warnings);\n}\n\n/**\n * Route an intuitive `pm config set <key> <value>` positional value onto the typed\n * flag it belongs to (--format/--policy/--criterion), applying enabled/disabled\n * synonyms. Returns the (possibly augmented) options. The typed-flag forms keep\n * working exactly as before: a positional value is only injected when its flag was\n * not already supplied, and a conflicting explicit flag is a clear error.\n */\nfunction applyPositionalValue(\n action: ConfigAction,\n keyValue: string | undefined,\n normalizedKey: ConfigKey | undefined,\n nestedSetting: NestedSettingDescriptor | undefined,\n valueValue: string | undefined,\n options: ConfigCommandOptions,\n): ConfigCommandOptions {\n if (valueValue === undefined) {\n return options;\n }\n if (action !== \"set\") {\n throw new PmCliError(\n `Config action \"${action}\" does not accept a positional value. Only \"set\" takes <value>.`,\n EXIT_CODE.USAGE,\n );\n }\n if (typeof keyValue !== \"string\" || keyValue.trim().length === 0) {\n throw new PmCliError('Config action \"set\" requires <key> before a positional <value>.', EXIT_CODE.USAGE);\n }\n\n if (nestedSetting) {\n if (options.value !== undefined && valueValue !== undefined && options.value !== valueValue) {\n throw new PmCliError(\n `Config set ${keyValue} received both positional value \"${valueValue}\" and --value \"${options.value}\". Pass only one.`,\n EXIT_CODE.USAGE,\n );\n }\n // Pick whichever was supplied; do not overwrite a present --value with undefined.\n return { ...options, value: valueValue ?? options.value };\n }\n\n const routed = resolveConfigPositionalValue(normalizedKey ?? keyValue, valueValue);\n if (!routed.routable) {\n throw new PmCliError(routed.reason, EXIT_CODE.USAGE);\n }\n\n if (routed.flag === \"criterion\") {\n if (options.criterion !== undefined && options.criterion.length > 0) {\n throw new PmCliError(\n `Config set ${keyValue} received both positional value \"${valueValue}\" and --criterion. Pass criteria via --criterion only when supplying more than one value.`,\n EXIT_CODE.USAGE,\n );\n }\n return { ...options, criterion: routed.values };\n }\n\n if (routed.flag === \"format\") {\n if (\n options.format !== undefined &&\n normalizeItemFormat(options.format) !== normalizeItemFormat(routed.value)\n ) {\n throw new PmCliError(\n `Config set ${keyValue} received both positional value \"${valueValue}\" and --format \"${options.format}\". Pass only one.`,\n EXIT_CODE.USAGE,\n );\n }\n return { ...options, format: routed.value };\n }\n\n // policy flag (--policy)\n if (\n options.policy !== undefined &&\n normalizePolicyForConflict(normalizedKey, options.policy) !==\n normalizePolicyForConflict(normalizedKey, routed.value)\n ) {\n throw new PmCliError(\n `Config set ${keyValue} received both positional value \"${valueValue}\" and --policy \"${options.policy}\". Pass only one.`,\n EXIT_CODE.USAGE,\n );\n }\n return { ...options, policy: routed.value };\n}\n\nexport async function runConfig(\n scopeValue: string,\n actionValue: string,\n keyValue: string | undefined,\n options: ConfigCommandOptions,\n global: GlobalOptions,\n valueValue?: string,\n): Promise<ConfigResult> {\n const scope = normalizeScope(scopeValue);\n const action = normalizeAction(actionValue);\n // Nested leaf settings (search/provider/vector-store) are detected before\n // normalizeKey so they bypass the ConfigKey union without breaking the\n // existing key-not-found error path for actually-unknown keys.\n const nestedSetting =\n (action === \"get\" || action === \"set\") ? resolveNestedSettingDescriptor(keyValue) : undefined;\n const key = nestedSetting ? undefined : normalizeKeyForAction(action, keyValue);\n options = applyPositionalValue(action, keyValue, key, nestedSetting, valueValue, options);\n const target = await resolveSettingsTarget(scope, global);\n const { settings, metadata, warnings: settingsReadWarnings } = await readSettingsWithMetadata(target.pmRoot);\n const warnings = normalizeWarnings(settingsReadWarnings);\n\n if (nestedSetting) {\n if (action === \"get\") {\n const currentValue = readNestedSettingValue(settings, nestedSetting);\n return withWarnings(\n {\n scope,\n key: nestedSetting.key,\n nested_setting: {\n key: nestedSetting.key,\n path: nestedSetting.path,\n kind: nestedSetting.kind,\n value: currentValue,\n },\n settings_path: target.settingsPath,\n changed: false,\n },\n warnings,\n );\n }\n // action === \"set\"\n const rawValue = options.value;\n if (typeof rawValue !== \"string\") {\n throw new PmCliError(\n `Config set ${nestedSetting.key} requires a value. Pass it positionally (\\`pm config ${scope} set ${nestedSetting.key} <value>\\`) or via --value.`,\n EXIT_CODE.USAGE,\n );\n }\n const parsed = parseNestedSettingValue(nestedSetting, rawValue);\n if (!parsed.ok) {\n throw new PmCliError(parsed.error.message, EXIT_CODE.USAGE);\n }\n const changed = writeNestedSettingValue(\n settings as unknown as Record<string, unknown>,\n nestedSetting,\n parsed.parsed.value,\n );\n if (changed) {\n await writeSettings(target.pmRoot, settings, `config:set:${nestedSetting.path}`);\n }\n return withWarnings(\n {\n scope,\n key: nestedSetting.key,\n nested_setting: {\n key: nestedSetting.key,\n path: nestedSetting.path,\n kind: nestedSetting.kind,\n value: parsed.parsed.value,\n },\n settings_path: target.settingsPath,\n changed,\n },\n warnings,\n );\n }\n\n if (action === \"list\") {\n const keys = (Object.keys(CONFIG_KEY_ALIASES) as ConfigKey[]).map((candidate) => ({\n key: candidate,\n aliases: CONFIG_KEY_ALIASES[candidate],\n value_kind: candidate === \"context\"\n ? (\"object\" as const)\n : isCriteriaConfigKey(candidate) ? (\"string_array\" as const) : (\"enum\" as const),\n set_flags:\n candidate === \"context\"\n ? [\"--default-depth\", \"--activity-limit\", \"--stale-threshold-days\", \"--section-<name>\"]\n : isCriteriaConfigKey(candidate) ? [\"--criterion\", \"--clear-criteria\"] : candidate === \"item_format\" ? [\"--format\"] : [\"--policy\"],\n summary: CONFIG_KEY_SUMMARIES[candidate],\n value: readConfigValue(settings, candidate),\n }));\n const nestedSettings: NestedSettingResultValue[] = NESTED_SETTING_DESCRIPTORS.map((descriptor) => ({\n key: descriptor.key,\n path: descriptor.path,\n kind: descriptor.kind,\n value: readNestedSettingValue(settings, descriptor),\n }));\n return withWarnings(\n {\n scope,\n keys,\n nested_settings: nestedSettings,\n count: keys.length,\n settings_path: target.settingsPath,\n changed: false,\n },\n warnings,\n );\n }\n\n if (action === \"export\") {\n const values = {\n definition_of_done: readConfigValue(settings, \"definition_of_done\"),\n item_format: readConfigValue(settings, \"item_format\"),\n history_missing_stream_policy: readConfigValue(settings, \"history_missing_stream_policy\"),\n sprint_release_format_policy: readConfigValue(settings, \"sprint_release_format_policy\"),\n parent_reference_policy: readConfigValue(settings, \"parent_reference_policy\"),\n metadata_validation_profile: readConfigValue(settings, \"metadata_validation_profile\"),\n metadata_required_fields: readConfigValue(settings, \"metadata_required_fields\"),\n lifecycle_stale_blocker_reason_patterns: readConfigValue(settings, \"lifecycle_stale_blocker_reason_patterns\"),\n lifecycle_closure_like_blocked_reason_patterns: readConfigValue(\n settings,\n \"lifecycle_closure_like_blocked_reason_patterns\",\n ),\n lifecycle_closure_like_resolution_patterns: readConfigValue(settings, \"lifecycle_closure_like_resolution_patterns\"),\n lifecycle_closure_like_actual_result_patterns: readConfigValue(\n settings,\n \"lifecycle_closure_like_actual_result_patterns\",\n ),\n governance_preset: readConfigValue(settings, \"governance_preset\"),\n governance_ownership_enforcement: readConfigValue(settings, \"governance_ownership_enforcement\"),\n governance_create_mode_default: readConfigValue(settings, \"governance_create_mode_default\"),\n governance_close_validation_default: readConfigValue(settings, \"governance_close_validation_default\"),\n governance_create_default_type: readConfigValue(settings, \"governance_create_default_type\"),\n governance_workflow_enforcement: readConfigValue(settings, \"governance_workflow_enforcement\"),\n governance_parent_reference_policy: readConfigValue(settings, \"governance_parent_reference_policy\"),\n governance_metadata_validation_profile: readConfigValue(settings, \"governance_metadata_validation_profile\"),\n governance_force_required_for_stale_lock: readConfigValue(settings, \"governance_force_required_for_stale_lock\"),\n test_result_tracking: readConfigValue(settings, \"test_result_tracking\"),\n telemetry_tracking: readConfigValue(settings, \"telemetry_tracking\"),\n context: readConfigValue(settings, \"context\"),\n } satisfies Record<ConfigKey, ConfigValue>;\n return withWarnings(\n {\n scope,\n values,\n settings_path: target.settingsPath,\n changed: false,\n },\n warnings,\n );\n }\n\n if (action === \"get\") {\n if (!key) {\n throw new PmCliError('Config action \"get\" requires <key>', EXIT_CODE.USAGE);\n }\n if (key === \"item_format\") {\n return withWarnings({\n scope,\n key,\n format: settings.item_format,\n has_explicit_item_format: metadata.has_explicit_item_format,\n settings_path: target.settingsPath,\n changed: false,\n }, warnings);\n }\n if (key === \"history_missing_stream_policy\") {\n return withWarnings({\n scope,\n key,\n policy: settings.history.missing_stream,\n settings_path: target.settingsPath,\n changed: false,\n }, warnings);\n }\n if (key === \"sprint_release_format_policy\") {\n return withWarnings({\n scope,\n key,\n policy: settings.validation.sprint_release_format,\n settings_path: target.settingsPath,\n changed: false,\n }, warnings);\n }\n if (key === \"parent_reference_policy\") {\n return withWarnings({\n scope,\n key,\n policy: settings.validation.parent_reference,\n settings_path: target.settingsPath,\n changed: false,\n }, warnings);\n }\n if (key === \"metadata_validation_profile\") {\n return withWarnings({\n scope,\n key,\n policy: settings.validation.metadata_profile,\n settings_path: target.settingsPath,\n changed: false,\n }, warnings);\n }\n if (key === \"metadata_required_fields\") {\n return withWarnings({\n scope,\n key,\n criteria: [...settings.validation.metadata_required_fields],\n settings_path: target.settingsPath,\n changed: false,\n }, warnings);\n }\n if (key === \"lifecycle_stale_blocker_reason_patterns\") {\n return withWarnings({\n scope,\n key,\n criteria: [...settings.validation.lifecycle_stale_blocker_reason_patterns],\n settings_path: target.settingsPath,\n changed: false,\n }, warnings);\n }\n if (key === \"lifecycle_closure_like_blocked_reason_patterns\") {\n return withWarnings({\n scope,\n key,\n criteria: [...settings.validation.lifecycle_closure_like_blocked_reason_patterns],\n settings_path: target.settingsPath,\n changed: false,\n }, warnings);\n }\n if (key === \"lifecycle_closure_like_resolution_patterns\") {\n return withWarnings({\n scope,\n key,\n criteria: [...settings.validation.lifecycle_closure_like_resolution_patterns],\n settings_path: target.settingsPath,\n changed: false,\n }, warnings);\n }\n if (key === \"lifecycle_closure_like_actual_result_patterns\") {\n return withWarnings({\n scope,\n key,\n criteria: [...settings.validation.lifecycle_closure_like_actual_result_patterns],\n settings_path: target.settingsPath,\n changed: false,\n }, warnings);\n }\n if (key === \"governance_preset\") {\n return withWarnings({\n scope,\n key,\n policy: settings.governance.preset,\n settings_path: target.settingsPath,\n changed: false,\n }, warnings);\n }\n if (key === \"governance_ownership_enforcement\") {\n return withWarnings({\n scope,\n key,\n policy: settings.governance.ownership_enforcement,\n settings_path: target.settingsPath,\n changed: false,\n }, warnings);\n }\n if (key === \"governance_create_mode_default\") {\n return withWarnings({\n scope,\n key,\n policy: settings.governance.create_mode_default,\n settings_path: target.settingsPath,\n changed: false,\n }, warnings);\n }\n if (key === \"governance_close_validation_default\") {\n return withWarnings({\n scope,\n key,\n policy: settings.governance.close_validation_default,\n settings_path: target.settingsPath,\n changed: false,\n }, warnings);\n }\n if (key === \"governance_create_default_type\") {\n return withWarnings({\n scope,\n key,\n policy: settings.governance.create_default_type ?? \"\",\n settings_path: target.settingsPath,\n changed: false,\n }, warnings);\n }\n if (key === \"governance_workflow_enforcement\") {\n return withWarnings({\n scope,\n key,\n policy: settings.governance.workflow_enforcement ?? \"off\",\n settings_path: target.settingsPath,\n changed: false,\n }, warnings);\n }\n if (key === \"governance_parent_reference_policy\") {\n return withWarnings({\n scope,\n key,\n policy: settings.governance.parent_reference,\n settings_path: target.settingsPath,\n changed: false,\n }, warnings);\n }\n if (key === \"governance_metadata_validation_profile\") {\n return withWarnings({\n scope,\n key,\n policy: settings.governance.metadata_profile,\n settings_path: target.settingsPath,\n changed: false,\n }, warnings);\n }\n if (key === \"governance_force_required_for_stale_lock\") {\n return withWarnings({\n scope,\n key,\n policy: settings.governance.force_required_for_stale_lock ? \"enabled\" : \"disabled\",\n settings_path: target.settingsPath,\n changed: false,\n }, warnings);\n }\n if (key === \"test_result_tracking\") {\n return withWarnings({\n scope,\n key,\n policy: settings.testing.record_results_to_items ? \"enabled\" : \"disabled\",\n settings_path: target.settingsPath,\n changed: false,\n }, warnings);\n }\n if (key === \"telemetry_tracking\") {\n return withWarnings({\n scope,\n key,\n policy: settings.telemetry.enabled ? \"enabled\" : \"disabled\",\n settings_path: target.settingsPath,\n changed: false,\n }, warnings);\n }\n if (key === \"context\") {\n return withWarnings({\n scope,\n key,\n context_settings: {\n default_depth: settings.context.default_depth,\n activity_limit: settings.context.activity_limit,\n stale_threshold_days: settings.context.stale_threshold_days,\n sections: { ...settings.context.sections },\n },\n settings_path: target.settingsPath,\n changed: false,\n }, warnings);\n }\n return withWarnings({\n scope,\n key,\n criteria: [...settings.workflow.definition_of_done],\n settings_path: target.settingsPath,\n changed: false,\n }, warnings);\n }\n\n if (!key) {\n throw new PmCliError('Config action \"set\" requires <key>', EXIT_CODE.USAGE);\n }\n if (options.clearCriteria === true && !isCriteriaConfigKey(key)) {\n throw new PmCliError(\n \"--clear-criteria is only supported with config set criteria-list keys\",\n EXIT_CODE.USAGE,\n );\n }\n if (key === \"item_format\") {\n const nextFormat = normalizeItemFormat(options.format);\n const changed = settings.item_format !== nextFormat || !metadata.has_explicit_item_format;\n let migration: ConfigResult[\"migration\"] = undefined;\n if (changed) {\n const typeRegistry = resolveItemTypeRegistry(settings, getActiveExtensionRegistrations());\n const migrated = await migrateItemFilesToFormat(\n target.pmRoot,\n nextFormat,\n \"config:set:item_format:migrate\",\n typeRegistry.type_to_folder,\n settings.schema,\n );\n migration = {\n target_format: migrated.target_format,\n scanned: migrated.scanned,\n migrated: migrated.migrated,\n removed: migrated.removed,\n warnings: migrated.warnings,\n };\n settings.item_format = nextFormat;\n await writeSettings(target.pmRoot, settings, \"config:set:item_format\");\n }\n return withWarnings({\n scope,\n key,\n format: settings.item_format,\n has_explicit_item_format: true,\n migration,\n settings_path: target.settingsPath,\n changed,\n }, warnings);\n }\n\n if (key === \"history_missing_stream_policy\") {\n const nextPolicy = normalizeHistoryMissingStreamPolicy(options.policy);\n const changed = settings.history.missing_stream !== nextPolicy;\n settings.history.missing_stream = nextPolicy;\n if (changed) {\n await writeSettings(target.pmRoot, settings, \"config:set:history_missing_stream_policy\");\n }\n return withWarnings({\n scope,\n key,\n policy: settings.history.missing_stream,\n settings_path: target.settingsPath,\n changed,\n }, warnings);\n }\n\n if (key === \"sprint_release_format_policy\") {\n const nextPolicy = normalizeSprintReleaseFormatPolicy(options.policy);\n const changed = settings.validation.sprint_release_format !== nextPolicy;\n settings.validation.sprint_release_format = nextPolicy;\n if (changed) {\n await writeSettings(target.pmRoot, settings, \"config:set:sprint_release_format_policy\");\n }\n return withWarnings({\n scope,\n key,\n policy: settings.validation.sprint_release_format,\n settings_path: target.settingsPath,\n changed,\n }, warnings);\n }\n\n if (key === \"parent_reference_policy\") {\n const nextPolicy = normalizeParentReferencePolicy(options.policy);\n const changed =\n settings.validation.parent_reference !== nextPolicy ||\n settings.governance.preset !== \"custom\" ||\n settings.governance.parent_reference !== nextPolicy;\n settings.validation.parent_reference = nextPolicy;\n settings.governance.preset = \"custom\";\n settings.governance.parent_reference = nextPolicy;\n if (changed) {\n await writeSettings(target.pmRoot, settings, \"config:set:parent_reference_policy\");\n }\n return withWarnings({\n scope,\n key,\n policy: settings.validation.parent_reference,\n settings_path: target.settingsPath,\n changed,\n }, warnings);\n }\n\n if (key === \"metadata_validation_profile\") {\n const nextPolicy = normalizeValidateMetadataProfile(options.policy);\n const changed =\n settings.validation.metadata_profile !== nextPolicy ||\n settings.governance.preset !== \"custom\" ||\n settings.governance.metadata_profile !== nextPolicy;\n settings.validation.metadata_profile = nextPolicy;\n settings.governance.preset = \"custom\";\n settings.governance.metadata_profile = nextPolicy;\n if (changed) {\n await writeSettings(target.pmRoot, settings, \"config:set:metadata_validation_profile\");\n }\n return withWarnings({\n scope,\n key,\n policy: settings.validation.metadata_profile,\n settings_path: target.settingsPath,\n changed,\n }, warnings);\n }\n\n if (key === \"metadata_required_fields\") {\n const nextCriteria = normalizeMetadataRequiredFields(options.criterion, options.clearCriteria);\n const changed =\n nextCriteria.length !== settings.validation.metadata_required_fields.length ||\n nextCriteria.some((value, index) => value !== settings.validation.metadata_required_fields[index]);\n settings.validation.metadata_required_fields = nextCriteria;\n if (changed) {\n await writeSettings(target.pmRoot, settings, \"config:set:metadata_required_fields\");\n }\n return withWarnings({\n scope,\n key,\n criteria: [...settings.validation.metadata_required_fields],\n settings_path: target.settingsPath,\n changed,\n }, warnings);\n }\n\n if (key === \"lifecycle_stale_blocker_reason_patterns\") {\n const nextCriteria = normalizeLifecyclePatternCriteria(key, options.criterion, options.clearCriteria);\n const changed =\n nextCriteria.length !== settings.validation.lifecycle_stale_blocker_reason_patterns.length ||\n nextCriteria.some((value, index) => value !== settings.validation.lifecycle_stale_blocker_reason_patterns[index]);\n settings.validation.lifecycle_stale_blocker_reason_patterns = nextCriteria;\n if (changed) {\n await writeSettings(target.pmRoot, settings, \"config:set:lifecycle_stale_blocker_reason_patterns\");\n }\n return withWarnings({\n scope,\n key,\n criteria: [...settings.validation.lifecycle_stale_blocker_reason_patterns],\n settings_path: target.settingsPath,\n changed,\n }, warnings);\n }\n\n if (key === \"lifecycle_closure_like_blocked_reason_patterns\") {\n const nextCriteria = normalizeLifecyclePatternCriteria(key, options.criterion, options.clearCriteria);\n const changed =\n nextCriteria.length !== settings.validation.lifecycle_closure_like_blocked_reason_patterns.length ||\n nextCriteria.some((value, index) => value !== settings.validation.lifecycle_closure_like_blocked_reason_patterns[index]);\n settings.validation.lifecycle_closure_like_blocked_reason_patterns = nextCriteria;\n if (changed) {\n await writeSettings(target.pmRoot, settings, \"config:set:lifecycle_closure_like_blocked_reason_patterns\");\n }\n return withWarnings({\n scope,\n key,\n criteria: [...settings.validation.lifecycle_closure_like_blocked_reason_patterns],\n settings_path: target.settingsPath,\n changed,\n }, warnings);\n }\n\n if (key === \"lifecycle_closure_like_resolution_patterns\") {\n const nextCriteria = normalizeLifecyclePatternCriteria(key, options.criterion, options.clearCriteria);\n const changed =\n nextCriteria.length !== settings.validation.lifecycle_closure_like_resolution_patterns.length ||\n nextCriteria.some((value, index) => value !== settings.validation.lifecycle_closure_like_resolution_patterns[index]);\n settings.validation.lifecycle_closure_like_resolution_patterns = nextCriteria;\n if (changed) {\n await writeSettings(target.pmRoot, settings, \"config:set:lifecycle_closure_like_resolution_patterns\");\n }\n return withWarnings({\n scope,\n key,\n criteria: [...settings.validation.lifecycle_closure_like_resolution_patterns],\n settings_path: target.settingsPath,\n changed,\n }, warnings);\n }\n\n if (key === \"lifecycle_closure_like_actual_result_patterns\") {\n const nextCriteria = normalizeLifecyclePatternCriteria(key, options.criterion, options.clearCriteria);\n const changed =\n nextCriteria.length !== settings.validation.lifecycle_closure_like_actual_result_patterns.length ||\n nextCriteria.some((value, index) => value !== settings.validation.lifecycle_closure_like_actual_result_patterns[index]);\n settings.validation.lifecycle_closure_like_actual_result_patterns = nextCriteria;\n if (changed) {\n await writeSettings(target.pmRoot, settings, \"config:set:lifecycle_closure_like_actual_result_patterns\");\n }\n return withWarnings({\n scope,\n key,\n criteria: [...settings.validation.lifecycle_closure_like_actual_result_patterns],\n settings_path: target.settingsPath,\n changed,\n }, warnings);\n }\n\n if (key === \"governance_preset\") {\n const nextPolicy = normalizeGovernancePreset(options.policy);\n const changed = settings.governance.preset !== nextPolicy;\n settings.governance.preset = nextPolicy;\n if (changed) {\n await writeSettings(target.pmRoot, settings, \"config:set:governance_preset\");\n }\n return withWarnings({\n scope,\n key,\n policy: settings.governance.preset,\n settings_path: target.settingsPath,\n changed,\n }, warnings);\n }\n\n if (key === \"governance_ownership_enforcement\") {\n const nextPolicy = normalizeGovernanceOwnershipEnforcement(options.policy);\n const changed =\n settings.governance.preset !== \"custom\" || settings.governance.ownership_enforcement !== nextPolicy;\n settings.governance.preset = \"custom\";\n settings.governance.ownership_enforcement = nextPolicy;\n if (changed) {\n await writeSettings(target.pmRoot, settings, \"config:set:governance_ownership_enforcement\");\n }\n return withWarnings({\n scope,\n key,\n policy: settings.governance.ownership_enforcement,\n settings_path: target.settingsPath,\n changed,\n }, warnings);\n }\n\n if (key === \"governance_create_mode_default\") {\n const nextPolicy = normalizeGovernanceCreateModeDefault(options.policy);\n const changed =\n settings.governance.preset !== \"custom\" || settings.governance.create_mode_default !== nextPolicy;\n settings.governance.preset = \"custom\";\n settings.governance.create_mode_default = nextPolicy;\n if (changed) {\n await writeSettings(target.pmRoot, settings, \"config:set:governance_create_mode_default\");\n }\n return withWarnings({\n scope,\n key,\n policy: settings.governance.create_mode_default,\n settings_path: target.settingsPath,\n changed,\n }, warnings);\n }\n\n if (key === \"governance_close_validation_default\") {\n const nextPolicy = normalizeGovernanceCloseValidationDefault(options.policy);\n const changed =\n settings.governance.preset !== \"custom\" || settings.governance.close_validation_default !== nextPolicy;\n settings.governance.preset = \"custom\";\n settings.governance.close_validation_default = nextPolicy;\n if (changed) {\n await writeSettings(target.pmRoot, settings, \"config:set:governance_close_validation_default\");\n }\n return withWarnings({\n scope,\n key,\n policy: settings.governance.close_validation_default,\n settings_path: target.settingsPath,\n changed,\n }, warnings);\n }\n\n if (key === \"governance_create_default_type\") {\n const policyProvided = typeof options.policy === \"string\";\n const rawType = policyProvided ? options.policy!.trim() : \"\";\n // An explicit empty value clears the setting back to \"unset\" (matching how\n // get/export expose unset as \"\"). Without this clear path there is no CLI\n // route back from a set value to the governance default.\n if (policyProvided && rawType.length === 0) {\n const changed = settings.governance.create_default_type !== undefined;\n delete settings.governance.create_default_type;\n if (changed) {\n await writeSettings(target.pmRoot, settings, \"config:set:governance_create_default_type\");\n }\n return withWarnings({\n scope,\n key,\n policy: settings.governance.create_default_type ?? \"\",\n settings_path: target.settingsPath,\n changed,\n }, warnings);\n }\n if (rawType.length === 0) {\n throw new PmCliError(\n 'Config set governance-create-default-type requires an item type value (or an empty value \"\" to clear it)',\n EXIT_CODE.USAGE,\n );\n }\n // create_default_type is preset-orthogonal: it tunes `pm create` and is\n // carried through writes regardless of preset, so we do NOT force preset=custom.\n const typeRegistry = resolveItemTypeRegistry(settings, getActiveExtensionRegistrations());\n const resolvedType = resolveTypeName(rawType, typeRegistry);\n if (!resolvedType) {\n throw new PmCliError(buildInvalidTypeError(rawType, typeRegistry.types), EXIT_CODE.USAGE);\n }\n const changed = settings.governance.create_default_type !== resolvedType;\n settings.governance.create_default_type = resolvedType;\n if (changed) {\n await writeSettings(target.pmRoot, settings, \"config:set:governance_create_default_type\");\n }\n return withWarnings({\n scope,\n key,\n policy: settings.governance.create_default_type,\n settings_path: target.settingsPath,\n changed,\n }, warnings);\n }\n\n if (key === \"governance_workflow_enforcement\") {\n const nextPolicy = normalizeGovernanceWorkflowEnforcement(options.policy);\n // workflow_enforcement is preset-orthogonal (see create_default_type above).\n const changed = (settings.governance.workflow_enforcement ?? \"off\") !== nextPolicy;\n settings.governance.workflow_enforcement = nextPolicy;\n if (changed) {\n await writeSettings(target.pmRoot, settings, \"config:set:governance_workflow_enforcement\");\n }\n return withWarnings({\n scope,\n key,\n policy: settings.governance.workflow_enforcement,\n settings_path: target.settingsPath,\n changed,\n }, warnings);\n }\n\n if (key === \"governance_parent_reference_policy\") {\n const nextPolicy = normalizeParentReferencePolicy(options.policy);\n const changed =\n settings.governance.preset !== \"custom\" || settings.governance.parent_reference !== nextPolicy;\n settings.governance.preset = \"custom\";\n settings.governance.parent_reference = nextPolicy;\n settings.validation.parent_reference = nextPolicy;\n if (changed) {\n await writeSettings(target.pmRoot, settings, \"config:set:governance_parent_reference_policy\");\n }\n return withWarnings({\n scope,\n key,\n policy: settings.governance.parent_reference,\n settings_path: target.settingsPath,\n changed,\n }, warnings);\n }\n\n if (key === \"governance_metadata_validation_profile\") {\n const nextPolicy = normalizeValidateMetadataProfile(options.policy);\n const changed =\n settings.governance.preset !== \"custom\" || settings.governance.metadata_profile !== nextPolicy;\n settings.governance.preset = \"custom\";\n settings.governance.metadata_profile = nextPolicy;\n settings.validation.metadata_profile = nextPolicy;\n if (changed) {\n await writeSettings(target.pmRoot, settings, \"config:set:governance_metadata_validation_profile\");\n }\n return withWarnings({\n scope,\n key,\n policy: settings.governance.metadata_profile,\n settings_path: target.settingsPath,\n changed,\n }, warnings);\n }\n\n if (key === \"governance_force_required_for_stale_lock\") {\n const nextPolicy = normalizeGovernanceForceRequiredForStaleLockPolicy(options.policy);\n const nextEnabled = nextPolicy === \"enabled\";\n const changed =\n settings.governance.preset !== \"custom\" || settings.governance.force_required_for_stale_lock !== nextEnabled;\n settings.governance.preset = \"custom\";\n settings.governance.force_required_for_stale_lock = nextEnabled;\n if (changed) {\n await writeSettings(target.pmRoot, settings, \"config:set:governance_force_required_for_stale_lock\");\n }\n return withWarnings({\n scope,\n key,\n policy: settings.governance.force_required_for_stale_lock ? \"enabled\" : \"disabled\",\n settings_path: target.settingsPath,\n changed,\n }, warnings);\n }\n\n if (key === \"test_result_tracking\") {\n const nextPolicy = normalizeTestResultTrackingPolicy(options.policy);\n const nextEnabled = nextPolicy === \"enabled\";\n const changed = settings.testing.record_results_to_items !== nextEnabled;\n settings.testing.record_results_to_items = nextEnabled;\n if (changed) {\n await writeSettings(target.pmRoot, settings, \"config:set:test_result_tracking\");\n }\n return withWarnings({\n scope,\n key,\n policy: settings.testing.record_results_to_items ? \"enabled\" : \"disabled\",\n settings_path: target.settingsPath,\n changed,\n }, warnings);\n }\n\n if (key === \"telemetry_tracking\") {\n const nextPolicy = normalizeTelemetryTrackingPolicy(options.policy);\n const nextEnabled = nextPolicy === \"enabled\";\n const changed = settings.telemetry.enabled !== nextEnabled || !settings.telemetry.first_run_prompt_completed;\n settings.telemetry.enabled = nextEnabled;\n settings.telemetry.first_run_prompt_completed = true;\n if (changed) {\n await writeSettings(target.pmRoot, settings, \"config:set:telemetry_tracking\");\n }\n return withWarnings({\n scope,\n key,\n policy: settings.telemetry.enabled ? \"enabled\" : \"disabled\",\n settings_path: target.settingsPath,\n changed,\n }, warnings);\n }\n\n if (key === \"context\") {\n return applyContextConfig(settings, options, target, scope, warnings);\n }\n\n const nextCriteria = normalizeCriteria(options.criterion, options.clearCriteria);\n const changed =\n nextCriteria.length !== settings.workflow.definition_of_done.length ||\n nextCriteria.some((value, index) => value !== settings.workflow.definition_of_done[index]);\n\n settings.workflow.definition_of_done = nextCriteria;\n if (changed) {\n await writeSettings(target.pmRoot, settings, \"config:set:definition_of_done\");\n }\n\n return withWarnings({\n scope,\n key,\n criteria: [...settings.workflow.definition_of_done],\n settings_path: target.settingsPath,\n changed,\n }, warnings);\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["global", "changed", "nextCriteria"]
|
|
7
|
+
}
|