@unbrained/pm-cli 2026.7.1 → 2026.7.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +6 -0
- package/dist/cli/commander-usage.d.ts +2 -0
- package/dist/cli/commander-usage.js +58 -47
- package/dist/cli/commander-usage.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 +89 -68
- 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/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/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 +446 -307
- 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.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 +49 -32
- 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/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 +18 -1
- package/dist/cli/commands/validate.js +466 -343
- package/dist/cli/commands/validate.js.map +1 -1
- package/dist/cli/error-guidance.js +399 -357
- package/dist/cli/error-guidance.js.map +1 -1
- package/dist/cli/main.d.ts +47 -0
- package/dist/cli/main.js +428 -341
- 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 +94 -105
- package/dist/cli/register-list-query.js.map +1 -1
- package/dist/cli/register-mutation.js +400 -416
- package/dist/cli/register-mutation.js.map +1 -1
- package/dist/cli/register-operations.js +86 -66
- 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-bundle/chunks/{activity-DBLQVIP6.js → activity-CUC4JY3U.js} +9 -9
- package/dist/cli-bundle/chunks/activity-WEIEMM73.js +16 -0
- package/dist/cli-bundle/chunks/{aggregate-JTEF4BP7.js → aggregate-DKUTRY6R.js} +108 -84
- package/dist/cli-bundle/chunks/aggregate-DKUTRY6R.js.map +1 -0
- package/dist/cli-bundle/chunks/{aggregate-SDF7DUOD.js → aggregate-SW5PNGCS.js} +107 -83
- package/dist/cli-bundle/chunks/{aggregate-SDF7DUOD.js.map → aggregate-SW5PNGCS.js.map} +2 -2
- package/dist/cli-bundle/chunks/{append-QCFJSDFL.js → append-H32VOR2Y.js} +6 -6
- package/dist/cli-bundle/chunks/{append-LOVPGVPT.js → append-UBM632FK.js} +6 -6
- package/dist/cli-bundle/chunks/{chunk-RLDHZHQS.js → chunk-2227673O.js} +158 -114
- package/dist/cli-bundle/chunks/chunk-2227673O.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-SLMUGTK3.js → chunk-2ASNV4DH.js} +4 -4
- package/dist/cli-bundle/chunks/{chunk-UZIWVBE6.js → chunk-2CHRYUXL.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-NWMZWYYB.js → chunk-2KWL5NPW.js} +42 -27
- package/dist/cli-bundle/chunks/chunk-2KWL5NPW.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-NFDPYAIP.js → chunk-36UGKF4O.js} +21 -29
- package/dist/cli-bundle/chunks/chunk-36UGKF4O.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-NU2UEROZ.js → chunk-3AZUFQK6.js} +6 -6
- package/dist/cli-bundle/chunks/{chunk-LB6TP6MC.js → chunk-3LCUASYG.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-HPPFYYOV.js → chunk-3Q2HBMTI.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-IPYBJWTE.js → chunk-4NUOWFBT.js} +109 -72
- package/dist/cli-bundle/chunks/chunk-4NUOWFBT.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-W4ULYO7Z.js → chunk-55XRYWEG.js} +6 -6
- package/dist/cli-bundle/chunks/{chunk-HXTQJXWT.js → chunk-5GVTFFTC.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-BDTISOSD.js → chunk-5PGBHRY3.js} +41 -26
- package/dist/cli-bundle/chunks/chunk-5PGBHRY3.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-YITK2PJ6.js → chunk-66Z3X7ZG.js} +261 -161
- package/dist/cli-bundle/chunks/chunk-66Z3X7ZG.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-NUHHPVVS.js → chunk-6ITZLD4T.js} +712 -612
- package/dist/cli-bundle/chunks/chunk-6ITZLD4T.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-V3NOKJF2.js → chunk-6YCYF2AI.js} +262 -162
- package/dist/cli-bundle/chunks/chunk-6YCYF2AI.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-BZCEN4JA.js → chunk-6ZMBJRDJ.js} +492 -403
- package/dist/cli-bundle/chunks/chunk-6ZMBJRDJ.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-CF7RL6FR.js → chunk-7MYWF4ZX.js} +110 -73
- package/dist/cli-bundle/chunks/chunk-7MYWF4ZX.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-RVUALSJF.js → chunk-7NSPKJUS.js} +356 -285
- package/dist/cli-bundle/chunks/chunk-7NSPKJUS.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-4DSGXSBL.js → chunk-7TH5NMVB.js} +95 -53
- package/dist/cli-bundle/chunks/chunk-7TH5NMVB.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-ZETXE4SE.js → chunk-7W4H4K26.js} +713 -613
- package/dist/cli-bundle/chunks/chunk-7W4H4K26.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-64HNBBFQ.js → chunk-A6VOGKBA.js} +6 -6
- package/dist/cli-bundle/chunks/{chunk-WYDHYJPO.js → chunk-AIAIXG7I.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-CWFNTKQJ.js → chunk-AJEBCRIY.js} +5 -5
- 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-NOLPZMSV.js → chunk-BTX5MIQF.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-RH5ZBYFD.js → chunk-BVZZN2LH.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-27BXPBAY.js → chunk-CYBDUHNO.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-A7FPBAQS.js → chunk-CZPVDLD2.js} +4 -4
- package/dist/cli-bundle/chunks/{chunk-3VGN2UWE.js → chunk-EMPGXBUF.js} +22 -30
- package/dist/cli-bundle/chunks/chunk-EMPGXBUF.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-JPECA746.js → chunk-EUKTMRN3.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-2466X6E4.js → chunk-FFOQHGNH.js} +6 -6
- package/dist/cli-bundle/chunks/{chunk-JLM7BHI7.js → chunk-GFMSLORL.js} +6 -6
- package/dist/cli-bundle/chunks/{chunk-SDR5J34Q.js → chunk-GRRG3MCT.js} +4 -4
- package/dist/cli-bundle/chunks/{chunk-GJ326ZKX.js → chunk-H4GRLYJS.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-OGXLACHC.js → chunk-HQTPRV4D.js} +6 -6
- package/dist/cli-bundle/chunks/{chunk-7R4QEMZZ.js → chunk-I66WE2HE.js} +354 -283
- package/dist/cli-bundle/chunks/chunk-I66WE2HE.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-BHO33VBQ.js → chunk-IEEJQCZ4.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-JMP4E6D7.js → chunk-IG5JYZGU.js} +390 -312
- package/dist/cli-bundle/chunks/{chunk-JMP4E6D7.js.map → chunk-IG5JYZGU.js.map} +2 -2
- package/dist/cli-bundle/chunks/{chunk-4DUVCVLZ.js → chunk-JMK5GCK2.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-3K2M5OYU.js → chunk-JXAUVO6X.js} +258 -169
- package/dist/cli-bundle/chunks/{chunk-3K2M5OYU.js.map → chunk-JXAUVO6X.js.map} +2 -2
- package/dist/cli-bundle/chunks/{chunk-AXIDKKAT.js → chunk-K2VYLVX4.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-EJUDVUYZ.js → chunk-KCO2EAN5.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-6AQZPVHQ.js → chunk-KIYCOJ63.js} +4 -4
- package/dist/cli-bundle/chunks/{chunk-ZRP4VG5U.js → chunk-KLXF7NCC.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-QCWF6IYD.js → chunk-KN3URLKS.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-N74UMG5H.js → chunk-LRKMWUUV.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-AVEE5EHK.js → chunk-LTRAF2D7.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-VARHOHYV.js → chunk-MNBPX5JS.js} +55 -36
- package/dist/cli-bundle/chunks/chunk-MNBPX5JS.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-IJYK2T43.js → chunk-MRD4T5LF.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-G7I7DEZA.js → chunk-N2JSWVWG.js} +4 -4
- package/dist/cli-bundle/chunks/{chunk-5QFDBI4F.js → chunk-N3QCJS4M.js} +6 -6
- package/dist/cli-bundle/chunks/{chunk-JSU5P7VS.js → chunk-NRZS637N.js} +258 -169
- package/dist/cli-bundle/chunks/chunk-NRZS637N.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-4A3BJ675.js → chunk-OTUJZKGI.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-5CGRF3L5.js → chunk-Q6K2OACU.js} +153 -90
- package/dist/cli-bundle/chunks/chunk-Q6K2OACU.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-3XZCOZ5J.js → chunk-Q6NXOHS6.js} +391 -313
- package/dist/cli-bundle/chunks/chunk-Q6NXOHS6.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-HZZEHPRG.js → chunk-QH3FSKRJ.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-4XOIEKSD.js → chunk-RM37OPYK.js} +56 -37
- package/dist/cli-bundle/chunks/chunk-RM37OPYK.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-NKZAN7BD.js → chunk-S62UANU7.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-RMMQ74TG.js → chunk-SPM2XLWI.js} +37 -28
- package/dist/cli-bundle/chunks/chunk-SPM2XLWI.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-3J6JRJ3I.js → chunk-SYNKD3ZG.js} +5 -5
- package/dist/cli-bundle/chunks/{chunk-FFMQB7WR.js → chunk-SYVUU7EK.js} +493 -404
- package/dist/cli-bundle/chunks/chunk-SYVUU7EK.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-UYUYDGIB.js → chunk-TPOFWBMY.js} +95 -53
- package/dist/cli-bundle/chunks/chunk-TPOFWBMY.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-OTUHB4HS.js → chunk-TTHCEV5Q.js} +92 -77
- package/dist/cli-bundle/chunks/chunk-TTHCEV5Q.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-L5OEFZQG.js → chunk-U2BEEM2X.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-KNPEF7QG.js → chunk-UGLU6Q2I.js} +91 -76
- package/dist/cli-bundle/chunks/chunk-UGLU6Q2I.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-EVMTBV6V.js → chunk-UT73HUPC.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-VICZWYGZ.js → chunk-UTSH5GWX.js} +4 -4
- package/dist/cli-bundle/chunks/{chunk-IZBR4NRW.js → chunk-UWKEJMZU.js} +157 -113
- package/dist/cli-bundle/chunks/chunk-UWKEJMZU.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-3S2KT7NG.js → chunk-W47SML5B.js} +152 -89
- package/dist/cli-bundle/chunks/chunk-W47SML5B.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-RGEMWD6Q.js → chunk-WJAMWAHZ.js} +157 -118
- package/dist/cli-bundle/chunks/chunk-WJAMWAHZ.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-JWXRETDF.js → chunk-XCHUVHKU.js} +626 -484
- package/dist/cli-bundle/chunks/chunk-XCHUVHKU.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-55SNVXRQ.js → chunk-XEWQKDYZ.js} +626 -484
- package/dist/cli-bundle/chunks/chunk-XEWQKDYZ.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-TP5Q5ZD3.js → chunk-XTHQWXVC.js} +158 -119
- package/dist/cli-bundle/chunks/chunk-XTHQWXVC.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-MDPEOIGN.js → chunk-XWGEMNBR.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-HYTGA6GI.js → chunk-Y4NRKBFW.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-2D4HATP2.js → chunk-YLZZ6T54.js} +38 -29
- package/dist/cli-bundle/chunks/chunk-YLZZ6T54.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-22WKIL3H.js → chunk-YPKFV2JR.js} +6 -6
- 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-DDPTYJIM.js → chunk-ZNHEYCDD.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-MAUKX7JC.js → chunk-ZNT7KEWE.js} +2 -2
- package/dist/cli-bundle/chunks/{claim-T3GCKV7C.js → claim-SENTPZBN.js} +8 -8
- package/dist/cli-bundle/chunks/{claim-EMQLYPRW.js → claim-Z7MEQCBT.js} +8 -8
- package/dist/cli-bundle/chunks/{close-TQYAAFJP.js → close-424MX4CU.js} +7 -7
- package/dist/cli-bundle/chunks/close-YCWQQPDS.js +14 -0
- package/dist/cli-bundle/chunks/{close-many-LDRVEQY2.js → close-many-2IV4J2TR.js} +102 -81
- package/dist/cli-bundle/chunks/close-many-2IV4J2TR.js.map +1 -0
- package/dist/cli-bundle/chunks/{close-many-BG5QQIDQ.js → close-many-SWY34BII.js} +101 -80
- package/dist/cli-bundle/chunks/close-many-SWY34BII.js.map +7 -0
- package/dist/cli-bundle/chunks/{comments-YUXJRZPQ.js → comments-4FGNTSNV.js} +8 -8
- package/dist/cli-bundle/chunks/{comments-QCKR2YY2.js → comments-7YS5MY5X.js} +8 -8
- package/dist/cli-bundle/chunks/config-BZJKK7FZ.js +1062 -0
- package/dist/cli-bundle/chunks/config-BZJKK7FZ.js.map +1 -0
- package/dist/cli-bundle/chunks/config-G74GISC4.js +1072 -0
- package/dist/cli-bundle/chunks/config-G74GISC4.js.map +7 -0
- package/dist/cli-bundle/chunks/{context-OCZ3FJ4Z.js → context-LHVKJSPJ.js} +12 -12
- package/dist/cli-bundle/chunks/{context-B6275WPX.js → context-ZQY54JNS.js} +12 -12
- package/dist/cli-bundle/chunks/{contracts-HN7ABKLP.js → contracts-CP2EZJC7.js} +320 -199
- package/dist/cli-bundle/chunks/contracts-CP2EZJC7.js.map +7 -0
- package/dist/cli-bundle/chunks/{contracts-W4FZVVD6.js → contracts-FIZLMP7O.js} +321 -200
- package/dist/cli-bundle/chunks/contracts-FIZLMP7O.js.map +1 -0
- package/dist/cli-bundle/chunks/{copy-DEM4DATS.js → copy-GYNQQPW2.js} +5 -5
- package/dist/cli-bundle/chunks/{copy-BTJOSKKT.js → copy-TLW7JTQT.js} +5 -5
- package/dist/cli-bundle/chunks/{create-RLRJMRTM.js → create-VSKYSOCD.js} +12 -12
- package/dist/cli-bundle/chunks/create-XTMAPS7I.js +28 -0
- package/dist/cli-bundle/chunks/{delete-LSVHAB4Y.js → delete-4W5JYCEG.js} +5 -5
- package/dist/cli-bundle/chunks/{delete-BHK7VB2Z.js → delete-ANTOTI2I.js} +5 -5
- package/dist/cli-bundle/chunks/{deps-XHYXWEPT.js → deps-HPPE6MJN.js} +5 -5
- package/dist/cli-bundle/chunks/{deps-4UDFJRUA.js → deps-ZQZN54EZ.js} +5 -5
- package/dist/cli-bundle/chunks/{docs-GYZNVS26.js → docs-RPOVFMP3.js} +7 -7
- package/dist/cli-bundle/chunks/{docs-26S44RXU.js → docs-XJNYBJGE.js} +7 -7
- package/dist/cli-bundle/chunks/{eval-PGRVIJQU.js → eval-DM6JBZTS.js} +10 -10
- package/dist/cli-bundle/chunks/{eval-UYF3ZPVO.js → eval-RFBI5FGS.js} +10 -10
- package/dist/cli-bundle/chunks/{extension-CPSLJQVE.js → extension-B3YY4WY5.js} +11 -11
- package/dist/cli-bundle/chunks/{extension-CXJ6RELI.js → extension-TTSEFQTS.js} +11 -11
- package/dist/cli-bundle/chunks/{files-NQHEXUZD.js → files-5D65CHGE.js} +7 -7
- package/dist/cli-bundle/chunks/{files-MBNICQFM.js → files-GPIG77EN.js} +7 -7
- package/dist/cli-bundle/chunks/{focus-XZW5423D.js → focus-C3PEJV2C.js} +6 -6
- package/dist/cli-bundle/chunks/{focus-DWYIG7GU.js → focus-ZHN7WIGX.js} +6 -6
- package/dist/cli-bundle/chunks/{gc-LPVMKJQJ.js → gc-D4JQ6OWN.js} +3 -3
- package/dist/cli-bundle/chunks/{gc-7GQYOS2G.js → gc-VZIXDL32.js} +3 -3
- package/dist/cli-bundle/chunks/{get-DSDEKJ3L.js → get-GIBRUUOP.js} +121 -81
- package/dist/cli-bundle/chunks/get-GIBRUUOP.js.map +1 -0
- package/dist/cli-bundle/chunks/{get-A7MAOHCU.js → get-IOVAN6RU.js} +120 -80
- package/dist/cli-bundle/chunks/get-IOVAN6RU.js.map +7 -0
- package/dist/cli-bundle/chunks/{health-3IPFLKXB.js → health-L2U3AFKV.js} +437 -265
- package/dist/cli-bundle/chunks/health-L2U3AFKV.js.map +1 -0
- package/dist/cli-bundle/chunks/{health-GZXGBZ36.js → health-MM7AWXYF.js} +436 -264
- package/dist/cli-bundle/chunks/health-MM7AWXYF.js.map +7 -0
- package/dist/cli-bundle/chunks/history-DD7L7BNL.js +18 -0
- package/dist/cli-bundle/chunks/{history-NERDJNUB.js → history-IL7XCEX2.js} +8 -8
- package/dist/cli-bundle/chunks/{history-compact-HR7BB4LR.js → history-compact-HALOTOU7.js} +214 -135
- package/dist/cli-bundle/chunks/history-compact-HALOTOU7.js.map +1 -0
- package/dist/cli-bundle/chunks/{history-compact-2WRZ2WK4.js → history-compact-MV25P7DM.js} +213 -134
- package/dist/cli-bundle/chunks/history-compact-MV25P7DM.js.map +7 -0
- package/dist/cli-bundle/chunks/history-redact-IX4YEWMY.js +19 -0
- package/dist/cli-bundle/chunks/{history-redact-O3NBCNWC.js → history-redact-VYCWQFK7.js} +9 -9
- package/dist/cli-bundle/chunks/{history-repair-XA3LC4GA.js → history-repair-44MODPQF.js} +124 -84
- package/dist/cli-bundle/chunks/history-repair-44MODPQF.js.map +1 -0
- package/dist/cli-bundle/chunks/{history-repair-LCMOS45X.js → history-repair-CPNAOCNF.js} +123 -83
- package/dist/cli-bundle/chunks/history-repair-CPNAOCNF.js.map +7 -0
- package/dist/cli-bundle/chunks/{init-64XDLQJB.js → init-F27NHENZ.js} +12 -12
- package/dist/cli-bundle/chunks/init-HHVQQP6C.js +22 -0
- package/dist/cli-bundle/chunks/{learnings-LPKCSJX7.js → learnings-HJVDQIGY.js} +8 -8
- package/dist/cli-bundle/chunks/{learnings-JR6MA5TI.js → learnings-XSFSUUWK.js} +8 -8
- package/dist/cli-bundle/chunks/{list-G5Y65VF6.js → list-HPMEKCAA.js} +8 -8
- package/dist/cli-bundle/chunks/{list-DNBJVO3E.js → list-VMPWTURB.js} +8 -8
- package/dist/cli-bundle/chunks/{next-BCERKDUR.js → next-ETXF2ZCN.js} +59 -37
- package/dist/cli-bundle/chunks/next-ETXF2ZCN.js.map +7 -0
- package/dist/cli-bundle/chunks/{next-FYTQF6HG.js → next-QM6YJIIS.js} +60 -38
- package/dist/cli-bundle/chunks/next-QM6YJIIS.js.map +1 -0
- package/dist/cli-bundle/chunks/{notes-2BMU3VVQ.js → notes-GDZIKGR6.js} +8 -8
- package/dist/cli-bundle/chunks/{notes-6KTGO2OJ.js → notes-WDDBPC4D.js} +8 -8
- package/dist/cli-bundle/chunks/{plan-RKZHQVXR.js → plan-BGDR73Z6.js} +373 -279
- package/dist/cli-bundle/chunks/plan-BGDR73Z6.js.map +1 -0
- package/dist/cli-bundle/chunks/{plan-4WXEQCTN.js → plan-C5IMM335.js} +372 -278
- package/dist/cli-bundle/chunks/plan-C5IMM335.js.map +7 -0
- package/dist/cli-bundle/chunks/{profile-QLER5ENE.js → profile-CCOKZ2IQ.js} +9 -9
- package/dist/cli-bundle/chunks/{profile-4OMM32CD.js → profile-HUCENIEQ.js} +9 -9
- package/dist/cli-bundle/chunks/{register-list-query-7LV46VAU.js → register-list-query-ROSNIL52.js} +80 -83
- package/dist/cli-bundle/chunks/register-list-query-ROSNIL52.js.map +1 -0
- package/dist/cli-bundle/chunks/{register-list-query-SNG5PGA4.js → register-list-query-XN4ZRHSV.js} +79 -82
- package/dist/cli-bundle/chunks/register-list-query-XN4ZRHSV.js.map +7 -0
- package/dist/cli-bundle/chunks/{register-mutation-ENNDUAZG.js → register-mutation-CFSB2MS3.js} +403 -382
- package/dist/cli-bundle/chunks/register-mutation-CFSB2MS3.js.map +1 -0
- package/dist/cli-bundle/chunks/{register-mutation-KK7PHYYU.js → register-mutation-KRLAHEL2.js} +402 -381
- package/dist/cli-bundle/chunks/register-mutation-KRLAHEL2.js.map +7 -0
- package/dist/cli-bundle/chunks/{register-operations-HZ6XERQG.js → register-operations-4PASGJDB.js} +112 -93
- package/dist/cli-bundle/chunks/register-operations-4PASGJDB.js.map +7 -0
- package/dist/cli-bundle/chunks/{register-operations-C6OWLDSH.js → register-operations-MBN4KGUM.js} +113 -94
- package/dist/cli-bundle/chunks/register-operations-MBN4KGUM.js.map +1 -0
- package/dist/cli-bundle/chunks/{register-setup-P67EMBDJ.js → register-setup-VIAWYFP5.js} +129 -104
- package/dist/cli-bundle/chunks/register-setup-VIAWYFP5.js.map +1 -0
- package/dist/cli-bundle/chunks/{register-setup-ZKJ53RS7.js → register-setup-ZCGKHDKL.js} +128 -103
- package/dist/cli-bundle/chunks/register-setup-ZCGKHDKL.js.map +7 -0
- package/dist/cli-bundle/chunks/{restore-4MHZFJ2E.js → restore-4CBWUMCX.js} +9 -9
- package/dist/cli-bundle/chunks/restore-5UEAGG3W.js +17 -0
- package/dist/cli-bundle/chunks/{scheduling-shortcuts-LB6DOLRL.js → scheduling-shortcuts-6VFKNKCM.js} +12 -12
- package/dist/cli-bundle/chunks/{scheduling-shortcuts-UTOYKLXQ.js → scheduling-shortcuts-ERHCVTEM.js} +12 -12
- package/dist/cli-bundle/chunks/{schema-73HR2OJW.js → schema-TDGK6N3I.js} +7 -7
- package/dist/cli-bundle/chunks/{schema-U6LJKSIR.js → schema-UE5KKAUX.js} +7 -7
- package/dist/cli-bundle/chunks/{search-KILGT37L.js → search-FP7MEU4S.js} +10 -10
- package/dist/cli-bundle/chunks/{search-AXPXKZER.js → search-K4CFLQ5S.js} +10 -10
- package/dist/cli-bundle/chunks/{stats-PSYVVTNZ.js → stats-NJJCALEZ.js} +6 -6
- package/dist/cli-bundle/chunks/{stats-W5KNVJWQ.js → stats-XT6QRKQY.js} +6 -6
- package/dist/cli-bundle/chunks/{telemetry-GAHHQTOS.js → telemetry-5SQ5UDXC.js} +84 -70
- package/dist/cli-bundle/chunks/telemetry-5SQ5UDXC.js.map +7 -0
- package/dist/cli-bundle/chunks/{telemetry-BZUF6H7G.js → telemetry-HVXFZA2U.js} +85 -71
- package/dist/cli-bundle/chunks/telemetry-HVXFZA2U.js.map +1 -0
- package/dist/cli-bundle/chunks/{test-ACD52Z3S.js → test-UFSJ5YIO.js} +15 -15
- package/dist/cli-bundle/chunks/{test-PWDIZ255.js → test-YCDAUBWF.js} +15 -15
- package/dist/cli-bundle/chunks/test-all-2BWKY3GQ.js +427 -0
- package/dist/cli-bundle/chunks/test-all-2BWKY3GQ.js.map +1 -0
- package/dist/cli-bundle/chunks/test-all-PM7UYN42.js +430 -0
- package/dist/cli-bundle/chunks/test-all-PM7UYN42.js.map +7 -0
- package/dist/cli-bundle/chunks/{test-runs-UXIXPDKU.js → test-runs-FK5E75AA.js} +185 -147
- package/dist/cli-bundle/chunks/test-runs-FK5E75AA.js.map +1 -0
- package/dist/cli-bundle/chunks/{test-runs-PLRAZEFW.js → test-runs-H4TGWGRN.js} +184 -146
- package/dist/cli-bundle/chunks/test-runs-H4TGWGRN.js.map +7 -0
- package/dist/cli-bundle/chunks/update-MTCFES6X.js +24 -0
- package/dist/cli-bundle/chunks/{update-KFX2SIAC.js → update-Y5WQVT5O.js} +15 -15
- package/dist/cli-bundle/chunks/{update-many-Z5GJS5LC.js → update-many-6YAYYRLE.js} +82 -67
- package/dist/cli-bundle/chunks/{update-many-Z5GJS5LC.js.map → update-many-6YAYYRLE.js.map} +2 -2
- package/dist/cli-bundle/chunks/{update-many-RNSBX2TA.js → update-many-JTKKSA7Y.js} +83 -68
- package/dist/cli-bundle/chunks/{update-many-RNSBX2TA.js.map → update-many-JTKKSA7Y.js.map} +1 -1
- package/dist/cli-bundle/chunks/{upgrade-HAK6JG2O.js → upgrade-DTAHZ236.js} +11 -11
- package/dist/cli-bundle/chunks/{upgrade-BRL6KCOJ.js → upgrade-JUDU7YL4.js} +11 -11
- package/dist/cli-bundle/chunks/{validate-MTUVL5VC.js → validate-732RWS5W.js} +440 -320
- package/dist/cli-bundle/chunks/validate-732RWS5W.js.map +7 -0
- package/dist/cli-bundle/chunks/{validate-X5W76YJL.js → validate-W7H5TEDC.js} +441 -321
- package/dist/cli-bundle/chunks/validate-W7H5TEDC.js.map +1 -0
- package/dist/cli-bundle/main.js +945 -812
- 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 +87 -82
- 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 +34 -28
- package/dist/core/schema/runtime-schema.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/store/front-matter-cache.js +239 -153
- 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/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/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-2D4HATP2.js.map +0 -1
- 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-4DSGXSBL.js.map +0 -7
- 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-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-FFMQB7WR.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-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-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-UYUYDGIB.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-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/register-list-query-7LV46VAU.js.map +0 -1
- 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.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-CUC4JY3U.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{activity-AW6XVFH6.js.map → activity-WEIEMM73.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{append-QCFJSDFL.js.map → append-H32VOR2Y.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{append-LOVPGVPT.js.map → append-UBM632FK.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-SLMUGTK3.js.map → chunk-2ASNV4DH.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-UZIWVBE6.js.map → chunk-2CHRYUXL.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-NU2UEROZ.js.map → chunk-3AZUFQK6.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-LB6TP6MC.js.map → chunk-3LCUASYG.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-HPPFYYOV.js.map → chunk-3Q2HBMTI.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-W4ULYO7Z.js.map → chunk-55XRYWEG.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-HXTQJXWT.js.map → chunk-5GVTFFTC.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-64HNBBFQ.js.map → chunk-A6VOGKBA.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-WYDHYJPO.js.map → chunk-AIAIXG7I.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-CWFNTKQJ.js.map → chunk-AJEBCRIY.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-NOLPZMSV.js.map → chunk-BTX5MIQF.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-RH5ZBYFD.js.map → chunk-BVZZN2LH.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-27BXPBAY.js.map → chunk-CYBDUHNO.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-A7FPBAQS.js.map → chunk-CZPVDLD2.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-JPECA746.js.map → chunk-EUKTMRN3.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-2466X6E4.js.map → chunk-FFOQHGNH.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-JLM7BHI7.js.map → chunk-GFMSLORL.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-SDR5J34Q.js.map → chunk-GRRG3MCT.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-GJ326ZKX.js.map → chunk-H4GRLYJS.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-OGXLACHC.js.map → chunk-HQTPRV4D.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-BHO33VBQ.js.map → chunk-IEEJQCZ4.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-4DUVCVLZ.js.map → chunk-JMK5GCK2.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-AXIDKKAT.js.map → chunk-K2VYLVX4.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-EJUDVUYZ.js.map → chunk-KCO2EAN5.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-6AQZPVHQ.js.map → chunk-KIYCOJ63.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-ZRP4VG5U.js.map → chunk-KLXF7NCC.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-QCWF6IYD.js.map → chunk-KN3URLKS.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-N74UMG5H.js.map → chunk-LRKMWUUV.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-AVEE5EHK.js.map → chunk-LTRAF2D7.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-IJYK2T43.js.map → chunk-MRD4T5LF.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-G7I7DEZA.js.map → chunk-N2JSWVWG.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-5QFDBI4F.js.map → chunk-N3QCJS4M.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-4A3BJ675.js.map → chunk-OTUJZKGI.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-HZZEHPRG.js.map → chunk-QH3FSKRJ.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-NKZAN7BD.js.map → chunk-S62UANU7.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-3J6JRJ3I.js.map → chunk-SYNKD3ZG.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-L5OEFZQG.js.map → chunk-U2BEEM2X.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-EVMTBV6V.js.map → chunk-UT73HUPC.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-VICZWYGZ.js.map → chunk-UTSH5GWX.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-MDPEOIGN.js.map → chunk-XWGEMNBR.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-HYTGA6GI.js.map → chunk-Y4NRKBFW.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-22WKIL3H.js.map → chunk-YPKFV2JR.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-DDPTYJIM.js.map → chunk-ZNHEYCDD.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-MAUKX7JC.js.map → chunk-ZNT7KEWE.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{claim-T3GCKV7C.js.map → claim-SENTPZBN.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{claim-EMQLYPRW.js.map → claim-Z7MEQCBT.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{close-TQYAAFJP.js.map → close-424MX4CU.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{close-E6ZZGCJY.js.map → close-YCWQQPDS.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{comments-YUXJRZPQ.js.map → comments-4FGNTSNV.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{comments-QCKR2YY2.js.map → comments-7YS5MY5X.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{context-OCZ3FJ4Z.js.map → context-LHVKJSPJ.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{context-B6275WPX.js.map → context-ZQY54JNS.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{copy-DEM4DATS.js.map → copy-GYNQQPW2.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{copy-BTJOSKKT.js.map → copy-TLW7JTQT.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{create-RLRJMRTM.js.map → create-VSKYSOCD.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{create-OH3BDGBB.js.map → create-XTMAPS7I.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{delete-LSVHAB4Y.js.map → delete-4W5JYCEG.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{delete-BHK7VB2Z.js.map → delete-ANTOTI2I.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{deps-XHYXWEPT.js.map → deps-HPPE6MJN.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{deps-4UDFJRUA.js.map → deps-ZQZN54EZ.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{docs-GYZNVS26.js.map → docs-RPOVFMP3.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{docs-26S44RXU.js.map → docs-XJNYBJGE.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{eval-PGRVIJQU.js.map → eval-DM6JBZTS.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{eval-UYF3ZPVO.js.map → eval-RFBI5FGS.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{extension-CPSLJQVE.js.map → extension-B3YY4WY5.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{extension-CXJ6RELI.js.map → extension-TTSEFQTS.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{files-NQHEXUZD.js.map → files-5D65CHGE.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{files-MBNICQFM.js.map → files-GPIG77EN.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{focus-XZW5423D.js.map → focus-C3PEJV2C.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{focus-DWYIG7GU.js.map → focus-ZHN7WIGX.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{gc-LPVMKJQJ.js.map → gc-D4JQ6OWN.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{gc-7GQYOS2G.js.map → gc-VZIXDL32.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{history-WSZHY3PN.js.map → history-DD7L7BNL.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{history-NERDJNUB.js.map → history-IL7XCEX2.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{history-redact-MP6CH7U5.js.map → history-redact-IX4YEWMY.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{history-redact-O3NBCNWC.js.map → history-redact-VYCWQFK7.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{init-64XDLQJB.js.map → init-F27NHENZ.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{init-PAX32BJA.js.map → init-HHVQQP6C.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{learnings-LPKCSJX7.js.map → learnings-HJVDQIGY.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{learnings-JR6MA5TI.js.map → learnings-XSFSUUWK.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{list-G5Y65VF6.js.map → list-HPMEKCAA.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{list-DNBJVO3E.js.map → list-VMPWTURB.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{notes-2BMU3VVQ.js.map → notes-GDZIKGR6.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{notes-6KTGO2OJ.js.map → notes-WDDBPC4D.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{profile-QLER5ENE.js.map → profile-CCOKZ2IQ.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{profile-4OMM32CD.js.map → profile-HUCENIEQ.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{restore-4MHZFJ2E.js.map → restore-4CBWUMCX.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{restore-YALDGTQR.js.map → restore-5UEAGG3W.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{scheduling-shortcuts-LB6DOLRL.js.map → scheduling-shortcuts-6VFKNKCM.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{scheduling-shortcuts-UTOYKLXQ.js.map → scheduling-shortcuts-ERHCVTEM.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{schema-73HR2OJW.js.map → schema-TDGK6N3I.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{schema-U6LJKSIR.js.map → schema-UE5KKAUX.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{search-KILGT37L.js.map → search-FP7MEU4S.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{search-AXPXKZER.js.map → search-K4CFLQ5S.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{stats-PSYVVTNZ.js.map → stats-NJJCALEZ.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{stats-W5KNVJWQ.js.map → stats-XT6QRKQY.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{test-ACD52Z3S.js.map → test-UFSJ5YIO.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{test-PWDIZ255.js.map → test-YCDAUBWF.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{update-AMRSOIWP.js.map → update-MTCFES6X.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{update-KFX2SIAC.js.map → update-Y5WQVT5O.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{upgrade-HAK6JG2O.js.map → upgrade-DTAHZ236.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{upgrade-BRL6KCOJ.js.map → upgrade-JUDU7YL4.js.map} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../../../../cli/commands/history-redact.ts","../../../../../../../../core/history/history-rewrite.ts"],"sourcesContent":["/**\n * @module cli/commands/history-redact\n *\n * Implements the pm history redact command surface and its agent-facing runtime behavior.\n */\nimport fs from \"node:fs/promises\";\nimport { pathExists, readFileIfExists, writeFileAtomic } from \"../../core/fs/fs-utils.js\";\nimport { createHistoryEntry } from \"../../core/history/history.js\";\nimport { executeHistoryRewrite } from \"../../core/history/history-rewrite.js\";\nimport {\n EMPTY_REPLAY_DOCUMENT,\n historyEntriesToRaw,\n replayHash,\n replayToItemDocument,\n tryApplyReplayPatch,\n verifyHistoryChain,\n type ReplayDocument,\n} from \"../../core/history/replay.js\";\nimport { normalizeItemId, normalizeRawItemId } from \"../../core/item/id.js\";\nimport { canonicalDocument, serializeItemDocument } from \"../../core/item/item-format.js\";\nimport { resolveItemTypeRegistry } from \"../../core/item/type-registry.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 { getActiveExtensionRegistrations, runActiveOnWriteHooks } from \"../../core/extensions/index.js\";\nimport { locateItem, readLocatedItem } from \"../../core/store/item-store.js\";\nimport { getHistoryPath, getItemPath, getSettingsPath, resolvePmRoot } from \"../../core/store/paths.js\";\nimport { readSettings } from \"../../core/store/settings.js\";\nimport { resolveAuthor } from \"../../core/shared/author.js\";\nimport type { HistoryEntry, HistoryPatchOp, ItemDocument } from \"../../types/index.js\";\nimport { readHistoryEntries } from \"./history.js\";\n\n/**\n * Documents the history redact command options payload exchanged by command, SDK, and package integrations.\n */\nexport interface HistoryRedactCommandOptions {\n literal?: string[] | string;\n regex?: string[] | string;\n replacement?: string;\n dryRun?: boolean;\n author?: string;\n message?: string;\n force?: boolean;\n}\n\ninterface RegexRule {\n kind: \"regex\";\n source: string;\n flags: string;\n label: string;\n}\n\ninterface LiteralRule {\n kind: \"literal\";\n value: string;\n label: string;\n}\n\ntype RedactionRule = RegexRule | LiteralRule;\n\ninterface RedactionRewriteResult {\n entries: HistoryEntry[];\n finalDocument: ReplayDocument;\n entriesChanged: number;\n replacements: number;\n}\n\ninterface HistoryIntegritySnapshot {\n hashMismatchesBefore: number;\n hashMismatchesAfter: number;\n finalDocument: ReplayDocument;\n}\n\ninterface HistoryRedactCurrentItem {\n raw: string | null;\n path: string | null;\n document: ItemDocument | null;\n}\n\ninterface HistoryRedactNextItem {\n raw: string | null;\n path: string | null;\n document: ItemDocument | null;\n}\n\n/**\n * Documents the history subject payload exchanged by command, SDK, and package integrations.\n */\nexport interface HistorySubject {\n id: string;\n historyPath: string;\n located: Awaited<ReturnType<typeof locateItem>>;\n}\n\n/**\n * Documents the history redact result payload exchanged by command, SDK, and package integrations.\n */\nexport interface HistoryRedactResult {\n id: string;\n dry_run: boolean;\n changed: boolean;\n patterns: {\n literals: string[];\n regex: string[];\n replacement: string;\n };\n history: {\n path: string;\n entries_scanned: number;\n entries_changed: number;\n replacements: number;\n hash_mismatches_before: number;\n hash_mismatches_after: number;\n preexisting_hash_mismatches: number;\n audit_entry_added: boolean;\n verify_ok: boolean;\n verify_errors: string[];\n };\n item: {\n existed_before: boolean;\n exists_after: boolean;\n path_before: string | null;\n path_after: string | null;\n changed: boolean;\n };\n warnings: string[];\n generated_at: string;\n}\n\nfunction normalizeStringArrayInput(value: string[] | string | undefined): string[] {\n if (Array.isArray(value)) {\n return value;\n }\n if (typeof value === \"string\") {\n return [value];\n }\n return [];\n}\n\nfunction normalizeRegexFlags(flags: string): string {\n const unique: string[] = [];\n for (const token of flags) {\n if (!unique.includes(token)) {\n unique.push(token);\n }\n }\n if (!unique.includes(\"g\")) {\n unique.push(\"g\");\n }\n return unique.join(\"\");\n}\n\nfunction parseRegexRule(spec: string): RegexRule {\n const trimmed = spec.trim();\n if (trimmed.length === 0) {\n throw new PmCliError(\"history-redact --regex requires a non-empty pattern.\", EXIT_CODE.USAGE);\n }\n\n let source = trimmed;\n let flags = \"g\";\n if (trimmed.startsWith(\"/\") && trimmed.length > 1) {\n /* c8 ignore start -- bare-slash regex literals are rejected earlier in argument validation. */\n const slashIndex = trimmed.lastIndexOf(\"/\");\n if (slashIndex > 0) {\n source = trimmed.slice(1, slashIndex);\n flags = normalizeRegexFlags(trimmed.slice(slashIndex + 1));\n }\n /* c8 ignore stop */\n }\n if (source.length === 0) {\n throw new PmCliError(\"history-redact --regex cannot use an empty pattern.\", EXIT_CODE.USAGE);\n }\n try {\n new RegExp(source, flags);\n } catch (error) {\n /* c8 ignore start -- RegExp constructor failures are normalized in higher-level parser tests. */\n throw new PmCliError(\n `Invalid --regex value \"${spec}\": ${error instanceof Error ? error.message : String(error)}`,\n EXIT_CODE.USAGE,\n );\n /* c8 ignore stop */\n }\n\n return {\n kind: \"regex\",\n source,\n flags,\n label: `/${source}/${flags}`,\n };\n}\n\nfunction buildRedactionRules(\n literalInput: string[] | string | undefined,\n regexInput: string[] | string | undefined,\n): RedactionRule[] {\n const literalRules = [...new Set(normalizeStringArrayInput(literalInput).map((entry) => entry.trim()))]\n .filter((entry) => entry.length > 0)\n .map<LiteralRule>((entry) => ({\n kind: \"literal\",\n value: entry,\n label: entry,\n }));\n const regexRules = [...new Set(normalizeStringArrayInput(regexInput).map((entry) => entry.trim()))]\n .filter((entry) => entry.length > 0)\n .map(parseRegexRule);\n\n const rules = [...literalRules, ...regexRules];\n if (rules.length === 0) {\n throw new PmCliError(\n \"history-redact requires at least one matcher via --literal or --regex.\",\n EXIT_CODE.USAGE,\n {\n code: \"missing_required_argument\",\n required: \"Provide --literal <value> and/or --regex <pattern>.\",\n examples: [\n 'pm history-redact pm-a1b2 --literal \"[redacted_path_prefix]/private\"',\n 'pm history-redact pm-a1b2 --regex \"/192\\\\\\\\.168\\\\\\\\.[0-9.]+/g\" --replacement \"[scrubbed_ip]\"',\n ],\n },\n );\n }\n return rules;\n}\n\nfunction applyLiteralRule(value: string, literal: string, replacement: string): { value: string; replacements: number } {\n if (literal.length === 0) {\n return { value, replacements: 0 };\n }\n let cursor = 0;\n let replacements = 0;\n while (cursor <= value.length) {\n const index = value.indexOf(literal, cursor);\n if (index === -1) {\n break;\n }\n replacements += 1;\n cursor = index + Math.max(1, literal.length);\n }\n if (replacements === 0) {\n return { value, replacements: 0 };\n }\n return {\n value: value.split(literal).join(replacement),\n replacements,\n };\n}\n\nfunction applyRegexRule(value: string, rule: RegexRule, replacement: string): { value: string; replacements: number } {\n const regex = new RegExp(rule.source, rule.flags);\n const matches = [...value.matchAll(regex)];\n if (matches.length === 0) {\n return { value, replacements: 0 };\n }\n return {\n value: value.replace(regex, replacement),\n replacements: matches.length,\n };\n}\n\nfunction redactStringValue(value: string, rules: RedactionRule[], replacement: string): { value: string; replacements: number } {\n let next = value;\n let replacements = 0;\n for (const rule of rules) {\n const result =\n rule.kind === \"literal\"\n ? applyLiteralRule(next, rule.value, replacement)\n : applyRegexRule(next, rule, replacement);\n next = result.value;\n replacements += result.replacements;\n }\n return {\n value: next,\n replacements,\n };\n}\n\nfunction redactUnknownValue(value: unknown, rules: RedactionRule[], replacement: string): { value: unknown; replacements: number } {\n if (typeof value === \"string\") {\n return redactStringValue(value, rules, replacement);\n }\n if (Array.isArray(value)) {\n let replacements = 0;\n const nextValues = value.map((entry) => {\n const redacted = redactUnknownValue(entry, rules, replacement);\n replacements += redacted.replacements;\n return redacted.value;\n });\n return {\n value: nextValues,\n replacements,\n };\n }\n if (typeof value === \"object\" && value !== null) {\n let replacements = 0;\n const nextRecord: Record<string, unknown> = {};\n for (const [key, entry] of Object.entries(value)) {\n const redacted = redactUnknownValue(entry, rules, replacement);\n replacements += redacted.replacements;\n nextRecord[key] = redacted.value;\n }\n return {\n value: nextRecord,\n replacements,\n };\n }\n return {\n value,\n replacements: 0,\n };\n}\n\nfunction applyHistoryPatch(current: ReplayDocument, patch: HistoryPatchOp[], entryNumber: number, op: string): ReplayDocument {\n const result = tryApplyReplayPatch(current, patch);\n /* c8 ignore start -- invalid patch replay paths are covered by replay helper tests. */\n if (!result.ok) {\n throw new PmCliError(\n `history-redact failed to apply patch at entry ${entryNumber} (op=${op}): ${\n result.error instanceof Error ? result.error.message : String(result.error)\n }`,\n EXIT_CODE.GENERIC_FAILURE,\n );\n }\n /* c8 ignore stop */\n return result.document;\n}\n\nfunction inspectHistoryIntegrity(entries: HistoryEntry[]): HistoryIntegritySnapshot {\n let replay = structuredClone(EMPTY_REPLAY_DOCUMENT);\n let hashMismatchesBefore = 0;\n let hashMismatchesAfter = 0;\n for (let index = 0; index < entries.length; index += 1) {\n const entry = entries[index];\n if (replayHash(replay) !== entry.before_hash) {\n hashMismatchesBefore += 1;\n }\n replay = applyHistoryPatch(replay, entry.patch, index + 1, entry.op);\n /* c8 ignore start -- after-hash mismatch branch is exercised in dedicated history integrity tests. */\n if (replayHash(replay) !== entry.after_hash) {\n hashMismatchesAfter += 1;\n }\n /* c8 ignore stop */\n }\n return {\n hashMismatchesBefore,\n hashMismatchesAfter,\n finalDocument: replay,\n };\n}\n\nfunction redactHistoryEntry(entry: HistoryEntry, rules: RedactionRule[], replacement: string): {\n entry: HistoryEntry;\n replacements: number;\n changed: boolean;\n} {\n let replacements = 0;\n let changed = false;\n let nextMessage = entry.message;\n\n if (typeof entry.message === \"string\") {\n const redactedMessage = redactStringValue(entry.message, rules, replacement);\n nextMessage = redactedMessage.value;\n replacements += redactedMessage.replacements;\n if (redactedMessage.replacements > 0) {\n changed = true;\n }\n }\n\n const nextPatch = entry.patch.map((operation) => {\n /* c8 ignore start -- patch operations without `value` are covered in lower-level patch adapters. */\n if (!Object.prototype.hasOwnProperty.call(operation, \"value\")) {\n return operation;\n }\n /* c8 ignore stop */\n const redactedValue = redactUnknownValue(operation.value, rules, replacement);\n replacements += redactedValue.replacements;\n if (redactedValue.replacements > 0) {\n changed = true;\n return {\n ...operation,\n value: redactedValue.value,\n };\n }\n return operation;\n });\n\n return {\n entry: {\n ...entry,\n message: nextMessage,\n patch: nextPatch,\n },\n replacements,\n changed,\n };\n}\n\nfunction rewriteHistoryEntries(entries: HistoryEntry[], rules: RedactionRule[], replacement: string): RedactionRewriteResult {\n let replay = structuredClone(EMPTY_REPLAY_DOCUMENT);\n let entriesChanged = 0;\n let replacements = 0;\n const rewrittenEntries: HistoryEntry[] = [];\n\n for (let index = 0; index < entries.length; index += 1) {\n const redacted = redactHistoryEntry(entries[index], rules, replacement);\n replacements += redacted.replacements;\n if (redacted.changed) {\n entriesChanged += 1;\n }\n const beforeHash = replayHash(replay);\n replay = applyHistoryPatch(replay, redacted.entry.patch, index + 1, redacted.entry.op);\n const afterHash = replayHash(replay);\n rewrittenEntries.push({\n ...redacted.entry,\n before_hash: beforeHash,\n after_hash: afterHash,\n });\n }\n\n return {\n entries: rewrittenEntries,\n finalDocument: replay,\n entriesChanged,\n replacements,\n };\n}\n\nfunction hasItemMetadata(replay: ReplayDocument): boolean {\n return Object.keys(replay.metadata).length > 0;\n}\n\nasync function loadHistoryRedactCurrentItem(\n subject: HistorySubject,\n settings: Awaited<ReturnType<typeof readSettings>>,\n): Promise<HistoryRedactCurrentItem> {\n const currentItemPath = subject.located?.itemPath ?? null;\n if (!subject.located) {\n return { raw: null, path: currentItemPath, document: null };\n }\n const loaded = await readLocatedItem(subject.located, { schema: settings.schema });\n return { raw: loaded.raw, path: currentItemPath, document: loaded.document };\n}\n\nfunction resolveHistoryRedactNextItem(params: {\n pmRoot: string;\n subject: HistorySubject;\n settings: Awaited<ReturnType<typeof readSettings>>;\n typeToFolder: Record<string, string>;\n finalDocument: ReplayDocument;\n}): HistoryRedactNextItem {\n if (!hasItemMetadata(params.finalDocument)) {\n return { raw: null, path: null, document: null };\n }\n const canonical = canonicalDocument(replayToItemDocument(params.finalDocument), { schema: params.settings.schema });\n if (canonical.metadata.id !== params.subject.id) {\n throw new PmCliError(\n `history-redact would change item id from ${params.subject.id} to ${canonical.metadata.id}; narrow your patterns.`,\n EXIT_CODE.USAGE,\n );\n }\n return {\n document: canonical,\n path: getItemPath(params.pmRoot, canonical.metadata.type, params.subject.id, \"toon\", params.typeToFolder),\n raw: serializeItemDocument(canonical, {\n format: \"toon\",\n schema: params.settings.schema,\n }),\n };\n}\n\n/* v8 ignore start -- message passthrough/plural formatting is deterministic around covered redaction outcomes */\nfunction buildHistoryRedactMessage(options: HistoryRedactCommandOptions, rewritten: RedactionRewriteResult): string {\n if (typeof options.message === \"string\" && options.message.trim().length > 0) {\n return options.message;\n }\n return `history-redact replaced ${rewritten.replacements} match(es) across ${rewritten.entriesChanged} entr${\n rewritten.entriesChanged === 1 ? \"y\" : \"ies\"\n }.`;\n}\n/* v8 ignore stop */\n\nfunction buildHistoryRedactEntries(params: {\n rewritten: RedactionRewriteResult;\n dryRun: boolean;\n changed: boolean;\n nextItemDocument: ItemDocument | null;\n author: string;\n message: string;\n}): { rewrittenEntries: HistoryEntry[]; auditEntryAdded: boolean } {\n const rewrittenEntries = [...params.rewritten.entries];\n if (params.dryRun || !params.changed) {\n return { rewrittenEntries, auditEntryAdded: false };\n }\n /* c8 ignore next -- fallback replay-to-item conversion runs only when rewritten final metadata is absent. */\n const finalDocument = params.nextItemDocument ?? replayToItemDocument(params.rewritten.finalDocument);\n rewrittenEntries.push(\n createHistoryEntry({\n nowIso: nowIso(),\n author: params.author,\n op: \"history_redact\",\n before: finalDocument,\n after: finalDocument,\n message: params.message,\n }),\n );\n return { rewrittenEntries, auditEntryAdded: true };\n}\n\nasync function applyHistoryRedactRewrite(params: {\n pmRoot: string;\n subject: HistorySubject;\n settings: Awaited<ReturnType<typeof readSettings>>;\n typeRegistry: ReturnType<typeof resolveItemTypeRegistry>;\n historyRawBeforeLock: string | null;\n currentItem: HistoryRedactCurrentItem;\n nextItem: HistoryRedactNextItem;\n author: string;\n force: boolean | undefined;\n rewrittenEntries: HistoryEntry[];\n}): Promise<string[]> {\n return executeHistoryRewrite({\n pmRoot: params.pmRoot,\n subject: params.subject,\n settings: params.settings,\n typeRegistry: params.typeRegistry,\n historyRawBeforeLock: params.historyRawBeforeLock,\n currentItemRawBeforeLock: params.currentItem.raw,\n operation: \"history-redact\",\n author: params.author,\n force: params.force,\n itemDocument: params.currentItem.document,\n applyRewrite: async ({ historyRawUnderLock }) => {\n const affectedItemPaths = new Set<string>();\n if (params.currentItem.path) {\n affectedItemPaths.add(params.currentItem.path);\n }\n if (params.nextItem.path) {\n affectedItemPaths.add(params.nextItem.path);\n }\n const itemSnapshots = new Map<string, string>();\n if (params.currentItem.path && params.currentItem.raw !== null) {\n itemSnapshots.set(params.currentItem.path, params.currentItem.raw);\n }\n try {\n /* c8 ignore next -- item-write diff branch requires path and content divergence under lock races. */\n if (params.nextItem.path && params.nextItem.raw !== null && params.nextItem.raw !== params.currentItem.raw) {\n await writeFileAtomic(params.nextItem.path, params.nextItem.raw);\n }\n if (params.currentItem.path && (!params.nextItem.path || params.nextItem.path !== params.currentItem.path)) {\n await fs.rm(params.currentItem.path, { force: true });\n }\n await writeFileAtomic(params.subject.historyPath, historyEntriesToRaw(params.rewrittenEntries));\n } catch (error) {\n await rollbackHistoryRedactRewrite(params.subject.historyPath, historyRawUnderLock, affectedItemPaths, itemSnapshots);\n throw error;\n }\n },\n applyPostRewrite: async () => runHistoryRedactWriteHooks(params.subject.historyPath, [\n params.nextItem.path,\n params.currentItem.path,\n ]),\n });\n}\n\nasync function rollbackHistoryRedactRewrite(\n historyPath: string,\n historyRawUnderLock: string | null,\n affectedItemPaths: Set<string>,\n itemSnapshots: Map<string, string>,\n): Promise<void> {\n /* c8 ignore start -- no-history-under-lock rollback path is exercised in lock-race integration tests. */\n if (historyRawUnderLock === null) {\n await fs.rm(historyPath, { force: true });\n } else {\n await writeFileAtomic(historyPath, historyRawUnderLock);\n }\n /* c8 ignore stop */\n for (const itemPath of affectedItemPaths) {\n const snapshot = itemSnapshots.get(itemPath);\n /* c8 ignore start -- missing snapshot rollback occurs only for create/delete race permutations. */\n if (snapshot === undefined) {\n await fs.rm(itemPath, { force: true });\n } else {\n await writeFileAtomic(itemPath, snapshot);\n }\n /* c8 ignore stop */\n }\n}\n\nasync function runHistoryRedactWriteHooks(historyPath: string, itemHookPaths: Array<string | null>): Promise<string[]> {\n const hookWarnings: string[] = [];\n const uniqueItemHookPaths = new Set(itemHookPaths.filter((itemPath): itemPath is string => itemPath !== null));\n for (const itemHookPath of uniqueItemHookPaths) {\n hookWarnings.push(\n ...(await runActiveOnWriteHooks({\n path: itemHookPath,\n scope: \"project\",\n op: \"history_redact\",\n })),\n );\n }\n hookWarnings.push(\n ...(await runActiveOnWriteHooks({\n path: historyPath,\n scope: \"project\",\n op: \"history_redact:history\",\n })),\n );\n return hookWarnings;\n}\n\n/**\n * Implements resolve history subject for the public runtime surface of this module.\n */\nexport async function resolveHistorySubject(\n pmRoot: string,\n id: string,\n settings: Awaited<ReturnType<typeof readSettings>>,\n typeToFolder: Record<string, string>,\n): Promise<HistorySubject> {\n const located = await locateItem(pmRoot, id, settings.id_prefix, settings.item_format, typeToFolder);\n if (located) {\n return {\n id: located.id,\n historyPath: getHistoryPath(pmRoot, located.id),\n located,\n };\n }\n\n const normalizedId = normalizeItemId(id, settings.id_prefix);\n const rawNormalizedId = normalizeRawItemId(id);\n const candidateIds = normalizedId === rawNormalizedId ? [normalizedId] : [normalizedId, rawNormalizedId];\n for (const candidateId of candidateIds) {\n const historyPath = getHistoryPath(pmRoot, candidateId);\n if (await pathExists(historyPath)) {\n return {\n id: candidateId,\n historyPath,\n located: null,\n };\n }\n }\n throw new PmCliError(`Item ${id} not found`, EXIT_CODE.NOT_FOUND);\n}\n\n/**\n * Implements run history redact for the public runtime surface of this module.\n */\nexport async function runHistoryRedact(\n id: string,\n options: HistoryRedactCommandOptions,\n global: GlobalOptions,\n): Promise<HistoryRedactResult> {\n const pmRoot = resolvePmRoot(process.cwd(), global.path);\n if (!(await pathExists(getSettingsPath(pmRoot)))) {\n throw new PmCliError(`Tracker is not initialized at ${pmRoot}. Run pm init first.`, EXIT_CODE.NOT_FOUND);\n }\n\n const settings = await readSettings(pmRoot);\n const typeRegistry = resolveItemTypeRegistry(settings, getActiveExtensionRegistrations());\n const replacement = typeof options.replacement === \"string\" && options.replacement.length > 0 ? options.replacement : \"[redacted]\";\n const rules = buildRedactionRules(options.literal, options.regex);\n const subject = await resolveHistorySubject(pmRoot, id, settings, typeRegistry.type_to_folder);\n\n if (!(await pathExists(subject.historyPath))) {\n throw new PmCliError(`No history stream exists for ${subject.id}.`, EXIT_CODE.NOT_FOUND);\n }\n const historyRawBeforeLock = await readFileIfExists(subject.historyPath);\n const historyEntries = await readHistoryEntries(subject.historyPath, subject.id);\n if (historyEntries.length === 0) {\n throw new PmCliError(`No history entries exist for ${subject.id}; nothing to redact.`, EXIT_CODE.USAGE);\n }\n\n const integritySnapshot = inspectHistoryIntegrity(historyEntries);\n const rewritten = rewriteHistoryEntries(historyEntries, rules, replacement);\n const preexistingHashMismatches = integritySnapshot.hashMismatchesBefore + integritySnapshot.hashMismatchesAfter;\n const dryRun = Boolean(options.dryRun);\n const changed = rewritten.replacements > 0;\n const warnings: string[] = [];\n if (preexistingHashMismatches > 0) {\n warnings.push(`history_redact_preexisting_hash_mismatches:${preexistingHashMismatches}`);\n }\n if (!changed) {\n warnings.push(\"history_redact_no_matches\");\n }\n\n const currentItem = await loadHistoryRedactCurrentItem(subject, settings);\n const nextItem = resolveHistoryRedactNextItem({\n pmRoot,\n subject,\n settings,\n typeToFolder: typeRegistry.type_to_folder,\n finalDocument: rewritten.finalDocument,\n });\n\n const itemChanged =\n /* c8 ignore next -- null-coalescing item-path comparison branch is exercised in broader command integration coverage. */\n (currentItem.path ?? null) !== (nextItem.path ?? null) ||\n /* c8 ignore next -- null-coalescing item-content comparison branch is exercised in broader command integration coverage. */\n (currentItem.raw ?? null) !== (nextItem.raw ?? null);\n\n const author = resolveAuthor(options.author, settings.author_default);\n const redactionMessage = buildHistoryRedactMessage(options, rewritten);\n const { rewrittenEntries, auditEntryAdded } = buildHistoryRedactEntries({\n rewritten,\n dryRun,\n changed,\n nextItemDocument: nextItem.document,\n author,\n message: redactionMessage,\n });\n const historyVerify = verifyHistoryChain(rewrittenEntries);\n /* c8 ignore start -- invalid rewritten chains are covered by history verification unit tests. */\n if (!historyVerify.ok) {\n throw new PmCliError(\n `history-redact produced an invalid rewritten chain (${historyVerify.errors.join(\", \")}).`,\n EXIT_CODE.GENERIC_FAILURE,\n );\n }\n /* c8 ignore stop */\n\n if (!dryRun && changed) {\n warnings.push(\n ...(await applyHistoryRedactRewrite({\n pmRoot,\n subject,\n settings,\n typeRegistry,\n historyRawBeforeLock,\n currentItem,\n nextItem,\n author,\n force: options.force,\n rewrittenEntries,\n })),\n );\n }\n\n return {\n id: subject.id,\n dry_run: dryRun,\n changed,\n patterns: {\n literals: rules.filter((rule): rule is LiteralRule => rule.kind === \"literal\").map((rule) => rule.value),\n regex: rules.filter((rule): rule is RegexRule => rule.kind === \"regex\").map((rule) => `/${rule.source}/${rule.flags}`),\n replacement,\n },\n history: {\n path: subject.historyPath,\n entries_scanned: historyEntries.length,\n entries_changed: rewritten.entriesChanged,\n replacements: rewritten.replacements,\n hash_mismatches_before: integritySnapshot.hashMismatchesBefore,\n hash_mismatches_after: integritySnapshot.hashMismatchesAfter,\n preexisting_hash_mismatches: preexistingHashMismatches,\n audit_entry_added: auditEntryAdded,\n verify_ok: historyVerify.ok,\n verify_errors: historyVerify.errors,\n },\n item: {\n existed_before: currentItem.path !== null,\n exists_after: nextItem.path !== null,\n path_before: currentItem.path,\n path_after: nextItem.path,\n changed: itemChanged,\n },\n /* c8 ignore next -- warning dedupe ordering is covered indirectly by command-level smoke tests. */\n warnings: [...new Set(warnings)].sort((left, right) => left.localeCompare(right)),\n generated_at: nowIso(),\n };\n}\n\nexport const _testOnly = {\n applyLiteralRule,\n applyRegexRule,\n buildRedactionRules,\n hasItemMetadata,\n normalizeRegexFlags,\n normalizeStringArrayInput,\n parseRegexRule,\n redactStringValue,\n redactUnknownValue,\n};\n","/**\n * @module core/history/history-rewrite\n *\n * Implements append-only history and replay behavior for History Rewrite.\n */\nimport { readFileIfExists } from \"../fs/fs-utils.js\";\nimport type { ItemTypeRegistry } from \"../item/type-registry.js\";\nimport { acquireLock } from \"../lock/lock.js\";\nimport { EXIT_CODE } from \"../shared/constants.js\";\nimport { PmCliError } from \"../shared/errors.js\";\nimport { locateItem, readLocatedItem } from \"../store/item-store.js\";\nimport { resolveGovernanceKnobs } from \"../store/settings.js\";\nimport type { ItemDocument, PmSettings } from \"../../types/index.js\";\n\ntype LoadedItem = Awaited<ReturnType<typeof readLocatedItem>>;\n\n/**\n * Documents the history rewrite subject payload exchanged by command, SDK, and package integrations.\n */\nexport interface HistoryRewriteSubject {\n id: string;\n historyPath: string;\n}\n\n/**\n * Documents the history rewrite ownership params payload exchanged by command, SDK, and package integrations.\n */\nexport interface HistoryRewriteOwnershipParams {\n itemDocument: ItemDocument | null;\n subjectId: string;\n author: string;\n force: boolean | undefined;\n settings: PmSettings;\n}\n\n/**\n * Apply ownership_enforcement governance to a history-rewriting operation.\n * Returns the warning(s) the caller should append (empty when no conflict or strict-throws).\n * Throws PmCliError(CONFLICT) in strict mode when the assignee conflicts and --force is not set.\n */\nexport function checkHistoryRewriteOwnership(params: HistoryRewriteOwnershipParams): string[] {\n if (!params.itemDocument) return [];\n const assigned = params.itemDocument.metadata?.assignee?.trim();\n if (!assigned || assigned === params.author || params.force) return [];\n\n const governance = resolveGovernanceKnobs(params.settings);\n if (governance.ownership_enforcement === \"strict\") {\n throw new PmCliError(\n `Item ${params.subjectId} is assigned to ${assigned}. Use --force to override.`,\n EXIT_CODE.CONFLICT,\n );\n }\n if (governance.ownership_enforcement === \"warn\") {\n return [`ownership_warning:assignee_conflict:${params.subjectId}:${assigned}`];\n }\n return [];\n}\n\n/**\n * Documents the verify history rewrite drift params payload exchanged by command, SDK, and package integrations.\n */\nexport interface VerifyHistoryRewriteDriftParams {\n pmRoot: string;\n subject: HistoryRewriteSubject;\n settings: PmSettings;\n typeRegistry: ItemTypeRegistry;\n historyRawBeforeLock: string | null;\n currentItemRawBeforeLock: string | null;\n /** Short operation name used in the conflict message (e.g. \"history-redact\"). */\n operation: string;\n}\n\n/**\n * Documents the verified history rewrite state payload exchanged by command, SDK, and package integrations.\n */\nexport interface VerifiedHistoryRewriteState {\n historyRawUnderLock: string | null;\n locatedUnderLock: Awaited<ReturnType<typeof locateItem>>;\n loadedItemUnderLock: LoadedItem | null;\n}\n\n/**\n * Re-read the history stream and the located item document under the acquired lock and\n * compare both with the pre-lock raw snapshots. Throws PmCliError(CONFLICT) if either\n * diverged while waiting for the lock so the caller surfaces an actionable retry.\n */\nexport async function verifyHistoryRewriteNoDrift(\n params: VerifyHistoryRewriteDriftParams,\n): Promise<VerifiedHistoryRewriteState> {\n const historyRawUnderLock = await readFileIfExists(params.subject.historyPath);\n if (historyRawUnderLock !== params.historyRawBeforeLock) {\n throw new PmCliError(\n `History for ${params.subject.id} changed while waiting for lock; retry ${params.operation}.`,\n EXIT_CODE.CONFLICT,\n );\n }\n const locatedUnderLock = await locateItem(\n params.pmRoot,\n params.subject.id,\n params.settings.id_prefix,\n params.settings.item_format,\n params.typeRegistry.type_to_folder,\n );\n const loadedItemUnderLock = locatedUnderLock\n ? await readLocatedItem(locatedUnderLock, { schema: params.settings.schema })\n : null;\n if ((loadedItemUnderLock?.raw ?? null) !== (params.currentItemRawBeforeLock ?? null)) {\n throw new PmCliError(\n `Item ${params.subject.id} changed while waiting for lock; retry ${params.operation}.`,\n EXIT_CODE.CONFLICT,\n );\n }\n return { historyRawUnderLock, locatedUnderLock, loadedItemUnderLock };\n}\n\n/**\n * Documents the execute history rewrite params payload exchanged by command, SDK, and package integrations.\n */\nexport interface ExecuteHistoryRewriteParams {\n pmRoot: string;\n subject: HistoryRewriteSubject;\n settings: PmSettings;\n typeRegistry: ItemTypeRegistry;\n historyRawBeforeLock: string | null;\n currentItemRawBeforeLock: string | null;\n /** Short operation name used in conflict guidance (e.g. \"history-redact\"). */\n operation: string;\n author: string;\n force: boolean | undefined;\n itemDocument: ItemDocument | null;\n applyRewrite: (verified: VerifiedHistoryRewriteState) => Promise<void>;\n applyPostRewrite?: (verified: VerifiedHistoryRewriteState) => Promise<string[]>;\n}\n\n/**\n * Shared lock/verify/ownership orchestration for history-rewrite commands.\n * Callers provide the operation-specific write/rollback logic and optional\n * post-write hook execution while this helper enforces the common governance +\n * lock sequencing contract.\n */\nexport async function executeHistoryRewrite(params: ExecuteHistoryRewriteParams): Promise<string[]> {\n const warnings = [...checkHistoryRewriteOwnership({\n itemDocument: params.itemDocument,\n subjectId: params.subject.id,\n author: params.author,\n force: params.force,\n settings: params.settings,\n })];\n const releaseLock = await acquireLock(\n params.pmRoot,\n params.subject.id,\n params.settings.locks.ttl_seconds,\n params.author,\n Boolean(params.force),\n params.settings.governance.force_required_for_stale_lock,\n );\n try {\n const verified = await verifyHistoryRewriteNoDrift({\n pmRoot: params.pmRoot,\n subject: params.subject,\n settings: params.settings,\n typeRegistry: params.typeRegistry,\n historyRawBeforeLock: params.historyRawBeforeLock,\n currentItemRawBeforeLock: params.currentItemRawBeforeLock,\n operation: params.operation,\n });\n await params.applyRewrite(verified);\n if (params.applyPostRewrite) {\n warnings.push(...(await params.applyPostRewrite(verified)));\n }\n return warnings;\n } finally {\n await releaseLock();\n }\n}\n"],"names":[],"mappings":"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","debugId":"c93111d6-70b7-5f76-bbd9-f0cb8697e61b"}
|
|
@@ -3,16 +3,16 @@
|
|
|
3
3
|
import {
|
|
4
4
|
hashDocument,
|
|
5
5
|
toItemRecord
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-NRZS637N.js";
|
|
7
7
|
import {
|
|
8
8
|
canonicalDocument
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-KN3URLKS.js";
|
|
10
10
|
import {
|
|
11
11
|
FRONT_MATTER_KEY_ORDER,
|
|
12
12
|
orderObject,
|
|
13
13
|
sha256Hex,
|
|
14
14
|
stableStringify
|
|
15
|
-
} from "./chunk-
|
|
15
|
+
} from "./chunk-I66WE2HE.js";
|
|
16
16
|
|
|
17
17
|
// dist/core/history/replay.js
|
|
18
18
|
import jsonPatch from "fast-json-patch";
|
|
@@ -233,6 +233,6 @@ export {
|
|
|
233
233
|
reanchorHistoryEntries,
|
|
234
234
|
historyEntriesToRaw
|
|
235
235
|
};
|
|
236
|
-
//# sourceMappingURL=chunk-
|
|
236
|
+
//# sourceMappingURL=chunk-2ASNV4DH.js.map
|
|
237
237
|
|
|
238
238
|
//# debugId=be42ed54-a5b3-5603-ac08-e05799a50836
|
|
@@ -4,7 +4,7 @@ import {
|
|
|
4
4
|
EXIT_CODE,
|
|
5
5
|
PmCliError,
|
|
6
6
|
resolveTypeName
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-I66WE2HE.js";
|
|
8
8
|
|
|
9
9
|
// dist/cli/shared-parsers.js
|
|
10
10
|
function parseLimit(raw, label = "--limit") {
|
|
@@ -50,6 +50,6 @@ export {
|
|
|
50
50
|
parsePriority,
|
|
51
51
|
parseType
|
|
52
52
|
};
|
|
53
|
-
//# sourceMappingURL=chunk-
|
|
53
|
+
//# sourceMappingURL=chunk-2CHRYUXL.js.map
|
|
54
54
|
|
|
55
55
|
//# debugId=08c64439-a066-596c-9d38-8467691dc92e
|
|
@@ -1,12 +1,12 @@
|
|
|
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]="33581dc1-5c45-5c5b-8256-22bd0ecc8e6b")}catch(e){}}();
|
|
3
3
|
import {
|
|
4
4
|
EXIT_CODE,
|
|
5
5
|
runActiveCommandOverride,
|
|
6
6
|
runActiveRendererOverride,
|
|
7
7
|
runActiveServiceOverrideSync,
|
|
8
8
|
setActiveCommandResult
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-I66WE2HE.js";
|
|
10
10
|
|
|
11
11
|
// dist/core/output/mutation-projection.js
|
|
12
12
|
var CHANGED_FIELDS_KEY = "changed_fields";
|
|
@@ -46,12 +46,41 @@ function replaceRows(envelope, rows) {
|
|
|
46
46
|
projected[ROWS_KEY] = rows;
|
|
47
47
|
return projected;
|
|
48
48
|
}
|
|
49
|
+
function projectIdOnlyResult(result) {
|
|
50
|
+
if (!isPlainObject(result) || !isPlainObject(result.item)) {
|
|
51
|
+
return null;
|
|
52
|
+
}
|
|
53
|
+
const id = typeof result.item.id === "string" ? result.item.id : void 0;
|
|
54
|
+
const status = typeof result.item.status === "string" ? result.item.status : void 0;
|
|
55
|
+
if (!id) {
|
|
56
|
+
return null;
|
|
57
|
+
}
|
|
58
|
+
return status ? { id, status } : { id };
|
|
59
|
+
}
|
|
60
|
+
function compactUpdateManyRows(envelope) {
|
|
61
|
+
const rows = isUpdateManyMutationEnvelope(envelope) ? envelope[ROWS_KEY] : void 0;
|
|
62
|
+
if (!Array.isArray(rows)) {
|
|
63
|
+
return { projected: envelope, changed: false };
|
|
64
|
+
}
|
|
65
|
+
let rowsChanged = false;
|
|
66
|
+
const nextRows = rows.map((row) => {
|
|
67
|
+
if (!isPlainObject(row)) {
|
|
68
|
+
return row;
|
|
69
|
+
}
|
|
70
|
+
const compactedRow = compactOwnChangedFields(row);
|
|
71
|
+
if (compactedRow) {
|
|
72
|
+
rowsChanged = true;
|
|
73
|
+
return compactedRow;
|
|
74
|
+
}
|
|
75
|
+
return row;
|
|
76
|
+
});
|
|
77
|
+
return rowsChanged ? { projected: replaceRows(envelope, nextRows), changed: true } : { projected: envelope, changed: false };
|
|
78
|
+
}
|
|
49
79
|
function projectMutationResult(result, options = {}) {
|
|
50
|
-
if (options.idOnly === true
|
|
51
|
-
const
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
return status ? { id, status } : { id };
|
|
80
|
+
if (options.idOnly === true) {
|
|
81
|
+
const idOnly = projectIdOnlyResult(result);
|
|
82
|
+
if (idOnly !== null) {
|
|
83
|
+
return idOnly;
|
|
55
84
|
}
|
|
56
85
|
}
|
|
57
86
|
const mode = options.changedFields ?? "full";
|
|
@@ -65,24 +94,10 @@ function projectMutationResult(result, options = {}) {
|
|
|
65
94
|
projected = compactedTop;
|
|
66
95
|
changed = true;
|
|
67
96
|
}
|
|
68
|
-
const
|
|
69
|
-
if (
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
if (!isPlainObject(row)) {
|
|
73
|
-
return row;
|
|
74
|
-
}
|
|
75
|
-
const compactedRow = compactOwnChangedFields(row);
|
|
76
|
-
if (compactedRow) {
|
|
77
|
-
rowsChanged = true;
|
|
78
|
-
return compactedRow;
|
|
79
|
-
}
|
|
80
|
-
return row;
|
|
81
|
-
});
|
|
82
|
-
if (rowsChanged) {
|
|
83
|
-
projected = replaceRows(projected, nextRows);
|
|
84
|
-
changed = true;
|
|
85
|
-
}
|
|
97
|
+
const rowProjection = compactUpdateManyRows(projected);
|
|
98
|
+
if (rowProjection.changed) {
|
|
99
|
+
projected = rowProjection.projected;
|
|
100
|
+
changed = true;
|
|
86
101
|
}
|
|
87
102
|
return changed ? projected : result;
|
|
88
103
|
}
|
|
@@ -334,6 +349,6 @@ export {
|
|
|
334
349
|
printResult,
|
|
335
350
|
printError
|
|
336
351
|
};
|
|
337
|
-
//# sourceMappingURL=chunk-
|
|
352
|
+
//# sourceMappingURL=chunk-2KWL5NPW.js.map
|
|
338
353
|
|
|
339
|
-
//# debugId=
|
|
354
|
+
//# debugId=33581dc1-5c45-5c5b-8256-22bd0ecc8e6b
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../../../../core/output/mutation-projection.ts","../../../../../../../../core/output/output.ts"],"sourcesContent":["/**\n * Shared projection helper for mutation command results.\n *\n * Mutation commands (create/update/close/append/update-many) return a result\n * envelope that carries a `changed_fields` string array. On create this array simply\n * re-lists every field the command just set, which the item echo above it already\n * shows, so for high-volume agent loops it is ~50% redundant payload. This helper\n * lets the CLI (`--no-changed-fields`) and the MCP agent path trim that array down\n * to a deterministic `changed_field_count` without losing mutation evidence.\n *\n * Compaction is deliberately scoped to the mutation envelope only:\n * - the envelope's own top-level `changed_fields` (create/update/close/append), and\n * - `rows[*].changed_fields` (update-many reports its delta per row).\n * It does NOT recurse into arbitrary nested objects, so unrelated payloads that\n * legitimately carry `changed_fields` (for example `pm history --diff` entries, or a\n * custom runtime metadata field) are left untouched.\n *\n * The helper is pure and side-effect free, reused by both the output layer and the\n * MCP server, and returns the original reference unchanged when nothing is compacted.\n */\n\n/** Controls whether mutation output keeps full changed fields or compact counts. */\nexport type ChangedFieldsMode = \"full\" | \"compact\";\n\n/**\n * Documents the mutation projection options payload exchanged by command, SDK, and package integrations.\n */\nexport interface MutationProjectionOptions {\n /** Defaults to \"full\" (unchanged output). \"compact\" drops the array, keeping a count. */\n changedFields?: ChangedFieldsMode;\n /** Return only id/status for single-item mutation envelopes. */\n idOnly?: boolean;\n}\n\nconst CHANGED_FIELDS_KEY = \"changed_fields\";\nconst CHANGED_FIELD_COUNT_KEY = \"changed_field_count\";\nconst ROWS_KEY = \"rows\";\nconst UPDATE_MANY_MUTATION_MODES = new Set([\"apply\", \"rollback\"]);\n\nfunction isPlainObject(value: unknown): value is Record<string, unknown> {\n if (typeof value !== \"object\" || value === null || Array.isArray(value)) {\n return false;\n }\n const proto = Object.getPrototypeOf(value);\n return proto === null || proto === Object.prototype;\n}\n\n/** Replace a single envelope's own top-level `changed_fields` array with a count. */\nfunction compactOwnChangedFields(envelope: Record<string, unknown>): Record<string, unknown> | null {\n const changedFields = envelope[CHANGED_FIELDS_KEY];\n if (!Array.isArray(changedFields)) {\n return null;\n }\n const projected: Record<string, unknown> =\n Object.getPrototypeOf(envelope) === null ? Object.create(null) : {};\n for (const [key, value] of Object.entries(envelope)) {\n if (key !== CHANGED_FIELDS_KEY) {\n projected[key] = value;\n }\n }\n projected[CHANGED_FIELD_COUNT_KEY] = changedFields.length;\n return projected;\n}\n\nfunction isMutationEnvelope(value: Record<string, unknown>): boolean {\n return \"item\" in value && Array.isArray(value[CHANGED_FIELDS_KEY]);\n}\n\nfunction isUpdateManyMutationEnvelope(value: Record<string, unknown>): boolean {\n return (\n typeof value.mode === \"string\" &&\n UPDATE_MANY_MUTATION_MODES.has(value.mode) &&\n Array.isArray(value[ROWS_KEY])\n );\n}\n\nfunction replaceRows(envelope: Record<string, unknown>, rows: unknown[]): Record<string, unknown> {\n const projected: Record<string, unknown> =\n Object.getPrototypeOf(envelope) === null ? Object.create(null) : {};\n Object.assign(projected, envelope);\n projected[ROWS_KEY] = rows;\n return projected;\n}\n\nfunction projectIdOnlyResult(result: unknown): unknown | null {\n if (!isPlainObject(result) || !isPlainObject(result.item)) {\n return null;\n }\n const id = typeof result.item.id === \"string\" ? result.item.id : undefined;\n const status = typeof result.item.status === \"string\" ? result.item.status : undefined;\n if (!id) {\n return null;\n }\n return status ? { id, status } : { id };\n}\n\nfunction compactUpdateManyRows(envelope: Record<string, unknown>): { projected: Record<string, unknown>; changed: boolean } {\n const rows = isUpdateManyMutationEnvelope(envelope) ? envelope[ROWS_KEY] : undefined;\n if (!Array.isArray(rows)) {\n return { projected: envelope, changed: false };\n }\n let rowsChanged = false;\n const nextRows = rows.map((row) => {\n if (!isPlainObject(row)) {\n return row;\n }\n const compactedRow = compactOwnChangedFields(row);\n if (compactedRow) {\n rowsChanged = true;\n return compactedRow;\n }\n return row;\n });\n return rowsChanged\n ? { projected: replaceRows(envelope, nextRows), changed: true }\n : { projected: envelope, changed: false };\n}\n\n/**\n * Returns a copy of a mutation result with the envelope `changed_fields` arrays\n * replaced by `changed_field_count` when compact mode is requested. Inputs that are\n * not a mutation envelope (or full mode) are returned unchanged (same reference).\n */\nexport function projectMutationResult(result: unknown, options: MutationProjectionOptions = {}): unknown {\n if (options.idOnly === true) {\n const idOnly = projectIdOnlyResult(result);\n if (idOnly !== null) {\n return idOnly;\n }\n }\n\n const mode = options.changedFields ?? \"full\";\n if (mode === \"full\" || !isPlainObject(result)) {\n return result;\n }\n\n let changed = false;\n let projected: Record<string, unknown> = result;\n\n const compactedTop = isMutationEnvelope(result) ? compactOwnChangedFields(result) : null;\n if (compactedTop !== null) {\n projected = compactedTop;\n changed = true;\n }\n\n const rowProjection = compactUpdateManyRows(projected);\n if (rowProjection.changed) {\n projected = rowProjection.projected;\n changed = true;\n }\n\n return changed ? projected : result;\n}\n","/**\n * @module core/output/output\n *\n * Formats compact human and machine output for Output.\n */\nimport {\n runActiveCommandOverride,\n runActiveRendererOverride,\n runActiveServiceOverrideSync,\n setActiveCommandResult,\n} from \"../extensions/index.js\";\nimport { EXIT_CODE } from \"../shared/constants.js\";\nimport { projectMutationResult } from \"./mutation-projection.js\";\n\n/**\n * Documents the output options payload exchanged by command, SDK, and package integrations.\n */\nexport interface OutputOptions {\n json?: boolean;\n quiet?: boolean;\n /** When true, mutation results drop the verbose changed_fields array (keeps changed_field_count). */\n noChangedFields?: boolean;\n /** When true, single-item mutation results print only id and status. */\n idOnly?: boolean;\n defaultOutputFormat?: \"toon\" | \"json\";\n command?: string;\n commandArgs?: string[];\n commandOptions?: Record<string, unknown>;\n pmRoot?: string;\n}\n\ninterface NodeLikeError {\n code?: string;\n}\n\nconst NATIVE_OUTPUT_MARKER = \"__pm_native_output\";\n\nlet streamErrorHandlersInstalled = false;\ntype OutputStreamTarget = \"stdout\" | \"stderr\";\n\nfunction isPlainObject(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n\nfunction shouldUseNativeOutput(result: unknown): boolean {\n return isPlainObject(result) && result[NATIVE_OUTPUT_MARKER] === true;\n}\n\nfunction stripNativeOutputMarker<T>(result: T): T {\n if (!isPlainObject(result) || result[NATIVE_OUTPUT_MARKER] !== true) {\n return result;\n }\n const { [NATIVE_OUTPUT_MARKER]: _marker, ...rest } = result;\n return rest as T;\n}\n\nfunction isBrokenPipeError(error: unknown): boolean {\n return typeof error === \"object\" && error !== null && (error as NodeLikeError).code === \"EPIPE\";\n}\n\nfunction markStdoutBrokenPipeExitCode(): void {\n if (process.exitCode === undefined || process.exitCode === EXIT_CODE.SUCCESS) {\n process.exitCode = EXIT_CODE.SUCCESS;\n }\n}\n\nfunction markStderrBrokenPipeExitCode(): void {\n if (process.exitCode === undefined || process.exitCode === EXIT_CODE.SUCCESS) {\n process.exitCode = EXIT_CODE.GENERIC_FAILURE;\n }\n}\n\nfunction markBrokenPipeExitCode(target: OutputStreamTarget): void {\n if (target === \"stdout\") {\n markStdoutBrokenPipeExitCode();\n return;\n }\n markStderrBrokenPipeExitCode();\n}\n\nfunction handleUnhandledStreamError(error: unknown): void {\n const unhandled = error instanceof Error ? error : new Error(String(error));\n setImmediate(() => {\n throw unhandled;\n });\n}\n\nfunction installStreamErrorHandlers(): void {\n if (streamErrorHandlersInstalled) {\n return;\n }\n streamErrorHandlersInstalled = true;\n process.stdout.on(\"error\", (error: unknown) => {\n if (isBrokenPipeError(error)) {\n markBrokenPipeExitCode(\"stdout\");\n return;\n }\n handleUnhandledStreamError(error);\n });\n process.stderr.on(\"error\", (error: unknown) => {\n if (isBrokenPipeError(error)) {\n markBrokenPipeExitCode(\"stderr\");\n return;\n }\n handleUnhandledStreamError(error);\n });\n}\n\nfunction writeToStream(target: OutputStreamTarget, text: string): boolean {\n installStreamErrorHandlers();\n try {\n if (target === \"stdout\") {\n process.stdout.write(text);\n } else {\n process.stderr.write(text);\n }\n return true;\n } catch (error: unknown) {\n if (isBrokenPipeError(error)) {\n markBrokenPipeExitCode(target);\n return false;\n }\n throw error;\n }\n}\n\n/**\n * Implements write stdout for the public runtime surface of this module.\n */\nexport function writeStdout(text: string): boolean {\n return writeToStream(\"stdout\", text);\n}\n\n/**\n * Implements write stderr for the public runtime surface of this module.\n */\nexport function writeStderr(text: string): boolean {\n return writeToStream(\"stderr\", text);\n}\n\nfunction renderScalar(value: unknown): string {\n if (typeof value === \"string\") return JSON.stringify(value);\n if (typeof value === \"number\" || typeof value === \"boolean\") return String(value);\n if (value === null) return \"null\";\n return JSON.stringify(value);\n}\n\nfunction compactToonValue(value: unknown): unknown | undefined {\n if (value === null || value === undefined) {\n return undefined;\n }\n\n if (Array.isArray(value)) {\n const compactedEntries = value\n .map((entry) => compactToonValue(entry))\n .filter((entry): entry is unknown => entry !== undefined);\n return compactedEntries.length > 0 ? compactedEntries : undefined;\n }\n\n if (isPlainObject(value)) {\n const compacted: Record<string, unknown> = {};\n for (const [key, entry] of Object.entries(value)) {\n const compactedEntry = compactToonValue(entry);\n if (compactedEntry !== undefined) {\n compacted[key] = compactedEntry;\n }\n }\n return Object.keys(compacted).length > 0 ? compacted : undefined;\n }\n\n return value;\n}\n\nfunction renderToonValue(value: unknown, depth: number): string {\n const indent = \" \".repeat(depth);\n\n if (Array.isArray(value)) {\n if (value.length === 0) return \"[]\";\n return value\n .map((entry) => {\n if (!isPlainObject(entry) && !Array.isArray(entry)) {\n return `${indent}- ${renderScalar(entry)}`;\n }\n const rendered = renderToonValue(entry, depth + 1);\n const lines = rendered.split(\"\\n\");\n const [firstLine, ...rest] = lines;\n if (rest.length === 0) {\n return `${indent}- ${firstLine.trimStart()}`;\n }\n return `${indent}- ${firstLine.trimStart()}\\n${rest.join(\"\\n\")}`;\n })\n .join(\"\\n\");\n }\n\n if (isPlainObject(value)) {\n const entries = Object.entries(value);\n if (entries.length === 0) return \"{}\";\n return entries\n .map(([key, entry]) => {\n if (!isPlainObject(entry) && !Array.isArray(entry)) {\n return `${indent}${key}: ${renderScalar(entry)}`;\n }\n if (Array.isArray(entry) && entry.length === 0) {\n return `${indent}${key}: []`;\n }\n if (isPlainObject(entry) && Object.keys(entry).length === 0) {\n return `${indent}${key}: {}`;\n }\n return `${indent}${key}:\\n${renderToonValue(entry, depth + 1)}`;\n })\n .join(\"\\n\");\n }\n\n return `${indent}${renderScalar(value)}`;\n}\n\nfunction renderDefaultMarkdownResult(value: unknown): string | null {\n if (!isPlainObject(value) || value.output_default !== \"markdown\") {\n return null;\n }\n if (typeof value.view !== \"string\" || !Array.isArray(value.events) || !Array.isArray(value.days)) {\n return null;\n }\n const lines = [`# pm calendar (${value.view})`, \"\"];\n const summary = isPlainObject(value.summary) ? value.summary : {};\n lines.push(`- events: ${String(summary.events ?? 0)}`);\n lines.push(\"\");\n if (value.events.length === 0) {\n lines.push(\"No calendar events matched the selected filters.\");\n return `${lines.join(\"\\n\")}\\n`;\n }\n for (const event of value.events) {\n if (!isPlainObject(event)) {\n continue;\n }\n const kind = typeof event.kind === \"string\" ? event.kind : \"event\";\n const title = typeof event.item_title === \"string\" ? event.item_title : \"\";\n const itemId = typeof event.item_id === \"string\" ? event.item_id : \"\";\n const reminderText = typeof event.reminder_text === \"string\" && event.reminder_text.length > 0 ? ` ${event.reminder_text}` : \"\";\n lines.push(`- [${kind}] ${itemId} ${title}${reminderText}`.trim());\n }\n return `${lines.join(\"\\n\")}\\n`;\n}\n\n/**\n * Implements format output for the public runtime surface of this module.\n */\nexport function formatOutput(result: unknown, options: OutputOptions): string {\n const commandOverride = runActiveCommandOverride(result);\n const nativeOutput = shouldUseNativeOutput(commandOverride.result);\n const effectiveResult = stripNativeOutputMarker(commandOverride.result);\n setActiveCommandResult(effectiveResult);\n const format =\n options.json === true\n ? \"json\"\n : options.json === false\n ? \"toon\"\n : options.defaultOutputFormat === \"json\"\n ? \"json\"\n : \"toon\";\n const serviceOverride = nativeOutput ? { handled: false, result: effectiveResult } : runActiveServiceOverrideSync(\"output_format\", {\n command: options.command,\n args: options.commandArgs,\n command_options: options.commandOptions,\n global: { ...options },\n pm_root: options.pmRoot,\n format,\n options: { ...options },\n result: effectiveResult,\n });\n if (serviceOverride.handled && typeof serviceOverride.result === \"string\") {\n return serviceOverride.result.endsWith(\"\\n\") ? serviceOverride.result : `${serviceOverride.result}\\n`;\n }\n const outputResult = serviceOverride.handled ? serviceOverride.result : effectiveResult;\n if (format === \"toon\") {\n const markdownDefault = renderDefaultMarkdownResult(outputResult);\n if (markdownDefault !== null) {\n return markdownDefault;\n }\n }\n const rendererOverride = nativeOutput ? { rendered: null } : runActiveRendererOverride(format, outputResult);\n if (rendererOverride.rendered !== null) {\n return rendererOverride.rendered.endsWith(\"\\n\") ? rendererOverride.rendered : `${rendererOverride.rendered}\\n`;\n }\n if (format === \"json\") {\n return `${JSON.stringify(outputResult, null, 2)}\\n`;\n }\n const compactedToon = compactToonValue(outputResult);\n if (compactedToon === undefined) {\n return \"{}\\n\";\n }\n return `${renderToonValue(compactedToon, 0)}\\n`;\n}\n\n/**\n * Implements print result for the public runtime surface of this module.\n */\nexport function printResult(result: unknown, options: OutputOptions): void {\n const projected = options.idOnly\n ? projectMutationResult(result, { idOnly: true })\n : options.noChangedFields\n ? projectMutationResult(result, { changedFields: \"compact\" })\n : result;\n const rendered = formatOutput(projected, options);\n if (options.quiet) {\n return;\n }\n writeStdout(rendered);\n}\n\n/**\n * Implements print error for the public runtime surface of this module.\n */\nexport function printError(message: string): void {\n const override = runActiveServiceOverrideSync(\"error_format\", {\n message,\n });\n const rendered = override.handled && typeof override.result === \"string\" ? override.result : message;\n writeStderr(rendered.endsWith(\"\\n\") ? rendered : `${rendered}\\n`);\n}\n\nexport const outputTestOnly = {\n compactToonValue,\n renderToonValue,\n};\n"],"names":["isPlainObject"],"mappings":"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","debugId":"33581dc1-5c45-5c5b-8256-22bd0ecc8e6b"}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import {
|
|
2
2
|
toNonEmptyStringOrUndefined
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-7NSPKJUS.js";
|
|
4
4
|
|
|
5
5
|
// dist/core/governance/metadata-coverage.js
|
|
6
6
|
!(function() {
|
|
7
7
|
try {
|
|
8
8
|
var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}, n = new e.Error().stack;
|
|
9
|
-
n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "
|
|
9
|
+
n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "f14cd0bc-bf31-5676-8e21-345fb9ecdd0d");
|
|
10
10
|
} catch (e2) {
|
|
11
11
|
}
|
|
12
12
|
})();
|
|
@@ -76,40 +76,32 @@ function isReleaseMissing(item) {
|
|
|
76
76
|
function hasMissingMetadataFilter(filters) {
|
|
77
77
|
return Boolean(filters.acMissing || filters.estimatesMissing || filters.resolutionMissing || filters.reviewerMissing || filters.riskMissing || filters.confidenceMissing || filters.sprintMissing || filters.releaseMissing || filters.metadataMissing);
|
|
78
78
|
}
|
|
79
|
+
function itemMatchesSpecificMetadataFilters(item, filters, classifier) {
|
|
80
|
+
const checks = [
|
|
81
|
+
[filters.acMissing, isAcMissing(item)],
|
|
82
|
+
[filters.estimatesMissing, isEstimateMissing(item)],
|
|
83
|
+
[filters.resolutionMissing, isResolutionMissing(item, classifier)],
|
|
84
|
+
[filters.reviewerMissing, isReviewerMissing(item)],
|
|
85
|
+
[filters.riskMissing, isRiskMissing(item)],
|
|
86
|
+
[filters.confidenceMissing, isConfidenceMissing(item)],
|
|
87
|
+
[filters.sprintMissing, isSprintMissing(item)],
|
|
88
|
+
[filters.releaseMissing, isReleaseMissing(item)]
|
|
89
|
+
];
|
|
90
|
+
return checks.every(([requested, matched]) => requested !== true || matched);
|
|
91
|
+
}
|
|
92
|
+
function itemMatchesCoreMetadataMissingUnion(item, classifier) {
|
|
93
|
+
return isAcMissing(item) || isEstimateMissing(item) || isResolutionMissing(item, classifier);
|
|
94
|
+
}
|
|
79
95
|
function itemMatchesMissingMetadata(item, filters, classifier) {
|
|
80
96
|
if (!hasMissingMetadataFilter(filters)) {
|
|
81
97
|
return true;
|
|
82
98
|
}
|
|
83
|
-
if (
|
|
84
|
-
return false;
|
|
85
|
-
}
|
|
86
|
-
if (filters.estimatesMissing && !isEstimateMissing(item)) {
|
|
87
|
-
return false;
|
|
88
|
-
}
|
|
89
|
-
if (filters.resolutionMissing && !isResolutionMissing(item, classifier)) {
|
|
90
|
-
return false;
|
|
91
|
-
}
|
|
92
|
-
if (filters.reviewerMissing && !isReviewerMissing(item)) {
|
|
99
|
+
if (!itemMatchesSpecificMetadataFilters(item, filters, classifier)) {
|
|
93
100
|
return false;
|
|
94
101
|
}
|
|
95
|
-
if (filters.
|
|
102
|
+
if (filters.metadataMissing && !itemMatchesCoreMetadataMissingUnion(item, classifier)) {
|
|
96
103
|
return false;
|
|
97
104
|
}
|
|
98
|
-
if (filters.confidenceMissing && !isConfidenceMissing(item)) {
|
|
99
|
-
return false;
|
|
100
|
-
}
|
|
101
|
-
if (filters.sprintMissing && !isSprintMissing(item)) {
|
|
102
|
-
return false;
|
|
103
|
-
}
|
|
104
|
-
if (filters.releaseMissing && !isReleaseMissing(item)) {
|
|
105
|
-
return false;
|
|
106
|
-
}
|
|
107
|
-
if (filters.metadataMissing) {
|
|
108
|
-
const anyMissing = isAcMissing(item) || isEstimateMissing(item) || isResolutionMissing(item, classifier);
|
|
109
|
-
if (!anyMissing) {
|
|
110
|
-
return false;
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
105
|
return true;
|
|
114
106
|
}
|
|
115
107
|
var COVERAGE_FIELD_ORDER = [
|
|
@@ -270,4 +262,4 @@ export {
|
|
|
270
262
|
computeMetadataCoverage,
|
|
271
263
|
groupItemsByDimension
|
|
272
264
|
};
|
|
273
|
-
//# sourceMappingURL=chunk-
|
|
265
|
+
//# sourceMappingURL=chunk-36UGKF4O.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../../../../core/governance/metadata-coverage.ts"],
|
|
4
|
+
"sourcesContent": ["/**\n * Metadata governance & coverage observability primitives.\n *\n * One dependency-light module that powers the whole metadata-governance\n * surface: missing-field selection (pm list / pm update-many), coverage\n * percentages (pm stats --metadata-coverage / pm validate), and grouped\n * lifecycle breakdowns (pm stats --by-assignee/--by-tag/--by-priority,\n * pm aggregate explicit labels).\n *\n * The module is pure: it performs no IO and imports no heavy runtime\n * dependencies. Lifecycle semantics are injected via a {@link LifecycleClassifier}\n * so callers map their runtime status registry to lifecycle buckets while the\n * pure logic here stays trivially testable with a fake classifier.\n */\n\nimport { toNonEmptyStringOrUndefined } from \"../shared/primitives.js\";\n\n/** Minimal structural shape this module needs from an item's front matter. */\nexport interface CoverageItem {\n type: string;\n status: string;\n assignee?: string;\n tags?: string[];\n parent?: string;\n priority?: number;\n acceptance_criteria?: string;\n estimated_minutes?: number;\n resolution?: string;\n reviewer?: string;\n risk?: string;\n /** Confidence is a string-like enum or a numeric score depending on workspace. */\n confidence?: string | number;\n sprint?: string;\n release?: string;\n [key: string]: unknown;\n}\n\n/** Lifecycle buckets used by grouped breakdowns and distributions. */\nexport type LifecycleBucket =\n | \"open\"\n | \"in_progress\"\n | \"blocked\"\n | \"draft\"\n | \"closed\"\n | \"canceled\"\n | \"other\";\n\n/** Stable rendering order for lifecycle buckets. */\nexport const LIFECYCLE_BUCKET_ORDER: readonly LifecycleBucket[] = [\n \"open\",\n \"in_progress\",\n \"blocked\",\n \"draft\",\n \"closed\",\n \"canceled\",\n \"other\",\n] as const;\n\n/**\n * Classifies a raw status string into a lifecycle bucket and reports whether a\n * status is terminal (closed/canceled). Callers build this from their resolved\n * runtime status registry via {@link lifecycleClassifierFromStatusRegistry}.\n */\nexport interface LifecycleClassifier {\n classify(status: string): LifecycleBucket;\n isTerminal(status: string): boolean;\n}\n\n/** The subset of a resolved runtime status registry this module consumes. */\nexport interface StatusRegistryLike {\n alias_to_id: Map<string, string>;\n terminal_statuses: Set<string>;\n terminal_canceled_statuses: Set<string>;\n blocked_statuses: Set<string>;\n draft_statuses: Set<string>;\n active_statuses: Set<string>;\n open_status: string;\n}\n\nfunction normalizeStatus(status: string, registry: StatusRegistryLike): string {\n const trimmed = status.trim().toLowerCase();\n return registry.alias_to_id.get(trimmed) ?? trimmed;\n}\n\n/**\n * Adapt a resolved runtime status registry into a {@link LifecycleClassifier}.\n *\n * Precedence is deliberate and disjoint: canceled → closed → blocked → draft →\n * open → in_progress (active but not the default open status) → other.\n */\nexport function lifecycleClassifierFromStatusRegistry(registry: StatusRegistryLike): LifecycleClassifier {\n return {\n isTerminal(status: string): boolean {\n return registry.terminal_statuses.has(normalizeStatus(status, registry));\n },\n classify(status: string): LifecycleBucket {\n const id = normalizeStatus(status, registry);\n if (registry.terminal_canceled_statuses.has(id)) {\n return \"canceled\";\n }\n if (registry.terminal_statuses.has(id)) {\n return \"closed\";\n }\n if (registry.blocked_statuses.has(id)) {\n return \"blocked\";\n }\n if (registry.draft_statuses.has(id)) {\n return \"draft\";\n }\n if (id === registry.open_status) {\n return \"open\";\n }\n if (registry.active_statuses.has(id)) {\n return \"in_progress\";\n }\n return \"other\";\n },\n };\n}\n\n// ---------------------------------------------------------------------------\n// Missing-metadata predicates\n// ---------------------------------------------------------------------------\n\n/** True when an item has no non-empty acceptance_criteria. */\nexport function isAcMissing(item: CoverageItem): boolean {\n return toNonEmptyStringOrUndefined(item.acceptance_criteria) === undefined;\n}\n\n/** True when an item has no finite estimated_minutes. */\nexport function isEstimateMissing(item: CoverageItem): boolean {\n return !Number.isFinite(item.estimated_minutes);\n}\n\n/**\n * True when a terminal (closed/canceled) item has no non-empty resolution.\n * Resolution is only expected on terminal items, so open items are never\n * considered \"resolution-missing\".\n */\nexport function isResolutionMissing(item: CoverageItem, classifier: LifecycleClassifier): boolean {\n if (!classifier.isTerminal(item.status)) {\n return false;\n }\n return toNonEmptyStringOrUndefined(item.resolution) === undefined;\n}\n\n/** True when an item has no non-empty reviewer. */\nexport function isReviewerMissing(item: CoverageItem): boolean {\n return toNonEmptyStringOrUndefined(item.reviewer) === undefined;\n}\n\n/** True when an item has no non-empty risk level. */\nexport function isRiskMissing(item: CoverageItem): boolean {\n return toNonEmptyStringOrUndefined(item.risk) === undefined;\n}\n\n/**\n * True when an item has no confidence value. Confidence is a string-like enum\n * or a numeric score depending on workspace, so a finite number counts as\n * present and only blank/absent values are treated as missing.\n */\nexport function isConfidenceMissing(item: CoverageItem): boolean {\n if (typeof item.confidence === \"number\") {\n return !Number.isFinite(item.confidence);\n }\n return toNonEmptyStringOrUndefined(item.confidence) === undefined;\n}\n\n/** True when an item has no non-empty sprint. */\nexport function isSprintMissing(item: CoverageItem): boolean {\n return toNonEmptyStringOrUndefined(item.sprint) === undefined;\n}\n\n/** True when an item has no non-empty release. */\nexport function isReleaseMissing(item: CoverageItem): boolean {\n return toNonEmptyStringOrUndefined(item.release) === undefined;\n}\n\n/** Selection flags for {@link filterMissingMetadata}. */\nexport interface MissingMetadataFilters {\n acMissing?: boolean;\n estimatesMissing?: boolean;\n resolutionMissing?: boolean;\n reviewerMissing?: boolean;\n riskMissing?: boolean;\n confidenceMissing?: boolean;\n sprintMissing?: boolean;\n releaseMissing?: boolean;\n /** Match items missing ANY of the tracked metadata fields (union). */\n metadataMissing?: boolean;\n}\n\n/** True when any missing-metadata filter is requested. */\nexport function hasMissingMetadataFilter(filters: MissingMetadataFilters): boolean {\n return Boolean(\n filters.acMissing ||\n filters.estimatesMissing ||\n filters.resolutionMissing ||\n filters.reviewerMissing ||\n filters.riskMissing ||\n filters.confidenceMissing ||\n filters.sprintMissing ||\n filters.releaseMissing ||\n filters.metadataMissing,\n );\n}\n\nfunction itemMatchesSpecificMetadataFilters(\n item: CoverageItem,\n filters: MissingMetadataFilters,\n classifier: LifecycleClassifier,\n): boolean {\n const checks: Array<[boolean | undefined, boolean]> = [\n [filters.acMissing, isAcMissing(item)],\n [filters.estimatesMissing, isEstimateMissing(item)],\n [filters.resolutionMissing, isResolutionMissing(item, classifier)],\n [filters.reviewerMissing, isReviewerMissing(item)],\n [filters.riskMissing, isRiskMissing(item)],\n [filters.confidenceMissing, isConfidenceMissing(item)],\n [filters.sprintMissing, isSprintMissing(item)],\n [filters.releaseMissing, isReleaseMissing(item)],\n ];\n return checks.every(([requested, matched]) => requested !== true || matched);\n}\n\nfunction itemMatchesCoreMetadataMissingUnion(item: CoverageItem, classifier: LifecycleClassifier): boolean {\n return isAcMissing(item) || isEstimateMissing(item) || isResolutionMissing(item, classifier);\n}\n\n/**\n * Does a single item satisfy the requested missing-metadata filters?\n *\n * Specific flags (acMissing/estimatesMissing/resolutionMissing plus the\n * governance flags reviewerMissing/riskMissing/confidenceMissing/sprintMissing/\n * releaseMissing) are ANDed together so callers can narrow precisely.\n * `metadataMissing` is ORed in as a union shortcut for \"missing any of the\n * core tracked fields\" (acceptance_criteria/estimated_minutes/resolution); it\n * deliberately excludes the governance fields so the long-standing flag keeps\n * its original meaning. When no filter is requested the item passes.\n */\nexport function itemMatchesMissingMetadata(\n item: CoverageItem,\n filters: MissingMetadataFilters,\n classifier: LifecycleClassifier,\n): boolean {\n if (!hasMissingMetadataFilter(filters)) {\n return true;\n }\n if (!itemMatchesSpecificMetadataFilters(item, filters, classifier)) {\n return false;\n }\n if (filters.metadataMissing && !itemMatchesCoreMetadataMissingUnion(item, classifier)) {\n return false;\n }\n return true;\n}\n\n/** Filter a list of items by the requested missing-metadata predicates. */\nexport function filterMissingMetadata<T extends CoverageItem>(\n items: readonly T[],\n filters: MissingMetadataFilters,\n classifier: LifecycleClassifier,\n): T[] {\n if (!hasMissingMetadataFilter(filters)) {\n return [...items];\n }\n return items.filter((item) => itemMatchesMissingMetadata(item, filters, classifier));\n}\n\n// ---------------------------------------------------------------------------\n// Metadata coverage percentages\n// ---------------------------------------------------------------------------\n\n/** Coverage-tracked metadata fields. */\nexport type CoverageField =\n | \"acceptance_criteria\"\n | \"estimated_minutes\"\n | \"resolution\"\n | \"tags\"\n | \"parent\";\n\n/** Stable ordering of coverage fields for rendering. */\nexport const COVERAGE_FIELD_ORDER: readonly CoverageField[] = [\n \"acceptance_criteria\",\n \"estimated_minutes\",\n \"resolution\",\n \"tags\",\n \"parent\",\n] as const;\n\n/** Coverage of a single field: present vs applicable, with a rounded percent. */\nexport interface FieldCoverage {\n present: number;\n /** Items for which the field is expected (all items, except resolution = terminal only). */\n applicable: number;\n /** present/applicable * 100, rounded to one decimal; 100 when applicable is 0. */\n percent: number;\n}\n\n/**\n * Documents the metadata coverage report payload exchanged by command, SDK, and package integrations.\n */\nexport interface MetadataCoverageReport {\n overall: Record<CoverageField, FieldCoverage>;\n by_type: Record<string, Record<CoverageField, FieldCoverage>>;\n}\n\nfunction isFieldPresent(item: CoverageItem, field: CoverageField): boolean {\n switch (field) {\n case \"acceptance_criteria\":\n return !isAcMissing(item);\n case \"estimated_minutes\":\n return !isEstimateMissing(item);\n case \"resolution\":\n return toNonEmptyStringOrUndefined(item.resolution) !== undefined;\n case \"tags\":\n return Array.isArray(item.tags) && item.tags.length > 0;\n default:\n return toNonEmptyStringOrUndefined(item.parent) !== undefined;\n }\n}\n\n/** Whether a field applies to a given item (resolution only applies to terminal items). */\nfunction isFieldApplicable(item: CoverageItem, field: CoverageField, classifier: LifecycleClassifier): boolean {\n if (field === \"resolution\") {\n return classifier.isTerminal(item.status);\n }\n return true;\n}\n\nfunction roundPercent(present: number, applicable: number): number {\n if (applicable === 0) {\n return 100;\n }\n return Math.round((present / applicable) * 1000) / 10;\n}\n\nfunction emptyFieldCoverage(): Record<CoverageField, FieldCoverage> {\n const record = {} as Record<CoverageField, FieldCoverage>;\n for (const field of COVERAGE_FIELD_ORDER) {\n record[field] = { present: 0, applicable: 0, percent: 100 };\n }\n return record;\n}\n\nfunction accumulateCoverage(\n target: Record<CoverageField, FieldCoverage>,\n item: CoverageItem,\n classifier: LifecycleClassifier,\n): void {\n for (const field of COVERAGE_FIELD_ORDER) {\n if (!isFieldApplicable(item, field, classifier)) {\n continue;\n }\n const entry = target[field];\n entry.applicable += 1;\n if (isFieldPresent(item, field)) {\n entry.present += 1;\n }\n }\n}\n\nfunction finalizePercentages(record: Record<CoverageField, FieldCoverage>): void {\n for (const field of COVERAGE_FIELD_ORDER) {\n const entry = record[field];\n entry.percent = roundPercent(entry.present, entry.applicable);\n }\n}\n\n/**\n * Compute metadata coverage overall and per item type. For each tracked field\n * we report present/applicable counts and a rounded percentage. Resolution is\n * scoped to terminal items (its only applicable population).\n */\nexport function computeMetadataCoverage(\n items: readonly CoverageItem[],\n classifier: LifecycleClassifier,\n): MetadataCoverageReport {\n const overall = emptyFieldCoverage();\n const byType: Record<string, Record<CoverageField, FieldCoverage>> = {};\n for (const item of items) {\n accumulateCoverage(overall, item, classifier);\n const typeRecord = byType[item.type] ?? (byType[item.type] = emptyFieldCoverage());\n accumulateCoverage(typeRecord, item, classifier);\n }\n finalizePercentages(overall);\n for (const typeRecord of Object.values(byType)) {\n finalizePercentages(typeRecord);\n }\n return { overall, by_type: byType };\n}\n\n// ---------------------------------------------------------------------------\n// Grouped lifecycle breakdowns\n// ---------------------------------------------------------------------------\n\n/** Dimensions a breakdown can group by. */\nexport type GroupDimension = \"assignee\" | \"priority\" | \"tag\" | \"parent\" | \"type\" | \"status\";\n\n/** Explicit labels for empty/blank group keys, by dimension. */\nconst EMPTY_GROUP_LABELS: Record<GroupDimension, string> = {\n assignee: \"(unassigned)\",\n priority: \"(no priority)\",\n tag: \"(untagged)\",\n parent: \"(unparented)\",\n type: \"(untyped)\",\n status: \"(no status)\",\n};\n\n/** Explicit label for an empty/blank group value for a given dimension. */\nexport function emptyGroupLabel(dimension: GroupDimension): string {\n return EMPTY_GROUP_LABELS[dimension];\n}\n\n/**\n * Documents the group row payload exchanged by command, SDK, and package integrations.\n */\nexport interface GroupRow {\n /** Display label; explicit \"(unassigned)\"-style label for blank keys. */\n label: string;\n /** Stable structured key (null for the empty/blank group). */\n key: string | null;\n buckets: Record<LifecycleBucket, number>;\n total: number;\n}\n\n/**\n * Documents the grouped breakdown payload exchanged by command, SDK, and package integrations.\n */\nexport interface GroupedBreakdown {\n dimension: GroupDimension;\n rows: GroupRow[];\n /** Distinct items observed (an item can contribute to multiple tag rows). */\n total_items: number;\n}\n\n/**\n * Documents the group options payload exchanged by command, SDK, and package integrations.\n */\nexport interface GroupOptions {\n /** For dimension=\"tag\": only consider tags starting with this prefix. */\n tagPrefix?: string;\n}\n\nfunction emptyBuckets(): Record<LifecycleBucket, number> {\n return {\n open: 0,\n in_progress: 0,\n blocked: 0,\n draft: 0,\n closed: 0,\n canceled: 0,\n other: 0,\n };\n}\n\n/**\n * Resolve the group keys an item belongs to for a dimension. Most dimensions\n * yield exactly one key (possibly null for blank); tag yields one key per\n * matching tag (or [null] when none match), so an item can span multiple rows.\n */\nfunction groupKeysForItem(item: CoverageItem, dimension: GroupDimension, options: GroupOptions): (string | null)[] {\n switch (dimension) {\n case \"assignee\":\n return [toNonEmptyStringOrUndefined(item.assignee) ?? null];\n case \"parent\":\n return [toNonEmptyStringOrUndefined(item.parent) ?? null];\n case \"type\":\n return [toNonEmptyStringOrUndefined(item.type) ?? null];\n case \"status\":\n return [toNonEmptyStringOrUndefined(item.status) ?? null];\n case \"priority\":\n return [typeof item.priority === \"number\" ? `P${item.priority}` : null];\n default: {\n const prefix = options.tagPrefix?.trim();\n const tags = Array.isArray(item.tags) ? item.tags : [];\n const matching = tags.filter(\n (tag) => typeof tag === \"string\" && tag.length > 0 && (!prefix || tag.startsWith(prefix)),\n );\n return matching.length > 0 ? matching : [null];\n }\n }\n}\n\n/**\n * Group items by a dimension into lifecycle-bucketed rows. Blank keys render\n * with an explicit \"(unassigned)\"-style label. Rows are sorted by total\n * descending, then label ascending, with the empty group sorted last on ties.\n */\nexport function groupItemsByDimension(\n items: readonly CoverageItem[],\n dimension: GroupDimension,\n classifier: LifecycleClassifier,\n options: GroupOptions = {},\n): GroupedBreakdown {\n const rows = new Map<string, GroupRow>();\n let totalItems = 0;\n for (const item of items) {\n totalItems += 1;\n const bucket = classifier.classify(item.status);\n for (const key of groupKeysForItem(item, dimension, options)) {\n const mapKey = key ?? \"\u0000empty\";\n let row = rows.get(mapKey);\n if (!row) {\n row = {\n label: key ?? emptyGroupLabel(dimension),\n key,\n buckets: emptyBuckets(),\n total: 0,\n };\n rows.set(mapKey, row);\n }\n row.buckets[bucket] += 1;\n row.total += 1;\n }\n }\n const sorted = [...rows.values()].sort((left, right) => {\n if (right.total !== left.total) {\n return right.total - left.total;\n }\n // All blank-key items collapse into a single row per dimension, so at most\n // one row has key === null; it sorts last on ties.\n if (left.key === null) {\n return 1;\n }\n if (right.key === null) {\n return -1;\n }\n return left.label.localeCompare(right.label);\n });\n return { dimension, rows: sorted, total_items: totalItems };\n}\n\n/** Lifecycle-bucket distribution across all items (for stats lifecycle section). */\nexport function computeLifecycleDistribution(\n items: readonly CoverageItem[],\n classifier: LifecycleClassifier,\n): Record<LifecycleBucket, number> {\n const buckets = emptyBuckets();\n for (const item of items) {\n buckets[classifier.classify(item.status)] += 1;\n }\n return buckets;\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -5,21 +5,21 @@ import {
|
|
|
5
5
|
} from "./chunk-P4SESZGT.js";
|
|
6
6
|
import {
|
|
7
7
|
ensureTypeFolderScaffold
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-YLZZ6T54.js";
|
|
9
9
|
import {
|
|
10
10
|
buildExtensionDescribeResult,
|
|
11
11
|
scaffoldExtensionProject
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-KIYCOJ63.js";
|
|
13
13
|
import {
|
|
14
14
|
normalizeExtensionNameForMatch,
|
|
15
15
|
normalizeManagedDirectoryName,
|
|
16
16
|
normalizeStringList,
|
|
17
17
|
parseExtensionManifest,
|
|
18
18
|
validateExtensionDirectory
|
|
19
|
-
} from "./chunk-
|
|
19
|
+
} from "./chunk-OTUJZKGI.js";
|
|
20
20
|
import {
|
|
21
21
|
nowIso
|
|
22
|
-
} from "./chunk-
|
|
22
|
+
} from "./chunk-K2VYLVX4.js";
|
|
23
23
|
import {
|
|
24
24
|
EXIT_CODE,
|
|
25
25
|
EXTENSION_CAPABILITY_CONTRACT,
|
|
@@ -40,7 +40,7 @@ import {
|
|
|
40
40
|
resolvePmPackageRootFromModule,
|
|
41
41
|
resolvePmRoot,
|
|
42
42
|
writeSettings
|
|
43
|
-
} from "./chunk-
|
|
43
|
+
} from "./chunk-I66WE2HE.js";
|
|
44
44
|
|
|
45
45
|
// dist/cli/commands/extension.js
|
|
46
46
|
import { execFile as execFile2 } from "node:child_process";
|
|
@@ -3399,6 +3399,6 @@ export {
|
|
|
3399
3399
|
runExtension,
|
|
3400
3400
|
_testOnly
|
|
3401
3401
|
};
|
|
3402
|
-
//# sourceMappingURL=chunk-
|
|
3402
|
+
//# sourceMappingURL=chunk-3AZUFQK6.js.map
|
|
3403
3403
|
|
|
3404
3404
|
//# debugId=bfb4fc80-65a7-5c83-b180-b171fcfa4f33
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
BUILTIN_ITEM_TYPE_VALUES,
|
|
3
3
|
toDefaultFolder
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-7NSPKJUS.js";
|
|
5
5
|
|
|
6
6
|
// dist/core/schema/item-types-file.js
|
|
7
7
|
!(function() {
|
|
@@ -260,4 +260,4 @@ export {
|
|
|
260
260
|
buildInvalidTypeHint,
|
|
261
261
|
buildInvalidTypeError
|
|
262
262
|
};
|
|
263
|
-
//# sourceMappingURL=chunk-
|
|
263
|
+
//# sourceMappingURL=chunk-3LCUASYG.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
isTerminalStatus,
|
|
3
3
|
normalizeStatusForRegistry
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-IEEJQCZ4.js";
|
|
5
5
|
|
|
6
6
|
// dist/core/item/actionability.js
|
|
7
7
|
!(function() {
|
|
@@ -116,4 +116,4 @@ export {
|
|
|
116
116
|
collectBlockedByIds,
|
|
117
117
|
computeActionabilityReport
|
|
118
118
|
};
|
|
119
|
-
//# sourceMappingURL=chunk-
|
|
119
|
+
//# sourceMappingURL=chunk-3Q2HBMTI.js.map
|