@unbrained/pm-cli 2026.6.24 → 2026.7.1
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/AGENTS.md +2 -0
- package/CHANGELOG.md +113 -1
- package/CONTRIBUTING.md +30 -0
- package/README.md +16 -3
- package/dist/cli/bootstrap-args.js +89 -79
- package/dist/cli/bootstrap-args.js.map +1 -1
- package/dist/cli/commander-usage.js +3 -3
- package/dist/cli/commander-usage.js.map +1 -1
- package/dist/cli/commands/aggregate.js +8 -7
- package/dist/cli/commands/aggregate.js.map +1 -1
- package/dist/cli/commands/calendar.js +63 -62
- package/dist/cli/commands/calendar.js.map +1 -1
- package/dist/cli/commands/close.d.ts +2 -4
- package/dist/cli/commands/close.js +5 -17
- package/dist/cli/commands/close.js.map +1 -1
- package/dist/cli/commands/completion.js +158 -9
- package/dist/cli/commands/completion.js.map +1 -1
- package/dist/cli/commands/config.d.ts +1 -1
- package/dist/cli/commands/config.js +2 -2
- package/dist/cli/commands/config.js.map +1 -1
- package/dist/cli/commands/context.d.ts +31 -4
- package/dist/cli/commands/context.js +33 -10
- package/dist/cli/commands/context.js.map +1 -1
- package/dist/cli/commands/contracts.js +48 -8
- package/dist/cli/commands/contracts.js.map +1 -1
- package/dist/cli/commands/create.d.ts +1 -6
- package/dist/cli/commands/create.js +491 -587
- package/dist/cli/commands/create.js.map +1 -1
- package/dist/cli/commands/extension/bundled-catalog.js +59 -46
- package/dist/cli/commands/extension/bundled-catalog.js.map +1 -1
- package/dist/cli/commands/extension/describe.d.ts +15 -0
- package/dist/cli/commands/extension/describe.js +48 -2
- package/dist/cli/commands/extension/describe.js.map +1 -1
- package/dist/cli/commands/extension/doctor.js +129 -75
- package/dist/cli/commands/extension/doctor.js.map +1 -1
- package/dist/cli/commands/extension/install-sources.js +37 -7
- package/dist/cli/commands/extension/install-sources.js.map +1 -1
- package/dist/cli/commands/extension/managed-state.js +101 -57
- package/dist/cli/commands/extension/managed-state.js.map +1 -1
- package/dist/cli/commands/extension/scaffold.d.ts +38 -8
- package/dist/cli/commands/extension/scaffold.js +1956 -242
- package/dist/cli/commands/extension/scaffold.js.map +1 -1
- package/dist/cli/commands/extension.d.ts +28 -3
- package/dist/cli/commands/extension.js +1181 -880
- package/dist/cli/commands/extension.js.map +1 -1
- package/dist/cli/commands/index.d.ts +3 -1
- package/dist/cli/commands/index.js +5 -3
- package/dist/cli/commands/index.js.map +1 -1
- package/dist/cli/commands/item-filter-options.d.ts +63 -0
- package/dist/cli/commands/item-filter-options.js +10 -0
- package/dist/cli/commands/item-filter-options.js.map +1 -0
- package/dist/cli/commands/legacy-none-tokens.d.ts +14 -0
- package/dist/cli/commands/legacy-none-tokens.js +31 -2
- package/dist/cli/commands/legacy-none-tokens.js.map +1 -1
- package/dist/cli/commands/linked-artifacts.d.ts +7 -0
- package/dist/cli/commands/linked-artifacts.js +12 -2
- package/dist/cli/commands/linked-artifacts.js.map +1 -1
- package/dist/cli/commands/list-filter-shared.js +55 -48
- package/dist/cli/commands/list-filter-shared.js.map +1 -1
- package/dist/cli/commands/list.d.ts +16 -39
- package/dist/cli/commands/list.js +127 -118
- package/dist/cli/commands/list.js.map +1 -1
- package/dist/cli/commands/next.d.ts +98 -0
- package/dist/cli/commands/next.js +304 -0
- package/dist/cli/commands/next.js.map +1 -0
- package/dist/cli/commands/profile.d.ts +208 -0
- package/dist/cli/commands/profile.js +418 -0
- package/dist/cli/commands/profile.js.map +1 -0
- package/dist/cli/commands/repeatable-metadata-parsers.js +12 -13
- package/dist/cli/commands/repeatable-metadata-parsers.js.map +1 -1
- package/dist/cli/commands/schema.d.ts +7 -0
- package/dist/cli/commands/schema.js +9 -3
- package/dist/cli/commands/schema.js.map +1 -1
- package/dist/cli/commands/search.d.ts +2 -39
- package/dist/cli/commands/search.js +196 -172
- package/dist/cli/commands/search.js.map +1 -1
- package/dist/cli/commands/shared-unset-fields.d.ts +30 -0
- package/dist/cli/commands/shared-unset-fields.js +161 -0
- package/dist/cli/commands/shared-unset-fields.js.map +1 -0
- package/dist/cli/commands/stats.js +15 -3
- package/dist/cli/commands/stats.js.map +1 -1
- package/dist/cli/commands/test.js +115 -125
- package/dist/cli/commands/test.js.map +1 -1
- package/dist/cli/commands/update.d.ts +1 -6
- package/dist/cli/commands/update.js +37 -232
- package/dist/cli/commands/update.js.map +1 -1
- package/dist/cli/commands/validate.js +20 -5
- package/dist/cli/commands/validate.js.map +1 -1
- package/dist/cli/extension-command-options.js +48 -21
- package/dist/cli/extension-command-options.js.map +1 -1
- package/dist/cli/help-content.js +26 -2
- package/dist/cli/help-content.js.map +1 -1
- package/dist/cli/help-json-payload.js +3 -3
- package/dist/cli/help-json-payload.js.map +1 -1
- package/dist/cli/main.js +27 -12
- package/dist/cli/main.js.map +1 -1
- package/dist/cli/register-list-query.js +42 -3
- package/dist/cli/register-list-query.js.map +1 -1
- package/dist/cli/register-mutation.js +86 -2
- package/dist/cli/register-mutation.js.map +1 -1
- package/dist/cli/register-setup.js +67 -6
- package/dist/cli/register-setup.js.map +1 -1
- package/dist/cli/registration-helpers.d.ts +9 -1
- package/dist/cli/registration-helpers.js +149 -123
- package/dist/cli/registration-helpers.js.map +1 -1
- package/dist/cli-bundle/chunks/activity-AW6XVFH6.js +16 -0
- package/dist/cli-bundle/chunks/{activity-N7RVTLBQ.js → activity-DBLQVIP6.js} +9 -11
- package/dist/cli-bundle/chunks/{aggregate-63NWNIBR.js → aggregate-JTEF4BP7.js} +17 -18
- package/dist/cli-bundle/chunks/aggregate-JTEF4BP7.js.map +1 -0
- package/dist/cli-bundle/chunks/{aggregate-YHCYX2EV.js → aggregate-SDF7DUOD.js} +16 -17
- package/dist/cli-bundle/chunks/aggregate-SDF7DUOD.js.map +7 -0
- package/dist/cli-bundle/chunks/{append-VLQQDHMJ.js → append-LOVPGVPT.js} +8 -10
- package/dist/cli-bundle/chunks/{append-VLQQDHMJ.js.map → append-LOVPGVPT.js.map} +1 -1
- package/dist/cli-bundle/chunks/{append-PUKREFV5.js → append-QCFJSDFL.js} +10 -12
- package/dist/cli-bundle/chunks/{append-PUKREFV5.js.map → append-QCFJSDFL.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-ABYCA5VX.js → chunk-22WKIL3H.js} +9 -11
- package/dist/cli-bundle/chunks/{chunk-ABYCA5VX.js.map → chunk-22WKIL3H.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-A66VYUOV.js → chunk-2466X6E4.js} +9 -11
- package/dist/cli-bundle/chunks/{chunk-A66VYUOV.js.map → chunk-2466X6E4.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-F32L4HR6.js → chunk-27BXPBAY.js} +3 -3
- package/dist/cli-bundle/chunks/{schema-QO5I4FBL.js → chunk-2D4HATP2.js} +136 -66
- package/dist/cli-bundle/chunks/chunk-2D4HATP2.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-J7I4C5ZB.js → chunk-3J6JRJ3I.js} +153 -125
- package/dist/cli-bundle/chunks/chunk-3J6JRJ3I.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-OHDQNKJB.js → chunk-3K2M5OYU.js} +106 -34
- package/dist/cli-bundle/chunks/chunk-3K2M5OYU.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-XVYKWZNL.js → chunk-3S2KT7NG.js} +127 -127
- package/dist/cli-bundle/chunks/chunk-3S2KT7NG.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-5BBEWX6C.js → chunk-3VGN2UWE.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-N5B6WZC5.js → chunk-3XZCOZ5J.js} +115 -123
- package/dist/cli-bundle/chunks/chunk-3XZCOZ5J.js.map +1 -0
- package/dist/cli-bundle/chunks/chunk-4A3BJ675.js +799 -0
- package/dist/cli-bundle/chunks/chunk-4A3BJ675.js.map +1 -0
- package/dist/cli-bundle/chunks/chunk-4BU75MF4.js +87 -0
- package/dist/cli-bundle/chunks/chunk-4BU75MF4.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-HZF5RLKX.js → chunk-4DSGXSBL.js} +5 -7
- package/dist/cli-bundle/chunks/{chunk-HZF5RLKX.js.map → chunk-4DSGXSBL.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-JV27C7OZ.js → chunk-4DUVCVLZ.js} +4 -6
- package/dist/cli-bundle/chunks/{chunk-JV27C7OZ.js.map → chunk-4DUVCVLZ.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-IAP5KYBQ.js → chunk-4XOIEKSD.js} +563 -506
- package/dist/cli-bundle/chunks/chunk-4XOIEKSD.js.map +1 -0
- package/dist/cli-bundle/chunks/{context-5LB7UGKE.js → chunk-55SNVXRQ.js} +79 -82
- package/dist/cli-bundle/chunks/chunk-55SNVXRQ.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-BFFO3AIB.js → chunk-5CGRF3L5.js} +128 -128
- package/dist/cli-bundle/chunks/chunk-5CGRF3L5.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-JKL6HRMV.js → chunk-5QFDBI4F.js} +1260 -1046
- package/dist/cli-bundle/chunks/chunk-5QFDBI4F.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-LU36E6GU.js → chunk-64HNBBFQ.js} +8 -12
- package/dist/cli-bundle/chunks/{chunk-LU36E6GU.js.map → chunk-64HNBBFQ.js.map} +1 -1
- package/dist/cli-bundle/chunks/chunk-6AQZPVHQ.js +2444 -0
- package/dist/cli-bundle/chunks/chunk-6AQZPVHQ.js.map +1 -0
- package/dist/cli-bundle/chunks/chunk-7M2HAZEB.js +17 -0
- package/dist/cli-bundle/chunks/chunk-7M2HAZEB.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-VSAABFGQ.js → chunk-7R4QEMZZ.js} +1490 -734
- package/dist/cli-bundle/chunks/chunk-7R4QEMZZ.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-M6TUBOGW.js → chunk-A7FPBAQS.js} +19 -12
- package/dist/cli-bundle/chunks/chunk-A7FPBAQS.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-GQYJEEFX.js → chunk-AVEE5EHK.js} +53 -54
- package/dist/cli-bundle/chunks/chunk-AVEE5EHK.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-FMWW2JDU.js → chunk-AXIDKKAT.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-TIM4OD74.js → chunk-BDTISOSD.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-C4C3EJCJ.js → chunk-BHO33VBQ.js} +509 -363
- package/dist/cli-bundle/chunks/chunk-BHO33VBQ.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-6W3Y65PL.js → chunk-BZCEN4JA.js} +198 -177
- package/dist/cli-bundle/chunks/chunk-BZCEN4JA.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-RRP6D345.js → chunk-CF7RL6FR.js} +12 -16
- package/dist/cli-bundle/chunks/{chunk-RRP6D345.js.map → chunk-CF7RL6FR.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-HC2S36NB.js → chunk-CWFNTKQJ.js} +154 -126
- package/dist/cli-bundle/chunks/chunk-CWFNTKQJ.js.map +1 -0
- package/dist/cli-bundle/chunks/chunk-CZVISY5A.js +87 -0
- package/dist/cli-bundle/chunks/chunk-CZVISY5A.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-CZIFFMZI.js → chunk-DDPTYJIM.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-AYPQUFCX.js → chunk-EJUDVUYZ.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-EOGBMLCE.js → chunk-EVMTBV6V.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-RAWA3Y7O.js → chunk-FFMQB7WR.js} +199 -178
- package/dist/cli-bundle/chunks/chunk-FFMQB7WR.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-CG3KP6I5.js → chunk-G7I7DEZA.js} +4 -4
- package/dist/cli-bundle/chunks/{chunk-MEXZ5XUM.js → chunk-GJ326ZKX.js} +53 -54
- package/dist/cli-bundle/chunks/chunk-GJ326ZKX.js.map +7 -0
- package/dist/cli-bundle/chunks/chunk-HPPFYYOV.js +119 -0
- package/dist/cli-bundle/chunks/chunk-HPPFYYOV.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-OF7V47P3.js → chunk-HXTQJXWT.js} +2172 -2146
- package/dist/cli-bundle/chunks/chunk-HXTQJXWT.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-F4BNR2IN.js → chunk-HYTGA6GI.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-2WCYE3IF.js → chunk-HZZEHPRG.js} +2 -2
- package/dist/cli-bundle/chunks/chunk-IBMFIKVS.js +14 -0
- package/dist/cli-bundle/chunks/chunk-IBMFIKVS.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-YV2OSAMS.js → chunk-IJYK2T43.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-4XDGYFHL.js → chunk-IPYBJWTE.js} +10 -14
- package/dist/cli-bundle/chunks/{chunk-4XDGYFHL.js.map → chunk-IPYBJWTE.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-6EBNFQOR.js → chunk-IZBR4NRW.js} +10 -14
- package/dist/cli-bundle/chunks/{chunk-6EBNFQOR.js.map → chunk-IZBR4NRW.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-VFJYVXHL.js → chunk-JLM7BHI7.js} +7 -9
- package/dist/cli-bundle/chunks/{chunk-VFJYVXHL.js.map → chunk-JLM7BHI7.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-6EL7SW5C.js → chunk-JMP4E6D7.js} +114 -122
- package/dist/cli-bundle/chunks/chunk-JMP4E6D7.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-QOUOMPHO.js → chunk-JPECA746.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-KJZOSF7J.js → chunk-JSU5P7VS.js} +100 -35
- package/dist/cli-bundle/chunks/chunk-JSU5P7VS.js.map +1 -0
- package/dist/cli-bundle/chunks/{context-55VEOYI3.js → chunk-JWXRETDF.js} +79 -82
- package/dist/cli-bundle/chunks/chunk-JWXRETDF.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-OQ2E64FH.js → chunk-KNPEF7QG.js} +4 -4
- package/dist/cli-bundle/chunks/{chunk-3BKH2CL3.js → chunk-L5OEFZQG.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-DTABLLVE.js → chunk-LB6TP6MC.js} +5 -7
- package/dist/cli-bundle/chunks/{chunk-DTABLLVE.js.map → chunk-LB6TP6MC.js.map} +2 -2
- package/dist/cli-bundle/chunks/{chunk-TSI32UEL.js → chunk-MAUKX7JC.js} +6 -8
- package/dist/cli-bundle/chunks/{chunk-TSI32UEL.js.map → chunk-MAUKX7JC.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-SMXSDY7J.js → chunk-MDPEOIGN.js} +2221 -2172
- package/dist/cli-bundle/chunks/chunk-MDPEOIGN.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-5S4ZGDB2.js → chunk-N74UMG5H.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-IXAZI443.js → chunk-NFDPYAIP.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-SKC4UTRP.js → chunk-NKZAN7BD.js} +3 -3
- package/dist/cli-bundle/chunks/chunk-NOLPZMSV.js +116 -0
- package/dist/cli-bundle/chunks/chunk-NOLPZMSV.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-L7UXKP2I.js → chunk-NU2UEROZ.js} +1257 -1029
- package/dist/cli-bundle/chunks/chunk-NU2UEROZ.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-HBAEFWX3.js → chunk-NUHHPVVS.js} +65 -335
- package/dist/cli-bundle/chunks/chunk-NUHHPVVS.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-JPJDP4VU.js → chunk-NWMZWYYB.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-MWMHZOZZ.js → chunk-OGXLACHC.js} +10 -14
- package/dist/cli-bundle/chunks/{chunk-MWMHZOZZ.js.map → chunk-OGXLACHC.js.map} +1 -1
- package/dist/cli-bundle/chunks/chunk-OKQ22KTH.js +379 -0
- package/dist/cli-bundle/chunks/chunk-OKQ22KTH.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-KKX4Z2SE.js → chunk-OTUHB4HS.js} +4 -4
- package/dist/cli-bundle/chunks/{chunk-ZLWRPBOW.js → chunk-QCWF6IYD.js} +510 -364
- package/dist/cli-bundle/chunks/chunk-QCWF6IYD.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-PRVTGX64.js → chunk-RGEMWD6Q.js} +11 -23
- package/dist/cli-bundle/chunks/chunk-RGEMWD6Q.js.map +7 -0
- package/dist/cli-bundle/chunks/chunk-RH5ZBYFD.js +809 -0
- package/dist/cli-bundle/chunks/chunk-RH5ZBYFD.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-ALQKV6U7.js → chunk-RLDHZHQS.js} +12 -16
- package/dist/cli-bundle/chunks/{chunk-ALQKV6U7.js.map → chunk-RLDHZHQS.js.map} +1 -1
- package/dist/cli-bundle/chunks/{schema-C6QA367T.js → chunk-RMMQ74TG.js} +144 -67
- package/dist/cli-bundle/chunks/chunk-RMMQ74TG.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-EYPINTFR.js → chunk-RVUALSJF.js} +1516 -753
- package/dist/cli-bundle/chunks/chunk-RVUALSJF.js.map +7 -0
- package/dist/cli-bundle/chunks/chunk-SDR5J34Q.js +2468 -0
- package/dist/cli-bundle/chunks/chunk-SDR5J34Q.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-WB5BYQMF.js → chunk-SLMUGTK3.js} +4 -4
- package/dist/cli-bundle/chunks/{chunk-SUREE24M.js → chunk-TP5Q5ZD3.js} +12 -24
- package/dist/cli-bundle/chunks/chunk-TP5Q5ZD3.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-UACWNBL2.js → chunk-UYUYDGIB.js} +7 -9
- package/dist/cli-bundle/chunks/{chunk-UACWNBL2.js.map → chunk-UYUYDGIB.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-V4UYNSEM.js → chunk-UZIWVBE6.js} +6 -8
- package/dist/cli-bundle/chunks/{chunk-V4UYNSEM.js.map → chunk-UZIWVBE6.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-EWRSXOIZ.js → chunk-V3NOKJF2.js} +11 -13
- package/dist/cli-bundle/chunks/{chunk-EWRSXOIZ.js.map → chunk-V3NOKJF2.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-XXKV4UWE.js → chunk-VARHOHYV.js} +571 -507
- package/dist/cli-bundle/chunks/chunk-VARHOHYV.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-AEACLRVH.js → chunk-VICZWYGZ.js} +18 -11
- package/dist/cli-bundle/chunks/chunk-VICZWYGZ.js.map +7 -0
- package/dist/cli-bundle/chunks/chunk-VY3VQ22F.js +84 -0
- package/dist/cli-bundle/chunks/chunk-VY3VQ22F.js.map +1 -0
- package/dist/cli-bundle/chunks/chunk-VZDBVEZR.js +382 -0
- package/dist/cli-bundle/chunks/chunk-VZDBVEZR.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-GDUMGZK3.js → chunk-W4ULYO7Z.js} +11 -13
- package/dist/cli-bundle/chunks/{chunk-GDUMGZK3.js.map → chunk-W4ULYO7Z.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-I6QMJ2XT.js → chunk-WYDHYJPO.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-ALKFCIIB.js → chunk-YITK2PJ6.js} +9 -11
- package/dist/cli-bundle/chunks/{chunk-ALKFCIIB.js.map → chunk-YITK2PJ6.js.map} +1 -1
- package/dist/cli-bundle/chunks/chunk-YJIEJRZB.js +84 -0
- package/dist/cli-bundle/chunks/chunk-YJIEJRZB.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-LNEDHJNQ.js → chunk-ZETXE4SE.js} +66 -329
- package/dist/cli-bundle/chunks/chunk-ZETXE4SE.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-KIEAK7YE.js → chunk-ZRP4VG5U.js} +2 -2
- package/dist/cli-bundle/chunks/{claim-FZZZCAY6.js → claim-EMQLYPRW.js} +10 -12
- package/dist/cli-bundle/chunks/{claim-FZZZCAY6.js.map → claim-EMQLYPRW.js.map} +1 -1
- package/dist/cli-bundle/chunks/{claim-XK5QBZE3.js → claim-T3GCKV7C.js} +8 -10
- package/dist/cli-bundle/chunks/{claim-XK5QBZE3.js.map → claim-T3GCKV7C.js.map} +1 -1
- package/dist/cli-bundle/chunks/close-E6ZZGCJY.js +14 -0
- package/dist/cli-bundle/chunks/{close-QHMVWM7M.js → close-TQYAAFJP.js} +7 -8
- package/dist/cli-bundle/chunks/{close-many-OIXJE2JZ.js → close-many-BG5QQIDQ.js} +16 -18
- package/dist/cli-bundle/chunks/{close-many-OIXJE2JZ.js.map → close-many-BG5QQIDQ.js.map} +1 -1
- package/dist/cli-bundle/chunks/{close-many-SUU5BS2C.js → close-many-LDRVEQY2.js} +18 -20
- package/dist/cli-bundle/chunks/{close-many-SUU5BS2C.js.map → close-many-LDRVEQY2.js.map} +1 -1
- package/dist/cli-bundle/chunks/{comments-5YM62D75.js → comments-QCKR2YY2.js} +11 -13
- package/dist/cli-bundle/chunks/{comments-5YM62D75.js.map → comments-QCKR2YY2.js.map} +1 -1
- package/dist/cli-bundle/chunks/{comments-RH3IBIRH.js → comments-YUXJRZPQ.js} +9 -11
- package/dist/cli-bundle/chunks/{comments-RH3IBIRH.js.map → comments-YUXJRZPQ.js.map} +1 -1
- package/dist/cli-bundle/chunks/{config-NCNNWF6R.js → config-DMSU64QO.js} +18 -387
- package/dist/cli-bundle/chunks/config-DMSU64QO.js.map +7 -0
- package/dist/cli-bundle/chunks/{config-SW3U7XP2.js → config-QH2DICD6.js} +18 -380
- package/dist/cli-bundle/chunks/config-QH2DICD6.js.map +1 -0
- package/dist/cli-bundle/chunks/context-B6275WPX.js +46 -0
- package/dist/cli-bundle/chunks/context-OCZ3FJ4Z.js +42 -0
- package/dist/cli-bundle/chunks/{contracts-SY6PDFIK.js → contracts-HN7ABKLP.js} +72 -15
- package/dist/cli-bundle/chunks/contracts-HN7ABKLP.js.map +7 -0
- package/dist/cli-bundle/chunks/{contracts-JXFGBOYT.js → contracts-W4FZVVD6.js} +72 -15
- package/dist/cli-bundle/chunks/contracts-W4FZVVD6.js.map +1 -0
- package/dist/cli-bundle/chunks/{copy-N3GE6FYS.js → copy-BTJOSKKT.js} +7 -11
- package/dist/cli-bundle/chunks/{copy-N3GE6FYS.js.map → copy-BTJOSKKT.js.map} +1 -1
- package/dist/cli-bundle/chunks/{copy-IEDBJOOX.js → copy-DEM4DATS.js} +9 -13
- package/dist/cli-bundle/chunks/{copy-IEDBJOOX.js.map → copy-DEM4DATS.js.map} +1 -1
- package/dist/cli-bundle/chunks/create-OH3BDGBB.js +28 -0
- package/dist/cli-bundle/chunks/{create-O4VONGPG.js → create-RLRJMRTM.js} +12 -14
- package/dist/cli-bundle/chunks/{delete-LPEIF7RU.js → delete-BHK7VB2Z.js} +5 -7
- package/dist/cli-bundle/chunks/{delete-LPEIF7RU.js.map → delete-BHK7VB2Z.js.map} +1 -1
- package/dist/cli-bundle/chunks/{delete-724EQ6OS.js → delete-LSVHAB4Y.js} +7 -9
- package/dist/cli-bundle/chunks/{delete-724EQ6OS.js.map → delete-LSVHAB4Y.js.map} +1 -1
- package/dist/cli-bundle/chunks/{deps-RSBU4SIU.js → deps-4UDFJRUA.js} +8 -11
- package/dist/cli-bundle/chunks/{deps-RSBU4SIU.js.map → deps-4UDFJRUA.js.map} +1 -1
- package/dist/cli-bundle/chunks/{deps-T3Y6Y7RT.js → deps-XHYXWEPT.js} +6 -9
- package/dist/cli-bundle/chunks/{deps-T3Y6Y7RT.js.map → deps-XHYXWEPT.js.map} +1 -1
- package/dist/cli-bundle/chunks/{docs-IFS7HZPP.js → docs-26S44RXU.js} +8 -9
- package/dist/cli-bundle/chunks/{docs-IFS7HZPP.js.map → docs-26S44RXU.js.map} +1 -1
- package/dist/cli-bundle/chunks/{docs-75ZLCO3G.js → docs-GYZNVS26.js} +10 -11
- package/dist/cli-bundle/chunks/{docs-75ZLCO3G.js.map → docs-GYZNVS26.js.map} +1 -1
- package/dist/cli-bundle/chunks/{eval-L2KD7W3M.js → eval-PGRVIJQU.js} +12 -14
- package/dist/cli-bundle/chunks/{eval-L2KD7W3M.js.map → eval-PGRVIJQU.js.map} +1 -1
- package/dist/cli-bundle/chunks/{eval-QGR7JCQO.js → eval-UYF3ZPVO.js} +10 -12
- package/dist/cli-bundle/chunks/{eval-QGR7JCQO.js.map → eval-UYF3ZPVO.js.map} +1 -1
- package/dist/cli-bundle/chunks/{extension-YQF4CPIR.js → extension-CPSLJQVE.js} +12 -7
- package/dist/cli-bundle/chunks/{extension-3JYWJ5K2.js → extension-CXJ6RELI.js} +12 -7
- package/dist/cli-bundle/chunks/{files-EPEJMJHQ.js → files-MBNICQFM.js} +9 -11
- package/dist/cli-bundle/chunks/{files-EPEJMJHQ.js.map → files-MBNICQFM.js.map} +1 -1
- package/dist/cli-bundle/chunks/{files-5BQWDRDT.js → files-NQHEXUZD.js} +11 -13
- package/dist/cli-bundle/chunks/{files-5BQWDRDT.js.map → files-NQHEXUZD.js.map} +1 -1
- package/dist/cli-bundle/chunks/{focus-RWGKD76E.js → focus-DWYIG7GU.js} +10 -14
- package/dist/cli-bundle/chunks/{focus-RWGKD76E.js.map → focus-DWYIG7GU.js.map} +1 -1
- package/dist/cli-bundle/chunks/{focus-DQVJAPOE.js → focus-XZW5423D.js} +8 -12
- package/dist/cli-bundle/chunks/{focus-DQVJAPOE.js.map → focus-XZW5423D.js.map} +1 -1
- package/dist/cli-bundle/chunks/{gc-BEJMQT64.js → gc-7GQYOS2G.js} +3 -3
- package/dist/cli-bundle/chunks/{gc-JEFQDJPA.js → gc-LPVMKJQJ.js} +3 -3
- package/dist/cli-bundle/chunks/{get-LQG6PEVG.js → get-A7MAOHCU.js} +10 -13
- package/dist/cli-bundle/chunks/{get-LQG6PEVG.js.map → get-A7MAOHCU.js.map} +1 -1
- package/dist/cli-bundle/chunks/{get-WVN75H42.js → get-DSDEKJ3L.js} +12 -15
- package/dist/cli-bundle/chunks/{get-WVN75H42.js.map → get-DSDEKJ3L.js.map} +1 -1
- package/dist/cli-bundle/chunks/{health-JJJOY7DJ.js → health-3IPFLKXB.js} +17 -17
- package/dist/cli-bundle/chunks/{health-P67NZ6TT.js → health-GZXGBZ36.js} +17 -17
- package/dist/cli-bundle/chunks/{history-RUKPKNY7.js → history-NERDJNUB.js} +8 -10
- package/dist/cli-bundle/chunks/history-WSZHY3PN.js +18 -0
- package/dist/cli-bundle/chunks/{history-compact-NQ7VPRVT.js → history-compact-2WRZ2WK4.js} +11 -14
- package/dist/cli-bundle/chunks/{history-compact-NQ7VPRVT.js.map → history-compact-2WRZ2WK4.js.map} +1 -1
- package/dist/cli-bundle/chunks/{history-compact-ZAOWR7GD.js → history-compact-HR7BB4LR.js} +13 -16
- package/dist/cli-bundle/chunks/{history-compact-ZAOWR7GD.js.map → history-compact-HR7BB4LR.js.map} +1 -1
- package/dist/cli-bundle/chunks/history-redact-MP6CH7U5.js +19 -0
- package/dist/cli-bundle/chunks/{history-redact-YY4XYVEP.js → history-redact-O3NBCNWC.js} +9 -11
- package/dist/cli-bundle/chunks/{history-repair-EHL4ODQY.js → history-repair-LCMOS45X.js} +11 -14
- package/dist/cli-bundle/chunks/{history-repair-EHL4ODQY.js.map → history-repair-LCMOS45X.js.map} +1 -1
- package/dist/cli-bundle/chunks/{history-repair-YSQH6SY6.js → history-repair-XA3LC4GA.js} +13 -16
- package/dist/cli-bundle/chunks/{history-repair-YSQH6SY6.js.map → history-repair-XA3LC4GA.js.map} +1 -1
- package/dist/cli-bundle/chunks/{init-HBFGYS66.js → init-64XDLQJB.js} +12 -11
- package/dist/cli-bundle/chunks/init-PAX32BJA.js +22 -0
- package/dist/cli-bundle/chunks/{learnings-KFQO7GEZ.js → learnings-JR6MA5TI.js} +9 -11
- package/dist/cli-bundle/chunks/{learnings-KFQO7GEZ.js.map → learnings-JR6MA5TI.js.map} +1 -1
- package/dist/cli-bundle/chunks/{learnings-J555ZFPD.js → learnings-LPKCSJX7.js} +11 -13
- package/dist/cli-bundle/chunks/{learnings-J555ZFPD.js.map → learnings-LPKCSJX7.js.map} +1 -1
- package/dist/cli-bundle/chunks/{list-C7R33MD5.js → list-DNBJVO3E.js} +10 -10
- package/dist/cli-bundle/chunks/{list-DSN6UNFB.js → list-G5Y65VF6.js} +10 -10
- package/dist/cli-bundle/chunks/next-BCERKDUR.js +277 -0
- package/dist/cli-bundle/chunks/next-BCERKDUR.js.map +7 -0
- package/dist/cli-bundle/chunks/next-FYTQF6HG.js +274 -0
- package/dist/cli-bundle/chunks/next-FYTQF6HG.js.map +1 -0
- package/dist/cli-bundle/chunks/{notes-V4VNIQL4.js → notes-2BMU3VVQ.js} +9 -11
- package/dist/cli-bundle/chunks/{notes-V4VNIQL4.js.map → notes-2BMU3VVQ.js.map} +1 -1
- package/dist/cli-bundle/chunks/{notes-VYJFN2A3.js → notes-6KTGO2OJ.js} +11 -13
- package/dist/cli-bundle/chunks/{notes-VYJFN2A3.js.map → notes-6KTGO2OJ.js.map} +1 -1
- package/dist/cli-bundle/chunks/{plan-RBHQ5PO7.js → plan-4WXEQCTN.js} +15 -18
- package/dist/cli-bundle/chunks/{plan-RBHQ5PO7.js.map → plan-4WXEQCTN.js.map} +1 -1
- package/dist/cli-bundle/chunks/{plan-DHRSVSHR.js → plan-RKZHQVXR.js} +17 -20
- package/dist/cli-bundle/chunks/{plan-DHRSVSHR.js.map → plan-RKZHQVXR.js.map} +1 -1
- package/dist/cli-bundle/chunks/profile-4OMM32CD.js +1235 -0
- package/dist/cli-bundle/chunks/profile-4OMM32CD.js.map +7 -0
- package/dist/cli-bundle/chunks/profile-QLER5ENE.js +1197 -0
- package/dist/cli-bundle/chunks/profile-QLER5ENE.js.map +1 -0
- package/dist/cli-bundle/chunks/{register-list-query-OM3E2KMY.js → register-list-query-7LV46VAU.js} +45 -21
- package/dist/cli-bundle/chunks/register-list-query-7LV46VAU.js.map +1 -0
- package/dist/cli-bundle/chunks/{register-list-query-CCMHGZTF.js → register-list-query-SNG5PGA4.js} +44 -20
- package/dist/cli-bundle/chunks/register-list-query-SNG5PGA4.js.map +7 -0
- package/dist/cli-bundle/chunks/{register-mutation-N3CDEGZU.js → register-mutation-ENNDUAZG.js} +106 -40
- package/dist/cli-bundle/chunks/register-mutation-ENNDUAZG.js.map +1 -0
- package/dist/cli-bundle/chunks/{register-mutation-UXTTWL6N.js → register-mutation-KK7PHYYU.js} +105 -39
- package/dist/cli-bundle/chunks/register-mutation-KK7PHYYU.js.map +7 -0
- package/dist/cli-bundle/chunks/{register-operations-UDIFMQKD.js → register-operations-C6OWLDSH.js} +32 -34
- package/dist/cli-bundle/chunks/{register-operations-UDIFMQKD.js.map → register-operations-C6OWLDSH.js.map} +1 -1
- package/dist/cli-bundle/chunks/{register-operations-R2FLOCRI.js → register-operations-HZ6XERQG.js} +30 -32
- package/dist/cli-bundle/chunks/{register-operations-R2FLOCRI.js.map → register-operations-HZ6XERQG.js.map} +1 -1
- package/dist/cli-bundle/chunks/{register-setup-G5LTSFYK.js → register-setup-P67EMBDJ.js} +68 -25
- package/dist/cli-bundle/chunks/register-setup-P67EMBDJ.js.map +1 -0
- package/dist/cli-bundle/chunks/{register-setup-TWHKICM2.js → register-setup-ZKJ53RS7.js} +67 -24
- package/dist/cli-bundle/chunks/register-setup-ZKJ53RS7.js.map +7 -0
- package/dist/cli-bundle/chunks/{restore-LL2WLEDG.js → restore-4MHZFJ2E.js} +9 -11
- package/dist/cli-bundle/chunks/restore-YALDGTQR.js +17 -0
- package/dist/cli-bundle/chunks/{scheduling-shortcuts-M4H2ZI64.js → scheduling-shortcuts-LB6DOLRL.js} +14 -16
- package/dist/cli-bundle/chunks/{scheduling-shortcuts-M4H2ZI64.js.map → scheduling-shortcuts-LB6DOLRL.js.map} +1 -1
- package/dist/cli-bundle/chunks/{scheduling-shortcuts-255GI3BU.js → scheduling-shortcuts-UTOYKLXQ.js} +12 -14
- package/dist/cli-bundle/chunks/{scheduling-shortcuts-255GI3BU.js.map → scheduling-shortcuts-UTOYKLXQ.js.map} +1 -1
- package/dist/cli-bundle/chunks/schema-73HR2OJW.js +75 -0
- package/dist/cli-bundle/chunks/schema-U6LJKSIR.js +71 -0
- package/dist/cli-bundle/chunks/{search-2EI6EAXH.js → search-AXPXKZER.js} +10 -12
- package/dist/cli-bundle/chunks/{search-QBFBLQRO.js → search-KILGT37L.js} +10 -12
- package/dist/cli-bundle/chunks/{stats-TKC6CAKB.js → stats-PSYVVTNZ.js} +21 -13
- package/dist/cli-bundle/chunks/stats-PSYVVTNZ.js.map +1 -0
- package/dist/cli-bundle/chunks/{stats-TCW2SZQG.js → stats-W5KNVJWQ.js} +20 -12
- package/dist/cli-bundle/chunks/stats-W5KNVJWQ.js.map +7 -0
- package/dist/cli-bundle/chunks/{telemetry-BT2VSWU2.js → telemetry-BZUF6H7G.js} +4 -4
- package/dist/cli-bundle/chunks/{telemetry-LQ6FRTUT.js → telemetry-GAHHQTOS.js} +4 -4
- package/dist/cli-bundle/chunks/test-ACD52Z3S.js +35 -0
- package/dist/cli-bundle/chunks/test-ACD52Z3S.js.map +7 -0
- package/dist/cli-bundle/chunks/{test-NV2DRPUS.js → test-PWDIZ255.js} +15 -16
- package/dist/cli-bundle/chunks/test-PWDIZ255.js.map +1 -0
- package/dist/cli-bundle/chunks/{test-all-DZ76VTPQ.js → test-all-L2MDDUCA.js} +20 -22
- package/dist/cli-bundle/chunks/{test-all-DZ76VTPQ.js.map → test-all-L2MDDUCA.js.map} +1 -1
- package/dist/cli-bundle/chunks/{test-all-REW67LXT.js → test-all-RBZ6DLU2.js} +18 -20
- package/dist/cli-bundle/chunks/{test-all-REW67LXT.js.map → test-all-RBZ6DLU2.js.map} +1 -1
- package/dist/cli-bundle/chunks/{test-runs-PX73DMMI.js → test-runs-PLRAZEFW.js} +5 -6
- package/dist/cli-bundle/chunks/test-runs-PLRAZEFW.js.map +7 -0
- package/dist/cli-bundle/chunks/{test-runs-FQ5WNQLP.js → test-runs-UXIXPDKU.js} +6 -7
- package/dist/cli-bundle/chunks/test-runs-UXIXPDKU.js.map +1 -0
- package/dist/cli-bundle/chunks/update-AMRSOIWP.js +24 -0
- package/dist/cli-bundle/chunks/update-AMRSOIWP.js.map +7 -0
- package/dist/cli-bundle/chunks/update-KFX2SIAC.js +28 -0
- package/dist/cli-bundle/chunks/update-KFX2SIAC.js.map +1 -0
- package/dist/cli-bundle/chunks/{update-many-Q5ZEI64S.js → update-many-RNSBX2TA.js} +35 -36
- package/dist/cli-bundle/chunks/{update-many-Q5ZEI64S.js.map → update-many-RNSBX2TA.js.map} +1 -1
- package/dist/cli-bundle/chunks/{update-many-2ILP6E4Y.js → update-many-Z5GJS5LC.js} +33 -34
- package/dist/cli-bundle/chunks/{update-many-2ILP6E4Y.js.map → update-many-Z5GJS5LC.js.map} +1 -1
- package/dist/cli-bundle/chunks/{upgrade-FOZKQTQF.js → upgrade-BRL6KCOJ.js} +13 -8
- package/dist/cli-bundle/chunks/{upgrade-FOZKQTQF.js.map → upgrade-BRL6KCOJ.js.map} +1 -1
- package/dist/cli-bundle/chunks/{upgrade-DHL74PQH.js → upgrade-HAK6JG2O.js} +11 -6
- package/dist/cli-bundle/chunks/{upgrade-DHL74PQH.js.map → upgrade-HAK6JG2O.js.map} +1 -1
- package/dist/cli-bundle/chunks/{validate-HYZNIB6W.js → validate-MTUVL5VC.js} +38 -28
- package/dist/cli-bundle/chunks/validate-MTUVL5VC.js.map +7 -0
- package/dist/cli-bundle/chunks/{validate-54SYJ7QW.js → validate-X5W76YJL.js} +39 -29
- package/dist/cli-bundle/chunks/validate-X5W76YJL.js.map +1 -0
- package/dist/cli-bundle/main.js +95 -724
- package/dist/cli-bundle/main.js.map +4 -4
- package/dist/core/config/positional-value.d.ts +2 -0
- package/dist/core/config/positional-value.js +2 -2
- package/dist/core/config/positional-value.js.map +1 -1
- package/dist/core/extensions/activation-summary-markdown.d.ts +71 -0
- package/dist/core/extensions/activation-summary-markdown.js +151 -0
- package/dist/core/extensions/activation-summary-markdown.js.map +1 -0
- package/dist/core/extensions/activation-summary.d.ts +2 -0
- package/dist/core/extensions/activation-summary.js +3 -2
- package/dist/core/extensions/activation-summary.js.map +1 -1
- package/dist/core/extensions/capability-usage.d.ts +1 -1
- package/dist/core/extensions/capability-usage.js +4 -3
- package/dist/core/extensions/capability-usage.js.map +1 -1
- package/dist/core/extensions/extension-policy.d.ts +18 -3
- package/dist/core/extensions/extension-policy.js +116 -106
- package/dist/core/extensions/extension-policy.js.map +1 -1
- package/dist/core/extensions/extension-registries.js +3 -2
- package/dist/core/extensions/extension-registries.js.map +1 -1
- package/dist/core/extensions/extension-types.d.ts +21 -1
- package/dist/core/extensions/extension-types.js +3 -2
- package/dist/core/extensions/extension-types.js.map +1 -1
- package/dist/core/extensions/loader.js +439 -232
- package/dist/core/extensions/loader.js.map +1 -1
- package/dist/core/fs/fs-utils.js +27 -2
- package/dist/core/fs/fs-utils.js.map +1 -1
- package/dist/core/item/actionability.d.ts +57 -0
- package/dist/core/item/actionability.js +178 -0
- package/dist/core/item/actionability.js.map +1 -0
- package/dist/core/item/item-format.js +523 -410
- package/dist/core/item/item-format.js.map +1 -1
- package/dist/core/item/type-registry.js +18 -45
- package/dist/core/item/type-registry.js.map +1 -1
- package/dist/core/profile/profile-describe.d.ts +64 -0
- package/dist/core/profile/profile-describe.js +83 -0
- package/dist/core/profile/profile-describe.js.map +1 -0
- package/dist/core/profile/profile-lint.d.ts +53 -0
- package/dist/core/profile/profile-lint.js +422 -0
- package/dist/core/profile/profile-lint.js.map +1 -0
- package/dist/core/profile/profile-plan.d.ts +145 -0
- package/dist/core/profile/profile-plan.js +0 -0
- package/dist/core/profile/profile-plan.js.map +1 -0
- package/dist/core/profile/profile-presets.d.ts +218 -0
- package/dist/core/profile/profile-presets.js +325 -0
- package/dist/core/profile/profile-presets.js.map +1 -0
- package/dist/core/schema/fields-file.js +25 -25
- package/dist/core/schema/fields-file.js.map +1 -1
- package/dist/core/schema/item-types-file.js +3 -3
- package/dist/core/schema/item-types-file.js.map +1 -1
- package/dist/core/schema/runtime-schema.js +4 -4
- package/dist/core/schema/runtime-schema.js.map +1 -1
- package/dist/core/schema/status-defs-file.js +3 -3
- package/dist/core/schema/status-defs-file.js.map +1 -1
- package/dist/core/shared/serialization.js +83 -62
- package/dist/core/shared/serialization.js.map +1 -1
- package/dist/core/store/item-store.d.ts +1 -0
- package/dist/core/store/item-store.js +16 -8
- package/dist/core/store/item-store.js.map +1 -1
- package/dist/core/store/paths.js +4 -32
- package/dist/core/store/paths.js.map +1 -1
- package/dist/core/store/settings.js +14 -14
- package/dist/core/store/settings.js.map +1 -1
- package/dist/core/telemetry/observability.js +50 -54
- package/dist/core/telemetry/observability.js.map +1 -1
- package/dist/core/telemetry/runtime.js +11 -2
- package/dist/core/telemetry/runtime.js.map +1 -1
- package/dist/core/test/background-runs.js +3 -2
- package/dist/core/test/background-runs.js.map +1 -1
- package/dist/core/validate/linked-artifact-reference.d.ts +24 -0
- package/dist/core/validate/linked-artifact-reference.js +41 -0
- package/dist/core/validate/linked-artifact-reference.js.map +1 -0
- package/dist/mcp/server.js +540 -420
- package/dist/mcp/server.js.map +1 -1
- package/dist/mcp/tool-definitions.js +33 -2
- package/dist/mcp/tool-definitions.js.map +1 -1
- package/dist/sdk/cli-contracts/commander-types.d.ts +1 -0
- package/dist/sdk/cli-contracts/commander-types.js +15 -2
- package/dist/sdk/cli-contracts/commander-types.js.map +1 -1
- package/dist/sdk/cli-contracts/enum-contracts.d.ts +3 -3
- package/dist/sdk/cli-contracts/enum-contracts.js +6 -2
- package/dist/sdk/cli-contracts/enum-contracts.js.map +1 -1
- package/dist/sdk/cli-contracts/flag-contracts.d.ts +149 -0
- package/dist/sdk/cli-contracts/flag-contracts.js +1514 -0
- package/dist/sdk/cli-contracts/flag-contracts.js.map +1 -0
- package/dist/sdk/cli-contracts/string-lists.d.ts +14 -0
- package/dist/sdk/cli-contracts/string-lists.js +20 -0
- package/dist/sdk/cli-contracts/string-lists.js.map +1 -0
- package/dist/sdk/cli-contracts/tool-option-contracts.d.ts +1 -1
- package/dist/sdk/cli-contracts/tool-option-contracts.js +51 -109
- package/dist/sdk/cli-contracts/tool-option-contracts.js.map +1 -1
- package/dist/sdk/cli-contracts/tool-parameter-tables.d.ts +17 -0
- package/dist/sdk/cli-contracts/tool-parameter-tables.js +54 -5
- package/dist/sdk/cli-contracts/tool-parameter-tables.js.map +1 -1
- package/dist/sdk/cli-contracts/tool-schema.d.ts +74 -0
- package/dist/sdk/cli-contracts/tool-schema.js +871 -0
- package/dist/sdk/cli-contracts/tool-schema.js.map +1 -0
- package/dist/sdk/cli-contracts.d.ts +13 -193
- package/dist/sdk/cli-contracts.js +5 -2277
- package/dist/sdk/cli-contracts.js.map +1 -1
- package/dist/sdk/compose.d.ts +11 -5
- package/dist/sdk/compose.js +240 -124
- package/dist/sdk/compose.js.map +1 -1
- package/dist/sdk/define.d.ts +14 -0
- package/dist/sdk/define.js +17 -2
- package/dist/sdk/define.js.map +1 -1
- package/dist/sdk/index.d.ts +14 -3
- package/dist/sdk/index.js +14 -3
- package/dist/sdk/index.js.map +1 -1
- package/dist/sdk/testing.d.ts +82 -2
- package/dist/sdk/testing.js +74 -3
- package/dist/sdk/testing.js.map +1 -1
- package/docs/AGENT_GUIDE.md +2 -0
- package/docs/CLAUDE_CODE_PLUGIN.md +2 -2
- package/docs/COMMANDS.md +37 -0
- package/docs/EXTENSIONS.md +12 -13
- package/docs/RELEASING.md +8 -4
- package/docs/SDK.md +184 -17
- package/docs/TESTING.md +12 -0
- package/docs/examples/policy-restricted-extension/README.md +6 -0
- package/docs/examples/policy-restricted-extension/index.ts +40 -0
- package/docs/examples/policy-restricted-extension/manifest.json +2 -2
- package/docs/examples/starter-extension/README.md +14 -2
- package/docs/examples/starter-extension/{index.js → index.ts} +51 -6
- package/docs/examples/starter-extension/manifest.json +2 -2
- package/package.json +20 -7
- package/packages/pm-beads/extensions/beads/index.ts +3 -3
- package/packages/pm-beads/extensions/beads/manifest.json +2 -2
- package/packages/pm-beads/extensions/beads/runtime-loader.ts +19 -7
- package/packages/pm-beads/extensions/beads/runtime.ts +155 -37
- package/packages/pm-calendar/extensions/calendar/index.ts +3 -3
- package/packages/pm-calendar/extensions/calendar/manifest.json +2 -2
- package/packages/pm-calendar/extensions/calendar/runtime.ts +2 -2
- package/packages/pm-command-kit/extensions/command-kit/index.ts +1 -1
- package/packages/pm-command-kit/extensions/command-kit/manifest.json +2 -2
- package/packages/pm-governance-audit/extensions/governance-audit/index.ts +2 -2
- package/packages/pm-governance-audit/extensions/governance-audit/manifest.json +2 -2
- package/packages/pm-governance-audit/extensions/governance-audit/runtime.ts +1 -1
- package/packages/pm-guide-shell/extensions/guide-shell/index.ts +2 -2
- package/packages/pm-guide-shell/extensions/guide-shell/manifest.json +2 -2
- package/packages/pm-guide-shell/extensions/guide-shell/runtime.ts +1 -1
- package/packages/pm-kanban/README.md +97 -0
- package/packages/pm-kanban/extensions/kanban/index.ts +191 -0
- package/packages/pm-kanban/extensions/kanban/manifest.json +19 -0
- package/packages/pm-kanban/package.json +57 -0
- package/packages/pm-lifecycle-hooks/extensions/lifecycle-hooks/index.ts +1 -1
- package/packages/pm-lifecycle-hooks/extensions/lifecycle-hooks/manifest.json +2 -2
- package/packages/pm-linked-test-adapters/extensions/linked-test-adapters/index.ts +2 -2
- package/packages/pm-linked-test-adapters/extensions/linked-test-adapters/manifest.json +2 -2
- package/packages/pm-linked-test-adapters/extensions/linked-test-adapters/runtime.ts +1 -1
- package/packages/pm-search-advanced/extensions/search-advanced/index.ts +2 -2
- package/packages/pm-search-advanced/extensions/search-advanced/manifest.json +2 -2
- package/packages/pm-search-advanced/extensions/search-advanced/runtime.ts +1 -1
- package/packages/pm-templates/extensions/templates/index.ts +2 -2
- package/packages/pm-templates/extensions/templates/manifest.json +2 -2
- package/packages/pm-templates/extensions/templates/runtime.ts +1 -1
- package/packages/pm-todos/extensions/todos/index.ts +3 -3
- package/packages/pm-todos/extensions/todos/manifest.json +2 -2
- package/packages/pm-todos/extensions/todos/runtime-loader.ts +19 -7
- package/packages/pm-todos/extensions/todos/runtime.ts +177 -43
- package/plugins/pm-claude/scripts/pm-mcp-server.mjs +2 -2
- package/plugins/pm-codex/scripts/pm-mcp-server.mjs +2 -2
- package/scripts/bundle-cli.mjs +1 -1
- package/dist/cli-bundle/chunks/activity-54TXGJ2T.js +0 -18
- package/dist/cli-bundle/chunks/aggregate-63NWNIBR.js.map +0 -1
- package/dist/cli-bundle/chunks/aggregate-YHCYX2EV.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-6EL7SW5C.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-6W3Y65PL.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-AEACLRVH.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-B74BP6IS.js +0 -78
- package/dist/cli-bundle/chunks/chunk-B74BP6IS.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-BFFO3AIB.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-C4C3EJCJ.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-EYPINTFR.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-FBLT6WGK.js +0 -75
- package/dist/cli-bundle/chunks/chunk-FBLT6WGK.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-GQYJEEFX.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-HBAEFWX3.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-HC2S36NB.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-IAP5KYBQ.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-INPHFO33.js +0 -764
- package/dist/cli-bundle/chunks/chunk-INPHFO33.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-IOT6WRL5.js +0 -86
- package/dist/cli-bundle/chunks/chunk-IOT6WRL5.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-ISEKN64V.js +0 -35
- package/dist/cli-bundle/chunks/chunk-ISEKN64V.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-J3NMWFIN.js +0 -115
- package/dist/cli-bundle/chunks/chunk-J3NMWFIN.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-J7I4C5ZB.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-JKL6HRMV.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-KJZOSF7J.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-L7UXKP2I.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-LNEDHJNQ.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-M6TUBOGW.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-MEXZ5XUM.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-N5B6WZC5.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-NJ73ALW2.js +0 -761
- package/dist/cli-bundle/chunks/chunk-NJ73ALW2.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-NVXGVEFD.js +0 -83
- package/dist/cli-bundle/chunks/chunk-NVXGVEFD.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-OF7V47P3.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-OHDQNKJB.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-PEL2NLQE.js +0 -118
- package/dist/cli-bundle/chunks/chunk-PEL2NLQE.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-PRVTGX64.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-RAWA3Y7O.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-SMXSDY7J.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-SUREE24M.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-TKPP4GOO.js +0 -654
- package/dist/cli-bundle/chunks/chunk-TKPP4GOO.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-VSAABFGQ.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-W2VMLL5S.js +0 -32
- package/dist/cli-bundle/chunks/chunk-W2VMLL5S.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-XVYKWZNL.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-XXKV4UWE.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-ZLWRPBOW.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-ZV7IQ23N.js +0 -657
- package/dist/cli-bundle/chunks/chunk-ZV7IQ23N.js.map +0 -7
- package/dist/cli-bundle/chunks/close-JEBZXONN.js +0 -15
- package/dist/cli-bundle/chunks/config-NCNNWF6R.js.map +0 -7
- package/dist/cli-bundle/chunks/config-SW3U7XP2.js.map +0 -1
- package/dist/cli-bundle/chunks/context-55VEOYI3.js.map +0 -1
- package/dist/cli-bundle/chunks/context-5LB7UGKE.js.map +0 -7
- package/dist/cli-bundle/chunks/contracts-JXFGBOYT.js.map +0 -1
- package/dist/cli-bundle/chunks/contracts-SY6PDFIK.js.map +0 -7
- package/dist/cli-bundle/chunks/create-CLSCHGJJ.js +0 -30
- package/dist/cli-bundle/chunks/history-ALTM2RRP.js +0 -20
- package/dist/cli-bundle/chunks/history-redact-5YGLWUDH.js +0 -21
- package/dist/cli-bundle/chunks/init-C4CRHW22.js +0 -21
- package/dist/cli-bundle/chunks/register-list-query-CCMHGZTF.js.map +0 -7
- package/dist/cli-bundle/chunks/register-list-query-OM3E2KMY.js.map +0 -1
- package/dist/cli-bundle/chunks/register-mutation-N3CDEGZU.js.map +0 -1
- package/dist/cli-bundle/chunks/register-mutation-UXTTWL6N.js.map +0 -7
- package/dist/cli-bundle/chunks/register-setup-G5LTSFYK.js.map +0 -1
- package/dist/cli-bundle/chunks/register-setup-TWHKICM2.js.map +0 -7
- package/dist/cli-bundle/chunks/restore-LQHXBAY5.js +0 -19
- package/dist/cli-bundle/chunks/schema-C6QA367T.js.map +0 -7
- package/dist/cli-bundle/chunks/schema-QO5I4FBL.js.map +0 -1
- package/dist/cli-bundle/chunks/stats-TCW2SZQG.js.map +0 -7
- package/dist/cli-bundle/chunks/stats-TKC6CAKB.js.map +0 -1
- package/dist/cli-bundle/chunks/test-WA6RZGM2.js +0 -36
- package/dist/cli-bundle/chunks/test-runs-FQ5WNQLP.js.map +0 -1
- package/dist/cli-bundle/chunks/test-runs-PX73DMMI.js.map +0 -7
- package/dist/cli-bundle/chunks/update-BSKMQOYH.js +0 -28
- package/dist/cli-bundle/chunks/update-FIGYNQ2I.js +0 -24
- package/dist/cli-bundle/chunks/validate-54SYJ7QW.js.map +0 -1
- package/dist/cli-bundle/chunks/validate-HYZNIB6W.js.map +0 -7
- package/docs/examples/policy-restricted-extension/index.js +0 -21
- package/packages/pm-beads/extensions/beads/index.js +0 -64
- package/packages/pm-beads/extensions/beads/runtime-loader.js +0 -86
- package/packages/pm-beads/extensions/beads/runtime.js +0 -482
- package/packages/pm-calendar/extensions/calendar/index.js +0 -150
- package/packages/pm-calendar/extensions/calendar/runtime.js +0 -126
- package/packages/pm-command-kit/extensions/command-kit/index.js +0 -181
- package/packages/pm-governance-audit/extensions/governance-audit/index.js +0 -177
- package/packages/pm-governance-audit/extensions/governance-audit/runtime.js +0 -153
- package/packages/pm-guide-shell/extensions/guide-shell/index.js +0 -98
- package/packages/pm-guide-shell/extensions/guide-shell/runtime.js +0 -294
- package/packages/pm-lifecycle-hooks/extensions/lifecycle-hooks/index.js +0 -18
- package/packages/pm-linked-test-adapters/extensions/linked-test-adapters/index.js +0 -124
- package/packages/pm-linked-test-adapters/extensions/linked-test-adapters/runtime.js +0 -110
- package/packages/pm-search-advanced/extensions/search-advanced/index.js +0 -258
- package/packages/pm-search-advanced/extensions/search-advanced/runtime.js +0 -361
- package/packages/pm-templates/extensions/templates/index.js +0 -132
- package/packages/pm-templates/extensions/templates/runtime.js +0 -35
- package/packages/pm-todos/extensions/todos/index.js +0 -81
- package/packages/pm-todos/extensions/todos/runtime-loader.js +0 -86
- package/packages/pm-todos/extensions/todos/runtime.js +0 -545
- /package/dist/cli-bundle/chunks/{activity-54TXGJ2T.js.map → activity-AW6XVFH6.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{activity-N7RVTLBQ.js.map → activity-DBLQVIP6.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-F32L4HR6.js.map → chunk-27BXPBAY.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-5BBEWX6C.js.map → chunk-3VGN2UWE.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-FMWW2JDU.js.map → chunk-AXIDKKAT.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-TIM4OD74.js.map → chunk-BDTISOSD.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-CZIFFMZI.js.map → chunk-DDPTYJIM.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-AYPQUFCX.js.map → chunk-EJUDVUYZ.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-EOGBMLCE.js.map → chunk-EVMTBV6V.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-CG3KP6I5.js.map → chunk-G7I7DEZA.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-F4BNR2IN.js.map → chunk-HYTGA6GI.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-2WCYE3IF.js.map → chunk-HZZEHPRG.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-YV2OSAMS.js.map → chunk-IJYK2T43.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-QOUOMPHO.js.map → chunk-JPECA746.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-OQ2E64FH.js.map → chunk-KNPEF7QG.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-3BKH2CL3.js.map → chunk-L5OEFZQG.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-5S4ZGDB2.js.map → chunk-N74UMG5H.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-IXAZI443.js.map → chunk-NFDPYAIP.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-SKC4UTRP.js.map → chunk-NKZAN7BD.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-JPJDP4VU.js.map → chunk-NWMZWYYB.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-KKX4Z2SE.js.map → chunk-OTUHB4HS.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-WB5BYQMF.js.map → chunk-SLMUGTK3.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-I6QMJ2XT.js.map → chunk-WYDHYJPO.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-KIEAK7YE.js.map → chunk-ZRP4VG5U.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{close-JEBZXONN.js.map → close-E6ZZGCJY.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{close-QHMVWM7M.js.map → close-TQYAAFJP.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{create-O4VONGPG.js.map → context-B6275WPX.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{create-CLSCHGJJ.js.map → context-OCZ3FJ4Z.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{extension-YQF4CPIR.js.map → create-OH3BDGBB.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{extension-3JYWJ5K2.js.map → create-RLRJMRTM.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{history-ALTM2RRP.js.map → extension-CPSLJQVE.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{history-RUKPKNY7.js.map → extension-CXJ6RELI.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{gc-BEJMQT64.js.map → gc-7GQYOS2G.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{gc-JEFQDJPA.js.map → gc-LPVMKJQJ.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{health-JJJOY7DJ.js.map → health-3IPFLKXB.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{health-P67NZ6TT.js.map → health-GZXGBZ36.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{history-redact-YY4XYVEP.js.map → history-NERDJNUB.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{history-redact-5YGLWUDH.js.map → history-WSZHY3PN.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{init-C4CRHW22.js.map → history-redact-MP6CH7U5.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{init-HBFGYS66.js.map → history-redact-O3NBCNWC.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{list-C7R33MD5.js.map → init-64XDLQJB.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{list-DSN6UNFB.js.map → init-PAX32BJA.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{restore-LL2WLEDG.js.map → list-DNBJVO3E.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{restore-LQHXBAY5.js.map → list-G5Y65VF6.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{search-2EI6EAXH.js.map → restore-4MHZFJ2E.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{search-QBFBLQRO.js.map → restore-YALDGTQR.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{test-NV2DRPUS.js.map → schema-73HR2OJW.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{test-WA6RZGM2.js.map → schema-U6LJKSIR.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{update-BSKMQOYH.js.map → search-AXPXKZER.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{update-FIGYNQ2I.js.map → search-KILGT37L.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{telemetry-BT2VSWU2.js.map → telemetry-BZUF6H7G.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{telemetry-LQ6FRTUT.js.map → telemetry-GAHHQTOS.js.map} +0 -0
package/dist/mcp/server.js
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* Runs the MCP server adapter that exposes pm actions and contracts to external agents.
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
|
-
!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]="
|
|
8
|
+
!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]="28140feb-d035-55d6-bd6a-d90ed2c41f26")}catch(e){}}();
|
|
9
9
|
import { realpathSync } from "node:fs";
|
|
10
10
|
import readline from "node:readline";
|
|
11
11
|
import { fileURLToPath } from "node:url";
|
|
@@ -26,7 +26,7 @@ import { normalizeListOptions, normalizeUpdateOptions } from "../cli/registratio
|
|
|
26
26
|
import { UPDATE_COMMANDER_STRING_OPTION_CONTRACTS } from "../sdk/cli-contracts/commander-mutation-options.js";
|
|
27
27
|
import { clearWorkspaceContractsCache } from "../sdk/runtime.js";
|
|
28
28
|
import { TOOLS } from "./tool-definitions.js";
|
|
29
|
-
import { runActivity, runAggregate, runAppend, runClaim, runClose, runCloseMany, runComments, runContracts, runContext, runCreate, runCopy, runFocus, runConfig, runDelete, runDeps, runDocs, runExtension, runFiles, runFilesDiscover, runGc, runGet, runHealth, runHistory, runHistoryCompact, runHistoryRedact, runHistoryRepair, runHistoryRepairAll, assertHistoryRepairTarget, runInit, runLearnings, runList, runNotes, runPlan, runRelease, runSchemaAddStatus, runSchemaAddType, runSchemaAddField, runSchemaApplyPreset, runSchemaInferTypes, runSchemaList, runSchemaListFields, runSchemaRemoveStatus, runSchemaRemoveType, runSchemaRemoveField, runSchemaShow, runSchemaShowField, runSchemaShowStatus, runSearch, runStats, runTelemetry, runTest, runTestAll, runUpdate, runUpdateMany, runUpgrade, runValidate, } from "../cli/commands/index.js";
|
|
29
|
+
import { runActivity, runAggregate, runAppend, runClaim, runClose, runCloseMany, runComments, runContracts, runContext, runCreate, runCopy, runFocus, runConfig, runDelete, runDeps, runDocs, runExtension, runFiles, runFilesDiscover, runGc, runGet, runHealth, runHistory, runHistoryCompact, runHistoryRedact, runHistoryRepair, runHistoryRepairAll, assertHistoryRepairTarget, runInit, runLearnings, runList, runNext, runNotes, runPlan, runRelease, runSchemaAddStatus, runSchemaAddType, runSchemaAddField, runSchemaApplyPreset, runSchemaInferTypes, runSchemaList, runSchemaListFields, runSchemaRemoveStatus, runSchemaRemoveType, runSchemaRemoveField, runSchemaShow, runSchemaShowField, runSchemaShowStatus, runProfileApply, runProfileLint, runProfileList, runProfileShow, runSearch, runStats, runTelemetry, runTest, runTestAll, runUpdate, runUpdateMany, runUpgrade, runValidate, } from "../cli/commands/index.js";
|
|
30
30
|
const PM_PACKAGE_ROOT_ENV = "PM_CLI_PACKAGE_ROOT";
|
|
31
31
|
function resolvePmPackageRoot() {
|
|
32
32
|
return fileURLToPath(new URL("../..", import.meta.url));
|
|
@@ -287,63 +287,95 @@ function extensionOptionsFromArgs(args, options) {
|
|
|
287
287
|
delete normalizedOptions.args;
|
|
288
288
|
return normalizedOptions;
|
|
289
289
|
}
|
|
290
|
-
// pm-bl6m:
|
|
291
|
-
// registries (set globals -> run
|
|
292
|
-
// transport already processes JSON-RPC lines
|
|
293
|
-
// public entry point (tests, future concurrent
|
|
294
|
-
// requests ever ran concurrently, the newer
|
|
295
|
-
// mid-flight and whichever finished first would clear them out from under
|
|
296
|
-
// other (its lazily-read hooks/overrides would silently vanish). Serialize the
|
|
297
|
-
// whole activation cycle (load -> activate -> set -> run -> clear -> deactivate)
|
|
298
|
-
//
|
|
290
|
+
// pm-bl6m / pm-zumn: every native MCP action runs inside an activation cycle that
|
|
291
|
+
// mutates the process-global active extension registries (set globals -> run -> clear
|
|
292
|
+
// globals in a finally). The stdio transport already processes JSON-RPC lines
|
|
293
|
+
// sequentially, but handleRequest is a public entry point (tests, future concurrent
|
|
294
|
+
// transports) — if two requests ever ran concurrently, the newer one would overwrite
|
|
295
|
+
// the globals mid-flight and whichever finished first would clear them out from under
|
|
296
|
+
// the other (its lazily-read hooks/overrides would silently vanish). Serialize the
|
|
297
|
+
// whole activation cycle (load -> activate -> set -> run -> clear -> deactivate) on a
|
|
298
|
+
// dedicated FIFO queue so the critical section can never interleave. Full
|
|
299
299
|
// request-scoped registry plumbing remains possible later if true intra-server
|
|
300
300
|
// concurrency is ever needed.
|
|
301
|
-
const
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
301
|
+
const extensionActivationQueue = createSerialQueue();
|
|
302
|
+
/**
|
|
303
|
+
* Publishes empty active extension registries so built-in fallback actions cannot
|
|
304
|
+
* observe stale or partially published extension state from a failed activation cycle.
|
|
305
|
+
*/
|
|
306
|
+
function resetActiveExtensionRegistries() {
|
|
307
|
+
setActiveExtensionHooks(createEmptyExtensionHookRegistry());
|
|
308
|
+
setActiveExtensionCommands(createEmptyExtensionCommandRegistry());
|
|
309
|
+
setActiveExtensionParsers(createEmptyExtensionParserRegistry());
|
|
310
|
+
setActiveExtensionPreflight(createEmptyExtensionPreflightRegistry());
|
|
311
|
+
setActiveExtensionServices(createEmptyExtensionServiceRegistry());
|
|
312
|
+
setActiveExtensionRenderers(createEmptyExtensionRendererRegistry());
|
|
313
|
+
setActiveExtensionRegistrations(createEmptyExtensionRegistrationRegistry());
|
|
314
|
+
}
|
|
315
|
+
/**
|
|
316
|
+
* Run `run` with workspace extensions loaded, activated, and published to the
|
|
317
|
+
* process-global active registries, then torn down afterwards. pm-zumn: built-in native
|
|
318
|
+
* actions (pm_list/pm_profile/pm_schema/pm_create/...) read
|
|
319
|
+
* `getActiveExtensionRegistrations()` for custom item types, fields, and profiles, so
|
|
320
|
+
* they must activate extensions exactly like the CLI (main.ts activates for every
|
|
321
|
+
* command). Previously only the dynamic-extension dispatch activated, leaving
|
|
322
|
+
* extension-contributed schema and profiles invisible over MCP for every built-in
|
|
323
|
+
* action. Activation is skipped (`run` receives `null`) when extensions are disabled or
|
|
324
|
+
* no workspace exists yet (for example `init`). EVERY action — activating or not — is
|
|
325
|
+
* serialized on {@link extensionActivationQueue} so a built-in action's reads of the
|
|
326
|
+
* process-global active registries can never interleave with another request's
|
|
327
|
+
* activation cycle; per-request isolation therefore holds even if a truly concurrent
|
|
328
|
+
* transport is added later (not just because the stdio transport is sequential today).
|
|
329
|
+
*/
|
|
330
|
+
async function withActiveExtensions(global, explicitCwd, resolutionCwd, run) {
|
|
331
|
+
// Run the whole cycle on the queue so registry mutations never interleave. Only an
|
|
332
|
+
// EXPLICIT cwd mutates process.cwd() — pinned inside this serialized slot so the chdir
|
|
333
|
+
// can't be clobbered mid-flight and the built-in handler resolves against it too. A
|
|
334
|
+
// request without an explicit cwd runs in the server's current directory and never
|
|
335
|
+
// touches process.cwd() (important so concurrent direct callers can't corrupt a shared
|
|
336
|
+
// cwd). Either way activation resolves against resolutionCwd, the entry-time snapshot,
|
|
337
|
+
// so it never depends on a deferred process.cwd() read.
|
|
338
|
+
return extensionActivationQueue.enqueue(async () => {
|
|
311
339
|
try {
|
|
312
|
-
return
|
|
340
|
+
return explicitCwd === undefined
|
|
341
|
+
? await withActiveExtensionsExclusively(global, resolutionCwd, run)
|
|
342
|
+
: await withCwd(explicitCwd, () => withActiveExtensionsExclusively(global, resolutionCwd, run));
|
|
313
343
|
}
|
|
314
344
|
finally {
|
|
315
345
|
clearWorkspaceContractsCache();
|
|
316
346
|
}
|
|
317
347
|
});
|
|
318
348
|
}
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
349
|
+
/**
|
|
350
|
+
* Body of the activation cycle. Must only ever run under {@link extensionActivationQueue}
|
|
351
|
+
* (see {@link withActiveExtensions}): it is the exclusive owner of the process-global
|
|
352
|
+
* active extension registries while it runs. Returns early with `run(null)` — still
|
|
353
|
+
* inside the serialized critical section — when extensions are disabled or no workspace
|
|
354
|
+
* exists yet, so those built-in actions also observe a stable (empty) registry. This MCP
|
|
355
|
+
* server reloads + reactivates extensions per request, so each call is a fresh cycle with
|
|
356
|
+
* teardown in a finally to release resources opened during activate() (the
|
|
357
|
+
* long-running-server reload contract, pm-k1e4). Load/activate failures are swallowed and
|
|
358
|
+
* `run` is invoked with `null`, mirroring the CLI's resilient snapshot loader
|
|
359
|
+
* (loadRuntimeExtensionSnapshot) so a broken extension can never break a built-in action.
|
|
360
|
+
*/
|
|
361
|
+
async function withActiveExtensionsExclusively(global, cwd, run) {
|
|
362
|
+
if (global.noExtensions) {
|
|
363
|
+
return run(null);
|
|
364
|
+
}
|
|
365
|
+
const pmRoot = resolvePmRoot(cwd, global.path);
|
|
366
|
+
if (!(await pathExists(getSettingsPath(pmRoot)))) {
|
|
367
|
+
return run(null);
|
|
368
|
+
}
|
|
369
|
+
let active = null;
|
|
370
|
+
let activated;
|
|
335
371
|
try {
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
activationResult.commands.handlers.find((entry) => normalizeActionName(entry.command) === normalizedAction)?.command;
|
|
344
|
-
if (!command) {
|
|
345
|
-
throw new PmCliError(`Unsupported native pm action: ${action}`, 64);
|
|
346
|
-
}
|
|
372
|
+
const settings = await readSettings(pmRoot);
|
|
373
|
+
const loadResult = await loadExtensions({ pmRoot, settings, cwd, noExtensions: false });
|
|
374
|
+
const activationResult = await activateExtensions({ ...loadResult, loaded: loadResult.loaded });
|
|
375
|
+
// Record the teardown handle BEFORE publishing the registries so a throw from any
|
|
376
|
+
// setActive* setter still runs deactivateExtensions for resources opened during
|
|
377
|
+
// activate() instead of silently leaking them.
|
|
378
|
+
activated = { loadResult, activationResult };
|
|
347
379
|
setActiveExtensionHooks(activationResult.hooks);
|
|
348
380
|
setActiveExtensionCommands(activationResult.commands);
|
|
349
381
|
setActiveExtensionParsers(activationResult.parsers);
|
|
@@ -351,42 +383,68 @@ async function runDynamicExtensionActionExclusively(action, args, options, globa
|
|
|
351
383
|
setActiveExtensionServices(activationResult.services);
|
|
352
384
|
setActiveExtensionRenderers(activationResult.renderers);
|
|
353
385
|
setActiveExtensionRegistrations(activationResult.registrations);
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
386
|
+
active = { registrations: activationResult.registrations, commands: activationResult.commands, pmRoot };
|
|
387
|
+
}
|
|
388
|
+
catch (error) {
|
|
389
|
+
resetActiveExtensionRegistries();
|
|
390
|
+
// CLI parity (loadRuntimeExtensionSnapshot): a load/activate failure must never
|
|
391
|
+
// break a built-in action — fall back to running with no active extensions. Surface
|
|
392
|
+
// the cause on stderr so a broken extension is diagnosable instead of being silently
|
|
393
|
+
// indistinguishable from a workspace that simply has no extensions.
|
|
394
|
+
console.error("[pm-mcp] extension activation failed; continuing without active extensions:", error);
|
|
395
|
+
active = null;
|
|
396
|
+
}
|
|
397
|
+
try {
|
|
398
|
+
return await run(active);
|
|
366
399
|
}
|
|
367
400
|
finally {
|
|
368
401
|
// Reset the process-global active registries FIRST so a torn-down extension's
|
|
369
402
|
// overrides/hooks cannot leak into a later request in this long-running server
|
|
370
|
-
// (
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
setActiveExtensionRegistrations(createEmptyExtensionRegistrationRegistry());
|
|
378
|
-
// Best-effort teardown of extensions that activated successfully. Skip
|
|
379
|
-
// entirely if activation itself never produced a result (nothing was set
|
|
380
|
-
// up), and guard so an unexpected throw cannot escape the finally.
|
|
381
|
-
if (activationResult) {
|
|
382
|
-
await deactivateExtensions(loadResult, activationResult).catch(() => undefined);
|
|
403
|
+
// (for example a subsequent pm_list/pm_create) even if teardown below misbehaves.
|
|
404
|
+
resetActiveExtensionRegistries();
|
|
405
|
+
// Best-effort teardown of extensions that activated successfully. Skipped when
|
|
406
|
+
// activation never completed (nothing was set up); guarded so an unexpected throw
|
|
407
|
+
// cannot escape the finally.
|
|
408
|
+
if (activated) {
|
|
409
|
+
await deactivateExtensions(activated.loadResult, activated.activationResult).catch(() => undefined);
|
|
383
410
|
}
|
|
384
411
|
}
|
|
385
412
|
}
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
413
|
+
/**
|
|
414
|
+
* Resolve `action` against the active extension command registrations and dispatch it.
|
|
415
|
+
* Reached by runAction's default case for dynamic (non-built-in) actions after
|
|
416
|
+
* {@link withActiveExtensions} has published the active registries. `active` is `null`
|
|
417
|
+
* when no extensions are active (disabled, no workspace, or activation failed), in
|
|
418
|
+
* which case no extension command can match and the action is reported unsupported.
|
|
419
|
+
*/
|
|
420
|
+
async function dispatchActiveExtensionAction(action, args, options, global, active) {
|
|
421
|
+
if (!active) {
|
|
422
|
+
throw new PmCliError(`Unsupported native pm action: ${action}`, 64);
|
|
423
|
+
}
|
|
424
|
+
const normalizedAction = normalizeActionName(action);
|
|
425
|
+
const definition = active.registrations.commands.find((entry) => normalizeActionName(entry.action) === normalizedAction);
|
|
426
|
+
const command = definition?.command ??
|
|
427
|
+
active.commands.handlers.find((entry) => normalizeActionName(entry.command) === normalizedAction)?.command;
|
|
428
|
+
if (!command) {
|
|
429
|
+
throw new PmCliError(`Unsupported native pm action: ${action}`, 64);
|
|
430
|
+
}
|
|
431
|
+
const handlerResult = await runActiveCommandHandler({
|
|
432
|
+
command: normalizeCommandPath(command),
|
|
433
|
+
args: readStringArray(options.args ?? args.args),
|
|
434
|
+
options: extensionOptionsFromArgs(args, options),
|
|
435
|
+
global,
|
|
436
|
+
pm_root: active.pmRoot,
|
|
437
|
+
});
|
|
438
|
+
if (!handlerResult.handled) {
|
|
439
|
+
const suffix = handlerResult.warnings.length > 0 ? ` (${handlerResult.warnings.join(", ")})` : "";
|
|
440
|
+
throw new PmCliError(`Unsupported native pm action: ${action}${suffix}`, 64);
|
|
389
441
|
}
|
|
442
|
+
return handlerResult.result;
|
|
443
|
+
}
|
|
444
|
+
async function withCwd(cwd, run) {
|
|
445
|
+
// Only ever called with an explicit, non-empty cwd (readString filters blanks), from
|
|
446
|
+
// inside the serialized activation queue, so the chdir/restore is exclusive per request
|
|
447
|
+
// and can never be clobbered by a concurrent caller.
|
|
390
448
|
const previous = process.cwd();
|
|
391
449
|
process.chdir(cwd);
|
|
392
450
|
try {
|
|
@@ -404,7 +462,7 @@ async function withCwd(cwd, run) {
|
|
|
404
462
|
* are forwarded unchanged so runtime fields named `full` remain valid user data.
|
|
405
463
|
*/
|
|
406
464
|
function withMutationCompaction(args, options) {
|
|
407
|
-
return { changedFields: args.fullChangedFields === true ? "full" : "compact", idOnly: args.idOnly === true, runnerOptions: { ...
|
|
465
|
+
return { changedFields: args.fullChangedFields === true ? "full" : "compact", idOnly: args.idOnly === true, runnerOptions: { ...options } };
|
|
408
466
|
}
|
|
409
467
|
function mutationListOptions(options) {
|
|
410
468
|
return {
|
|
@@ -519,355 +577,414 @@ function updateManyOptionsFromFlat(options) {
|
|
|
519
577
|
async function runAction(args) {
|
|
520
578
|
const action = readRequiredString(args, "action");
|
|
521
579
|
const global = globalOptions(args);
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
}
|
|
603
|
-
case "notes":
|
|
604
|
-
return runNotes(id ?? readRequiredString(options, "id"), options, global);
|
|
605
|
-
case "learnings":
|
|
606
|
-
return runLearnings(id ?? readRequiredString(options, "id"), options, global);
|
|
607
|
-
case "files": {
|
|
608
|
-
const fileId = id ?? readRequiredString(options, "id");
|
|
609
|
-
if (options.discover === true) {
|
|
610
|
-
return runFilesDiscover(fileId, withFilesDiscoveryOptions(options), global);
|
|
611
|
-
}
|
|
612
|
-
return runFiles(fileId, withAddNoteOption(options), global);
|
|
613
|
-
}
|
|
614
|
-
case "docs":
|
|
615
|
-
return runDocs(id ?? readRequiredString(options, "id"), withAddNoteOption(options), global);
|
|
616
|
-
case "test":
|
|
617
|
-
return runTest(id ?? readRequiredString(options, "id"), options, global);
|
|
618
|
-
case "test-all":
|
|
619
|
-
return runTestAll(options, global);
|
|
620
|
-
case "telemetry":
|
|
621
|
-
return runTelemetry({
|
|
622
|
-
subcommand: readString(args, "subcommand") ?? readString(options, "subcommand"),
|
|
623
|
-
limit: typeof args.limit === "number" && Number.isFinite(args.limit)
|
|
624
|
-
? args.limit
|
|
625
|
-
: typeof options.limit === "number" && Number.isFinite(options.limit)
|
|
626
|
-
? options.limit
|
|
627
|
-
: readString(args, "limit") ?? readString(options, "limit"),
|
|
628
|
-
}, global);
|
|
629
|
-
case "validate":
|
|
630
|
-
return runValidate(options, global);
|
|
631
|
-
case "health": {
|
|
632
|
-
// Default to the compact `summary` projection for agents (ok + per-check
|
|
633
|
-
// status + warning samples; ~22x smaller than the full payload). Callers
|
|
634
|
-
// opt into detail with brief/summary/full or the deep remediation payload
|
|
635
|
-
// via full=true. Mirrors the compact-by-default list/search behavior (F2).
|
|
636
|
-
const healthOptions = { ...options };
|
|
637
|
-
if (healthOptions.brief === undefined &&
|
|
638
|
-
healthOptions.summary === undefined &&
|
|
639
|
-
healthOptions.full === undefined) {
|
|
640
|
-
healthOptions.summary = true;
|
|
641
|
-
}
|
|
642
|
-
return runHealth(global, healthOptions);
|
|
643
|
-
}
|
|
644
|
-
case "contracts":
|
|
645
|
-
return runContracts(options, global);
|
|
646
|
-
case "config": {
|
|
647
|
-
// pm-v68d: the narrow pm_config tool declares configAction top-level;
|
|
648
|
-
// options.configAction/options.action remain accepted for pm_run parity.
|
|
649
|
-
const configAction = readString(args, "configAction") ?? readString(options, "configAction") ?? readString(options, "action");
|
|
650
|
-
if (configAction === undefined) {
|
|
651
|
-
throw new PmCliError("Missing required argument: configAction", 64);
|
|
652
|
-
}
|
|
653
|
-
return runConfig(readString(args, "scope") ?? readString(options, "scope") ?? "project", configAction, readString(args, "key") ?? readString(options, "key"), options, global, readString(args, "value") ?? readString(options, "value"));
|
|
654
|
-
}
|
|
655
|
-
case "activity": {
|
|
656
|
-
const activityOptions = { ...options };
|
|
657
|
-
if (activityOptions.compact === undefined) {
|
|
658
|
-
activityOptions.compact = activityOptions.full === true ? false : true;
|
|
659
|
-
}
|
|
660
|
-
delete activityOptions.full;
|
|
661
|
-
return runActivity(activityOptions, global);
|
|
580
|
+
// pm-zumn: dispatch every action (built-in and dynamic) inside one extension
|
|
581
|
+
// activation cycle so built-in actions see extension-contributed item types, fields,
|
|
582
|
+
// and profiles, consistent with the CLI. Snapshot the effective resolution cwd HERE,
|
|
583
|
+
// at request entry (the explicit args.cwd, else the server's current directory), so the
|
|
584
|
+
// queued cycle resolves against the directory the request arrived in rather than a value
|
|
585
|
+
// process.cwd() might hold by the time the task runs. Only an explicit cwd additionally
|
|
586
|
+
// pins process.cwd() (inside the serialized slot) for the built-in handler.
|
|
587
|
+
const explicitCwd = readString(args, "cwd");
|
|
588
|
+
const resolutionCwd = explicitCwd ?? process.cwd();
|
|
589
|
+
return withActiveExtensions(global, explicitCwd, resolutionCwd, (activeExtensions) => dispatchAction(action, args, global, activeExtensions));
|
|
590
|
+
}
|
|
591
|
+
function getOwnHandler(handlers, key) {
|
|
592
|
+
return Object.prototype.hasOwnProperty.call(handlers, key) ? handlers[key] : undefined;
|
|
593
|
+
}
|
|
594
|
+
function readMcpTarget(ctx) {
|
|
595
|
+
return readString(ctx.args, "target") ?? readString(ctx.options, "target");
|
|
596
|
+
}
|
|
597
|
+
function requireMcpItemId(ctx, source = ctx.options) {
|
|
598
|
+
return ctx.id ?? readRequiredString(source, "id");
|
|
599
|
+
}
|
|
600
|
+
async function runMcpListAction(ctx) {
|
|
601
|
+
const listOptions = { ...ctx.options };
|
|
602
|
+
if (listOptions.compact === undefined &&
|
|
603
|
+
listOptions.brief === undefined &&
|
|
604
|
+
listOptions.fields === undefined &&
|
|
605
|
+
listOptions.includeBody === undefined) {
|
|
606
|
+
listOptions.compact = true;
|
|
607
|
+
}
|
|
608
|
+
// pm-rmjy: echo applied filters + projection mode so agents get structured confirmation.
|
|
609
|
+
return withQuerySummary((await runList(readString(ctx.args, "status"), listOptions, ctx.global)), listOptions);
|
|
610
|
+
}
|
|
611
|
+
async function runMcpSearchAction(ctx) {
|
|
612
|
+
const searchOptions = { ...ctx.options };
|
|
613
|
+
if (searchOptions.compact === undefined && searchOptions.full === undefined && searchOptions.fields === undefined) {
|
|
614
|
+
searchOptions.compact = true;
|
|
615
|
+
}
|
|
616
|
+
return withQuerySummary((await runSearch(readRequiredString(ctx.args, "query"), searchOptions, ctx.global)), searchOptions);
|
|
617
|
+
}
|
|
618
|
+
async function runMcpCreateAction(ctx) {
|
|
619
|
+
const { changedFields, idOnly, runnerOptions } = withMutationCompaction(ctx.args, ctx.options);
|
|
620
|
+
return projectMutationResult(await runCreate(runnerOptions, ctx.global), { changedFields, idOnly });
|
|
621
|
+
}
|
|
622
|
+
async function runMcpCopyAction(ctx) {
|
|
623
|
+
const { changedFields, idOnly, runnerOptions } = withMutationCompaction(ctx.args, ctx.options);
|
|
624
|
+
const copyOptions = {
|
|
625
|
+
...runnerOptions,
|
|
626
|
+
...(runnerOptions.title === undefined && typeof ctx.args.title === "string" ? { title: ctx.args.title } : {}),
|
|
627
|
+
...(runnerOptions.message === undefined && typeof ctx.args.message === "string" ? { message: ctx.args.message } : {}),
|
|
628
|
+
};
|
|
629
|
+
return projectMutationResult(await runCopy(requireMcpItemId(ctx, copyOptions), copyOptions, ctx.global), {
|
|
630
|
+
changedFields,
|
|
631
|
+
idOnly,
|
|
632
|
+
});
|
|
633
|
+
}
|
|
634
|
+
async function runMcpUpdateAction(ctx) {
|
|
635
|
+
const { changedFields, idOnly, runnerOptions } = withMutationCompaction(ctx.args, ctx.options);
|
|
636
|
+
return projectMutationResult(await runUpdate(requireMcpItemId(ctx, runnerOptions), runnerOptions, ctx.global), {
|
|
637
|
+
changedFields,
|
|
638
|
+
idOnly,
|
|
639
|
+
});
|
|
640
|
+
}
|
|
641
|
+
async function runMcpCloseAction(ctx) {
|
|
642
|
+
const { changedFields, idOnly, runnerOptions } = withMutationCompaction(ctx.args, ctx.options);
|
|
643
|
+
const closeReason = readString(ctx.args, "reason") ??
|
|
644
|
+
readString(ctx.args, "text") ??
|
|
645
|
+
readString(runnerOptions, "reason") ??
|
|
646
|
+
readString(runnerOptions, "text");
|
|
647
|
+
return projectMutationResult(await runClose(requireMcpItemId(ctx, runnerOptions), closeReason, runnerOptions, ctx.global), { changedFields, idOnly });
|
|
648
|
+
}
|
|
649
|
+
function runMcpCommentsAction(ctx) {
|
|
650
|
+
const commentOptions = { ...ctx.options };
|
|
651
|
+
const isListing = commentOptions.add === undefined &&
|
|
652
|
+
commentOptions.stdin === undefined &&
|
|
653
|
+
commentOptions.file === undefined &&
|
|
654
|
+
commentOptions.edit === undefined &&
|
|
655
|
+
commentOptions.delete === undefined;
|
|
656
|
+
if (isListing) {
|
|
657
|
+
commentOptions.includeMeta = true;
|
|
658
|
+
if (commentOptions.limit === undefined && commentOptions.full !== true) {
|
|
659
|
+
commentOptions.limit = "20";
|
|
662
660
|
}
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
|
|
672
|
-
|
|
673
|
-
|
|
674
|
-
|
|
675
|
-
|
|
676
|
-
|
|
677
|
-
|
|
678
|
-
|
|
679
|
-
|
|
680
|
-
|
|
681
|
-
|
|
682
|
-
|
|
683
|
-
|
|
684
|
-
|
|
685
|
-
|
|
686
|
-
|
|
687
|
-
|
|
688
|
-
|
|
689
|
-
|
|
690
|
-
|
|
691
|
-
|
|
692
|
-
|
|
661
|
+
}
|
|
662
|
+
delete commentOptions.full;
|
|
663
|
+
return runComments(requireMcpItemId(ctx), commentOptions, ctx.global);
|
|
664
|
+
}
|
|
665
|
+
function runMcpFilesAction(ctx) {
|
|
666
|
+
const fileId = requireMcpItemId(ctx);
|
|
667
|
+
return ctx.options.discover === true
|
|
668
|
+
? runFilesDiscover(fileId, withFilesDiscoveryOptions(ctx.options), ctx.global)
|
|
669
|
+
: runFiles(fileId, withAddNoteOption(ctx.options), ctx.global);
|
|
670
|
+
}
|
|
671
|
+
function runMcpTelemetryAction(ctx) {
|
|
672
|
+
return runTelemetry({
|
|
673
|
+
subcommand: readString(ctx.args, "subcommand") ?? readString(ctx.options, "subcommand"),
|
|
674
|
+
limit: resolveMcpTelemetryLimit(ctx.args, ctx.options),
|
|
675
|
+
}, ctx.global);
|
|
676
|
+
}
|
|
677
|
+
function resolveMcpTelemetryLimit(args, options) {
|
|
678
|
+
if (typeof args.limit === "number" && Number.isFinite(args.limit)) {
|
|
679
|
+
return args.limit;
|
|
680
|
+
}
|
|
681
|
+
if (typeof options.limit === "number" && Number.isFinite(options.limit)) {
|
|
682
|
+
return options.limit;
|
|
683
|
+
}
|
|
684
|
+
return readString(args, "limit") ?? readString(options, "limit");
|
|
685
|
+
}
|
|
686
|
+
function runMcpHealthAction(ctx) {
|
|
687
|
+
const healthOptions = { ...ctx.options };
|
|
688
|
+
if (healthOptions.brief === undefined && healthOptions.summary === undefined && healthOptions.full === undefined) {
|
|
689
|
+
healthOptions.summary = true;
|
|
690
|
+
}
|
|
691
|
+
return runHealth(ctx.global, healthOptions);
|
|
692
|
+
}
|
|
693
|
+
function runMcpConfigAction(ctx) {
|
|
694
|
+
const configAction = readString(ctx.args, "configAction") ?? readString(ctx.options, "configAction") ?? readString(ctx.options, "action");
|
|
695
|
+
if (configAction === undefined) {
|
|
696
|
+
throw new PmCliError("Missing required argument: configAction", 64);
|
|
697
|
+
}
|
|
698
|
+
return runConfig(readString(ctx.args, "scope") ?? readString(ctx.options, "scope") ?? "project", configAction, readString(ctx.args, "key") ?? readString(ctx.options, "key"), ctx.options, ctx.global, readString(ctx.args, "value") ?? readString(ctx.options, "value"));
|
|
699
|
+
}
|
|
700
|
+
function runMcpActivityAction(ctx) {
|
|
701
|
+
const activityOptions = { ...ctx.options };
|
|
702
|
+
if (activityOptions.compact === undefined) {
|
|
703
|
+
activityOptions.compact = activityOptions.full === true ? false : true;
|
|
704
|
+
}
|
|
705
|
+
delete activityOptions.full;
|
|
706
|
+
return runActivity(activityOptions, ctx.global);
|
|
707
|
+
}
|
|
708
|
+
function runMcpHistoryRepairAction(ctx) {
|
|
709
|
+
const repairAll = ctx.options.all === true;
|
|
710
|
+
const repairId = ctx.id ?? readString(ctx.options, "id");
|
|
711
|
+
assertHistoryRepairTarget(repairId, repairAll);
|
|
712
|
+
return repairAll ? runHistoryRepairAll(ctx.options, ctx.global) : runHistoryRepair(repairId, ctx.options, ctx.global);
|
|
713
|
+
}
|
|
714
|
+
function parseMcpInteger(value, label) {
|
|
715
|
+
if (typeof value === "number") {
|
|
716
|
+
if (!Number.isInteger(value)) {
|
|
717
|
+
throw new PmCliError(`${label} must be a finite integer.`, 64);
|
|
693
718
|
}
|
|
694
|
-
|
|
695
|
-
|
|
696
|
-
|
|
697
|
-
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
const reorderTo = typeof reorderToken === "number" && Number.isFinite(reorderToken)
|
|
701
|
-
? reorderToken
|
|
702
|
-
: typeof reorderToken === "string" && reorderToken.trim().length > 0
|
|
703
|
-
? Number.parseInt(reorderToken, 10)
|
|
704
|
-
: undefined;
|
|
705
|
-
const stepRef = typeof planRecord.stepRef === "string"
|
|
706
|
-
? planRecord.stepRef
|
|
707
|
-
: typeof args.stepRef === "string"
|
|
708
|
-
? args.stepRef
|
|
709
|
-
: undefined;
|
|
710
|
-
return runPlan({
|
|
711
|
-
subcommand: subcommand,
|
|
712
|
-
id: typeof id === "string" ? id : typeof planRecord.id === "string" ? planRecord.id : undefined,
|
|
713
|
-
stepRef,
|
|
714
|
-
reorderTo,
|
|
715
|
-
options: options,
|
|
716
|
-
global,
|
|
717
|
-
});
|
|
719
|
+
return value;
|
|
720
|
+
}
|
|
721
|
+
if (typeof value === "string" && value.trim().length > 0) {
|
|
722
|
+
const parsed = Number(value);
|
|
723
|
+
if (!Number.isInteger(parsed)) {
|
|
724
|
+
throw new PmCliError(`${label} must be a finite integer.`, 64);
|
|
718
725
|
}
|
|
719
|
-
|
|
720
|
-
|
|
721
|
-
|
|
722
|
-
|
|
723
|
-
|
|
724
|
-
|
|
725
|
-
|
|
726
|
-
|
|
727
|
-
|
|
728
|
-
return runSchemaList(global);
|
|
729
|
-
}
|
|
730
|
-
if (normalizedSubcommand === "show") {
|
|
731
|
-
return runSchemaShow(schemaName, global);
|
|
732
|
-
}
|
|
733
|
-
if (normalizedSubcommand === "show-status") {
|
|
734
|
-
return runSchemaShowStatus(schemaName, global);
|
|
735
|
-
}
|
|
736
|
-
if (normalizedSubcommand === "list-fields") {
|
|
737
|
-
return runSchemaListFields(global);
|
|
738
|
-
}
|
|
739
|
-
if (normalizedSubcommand === "show-field") {
|
|
740
|
-
return runSchemaShowField(schemaName, global);
|
|
741
|
-
}
|
|
742
|
-
if (normalizedSubcommand === "remove-type") {
|
|
743
|
-
return runSchemaRemoveType(schemaName, { author: schemaAuthor, force: schemaForce }, global);
|
|
744
|
-
}
|
|
745
|
-
if (normalizedSubcommand === "remove-field") {
|
|
746
|
-
return runSchemaRemoveField(schemaName, { author: schemaAuthor, force: schemaForce }, global);
|
|
747
|
-
}
|
|
748
|
-
if (normalizedSubcommand === "apply-preset") {
|
|
749
|
-
const presetSource = readString(args, "typePreset") ?? readString(options, "typePreset");
|
|
750
|
-
return runSchemaApplyPreset(presetSource, { author: schemaAuthor, force: schemaForce }, global);
|
|
751
|
-
}
|
|
752
|
-
const aliasSource = args.alias ?? options.alias;
|
|
753
|
-
const aliases = aliasSource === undefined ? undefined : readStringArray(aliasSource);
|
|
754
|
-
if (normalizedSubcommand === "add-field") {
|
|
755
|
-
const commandsSource = args.commands ?? options.commands;
|
|
756
|
-
const commands = commandsSource === undefined ? undefined : readStringArray(commandsSource);
|
|
757
|
-
const requiredTypesSource = args.requiredTypes ?? options.requiredTypes;
|
|
758
|
-
const requiredTypes = requiredTypesSource === undefined ? undefined : readStringArray(requiredTypesSource);
|
|
759
|
-
return runSchemaAddField(schemaName, {
|
|
760
|
-
type: readString(args, "fieldType") ?? readString(options, "fieldType"),
|
|
761
|
-
commands,
|
|
762
|
-
description: readString(args, "description") ?? readString(options, "description"),
|
|
763
|
-
cliFlag: readString(args, "cliFlag") ?? readString(options, "cliFlag"),
|
|
764
|
-
alias: aliases,
|
|
765
|
-
required: args.required === true || options.required === true,
|
|
766
|
-
requiredOnCreate: args.requiredOnCreate === true || options.requiredOnCreate === true,
|
|
767
|
-
// allow_unset defaults true; only an explicit false disables it.
|
|
768
|
-
allowUnset: !(args.allowUnset === false || options.allowUnset === false),
|
|
769
|
-
requiredTypes,
|
|
770
|
-
author: schemaAuthor,
|
|
771
|
-
force: schemaForce,
|
|
772
|
-
}, global);
|
|
773
|
-
}
|
|
774
|
-
if (normalizedSubcommand === "add-status") {
|
|
775
|
-
const roleSource = args.role ?? options.role;
|
|
776
|
-
const roles = roleSource === undefined ? undefined : readStringArray(roleSource);
|
|
777
|
-
const orderSource = args.order ?? options.order;
|
|
778
|
-
let order;
|
|
779
|
-
if (typeof orderSource === "number") {
|
|
780
|
-
if (!Number.isInteger(orderSource)) {
|
|
781
|
-
throw new PmCliError("schema add-status order must be a finite integer.", 64);
|
|
782
|
-
}
|
|
783
|
-
order = orderSource;
|
|
784
|
-
}
|
|
785
|
-
else if (typeof orderSource === "string" && orderSource.trim().length > 0) {
|
|
786
|
-
const parsed = Number(orderSource);
|
|
787
|
-
if (!Number.isInteger(parsed)) {
|
|
788
|
-
throw new PmCliError("schema add-status order must be a finite integer.", 64);
|
|
789
|
-
}
|
|
790
|
-
order = parsed;
|
|
791
|
-
}
|
|
792
|
-
return runSchemaAddStatus(schemaName, {
|
|
793
|
-
role: roles,
|
|
794
|
-
alias: aliases,
|
|
795
|
-
description: readString(args, "description") ?? readString(options, "description"),
|
|
796
|
-
order,
|
|
797
|
-
author: schemaAuthor,
|
|
798
|
-
force: schemaForce,
|
|
799
|
-
}, global);
|
|
800
|
-
}
|
|
801
|
-
if (normalizedSubcommand === "remove-status") {
|
|
802
|
-
return runSchemaRemoveStatus(schemaName, { author: schemaAuthor, force: schemaForce }, global);
|
|
803
|
-
}
|
|
804
|
-
if (normalizedSubcommand !== "add-type") {
|
|
805
|
-
throw new PmCliError(`Unknown pm schema subcommand "${subcommand}". Allowed: add-type, remove-type, add-status, remove-status, add-field, remove-field, list-fields, show-field, apply-preset, list, show, show-status`, 64);
|
|
806
|
-
}
|
|
807
|
-
if (args.infer === true || options.infer === true) {
|
|
808
|
-
const minCountSource = args.minCount ?? options.minCount;
|
|
809
|
-
const minCount = typeof minCountSource === "number"
|
|
810
|
-
? minCountSource
|
|
811
|
-
: typeof minCountSource === "string" && minCountSource.trim().length > 0
|
|
812
|
-
? Number(minCountSource)
|
|
813
|
-
: undefined;
|
|
814
|
-
return runSchemaInferTypes({
|
|
815
|
-
minCount,
|
|
816
|
-
apply: args.apply === true || options.apply === true,
|
|
817
|
-
author: schemaAuthor,
|
|
818
|
-
force: schemaForce,
|
|
819
|
-
}, global);
|
|
820
|
-
}
|
|
821
|
-
return runSchemaAddType(schemaName, {
|
|
822
|
-
description: readString(args, "description") ?? readString(options, "description"),
|
|
823
|
-
defaultStatus: readString(args, "defaultStatus") ??
|
|
824
|
-
readString(args, "default_status") ??
|
|
825
|
-
readString(options, "defaultStatus") ??
|
|
826
|
-
readString(options, "default_status"),
|
|
827
|
-
folder: readString(args, "folder") ?? readString(options, "folder"),
|
|
828
|
-
alias: aliases,
|
|
829
|
-
author: schemaAuthor,
|
|
830
|
-
force: schemaForce,
|
|
831
|
-
}, global);
|
|
726
|
+
return parsed;
|
|
727
|
+
}
|
|
728
|
+
return undefined;
|
|
729
|
+
}
|
|
730
|
+
function parseMcpIntegerPrefix(value, label) {
|
|
731
|
+
if (typeof value === "number") {
|
|
732
|
+
const parsed = Number.parseInt(String(value), 10);
|
|
733
|
+
if (!Number.isInteger(parsed)) {
|
|
734
|
+
throw new PmCliError(`${label} must be a finite integer.`, 64);
|
|
832
735
|
}
|
|
833
|
-
|
|
834
|
-
|
|
835
|
-
|
|
836
|
-
|
|
837
|
-
|
|
838
|
-
|
|
839
|
-
byTag: options.byTag === true,
|
|
840
|
-
byPriority: options.byPriority === true,
|
|
841
|
-
tagPrefix: typeof options.tagPrefix === "string" ? options.tagPrefix : undefined,
|
|
842
|
-
});
|
|
843
|
-
case "append": {
|
|
844
|
-
const { changedFields, runnerOptions } = withMutationCompaction(args, options);
|
|
845
|
-
return projectMutationResult(await runAppend(id ?? readRequiredString(runnerOptions, "id"), runnerOptions, global), { changedFields });
|
|
736
|
+
return parsed;
|
|
737
|
+
}
|
|
738
|
+
if (typeof value === "string" && value.trim().length > 0) {
|
|
739
|
+
const trimmed = value.trim();
|
|
740
|
+
if (!/^[+-]?\d+(?:st|nd|rd|th)?$/i.test(trimmed)) {
|
|
741
|
+
throw new PmCliError(`${label} must be a finite integer.`, 64);
|
|
846
742
|
}
|
|
847
|
-
|
|
848
|
-
|
|
849
|
-
|
|
743
|
+
const parsed = Number.parseInt(trimmed, 10);
|
|
744
|
+
if (!Number.isInteger(parsed)) {
|
|
745
|
+
throw new PmCliError(`${label} must be a finite integer.`, 64);
|
|
850
746
|
}
|
|
851
|
-
|
|
852
|
-
|
|
853
|
-
|
|
854
|
-
|
|
855
|
-
|
|
856
|
-
|
|
857
|
-
|
|
858
|
-
|
|
859
|
-
|
|
860
|
-
|
|
747
|
+
return parsed;
|
|
748
|
+
}
|
|
749
|
+
return undefined;
|
|
750
|
+
}
|
|
751
|
+
function runMcpPlanAction(ctx) {
|
|
752
|
+
const subcommand = readRequiredString(ctx.options, "subcommand");
|
|
753
|
+
const planRecord = ctx.options;
|
|
754
|
+
return runPlan({
|
|
755
|
+
subcommand: subcommand,
|
|
756
|
+
id: typeof ctx.id === "string" ? ctx.id : typeof planRecord.id === "string" ? planRecord.id : undefined,
|
|
757
|
+
stepRef: readMcpPlanStepRef(ctx),
|
|
758
|
+
reorderTo: parseMcpIntegerPrefix(planRecord.reorderTo ?? ctx.args.reorderTo, "plan reorderTo"),
|
|
759
|
+
options: ctx.options,
|
|
760
|
+
global: ctx.global,
|
|
761
|
+
});
|
|
762
|
+
}
|
|
763
|
+
function readMcpPlanStepRef(ctx) {
|
|
764
|
+
return typeof ctx.options.stepRef === "string"
|
|
765
|
+
? ctx.options.stepRef
|
|
766
|
+
: typeof ctx.args.stepRef === "string"
|
|
767
|
+
? ctx.args.stepRef
|
|
768
|
+
: undefined;
|
|
769
|
+
}
|
|
770
|
+
function createMcpSchemaContext(ctx) {
|
|
771
|
+
const subcommand = readString(ctx.args, "subcommand") ?? readRequiredString(ctx.options, "subcommand");
|
|
772
|
+
const aliasSource = ctx.args.alias ?? ctx.options.alias;
|
|
773
|
+
return {
|
|
774
|
+
ctx,
|
|
775
|
+
subcommand: subcommand.trim().toLowerCase(),
|
|
776
|
+
name: readString(ctx.args, "name") ?? readString(ctx.options, "name"),
|
|
777
|
+
author: readString(ctx.args, "author") ?? readString(ctx.options, "author"),
|
|
778
|
+
force: ctx.args.force === true || ctx.options.force === true,
|
|
779
|
+
aliases: aliasSource === undefined ? undefined : readStringArray(aliasSource),
|
|
780
|
+
};
|
|
781
|
+
}
|
|
782
|
+
function runMcpSchemaReadOrRemoveAction(schema) {
|
|
783
|
+
const { ctx, subcommand, name, author, force } = schema;
|
|
784
|
+
const simpleHandlers = {
|
|
785
|
+
list: () => runSchemaList(ctx.global),
|
|
786
|
+
show: () => runSchemaShow(name, ctx.global),
|
|
787
|
+
"show-status": () => runSchemaShowStatus(name, ctx.global),
|
|
788
|
+
"list-fields": () => runSchemaListFields(ctx.global),
|
|
789
|
+
"show-field": () => runSchemaShowField(name, ctx.global),
|
|
790
|
+
"remove-type": () => runSchemaRemoveType(name, { author, force }, ctx.global),
|
|
791
|
+
"remove-field": () => runSchemaRemoveField(name, { author, force }, ctx.global),
|
|
792
|
+
"remove-status": () => runSchemaRemoveStatus(name, { author, force }, ctx.global),
|
|
793
|
+
"apply-preset": () => runSchemaApplyPreset(readString(ctx.args, "typePreset") ?? readString(ctx.options, "typePreset"), { author, force }, ctx.global),
|
|
794
|
+
};
|
|
795
|
+
const handler = getOwnHandler(simpleHandlers, subcommand);
|
|
796
|
+
return handler ? handler() : null;
|
|
797
|
+
}
|
|
798
|
+
function runMcpSchemaAddFieldAction(schema) {
|
|
799
|
+
const { ctx, name, author, force, aliases } = schema;
|
|
800
|
+
const commandsSource = ctx.args.commands ?? ctx.options.commands;
|
|
801
|
+
const requiredTypesSource = ctx.args.requiredTypes ?? ctx.options.requiredTypes;
|
|
802
|
+
return runSchemaAddField(name, {
|
|
803
|
+
type: readString(ctx.args, "fieldType") ?? readString(ctx.options, "fieldType"),
|
|
804
|
+
commands: commandsSource === undefined ? undefined : readStringArray(commandsSource),
|
|
805
|
+
description: readString(ctx.args, "description") ?? readString(ctx.options, "description"),
|
|
806
|
+
cliFlag: readString(ctx.args, "cliFlag") ?? readString(ctx.options, "cliFlag"),
|
|
807
|
+
alias: aliases,
|
|
808
|
+
required: ctx.args.required === true || ctx.options.required === true,
|
|
809
|
+
requiredOnCreate: ctx.args.requiredOnCreate === true || ctx.options.requiredOnCreate === true,
|
|
810
|
+
allowUnset: !(ctx.args.allowUnset === false || ctx.options.allowUnset === false),
|
|
811
|
+
requiredTypes: requiredTypesSource === undefined ? undefined : readStringArray(requiredTypesSource),
|
|
812
|
+
author,
|
|
813
|
+
force,
|
|
814
|
+
}, ctx.global);
|
|
815
|
+
}
|
|
816
|
+
function runMcpSchemaAddStatusAction(schema) {
|
|
817
|
+
const { ctx, name, author, force, aliases } = schema;
|
|
818
|
+
const roleSource = ctx.args.role ?? ctx.options.role;
|
|
819
|
+
return runSchemaAddStatus(name, {
|
|
820
|
+
role: roleSource === undefined ? undefined : readStringArray(roleSource),
|
|
821
|
+
alias: aliases,
|
|
822
|
+
description: readString(ctx.args, "description") ?? readString(ctx.options, "description"),
|
|
823
|
+
order: parseMcpInteger(ctx.args.order ?? ctx.options.order, "schema add-status order"),
|
|
824
|
+
author,
|
|
825
|
+
force,
|
|
826
|
+
}, ctx.global);
|
|
827
|
+
}
|
|
828
|
+
function runMcpSchemaAddTypeAction(schema) {
|
|
829
|
+
const { ctx, name, author, force, aliases } = schema;
|
|
830
|
+
return runSchemaAddType(name, {
|
|
831
|
+
description: readString(ctx.args, "description") ?? readString(ctx.options, "description"),
|
|
832
|
+
defaultStatus: readString(ctx.args, "defaultStatus") ??
|
|
833
|
+
readString(ctx.args, "default_status") ??
|
|
834
|
+
readString(ctx.options, "defaultStatus") ??
|
|
835
|
+
readString(ctx.options, "default_status"),
|
|
836
|
+
folder: readString(ctx.args, "folder") ?? readString(ctx.options, "folder"),
|
|
837
|
+
alias: aliases,
|
|
838
|
+
author,
|
|
839
|
+
force,
|
|
840
|
+
}, ctx.global);
|
|
841
|
+
}
|
|
842
|
+
function runMcpSchemaAction(ctx) {
|
|
843
|
+
const schema = createMcpSchemaContext(ctx);
|
|
844
|
+
const simpleResult = runMcpSchemaReadOrRemoveAction(schema);
|
|
845
|
+
if (simpleResult !== null) {
|
|
846
|
+
return simpleResult;
|
|
847
|
+
}
|
|
848
|
+
if (schema.subcommand === "add-field") {
|
|
849
|
+
return runMcpSchemaAddFieldAction(schema);
|
|
850
|
+
}
|
|
851
|
+
if (schema.subcommand === "add-status") {
|
|
852
|
+
return runMcpSchemaAddStatusAction(schema);
|
|
853
|
+
}
|
|
854
|
+
if (schema.subcommand === "add-type") {
|
|
855
|
+
if (ctx.args.infer === true || ctx.options.infer === true) {
|
|
856
|
+
return runSchemaInferTypes({
|
|
857
|
+
minCount: parseMcpInteger(ctx.args.minCount ?? ctx.options.minCount, "schema infer minCount"),
|
|
858
|
+
apply: ctx.args.apply === true || ctx.options.apply === true,
|
|
859
|
+
author: schema.author,
|
|
860
|
+
force: schema.force,
|
|
861
|
+
}, ctx.global);
|
|
861
862
|
}
|
|
862
|
-
|
|
863
|
-
|
|
864
|
-
|
|
865
|
-
|
|
863
|
+
return runMcpSchemaAddTypeAction(schema);
|
|
864
|
+
}
|
|
865
|
+
throw new PmCliError(`Unknown pm schema subcommand "${schema.subcommand}". Allowed: add-type, remove-type, add-status, remove-status, add-field, remove-field, list-fields, show-field, apply-preset, list, show, show-status`, 64);
|
|
866
|
+
}
|
|
867
|
+
function runMcpProfileAction(ctx) {
|
|
868
|
+
const subcommand = readString(ctx.args, "subcommand") ?? readRequiredString(ctx.options, "subcommand");
|
|
869
|
+
const normalizedSubcommand = subcommand.trim().toLowerCase();
|
|
870
|
+
const profileName = readString(ctx.args, "name") ?? readString(ctx.options, "name");
|
|
871
|
+
const handlers = {
|
|
872
|
+
list: () => runProfileList(),
|
|
873
|
+
show: () => runProfileShow(profileName),
|
|
874
|
+
lint: () => runProfileLint(profileName),
|
|
875
|
+
apply: () => runProfileApply(profileName, {
|
|
876
|
+
dryRun: ctx.args.dryRun === true || ctx.options.dryRun === true,
|
|
877
|
+
author: readString(ctx.args, "author") ?? readString(ctx.options, "author"),
|
|
878
|
+
force: ctx.args.force === true || ctx.options.force === true,
|
|
879
|
+
}, ctx.global),
|
|
880
|
+
};
|
|
881
|
+
const handler = getOwnHandler(handlers, normalizedSubcommand);
|
|
882
|
+
if (!handler) {
|
|
883
|
+
throw new PmCliError(`Unknown pm profile subcommand "${subcommand}". Allowed: list, show, apply, lint`, 64);
|
|
884
|
+
}
|
|
885
|
+
return handler();
|
|
886
|
+
}
|
|
887
|
+
function runMcpStatsAction(ctx) {
|
|
888
|
+
return runStats(ctx.global, {
|
|
889
|
+
storage: ctx.options.storage === true,
|
|
890
|
+
metadataCoverage: ctx.options.metadataCoverage === true,
|
|
891
|
+
fieldUtilization: ctx.options.fieldUtilization === true,
|
|
892
|
+
byAssignee: ctx.options.byAssignee === true,
|
|
893
|
+
byTag: ctx.options.byTag === true,
|
|
894
|
+
byPriority: ctx.options.byPriority === true,
|
|
895
|
+
tagPrefix: typeof ctx.options.tagPrefix === "string" ? ctx.options.tagPrefix : undefined,
|
|
896
|
+
});
|
|
897
|
+
}
|
|
898
|
+
async function runMcpAppendAction(ctx) {
|
|
899
|
+
const { changedFields, runnerOptions } = withMutationCompaction(ctx.args, ctx.options);
|
|
900
|
+
return projectMutationResult(await runAppend(requireMcpItemId(ctx, runnerOptions), runnerOptions, ctx.global), {
|
|
901
|
+
changedFields,
|
|
902
|
+
});
|
|
903
|
+
}
|
|
904
|
+
async function runMcpUpdateManyAction(ctx) {
|
|
905
|
+
const { changedFields, runnerOptions } = withMutationCompaction(ctx.args, ctx.options);
|
|
906
|
+
return projectMutationResult(await runUpdateMany(updateManyOptionsFromFlat(runnerOptions), ctx.global), { changedFields });
|
|
907
|
+
}
|
|
908
|
+
async function runMcpCloseManyAction(ctx) {
|
|
909
|
+
const { changedFields, runnerOptions } = withMutationCompaction(ctx.args, ctx.options);
|
|
910
|
+
const topLevelReason = readString(ctx.args, "reason");
|
|
911
|
+
const closeManyRunnerOptions = topLevelReason !== undefined && runnerOptions.reason === undefined
|
|
912
|
+
? { ...runnerOptions, reason: topLevelReason }
|
|
913
|
+
: { ...runnerOptions };
|
|
914
|
+
if (ctx.force && closeManyRunnerOptions.force === undefined) {
|
|
915
|
+
closeManyRunnerOptions.force = true;
|
|
866
916
|
}
|
|
917
|
+
return projectMutationResult(await runCloseMany(closeManyOptionsFromFlat(closeManyRunnerOptions), ctx.global), { changedFields });
|
|
918
|
+
}
|
|
919
|
+
const MCP_ACTION_HANDLERS = {
|
|
920
|
+
init: (ctx) => runInit(readString(ctx.args, "prefix"), ctx.global, ctx.options),
|
|
921
|
+
context: (ctx) => runContext(ctx.options, ctx.global),
|
|
922
|
+
next: (ctx) => runNext(ctx.options, ctx.global),
|
|
923
|
+
list: runMcpListAction,
|
|
924
|
+
get: (ctx) => runGet(requireMcpItemId(ctx), ctx.global, ctx.options),
|
|
925
|
+
search: runMcpSearchAction,
|
|
926
|
+
create: runMcpCreateAction,
|
|
927
|
+
copy: runMcpCopyAction,
|
|
928
|
+
focus: (ctx) => runFocus(ctx.id, { clear: ctx.options.clear === true || ctx.args.clear === true }, ctx.global),
|
|
929
|
+
update: runMcpUpdateAction,
|
|
930
|
+
claim: (ctx) => runClaim(requireMcpItemId(ctx), ctx.force, ctx.global, ctx.options),
|
|
931
|
+
release: (ctx) => runRelease(requireMcpItemId(ctx), ctx.force, ctx.global, ctx.options),
|
|
932
|
+
close: runMcpCloseAction,
|
|
933
|
+
comments: runMcpCommentsAction,
|
|
934
|
+
notes: (ctx) => runNotes(requireMcpItemId(ctx), ctx.options, ctx.global),
|
|
935
|
+
learnings: (ctx) => runLearnings(requireMcpItemId(ctx), ctx.options, ctx.global),
|
|
936
|
+
files: runMcpFilesAction,
|
|
937
|
+
docs: (ctx) => runDocs(requireMcpItemId(ctx), withAddNoteOption(ctx.options), ctx.global),
|
|
938
|
+
test: (ctx) => runTest(requireMcpItemId(ctx), ctx.options, ctx.global),
|
|
939
|
+
"test-all": (ctx) => runTestAll(ctx.options, ctx.global),
|
|
940
|
+
telemetry: runMcpTelemetryAction,
|
|
941
|
+
validate: (ctx) => runValidate(ctx.options, ctx.global),
|
|
942
|
+
health: runMcpHealthAction,
|
|
943
|
+
contracts: (ctx) => runContracts(ctx.options, ctx.global),
|
|
944
|
+
config: runMcpConfigAction,
|
|
945
|
+
activity: runMcpActivityAction,
|
|
946
|
+
aggregate: (ctx) => runAggregate(ctx.options, ctx.global),
|
|
947
|
+
extension: (ctx) => runExtension(readMcpTarget(ctx), ctx.options, ctx.global),
|
|
948
|
+
"extension-reload": (ctx) => runExtension(undefined, { ...ctx.options, reload: true }, ctx.global),
|
|
949
|
+
package: (ctx) => runExtension(readMcpTarget(ctx), ctx.options, ctx.global),
|
|
950
|
+
"package-install": (ctx) => runExtension(readMcpTarget(ctx), { ...ctx.options, install: true }, ctx.global),
|
|
951
|
+
install: (ctx) => runExtension(readMcpTarget(ctx), { ...ctx.options, install: true }, ctx.global),
|
|
952
|
+
"package-catalog": (ctx) => runExtension(undefined, { ...ctx.options, catalog: true, vocabulary: "package" }, ctx.global),
|
|
953
|
+
upgrade: (ctx) => runUpgrade(readMcpTarget(ctx), ctx.options, ctx.global),
|
|
954
|
+
delete: (ctx) => runDelete(requireMcpItemId(ctx), ctx.options, ctx.global),
|
|
955
|
+
deps: (ctx) => runDeps(requireMcpItemId(ctx), ctx.options, ctx.global),
|
|
956
|
+
"files-discover": (ctx) => runFilesDiscover(requireMcpItemId(ctx), ctx.options, ctx.global),
|
|
957
|
+
history: (ctx) => runHistory(requireMcpItemId(ctx), ctx.options, ctx.global),
|
|
958
|
+
"history-redact": (ctx) => runHistoryRedact(requireMcpItemId(ctx), ctx.options, ctx.global),
|
|
959
|
+
"history-repair": runMcpHistoryRepairAction,
|
|
960
|
+
"history-compact": (ctx) => runHistoryCompact(requireMcpItemId(ctx), ctx.options, ctx.global),
|
|
961
|
+
plan: runMcpPlanAction,
|
|
962
|
+
schema: runMcpSchemaAction,
|
|
963
|
+
profile: runMcpProfileAction,
|
|
964
|
+
stats: runMcpStatsAction,
|
|
965
|
+
append: runMcpAppendAction,
|
|
966
|
+
"update-many": runMcpUpdateManyAction,
|
|
967
|
+
"close-many": runMcpCloseManyAction,
|
|
968
|
+
gc: (ctx) => runGc(ctx.global, ctx.options),
|
|
969
|
+
};
|
|
970
|
+
async function dispatchAction(action, args, global, activeExtensions) {
|
|
971
|
+
const options = optionsWithAuthor(args, action);
|
|
972
|
+
const ctx = {
|
|
973
|
+
action,
|
|
974
|
+
args,
|
|
975
|
+
options,
|
|
976
|
+
id: readString(args, "id"),
|
|
977
|
+
force: args.force === true,
|
|
978
|
+
global,
|
|
979
|
+
activeExtensions,
|
|
980
|
+
};
|
|
981
|
+
const handler = getOwnHandler(MCP_ACTION_HANDLERS, action);
|
|
982
|
+
return handler ? handler(ctx) : dispatchActiveExtensionAction(action, args, options, global, activeExtensions);
|
|
867
983
|
}
|
|
868
984
|
const HANDLERS = {
|
|
869
985
|
pm_run: (args) => runAction(args),
|
|
870
986
|
pm_context: (args) => runAction({ ...args, action: "context" }),
|
|
987
|
+
pm_next: (args) => runAction({ ...args, action: "next" }),
|
|
871
988
|
pm_search: (args) => runAction({ ...args, action: "search" }),
|
|
872
989
|
pm_list: (args) => runAction({ ...args, action: "list" }),
|
|
873
990
|
pm_get: (args) => runAction({ ...args, action: "get" }),
|
|
@@ -890,6 +1007,7 @@ const HANDLERS = {
|
|
|
890
1007
|
pm_health: (args) => runAction({ ...args, action: "health" }),
|
|
891
1008
|
pm_contracts: (args) => runAction({ ...args, action: "contracts" }),
|
|
892
1009
|
pm_schema: (args) => runAction({ ...args, action: "schema" }),
|
|
1010
|
+
pm_profile: (args) => runAction({ ...args, action: "profile" }),
|
|
893
1011
|
pm_config: (args) => runAction({ ...args, action: "config" }),
|
|
894
1012
|
pm_plan: (args) => runAction({ ...args, action: "plan" }),
|
|
895
1013
|
};
|
|
@@ -939,8 +1057,8 @@ export async function handleRequest(request) {
|
|
|
939
1057
|
capabilities: { tools: {} },
|
|
940
1058
|
serverInfo: { name: "pm-mcp", version: PM_MCP_SERVER_VERSION },
|
|
941
1059
|
instructions: "You have access to native pm CLI tools for git-based project management. " +
|
|
942
|
-
"Use pm_context or pm_search before creating new work. " +
|
|
943
|
-
"Prefer narrow tools (pm_context, pm_list, pm_get, pm_search, pm_create, pm_copy, pm_focus, pm_update, pm_append, pm_claim, pm_release, pm_close, pm_comments, pm_files, pm_docs, pm_notes, pm_learnings, pm_deps, pm_test, pm_validate, pm_health, pm_contracts, pm_schema, pm_config, pm_plan) over pm_run when they cover the operation. " +
|
|
1060
|
+
"Use pm_next to pick the next actionable item, or pm_context or pm_search before creating new work. " +
|
|
1061
|
+
"Prefer narrow tools (pm_next, pm_context, pm_list, pm_get, pm_search, pm_create, pm_copy, pm_focus, pm_update, pm_append, pm_claim, pm_release, pm_close, pm_comments, pm_files, pm_docs, pm_notes, pm_learnings, pm_deps, pm_test, pm_validate, pm_health, pm_contracts, pm_schema, pm_profile, pm_config, pm_plan) over pm_run when they cover the operation. " +
|
|
944
1062
|
"Use pm_plan for agent harness Plan workflows: it provides Codex/Claude/Cursor-style planning with durable steps, dependencies, decisions, discoveries, validation, and materialization. " +
|
|
945
1063
|
"Use pm_schema and pm_config for workspace configuration: pm_schema manages custom item types/statuses and pm_config reads or writes settings keys. " +
|
|
946
1064
|
"Use pm_run with an explicit action for package-owned operations (calendar/templates/guide/dedupe-audit/normalize/reindex/comments-audit/completion/test-runs-list/test-runs-status/test-runs-logs/test-runs-stop/test-runs-resume), plus activity, aggregate, history, stats, test-all, and gc. " +
|
|
@@ -955,7 +1073,7 @@ export async function handleRequest(request) {
|
|
|
955
1073
|
if (request.method === "tools/call") {
|
|
956
1074
|
const params = asRecordClone(request.params);
|
|
957
1075
|
const name = readRequiredString(params, "name");
|
|
958
|
-
const handler = HANDLERS
|
|
1076
|
+
const handler = getOwnHandler(HANDLERS, name);
|
|
959
1077
|
if (!handler) {
|
|
960
1078
|
throw new PmCliError(`Unknown pm MCP tool: ${name}`, 64);
|
|
961
1079
|
}
|
|
@@ -972,7 +1090,9 @@ export async function handleRequest(request) {
|
|
|
972
1090
|
for (const warning of warnings) {
|
|
973
1091
|
console.error(`[pm-mcp] ${warning}`);
|
|
974
1092
|
}
|
|
975
|
-
|
|
1093
|
+
// cwd is applied inside the serialized activation cycle (see withActiveExtensions),
|
|
1094
|
+
// so the chdir/restore is exclusive per request and cannot race a concurrent caller.
|
|
1095
|
+
const result = await handler(args);
|
|
976
1096
|
return resultContent(result, warnings);
|
|
977
1097
|
}
|
|
978
1098
|
throw new PmCliError(`Unsupported MCP method: ${request.method ?? "(missing)"}`, 64);
|
|
@@ -1093,4 +1213,4 @@ if (isInvokedAsMcpMainModule(process.argv[1], import.meta.url)) {
|
|
|
1093
1213
|
}
|
|
1094
1214
|
/* c8 ignore stop */
|
|
1095
1215
|
//# sourceMappingURL=server.js.map
|
|
1096
|
-
//# debugId=
|
|
1216
|
+
//# debugId=28140feb-d035-55d6-bd6a-d90ed2c41f26
|