@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
|
@@ -7,17 +7,17 @@ import {
|
|
|
7
7
|
resolveSearchScoreThreshold,
|
|
8
8
|
resolveSearchTuning,
|
|
9
9
|
runSearch
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-PULUSQAV.js";
|
|
11
11
|
import "./chunk-VPLDQMW2.js";
|
|
12
|
-
import "./chunk-
|
|
13
|
-
import "./chunk-
|
|
12
|
+
import "./chunk-XRYSCRZR.js";
|
|
13
|
+
import "./chunk-ZFTKYWIF.js";
|
|
14
14
|
import "./chunk-R23CSHGI.js";
|
|
15
|
-
import "./chunk-
|
|
16
|
-
import "./chunk-
|
|
17
|
-
import "./chunk-
|
|
18
|
-
import "./chunk-
|
|
19
|
-
import "./chunk-
|
|
20
|
-
import "./chunk-
|
|
15
|
+
import "./chunk-YVKZ3ANP.js";
|
|
16
|
+
import "./chunk-4PFVUUYV.js";
|
|
17
|
+
import "./chunk-6KRFL33E.js";
|
|
18
|
+
import "./chunk-3W2HJKJX.js";
|
|
19
|
+
import "./chunk-AJHYQCBJ.js";
|
|
20
|
+
import "./chunk-KHVGM5CS.js";
|
|
21
21
|
export {
|
|
22
22
|
_testOnlySearchCommand,
|
|
23
23
|
classifyImplicitSemanticFallbackReason,
|
|
@@ -28,4 +28,4 @@ export {
|
|
|
28
28
|
resolveSearchTuning,
|
|
29
29
|
runSearch
|
|
30
30
|
};
|
|
31
|
-
//# sourceMappingURL=search-
|
|
31
|
+
//# sourceMappingURL=search-R227JOL6.js.map
|
|
@@ -5,16 +5,16 @@ import {
|
|
|
5
5
|
computeMetadataCoverage,
|
|
6
6
|
groupItemsByDimension,
|
|
7
7
|
lifecycleClassifierFromStatusRegistry
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-YVKZ3ANP.js";
|
|
9
9
|
import {
|
|
10
10
|
enforceHistoryStreamPolicyForItems,
|
|
11
11
|
listAllFrontMatterLight,
|
|
12
12
|
listAllFrontMatterWithBody
|
|
13
|
-
} from "./chunk-
|
|
14
|
-
import "./chunk-
|
|
13
|
+
} from "./chunk-6KRFL33E.js";
|
|
14
|
+
import "./chunk-3W2HJKJX.js";
|
|
15
15
|
import {
|
|
16
16
|
nowIso
|
|
17
|
-
} from "./chunk-
|
|
17
|
+
} from "./chunk-AJHYQCBJ.js";
|
|
18
18
|
import {
|
|
19
19
|
EXIT_CODE,
|
|
20
20
|
PmCliError,
|
|
@@ -26,7 +26,7 @@ import {
|
|
|
26
26
|
resolvePmRoot,
|
|
27
27
|
resolveRuntimeStatusRegistry,
|
|
28
28
|
runActiveOnReadHooks
|
|
29
|
-
} from "./chunk-
|
|
29
|
+
} from "./chunk-KHVGM5CS.js";
|
|
30
30
|
|
|
31
31
|
// dist/cli/commands/stats.js
|
|
32
32
|
import fs from "node:fs/promises";
|
|
@@ -244,4 +244,4 @@ export {
|
|
|
244
244
|
_testOnly,
|
|
245
245
|
runStats
|
|
246
246
|
};
|
|
247
|
-
//# sourceMappingURL=stats-
|
|
247
|
+
//# sourceMappingURL=stats-FAG7COEH.js.map
|
|
@@ -7,16 +7,16 @@ import {
|
|
|
7
7
|
computeMetadataCoverage,
|
|
8
8
|
groupItemsByDimension,
|
|
9
9
|
lifecycleClassifierFromStatusRegistry
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-QCDTQCMW.js";
|
|
11
11
|
import {
|
|
12
12
|
enforceHistoryStreamPolicyForItems,
|
|
13
13
|
listAllFrontMatterLight,
|
|
14
14
|
listAllFrontMatterWithBody
|
|
15
|
-
} from "./chunk-
|
|
16
|
-
import "./chunk-
|
|
15
|
+
} from "./chunk-4WB6S4YX.js";
|
|
16
|
+
import "./chunk-YSDFIY7N.js";
|
|
17
17
|
import {
|
|
18
18
|
nowIso
|
|
19
|
-
} from "./chunk-
|
|
19
|
+
} from "./chunk-CXR3CMBQ.js";
|
|
20
20
|
import {
|
|
21
21
|
EXIT_CODE,
|
|
22
22
|
PmCliError,
|
|
@@ -28,7 +28,7 @@ import {
|
|
|
28
28
|
resolvePmRoot,
|
|
29
29
|
resolveRuntimeStatusRegistry,
|
|
30
30
|
runActiveOnReadHooks
|
|
31
|
-
} from "./chunk-
|
|
31
|
+
} from "./chunk-L4SLHV6G.js";
|
|
32
32
|
|
|
33
33
|
// dist/cli/commands/stats.js
|
|
34
34
|
import fs from "node:fs/promises";
|
|
@@ -232,6 +232,6 @@ export {
|
|
|
232
232
|
_testOnly,
|
|
233
233
|
runStats
|
|
234
234
|
};
|
|
235
|
-
//# sourceMappingURL=stats-
|
|
235
|
+
//# sourceMappingURL=stats-MCK7PLYS.js.map
|
|
236
236
|
|
|
237
237
|
//# debugId=67063306-59b8-53f5-8715-fd2e7f8705dd
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import {
|
|
2
2
|
flushTelemetryQueueNow
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-ER4ME5U2.js";
|
|
4
4
|
import {
|
|
5
5
|
nowIso
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-AJHYQCBJ.js";
|
|
7
7
|
import {
|
|
8
8
|
EXIT_CODE,
|
|
9
9
|
PmCliError,
|
|
@@ -12,7 +12,7 @@ import {
|
|
|
12
12
|
readSettings,
|
|
13
13
|
resolveGlobalPmRoot,
|
|
14
14
|
writeSettings
|
|
15
|
-
} from "./chunk-
|
|
15
|
+
} from "./chunk-KHVGM5CS.js";
|
|
16
16
|
|
|
17
17
|
// dist/cli/commands/telemetry.js
|
|
18
18
|
import fs from "node:fs/promises";
|
|
@@ -20,7 +20,7 @@ import path from "node:path";
|
|
|
20
20
|
!(function() {
|
|
21
21
|
try {
|
|
22
22
|
var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}, n = new e.Error().stack;
|
|
23
|
-
n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "
|
|
23
|
+
n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "73a9de9c-dca7-5204-98b7-0b422515da56");
|
|
24
24
|
} catch (e2) {
|
|
25
25
|
}
|
|
26
26
|
})();
|
|
@@ -34,6 +34,83 @@ function nearestRankPercentile(sortedAscending, fraction) {
|
|
|
34
34
|
const index = Math.min(sortedAscending.length - 1, Math.max(0, rank - 1));
|
|
35
35
|
return sortedAscending[index];
|
|
36
36
|
}
|
|
37
|
+
function normalizeTelemetryQueueEntry(entry) {
|
|
38
|
+
const command = typeof entry.event.command === "string" && entry.event.command.trim().length > 0 ? entry.event.command : "<unknown>";
|
|
39
|
+
const eventType = typeof entry.event.event_type === "string" && entry.event.event_type.trim().length > 0 ? entry.event.event_type : "unknown";
|
|
40
|
+
const eventSchemaVersion = typeof entry.event.schema_version === "number" && Number.isFinite(entry.event.schema_version) ? Math.trunc(entry.event.schema_version) : void 0;
|
|
41
|
+
const clientSchemaVersion = typeof entry.client_schema_version === "number" && Number.isFinite(entry.client_schema_version) ? Math.trunc(entry.client_schema_version) : void 0;
|
|
42
|
+
return { command, eventType, eventSchemaVersion, clientSchemaVersion };
|
|
43
|
+
}
|
|
44
|
+
function createTelemetryStatsAccumulator() {
|
|
45
|
+
return {
|
|
46
|
+
count: 0,
|
|
47
|
+
max_attempts: 0,
|
|
48
|
+
event_type_counts: {},
|
|
49
|
+
event_schema_versions: /* @__PURE__ */ new Set(),
|
|
50
|
+
client_schema_versions: /* @__PURE__ */ new Set(),
|
|
51
|
+
finish_durations_ms: [],
|
|
52
|
+
ok_count: 0,
|
|
53
|
+
error_count: 0,
|
|
54
|
+
resolution_counts: {}
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
function recordTelemetryFinishPayload(current, payload) {
|
|
58
|
+
const durationMs = typeof payload?.duration_ms === "number" && Number.isFinite(payload.duration_ms) ? payload.duration_ms : void 0;
|
|
59
|
+
if (durationMs !== void 0) {
|
|
60
|
+
current.finish_durations_ms.push(durationMs);
|
|
61
|
+
}
|
|
62
|
+
if (payload?.ok === true) {
|
|
63
|
+
current.ok_count += 1;
|
|
64
|
+
} else {
|
|
65
|
+
current.error_count += 1;
|
|
66
|
+
}
|
|
67
|
+
const resolution = typeof payload?.command_resolution === "string" && payload.command_resolution.trim().length > 0 ? payload.command_resolution : void 0;
|
|
68
|
+
if (resolution !== void 0) {
|
|
69
|
+
current.resolution_counts[resolution] = (current.resolution_counts[resolution] ?? 0) + 1;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
function recordTelemetryQueueEntry(grouped, entry) {
|
|
73
|
+
const normalized = normalizeTelemetryQueueEntry(entry);
|
|
74
|
+
const current = grouped.get(normalized.command) ?? createTelemetryStatsAccumulator();
|
|
75
|
+
const attempts = Number.isFinite(entry.attempts) ? Math.max(0, Math.trunc(entry.attempts)) : 0;
|
|
76
|
+
current.count += 1;
|
|
77
|
+
current.max_attempts = Math.max(current.max_attempts, attempts);
|
|
78
|
+
current.event_type_counts[normalized.eventType] = (current.event_type_counts[normalized.eventType] ?? 0) + 1;
|
|
79
|
+
if (normalized.eventSchemaVersion !== void 0) {
|
|
80
|
+
current.event_schema_versions.add(normalized.eventSchemaVersion);
|
|
81
|
+
}
|
|
82
|
+
if (normalized.clientSchemaVersion !== void 0) {
|
|
83
|
+
current.client_schema_versions.add(normalized.clientSchemaVersion);
|
|
84
|
+
}
|
|
85
|
+
if (normalized.eventType === "command_finish") {
|
|
86
|
+
recordTelemetryFinishPayload(current, entry.event.payload);
|
|
87
|
+
}
|
|
88
|
+
grouped.set(normalized.command, current);
|
|
89
|
+
}
|
|
90
|
+
function buildTelemetryStatsBucket(command, value) {
|
|
91
|
+
const finishCount = value.ok_count + value.error_count;
|
|
92
|
+
const sortedDurations = [...value.finish_durations_ms].sort((left, right) => left - right);
|
|
93
|
+
const resolutionEntries = Object.entries(value.resolution_counts).sort((left, right) => left[0].localeCompare(right[0]));
|
|
94
|
+
return {
|
|
95
|
+
command,
|
|
96
|
+
count: value.count,
|
|
97
|
+
event_type_counts: Object.fromEntries(Object.entries(value.event_type_counts).sort((left, right) => left[0].localeCompare(right[0]))),
|
|
98
|
+
max_attempts: value.max_attempts,
|
|
99
|
+
event_schema_versions: [...value.event_schema_versions].sort((left, right) => left - right),
|
|
100
|
+
client_schema_versions: [...value.client_schema_versions].sort((left, right) => left - right),
|
|
101
|
+
...sortedDurations.length > 0 ? {
|
|
102
|
+
duration_p50_ms: nearestRankPercentile(sortedDurations, 0.5),
|
|
103
|
+
duration_p95_ms: nearestRankPercentile(sortedDurations, 0.95),
|
|
104
|
+
duration_max_ms: sortedDurations[sortedDurations.length - 1]
|
|
105
|
+
} : {},
|
|
106
|
+
...finishCount > 0 ? {
|
|
107
|
+
ok_count: value.ok_count,
|
|
108
|
+
error_count: value.error_count,
|
|
109
|
+
error_rate: value.error_count / finishCount
|
|
110
|
+
} : {},
|
|
111
|
+
...resolutionEntries.length > 0 ? { command_resolution_counts: Object.fromEntries(resolutionEntries) } : {}
|
|
112
|
+
};
|
|
113
|
+
}
|
|
37
114
|
function normalizeTelemetrySubcommand(value) {
|
|
38
115
|
const normalized = (value ?? "status").trim().toLowerCase();
|
|
39
116
|
if (TELEMETRY_SUBCOMMANDS.includes(normalized)) {
|
|
@@ -144,72 +221,9 @@ async function buildTelemetryStatusSummary(globalPmRoot) {
|
|
|
144
221
|
function buildTelemetryStatsBuckets(entries) {
|
|
145
222
|
const grouped = /* @__PURE__ */ new Map();
|
|
146
223
|
for (const entry of entries) {
|
|
147
|
-
|
|
148
|
-
const eventType = typeof entry.event.event_type === "string" && entry.event.event_type.trim().length > 0 ? entry.event.event_type : "unknown";
|
|
149
|
-
const eventSchemaVersion = typeof entry.event.schema_version === "number" && Number.isFinite(entry.event.schema_version) ? Math.trunc(entry.event.schema_version) : void 0;
|
|
150
|
-
const clientSchemaVersion = typeof entry.client_schema_version === "number" && Number.isFinite(entry.client_schema_version) ? Math.trunc(entry.client_schema_version) : void 0;
|
|
151
|
-
const current = grouped.get(command) ?? {
|
|
152
|
-
count: 0,
|
|
153
|
-
max_attempts: 0,
|
|
154
|
-
event_type_counts: {},
|
|
155
|
-
event_schema_versions: /* @__PURE__ */ new Set(),
|
|
156
|
-
client_schema_versions: /* @__PURE__ */ new Set(),
|
|
157
|
-
finish_durations_ms: [],
|
|
158
|
-
ok_count: 0,
|
|
159
|
-
error_count: 0,
|
|
160
|
-
resolution_counts: {}
|
|
161
|
-
};
|
|
162
|
-
current.count += 1;
|
|
163
|
-
current.max_attempts = Math.max(current.max_attempts, Math.max(0, Math.trunc(entry.attempts)));
|
|
164
|
-
current.event_type_counts[eventType] = (current.event_type_counts[eventType] ?? 0) + 1;
|
|
165
|
-
if (eventSchemaVersion !== void 0) {
|
|
166
|
-
current.event_schema_versions.add(eventSchemaVersion);
|
|
167
|
-
}
|
|
168
|
-
if (clientSchemaVersion !== void 0) {
|
|
169
|
-
current.client_schema_versions.add(clientSchemaVersion);
|
|
170
|
-
}
|
|
171
|
-
if (eventType === "command_finish") {
|
|
172
|
-
const payload = entry.event.payload;
|
|
173
|
-
const durationMs = typeof payload?.duration_ms === "number" && Number.isFinite(payload.duration_ms) ? payload.duration_ms : void 0;
|
|
174
|
-
if (durationMs !== void 0) {
|
|
175
|
-
current.finish_durations_ms.push(durationMs);
|
|
176
|
-
}
|
|
177
|
-
if (payload?.ok === true) {
|
|
178
|
-
current.ok_count += 1;
|
|
179
|
-
} else {
|
|
180
|
-
current.error_count += 1;
|
|
181
|
-
}
|
|
182
|
-
const resolution = typeof payload?.command_resolution === "string" && payload.command_resolution.trim().length > 0 ? payload.command_resolution : void 0;
|
|
183
|
-
if (resolution !== void 0) {
|
|
184
|
-
current.resolution_counts[resolution] = (current.resolution_counts[resolution] ?? 0) + 1;
|
|
185
|
-
}
|
|
186
|
-
}
|
|
187
|
-
grouped.set(command, current);
|
|
224
|
+
recordTelemetryQueueEntry(grouped, entry);
|
|
188
225
|
}
|
|
189
|
-
return [...grouped.entries()].map(([command, value]) =>
|
|
190
|
-
const finishCount = value.ok_count + value.error_count;
|
|
191
|
-
const sortedDurations = [...value.finish_durations_ms].sort((left, right) => left - right);
|
|
192
|
-
const resolutionEntries = Object.entries(value.resolution_counts).sort((left, right) => left[0].localeCompare(right[0]));
|
|
193
|
-
return {
|
|
194
|
-
command,
|
|
195
|
-
count: value.count,
|
|
196
|
-
event_type_counts: Object.fromEntries(Object.entries(value.event_type_counts).sort((left, right) => left[0].localeCompare(right[0]))),
|
|
197
|
-
max_attempts: value.max_attempts,
|
|
198
|
-
event_schema_versions: [...value.event_schema_versions].sort((left, right) => left - right),
|
|
199
|
-
client_schema_versions: [...value.client_schema_versions].sort((left, right) => left - right),
|
|
200
|
-
...sortedDurations.length > 0 ? {
|
|
201
|
-
duration_p50_ms: nearestRankPercentile(sortedDurations, 0.5),
|
|
202
|
-
duration_p95_ms: nearestRankPercentile(sortedDurations, 0.95),
|
|
203
|
-
duration_max_ms: sortedDurations[sortedDurations.length - 1]
|
|
204
|
-
} : {},
|
|
205
|
-
...finishCount > 0 ? {
|
|
206
|
-
ok_count: value.ok_count,
|
|
207
|
-
error_count: value.error_count,
|
|
208
|
-
error_rate: value.error_count / finishCount
|
|
209
|
-
} : {},
|
|
210
|
-
...resolutionEntries.length > 0 ? { command_resolution_counts: Object.fromEntries(resolutionEntries) } : {}
|
|
211
|
-
};
|
|
212
|
-
}).sort((left, right) => right.count - left.count || left.command.localeCompare(right.command));
|
|
226
|
+
return [...grouped.entries()].map(([command, value]) => buildTelemetryStatsBucket(command, value)).sort((left, right) => right.count - left.count || left.command.localeCompare(right.command));
|
|
213
227
|
}
|
|
214
228
|
async function runTelemetry(options, _global) {
|
|
215
229
|
void _global;
|
|
@@ -289,4 +303,4 @@ export {
|
|
|
289
303
|
TELEMETRY_SUBCOMMANDS,
|
|
290
304
|
runTelemetry
|
|
291
305
|
};
|
|
292
|
-
//# sourceMappingURL=telemetry-
|
|
306
|
+
//# sourceMappingURL=telemetry-DRPDZMAO.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../../../../cli/commands/telemetry.ts"],
|
|
4
|
+
"sourcesContent": ["/**\n * @module cli/commands/telemetry\n *\n * Implements the pm telemetry command surface and its agent-facing runtime behavior.\n */\nimport fs from \"node:fs/promises\";\nimport path from \"node:path\";\nimport { pathExists, readFileIfExists } from \"../../core/fs/fs-utils.js\";\nimport { EXIT_CODE } from \"../../core/shared/constants.js\";\nimport type { GlobalOptions } from \"../../core/shared/command-types.js\";\nimport { PmCliError } from \"../../core/shared/errors.js\";\nimport { nowIso } from \"../../core/shared/time.js\";\nimport { resolveGlobalPmRoot } from \"../../core/store/paths.js\";\nimport { readSettings, writeSettings } from \"../../core/store/settings.js\";\nimport { flushTelemetryQueueNow } from \"../../core/telemetry/runtime.js\";\n\nconst TELEMETRY_QUEUE_RELATIVE_PATH = path.join(\"runtime\", \"telemetry\", \"events.jsonl\");\nconst TELEMETRY_STATE_RELATIVE_PATH = path.join(\"runtime\", \"telemetry\", \"state.json\");\nconst TELEMETRY_RUNTIME_RELATIVE_PATH = path.join(\"runtime\", \"telemetry\");\nconst DEFAULT_STATS_LIMIT = 20;\n\nexport const TELEMETRY_SUBCOMMANDS = [\"status\", \"flush\", \"stats\", \"clear\"] as const;\n/**\n * Restricts telemetry subcommand values accepted by command, SDK, and storage contracts.\n */\nexport type TelemetrySubcommand = (typeof TELEMETRY_SUBCOMMANDS)[number];\n\ninterface TelemetryRuntimeStateRecord {\n endpoint?: string;\n queue_entries?: number;\n last_attempted_flush_at?: string;\n last_successful_flush_at?: string;\n last_failed_flush_at?: string;\n last_failed_flush_error?: string;\n}\n\ninterface QueuedTelemetryEventRecord {\n attempts: number;\n client_schema_version?: number;\n event: {\n event_id?: string;\n event_type?: string;\n schema_version?: number;\n command?: string;\n payload?: Record<string, unknown>;\n };\n}\n\ninterface ParsedTelemetryQueue {\n rows_total: number;\n valid_entries: number;\n invalid_rows: number;\n entries: QueuedTelemetryEventRecord[];\n}\n\ninterface TelemetryStatusSummary {\n enabled: boolean;\n endpoint: string;\n queue_path: string;\n state_path: string;\n queue_rows_total: number;\n queue_entries: number;\n queue_invalid_rows: number;\n queue_size_bytes: number;\n last_attempted_flush_at: string | null;\n last_successful_flush_at: string | null;\n last_failed_flush_at: string | null;\n last_failed_flush_error: string | null;\n}\n\n/**\n * Documents the telemetry command options payload exchanged by command, SDK, and package integrations.\n */\nexport interface TelemetryCommandOptions {\n subcommand?: string;\n limit?: string | number;\n}\n\ninterface TelemetryStatsBucket {\n command: string;\n count: number;\n event_type_counts: Record<string, number>;\n max_attempts: number;\n event_schema_versions: number[];\n client_schema_versions: number[];\n /**\n * Latency percentiles (nearest-rank) over `duration_ms` from the bucket's\n * `command_finish` events. Present only when at least one finish event carries\n * a finite `duration_ms`; `command_start`/`command_error` events are excluded.\n */\n duration_p50_ms?: number;\n duration_p95_ms?: number;\n duration_max_ms?: number;\n /**\n * Success/failure tally derived from `command_finish` payload `ok`. A finish\n * event whose `ok` is missing or not strictly `true` is counted as an error\n * (conservative). Present only when the bucket has at least one finish event;\n * `ok_count + error_count` equals that finish-event count.\n */\n ok_count?: number;\n error_count?: number;\n error_rate?: number;\n /** Distribution of `command_resolution` over `command_finish` events; present only when non-empty. */\n command_resolution_counts?: Record<string, number>;\n}\n\ninterface TelemetryStatsBucketAccumulator {\n count: number;\n max_attempts: number;\n event_type_counts: Record<string, number>;\n event_schema_versions: Set<number>;\n client_schema_versions: Set<number>;\n finish_durations_ms: number[];\n ok_count: number;\n error_count: number;\n resolution_counts: Record<string, number>;\n}\n\ninterface NormalizedTelemetryQueueEntry {\n command: string;\n eventType: string;\n eventSchemaVersion: number | undefined;\n clientSchemaVersion: number | undefined;\n}\n\n/**\n * Returns the nearest-rank percentile of an ascending-sorted, non-empty array.\n *\n * Uses the nearest-rank method (rank = ceil(fraction × n), 1-based, clamped into\n * range) so the result is always an observed sample value with no interpolation.\n */\nfunction nearestRankPercentile(sortedAscending: number[], fraction: number): number {\n const rank = Math.ceil(fraction * sortedAscending.length);\n const index = Math.min(sortedAscending.length - 1, Math.max(0, rank - 1));\n return sortedAscending[index];\n}\n\nfunction normalizeTelemetryQueueEntry(entry: QueuedTelemetryEventRecord): NormalizedTelemetryQueueEntry {\n const command = typeof entry.event.command === \"string\" && entry.event.command.trim().length > 0\n ? entry.event.command\n : \"<unknown>\";\n const eventType = typeof entry.event.event_type === \"string\" && entry.event.event_type.trim().length > 0\n ? entry.event.event_type\n : \"unknown\";\n const eventSchemaVersion = typeof entry.event.schema_version === \"number\" && Number.isFinite(entry.event.schema_version)\n ? Math.trunc(entry.event.schema_version)\n : undefined;\n const clientSchemaVersion =\n typeof entry.client_schema_version === \"number\" && Number.isFinite(entry.client_schema_version)\n ? Math.trunc(entry.client_schema_version)\n : undefined;\n return { command, eventType, eventSchemaVersion, clientSchemaVersion };\n}\n\nfunction createTelemetryStatsAccumulator(): TelemetryStatsBucketAccumulator {\n return {\n count: 0,\n max_attempts: 0,\n event_type_counts: {},\n event_schema_versions: new Set<number>(),\n client_schema_versions: new Set<number>(),\n finish_durations_ms: [],\n ok_count: 0,\n error_count: 0,\n resolution_counts: {},\n };\n}\n\nfunction recordTelemetryFinishPayload(current: TelemetryStatsBucketAccumulator, payload: Record<string, unknown> | undefined): void {\n const durationMs = typeof payload?.duration_ms === \"number\" && Number.isFinite(payload.duration_ms)\n ? payload.duration_ms\n : undefined;\n if (durationMs !== undefined) {\n current.finish_durations_ms.push(durationMs);\n }\n if (payload?.ok === true) {\n current.ok_count += 1;\n } else {\n current.error_count += 1;\n }\n const resolution = typeof payload?.command_resolution === \"string\" && payload.command_resolution.trim().length > 0\n ? payload.command_resolution\n : undefined;\n if (resolution !== undefined) {\n current.resolution_counts[resolution] = (current.resolution_counts[resolution] ?? 0) + 1;\n }\n}\n\nfunction recordTelemetryQueueEntry(\n grouped: Map<string, TelemetryStatsBucketAccumulator>,\n entry: QueuedTelemetryEventRecord,\n): void {\n const normalized = normalizeTelemetryQueueEntry(entry);\n const current = grouped.get(normalized.command) ?? createTelemetryStatsAccumulator();\n const attempts = Number.isFinite(entry.attempts) ? Math.max(0, Math.trunc(entry.attempts)) : 0;\n current.count += 1;\n current.max_attempts = Math.max(current.max_attempts, attempts);\n current.event_type_counts[normalized.eventType] = (current.event_type_counts[normalized.eventType] ?? 0) + 1;\n if (normalized.eventSchemaVersion !== undefined) {\n current.event_schema_versions.add(normalized.eventSchemaVersion);\n }\n if (normalized.clientSchemaVersion !== undefined) {\n current.client_schema_versions.add(normalized.clientSchemaVersion);\n }\n if (normalized.eventType === \"command_finish\") {\n recordTelemetryFinishPayload(current, entry.event.payload);\n }\n grouped.set(normalized.command, current);\n}\n\nfunction buildTelemetryStatsBucket(command: string, value: TelemetryStatsBucketAccumulator): TelemetryStatsBucket {\n const finishCount = value.ok_count + value.error_count;\n const sortedDurations = [...value.finish_durations_ms].sort((left, right) => left - right);\n const resolutionEntries = Object.entries(value.resolution_counts).sort((left, right) => left[0].localeCompare(right[0]));\n return {\n command,\n count: value.count,\n event_type_counts: Object.fromEntries(\n Object.entries(value.event_type_counts).sort((left, right) => left[0].localeCompare(right[0])),\n ),\n max_attempts: value.max_attempts,\n event_schema_versions: [...value.event_schema_versions].sort((left, right) => left - right),\n client_schema_versions: [...value.client_schema_versions].sort((left, right) => left - right),\n ...(sortedDurations.length > 0\n ? {\n duration_p50_ms: nearestRankPercentile(sortedDurations, 0.5),\n duration_p95_ms: nearestRankPercentile(sortedDurations, 0.95),\n duration_max_ms: sortedDurations[sortedDurations.length - 1],\n }\n : {}),\n ...(finishCount > 0\n ? {\n ok_count: value.ok_count,\n error_count: value.error_count,\n error_rate: value.error_count / finishCount,\n }\n : {}),\n ...(resolutionEntries.length > 0 ? { command_resolution_counts: Object.fromEntries(resolutionEntries) } : {}),\n };\n}\n\nfunction normalizeTelemetrySubcommand(value: string | undefined): TelemetrySubcommand {\n const normalized = (value ?? \"status\").trim().toLowerCase();\n if ((TELEMETRY_SUBCOMMANDS as readonly string[]).includes(normalized)) {\n return normalized as TelemetrySubcommand;\n }\n // `value` is always a defined string here: an undefined subcommand normalizes\n // to \"status\" above (a valid value) and never reaches this throw.\n throw new PmCliError(\n `Unknown pm telemetry subcommand \"${value}\". Allowed: ${TELEMETRY_SUBCOMMANDS.join(\", \")}`,\n EXIT_CODE.USAGE,\n {\n code: \"unknown_subcommand\",\n examples: [\n \"pm telemetry status\",\n \"pm telemetry flush\",\n \"pm telemetry stats --limit 10\",\n \"pm telemetry clear\",\n ],\n },\n );\n}\n\nfunction parseTelemetryStatsLimit(raw: string | number | undefined): number {\n if (raw === undefined) {\n return DEFAULT_STATS_LIMIT;\n }\n if (typeof raw === \"number\") {\n if (!Number.isFinite(raw) || !Number.isInteger(raw) || raw <= 0) {\n throw new PmCliError(\"--limit must be a positive integer\", EXIT_CODE.USAGE);\n }\n return raw;\n }\n const trimmed = raw.trim();\n if (trimmed.length === 0 || !/^\\d+$/.test(trimmed)) {\n throw new PmCliError(\"--limit must be a positive integer\", EXIT_CODE.USAGE);\n }\n const parsed = Number.parseInt(trimmed, 10);\n if (!Number.isFinite(parsed) || parsed <= 0) {\n throw new PmCliError(\"--limit must be a positive integer\", EXIT_CODE.USAGE);\n }\n return parsed;\n}\n\nfunction parseTelemetryQueue(raw: string | null): ParsedTelemetryQueue {\n if (raw === null || raw.trim().length === 0) {\n return {\n rows_total: 0,\n valid_entries: 0,\n invalid_rows: 0,\n entries: [],\n };\n }\n const entries: QueuedTelemetryEventRecord[] = [];\n let rowsTotal = 0;\n let invalidRows = 0;\n for (const line of raw.split(\"\\n\")) {\n const trimmed = line.trim();\n if (trimmed.length === 0) {\n continue;\n }\n rowsTotal += 1;\n try {\n const parsed = JSON.parse(trimmed) as QueuedTelemetryEventRecord;\n if (\n typeof parsed === \"object\" &&\n parsed !== null &&\n typeof parsed.attempts === \"number\" &&\n typeof parsed.event === \"object\" &&\n parsed.event !== null\n ) {\n entries.push(parsed);\n } else {\n invalidRows += 1;\n }\n } catch {\n invalidRows += 1;\n }\n }\n return {\n rows_total: rowsTotal,\n valid_entries: entries.length,\n invalid_rows: invalidRows,\n entries,\n };\n}\n\nasync function readTelemetryRuntimeState(statePath: string): Promise<TelemetryRuntimeStateRecord> {\n const stateRaw = await readFileIfExists(statePath);\n if (stateRaw === null || stateRaw.trim().length === 0) {\n return {};\n }\n try {\n const parsed = JSON.parse(stateRaw) as TelemetryRuntimeStateRecord;\n if (typeof parsed === \"object\" && parsed !== null && !Array.isArray(parsed)) {\n return parsed;\n }\n } catch {\n // Ignore malformed state files; status command is observational.\n }\n return {};\n}\n\nasync function buildTelemetryStatusSummary(globalPmRoot: string): Promise<TelemetryStatusSummary> {\n const settings = await readSettings(globalPmRoot);\n const queuePath = path.join(globalPmRoot, TELEMETRY_QUEUE_RELATIVE_PATH);\n const statePath = path.join(globalPmRoot, TELEMETRY_STATE_RELATIVE_PATH);\n const queueRaw = await readFileIfExists(queuePath);\n const queue = parseTelemetryQueue(queueRaw);\n const runtimeState = await readTelemetryRuntimeState(statePath);\n return {\n enabled: settings.telemetry.enabled,\n endpoint: settings.telemetry.endpoint,\n queue_path: queuePath,\n state_path: statePath,\n queue_rows_total: queue.rows_total,\n queue_entries: queue.valid_entries,\n queue_invalid_rows: queue.invalid_rows,\n queue_size_bytes: queueRaw === null ? 0 : Buffer.byteLength(queueRaw, \"utf8\"),\n last_attempted_flush_at: runtimeState.last_attempted_flush_at ?? null,\n last_successful_flush_at: runtimeState.last_successful_flush_at ?? null,\n last_failed_flush_at: runtimeState.last_failed_flush_at ?? null,\n last_failed_flush_error: runtimeState.last_failed_flush_error ?? null,\n };\n}\n\nfunction buildTelemetryStatsBuckets(entries: QueuedTelemetryEventRecord[]): TelemetryStatsBucket[] {\n const grouped = new Map<string, TelemetryStatsBucketAccumulator>();\n for (const entry of entries) {\n // Latency + outcome distribution come from command_finish payloads only:\n // command_finish always carries duration_ms/ok/command_resolution at every\n // capture level, while start/error events do not.\n recordTelemetryQueueEntry(grouped, entry);\n }\n return [...grouped.entries()]\n .map(([command, value]) => buildTelemetryStatsBucket(command, value))\n .sort((left, right) => right.count - left.count || left.command.localeCompare(right.command));\n}\n\n/**\n * Implements run telemetry for the public runtime surface of this module.\n */\nexport async function runTelemetry(options: TelemetryCommandOptions, _global: GlobalOptions): Promise<Record<string, unknown>> {\n void _global;\n const subcommand = normalizeTelemetrySubcommand(options.subcommand);\n const globalPmRoot = resolveGlobalPmRoot(process.cwd());\n const queuePath = path.join(globalPmRoot, TELEMETRY_QUEUE_RELATIVE_PATH);\n const statePath = path.join(globalPmRoot, TELEMETRY_STATE_RELATIVE_PATH);\n if (subcommand === \"status\") {\n return {\n action: \"telemetry\",\n subcommand,\n status: await buildTelemetryStatusSummary(globalPmRoot),\n generated_at: nowIso(),\n };\n }\n\n if (subcommand === \"flush\") {\n const before = await buildTelemetryStatusSummary(globalPmRoot);\n await flushTelemetryQueueNow(globalPmRoot);\n const after = await buildTelemetryStatusSummary(globalPmRoot);\n return {\n action: \"telemetry\",\n subcommand,\n queue_entries_before: before.queue_entries,\n queue_entries_after: after.queue_entries,\n queue_drained: after.queue_entries < before.queue_entries,\n status: after,\n generated_at: nowIso(),\n };\n }\n\n if (subcommand === \"stats\") {\n const limit = parseTelemetryStatsLimit(options.limit);\n const queueRaw = await readFileIfExists(queuePath);\n const queue = parseTelemetryQueue(queueRaw);\n const buckets = buildTelemetryStatsBuckets(queue.entries);\n const selected = buckets.slice(0, limit);\n return {\n action: \"telemetry\",\n subcommand,\n limit,\n total_commands: buckets.length,\n queue_entries: queue.valid_entries,\n queue_invalid_rows: queue.invalid_rows,\n queue_rows_total: queue.rows_total,\n truncated: buckets.length > selected.length,\n stats: selected,\n generated_at: nowIso(),\n };\n }\n\n const settings = await readSettings(globalPmRoot);\n const previousEnabled = settings.telemetry.enabled;\n const previousInstallationId = settings.telemetry.installation_id;\n const previousFirstRunPromptCompleted = settings.telemetry.first_run_prompt_completed;\n settings.telemetry.enabled = false;\n settings.telemetry.first_run_prompt_completed = true;\n settings.telemetry.installation_id = \"\";\n const settingsChanged =\n previousEnabled !== settings.telemetry.enabled ||\n previousInstallationId !== settings.telemetry.installation_id ||\n previousFirstRunPromptCompleted !== settings.telemetry.first_run_prompt_completed;\n if (settingsChanged) {\n await writeSettings(globalPmRoot, settings, \"telemetry:clear\");\n }\n\n const telemetryRuntimePath = path.join(globalPmRoot, TELEMETRY_RUNTIME_RELATIVE_PATH);\n const existed = await pathExists(telemetryRuntimePath);\n await fs.rm(telemetryRuntimePath, { recursive: true, force: true });\n const queueExistsAfter = await pathExists(queuePath);\n const stateExistsAfter = await pathExists(statePath);\n return {\n action: \"telemetry\",\n subcommand,\n settings_changed: settingsChanged,\n runtime_dir_removed: existed && !(await pathExists(telemetryRuntimePath)),\n queue_exists_after: queueExistsAfter,\n state_exists_after: stateExistsAfter,\n status: await buildTelemetryStatusSummary(globalPmRoot),\n generated_at: nowIso(),\n };\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -1,11 +1,11 @@
|
|
|
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]="fdec6e18-ebbc-5924-b761-36a1fbf0b092")}catch(e){}}();
|
|
3
3
|
import {
|
|
4
4
|
flushTelemetryQueueNow
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-Z7RPDF2Y.js";
|
|
6
6
|
import {
|
|
7
7
|
nowIso
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-CXR3CMBQ.js";
|
|
9
9
|
import {
|
|
10
10
|
EXIT_CODE,
|
|
11
11
|
PmCliError,
|
|
@@ -14,7 +14,7 @@ import {
|
|
|
14
14
|
readSettings,
|
|
15
15
|
resolveGlobalPmRoot,
|
|
16
16
|
writeSettings
|
|
17
|
-
} from "./chunk-
|
|
17
|
+
} from "./chunk-L4SLHV6G.js";
|
|
18
18
|
|
|
19
19
|
// dist/cli/commands/telemetry.js
|
|
20
20
|
import fs from "node:fs/promises";
|
|
@@ -29,6 +29,83 @@ function nearestRankPercentile(sortedAscending, fraction) {
|
|
|
29
29
|
const index = Math.min(sortedAscending.length - 1, Math.max(0, rank - 1));
|
|
30
30
|
return sortedAscending[index];
|
|
31
31
|
}
|
|
32
|
+
function normalizeTelemetryQueueEntry(entry) {
|
|
33
|
+
const command = typeof entry.event.command === "string" && entry.event.command.trim().length > 0 ? entry.event.command : "<unknown>";
|
|
34
|
+
const eventType = typeof entry.event.event_type === "string" && entry.event.event_type.trim().length > 0 ? entry.event.event_type : "unknown";
|
|
35
|
+
const eventSchemaVersion = typeof entry.event.schema_version === "number" && Number.isFinite(entry.event.schema_version) ? Math.trunc(entry.event.schema_version) : void 0;
|
|
36
|
+
const clientSchemaVersion = typeof entry.client_schema_version === "number" && Number.isFinite(entry.client_schema_version) ? Math.trunc(entry.client_schema_version) : void 0;
|
|
37
|
+
return { command, eventType, eventSchemaVersion, clientSchemaVersion };
|
|
38
|
+
}
|
|
39
|
+
function createTelemetryStatsAccumulator() {
|
|
40
|
+
return {
|
|
41
|
+
count: 0,
|
|
42
|
+
max_attempts: 0,
|
|
43
|
+
event_type_counts: {},
|
|
44
|
+
event_schema_versions: /* @__PURE__ */ new Set(),
|
|
45
|
+
client_schema_versions: /* @__PURE__ */ new Set(),
|
|
46
|
+
finish_durations_ms: [],
|
|
47
|
+
ok_count: 0,
|
|
48
|
+
error_count: 0,
|
|
49
|
+
resolution_counts: {}
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
function recordTelemetryFinishPayload(current, payload) {
|
|
53
|
+
const durationMs = typeof payload?.duration_ms === "number" && Number.isFinite(payload.duration_ms) ? payload.duration_ms : void 0;
|
|
54
|
+
if (durationMs !== void 0) {
|
|
55
|
+
current.finish_durations_ms.push(durationMs);
|
|
56
|
+
}
|
|
57
|
+
if (payload?.ok === true) {
|
|
58
|
+
current.ok_count += 1;
|
|
59
|
+
} else {
|
|
60
|
+
current.error_count += 1;
|
|
61
|
+
}
|
|
62
|
+
const resolution = typeof payload?.command_resolution === "string" && payload.command_resolution.trim().length > 0 ? payload.command_resolution : void 0;
|
|
63
|
+
if (resolution !== void 0) {
|
|
64
|
+
current.resolution_counts[resolution] = (current.resolution_counts[resolution] ?? 0) + 1;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
function recordTelemetryQueueEntry(grouped, entry) {
|
|
68
|
+
const normalized = normalizeTelemetryQueueEntry(entry);
|
|
69
|
+
const current = grouped.get(normalized.command) ?? createTelemetryStatsAccumulator();
|
|
70
|
+
const attempts = Number.isFinite(entry.attempts) ? Math.max(0, Math.trunc(entry.attempts)) : 0;
|
|
71
|
+
current.count += 1;
|
|
72
|
+
current.max_attempts = Math.max(current.max_attempts, attempts);
|
|
73
|
+
current.event_type_counts[normalized.eventType] = (current.event_type_counts[normalized.eventType] ?? 0) + 1;
|
|
74
|
+
if (normalized.eventSchemaVersion !== void 0) {
|
|
75
|
+
current.event_schema_versions.add(normalized.eventSchemaVersion);
|
|
76
|
+
}
|
|
77
|
+
if (normalized.clientSchemaVersion !== void 0) {
|
|
78
|
+
current.client_schema_versions.add(normalized.clientSchemaVersion);
|
|
79
|
+
}
|
|
80
|
+
if (normalized.eventType === "command_finish") {
|
|
81
|
+
recordTelemetryFinishPayload(current, entry.event.payload);
|
|
82
|
+
}
|
|
83
|
+
grouped.set(normalized.command, current);
|
|
84
|
+
}
|
|
85
|
+
function buildTelemetryStatsBucket(command, value) {
|
|
86
|
+
const finishCount = value.ok_count + value.error_count;
|
|
87
|
+
const sortedDurations = [...value.finish_durations_ms].sort((left, right) => left - right);
|
|
88
|
+
const resolutionEntries = Object.entries(value.resolution_counts).sort((left, right) => left[0].localeCompare(right[0]));
|
|
89
|
+
return {
|
|
90
|
+
command,
|
|
91
|
+
count: value.count,
|
|
92
|
+
event_type_counts: Object.fromEntries(Object.entries(value.event_type_counts).sort((left, right) => left[0].localeCompare(right[0]))),
|
|
93
|
+
max_attempts: value.max_attempts,
|
|
94
|
+
event_schema_versions: [...value.event_schema_versions].sort((left, right) => left - right),
|
|
95
|
+
client_schema_versions: [...value.client_schema_versions].sort((left, right) => left - right),
|
|
96
|
+
...sortedDurations.length > 0 ? {
|
|
97
|
+
duration_p50_ms: nearestRankPercentile(sortedDurations, 0.5),
|
|
98
|
+
duration_p95_ms: nearestRankPercentile(sortedDurations, 0.95),
|
|
99
|
+
duration_max_ms: sortedDurations[sortedDurations.length - 1]
|
|
100
|
+
} : {},
|
|
101
|
+
...finishCount > 0 ? {
|
|
102
|
+
ok_count: value.ok_count,
|
|
103
|
+
error_count: value.error_count,
|
|
104
|
+
error_rate: value.error_count / finishCount
|
|
105
|
+
} : {},
|
|
106
|
+
...resolutionEntries.length > 0 ? { command_resolution_counts: Object.fromEntries(resolutionEntries) } : {}
|
|
107
|
+
};
|
|
108
|
+
}
|
|
32
109
|
function normalizeTelemetrySubcommand(value) {
|
|
33
110
|
const normalized = (value ?? "status").trim().toLowerCase();
|
|
34
111
|
if (TELEMETRY_SUBCOMMANDS.includes(normalized)) {
|
|
@@ -139,72 +216,9 @@ async function buildTelemetryStatusSummary(globalPmRoot) {
|
|
|
139
216
|
function buildTelemetryStatsBuckets(entries) {
|
|
140
217
|
const grouped = /* @__PURE__ */ new Map();
|
|
141
218
|
for (const entry of entries) {
|
|
142
|
-
|
|
143
|
-
const eventType = typeof entry.event.event_type === "string" && entry.event.event_type.trim().length > 0 ? entry.event.event_type : "unknown";
|
|
144
|
-
const eventSchemaVersion = typeof entry.event.schema_version === "number" && Number.isFinite(entry.event.schema_version) ? Math.trunc(entry.event.schema_version) : void 0;
|
|
145
|
-
const clientSchemaVersion = typeof entry.client_schema_version === "number" && Number.isFinite(entry.client_schema_version) ? Math.trunc(entry.client_schema_version) : void 0;
|
|
146
|
-
const current = grouped.get(command) ?? {
|
|
147
|
-
count: 0,
|
|
148
|
-
max_attempts: 0,
|
|
149
|
-
event_type_counts: {},
|
|
150
|
-
event_schema_versions: /* @__PURE__ */ new Set(),
|
|
151
|
-
client_schema_versions: /* @__PURE__ */ new Set(),
|
|
152
|
-
finish_durations_ms: [],
|
|
153
|
-
ok_count: 0,
|
|
154
|
-
error_count: 0,
|
|
155
|
-
resolution_counts: {}
|
|
156
|
-
};
|
|
157
|
-
current.count += 1;
|
|
158
|
-
current.max_attempts = Math.max(current.max_attempts, Math.max(0, Math.trunc(entry.attempts)));
|
|
159
|
-
current.event_type_counts[eventType] = (current.event_type_counts[eventType] ?? 0) + 1;
|
|
160
|
-
if (eventSchemaVersion !== void 0) {
|
|
161
|
-
current.event_schema_versions.add(eventSchemaVersion);
|
|
162
|
-
}
|
|
163
|
-
if (clientSchemaVersion !== void 0) {
|
|
164
|
-
current.client_schema_versions.add(clientSchemaVersion);
|
|
165
|
-
}
|
|
166
|
-
if (eventType === "command_finish") {
|
|
167
|
-
const payload = entry.event.payload;
|
|
168
|
-
const durationMs = typeof payload?.duration_ms === "number" && Number.isFinite(payload.duration_ms) ? payload.duration_ms : void 0;
|
|
169
|
-
if (durationMs !== void 0) {
|
|
170
|
-
current.finish_durations_ms.push(durationMs);
|
|
171
|
-
}
|
|
172
|
-
if (payload?.ok === true) {
|
|
173
|
-
current.ok_count += 1;
|
|
174
|
-
} else {
|
|
175
|
-
current.error_count += 1;
|
|
176
|
-
}
|
|
177
|
-
const resolution = typeof payload?.command_resolution === "string" && payload.command_resolution.trim().length > 0 ? payload.command_resolution : void 0;
|
|
178
|
-
if (resolution !== void 0) {
|
|
179
|
-
current.resolution_counts[resolution] = (current.resolution_counts[resolution] ?? 0) + 1;
|
|
180
|
-
}
|
|
181
|
-
}
|
|
182
|
-
grouped.set(command, current);
|
|
219
|
+
recordTelemetryQueueEntry(grouped, entry);
|
|
183
220
|
}
|
|
184
|
-
return [...grouped.entries()].map(([command, value]) =>
|
|
185
|
-
const finishCount = value.ok_count + value.error_count;
|
|
186
|
-
const sortedDurations = [...value.finish_durations_ms].sort((left, right) => left - right);
|
|
187
|
-
const resolutionEntries = Object.entries(value.resolution_counts).sort((left, right) => left[0].localeCompare(right[0]));
|
|
188
|
-
return {
|
|
189
|
-
command,
|
|
190
|
-
count: value.count,
|
|
191
|
-
event_type_counts: Object.fromEntries(Object.entries(value.event_type_counts).sort((left, right) => left[0].localeCompare(right[0]))),
|
|
192
|
-
max_attempts: value.max_attempts,
|
|
193
|
-
event_schema_versions: [...value.event_schema_versions].sort((left, right) => left - right),
|
|
194
|
-
client_schema_versions: [...value.client_schema_versions].sort((left, right) => left - right),
|
|
195
|
-
...sortedDurations.length > 0 ? {
|
|
196
|
-
duration_p50_ms: nearestRankPercentile(sortedDurations, 0.5),
|
|
197
|
-
duration_p95_ms: nearestRankPercentile(sortedDurations, 0.95),
|
|
198
|
-
duration_max_ms: sortedDurations[sortedDurations.length - 1]
|
|
199
|
-
} : {},
|
|
200
|
-
...finishCount > 0 ? {
|
|
201
|
-
ok_count: value.ok_count,
|
|
202
|
-
error_count: value.error_count,
|
|
203
|
-
error_rate: value.error_count / finishCount
|
|
204
|
-
} : {},
|
|
205
|
-
...resolutionEntries.length > 0 ? { command_resolution_counts: Object.fromEntries(resolutionEntries) } : {}
|
|
206
|
-
};
|
|
207
|
-
}).sort((left, right) => right.count - left.count || left.command.localeCompare(right.command));
|
|
221
|
+
return [...grouped.entries()].map(([command, value]) => buildTelemetryStatsBucket(command, value)).sort((left, right) => right.count - left.count || left.command.localeCompare(right.command));
|
|
208
222
|
}
|
|
209
223
|
async function runTelemetry(options, _global) {
|
|
210
224
|
void _global;
|
|
@@ -284,6 +298,6 @@ export {
|
|
|
284
298
|
TELEMETRY_SUBCOMMANDS,
|
|
285
299
|
runTelemetry
|
|
286
300
|
};
|
|
287
|
-
//# sourceMappingURL=telemetry-
|
|
301
|
+
//# sourceMappingURL=telemetry-GVVUQSJQ.js.map
|
|
288
302
|
|
|
289
|
-
//# debugId=
|
|
303
|
+
//# debugId=fdec6e18-ebbc-5924-b761-36a1fbf0b092
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../../../../cli/commands/telemetry.ts"],"sourcesContent":["/**\n * @module cli/commands/telemetry\n *\n * Implements the pm telemetry command surface and its agent-facing runtime behavior.\n */\nimport fs from \"node:fs/promises\";\nimport path from \"node:path\";\nimport { pathExists, readFileIfExists } from \"../../core/fs/fs-utils.js\";\nimport { EXIT_CODE } from \"../../core/shared/constants.js\";\nimport type { GlobalOptions } from \"../../core/shared/command-types.js\";\nimport { PmCliError } from \"../../core/shared/errors.js\";\nimport { nowIso } from \"../../core/shared/time.js\";\nimport { resolveGlobalPmRoot } from \"../../core/store/paths.js\";\nimport { readSettings, writeSettings } from \"../../core/store/settings.js\";\nimport { flushTelemetryQueueNow } from \"../../core/telemetry/runtime.js\";\n\nconst TELEMETRY_QUEUE_RELATIVE_PATH = path.join(\"runtime\", \"telemetry\", \"events.jsonl\");\nconst TELEMETRY_STATE_RELATIVE_PATH = path.join(\"runtime\", \"telemetry\", \"state.json\");\nconst TELEMETRY_RUNTIME_RELATIVE_PATH = path.join(\"runtime\", \"telemetry\");\nconst DEFAULT_STATS_LIMIT = 20;\n\nexport const TELEMETRY_SUBCOMMANDS = [\"status\", \"flush\", \"stats\", \"clear\"] as const;\n/**\n * Restricts telemetry subcommand values accepted by command, SDK, and storage contracts.\n */\nexport type TelemetrySubcommand = (typeof TELEMETRY_SUBCOMMANDS)[number];\n\ninterface TelemetryRuntimeStateRecord {\n endpoint?: string;\n queue_entries?: number;\n last_attempted_flush_at?: string;\n last_successful_flush_at?: string;\n last_failed_flush_at?: string;\n last_failed_flush_error?: string;\n}\n\ninterface QueuedTelemetryEventRecord {\n attempts: number;\n client_schema_version?: number;\n event: {\n event_id?: string;\n event_type?: string;\n schema_version?: number;\n command?: string;\n payload?: Record<string, unknown>;\n };\n}\n\ninterface ParsedTelemetryQueue {\n rows_total: number;\n valid_entries: number;\n invalid_rows: number;\n entries: QueuedTelemetryEventRecord[];\n}\n\ninterface TelemetryStatusSummary {\n enabled: boolean;\n endpoint: string;\n queue_path: string;\n state_path: string;\n queue_rows_total: number;\n queue_entries: number;\n queue_invalid_rows: number;\n queue_size_bytes: number;\n last_attempted_flush_at: string | null;\n last_successful_flush_at: string | null;\n last_failed_flush_at: string | null;\n last_failed_flush_error: string | null;\n}\n\n/**\n * Documents the telemetry command options payload exchanged by command, SDK, and package integrations.\n */\nexport interface TelemetryCommandOptions {\n subcommand?: string;\n limit?: string | number;\n}\n\ninterface TelemetryStatsBucket {\n command: string;\n count: number;\n event_type_counts: Record<string, number>;\n max_attempts: number;\n event_schema_versions: number[];\n client_schema_versions: number[];\n /**\n * Latency percentiles (nearest-rank) over `duration_ms` from the bucket's\n * `command_finish` events. Present only when at least one finish event carries\n * a finite `duration_ms`; `command_start`/`command_error` events are excluded.\n */\n duration_p50_ms?: number;\n duration_p95_ms?: number;\n duration_max_ms?: number;\n /**\n * Success/failure tally derived from `command_finish` payload `ok`. A finish\n * event whose `ok` is missing or not strictly `true` is counted as an error\n * (conservative). Present only when the bucket has at least one finish event;\n * `ok_count + error_count` equals that finish-event count.\n */\n ok_count?: number;\n error_count?: number;\n error_rate?: number;\n /** Distribution of `command_resolution` over `command_finish` events; present only when non-empty. */\n command_resolution_counts?: Record<string, number>;\n}\n\ninterface TelemetryStatsBucketAccumulator {\n count: number;\n max_attempts: number;\n event_type_counts: Record<string, number>;\n event_schema_versions: Set<number>;\n client_schema_versions: Set<number>;\n finish_durations_ms: number[];\n ok_count: number;\n error_count: number;\n resolution_counts: Record<string, number>;\n}\n\ninterface NormalizedTelemetryQueueEntry {\n command: string;\n eventType: string;\n eventSchemaVersion: number | undefined;\n clientSchemaVersion: number | undefined;\n}\n\n/**\n * Returns the nearest-rank percentile of an ascending-sorted, non-empty array.\n *\n * Uses the nearest-rank method (rank = ceil(fraction × n), 1-based, clamped into\n * range) so the result is always an observed sample value with no interpolation.\n */\nfunction nearestRankPercentile(sortedAscending: number[], fraction: number): number {\n const rank = Math.ceil(fraction * sortedAscending.length);\n const index = Math.min(sortedAscending.length - 1, Math.max(0, rank - 1));\n return sortedAscending[index];\n}\n\nfunction normalizeTelemetryQueueEntry(entry: QueuedTelemetryEventRecord): NormalizedTelemetryQueueEntry {\n const command = typeof entry.event.command === \"string\" && entry.event.command.trim().length > 0\n ? entry.event.command\n : \"<unknown>\";\n const eventType = typeof entry.event.event_type === \"string\" && entry.event.event_type.trim().length > 0\n ? entry.event.event_type\n : \"unknown\";\n const eventSchemaVersion = typeof entry.event.schema_version === \"number\" && Number.isFinite(entry.event.schema_version)\n ? Math.trunc(entry.event.schema_version)\n : undefined;\n const clientSchemaVersion =\n typeof entry.client_schema_version === \"number\" && Number.isFinite(entry.client_schema_version)\n ? Math.trunc(entry.client_schema_version)\n : undefined;\n return { command, eventType, eventSchemaVersion, clientSchemaVersion };\n}\n\nfunction createTelemetryStatsAccumulator(): TelemetryStatsBucketAccumulator {\n return {\n count: 0,\n max_attempts: 0,\n event_type_counts: {},\n event_schema_versions: new Set<number>(),\n client_schema_versions: new Set<number>(),\n finish_durations_ms: [],\n ok_count: 0,\n error_count: 0,\n resolution_counts: {},\n };\n}\n\nfunction recordTelemetryFinishPayload(current: TelemetryStatsBucketAccumulator, payload: Record<string, unknown> | undefined): void {\n const durationMs = typeof payload?.duration_ms === \"number\" && Number.isFinite(payload.duration_ms)\n ? payload.duration_ms\n : undefined;\n if (durationMs !== undefined) {\n current.finish_durations_ms.push(durationMs);\n }\n if (payload?.ok === true) {\n current.ok_count += 1;\n } else {\n current.error_count += 1;\n }\n const resolution = typeof payload?.command_resolution === \"string\" && payload.command_resolution.trim().length > 0\n ? payload.command_resolution\n : undefined;\n if (resolution !== undefined) {\n current.resolution_counts[resolution] = (current.resolution_counts[resolution] ?? 0) + 1;\n }\n}\n\nfunction recordTelemetryQueueEntry(\n grouped: Map<string, TelemetryStatsBucketAccumulator>,\n entry: QueuedTelemetryEventRecord,\n): void {\n const normalized = normalizeTelemetryQueueEntry(entry);\n const current = grouped.get(normalized.command) ?? createTelemetryStatsAccumulator();\n const attempts = Number.isFinite(entry.attempts) ? Math.max(0, Math.trunc(entry.attempts)) : 0;\n current.count += 1;\n current.max_attempts = Math.max(current.max_attempts, attempts);\n current.event_type_counts[normalized.eventType] = (current.event_type_counts[normalized.eventType] ?? 0) + 1;\n if (normalized.eventSchemaVersion !== undefined) {\n current.event_schema_versions.add(normalized.eventSchemaVersion);\n }\n if (normalized.clientSchemaVersion !== undefined) {\n current.client_schema_versions.add(normalized.clientSchemaVersion);\n }\n if (normalized.eventType === \"command_finish\") {\n recordTelemetryFinishPayload(current, entry.event.payload);\n }\n grouped.set(normalized.command, current);\n}\n\nfunction buildTelemetryStatsBucket(command: string, value: TelemetryStatsBucketAccumulator): TelemetryStatsBucket {\n const finishCount = value.ok_count + value.error_count;\n const sortedDurations = [...value.finish_durations_ms].sort((left, right) => left - right);\n const resolutionEntries = Object.entries(value.resolution_counts).sort((left, right) => left[0].localeCompare(right[0]));\n return {\n command,\n count: value.count,\n event_type_counts: Object.fromEntries(\n Object.entries(value.event_type_counts).sort((left, right) => left[0].localeCompare(right[0])),\n ),\n max_attempts: value.max_attempts,\n event_schema_versions: [...value.event_schema_versions].sort((left, right) => left - right),\n client_schema_versions: [...value.client_schema_versions].sort((left, right) => left - right),\n ...(sortedDurations.length > 0\n ? {\n duration_p50_ms: nearestRankPercentile(sortedDurations, 0.5),\n duration_p95_ms: nearestRankPercentile(sortedDurations, 0.95),\n duration_max_ms: sortedDurations[sortedDurations.length - 1],\n }\n : {}),\n ...(finishCount > 0\n ? {\n ok_count: value.ok_count,\n error_count: value.error_count,\n error_rate: value.error_count / finishCount,\n }\n : {}),\n ...(resolutionEntries.length > 0 ? { command_resolution_counts: Object.fromEntries(resolutionEntries) } : {}),\n };\n}\n\nfunction normalizeTelemetrySubcommand(value: string | undefined): TelemetrySubcommand {\n const normalized = (value ?? \"status\").trim().toLowerCase();\n if ((TELEMETRY_SUBCOMMANDS as readonly string[]).includes(normalized)) {\n return normalized as TelemetrySubcommand;\n }\n // `value` is always a defined string here: an undefined subcommand normalizes\n // to \"status\" above (a valid value) and never reaches this throw.\n throw new PmCliError(\n `Unknown pm telemetry subcommand \"${value}\". Allowed: ${TELEMETRY_SUBCOMMANDS.join(\", \")}`,\n EXIT_CODE.USAGE,\n {\n code: \"unknown_subcommand\",\n examples: [\n \"pm telemetry status\",\n \"pm telemetry flush\",\n \"pm telemetry stats --limit 10\",\n \"pm telemetry clear\",\n ],\n },\n );\n}\n\nfunction parseTelemetryStatsLimit(raw: string | number | undefined): number {\n if (raw === undefined) {\n return DEFAULT_STATS_LIMIT;\n }\n if (typeof raw === \"number\") {\n if (!Number.isFinite(raw) || !Number.isInteger(raw) || raw <= 0) {\n throw new PmCliError(\"--limit must be a positive integer\", EXIT_CODE.USAGE);\n }\n return raw;\n }\n const trimmed = raw.trim();\n if (trimmed.length === 0 || !/^\\d+$/.test(trimmed)) {\n throw new PmCliError(\"--limit must be a positive integer\", EXIT_CODE.USAGE);\n }\n const parsed = Number.parseInt(trimmed, 10);\n if (!Number.isFinite(parsed) || parsed <= 0) {\n throw new PmCliError(\"--limit must be a positive integer\", EXIT_CODE.USAGE);\n }\n return parsed;\n}\n\nfunction parseTelemetryQueue(raw: string | null): ParsedTelemetryQueue {\n if (raw === null || raw.trim().length === 0) {\n return {\n rows_total: 0,\n valid_entries: 0,\n invalid_rows: 0,\n entries: [],\n };\n }\n const entries: QueuedTelemetryEventRecord[] = [];\n let rowsTotal = 0;\n let invalidRows = 0;\n for (const line of raw.split(\"\\n\")) {\n const trimmed = line.trim();\n if (trimmed.length === 0) {\n continue;\n }\n rowsTotal += 1;\n try {\n const parsed = JSON.parse(trimmed) as QueuedTelemetryEventRecord;\n if (\n typeof parsed === \"object\" &&\n parsed !== null &&\n typeof parsed.attempts === \"number\" &&\n typeof parsed.event === \"object\" &&\n parsed.event !== null\n ) {\n entries.push(parsed);\n } else {\n invalidRows += 1;\n }\n } catch {\n invalidRows += 1;\n }\n }\n return {\n rows_total: rowsTotal,\n valid_entries: entries.length,\n invalid_rows: invalidRows,\n entries,\n };\n}\n\nasync function readTelemetryRuntimeState(statePath: string): Promise<TelemetryRuntimeStateRecord> {\n const stateRaw = await readFileIfExists(statePath);\n if (stateRaw === null || stateRaw.trim().length === 0) {\n return {};\n }\n try {\n const parsed = JSON.parse(stateRaw) as TelemetryRuntimeStateRecord;\n if (typeof parsed === \"object\" && parsed !== null && !Array.isArray(parsed)) {\n return parsed;\n }\n } catch {\n // Ignore malformed state files; status command is observational.\n }\n return {};\n}\n\nasync function buildTelemetryStatusSummary(globalPmRoot: string): Promise<TelemetryStatusSummary> {\n const settings = await readSettings(globalPmRoot);\n const queuePath = path.join(globalPmRoot, TELEMETRY_QUEUE_RELATIVE_PATH);\n const statePath = path.join(globalPmRoot, TELEMETRY_STATE_RELATIVE_PATH);\n const queueRaw = await readFileIfExists(queuePath);\n const queue = parseTelemetryQueue(queueRaw);\n const runtimeState = await readTelemetryRuntimeState(statePath);\n return {\n enabled: settings.telemetry.enabled,\n endpoint: settings.telemetry.endpoint,\n queue_path: queuePath,\n state_path: statePath,\n queue_rows_total: queue.rows_total,\n queue_entries: queue.valid_entries,\n queue_invalid_rows: queue.invalid_rows,\n queue_size_bytes: queueRaw === null ? 0 : Buffer.byteLength(queueRaw, \"utf8\"),\n last_attempted_flush_at: runtimeState.last_attempted_flush_at ?? null,\n last_successful_flush_at: runtimeState.last_successful_flush_at ?? null,\n last_failed_flush_at: runtimeState.last_failed_flush_at ?? null,\n last_failed_flush_error: runtimeState.last_failed_flush_error ?? null,\n };\n}\n\nfunction buildTelemetryStatsBuckets(entries: QueuedTelemetryEventRecord[]): TelemetryStatsBucket[] {\n const grouped = new Map<string, TelemetryStatsBucketAccumulator>();\n for (const entry of entries) {\n // Latency + outcome distribution come from command_finish payloads only:\n // command_finish always carries duration_ms/ok/command_resolution at every\n // capture level, while start/error events do not.\n recordTelemetryQueueEntry(grouped, entry);\n }\n return [...grouped.entries()]\n .map(([command, value]) => buildTelemetryStatsBucket(command, value))\n .sort((left, right) => right.count - left.count || left.command.localeCompare(right.command));\n}\n\n/**\n * Implements run telemetry for the public runtime surface of this module.\n */\nexport async function runTelemetry(options: TelemetryCommandOptions, _global: GlobalOptions): Promise<Record<string, unknown>> {\n void _global;\n const subcommand = normalizeTelemetrySubcommand(options.subcommand);\n const globalPmRoot = resolveGlobalPmRoot(process.cwd());\n const queuePath = path.join(globalPmRoot, TELEMETRY_QUEUE_RELATIVE_PATH);\n const statePath = path.join(globalPmRoot, TELEMETRY_STATE_RELATIVE_PATH);\n if (subcommand === \"status\") {\n return {\n action: \"telemetry\",\n subcommand,\n status: await buildTelemetryStatusSummary(globalPmRoot),\n generated_at: nowIso(),\n };\n }\n\n if (subcommand === \"flush\") {\n const before = await buildTelemetryStatusSummary(globalPmRoot);\n await flushTelemetryQueueNow(globalPmRoot);\n const after = await buildTelemetryStatusSummary(globalPmRoot);\n return {\n action: \"telemetry\",\n subcommand,\n queue_entries_before: before.queue_entries,\n queue_entries_after: after.queue_entries,\n queue_drained: after.queue_entries < before.queue_entries,\n status: after,\n generated_at: nowIso(),\n };\n }\n\n if (subcommand === \"stats\") {\n const limit = parseTelemetryStatsLimit(options.limit);\n const queueRaw = await readFileIfExists(queuePath);\n const queue = parseTelemetryQueue(queueRaw);\n const buckets = buildTelemetryStatsBuckets(queue.entries);\n const selected = buckets.slice(0, limit);\n return {\n action: \"telemetry\",\n subcommand,\n limit,\n total_commands: buckets.length,\n queue_entries: queue.valid_entries,\n queue_invalid_rows: queue.invalid_rows,\n queue_rows_total: queue.rows_total,\n truncated: buckets.length > selected.length,\n stats: selected,\n generated_at: nowIso(),\n };\n }\n\n const settings = await readSettings(globalPmRoot);\n const previousEnabled = settings.telemetry.enabled;\n const previousInstallationId = settings.telemetry.installation_id;\n const previousFirstRunPromptCompleted = settings.telemetry.first_run_prompt_completed;\n settings.telemetry.enabled = false;\n settings.telemetry.first_run_prompt_completed = true;\n settings.telemetry.installation_id = \"\";\n const settingsChanged =\n previousEnabled !== settings.telemetry.enabled ||\n previousInstallationId !== settings.telemetry.installation_id ||\n previousFirstRunPromptCompleted !== settings.telemetry.first_run_prompt_completed;\n if (settingsChanged) {\n await writeSettings(globalPmRoot, settings, \"telemetry:clear\");\n }\n\n const telemetryRuntimePath = path.join(globalPmRoot, TELEMETRY_RUNTIME_RELATIVE_PATH);\n const existed = await pathExists(telemetryRuntimePath);\n await fs.rm(telemetryRuntimePath, { recursive: true, force: true });\n const queueExistsAfter = await pathExists(queuePath);\n const stateExistsAfter = await pathExists(statePath);\n return {\n action: \"telemetry\",\n subcommand,\n settings_changed: settingsChanged,\n runtime_dir_removed: existed && !(await pathExists(telemetryRuntimePath)),\n queue_exists_after: queueExistsAfter,\n state_exists_after: stateExistsAfter,\n status: await buildTelemetryStatusSummary(globalPmRoot),\n generated_at: nowIso(),\n };\n}\n"],"names":[],"mappings":"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","debugId":"fdec6e18-ebbc-5924-b761-36a1fbf0b092"}
|