@unbrained/pm-cli 2026.5.31 → 2026.6.6
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 +167 -0
- package/CONTRIBUTING.md +1 -0
- package/README.md +12 -4
- 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 +17 -3
- 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 +260 -32
- 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 +193 -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 +77 -114
- 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/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/gc.d.ts +8 -1
- package/dist/cli/commands/gc.js +26 -3
- package/dist/cli/commands/gc.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 +51 -3
- package/dist/cli/commands/health.js.map +1 -1
- package/dist/cli/commands/history.d.ts +4 -1
- package/dist/cli/commands/history.js +12 -24
- package/dist/cli/commands/history.js.map +1 -1
- package/dist/cli/commands/index.d.ts +3 -1
- package/dist/cli/commands/index.js +5 -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 +163 -47
- 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 +1 -0
- package/dist/cli/commands/search.js +18 -4
- package/dist/cli/commands/search.js.map +1 -1
- package/dist/cli/commands/stats.d.ts +8 -1
- package/dist/cli/commands/stats.js +18 -17
- package/dist/cli/commands/stats.js.map +1 -1
- package/dist/cli/commands/telemetry.d.ts +8 -0
- package/dist/cli/commands/telemetry.js +253 -0
- package/dist/cli/commands/telemetry.js.map +1 -0
- 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 +91 -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 +14 -5
- package/dist/cli/register-list-query.js.map +1 -1
- package/dist/cli/register-mutation.js +200 -28
- package/dist/cli/register-mutation.js.map +1 -1
- package/dist/cli/register-operations.js +31 -6
- package/dist/cli/register-operations.js.map +1 -1
- package/dist/cli/register-setup.js +4 -2
- package/dist/cli/register-setup.js.map +1 -1
- package/dist/cli/registration-helpers.js +31 -4
- package/dist/cli/registration-helpers.js.map +1 -1
- package/dist/cli-bundle/chunks/activity-CVXTCHYY.js +16 -0
- package/dist/cli-bundle/chunks/activity-JM6DTDND.js +20 -0
- package/dist/cli-bundle/chunks/activity-JM6DTDND.js.map +1 -0
- package/dist/cli-bundle/chunks/aggregate-GI7WSZPH.js +206 -0
- package/dist/cli-bundle/chunks/aggregate-GI7WSZPH.js.map +1 -0
- package/dist/cli-bundle/chunks/{aggregate-ADUOSFRO.js → aggregate-VNAHUNNF.js} +11 -11
- package/dist/cli-bundle/chunks/{append-JD2DETU7.js → append-7H5N64R2.js} +8 -9
- package/dist/cli-bundle/chunks/{append-JD2DETU7.js.map → append-7H5N64R2.js.map} +1 -1
- package/dist/cli-bundle/chunks/append-WMKRXKCE.js +69 -0
- package/dist/cli-bundle/chunks/append-WMKRXKCE.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-3M73P3G6.js → chunk-23YFZ3IG.js} +210 -132
- package/dist/cli-bundle/chunks/chunk-23YFZ3IG.js.map +7 -0
- package/dist/cli-bundle/chunks/chunk-2HVRUSQA.js +128 -0
- package/dist/cli-bundle/chunks/chunk-2HVRUSQA.js.map +1 -0
- package/dist/cli-bundle/chunks/chunk-2RSPZI5H.js +266 -0
- package/dist/cli-bundle/chunks/chunk-2RSPZI5H.js.map +1 -0
- package/dist/cli-bundle/chunks/chunk-2VBQ6ZXS.js +631 -0
- package/dist/cli-bundle/chunks/chunk-2VBQ6ZXS.js.map +1 -0
- package/dist/cli-bundle/chunks/chunk-2VVCGBNV.js +380 -0
- package/dist/cli-bundle/chunks/chunk-2VVCGBNV.js.map +1 -0
- package/dist/cli-bundle/chunks/chunk-3BWOVLTH.js +1664 -0
- package/dist/cli-bundle/chunks/chunk-3BWOVLTH.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-6HT2F4TK.js → chunk-3FI4SEFT.js} +175 -54
- package/dist/cli-bundle/chunks/chunk-3FI4SEFT.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-JULRTHJQ.js → chunk-3LB74A67.js} +119 -6
- package/dist/cli-bundle/chunks/chunk-3LB74A67.js.map +7 -0
- package/dist/cli-bundle/chunks/chunk-3VAM3NNM.js +57 -0
- package/dist/cli-bundle/chunks/chunk-3VAM3NNM.js.map +1 -0
- package/dist/cli-bundle/chunks/chunk-4LL6TK5B.js +1832 -0
- package/dist/cli-bundle/chunks/chunk-4LL6TK5B.js.map +1 -0
- package/dist/cli-bundle/chunks/chunk-52MAOQ6J.js +422 -0
- package/dist/cli-bundle/chunks/chunk-52MAOQ6J.js.map +7 -0
- package/dist/cli-bundle/chunks/chunk-5FDATVEZ.js +412 -0
- package/dist/cli-bundle/chunks/chunk-5FDATVEZ.js.map +1 -0
- package/dist/cli-bundle/chunks/chunk-5SFCOO6B.js +5622 -0
- package/dist/cli-bundle/chunks/chunk-5SFCOO6B.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-U7FMKRXH.js → chunk-6ER6DXH5.js} +37 -16
- package/dist/cli-bundle/chunks/chunk-6ER6DXH5.js.map +7 -0
- package/dist/cli-bundle/chunks/chunk-6P6GGMOG.js +218 -0
- package/dist/cli-bundle/chunks/chunk-6P6GGMOG.js.map +1 -0
- package/dist/cli-bundle/chunks/chunk-77GFDHGF.js +80 -0
- package/dist/cli-bundle/chunks/chunk-77GFDHGF.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-MD7K4JYF.js → chunk-AO442XLN.js} +26 -15
- package/dist/cli-bundle/chunks/chunk-AO442XLN.js.map +7 -0
- package/dist/cli-bundle/chunks/chunk-AY43SBIN.js +751 -0
- package/dist/cli-bundle/chunks/chunk-AY43SBIN.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-D7AOMPRH.js → chunk-BQHUILZS.js} +5 -5
- package/dist/cli-bundle/chunks/chunk-E5FJNAZA.js +242 -0
- package/dist/cli-bundle/chunks/chunk-E5FJNAZA.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-OGZEG5TT.js → chunk-ECCMVXGM.js} +164 -53
- package/dist/cli-bundle/chunks/chunk-ECCMVXGM.js.map +7 -0
- package/dist/cli-bundle/chunks/chunk-FRAUKRU2.js +182 -0
- package/dist/cli-bundle/chunks/chunk-FRAUKRU2.js.map +1 -0
- package/dist/cli-bundle/chunks/chunk-GCOQW437.js +130 -0
- package/dist/cli-bundle/chunks/chunk-GCOQW437.js.map +1 -0
- package/dist/cli-bundle/chunks/chunk-GGYWB3Y2.js +1340 -0
- package/dist/cli-bundle/chunks/chunk-GGYWB3Y2.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-G57E5D7T.js → chunk-GU2ZJ2VV.js} +5 -5
- package/dist/cli-bundle/chunks/chunk-GXSUPCBV.js +231 -0
- package/dist/cli-bundle/chunks/chunk-GXSUPCBV.js.map +1 -0
- package/dist/cli-bundle/chunks/chunk-HZGUAH22.js +76 -0
- package/dist/cli-bundle/chunks/chunk-HZGUAH22.js.map +1 -0
- package/dist/cli-bundle/chunks/chunk-I2HSTRJF.js +346 -0
- package/dist/cli-bundle/chunks/chunk-I2HSTRJF.js.map +1 -0
- package/dist/cli-bundle/chunks/chunk-I6BNFU5X.js +140 -0
- package/dist/cli-bundle/chunks/chunk-I6BNFU5X.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-JTWRXG4B.js → chunk-IJGCZSIQ.js} +251 -251
- package/dist/cli-bundle/chunks/chunk-IJGCZSIQ.js.map +7 -0
- package/dist/cli-bundle/chunks/chunk-IOR7LGF4.js +1491 -0
- package/dist/cli-bundle/chunks/chunk-IOR7LGF4.js.map +1 -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-AKOOMO3T.js → chunk-KAG77BY3.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-KBQY3YG5.js → chunk-KJ33AOCY.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-WDPXDQFG.js → chunk-KJE2FOS4.js} +6 -4
- package/dist/cli-bundle/chunks/chunk-KJE2FOS4.js.map +7 -0
- package/dist/cli-bundle/chunks/chunk-KWU6HG75.js +3883 -0
- package/dist/cli-bundle/chunks/chunk-KWU6HG75.js.map +1 -0
- package/dist/cli-bundle/chunks/chunk-LB3RUL2N.js +1325 -0
- package/dist/cli-bundle/chunks/chunk-LB3RUL2N.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-5HSEP75M.js → chunk-LCM63IXU.js} +18 -6
- package/dist/cli-bundle/chunks/chunk-LCM63IXU.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-ME2YH6FN.js +182 -0
- package/dist/cli-bundle/chunks/chunk-ME2YH6FN.js.map +1 -0
- package/dist/cli-bundle/chunks/chunk-MITFDD35.js +1809 -0
- package/dist/cli-bundle/chunks/chunk-MITFDD35.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-WJ2NAC37.js → chunk-N7ACFE26.js} +3 -3
- package/dist/cli-bundle/chunks/chunk-NUZ5HKR4.js +332 -0
- package/dist/cli-bundle/chunks/chunk-NUZ5HKR4.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-7Y53ZJIQ.js → chunk-OVQCEJPG.js} +22 -3
- package/dist/cli-bundle/chunks/chunk-OVQCEJPG.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-PXUAZUUY.js → chunk-OZ7NSQHL.js} +12 -11
- package/dist/cli-bundle/chunks/chunk-OZ7NSQHL.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-P53TN6IA.js → chunk-PDDFYW4X.js} +35 -8
- package/dist/cli-bundle/chunks/chunk-PDDFYW4X.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-6YCV7WSL.js → chunk-PIU6RSL3.js} +10 -12
- package/dist/cli-bundle/chunks/{chunk-6YCV7WSL.js.map → chunk-PIU6RSL3.js.map} +1 -1
- package/dist/cli-bundle/chunks/chunk-PO3GSVFV.js +338 -0
- package/dist/cli-bundle/chunks/chunk-PO3GSVFV.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-LRBOHPUE.js → chunk-PRJCELV4.js} +108 -21
- package/dist/cli-bundle/chunks/chunk-PRJCELV4.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-GN7IJPCD.js → chunk-PROOHX4K.js} +332 -32
- package/dist/cli-bundle/chunks/chunk-PROOHX4K.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-FQE6XZDB.js → chunk-Q7SPNHLW.js} +54 -32
- package/dist/cli-bundle/chunks/chunk-Q7SPNHLW.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-PVNQLCIS.js → chunk-QO7EBBOM.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-A7E7PUVX.js → chunk-R6UFP2GE.js} +7 -7
- package/dist/cli-bundle/chunks/chunk-RWPSOIEE.js +154 -0
- package/dist/cli-bundle/chunks/chunk-RWPSOIEE.js.map +1 -0
- package/dist/cli-bundle/chunks/chunk-RZN6VURO.js +119 -0
- package/dist/cli-bundle/chunks/chunk-RZN6VURO.js.map +1 -0
- package/dist/cli-bundle/chunks/chunk-SKJWX3QB.js +1501 -0
- package/dist/cli-bundle/chunks/chunk-SKJWX3QB.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-CEFIVZPG.js → chunk-T3LC5LKB.js} +2 -2
- package/dist/cli-bundle/chunks/chunk-TCD3R2PF.js +173 -0
- package/dist/cli-bundle/chunks/chunk-TCD3R2PF.js.map +1 -0
- package/dist/cli-bundle/chunks/chunk-TPH5XEVD.js +2988 -0
- package/dist/cli-bundle/chunks/chunk-TPH5XEVD.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-LSXGH6NE.js → chunk-U5SXYXSY.js} +821 -200
- package/dist/cli-bundle/chunks/chunk-U5SXYXSY.js.map +7 -0
- package/dist/cli-bundle/chunks/chunk-UBOPJT3S.js +540 -0
- package/dist/cli-bundle/chunks/chunk-UBOPJT3S.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-JFWUHHS2.js → chunk-UM2GBHS4.js} +5 -4
- package/dist/cli-bundle/chunks/chunk-W7XABV4H.js +454 -0
- package/dist/cli-bundle/chunks/chunk-W7XABV4H.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-SEXQN4KL.js → chunk-WKY2IBOQ.js} +3 -3
- package/dist/cli-bundle/chunks/chunk-WOPXVEZP.js +698 -0
- package/dist/cli-bundle/chunks/chunk-WOPXVEZP.js.map +1 -0
- package/dist/cli-bundle/chunks/chunk-WSMOSYRD.js +1704 -0
- package/dist/cli-bundle/chunks/chunk-WSMOSYRD.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-NGN7UV5K.js → chunk-XLTD2HN3.js} +2 -2
- package/dist/cli-bundle/chunks/chunk-XSJCLN2R.js +131 -0
- package/dist/cli-bundle/chunks/chunk-XSJCLN2R.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-BUPWJ3IJ.js → chunk-XTGLRY2Y.js} +484 -49
- package/dist/cli-bundle/chunks/chunk-XTGLRY2Y.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-L2FXEKDB.js → chunk-YL2DJGYS.js} +7 -7
- package/dist/cli-bundle/chunks/{claim-EE4TKKCV.js → claim-4DBF6RVG.js} +10 -11
- package/dist/cli-bundle/chunks/{claim-EE4TKKCV.js.map → claim-4DBF6RVG.js.map} +1 -1
- package/dist/cli-bundle/chunks/claim-X2P4IB7J.js +129 -0
- package/dist/cli-bundle/chunks/claim-X2P4IB7J.js.map +1 -0
- package/dist/cli-bundle/chunks/close-3HDWDA3L.js +13 -0
- package/dist/cli-bundle/chunks/close-PTYFA45H.js +17 -0
- package/dist/cli-bundle/chunks/close-PTYFA45H.js.map +1 -0
- package/dist/cli-bundle/chunks/close-many-7CGIDPTJ.js +314 -0
- package/dist/cli-bundle/chunks/close-many-7CGIDPTJ.js.map +7 -0
- package/dist/cli-bundle/chunks/close-many-ERFO6LHR.js +311 -0
- package/dist/cli-bundle/chunks/close-many-ERFO6LHR.js.map +1 -0
- package/dist/cli-bundle/chunks/comments-OONGABK5.js +100 -0
- package/dist/cli-bundle/chunks/comments-OONGABK5.js.map +1 -0
- package/dist/cli-bundle/chunks/{comments-AAKJQ6LW.js → comments-QKBYCWKD.js} +10 -11
- package/dist/cli-bundle/chunks/{comments-AAKJQ6LW.js.map → comments-QKBYCWKD.js.map} +1 -1
- package/dist/cli-bundle/chunks/config-6FXCQKIF.js +1671 -0
- package/dist/cli-bundle/chunks/config-6FXCQKIF.js.map +1 -0
- package/dist/cli-bundle/chunks/{config-V3FZOKLI.js → config-U4RZ4CQB.js} +121 -10
- package/dist/cli-bundle/chunks/config-U4RZ4CQB.js.map +7 -0
- package/dist/cli-bundle/chunks/{context-RZ5QPNJB.js → context-FYYJGFWS.js} +32 -19
- package/dist/cli-bundle/chunks/{context-RZ5QPNJB.js.map → context-FYYJGFWS.js.map} +2 -2
- package/dist/cli-bundle/chunks/context-YMJ3Z2HQ.js +1461 -0
- package/dist/cli-bundle/chunks/context-YMJ3Z2HQ.js.map +1 -0
- package/dist/cli-bundle/chunks/contracts-QDB6OMLQ.js +1278 -0
- package/dist/cli-bundle/chunks/contracts-QDB6OMLQ.js.map +1 -0
- package/dist/cli-bundle/chunks/{contracts-YLMH33VU.js → contracts-RFSPGVVJ.js} +198 -162
- package/dist/cli-bundle/chunks/contracts-RFSPGVVJ.js.map +7 -0
- package/dist/cli-bundle/chunks/create-I5L4EYYZ.js +31 -0
- package/dist/cli-bundle/chunks/create-I5L4EYYZ.js.map +1 -0
- package/dist/cli-bundle/chunks/create-JTZNCTQC.js +27 -0
- package/dist/cli-bundle/chunks/delete-7HPGI4GZ.js +55 -0
- package/dist/cli-bundle/chunks/delete-7HPGI4GZ.js.map +1 -0
- package/dist/cli-bundle/chunks/{delete-RHCTEORS.js → delete-VXUPH5RS.js} +7 -8
- package/dist/cli-bundle/chunks/{delete-RHCTEORS.js.map → delete-VXUPH5RS.js.map} +1 -1
- package/dist/cli-bundle/chunks/{deps-MZYCMLAO.js → deps-JSRRWC3Z.js} +7 -8
- package/dist/cli-bundle/chunks/{deps-MZYCMLAO.js.map → deps-JSRRWC3Z.js.map} +1 -1
- package/dist/cli-bundle/chunks/deps-SCZIFK2Z.js +225 -0
- package/dist/cli-bundle/chunks/deps-SCZIFK2Z.js.map +1 -0
- package/dist/cli-bundle/chunks/docs-GJK6K4VP.js +31 -0
- package/dist/cli-bundle/chunks/docs-GJK6K4VP.js.map +1 -0
- package/dist/cli-bundle/chunks/{docs-FXXUCZYU.js → docs-WW4N3MBM.js} +9 -10
- package/dist/cli-bundle/chunks/{docs-FXXUCZYU.js.map → docs-WW4N3MBM.js.map} +1 -1
- package/dist/cli-bundle/chunks/{extension-B4WL7BQU.js → extension-J7IBMFTD.js} +4 -5
- package/dist/cli-bundle/chunks/extension-VDY2U33M.js +28 -0
- package/dist/cli-bundle/chunks/extension-VDY2U33M.js.map +1 -0
- package/dist/cli-bundle/chunks/files-ISZJGILQ.js +282 -0
- package/dist/cli-bundle/chunks/files-ISZJGILQ.js.map +1 -0
- package/dist/cli-bundle/chunks/{files-WVOX67PE.js → files-WKOD326U.js} +9 -10
- package/dist/cli-bundle/chunks/{files-WVOX67PE.js.map → files-WKOD326U.js.map} +1 -1
- package/dist/cli-bundle/chunks/gc-JDVJ6OQ2.js +362 -0
- package/dist/cli-bundle/chunks/gc-JDVJ6OQ2.js.map +1 -0
- package/dist/cli-bundle/chunks/gc-ULPVWMTN.js +372 -0
- package/dist/cli-bundle/chunks/gc-ULPVWMTN.js.map +7 -0
- package/dist/cli-bundle/chunks/get-RV37HT3G.js +194 -0
- package/dist/cli-bundle/chunks/get-RV37HT3G.js.map +1 -0
- package/dist/cli-bundle/chunks/{get-LTK3HOCQ.js → get-WXU6WI5P.js} +16 -17
- package/dist/cli-bundle/chunks/get-WXU6WI5P.js.map +7 -0
- package/dist/cli-bundle/chunks/{health-TCWL55KM.js → health-6L6EH4WR.js} +57 -16
- package/dist/cli-bundle/chunks/health-6L6EH4WR.js.map +7 -0
- package/dist/cli-bundle/chunks/health-LOI2HHKB.js +1271 -0
- package/dist/cli-bundle/chunks/health-LOI2HHKB.js.map +1 -0
- package/dist/cli-bundle/chunks/history-2BA3T5AE.js +20 -0
- package/dist/cli-bundle/chunks/history-PKN67D5O.js +24 -0
- package/dist/cli-bundle/chunks/history-PKN67D5O.js.map +1 -0
- package/dist/cli-bundle/chunks/history-redact-JBZNXHGR.js +19 -0
- package/dist/cli-bundle/chunks/history-redact-V4FOJGS7.js +23 -0
- package/dist/cli-bundle/chunks/history-redact-V4FOJGS7.js.map +1 -0
- package/dist/cli-bundle/chunks/{history-repair-ZWSTDRH2.js → history-repair-HIBCBIKK.js} +12 -14
- package/dist/cli-bundle/chunks/{history-repair-ZWSTDRH2.js.map → history-repair-HIBCBIKK.js.map} +1 -1
- package/dist/cli-bundle/chunks/history-repair-SDMHR7JT.js +193 -0
- package/dist/cli-bundle/chunks/history-repair-SDMHR7JT.js.map +1 -0
- package/dist/cli-bundle/chunks/init-HIVSNX3O.js +16 -0
- package/dist/cli-bundle/chunks/init-P56QYWJF.js +20 -0
- package/dist/cli-bundle/chunks/init-P56QYWJF.js.map +1 -0
- package/dist/cli-bundle/chunks/learnings-GDFRG5J7.js +44 -0
- package/dist/cli-bundle/chunks/learnings-GDFRG5J7.js.map +1 -0
- package/dist/cli-bundle/chunks/{learnings-NXTWE3FR.js → learnings-MIXSESLK.js} +10 -11
- package/dist/cli-bundle/chunks/{learnings-NXTWE3FR.js.map → learnings-MIXSESLK.js.map} +1 -1
- package/dist/cli-bundle/chunks/list-FGOWQMSM.js +24 -0
- package/dist/cli-bundle/chunks/list-FGOWQMSM.js.map +1 -0
- package/dist/cli-bundle/chunks/list-MUSQNMTD.js +20 -0
- package/dist/cli-bundle/chunks/{notes-DFS5ZGOO.js → notes-4XVSH2AZ.js} +10 -11
- package/dist/cli-bundle/chunks/{notes-DFS5ZGOO.js.map → notes-4XVSH2AZ.js.map} +1 -1
- package/dist/cli-bundle/chunks/notes-5UK3GEH2.js +44 -0
- package/dist/cli-bundle/chunks/notes-5UK3GEH2.js.map +1 -0
- package/dist/cli-bundle/chunks/plan-DUMBV3QB.js +1171 -0
- package/dist/cli-bundle/chunks/plan-DUMBV3QB.js.map +1 -0
- package/dist/cli-bundle/chunks/{plan-67AB2PLM.js → plan-SLMODHWX.js} +13 -14
- package/dist/cli-bundle/chunks/{plan-67AB2PLM.js.map → plan-SLMODHWX.js.map} +1 -1
- package/dist/cli-bundle/chunks/register-list-query-POCFZ5JW.js +229 -0
- package/dist/cli-bundle/chunks/register-list-query-POCFZ5JW.js.map +1 -0
- package/dist/cli-bundle/chunks/{register-list-query-UP3VRUFS.js → register-list-query-WST76HSQ.js} +26 -26
- package/dist/cli-bundle/chunks/register-list-query-WST76HSQ.js.map +7 -0
- package/dist/cli-bundle/chunks/register-mutation-N5GSUZJV.js +813 -0
- package/dist/cli-bundle/chunks/register-mutation-N5GSUZJV.js.map +1 -0
- package/dist/cli-bundle/chunks/{register-mutation-YWSBF545.js → register-mutation-OA675SOU.js} +154 -43
- package/dist/cli-bundle/chunks/register-mutation-OA675SOU.js.map +7 -0
- package/dist/cli-bundle/chunks/register-operations-GNHBE5I3.js +383 -0
- package/dist/cli-bundle/chunks/register-operations-GNHBE5I3.js.map +1 -0
- package/dist/cli-bundle/chunks/{register-operations-3BDTGSDH.js → register-operations-N3PMHXH5.js} +49 -37
- package/dist/cli-bundle/chunks/register-operations-N3PMHXH5.js.map +7 -0
- package/dist/cli-bundle/chunks/register-setup-JIMPKJKV.js +242 -0
- package/dist/cli-bundle/chunks/register-setup-JIMPKJKV.js.map +1 -0
- package/dist/cli-bundle/chunks/{register-setup-V56GDRUS.js → register-setup-ZHJI2DI3.js} +18 -19
- package/dist/cli-bundle/chunks/{register-setup-V56GDRUS.js.map → register-setup-ZHJI2DI3.js.map} +2 -2
- package/dist/cli-bundle/chunks/restore-D4RGNX33.js +17 -0
- package/dist/cli-bundle/chunks/restore-PBL6T5TW.js +21 -0
- package/dist/cli-bundle/chunks/restore-PBL6T5TW.js.map +1 -0
- package/dist/cli-bundle/chunks/schema-2NOO6NGB.js +780 -0
- package/dist/cli-bundle/chunks/schema-2NOO6NGB.js.map +7 -0
- package/dist/cli-bundle/chunks/schema-EBI4NLUO.js +770 -0
- package/dist/cli-bundle/chunks/schema-EBI4NLUO.js.map +1 -0
- package/dist/cli-bundle/chunks/search-JPUQTVCY.js +1127 -0
- package/dist/cli-bundle/chunks/search-JPUQTVCY.js.map +1 -0
- package/dist/cli-bundle/chunks/{search-HENBL456.js → search-OA6JX27A.js} +25 -16
- package/dist/cli-bundle/chunks/search-OA6JX27A.js.map +7 -0
- package/dist/cli-bundle/chunks/stats-CV54BAWY.js +202 -0
- package/dist/cli-bundle/chunks/stats-CV54BAWY.js.map +1 -0
- package/dist/cli-bundle/chunks/stats-XYB6KTFG.js +212 -0
- package/dist/cli-bundle/chunks/stats-XYB6KTFG.js.map +7 -0
- package/dist/cli-bundle/chunks/telemetry-LMJ7PFUO.js +251 -0
- package/dist/cli-bundle/chunks/telemetry-LMJ7PFUO.js.map +7 -0
- package/dist/cli-bundle/chunks/telemetry-NCMEPJNR.js +248 -0
- package/dist/cli-bundle/chunks/telemetry-NCMEPJNR.js.map +1 -0
- package/dist/cli-bundle/chunks/test-MXX3E5JL.js +31 -0
- package/dist/cli-bundle/chunks/test-WBROAJIE.js +35 -0
- package/dist/cli-bundle/chunks/test-WBROAJIE.js.map +1 -0
- package/dist/cli-bundle/chunks/test-all-N6NSRDTV.js +328 -0
- package/dist/cli-bundle/chunks/test-all-N6NSRDTV.js.map +1 -0
- package/dist/cli-bundle/chunks/{test-all-G2AZOHXI.js → test-all-NTOZ7C3M.js} +13 -14
- package/dist/cli-bundle/chunks/{test-all-G2AZOHXI.js.map → test-all-NTOZ7C3M.js.map} +1 -1
- package/dist/cli-bundle/chunks/test-runs-V6A7LPWZ.js +929 -0
- package/dist/cli-bundle/chunks/test-runs-V6A7LPWZ.js.map +1 -0
- package/dist/cli-bundle/chunks/{test-runs-GX5HTPSF.js → test-runs-WMVTQU3Y.js} +5 -5
- package/dist/cli-bundle/chunks/update-OSV3NAQB.js +25 -0
- package/dist/cli-bundle/chunks/update-OSV3NAQB.js.map +1 -0
- package/dist/cli-bundle/chunks/update-YRXSUGYQ.js +21 -0
- package/dist/cli-bundle/chunks/update-many-EM6OXYGO.js +605 -0
- package/dist/cli-bundle/chunks/update-many-EM6OXYGO.js.map +1 -0
- package/dist/cli-bundle/chunks/{update-many-46HRSP2Q.js → update-many-KGGEYABR.js} +78 -146
- package/dist/cli-bundle/chunks/update-many-KGGEYABR.js.map +7 -0
- package/dist/cli-bundle/chunks/{upgrade-H5HHM5UV.js → upgrade-BLI7XBAJ.js} +5 -7
- package/dist/cli-bundle/chunks/{upgrade-H5HHM5UV.js.map → upgrade-BLI7XBAJ.js.map} +1 -1
- package/dist/cli-bundle/chunks/upgrade-LXPOQKFV.js +266 -0
- package/dist/cli-bundle/chunks/upgrade-LXPOQKFV.js.map +1 -0
- package/dist/cli-bundle/chunks/{validate-TMCVKIGZ.js → validate-AGOAUOVW.js} +61 -48
- package/dist/cli-bundle/chunks/validate-AGOAUOVW.js.map +7 -0
- package/dist/cli-bundle/chunks/validate-L5J6A7YO.js +1120 -0
- package/dist/cli-bundle/chunks/validate-L5J6A7YO.js.map +1 -0
- package/dist/cli-bundle/main.js +534 -1505
- 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/history/history-diff.d.ts +47 -0
- package/dist/core/history/history-diff.js +152 -0
- package/dist/core/history/history-diff.js.map +1 -0
- package/dist/core/history/history-storage-stats.d.ts +31 -0
- package/dist/core/history/history-storage-stats.js +101 -0
- package/dist/core/history/history-storage-stats.js.map +1 -0
- 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/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.js +4 -2
- package/dist/core/item/type-registry.js.map +1 -1
- package/dist/core/lock/lock-gc.d.ts +46 -0
- package/dist/core/lock/lock-gc.js +194 -0
- package/dist/core/lock/lock-gc.js.map +1 -0
- 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/cache.d.ts +3 -1
- package/dist/core/search/cache.js +104 -28
- 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 +64 -14
- 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/serial-queue.d.ts +12 -0
- package/dist/core/shared/serial-queue.js +43 -0
- package/dist/core/shared/serial-queue.js.map +1 -0
- 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-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 +18 -2
- package/dist/core/store/settings-validator.js.map +1 -1
- package/dist/core/store/settings.d.ts +19 -1
- package/dist/core/store/settings.js +130 -10
- 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 +5 -4
- package/dist/core/telemetry/observability.js.map +1 -1
- package/dist/core/telemetry/runtime.js +16 -4
- package/dist/core/telemetry/runtime.js.map +1 -1
- package/dist/mcp/server.d.ts +1 -0
- package/dist/mcp/server.js +372 -45
- 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 +6 -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 +42 -10
- package/dist/sdk/cli-contracts/tool-parameter-tables.js.map +1 -1
- package/dist/sdk/cli-contracts.d.ts +42 -1
- package/dist/sdk/cli-contracts.js +225 -19
- 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 +19 -0
- package/dist/types.js +3 -2
- package/dist/types.js.map +1 -1
- package/docs/AGENT_GUIDE.md +22 -3
- package/docs/ARCHITECTURE.md +11 -1
- package/docs/CLAUDE_CODE_PLUGIN.md +2 -2
- package/docs/COMMANDS.md +118 -7
- package/docs/CONFIGURATION.md +57 -2
- package/docs/EXTENSIONS.md +125 -6
- package/docs/EXTENSION_AUTHOR_CONTRACTS.md +73 -0
- package/docs/ONBOARDING.md +165 -0
- package/docs/QUICKSTART.md +3 -1
- package/docs/README.md +12 -4
- package/docs/RELEASING.md +38 -3
- package/docs/SDK.md +273 -1
- package/docs/TESTING.md +36 -1
- 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 +16 -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/plugins/pm-claude/.claude-plugin/plugin.json +1 -1
- package/plugins/pm-claude/README.md +7 -4
- package/plugins/pm-claude/agents/pm-coordinator.md +1 -1
- package/plugins/pm-claude/commands/pm-init.md +1 -1
- package/scripts/bundle-cli.mjs +121 -17
- package/dist/cli-bundle/chunks/activity-OWYSUZOY.js +0 -17
- package/dist/cli-bundle/chunks/chunk-3M73P3G6.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-4AEZR5EJ.js +0 -189
- package/dist/cli-bundle/chunks/chunk-4AEZR5EJ.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-5HSEP75M.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-6HT2F4TK.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-7Y53ZJIQ.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-BUPWJ3IJ.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-EGUGFSNX.js +0 -47
- package/dist/cli-bundle/chunks/chunk-EGUGFSNX.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-FM26RGSU.js +0 -56
- package/dist/cli-bundle/chunks/chunk-FM26RGSU.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-FQE6XZDB.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-GN7IJPCD.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-JTWRXG4B.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-JULRTHJQ.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-LRBOHPUE.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-LSXGH6NE.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-MD7K4JYF.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-OGZEG5TT.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-P53TN6IA.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-PXUAZUUY.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-U7FMKRXH.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-VGICHR7D.js +0 -141
- package/dist/cli-bundle/chunks/chunk-VGICHR7D.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-WDPXDQFG.js.map +0 -7
- package/dist/cli-bundle/chunks/close-XY4CSAYF.js +0 -14
- package/dist/cli-bundle/chunks/config-V3FZOKLI.js.map +0 -7
- package/dist/cli-bundle/chunks/contracts-YLMH33VU.js.map +0 -7
- package/dist/cli-bundle/chunks/create-PZVHRIZQ.js +0 -28
- package/dist/cli-bundle/chunks/gc-JWNF66EC.js +0 -181
- package/dist/cli-bundle/chunks/gc-JWNF66EC.js.map +0 -7
- package/dist/cli-bundle/chunks/get-LTK3HOCQ.js.map +0 -7
- package/dist/cli-bundle/chunks/health-TCWL55KM.js.map +0 -7
- package/dist/cli-bundle/chunks/history-A2JUDXUE.js +0 -21
- package/dist/cli-bundle/chunks/history-redact-ED6RFCPL.js +0 -20
- package/dist/cli-bundle/chunks/init-M2WUB4YH.js +0 -16
- package/dist/cli-bundle/chunks/list-OGWQPC26.js +0 -20
- package/dist/cli-bundle/chunks/register-list-query-UP3VRUFS.js.map +0 -7
- package/dist/cli-bundle/chunks/register-mutation-YWSBF545.js.map +0 -7
- package/dist/cli-bundle/chunks/register-operations-3BDTGSDH.js.map +0 -7
- package/dist/cli-bundle/chunks/restore-MB2ISME7.js +0 -18
- package/dist/cli-bundle/chunks/schema-Q622KC46.js +0 -119
- package/dist/cli-bundle/chunks/schema-Q622KC46.js.map +0 -7
- package/dist/cli-bundle/chunks/search-HENBL456.js.map +0 -7
- package/dist/cli-bundle/chunks/stats-N6H3YP2F.js +0 -124
- package/dist/cli-bundle/chunks/stats-N6H3YP2F.js.map +0 -7
- package/dist/cli-bundle/chunks/test-VNBDRJ4Z.js +0 -32
- package/dist/cli-bundle/chunks/update-H6SCWNMA.js +0 -22
- package/dist/cli-bundle/chunks/update-many-46HRSP2Q.js.map +0 -7
- package/dist/cli-bundle/chunks/validate-TMCVKIGZ.js.map +0 -7
- /package/dist/cli-bundle/chunks/{activity-OWYSUZOY.js.map → activity-CVXTCHYY.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{aggregate-ADUOSFRO.js.map → aggregate-VNAHUNNF.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-D7AOMPRH.js.map → chunk-BQHUILZS.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-G57E5D7T.js.map → chunk-GU2ZJ2VV.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-AKOOMO3T.js.map → chunk-KAG77BY3.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-KBQY3YG5.js.map → chunk-KJ33AOCY.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-WJ2NAC37.js.map → chunk-N7ACFE26.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-PVNQLCIS.js.map → chunk-QO7EBBOM.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-A7E7PUVX.js.map → chunk-R6UFP2GE.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-CEFIVZPG.js.map → chunk-T3LC5LKB.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-JFWUHHS2.js.map → chunk-UM2GBHS4.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-SEXQN4KL.js.map → chunk-WKY2IBOQ.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-NGN7UV5K.js.map → chunk-XLTD2HN3.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-L2FXEKDB.js.map → chunk-YL2DJGYS.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{close-XY4CSAYF.js.map → close-3HDWDA3L.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{create-PZVHRIZQ.js.map → create-JTZNCTQC.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{extension-B4WL7BQU.js.map → extension-J7IBMFTD.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{history-A2JUDXUE.js.map → history-2BA3T5AE.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{history-redact-ED6RFCPL.js.map → history-redact-JBZNXHGR.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{init-M2WUB4YH.js.map → init-HIVSNX3O.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{list-OGWQPC26.js.map → list-MUSQNMTD.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{restore-MB2ISME7.js.map → restore-D4RGNX33.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{test-VNBDRJ4Z.js.map → test-MXX3E5JL.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{test-runs-GX5HTPSF.js.map → test-runs-WMVTQU3Y.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{update-H6SCWNMA.js.map → update-YRXSUGYQ.js.map} +0 -0
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
|
|
2
|
-
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="
|
|
2
|
+
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="74fefeac-195a-595c-aa23-d38e5b855b84")}catch(e){}}();
|
|
3
3
|
import { pathExists } from "../../core/fs/fs-utils.js";
|
|
4
4
|
import { canonicalizeCommandOptionKey, commandOptionFlagLabel, resolveItemTypeRegistry, resolveCommandOptionPolicyState, resolveTypeDefinition, resolveTypeName, validateTypeOptions, } from "../../core/item/type-registry.js";
|
|
5
5
|
import { normalizeItemId } from "../../core/item/id.js";
|
|
@@ -12,19 +12,21 @@ import { resolvePriority } from "../../core/item/priority.js";
|
|
|
12
12
|
import { normalizeStatusInput } from "../../core/item/status.js";
|
|
13
13
|
import { collectRuntimeUpdateFieldValues } from "../../core/schema/runtime-field-values.js";
|
|
14
14
|
import { resolveRuntimeFieldRegistry, resolveRuntimeStatusRegistry, } from "../../core/schema/runtime-schema.js";
|
|
15
|
+
import { describeAllowedTransitions, evaluateTransition, resolveTypeWorkflows, } from "../../core/schema/type-workflows.js";
|
|
15
16
|
import { EXIT_CODE } from "../../core/shared/constants.js";
|
|
16
17
|
import { PmCliError } from "../../core/shared/errors.js";
|
|
18
|
+
import { stableValueEquals } from "../../core/shared/serialization.js";
|
|
17
19
|
import { resolveIsoOrRelative } from "../../core/shared/time.js";
|
|
18
20
|
import { getActiveExtensionRegistrations } from "../../core/extensions/index.js";
|
|
19
|
-
import { applyRegisteredItemFieldDefaultsAndValidation } from "../../core/extensions/item-fields.js";
|
|
21
|
+
import { collectRegisteredItemFieldNames, applyRegisteredItemFieldDefaultsAndValidation, parseRegisteredItemFieldAssignments, } from "../../core/extensions/item-fields.js";
|
|
20
22
|
import { buildItemNotFoundError, locateItem, mutateItem, readLocatedItem } from "../../core/store/item-store.js";
|
|
21
23
|
import { getSettingsPath, resolvePmRoot } from "../../core/store/paths.js";
|
|
22
24
|
import { readSettings } from "../../core/store/settings.js";
|
|
23
25
|
import { runClose } from "./close.js";
|
|
24
26
|
import { normalizeRiskInput, normalizeSeverityInput, parseConfidenceInput, parseRegressionInput, } from "./metadata-normalizers.js";
|
|
25
|
-
import { resolveEventEndAt } from "./event-validation-messages.js";
|
|
26
27
|
import { assertNoLegacyNoneToken, assertNoLegacyNoneTokens, isLegacyNoneToken } from "./legacy-none-tokens.js";
|
|
27
|
-
import { ensureEnumValue as ensureEnum
|
|
28
|
+
import { ensureEnumValue as ensureEnum } from "./recurrence-parsers.js";
|
|
29
|
+
import { parseEventEntries, parseReminderEntries, parseTypeOptionEntries, } from "./repeatable-metadata-parsers.js";
|
|
28
30
|
import { DEPENDENCY_KIND_VALUES, ISSUE_SEVERITY_VALUES, RISK_VALUES, } from "../../types/index.js";
|
|
29
31
|
import { parseDocs, parseFiles, parseLogSeed, parseTests } from "./create.js";
|
|
30
32
|
const UPDATE_UNSET_FIELD_DEFINITIONS = [
|
|
@@ -253,7 +255,7 @@ function resolveRuntimeUnsetDefinition(token, runtimeFieldRegistry) {
|
|
|
253
255
|
}
|
|
254
256
|
return undefined;
|
|
255
257
|
}
|
|
256
|
-
function parseUpdateUnsetTargets(raw, runtimeFieldRegistry) {
|
|
258
|
+
function parseUpdateUnsetTargets(raw, runtimeFieldRegistry, extensionFieldNames = []) {
|
|
257
259
|
const frontMatterKeys = new Set();
|
|
258
260
|
const optionKeys = new Set();
|
|
259
261
|
if (!raw || raw.length === 0) {
|
|
@@ -267,7 +269,15 @@ function parseUpdateUnsetTargets(raw, runtimeFieldRegistry) {
|
|
|
267
269
|
if (isLegacyNoneToken(trimmed)) {
|
|
268
270
|
throw new PmCliError('--unset no longer accepts "none" or "null". Specify concrete field names such as --unset deadline', EXIT_CODE.USAGE);
|
|
269
271
|
}
|
|
270
|
-
const
|
|
272
|
+
const extensionFieldName = extensionFieldNames.find((fieldName) => {
|
|
273
|
+
const normalizedFieldName = fieldName.toLowerCase();
|
|
274
|
+
return (normalizedFieldName === trimmed ||
|
|
275
|
+
normalizedFieldName.replaceAll("_", "-") === trimmed ||
|
|
276
|
+
normalizedFieldName.replaceAll("-", "_") === trimmed);
|
|
277
|
+
});
|
|
278
|
+
const definition = UPDATE_UNSET_ALIAS_MAP.get(trimmed) ??
|
|
279
|
+
resolveRuntimeUnsetDefinition(trimmed, runtimeFieldRegistry) ??
|
|
280
|
+
(extensionFieldName ? { optionKey: "field", frontMatterKey: extensionFieldName } : undefined);
|
|
271
281
|
if (!definition) {
|
|
272
282
|
throw new PmCliError(`Unsupported --unset field "${entry}". Supported fields: ${UPDATE_UNSET_SUPPORTED_CANONICAL_FIELDS}`, EXIT_CODE.USAGE);
|
|
273
283
|
}
|
|
@@ -469,102 +479,35 @@ function parseStatus(value, statusRegistry) {
|
|
|
469
479
|
}
|
|
470
480
|
return normalized;
|
|
471
481
|
}
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
const startRaw = (kv.start ?? kv.date)?.trim();
|
|
490
|
-
if (!startRaw) {
|
|
491
|
-
throw new PmCliError("--event requires start=<iso|relative> or date=<iso|relative>", EXIT_CODE.USAGE);
|
|
492
|
-
}
|
|
493
|
-
const startAt = resolveIsoOrRelative(startRaw, nowValue, "event.start");
|
|
494
|
-
const endRaw = kv.end?.trim();
|
|
495
|
-
const durationRaw = kv.duration?.trim();
|
|
496
|
-
const endAt = resolveEventEndAt(startAt, endRaw, durationRaw, nowValue);
|
|
497
|
-
const titleRaw = kv.title;
|
|
498
|
-
const descriptionRaw = kv.description;
|
|
499
|
-
const locationRaw = kv.location;
|
|
500
|
-
const timezoneRaw = kv.timezone;
|
|
501
|
-
const title = titleRaw?.trim();
|
|
502
|
-
const description = descriptionRaw?.trim();
|
|
503
|
-
const location = locationRaw?.trim();
|
|
504
|
-
const timezone = timezoneRaw?.trim();
|
|
505
|
-
if (titleRaw !== undefined && !title) {
|
|
506
|
-
throw new PmCliError("--event title must not be empty", EXIT_CODE.USAGE);
|
|
507
|
-
}
|
|
508
|
-
if (descriptionRaw !== undefined && !description) {
|
|
509
|
-
throw new PmCliError("--event description must not be empty", EXIT_CODE.USAGE);
|
|
510
|
-
}
|
|
511
|
-
if (locationRaw !== undefined && !location) {
|
|
512
|
-
throw new PmCliError("--event location must not be empty", EXIT_CODE.USAGE);
|
|
513
|
-
}
|
|
514
|
-
if (timezoneRaw !== undefined && !timezone) {
|
|
515
|
-
throw new PmCliError("--event timezone must not be empty", EXIT_CODE.USAGE);
|
|
516
|
-
}
|
|
517
|
-
const allDayRaw = kv.all_day?.trim();
|
|
518
|
-
const recurrence = parseRecurrenceRule(kv, startAt, nowValue, "truthy");
|
|
519
|
-
return {
|
|
520
|
-
start_at: startAt,
|
|
521
|
-
end_at: endAt,
|
|
522
|
-
title,
|
|
523
|
-
description,
|
|
524
|
-
location,
|
|
525
|
-
all_day: allDayRaw ? parseEventBoolean(allDayRaw, "--event all_day") : undefined,
|
|
526
|
-
timezone,
|
|
527
|
-
recurrence,
|
|
528
|
-
};
|
|
482
|
+
/**
|
|
483
|
+
* Enforce per-type allowed-transition rules (governance.workflow_enforcement).
|
|
484
|
+
* `off` (default) or an unrestricted type is a no-op. `strict` throws on a
|
|
485
|
+
* disallowed transition; `warn` returns a warning string surfaced on the
|
|
486
|
+
* update result. The target status is the raw `--status` value (resolved
|
|
487
|
+
* case-insensitively through the registry inside evaluateTransition).
|
|
488
|
+
*/
|
|
489
|
+
function enforceTypeWorkflowTransition(params) {
|
|
490
|
+
if (params.enforcement === "off" || params.typeWorkflows.length === 0) {
|
|
491
|
+
return undefined;
|
|
492
|
+
}
|
|
493
|
+
const result = evaluateTransition({
|
|
494
|
+
typeName: params.typeName,
|
|
495
|
+
fromStatus: params.fromStatus,
|
|
496
|
+
toStatus: params.toStatus,
|
|
497
|
+
typeWorkflows: params.typeWorkflows,
|
|
498
|
+
statusRegistry: params.statusRegistry,
|
|
529
499
|
});
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
let value;
|
|
540
|
-
const prefersStructuredKv = trimmedEntry.includes(",") ||
|
|
541
|
-
trimmedEntry.includes("\n") ||
|
|
542
|
-
trimmedEntry.startsWith("```") ||
|
|
543
|
-
/^(?:[-*+]\s+)?(?:key|value)\s*[:=]/i.test(trimmedEntry);
|
|
544
|
-
if (prefersStructuredKv) {
|
|
545
|
-
const kv = parseCsvKv(trimmedEntry, "--type-option");
|
|
546
|
-
key = kv.key?.trim();
|
|
547
|
-
value = kv.value?.trim();
|
|
548
|
-
}
|
|
549
|
-
else {
|
|
550
|
-
const equalsIndex = trimmedEntry.indexOf("=");
|
|
551
|
-
const colonIndex = trimmedEntry.indexOf(":");
|
|
552
|
-
let separatorIndex = equalsIndex;
|
|
553
|
-
if (equalsIndex <= 0 && colonIndex > 0) {
|
|
554
|
-
separatorIndex = colonIndex;
|
|
555
|
-
}
|
|
556
|
-
if (separatorIndex <= 0 || separatorIndex === trimmedEntry.length - 1) {
|
|
557
|
-
throw new PmCliError("--type-option requires key=value or key=<name>,value=<value> entries", EXIT_CODE.USAGE);
|
|
558
|
-
}
|
|
559
|
-
key = trimmedEntry.slice(0, separatorIndex).trim();
|
|
560
|
-
value = trimmedEntry.slice(separatorIndex + 1).trim();
|
|
561
|
-
}
|
|
562
|
-
if (!key || !value) {
|
|
563
|
-
throw new PmCliError("--type-option requires key and value", EXIT_CODE.USAGE);
|
|
564
|
-
}
|
|
565
|
-
values[key] = value;
|
|
500
|
+
if (!result.hasRule || result.allowed) {
|
|
501
|
+
return undefined;
|
|
502
|
+
}
|
|
503
|
+
const normalizedFrom = normalizeStatusInput(params.fromStatus, params.statusRegistry) ?? params.fromStatus;
|
|
504
|
+
const normalizedTo = normalizeStatusInput(params.toStatus, params.statusRegistry) ?? params.toStatus;
|
|
505
|
+
const message = `Disallowed transition for type "${params.typeName}": ${normalizedFrom} -> ${normalizedTo}. ` +
|
|
506
|
+
`Allowed transitions: ${describeAllowedTransitions(result.allowedTransitions)}.`;
|
|
507
|
+
if (params.enforcement === "strict") {
|
|
508
|
+
throw new PmCliError(message, EXIT_CODE.USAGE);
|
|
566
509
|
}
|
|
567
|
-
return
|
|
510
|
+
return `workflow_transition_not_allowed: ${message}`;
|
|
568
511
|
}
|
|
569
512
|
function parseDependencyCreatedAt(value, currentIso) {
|
|
570
513
|
if (!value || value.trim() === "" || value.trim().toLowerCase() === "now") {
|
|
@@ -586,7 +529,7 @@ function looksLikeStructuredDependencyEntry(raw) {
|
|
|
586
529
|
if (raw.startsWith("```") || raw.includes("\n")) {
|
|
587
530
|
return true;
|
|
588
531
|
}
|
|
589
|
-
return /^(?:[-*+]\s+)?(?:id|kind|author|created_at|source_kind)\s*[:=]/i.test(raw);
|
|
532
|
+
return /^(?:[-*+]\s+)?(?:id|kind|type|author|created_at|source_kind)\s*[:=]/i.test(raw);
|
|
590
533
|
}
|
|
591
534
|
// pm-fl0c #4 (2026-05-28): `pm plan` accepts `depends_on` as a link kind
|
|
592
535
|
// (`PLAN_STEP_LINK_KIND_VALUES`) but `pm update --dep kind=depends_on` rejected
|
|
@@ -596,6 +539,7 @@ function looksLikeStructuredDependencyEntry(raw) {
|
|
|
596
539
|
// — the stored kind stays canonical (`blocked_by`) and downstream consumers
|
|
597
540
|
// (closing logic, dependency graphs, blockers views) keep working unchanged.
|
|
598
541
|
const DEPENDENCY_KIND_INPUT_ALIASES = {
|
|
542
|
+
"blocked-by": "blocked_by",
|
|
599
543
|
depends_on: "blocked_by",
|
|
600
544
|
"depends-on": "blocked_by",
|
|
601
545
|
};
|
|
@@ -616,7 +560,7 @@ function parseDependencyAdditions(raw, prefix, nowIso) {
|
|
|
616
560
|
const trimmedEntry = entry.trim();
|
|
617
561
|
const kv = looksLikeStructuredDependencyEntry(trimmedEntry) ? parseCsvKv(entry, "--dep") : { id: trimmedEntry, kind: "related" };
|
|
618
562
|
const id = kv.id?.trim();
|
|
619
|
-
const kind = normalizeDependencyKindInput(kv.kind?.trim());
|
|
563
|
+
const kind = normalizeDependencyKindInput((kv.kind ?? kv.type)?.trim());
|
|
620
564
|
if (!id || !kind) {
|
|
621
565
|
throw new PmCliError("--dep requires id and kind, or a bare item id to add a related dependency", EXIT_CODE.USAGE);
|
|
622
566
|
}
|
|
@@ -644,7 +588,7 @@ function parseDependencyRemovals(raw, prefix) {
|
|
|
644
588
|
if (!trimmed) {
|
|
645
589
|
throw new PmCliError("--dep-remove requires id or key/value selectors", EXIT_CODE.USAGE);
|
|
646
590
|
}
|
|
647
|
-
if (trimmed.includes("=") || /^(?:[-*+]\s+)?(?:id|kind|source_kind)\s*[:=]/i.test(trimmed) || trimmed.startsWith("```")) {
|
|
591
|
+
if (trimmed.includes("=") || /^(?:[-*+]\s+)?(?:id|kind|type|source_kind)\s*[:=]/i.test(trimmed) || trimmed.startsWith("```")) {
|
|
648
592
|
const kv = parseCsvKv(trimmed, "--dep-remove");
|
|
649
593
|
const idRaw = kv.id?.trim();
|
|
650
594
|
if (!idRaw) {
|
|
@@ -653,7 +597,7 @@ function parseDependencyRemovals(raw, prefix) {
|
|
|
653
597
|
if (idRaw.toLowerCase() === "undefined") {
|
|
654
598
|
throw new PmCliError(`--dep-remove id must not use placeholder token "${idRaw}"`, EXIT_CODE.USAGE);
|
|
655
599
|
}
|
|
656
|
-
const kindRaw = normalizeDependencyKindInput(parseOptionalDependencyString(kv.kind));
|
|
600
|
+
const kindRaw = normalizeDependencyKindInput(parseOptionalDependencyString(kv.kind ?? kv.type));
|
|
657
601
|
const sourceKind = parseOptionalDependencyString(kv.source_kind);
|
|
658
602
|
return {
|
|
659
603
|
id: normalizeItemId(idRaw, prefix),
|
|
@@ -760,7 +704,7 @@ function normalizeUpdatePolicyOptionKey(raw, typeName) {
|
|
|
760
704
|
}
|
|
761
705
|
return canonical;
|
|
762
706
|
}
|
|
763
|
-
function collectProvidedUpdatePolicyOptions(options) {
|
|
707
|
+
function collectProvidedUpdatePolicyOptions(options, extensionFieldNames) {
|
|
764
708
|
const provided = new Set();
|
|
765
709
|
const mark = (optionKey, isProvided) => {
|
|
766
710
|
if (isProvided) {
|
|
@@ -827,6 +771,7 @@ function collectProvidedUpdatePolicyOptions(options) {
|
|
|
827
771
|
mark("reminder", options.reminder !== undefined);
|
|
828
772
|
mark("event", options.event !== undefined);
|
|
829
773
|
mark("typeOption", options.typeOption !== undefined);
|
|
774
|
+
mark("field", options.field !== undefined);
|
|
830
775
|
mark("force", options.force === true);
|
|
831
776
|
mark("allowAuditUpdate", options.allowAuditUpdate === true);
|
|
832
777
|
mark("dep", options.clearDeps === true);
|
|
@@ -840,14 +785,14 @@ function collectProvidedUpdatePolicyOptions(options) {
|
|
|
840
785
|
mark("event", options.clearEvents === true);
|
|
841
786
|
mark("typeOption", options.clearTypeOptions === true);
|
|
842
787
|
if (options.unset && options.unset.length > 0) {
|
|
843
|
-
const unsetTargets = parseUpdateUnsetTargets(options.unset);
|
|
788
|
+
const unsetTargets = parseUpdateUnsetTargets(options.unset, undefined, extensionFieldNames);
|
|
844
789
|
for (const optionKey of unsetTargets.optionKeys) {
|
|
845
790
|
mark(optionKey, true);
|
|
846
791
|
}
|
|
847
792
|
}
|
|
848
793
|
return provided;
|
|
849
794
|
}
|
|
850
|
-
function enforceUpdateOptionsByType(typeName, options, typeRegistry) {
|
|
795
|
+
function enforceUpdateOptionsByType(typeName, options, typeRegistry, extensionFieldNames) {
|
|
851
796
|
const typeDefinition = resolveTypeDefinition(typeName, typeRegistry);
|
|
852
797
|
if (!typeDefinition) {
|
|
853
798
|
throw new PmCliError(`Invalid type value "${typeName}"`, EXIT_CODE.USAGE);
|
|
@@ -856,7 +801,7 @@ function enforceUpdateOptionsByType(typeName, options, typeRegistry) {
|
|
|
856
801
|
if (policyState.errors.length > 0) {
|
|
857
802
|
throw new PmCliError(policyState.errors.join("; "), EXIT_CODE.CONFLICT);
|
|
858
803
|
}
|
|
859
|
-
const provided = collectProvidedUpdatePolicyOptions(options);
|
|
804
|
+
const provided = collectProvidedUpdatePolicyOptions(options, extensionFieldNames);
|
|
860
805
|
for (const disabled of policyState.disabled) {
|
|
861
806
|
if (provided.has(normalizeUpdatePolicyOptionKey(disabled, typeName))) {
|
|
862
807
|
throw new PmCliError(`Option ${commandOptionFlagLabel("update", disabled)} is disabled for type "${typeName}" by command_option_policies`, EXIT_CODE.USAGE);
|
|
@@ -884,6 +829,7 @@ export async function runUpdate(id, options, global) {
|
|
|
884
829
|
reminder: await stdinResolver.resolveList(options.reminder, "--reminder"),
|
|
885
830
|
event: await stdinResolver.resolveList(options.event, "--event"),
|
|
886
831
|
typeOption: await stdinResolver.resolveList(options.typeOption, "--type-option"),
|
|
832
|
+
field: await stdinResolver.resolveList(options.field, "--field"),
|
|
887
833
|
});
|
|
888
834
|
const pmRoot = resolvePmRoot(process.cwd(), global.path);
|
|
889
835
|
if (!(await pathExists(getSettingsPath(pmRoot)))) {
|
|
@@ -892,10 +838,16 @@ export async function runUpdate(id, options, global) {
|
|
|
892
838
|
const settings = await readSettings(pmRoot);
|
|
893
839
|
const statusRegistry = resolveRuntimeStatusRegistry(settings.schema);
|
|
894
840
|
const runtimeFieldRegistry = resolveRuntimeFieldRegistry(settings.schema);
|
|
895
|
-
const
|
|
841
|
+
const extensionRegistrations = getActiveExtensionRegistrations();
|
|
842
|
+
const extensionFieldNames = collectRegisteredItemFieldNames(extensionRegistrations);
|
|
843
|
+
const typeRegistry = resolveItemTypeRegistry(settings, extensionRegistrations);
|
|
844
|
+
// Per-type allowed-transition enforcement is read RAW (not preset-derived) so
|
|
845
|
+
// existing projects are unaffected when unset; defaults to "off".
|
|
846
|
+
const workflowEnforcement = settings.governance.workflow_enforcement ?? "off";
|
|
847
|
+
const typeWorkflows = workflowEnforcement === "off" ? [] : resolveTypeWorkflows(settings.schema);
|
|
896
848
|
const parentReferencePolicy = settings.validation.parent_reference;
|
|
897
849
|
const sprintReleasePolicy = settings.validation.sprint_release_format;
|
|
898
|
-
const unsetTargets = parseUpdateUnsetTargets(options.unset, runtimeFieldRegistry);
|
|
850
|
+
const unsetTargets = parseUpdateUnsetTargets(options.unset, runtimeFieldRegistry, extensionFieldNames);
|
|
899
851
|
const clearOptionKeys = new Set(unsetTargets.optionKeys);
|
|
900
852
|
const clearFrontMatterKeys = new Set(unsetTargets.frontMatterKeys);
|
|
901
853
|
const clearCollectionDefinitions = [
|
|
@@ -1115,6 +1067,7 @@ export async function runUpdate(id, options, global) {
|
|
|
1115
1067
|
const testUpdates = parseTests(options.test);
|
|
1116
1068
|
const docUpdates = parseDocs(options.doc);
|
|
1117
1069
|
const parentReferenceWarnings = [];
|
|
1070
|
+
const workflowTransitionWarnings = [];
|
|
1118
1071
|
let resolvedParentValue;
|
|
1119
1072
|
if (options.parent !== undefined && !unsetTargets.frontMatterKeys.has("parent")) {
|
|
1120
1073
|
resolvedParentValue = normalizeParentReferenceValue(options.parent);
|
|
@@ -1131,6 +1084,7 @@ export async function runUpdate(id, options, global) {
|
|
|
1131
1084
|
if (blockedByResolution.unresolved !== undefined) {
|
|
1132
1085
|
parentReferenceWarnings.push(`blocked_by_unresolved:${blockedByResolution.unresolved}`);
|
|
1133
1086
|
}
|
|
1087
|
+
const runtimeFieldUpdates = collectRuntimeUpdateFieldValues(options, runtimeFieldRegistry, options.runtimeFieldCommands);
|
|
1134
1088
|
const fieldFlags = {
|
|
1135
1089
|
title: options.title !== undefined,
|
|
1136
1090
|
description: options.description !== undefined,
|
|
@@ -1189,6 +1143,7 @@ export async function runUpdate(id, options, global) {
|
|
|
1189
1143
|
reminder: options.reminder !== undefined,
|
|
1190
1144
|
event: options.event !== undefined,
|
|
1191
1145
|
typeOption: options.typeOption !== undefined,
|
|
1146
|
+
field: options.field !== undefined,
|
|
1192
1147
|
unset: options.unset !== undefined && options.unset.length > 0,
|
|
1193
1148
|
clearDeps: options.clearDeps === true,
|
|
1194
1149
|
clearComments: options.clearComments === true,
|
|
@@ -1200,6 +1155,7 @@ export async function runUpdate(id, options, global) {
|
|
|
1200
1155
|
clearReminders: options.clearReminders === true,
|
|
1201
1156
|
clearEvents: options.clearEvents === true,
|
|
1202
1157
|
clearTypeOptions: options.clearTypeOptions === true,
|
|
1158
|
+
runtimeFields: Object.keys(runtimeFieldUpdates).length > 0,
|
|
1203
1159
|
};
|
|
1204
1160
|
const changedFlags = Object.values(fieldFlags).some(Boolean);
|
|
1205
1161
|
if (!changedFlags) {
|
|
@@ -1214,6 +1170,37 @@ export async function runUpdate(id, options, global) {
|
|
|
1214
1170
|
warnings: ["noop_no_update_fields"],
|
|
1215
1171
|
};
|
|
1216
1172
|
}
|
|
1173
|
+
// Per-type allowed-transition enforcement runs BEFORE the close-reroute so a
|
|
1174
|
+
// transition toward the close status is gated too. We read the item's current
|
|
1175
|
+
// status + type once (only when enforcement is active and --status is set) so
|
|
1176
|
+
// the default `off` path adds zero extra work. A `strict` violation throws; a
|
|
1177
|
+
// `warn` violation surfaces a warning on the result.
|
|
1178
|
+
if (workflowEnforcement !== "off" && typeWorkflows.length > 0 && fieldFlags.status && options.status !== undefined) {
|
|
1179
|
+
const located = await locateItem(pmRoot, id, settings.id_prefix, settings.item_format, typeRegistry.type_to_folder);
|
|
1180
|
+
if (!located) {
|
|
1181
|
+
throw await buildItemNotFoundError(pmRoot, id, settings.id_prefix, typeRegistry.type_to_folder);
|
|
1182
|
+
}
|
|
1183
|
+
const { document } = await readLocatedItem(located, { schema: settings.schema });
|
|
1184
|
+
// When this update also changes --type, gate the transition against the
|
|
1185
|
+
// EFFECTIVE (post-update) type, so a combined --type/--status change can't
|
|
1186
|
+
// bypass a target-type rule (or be wrongly blocked by the pre-update type's
|
|
1187
|
+
// rule that will no longer apply). Falls back to the raw value when --type is
|
|
1188
|
+
// unresolved; the later type resolution surfaces an invalid-type error.
|
|
1189
|
+
const effectiveType = options.type !== undefined
|
|
1190
|
+
? (resolveTypeName(options.type, typeRegistry) ?? options.type)
|
|
1191
|
+
: (document.metadata?.type ?? "");
|
|
1192
|
+
const warning = enforceTypeWorkflowTransition({
|
|
1193
|
+
enforcement: workflowEnforcement,
|
|
1194
|
+
typeWorkflows,
|
|
1195
|
+
statusRegistry,
|
|
1196
|
+
typeName: effectiveType,
|
|
1197
|
+
fromStatus: document.metadata?.status ?? "",
|
|
1198
|
+
toStatus: options.status ?? "",
|
|
1199
|
+
});
|
|
1200
|
+
if (warning) {
|
|
1201
|
+
workflowTransitionWarnings.push(warning);
|
|
1202
|
+
}
|
|
1203
|
+
}
|
|
1217
1204
|
// `pm update --status <close_status>` always routes to the auditable close
|
|
1218
1205
|
// workflow so agents are never blocked by close-through-update errors. Any
|
|
1219
1206
|
// other field updates in the same call are applied first, then the item is
|
|
@@ -1242,7 +1229,12 @@ export async function runUpdate(id, options, global) {
|
|
|
1242
1229
|
message: options.message,
|
|
1243
1230
|
force: options.force,
|
|
1244
1231
|
}, global);
|
|
1245
|
-
const warnings = [
|
|
1232
|
+
const warnings = [
|
|
1233
|
+
...workflowTransitionWarnings,
|
|
1234
|
+
...routeWarnings,
|
|
1235
|
+
...closeResult.warnings,
|
|
1236
|
+
"auto_routed_from_update_to_close",
|
|
1237
|
+
];
|
|
1246
1238
|
if (reasonDefaulted) {
|
|
1247
1239
|
warnings.push("close_reason_defaulted");
|
|
1248
1240
|
}
|
|
@@ -1266,6 +1258,7 @@ export async function runUpdate(id, options, global) {
|
|
|
1266
1258
|
message: options.message,
|
|
1267
1259
|
force: options.force,
|
|
1268
1260
|
bypassAssigneeConflict: options.allowAuditUpdate === true || options.allowAuditDepUpdate === true,
|
|
1261
|
+
extensionFieldNames,
|
|
1269
1262
|
mutate(document) {
|
|
1270
1263
|
const changedFields = [];
|
|
1271
1264
|
const warnings = [];
|
|
@@ -1348,7 +1341,7 @@ export async function runUpdate(id, options, global) {
|
|
|
1348
1341
|
activeTypeName = resolvedTypeName;
|
|
1349
1342
|
changedFields.push("type");
|
|
1350
1343
|
}
|
|
1351
|
-
enforceUpdateOptionsByType(activeTypeName, options, typeRegistry);
|
|
1344
|
+
enforceUpdateOptionsByType(activeTypeName, options, typeRegistry, extensionFieldNames);
|
|
1352
1345
|
if (options.typeOption !== undefined || clearFrontMatterKeys.has("type_options")) {
|
|
1353
1346
|
if (clearFrontMatterKeys.has("type_options")) {
|
|
1354
1347
|
delete document.metadata.type_options;
|
|
@@ -1613,7 +1606,7 @@ export async function runUpdate(id, options, global) {
|
|
|
1613
1606
|
delete document.metadata.reminders;
|
|
1614
1607
|
}
|
|
1615
1608
|
else {
|
|
1616
|
-
document.metadata.reminders = parseReminderEntries(options.reminder, nowValue);
|
|
1609
|
+
document.metadata.reminders = parseReminderEntries(options.reminder, nowValue, { valueMode: "trimmed" });
|
|
1617
1610
|
}
|
|
1618
1611
|
changedFields.push("reminders");
|
|
1619
1612
|
}
|
|
@@ -1622,7 +1615,10 @@ export async function runUpdate(id, options, global) {
|
|
|
1622
1615
|
delete document.metadata.events;
|
|
1623
1616
|
}
|
|
1624
1617
|
else {
|
|
1625
|
-
document.metadata.events = parseEventEntries(options.event, nowValue
|
|
1618
|
+
document.metadata.events = parseEventEntries(options.event, nowValue, {
|
|
1619
|
+
allDayEmptyGuard: "truthy",
|
|
1620
|
+
recurrenceEmptyNumericGuard: "truthy",
|
|
1621
|
+
});
|
|
1626
1622
|
}
|
|
1627
1623
|
changedFields.push("events");
|
|
1628
1624
|
}
|
|
@@ -1636,19 +1632,42 @@ export async function runUpdate(id, options, global) {
|
|
|
1636
1632
|
delete metadataRecord[definition.metadata_key];
|
|
1637
1633
|
changedFields.push(definition.metadata_key);
|
|
1638
1634
|
}
|
|
1639
|
-
const
|
|
1635
|
+
for (const fieldKey of extensionFieldNames) {
|
|
1636
|
+
if (!clearFrontMatterKeys.has(fieldKey)) {
|
|
1637
|
+
continue;
|
|
1638
|
+
}
|
|
1639
|
+
if (metadataRecord[fieldKey] === undefined) {
|
|
1640
|
+
continue;
|
|
1641
|
+
}
|
|
1642
|
+
delete metadataRecord[fieldKey];
|
|
1643
|
+
changedFields.push(fieldKey);
|
|
1644
|
+
}
|
|
1640
1645
|
for (const [fieldKey, fieldValue] of Object.entries(runtimeFieldUpdates)) {
|
|
1641
1646
|
if (clearFrontMatterKeys.has(fieldKey)) {
|
|
1642
1647
|
continue;
|
|
1643
1648
|
}
|
|
1644
|
-
if (
|
|
1649
|
+
if (stableValueEquals(metadataRecord[fieldKey], fieldValue)) {
|
|
1650
|
+
continue;
|
|
1651
|
+
}
|
|
1652
|
+
metadataRecord[fieldKey] = fieldValue;
|
|
1653
|
+
changedFields.push(fieldKey);
|
|
1654
|
+
}
|
|
1655
|
+
const registeredItemFieldUpdates = parseRegisteredItemFieldAssignments(options.field, extensionRegistrations);
|
|
1656
|
+
for (const fieldKey of Object.keys(registeredItemFieldUpdates)) {
|
|
1657
|
+
if (!clearFrontMatterKeys.has(fieldKey)) {
|
|
1658
|
+
continue;
|
|
1659
|
+
}
|
|
1660
|
+
throw new PmCliError(`Cannot combine --unset ${fieldKey.replaceAll("_", "-")} with --field ${fieldKey}=...`, EXIT_CODE.USAGE);
|
|
1661
|
+
}
|
|
1662
|
+
for (const [fieldKey, fieldValue] of Object.entries(registeredItemFieldUpdates)) {
|
|
1663
|
+
if (stableValueEquals(metadataRecord[fieldKey], fieldValue)) {
|
|
1645
1664
|
continue;
|
|
1646
1665
|
}
|
|
1647
1666
|
metadataRecord[fieldKey] = fieldValue;
|
|
1648
1667
|
changedFields.push(fieldKey);
|
|
1649
1668
|
}
|
|
1650
1669
|
try {
|
|
1651
|
-
applyRegisteredItemFieldDefaultsAndValidation(metadataRecord,
|
|
1670
|
+
applyRegisteredItemFieldDefaultsAndValidation(metadataRecord, extensionRegistrations, { skipDefaultFields: clearFrontMatterKeys });
|
|
1652
1671
|
}
|
|
1653
1672
|
catch (error) {
|
|
1654
1673
|
throw new PmCliError(error instanceof Error ? error.message : "Invalid extension item field values", EXIT_CODE.USAGE);
|
|
@@ -1659,9 +1678,9 @@ export async function runUpdate(id, options, global) {
|
|
|
1659
1678
|
return {
|
|
1660
1679
|
item: toItemRecord(result.item),
|
|
1661
1680
|
changed_fields: result.changedFields,
|
|
1662
|
-
warnings: [...parentReferenceWarnings, ...result.warnings],
|
|
1681
|
+
warnings: [...workflowTransitionWarnings, ...parentReferenceWarnings, ...result.warnings],
|
|
1663
1682
|
...(options.allowAuditUpdate === true || options.allowAuditDepUpdate === true ? { audit_update: true } : {}),
|
|
1664
1683
|
};
|
|
1665
1684
|
}
|
|
1666
1685
|
//# sourceMappingURL=update.js.map
|
|
1667
|
-
//# debugId=
|
|
1686
|
+
//# debugId=74fefeac-195a-595c-aa23-d38e5b855b84
|