@unbrained/pm-cli 2026.7.1 → 2026.7.3
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 +3 -3
- package/CHANGELOG.md +25 -0
- package/CONTRIBUTING.md +2 -2
- package/README.md +1 -1
- package/dist/cli/commander-usage.d.ts +2 -0
- package/dist/cli/commander-usage.js +110 -86
- package/dist/cli/commander-usage.js.map +1 -1
- package/dist/cli/commands/activity.js +79 -57
- package/dist/cli/commands/activity.js.map +1 -1
- package/dist/cli/commands/aggregate.js +102 -79
- package/dist/cli/commands/aggregate.js.map +1 -1
- package/dist/cli/commands/calendar.js +278 -243
- package/dist/cli/commands/calendar.js.map +1 -1
- package/dist/cli/commands/close-many.js +176 -114
- package/dist/cli/commands/close-many.js.map +1 -1
- package/dist/cli/commands/close.js +157 -129
- package/dist/cli/commands/close.js.map +1 -1
- package/dist/cli/commands/comments-audit.js +50 -42
- package/dist/cli/commands/comments-audit.js.map +1 -1
- package/dist/cli/commands/config.d.ts +2 -0
- package/dist/cli/commands/config.js +443 -879
- package/dist/cli/commands/config.js.map +1 -1
- package/dist/cli/commands/context.js +365 -287
- package/dist/cli/commands/context.js.map +1 -1
- package/dist/cli/commands/contracts.js +352 -238
- package/dist/cli/commands/contracts.js.map +1 -1
- package/dist/cli/commands/create.js +32 -17
- package/dist/cli/commands/create.js.map +1 -1
- package/dist/cli/commands/dedupe-audit.js +46 -39
- package/dist/cli/commands/dedupe-audit.js.map +1 -1
- package/dist/cli/commands/dedupe-merge.js +88 -69
- package/dist/cli/commands/dedupe-merge.js.map +1 -1
- package/dist/cli/commands/extension/doctor.js +56 -67
- package/dist/cli/commands/extension/doctor.js.map +1 -1
- package/dist/cli/commands/extension/shared.js +21 -15
- package/dist/cli/commands/extension/shared.js.map +1 -1
- package/dist/cli/commands/get.js +114 -81
- package/dist/cli/commands/get.js.map +1 -1
- package/dist/cli/commands/health.d.ts +17 -0
- package/dist/cli/commands/health.js +545 -417
- package/dist/cli/commands/health.js.map +1 -1
- package/dist/cli/commands/history-compact.js +209 -140
- package/dist/cli/commands/history-compact.js.map +1 -1
- package/dist/cli/commands/history-redact.js +162 -119
- package/dist/cli/commands/history-redact.js.map +1 -1
- package/dist/cli/commands/history-repair.js +120 -85
- package/dist/cli/commands/history-repair.js.map +1 -1
- package/dist/cli/commands/init-agent-guidance.js +32 -19
- package/dist/cli/commands/init-agent-guidance.js.map +1 -1
- package/dist/cli/commands/init.d.ts +8 -2
- package/dist/cli/commands/init.js +263 -162
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/list.js +152 -102
- package/dist/cli/commands/list.js.map +1 -1
- package/dist/cli/commands/next.js +60 -40
- package/dist/cli/commands/next.js.map +1 -1
- package/dist/cli/commands/plan.js +373 -298
- package/dist/cli/commands/plan.js.map +1 -1
- package/dist/cli/commands/profile.js +23 -15
- package/dist/cli/commands/profile.js.map +1 -1
- package/dist/cli/commands/recurrence-parsers.js +43 -25
- package/dist/cli/commands/recurrence-parsers.js.map +1 -1
- package/dist/cli/commands/reindex.d.ts +21 -5
- package/dist/cli/commands/reindex.js +345 -205
- package/dist/cli/commands/reindex.js.map +1 -1
- package/dist/cli/commands/restore.d.ts +8 -7
- package/dist/cli/commands/restore.js +105 -69
- package/dist/cli/commands/restore.js.map +1 -1
- package/dist/cli/commands/schema.js +33 -30
- package/dist/cli/commands/schema.js.map +1 -1
- package/dist/cli/commands/search.d.ts +10 -2
- package/dist/cli/commands/search.js +503 -470
- package/dist/cli/commands/search.js.map +1 -1
- package/dist/cli/commands/telemetry.js +98 -87
- package/dist/cli/commands/telemetry.js.map +1 -1
- package/dist/cli/commands/test-all.js +237 -168
- package/dist/cli/commands/test-all.js.map +1 -1
- package/dist/cli/commands/test.d.ts +6 -5
- package/dist/cli/commands/test.js +424 -344
- package/dist/cli/commands/test.js.map +1 -1
- package/dist/cli/commands/update-many.js +57 -42
- package/dist/cli/commands/update-many.js.map +1 -1
- package/dist/cli/commands/update.d.ts +1 -1
- package/dist/cli/commands/update.js +738 -671
- package/dist/cli/commands/update.js.map +1 -1
- package/dist/cli/commands/validate.d.ts +20 -1
- package/dist/cli/commands/validate.js +478 -343
- package/dist/cli/commands/validate.js.map +1 -1
- package/dist/cli/error-guidance.js +406 -361
- package/dist/cli/error-guidance.js.map +1 -1
- package/dist/cli/extension-command-help.js +27 -19
- package/dist/cli/extension-command-help.js.map +1 -1
- package/dist/cli/help-json-payload.js +57 -49
- package/dist/cli/help-json-payload.js.map +1 -1
- package/dist/cli/main.d.ts +47 -0
- package/dist/cli/main.js +474 -371
- package/dist/cli/main.js.map +1 -1
- package/dist/cli/migration-gates.js +22 -45
- package/dist/cli/migration-gates.js.map +1 -1
- package/dist/cli/register-list-query.js +299 -310
- package/dist/cli/register-list-query.js.map +1 -1
- package/dist/cli/register-mutation.js +763 -779
- package/dist/cli/register-mutation.js.map +1 -1
- package/dist/cli/register-operations.js +386 -362
- package/dist/cli/register-operations.js.map +1 -1
- package/dist/cli/register-setup.js +120 -101
- package/dist/cli/register-setup.js.map +1 -1
- package/dist/cli/registration-helpers.d.ts +4 -0
- package/dist/cli/registration-helpers.js +45 -56
- package/dist/cli/registration-helpers.js.map +1 -1
- package/dist/cli-bundle/chunks/{activity-DBLQVIP6.js → activity-5YWLSPGE.js} +9 -9
- package/dist/cli-bundle/chunks/activity-BIML7K2D.js +16 -0
- package/dist/cli-bundle/chunks/{aggregate-SDF7DUOD.js → aggregate-2V2M3JZU.js} +107 -83
- package/dist/cli-bundle/chunks/{aggregate-SDF7DUOD.js.map → aggregate-2V2M3JZU.js.map} +2 -2
- package/dist/cli-bundle/chunks/{aggregate-JTEF4BP7.js → aggregate-EK7DXML7.js} +108 -84
- package/dist/cli-bundle/chunks/aggregate-EK7DXML7.js.map +1 -0
- package/dist/cli-bundle/chunks/{append-LOVPGVPT.js → append-EZESUVJT.js} +8 -8
- package/dist/cli-bundle/chunks/{append-QCFJSDFL.js → append-JFG4WQMG.js} +8 -8
- package/dist/cli-bundle/chunks/{chunk-TP5Q5ZD3.js → chunk-32IUNTG4.js} +158 -119
- package/dist/cli-bundle/chunks/chunk-32IUNTG4.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-BHO33VBQ.js → chunk-3W2HJKJX.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-VARHOHYV.js → chunk-4EXFFP7T.js} +86 -52
- package/dist/cli-bundle/chunks/chunk-4EXFFP7T.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-4DUVCVLZ.js → chunk-4PFVUUYV.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-JSU5P7VS.js → chunk-4WB6S4YX.js} +308 -184
- package/dist/cli-bundle/chunks/chunk-4WB6S4YX.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-HXTQJXWT.js → chunk-572FKBRL.js} +61 -102
- package/dist/cli-bundle/chunks/chunk-572FKBRL.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-IJYK2T43.js → chunk-5E7N4T2Z.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-NKZAN7BD.js → chunk-5IZUBZBR.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-NOLPZMSV.js → chunk-5JIWFWOZ.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-FFMQB7WR.js → chunk-67LARBDL.js} +493 -404
- package/dist/cli-bundle/chunks/chunk-67LARBDL.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-6AQZPVHQ.js → chunk-6CDCWKSX.js} +4 -4
- package/dist/cli-bundle/chunks/{chunk-3K2M5OYU.js → chunk-6KRFL33E.js} +308 -184
- package/dist/cli-bundle/chunks/chunk-6KRFL33E.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-LB6TP6MC.js → chunk-6NYJGMTY.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-SLMUGTK3.js → chunk-7CLLC75T.js} +4 -4
- package/dist/cli-bundle/chunks/{chunk-2466X6E4.js → chunk-7LYO6S5A.js} +8 -8
- package/dist/cli-bundle/chunks/{chunk-W4ULYO7Z.js → chunk-A3OQ7TFW.js} +8 -8
- package/dist/cli-bundle/chunks/{chunk-5CGRF3L5.js → chunk-AIKU3IIL.js} +153 -90
- package/dist/cli-bundle/chunks/chunk-AIKU3IIL.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-WYDHYJPO.js → chunk-AJHYQCBJ.js} +39 -5
- package/dist/cli-bundle/chunks/chunk-AJHYQCBJ.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-VZDBVEZR.js → chunk-B4O5S7I3.js} +79 -57
- package/dist/cli-bundle/chunks/{chunk-VZDBVEZR.js.map → chunk-B4O5S7I3.js.map} +2 -2
- package/dist/cli-bundle/chunks/{chunk-OTUHB4HS.js → chunk-BE2SR6QL.js} +92 -77
- package/dist/cli-bundle/chunks/chunk-BE2SR6QL.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-JLM7BHI7.js → chunk-BI4R7HI2.js} +75 -53
- package/dist/cli-bundle/chunks/chunk-BI4R7HI2.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-AXIDKKAT.js → chunk-CXR3CMBQ.js} +33 -6
- package/dist/cli-bundle/chunks/chunk-CXR3CMBQ.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-ZETXE4SE.js → chunk-ECU6MMTQ.js} +713 -613
- package/dist/cli-bundle/chunks/chunk-ECU6MMTQ.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-2D4HATP2.js → chunk-EJ2OCBHF.js} +54 -30
- package/dist/cli-bundle/chunks/chunk-EJ2OCBHF.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-BDTISOSD.js → chunk-EQURFOMH.js} +41 -26
- package/dist/cli-bundle/chunks/chunk-EQURFOMH.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-GJ326ZKX.js → chunk-ER4ME5U2.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-HZZEHPRG.js → chunk-ERG65A2L.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-IZBR4NRW.js → chunk-F6WNBITZ.js} +157 -113
- package/dist/cli-bundle/chunks/chunk-F6WNBITZ.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-L5OEFZQG.js → chunk-FH2H3CBD.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-JPECA746.js → chunk-FUFFPIYA.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-CF7RL6FR.js → chunk-FZJM2TXF.js} +110 -73
- package/dist/cli-bundle/chunks/chunk-FZJM2TXF.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-27BXPBAY.js → chunk-GUYNUXQT.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-MAUKX7JC.js → chunk-GVJE5T7Q.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-3J6JRJ3I.js → chunk-HB4FAT3O.js} +42 -60
- package/dist/cli-bundle/chunks/chunk-HB4FAT3O.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-55SNVXRQ.js → chunk-HQAF23Q2.js} +626 -484
- package/dist/cli-bundle/chunks/chunk-HQAF23Q2.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-ZRP4VG5U.js → chunk-JBZ2NTKX.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-RMMQ74TG.js → chunk-JPATY4SE.js} +54 -30
- package/dist/cli-bundle/chunks/chunk-JPATY4SE.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-IPYBJWTE.js → chunk-K5DT2YKM.js} +109 -72
- package/dist/cli-bundle/chunks/chunk-K5DT2YKM.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-EJUDVUYZ.js → chunk-KEZOIPCR.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-RVUALSJF.js → chunk-KHVGM5CS.js} +466 -365
- package/dist/cli-bundle/chunks/chunk-KHVGM5CS.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-YITK2PJ6.js → chunk-KS6ATO47.js} +288 -175
- package/dist/cli-bundle/chunks/chunk-KS6ATO47.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-7R4QEMZZ.js → chunk-L4SLHV6G.js} +463 -362
- package/dist/cli-bundle/chunks/chunk-L4SLHV6G.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-RLDHZHQS.js → chunk-LBE5QFMZ.js} +158 -114
- package/dist/cli-bundle/chunks/chunk-LBE5QFMZ.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-22WKIL3H.js → chunk-LCWQP6NM.js} +76 -54
- package/dist/cli-bundle/chunks/chunk-LCWQP6NM.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-KNPEF7QG.js → chunk-LOWVNZBZ.js} +91 -76
- package/dist/cli-bundle/chunks/chunk-LOWVNZBZ.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-HYTGA6GI.js → chunk-MDHWWBNZ.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-N74UMG5H.js → chunk-MEZZZBYX.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-V3NOKJF2.js → chunk-MHRS5FUX.js} +288 -175
- package/dist/cli-bundle/chunks/chunk-MHRS5FUX.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-3XZCOZ5J.js → chunk-NOIEVOK5.js} +391 -313
- package/dist/cli-bundle/chunks/chunk-NOIEVOK5.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-SDR5J34Q.js → chunk-NZ7QIUP5.js} +4 -4
- package/dist/cli-bundle/chunks/{chunk-UYUYDGIB.js → chunk-OGLGI22K.js} +115 -67
- package/dist/cli-bundle/chunks/{chunk-UYUYDGIB.js.map → chunk-OGLGI22K.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-DDPTYJIM.js → chunk-P5L7Z2O6.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-BZCEN4JA.js → chunk-PULUSQAV.js} +492 -403
- package/dist/cli-bundle/chunks/chunk-PULUSQAV.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-3VGN2UWE.js → chunk-QCDTQCMW.js} +22 -30
- package/dist/cli-bundle/chunks/chunk-QCDTQCMW.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-4A3BJ675.js → chunk-QNNQAAZ5.js} +24 -18
- package/dist/cli-bundle/chunks/{chunk-4A3BJ675.js.map → chunk-QNNQAAZ5.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-MDPEOIGN.js → chunk-RAHINBVP.js} +60 -101
- package/dist/cli-bundle/chunks/chunk-RAHINBVP.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-CWFNTKQJ.js → chunk-RJH5VQHW.js} +43 -61
- package/dist/cli-bundle/chunks/chunk-RJH5VQHW.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-OGXLACHC.js → chunk-SU2E4AWU.js} +6 -6
- package/dist/cli-bundle/chunks/{chunk-HPPFYYOV.js → chunk-SU3TB4NS.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-JWXRETDF.js → chunk-SYE6WMV6.js} +626 -484
- package/dist/cli-bundle/chunks/chunk-SYE6WMV6.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-NWMZWYYB.js → chunk-T3P7PMZP.js} +42 -27
- package/dist/cli-bundle/chunks/chunk-T3P7PMZP.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-G7I7DEZA.js → chunk-T4XBKJ3F.js} +4 -4
- package/dist/cli-bundle/chunks/{chunk-RH5ZBYFD.js → chunk-T6AXEBOP.js} +23 -17
- package/dist/cli-bundle/chunks/{chunk-RH5ZBYFD.js.map → chunk-T6AXEBOP.js.map} +2 -2
- package/dist/cli-bundle/chunks/{chunk-5QFDBI4F.js → chunk-TQ6AX5SQ.js} +58 -69
- package/dist/cli-bundle/chunks/{chunk-5QFDBI4F.js.map → chunk-TQ6AX5SQ.js.map} +2 -2
- package/dist/cli-bundle/chunks/{chunk-4XOIEKSD.js → chunk-U3S2B7TA.js} +86 -52
- package/dist/cli-bundle/chunks/chunk-U3S2B7TA.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-VICZWYGZ.js → chunk-U5TR4N7J.js} +7 -7
- package/dist/cli-bundle/chunks/{chunk-EVMTBV6V.js → chunk-UMNQZS4H.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-A7FPBAQS.js → chunk-WJA3PXW7.js} +7 -7
- package/dist/cli-bundle/chunks/{chunk-RGEMWD6Q.js → chunk-WRYERRZX.js} +157 -118
- package/dist/cli-bundle/chunks/chunk-WRYERRZX.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-NUHHPVVS.js → chunk-WYOIIFSE.js} +712 -612
- package/dist/cli-bundle/chunks/chunk-WYOIIFSE.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-4DSGXSBL.js → chunk-XRYSCRZR.js} +116 -68
- package/dist/cli-bundle/chunks/{chunk-4DSGXSBL.js.map → chunk-XRYSCRZR.js.map} +3 -3
- package/dist/cli-bundle/chunks/{chunk-NU2UEROZ.js → chunk-YF746GTH.js} +59 -70
- package/dist/cli-bundle/chunks/{chunk-NU2UEROZ.js.map → chunk-YF746GTH.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-JMP4E6D7.js → chunk-YPWUSH72.js} +390 -312
- package/dist/cli-bundle/chunks/{chunk-JMP4E6D7.js.map → chunk-YPWUSH72.js.map} +2 -2
- package/dist/cli-bundle/chunks/{chunk-QCWF6IYD.js → chunk-YSDFIY7N.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-UZIWVBE6.js → chunk-YSGTMDWC.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-NFDPYAIP.js → chunk-YVKZ3ANP.js} +21 -29
- package/dist/cli-bundle/chunks/chunk-YVKZ3ANP.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-OKQ22KTH.js → chunk-Z4DGFQDH.js} +80 -58
- package/dist/cli-bundle/chunks/{chunk-OKQ22KTH.js.map → chunk-Z4DGFQDH.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-64HNBBFQ.js → chunk-Z5F6XZXE.js} +6 -6
- package/dist/cli-bundle/chunks/{chunk-AVEE5EHK.js → chunk-Z7RPDF2Y.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-3S2KT7NG.js → chunk-ZFTKYWIF.js} +152 -89
- package/dist/cli-bundle/chunks/chunk-ZFTKYWIF.js.map +7 -0
- package/dist/cli-bundle/chunks/{claim-T3GCKV7C.js → claim-2BGBGSVI.js} +8 -8
- package/dist/cli-bundle/chunks/{claim-EMQLYPRW.js → claim-5GU7OE67.js} +8 -8
- package/dist/cli-bundle/chunks/close-6YODBUIV.js +14 -0
- package/dist/cli-bundle/chunks/{close-TQYAAFJP.js → close-AFVKPR57.js} +7 -7
- package/dist/cli-bundle/chunks/{close-many-BG5QQIDQ.js → close-many-7KLOSYLP.js} +186 -122
- package/dist/cli-bundle/chunks/close-many-7KLOSYLP.js.map +7 -0
- package/dist/cli-bundle/chunks/{close-many-LDRVEQY2.js → close-many-JKUJMHLG.js} +187 -123
- package/dist/cli-bundle/chunks/close-many-JKUJMHLG.js.map +1 -0
- package/dist/cli-bundle/chunks/{comments-YUXJRZPQ.js → comments-DNWHEBOS.js} +9 -9
- package/dist/cli-bundle/chunks/{comments-QCKR2YY2.js → comments-RW23R3VE.js} +9 -9
- package/dist/cli-bundle/chunks/config-AUM5WBYA.js +1072 -0
- package/dist/cli-bundle/chunks/config-AUM5WBYA.js.map +7 -0
- package/dist/cli-bundle/chunks/config-OZWSA2NP.js +1062 -0
- package/dist/cli-bundle/chunks/config-OZWSA2NP.js.map +1 -0
- package/dist/cli-bundle/chunks/{context-B6275WPX.js → context-OYXRGY7S.js} +12 -12
- package/dist/cli-bundle/chunks/{context-OCZ3FJ4Z.js → context-PKCEHQY3.js} +12 -12
- package/dist/cli-bundle/chunks/{contracts-HN7ABKLP.js → contracts-L6ODXNUM.js} +320 -199
- package/dist/cli-bundle/chunks/contracts-L6ODXNUM.js.map +7 -0
- package/dist/cli-bundle/chunks/{contracts-W4FZVVD6.js → contracts-X74F2GSM.js} +321 -200
- package/dist/cli-bundle/chunks/contracts-X74F2GSM.js.map +1 -0
- package/dist/cli-bundle/chunks/{copy-DEM4DATS.js → copy-6XOR3HKN.js} +5 -5
- package/dist/cli-bundle/chunks/{copy-BTJOSKKT.js → copy-I4NCLBR4.js} +5 -5
- package/dist/cli-bundle/chunks/{create-RLRJMRTM.js → create-PM45M6PE.js} +12 -12
- package/dist/cli-bundle/chunks/create-Z7YCH3BE.js +28 -0
- package/dist/cli-bundle/chunks/{delete-BHK7VB2Z.js → delete-7YXHYG67.js} +5 -5
- package/dist/cli-bundle/chunks/{delete-LSVHAB4Y.js → delete-LPISP43T.js} +5 -5
- package/dist/cli-bundle/chunks/{deps-XHYXWEPT.js → deps-N2T26FME.js} +5 -5
- package/dist/cli-bundle/chunks/{deps-4UDFJRUA.js → deps-WATKQDE3.js} +5 -5
- package/dist/cli-bundle/chunks/{docs-GYZNVS26.js → docs-6LQ3GLM7.js} +7 -7
- package/dist/cli-bundle/chunks/{docs-26S44RXU.js → docs-Z3X6JZLT.js} +7 -7
- package/dist/cli-bundle/chunks/{eval-UYF3ZPVO.js → eval-6DCLG52D.js} +10 -10
- package/dist/cli-bundle/chunks/{eval-PGRVIJQU.js → eval-Y3ZCUTHK.js} +10 -10
- package/dist/cli-bundle/chunks/{extension-CPSLJQVE.js → extension-BNINIMT7.js} +11 -11
- package/dist/cli-bundle/chunks/{extension-CXJ6RELI.js → extension-QWE4YYK5.js} +11 -11
- package/dist/cli-bundle/chunks/{files-NQHEXUZD.js → files-6SGKHS6O.js} +7 -7
- package/dist/cli-bundle/chunks/{files-MBNICQFM.js → files-FUYPSOFJ.js} +7 -7
- package/dist/cli-bundle/chunks/{focus-DWYIG7GU.js → focus-2Q3K76G2.js} +6 -6
- package/dist/cli-bundle/chunks/{focus-XZW5423D.js → focus-ATLBWXXD.js} +6 -6
- package/dist/cli-bundle/chunks/{gc-LPVMKJQJ.js → gc-RUYEMNRF.js} +3 -3
- package/dist/cli-bundle/chunks/{gc-7GQYOS2G.js → gc-TDWSDR66.js} +3 -3
- package/dist/cli-bundle/chunks/{get-A7MAOHCU.js → get-2WGLX74N.js} +120 -80
- package/dist/cli-bundle/chunks/get-2WGLX74N.js.map +7 -0
- package/dist/cli-bundle/chunks/{get-DSDEKJ3L.js → get-LY6M2JIM.js} +121 -81
- package/dist/cli-bundle/chunks/get-LY6M2JIM.js.map +1 -0
- package/dist/cli-bundle/chunks/{health-3IPFLKXB.js → health-4RKHYS3T.js} +535 -371
- package/dist/cli-bundle/chunks/health-4RKHYS3T.js.map +1 -0
- package/dist/cli-bundle/chunks/{health-GZXGBZ36.js → health-TMFVNYRA.js} +534 -370
- package/dist/cli-bundle/chunks/health-TMFVNYRA.js.map +7 -0
- package/dist/cli-bundle/chunks/history-CGNQJXFE.js +18 -0
- package/dist/cli-bundle/chunks/{history-NERDJNUB.js → history-SGRRS72R.js} +8 -8
- package/dist/cli-bundle/chunks/{history-compact-2WRZ2WK4.js → history-compact-LOED43R3.js} +213 -134
- package/dist/cli-bundle/chunks/history-compact-LOED43R3.js.map +7 -0
- package/dist/cli-bundle/chunks/{history-compact-HR7BB4LR.js → history-compact-V5DNAQHH.js} +214 -135
- package/dist/cli-bundle/chunks/history-compact-V5DNAQHH.js.map +1 -0
- package/dist/cli-bundle/chunks/{history-redact-O3NBCNWC.js → history-redact-IRL7WJ3E.js} +9 -9
- package/dist/cli-bundle/chunks/history-redact-N3JK7VBW.js +19 -0
- package/dist/cli-bundle/chunks/{history-repair-XA3LC4GA.js → history-repair-4WVBVHFR.js} +124 -84
- package/dist/cli-bundle/chunks/history-repair-4WVBVHFR.js.map +1 -0
- package/dist/cli-bundle/chunks/{history-repair-LCMOS45X.js → history-repair-PGYQJMGD.js} +123 -83
- package/dist/cli-bundle/chunks/history-repair-PGYQJMGD.js.map +7 -0
- package/dist/cli-bundle/chunks/{init-64XDLQJB.js → init-4GESW7RM.js} +12 -12
- package/dist/cli-bundle/chunks/init-XIDPABA4.js +22 -0
- package/dist/cli-bundle/chunks/{learnings-LPKCSJX7.js → learnings-4BHWFFUV.js} +9 -9
- package/dist/cli-bundle/chunks/{learnings-JR6MA5TI.js → learnings-4FJY7WIW.js} +9 -9
- package/dist/cli-bundle/chunks/{list-G5Y65VF6.js → list-472TIOVK.js} +8 -8
- package/dist/cli-bundle/chunks/{list-DNBJVO3E.js → list-D7BF5CL2.js} +8 -8
- package/dist/cli-bundle/chunks/{next-FYTQF6HG.js → next-D5STGWI2.js} +71 -46
- package/dist/cli-bundle/chunks/next-D5STGWI2.js.map +1 -0
- package/dist/cli-bundle/chunks/{next-BCERKDUR.js → next-SFQZVX2B.js} +70 -45
- package/dist/cli-bundle/chunks/next-SFQZVX2B.js.map +7 -0
- package/dist/cli-bundle/chunks/{notes-2BMU3VVQ.js → notes-6KNOSLIT.js} +9 -9
- package/dist/cli-bundle/chunks/{notes-6KTGO2OJ.js → notes-W4UEICGF.js} +9 -9
- package/dist/cli-bundle/chunks/{plan-RKZHQVXR.js → plan-JO6V7BXO.js} +373 -279
- package/dist/cli-bundle/chunks/plan-JO6V7BXO.js.map +1 -0
- package/dist/cli-bundle/chunks/{plan-4WXEQCTN.js → plan-MJQW5XK3.js} +372 -278
- package/dist/cli-bundle/chunks/plan-MJQW5XK3.js.map +7 -0
- package/dist/cli-bundle/chunks/{profile-4OMM32CD.js → profile-3TOTMUR4.js} +27 -19
- package/dist/cli-bundle/chunks/profile-3TOTMUR4.js.map +7 -0
- package/dist/cli-bundle/chunks/{profile-QLER5ENE.js → profile-WIQY2KCV.js} +28 -20
- package/dist/cli-bundle/chunks/profile-WIQY2KCV.js.map +1 -0
- package/dist/cli-bundle/chunks/register-list-query-ELBHCCFI.js +416 -0
- package/dist/cli-bundle/chunks/register-list-query-ELBHCCFI.js.map +7 -0
- package/dist/cli-bundle/chunks/register-list-query-GAPQ6DM3.js +406 -0
- package/dist/cli-bundle/chunks/register-list-query-GAPQ6DM3.js.map +1 -0
- package/dist/cli-bundle/chunks/{register-mutation-KK7PHYYU.js → register-mutation-ROFE2YPC.js} +729 -702
- package/dist/cli-bundle/chunks/register-mutation-ROFE2YPC.js.map +7 -0
- package/dist/cli-bundle/chunks/{register-mutation-ENNDUAZG.js → register-mutation-SJWMVIJ2.js} +730 -703
- package/dist/cli-bundle/chunks/register-mutation-SJWMVIJ2.js.map +1 -0
- package/dist/cli-bundle/chunks/{register-operations-HZ6XERQG.js → register-operations-IADFVH53.js} +389 -365
- package/dist/cli-bundle/chunks/register-operations-IADFVH53.js.map +7 -0
- package/dist/cli-bundle/chunks/register-operations-MEKU3AKC.js +510 -0
- package/dist/cli-bundle/chunks/register-operations-MEKU3AKC.js.map +1 -0
- package/dist/cli-bundle/chunks/{register-setup-ZKJ53RS7.js → register-setup-3QJY43CY.js} +128 -103
- package/dist/cli-bundle/chunks/register-setup-3QJY43CY.js.map +7 -0
- package/dist/cli-bundle/chunks/{register-setup-P67EMBDJ.js → register-setup-AJWUSSQX.js} +129 -104
- package/dist/cli-bundle/chunks/register-setup-AJWUSSQX.js.map +1 -0
- package/dist/cli-bundle/chunks/{restore-4MHZFJ2E.js → restore-44IHMMZZ.js} +9 -9
- package/dist/cli-bundle/chunks/restore-EXHU34EU.js +17 -0
- package/dist/cli-bundle/chunks/{scheduling-shortcuts-LB6DOLRL.js → scheduling-shortcuts-OLHNLAZY.js} +12 -12
- package/dist/cli-bundle/chunks/{scheduling-shortcuts-UTOYKLXQ.js → scheduling-shortcuts-TSBK4AY5.js} +12 -12
- package/dist/cli-bundle/chunks/{schema-73HR2OJW.js → schema-IB2NZZWD.js} +7 -7
- package/dist/cli-bundle/chunks/{schema-U6LJKSIR.js → schema-VBCELP5G.js} +7 -7
- package/dist/cli-bundle/chunks/{search-AXPXKZER.js → search-7UBETML4.js} +10 -10
- package/dist/cli-bundle/chunks/{search-KILGT37L.js → search-R227JOL6.js} +10 -10
- package/dist/cli-bundle/chunks/{stats-W5KNVJWQ.js → stats-FAG7COEH.js} +6 -6
- package/dist/cli-bundle/chunks/{stats-PSYVVTNZ.js → stats-MCK7PLYS.js} +6 -6
- package/dist/cli-bundle/chunks/{telemetry-GAHHQTOS.js → telemetry-DRPDZMAO.js} +84 -70
- package/dist/cli-bundle/chunks/telemetry-DRPDZMAO.js.map +7 -0
- package/dist/cli-bundle/chunks/{telemetry-BZUF6H7G.js → telemetry-GVVUQSJQ.js} +85 -71
- package/dist/cli-bundle/chunks/telemetry-GVVUQSJQ.js.map +1 -0
- package/dist/cli-bundle/chunks/{test-PWDIZ255.js → test-QY44WAMR.js} +15 -15
- package/dist/cli-bundle/chunks/{test-ACD52Z3S.js → test-SY76DZTO.js} +15 -15
- package/dist/cli-bundle/chunks/test-all-QD6QAEG7.js +430 -0
- package/dist/cli-bundle/chunks/test-all-QD6QAEG7.js.map +7 -0
- package/dist/cli-bundle/chunks/test-all-USPJHXFR.js +427 -0
- package/dist/cli-bundle/chunks/test-all-USPJHXFR.js.map +1 -0
- package/dist/cli-bundle/chunks/{test-runs-UXIXPDKU.js → test-runs-MG5VIGSK.js} +185 -147
- package/dist/cli-bundle/chunks/test-runs-MG5VIGSK.js.map +1 -0
- package/dist/cli-bundle/chunks/{test-runs-PLRAZEFW.js → test-runs-QIR5MJPL.js} +184 -146
- package/dist/cli-bundle/chunks/test-runs-QIR5MJPL.js.map +7 -0
- package/dist/cli-bundle/chunks/update-A7EICML6.js +24 -0
- package/dist/cli-bundle/chunks/{update-KFX2SIAC.js → update-IKJZWLQC.js} +15 -15
- package/dist/cli-bundle/chunks/{update-many-RNSBX2TA.js → update-many-BEMTDA2X.js} +84 -69
- package/dist/cli-bundle/chunks/{update-many-RNSBX2TA.js.map → update-many-BEMTDA2X.js.map} +1 -1
- package/dist/cli-bundle/chunks/{update-many-Z5GJS5LC.js → update-many-RATAARHU.js} +83 -68
- package/dist/cli-bundle/chunks/{update-many-Z5GJS5LC.js.map → update-many-RATAARHU.js.map} +2 -2
- package/dist/cli-bundle/chunks/{upgrade-BRL6KCOJ.js → upgrade-NWMR3VQL.js} +11 -11
- package/dist/cli-bundle/chunks/{upgrade-HAK6JG2O.js → upgrade-VU46BLJZ.js} +11 -11
- package/dist/cli-bundle/chunks/{validate-X5W76YJL.js → validate-GAJ6FUSI.js} +451 -321
- package/dist/cli-bundle/chunks/validate-GAJ6FUSI.js.map +1 -0
- package/dist/cli-bundle/chunks/{validate-MTUVL5VC.js → validate-NRY6MFXN.js} +450 -320
- package/dist/cli-bundle/chunks/validate-NRY6MFXN.js.map +7 -0
- package/dist/cli-bundle/main.js +1107 -916
- package/dist/cli-bundle/main.js.map +3 -3
- package/dist/core/config/nested-settings.js +89 -67
- package/dist/core/config/nested-settings.js.map +1 -1
- package/dist/core/governance/metadata-coverage.js +20 -28
- package/dist/core/governance/metadata-coverage.js.map +1 -1
- package/dist/core/history/drift-scan.js +93 -81
- package/dist/core/history/drift-scan.js.map +1 -1
- package/dist/core/item/item-type-definition.js +14 -14
- package/dist/core/item/item-type-definition.js.map +1 -1
- package/dist/core/item/type-registry.js +114 -99
- package/dist/core/item/type-registry.js.map +1 -1
- package/dist/core/output/mutation-projection.js +42 -26
- package/dist/core/output/mutation-projection.js.map +1 -1
- package/dist/core/schema/runtime-schema.js +97 -80
- package/dist/core/schema/runtime-schema.js.map +1 -1
- package/dist/core/schema/status-defs-file.js +26 -3
- package/dist/core/schema/status-defs-file.js.map +1 -1
- package/dist/core/search/corpus.js +25 -19
- package/dist/core/search/corpus.js.map +1 -1
- package/dist/core/search/semantic-defaults.js +64 -37
- package/dist/core/search/semantic-defaults.js.map +1 -1
- package/dist/core/search/vector-stores.js +32 -17
- package/dist/core/search/vector-stores.js.map +1 -1
- package/dist/core/sentry/helpers.js +31 -28
- package/dist/core/sentry/helpers.js.map +1 -1
- package/dist/core/sentry/instrument.js +54 -43
- package/dist/core/sentry/instrument.js.map +1 -1
- package/dist/core/shared/memo.d.ts +12 -0
- package/dist/core/shared/memo.js +25 -0
- package/dist/core/shared/memo.js.map +1 -0
- package/dist/core/shared/serialization.js +24 -14
- package/dist/core/shared/serialization.js.map +1 -1
- package/dist/core/shared/time.js +26 -4
- package/dist/core/shared/time.js.map +1 -1
- package/dist/core/store/front-matter-cache.d.ts +5 -0
- package/dist/core/store/front-matter-cache.js +316 -171
- package/dist/core/store/front-matter-cache.js.map +1 -1
- package/dist/core/store/item-store.js +33 -26
- package/dist/core/store/item-store.js.map +1 -1
- package/dist/core/store/settings.js +247 -203
- package/dist/core/store/settings.js.map +1 -1
- package/dist/core/test/background-runs.js +189 -160
- package/dist/core/test/background-runs.js.map +1 -1
- package/dist/sdk/cli-contracts/flag-contracts.js +71 -99
- package/dist/sdk/cli-contracts/flag-contracts.js.map +1 -1
- package/dist/sdk/compose.js +51 -42
- package/dist/sdk/compose.js.map +1 -1
- package/docs/AGENT_GUIDE.md +2 -2
- package/docs/ARCHITECTURE.md +2 -2
- package/docs/COMMANDS.md +8 -4
- package/docs/CONFIGURATION.md +1 -1
- package/docs/EXTENSIONS.md +12 -12
- package/docs/ONBOARDING.md +4 -2
- package/docs/README.md +2 -0
- package/docs/examples/starter-extension/README.md +11 -10
- package/marketplace.json +3 -3
- package/package.json +2 -2
- package/packages/pm-beads/extensions/beads/runtime.ts +240 -167
- package/packages/pm-guide-shell/extensions/guide-shell/runtime.ts +65 -58
- package/packages/pm-todos/extensions/todos/runtime.ts +65 -42
- package/plugins/pm-claude/.claude-plugin/plugin.json +2 -2
- package/plugins/pm-claude/README.md +6 -3
- package/plugins/pm-claude/commands/pm-init.md +1 -1
- package/dist/cli-bundle/chunks/activity-AW6XVFH6.js +0 -16
- package/dist/cli-bundle/chunks/aggregate-JTEF4BP7.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-22WKIL3H.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-2D4HATP2.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-3J6JRJ3I.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-3K2M5OYU.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-3S2KT7NG.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-3VGN2UWE.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-3XZCOZ5J.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-4XOIEKSD.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-55SNVXRQ.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-5CGRF3L5.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-7R4QEMZZ.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-AXIDKKAT.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-BDTISOSD.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-BZCEN4JA.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-CF7RL6FR.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-CWFNTKQJ.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-FFMQB7WR.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-HXTQJXWT.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-IPYBJWTE.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-IZBR4NRW.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-JLM7BHI7.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-JSU5P7VS.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-JWXRETDF.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-KNPEF7QG.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-MDPEOIGN.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-NFDPYAIP.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-NUHHPVVS.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-NWMZWYYB.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-OTUHB4HS.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-RGEMWD6Q.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-RLDHZHQS.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-RMMQ74TG.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-RVUALSJF.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-TP5Q5ZD3.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-V3NOKJF2.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-VARHOHYV.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-WYDHYJPO.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-YITK2PJ6.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-ZETXE4SE.js.map +0 -1
- package/dist/cli-bundle/chunks/close-E6ZZGCJY.js +0 -14
- package/dist/cli-bundle/chunks/close-many-BG5QQIDQ.js.map +0 -7
- package/dist/cli-bundle/chunks/close-many-LDRVEQY2.js.map +0 -1
- package/dist/cli-bundle/chunks/config-DMSU64QO.js +0 -1541
- package/dist/cli-bundle/chunks/config-DMSU64QO.js.map +0 -7
- package/dist/cli-bundle/chunks/config-QH2DICD6.js +0 -1531
- package/dist/cli-bundle/chunks/config-QH2DICD6.js.map +0 -1
- package/dist/cli-bundle/chunks/contracts-HN7ABKLP.js.map +0 -7
- package/dist/cli-bundle/chunks/contracts-W4FZVVD6.js.map +0 -1
- package/dist/cli-bundle/chunks/create-OH3BDGBB.js +0 -28
- package/dist/cli-bundle/chunks/get-A7MAOHCU.js.map +0 -7
- package/dist/cli-bundle/chunks/get-DSDEKJ3L.js.map +0 -1
- package/dist/cli-bundle/chunks/health-3IPFLKXB.js.map +0 -1
- package/dist/cli-bundle/chunks/health-GZXGBZ36.js.map +0 -7
- package/dist/cli-bundle/chunks/history-WSZHY3PN.js +0 -18
- package/dist/cli-bundle/chunks/history-compact-2WRZ2WK4.js.map +0 -7
- package/dist/cli-bundle/chunks/history-compact-HR7BB4LR.js.map +0 -1
- package/dist/cli-bundle/chunks/history-redact-MP6CH7U5.js +0 -19
- package/dist/cli-bundle/chunks/history-repair-LCMOS45X.js.map +0 -7
- package/dist/cli-bundle/chunks/history-repair-XA3LC4GA.js.map +0 -1
- package/dist/cli-bundle/chunks/init-PAX32BJA.js +0 -22
- package/dist/cli-bundle/chunks/next-BCERKDUR.js.map +0 -7
- package/dist/cli-bundle/chunks/next-FYTQF6HG.js.map +0 -1
- package/dist/cli-bundle/chunks/plan-4WXEQCTN.js.map +0 -7
- package/dist/cli-bundle/chunks/plan-RKZHQVXR.js.map +0 -1
- package/dist/cli-bundle/chunks/profile-4OMM32CD.js.map +0 -7
- package/dist/cli-bundle/chunks/profile-QLER5ENE.js.map +0 -1
- package/dist/cli-bundle/chunks/register-list-query-7LV46VAU.js +0 -400
- package/dist/cli-bundle/chunks/register-list-query-7LV46VAU.js.map +0 -1
- package/dist/cli-bundle/chunks/register-list-query-SNG5PGA4.js +0 -410
- package/dist/cli-bundle/chunks/register-list-query-SNG5PGA4.js.map +0 -7
- package/dist/cli-bundle/chunks/register-mutation-ENNDUAZG.js.map +0 -1
- package/dist/cli-bundle/chunks/register-mutation-KK7PHYYU.js.map +0 -7
- package/dist/cli-bundle/chunks/register-operations-C6OWLDSH.js +0 -486
- package/dist/cli-bundle/chunks/register-operations-C6OWLDSH.js.map +0 -1
- package/dist/cli-bundle/chunks/register-operations-HZ6XERQG.js.map +0 -7
- package/dist/cli-bundle/chunks/register-setup-P67EMBDJ.js.map +0 -1
- package/dist/cli-bundle/chunks/register-setup-ZKJ53RS7.js.map +0 -7
- package/dist/cli-bundle/chunks/restore-YALDGTQR.js +0 -17
- package/dist/cli-bundle/chunks/telemetry-BZUF6H7G.js.map +0 -1
- package/dist/cli-bundle/chunks/telemetry-GAHHQTOS.js.map +0 -7
- package/dist/cli-bundle/chunks/test-all-L2MDDUCA.js +0 -358
- package/dist/cli-bundle/chunks/test-all-L2MDDUCA.js.map +0 -1
- package/dist/cli-bundle/chunks/test-all-RBZ6DLU2.js +0 -361
- package/dist/cli-bundle/chunks/test-all-RBZ6DLU2.js.map +0 -7
- package/dist/cli-bundle/chunks/test-runs-PLRAZEFW.js.map +0 -7
- package/dist/cli-bundle/chunks/test-runs-UXIXPDKU.js.map +0 -1
- package/dist/cli-bundle/chunks/update-AMRSOIWP.js +0 -24
- package/dist/cli-bundle/chunks/validate-MTUVL5VC.js.map +0 -7
- package/dist/cli-bundle/chunks/validate-X5W76YJL.js.map +0 -1
- /package/dist/cli-bundle/chunks/{activity-DBLQVIP6.js.map → activity-5YWLSPGE.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{activity-AW6XVFH6.js.map → activity-BIML7K2D.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{append-LOVPGVPT.js.map → append-EZESUVJT.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{append-QCFJSDFL.js.map → append-JFG4WQMG.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-BHO33VBQ.js.map → chunk-3W2HJKJX.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-4DUVCVLZ.js.map → chunk-4PFVUUYV.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-IJYK2T43.js.map → chunk-5E7N4T2Z.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-NKZAN7BD.js.map → chunk-5IZUBZBR.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-NOLPZMSV.js.map → chunk-5JIWFWOZ.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-6AQZPVHQ.js.map → chunk-6CDCWKSX.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-LB6TP6MC.js.map → chunk-6NYJGMTY.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-SLMUGTK3.js.map → chunk-7CLLC75T.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-2466X6E4.js.map → chunk-7LYO6S5A.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-W4ULYO7Z.js.map → chunk-A3OQ7TFW.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-GJ326ZKX.js.map → chunk-ER4ME5U2.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-HZZEHPRG.js.map → chunk-ERG65A2L.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-L5OEFZQG.js.map → chunk-FH2H3CBD.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-JPECA746.js.map → chunk-FUFFPIYA.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-27BXPBAY.js.map → chunk-GUYNUXQT.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-MAUKX7JC.js.map → chunk-GVJE5T7Q.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-ZRP4VG5U.js.map → chunk-JBZ2NTKX.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-EJUDVUYZ.js.map → chunk-KEZOIPCR.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-HYTGA6GI.js.map → chunk-MDHWWBNZ.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-N74UMG5H.js.map → chunk-MEZZZBYX.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-SDR5J34Q.js.map → chunk-NZ7QIUP5.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-DDPTYJIM.js.map → chunk-P5L7Z2O6.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-OGXLACHC.js.map → chunk-SU2E4AWU.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-HPPFYYOV.js.map → chunk-SU3TB4NS.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-G7I7DEZA.js.map → chunk-T4XBKJ3F.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-VICZWYGZ.js.map → chunk-U5TR4N7J.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-EVMTBV6V.js.map → chunk-UMNQZS4H.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-A7FPBAQS.js.map → chunk-WJA3PXW7.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-QCWF6IYD.js.map → chunk-YSDFIY7N.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-UZIWVBE6.js.map → chunk-YSGTMDWC.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-64HNBBFQ.js.map → chunk-Z5F6XZXE.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-AVEE5EHK.js.map → chunk-Z7RPDF2Y.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{claim-T3GCKV7C.js.map → claim-2BGBGSVI.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{claim-EMQLYPRW.js.map → claim-5GU7OE67.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{close-E6ZZGCJY.js.map → close-6YODBUIV.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{close-TQYAAFJP.js.map → close-AFVKPR57.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{comments-YUXJRZPQ.js.map → comments-DNWHEBOS.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{comments-QCKR2YY2.js.map → comments-RW23R3VE.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{context-B6275WPX.js.map → context-OYXRGY7S.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{context-OCZ3FJ4Z.js.map → context-PKCEHQY3.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{copy-DEM4DATS.js.map → copy-6XOR3HKN.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{copy-BTJOSKKT.js.map → copy-I4NCLBR4.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{create-RLRJMRTM.js.map → create-PM45M6PE.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{create-OH3BDGBB.js.map → create-Z7YCH3BE.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{delete-BHK7VB2Z.js.map → delete-7YXHYG67.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{delete-LSVHAB4Y.js.map → delete-LPISP43T.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{deps-XHYXWEPT.js.map → deps-N2T26FME.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{deps-4UDFJRUA.js.map → deps-WATKQDE3.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{docs-GYZNVS26.js.map → docs-6LQ3GLM7.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{docs-26S44RXU.js.map → docs-Z3X6JZLT.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{eval-UYF3ZPVO.js.map → eval-6DCLG52D.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{eval-PGRVIJQU.js.map → eval-Y3ZCUTHK.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{extension-CPSLJQVE.js.map → extension-BNINIMT7.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{extension-CXJ6RELI.js.map → extension-QWE4YYK5.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{files-NQHEXUZD.js.map → files-6SGKHS6O.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{files-MBNICQFM.js.map → files-FUYPSOFJ.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{focus-DWYIG7GU.js.map → focus-2Q3K76G2.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{focus-XZW5423D.js.map → focus-ATLBWXXD.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{gc-LPVMKJQJ.js.map → gc-RUYEMNRF.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{gc-7GQYOS2G.js.map → gc-TDWSDR66.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{history-WSZHY3PN.js.map → history-CGNQJXFE.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{history-NERDJNUB.js.map → history-SGRRS72R.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{history-redact-O3NBCNWC.js.map → history-redact-IRL7WJ3E.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{history-redact-MP6CH7U5.js.map → history-redact-N3JK7VBW.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{init-64XDLQJB.js.map → init-4GESW7RM.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{init-PAX32BJA.js.map → init-XIDPABA4.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{learnings-LPKCSJX7.js.map → learnings-4BHWFFUV.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{learnings-JR6MA5TI.js.map → learnings-4FJY7WIW.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{list-G5Y65VF6.js.map → list-472TIOVK.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{list-DNBJVO3E.js.map → list-D7BF5CL2.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{notes-2BMU3VVQ.js.map → notes-6KNOSLIT.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{notes-6KTGO2OJ.js.map → notes-W4UEICGF.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{restore-4MHZFJ2E.js.map → restore-44IHMMZZ.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{restore-YALDGTQR.js.map → restore-EXHU34EU.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{scheduling-shortcuts-LB6DOLRL.js.map → scheduling-shortcuts-OLHNLAZY.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{scheduling-shortcuts-UTOYKLXQ.js.map → scheduling-shortcuts-TSBK4AY5.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{schema-73HR2OJW.js.map → schema-IB2NZZWD.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{schema-U6LJKSIR.js.map → schema-VBCELP5G.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{search-AXPXKZER.js.map → search-7UBETML4.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{search-KILGT37L.js.map → search-R227JOL6.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{stats-W5KNVJWQ.js.map → stats-FAG7COEH.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{stats-PSYVVTNZ.js.map → stats-MCK7PLYS.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{test-PWDIZ255.js.map → test-QY44WAMR.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{test-ACD52Z3S.js.map → test-SY76DZTO.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{update-AMRSOIWP.js.map → update-A7EICML6.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{update-KFX2SIAC.js.map → update-IKJZWLQC.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{upgrade-BRL6KCOJ.js.map → upgrade-NWMR3VQL.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{upgrade-HAK6JG2O.js.map → upgrade-VU46BLJZ.js.map} +0 -0
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Implements the pm contracts command surface and its agent-facing runtime behavior.
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
!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]="
|
|
7
|
+
!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]="24d15738-45bd-5dd2-95e1-699f9c6061bd")}catch(e){}}();
|
|
8
8
|
import { EXIT_CODE, SETTINGS_DEFAULTS } from "../../core/shared/constants.js";
|
|
9
9
|
import { PmCliError } from "../../core/shared/errors.js";
|
|
10
10
|
import { activateExtensions, getActiveExtensionRegistrations, loadExtensions, } from "../../core/extensions/index.js";
|
|
@@ -376,6 +376,11 @@ function normalizeStringList(values) {
|
|
|
376
376
|
}
|
|
377
377
|
return normalized;
|
|
378
378
|
}
|
|
379
|
+
function assignExtensionFlagBoolean(contract, key, enabled) {
|
|
380
|
+
if (enabled) {
|
|
381
|
+
contract[key] = true;
|
|
382
|
+
}
|
|
383
|
+
}
|
|
379
384
|
function toExtensionFlagContract(definition) {
|
|
380
385
|
const longName = toOptionalTrimmedString(definition.long);
|
|
381
386
|
const shortName = toOptionalTrimmedString(definition.short);
|
|
@@ -393,16 +398,13 @@ function toExtensionFlagContract(definition) {
|
|
|
393
398
|
if (normalizedShort && normalizedLong) {
|
|
394
399
|
contract.short = normalizedShort;
|
|
395
400
|
}
|
|
401
|
+
assignExtensionFlagBoolean(contract, "required", definition.required === true);
|
|
402
|
+
assignExtensionFlagBoolean(contract, "repeatable", definition.repeatable === true);
|
|
403
|
+
assignExtensionFlagBoolean(contract, "list", definition.list === true);
|
|
396
404
|
const description = toOptionalTrimmedString(definition.description);
|
|
397
405
|
if (description) {
|
|
398
406
|
contract.description = description;
|
|
399
407
|
}
|
|
400
|
-
if (definition.required === true) {
|
|
401
|
-
contract.required = true;
|
|
402
|
-
}
|
|
403
|
-
if (definition.repeatable === true) {
|
|
404
|
-
contract.repeatable = true;
|
|
405
|
-
}
|
|
406
408
|
const valueName = toOptionalTrimmedString(definition.value_name);
|
|
407
409
|
if (valueName) {
|
|
408
410
|
contract.value_name = valueName;
|
|
@@ -553,6 +555,31 @@ function extensionSchemaPropertyNameFromFlag(flag) {
|
|
|
553
555
|
const cleaned = camelCased.replace(/[^a-zA-Z0-9]/g, "");
|
|
554
556
|
return cleaned.length > 0 ? cleaned : null;
|
|
555
557
|
}
|
|
558
|
+
function buildExtensionArgumentSchema(argument, action) {
|
|
559
|
+
if (argument.variadic) {
|
|
560
|
+
return {
|
|
561
|
+
type: "array",
|
|
562
|
+
items: { type: "string" },
|
|
563
|
+
description: argument.description ??
|
|
564
|
+
`Variadic argument '${argument.name}' for extension action '${action}'.`,
|
|
565
|
+
};
|
|
566
|
+
}
|
|
567
|
+
return {
|
|
568
|
+
type: "string",
|
|
569
|
+
description: argument.description ??
|
|
570
|
+
`Argument '${argument.name}' for extension action '${action}'.`,
|
|
571
|
+
};
|
|
572
|
+
}
|
|
573
|
+
function buildExtensionFlagSchema(flag, action) {
|
|
574
|
+
const valueType = flag.value_type ?? "boolean";
|
|
575
|
+
const schemaType = valueType === "boolean" ? "boolean" : valueType === "number" ? ["number", "string"] : "string";
|
|
576
|
+
const acceptsMultipleValues = flag.repeatable === true || flag.list === true;
|
|
577
|
+
return {
|
|
578
|
+
type: acceptsMultipleValues ? "array" : schemaType,
|
|
579
|
+
...(acceptsMultipleValues ? { items: { type: schemaType } } : {}),
|
|
580
|
+
description: flag.description ?? `Extension option '${flag.flag}' for action '${action}'.`,
|
|
581
|
+
};
|
|
582
|
+
}
|
|
556
583
|
function buildExtensionActionSchemaBranch(contract) {
|
|
557
584
|
const commands = contract.command
|
|
558
585
|
.split("|")
|
|
@@ -569,21 +596,7 @@ function buildExtensionActionSchemaBranch(contract) {
|
|
|
569
596
|
};
|
|
570
597
|
const required = ["action"];
|
|
571
598
|
for (const argument of contract.arguments) {
|
|
572
|
-
|
|
573
|
-
properties[argument.name] = {
|
|
574
|
-
type: "array",
|
|
575
|
-
items: { type: "string" },
|
|
576
|
-
description: argument.description ??
|
|
577
|
-
`Variadic argument '${argument.name}' for extension action '${contract.action}'.`,
|
|
578
|
-
};
|
|
579
|
-
}
|
|
580
|
-
else {
|
|
581
|
-
properties[argument.name] = {
|
|
582
|
-
type: "string",
|
|
583
|
-
description: argument.description ??
|
|
584
|
-
`Argument '${argument.name}' for extension action '${contract.action}'.`,
|
|
585
|
-
};
|
|
586
|
-
}
|
|
599
|
+
properties[argument.name] = buildExtensionArgumentSchema(argument, contract.action);
|
|
587
600
|
if (argument.required) {
|
|
588
601
|
required.push(argument.name);
|
|
589
602
|
}
|
|
@@ -593,13 +606,7 @@ function buildExtensionActionSchemaBranch(contract) {
|
|
|
593
606
|
if (!propertyName || properties[propertyName] !== undefined) {
|
|
594
607
|
continue;
|
|
595
608
|
}
|
|
596
|
-
|
|
597
|
-
const schemaType = valueType === "boolean" ? "boolean" : valueType === "number" ? ["number", "string"] : "string";
|
|
598
|
-
properties[propertyName] = {
|
|
599
|
-
type: flag.repeatable ? "array" : schemaType,
|
|
600
|
-
...(flag.repeatable ? { items: { type: schemaType } } : {}),
|
|
601
|
-
description: flag.description ?? `Extension option '${flag.flag}' for action '${contract.action}'.`,
|
|
602
|
-
};
|
|
609
|
+
properties[propertyName] = buildExtensionFlagSchema(flag, contract.action);
|
|
603
610
|
if (flag.required === true) {
|
|
604
611
|
required.push(propertyName);
|
|
605
612
|
}
|
|
@@ -1056,68 +1063,95 @@ function attachCreateRequiredOptionContracts(schema, metadata) {
|
|
|
1056
1063
|
oneOf: enrichedBranches,
|
|
1057
1064
|
};
|
|
1058
1065
|
}
|
|
1059
|
-
|
|
1060
|
-
* Implements run contracts for the public runtime surface of this module.
|
|
1061
|
-
*/
|
|
1062
|
-
export async function runContracts(options, global) {
|
|
1063
|
-
const selectedAction = normalizeToken(options.action);
|
|
1064
|
-
const selectedCommand = normalizeToken(options.command);
|
|
1066
|
+
function resolveContractsSelection(options) {
|
|
1065
1067
|
const schemaOnly = options.schemaOnly === true;
|
|
1066
1068
|
const flagsOnly = options.flagsOnly === true;
|
|
1067
1069
|
const availabilityOnly = options.availabilityOnly === true;
|
|
1068
1070
|
const runtimeOnly = options.runtimeOnly === true;
|
|
1069
1071
|
const fullOutput = options.full === true;
|
|
1072
|
+
const selectedAction = normalizeToken(options.action);
|
|
1073
|
+
const selectedCommand = normalizeToken(options.command);
|
|
1070
1074
|
const unfilteredDefaultBriefMode = !fullOutput && !schemaOnly && !flagsOnly && !availabilityOnly && !selectedAction && !selectedCommand;
|
|
1071
|
-
|
|
1072
|
-
|
|
1073
|
-
|
|
1074
|
-
const omitUnfilteredSchema = unfilteredDefaultBriefMode;
|
|
1075
|
-
const omitUnfilteredCommandFlags = unfilteredDefaultBriefMode;
|
|
1076
|
-
const omitUnfilteredCommanderAliases = unfilteredDefaultBriefMode;
|
|
1077
|
-
const projectionFlagsEnabled = [
|
|
1075
|
+
return {
|
|
1076
|
+
selectedAction,
|
|
1077
|
+
selectedCommand,
|
|
1078
1078
|
schemaOnly,
|
|
1079
1079
|
flagsOnly,
|
|
1080
1080
|
availabilityOnly,
|
|
1081
|
+
runtimeOnly,
|
|
1082
|
+
fullOutput,
|
|
1083
|
+
omitUnfilteredSchema: unfilteredDefaultBriefMode,
|
|
1084
|
+
omitUnfilteredCommandFlags: unfilteredDefaultBriefMode,
|
|
1085
|
+
omitUnfilteredCommanderAliases: unfilteredDefaultBriefMode,
|
|
1086
|
+
};
|
|
1087
|
+
}
|
|
1088
|
+
function assertSingleContractsProjection(selection) {
|
|
1089
|
+
const projectionFlagsEnabled = [
|
|
1090
|
+
selection.schemaOnly,
|
|
1091
|
+
selection.flagsOnly,
|
|
1092
|
+
selection.availabilityOnly,
|
|
1081
1093
|
].filter((value) => value).length;
|
|
1082
1094
|
if (projectionFlagsEnabled > 1) {
|
|
1083
1095
|
throw new PmCliError("Choose only one projection flag: --schema-only, --flags-only, or --availability-only.", EXIT_CODE.USAGE);
|
|
1084
1096
|
}
|
|
1085
|
-
|
|
1086
|
-
|
|
1097
|
+
}
|
|
1098
|
+
async function readContractsSettings(pmRoot) {
|
|
1087
1099
|
try {
|
|
1088
|
-
|
|
1100
|
+
return await readSettings(pmRoot);
|
|
1089
1101
|
}
|
|
1090
1102
|
catch {
|
|
1091
|
-
|
|
1103
|
+
return structuredClone(SETTINGS_DEFAULTS);
|
|
1092
1104
|
}
|
|
1105
|
+
}
|
|
1106
|
+
async function resolveContractsRuntimeContext(global, pmRoot) {
|
|
1107
|
+
const settings = await readContractsSettings(pmRoot);
|
|
1093
1108
|
const runtimeProbe = await resolveRuntimeExtensionActionProbe(global);
|
|
1094
1109
|
const typeRegistry = resolveItemTypeRegistry(settings, runtimeProbe.registrations ?? getActiveExtensionRegistrations());
|
|
1095
|
-
const statusRegistry = resolveRuntimeStatusRegistry(settings.schema);
|
|
1096
1110
|
const runtimeFieldRegistry = resolveRuntimeFieldRegistry(settings.schema);
|
|
1097
|
-
const runtimeFieldFlagMap = buildRuntimeFieldFlagContracts(runtimeFieldRegistry);
|
|
1098
|
-
const createRequiredOptionContracts = buildCreateRequiredOptionContracts(typeRegistry);
|
|
1099
1111
|
const extensionContracts = collectExtensionCommandContracts(runtimeProbe);
|
|
1100
|
-
|
|
1101
|
-
|
|
1102
|
-
|
|
1103
|
-
|
|
1104
|
-
|
|
1105
|
-
|
|
1106
|
-
|
|
1107
|
-
|
|
1108
|
-
|
|
1112
|
+
return {
|
|
1113
|
+
settings,
|
|
1114
|
+
runtimeProbe,
|
|
1115
|
+
typeRegistry,
|
|
1116
|
+
statusRegistry: resolveRuntimeStatusRegistry(settings.schema),
|
|
1117
|
+
runtimeFieldRegistry,
|
|
1118
|
+
runtimeFieldFlagMap: buildRuntimeFieldFlagContracts(runtimeFieldRegistry),
|
|
1119
|
+
createRequiredOptionContracts: buildCreateRequiredOptionContracts(typeRegistry),
|
|
1120
|
+
extensionContracts,
|
|
1121
|
+
mergedExtensionContracts: mergeExtensionContractsByAction(extensionContracts),
|
|
1122
|
+
extensionFlagMap: collectExtensionFlagContractsByCommand(runtimeProbe.flagRegistrations),
|
|
1123
|
+
};
|
|
1124
|
+
}
|
|
1125
|
+
function shouldIncludePackageOwnedActions(selection) {
|
|
1126
|
+
return (selection.availabilityOnly &&
|
|
1127
|
+
((selection.selectedAction !== undefined && PACKAGE_OWNED_ACTIONS.has(selection.selectedAction)) ||
|
|
1128
|
+
(selection.selectedCommand !== undefined && PACKAGE_OWNED_COMMANDS.has(selection.selectedCommand))));
|
|
1129
|
+
}
|
|
1130
|
+
function collectContractsActionDescriptors(selection, mergedExtensionContracts) {
|
|
1131
|
+
const actionDescriptors = collectActionContractDescriptors(mergedExtensionContracts, {
|
|
1132
|
+
includePackageOwnedActions: shouldIncludePackageOwnedActions(selection),
|
|
1133
|
+
});
|
|
1134
|
+
if (shouldIncludePackageOwnedActions(selection) &&
|
|
1135
|
+
selection.selectedCommand !== undefined &&
|
|
1136
|
+
PACKAGE_OWNED_COMMANDS.has(selection.selectedCommand) &&
|
|
1137
|
+
!actionDescriptors.some((entry) => entry.command_path === selection.selectedCommand)) {
|
|
1109
1138
|
actionDescriptors.push({
|
|
1110
|
-
action: packageOwnedActionForCommand(selectedCommand),
|
|
1139
|
+
action: packageOwnedActionForCommand(selection.selectedCommand),
|
|
1111
1140
|
provider: "extension",
|
|
1112
1141
|
requires_extension: true,
|
|
1113
|
-
command_path: selectedCommand,
|
|
1142
|
+
command_path: selection.selectedCommand,
|
|
1114
1143
|
});
|
|
1115
1144
|
}
|
|
1145
|
+
return actionDescriptors;
|
|
1146
|
+
}
|
|
1147
|
+
function assertKnownContractsAction(selection, actionDescriptors) {
|
|
1116
1148
|
const actionNames = new Set(actionDescriptors.map((entry) => entry.action));
|
|
1117
|
-
if (selectedAction && !actionNames.has(selectedAction)) {
|
|
1118
|
-
throw new PmCliError(`Unknown action: "${
|
|
1149
|
+
if (selection.selectedAction && !actionNames.has(selection.selectedAction)) {
|
|
1150
|
+
throw new PmCliError(`Unknown action: "${selection.selectedAction}".`, EXIT_CODE.USAGE);
|
|
1119
1151
|
}
|
|
1120
|
-
|
|
1152
|
+
}
|
|
1153
|
+
function buildContractsCommandCatalog(actionDescriptors, mergedExtensionContracts) {
|
|
1154
|
+
return [
|
|
1121
1155
|
...new Set([
|
|
1122
1156
|
...PM_CORE_COMMAND_NAMES.filter((entry) => !PACKAGE_OWNED_COMMANDS.has(entry)),
|
|
1123
1157
|
...[...CORE_COMMAND_FLAG_CONTRACTS_BY_COMMAND.keys()].filter((entry) => !PACKAGE_OWNED_COMMANDS.has(entry)),
|
|
@@ -1129,78 +1163,121 @@ export async function runContracts(options, global) {
|
|
|
1129
1163
|
.map((entry) => normalizeCommandPath(entry))
|
|
1130
1164
|
.filter((entry) => entry.length > 0)
|
|
1131
1165
|
.sort((left, right) => left.localeCompare(right));
|
|
1166
|
+
}
|
|
1167
|
+
function buildCommandNamespaceError(command, namespaceChildren) {
|
|
1168
|
+
const displayedNamespaceChildren = namespaceChildren.slice(0, COMMAND_NAMESPACE_DISPLAY_LIMIT);
|
|
1169
|
+
const hiddenNamespaceChildCount = namespaceChildren.length - displayedNamespaceChildren.length;
|
|
1170
|
+
const displayedChildCommandList = hiddenNamespaceChildCount > 0
|
|
1171
|
+
? `${displayedNamespaceChildren.join(", ")}, and ${hiddenNamespaceChildCount} more`
|
|
1172
|
+
: displayedNamespaceChildren.join(", ");
|
|
1173
|
+
const fallbackCandidates = namespaceChildren.slice(0, COMMAND_NAMESPACE_FALLBACK_LIMIT);
|
|
1174
|
+
const childCommandExamples = namespaceChildren
|
|
1175
|
+
.slice(0, 5)
|
|
1176
|
+
.map((childCommand) => `pm contracts --command "${childCommand}" --flags-only --json`);
|
|
1177
|
+
const suggestedChildCommand = namespaceChildren[0];
|
|
1178
|
+
return new PmCliError(`Command "${command}" is a command namespace. Choose a concrete child command: ${displayedChildCommandList}.`, EXIT_CODE.USAGE, {
|
|
1179
|
+
code: "command_namespace",
|
|
1180
|
+
required: "Use a concrete child command path listed under this namespace.",
|
|
1181
|
+
why: "Command groups expose help at the namespace root, but command flag contracts belong to executable child commands.",
|
|
1182
|
+
examples: childCommandExamples,
|
|
1183
|
+
nextSteps: [`Retry with a child command, for example: ${childCommandExamples[0]}`],
|
|
1184
|
+
recovery: {
|
|
1185
|
+
suggested_retry: `pm contracts --command "${suggestedChildCommand}" --flags-only --json`,
|
|
1186
|
+
fallback_candidates: fallbackCandidates.map((childCommand) => ({
|
|
1187
|
+
source: "command_namespace",
|
|
1188
|
+
command: `pm contracts --command "${childCommand}" --flags-only --json`,
|
|
1189
|
+
reason: `Child command under ${command}`,
|
|
1190
|
+
})),
|
|
1191
|
+
},
|
|
1192
|
+
});
|
|
1193
|
+
}
|
|
1194
|
+
function buildPackageOwnedCommandError(command, packageHint) {
|
|
1195
|
+
return new PmCliError(`Unknown command: "${command}". Command "${command}" is provided by the optional "${packageHint}" package. Run "pm install ${packageHint} --project" and retry.`, EXIT_CODE.USAGE, {
|
|
1196
|
+
code: "unknown_command",
|
|
1197
|
+
required: `Install the optional "${packageHint}" package, or choose a command from pm contracts --flags-only --json.`,
|
|
1198
|
+
why: "Command contracts include core commands plus commands registered by active packages and extensions.",
|
|
1199
|
+
examples: [`pm install ${packageHint} --project`, `pm contracts --command ${command} --flags-only --json`],
|
|
1200
|
+
nextSteps: [`Install the optional package first: pm install ${packageHint} --project`],
|
|
1201
|
+
recovery: {
|
|
1202
|
+
suggested_retry: `pm install ${packageHint} --project`,
|
|
1203
|
+
},
|
|
1204
|
+
});
|
|
1205
|
+
}
|
|
1206
|
+
function buildUnknownCommandError(command) {
|
|
1207
|
+
return new PmCliError(`Unknown command: "${command}".`, EXIT_CODE.USAGE, {
|
|
1208
|
+
code: "unknown_command",
|
|
1209
|
+
required: "Use a command path listed by pm contracts --flags-only --json.",
|
|
1210
|
+
why: "Command contracts are generated from the active core, package, and extension command registry.",
|
|
1211
|
+
examples: ["pm contracts --flags-only --json", "pm --help"],
|
|
1212
|
+
nextSteps: ["Verify spelling and active packages/extensions, then rerun with a known command path."],
|
|
1213
|
+
recovery: {
|
|
1214
|
+
suggested_retry: "pm contracts --flags-only --json",
|
|
1215
|
+
},
|
|
1216
|
+
});
|
|
1217
|
+
}
|
|
1218
|
+
function assertKnownContractsCommand(selection, commandCatalog) {
|
|
1219
|
+
if (!selection.selectedCommand) {
|
|
1220
|
+
return;
|
|
1221
|
+
}
|
|
1132
1222
|
const commandNames = new Set(commandCatalog);
|
|
1133
|
-
if (
|
|
1134
|
-
|
|
1135
|
-
if (namespaceChildren.length > 0) {
|
|
1136
|
-
const displayedNamespaceChildren = namespaceChildren.slice(0, COMMAND_NAMESPACE_DISPLAY_LIMIT);
|
|
1137
|
-
const hiddenNamespaceChildCount = namespaceChildren.length - displayedNamespaceChildren.length;
|
|
1138
|
-
const displayedChildCommandList = hiddenNamespaceChildCount > 0
|
|
1139
|
-
? `${displayedNamespaceChildren.join(", ")}, and ${hiddenNamespaceChildCount} more`
|
|
1140
|
-
: displayedNamespaceChildren.join(", ");
|
|
1141
|
-
const fallbackCandidates = namespaceChildren.slice(0, COMMAND_NAMESPACE_FALLBACK_LIMIT);
|
|
1142
|
-
const childCommandExamples = namespaceChildren
|
|
1143
|
-
.slice(0, 5)
|
|
1144
|
-
.map((command) => `pm contracts --command "${command}" --flags-only --json`);
|
|
1145
|
-
const suggestedChildCommand = namespaceChildren[0];
|
|
1146
|
-
throw new PmCliError(`Command "${options.command}" is a command namespace. Choose a concrete child command: ${displayedChildCommandList}.`, EXIT_CODE.USAGE, {
|
|
1147
|
-
code: "command_namespace",
|
|
1148
|
-
required: "Use a concrete child command path listed under this namespace.",
|
|
1149
|
-
why: "Command groups expose help at the namespace root, but command flag contracts belong to executable child commands.",
|
|
1150
|
-
examples: childCommandExamples,
|
|
1151
|
-
nextSteps: [
|
|
1152
|
-
`Retry with a child command, for example: ${childCommandExamples[0]}`,
|
|
1153
|
-
],
|
|
1154
|
-
recovery: {
|
|
1155
|
-
suggested_retry: `pm contracts --command "${suggestedChildCommand}" --flags-only --json`,
|
|
1156
|
-
fallback_candidates: fallbackCandidates.map((command) => ({
|
|
1157
|
-
source: "command_namespace",
|
|
1158
|
-
command: `pm contracts --command "${command}" --flags-only --json`,
|
|
1159
|
-
reason: `Child command under ${selectedCommand}`,
|
|
1160
|
-
})),
|
|
1161
|
-
},
|
|
1162
|
-
});
|
|
1163
|
-
}
|
|
1164
|
-
const packageHint = PACKAGE_OWNED_COMMAND_INSTALL_HINTS.get(selectedCommand);
|
|
1165
|
-
if (packageHint) {
|
|
1166
|
-
throw new PmCliError(`Unknown command: "${options.command}". Command "${selectedCommand}" is provided by the optional "${packageHint}" package. Run "pm install ${packageHint} --project" and retry.`, EXIT_CODE.USAGE, {
|
|
1167
|
-
code: "unknown_command",
|
|
1168
|
-
required: `Install the optional "${packageHint}" package, or choose a command from pm contracts --flags-only --json.`,
|
|
1169
|
-
why: "Command contracts include core commands plus commands registered by active packages and extensions.",
|
|
1170
|
-
examples: [`pm install ${packageHint} --project`, `pm contracts --command ${selectedCommand} --flags-only --json`],
|
|
1171
|
-
nextSteps: [`Install the optional package first: pm install ${packageHint} --project`],
|
|
1172
|
-
recovery: {
|
|
1173
|
-
suggested_retry: `pm install ${packageHint} --project`,
|
|
1174
|
-
},
|
|
1175
|
-
});
|
|
1176
|
-
}
|
|
1177
|
-
throw new PmCliError(`Unknown command: "${options.command}".`, EXIT_CODE.USAGE, {
|
|
1178
|
-
code: "unknown_command",
|
|
1179
|
-
required: "Use a command path listed by pm contracts --flags-only --json.",
|
|
1180
|
-
why: "Command contracts are generated from the active core, package, and extension command registry.",
|
|
1181
|
-
examples: ["pm contracts --flags-only --json", "pm --help"],
|
|
1182
|
-
nextSteps: ["Verify spelling and active packages/extensions, then rerun with a known command path."],
|
|
1183
|
-
recovery: {
|
|
1184
|
-
suggested_retry: "pm contracts --flags-only --json",
|
|
1185
|
-
},
|
|
1186
|
-
});
|
|
1223
|
+
if (commandNames.has(selection.selectedCommand)) {
|
|
1224
|
+
return;
|
|
1187
1225
|
}
|
|
1188
|
-
const
|
|
1189
|
-
|
|
1226
|
+
const namespaceChildren = commandCatalog.filter((command) => command.startsWith(`${selection.selectedCommand} `));
|
|
1227
|
+
if (namespaceChildren.length > 0) {
|
|
1228
|
+
throw buildCommandNamespaceError(selection.selectedCommand, namespaceChildren);
|
|
1229
|
+
}
|
|
1230
|
+
const packageHint = PACKAGE_OWNED_COMMAND_INSTALL_HINTS.get(selection.selectedCommand);
|
|
1231
|
+
if (packageHint) {
|
|
1232
|
+
throw buildPackageOwnedCommandError(selection.selectedCommand, packageHint);
|
|
1233
|
+
}
|
|
1234
|
+
throw buildUnknownCommandError(selection.selectedCommand);
|
|
1235
|
+
}
|
|
1236
|
+
function resolveContractsActionContext(selection, runtime) {
|
|
1237
|
+
const actionDescriptors = collectContractsActionDescriptors(selection, runtime.mergedExtensionContracts);
|
|
1238
|
+
assertKnownContractsAction(selection, actionDescriptors);
|
|
1239
|
+
const commandCatalog = buildContractsCommandCatalog(actionDescriptors, runtime.mergedExtensionContracts);
|
|
1240
|
+
assertKnownContractsCommand(selection, commandCatalog);
|
|
1241
|
+
const selectedPackageOwnedAction = selection.selectedCommand
|
|
1242
|
+
? PACKAGE_OWNED_COMMAND_ACTIONS.get(selection.selectedCommand)
|
|
1190
1243
|
: undefined;
|
|
1191
|
-
const commandScopedDescriptors = selectedCommand
|
|
1244
|
+
const commandScopedDescriptors = selection.selectedCommand
|
|
1192
1245
|
? actionDescriptors.filter((descriptor) => selectedPackageOwnedAction
|
|
1193
1246
|
? descriptor.action === selectedPackageOwnedAction
|
|
1194
|
-
: actionDescriptorMatchesSelectedCommand(descriptor, selectedCommand))
|
|
1247
|
+
: actionDescriptorMatchesSelectedCommand(descriptor, selection.selectedCommand))
|
|
1195
1248
|
: actionDescriptors;
|
|
1196
|
-
if (selectedCommand &&
|
|
1197
|
-
selectedAction &&
|
|
1198
|
-
!commandScopedDescriptors.some((descriptor) => descriptor.action === selectedAction)) {
|
|
1199
|
-
throw new PmCliError(`Action "${
|
|
1249
|
+
if (selection.selectedCommand &&
|
|
1250
|
+
selection.selectedAction &&
|
|
1251
|
+
!commandScopedDescriptors.some((descriptor) => descriptor.action === selection.selectedAction)) {
|
|
1252
|
+
throw new PmCliError(`Action "${selection.selectedAction}" is not mapped to command "${selection.selectedCommand}" in contracts output.`, EXIT_CODE.USAGE);
|
|
1200
1253
|
}
|
|
1201
|
-
const
|
|
1202
|
-
|
|
1203
|
-
|
|
1254
|
+
const scopedActionDescriptors = selection.selectedAction
|
|
1255
|
+
? commandScopedDescriptors.filter((descriptor) => descriptor.action === selection.selectedAction)
|
|
1256
|
+
: commandScopedDescriptors;
|
|
1257
|
+
const allActionAvailability = [
|
|
1258
|
+
...new Map(scopedActionDescriptors
|
|
1259
|
+
.map((descriptor) => resolveActionAvailability(descriptor, runtime.runtimeProbe))
|
|
1260
|
+
.map((entry) => [
|
|
1261
|
+
/* c8 ignore next -- keyed dedupe by action|path is covered by runtime policy integration tests. */
|
|
1262
|
+
selectedPackageOwnedAction ? entry.action : `${entry.action}|${entry.command_path ?? ""}`,
|
|
1263
|
+
entry,
|
|
1264
|
+
])).values(),
|
|
1265
|
+
];
|
|
1266
|
+
const actionAvailability = selection.runtimeOnly && !selection.selectedAction && !selection.availabilityOnly
|
|
1267
|
+
? allActionAvailability.filter((entry) => entry.invocable)
|
|
1268
|
+
: allActionAvailability;
|
|
1269
|
+
return {
|
|
1270
|
+
actionDescriptors,
|
|
1271
|
+
commandCatalog,
|
|
1272
|
+
commandScopedDescriptors,
|
|
1273
|
+
scopedActionDescriptors,
|
|
1274
|
+
selectedPackageOwnedAction,
|
|
1275
|
+
actionAvailability,
|
|
1276
|
+
actions: [...new Set(actionAvailability.map((entry) => entry.action))],
|
|
1277
|
+
};
|
|
1278
|
+
}
|
|
1279
|
+
function buildSchemaActionSet(schema) {
|
|
1280
|
+
return new Set(extractActionBranches(schema)
|
|
1204
1281
|
.map((entry) => {
|
|
1205
1282
|
const properties = entry.properties;
|
|
1206
1283
|
/* c8 ignore start -- PM_TOOL_PARAMETERS_SCHEMA action branches always carry a properties object; the property-less fallback is validated in schema-level contract tests. */
|
|
@@ -1220,145 +1297,182 @@ export async function runContracts(options, global) {
|
|
|
1220
1297
|
/* c8 ignore stop */
|
|
1221
1298
|
})
|
|
1222
1299
|
.filter((entry) => entry !== null));
|
|
1300
|
+
}
|
|
1301
|
+
function buildMergedContractsSchema(mergedExtensionContracts) {
|
|
1302
|
+
const schema = PM_TOOL_PARAMETERS_SCHEMA;
|
|
1303
|
+
const schemaBranches = extractActionBranches(schema);
|
|
1304
|
+
const schemaActionSet = buildSchemaActionSet(schema);
|
|
1223
1305
|
const extensionBranches = mergedExtensionContracts
|
|
1224
1306
|
.filter((contract) => !schemaActionSet.has(contract.action))
|
|
1225
1307
|
.map((contract) => buildExtensionActionSchemaBranch(contract));
|
|
1226
|
-
|
|
1308
|
+
return extensionBranches.length > 0
|
|
1227
1309
|
? {
|
|
1228
1310
|
...schema,
|
|
1229
1311
|
oneOf: [...schemaBranches, ...extensionBranches],
|
|
1230
1312
|
}
|
|
1231
1313
|
: schema;
|
|
1232
|
-
|
|
1233
|
-
|
|
1234
|
-
|
|
1235
|
-
const
|
|
1236
|
-
|
|
1237
|
-
|
|
1238
|
-
.map((
|
|
1239
|
-
/* c8 ignore next -- keyed dedupe by action|path is covered by runtime policy integration tests. */
|
|
1240
|
-
selectedPackageOwnedAction ? entry.action : `${entry.action}|${entry.command_path ?? ""}`,
|
|
1241
|
-
entry,
|
|
1242
|
-
])).values(),
|
|
1243
|
-
];
|
|
1244
|
-
const actionAvailability = runtimeOnly && !selectedAction && !availabilityOnly
|
|
1245
|
-
? allActionAvailability.filter((entry) => entry.invocable)
|
|
1246
|
-
: allActionAvailability;
|
|
1247
|
-
const actions = [...new Set(actionAvailability.map((entry) => entry.action))];
|
|
1248
|
-
const descriptorActionSet = new Set(actionDescriptors.map((descriptor) => descriptor.action));
|
|
1249
|
-
let filteredSchema = selectedAction
|
|
1250
|
-
? filterSchemaByAction(mergedSchema, selectedAction)
|
|
1251
|
-
: selectedCommand
|
|
1252
|
-
? filterSchemaByActions(mergedSchema, new Set(scopedActionDescriptors.map((descriptor) => descriptor.action)))
|
|
1314
|
+
}
|
|
1315
|
+
function filterContractsSchema(selection, actionContext, mergedSchema) {
|
|
1316
|
+
const descriptorActionSet = new Set(actionContext.actionDescriptors.map((descriptor) => descriptor.action));
|
|
1317
|
+
const filteredSchema = selection.selectedAction
|
|
1318
|
+
? filterSchemaByAction(mergedSchema, selection.selectedAction)
|
|
1319
|
+
: selection.selectedCommand
|
|
1320
|
+
? filterSchemaByActions(mergedSchema, new Set(actionContext.scopedActionDescriptors.map((descriptor) => descriptor.action)))
|
|
1253
1321
|
: filterSchemaByActions(mergedSchema, descriptorActionSet);
|
|
1254
|
-
|
|
1255
|
-
|
|
1256
|
-
|
|
1257
|
-
|
|
1258
|
-
|
|
1259
|
-
|
|
1260
|
-
|
|
1261
|
-
const
|
|
1262
|
-
?
|
|
1263
|
-
:
|
|
1264
|
-
|
|
1265
|
-
|
|
1266
|
-
|
|
1322
|
+
return selection.runtimeOnly && !selection.selectedAction
|
|
1323
|
+
? filterSchemaByActions(filteredSchema, new Set(actionContext.actions))
|
|
1324
|
+
: filteredSchema;
|
|
1325
|
+
}
|
|
1326
|
+
function resolveContractsSchemaContext(selection, runtime, actionContext) {
|
|
1327
|
+
const mergedSchema = buildMergedContractsSchema(runtime.mergedExtensionContracts);
|
|
1328
|
+
const includeSchemaSurface = !selection.flagsOnly && !selection.availabilityOnly;
|
|
1329
|
+
const filteredSchema = includeSchemaSurface
|
|
1330
|
+
? attachCreateRequiredOptionContracts(filterContractsSchema(selection, actionContext, mergedSchema), runtime.createRequiredOptionContracts)
|
|
1331
|
+
: filterContractsSchema(selection, actionContext, mergedSchema);
|
|
1332
|
+
return { mergedSchema, filteredSchema };
|
|
1333
|
+
}
|
|
1334
|
+
function resolveContractsCommands(selection, actionContext) {
|
|
1335
|
+
if (selection.selectedCommand !== undefined) {
|
|
1336
|
+
return [selection.selectedCommand];
|
|
1337
|
+
}
|
|
1338
|
+
if (selection.selectedAction) {
|
|
1339
|
+
return resolveScopedCommandsFromActionDescriptors(actionContext.scopedActionDescriptors, actionContext.commandCatalog);
|
|
1340
|
+
}
|
|
1341
|
+
return actionContext.commandCatalog;
|
|
1342
|
+
}
|
|
1343
|
+
function resolveOutputCommands(selection, commands) {
|
|
1344
|
+
return selection.flagsOnly && selection.selectedCommand === undefined && selection.selectedAction === undefined
|
|
1267
1345
|
? compactCommandAliasSurface(commands)
|
|
1268
1346
|
: commands;
|
|
1269
|
-
|
|
1270
|
-
|
|
1271
|
-
|
|
1272
|
-
|
|
1273
|
-
|
|
1274
|
-
|
|
1275
|
-
|
|
1276
|
-
|
|
1347
|
+
}
|
|
1348
|
+
function resolveExtensionCommandContracts(selection, runtime, outputCommands) {
|
|
1349
|
+
if (selection.selectedCommand) {
|
|
1350
|
+
return runtime.extensionContracts.filter((entry) => splitCommandPathAliases(entry.command).includes(selection.selectedCommand));
|
|
1351
|
+
}
|
|
1352
|
+
if (selection.selectedAction) {
|
|
1353
|
+
const outputCommandSet = new Set(outputCommands);
|
|
1354
|
+
return runtime.extensionContracts.filter((entry) => splitCommandPathAliases(entry.command).some((command) => outputCommandSet.has(command)));
|
|
1355
|
+
}
|
|
1356
|
+
return runtime.extensionContracts;
|
|
1357
|
+
}
|
|
1358
|
+
function createContractsResult(selection, schemaContext, actionContext, outputCommands) {
|
|
1359
|
+
return {
|
|
1277
1360
|
schema_version:
|
|
1278
1361
|
/* c8 ignore next -- schema version/id fallbacks are exercised by schema snapshot tests. */
|
|
1279
|
-
typeof mergedSchema["x-schema-version"] === "string"
|
|
1280
|
-
? mergedSchema["x-schema-version"]
|
|
1362
|
+
typeof schemaContext.mergedSchema["x-schema-version"] === "string"
|
|
1363
|
+
? schemaContext.mergedSchema["x-schema-version"]
|
|
1281
1364
|
: null,
|
|
1282
1365
|
schema_id:
|
|
1283
1366
|
/* c8 ignore next -- schema version/id fallbacks are exercised by schema snapshot tests. */
|
|
1284
|
-
typeof mergedSchema.$id === "string"
|
|
1285
|
-
? mergedSchema.$id
|
|
1367
|
+
typeof schemaContext.mergedSchema.$id === "string"
|
|
1368
|
+
? schemaContext.mergedSchema.$id
|
|
1286
1369
|
: null,
|
|
1287
1370
|
selected: {
|
|
1288
|
-
action: selectedAction ?? null,
|
|
1289
|
-
command: selectedCommand ?? null,
|
|
1290
|
-
schema_only: schemaOnly,
|
|
1291
|
-
flags_only: flagsOnly,
|
|
1292
|
-
availability_only: availabilityOnly,
|
|
1293
|
-
runtime_only: runtimeOnly,
|
|
1294
|
-
command_scoped: selectedCommand !== undefined,
|
|
1371
|
+
action: selection.selectedAction ?? null,
|
|
1372
|
+
command: selection.selectedCommand ?? null,
|
|
1373
|
+
schema_only: selection.schemaOnly,
|
|
1374
|
+
flags_only: selection.flagsOnly,
|
|
1375
|
+
availability_only: selection.availabilityOnly,
|
|
1376
|
+
runtime_only: selection.runtimeOnly,
|
|
1377
|
+
command_scoped: selection.selectedCommand !== undefined,
|
|
1295
1378
|
},
|
|
1296
1379
|
commands: outputCommands,
|
|
1380
|
+
...(!selection.flagsOnly
|
|
1381
|
+
? {
|
|
1382
|
+
actions: actionContext.actions,
|
|
1383
|
+
action_availability: actionContext.actionAvailability,
|
|
1384
|
+
}
|
|
1385
|
+
: {}),
|
|
1297
1386
|
};
|
|
1298
|
-
|
|
1299
|
-
|
|
1300
|
-
|
|
1301
|
-
|
|
1302
|
-
|
|
1303
|
-
|
|
1304
|
-
|
|
1305
|
-
|
|
1306
|
-
|
|
1307
|
-
|
|
1308
|
-
|
|
1309
|
-
|
|
1310
|
-
|
|
1311
|
-
|
|
1312
|
-
|
|
1313
|
-
|
|
1314
|
-
|
|
1315
|
-
|
|
1316
|
-
|
|
1317
|
-
|
|
1318
|
-
|
|
1319
|
-
|
|
1320
|
-
|
|
1321
|
-
|
|
1322
|
-
|
|
1323
|
-
|
|
1324
|
-
|
|
1325
|
-
|
|
1326
|
-
|
|
1327
|
-
if (
|
|
1328
|
-
|
|
1329
|
-
result.action_availability = actionAvailability;
|
|
1387
|
+
}
|
|
1388
|
+
function attachRuntimeContractsResult(result, runtime) {
|
|
1389
|
+
result.runtime_schema = {
|
|
1390
|
+
statuses: runtime.statusRegistry.definitions.map((definition) => definition.id),
|
|
1391
|
+
open_status: runtime.statusRegistry.open_status,
|
|
1392
|
+
close_status: runtime.statusRegistry.close_status,
|
|
1393
|
+
canceled_status: runtime.statusRegistry.canceled_status,
|
|
1394
|
+
types: [...runtime.typeRegistry.types],
|
|
1395
|
+
fields_by_command: Object.fromEntries([...runtime.runtimeFieldRegistry.command_to_fields.entries()].map(([command, definitions]) => [
|
|
1396
|
+
command,
|
|
1397
|
+
[...new Set(definitions.map((definition) => `--${definition.cli_flag}`))].sort((left, right) => left.localeCompare(right)),
|
|
1398
|
+
])),
|
|
1399
|
+
};
|
|
1400
|
+
result.extension_contracts = {
|
|
1401
|
+
capabilities: [...PM_EXTENSION_CAPABILITY_CONTRACTS],
|
|
1402
|
+
services: [...PM_EXTENSION_SERVICE_NAME_CONTRACTS],
|
|
1403
|
+
policy_modes: [...PM_EXTENSION_POLICY_MODE_CONTRACTS],
|
|
1404
|
+
policy_surfaces: [...PM_EXTENSION_POLICY_SURFACE_CONTRACTS],
|
|
1405
|
+
trust_modes: [...PM_EXTENSION_TRUST_MODE_CONTRACTS],
|
|
1406
|
+
sandbox_profiles: [...PM_EXTENSION_SANDBOX_PROFILE_CONTRACTS],
|
|
1407
|
+
manifest_versions: [1, 2],
|
|
1408
|
+
compatibility: {
|
|
1409
|
+
current: "v2",
|
|
1410
|
+
previous: ["v1"],
|
|
1411
|
+
breaking_strategy: "versioned_breaking",
|
|
1412
|
+
},
|
|
1413
|
+
};
|
|
1414
|
+
}
|
|
1415
|
+
function attachSchemaContractsResult(result, selection, schemaContext, extensionCommandContracts) {
|
|
1416
|
+
if (selection.flagsOnly || selection.availabilityOnly) {
|
|
1417
|
+
return;
|
|
1330
1418
|
}
|
|
1331
|
-
if (
|
|
1332
|
-
result.schema = filteredSchema;
|
|
1419
|
+
if (!selection.omitUnfilteredSchema) {
|
|
1420
|
+
result.schema = schemaContext.filteredSchema;
|
|
1333
1421
|
result.extension_commands = extensionCommandContracts;
|
|
1422
|
+
return;
|
|
1334
1423
|
}
|
|
1335
|
-
|
|
1336
|
-
|
|
1337
|
-
|
|
1424
|
+
result.schema_omitted_reason = "unfiltered_default_brief";
|
|
1425
|
+
result.extension_commands = extensionCommandContracts;
|
|
1426
|
+
}
|
|
1427
|
+
function attachFlagContractsResult(result, selection, runtime, outputCommands, commandAliases) {
|
|
1428
|
+
if (selection.schemaOnly || selection.availabilityOnly) {
|
|
1429
|
+
return;
|
|
1338
1430
|
}
|
|
1339
|
-
if (!
|
|
1340
|
-
|
|
1341
|
-
result.command_flags = buildCommandFlagSurface(outputCommands, extensionFlagMap, runtimeFieldFlagMap);
|
|
1342
|
-
}
|
|
1343
|
-
else {
|
|
1344
|
-
result.command_flags_omitted_reason = "unfiltered_default_brief";
|
|
1345
|
-
}
|
|
1346
|
-
if (commandAliases.length > 0) {
|
|
1347
|
-
result.command_aliases = commandAliases;
|
|
1348
|
-
}
|
|
1431
|
+
if (!selection.omitUnfilteredCommandFlags) {
|
|
1432
|
+
result.command_flags = buildCommandFlagSurface(outputCommands, runtime.extensionFlagMap, runtime.runtimeFieldFlagMap);
|
|
1349
1433
|
}
|
|
1350
|
-
|
|
1351
|
-
|
|
1352
|
-
|
|
1353
|
-
|
|
1354
|
-
|
|
1355
|
-
|
|
1356
|
-
|
|
1434
|
+
else {
|
|
1435
|
+
result.command_flags_omitted_reason = "unfiltered_default_brief";
|
|
1436
|
+
}
|
|
1437
|
+
if (commandAliases.length > 0) {
|
|
1438
|
+
result.command_aliases = commandAliases;
|
|
1439
|
+
}
|
|
1440
|
+
}
|
|
1441
|
+
function attachCommanderAliasContractsResult(result, selection) {
|
|
1442
|
+
if (selection.schemaOnly || selection.flagsOnly || selection.availabilityOnly) {
|
|
1443
|
+
return;
|
|
1357
1444
|
}
|
|
1445
|
+
if (!selection.omitUnfilteredCommanderAliases) {
|
|
1446
|
+
result.commander_aliases = buildCommanderAliasSurface();
|
|
1447
|
+
return;
|
|
1448
|
+
}
|
|
1449
|
+
result.commander_aliases_omitted_reason = "unfiltered_default_brief";
|
|
1450
|
+
}
|
|
1451
|
+
/**
|
|
1452
|
+
* Implements run contracts for the public runtime surface of this module.
|
|
1453
|
+
*/
|
|
1454
|
+
export async function runContracts(options, global) {
|
|
1455
|
+
const selection = resolveContractsSelection(options);
|
|
1456
|
+
assertSingleContractsProjection(selection);
|
|
1457
|
+
const pmRoot = resolvePmRoot(process.cwd(), global.path);
|
|
1458
|
+
const runtime = await resolveContractsRuntimeContext(global, pmRoot);
|
|
1459
|
+
const actionContext = resolveContractsActionContext(selection, runtime);
|
|
1460
|
+
const schemaContext = resolveContractsSchemaContext(selection, runtime, actionContext);
|
|
1461
|
+
const commands = resolveContractsCommands(selection, actionContext);
|
|
1462
|
+
const outputCommands = resolveOutputCommands(selection, commands);
|
|
1463
|
+
const commandAliases = buildCommandAliasSurface(commands);
|
|
1464
|
+
const extensionCommandContracts = resolveExtensionCommandContracts(selection, runtime, outputCommands);
|
|
1465
|
+
const result = createContractsResult(selection, schemaContext, actionContext, outputCommands);
|
|
1466
|
+
if (!(selection.flagsOnly && !selection.fullOutput)) {
|
|
1467
|
+
attachRuntimeContractsResult(result, runtime);
|
|
1468
|
+
}
|
|
1469
|
+
attachSchemaContractsResult(result, selection, schemaContext, extensionCommandContracts);
|
|
1470
|
+
attachFlagContractsResult(result, selection, runtime, outputCommands, commandAliases);
|
|
1471
|
+
attachCommanderAliasContractsResult(result, selection);
|
|
1358
1472
|
// pm-4os2: snapshot the static MCP tool surface in the full projection so
|
|
1359
1473
|
// `pnpm contracts:check` (CI static gate) fails on unintended inputSchema
|
|
1360
1474
|
// drift in src/mcp/tool-definitions.ts.
|
|
1361
|
-
if (fullOutput && !schemaOnly && !flagsOnly && !availabilityOnly) {
|
|
1475
|
+
if (selection.fullOutput && !selection.schemaOnly && !selection.flagsOnly && !selection.availabilityOnly) {
|
|
1362
1476
|
result.mcp_tools = buildMcpToolContracts();
|
|
1363
1477
|
}
|
|
1364
1478
|
return result;
|
|
@@ -1390,4 +1504,4 @@ export const _testOnlyContractsCommand = {
|
|
|
1390
1504
|
toRuntimeShortFlagToken,
|
|
1391
1505
|
};
|
|
1392
1506
|
//# sourceMappingURL=contracts.js.map
|
|
1393
|
-
//# debugId=
|
|
1507
|
+
//# debugId=24d15738-45bd-5dd2-95e1-699f9c6061bd
|