@unbrained/pm-cli 2026.6.13 → 2026.6.17
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 +102 -0
- package/README.md +1 -1
- package/dist/cli/bootstrap-args.d.ts +29 -0
- package/dist/cli/bootstrap-args.js +11 -4
- package/dist/cli/bootstrap-args.js.map +1 -1
- package/dist/cli/commander-usage.d.ts +12 -0
- package/dist/cli/commander-usage.js +18 -7
- package/dist/cli/commander-usage.js.map +1 -1
- package/dist/cli/commands/activity.d.ts +19 -0
- package/dist/cli/commands/activity.js +12 -2
- package/dist/cli/commands/activity.js.map +1 -1
- package/dist/cli/commands/aggregate.d.ts +58 -0
- package/dist/cli/commands/aggregate.js +48 -15
- package/dist/cli/commands/aggregate.js.map +1 -1
- package/dist/cli/commands/annotation-command.d.ts +6 -1
- package/dist/cli/commands/annotation-command.js +72 -2
- package/dist/cli/commands/annotation-command.js.map +1 -1
- package/dist/cli/commands/append.js +4 -3
- package/dist/cli/commands/append.js.map +1 -1
- package/dist/cli/commands/close-many.d.ts +20 -0
- package/dist/cli/commands/close-many.js +14 -23
- package/dist/cli/commands/close-many.js.map +1 -1
- package/dist/cli/commands/close.js +37 -4
- package/dist/cli/commands/close.js.map +1 -1
- package/dist/cli/commands/comments-audit.js +3 -2
- package/dist/cli/commands/comments-audit.js.map +1 -1
- package/dist/cli/commands/comments.d.ts +2 -0
- package/dist/cli/commands/comments.js +49 -23
- package/dist/cli/commands/comments.js.map +1 -1
- package/dist/cli/commands/completion.js +362 -15
- package/dist/cli/commands/completion.js.map +1 -1
- package/dist/cli/commands/config.d.ts +51 -1
- package/dist/cli/commands/config.js +50 -12
- package/dist/cli/commands/config.js.map +1 -1
- package/dist/cli/commands/context.d.ts +79 -1
- package/dist/cli/commands/context.js +151 -25
- package/dist/cli/commands/context.js.map +1 -1
- package/dist/cli/commands/contracts.d.ts +80 -1
- package/dist/cli/commands/contracts.js +54 -4
- package/dist/cli/commands/contracts.js.map +1 -1
- package/dist/cli/commands/create.d.ts +51 -0
- package/dist/cli/commands/create.js +137 -18
- package/dist/cli/commands/create.js.map +1 -1
- package/dist/cli/commands/dedupe-audit.d.ts +33 -0
- package/dist/cli/commands/dedupe-audit.js +18 -14
- package/dist/cli/commands/dedupe-audit.js.map +1 -1
- package/dist/cli/commands/deps.js +7 -4
- package/dist/cli/commands/deps.js.map +1 -1
- package/dist/cli/commands/event-validation-messages.js +3 -3
- package/dist/cli/commands/event-validation-messages.js.map +1 -1
- package/dist/cli/commands/extension/bundled-catalog.d.ts +7 -0
- package/dist/cli/commands/extension/bundled-catalog.js +19 -15
- package/dist/cli/commands/extension/bundled-catalog.js.map +1 -1
- package/dist/cli/commands/extension/install-sources.d.ts +41 -1
- package/dist/cli/commands/extension/install-sources.js +26 -8
- package/dist/cli/commands/extension/install-sources.js.map +1 -1
- package/dist/cli/commands/extension/shared.d.ts +5 -0
- package/dist/cli/commands/extension/shared.js +9 -3
- package/dist/cli/commands/extension/shared.js.map +1 -1
- package/dist/cli/commands/extension.d.ts +133 -1
- package/dist/cli/commands/extension.js +127 -9
- package/dist/cli/commands/extension.js.map +1 -1
- package/dist/cli/commands/files.d.ts +30 -1
- package/dist/cli/commands/files.js +21 -2
- package/dist/cli/commands/files.js.map +1 -1
- package/dist/cli/commands/focus.d.ts +11 -0
- package/dist/cli/commands/focus.js +86 -0
- package/dist/cli/commands/focus.js.map +1 -0
- package/dist/cli/commands/get.d.ts +9 -2
- package/dist/cli/commands/get.js +34 -6
- package/dist/cli/commands/get.js.map +1 -1
- package/dist/cli/commands/guide.d.ts +5 -0
- package/dist/cli/commands/guide.js +6 -3
- package/dist/cli/commands/guide.js.map +1 -1
- package/dist/cli/commands/health.d.ts +109 -0
- package/dist/cli/commands/health.js +87 -35
- package/dist/cli/commands/health.js.map +1 -1
- package/dist/cli/commands/history-compact.js +27 -36
- package/dist/cli/commands/history-compact.js.map +1 -1
- package/dist/cli/commands/history-redact.d.ts +46 -0
- package/dist/cli/commands/history-redact.js +99 -67
- package/dist/cli/commands/history-redact.js.map +1 -1
- package/dist/cli/commands/history-repair.js +34 -37
- package/dist/cli/commands/history-repair.js.map +1 -1
- package/dist/cli/commands/history.js +6 -2
- package/dist/cli/commands/history.js.map +1 -1
- package/dist/cli/commands/index.d.ts +4 -1
- package/dist/cli/commands/index.js +6 -3
- package/dist/cli/commands/index.js.map +1 -1
- package/dist/cli/commands/init-agent-guidance.d.ts +54 -0
- package/dist/cli/commands/init-agent-guidance.js +31 -4
- package/dist/cli/commands/init-agent-guidance.js.map +1 -1
- package/dist/cli/commands/init.d.ts +38 -2
- package/dist/cli/commands/init.js +50 -64
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/learnings.js +4 -3
- package/dist/cli/commands/learnings.js.map +1 -1
- package/dist/cli/commands/lifecycle-transitions.d.ts +23 -0
- package/dist/cli/commands/lifecycle-transitions.js +41 -0
- package/dist/cli/commands/lifecycle-transitions.js.map +1 -0
- package/dist/cli/commands/linked-artifacts.d.ts +5 -0
- package/dist/cli/commands/linked-artifacts.js +18 -4
- package/dist/cli/commands/linked-artifacts.js.map +1 -1
- package/dist/cli/commands/linked-test-parsers.d.ts +5 -0
- package/dist/cli/commands/linked-test-parsers.js +5 -2
- package/dist/cli/commands/linked-test-parsers.js.map +1 -1
- package/dist/cli/commands/list-filter-shared.d.ts +8 -0
- package/dist/cli/commands/list-filter-shared.js +70 -0
- package/dist/cli/commands/list-filter-shared.js.map +1 -0
- package/dist/cli/commands/list.d.ts +116 -0
- package/dist/cli/commands/list.js +194 -6
- package/dist/cli/commands/list.js.map +1 -1
- package/dist/cli/commands/normalize.js +16 -2
- package/dist/cli/commands/normalize.js.map +1 -1
- package/dist/cli/commands/notes.js +4 -3
- package/dist/cli/commands/notes.js.map +1 -1
- package/dist/cli/commands/plan.js +3 -2
- package/dist/cli/commands/plan.js.map +1 -1
- package/dist/cli/commands/recurrence-parsers.d.ts +9 -0
- package/dist/cli/commands/recurrence-parsers.js +19 -2
- package/dist/cli/commands/recurrence-parsers.js.map +1 -1
- package/dist/cli/commands/reindex.d.ts +83 -0
- package/dist/cli/commands/reindex.js +45 -10
- package/dist/cli/commands/reindex.js.map +1 -1
- package/dist/cli/commands/repeatable-metadata-parsers.js +28 -4
- package/dist/cli/commands/repeatable-metadata-parsers.js.map +1 -1
- package/dist/cli/commands/restore.d.ts +40 -1
- package/dist/cli/commands/restore.js +27 -2
- package/dist/cli/commands/restore.js.map +1 -1
- package/dist/cli/commands/scheduling-shortcuts.d.ts +43 -0
- package/dist/cli/commands/scheduling-shortcuts.js +87 -0
- package/dist/cli/commands/scheduling-shortcuts.js.map +1 -0
- package/dist/cli/commands/schema.d.ts +152 -2
- package/dist/cli/commands/schema.js +510 -4
- package/dist/cli/commands/schema.js.map +1 -1
- package/dist/cli/commands/search.d.ts +289 -1
- package/dist/cli/commands/search.js +367 -60
- package/dist/cli/commands/search.js.map +1 -1
- package/dist/cli/commands/stats.d.ts +38 -0
- package/dist/cli/commands/stats.js +38 -10
- package/dist/cli/commands/stats.js.map +1 -1
- package/dist/cli/commands/telemetry.js +5 -3
- package/dist/cli/commands/telemetry.js.map +1 -1
- package/dist/cli/commands/templates.d.ts +18 -0
- package/dist/cli/commands/templates.js +9 -2
- package/dist/cli/commands/templates.js.map +1 -1
- package/dist/cli/commands/test-all.d.ts +5 -0
- package/dist/cli/commands/test-all.js +9 -3
- package/dist/cli/commands/test-all.js.map +1 -1
- package/dist/cli/commands/test.d.ts +70 -1
- package/dist/cli/commands/test.js +84 -3
- package/dist/cli/commands/test.js.map +1 -1
- package/dist/cli/commands/update-many.d.ts +34 -1
- package/dist/cli/commands/update-many.js +60 -31
- package/dist/cli/commands/update-many.js.map +1 -1
- package/dist/cli/commands/update.d.ts +71 -0
- package/dist/cli/commands/update.js +91 -11
- package/dist/cli/commands/update.js.map +1 -1
- package/dist/cli/commands/upgrade.d.ts +28 -1
- package/dist/cli/commands/upgrade.js +17 -4
- package/dist/cli/commands/upgrade.js.map +1 -1
- package/dist/cli/commands/validate.d.ts +114 -0
- package/dist/cli/commands/validate.js +153 -8
- package/dist/cli/commands/validate.js.map +1 -1
- package/dist/cli/error-guidance.d.ts +30 -0
- package/dist/cli/error-guidance.js +41 -6
- package/dist/cli/error-guidance.js.map +1 -1
- package/dist/cli/extension-command-options.js +9 -7
- package/dist/cli/extension-command-options.js.map +1 -1
- package/dist/cli/help-content.d.ts +8 -0
- package/dist/cli/help-content.js +54 -6
- package/dist/cli/help-content.js.map +1 -1
- package/dist/cli/help-json-payload.d.ts +19 -1
- package/dist/cli/help-json-payload.js +16 -7
- package/dist/cli/help-json-payload.js.map +1 -1
- package/dist/cli/main.d.ts +242 -0
- package/dist/cli/main.js +241 -45
- package/dist/cli/main.js.map +1 -1
- package/dist/cli/register-list-query.js +62 -5
- package/dist/cli/register-list-query.js.map +1 -1
- package/dist/cli/register-mutation.d.ts +16 -0
- package/dist/cli/register-mutation.js +376 -100
- package/dist/cli/register-mutation.js.map +1 -1
- package/dist/cli/register-operations.d.ts +8 -0
- package/dist/cli/register-operations.js +134 -11
- package/dist/cli/register-operations.js.map +1 -1
- package/dist/cli/register-setup.js +9 -6
- package/dist/cli/register-setup.js.map +1 -1
- package/dist/cli/registration-helpers.d.ts +4 -0
- package/dist/cli/registration-helpers.js +124 -38
- package/dist/cli/registration-helpers.js.map +1 -1
- package/dist/cli-bundle/chunks/activity-PZYSZA26.js +18 -0
- package/dist/cli-bundle/chunks/{activity-PPO7QWJF.js → activity-SFM4THAU.js} +13 -11
- package/dist/cli-bundle/chunks/{aggregate-IRHJWEKG.js → aggregate-Y5ADDKBM.js} +55 -26
- package/dist/cli-bundle/chunks/aggregate-Y5ADDKBM.js.map +1 -0
- package/dist/cli-bundle/chunks/{aggregate-XEBW22UQ.js → aggregate-YTAUQLRW.js} +54 -25
- package/dist/cli-bundle/chunks/aggregate-YTAUQLRW.js.map +7 -0
- package/dist/cli-bundle/chunks/{append-NL67JNJU.js → append-4M7OVV7M.js} +11 -11
- package/dist/cli-bundle/chunks/append-4M7OVV7M.js.map +1 -0
- package/dist/cli-bundle/chunks/{append-N2AWXKZC.js → append-HSPK4L4V.js} +10 -10
- package/dist/cli-bundle/chunks/{append-N2AWXKZC.js.map → append-HSPK4L4V.js.map} +2 -2
- package/dist/cli-bundle/chunks/{chunk-IIOIBAQW.js → chunk-26BM6YLO.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-CEGUH2E5.js → chunk-2C6FU3D3.js} +5 -5
- package/dist/cli-bundle/chunks/{chunk-CEGUH2E5.js.map → chunk-2C6FU3D3.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-SQDKAEKG.js → chunk-2OPYLXDO.js} +117 -37
- package/dist/cli-bundle/chunks/chunk-2OPYLXDO.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-4ZKKZMLH.js → chunk-2S46FKLB.js} +104 -30
- package/dist/cli-bundle/chunks/chunk-2S46FKLB.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-LSSTKL3Y.js → chunk-2TMKMTEI.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-QU3OPNVV.js → chunk-2VH7DFSJ.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-RHYBR6G7.js → chunk-3ENF4NO4.js} +74 -14
- package/dist/cli-bundle/chunks/chunk-3ENF4NO4.js.map +1 -0
- package/dist/cli-bundle/chunks/chunk-3GR2HTYY.js +404 -0
- package/dist/cli-bundle/chunks/chunk-3GR2HTYY.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-AAUYXSFF.js → chunk-3R3FYCBV.js} +223 -50
- package/dist/cli-bundle/chunks/chunk-3R3FYCBV.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-5HSAHRYA.js → chunk-3UKJX3RP.js} +82 -21
- package/dist/cli-bundle/chunks/chunk-3UKJX3RP.js.map +7 -0
- package/dist/cli-bundle/chunks/chunk-4RTLBTYS.js +83 -0
- package/dist/cli-bundle/chunks/chunk-4RTLBTYS.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-UCVJP4JL.js → chunk-5FDYWOJT.js} +52 -8
- package/dist/cli-bundle/chunks/chunk-5FDYWOJT.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-LGOXXQUW.js → chunk-5XGWFUW2.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-LYNQ3NGI.js → chunk-6BD77FGL.js} +309 -20
- package/dist/cli-bundle/chunks/chunk-6BD77FGL.js.map +1 -0
- package/dist/cli-bundle/chunks/chunk-6EFCFPNE.js +35 -0
- package/dist/cli-bundle/chunks/chunk-6EFCFPNE.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-36BCSMKP.js → chunk-6HF6CIY2.js} +26 -11
- package/dist/cli-bundle/chunks/chunk-6HF6CIY2.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-M3SI2REU.js → chunk-6PBPD4MN.js} +322 -19
- package/dist/cli-bundle/chunks/chunk-6PBPD4MN.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-TSXWFN3L.js → chunk-6VFUEGOA.js} +53 -9
- package/dist/cli-bundle/chunks/chunk-6VFUEGOA.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-2J2AH4V5.js → chunk-AAOXSPAE.js} +56 -72
- package/dist/cli-bundle/chunks/chunk-AAOXSPAE.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-Z647PYLD.js → chunk-AJCQ5GT6.js} +4 -4
- package/dist/cli-bundle/chunks/chunk-ALTGYHN3.js +61 -0
- package/dist/cli-bundle/chunks/chunk-ALTGYHN3.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-KHGTYCJ6.js → chunk-AOJQL33L.js} +83 -22
- package/dist/cli-bundle/chunks/chunk-AOJQL33L.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-5LMF75Q7.js → chunk-AXLDUGXA.js} +7 -4
- package/dist/cli-bundle/chunks/{chunk-5LMF75Q7.js.map → chunk-AXLDUGXA.js.map} +2 -2
- package/dist/cli-bundle/chunks/{chunk-DWG4FHPY.js → chunk-BITCVGHT.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-JE5IZXDS.js → chunk-CGQTFWYI.js} +4 -4
- package/dist/cli-bundle/chunks/{chunk-LFW5NQUP.js → chunk-CHM2VFVL.js} +407 -290
- package/dist/cli-bundle/chunks/chunk-CHM2VFVL.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-VYZNX4C5.js → chunk-COVLE33A.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-SGMGMCIF.js → chunk-DDNBWH4W.js} +157 -25
- package/dist/cli-bundle/chunks/chunk-DDNBWH4W.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-6ZFTM65G.js → chunk-F5MSD5HE.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-6TBR5AZ2.js → chunk-FAXB6F6R.js} +76 -8
- package/dist/cli-bundle/chunks/chunk-FAXB6F6R.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-L6YQONLM.js → chunk-FPDK5BZQ.js} +18 -19
- package/dist/cli-bundle/chunks/chunk-FPDK5BZQ.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-AGG32LKL.js → chunk-FPY2TOFI.js} +480 -24
- package/dist/cli-bundle/chunks/chunk-FPY2TOFI.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-JWXTOYBI.js → chunk-G2MOUCTU.js} +121 -44
- package/dist/cli-bundle/chunks/chunk-G2MOUCTU.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-3VULHQNS.js → chunk-G57RHEGP.js} +36 -18
- package/dist/cli-bundle/chunks/chunk-G57RHEGP.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-QQG4HEX7.js → chunk-IROHIK2T.js} +37 -63
- package/dist/cli-bundle/chunks/chunk-IROHIK2T.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-GOO4UXBI.js → chunk-JZHL4E3Q.js} +4 -4
- package/dist/cli-bundle/chunks/{chunk-XXLMJDUB.js → chunk-KA22USXD.js} +21 -22
- package/dist/cli-bundle/chunks/chunk-KA22USXD.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-WLH7X4RN.js → chunk-KBC4O7SY.js} +56 -72
- package/dist/cli-bundle/chunks/chunk-KBC4O7SY.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-NN6RKGFW.js → chunk-KCAGIH6K.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-BVL5KGVA.js → chunk-KO3VM5GS.js} +27 -12
- package/dist/cli-bundle/chunks/chunk-KO3VM5GS.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-IXVSSHGV.js → chunk-LNH5Q32E.js} +13 -8
- package/dist/cli-bundle/chunks/chunk-LNH5Q32E.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-3FMQMHAG.js → chunk-LORM3M2I.js} +4 -4
- package/dist/cli-bundle/chunks/{chunk-3FMQMHAG.js.map → chunk-LORM3M2I.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-PNYAAB4S.js → chunk-LWGMDLQ6.js} +8 -3
- package/dist/cli-bundle/chunks/chunk-LWGMDLQ6.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-GFBEXDCQ.js → chunk-M4AVU7VC.js} +19 -8
- package/dist/cli-bundle/chunks/{chunk-GFBEXDCQ.js.map → chunk-M4AVU7VC.js.map} +2 -2
- package/dist/cli-bundle/chunks/{chunk-3CQPVBK3.js → chunk-MIBX6ZRN.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-AUDDXKNX.js → chunk-MMF2E3FM.js} +77 -9
- package/dist/cli-bundle/chunks/chunk-MMF2E3FM.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-RFR2YQGO.js → chunk-MORZOR7W.js} +21 -8
- package/dist/cli-bundle/chunks/chunk-MORZOR7W.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-4TPFXE2R.js → chunk-MUTUZ2HD.js} +118 -74
- package/dist/cli-bundle/chunks/chunk-MUTUZ2HD.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-HZOX5BYD.js → chunk-OGXEBTX3.js} +35 -17
- package/dist/cli-bundle/chunks/chunk-OGXEBTX3.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-LOAR5TKX.js → chunk-OOIH6J5T.js} +4 -4
- package/dist/cli-bundle/chunks/{chunk-LOAR5TKX.js.map → chunk-OOIH6J5T.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-VNC2HBL4.js → chunk-OSBJPPX3.js} +20 -9
- package/dist/cli-bundle/chunks/chunk-OSBJPPX3.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-2ANTZBYF.js → chunk-PJS3WDO2.js} +122 -45
- package/dist/cli-bundle/chunks/chunk-PJS3WDO2.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-7SM7VA5I.js → chunk-QGPE2H6Z.js} +19 -8
- package/dist/cli-bundle/chunks/chunk-QGPE2H6Z.js.map +7 -0
- package/dist/cli-bundle/chunks/chunk-QVTFFLR2.js +58 -0
- package/dist/cli-bundle/chunks/chunk-QVTFFLR2.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-JCTZV7TO.js → chunk-QW2F6ARZ.js} +8 -5
- package/dist/cli-bundle/chunks/{chunk-JCTZV7TO.js.map → chunk-QW2F6ARZ.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-TOX7YQ7X.js → chunk-QXC3LWB7.js} +223 -50
- package/dist/cli-bundle/chunks/chunk-QXC3LWB7.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-W6KNFAMZ.js → chunk-QXMXRPX5.js} +9 -8
- package/dist/cli-bundle/chunks/chunk-QXMXRPX5.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-O3YCJOVX.js → chunk-R4AKUPKI.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-O3YCJOVX.js.map → chunk-R4AKUPKI.js.map} +1 -1
- package/dist/cli-bundle/chunks/chunk-RASR23HV.js +394 -0
- package/dist/cli-bundle/chunks/chunk-RASR23HV.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-JW7D6437.js → chunk-SCDCNGCV.js} +20 -9
- package/dist/cli-bundle/chunks/chunk-SCDCNGCV.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-GRZGHGRG.js → chunk-SCS5PVAA.js} +10 -9
- package/dist/cli-bundle/chunks/{chunk-GRZGHGRG.js.map → chunk-SCS5PVAA.js.map} +2 -2
- package/dist/cli-bundle/chunks/{chunk-S2CDTRJ6.js → chunk-SJCMTOEU.js} +381 -271
- package/dist/cli-bundle/chunks/chunk-SJCMTOEU.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-XWDZVCBJ.js → chunk-SO2ES46D.js} +11 -10
- package/dist/cli-bundle/chunks/{chunk-XWDZVCBJ.js.map → chunk-SO2ES46D.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-MACCNKSZ.js → chunk-TBV33CB4.js} +36 -62
- package/dist/cli-bundle/chunks/chunk-TBV33CB4.js.map +7 -0
- package/dist/cli-bundle/chunks/chunk-TEFEXQWI.js +86 -0
- package/dist/cli-bundle/chunks/chunk-TEFEXQWI.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-HLEGAQXT.js → chunk-TWBDDVIF.js} +20 -7
- package/dist/cli-bundle/chunks/chunk-TWBDDVIF.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-4JHJ7YG2.js → chunk-UGUJ2UOR.js} +118 -74
- package/dist/cli-bundle/chunks/chunk-UGUJ2UOR.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-XOYHMHFF.js → chunk-UN6P3IJ4.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-32XSW44C.js → chunk-V2GYOMEX.js} +10 -9
- package/dist/cli-bundle/chunks/chunk-V2GYOMEX.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-HWHONML5.js → chunk-VF3KQGNY.js} +4 -4
- package/dist/cli-bundle/chunks/{chunk-SOHXUA2Q.js → chunk-VHG6LUKR.js} +116 -36
- package/dist/cli-bundle/chunks/chunk-VHG6LUKR.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-7CRFV6JR.js → chunk-VXHMQDXA.js} +483 -27
- package/dist/cli-bundle/chunks/chunk-VXHMQDXA.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-IZHCCG4S.js → chunk-VXRFAE7W.js} +14 -9
- package/dist/cli-bundle/chunks/chunk-VXRFAE7W.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-R4VWYWRN.js → chunk-W3HFLORZ.js} +7 -2
- package/dist/cli-bundle/chunks/chunk-W3HFLORZ.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-4FHLNNW7.js → chunk-WQRL4COW.js} +74 -14
- package/dist/cli-bundle/chunks/chunk-WQRL4COW.js.map +7 -0
- package/dist/cli-bundle/chunks/chunk-X3W5ESZQ.js +32 -0
- package/dist/cli-bundle/chunks/chunk-X3W5ESZQ.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-MGAQ6KZG.js → chunk-XESAPVZ4.js} +166 -27
- package/dist/cli-bundle/chunks/chunk-XESAPVZ4.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-PEH7SZD2.js → chunk-YLAW3FZN.js} +105 -31
- package/dist/cli-bundle/chunks/chunk-YLAW3FZN.js.map +7 -0
- package/dist/cli-bundle/chunks/{claim-HE6KEGJW.js → claim-WGAWJCPY.js} +10 -10
- package/dist/cli-bundle/chunks/{claim-QJOQBH7J.js → claim-ZI6P4LMU.js} +10 -10
- package/dist/cli-bundle/chunks/close-I7PRQ5G7.js +13 -0
- package/dist/cli-bundle/chunks/{close-SPUFW5QR.js → close-JMVVSIQE.js} +8 -8
- package/dist/cli-bundle/chunks/{close-many-GKAJX54X.js → close-many-IKPJXVOZ.js} +32 -20
- package/dist/cli-bundle/chunks/close-many-IKPJXVOZ.js.map +1 -0
- package/dist/cli-bundle/chunks/{close-many-GL6NRUU5.js → close-many-TXABDCSJ.js} +31 -19
- package/dist/cli-bundle/chunks/close-many-TXABDCSJ.js.map +7 -0
- package/dist/cli-bundle/chunks/{comments-5FPT6L7N.js → comments-RLWR2S7W.js} +55 -31
- package/dist/cli-bundle/chunks/comments-RLWR2S7W.js.map +1 -0
- package/dist/cli-bundle/chunks/{comments-TOLOYWNI.js → comments-YAMXKHUX.js} +54 -30
- package/dist/cli-bundle/chunks/comments-YAMXKHUX.js.map +7 -0
- package/dist/cli-bundle/chunks/{config-7N6D7YJE.js → config-7ICYC2WU.js} +83 -19
- package/dist/cli-bundle/chunks/config-7ICYC2WU.js.map +7 -0
- package/dist/cli-bundle/chunks/{config-4MN45TIH.js → config-NGWN3EXC.js} +83 -19
- package/dist/cli-bundle/chunks/config-NGWN3EXC.js.map +1 -0
- package/dist/cli-bundle/chunks/{context-AQSLE7DZ.js → context-K6QAHN5H.js} +128 -39
- package/dist/cli-bundle/chunks/context-K6QAHN5H.js.map +1 -0
- package/dist/cli-bundle/chunks/{context-U3PUJMVN.js → context-VGXOOAH2.js} +127 -38
- package/dist/cli-bundle/chunks/context-VGXOOAH2.js.map +7 -0
- package/dist/cli-bundle/chunks/{contracts-ITSJXO3O.js → contracts-KJGY2AQA.js} +99 -15
- package/dist/cli-bundle/chunks/contracts-KJGY2AQA.js.map +1 -0
- package/dist/cli-bundle/chunks/{contracts-H7KCQXLY.js → contracts-KMA6OJY7.js} +99 -15
- package/dist/cli-bundle/chunks/contracts-KMA6OJY7.js.map +7 -0
- package/dist/cli-bundle/chunks/{copy-EB3MUCSW.js → copy-Q2PPU4AY.js} +7 -7
- package/dist/cli-bundle/chunks/{copy-C4W522JM.js → copy-SC6UF3PI.js} +7 -7
- package/dist/cli-bundle/chunks/{create-4EQNELMY.js → create-76FE7JVF.js} +16 -13
- package/dist/cli-bundle/chunks/create-RTRFW6RE.js +30 -0
- package/dist/cli-bundle/chunks/{delete-X5QLXIQX.js → delete-T6DJSUJI.js} +7 -7
- package/dist/cli-bundle/chunks/{delete-ZLGUYIXU.js → delete-XFUX533E.js} +7 -7
- package/dist/cli-bundle/chunks/{deps-GPB3LGWN.js → deps-5GWMMS6D.js} +9 -10
- package/dist/cli-bundle/chunks/{deps-GPB3LGWN.js.map → deps-5GWMMS6D.js.map} +2 -2
- package/dist/cli-bundle/chunks/{deps-HV2C2L46.js → deps-MCCU633S.js} +10 -11
- package/dist/cli-bundle/chunks/deps-MCCU633S.js.map +1 -0
- package/dist/cli-bundle/chunks/{docs-SRTLCQOL.js → docs-HE3HCQ4S.js} +9 -9
- package/dist/cli-bundle/chunks/{docs-RJQPLROO.js → docs-SXMOABHR.js} +9 -9
- package/dist/cli-bundle/chunks/{extension-WKPVPNCC.js → extension-E23K4QRR.js} +7 -5
- package/dist/cli-bundle/chunks/{extension-MM3TVWOO.js → extension-PMD3XMLN.js} +7 -5
- package/dist/cli-bundle/chunks/{files-OIFN3DQX.js → files-2RSWGPEU.js} +25 -11
- package/dist/cli-bundle/chunks/files-2RSWGPEU.js.map +1 -0
- package/dist/cli-bundle/chunks/{files-LIFDKNCN.js → files-ZWFJFWBK.js} +24 -10
- package/dist/cli-bundle/chunks/files-ZWFJFWBK.js.map +7 -0
- package/dist/cli-bundle/chunks/focus-KTTB3P3F.js +106 -0
- package/dist/cli-bundle/chunks/focus-KTTB3P3F.js.map +1 -0
- package/dist/cli-bundle/chunks/focus-ZMDP4FEL.js +109 -0
- package/dist/cli-bundle/chunks/focus-ZMDP4FEL.js.map +7 -0
- package/dist/cli-bundle/chunks/{gc-NRFHLVFT.js → gc-BXIAKLAH.js} +3 -3
- package/dist/cli-bundle/chunks/{gc-DL6AVOX5.js → gc-C7K6JNUO.js} +3 -3
- package/dist/cli-bundle/chunks/{get-SAB7CRBG.js → get-AZQLC4NO.js} +43 -16
- package/dist/cli-bundle/chunks/get-AZQLC4NO.js.map +1 -0
- package/dist/cli-bundle/chunks/{get-K7UULTQF.js → get-I65HTAWO.js} +42 -15
- package/dist/cli-bundle/chunks/get-I65HTAWO.js.map +7 -0
- package/dist/cli-bundle/chunks/{health-NUVZYIEV.js → health-3MFFPQVZ.js} +75 -49
- package/dist/cli-bundle/chunks/health-3MFFPQVZ.js.map +1 -0
- package/dist/cli-bundle/chunks/{health-VJWH3ZFK.js → health-MYZEOCLI.js} +74 -48
- package/dist/cli-bundle/chunks/health-MYZEOCLI.js.map +7 -0
- package/dist/cli-bundle/chunks/{history-GYFD2DJW.js → history-73Z6OBFZ.js} +10 -10
- package/dist/cli-bundle/chunks/history-BIPHVUMF.js +20 -0
- package/dist/cli-bundle/chunks/{history-compact-WQZQ6KXM.js → history-compact-24VQ63A3.js} +37 -46
- package/dist/cli-bundle/chunks/history-compact-24VQ63A3.js.map +7 -0
- package/dist/cli-bundle/chunks/{history-compact-SLL6ESXH.js → history-compact-UIAR2OI4.js} +38 -47
- package/dist/cli-bundle/chunks/history-compact-UIAR2OI4.js.map +1 -0
- package/dist/cli-bundle/chunks/{history-redact-SDTDR6WM.js → history-redact-7YCXEWJD.js} +13 -11
- package/dist/cli-bundle/chunks/history-redact-WZZ6GZ2Z.js +21 -0
- package/dist/cli-bundle/chunks/{history-repair-BJCGM6Q3.js → history-repair-4NOFFG2W.js} +44 -49
- package/dist/cli-bundle/chunks/history-repair-4NOFFG2W.js.map +1 -0
- package/dist/cli-bundle/chunks/{history-repair-UCYS55ZX.js → history-repair-GQN2X4TR.js} +43 -48
- package/dist/cli-bundle/chunks/history-repair-GQN2X4TR.js.map +7 -0
- package/dist/cli-bundle/chunks/init-K34V4PZR.js +20 -0
- package/dist/cli-bundle/chunks/{init-MXV57LKL.js → init-TDEDNVMM.js} +12 -9
- package/dist/cli-bundle/chunks/{learnings-QKJOKEAO.js → learnings-TV2CTGJ3.js} +13 -12
- package/dist/cli-bundle/chunks/learnings-TV2CTGJ3.js.map +7 -0
- package/dist/cli-bundle/chunks/{learnings-L6KTZGOT.js → learnings-U67FTXPB.js} +14 -13
- package/dist/cli-bundle/chunks/learnings-U67FTXPB.js.map +1 -0
- package/dist/cli-bundle/chunks/list-MSHYOCFU.js +33 -0
- package/dist/cli-bundle/chunks/list-VV57WGUD.js +29 -0
- package/dist/cli-bundle/chunks/{notes-HMCB7TK6.js → notes-EUANWWKD.js} +13 -12
- package/dist/cli-bundle/chunks/notes-EUANWWKD.js.map +7 -0
- package/dist/cli-bundle/chunks/{notes-3NLK7WTZ.js → notes-GYVNDAL4.js} +14 -13
- package/dist/cli-bundle/chunks/notes-GYVNDAL4.js.map +1 -0
- package/dist/cli-bundle/chunks/{plan-NANUWH4T.js → plan-4LF4AV63.js} +15 -14
- package/dist/cli-bundle/chunks/plan-4LF4AV63.js.map +7 -0
- package/dist/cli-bundle/chunks/{plan-DWBYI5C6.js → plan-W27O6DBS.js} +16 -15
- package/dist/cli-bundle/chunks/plan-W27O6DBS.js.map +1 -0
- package/dist/cli-bundle/chunks/{register-list-query-SMMMLSWW.js → register-list-query-BXLEHJ7L.js} +32 -23
- package/dist/cli-bundle/chunks/register-list-query-BXLEHJ7L.js.map +1 -0
- package/dist/cli-bundle/chunks/{register-list-query-PWQ5F2VI.js → register-list-query-C2MS3BVQ.js} +31 -22
- package/dist/cli-bundle/chunks/register-list-query-C2MS3BVQ.js.map +7 -0
- package/dist/cli-bundle/chunks/{register-mutation-QKFPTIZG.js → register-mutation-6UCOEQ6L.js} +361 -106
- package/dist/cli-bundle/chunks/register-mutation-6UCOEQ6L.js.map +7 -0
- package/dist/cli-bundle/chunks/{register-mutation-ZYJQ4DVP.js → register-mutation-HE73PREP.js} +355 -107
- package/dist/cli-bundle/chunks/register-mutation-HE73PREP.js.map +1 -0
- package/dist/cli-bundle/chunks/{register-operations-2FMZ6WEF.js → register-operations-L6C32FDA.js} +111 -39
- package/dist/cli-bundle/chunks/register-operations-L6C32FDA.js.map +7 -0
- package/dist/cli-bundle/chunks/{register-operations-BAFQURZG.js → register-operations-QQEHEX4P.js} +112 -40
- package/dist/cli-bundle/chunks/register-operations-QQEHEX4P.js.map +1 -0
- package/dist/cli-bundle/chunks/{register-setup-QN2XV7UL.js → register-setup-A7N4PNT3.js} +18 -21
- package/dist/cli-bundle/chunks/register-setup-A7N4PNT3.js.map +1 -0
- package/dist/cli-bundle/chunks/{register-setup-DQEIKBIP.js → register-setup-WHG3NBP6.js} +17 -20
- package/dist/cli-bundle/chunks/register-setup-WHG3NBP6.js.map +7 -0
- package/dist/cli-bundle/chunks/{restore-FJQWXMPY.js → restore-TSWSULYY.js} +13 -11
- package/dist/cli-bundle/chunks/restore-XQXICL3V.js +19 -0
- package/dist/cli-bundle/chunks/scheduling-shortcuts-NC46K6BD.js +91 -0
- package/dist/cli-bundle/chunks/scheduling-shortcuts-NC46K6BD.js.map +7 -0
- package/dist/cli-bundle/chunks/scheduling-shortcuts-UGDPQALY.js +88 -0
- package/dist/cli-bundle/chunks/scheduling-shortcuts-UGDPQALY.js.map +1 -0
- package/dist/cli-bundle/chunks/{schema-ZZ7ZDM2X.js → schema-7U7JUYGK.js} +797 -10
- package/dist/cli-bundle/chunks/schema-7U7JUYGK.js.map +1 -0
- package/dist/cli-bundle/chunks/{schema-RNVJ55V2.js → schema-TSBYSEMW.js} +810 -9
- package/dist/cli-bundle/chunks/schema-TSBYSEMW.js.map +7 -0
- package/dist/cli-bundle/chunks/{search-BJ457C2A.js → search-OXLSQKHP.js} +328 -71
- package/dist/cli-bundle/chunks/search-OXLSQKHP.js.map +7 -0
- package/dist/cli-bundle/chunks/{search-FQDZXX7P.js → search-T3TOFLOQ.js} +328 -71
- package/dist/cli-bundle/chunks/search-T3TOFLOQ.js.map +1 -0
- package/dist/cli-bundle/chunks/{stats-DUQWCVOS.js → stats-5CLG22YZ.js} +41 -16
- package/dist/cli-bundle/chunks/stats-5CLG22YZ.js.map +7 -0
- package/dist/cli-bundle/chunks/{stats-CUG3ZHOI.js → stats-XEMUXS42.js} +42 -17
- package/dist/cli-bundle/chunks/stats-XEMUXS42.js.map +1 -0
- package/dist/cli-bundle/chunks/{telemetry-RK2VX75A.js → telemetry-23OPBBZT.js} +7 -7
- package/dist/cli-bundle/chunks/telemetry-23OPBBZT.js.map +1 -0
- package/dist/cli-bundle/chunks/{telemetry-33MRGX4Z.js → telemetry-I3D7XZ55.js} +6 -6
- package/dist/cli-bundle/chunks/telemetry-I3D7XZ55.js.map +7 -0
- package/dist/cli-bundle/chunks/test-AROS3LIV.js +35 -0
- package/dist/cli-bundle/chunks/{test-Y3CTFMEC.js → test-CECIMKOA.js} +17 -14
- package/dist/cli-bundle/chunks/{test-all-ARSMX33Q.js → test-all-4DEQPIXH.js} +25 -17
- package/dist/cli-bundle/chunks/test-all-4DEQPIXH.js.map +1 -0
- package/dist/cli-bundle/chunks/{test-all-ANYQ33O2.js → test-all-6RO6X3SM.js} +24 -16
- package/dist/cli-bundle/chunks/test-all-6RO6X3SM.js.map +7 -0
- package/dist/cli-bundle/chunks/{test-runs-5URSD34O.js → test-runs-AAXVFWKH.js} +62 -65
- package/dist/cli-bundle/chunks/test-runs-AAXVFWKH.js.map +1 -0
- package/dist/cli-bundle/chunks/{test-runs-XNACGSNQ.js → test-runs-LYBQSYRC.js} +61 -64
- package/dist/cli-bundle/chunks/test-runs-LYBQSYRC.js.map +7 -0
- package/dist/cli-bundle/chunks/update-MIWEJC76.js +24 -0
- package/dist/cli-bundle/chunks/update-P7I5YSRB.js +28 -0
- package/dist/cli-bundle/chunks/{update-many-724JCVDE.js → update-many-5B4HLVBK.js} +79 -33
- package/dist/cli-bundle/chunks/update-many-5B4HLVBK.js.map +7 -0
- package/dist/cli-bundle/chunks/{update-many-6B7PJ33I.js → update-many-G2QOVZSB.js} +80 -34
- package/dist/cli-bundle/chunks/update-many-G2QOVZSB.js.map +1 -0
- package/dist/cli-bundle/chunks/{upgrade-QHRGDBSA.js → upgrade-GFIDL62L.js} +23 -9
- package/dist/cli-bundle/chunks/upgrade-GFIDL62L.js.map +1 -0
- package/dist/cli-bundle/chunks/{upgrade-ALBEZAI7.js → upgrade-QUQYL7D3.js} +22 -8
- package/dist/cli-bundle/chunks/upgrade-QUQYL7D3.js.map +7 -0
- package/dist/cli-bundle/chunks/{validate-UY6DRCG5.js → validate-ADDZBMM3.js} +236 -30
- package/dist/cli-bundle/chunks/validate-ADDZBMM3.js.map +7 -0
- package/dist/cli-bundle/chunks/{validate-IQRYFXIV.js → validate-MAS3H6ZP.js} +222 -30
- package/dist/cli-bundle/chunks/validate-MAS3H6ZP.js.map +1 -0
- package/dist/cli-bundle/main.js +312 -139
- package/dist/cli-bundle/main.js.map +3 -3
- package/dist/cli.d.ts +10 -0
- package/dist/cli.js +21 -8
- package/dist/cli.js.map +1 -1
- package/dist/core/config/nested-settings.js +40 -2
- package/dist/core/config/nested-settings.js.map +1 -1
- package/dist/core/diagnostics/remediation.js +7 -2
- package/dist/core/diagnostics/remediation.js.map +1 -1
- package/dist/core/extensions/extension-policy.js +14 -15
- package/dist/core/extensions/extension-policy.js.map +1 -1
- package/dist/core/extensions/item-fields.js +4 -5
- package/dist/core/extensions/item-fields.js.map +1 -1
- package/dist/core/extensions/loader.d.ts +75 -1
- package/dist/core/extensions/loader.js +56 -32
- package/dist/core/extensions/loader.js.map +1 -1
- package/dist/core/governance/content-fields.d.ts +84 -0
- package/dist/core/governance/content-fields.js +182 -0
- package/dist/core/governance/content-fields.js.map +1 -0
- package/dist/core/governance/issue-codes.d.ts +51 -0
- package/dist/core/governance/issue-codes.js +95 -0
- package/dist/core/governance/issue-codes.js.map +1 -0
- package/dist/core/governance/metadata-coverage.d.ts +168 -0
- package/dist/core/governance/metadata-coverage.js +362 -0
- package/dist/core/governance/metadata-coverage.js.map +1 -0
- package/dist/core/history/history-rewrite.d.ts +22 -0
- package/dist/core/history/history-rewrite.js +38 -2
- package/dist/core/history/history-rewrite.js.map +1 -1
- package/dist/core/history/history.d.ts +7 -0
- package/dist/core/history/history.js +6 -2
- package/dist/core/history/history.js.map +1 -1
- package/dist/core/io/body-file.d.ts +14 -0
- package/dist/core/io/body-file.js +47 -0
- package/dist/core/io/body-file.js.map +1 -0
- package/dist/core/item/item-format.d.ts +46 -1
- package/dist/core/item/item-format.js +51 -60
- package/dist/core/item/item-format.js.map +1 -1
- package/dist/core/item/parse.d.ts +41 -0
- package/dist/core/item/parse.js +69 -16
- package/dist/core/item/parse.js.map +1 -1
- package/dist/core/item/type-registry.d.ts +1 -0
- package/dist/core/item/type-registry.js +8 -10
- package/dist/core/item/type-registry.js.map +1 -1
- package/dist/core/lock/lock.d.ts +26 -0
- package/dist/core/lock/lock.js +10 -2
- package/dist/core/lock/lock.js.map +1 -1
- package/dist/core/output/output.d.ts +7 -0
- package/dist/core/output/output.js +6 -2
- package/dist/core/output/output.js.map +1 -1
- package/dist/core/schema/fields-file.d.ts +94 -0
- package/dist/core/schema/fields-file.js +317 -0
- package/dist/core/schema/fields-file.js.map +1 -0
- package/dist/core/schema/item-types-file.d.ts +25 -2
- package/dist/core/schema/item-types-file.js +78 -6
- package/dist/core/schema/item-types-file.js.map +1 -1
- package/dist/core/schema/runtime-schema.d.ts +7 -0
- package/dist/core/schema/runtime-schema.js +23 -16
- package/dist/core/schema/runtime-schema.js.map +1 -1
- package/dist/core/schema/type-inference.d.ts +34 -0
- package/dist/core/schema/type-inference.js +97 -0
- package/dist/core/schema/type-inference.js.map +1 -0
- package/dist/core/schema/type-presets.d.ts +30 -0
- package/dist/core/schema/type-presets.js +96 -0
- package/dist/core/schema/type-presets.js.map +1 -0
- package/dist/core/search/cache.d.ts +19 -1
- package/dist/core/search/cache.js +11 -3
- package/dist/core/search/cache.js.map +1 -1
- package/dist/core/search/corpus.d.ts +36 -2
- package/dist/core/search/corpus.js +120 -24
- package/dist/core/search/corpus.js.map +1 -1
- package/dist/core/search/providers.d.ts +19 -0
- package/dist/core/search/providers.js +19 -2
- package/dist/core/search/providers.js.map +1 -1
- package/dist/core/sentry/instrument.d.ts +1 -0
- package/dist/core/sentry/instrument.js +6 -2
- package/dist/core/sentry/instrument.js.map +1 -1
- package/dist/core/session/session-state.d.ts +16 -0
- package/dist/core/session/session-state.js +48 -0
- package/dist/core/session/session-state.js.map +1 -0
- package/dist/core/shared/constants.d.ts +8 -0
- package/dist/core/shared/constants.js +11 -2
- package/dist/core/shared/constants.js.map +1 -1
- package/dist/core/shared/text-normalization.js +4 -3
- package/dist/core/shared/text-normalization.js.map +1 -1
- package/dist/core/shared/time.d.ts +13 -0
- package/dist/core/shared/time.js +19 -7
- package/dist/core/shared/time.js.map +1 -1
- package/dist/core/store/front-matter-cache.d.ts +13 -0
- package/dist/core/store/front-matter-cache.js +21 -11
- package/dist/core/store/front-matter-cache.js.map +1 -1
- package/dist/core/store/item-store.d.ts +11 -0
- package/dist/core/store/item-store.js +12 -3
- package/dist/core/store/item-store.js.map +1 -1
- package/dist/core/store/settings-validator.d.ts +2 -0
- package/dist/core/store/settings-validator.js +25 -2
- package/dist/core/store/settings-validator.js.map +1 -1
- package/dist/core/store/settings.d.ts +60 -1
- package/dist/core/store/settings.js +100 -46
- package/dist/core/store/settings.js.map +1 -1
- package/dist/core/telemetry/observability.js +10 -8
- package/dist/core/telemetry/observability.js.map +1 -1
- package/dist/core/telemetry/runtime.d.ts +272 -1
- package/dist/core/telemetry/runtime.js +358 -37
- package/dist/core/telemetry/runtime.js.map +1 -1
- package/dist/core/test/background-runs.d.ts +35 -0
- package/dist/core/test/background-runs.js +72 -61
- package/dist/core/test/background-runs.js.map +1 -1
- package/dist/core/test/run-selectors.js +5 -4
- package/dist/core/test/run-selectors.js.map +1 -1
- package/dist/core/validate/estimate-defaults.d.ts +39 -0
- package/dist/core/validate/estimate-defaults.js +117 -0
- package/dist/core/validate/estimate-defaults.js.map +1 -0
- package/dist/core/validate/fix-planning.d.ts +21 -3
- package/dist/core/validate/fix-planning.js +31 -4
- package/dist/core/validate/fix-planning.js.map +1 -1
- package/dist/core/validate/missing-link-owners.d.ts +64 -0
- package/dist/core/validate/missing-link-owners.js +98 -0
- package/dist/core/validate/missing-link-owners.js.map +1 -0
- package/dist/mcp/server.d.ts +61 -0
- package/dist/mcp/server.js +98 -8
- package/dist/mcp/server.js.map +1 -1
- package/dist/mcp/tool-definitions.js +64 -10
- package/dist/mcp/tool-definitions.js.map +1 -1
- package/dist/sdk/cli-contracts/commander-types.js +13 -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 +7 -2
- package/dist/sdk/cli-contracts/enum-contracts.js.map +1 -1
- package/dist/sdk/cli-contracts/tool-option-contracts.js +110 -2
- package/dist/sdk/cli-contracts/tool-option-contracts.js.map +1 -1
- package/dist/sdk/cli-contracts/tool-parameter-tables.js +127 -11
- package/dist/sdk/cli-contracts/tool-parameter-tables.js.map +1 -1
- package/dist/sdk/cli-contracts.d.ts +31 -0
- package/dist/sdk/cli-contracts.js +238 -12
- package/dist/sdk/cli-contracts.js.map +1 -1
- package/dist/types.d.ts +17 -1
- package/dist/types.js +3 -3
- package/dist/types.js.map +1 -1
- package/docs/AGENT_GUIDE.md +15 -3
- package/docs/CLAUDE_CODE_PLUGIN.md +2 -2
- package/docs/COMMANDS.md +171 -10
- package/docs/CONFIGURATION.md +135 -0
- package/docs/TESTING.md +6 -4
- package/package.json +6 -4
- package/packages/pm-calendar/extensions/calendar/runtime.js +6 -0
- package/packages/pm-calendar/extensions/calendar/runtime.ts +12 -0
- package/packages/pm-todos/extensions/todos/runtime.ts +5 -0
- package/plugins/pm-claude/.claude-plugin/plugin.json +1 -1
- package/plugins/pm-claude/README.md +3 -3
- package/plugins/pm-claude/commands/pm-init.md +1 -1
- package/plugins/pm-codex/README.md +1 -1
- package/scripts/bundle-cli.mjs +46 -37
- package/scripts/finalize-build.mjs +20 -9
- package/scripts/prepare-build-cache.mjs +27 -16
- package/dist/cli-bundle/chunks/activity-XIOTGZMU.js +0 -16
- package/dist/cli-bundle/chunks/aggregate-IRHJWEKG.js.map +0 -1
- package/dist/cli-bundle/chunks/aggregate-XEBW22UQ.js.map +0 -7
- package/dist/cli-bundle/chunks/append-NL67JNJU.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-2ANTZBYF.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-2J2AH4V5.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-32XSW44C.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-36BCSMKP.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-3VULHQNS.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-4FHLNNW7.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-4JHJ7YG2.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-4TPFXE2R.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-4ZKKZMLH.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-5HSAHRYA.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-6TBR5AZ2.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-7CRFV6JR.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-7SM7VA5I.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-AAUYXSFF.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-AGG32LKL.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-AUDDXKNX.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-BVL5KGVA.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-C24PWDFG.js +0 -138
- package/dist/cli-bundle/chunks/chunk-C24PWDFG.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-HLEGAQXT.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-HZOX5BYD.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-IXVSSHGV.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-IZHCCG4S.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-JW7D6437.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-JWXTOYBI.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-KHGTYCJ6.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-L6YQONLM.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-LFW5NQUP.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-LYNQ3NGI.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-M3SI2REU.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-MACCNKSZ.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-MGAQ6KZG.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-PEH7SZD2.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-PNYAAB4S.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-QQG4HEX7.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-R4VWYWRN.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-RFR2YQGO.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-RHYBR6G7.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-S2CDTRJ6.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-SGMGMCIF.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-SOHXUA2Q.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-SQDKAEKG.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-TOX7YQ7X.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-TSXWFN3L.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-UCVJP4JL.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-V4KP3TCN.js +0 -128
- package/dist/cli-bundle/chunks/chunk-V4KP3TCN.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-VNC2HBL4.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-W6KNFAMZ.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-WLH7X4RN.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-XXLMJDUB.js.map +0 -7
- package/dist/cli-bundle/chunks/close-WOG5WTMZ.js +0 -13
- package/dist/cli-bundle/chunks/close-many-GKAJX54X.js.map +0 -1
- package/dist/cli-bundle/chunks/close-many-GL6NRUU5.js.map +0 -7
- package/dist/cli-bundle/chunks/comments-5FPT6L7N.js.map +0 -1
- package/dist/cli-bundle/chunks/comments-TOLOYWNI.js.map +0 -7
- package/dist/cli-bundle/chunks/config-4MN45TIH.js.map +0 -1
- package/dist/cli-bundle/chunks/config-7N6D7YJE.js.map +0 -7
- package/dist/cli-bundle/chunks/context-AQSLE7DZ.js.map +0 -1
- package/dist/cli-bundle/chunks/context-U3PUJMVN.js.map +0 -7
- package/dist/cli-bundle/chunks/contracts-H7KCQXLY.js.map +0 -7
- package/dist/cli-bundle/chunks/contracts-ITSJXO3O.js.map +0 -1
- package/dist/cli-bundle/chunks/create-NW3K7LVG.js +0 -27
- package/dist/cli-bundle/chunks/deps-HV2C2L46.js.map +0 -1
- package/dist/cli-bundle/chunks/files-LIFDKNCN.js.map +0 -7
- package/dist/cli-bundle/chunks/files-OIFN3DQX.js.map +0 -1
- package/dist/cli-bundle/chunks/get-K7UULTQF.js.map +0 -7
- package/dist/cli-bundle/chunks/get-SAB7CRBG.js.map +0 -1
- package/dist/cli-bundle/chunks/health-NUVZYIEV.js.map +0 -1
- package/dist/cli-bundle/chunks/health-VJWH3ZFK.js.map +0 -7
- package/dist/cli-bundle/chunks/history-IUVN4NTN.js +0 -20
- package/dist/cli-bundle/chunks/history-compact-SLL6ESXH.js.map +0 -1
- package/dist/cli-bundle/chunks/history-compact-WQZQ6KXM.js.map +0 -7
- package/dist/cli-bundle/chunks/history-redact-75KIIJUJ.js +0 -19
- package/dist/cli-bundle/chunks/history-repair-BJCGM6Q3.js.map +0 -1
- package/dist/cli-bundle/chunks/history-repair-UCYS55ZX.js.map +0 -7
- package/dist/cli-bundle/chunks/init-JJFYRUKG.js +0 -17
- package/dist/cli-bundle/chunks/learnings-L6KTZGOT.js.map +0 -1
- package/dist/cli-bundle/chunks/learnings-QKJOKEAO.js.map +0 -7
- package/dist/cli-bundle/chunks/list-GGVPXEV6.js +0 -23
- package/dist/cli-bundle/chunks/list-VOQDQHA4.js +0 -19
- package/dist/cli-bundle/chunks/notes-3NLK7WTZ.js.map +0 -1
- package/dist/cli-bundle/chunks/notes-HMCB7TK6.js.map +0 -7
- package/dist/cli-bundle/chunks/plan-DWBYI5C6.js.map +0 -1
- package/dist/cli-bundle/chunks/plan-NANUWH4T.js.map +0 -7
- package/dist/cli-bundle/chunks/register-list-query-PWQ5F2VI.js.map +0 -7
- package/dist/cli-bundle/chunks/register-list-query-SMMMLSWW.js.map +0 -1
- package/dist/cli-bundle/chunks/register-mutation-QKFPTIZG.js.map +0 -7
- package/dist/cli-bundle/chunks/register-mutation-ZYJQ4DVP.js.map +0 -1
- package/dist/cli-bundle/chunks/register-operations-2FMZ6WEF.js.map +0 -7
- package/dist/cli-bundle/chunks/register-operations-BAFQURZG.js.map +0 -1
- package/dist/cli-bundle/chunks/register-setup-DQEIKBIP.js.map +0 -7
- package/dist/cli-bundle/chunks/register-setup-QN2XV7UL.js.map +0 -1
- package/dist/cli-bundle/chunks/restore-DRBNXJJH.js +0 -17
- package/dist/cli-bundle/chunks/schema-RNVJ55V2.js.map +0 -7
- package/dist/cli-bundle/chunks/schema-ZZ7ZDM2X.js.map +0 -1
- package/dist/cli-bundle/chunks/search-BJ457C2A.js.map +0 -7
- package/dist/cli-bundle/chunks/search-FQDZXX7P.js.map +0 -1
- package/dist/cli-bundle/chunks/stats-CUG3ZHOI.js.map +0 -1
- package/dist/cli-bundle/chunks/stats-DUQWCVOS.js.map +0 -7
- package/dist/cli-bundle/chunks/telemetry-33MRGX4Z.js.map +0 -7
- package/dist/cli-bundle/chunks/telemetry-RK2VX75A.js.map +0 -1
- package/dist/cli-bundle/chunks/test-SDMYEQHH.js +0 -32
- package/dist/cli-bundle/chunks/test-all-ANYQ33O2.js.map +0 -7
- package/dist/cli-bundle/chunks/test-all-ARSMX33Q.js.map +0 -1
- package/dist/cli-bundle/chunks/test-runs-5URSD34O.js.map +0 -1
- package/dist/cli-bundle/chunks/test-runs-XNACGSNQ.js.map +0 -7
- package/dist/cli-bundle/chunks/update-PD46VOXI.js +0 -21
- package/dist/cli-bundle/chunks/update-U235A7WP.js +0 -25
- package/dist/cli-bundle/chunks/update-many-6B7PJ33I.js.map +0 -1
- package/dist/cli-bundle/chunks/update-many-724JCVDE.js.map +0 -7
- package/dist/cli-bundle/chunks/upgrade-ALBEZAI7.js.map +0 -7
- package/dist/cli-bundle/chunks/upgrade-QHRGDBSA.js.map +0 -1
- package/dist/cli-bundle/chunks/validate-IQRYFXIV.js.map +0 -1
- package/dist/cli-bundle/chunks/validate-UY6DRCG5.js.map +0 -7
- /package/dist/cli-bundle/chunks/{activity-XIOTGZMU.js.map → activity-PZYSZA26.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{activity-PPO7QWJF.js.map → activity-SFM4THAU.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-IIOIBAQW.js.map → chunk-26BM6YLO.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-LSSTKL3Y.js.map → chunk-2TMKMTEI.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-QU3OPNVV.js.map → chunk-2VH7DFSJ.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-LGOXXQUW.js.map → chunk-5XGWFUW2.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-Z647PYLD.js.map → chunk-AJCQ5GT6.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-DWG4FHPY.js.map → chunk-BITCVGHT.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-JE5IZXDS.js.map → chunk-CGQTFWYI.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-VYZNX4C5.js.map → chunk-COVLE33A.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-6ZFTM65G.js.map → chunk-F5MSD5HE.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-GOO4UXBI.js.map → chunk-JZHL4E3Q.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-NN6RKGFW.js.map → chunk-KCAGIH6K.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-3CQPVBK3.js.map → chunk-MIBX6ZRN.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-XOYHMHFF.js.map → chunk-UN6P3IJ4.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-HWHONML5.js.map → chunk-VF3KQGNY.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{claim-HE6KEGJW.js.map → claim-WGAWJCPY.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{claim-QJOQBH7J.js.map → claim-ZI6P4LMU.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{close-WOG5WTMZ.js.map → close-I7PRQ5G7.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{close-SPUFW5QR.js.map → close-JMVVSIQE.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{copy-EB3MUCSW.js.map → copy-Q2PPU4AY.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{copy-C4W522JM.js.map → copy-SC6UF3PI.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{create-4EQNELMY.js.map → create-76FE7JVF.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{create-NW3K7LVG.js.map → create-RTRFW6RE.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{delete-X5QLXIQX.js.map → delete-T6DJSUJI.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{delete-ZLGUYIXU.js.map → delete-XFUX533E.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{docs-SRTLCQOL.js.map → docs-HE3HCQ4S.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{docs-RJQPLROO.js.map → docs-SXMOABHR.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{extension-WKPVPNCC.js.map → extension-E23K4QRR.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{extension-MM3TVWOO.js.map → extension-PMD3XMLN.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{gc-NRFHLVFT.js.map → gc-BXIAKLAH.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{gc-DL6AVOX5.js.map → gc-C7K6JNUO.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{history-GYFD2DJW.js.map → history-73Z6OBFZ.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{history-IUVN4NTN.js.map → history-BIPHVUMF.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{history-redact-SDTDR6WM.js.map → history-redact-7YCXEWJD.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{history-redact-75KIIJUJ.js.map → history-redact-WZZ6GZ2Z.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{init-JJFYRUKG.js.map → init-K34V4PZR.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{init-MXV57LKL.js.map → init-TDEDNVMM.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{list-GGVPXEV6.js.map → list-MSHYOCFU.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{list-VOQDQHA4.js.map → list-VV57WGUD.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{restore-FJQWXMPY.js.map → restore-TSWSULYY.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{restore-DRBNXJJH.js.map → restore-XQXICL3V.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{test-SDMYEQHH.js.map → test-AROS3LIV.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{test-Y3CTFMEC.js.map → test-CECIMKOA.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{update-PD46VOXI.js.map → update-MIWEJC76.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{update-U235A7WP.js.map → update-P7I5YSRB.js.map} +0 -0
|
@@ -1,6 +1,7 @@
|
|
|
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]="e38412ec-cbfb-5416-8790-6ca1958f596b")}catch(e){}}();
|
|
3
3
|
import { Option } from "commander";
|
|
4
|
+
import { resolveBodyFileContent } from "../core/io/body-file.js";
|
|
4
5
|
import { EXIT_CODE } from "../core/shared/constants.js";
|
|
5
6
|
import { PmCliError } from "../core/shared/errors.js";
|
|
6
7
|
import { isPureSnakeCaseAlias } from "../core/shared/option-alias-visibility.js";
|
|
@@ -32,7 +33,7 @@ function addHiddenOption(command, flags, description, repeatable) {
|
|
|
32
33
|
* supplied but does not parse to a finite integer (rather than silently dropping
|
|
33
34
|
* it). Returns `undefined` only when the flag was genuinely not provided.
|
|
34
35
|
*/
|
|
35
|
-
function parseSchemaOrderOption(raw) {
|
|
36
|
+
export function parseSchemaOrderOption(raw) {
|
|
36
37
|
if (raw === undefined || raw === null) {
|
|
37
38
|
return undefined;
|
|
38
39
|
}
|
|
@@ -54,7 +55,218 @@ function parseSchemaOrderOption(raw) {
|
|
|
54
55
|
}
|
|
55
56
|
throw new PmCliError("--order must be a finite integer.", EXIT_CODE.USAGE);
|
|
56
57
|
}
|
|
57
|
-
|
|
58
|
+
/**
|
|
59
|
+
* Routes a normalized `pm schema` subcommand to its run function. Extracted from
|
|
60
|
+
* the schema `.action()` body so the per-subcommand dispatch lives in one
|
|
61
|
+
* single-purpose function and registerMutationCommands stays under the
|
|
62
|
+
* cyclomatic-complexity gate.
|
|
63
|
+
*/
|
|
64
|
+
async function dispatchSchemaSubcommand(schema, inputs) {
|
|
65
|
+
const { normalizedSubcommand, typeName, options, globalOptions } = inputs;
|
|
66
|
+
const { author, force, description } = inputs;
|
|
67
|
+
switch (normalizedSubcommand) {
|
|
68
|
+
case "list":
|
|
69
|
+
return schema.runSchemaList(globalOptions);
|
|
70
|
+
case "show":
|
|
71
|
+
return schema.runSchemaShow(typeName, globalOptions);
|
|
72
|
+
case "show-status":
|
|
73
|
+
return schema.runSchemaShowStatus(typeName, globalOptions);
|
|
74
|
+
case "list-fields":
|
|
75
|
+
return schema.runSchemaListFields(globalOptions);
|
|
76
|
+
case "show-field":
|
|
77
|
+
return schema.runSchemaShowField(typeName, globalOptions);
|
|
78
|
+
case "remove-type":
|
|
79
|
+
return schema.runSchemaRemoveType(typeName, { author, force }, globalOptions);
|
|
80
|
+
case "remove-field":
|
|
81
|
+
return schema.runSchemaRemoveField(typeName, { author, force }, globalOptions);
|
|
82
|
+
case "apply-preset":
|
|
83
|
+
return schema.runSchemaApplyPreset(typeName, { author, force }, globalOptions);
|
|
84
|
+
case "add-field":
|
|
85
|
+
return schema.runSchemaAddField(typeName, {
|
|
86
|
+
type: typeof options.type === "string" ? options.type : undefined,
|
|
87
|
+
commands: inputs.commands,
|
|
88
|
+
description,
|
|
89
|
+
cliFlag: typeof options.cliFlag === "string" ? options.cliFlag : undefined,
|
|
90
|
+
alias: inputs.aliases,
|
|
91
|
+
required: Boolean(options.required),
|
|
92
|
+
requiredOnCreate: Boolean(options.requiredOnCreate),
|
|
93
|
+
// commander stores --no-allow-unset as allowUnset:false; the default
|
|
94
|
+
// (flag omitted) is true. Forward the tri-state faithfully.
|
|
95
|
+
allowUnset: options.allowUnset !== false,
|
|
96
|
+
requiredTypes: inputs.requiredTypes,
|
|
97
|
+
author,
|
|
98
|
+
force,
|
|
99
|
+
}, globalOptions);
|
|
100
|
+
case "add-status":
|
|
101
|
+
return schema.runSchemaAddStatus(typeName, { role: inputs.roles, alias: inputs.aliases, description, order: inputs.order, author, force }, globalOptions);
|
|
102
|
+
case "remove-status":
|
|
103
|
+
return schema.runSchemaRemoveStatus(typeName, { author, force }, globalOptions);
|
|
104
|
+
default:
|
|
105
|
+
// add-type, optionally in --infer mode.
|
|
106
|
+
if (options.infer === true) {
|
|
107
|
+
return schema.runSchemaInferTypes({ minCount: inputs.minCount, apply: Boolean(options.apply), author, force }, globalOptions);
|
|
108
|
+
}
|
|
109
|
+
return schema.runSchemaAddType(typeName, {
|
|
110
|
+
description,
|
|
111
|
+
defaultStatus: inputs.defaultStatus,
|
|
112
|
+
folder: typeof options.folder === "string" ? options.folder : undefined,
|
|
113
|
+
alias: inputs.aliases,
|
|
114
|
+
author,
|
|
115
|
+
force,
|
|
116
|
+
}, globalOptions);
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Renders a schema command result for non-JSON, non-quiet output and surfaces
|
|
121
|
+
* any on-write hook warnings. Extracted from the schema `.action()` body to keep
|
|
122
|
+
* registerMutationCommands under the cyclomatic-complexity gate.
|
|
123
|
+
*/
|
|
124
|
+
function renderSchemaResultHuman(schema, result) {
|
|
125
|
+
switch (result.action) {
|
|
126
|
+
case "list":
|
|
127
|
+
writeStdout(`${schema.formatSchemaListHuman(result)}\n`);
|
|
128
|
+
return;
|
|
129
|
+
case "show":
|
|
130
|
+
writeStdout(`${schema.formatSchemaShowHuman(result)}\n`);
|
|
131
|
+
return;
|
|
132
|
+
case "show-status":
|
|
133
|
+
writeStdout(`${schema.formatSchemaShowStatusHuman(result)}\n`);
|
|
134
|
+
return;
|
|
135
|
+
case "list-fields":
|
|
136
|
+
writeStdout(`${schema.formatSchemaListFieldsHuman(result)}\n`);
|
|
137
|
+
return;
|
|
138
|
+
case "show-field":
|
|
139
|
+
writeStdout(`${schema.formatSchemaShowFieldHuman(result)}\n`);
|
|
140
|
+
return;
|
|
141
|
+
case "remove-type":
|
|
142
|
+
writeStdout(`${schema.formatSchemaRemoveTypeHuman(result)}\n`);
|
|
143
|
+
break;
|
|
144
|
+
case "remove-field":
|
|
145
|
+
writeStdout(`${schema.formatSchemaRemoveFieldHuman(result)}\n`);
|
|
146
|
+
break;
|
|
147
|
+
case "apply-preset":
|
|
148
|
+
writeStdout(`${schema.formatSchemaApplyPresetHuman(result)}\n`);
|
|
149
|
+
break;
|
|
150
|
+
case "infer-types":
|
|
151
|
+
writeStdout(`${schema.formatSchemaInferTypesHuman(result)}\n`);
|
|
152
|
+
break;
|
|
153
|
+
case "add-field":
|
|
154
|
+
writeStdout(`${schema.formatSchemaAddFieldHuman(result)}\n`);
|
|
155
|
+
break;
|
|
156
|
+
case "add-status":
|
|
157
|
+
writeStdout(`${schema.formatSchemaAddStatusHuman(result)}\n`);
|
|
158
|
+
break;
|
|
159
|
+
case "remove-status":
|
|
160
|
+
writeStdout(`${schema.formatSchemaRemoveStatusHuman(result)}\n`);
|
|
161
|
+
break;
|
|
162
|
+
default:
|
|
163
|
+
writeStdout(`${schema.formatSchemaAddTypeHuman(result)}\n`);
|
|
164
|
+
break;
|
|
165
|
+
}
|
|
166
|
+
// Surface extension on-write hook diagnostics (mutation subcommands only;
|
|
167
|
+
// inspection results carry no warnings array).
|
|
168
|
+
if (result.warnings.length > 0) {
|
|
169
|
+
printError(`schema ${result.action} warnings: ${formatHookWarnings(result.warnings)}`);
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* Build a commander argParser that coerces a flag value into a positive
|
|
174
|
+
* (1-based) integer, throwing a usage error when the supplied value is not a
|
|
175
|
+
* whole number >= 1. Used by `pm comments --edit/--delete <index>` so an
|
|
176
|
+
* invalid index fails fast with a clear message instead of silently coercing.
|
|
177
|
+
*/
|
|
178
|
+
export function parsePositiveIntOption(flag) {
|
|
179
|
+
return (value) => {
|
|
180
|
+
const parsed = Number(value);
|
|
181
|
+
if (!Number.isInteger(parsed) || parsed < 1) {
|
|
182
|
+
throw new PmCliError(`${flag} must be a positive integer (1-based index).`, EXIT_CODE.USAGE);
|
|
183
|
+
}
|
|
184
|
+
return parsed;
|
|
185
|
+
};
|
|
186
|
+
}
|
|
187
|
+
// Bulk content-field selection filters (GH-242) shared by update-many and
|
|
188
|
+
// close-many. Each pair mirrors the list-family presence/absence flags but uses
|
|
189
|
+
// the `--filter-` prefix so they live in the bulk-selection namespace. The
|
|
190
|
+
// governance-missing filters (GH-236) reuse the same `--filter-<gov>-missing`
|
|
191
|
+
// spelling as the list family.
|
|
192
|
+
function registerBulkContentAndGovernanceFilters(command, action) {
|
|
193
|
+
command
|
|
194
|
+
.option("--filter-has-notes", `Select only items that have notes before ${action}`)
|
|
195
|
+
.option("--filter-no-notes", `Select only items that have no notes before ${action}`)
|
|
196
|
+
.option("--filter-has-learnings", `Select only items that have learnings before ${action}`)
|
|
197
|
+
.option("--filter-no-learnings", `Select only items that have no learnings before ${action}`)
|
|
198
|
+
.option("--filter-has-files", `Select only items that have linked files before ${action}`)
|
|
199
|
+
.option("--filter-no-files", `Select only items that have no linked files before ${action}`)
|
|
200
|
+
.option("--filter-has-docs", `Select only items that have linked docs before ${action}`)
|
|
201
|
+
.option("--filter-no-docs", `Select only items that have no linked docs before ${action}`)
|
|
202
|
+
.option("--filter-has-tests", `Select only items that have linked tests before ${action}`)
|
|
203
|
+
.option("--filter-no-tests", `Select only items that have no linked tests before ${action}`)
|
|
204
|
+
.option("--filter-has-comments", `Select only items that have comments before ${action}`)
|
|
205
|
+
.option("--filter-no-comments", `Select only items that have no comments before ${action}`)
|
|
206
|
+
.option("--filter-has-deps", `Select only items that have dependencies before ${action}`)
|
|
207
|
+
.option("--filter-no-deps", `Select only items that have no dependencies before ${action}`)
|
|
208
|
+
.option("--filter-has-body", `Select only items that have a non-empty body before ${action}`)
|
|
209
|
+
.option("--filter-empty-body", `Select only items with an empty body before ${action}`)
|
|
210
|
+
.option("--filter-has-linked-command", `Select only items whose linked tests carry a runnable command before ${action}`)
|
|
211
|
+
.option("--filter-no-linked-command", `Select only items whose linked tests carry no runnable command before ${action}`)
|
|
212
|
+
.option("--filter-reviewer-missing", `Select only items missing reviewer before ${action}`)
|
|
213
|
+
.option("--filter-risk-missing", `Select only items missing risk before ${action}`)
|
|
214
|
+
.option("--filter-confidence-missing", `Select only items missing confidence before ${action}`)
|
|
215
|
+
.option("--filter-sprint-missing", `Select only items missing sprint before ${action}`)
|
|
216
|
+
.option("--filter-release-missing", `Select only items missing release before ${action}`);
|
|
217
|
+
}
|
|
218
|
+
// Map the bulk content/governance `--filter-*` commander options into the
|
|
219
|
+
// ListOptions content/governance fields runList consumes. Shared by update-many
|
|
220
|
+
// and close-many.
|
|
221
|
+
// [hasCommanderKey, noCommanderKey, --filter-has flag, --filter-no flag]
|
|
222
|
+
const BULK_CONTENT_FILTER_CONFLICTS = [
|
|
223
|
+
["filterHasNotes", "filterNoNotes", "--filter-has-notes", "--filter-no-notes"],
|
|
224
|
+
["filterHasLearnings", "filterNoLearnings", "--filter-has-learnings", "--filter-no-learnings"],
|
|
225
|
+
["filterHasFiles", "filterNoFiles", "--filter-has-files", "--filter-no-files"],
|
|
226
|
+
["filterHasDocs", "filterNoDocs", "--filter-has-docs", "--filter-no-docs"],
|
|
227
|
+
["filterHasTests", "filterNoTests", "--filter-has-tests", "--filter-no-tests"],
|
|
228
|
+
["filterHasComments", "filterNoComments", "--filter-has-comments", "--filter-no-comments"],
|
|
229
|
+
["filterHasDeps", "filterNoDeps", "--filter-has-deps", "--filter-no-deps"],
|
|
230
|
+
["filterHasBody", "filterEmptyBody", "--filter-has-body", "--filter-empty-body"],
|
|
231
|
+
["filterHasLinkedCommand", "filterNoLinkedCommand", "--filter-has-linked-command", "--filter-no-linked-command"],
|
|
232
|
+
];
|
|
233
|
+
function mapBulkContentAndGovernanceFilters(options) {
|
|
234
|
+
const presence = (key) => (options[key] === true ? true : undefined);
|
|
235
|
+
// Catch a both-present-and-absent bulk request here so the error names the
|
|
236
|
+
// bulk --filter-* flags the user actually typed, rather than the downstream
|
|
237
|
+
// list-level --has-/--no- flags resolveContentFieldFilters would report.
|
|
238
|
+
for (const [hasKey, noKey, hasFlag, noFlag] of BULK_CONTENT_FILTER_CONFLICTS) {
|
|
239
|
+
if (options[hasKey] === true && options[noKey] === true) {
|
|
240
|
+
throw new PmCliError(`Cannot combine ${hasFlag} with ${noFlag} for the same field.`, EXIT_CODE.USAGE);
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
return {
|
|
244
|
+
filterReviewerMissing: presence("filterReviewerMissing"),
|
|
245
|
+
filterRiskMissing: presence("filterRiskMissing"),
|
|
246
|
+
filterConfidenceMissing: presence("filterConfidenceMissing"),
|
|
247
|
+
filterSprintMissing: presence("filterSprintMissing"),
|
|
248
|
+
filterReleaseMissing: presence("filterReleaseMissing"),
|
|
249
|
+
hasNotes: presence("filterHasNotes"),
|
|
250
|
+
hasLearnings: presence("filterHasLearnings"),
|
|
251
|
+
hasFiles: presence("filterHasFiles"),
|
|
252
|
+
hasDocs: presence("filterHasDocs"),
|
|
253
|
+
hasTests: presence("filterHasTests"),
|
|
254
|
+
hasComments: presence("filterHasComments"),
|
|
255
|
+
hasDeps: presence("filterHasDeps"),
|
|
256
|
+
hasBody: presence("filterHasBody"),
|
|
257
|
+
hasLinkedCommand: presence("filterHasLinkedCommand"),
|
|
258
|
+
noNotes: presence("filterNoNotes"),
|
|
259
|
+
noLearnings: presence("filterNoLearnings"),
|
|
260
|
+
noFiles: presence("filterNoFiles"),
|
|
261
|
+
noDocs: presence("filterNoDocs"),
|
|
262
|
+
noTests: presence("filterNoTests"),
|
|
263
|
+
noComments: presence("filterNoComments"),
|
|
264
|
+
noDeps: presence("filterNoDeps"),
|
|
265
|
+
emptyBody: presence("filterEmptyBody"),
|
|
266
|
+
noLinkedCommand: presence("filterNoLinkedCommand"),
|
|
267
|
+
};
|
|
268
|
+
}
|
|
269
|
+
export function registerCommanderOptionContracts(command, contracts) {
|
|
58
270
|
for (const contract of contracts) {
|
|
59
271
|
if (contract.required) {
|
|
60
272
|
command.requiredOption(contract.option, contract.description);
|
|
@@ -81,6 +293,39 @@ function registerCommanderOptionContracts(command, contracts) {
|
|
|
81
293
|
}
|
|
82
294
|
}
|
|
83
295
|
}
|
|
296
|
+
/**
|
|
297
|
+
* Map raw `update-many --filter-*` commander options into the ListOptions shape
|
|
298
|
+
* runList consumes. Extracted from registerMutationCommands so its many
|
|
299
|
+
* string/boolean coercions do not inflate that function's cyclomatic complexity.
|
|
300
|
+
*/
|
|
301
|
+
function buildUpdateManyListOptions(options) {
|
|
302
|
+
const readString = (key) => typeof options[key] === "string" ? options[key] : undefined;
|
|
303
|
+
return {
|
|
304
|
+
type: readString("filterType"),
|
|
305
|
+
tag: readString("filterTag"),
|
|
306
|
+
priority: readString("filterPriority"),
|
|
307
|
+
deadlineBefore: readString("filterDeadlineBefore"),
|
|
308
|
+
deadlineAfter: readString("filterDeadlineAfter"),
|
|
309
|
+
updatedAfter: readString("filterUpdatedAfter"),
|
|
310
|
+
updatedBefore: readString("filterUpdatedBefore"),
|
|
311
|
+
createdAfter: readString("filterCreatedAfter"),
|
|
312
|
+
createdBefore: readString("filterCreatedBefore"),
|
|
313
|
+
ids: readString("ids"),
|
|
314
|
+
assignee: readString("filterAssignee"),
|
|
315
|
+
assigneeFilter: readString("filterAssigneeFilter") ?? readString("filterAssignee_filter"),
|
|
316
|
+
parent: readString("filterParent"),
|
|
317
|
+
sprint: readString("filterSprint"),
|
|
318
|
+
release: readString("filterRelease"),
|
|
319
|
+
filterAcMissing: options.filterAcMissing === true ? true : undefined,
|
|
320
|
+
filterEstimatesMissing: options.filterEstimatesMissing === true || options.filterEstimateMissing === true ? true : undefined,
|
|
321
|
+
filterResolutionMissing: options.filterResolutionMissing === true ? true : undefined,
|
|
322
|
+
filterMetadataMissing: options.filterMetadataMissing === true ? true : undefined,
|
|
323
|
+
...mapBulkContentAndGovernanceFilters(options),
|
|
324
|
+
limit: readString("limit"),
|
|
325
|
+
offset: readString("offset"),
|
|
326
|
+
includeBody: true,
|
|
327
|
+
};
|
|
328
|
+
}
|
|
84
329
|
export function registerMutationCommands(program) {
|
|
85
330
|
const createCommand = program
|
|
86
331
|
.command("create")
|
|
@@ -89,6 +334,7 @@ export function registerMutationCommands(program) {
|
|
|
89
334
|
.description("Create a new project management item.");
|
|
90
335
|
registerCommanderOptionContracts(createCommand, CREATE_COMMANDER_OPTION_REGISTRATION_CONTRACTS);
|
|
91
336
|
createCommand
|
|
337
|
+
.option("--body-file <path>", "Load the item markdown body from a file (mutually exclusive with --body)")
|
|
92
338
|
.option("--clear-deps", "Clear dependency entries")
|
|
93
339
|
.option("--clear-comments", "Clear comments")
|
|
94
340
|
.option("--clear-notes", "Clear notes")
|
|
@@ -112,7 +358,15 @@ export function registerMutationCommands(program) {
|
|
|
112
358
|
positionalTitle = secondTitle;
|
|
113
359
|
}
|
|
114
360
|
else if (typeof typeOrTitle === "string" && typeOrTitle.length > 0) {
|
|
115
|
-
|
|
361
|
+
// Honor `pm create <type> --title ...` by treating the lone positional as
|
|
362
|
+
// type when an explicit --title is already present.
|
|
363
|
+
const explicitTitleProvided = typeof options.title === "string" && options.title.trim().length > 0;
|
|
364
|
+
if (explicitTitleProvided && options.type === undefined) {
|
|
365
|
+
positionalType = typeOrTitle;
|
|
366
|
+
}
|
|
367
|
+
else {
|
|
368
|
+
positionalTitle = typeOrTitle;
|
|
369
|
+
}
|
|
116
370
|
}
|
|
117
371
|
// pm-edge #1 (2026-05-28): when the sole positional matches a known
|
|
118
372
|
// item type AND no --title was supplied, refuse early instead of
|
|
@@ -145,6 +399,12 @@ export function registerMutationCommands(program) {
|
|
|
145
399
|
if (typeof positionalTitle === "string" && positionalTitle.length > 0 && options.title === undefined) {
|
|
146
400
|
options.title = positionalTitle;
|
|
147
401
|
}
|
|
402
|
+
// GH-214: resolve --body-file into the existing body field before
|
|
403
|
+
// normalization so the rest of create is unchanged. CLI-only input alias.
|
|
404
|
+
if (typeof options.bodyFile === "string") {
|
|
405
|
+
options.body = await resolveBodyFileContent(options.bodyFile, options.body !== undefined ? String(options.body) : undefined);
|
|
406
|
+
delete options.bodyFile;
|
|
407
|
+
}
|
|
148
408
|
const normalized = normalizeCreateOptions(options, { requireType: false });
|
|
149
409
|
const { runCreate } = await import("./commands/create.js");
|
|
150
410
|
const result = await runCreate(normalized, globalOptions);
|
|
@@ -176,12 +436,28 @@ export function registerMutationCommands(program) {
|
|
|
176
436
|
printError(`profile:command=copy took_ms=${Date.now() - startedAt}`);
|
|
177
437
|
}
|
|
178
438
|
});
|
|
439
|
+
program
|
|
440
|
+
.command("focus")
|
|
441
|
+
.argument("[id]", "Item id to focus (omit to show current focus)")
|
|
442
|
+
.option("--clear", "Clear the focused item")
|
|
443
|
+
.description("Set/clear/show the session focused item that new items default --parent to.")
|
|
444
|
+
.action(async (id, options, command) => {
|
|
445
|
+
const globalOptions = getGlobalOptions(command);
|
|
446
|
+
const startedAt = Date.now();
|
|
447
|
+
const { runFocus } = await import("./commands/focus.js");
|
|
448
|
+
const result = await runFocus(id, { clear: options.clear === true }, globalOptions);
|
|
449
|
+
printResult(result, globalOptions);
|
|
450
|
+
if (globalOptions.profile) {
|
|
451
|
+
printError(`profile:command=focus took_ms=${Date.now() - startedAt}`);
|
|
452
|
+
}
|
|
453
|
+
});
|
|
179
454
|
const updateCommand = program
|
|
180
455
|
.command("update")
|
|
181
456
|
.argument("<id>", "Item id")
|
|
182
457
|
.description("Update item fields and metadata.");
|
|
183
458
|
registerCommanderOptionContracts(updateCommand, UPDATE_COMMANDER_OPTION_REGISTRATION_CONTRACTS);
|
|
184
459
|
updateCommand
|
|
460
|
+
.option("--body-file <path>", "Load the item markdown body from a file (mutually exclusive with --body)")
|
|
185
461
|
.option("--replace-deps", "Atomically replace dependency entries with the provided --dep values")
|
|
186
462
|
.option("--replace-tests", "Atomically replace linked test entries with the provided --test values")
|
|
187
463
|
.option("--clear-deps", "Clear dependency entries")
|
|
@@ -203,6 +479,12 @@ export function registerMutationCommands(program) {
|
|
|
203
479
|
.action(async (id, options, command) => {
|
|
204
480
|
const globalOptions = getGlobalOptions(command);
|
|
205
481
|
const startedAt = Date.now();
|
|
482
|
+
// GH-214: resolve --body-file into the existing body field before
|
|
483
|
+
// normalization so the rest of update is unchanged. CLI-only input alias.
|
|
484
|
+
if (typeof options.bodyFile === "string") {
|
|
485
|
+
options.body = await resolveBodyFileContent(options.bodyFile, options.body !== undefined ? String(options.body) : undefined);
|
|
486
|
+
delete options.bodyFile;
|
|
487
|
+
}
|
|
206
488
|
const { runUpdate } = await import("./commands/update.js");
|
|
207
489
|
const result = await runUpdate(id, normalizeUpdateOptions(options), globalOptions);
|
|
208
490
|
await invalidateSearchCachesForMutation(globalOptions, result);
|
|
@@ -229,6 +511,12 @@ export function registerMutationCommands(program) {
|
|
|
229
511
|
.option("--filter-parent <value>", "Filter by parent item ID before applying updates")
|
|
230
512
|
.option("--filter-sprint <value>", "Filter by sprint before applying updates")
|
|
231
513
|
.option("--filter-release <value>", "Filter by release before applying updates")
|
|
514
|
+
.option("--filter-ac-missing", "Select only items missing acceptance_criteria (bulk backfill)")
|
|
515
|
+
.option("--filter-estimates-missing", "Select only items missing estimated_minutes (bulk backfill)")
|
|
516
|
+
.option("--filter-resolution-missing", "Select only terminal items missing resolution (bulk backfill)")
|
|
517
|
+
.option("--filter-metadata-missing", "Select only items missing any tracked metadata (AC, estimate, or resolution)");
|
|
518
|
+
registerBulkContentAndGovernanceFilters(updateManyCommand, "applying updates");
|
|
519
|
+
updateManyCommand
|
|
232
520
|
.option("--ids <value>", "Restrict to an explicit comma-separated ID allowlist (intersected with other filters)")
|
|
233
521
|
.option("--limit <n>", "Limit matched item count before apply/preview")
|
|
234
522
|
.option("--offset <n>", "Skip first n matched rows before apply/preview")
|
|
@@ -329,6 +617,7 @@ export function registerMutationCommands(program) {
|
|
|
329
617
|
["--customer_impact <value>", "Alias for --customer-impact"],
|
|
330
618
|
["--allow_audit_update", "Alias for --allow-audit-update"],
|
|
331
619
|
["--allow_audit_dep_update", "Alias for --allow-audit-dep-update"],
|
|
620
|
+
["--filter-estimate-missing", "Alias for --filter-estimates-missing"],
|
|
332
621
|
]) {
|
|
333
622
|
addHiddenOption(updateManyCommand, flags, description, false);
|
|
334
623
|
}
|
|
@@ -347,30 +636,7 @@ export function registerMutationCommands(program) {
|
|
|
347
636
|
const { runUpdateMany } = await import("./commands/update-many.js");
|
|
348
637
|
const result = await runUpdateMany({
|
|
349
638
|
status: typeof options.filterStatus === "string" ? options.filterStatus : undefined,
|
|
350
|
-
list:
|
|
351
|
-
type: typeof options.filterType === "string" ? options.filterType : undefined,
|
|
352
|
-
tag: typeof options.filterTag === "string" ? options.filterTag : undefined,
|
|
353
|
-
priority: typeof options.filterPriority === "string" ? options.filterPriority : undefined,
|
|
354
|
-
deadlineBefore: typeof options.filterDeadlineBefore === "string" ? options.filterDeadlineBefore : undefined,
|
|
355
|
-
deadlineAfter: typeof options.filterDeadlineAfter === "string" ? options.filterDeadlineAfter : undefined,
|
|
356
|
-
updatedAfter: typeof options.filterUpdatedAfter === "string" ? options.filterUpdatedAfter : undefined,
|
|
357
|
-
updatedBefore: typeof options.filterUpdatedBefore === "string" ? options.filterUpdatedBefore : undefined,
|
|
358
|
-
createdAfter: typeof options.filterCreatedAfter === "string" ? options.filterCreatedAfter : undefined,
|
|
359
|
-
createdBefore: typeof options.filterCreatedBefore === "string" ? options.filterCreatedBefore : undefined,
|
|
360
|
-
ids: typeof options.ids === "string" ? options.ids : undefined,
|
|
361
|
-
assignee: typeof options.filterAssignee === "string" ? options.filterAssignee : undefined,
|
|
362
|
-
assigneeFilter: typeof options.filterAssigneeFilter === "string"
|
|
363
|
-
? options.filterAssigneeFilter
|
|
364
|
-
: typeof options.filterAssignee_filter === "string"
|
|
365
|
-
? options.filterAssignee_filter
|
|
366
|
-
: undefined,
|
|
367
|
-
parent: typeof options.filterParent === "string" ? options.filterParent : undefined,
|
|
368
|
-
sprint: typeof options.filterSprint === "string" ? options.filterSprint : undefined,
|
|
369
|
-
release: typeof options.filterRelease === "string" ? options.filterRelease : undefined,
|
|
370
|
-
limit: typeof options.limit === "string" ? options.limit : undefined,
|
|
371
|
-
offset: typeof options.offset === "string" ? options.offset : undefined,
|
|
372
|
-
includeBody: true,
|
|
373
|
-
},
|
|
639
|
+
list: buildUpdateManyListOptions(options),
|
|
374
640
|
update: normalizeUpdateOptions(extractUpdateManyMutationOptionSource(options)),
|
|
375
641
|
dryRun: options.dryRun === true ? true : undefined,
|
|
376
642
|
rollback: typeof options.rollback === "string" ? options.rollback : undefined,
|
|
@@ -386,11 +652,11 @@ export function registerMutationCommands(program) {
|
|
|
386
652
|
.command("close")
|
|
387
653
|
.argument("<id>", "Item id")
|
|
388
654
|
.argument("[text]", "Close reason text (alias: --reason)")
|
|
389
|
-
.option("--reason <value>", "Close reason text (alias for positional <text>)")
|
|
655
|
+
.option("-r, --reason <value>", "Close reason text (alias for positional <text>)")
|
|
390
656
|
.option("--close-reason <value>", "Close reason text (alias for positional <text>)")
|
|
391
|
-
.option("--duplicate-of <id>", "Close as a duplicate of the canonical item id and auto-fill duplicate closure metadata")
|
|
657
|
+
.option("-d, --duplicate-of <id>", "Close as a duplicate of the canonical item id and auto-fill duplicate closure metadata")
|
|
392
658
|
.option("--author <value>", "Mutation author")
|
|
393
|
-
.option("--message <value>", "History message")
|
|
659
|
+
.option("-m, --message <value>", "History message")
|
|
394
660
|
.option("--validate-close [mode]", 'Validate closure metadata before close: "off", "warn", or "strict" (default: settings governance preset)')
|
|
395
661
|
.option("--resolution <value>", "Set the closure resolution summary inline (same field --validate-close strict checks; previously required a prior pm update)")
|
|
396
662
|
.option("--expected-result <value>", "Set the expected-result note inline (closure validation field)")
|
|
@@ -458,7 +724,9 @@ export function registerMutationCommands(program) {
|
|
|
458
724
|
.option("--filter-assignee-filter <value>", "Filter assignee presence: assigned|unassigned before closing")
|
|
459
725
|
.option("--filter-parent <value>", "Filter by parent item ID before closing")
|
|
460
726
|
.option("--filter-sprint <value>", "Filter by sprint before closing")
|
|
461
|
-
.option("--filter-release <value>", "Filter by release before closing")
|
|
727
|
+
.option("--filter-release <value>", "Filter by release before closing");
|
|
728
|
+
registerBulkContentAndGovernanceFilters(closeManyCommand, "closing");
|
|
729
|
+
closeManyCommand
|
|
462
730
|
.option("--ids <value>", "Restrict to an explicit comma-separated ID allowlist (intersected with other filters)")
|
|
463
731
|
.option("--limit <n>", "Limit matched item count before apply/preview")
|
|
464
732
|
.option("--offset <n>", "Skip first n matched rows before apply/preview")
|
|
@@ -508,6 +776,7 @@ export function registerMutationCommands(program) {
|
|
|
508
776
|
parent: typeof options.filterParent === "string" ? options.filterParent : undefined,
|
|
509
777
|
sprint: typeof options.filterSprint === "string" ? options.filterSprint : undefined,
|
|
510
778
|
release: typeof options.filterRelease === "string" ? options.filterRelease : undefined,
|
|
779
|
+
...mapBulkContentAndGovernanceFilters(options),
|
|
511
780
|
limit: typeof options.limit === "string" ? options.limit : undefined,
|
|
512
781
|
offset: typeof options.offset === "string" ? options.offset : undefined,
|
|
513
782
|
},
|
|
@@ -911,22 +1180,33 @@ export function registerMutationCommands(program) {
|
|
|
911
1180
|
.command("schema")
|
|
912
1181
|
.argument("[subcommand]", "Schema subcommand: list, show, show-status, add-type, remove-type, add-status, remove-status, or a custom item type name shorthand")
|
|
913
1182
|
.argument("[name]", "Item type name (add-type/remove-type/show) or status id (show-status/add-status/remove-status)")
|
|
914
|
-
.option("--description <text>", "Human description for the custom item type or
|
|
1183
|
+
.option("--description <text>", "Human description for the custom item type, status, or field")
|
|
915
1184
|
.option("--default-status <status>", "Default status hint recorded for the custom item type")
|
|
916
1185
|
.option("--folder <dir>", "Storage folder for items of this custom type")
|
|
917
|
-
.option("--alias <name>", "Alias for the custom type or
|
|
1186
|
+
.option("--alias <name>", "Alias for the custom type, status, or field flag (repeatable, csv-friendly)", collect)
|
|
918
1187
|
.option("--role <value>", "Lifecycle role for a custom status (repeatable): draft, active, blocked, terminal, terminal_done, terminal_canceled, default_open, default_close, default_cancel", collect)
|
|
919
1188
|
.option("--order <n>", "Display/sort order for a custom status")
|
|
1189
|
+
.option("--type <type>", "Value type for a custom field (add-field): string, number, boolean, string_array")
|
|
1190
|
+
.option("--commands <list>", "Commands a custom field is wired onto (add-field; repeatable, comma-friendly): create, update, update_many, list, search, calendar, context", collect)
|
|
1191
|
+
.option("--cli-flag <flag>", "Override the auto-derived CLI flag for a custom field (add-field)")
|
|
1192
|
+
.option("--required", "Mark a custom field as always required (add-field)")
|
|
1193
|
+
.option("--required-on-create", "Mark a custom field as required at create time (add-field)")
|
|
1194
|
+
.option("--no-allow-unset", "Disallow clearing a custom field via --unset (add-field)")
|
|
1195
|
+
.option("--required-types <list>", "Restrict a custom field's requirement to specific item types (add-field; repeatable, comma-friendly)", collect)
|
|
1196
|
+
.option("--infer", "Infer custom item types from title-prefix conventions (add-type; preview unless --apply)")
|
|
1197
|
+
.option("--min-count <n>", "Minimum items sharing a prefix for add-type --infer (default 10)")
|
|
1198
|
+
.option("--apply", "Register inferred types (add-type --infer); without it the command previews only")
|
|
920
1199
|
.option("--author <value>", "Mutation author")
|
|
921
1200
|
.option("--force", "Force ownership/lock override")
|
|
922
|
-
.description("Inspect and manage config-driven runtime schema.");
|
|
1201
|
+
.description("Inspect and manage config-driven runtime schema (types, statuses, fields, presets).");
|
|
923
1202
|
// Hidden pure snake_case underscore-duplicate alias.
|
|
924
1203
|
addHiddenOption(schemaCommand, "--default_status <status>", "Alias for --default-status", false);
|
|
925
1204
|
schemaCommand
|
|
926
1205
|
.action(async (subcommand, name, options, command) => {
|
|
927
1206
|
const globalOptions = getGlobalOptions(command);
|
|
928
1207
|
const startedAt = Date.now();
|
|
929
|
-
const
|
|
1208
|
+
const schemaModule = await import("./commands/schema.js");
|
|
1209
|
+
const { SCHEMA_SUBCOMMANDS } = schemaModule;
|
|
930
1210
|
let normalizedSubcommand = (subcommand ?? "").trim().toLowerCase();
|
|
931
1211
|
let typeName = name;
|
|
932
1212
|
if (!normalizedSubcommand) {
|
|
@@ -940,15 +1220,23 @@ export function registerMutationCommands(program) {
|
|
|
940
1220
|
"pm schema remove-type Spike",
|
|
941
1221
|
"pm schema add-status review --role active --alias in_review",
|
|
942
1222
|
"pm schema remove-status review",
|
|
1223
|
+
"pm schema add-field severity_level --type string --commands create,update",
|
|
1224
|
+
"pm schema list-fields",
|
|
1225
|
+
"pm schema apply-preset agile",
|
|
1226
|
+
"pm schema add-type --infer --min-count 10",
|
|
943
1227
|
],
|
|
944
1228
|
});
|
|
945
1229
|
}
|
|
946
|
-
const aliases =
|
|
1230
|
+
const aliases =
|
|
1231
|
+
/* c8 ignore next -- --alias is registered with commander `collect`, so it is always an array here; the string arm is a defensive guard for non-CLI (programmatic) callers */
|
|
1232
|
+
typeof options.alias === "string"
|
|
947
1233
|
? [options.alias]
|
|
948
1234
|
: Array.isArray(options.alias)
|
|
949
1235
|
? options.alias
|
|
950
1236
|
: undefined;
|
|
951
|
-
const roles =
|
|
1237
|
+
const roles =
|
|
1238
|
+
/* c8 ignore next -- --role is registered with commander `collect`, so it is always an array here; the string arm is a defensive guard for non-CLI (programmatic) callers */
|
|
1239
|
+
typeof options.role === "string"
|
|
952
1240
|
? [options.role]
|
|
953
1241
|
: Array.isArray(options.role)
|
|
954
1242
|
? options.role
|
|
@@ -959,6 +1247,21 @@ export function registerMutationCommands(program) {
|
|
|
959
1247
|
? options.default_status
|
|
960
1248
|
: undefined;
|
|
961
1249
|
const order = parseSchemaOrderOption(options.order);
|
|
1250
|
+
// --commands/--required-types are repeatable Commander `collect` flags, so
|
|
1251
|
+
// their value is always a string[] (or undefined when omitted); each entry
|
|
1252
|
+
// may itself be a comma-list, which we split and flatten here.
|
|
1253
|
+
const splitCommaList = (raw) => {
|
|
1254
|
+
if (!Array.isArray(raw)) {
|
|
1255
|
+
return undefined;
|
|
1256
|
+
}
|
|
1257
|
+
return raw
|
|
1258
|
+
.flatMap((value) => value.split(","))
|
|
1259
|
+
.map((value) => value.trim())
|
|
1260
|
+
.filter((value) => value.length > 0);
|
|
1261
|
+
};
|
|
1262
|
+
const commands = splitCommaList(options.commands);
|
|
1263
|
+
const requiredTypes = splitCommaList(options.requiredTypes);
|
|
1264
|
+
const minCount = parseSchemaOrderOption(options.minCount);
|
|
962
1265
|
if (!SCHEMA_SUBCOMMANDS.includes(normalizedSubcommand) && typeName === undefined) {
|
|
963
1266
|
typeName = subcommand;
|
|
964
1267
|
normalizedSubcommand = "add-type";
|
|
@@ -968,67 +1271,29 @@ export function registerMutationCommands(program) {
|
|
|
968
1271
|
}
|
|
969
1272
|
const author = typeof options.author === "string" ? options.author : undefined;
|
|
970
1273
|
const force = Boolean(options.force);
|
|
971
|
-
const
|
|
972
|
-
|
|
973
|
-
|
|
974
|
-
|
|
975
|
-
|
|
976
|
-
|
|
977
|
-
|
|
978
|
-
|
|
979
|
-
|
|
980
|
-
|
|
981
|
-
|
|
982
|
-
|
|
983
|
-
|
|
984
|
-
|
|
985
|
-
|
|
986
|
-
|
|
987
|
-
|
|
988
|
-
: normalizedSubcommand === "remove-status"
|
|
989
|
-
? await runSchemaRemoveStatus(typeName, { author, force }, globalOptions)
|
|
990
|
-
: await runSchemaAddType(typeName, {
|
|
991
|
-
description: typeof options.description === "string" ? options.description : undefined,
|
|
992
|
-
defaultStatus,
|
|
993
|
-
folder: typeof options.folder === "string" ? options.folder : undefined,
|
|
994
|
-
alias: aliases,
|
|
995
|
-
author,
|
|
996
|
-
force,
|
|
997
|
-
}, globalOptions);
|
|
1274
|
+
const description = typeof options.description === "string" ? options.description : undefined;
|
|
1275
|
+
const result = await dispatchSchemaSubcommand(schemaModule, {
|
|
1276
|
+
normalizedSubcommand,
|
|
1277
|
+
typeName,
|
|
1278
|
+
options,
|
|
1279
|
+
aliases,
|
|
1280
|
+
roles,
|
|
1281
|
+
commands,
|
|
1282
|
+
requiredTypes,
|
|
1283
|
+
defaultStatus,
|
|
1284
|
+
order,
|
|
1285
|
+
minCount,
|
|
1286
|
+
author,
|
|
1287
|
+
force,
|
|
1288
|
+
description,
|
|
1289
|
+
globalOptions,
|
|
1290
|
+
});
|
|
998
1291
|
// Schema inspection and type registration do not touch item content, so search caches stay valid.
|
|
999
1292
|
if (globalOptions.json === true || globalOptions.defaultOutputFormat === "json") {
|
|
1000
1293
|
printResult(result, globalOptions);
|
|
1001
1294
|
}
|
|
1002
1295
|
else if (!globalOptions.quiet) {
|
|
1003
|
-
|
|
1004
|
-
writeStdout(`${formatSchemaListHuman(result)}\n`);
|
|
1005
|
-
}
|
|
1006
|
-
else if (result.action === "show") {
|
|
1007
|
-
writeStdout(`${formatSchemaShowHuman(result)}\n`);
|
|
1008
|
-
}
|
|
1009
|
-
else if (result.action === "show-status") {
|
|
1010
|
-
writeStdout(`${formatSchemaShowStatusHuman(result)}\n`);
|
|
1011
|
-
}
|
|
1012
|
-
else if (result.action === "remove-type") {
|
|
1013
|
-
writeStdout(`${formatSchemaRemoveTypeHuman(result)}\n`);
|
|
1014
|
-
}
|
|
1015
|
-
else if (result.action === "add-status") {
|
|
1016
|
-
writeStdout(`${formatSchemaAddStatusHuman(result)}\n`);
|
|
1017
|
-
}
|
|
1018
|
-
else if (result.action === "remove-status") {
|
|
1019
|
-
writeStdout(`${formatSchemaRemoveStatusHuman(result)}\n`);
|
|
1020
|
-
}
|
|
1021
|
-
else {
|
|
1022
|
-
writeStdout(`${formatSchemaAddTypeHuman(result)}\n`);
|
|
1023
|
-
}
|
|
1024
|
-
// Surface extension on-write hook diagnostics so policy/enforcement
|
|
1025
|
-
// warnings are visible without forcing --json.
|
|
1026
|
-
if (result.action !== "list" &&
|
|
1027
|
-
result.action !== "show" &&
|
|
1028
|
-
result.action !== "show-status" &&
|
|
1029
|
-
result.warnings.length > 0) {
|
|
1030
|
-
printError(`schema ${result.action} warnings: ${formatHookWarnings(result.warnings)}`);
|
|
1031
|
-
}
|
|
1296
|
+
renderSchemaResultHuman(schemaModule, result);
|
|
1032
1297
|
}
|
|
1033
1298
|
if (globalOptions.profile) {
|
|
1034
1299
|
printError(`profile:command=schema took_ms=${Date.now() - startedAt}`);
|
|
@@ -1041,15 +1306,19 @@ export function registerMutationCommands(program) {
|
|
|
1041
1306
|
.option("--add <text>", "Add one comment entry (plain text fallback, text=<value>, markdown pairs, or - for stdin; CSV-like key fragments are preserved as plain text unless text is explicit)")
|
|
1042
1307
|
.option("--stdin", "Read comment text from stdin (supports multiline markdown)")
|
|
1043
1308
|
.option("--file <path>", "Read comment text from file (supports multiline markdown)")
|
|
1309
|
+
.option("--edit <index>", "Replace the comment at 1-based <index> (replacement text from positional [text], --add, --stdin, or --file)", parsePositiveIntOption("--edit"))
|
|
1310
|
+
.option("--delete <index>", "Delete the comment at 1-based <index>", parsePositiveIntOption("--delete"))
|
|
1044
1311
|
.option("--limit <n>", "Return only latest n comments")
|
|
1045
1312
|
.option("--author [value]", "Comment author (optional; falls back to PM_AUTHOR/settings)")
|
|
1046
1313
|
.option("--message <value>", "History message")
|
|
1047
|
-
.option("--allow-audit-comment", "Allow non-owner append-only comment audits without requiring --force")
|
|
1314
|
+
.option("--allow-audit-comment", "Allow non-owner append-only comment audits (add/edit/delete) without requiring --force")
|
|
1048
1315
|
.option("--force", "Force ownership override")
|
|
1049
|
-
.description("List or
|
|
1316
|
+
.description("List, add, edit, or delete comments for an item.")
|
|
1050
1317
|
.action(async (id, text, options, command) => {
|
|
1051
1318
|
const globalOptions = getGlobalOptions(command);
|
|
1052
1319
|
const startedAt = Date.now();
|
|
1320
|
+
const editIndex = typeof options.edit === "number" ? options.edit : undefined;
|
|
1321
|
+
const deleteIndex = typeof options.delete === "number" ? options.delete : undefined;
|
|
1053
1322
|
const addFromOption = typeof options.add === "string" ? options.add : undefined;
|
|
1054
1323
|
const addFromPositional = typeof text === "string" ? text : undefined;
|
|
1055
1324
|
const readFromStdin = options.stdin === true;
|
|
@@ -1070,13 +1339,16 @@ export function registerMutationCommands(program) {
|
|
|
1070
1339
|
add,
|
|
1071
1340
|
stdin: readFromStdin,
|
|
1072
1341
|
file: readFromFile,
|
|
1342
|
+
edit: editIndex,
|
|
1343
|
+
delete: deleteIndex,
|
|
1073
1344
|
limit: typeof options.limit === "string" ? options.limit : undefined,
|
|
1074
1345
|
author: typeof options.author === "string" ? options.author : undefined,
|
|
1075
1346
|
message: typeof options.message === "string" ? options.message : undefined,
|
|
1076
1347
|
allowAuditComment: Boolean(options.allowAuditComment),
|
|
1077
1348
|
force: Boolean(options.force),
|
|
1078
1349
|
}, globalOptions);
|
|
1079
|
-
|
|
1350
|
+
const isMutation = typeof add === "string" || readFromStdin || readFromFile !== undefined || editIndex !== undefined || deleteIndex !== undefined;
|
|
1351
|
+
if (isMutation) {
|
|
1080
1352
|
await invalidateSearchCachesForMutation(globalOptions, result);
|
|
1081
1353
|
}
|
|
1082
1354
|
printResult(result, globalOptions);
|
|
@@ -1297,10 +1569,14 @@ export function registerMutationCommands(program) {
|
|
|
1297
1569
|
const globalOptions = getGlobalOptions(command);
|
|
1298
1570
|
const startedAt = Date.now();
|
|
1299
1571
|
const { runDeps } = await import("./commands/deps.js");
|
|
1572
|
+
// --format and --collapse carry commander defaults ("tree"/"none"), so
|
|
1573
|
+
// they are always strings by the time the action runs; --maxDepth has no
|
|
1574
|
+
// default and may be unset. Use `as string` rather than String(...) so an
|
|
1575
|
+
// omitted option stays undefined instead of becoming the literal "undefined".
|
|
1300
1576
|
const result = await runDeps(id, {
|
|
1301
|
-
format:
|
|
1577
|
+
format: options.format,
|
|
1302
1578
|
maxDepth: typeof options.maxDepth === "string" ? options.maxDepth : undefined,
|
|
1303
|
-
collapse:
|
|
1579
|
+
collapse: options.collapse,
|
|
1304
1580
|
summary: options.summary === true,
|
|
1305
1581
|
}, globalOptions);
|
|
1306
1582
|
printResult(result, globalOptions);
|
|
@@ -1310,4 +1586,4 @@ export function registerMutationCommands(program) {
|
|
|
1310
1586
|
});
|
|
1311
1587
|
}
|
|
1312
1588
|
//# sourceMappingURL=register-mutation.js.map
|
|
1313
|
-
//# debugId=
|
|
1589
|
+
//# debugId=e38412ec-cbfb-5416-8790-6ca1958f596b
|