@unbrained/pm-cli 2026.6.9 → 2026.6.11
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/.claude-plugin/marketplace.json +1 -1
- package/CHANGELOG.md +59 -0
- package/README.md +1 -1
- package/dist/cli/bootstrap-args.d.ts +11 -0
- package/dist/cli/bootstrap-args.js +90 -4
- package/dist/cli/bootstrap-args.js.map +1 -1
- package/dist/cli/commands/aggregate.d.ts +7 -0
- package/dist/cli/commands/aggregate.js +53 -12
- package/dist/cli/commands/aggregate.js.map +1 -1
- package/dist/cli/commands/close.d.ts +1 -0
- package/dist/cli/commands/close.js +106 -3
- package/dist/cli/commands/close.js.map +1 -1
- package/dist/cli/commands/completion.js +20 -7
- package/dist/cli/commands/completion.js.map +1 -1
- package/dist/cli/commands/context.d.ts +9 -0
- package/dist/cli/commands/context.js +149 -20
- package/dist/cli/commands/context.js.map +1 -1
- package/dist/cli/commands/contracts.d.ts +2 -0
- package/dist/cli/commands/contracts.js +9 -2
- package/dist/cli/commands/contracts.js.map +1 -1
- package/dist/cli/commands/create.d.ts +1 -0
- package/dist/cli/commands/create.js +5 -3
- package/dist/cli/commands/create.js.map +1 -1
- package/dist/cli/commands/extension.js +4 -2
- package/dist/cli/commands/extension.js.map +1 -1
- package/dist/cli/commands/health.js +44 -6
- package/dist/cli/commands/health.js.map +1 -1
- package/dist/cli/commands/history.js +6 -5
- package/dist/cli/commands/history.js.map +1 -1
- package/dist/cli/commands/linked-test-parsers.d.ts +1 -0
- package/dist/cli/commands/linked-test-parsers.js +289 -2
- package/dist/cli/commands/linked-test-parsers.js.map +1 -1
- package/dist/cli/commands/reindex.d.ts +1 -0
- package/dist/cli/commands/reindex.js +33 -4
- package/dist/cli/commands/reindex.js.map +1 -1
- package/dist/cli/commands/test.d.ts +6 -0
- package/dist/cli/commands/test.js +46 -5
- package/dist/cli/commands/test.js.map +1 -1
- package/dist/cli/error-guidance.d.ts +8 -0
- package/dist/cli/error-guidance.js +102 -2
- package/dist/cli/error-guidance.js.map +1 -1
- package/dist/cli/extension-command-help.d.ts +1 -0
- package/dist/cli/extension-command-help.js +42 -2
- package/dist/cli/extension-command-help.js.map +1 -1
- package/dist/cli/extension-command-options.d.ts +2 -0
- package/dist/cli/extension-command-options.js +51 -2
- package/dist/cli/extension-command-options.js.map +1 -1
- package/dist/cli/main.js +26 -26
- package/dist/cli/main.js.map +1 -1
- package/dist/cli/register-list-query.js +3 -2
- package/dist/cli/register-list-query.js.map +1 -1
- package/dist/cli/register-mutation.js +4 -2
- package/dist/cli/register-mutation.js.map +1 -1
- package/dist/cli/register-operations.js +15 -6
- package/dist/cli/register-operations.js.map +1 -1
- package/dist/cli/registration-helpers.js +9 -2
- package/dist/cli/registration-helpers.js.map +1 -1
- package/dist/cli-bundle/chunks/{activity-RUJATACW.js → activity-XADJOG6G.js} +11 -11
- package/dist/cli-bundle/chunks/activity-XZIUPGZH.js +16 -0
- package/dist/cli-bundle/chunks/{aggregate-TT7OCHHT.js → aggregate-6OTS3AOO.js} +65 -24
- package/dist/cli-bundle/chunks/aggregate-6OTS3AOO.js.map +1 -0
- package/dist/cli-bundle/chunks/{aggregate-IQ27NFBI.js → aggregate-OD36DJU5.js} +64 -23
- package/dist/cli-bundle/chunks/aggregate-OD36DJU5.js.map +7 -0
- package/dist/cli-bundle/chunks/{append-E7AJ5RTR.js → append-JYWO4P7W.js} +8 -8
- package/dist/cli-bundle/chunks/{append-CWQZBUWV.js → append-KG55G7S3.js} +8 -8
- package/dist/cli-bundle/chunks/{chunk-LF2VNLEZ.js → chunk-3KLPFWZ4.js} +8 -8
- package/dist/cli-bundle/chunks/{chunk-LF2VNLEZ.js.map → chunk-3KLPFWZ4.js.map} +2 -2
- package/dist/cli-bundle/chunks/{chunk-ENCVPOID.js → chunk-3SLOMKCJ.js} +12 -12
- package/dist/cli-bundle/chunks/chunk-4HFU4UO2.js +518 -0
- package/dist/cli-bundle/chunks/chunk-4HFU4UO2.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-F2REA7VW.js → chunk-4JCSYR6F.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-CAXUGAAF.js → chunk-4YFAGDRH.js} +8 -8
- package/dist/cli-bundle/chunks/{chunk-U3Z4OCZC.js → chunk-5SCT2JCT.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-NHRZSYAA.js → chunk-73ZPG2I3.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-D5D7VKIC.js → chunk-7IYFN5R7.js} +6 -5
- package/dist/cli-bundle/chunks/chunk-7IYFN5R7.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-A5342JVL.js → chunk-7RIT3OCD.js} +12 -12
- package/dist/cli-bundle/chunks/{chunk-LU54Z4QI.js → chunk-7UGSRQCL.js} +76 -74
- package/dist/cli-bundle/chunks/{chunk-LU54Z4QI.js.map → chunk-7UGSRQCL.js.map} +3 -3
- package/dist/cli-bundle/chunks/{chunk-5JF76OJF.js → chunk-A6LXQFO7.js} +290 -25
- package/dist/cli-bundle/chunks/chunk-A6LXQFO7.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-7CR4GAYN.js → chunk-ATEES5SX.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-FHUI7AXS.js → chunk-AVGHVVF7.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-T7B5VAKD.js → chunk-B65UUCGQ.js} +13 -6
- package/dist/cli-bundle/chunks/chunk-B65UUCGQ.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-42IULX44.js → chunk-CCX4RSYZ.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-EFRHTZO4.js → chunk-CW6E4NAT.js} +8 -8
- package/dist/cli-bundle/chunks/{chunk-JN3BT7UY.js → chunk-DY6C42S6.js} +9 -9
- package/dist/cli-bundle/chunks/{chunk-PUSOAQCR.js → chunk-E5DUIJA4.js} +5 -5
- package/dist/cli-bundle/chunks/{chunk-E7LOIIFP.js → chunk-ESANVZF4.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-WQZCEEQN.js → chunk-EWFY7SLA.js} +157 -12
- package/dist/cli-bundle/chunks/chunk-EWFY7SLA.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-YI6W2DBN.js → chunk-F75JSIOZ.js} +6 -6
- package/dist/cli-bundle/chunks/{chunk-6IGTNFE3.js → chunk-FDH2X65L.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-GPOSGWCN.js → chunk-FXRU333M.js} +68 -7
- package/dist/cli-bundle/chunks/chunk-FXRU333M.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-C72IQIBT.js → chunk-FY4SPXSC.js} +302 -30
- package/dist/cli-bundle/chunks/chunk-FY4SPXSC.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-TLD3UYGY.js → chunk-GKIZW7SM.js} +5 -4
- package/dist/cli-bundle/chunks/chunk-GKIZW7SM.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-YSANBZAE.js → chunk-GWZSYR6X.js} +12 -5
- package/dist/cli-bundle/chunks/chunk-GWZSYR6X.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-FJNJEWU4.js → chunk-HGLC63AU.js} +14 -12
- package/dist/cli-bundle/chunks/chunk-HGLC63AU.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-RLVI7KDW.js → chunk-HHHJ2GI3.js} +163 -11
- package/dist/cli-bundle/chunks/chunk-HHHJ2GI3.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-AVGOVJGV.js → chunk-HI7STVF2.js} +9 -9
- package/dist/cli-bundle/chunks/{chunk-AVGOVJGV.js.map → chunk-HI7STVF2.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-ANKG2JKL.js → chunk-I2IJY2NL.js} +12 -5
- package/dist/cli-bundle/chunks/chunk-I2IJY2NL.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-ZPXDD6RQ.js → chunk-I53JBTJW.js} +6 -6
- package/dist/cli-bundle/chunks/{chunk-23WNCJBA.js → chunk-I7NYDZDV.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-EQ6N6IDR.js → chunk-IGVJRZ6H.js} +13 -11
- package/dist/cli-bundle/chunks/chunk-IGVJRZ6H.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-JVMAOD54.js → chunk-IH4MBKK7.js} +14 -7
- package/dist/cli-bundle/chunks/chunk-IH4MBKK7.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-BIRVSIM2.js → chunk-IKOH24GZ.js} +14 -14
- package/dist/cli-bundle/chunks/chunk-IKOH24GZ.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-SAUXUI6U.js → chunk-IUKD4W6Z.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-3RHE76G6.js → chunk-J3GD64J2.js} +15 -15
- package/dist/cli-bundle/chunks/chunk-J3GD64J2.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-OT6XAMO5.js → chunk-KWAXVAXX.js} +7 -5
- package/dist/cli-bundle/chunks/{chunk-OT6XAMO5.js.map → chunk-KWAXVAXX.js.map} +2 -2
- package/dist/cli-bundle/chunks/{chunk-SD6H3RLA.js → chunk-LCSCXBGT.js} +15 -5
- package/dist/cli-bundle/chunks/{chunk-SD6H3RLA.js.map → chunk-LCSCXBGT.js.map} +2 -2
- package/dist/cli-bundle/chunks/{chunk-RKCJ2JMA.js → chunk-OASDW5UI.js} +7 -7
- package/dist/cli-bundle/chunks/{chunk-JEGFLKSI.js → chunk-OLKBSY4N.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-4LRVXVJK.js → chunk-P2PSODAQ.js} +70 -9
- package/dist/cli-bundle/chunks/chunk-P2PSODAQ.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-XEOO6K5J.js → chunk-P5BJOMBB.js} +9 -9
- package/dist/cli-bundle/chunks/{chunk-P2NVFE4L.js → chunk-P5U5EOMA.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-AM2AXVFS.js → chunk-PSD7F7DX.js} +5 -5
- package/dist/cli-bundle/chunks/{chunk-VDVVOLR6.js → chunk-QJMGRZO2.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-7YTWXGE3.js → chunk-QKW5D45B.js} +112 -7
- package/dist/cli-bundle/chunks/chunk-QKW5D45B.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-T7NWFVOA.js → chunk-QNJSITCX.js} +7 -7
- package/dist/cli-bundle/chunks/{chunk-MNXJ6YDO.js → chunk-RXAP6JL5.js} +9 -9
- package/dist/cli-bundle/chunks/{chunk-5MMLINZB.js → chunk-S26FESD4.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-I26E6XA7.js → chunk-S2ZLDYGS.js} +8 -6
- package/dist/cli-bundle/chunks/chunk-S2ZLDYGS.js.map +1 -0
- package/dist/cli-bundle/chunks/chunk-SXKNJPQ7.js +528 -0
- package/dist/cli-bundle/chunks/chunk-SXKNJPQ7.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-OPYA2HIU.js → chunk-TK5VZFHY.js} +7 -7
- package/dist/cli-bundle/chunks/{chunk-4TJWRPIH.js → chunk-TNAP7EJX.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-I4FGL3K2.js → chunk-UOO6BYIA.js} +16 -6
- package/dist/cli-bundle/chunks/chunk-UOO6BYIA.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-5ATRWEZO.js → chunk-UUWGCWBU.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-YX5LAKFJ.js → chunk-VAOUX6TK.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-RMTI5R76.js → chunk-VFUZV5EB.js} +111 -6
- package/dist/cli-bundle/chunks/chunk-VFUZV5EB.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-WCWIDJII.js → chunk-VPEAS7PS.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-RE2JQJZJ.js → chunk-VSRZRLG3.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-PW7C262O.js → chunk-WUNFKP7M.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-BACSNVWE.js → chunk-XJDGS74Y.js} +71 -69
- package/dist/cli-bundle/chunks/{chunk-BACSNVWE.js.map → chunk-XJDGS74Y.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-H37YPWLM.js → chunk-XMBI6TNW.js} +13 -7
- package/dist/cli-bundle/chunks/chunk-XMBI6TNW.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-NUGAWYEN.js → chunk-XTKJSVWH.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-KDX6VC3P.js → chunk-XUC4C4PT.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-44JP4PYY.js → chunk-Y3YKK7CY.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-KTVXLI54.js → chunk-YW6Q3RYZ.js} +7 -7
- package/dist/cli-bundle/chunks/{chunk-I3UILOUU.js → chunk-ZLMIWZUG.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-FKH7K6YP.js → chunk-ZMW77VWV.js} +9 -9
- package/dist/cli-bundle/chunks/{chunk-NJRZIJ4N.js → chunk-ZYNJNPYD.js} +14 -8
- package/dist/cli-bundle/chunks/chunk-ZYNJNPYD.js.map +1 -0
- package/dist/cli-bundle/chunks/{claim-UXFGCF3P.js → claim-2RDYMCTP.js} +10 -10
- package/dist/cli-bundle/chunks/{claim-RV6WYUF7.js → claim-MJ7DZFC3.js} +10 -10
- package/dist/cli-bundle/chunks/close-4FMAPEMY.js +13 -0
- package/dist/cli-bundle/chunks/{close-O4JK2JKD.js → close-XLEKIQSW.js} +8 -8
- package/dist/cli-bundle/chunks/{close-many-EQO4TPIE.js → close-many-AOD4HSAZ.js} +15 -15
- package/dist/cli-bundle/chunks/{close-many-SRDBV3SI.js → close-many-XKAQY5CQ.js} +15 -15
- package/dist/cli-bundle/chunks/{comments-TTZUIB2O.js → comments-B4RWWDJT.js} +10 -10
- package/dist/cli-bundle/chunks/{comments-OMB7YE27.js → comments-RN5TG4ZN.js} +10 -10
- package/dist/cli-bundle/chunks/{config-5VPR42A6.js → config-3JXJ3XZ7.js} +8 -8
- package/dist/cli-bundle/chunks/{config-NNLXVGVC.js → config-FZ4UDC4B.js} +8 -8
- package/dist/cli-bundle/chunks/{context-4QK6GRXO.js → context-L36PIN35.js} +146 -33
- package/dist/cli-bundle/chunks/{context-4QK6GRXO.js.map → context-L36PIN35.js.map} +2 -2
- package/dist/cli-bundle/chunks/{context-4N7GYTVQ.js → context-QBPO3BFM.js} +147 -34
- package/dist/cli-bundle/chunks/context-QBPO3BFM.js.map +1 -0
- package/dist/cli-bundle/chunks/{contracts-DXCWXOSP.js → contracts-3NKWYKKU.js} +309 -6
- package/dist/cli-bundle/chunks/contracts-3NKWYKKU.js.map +1 -0
- package/dist/cli-bundle/chunks/{contracts-AOBNEBVT.js → contracts-MIXBWJIB.js} +315 -5
- package/dist/cli-bundle/chunks/contracts-MIXBWJIB.js.map +7 -0
- package/dist/cli-bundle/chunks/{copy-5NM3SVJA.js → copy-ALU5WMHA.js} +7 -7
- package/dist/cli-bundle/chunks/{copy-XSYEQTLA.js → copy-FWIVTLBO.js} +7 -7
- package/dist/cli-bundle/chunks/{create-FCCAATQV.js → create-IFA26O2I.js} +13 -13
- package/dist/cli-bundle/chunks/create-JVXYHYH4.js +27 -0
- package/dist/cli-bundle/chunks/{delete-5JFP6OG7.js → delete-IYTIYAJS.js} +7 -7
- package/dist/cli-bundle/chunks/{delete-PQXJQXQ7.js → delete-Y2SGJBGY.js} +7 -7
- package/dist/cli-bundle/chunks/{deps-S5322EOQ.js → deps-6TSPOSGU.js} +7 -7
- package/dist/cli-bundle/chunks/{deps-XXKBOQUA.js → deps-CZ4PTVXU.js} +7 -7
- package/dist/cli-bundle/chunks/{docs-C7CCVWAJ.js → docs-5WMBVQT2.js} +9 -9
- package/dist/cli-bundle/chunks/{docs-DZRPAW5S.js → docs-MB53UJAJ.js} +9 -9
- package/dist/cli-bundle/chunks/{extension-CSHP6FZX.js → extension-Q34OEWO5.js} +5 -5
- package/dist/cli-bundle/chunks/{extension-XNNVUVAY.js → extension-WH2FOIOZ.js} +5 -5
- package/dist/cli-bundle/chunks/{files-UPCNKEIZ.js → files-DLB5LJEP.js} +9 -9
- package/dist/cli-bundle/chunks/{files-OBWYYPKM.js → files-GVMNVLCB.js} +9 -9
- package/dist/cli-bundle/chunks/{gc-FA2ONELT.js → gc-2WEPW6D6.js} +3 -3
- package/dist/cli-bundle/chunks/{gc-KXK6KBRN.js → gc-4Z3IKHAZ.js} +3 -3
- package/dist/cli-bundle/chunks/{get-PNTSONGB.js → get-PCHS7RA6.js} +11 -11
- package/dist/cli-bundle/chunks/{get-FLHYTOBA.js → get-QARTE6BL.js} +11 -11
- package/dist/cli-bundle/chunks/{health-CS5RNTJX.js → health-4ZYB3IYQ.js} +47 -19
- package/dist/cli-bundle/chunks/health-4ZYB3IYQ.js.map +1 -0
- package/dist/cli-bundle/chunks/{health-KCRVYIYY.js → health-YO5LRWN4.js} +46 -18
- package/dist/cli-bundle/chunks/health-YO5LRWN4.js.map +7 -0
- package/dist/cli-bundle/chunks/{history-COQTPBEU.js → history-7WUAEWHW.js} +10 -10
- package/dist/cli-bundle/chunks/history-L2FQFRTU.js +20 -0
- package/dist/cli-bundle/chunks/{history-compact-PVS2A3FS.js → history-compact-3EJ3L2O7.js} +11 -11
- package/dist/cli-bundle/chunks/{history-compact-66PSRYL3.js → history-compact-LW27IPFK.js} +11 -11
- package/dist/cli-bundle/chunks/{history-redact-DCXAWGTF.js → history-redact-G72A4EJ4.js} +11 -11
- package/dist/cli-bundle/chunks/history-redact-QWQCX5DZ.js +19 -0
- package/dist/cli-bundle/chunks/{history-repair-SEQDFTGW.js → history-repair-KVPFJKOS.js} +11 -11
- package/dist/cli-bundle/chunks/{history-repair-TA3NRIFO.js → history-repair-RUGKD3YR.js} +11 -11
- package/dist/cli-bundle/chunks/init-4BKRHGWW.js +17 -0
- package/dist/cli-bundle/chunks/{init-IQJE3EKJ.js → init-S5WEGUJY.js} +9 -9
- package/dist/cli-bundle/chunks/{learnings-XC6EMW5E.js → learnings-HQXSSKZ5.js} +10 -10
- package/dist/cli-bundle/chunks/{learnings-RJPGH2ME.js → learnings-XK3P4ZDR.js} +10 -10
- package/dist/cli-bundle/chunks/{list-NJV6WBT4.js → list-6CL3XFT6.js} +10 -10
- package/dist/cli-bundle/chunks/list-BYNN4ZEO.js +19 -0
- package/dist/cli-bundle/chunks/{notes-2KWHADK3.js → notes-5T6P7C5V.js} +10 -10
- package/dist/cli-bundle/chunks/{notes-FNCDMZW2.js → notes-U5FZCSBT.js} +10 -10
- package/dist/cli-bundle/chunks/{plan-CYK2P5PD.js → plan-FQLMJRLZ.js} +13 -13
- package/dist/cli-bundle/chunks/{plan-MQO5JTSV.js → plan-VNUG3WZZ.js} +13 -13
- package/dist/cli-bundle/chunks/{register-list-query-6RA24SIZ.js → register-list-query-NPE3ECJQ.js} +21 -21
- package/dist/cli-bundle/chunks/register-list-query-NPE3ECJQ.js.map +1 -0
- package/dist/cli-bundle/chunks/{register-list-query-IO3RR5K6.js → register-list-query-VHDXWEPP.js} +20 -20
- package/dist/cli-bundle/chunks/register-list-query-VHDXWEPP.js.map +7 -0
- package/dist/cli-bundle/chunks/{register-mutation-VV2SC2KL.js → register-mutation-DG53FCBV.js} +36 -35
- package/dist/cli-bundle/chunks/register-mutation-DG53FCBV.js.map +1 -0
- package/dist/cli-bundle/chunks/{register-mutation-KVFUXCAZ.js → register-mutation-EAYNLGOS.js} +35 -34
- package/dist/cli-bundle/chunks/register-mutation-EAYNLGOS.js.map +7 -0
- package/dist/cli-bundle/chunks/{register-operations-DFNVRSJ5.js → register-operations-AM6KTWB6.js} +42 -37
- package/dist/cli-bundle/chunks/register-operations-AM6KTWB6.js.map +1 -0
- package/dist/cli-bundle/chunks/{register-operations-TAUUTRJ4.js → register-operations-FWFE64JG.js} +41 -36
- package/dist/cli-bundle/chunks/register-operations-FWFE64JG.js.map +7 -0
- package/dist/cli-bundle/chunks/{register-setup-X2R5CFDV.js → register-setup-G4QYI3RX.js} +15 -15
- package/dist/cli-bundle/chunks/{register-setup-GAQZZRUA.js → register-setup-IKX5524L.js} +15 -15
- package/dist/cli-bundle/chunks/restore-CHIOQAQL.js +17 -0
- package/dist/cli-bundle/chunks/{restore-E3GZKRRK.js → restore-M6AFHMV4.js} +11 -11
- package/dist/cli-bundle/chunks/{schema-3CPFLDAY.js → schema-76HDZJCC.js} +8 -8
- package/dist/cli-bundle/chunks/{schema-7EHBPNXM.js → schema-AINZ2IMM.js} +8 -8
- package/dist/cli-bundle/chunks/{search-OBZVYJJ2.js → search-JMLFQEPJ.js} +10 -10
- package/dist/cli-bundle/chunks/{search-2T3NCCUR.js → search-NL3TSCYB.js} +10 -10
- package/dist/cli-bundle/chunks/{stats-6LVK4JER.js → stats-BKXCBIGT.js} +7 -7
- package/dist/cli-bundle/chunks/{stats-ULGQACF7.js → stats-UBD56TGK.js} +7 -7
- package/dist/cli-bundle/chunks/{telemetry-HHKRTMZA.js → telemetry-N454RHG5.js} +4 -4
- package/dist/cli-bundle/chunks/{telemetry-6G27FLCP.js → telemetry-ZJXK3H7X.js} +4 -4
- package/dist/cli-bundle/chunks/{test-2PP4YBV6.js → test-BQAKIXAT.js} +14 -14
- package/dist/cli-bundle/chunks/test-O74JFUH5.js +32 -0
- package/dist/cli-bundle/chunks/{test-all-6Z272JRI.js → test-all-7LV3I6S5.js} +14 -14
- package/dist/cli-bundle/chunks/{test-all-NETGVNM6.js → test-all-TDYCCBA4.js} +14 -14
- package/dist/cli-bundle/chunks/{test-runs-M24WA6TI.js → test-runs-E64M6XS3.js} +5 -5
- package/dist/cli-bundle/chunks/{test-runs-CRPQVMMG.js → test-runs-LXZLULCI.js} +5 -5
- package/dist/cli-bundle/chunks/update-2EVXOC7V.js +21 -0
- package/dist/cli-bundle/chunks/update-5A2B6QYB.js +25 -0
- package/dist/cli-bundle/chunks/{update-many-JSRF5EH5.js → update-many-TUGU5YXQ.js} +22 -22
- package/dist/cli-bundle/chunks/{update-many-Y3HOL7WA.js → update-many-V4LA3C4H.js} +22 -22
- package/dist/cli-bundle/chunks/{upgrade-5RTQVKKE.js → upgrade-37F7JKES.js} +5 -5
- package/dist/cli-bundle/chunks/{upgrade-ECB6GH3M.js → upgrade-L32JA4TZ.js} +5 -5
- package/dist/cli-bundle/chunks/{validate-MCNMAXVA.js → validate-EQTT6WVX.js} +16 -16
- package/dist/cli-bundle/chunks/{validate-J6Q444SD.js → validate-XN4I4DPL.js} +16 -16
- package/dist/cli-bundle/main.js +276 -47
- package/dist/cli-bundle/main.js.map +2 -2
- package/dist/core/diagnostics/remediation.js +12 -2
- package/dist/core/diagnostics/remediation.js.map +1 -1
- package/dist/core/extensions/extension-policy.d.ts +14 -1
- package/dist/core/extensions/extension-policy.js +38 -3
- package/dist/core/extensions/extension-policy.js.map +1 -1
- package/dist/core/extensions/extension-types.d.ts +40 -1
- package/dist/core/extensions/extension-types.js +28 -2
- package/dist/core/extensions/extension-types.js.map +1 -1
- package/dist/core/extensions/loader.d.ts +6 -4
- package/dist/core/extensions/loader.js +67 -14
- package/dist/core/extensions/loader.js.map +1 -1
- package/dist/core/history/replay.d.ts +1 -1
- package/dist/core/history/replay.js +13 -4
- package/dist/core/history/replay.js.map +1 -1
- package/dist/core/output/mutation-projection.d.ts +2 -0
- package/dist/core/output/mutation-projection.js +9 -2
- package/dist/core/output/mutation-projection.js.map +1 -1
- package/dist/core/output/output.d.ts +2 -0
- package/dist/core/output/output.js +7 -3
- package/dist/core/output/output.js.map +1 -1
- package/dist/core/output/query-summary.d.ts +31 -0
- package/dist/core/output/query-summary.js +62 -0
- package/dist/core/output/query-summary.js.map +1 -0
- package/dist/core/shared/command-types.d.ts +1 -0
- package/dist/core/shared/command-types.js +2 -2
- package/dist/core/shared/command-types.js.map +1 -1
- package/dist/core/shared/constants.js +8 -4
- package/dist/core/shared/constants.js.map +1 -1
- package/dist/core/store/item-store.d.ts +1 -1
- package/dist/core/store/item-store.js +3 -3
- package/dist/core/store/item-store.js.map +1 -1
- package/dist/core/store/settings-read-cache.d.ts +15 -0
- package/dist/core/store/settings-read-cache.js +72 -0
- package/dist/core/store/settings-read-cache.js.map +1 -0
- package/dist/core/store/settings-validator.d.ts +4 -1
- package/dist/core/store/settings-validator.js +14 -2
- package/dist/core/store/settings-validator.js.map +1 -1
- package/dist/core/store/settings.js +166 -16
- package/dist/core/store/settings.js.map +1 -1
- package/dist/core/telemetry/runtime.d.ts +1 -0
- package/dist/core/telemetry/runtime.js +3 -3
- package/dist/core/telemetry/runtime.js.map +1 -1
- package/dist/core/test/run-selectors.d.ts +27 -0
- package/dist/core/test/run-selectors.js +110 -0
- package/dist/core/test/run-selectors.js.map +1 -0
- package/dist/mcp/server.js +76 -262
- package/dist/mcp/server.js.map +1 -1
- package/dist/mcp/tool-definitions.d.ts +27 -0
- package/dist/mcp/tool-definitions.js +330 -0
- package/dist/mcp/tool-definitions.js.map +1 -0
- package/dist/sdk/cli-contracts/commander-mutation-options.js +3 -2
- package/dist/sdk/cli-contracts/commander-mutation-options.js.map +1 -1
- package/dist/sdk/cli-contracts/tool-option-contracts.js +3 -2
- package/dist/sdk/cli-contracts/tool-option-contracts.js.map +1 -1
- package/dist/sdk/cli-contracts/tool-parameter-tables.js +29 -2
- package/dist/sdk/cli-contracts/tool-parameter-tables.js.map +1 -1
- package/dist/sdk/cli-contracts.js +37 -5
- package/dist/sdk/cli-contracts.js.map +1 -1
- package/dist/sdk/index.d.ts +1 -1
- package/dist/sdk/index.js +2 -2
- package/dist/sdk/index.js.map +1 -1
- package/dist/sdk/runtime.d.ts +6 -0
- package/dist/sdk/runtime.js +51 -3
- package/dist/sdk/runtime.js.map +1 -1
- package/dist/types.d.ts +4 -1
- package/dist/types.js +4 -2
- package/dist/types.js.map +1 -1
- package/docs/AGENT_GUIDE.md +7 -1
- package/docs/ARCHITECTURE.md +7 -0
- package/docs/CLAUDE_CODE_PLUGIN.md +2 -2
- package/docs/COMMANDS.md +38 -3
- package/docs/CONFIGURATION.md +1 -1
- package/docs/EXTENSIONS.md +55 -53
- package/docs/SDK.md +8 -2
- package/docs/TESTING.md +60 -0
- package/docs/schemas/extension-manifest.schema.json +120 -0
- package/marketplace.json +1 -1
- package/package.json +2 -2
- package/packages/pm-beads/extensions/beads/manifest.json +10 -0
- package/packages/pm-calendar/extensions/calendar/manifest.json +10 -0
- package/packages/pm-command-kit/README.md +72 -0
- package/packages/pm-command-kit/extensions/command-kit/index.js +181 -0
- package/packages/pm-command-kit/extensions/command-kit/index.ts +176 -0
- package/packages/pm-command-kit/extensions/command-kit/manifest.json +22 -0
- package/packages/pm-command-kit/package.json +53 -0
- package/packages/pm-governance-audit/extensions/governance-audit/manifest.json +10 -0
- package/packages/pm-guide-shell/extensions/guide-shell/manifest.json +10 -0
- package/packages/pm-lifecycle-hooks/extensions/lifecycle-hooks/manifest.json +10 -0
- package/packages/pm-linked-test-adapters/extensions/linked-test-adapters/manifest.json +10 -0
- package/packages/pm-search-advanced/extensions/search-advanced/index.js +6 -0
- package/packages/pm-search-advanced/extensions/search-advanced/index.ts +6 -0
- package/packages/pm-search-advanced/extensions/search-advanced/manifest.json +10 -0
- package/packages/pm-search-advanced/extensions/search-advanced/runtime.js +1 -0
- package/packages/pm-search-advanced/extensions/search-advanced/runtime.ts +1 -0
- package/packages/pm-templates/extensions/templates/manifest.json +10 -0
- package/packages/pm-todos/extensions/todos/manifest.json +10 -0
- package/plugins/pm-claude/.claude-plugin/plugin.json +1 -1
- package/plugins/pm-claude/README.md +7 -3
- package/plugins/pm-claude/commands/pm-init.md +1 -1
- package/plugins/pm-codex/README.md +2 -2
- package/dist/cli-bundle/chunks/activity-HF3VJYKH.js +0 -16
- package/dist/cli-bundle/chunks/aggregate-IQ27NFBI.js.map +0 -7
- package/dist/cli-bundle/chunks/aggregate-TT7OCHHT.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-3RHE76G6.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-4LRVXVJK.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-5JF76OJF.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-7YTWXGE3.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-ANKG2JKL.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-BIRVSIM2.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-C72IQIBT.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-D5D7VKIC.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-EQ6N6IDR.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-FJNJEWU4.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-GPOSGWCN.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-H37YPWLM.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-I26E6XA7.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-I4FGL3K2.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-JVMAOD54.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-LU2HE272.js +0 -242
- package/dist/cli-bundle/chunks/chunk-LU2HE272.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-NJRZIJ4N.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-O4L7Z6LB.js +0 -252
- package/dist/cli-bundle/chunks/chunk-O4L7Z6LB.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-RLVI7KDW.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-RMTI5R76.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-T7B5VAKD.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-TLD3UYGY.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-WQZCEEQN.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-YSANBZAE.js.map +0 -7
- package/dist/cli-bundle/chunks/close-JTTGW7TS.js +0 -13
- package/dist/cli-bundle/chunks/context-4N7GYTVQ.js.map +0 -1
- package/dist/cli-bundle/chunks/contracts-AOBNEBVT.js.map +0 -7
- package/dist/cli-bundle/chunks/contracts-DXCWXOSP.js.map +0 -1
- package/dist/cli-bundle/chunks/create-JAPLFDGJ.js +0 -27
- package/dist/cli-bundle/chunks/health-CS5RNTJX.js.map +0 -1
- package/dist/cli-bundle/chunks/health-KCRVYIYY.js.map +0 -7
- package/dist/cli-bundle/chunks/history-6624XISO.js +0 -20
- package/dist/cli-bundle/chunks/history-redact-ZRQTI7NB.js +0 -19
- package/dist/cli-bundle/chunks/init-ZVE2HMKK.js +0 -17
- package/dist/cli-bundle/chunks/list-OO5P472O.js +0 -19
- package/dist/cli-bundle/chunks/register-list-query-6RA24SIZ.js.map +0 -1
- package/dist/cli-bundle/chunks/register-list-query-IO3RR5K6.js.map +0 -7
- package/dist/cli-bundle/chunks/register-mutation-KVFUXCAZ.js.map +0 -7
- package/dist/cli-bundle/chunks/register-mutation-VV2SC2KL.js.map +0 -1
- package/dist/cli-bundle/chunks/register-operations-DFNVRSJ5.js.map +0 -1
- package/dist/cli-bundle/chunks/register-operations-TAUUTRJ4.js.map +0 -7
- package/dist/cli-bundle/chunks/restore-F4ALFV4D.js +0 -17
- package/dist/cli-bundle/chunks/test-PPOLRIBA.js +0 -32
- package/dist/cli-bundle/chunks/update-MCPCPMHV.js +0 -25
- package/dist/cli-bundle/chunks/update-O7TBOUVQ.js +0 -21
- /package/dist/cli-bundle/chunks/{activity-RUJATACW.js.map → activity-XADJOG6G.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{activity-HF3VJYKH.js.map → activity-XZIUPGZH.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{append-E7AJ5RTR.js.map → append-JYWO4P7W.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{append-CWQZBUWV.js.map → append-KG55G7S3.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-ENCVPOID.js.map → chunk-3SLOMKCJ.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-F2REA7VW.js.map → chunk-4JCSYR6F.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-CAXUGAAF.js.map → chunk-4YFAGDRH.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-U3Z4OCZC.js.map → chunk-5SCT2JCT.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-NHRZSYAA.js.map → chunk-73ZPG2I3.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-A5342JVL.js.map → chunk-7RIT3OCD.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-7CR4GAYN.js.map → chunk-ATEES5SX.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-FHUI7AXS.js.map → chunk-AVGHVVF7.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-42IULX44.js.map → chunk-CCX4RSYZ.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-EFRHTZO4.js.map → chunk-CW6E4NAT.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-JN3BT7UY.js.map → chunk-DY6C42S6.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-PUSOAQCR.js.map → chunk-E5DUIJA4.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-E7LOIIFP.js.map → chunk-ESANVZF4.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-YI6W2DBN.js.map → chunk-F75JSIOZ.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-6IGTNFE3.js.map → chunk-FDH2X65L.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-ZPXDD6RQ.js.map → chunk-I53JBTJW.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-23WNCJBA.js.map → chunk-I7NYDZDV.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-SAUXUI6U.js.map → chunk-IUKD4W6Z.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-RKCJ2JMA.js.map → chunk-OASDW5UI.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-JEGFLKSI.js.map → chunk-OLKBSY4N.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-XEOO6K5J.js.map → chunk-P5BJOMBB.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-P2NVFE4L.js.map → chunk-P5U5EOMA.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-AM2AXVFS.js.map → chunk-PSD7F7DX.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-VDVVOLR6.js.map → chunk-QJMGRZO2.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-T7NWFVOA.js.map → chunk-QNJSITCX.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-MNXJ6YDO.js.map → chunk-RXAP6JL5.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-5MMLINZB.js.map → chunk-S26FESD4.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-OPYA2HIU.js.map → chunk-TK5VZFHY.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-4TJWRPIH.js.map → chunk-TNAP7EJX.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-5ATRWEZO.js.map → chunk-UUWGCWBU.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-YX5LAKFJ.js.map → chunk-VAOUX6TK.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-WCWIDJII.js.map → chunk-VPEAS7PS.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-RE2JQJZJ.js.map → chunk-VSRZRLG3.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-PW7C262O.js.map → chunk-WUNFKP7M.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-NUGAWYEN.js.map → chunk-XTKJSVWH.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-KDX6VC3P.js.map → chunk-XUC4C4PT.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-44JP4PYY.js.map → chunk-Y3YKK7CY.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-KTVXLI54.js.map → chunk-YW6Q3RYZ.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-I3UILOUU.js.map → chunk-ZLMIWZUG.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-FKH7K6YP.js.map → chunk-ZMW77VWV.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{claim-UXFGCF3P.js.map → claim-2RDYMCTP.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{claim-RV6WYUF7.js.map → claim-MJ7DZFC3.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{close-JTTGW7TS.js.map → close-4FMAPEMY.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{close-O4JK2JKD.js.map → close-XLEKIQSW.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{close-many-EQO4TPIE.js.map → close-many-AOD4HSAZ.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{close-many-SRDBV3SI.js.map → close-many-XKAQY5CQ.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{comments-TTZUIB2O.js.map → comments-B4RWWDJT.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{comments-OMB7YE27.js.map → comments-RN5TG4ZN.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{config-5VPR42A6.js.map → config-3JXJ3XZ7.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{config-NNLXVGVC.js.map → config-FZ4UDC4B.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{copy-5NM3SVJA.js.map → copy-ALU5WMHA.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{copy-XSYEQTLA.js.map → copy-FWIVTLBO.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{create-FCCAATQV.js.map → create-IFA26O2I.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{create-JAPLFDGJ.js.map → create-JVXYHYH4.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{delete-5JFP6OG7.js.map → delete-IYTIYAJS.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{delete-PQXJQXQ7.js.map → delete-Y2SGJBGY.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{deps-S5322EOQ.js.map → deps-6TSPOSGU.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{deps-XXKBOQUA.js.map → deps-CZ4PTVXU.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{docs-C7CCVWAJ.js.map → docs-5WMBVQT2.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{docs-DZRPAW5S.js.map → docs-MB53UJAJ.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{extension-CSHP6FZX.js.map → extension-Q34OEWO5.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{extension-XNNVUVAY.js.map → extension-WH2FOIOZ.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{files-UPCNKEIZ.js.map → files-DLB5LJEP.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{files-OBWYYPKM.js.map → files-GVMNVLCB.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{gc-FA2ONELT.js.map → gc-2WEPW6D6.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{gc-KXK6KBRN.js.map → gc-4Z3IKHAZ.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{get-PNTSONGB.js.map → get-PCHS7RA6.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{get-FLHYTOBA.js.map → get-QARTE6BL.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{history-COQTPBEU.js.map → history-7WUAEWHW.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{history-6624XISO.js.map → history-L2FQFRTU.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{history-compact-PVS2A3FS.js.map → history-compact-3EJ3L2O7.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{history-compact-66PSRYL3.js.map → history-compact-LW27IPFK.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{history-redact-DCXAWGTF.js.map → history-redact-G72A4EJ4.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{history-redact-ZRQTI7NB.js.map → history-redact-QWQCX5DZ.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{history-repair-SEQDFTGW.js.map → history-repair-KVPFJKOS.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{history-repair-TA3NRIFO.js.map → history-repair-RUGKD3YR.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{init-ZVE2HMKK.js.map → init-4BKRHGWW.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{init-IQJE3EKJ.js.map → init-S5WEGUJY.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{learnings-XC6EMW5E.js.map → learnings-HQXSSKZ5.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{learnings-RJPGH2ME.js.map → learnings-XK3P4ZDR.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{list-NJV6WBT4.js.map → list-6CL3XFT6.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{list-OO5P472O.js.map → list-BYNN4ZEO.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{notes-2KWHADK3.js.map → notes-5T6P7C5V.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{notes-FNCDMZW2.js.map → notes-U5FZCSBT.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{plan-CYK2P5PD.js.map → plan-FQLMJRLZ.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{plan-MQO5JTSV.js.map → plan-VNUG3WZZ.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{register-setup-X2R5CFDV.js.map → register-setup-G4QYI3RX.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{register-setup-GAQZZRUA.js.map → register-setup-IKX5524L.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{restore-F4ALFV4D.js.map → restore-CHIOQAQL.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{restore-E3GZKRRK.js.map → restore-M6AFHMV4.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{schema-3CPFLDAY.js.map → schema-76HDZJCC.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{schema-7EHBPNXM.js.map → schema-AINZ2IMM.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{search-OBZVYJJ2.js.map → search-JMLFQEPJ.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{search-2T3NCCUR.js.map → search-NL3TSCYB.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{stats-6LVK4JER.js.map → stats-BKXCBIGT.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{stats-ULGQACF7.js.map → stats-UBD56TGK.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{telemetry-HHKRTMZA.js.map → telemetry-N454RHG5.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{telemetry-6G27FLCP.js.map → telemetry-ZJXK3H7X.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{test-2PP4YBV6.js.map → test-BQAKIXAT.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{test-PPOLRIBA.js.map → test-O74JFUH5.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{test-all-6Z272JRI.js.map → test-all-7LV3I6S5.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{test-all-NETGVNM6.js.map → test-all-TDYCCBA4.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{test-runs-M24WA6TI.js.map → test-runs-E64M6XS3.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{test-runs-CRPQVMMG.js.map → test-runs-LXZLULCI.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{update-O7TBOUVQ.js.map → update-2EVXOC7V.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{update-MCPCPMHV.js.map → update-5A2B6QYB.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{update-many-JSRF5EH5.js.map → update-many-TUGU5YXQ.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{update-many-Y3HOL7WA.js.map → update-many-V4LA3C4H.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{upgrade-5RTQVKKE.js.map → upgrade-37F7JKES.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{upgrade-ECB6GH3M.js.map → upgrade-L32JA4TZ.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{validate-MCNMAXVA.js.map → validate-EQTT6WVX.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{validate-J6Q444SD.js.map → validate-XN4I4DPL.js.map} +0 -0
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../../../../cli/register-mutation.ts", "../../../../../../../../core/shared/option-alias-visibility.ts"],
|
|
4
|
+
"sourcesContent": ["import { Option, type Command } from \"commander\";\nimport { EXIT_CODE } from \"../core/shared/constants.js\";\nimport { PmCliError } from \"../core/shared/errors.js\";\nimport { isPureSnakeCaseAlias } from \"../core/shared/option-alias-visibility.js\";\nimport {\n CREATE_COMMANDER_OPTION_REGISTRATION_CONTRACTS,\n UPDATE_COMMANDER_OPTION_REGISTRATION_CONTRACTS,\n type CommanderOptionRegistrationContract,\n} from \"../sdk/cli-contracts.js\";\nimport { BUILTIN_ITEM_TYPE_VALUES } from \"../types/index.js\";\n\n// Lowercase set of built-in type names (\"epic\", \"feature\", ...) used by the\n// `pm create` positional guard (pm-edge #1, 2026-05-28): if the single\n// positional exactly matches a known type AND no --title was given, we throw\n// instead of silently creating a Task titled with the type name.\nconst BUILTIN_TYPE_NAME_LOOKUP = new Set<string>(BUILTIN_ITEM_TYPE_VALUES.map((value) => value.toLowerCase()));\nimport {\n collect,\n extractUpdateManyMutationOptionSource,\n formatHookWarnings,\n getGlobalOptions,\n invalidateSearchCachesForMutation,\n normalizeCreateOptions,\n normalizeUpdateOptions,\n printError,\n printResult,\n writeStdout,\n} from \"./registration-helpers.js\";\n\n\n\n/**\n * Register a flag and hide it from `--help` text while keeping it fully\n * functional as a parse-time alias. The option still appears in\n * `command.options`, so the JSON help payload and shell completion (which read\n * from the contracts/commander option list, not the rendered text) are\n * unchanged — only commander's text `--help` omits it.\n */\nfunction addHiddenOption(command: Command, flags: string, description: string, repeatable: boolean): void {\n const option = new Option(flags, description).hideHelp();\n if (repeatable) {\n option.argParser(collect);\n }\n command.addOption(option);\n}\n\n/**\n * Parse the `--order` value for `pm schema add-status`. Accepts a value that is\n * already a number or a numeric string; throws a usage error when the flag was\n * supplied but does not parse to a finite integer (rather than silently dropping\n * it). Returns `undefined` only when the flag was genuinely not provided.\n */\nfunction parseSchemaOrderOption(raw: unknown): number | undefined {\n if (raw === undefined || raw === null) {\n return undefined;\n }\n if (typeof raw === \"number\") {\n if (!Number.isInteger(raw)) {\n throw new PmCliError(\"--order must be a finite integer.\", EXIT_CODE.USAGE);\n }\n return raw;\n }\n if (typeof raw === \"string\") {\n if (raw.trim().length === 0) {\n return undefined;\n }\n const parsed = Number(raw);\n if (!Number.isInteger(parsed)) {\n throw new PmCliError(\"--order must be a finite integer.\", EXIT_CODE.USAGE);\n }\n return parsed;\n }\n throw new PmCliError(\"--order must be a finite integer.\", EXIT_CODE.USAGE);\n}\n\nfunction registerCommanderOptionContracts(command: Command, contracts: CommanderOptionRegistrationContract[]): void {\n for (const contract of contracts) {\n if (contract.required) {\n command.requiredOption(contract.option, contract.description);\n } else if (contract.repeatable) {\n command.option(contract.option, contract.description, collect);\n } else {\n command.option(contract.option, contract.description);\n }\n for (const aliasContract of contract.aliasOptions ?? []) {\n // Hide pure snake_case underscore-duplicate aliases (e.g. --create_mode\n // for --create-mode) from --help, but keep semantically-distinct aliases\n // (e.g. --ac for --acceptance-criteria) visible.\n if (isPureSnakeCaseAlias(contract.option, aliasContract.option)) {\n addHiddenOption(command, aliasContract.option, aliasContract.description, contract.repeatable === true);\n } else if (contract.repeatable) {\n command.option(aliasContract.option, aliasContract.description, collect);\n } else {\n command.option(aliasContract.option, aliasContract.description);\n }\n }\n }\n}\n\nexport function registerMutationCommands(program: Command): void {\n const createCommand = program\n .command(\"create\")\n .argument(\"[typeOrTitle]\", \"Item title, or item type when a title follows (e.g. `pm create task \\\"Fix bug\\\"`)\")\n .argument(\"[title]\", \"Item title when the first argument is an item type\")\n .description(\"Create a new project management item.\");\n registerCommanderOptionContracts(createCommand, CREATE_COMMANDER_OPTION_REGISTRATION_CONTRACTS);\n createCommand\n .option(\"--clear-deps\", \"Clear dependency entries\")\n .option(\"--clear-comments\", \"Clear comments\")\n .option(\"--clear-notes\", \"Clear notes\")\n .option(\"--clear-learnings\", \"Clear learnings\")\n .option(\"--clear-files\", \"Clear linked files\")\n .option(\"--clear-tests\", \"Clear linked tests\")\n .option(\"--clear-docs\", \"Clear linked docs\")\n .option(\"--clear-reminders\", \"Clear reminders\")\n .option(\"--clear-events\", \"Clear events\")\n .option(\"--clear-type-options\", \"Clear type options\")\n .action(async (\n typeOrTitle: string | undefined,\n secondTitle: string | undefined,\n options: Record<string, unknown>,\n command,\n ) => {\n const globalOptions = getGlobalOptions(command);\n const startedAt = Date.now();\n // Support both `pm create \"<title>\"` and the natural subcommand-style\n // `pm create <type> \"<title>\"` so agents are never blocked by argument\n // count. When two positionals are given, the first is the item type.\n let positionalType: string | undefined;\n let positionalTitle: string | undefined;\n if (typeof secondTitle === \"string\" && secondTitle.length > 0) {\n positionalType = typeOrTitle;\n positionalTitle = secondTitle;\n } else if (typeof typeOrTitle === \"string\" && typeOrTitle.length > 0) {\n positionalTitle = typeOrTitle;\n }\n // pm-edge #1 (2026-05-28): when the sole positional matches a known\n // item type AND no --title was supplied, refuse early instead of\n // silently creating a Task titled with the type name (e.g. `pm create\n // Epic` would previously produce a Task literally titled \"Epic\"). The\n // guard fires only for the ambiguous single-positional case so the\n // documented `pm create <type> <title>` flow stays a never-block.\n if (\n positionalType === undefined &&\n typeof positionalTitle === \"string\" &&\n positionalTitle.length > 0 &&\n options.title === undefined &&\n options.type === undefined &&\n BUILTIN_TYPE_NAME_LOOKUP.has(positionalTitle.trim().toLowerCase())\n ) {\n const matchedType = positionalTitle.trim();\n throw new PmCliError(\n `pm create needs a title — \"${matchedType}\" looks like an item type, not a title. Use either: pm create ${matchedType} \"<title>\" or pm create \"<title>\" --type ${matchedType}.`,\n EXIT_CODE.USAGE,\n {\n code: \"create_positional_type_without_title\",\n why: \"Without this guard the single positional is used as the title and the type defaults to Task — so the command would silently create a Task literally titled \\\"\" + matchedType + \"\\\".\",\n examples: [\n `pm create ${matchedType} \"Wire up SSO for the agent harness\"`,\n `pm create \"Wire up SSO for the agent harness\" --type ${matchedType}`,\n ],\n nextSteps: [\n `Re-run with both type and title: pm create ${matchedType} \"<title>\"`,\n ],\n },\n );\n }\n if (typeof positionalType === \"string\" && positionalType.length > 0 && options.type === undefined) {\n options.type = positionalType;\n }\n if (typeof positionalTitle === \"string\" && positionalTitle.length > 0 && options.title === undefined) {\n options.title = positionalTitle;\n }\n const normalized = normalizeCreateOptions(options, { requireType: false });\n const { runCreate } = await import(\"./commands/create.js\");\n const result = await runCreate(normalized, globalOptions);\n await invalidateSearchCachesForMutation(globalOptions, result);\n printResult(result, globalOptions);\n if (globalOptions.profile) {\n printError(`profile:command=create took_ms=${Date.now() - startedAt}`);\n }\n });\n\n program\n .command(\"copy\")\n .argument(\"<id>\", \"Source item id\")\n .option(\"--title <value>\", \"Optional title override for the copied item\")\n .option(\"--author <value>\", \"Mutation author\")\n .option(\"--message <value>\", \"History message\")\n .description(\"Copy an item into a new item id while resetting lifecycle fields.\")\n .action(async (id: string, options: Record<string, unknown>, command) => {\n const globalOptions = getGlobalOptions(command);\n const startedAt = Date.now();\n const { runCopy } = await import(\"./commands/copy.js\");\n const result = await runCopy(\n id,\n {\n title: typeof options.title === \"string\" ? options.title : undefined,\n author: typeof options.author === \"string\" ? options.author : undefined,\n message: typeof options.message === \"string\" ? options.message : undefined,\n },\n globalOptions,\n );\n await invalidateSearchCachesForMutation(globalOptions, result);\n printResult(result, globalOptions);\n if (globalOptions.profile) {\n printError(`profile:command=copy took_ms=${Date.now() - startedAt}`);\n }\n });\n\n const updateCommand = program\n .command(\"update\")\n .argument(\"<id>\", \"Item id\")\n .description(\"Update item fields and metadata.\");\n registerCommanderOptionContracts(updateCommand, UPDATE_COMMANDER_OPTION_REGISTRATION_CONTRACTS);\n updateCommand\n .option(\"--replace-deps\", \"Atomically replace dependency entries with the provided --dep values\")\n .option(\"--replace-tests\", \"Atomically replace linked test entries with the provided --test values\")\n .option(\"--clear-deps\", \"Clear dependency entries\")\n .option(\"--clear-comments\", \"Clear comments\")\n .option(\"--clear-notes\", \"Clear notes\")\n .option(\"--clear-learnings\", \"Clear learnings\")\n .option(\"--clear-files\", \"Clear linked files\")\n .option(\"--clear-tests\", \"Clear linked tests\")\n .option(\"--clear-docs\", \"Clear linked docs\")\n .option(\"--clear-reminders\", \"Clear reminders\")\n .option(\"--clear-events\", \"Clear events\")\n .option(\"--clear-type-options\", \"Clear type options\")\n .option(\"--allow-audit-update\", \"Allow non-owner metadata-only audit updates without requiring --force\")\n .option(\"--allow-audit-dep-update\", \"Allow non-owner append-only dependency updates without requiring --force\")\n .option(\"--force\", \"Force ownership override\");\n addHiddenOption(updateCommand, \"--allow_audit_update\", \"Alias for --allow-audit-update\", false);\n addHiddenOption(updateCommand, \"--allow_audit_dep_update\", \"Alias for --allow-audit-dep-update\", false);\n updateCommand\n .action(async (id: string, options: Record<string, unknown>, command) => {\n const globalOptions = getGlobalOptions(command);\n const startedAt = Date.now();\n const { runUpdate } = await import(\"./commands/update.js\");\n const result = await runUpdate(id, normalizeUpdateOptions(options), globalOptions);\n await invalidateSearchCachesForMutation(globalOptions, result);\n printResult(result, globalOptions);\n if (globalOptions.profile) {\n printError(`profile:command=update took_ms=${Date.now() - startedAt}`);\n }\n });\n\n const updateManyCommand = program\n .command(\"update-many\")\n .description(\"Bulk-update matched items with dry-run plans and rollback checkpoints.\")\n .option(\"--filter-status <value>\", \"Filter by status before applying updates\")\n .option(\"--filter-type <value>\", \"Filter by item type before applying updates\")\n .option(\"--filter-tag <value>\", \"Filter by tag before applying updates\")\n .option(\"--filter-priority <value>\", \"Filter by priority before applying updates\")\n .option(\"--filter-deadline-before <value>\", \"Filter by deadline upper bound before applying updates\")\n .option(\"--filter-deadline-after <value>\", \"Filter by deadline lower bound before applying updates\")\n .option(\"--filter-updated-after <value>\", \"Filter by updated_at lower bound before applying updates (ISO/relative)\")\n .option(\"--filter-updated-before <value>\", \"Filter by updated_at upper bound before applying updates (ISO/relative)\")\n .option(\"--filter-created-after <value>\", \"Filter by created_at lower bound before applying updates (ISO/relative)\")\n .option(\"--filter-created-before <value>\", \"Filter by created_at upper bound before applying updates (ISO/relative)\")\n .option(\"--filter-assignee <value>\", \"Filter by assignee before applying updates\")\n .option(\"--filter-assignee-filter <value>\", \"Filter assignee presence: assigned|unassigned before applying updates\")\n .option(\"--filter-parent <value>\", \"Filter by parent item ID before applying updates\")\n .option(\"--filter-sprint <value>\", \"Filter by sprint before applying updates\")\n .option(\"--filter-release <value>\", \"Filter by release before applying updates\")\n .option(\"--ids <value>\", \"Restrict to an explicit comma-separated ID allowlist (intersected with other filters)\")\n .option(\"--limit <n>\", \"Limit matched item count before apply/preview\")\n .option(\"--offset <n>\", \"Skip first n matched rows before apply/preview\")\n .option(\"--dry-run\", \"Preview per-item diffs and checkpoint intent without mutating\")\n .option(\"--rollback <value>\", \"Rollback a prior update-many checkpoint ID\")\n .option(\"--no-checkpoint\", \"Disable checkpoint creation during apply mode\")\n .option(\"--title, -t <value>\", \"Set title\")\n .option(\"--description, -d <value>\", \"Set description\")\n .option(\"--body, -b <value>\", \"Set body (allow empty string)\")\n .option(\"--status, -s <value>\", \"Set status (use close command for closed)\")\n .option(\"--priority, -p <value>\", \"Set priority\")\n .option(\"--type <value>\", \"Set type\")\n .option(\"--tags <value>\", \"Set comma-separated tags (replaces existing). Use --add-tags / --remove-tags to mutate additively.\")\n .option(\"--add-tags <value>\", \"Add tags additively without replacing existing (repeatable; CSV accepted)\", collect)\n .option(\"--remove-tags <value>\", \"Remove tags from the existing list (repeatable; CSV accepted)\", collect)\n .option(\"--deadline <value>\", \"Set deadline (ISO/date string or relative)\")\n .option(\"--estimate, --estimated-minutes <value>\", \"Set estimated minutes\")\n .option(\"--acceptance-criteria <value>\", \"Set acceptance criteria\")\n .option(\"--ac <value>\", \"Alias for --acceptance-criteria\")\n .option(\"--definition-of-ready <value>\", \"Set definition of ready\")\n .option(\"--order <value>\", \"Set planning order/rank integer\")\n .option(\"--rank <value>\", \"Alias for --order\")\n .option(\"--goal <value>\", \"Set goal identifier\")\n .option(\"--objective <value>\", \"Set objective identifier\")\n .option(\"--value <value>\", \"Set business value summary\")\n .option(\"--impact <value>\", \"Set business impact summary\")\n .option(\"--outcome <value>\", \"Set expected outcome summary\")\n .option(\"--why-now <value>\", \"Set why-now rationale\")\n .option(\"--assignee <value>\", \"Set assignee\")\n .option(\"--parent <value>\", \"Set parent item ID\")\n .option(\"--reviewer <value>\", \"Set reviewer\")\n .option(\"--risk <value>\", \"Set risk level\")\n .option(\"--confidence <value>\", \"Set confidence level\")\n .option(\"--sprint <value>\", \"Set sprint identifier\")\n .option(\"--release <value>\", \"Set release identifier\")\n .option(\"--blocked-by <value>\", \"Set blocked-by item ID or reason\")\n .option(\"--blocked-reason <value>\", \"Set blocked reason\")\n .option(\"--unblock-note <value>\", \"Set unblock rationale note\")\n .option(\"--reporter <value>\", \"Set issue reporter\")\n .option(\"--severity <value>\", \"Set issue severity\")\n .option(\"--environment <value>\", \"Set issue environment context\")\n .option(\"--repro-steps <value>\", \"Set issue reproduction steps\")\n .option(\"--resolution <value>\", \"Set issue resolution summary\")\n .option(\"--expected-result <value>\", \"Set issue expected behavior\")\n .option(\"--expected <value>\", \"Short alias for --expected-result\")\n .option(\"--actual-result <value>\", \"Set issue observed behavior\")\n .option(\"--actual <value>\", \"Short alias for --actual-result\")\n .option(\"--affected-version <value>\", \"Set affected version identifier\")\n .option(\"--fixed-version <value>\", \"Set fixed version identifier\")\n .option(\"--component <value>\", \"Set issue component ownership\")\n .option(\"--regression <value>\", \"Set regression marker: true|false|1|0\")\n .option(\"--customer-impact <value>\", \"Set customer impact summary\")\n .option(\"--dep <value>\", \"Add dependency entry id=<id>,kind=<kind>,author=<author>,created_at=<timestamp>\", collect)\n .option(\"--dep-remove <value>\", \"Remove dependency entries by id/kind/author/timestamp signature\", collect)\n .option(\"--replace-deps\", \"Atomically replace dependency entries with provided --dep values\")\n .option(\"--replace-tests\", \"Atomically replace linked tests with provided --test values\")\n .option(\"--comment <value>\", \"Add comment seed author=<value>,created_at=<iso|now>,text=<value>\", collect)\n .option(\"--note <value>\", \"Add note seed author=<value>,created_at=<iso|now>,text=<value>\", collect)\n .option(\"--learning <value>\", \"Add learning seed author=<value>,created_at=<iso|now>,text=<value>\", collect)\n .option(\"--file <value>\", \"Add linked file path=<value>,scope=<project|global>,note=<text>\", collect)\n .option(\"--test <value>\", \"Add linked test command=<value>,path=<value>,scope=<project|global>\", collect)\n .option(\"--doc <value>\", \"Add linked doc path=<value>,scope=<project|global>,note=<text>\", collect)\n .option(\"--reminder <value>\", \"Add reminder entry at=<iso|relative>|date=<iso|relative>,text=<text>|title=<text>\", collect)\n .option(\"--event <value>\", \"Add event entry start=<iso|relative>,end=<iso|relative>,recur_*\", collect)\n .option(\"--type-option <value>\", \"Set type options key=value (repeatable)\", collect)\n .option(\"--unset <field>\", \"Clear scalar metadata field by name (repeatable)\", collect)\n .option(\"--clear-deps\", \"Clear dependency entries\")\n .option(\"--clear-comments\", \"Clear comments\")\n .option(\"--clear-notes\", \"Clear notes\")\n .option(\"--clear-learnings\", \"Clear learnings\")\n .option(\"--clear-files\", \"Clear linked files\")\n .option(\"--clear-tests\", \"Clear linked tests\")\n .option(\"--clear-docs\", \"Clear linked docs\")\n .option(\"--clear-reminders\", \"Clear reminders\")\n .option(\"--clear-events\", \"Clear events\")\n .option(\"--clear-type-options\", \"Clear type options\")\n .option(\"--allow-audit-update\", \"Allow non-owner metadata-only audit updates without requiring --force\")\n .option(\"--allow-audit-dep-update\", \"Allow non-owner append-only dependency updates without requiring --force\")\n .option(\"--author <value>\", \"Mutation author\")\n .option(\"--message <value>\", \"Mutation message\")\n .option(\"--force\", \"Force ownership override\");\n // Hidden pure snake_case underscore-duplicate aliases (kept parse-functional,\n // omitted from --help to save agent context).\n for (const [flags, description] of [\n [\"--filter-assignee_filter <value>\", \"Alias for --filter-assignee-filter\"],\n [\"--estimated_minutes <value>\", \"Alias for --estimated-minutes\"],\n [\"--acceptance_criteria <value>\", \"Alias for --acceptance-criteria\"],\n [\"--definition_of_ready <value>\", \"Alias for --definition-of-ready\"],\n [\"--why_now <value>\", \"Alias for --why-now\"],\n [\"--blocked_by <value>\", \"Alias for --blocked-by\"],\n [\"--blocked_reason <value>\", \"Alias for --blocked-reason\"],\n [\"--unblock_note <value>\", \"Alias for --unblock-note\"],\n [\"--repro_steps <value>\", \"Alias for --repro-steps\"],\n [\"--expected_result <value>\", \"Alias for --expected-result\"],\n [\"--actual_result <value>\", \"Alias for --actual-result\"],\n [\"--affected_version <value>\", \"Alias for --affected-version\"],\n [\"--fixed_version <value>\", \"Alias for --fixed-version\"],\n [\"--customer_impact <value>\", \"Alias for --customer-impact\"],\n [\"--allow_audit_update\", \"Alias for --allow-audit-update\"],\n [\"--allow_audit_dep_update\", \"Alias for --allow-audit-dep-update\"],\n ] as const) {\n addHiddenOption(updateManyCommand, flags, description, false);\n }\n for (const [flags, description] of [\n [\"--dep_remove <value>\", \"Alias for --dep-remove\"],\n [\"--type_option <value>\", \"Alias for --type-option\"],\n [\"--add_tags <value>\", \"Alias for --add-tags\"],\n [\"--remove_tags <value>\", \"Alias for --remove-tags\"],\n ] as const) {\n addHiddenOption(updateManyCommand, flags, description, true);\n }\n updateManyCommand\n .action(async (options: Record<string, unknown>, command) => {\n const globalOptions = getGlobalOptions(command);\n const startedAt = Date.now();\n const { runUpdateMany } = await import(\"./commands/update-many.js\");\n const result = await runUpdateMany(\n {\n status: typeof options.filterStatus === \"string\" ? options.filterStatus : undefined,\n list: {\n type: typeof options.filterType === \"string\" ? options.filterType : undefined,\n tag: typeof options.filterTag === \"string\" ? options.filterTag : undefined,\n priority: typeof options.filterPriority === \"string\" ? options.filterPriority : undefined,\n deadlineBefore: typeof options.filterDeadlineBefore === \"string\" ? options.filterDeadlineBefore : undefined,\n deadlineAfter: typeof options.filterDeadlineAfter === \"string\" ? options.filterDeadlineAfter : undefined,\n updatedAfter: typeof options.filterUpdatedAfter === \"string\" ? options.filterUpdatedAfter : undefined,\n updatedBefore: typeof options.filterUpdatedBefore === \"string\" ? options.filterUpdatedBefore : undefined,\n createdAfter: typeof options.filterCreatedAfter === \"string\" ? options.filterCreatedAfter : undefined,\n createdBefore: typeof options.filterCreatedBefore === \"string\" ? options.filterCreatedBefore : undefined,\n ids: typeof options.ids === \"string\" ? options.ids : undefined,\n assignee: typeof options.filterAssignee === \"string\" ? options.filterAssignee : undefined,\n assigneeFilter:\n typeof options.filterAssigneeFilter === \"string\"\n ? options.filterAssigneeFilter\n : typeof options.filterAssignee_filter === \"string\"\n ? options.filterAssignee_filter\n : undefined,\n parent: typeof options.filterParent === \"string\" ? options.filterParent : undefined,\n sprint: typeof options.filterSprint === \"string\" ? options.filterSprint : undefined,\n release: typeof options.filterRelease === \"string\" ? options.filterRelease : undefined,\n limit: typeof options.limit === \"string\" ? options.limit : undefined,\n offset: typeof options.offset === \"string\" ? options.offset : undefined,\n includeBody: true,\n },\n update: normalizeUpdateOptions(extractUpdateManyMutationOptionSource(options)),\n dryRun: options.dryRun === true ? true : undefined,\n rollback: typeof options.rollback === \"string\" ? options.rollback : undefined,\n checkpoint: options.checkpoint === false ? false : undefined,\n },\n globalOptions,\n );\n await invalidateSearchCachesForMutation(globalOptions, result);\n printResult(result, globalOptions);\n if (globalOptions.profile) {\n printError(`profile:command=update-many took_ms=${Date.now() - startedAt}`);\n }\n });\n\n const closeCommand = program\n .command(\"close\")\n .argument(\"<id>\", \"Item id\")\n .argument(\"[text]\", \"Close reason text (alias: --reason)\")\n .option(\"--reason <value>\", \"Close reason text (alias for positional <text>)\")\n .option(\"--close-reason <value>\", \"Close reason text (alias for positional <text>)\")\n .option(\"--duplicate-of <id>\", \"Close as a duplicate of the canonical item id and auto-fill duplicate closure metadata\")\n .option(\"--author <value>\", \"Mutation author\")\n .option(\"--message <value>\", \"History message\")\n .option(\"--validate-close [mode]\", 'Validate closure metadata before close: \"off\", \"warn\", or \"strict\" (default: settings governance preset)')\n .option(\"--resolution <value>\", \"Set the closure resolution summary inline (same field --validate-close strict checks; previously required a prior pm update)\")\n .option(\"--expected-result <value>\", \"Set the expected-result note inline (closure validation field)\")\n .option(\"--expected <value>\", \"Short alias for --expected-result\")\n .option(\"--actual-result <value>\", \"Set the actual-result note inline (closure validation field)\")\n .option(\"--actual <value>\", \"Short alias for --actual-result\")\n .option(\"--force\", \"Force ownership override\")\n .description(\"Close an item. Close reason requirement follows governance.require_close_reason.\");\n // pm-fl0c #11 (2026-05-28): expose snake_case aliases alongside the canonical\n // kebab-case so agents using --expected_result/--actual_result do not get an\n // Unknown option error; the rendered help stays clean (aliases hidden).\n addHiddenOption(closeCommand, \"--expected_result <value>\", \"Alias for --expected-result\", false);\n addHiddenOption(closeCommand, \"--actual_result <value>\", \"Alias for --actual-result\", false);\n closeCommand\n .action(async (id: string, text: string | undefined, options: Record<string, unknown>, command) => {\n const globalOptions = getGlobalOptions(command);\n const startedAt = Date.now();\n const { runClose } = await import(\"./commands/close.js\");\n const reasonFromOption =\n (typeof options.reason === \"string\" && options.reason.trim().length > 0 && options.reason) ||\n (typeof options.closeReason === \"string\" && options.closeReason.trim().length > 0 && options.closeReason) ||\n undefined;\n const resolvedText = typeof text === \"string\" && text.length > 0 ? text : reasonFromOption;\n const pickInlineString = (...candidates: unknown[]): string | undefined => {\n for (const candidate of candidates) {\n if (typeof candidate === \"string\") {\n return candidate;\n }\n }\n return undefined;\n };\n const result = await runClose(\n id,\n resolvedText,\n {\n author: typeof options.author === \"string\" ? options.author : undefined,\n message: typeof options.message === \"string\" ? options.message : undefined,\n validateClose:\n options.validateClose === true\n ? \"warn\"\n : typeof options.validateClose === \"string\"\n ? options.validateClose\n : undefined,\n force: Boolean(options.force),\n duplicateOf: typeof options.duplicateOf === \"string\" ? options.duplicateOf : undefined,\n resolution: typeof options.resolution === \"string\" ? options.resolution : undefined,\n expectedResult: pickInlineString(options.expectedResult, options.expected_result, options.expected),\n actualResult: pickInlineString(options.actualResult, options.actual_result, options.actual),\n },\n globalOptions,\n );\n await invalidateSearchCachesForMutation(globalOptions, result);\n printResult(result, globalOptions);\n if (globalOptions.profile) {\n printError(`profile:command=close took_ms=${Date.now() - startedAt}`);\n }\n });\n\n const closeManyCommand = program\n .command(\"close-many\")\n .description(\"Bulk-close matched items with a shared reason and full runClose semantics (dry-run + rollback checkpoint).\")\n .option(\"--filter-status <value>\", \"Filter by status before closing\")\n .option(\"--filter-type <value>\", \"Filter by item type before closing\")\n .option(\"--filter-tag <value>\", \"Filter by tag before closing\")\n .option(\"--filter-priority <value>\", \"Filter by priority before closing\")\n .option(\"--filter-deadline-before <value>\", \"Filter by deadline upper bound before closing\")\n .option(\"--filter-deadline-after <value>\", \"Filter by deadline lower bound before closing\")\n .option(\"--filter-updated-after <value>\", \"Filter by updated_at lower bound before closing (ISO/relative)\")\n .option(\"--filter-updated-before <value>\", \"Filter by updated_at upper bound before closing (ISO/relative)\")\n .option(\"--filter-created-after <value>\", \"Filter by created_at lower bound before closing (ISO/relative)\")\n .option(\"--filter-created-before <value>\", \"Filter by created_at upper bound before closing (ISO/relative)\")\n .option(\"--filter-assignee <value>\", \"Filter by assignee before closing\")\n .option(\"--filter-assignee-filter <value>\", \"Filter assignee presence: assigned|unassigned before closing\")\n .option(\"--filter-parent <value>\", \"Filter by parent item ID before closing\")\n .option(\"--filter-sprint <value>\", \"Filter by sprint before closing\")\n .option(\"--filter-release <value>\", \"Filter by release before closing\")\n .option(\"--ids <value>\", \"Restrict to an explicit comma-separated ID allowlist (intersected with other filters)\")\n .option(\"--limit <n>\", \"Limit matched item count before apply/preview\")\n .option(\"--offset <n>\", \"Skip first n matched rows before apply/preview\")\n .option(\"--reason <value>\", \"Shared close reason applied to matched items (required when governance.require_close_reason is enabled)\")\n .option(\"--resolution <value>\", \"Shared closure resolution applied to every matched item (closure-validation field)\")\n .option(\"--expected-result <value>\", \"Shared expected-result note (closure-validation field)\")\n .option(\"--expected <value>\", \"Short alias for --expected-result\")\n .option(\"--actual-result <value>\", \"Shared actual-result note (closure-validation field)\")\n .option(\"--actual <value>\", \"Short alias for --actual-result\")\n .option(\"--validate-close [mode]\", 'Validate closure metadata per item: \"off\", \"warn\", or \"strict\" (default: settings governance preset)')\n .option(\"--author <value>\", \"Mutation author\")\n .option(\"--message <value>\", \"History message\")\n .option(\"--force\", \"Re-close already-terminal matches and override ownership\")\n .option(\"--dry-run\", \"Preview matched items + per-item skip/active-child plan without mutating\")\n .option(\"--rollback <value>\", \"Rollback a prior close-many checkpoint ID\")\n .option(\"--no-checkpoint\", \"Disable checkpoint creation during apply mode\");\n addHiddenOption(closeManyCommand, \"--filter-assignee_filter <value>\", \"Alias for --filter-assignee-filter\", false);\n addHiddenOption(closeManyCommand, \"--expected_result <value>\", \"Alias for --expected-result\", false);\n addHiddenOption(closeManyCommand, \"--actual_result <value>\", \"Alias for --actual-result\", false);\n closeManyCommand.action(async (options: Record<string, unknown>, command) => {\n const globalOptions = getGlobalOptions(command);\n const startedAt = Date.now();\n const pickString = (...candidates: unknown[]): string | undefined => {\n for (const candidate of candidates) {\n if (typeof candidate === \"string\") {\n return candidate;\n }\n }\n return undefined;\n };\n const { runCloseMany } = await import(\"./commands/close-many.js\");\n const result = await runCloseMany(\n {\n status: typeof options.filterStatus === \"string\" ? options.filterStatus : undefined,\n list: {\n type: typeof options.filterType === \"string\" ? options.filterType : undefined,\n tag: typeof options.filterTag === \"string\" ? options.filterTag : undefined,\n priority: typeof options.filterPriority === \"string\" ? options.filterPriority : undefined,\n deadlineBefore: typeof options.filterDeadlineBefore === \"string\" ? options.filterDeadlineBefore : undefined,\n deadlineAfter: typeof options.filterDeadlineAfter === \"string\" ? options.filterDeadlineAfter : undefined,\n updatedAfter: typeof options.filterUpdatedAfter === \"string\" ? options.filterUpdatedAfter : undefined,\n updatedBefore: typeof options.filterUpdatedBefore === \"string\" ? options.filterUpdatedBefore : undefined,\n createdAfter: typeof options.filterCreatedAfter === \"string\" ? options.filterCreatedAfter : undefined,\n createdBefore: typeof options.filterCreatedBefore === \"string\" ? options.filterCreatedBefore : undefined,\n ids: typeof options.ids === \"string\" ? options.ids : undefined,\n assignee: typeof options.filterAssignee === \"string\" ? options.filterAssignee : undefined,\n assigneeFilter: pickString(options.filterAssigneeFilter, options.filterAssignee_filter),\n parent: typeof options.filterParent === \"string\" ? options.filterParent : undefined,\n sprint: typeof options.filterSprint === \"string\" ? options.filterSprint : undefined,\n release: typeof options.filterRelease === \"string\" ? options.filterRelease : undefined,\n limit: typeof options.limit === \"string\" ? options.limit : undefined,\n offset: typeof options.offset === \"string\" ? options.offset : undefined,\n },\n reason: typeof options.reason === \"string\" ? options.reason : undefined,\n resolution: typeof options.resolution === \"string\" ? options.resolution : undefined,\n expectedResult: pickString(options.expectedResult, options.expected_result, options.expected),\n actualResult: pickString(options.actualResult, options.actual_result, options.actual),\n validateClose:\n options.validateClose === true\n ? \"warn\"\n : typeof options.validateClose === \"string\"\n ? options.validateClose\n : undefined,\n author: typeof options.author === \"string\" ? options.author : undefined,\n message: typeof options.message === \"string\" ? options.message : undefined,\n force: Boolean(options.force),\n dryRun: options.dryRun === true ? true : undefined,\n rollback: typeof options.rollback === \"string\" ? options.rollback : undefined,\n checkpoint: options.checkpoint === false ? false : undefined,\n },\n globalOptions,\n );\n await invalidateSearchCachesForMutation(globalOptions, result);\n printResult(result, globalOptions);\n if (globalOptions.profile) {\n printError(`profile:command=close-many took_ms=${Date.now() - startedAt}`);\n }\n });\n\n program\n .command(\"delete\")\n .argument(\"<id>\", \"Item id\")\n .option(\"--author <value>\", \"Mutation author\")\n .option(\"--message <value>\", \"History message\")\n .option(\"--force\", \"Force ownership override\")\n .option(\"--dry-run\", \"Preview the item file that would be deleted without mutating\")\n .description(\"Delete an item and record the change in history.\")\n .action(async (id: string, options: Record<string, unknown>, command) => {\n const globalOptions = getGlobalOptions(command);\n const startedAt = Date.now();\n const { runDelete } = await import(\"./commands/delete.js\");\n const result = await runDelete(id, {\n author: typeof options.author === \"string\" ? options.author : undefined,\n message: typeof options.message === \"string\" ? options.message : undefined,\n force: Boolean(options.force),\n dryRun: options.dryRun === true,\n }, globalOptions);\n if (result.dry_run !== true) {\n await invalidateSearchCachesForMutation(globalOptions, result);\n }\n printResult(result, globalOptions);\n if (globalOptions.profile) {\n printError(`profile:command=delete took_ms=${Date.now() - startedAt}`);\n }\n });\n\n program\n .command(\"append\")\n .argument(\"<id>\", \"Item id\")\n .argument(\"[text]\", \"Optional body text shorthand (equivalent to --body; use - for stdin)\")\n .option(\"--body <value>\", \"Text to append to body (or - for stdin)\")\n .option(\"--text <value>\", \"Alias for --body\")\n .option(\"--author <value>\", \"Mutation author\")\n .option(\"--message <value>\", \"Mutation message\")\n .option(\"--force\", \"Force ownership override\")\n .description(\"Append text to an item's body.\")\n .action(async (id: string, text: string | undefined, options: Record<string, unknown>, command) => {\n const globalOptions = getGlobalOptions(command);\n const startedAt = Date.now();\n const bodyFromOption = typeof options.body === \"string\" ? options.body : undefined;\n const bodyFromAlias = typeof options.text === \"string\" ? options.text : undefined;\n const bodyFromPositional = typeof text === \"string\" ? text : undefined;\n const bodySourceCount = [bodyFromOption, bodyFromAlias, bodyFromPositional].filter((value) => value !== undefined).length;\n if (bodySourceCount > 1) {\n throw new PmCliError(\"Specify append text with exactly one source: positional [text], --body, or --text\", EXIT_CODE.USAGE);\n }\n const resolvedBody = bodyFromOption ?? bodyFromAlias ?? bodyFromPositional;\n if (resolvedBody === undefined) {\n throw new PmCliError(\n \"Missing append text. Provide it as positional [text], --body <value>, or --text <value> (use - for stdin).\",\n EXIT_CODE.USAGE,\n );\n }\n const { runAppend } = await import(\"./commands/append.js\");\n const result = await runAppend(id, {\n body: resolvedBody,\n author: typeof options.author === \"string\" ? options.author : undefined,\n message: typeof options.message === \"string\" ? options.message : undefined,\n force: Boolean(options.force),\n }, globalOptions);\n await invalidateSearchCachesForMutation(globalOptions, result);\n printResult(result, globalOptions);\n if (globalOptions.profile) {\n printError(`profile:command=append took_ms=${Date.now() - startedAt}`);\n }\n });\n\n program\n .command(\"restore\")\n .argument(\"<id>\", \"Item id\")\n .argument(\"<target>\", \"Restore target timestamp or version number\")\n .option(\"--author <value>\", \"Mutation author\")\n .option(\"--message <value>\", \"History message\")\n .option(\"--force\", \"Force ownership/lock override\")\n .description(\"Restore an item to an earlier timestamp or version.\")\n .action(async (id: string, target: string, options: Record<string, unknown>, command) => {\n const globalOptions = getGlobalOptions(command);\n const startedAt = Date.now();\n const { runRestore } = await import(\"./commands/restore.js\");\n const result = await runRestore(id, target, {\n author: typeof options.author === \"string\" ? options.author : undefined,\n message: typeof options.message === \"string\" ? options.message : undefined,\n force: Boolean(options.force),\n }, globalOptions);\n await invalidateSearchCachesForMutation(globalOptions, result);\n printResult(result, globalOptions);\n if (globalOptions.profile) {\n printError(`profile:command=restore took_ms=${Date.now() - startedAt}`);\n }\n });\n\n const planCommand = program\n .command(\"plan\")\n .description(\"Agent-optimized Plan item workflow: create, manage steps, link dependencies, approve, and materialize.\")\n .argument(\"[subcommand]\", \"Plan subcommand: create|show|add-step|update-step|complete-step|block-step|reorder-step|remove-step|link|unlink|decision|discovery|validation|resume|approve|materialize\")\n .argument(\"[id]\", \"Plan id (required for non-create subcommands); for create this may be the positional title\")\n .argument(\"[stepRef]\", \"Step reference: stable id (plan-step-001) or order integer\")\n .argument(\"[reorderTo]\", \"New order integer for reorder-step\")\n .option(\"--title <value>\", \"Plan title\")\n .option(\"--description <value>\", \"Plan description\")\n .option(\"--scope <value>\", \"Short scope statement of the target change or investigation\")\n .option(\"--parent <value>\", \"Parent pm item id\")\n .option(\"--related <value>\", \"Related pm item ids (repeatable, csv-friendly)\", collect)\n .option(\"--blocks <value>\", \"Pm item ids this plan blocks (repeatable, csv-friendly)\", collect)\n .option(\"--blocked-by <value>\", \"Pm item ids that block this plan (repeatable, csv-friendly)\", collect)\n .option(\"--harness <value>\", \"Plan harness provenance: codex|claude-code|cursor|generic\")\n .option(\"--mode <value>\", \"Plan mode: draft|research|review|approved|executing|paused|completed|superseded\")\n .option(\"--resume-context <value>\", \"Compact context summary for a future stateless agent\")\n .option(\"--tags <value>\", \"Comma-separated tags\")\n .option(\"--priority <value>\", \"Priority 0-4\")\n .option(\"--body <value>\", \"Plan item body\")\n .option(\"--claim\", \"Claim the plan on create for the author\")\n .option(\"--from-search <value>\", \"Record the search query that led to plan creation\")\n .option(\"--step-title <value>\", \"Step title for add-step / update-step\")\n .option(\"--step <value>\", \"Alias for --step-title\")\n .option(\"--step-body <value>\", \"Step body text\")\n .option(\"--step-owner <value>\", \"Step owner\")\n .option(\"--step-status <value>\", \"Step status: pending|in_progress|completed|blocked|skipped|superseded\")\n .option(\"--step-evidence <value>\", \"Step evidence text (used by update-step/complete-step)\")\n .option(\"--step-blocked-reason <value>\", \"Step blocked reason (required when blocking)\")\n .option(\"--step-replacement <value>\", \"Replacement reference for a superseded step\")\n .option(\"--depends-on <value>\", \"Pm item ids the step depends on (repeatable, csv-friendly)\", collect)\n .option(\"--link <value>\", \"Pm item id to link (repeatable, csv-friendly)\", collect)\n .option(\"--link-kind <value>\", \"Link kind: related|blocks|blocked_by|depends_on|discovered_from|implements|verifies|supersedes\")\n .option(\"--link-note <value>\", \"Optional note for the link\")\n .option(\"--promote-to-item-dep\", \"Also add the linked id as a top-level item dependency when linking\")\n .option(\"--allow-multiple-active\", \"Allow multiple steps to be in_progress at once\")\n .option(\"--file <value>\", \"Step linked file path=<value>[,scope=project|global,note=<text>] (repeatable)\", collect)\n .option(\"--test <value>\", \"Step linked test command=<value>[,path=<value>,note=<text>] (repeatable)\", collect)\n .option(\"--doc <value>\", \"Step linked doc path=<value>[,scope=project|global,note=<text>] (repeatable)\", collect)\n .option(\"--decision-text <value>\", \"Decision log entry text\")\n .option(\"--decision <value>\", \"Alias for --decision-text\")\n .option(\"--decision-rationale <value>\", \"Decision log entry rationale\")\n .option(\"--decision-evidence <value>\", \"Decision log entry evidence\")\n .option(\"--discovery-text <value>\", \"Discovery log entry text\")\n .option(\"--discovery <value>\", \"Alias for --discovery-text\")\n .option(\"--validation-text <value>\", \"Validation log entry text\")\n .option(\"--validation <value>\", \"Alias for --validation-text\")\n .option(\"--validation-command <value>\", \"Validation log entry command\")\n .option(\"--validation-expected <value>\", \"Validation log entry expected outcome\")\n .option(\"--depth <value>\", \"Show depth: brief|standard|deep (default: brief)\")\n .option(\"--fields <value>\", \"Comma-separated field projection for show output\")\n .option(\"--steps <value>\", \"Comma-separated step ids/orders for materialize\")\n .option(\"--materialize-type <value>\", \"Item type for materialized steps (default: Task)\")\n .option(\"--materialize-parent <value>\", \"Parent item id for materialized children (default: the plan)\")\n .option(\"--materialize-tags <value>\", \"Comma-separated tags for materialized children\")\n .option(\"--author <value>\", \"Mutation author\")\n .option(\"--message <value>\", \"Mutation message\")\n .option(\"--force\", \"Force ownership override\");\n // Hidden pure snake_case underscore-duplicate aliases (kept parse-functional,\n // omitted from --help to save agent context).\n for (const [flags, description] of [\n [\"--resume_context <value>\", \"Alias for --resume-context\"],\n [\"--from_search <value>\", \"Alias for --from-search\"],\n [\"--step_title <value>\", \"Alias for --step-title\"],\n [\"--step_body <value>\", \"Alias for --step-body\"],\n [\"--step_owner <value>\", \"Alias for --step-owner\"],\n [\"--step_status <value>\", \"Alias for --step-status\"],\n [\"--step_evidence <value>\", \"Alias for --step-evidence\"],\n [\"--step_blocked_reason <value>\", \"Alias for --step-blocked-reason\"],\n [\"--step_replacement <value>\", \"Alias for --step-replacement\"],\n [\"--link_kind <value>\", \"Alias for --link-kind\"],\n [\"--link_note <value>\", \"Alias for --link-note\"],\n [\"--promote_to_item_dep\", \"Alias for --promote-to-item-dep\"],\n [\"--allow_multiple_active\", \"Alias for --allow-multiple-active\"],\n [\"--decision_text <value>\", \"Alias for --decision-text\"],\n [\"--decision_rationale <value>\", \"Alias for --decision-rationale\"],\n [\"--decision_evidence <value>\", \"Alias for --decision-evidence\"],\n [\"--discovery_text <value>\", \"Alias for --discovery-text\"],\n [\"--validation_text <value>\", \"Alias for --validation-text\"],\n [\"--validation_command <value>\", \"Alias for --validation-command\"],\n [\"--validation_expected <value>\", \"Alias for --validation-expected\"],\n [\"--materialize_type <value>\", \"Alias for --materialize-type\"],\n [\"--materialize_parent <value>\", \"Alias for --materialize-parent\"],\n [\"--materialize_tags <value>\", \"Alias for --materialize-tags\"],\n ] as const) {\n addHiddenOption(planCommand, flags, description, false);\n }\n for (const [flags, description] of [\n [\"--blocked_by <value>\", \"Alias for --blocked-by\"],\n [\"--depends_on <value>\", \"Alias for --depends-on\"],\n ] as const) {\n addHiddenOption(planCommand, flags, description, true);\n }\n planCommand\n .action(async (subcommand: string | undefined, id: string | undefined, stepRef: string | undefined, reorderToken: string | undefined, options: Record<string, unknown>, command) => {\n const globalOptions = getGlobalOptions(command);\n const startedAt = Date.now();\n const { runPlan, PLAN_SUBCOMMANDS } = await import(\"./commands/plan.js\");\n const normalizedSubcommand = (subcommand ?? \"\").trim().toLowerCase();\n if (!normalizedSubcommand) {\n throw new PmCliError(\n `pm plan requires a subcommand. Allowed: ${PLAN_SUBCOMMANDS.join(\", \")}`,\n EXIT_CODE.USAGE,\n {\n code: \"missing_required_argument\",\n examples: [\n 'pm plan create --title \"Refactor lock retry\"',\n \"pm plan show pm-a1b2 --depth standard\",\n 'pm plan add-step pm-a1b2 --step-title \"Read lock.ts\"',\n ],\n },\n );\n }\n if (!PLAN_SUBCOMMANDS.includes(normalizedSubcommand as typeof PLAN_SUBCOMMANDS[number])) {\n const didYouMean =\n normalizedSubcommand === \"list\" || normalizedSubcommand === \"ls\"\n ? ['pm list --type Plan', 'pm list-all --type Plan']\n : undefined;\n throw new PmCliError(\n `Unknown pm plan subcommand \"${subcommand}\". Allowed: ${PLAN_SUBCOMMANDS.join(\", \")}`,\n EXIT_CODE.USAGE,\n didYouMean ? { code: \"unknown_subcommand\", examples: didYouMean } : undefined,\n );\n }\n const planOptions: Record<string, unknown> = { ...options };\n // Normalize alternate-snake/camel aliases that Commander parses as different keys.\n const aliasPairs: Array<[string, string]> = [\n [\"blocked_by\", \"blockedBy\"],\n [\"resume_context\", \"resumeContext\"],\n [\"from_search\", \"fromSearch\"],\n [\"step\", \"stepTitle\"],\n [\"step_title\", \"stepTitle\"],\n [\"step_body\", \"stepBody\"],\n [\"step_owner\", \"stepOwner\"],\n [\"step_status\", \"stepStatus\"],\n [\"step_evidence\", \"stepEvidence\"],\n [\"step_blocked_reason\", \"stepBlockedReason\"],\n [\"step_replacement\", \"stepReplacement\"],\n [\"depends_on\", \"dependsOn\"],\n [\"link_kind\", \"linkKind\"],\n [\"link_note\", \"linkNote\"],\n [\"promote_to_item_dep\", \"promoteToItemDep\"],\n [\"allow_multiple_active\", \"allowMultipleActive\"],\n [\"decision_text\", \"decisionText\"],\n [\"decision_rationale\", \"decisionRationale\"],\n [\"decision_evidence\", \"decisionEvidence\"],\n [\"discovery_text\", \"discoveryText\"],\n [\"validation_text\", \"validationText\"],\n [\"validation_command\", \"validationCommand\"],\n [\"validation_expected\", \"validationExpected\"],\n [\"materialize_type\", \"materializeType\"],\n [\"materialize_parent\", \"materializeParent\"],\n [\"materialize_tags\", \"materializeTags\"],\n ];\n for (const [snake, camel] of aliasPairs) {\n if (planOptions[snake] !== undefined && planOptions[camel] === undefined) {\n planOptions[camel] = planOptions[snake];\n }\n }\n let reorderTo: number | undefined;\n if (normalizedSubcommand === \"reorder-step\" && typeof reorderToken === \"string\") {\n const parsed = Number.parseInt(reorderToken, 10);\n if (!Number.isFinite(parsed)) {\n throw new PmCliError(`reorder-step requires an integer new order, got \"${reorderToken}\"`, EXIT_CODE.USAGE);\n }\n reorderTo = parsed;\n }\n // Allow positional title for `pm plan create \"Title\"` (mirrors pm create UX).\n // Plan create never takes an id positional; the second token is the title.\n let planId = id;\n if (normalizedSubcommand === \"create\" && typeof id === \"string\" && id.length > 0 && planOptions.title === undefined) {\n planOptions.title = id;\n planId = undefined;\n }\n const result = await runPlan({\n subcommand: normalizedSubcommand as typeof PLAN_SUBCOMMANDS[number],\n id: planId,\n stepRef,\n reorderTo,\n options: planOptions as Record<string, never>,\n global: globalOptions,\n });\n await invalidateSearchCachesForMutation(globalOptions, result);\n printResult(result, globalOptions);\n if (globalOptions.profile) {\n printError(`profile:command=plan took_ms=${Date.now() - startedAt}`);\n }\n });\n void planCommand;\n\n program\n .command(\"history-redact\")\n .argument(\"<id>\", \"Item id\")\n .option(\"--literal <value>\", \"Literal string to redact (repeatable)\", collect)\n .option(\"--regex <value>\", \"Regex pattern to redact (repeatable; accepts /pattern/flags or raw pattern)\", collect)\n .option(\"--replacement <value>\", 'Replacement string (default: \"[redacted]\")')\n .option(\"--dry-run\", \"Preview redaction impact without writing item/history files\")\n .option(\"--author <value>\", \"Mutation author\")\n .option(\"--message <value>\", \"Audit history message for the redaction marker entry\")\n .option(\"--force\", \"Force ownership/lock override\")\n .description(\"Redact sensitive literals/patterns from an item history stream and recompute hashes.\")\n .action(async (id: string, options: Record<string, unknown>, command) => {\n const globalOptions = getGlobalOptions(command);\n const startedAt = Date.now();\n const { runHistoryRedact } = await import(\"./commands/history-redact.js\");\n const literal = Array.isArray(options.literal) ? (options.literal as string[]) : undefined;\n const regex = Array.isArray(options.regex) ? (options.regex as string[]) : undefined;\n const result = await runHistoryRedact(\n id,\n {\n literal,\n regex,\n replacement: typeof options.replacement === \"string\" ? options.replacement : undefined,\n dryRun: options.dryRun === true,\n author: typeof options.author === \"string\" ? options.author : undefined,\n message: typeof options.message === \"string\" ? options.message : undefined,\n force: Boolean(options.force),\n },\n globalOptions,\n );\n if (result.changed && !result.dry_run) {\n await invalidateSearchCachesForMutation(globalOptions, result);\n }\n printResult(result, globalOptions);\n if (globalOptions.profile) {\n printError(`profile:command=history-redact took_ms=${Date.now() - startedAt}`);\n }\n });\n\n program\n .command(\"history-repair\")\n .argument(\"<id>\", \"Item id\")\n .option(\"--dry-run\", \"Preview the re-anchor impact without writing the history file\")\n .option(\"--author <value>\", \"Mutation author\")\n .option(\"--message <value>\", \"Audit history message for the repair marker entry\")\n .option(\"--force\", \"Force ownership/lock override\")\n .description(\"Re-anchor a drifted item history chain (recompute hashes, reconcile with the on-disk item) and record an audit marker.\")\n .action(async (id: string, options: Record<string, unknown>, command) => {\n const globalOptions = getGlobalOptions(command);\n const startedAt = Date.now();\n const { runHistoryRepair } = await import(\"./commands/history-repair.js\");\n const result = await runHistoryRepair(\n id,\n {\n dryRun: options.dryRun === true,\n author: typeof options.author === \"string\" ? options.author : undefined,\n message: typeof options.message === \"string\" ? options.message : undefined,\n force: Boolean(options.force),\n },\n globalOptions,\n );\n // history-repair only re-anchors the audit stream; item content is untouched,\n // so search caches do not need invalidation.\n printResult(result, globalOptions);\n if (globalOptions.profile) {\n printError(`profile:command=history-repair took_ms=${Date.now() - startedAt}`);\n }\n });\n\n program\n .command(\"history-compact\")\n .argument(\"<id>\", \"Item id\")\n .option(\"--before <value>\", \"Compact entries strictly before this version number or ISO timestamp\")\n .option(\"--dry-run\", \"Preview compaction impact without writing the history file\")\n .option(\"--author <value>\", \"Mutation author\")\n .option(\"--message <value>\", \"Audit history message for the compaction marker entry\")\n .option(\"--force\", \"Force ownership/lock override\")\n .description(\"Compact an item history stream into a synthetic baseline plus retained tail entries.\")\n .action(async (id: string, options: Record<string, unknown>, command) => {\n const globalOptions = getGlobalOptions(command);\n const startedAt = Date.now();\n const { runHistoryCompact } = await import(\"./commands/history-compact.js\");\n const result = await runHistoryCompact(\n id,\n {\n before: typeof options.before === \"string\" ? options.before : undefined,\n dryRun: options.dryRun === true,\n author: typeof options.author === \"string\" ? options.author : undefined,\n message: typeof options.message === \"string\" ? options.message : undefined,\n force: Boolean(options.force),\n },\n globalOptions,\n );\n // history-compact only rewrites the history stream; item content is untouched.\n printResult(result, globalOptions);\n if (globalOptions.profile) {\n printError(`profile:command=history-compact took_ms=${Date.now() - startedAt}`);\n }\n });\n\n const schemaCommand = program\n .command(\"schema\")\n .argument(\n \"[subcommand]\",\n \"Schema subcommand: list, show, show-status, add-type, remove-type, add-status, remove-status, or a custom item type name shorthand\",\n )\n .argument(\"[name]\", \"Item type name (add-type/remove-type/show) or status id (show-status/add-status/remove-status)\")\n .option(\"--description <text>\", \"Human description for the custom item type or status\")\n .option(\"--default-status <status>\", \"Default status hint recorded for the custom item type\")\n .option(\"--folder <dir>\", \"Storage folder for items of this custom type\")\n .option(\"--alias <name>\", \"Alias for the custom type or status (repeatable, csv-friendly)\", collect)\n .option(\"--role <value>\", \"Lifecycle role for a custom status (repeatable): draft, active, blocked, terminal, terminal_done, terminal_canceled, default_open, default_close, default_cancel\", collect)\n .option(\"--order <n>\", \"Display/sort order for a custom status\")\n .option(\"--author <value>\", \"Mutation author\")\n .option(\"--force\", \"Force ownership/lock override\")\n .description(\"Inspect and manage config-driven runtime schema.\");\n // Hidden pure snake_case underscore-duplicate alias.\n addHiddenOption(schemaCommand, \"--default_status <status>\", \"Alias for --default-status\", false);\n schemaCommand\n .action(async (\n subcommand: string | undefined,\n name: string | undefined,\n options: Record<string, unknown>,\n command,\n ) => {\n const globalOptions = getGlobalOptions(command);\n const startedAt = Date.now();\n const {\n runSchemaAddType,\n runSchemaRemoveType,\n runSchemaAddStatus,\n runSchemaRemoveStatus,\n runSchemaList,\n runSchemaShow,\n runSchemaShowStatus,\n formatSchemaAddTypeHuman,\n formatSchemaRemoveTypeHuman,\n formatSchemaAddStatusHuman,\n formatSchemaRemoveStatusHuman,\n formatSchemaListHuman,\n formatSchemaShowHuman,\n formatSchemaShowStatusHuman,\n SCHEMA_SUBCOMMANDS,\n } = await import(\"./commands/schema.js\");\n let normalizedSubcommand = (subcommand ?? \"\").trim().toLowerCase();\n let typeName = name;\n if (!normalizedSubcommand) {\n throw new PmCliError(\n `pm schema requires a subcommand. Allowed: ${SCHEMA_SUBCOMMANDS.join(\", \")}`,\n EXIT_CODE.USAGE,\n {\n code: \"missing_required_argument\",\n examples: [\n \"pm schema list\",\n \"pm schema show Task\",\n \"pm schema show-status open\",\n 'pm schema add-type Spike --description \"Time-boxed investigation\" --default-status open',\n \"pm schema remove-type Spike\",\n \"pm schema add-status review --role active --alias in_review\",\n \"pm schema remove-status review\",\n ],\n },\n );\n }\n const aliases =\n typeof options.alias === \"string\"\n ? [options.alias]\n : Array.isArray(options.alias)\n ? (options.alias as string[])\n : undefined;\n const roles =\n typeof options.role === \"string\"\n ? [options.role]\n : Array.isArray(options.role)\n ? (options.role as string[])\n : undefined;\n const defaultStatus =\n typeof options.defaultStatus === \"string\"\n ? options.defaultStatus\n : typeof options.default_status === \"string\"\n ? (options.default_status as string)\n : undefined;\n const order = parseSchemaOrderOption(options.order);\n if (!SCHEMA_SUBCOMMANDS.includes(normalizedSubcommand as typeof SCHEMA_SUBCOMMANDS[number]) && typeName === undefined) {\n typeName = subcommand;\n normalizedSubcommand = \"add-type\";\n }\n if (!SCHEMA_SUBCOMMANDS.includes(normalizedSubcommand as typeof SCHEMA_SUBCOMMANDS[number])) {\n throw new PmCliError(\n `Unknown pm schema subcommand \"${subcommand}\". Allowed: ${SCHEMA_SUBCOMMANDS.join(\", \")}`,\n EXIT_CODE.USAGE,\n { code: \"unknown_subcommand\" },\n );\n }\n const author = typeof options.author === \"string\" ? options.author : undefined;\n const force = Boolean(options.force);\n const result =\n normalizedSubcommand === \"list\"\n ? await runSchemaList(globalOptions)\n : normalizedSubcommand === \"show\"\n ? await runSchemaShow(typeName, globalOptions)\n : normalizedSubcommand === \"show-status\"\n ? await runSchemaShowStatus(typeName, globalOptions)\n : normalizedSubcommand === \"remove-type\"\n ? await runSchemaRemoveType(typeName, { author, force }, globalOptions)\n : normalizedSubcommand === \"add-status\"\n ? await runSchemaAddStatus(\n typeName,\n {\n role: roles,\n alias: aliases,\n description: typeof options.description === \"string\" ? options.description : undefined,\n order,\n author,\n force,\n },\n globalOptions,\n )\n : normalizedSubcommand === \"remove-status\"\n ? await runSchemaRemoveStatus(typeName, { author, force }, globalOptions)\n : await runSchemaAddType(\n typeName,\n {\n description: typeof options.description === \"string\" ? options.description : undefined,\n defaultStatus,\n folder: typeof options.folder === \"string\" ? options.folder : undefined,\n alias: aliases,\n author,\n force,\n },\n globalOptions,\n );\n // Schema inspection and type registration do not touch item content, so search caches stay valid.\n if (globalOptions.json === true || globalOptions.defaultOutputFormat === \"json\") {\n printResult(result, globalOptions);\n } else if (!globalOptions.quiet) {\n if (result.action === \"list\") {\n writeStdout(`${formatSchemaListHuman(result)}\\n`);\n } else if (result.action === \"show\") {\n writeStdout(`${formatSchemaShowHuman(result)}\\n`);\n } else if (result.action === \"show-status\") {\n writeStdout(`${formatSchemaShowStatusHuman(result)}\\n`);\n } else if (result.action === \"remove-type\") {\n writeStdout(`${formatSchemaRemoveTypeHuman(result)}\\n`);\n } else if (result.action === \"add-status\") {\n writeStdout(`${formatSchemaAddStatusHuman(result)}\\n`);\n } else if (result.action === \"remove-status\") {\n writeStdout(`${formatSchemaRemoveStatusHuman(result)}\\n`);\n } else {\n writeStdout(`${formatSchemaAddTypeHuman(result)}\\n`);\n }\n // Surface extension on-write hook diagnostics so policy/enforcement\n // warnings are visible without forcing --json.\n if (\n result.action !== \"list\" &&\n result.action !== \"show\" &&\n result.action !== \"show-status\" &&\n result.warnings.length > 0\n ) {\n printError(`schema ${result.action} warnings: ${formatHookWarnings(result.warnings)}`);\n }\n }\n if (globalOptions.profile) {\n printError(`profile:command=schema took_ms=${Date.now() - startedAt}`);\n }\n });\n\n program\n .command(\"comments\")\n .argument(\"<id>\", \"Item id\")\n .argument(\"[text]\", \"Optional comment text shorthand (equivalent to --add)\")\n .option(\"--add <text>\", \"Add one comment entry (plain text fallback, text=<value>, markdown pairs, or - for stdin; CSV-like key fragments are preserved as plain text unless text is explicit)\")\n .option(\"--stdin\", \"Read comment text from stdin (supports multiline markdown)\")\n .option(\"--file <path>\", \"Read comment text from file (supports multiline markdown)\")\n .option(\"--limit <n>\", \"Return only latest n comments\")\n .option(\"--author [value]\", \"Comment author (optional; falls back to PM_AUTHOR/settings)\")\n .option(\"--message <value>\", \"History message\")\n .option(\"--allow-audit-comment\", \"Allow non-owner append-only comment audits without requiring --force\")\n .option(\"--force\", \"Force ownership override\")\n .description(\"List or add comments for an item.\")\n .action(async (id: string, text: string | undefined, options: Record<string, unknown>, command) => {\n const globalOptions = getGlobalOptions(command);\n const startedAt = Date.now();\n const addFromOption = typeof options.add === \"string\" ? options.add : undefined;\n const addFromPositional = typeof text === \"string\" ? text : undefined;\n const readFromStdin = options.stdin === true;\n const readFromFile = typeof options.file === \"string\" ? options.file : undefined;\n const sourceCount =\n Number(addFromOption !== undefined) +\n Number(addFromPositional !== undefined) +\n Number(readFromStdin) +\n Number(readFromFile !== undefined);\n if (sourceCount > 1) {\n if (addFromOption !== undefined && addFromPositional !== undefined && !readFromStdin && readFromFile === undefined) {\n throw new PmCliError(\"Specify comment text either as positional [text] or with --add, not both\", EXIT_CODE.USAGE);\n }\n throw new PmCliError(\n \"Specify comment text with exactly one source: positional [text], --add, --stdin, or --file\",\n EXIT_CODE.USAGE,\n );\n }\n const add = addFromOption ?? addFromPositional;\n const { runComments } = await import(\"./commands/comments.js\");\n const result = await runComments(id, {\n add,\n stdin: readFromStdin,\n file: readFromFile,\n limit: typeof options.limit === \"string\" ? options.limit : undefined,\n author: typeof options.author === \"string\" ? options.author : undefined,\n message: typeof options.message === \"string\" ? options.message : undefined,\n allowAuditComment: Boolean(options.allowAuditComment),\n force: Boolean(options.force),\n }, globalOptions);\n if (typeof add === \"string\" || readFromStdin || readFromFile !== undefined) {\n await invalidateSearchCachesForMutation(globalOptions, result);\n }\n printResult(result, globalOptions);\n if (globalOptions.profile) {\n printError(`profile:command=comments took_ms=${Date.now() - startedAt}`);\n }\n });\n\n program\n .command(\"notes\")\n .argument(\"<id>\", \"Item id\")\n .argument(\"[text]\", \"Optional note text shorthand (equivalent to --add; use - for stdin)\")\n .option(\"--add <text>\", \"Add one note entry (plain text fallback, text=<value>, markdown pairs, or - for stdin; CSV-like key fragments are preserved as plain text unless text is explicit)\")\n .option(\"--limit <n>\", \"Return only latest n notes\")\n .option(\"--author [value]\", \"Note author (optional; falls back to PM_AUTHOR/settings)\")\n .option(\"--message <value>\", \"History message\")\n .option(\"--allow-audit-note\", \"Allow non-owner append-only note audits without requiring --force\")\n .option(\"--allow-audit-comment\", \"Backward-compatible alias for --allow-audit-note\")\n .option(\"--force\", \"Force ownership override\")\n .description(\"List or add notes for an item.\")\n .action(async (id: string, text: string | undefined, options: Record<string, unknown>, command) => {\n const globalOptions = getGlobalOptions(command);\n const startedAt = Date.now();\n const addFromOption = typeof options.add === \"string\" ? options.add : undefined;\n const addFromPositional = typeof text === \"string\" ? text : undefined;\n if (addFromOption !== undefined && addFromPositional !== undefined) {\n throw new PmCliError(\"Specify note text either as positional [text] or with --add, not both\", EXIT_CODE.USAGE);\n }\n const add = addFromOption ?? addFromPositional;\n const { runNotes } = await import(\"./commands/notes.js\");\n const result = await runNotes(id, {\n add,\n limit: typeof options.limit === \"string\" ? options.limit : undefined,\n author: typeof options.author === \"string\" ? options.author : undefined,\n message: typeof options.message === \"string\" ? options.message : undefined,\n allowAuditComment: Boolean(options.allowAuditNote || options.allowAuditComment),\n force: Boolean(options.force),\n }, globalOptions);\n if (typeof add === \"string\") {\n await invalidateSearchCachesForMutation(globalOptions, result);\n }\n printResult(result, globalOptions);\n if (globalOptions.profile) {\n printError(`profile:command=notes took_ms=${Date.now() - startedAt}`);\n }\n });\n\n program\n .command(\"learnings\")\n .argument(\"<id>\", \"Item id\")\n .argument(\"[text]\", \"Optional learning text shorthand (equivalent to --add; use - for stdin)\")\n .option(\"--add <text>\", \"Add one learning entry (plain text fallback, text=<value>, markdown pairs, or - for stdin; CSV-like key fragments are preserved as plain text unless text is explicit)\")\n .option(\"--limit <n>\", \"Return only latest n learnings\")\n .option(\"--author [value]\", \"Learning author (optional; falls back to PM_AUTHOR/settings)\")\n .option(\"--message <value>\", \"History message\")\n .option(\"--allow-audit-learning\", \"Allow non-owner append-only learning audits without requiring --force\")\n .option(\"--allow-audit-comment\", \"Backward-compatible alias for --allow-audit-learning\")\n .option(\"--force\", \"Force ownership override\")\n .description(\"List or add learnings for an item.\")\n .action(async (id: string, text: string | undefined, options: Record<string, unknown>, command) => {\n const globalOptions = getGlobalOptions(command);\n const startedAt = Date.now();\n const addFromOption = typeof options.add === \"string\" ? options.add : undefined;\n const addFromPositional = typeof text === \"string\" ? text : undefined;\n if (addFromOption !== undefined && addFromPositional !== undefined) {\n throw new PmCliError(\"Specify learning text either as positional [text] or with --add, not both\", EXIT_CODE.USAGE);\n }\n const add = addFromOption ?? addFromPositional;\n const { runLearnings } = await import(\"./commands/learnings.js\");\n const result = await runLearnings(id, {\n add,\n limit: typeof options.limit === \"string\" ? options.limit : undefined,\n author: typeof options.author === \"string\" ? options.author : undefined,\n message: typeof options.message === \"string\" ? options.message : undefined,\n allowAuditComment: Boolean(options.allowAuditLearning || options.allowAuditComment),\n force: Boolean(options.force),\n }, globalOptions);\n if (typeof add === \"string\") {\n await invalidateSearchCachesForMutation(globalOptions, result);\n }\n printResult(result, globalOptions);\n if (globalOptions.profile) {\n printError(`profile:command=learnings took_ms=${Date.now() - startedAt}`);\n }\n });\n\n const filesCommand = program\n .command(\"files\")\n .description(\"Manage files linked to an item.\");\n\n filesCommand\n .argument(\"<id>\", \"Item id\")\n .option(\"--add <value>\", \"Add linked file entry (CSV/markdown pairs or - for stdin)\", collect)\n .option(\"--add-glob <value>\", \"Add linked file entries from a glob (plain glob or pattern=<glob>,scope=<scope>,note=<text>; repeatable)\", collect)\n .option(\"--remove <value>\", \"Remove linked file by path (path=<value>, path:<value>, plain path, or - for stdin)\", collect)\n .option(\"--migrate <value>\", \"Migrate linked file paths in-place (from=<prefix>,to=<prefix>; repeatable)\", collect)\n .option(\"--list\", \"List linked files without mutating\")\n .option(\"--append-stable\", \"Preserve existing linked-file order and append new links without full-array resorting\")\n .option(\"--validate-paths\", \"Validate linked file paths for existence and file shape\")\n .option(\"--audit\", \"Audit linked file usage across all items for this item's linked paths\")\n .option(\"--author <value>\", \"Mutation author\")\n .option(\"--message <value>\", \"History message\")\n .option(\"--force\", \"Force ownership override\")\n .action(async (id: string, options: Record<string, unknown>, command) => {\n const globalOptions = getGlobalOptions(command);\n const startedAt = Date.now();\n const addValues = Array.isArray(options.add) ? (options.add as string[]) : [];\n const addGlobValues = Array.isArray(options.addGlob) ? (options.addGlob as string[]) : [];\n const removeValues = Array.isArray(options.remove) ? (options.remove as string[]) : [];\n const migrateValues = Array.isArray(options.migrate) ? (options.migrate as string[]) : [];\n const { runFiles } = await import(\"./commands/files.js\");\n const result = await runFiles(id, {\n add: addValues,\n addGlob: addGlobValues,\n remove: removeValues,\n migrate: migrateValues,\n list: Boolean(options.list),\n appendStable: Boolean(options.appendStable),\n validatePaths: Boolean(options.validatePaths),\n audit: Boolean(options.audit),\n author: typeof options.author === \"string\" ? options.author : undefined,\n message: typeof options.message === \"string\" ? options.message : undefined,\n force: Boolean(options.force),\n }, globalOptions);\n if (addValues.length > 0 || addGlobValues.length > 0 || removeValues.length > 0 || migrateValues.length > 0) {\n await invalidateSearchCachesForMutation(globalOptions, result);\n }\n printResult(result, globalOptions);\n if (globalOptions.profile) {\n printError(`profile:command=files took_ms=${Date.now() - startedAt}`);\n }\n });\n\n filesCommand\n .command(\"discover\")\n .argument(\"<id>\", \"Item id\")\n .option(\"--apply\", \"Add discovered missing files to the item\")\n .option(\"--note <value>\", \"Note to attach to discovered file links\")\n .option(\"--append-stable\", \"Preserve existing linked-file order and append discovered links without full-array resorting\")\n .option(\"--author <value>\", \"Mutation author\")\n .option(\"--message <value>\", \"History message\")\n .option(\"--force\", \"Force ownership override\")\n .description(\"Discover existing file paths referenced in item text and optionally link missing files.\")\n .action(async (id: string, options: Record<string, unknown>, command) => {\n const globalOptions = getGlobalOptions(command);\n const startedAt = Date.now();\n const { runFilesDiscover } = await import(\"./commands/files.js\");\n const result = await runFilesDiscover(id, {\n apply: Boolean(options.apply),\n note: typeof options.note === \"string\" ? options.note : undefined,\n appendStable: Boolean(options.appendStable),\n author: typeof options.author === \"string\" ? options.author : undefined,\n message: typeof options.message === \"string\" ? options.message : undefined,\n force: Boolean(options.force),\n }, globalOptions);\n if (result.changed) {\n await invalidateSearchCachesForMutation(globalOptions, result);\n }\n printResult(result, globalOptions);\n if (globalOptions.profile) {\n printError(`profile:command=files.discover took_ms=${Date.now() - startedAt}`);\n }\n });\n\n program\n .command(\"docs\")\n .argument(\"<id>\", \"Item id\")\n .option(\"--add <value>\", \"Add linked doc entry (CSV/markdown pairs or - for stdin)\", collect)\n .option(\"--add-glob <value>\", \"Add linked doc entries from a glob (plain glob or pattern=<glob>,scope=<scope>,note=<text>; repeatable)\", collect)\n .option(\"--remove <value>\", \"Remove linked doc by path (path=<value>, path:<value>, plain path, or - for stdin)\", collect)\n .option(\"--migrate <value>\", \"Migrate linked doc paths in-place (from=<prefix>,to=<prefix>; repeatable)\", collect)\n .option(\"--list\", \"List linked docs without mutating\")\n .option(\"--validate-paths\", \"Validate linked doc paths for existence and file shape\")\n .option(\"--audit\", \"Audit linked doc usage across all items for this item's linked paths\")\n .option(\"--author <value>\", \"Mutation author\")\n .option(\"--message <value>\", \"History message\")\n .option(\"--force\", \"Force ownership override\")\n .description(\"Manage docs linked to an item.\")\n .action(async (id: string, options: Record<string, unknown>, command) => {\n const globalOptions = getGlobalOptions(command);\n const startedAt = Date.now();\n const addValues = Array.isArray(options.add) ? (options.add as string[]) : [];\n const addGlobValues = Array.isArray(options.addGlob) ? (options.addGlob as string[]) : [];\n const removeValues = Array.isArray(options.remove) ? (options.remove as string[]) : [];\n const migrateValues = Array.isArray(options.migrate) ? (options.migrate as string[]) : [];\n const { runDocs } = await import(\"./commands/docs.js\");\n const result = await runDocs(id, {\n add: addValues,\n addGlob: addGlobValues,\n remove: removeValues,\n migrate: migrateValues,\n list: Boolean(options.list),\n validatePaths: Boolean(options.validatePaths),\n audit: Boolean(options.audit),\n author: typeof options.author === \"string\" ? options.author : undefined,\n message: typeof options.message === \"string\" ? options.message : undefined,\n force: Boolean(options.force),\n }, globalOptions);\n if (addValues.length > 0 || addGlobValues.length > 0 || removeValues.length > 0 || migrateValues.length > 0) {\n await invalidateSearchCachesForMutation(globalOptions, result);\n }\n printResult(result, globalOptions);\n if (globalOptions.profile) {\n printError(`profile:command=docs took_ms=${Date.now() - startedAt}`);\n }\n });\n\n program\n .command(\"deps\")\n .argument(\"<id>\", \"Item id\")\n .option(\"--format <value>\", \"Output format (tree or graph)\", \"tree\")\n .option(\"--max-depth <value>\", \"Maximum dependency traversal depth (0 keeps only the root)\")\n .option(\"--collapse <value>\", \"Collapse mode (none or repeated)\", \"none\")\n .option(\"--summary\", \"Return counts only without full tree/graph payload\")\n .description(\"Show dependency relationships for an item.\")\n .action(async (id: string, options: Record<string, unknown>, command) => {\n const globalOptions = getGlobalOptions(command);\n const startedAt = Date.now();\n const { runDeps } = await import(\"./commands/deps.js\");\n const result = await runDeps(id, {\n format: typeof options.format === \"string\" ? options.format : undefined,\n maxDepth: typeof options.maxDepth === \"string\" ? options.maxDepth : undefined,\n collapse: typeof options.collapse === \"string\" ? options.collapse : undefined,\n summary: options.summary === true,\n }, globalOptions);\n printResult(result, globalOptions);\n if (globalOptions.profile) {\n printError(`profile:command=deps took_ms=${Date.now() - startedAt}`);\n }\n });\n}\n", "/**\n * Helpers for deciding whether a CLI option alias is a pure snake_case\n * underscore-duplicate of an existing kebab-case flag.\n *\n * Mutation commands historically register every `--foo-bar` flag together with\n * a `--foo_bar` alias so agents are never blocked by a snake/kebab mismatch.\n * Those underscore duplicates roughly double the option list of every\n * `--help` and waste agent context. We keep them functional as parse-time\n * aliases but hide them from the rendered `--help` text.\n *\n * The rule is intentionally narrow: an alias is hidden ONLY when its long flag\n * is exactly the underscore form of an existing kebab flag (for example\n * `--create_mode` is the `-`→`_` form of `--create-mode`). Semantically-distinct\n * aliases (for example `--fail-on-warn` for `--strict-exit`, `--local` for\n * `--project`, `--ac` for `--acceptance-criteria`) are NOT snake duplicates and\n * stay visible.\n */\n\n/**\n * Extract every long flag (for example `--create-mode`) from a commander flag\n * spec that may include short aliases and a value placeholder. A spec can list\n * more than one long flag, for example `\"--estimate, --estimated-minutes\n * <value>\"` → `[\"--estimate\", \"--estimated-minutes\"]`.\n */\nexport function extractLongFlags(flagSpec: string): string[] {\n return flagSpec\n .split(/[\\s,|]+/)\n .map((token) => token.trim())\n .filter((token) => token.startsWith(\"--\"));\n}\n\n/**\n * Extract the first long flag from a commander flag spec, or null when none is\n * present.\n */\nexport function extractLongFlag(flagSpec: string): string | null {\n return extractLongFlags(flagSpec)[0] ?? null;\n}\n\n/**\n * Returns true when `aliasFlagSpec` differs from `canonicalFlagSpec` ONLY by\n * substituting one or more interior hyphens with underscores — i.e. it is a\n * pure snake_case underscore-duplicate of the canonical kebab flag.\n *\n * Examples that match (alias hidden):\n * --create-mode <- --create_mode\n * --filter-assignee-filter <- --filter-assignee_filter\n *\n * Examples that do NOT match (alias stays visible):\n * --acceptance-criteria <- --ac (different identifier)\n * --order <- --rank (different identifier)\n * --strict-exit <- --fail-on-warn (semantically distinct)\n */\nexport function isPureSnakeCaseAlias(canonicalFlagSpec: string, aliasFlagSpec: string): boolean {\n const aliasLong = extractLongFlag(aliasFlagSpec);\n if (aliasLong === null) {\n return false;\n }\n const normalize = (long: string): string => long.slice(2).replaceAll(\"-\", \"_\");\n // The canonical spec may declare multiple long flags (e.g.\n // \"--estimate, --estimated-minutes <value>\"); the alias is hidden when it is\n // the underscore form of ANY of them.\n return extractLongFlags(canonicalFlagSpec).some((canonicalLong) => {\n if (!canonicalLong.slice(2).includes(\"-\")) {\n // No interior hyphen to convert, so there is no kebab form to snake-duplicate.\n return false;\n }\n if (aliasLong === canonicalLong) {\n // Identical flags are not aliases of one another.\n return false;\n }\n // Reachable from the canonical purely by hyphen→underscore substitution.\n return normalize(aliasLong) === normalize(canonicalLong);\n });\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
package/dist/cli-bundle/chunks/{register-operations-DFNVRSJ5.js → register-operations-AM6KTWB6.js}
RENAMED
|
@@ -1,25 +1,25 @@
|
|
|
1
1
|
|
|
2
|
-
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="
|
|
2
|
+
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="8e6c83fa-de89-5571-9184-d8774a43ce8b")}catch(e){}}();
|
|
3
3
|
import {
|
|
4
4
|
buildBackgroundTestAllCommandArgs,
|
|
5
5
|
buildBackgroundTestCommandArgs,
|
|
6
6
|
collect,
|
|
7
7
|
getGlobalOptions,
|
|
8
8
|
invalidateSearchCachesForMutation
|
|
9
|
-
} from "./chunk-
|
|
10
|
-
import "./chunk-
|
|
11
|
-
import "./chunk-
|
|
9
|
+
} from "./chunk-IH4MBKK7.js";
|
|
10
|
+
import "./chunk-FXRU333M.js";
|
|
11
|
+
import "./chunk-XJDGS74Y.js";
|
|
12
12
|
import {
|
|
13
13
|
printError,
|
|
14
14
|
printResult
|
|
15
|
-
} from "./chunk-
|
|
16
|
-
import "./chunk-
|
|
17
|
-
import "./chunk-
|
|
15
|
+
} from "./chunk-I2IJY2NL.js";
|
|
16
|
+
import "./chunk-HI7STVF2.js";
|
|
17
|
+
import "./chunk-ATEES5SX.js";
|
|
18
18
|
import {
|
|
19
19
|
normalizeStatusInput
|
|
20
|
-
} from "./chunk-
|
|
21
|
-
import "./chunk-
|
|
22
|
-
import "./chunk-
|
|
20
|
+
} from "./chunk-UUWGCWBU.js";
|
|
21
|
+
import "./chunk-CCX4RSYZ.js";
|
|
22
|
+
import "./chunk-WUNFKP7M.js";
|
|
23
23
|
import {
|
|
24
24
|
EXIT_CODE,
|
|
25
25
|
PmCliError,
|
|
@@ -27,7 +27,7 @@ import {
|
|
|
27
27
|
resolvePmRoot,
|
|
28
28
|
resolveRuntimeStatusRegistry,
|
|
29
29
|
setActiveCommandResult
|
|
30
|
-
} from "./chunk-
|
|
30
|
+
} from "./chunk-A6LXQFO7.js";
|
|
31
31
|
|
|
32
32
|
// dist/cli/register-operations.js
|
|
33
33
|
function resolveTelemetrySubcommand(namespaceOrSubcommand, subcommand) {
|
|
@@ -54,23 +54,24 @@ function resolveTelemetrySubcommand(namespaceOrSubcommand, subcommand) {
|
|
|
54
54
|
return normalizedNamespace;
|
|
55
55
|
}
|
|
56
56
|
function registerOperationCommands(program) {
|
|
57
|
-
program.command("test").argument("<id>", "Item id").option("--add <value>", "Add linked test entry (CSV/markdown pairs or - for stdin)", collect).option("--remove <value>", "Remove linked test entry by command/path (command=<value>, path=<value>, markdown pairs, plain value, or - for stdin)", collect).option("--list", "List linked tests without mutating").option("--run", "Run linked test commands").option("--background", "Run linked tests in managed background mode").option("--timeout <seconds>", "Default run timeout in seconds").option("--progress", "Emit linked-test progress to stderr (always shown in TTY, opt-in for non-TTY)").option("--env-set <value>", "Set environment variable(s) for linked-test runs (KEY=VALUE, repeatable)", collect).option("--env-clear <value>", "Clear environment variable(s) for linked-test runs (NAME, repeatable)", collect).option("--shared-host-safe", "Apply additive shared-host-safe runtime defaults for linked-test runs").option("--pm-context <mode>", "PM linked-test context mode: schema|tracker|auto (default: schema)").option("--override-linked-pm-context", "Force run-level --pm-context to override per-linked-test pm_context_mode metadata").option("--fail-on-context-mismatch", "Fail linked PM commands when context item counts differ").option("--fail-on-skipped", "Treat skipped linked tests as dependency failures").option("--fail-on-empty-test-run", "Treat successful linked-test commands that report zero executed tests as failures").option("--require-assertions-for-pm", "Require assertion metadata for linked PM command tests").option("--check-context", "Preflight linked PM command context diagnostics before executing commands").option("--auto-pm-context", "Auto-remediate PM tracker-read context mismatches by routing those linked commands through tracker context").option("--author <value>", "Mutation author").option("--message <value>", "History message").option("--force", "Force ownership override").description("Manage tests linked to an item and optionally run them.").action(async (id, options, command) => {
|
|
57
|
+
program.command("test").argument("<id>", "Item id").option("--add <value>", "Add linked test entry (CSV/markdown pairs or - for stdin)", collect).option("--add-json <value>", "Add linked test entry from JSON object/array (or - for stdin)", collect).option("--remove <value>", "Remove linked test entry by command/path (command=<value>, path=<value>, markdown pairs, plain value, or - for stdin)", collect).option("--list", "List linked tests without mutating").option("--run", "Run linked test commands").option("--match <value>", "Run only linked tests whose command/path contains this substring").option("--only-index <n>", "Run only the 1-based linked-test index from --list order").option("--only-last", "Run only the most recently added linked test").option("--background", "Run linked tests in managed background mode").option("--timeout <seconds>", "Default run timeout in seconds").option("--progress", "Emit linked-test progress to stderr (always shown in TTY, opt-in for non-TTY)").option("--env-set <value>", "Set environment variable(s) for linked-test runs (KEY=VALUE, repeatable)", collect).option("--env-clear <value>", "Clear environment variable(s) for linked-test runs (NAME, repeatable)", collect).option("--shared-host-safe", "Apply additive shared-host-safe runtime defaults for linked-test runs").option("--pm-context <mode>", "PM linked-test context mode: schema|tracker|auto (default: schema)").option("--override-linked-pm-context", "Force run-level --pm-context to override per-linked-test pm_context_mode metadata").option("--fail-on-context-mismatch", "Fail linked PM commands when context item counts differ").option("--fail-on-skipped", "Treat skipped linked tests as dependency failures").option("--fail-on-empty-test-run", "Treat successful linked-test commands that report zero executed tests as failures").option("--require-assertions-for-pm", "Require assertion metadata for linked PM command tests").option("--check-context", "Preflight linked PM command context diagnostics before executing commands").option("--auto-pm-context", "Auto-remediate PM tracker-read context mismatches by routing those linked commands through tracker context").option("--author <value>", "Mutation author").option("--message <value>", "History message").option("--force", "Force ownership override").description("Manage tests linked to an item and optionally run them.").action(async (id, options, command) => {
|
|
58
58
|
const globalOptions = getGlobalOptions(command);
|
|
59
59
|
const startedAt = Date.now();
|
|
60
60
|
const addValues = Array.isArray(options.add) ? options.add : [];
|
|
61
|
+
const addJsonValues = Array.isArray(options.addJson) ? options.addJson : [];
|
|
61
62
|
const removeValues = Array.isArray(options.remove) ? options.remove : [];
|
|
62
63
|
const runInBackground = options.background === true;
|
|
63
64
|
if (runInBackground && options.run !== true) {
|
|
64
65
|
throw new PmCliError("--background requires --run", EXIT_CODE.USAGE);
|
|
65
66
|
}
|
|
66
|
-
if (runInBackground && (addValues.length > 0 || removeValues.length > 0)) {
|
|
67
|
-
throw new PmCliError("--background does not support --add/--remove; update linked tests first, then run in background", EXIT_CODE.USAGE);
|
|
67
|
+
if (runInBackground && (addValues.length > 0 || addJsonValues.length > 0 || removeValues.length > 0)) {
|
|
68
|
+
throw new PmCliError("--background does not support --add/--add-json/--remove; update linked tests first, then run in background", EXIT_CODE.USAGE);
|
|
68
69
|
}
|
|
69
70
|
if (runInBackground) {
|
|
70
|
-
const { runStartBackgroundRun } = await import("./test-runs-
|
|
71
|
+
const { runStartBackgroundRun } = await import("./test-runs-E64M6XS3.js");
|
|
71
72
|
const result2 = await runStartBackgroundRun({
|
|
72
73
|
kind: "test",
|
|
73
|
-
commandArgs: buildBackgroundTestCommandArgs(id, { ...options, add: addValues, remove: removeValues }),
|
|
74
|
+
commandArgs: buildBackgroundTestCommandArgs(id, { ...options, add: addValues, addJson: addJsonValues, remove: removeValues }),
|
|
74
75
|
targetId: id,
|
|
75
76
|
author: typeof options.author === "string" ? options.author : void 0,
|
|
76
77
|
noExtensions: globalOptions.noExtensions === true
|
|
@@ -81,12 +82,16 @@ function registerOperationCommands(program) {
|
|
|
81
82
|
}
|
|
82
83
|
return;
|
|
83
84
|
}
|
|
84
|
-
const { runTest } = await import("./test-
|
|
85
|
+
const { runTest } = await import("./test-BQAKIXAT.js");
|
|
85
86
|
const result = await runTest(id, {
|
|
86
87
|
add: addValues,
|
|
88
|
+
addJson: addJsonValues,
|
|
87
89
|
remove: removeValues,
|
|
88
90
|
list: Boolean(options.list),
|
|
89
91
|
run: Boolean(options.run),
|
|
92
|
+
match: typeof options.match === "string" ? options.match : void 0,
|
|
93
|
+
onlyIndex: typeof options.onlyIndex === "string" || typeof options.onlyIndex === "number" ? options.onlyIndex : void 0,
|
|
94
|
+
onlyLast: Boolean(options.onlyLast),
|
|
90
95
|
timeout: typeof options.timeout === "string" ? options.timeout : void 0,
|
|
91
96
|
progress: Boolean(options.progress),
|
|
92
97
|
envSet: Array.isArray(options.envSet) ? options.envSet : [],
|
|
@@ -104,7 +109,7 @@ function registerOperationCommands(program) {
|
|
|
104
109
|
message: typeof options.message === "string" ? options.message : void 0,
|
|
105
110
|
force: Boolean(options.force)
|
|
106
111
|
}, globalOptions);
|
|
107
|
-
if (addValues.length > 0 || removeValues.length > 0 || options.run === true) {
|
|
112
|
+
if (addValues.length > 0 || addJsonValues.length > 0 || removeValues.length > 0 || options.run === true) {
|
|
108
113
|
await invalidateSearchCachesForMutation(globalOptions, result);
|
|
109
114
|
}
|
|
110
115
|
printResult(result, globalOptions);
|
|
@@ -120,7 +125,7 @@ function registerOperationCommands(program) {
|
|
|
120
125
|
const startedAt = Date.now();
|
|
121
126
|
const runInBackground = options.background === true;
|
|
122
127
|
if (runInBackground) {
|
|
123
|
-
const { runStartBackgroundRun } = await import("./test-runs-
|
|
128
|
+
const { runStartBackgroundRun } = await import("./test-runs-E64M6XS3.js");
|
|
124
129
|
const result2 = await runStartBackgroundRun({
|
|
125
130
|
kind: "test-all",
|
|
126
131
|
commandArgs: buildBackgroundTestAllCommandArgs(options),
|
|
@@ -133,7 +138,7 @@ function registerOperationCommands(program) {
|
|
|
133
138
|
}
|
|
134
139
|
return;
|
|
135
140
|
}
|
|
136
|
-
const { runTestAll } = await import("./test-all-
|
|
141
|
+
const { runTestAll } = await import("./test-all-TDYCCBA4.js");
|
|
137
142
|
const result = await runTestAll({
|
|
138
143
|
status: typeof options.status === "string" ? options.status : void 0,
|
|
139
144
|
limit: typeof options.limit === "string" ? options.limit : void 0,
|
|
@@ -163,13 +168,13 @@ function registerOperationCommands(program) {
|
|
|
163
168
|
});
|
|
164
169
|
program.command("test-runs-worker", { hidden: true }).argument("<runId>", "Background run id").description("Internal background worker command.").action(async (runId, _options, command) => {
|
|
165
170
|
const globalOptions = getGlobalOptions(command);
|
|
166
|
-
const { runTestRunsWorker } = await import("./test-runs-
|
|
171
|
+
const { runTestRunsWorker } = await import("./test-runs-E64M6XS3.js");
|
|
167
172
|
await runTestRunsWorker(runId, globalOptions);
|
|
168
173
|
});
|
|
169
174
|
program.command("telemetry").argument("[namespaceOrSubcommand]", "Telemetry subcommand: status, flush, stats, clear (default: status)").argument("[subcommand]", "Compatibility alias target for local-analytics: status, flush, stats, clear").option("--limit <n>", "Maximum command groups returned by telemetry stats").description("Inspect and manage local telemetry queue/runtime state.").action(async (namespaceOrSubcommand, subcommand, options, command) => {
|
|
170
175
|
const globalOptions = getGlobalOptions(command);
|
|
171
176
|
const startedAt = Date.now();
|
|
172
|
-
const { runTelemetry } = await import("./telemetry-
|
|
177
|
+
const { runTelemetry } = await import("./telemetry-N454RHG5.js");
|
|
173
178
|
const result = await runTelemetry({
|
|
174
179
|
subcommand: resolveTelemetrySubcommand(namespaceOrSubcommand, subcommand),
|
|
175
180
|
limit: typeof options.limit === "string" ? options.limit : typeof options.limit === "number" && Number.isFinite(options.limit) ? options.limit : void 0
|
|
@@ -182,7 +187,7 @@ function registerOperationCommands(program) {
|
|
|
182
187
|
program.command("stats").description("Show project tracker statistics.").option("--storage", "Include aggregate history-stream storage metrics (total streams/lines/bytes, largest + deepest streams, oldest/newest entries)").action(async (options, command) => {
|
|
183
188
|
const globalOptions = getGlobalOptions(command);
|
|
184
189
|
const startedAt = Date.now();
|
|
185
|
-
const { runStats } = await import("./stats-
|
|
190
|
+
const { runStats } = await import("./stats-UBD56TGK.js");
|
|
186
191
|
const result = await runStats(globalOptions, { storage: options.storage === true });
|
|
187
192
|
printResult(result, globalOptions);
|
|
188
193
|
if (globalOptions.profile) {
|
|
@@ -192,7 +197,7 @@ function registerOperationCommands(program) {
|
|
|
192
197
|
program.command("health").description("Show project tracker health checks.").option("--strict-directories", "Treat optional item-type directories as required failures").option("--check-only", "Run read-only health diagnostics without refreshing vectors").option("--check-telemetry", "Probe telemetry endpoint health and include network diagnostics").option("--no-refresh", "Disable automatic vector refresh attempts during health checks").option("--refresh-vectors", "Explicitly enable vector refresh attempts during health checks").option("--verbose-stale-items", "Include full stale vectorization ID lists in health output").option("--brief", "Emit compact health details for low-token agent checks").option("--summary", "Emit one-line-style health status with check names and warning count").option("--skip-vectors", "Skip vectorization check for a faster run").option("--skip-integrity", "Skip item/history file integrity check for a faster run").option("--skip-drift", "Skip history drift hash check for a faster run").option("--full", "Run all checks including slow integrity, drift, and vectorization checks").option("--strict-exit", "Return non-zero exit when health is not ok (advisory telemetry warnings are excluded; see warnings[])").option("--fail-on-warn", "Alias for --strict-exit").action(async (options, command) => {
|
|
193
198
|
const globalOptions = getGlobalOptions(command);
|
|
194
199
|
const startedAt = Date.now();
|
|
195
|
-
const { runHealth } = await import("./health-
|
|
200
|
+
const { runHealth } = await import("./health-4ZYB3IYQ.js");
|
|
196
201
|
const result = await runHealth(globalOptions, {
|
|
197
202
|
strictDirectories: Boolean(options.strictDirectories),
|
|
198
203
|
checkOnly: Boolean(options.checkOnly),
|
|
@@ -227,7 +232,7 @@ function registerOperationCommands(program) {
|
|
|
227
232
|
program.command("validate").description("Run standalone metadata, resolution, lifecycle, files, linked-command reference, and history drift validation checks.").option("--check-metadata", "Run metadata completeness checks").option("--metadata-profile <value>", "Select metadata validation profile for --check-metadata (core|strict|custom)").option("--check-resolution", "Run closed-item resolution metadata checks").option("--check-lifecycle", "Run active-item lifecycle governance drift checks").option("--check-stale-blockers", "Include stale blocker-pattern diagnostics in lifecycle checks").option("--dependency-cycle-severity <value>", "Set dependency-cycle warning policy for lifecycle checks (off|warn|error)").option("--check-files", "Run linked-file and orphaned-file checks").option("--check-command-references", "Run linked-command PM-ID reference checks").option("--scan-mode <value>", "Select file candidate scan mode for --check-files (default|tracked-all|tracked-all-strict)").option("--include-pm-internals", "Include PM storage internals in tracked-all candidate scans").option("--verbose-file-lists", "Include full file-path lists for validate --check-files details").option("--verbose-diagnostics", "Include full validate diagnostic ID lists instead of compact summaries").option("--strict-exit", "Return non-zero exit when validation warnings are present").option("--fail-on-warn", "Alias for --strict-exit").option("--fix-hints", "Add a machine-executable fix_hints[] of pm commands to each failing check's details").option("--check-history-drift", "Run item/history hash drift checks").action(async (options, command) => {
|
|
228
233
|
const globalOptions = getGlobalOptions(command);
|
|
229
234
|
const startedAt = Date.now();
|
|
230
|
-
const { runValidate } = await import("./validate-
|
|
235
|
+
const { runValidate } = await import("./validate-EQTT6WVX.js");
|
|
231
236
|
const result = await runValidate({
|
|
232
237
|
checkMetadata: Boolean(options.checkMetadata),
|
|
233
238
|
metadataProfile: typeof options.metadataProfile === "string" ? options.metadataProfile : void 0,
|
|
@@ -264,7 +269,7 @@ function registerOperationCommands(program) {
|
|
|
264
269
|
program.command("gc").option("--dry-run", "Preview cleanup targets without deleting files; without this flag, pm gc deletes matched artifacts").option("--scope <value>", "Limit cleanup to one or more scopes (comma-separated or repeatable): index, embeddings, runtime, locks", collect).description("Delete optional cache artifacts by default (including expired lock debris) and show a summary.").action(async (options, command) => {
|
|
265
270
|
const globalOptions = getGlobalOptions(command);
|
|
266
271
|
const startedAt = Date.now();
|
|
267
|
-
const { runGc } = await import("./gc-
|
|
272
|
+
const { runGc } = await import("./gc-2WEPW6D6.js");
|
|
268
273
|
const result = await runGc(globalOptions, {
|
|
269
274
|
dryRun: options.dryRun === true,
|
|
270
275
|
scope: Array.isArray(options.scope) ? options.scope : []
|
|
@@ -277,7 +282,7 @@ function registerOperationCommands(program) {
|
|
|
277
282
|
program.command("contracts").description("Show machine-readable command and schema contracts for agents.").option("--action <value>", "Filter tool schema branches to a specific action").option("--command <value>", "Scope contracts output to one CLI command (narrow-by-default)").option("--schema-only", "Return schema-focused output only").option("--flags-only", "Return command flag contracts only").option("--availability-only", "Return action availability surface only").option("--runtime-only", "Include only actions invocable in the current runtime").option("--active-only", "Alias for --runtime-only").option("--full", "Include full schema and command-flag surfaces (large; default brief output omits heavy sections for unfiltered queries)").action(async (options, command) => {
|
|
278
283
|
const globalOptions = getGlobalOptions(command);
|
|
279
284
|
const startedAt = Date.now();
|
|
280
|
-
const { runContracts } = await import("./contracts-
|
|
285
|
+
const { runContracts } = await import("./contracts-3NKWYKKU.js");
|
|
281
286
|
const result = await runContracts({
|
|
282
287
|
action: typeof options.action === "string" ? options.action : void 0,
|
|
283
288
|
command: typeof options.command === "string" ? options.command : void 0,
|
|
@@ -295,7 +300,7 @@ function registerOperationCommands(program) {
|
|
|
295
300
|
program.command("claim").argument("<id>", "Item id").option("--author <value>", "Mutation author").option("--message <value>", "History message").option("--force", "Force claim override").option("--if-available", "Skip silently when the item is already claimed by another author (returns skipped=true)").description("Claim an item for active work.").action(async (id, options, command) => {
|
|
296
301
|
const globalOptions = getGlobalOptions(command);
|
|
297
302
|
const startedAt = Date.now();
|
|
298
|
-
const { runClaim } = await import("./claim-
|
|
303
|
+
const { runClaim } = await import("./claim-MJ7DZFC3.js");
|
|
299
304
|
const result = await runClaim(id, Boolean(options.force), globalOptions, {
|
|
300
305
|
author: typeof options.author === "string" ? options.author : void 0,
|
|
301
306
|
message: typeof options.message === "string" ? options.message : void 0,
|
|
@@ -310,7 +315,7 @@ function registerOperationCommands(program) {
|
|
|
310
315
|
program.command("release").argument("<id>", "Item id").option("--author <value>", "Mutation author").option("--message <value>", "History message").option("--allow-audit-release", "Allow non-owner release handoffs without requiring --force").option("--force", "Force release override").description("Release an item's active claim.").action(async (id, options, command) => {
|
|
311
316
|
const globalOptions = getGlobalOptions(command);
|
|
312
317
|
const startedAt = Date.now();
|
|
313
|
-
const { runRelease } = await import("./claim-
|
|
318
|
+
const { runRelease } = await import("./claim-MJ7DZFC3.js");
|
|
314
319
|
const result = await runRelease(id, Boolean(options.force), globalOptions, {
|
|
315
320
|
author: typeof options.author === "string" ? options.author : void 0,
|
|
316
321
|
message: typeof options.message === "string" ? options.message : void 0,
|
|
@@ -335,8 +340,8 @@ function registerOperationCommands(program) {
|
|
|
335
340
|
message: typeof options.message === "string" ? options.message : void 0
|
|
336
341
|
};
|
|
337
342
|
const [{ runClaim }, { runUpdate }] = await Promise.all([
|
|
338
|
-
import("./claim-
|
|
339
|
-
import("./update-
|
|
343
|
+
import("./claim-MJ7DZFC3.js"),
|
|
344
|
+
import("./update-5A2B6QYB.js")
|
|
340
345
|
]);
|
|
341
346
|
const claimResult = await runClaim(id, force, globalOptions, mutationOptions);
|
|
342
347
|
await invalidateSearchCachesForMutation(globalOptions, claimResult);
|
|
@@ -360,8 +365,8 @@ function registerOperationCommands(program) {
|
|
|
360
365
|
message: typeof options.message === "string" ? options.message : void 0
|
|
361
366
|
};
|
|
362
367
|
const [{ runUpdate }, { runRelease }] = await Promise.all([
|
|
363
|
-
import("./update-
|
|
364
|
-
import("./claim-
|
|
368
|
+
import("./update-5A2B6QYB.js"),
|
|
369
|
+
import("./claim-MJ7DZFC3.js")
|
|
365
370
|
]);
|
|
366
371
|
const updateResult = await runUpdate(id, { ...mutationOptions, status: openStatus, force }, globalOptions);
|
|
367
372
|
await invalidateSearchCachesForMutation(globalOptions, updateResult);
|
|
@@ -381,8 +386,8 @@ function registerOperationCommands(program) {
|
|
|
381
386
|
message: typeof options.message === "string" ? options.message : void 0
|
|
382
387
|
};
|
|
383
388
|
const [{ runClose }, { runRelease }] = await Promise.all([
|
|
384
|
-
import("./close-
|
|
385
|
-
import("./claim-
|
|
389
|
+
import("./close-XLEKIQSW.js"),
|
|
390
|
+
import("./claim-MJ7DZFC3.js")
|
|
386
391
|
]);
|
|
387
392
|
const closeResult = await runClose(id, reason, {
|
|
388
393
|
...mutationOptions,
|
|
@@ -401,6 +406,6 @@ function registerOperationCommands(program) {
|
|
|
401
406
|
export {
|
|
402
407
|
registerOperationCommands
|
|
403
408
|
};
|
|
404
|
-
//# sourceMappingURL=register-operations-
|
|
409
|
+
//# sourceMappingURL=register-operations-AM6KTWB6.js.map
|
|
405
410
|
|
|
406
|
-
//# debugId=
|
|
411
|
+
//# debugId=8e6c83fa-de89-5571-9184-d8774a43ce8b
|