@unbrained/pm-cli 2026.7.5 → 2026.7.7
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 +42 -0
- package/dist/cli/commands/annotation-command.d.ts +1 -0
- package/dist/cli/commands/annotation-command.js +29 -2
- package/dist/cli/commands/annotation-command.js.map +1 -1
- package/dist/cli/commands/comments.js +3 -4
- package/dist/cli/commands/comments.js.map +1 -1
- package/dist/cli/commands/extension/bundled-catalog.d.ts +3 -0
- package/dist/cli/commands/extension/bundled-catalog.js +38 -28
- package/dist/cli/commands/extension/bundled-catalog.js.map +1 -1
- package/dist/cli/commands/extension/install-sources.js +81 -18
- package/dist/cli/commands/extension/install-sources.js.map +1 -1
- package/dist/cli/commands/health.js +9 -5
- package/dist/cli/commands/health.js.map +1 -1
- package/dist/cli/commands/learnings.js +5 -3
- package/dist/cli/commands/learnings.js.map +1 -1
- package/dist/cli/commands/notes.js +5 -3
- package/dist/cli/commands/notes.js.map +1 -1
- package/dist/cli/commands/reindex.js +4 -3
- package/dist/cli/commands/reindex.js.map +1 -1
- package/dist/cli/commands/search.js +3 -3
- package/dist/cli/commands/search.js.map +1 -1
- package/dist/cli/commands/test.d.ts +9 -0
- package/dist/cli/commands/test.js +144 -105
- package/dist/cli/commands/test.js.map +1 -1
- package/dist/cli/extension-command-help.js +10 -2
- package/dist/cli/extension-command-help.js.map +1 -1
- package/dist/cli/register-list-query.d.ts +1 -1
- package/dist/cli/register-list-query.js +18 -27
- package/dist/cli/register-list-query.js.map +1 -1
- package/dist/cli/register-operations.d.ts +0 -8
- package/dist/cli/register-operations.js +41 -46
- package/dist/cli/register-operations.js.map +1 -1
- package/dist/cli/register-setup.js +113 -13
- package/dist/cli/register-setup.js.map +1 -1
- package/dist/cli/registration-helpers.d.ts +5 -1
- package/dist/cli/registration-helpers.js +14 -2
- package/dist/cli/registration-helpers.js.map +1 -1
- package/dist/cli-bundle/chunks/append-F7WPGIQL.js +11 -0
- package/dist/cli-bundle/chunks/{contracts-OJEXMKVW.js → append-PVCTBVJG.js} +8 -9
- package/dist/cli-bundle/chunks/{chunk-PPE4YUQM.js → chunk-2APXX4TZ.js} +17 -28
- package/dist/cli-bundle/chunks/chunk-2APXX4TZ.js.map +1 -0
- package/dist/cli-bundle/chunks/{docs-S6UTOTO5.js → chunk-2LEJGRQ7.js} +3 -12
- package/dist/cli-bundle/chunks/{docs-S6UTOTO5.js.map → chunk-2LEJGRQ7.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-T3ABIMGW.js → chunk-2TILG6F2.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-S5AYOUT5.js → chunk-3G6UMXT3.js} +6 -8
- package/dist/cli-bundle/chunks/{chunk-S5AYOUT5.js.map → chunk-3G6UMXT3.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-RCT3YJOK.js → chunk-3TYOW6RR.js} +8 -8
- package/dist/cli-bundle/chunks/{chunk-3JZNEQBA.js → chunk-3X542TEY.js} +7 -7
- package/dist/cli-bundle/chunks/{history-repair-EVTO6LIH.js → chunk-42LXP4VO.js} +14 -21
- package/dist/cli-bundle/chunks/{history-repair-EVTO6LIH.js.map → chunk-42LXP4VO.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-5J2XPTAD.js → chunk-43SIHQND.js} +36 -15
- package/dist/cli-bundle/chunks/chunk-43SIHQND.js.map +7 -0
- package/dist/cli-bundle/chunks/{history-repair-4N6SDVHK.js → chunk-43UQN754.js} +12 -19
- package/dist/cli-bundle/chunks/{history-repair-4N6SDVHK.js.map → chunk-43UQN754.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-OWTIRHX4.js → chunk-43YSKY75.js} +4 -6
- package/dist/cli-bundle/chunks/{chunk-OWTIRHX4.js.map → chunk-43YSKY75.js.map} +1 -1
- package/dist/cli-bundle/chunks/{notes-72YXN5JX.js → chunk-4BKDAEDF.js} +6 -13
- package/dist/cli-bundle/chunks/{notes-72YXN5JX.js.map → chunk-4BKDAEDF.js.map} +2 -2
- package/dist/cli-bundle/chunks/{close-many-AP4MWU36.js → chunk-4IQKDKGE.js} +18 -32
- package/dist/cli-bundle/chunks/{close-many-AP4MWU36.js.map → chunk-4IQKDKGE.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-ZCJAA3JK.js → chunk-4MZOKTI2.js} +6 -8
- package/dist/cli-bundle/chunks/{chunk-ZCJAA3JK.js.map → chunk-4MZOKTI2.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-IJ6CO3JV.js → chunk-52NS7JDP.js} +14 -20
- package/dist/cli-bundle/chunks/{chunk-IJ6CO3JV.js.map → chunk-52NS7JDP.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-T3F4DF23.js → chunk-565WYS5W.js} +12 -16
- package/dist/cli-bundle/chunks/{chunk-T3F4DF23.js.map → chunk-565WYS5W.js.map} +1 -1
- package/dist/cli-bundle/chunks/{copy-OTJOWFL6.js → chunk-5FIQ4EX3.js} +13 -19
- package/dist/cli-bundle/chunks/{copy-OTJOWFL6.js.map → chunk-5FIQ4EX3.js.map} +1 -1
- package/dist/cli-bundle/chunks/{config-V57QD47V.js → chunk-6G6O3OPQ.js} +259 -41
- package/dist/cli-bundle/chunks/chunk-6G6O3OPQ.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-K3AGVXSF.js → chunk-6LCJRGPD.js} +9 -13
- package/dist/cli-bundle/chunks/{chunk-K3AGVXSF.js.map → chunk-6LCJRGPD.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-7MDXZAZS.js → chunk-6UQCNWFV.js} +6 -8
- package/dist/cli-bundle/chunks/{chunk-7MDXZAZS.js.map → chunk-6UQCNWFV.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-LEKT4K7I.js → chunk-6XTSYPPO.js} +1216 -387
- package/dist/cli-bundle/chunks/chunk-6XTSYPPO.js.map +7 -0
- package/dist/cli-bundle/chunks/chunk-7ML7JONU.js +5434 -0
- package/dist/cli-bundle/chunks/chunk-7ML7JONU.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-TSPKZRRW.js → chunk-7PNQA24K.js} +30 -36
- package/dist/cli-bundle/chunks/{chunk-TSPKZRRW.js.map → chunk-7PNQA24K.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-YOF5VPKM.js → chunk-7VQ3JJN5.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-BFVHCAOO.js → chunk-7Y5N34HX.js} +8 -12
- package/dist/cli-bundle/chunks/{chunk-BFVHCAOO.js.map → chunk-7Y5N34HX.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-P5TFTLWW.js → chunk-AGAVEDIE.js} +7 -7
- package/dist/cli-bundle/chunks/{chunk-YFIE7YK6.js → chunk-AJUON7E6.js} +3 -3
- package/dist/cli-bundle/chunks/{close-many-OMZIGZB4.js → chunk-ARKHKYYS.js} +16 -30
- package/dist/cli-bundle/chunks/{close-many-OMZIGZB4.js.map → chunk-ARKHKYYS.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-7EQNAZX2.js → chunk-C5ACVMOI.js} +99 -51
- package/dist/cli-bundle/chunks/chunk-C5ACVMOI.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-PJ3A56YF.js → chunk-CJQM7O7R.js} +16 -20
- package/dist/cli-bundle/chunks/{chunk-PJ3A56YF.js.map → chunk-CJQM7O7R.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-WISPVC2E.js → chunk-D2DCTFTL.js} +7 -9
- package/dist/cli-bundle/chunks/{chunk-WISPVC2E.js.map → chunk-D2DCTFTL.js.map} +1 -1
- package/dist/cli-bundle/chunks/{append-CZGUZ45Q.js → chunk-DDDWVPID.js} +7 -11
- package/dist/cli-bundle/chunks/{append-CZGUZ45Q.js.map → chunk-DDDWVPID.js.map} +1 -1
- package/dist/cli-bundle/chunks/{learnings-2HTPZNGZ.js → chunk-DG6BSXZ7.js} +6 -13
- package/dist/cli-bundle/chunks/{learnings-2HTPZNGZ.js.map → chunk-DG6BSXZ7.js.map} +2 -2
- package/dist/cli-bundle/chunks/{chunk-7WYXBPYQ.js → chunk-DR2V5OIV.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-YQMMMONE.js → chunk-E3LWJUGF.js} +4 -6
- package/dist/cli-bundle/chunks/{chunk-YQMMMONE.js.map → chunk-E3LWJUGF.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-D3UCE7RW.js → chunk-E3YQFSFE.js} +6 -10
- package/dist/cli-bundle/chunks/{chunk-D3UCE7RW.js.map → chunk-E3YQFSFE.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-PDXT6Q55.js → chunk-EDO7VXSO.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-FDBARR33.js → chunk-EIUBK2LT.js} +12 -18
- package/dist/cli-bundle/chunks/{chunk-FDBARR33.js.map → chunk-EIUBK2LT.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-HBYZDSK5.js → chunk-EMXPI36L.js} +14 -20
- package/dist/cli-bundle/chunks/{chunk-HBYZDSK5.js.map → chunk-EMXPI36L.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-4OFLJHX6.js → chunk-EOUVR7JN.js} +13 -8
- package/dist/cli-bundle/chunks/chunk-EOUVR7JN.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-FUM6UMY4.js → chunk-EVEPHNXJ.js} +4 -4
- package/dist/cli-bundle/chunks/{deps-L2FPIAD3.js → chunk-F6MT7KKE.js} +6 -10
- package/dist/cli-bundle/chunks/{deps-L2FPIAD3.js.map → chunk-F6MT7KKE.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-FGQKEDE4.js → chunk-F6YC2A6X.js} +7 -11
- package/dist/cli-bundle/chunks/{chunk-FGQKEDE4.js.map → chunk-F6YC2A6X.js.map} +1 -1
- package/dist/cli-bundle/chunks/chunk-FILL6BB2.js +5514 -0
- package/dist/cli-bundle/chunks/chunk-FILL6BB2.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-RX3HQSYG.js → chunk-FN6SB4HU.js} +2 -2
- package/dist/cli-bundle/chunks/chunk-GH73UOSJ.js +5359 -0
- package/dist/cli-bundle/chunks/chunk-GH73UOSJ.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-JLA7EVYV.js → chunk-GLS6VMWI.js} +37 -16
- package/dist/cli-bundle/chunks/chunk-GLS6VMWI.js.map +1 -0
- package/dist/cli-bundle/chunks/{files-JPU3FNJ7.js → chunk-GPIDUMMN.js} +10 -17
- package/dist/cli-bundle/chunks/{files-JPU3FNJ7.js.map → chunk-GPIDUMMN.js.map} +1 -1
- package/dist/cli-bundle/chunks/{history-compact-3F6VELO7.js → chunk-GTM5HQL4.js} +15 -21
- package/dist/cli-bundle/chunks/{history-compact-3F6VELO7.js.map → chunk-GTM5HQL4.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-DLQ4ZTCU.js → chunk-H2SMKL2N.js} +8 -8
- package/dist/cli-bundle/chunks/{chunk-S4APD35C.js → chunk-HHEWQXPD.js} +6 -6
- package/dist/cli-bundle/chunks/chunk-HHEWQXPD.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-C3PMDWGX.js → chunk-HX6QXV5P.js} +2 -2
- package/dist/cli-bundle/chunks/{copy-LEE6P6EM.js → chunk-I74FMIWA.js} +11 -17
- package/dist/cli-bundle/chunks/{copy-LEE6P6EM.js.map → chunk-I74FMIWA.js.map} +1 -1
- package/dist/cli-bundle/chunks/chunk-IDIBF4E2.js +804 -0
- package/dist/cli-bundle/chunks/chunk-IDIBF4E2.js.map +7 -0
- package/dist/cli-bundle/chunks/{comments-SAG5LSKL.js → chunk-II7R6KD4.js} +9 -13
- package/dist/cli-bundle/chunks/{comments-SAG5LSKL.js.map → chunk-II7R6KD4.js.map} +1 -1
- package/dist/cli-bundle/chunks/chunk-J2VGADNG.js +10320 -0
- package/dist/cli-bundle/chunks/chunk-J2VGADNG.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-Y76TWC45.js → chunk-J7BOLHAV.js} +5 -7
- package/dist/cli-bundle/chunks/{chunk-Y76TWC45.js.map → chunk-J7BOLHAV.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-QHZO65XW.js → chunk-KTGJ2CBU.js} +4 -6
- package/dist/cli-bundle/chunks/{chunk-QHZO65XW.js.map → chunk-KTGJ2CBU.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-5VVUKE3U.js → chunk-LCFJ7XAM.js} +32 -2
- package/dist/cli-bundle/chunks/{chunk-5VVUKE3U.js.map → chunk-LCFJ7XAM.js.map} +3 -3
- package/dist/cli-bundle/chunks/{chunk-YMABYTNG.js → chunk-LZQU6XJG.js} +28 -34
- package/dist/cli-bundle/chunks/{chunk-YMABYTNG.js.map → chunk-LZQU6XJG.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-3Y4OESPP.js → chunk-M62RO3XK.js} +10 -14
- package/dist/cli-bundle/chunks/{chunk-3Y4OESPP.js.map → chunk-M62RO3XK.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-YPPVU5GX.js → chunk-MCEUKJKW.js} +9 -11
- package/dist/cli-bundle/chunks/{chunk-YPPVU5GX.js.map → chunk-MCEUKJKW.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-T5Y3QSNF.js → chunk-MHNMCDWR.js} +1447 -86
- package/dist/cli-bundle/chunks/chunk-MHNMCDWR.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-HJE4JTKQ.js → chunk-MRFWUSVA.js} +4 -6
- package/dist/cli-bundle/chunks/{chunk-HJE4JTKQ.js.map → chunk-MRFWUSVA.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-P3VRG72Q.js → chunk-N6ZHDLUY.js} +6 -8
- package/dist/cli-bundle/chunks/{chunk-P3VRG72Q.js.map → chunk-N6ZHDLUY.js.map} +1 -1
- package/dist/cli-bundle/chunks/{delete-HQKGRNRZ.js → chunk-NWWL22C7.js} +8 -12
- package/dist/cli-bundle/chunks/{delete-HQKGRNRZ.js.map → chunk-NWWL22C7.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-N6DNM2FA.js → chunk-P3MJJW7P.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-5JE6SMYS.js → chunk-PDXJXEZJ.js} +2 -2
- package/dist/cli-bundle/chunks/{append-NSQBCXZJ.js → chunk-Q64AYQYW.js} +9 -13
- package/dist/cli-bundle/chunks/{append-NSQBCXZJ.js.map → chunk-Q64AYQYW.js.map} +1 -1
- package/dist/cli-bundle/chunks/{update-many-SLLAMHT7.js → chunk-QDABF2RB.js} +26 -47
- package/dist/cli-bundle/chunks/{update-many-SLLAMHT7.js.map → chunk-QDABF2RB.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-NBFCNJ7Q.js → chunk-QFBSP3NI.js} +529 -46
- package/dist/cli-bundle/chunks/chunk-QFBSP3NI.js.map +1 -0
- package/dist/cli-bundle/chunks/{focus-LFZ6IDBR.js → chunk-RB3KLPAH.js} +11 -16
- package/dist/cli-bundle/chunks/{focus-LFZ6IDBR.js.map → chunk-RB3KLPAH.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-YSAH5FY5.js → chunk-RY7PTTUB.js} +94 -53
- package/dist/cli-bundle/chunks/chunk-RY7PTTUB.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-WVSGSZ6J.js → chunk-S547WBYG.js} +1477 -86
- package/dist/cli-bundle/chunks/chunk-S547WBYG.js.map +7 -0
- package/dist/cli-bundle/chunks/{update-many-DC7X3EWM.js → chunk-S5BNGFN5.js} +24 -45
- package/dist/cli-bundle/chunks/{update-many-DC7X3EWM.js.map → chunk-S5BNGFN5.js.map} +1 -1
- package/dist/cli-bundle/chunks/{focus-WNMYCVYA.js → chunk-S6VC2A2K.js} +9 -14
- package/dist/cli-bundle/chunks/{focus-WNMYCVYA.js.map → chunk-S6VC2A2K.js.map} +1 -1
- package/dist/cli-bundle/chunks/{learnings-YBIHY3D6.js → chunk-SIM5JDON.js} +7 -14
- package/dist/cli-bundle/chunks/{learnings-YBIHY3D6.js.map → chunk-SIM5JDON.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-ZD34OFFQ.js → chunk-SY75LYXR.js} +12 -7
- package/dist/cli-bundle/chunks/chunk-SY75LYXR.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-TT42JUMF.js → chunk-TEISGNSH.js} +7 -7
- package/dist/cli-bundle/chunks/chunk-TEISGNSH.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-AAEQMOC6.js → chunk-TEKZOS7M.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-4QQ6PM7M.js → chunk-TGUK6XN6.js} +14 -18
- package/dist/cli-bundle/chunks/{chunk-4QQ6PM7M.js.map → chunk-TGUK6XN6.js.map} +1 -1
- package/dist/cli-bundle/chunks/{plan-R4NDQ27E.js → chunk-TNC6MZUD.js} +10 -21
- package/dist/cli-bundle/chunks/{plan-R4NDQ27E.js.map → chunk-TNC6MZUD.js.map} +1 -1
- package/dist/cli-bundle/chunks/chunk-TZLYO4PP.js +10498 -0
- package/dist/cli-bundle/chunks/chunk-TZLYO4PP.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-YD5FML7K.js → chunk-UO7XAZK6.js} +27 -4
- package/dist/cli-bundle/chunks/chunk-UO7XAZK6.js.map +1 -0
- package/dist/cli-bundle/chunks/{docs-6CRCSVKK.js → chunk-V5ZWKJNY.js} +5 -14
- package/dist/cli-bundle/chunks/{docs-6CRCSVKK.js.map → chunk-V5ZWKJNY.js.map} +1 -1
- package/dist/cli-bundle/chunks/{notes-NJ7IQJX4.js → chunk-VGO73OCK.js} +7 -14
- package/dist/cli-bundle/chunks/{notes-NJ7IQJX4.js.map → chunk-VGO73OCK.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-NER3KUUS.js → chunk-VLEA2UTQ.js} +2 -2
- package/dist/cli-bundle/chunks/{files-6P57MRKL.js → chunk-W5HXHC7C.js} +8 -15
- package/dist/cli-bundle/chunks/{files-6P57MRKL.js.map → chunk-W5HXHC7C.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-ZMD35NYG.js → chunk-WCWVEXGA.js} +2 -2
- package/dist/cli-bundle/chunks/chunk-X47MKQXU.js +6690 -0
- package/dist/cli-bundle/chunks/chunk-X47MKQXU.js.map +7 -0
- package/dist/cli-bundle/chunks/{delete-62JQTYT4.js → chunk-XBX5CBRQ.js} +6 -10
- package/dist/cli-bundle/chunks/{delete-62JQTYT4.js.map → chunk-XBX5CBRQ.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-MTTXDAK4.js → chunk-XC3X7BQR.js} +541 -44
- package/dist/cli-bundle/chunks/chunk-XC3X7BQR.js.map +7 -0
- package/dist/cli-bundle/chunks/{history-compact-656Y2TN4.js → chunk-XHCVAZGM.js} +17 -23
- package/dist/cli-bundle/chunks/{history-compact-656Y2TN4.js.map → chunk-XHCVAZGM.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-ZAHXPXVY.js → chunk-XPMXPR7K.js} +7 -9
- package/dist/cli-bundle/chunks/{chunk-ZAHXPXVY.js.map → chunk-XPMXPR7K.js.map} +1 -1
- package/dist/cli-bundle/chunks/{deps-55FTG6Z5.js → chunk-XS2TMNXR.js} +8 -12
- package/dist/cli-bundle/chunks/{deps-55FTG6Z5.js.map → chunk-XS2TMNXR.js.map} +1 -1
- package/dist/cli-bundle/chunks/{plan-XWY5T67S.js → chunk-XXIYUTLK.js} +12 -23
- package/dist/cli-bundle/chunks/{plan-XWY5T67S.js.map → chunk-XXIYUTLK.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-7QH7DHUB.js → chunk-XZWL7VNE.js} +1220 -398
- package/dist/cli-bundle/chunks/chunk-XZWL7VNE.js.map +1 -0
- package/dist/cli-bundle/chunks/chunk-Y5IKRUEM.js +6624 -0
- package/dist/cli-bundle/chunks/chunk-Y5IKRUEM.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-ABRA3BHY.js → chunk-Y7KYVCZM.js} +12 -18
- package/dist/cli-bundle/chunks/{chunk-ABRA3BHY.js.map → chunk-Y7KYVCZM.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-UI5BJ6DO.js → chunk-YCVWWIKY.js} +17 -28
- package/dist/cli-bundle/chunks/chunk-YCVWWIKY.js.map +7 -0
- package/dist/cli-bundle/chunks/chunk-YH5NBDFA.js +780 -0
- package/dist/cli-bundle/chunks/chunk-YH5NBDFA.js.map +1 -0
- package/dist/cli-bundle/chunks/chunk-YNCFP5AR.js +5509 -0
- package/dist/cli-bundle/chunks/chunk-YNCFP5AR.js.map +7 -0
- package/dist/cli-bundle/chunks/{comments-MIW5MZOX.js → chunk-YPD7SQ5P.js} +8 -12
- package/dist/cli-bundle/chunks/{comments-MIW5MZOX.js.map → chunk-YPD7SQ5P.js.map} +2 -2
- package/dist/cli-bundle/chunks/{chunk-T35XLYZF.js → chunk-YPMZMKN7.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-R3ZBLGTC.js → chunk-YTD5GICJ.js} +4 -4
- package/dist/cli-bundle/chunks/{config-DJJKZB5R.js → chunk-ZNEG2UDO.js} +264 -39
- package/dist/cli-bundle/chunks/{config-DJJKZB5R.js.map → chunk-ZNEG2UDO.js.map} +4 -4
- package/dist/cli-bundle/chunks/{chunk-EEY54JMF.js → chunk-ZO7CLOY2.js} +3 -3
- package/dist/cli-bundle/chunks/{close-3YRR3XY6.js → close-3YYQ5OG2.js} +5 -9
- package/dist/cli-bundle/chunks/close-Z3Q4U7TS.js +12 -0
- package/dist/cli-bundle/chunks/close-many-3L2RXH3M.js +22 -0
- package/dist/cli-bundle/chunks/close-many-D366FTIG.js +26 -0
- package/dist/cli-bundle/chunks/comments-54XDJNFE.js +17 -0
- package/dist/cli-bundle/chunks/comments-HGHC2PN6.js +13 -0
- package/dist/cli-bundle/chunks/copy-44RT5GDW.js +13 -0
- package/dist/cli-bundle/chunks/copy-UGMUGHZA.js +9 -0
- package/dist/cli-bundle/chunks/{create-XWWQFQ6S.js → create-4GWJWPXG.js} +9 -14
- package/dist/cli-bundle/chunks/create-AZXCUYKP.js +25 -0
- package/dist/cli-bundle/chunks/delete-Y6SXIQ4X.js +10 -0
- package/dist/cli-bundle/chunks/delete-YQ2VPXNF.js +14 -0
- package/dist/cli-bundle/chunks/deps-BU5EBJDU.js +17 -0
- package/dist/cli-bundle/chunks/deps-FMANWFRP.js +13 -0
- package/dist/cli-bundle/chunks/docs-OQBSJNIA.js +18 -0
- package/dist/cli-bundle/chunks/docs-VNPBZXEL.js +14 -0
- package/dist/cli-bundle/chunks/files-72HZEBOE.js +18 -0
- package/dist/cli-bundle/chunks/{activity-YKAKZTZ4.js → files-HTSB2KJG.js} +13 -13
- package/dist/cli-bundle/chunks/focus-FOG4ALC2.js +14 -0
- package/dist/cli-bundle/chunks/focus-SUTMKXGX.js +10 -0
- package/dist/cli-bundle/chunks/history-compact-M6IFAMBP.js +25 -0
- package/dist/cli-bundle/chunks/history-compact-NEXRPP2O.js +21 -0
- package/dist/cli-bundle/chunks/{history-redact-54ICFKXM.js → history-redact-NQX3OGZP.js} +7 -11
- package/dist/cli-bundle/chunks/history-redact-WQJBZ3PX.js +17 -0
- package/dist/cli-bundle/chunks/history-repair-CBHMHAJO.js +19 -0
- package/dist/cli-bundle/chunks/history-repair-NHOJG7WO.js +23 -0
- package/dist/cli-bundle/chunks/learnings-M64NTSOR.js +13 -0
- package/dist/cli-bundle/chunks/learnings-T63JGKKN.js +17 -0
- package/dist/cli-bundle/chunks/notes-73WE2UV2.js +13 -0
- package/dist/cli-bundle/chunks/notes-U7L6HQQ2.js +17 -0
- package/dist/cli-bundle/chunks/plan-OSCNYFGC.js +24 -0
- package/dist/cli-bundle/chunks/plan-OSCNYFGC.js.map +7 -0
- package/dist/cli-bundle/chunks/plan-TN537L24.js +28 -0
- package/dist/cli-bundle/chunks/plan-TN537L24.js.map +1 -0
- package/dist/cli-bundle/chunks/profile-MHAMXMHQ.js +37 -0
- package/dist/cli-bundle/chunks/profile-MHAMXMHQ.js.map +1 -0
- package/dist/cli-bundle/chunks/profile-TIGLAKJ7.js +33 -0
- package/dist/cli-bundle/chunks/profile-TIGLAKJ7.js.map +7 -0
- package/dist/cli-bundle/chunks/{register-list-query-5H66WFYF.js → register-list-query-OHXD7G5N.js} +41 -33
- package/dist/cli-bundle/chunks/register-list-query-OHXD7G5N.js.map +7 -0
- package/dist/cli-bundle/chunks/{register-list-query-FB3FNDLZ.js → register-list-query-ZCRABAPN.js} +42 -34
- package/dist/cli-bundle/chunks/register-list-query-ZCRABAPN.js.map +1 -0
- package/dist/cli-bundle/chunks/{register-mutation-UJO23C7R.js → register-mutation-P3G4XP6Q.js} +36 -41
- package/dist/cli-bundle/chunks/{register-mutation-UJO23C7R.js.map → register-mutation-P3G4XP6Q.js.map} +1 -1
- package/dist/cli-bundle/chunks/{register-mutation-Z2ETYHKS.js → register-mutation-XX4H56PE.js} +34 -39
- package/dist/cli-bundle/chunks/{register-mutation-Z2ETYHKS.js.map → register-mutation-XX4H56PE.js.map} +1 -1
- package/dist/cli-bundle/chunks/{register-operations-A3XAM5J7.js → register-operations-V6PIYEDU.js} +80 -52
- package/dist/cli-bundle/chunks/register-operations-V6PIYEDU.js.map +1 -0
- package/dist/cli-bundle/chunks/{register-operations-SG7HBSUP.js → register-operations-V6VKTG54.js} +79 -51
- package/dist/cli-bundle/chunks/register-operations-V6VKTG54.js.map +7 -0
- package/dist/cli-bundle/chunks/{register-setup-K6U3NVY5.js → register-setup-6RVAWT6W.js} +129 -31
- package/dist/cli-bundle/chunks/register-setup-6RVAWT6W.js.map +7 -0
- package/dist/cli-bundle/chunks/{register-setup-I45OGJUV.js → register-setup-6YVUSQYD.js} +130 -32
- package/dist/cli-bundle/chunks/register-setup-6YVUSQYD.js.map +1 -0
- package/dist/cli-bundle/chunks/{restore-YJ2ET6AT.js → restore-HC3YSWF7.js} +7 -11
- package/dist/cli-bundle/chunks/restore-HC3YSWF7.js.map +1 -0
- package/dist/cli-bundle/chunks/restore-LFAMMRYZ.js +15 -0
- package/dist/cli-bundle/chunks/restore-LFAMMRYZ.js.map +7 -0
- package/dist/cli-bundle/chunks/{schema-2PUXCZ25.js → schema-DAGSYO6E.js} +6 -10
- package/dist/cli-bundle/chunks/schema-DAGSYO6E.js.map +7 -0
- package/dist/cli-bundle/chunks/{schema-Y6DXXK2F.js → schema-UBXJCQAC.js} +6 -10
- package/dist/cli-bundle/chunks/schema-UBXJCQAC.js.map +1 -0
- package/dist/cli-bundle/chunks/update-CJGG5WMV.js +21 -0
- package/dist/cli-bundle/chunks/update-CJGG5WMV.js.map +7 -0
- package/dist/cli-bundle/chunks/update-LKD64AFP.js +25 -0
- package/dist/cli-bundle/chunks/update-LKD64AFP.js.map +1 -0
- package/dist/cli-bundle/chunks/update-many-G4SM7BHC.js +31 -0
- package/dist/cli-bundle/chunks/update-many-G4SM7BHC.js.map +7 -0
- package/dist/cli-bundle/chunks/update-many-VLIV3D7R.js +35 -0
- package/dist/cli-bundle/chunks/update-many-VLIV3D7R.js.map +1 -0
- package/dist/cli-bundle/main.js +29 -31
- package/dist/cli-bundle/main.js.map +2 -2
- package/dist/cli-bundle/sdk-runtime.js +136 -54
- package/dist/cli-bundle/sdk-testing.js +7 -8
- package/dist/cli-bundle/sdk.js +132 -84
- package/dist/cli-bundle/sdk.js.map +2 -2
- package/dist/core/history/drift-scan.js +3 -8
- package/dist/core/history/drift-scan.js.map +1 -1
- package/dist/core/output/mutation-projection.js +11 -5
- package/dist/core/output/mutation-projection.js.map +1 -1
- package/dist/core/search/cache.js +3 -3
- package/dist/core/search/cache.js.map +1 -1
- package/dist/core/search/semantic-defaults.d.ts +2 -0
- package/dist/core/search/semantic-defaults.js +11 -4
- package/dist/core/search/semantic-defaults.js.map +1 -1
- package/dist/core/search/vector-stores.d.ts +1 -1
- package/dist/core/search/vector-stores.js +33 -7
- package/dist/core/search/vector-stores.js.map +1 -1
- package/dist/mcp/server.d.ts +22 -50
- package/dist/mcp/server.js +62 -916
- package/dist/mcp/server.js.map +1 -1
- package/dist/sdk/cli-contracts/flag-contracts.js +7 -7
- package/dist/sdk/cli-contracts/flag-contracts.js.map +1 -1
- package/dist/sdk/cli-contracts/tool-schema.js +9 -7
- package/dist/sdk/cli-contracts/tool-schema.js.map +1 -1
- package/dist/sdk/index.d.ts +4 -2
- package/dist/sdk/index.js +4 -4
- package/dist/sdk/index.js.map +1 -1
- package/dist/sdk/runtime.d.ts +312 -5
- package/dist/sdk/runtime.js +1391 -26
- package/dist/sdk/runtime.js.map +1 -1
- package/dist/sdk/start-task-status.d.ts +13 -0
- package/dist/sdk/start-task-status.js +19 -0
- package/dist/sdk/start-task-status.js.map +1 -0
- package/dist/sdk/workspace-contracts-cache.d.ts +17 -0
- package/dist/sdk/workspace-contracts-cache.js +36 -0
- package/dist/sdk/workspace-contracts-cache.js.map +1 -0
- package/docs/COMMANDS.md +10 -1
- package/docs/RELEASING.md +3 -1
- package/docs/SDK.md +81 -0
- package/docs/TESTING.md +3 -0
- package/docs/examples/sdk-app-embedding/run-embedded-pm.mjs +16 -2
- package/docs/examples/sdk-contract-consumer/inspect-contracts.mjs +16 -1
- package/package.json +1 -1
- package/dist/cli-bundle/chunks/activity-4XQIDNM5.js +0 -18
- package/dist/cli-bundle/chunks/aggregate-EQX2RGB7.js +0 -375
- package/dist/cli-bundle/chunks/aggregate-EQX2RGB7.js.map +0 -7
- package/dist/cli-bundle/chunks/aggregate-PEGZGJXD.js +0 -372
- package/dist/cli-bundle/chunks/aggregate-PEGZGJXD.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-37E72CNS.js +0 -217
- package/dist/cli-bundle/chunks/chunk-37E72CNS.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-3PL6LEKP.js +0 -1961
- package/dist/cli-bundle/chunks/chunk-3PL6LEKP.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-3U3VEWK6.js +0 -1749
- package/dist/cli-bundle/chunks/chunk-3U3VEWK6.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-4BU75MF4.js +0 -87
- package/dist/cli-bundle/chunks/chunk-4BU75MF4.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-4LRVSBO6.js +0 -822
- package/dist/cli-bundle/chunks/chunk-4LRVSBO6.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-4OFLJHX6.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-53BTLLAF.js +0 -2181
- package/dist/cli-bundle/chunks/chunk-53BTLLAF.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-57C2RLW5.js +0 -1704
- package/dist/cli-bundle/chunks/chunk-57C2RLW5.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-5B3X4Y22.js +0 -2330
- package/dist/cli-bundle/chunks/chunk-5B3X4Y22.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-5J2XPTAD.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-5JZ7APJU.js +0 -995
- package/dist/cli-bundle/chunks/chunk-5JZ7APJU.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-75U6M5ZD.js +0 -819
- package/dist/cli-bundle/chunks/chunk-75U6M5ZD.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-7C2O74AE.js +0 -23
- package/dist/cli-bundle/chunks/chunk-7C2O74AE.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-7EQNAZX2.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-7QH7DHUB.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-BVEUCSH2.js +0 -530
- package/dist/cli-bundle/chunks/chunk-BVEUCSH2.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-DC3QJQWI.js +0 -275
- package/dist/cli-bundle/chunks/chunk-DC3QJQWI.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-DRBV5UC2.js +0 -231
- package/dist/cli-bundle/chunks/chunk-DRBV5UC2.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-E2FUG6GD.js +0 -2184
- package/dist/cli-bundle/chunks/chunk-E2FUG6GD.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-EZFKWSC7.js +0 -1615
- package/dist/cli-bundle/chunks/chunk-EZFKWSC7.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-FJRKQREY.js +0 -228
- package/dist/cli-bundle/chunks/chunk-FJRKQREY.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-GIWXVMZ3.js +0 -3237
- package/dist/cli-bundle/chunks/chunk-GIWXVMZ3.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-HK72NWAD.js +0 -1570
- package/dist/cli-bundle/chunks/chunk-HK72NWAD.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-JFCVQXZX.js +0 -3206
- package/dist/cli-bundle/chunks/chunk-JFCVQXZX.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-JINYH2DB.js +0 -371
- package/dist/cli-bundle/chunks/chunk-JINYH2DB.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-JLA7EVYV.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-K32L7HZO.js +0 -76
- package/dist/cli-bundle/chunks/chunk-K32L7HZO.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-KDZ6K25I.js +0 -79
- package/dist/cli-bundle/chunks/chunk-KDZ6K25I.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-KL22PY6L.js +0 -915
- package/dist/cli-bundle/chunks/chunk-KL22PY6L.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-KLG4ZULO.js +0 -218
- package/dist/cli-bundle/chunks/chunk-KLG4ZULO.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-LEKT4K7I.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-MNZ7DRNC.js +0 -1858
- package/dist/cli-bundle/chunks/chunk-MNZ7DRNC.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-MTTXDAK4.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-MZ7VNEVY.js +0 -520
- package/dist/cli-bundle/chunks/chunk-MZ7VNEVY.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-N7X4WP6L.js +0 -1041
- package/dist/cli-bundle/chunks/chunk-N7X4WP6L.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-NBFCNJ7Q.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-NNHHXJB2.js +0 -20
- package/dist/cli-bundle/chunks/chunk-NNHHXJB2.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-OBA2WH65.js +0 -918
- package/dist/cli-bundle/chunks/chunk-OBA2WH65.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-OESSOFJ4.js +0 -1985
- package/dist/cli-bundle/chunks/chunk-OESSOFJ4.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-OK5NXCZB.js +0 -238
- package/dist/cli-bundle/chunks/chunk-OK5NXCZB.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-P5YORJRH.js +0 -1977
- package/dist/cli-bundle/chunks/chunk-P5YORJRH.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-PPAJG4GB.js +0 -1031
- package/dist/cli-bundle/chunks/chunk-PPAJG4GB.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-PPE4YUQM.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-QZ342C63.js +0 -220
- package/dist/cli-bundle/chunks/chunk-QZ342C63.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-R2EMWY7Q.js +0 -368
- package/dist/cli-bundle/chunks/chunk-R2EMWY7Q.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-S4APD35C.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-STPSZ2XY.js +0 -1149
- package/dist/cli-bundle/chunks/chunk-STPSZ2XY.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-T4MX77AK.js +0 -272
- package/dist/cli-bundle/chunks/chunk-T4MX77AK.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-T5Y3QSNF.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-TT42JUMF.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-UHKX7I75.js +0 -165
- package/dist/cli-bundle/chunks/chunk-UHKX7I75.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-UI5BJ6DO.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-US3T3W5J.js +0 -1932
- package/dist/cli-bundle/chunks/chunk-US3T3W5J.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-UZRDBL6W.js +0 -175
- package/dist/cli-bundle/chunks/chunk-UZRDBL6W.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-VY3VQ22F.js +0 -84
- package/dist/cli-bundle/chunks/chunk-VY3VQ22F.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-VZIYHZDX.js +0 -1868
- package/dist/cli-bundle/chunks/chunk-VZIYHZDX.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-WVSGSZ6J.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-XQCG2JGW.js +0 -1152
- package/dist/cli-bundle/chunks/chunk-XQCG2JGW.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-YD5FML7K.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-YSAH5FY5.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-YZIR4R3U.js +0 -1005
- package/dist/cli-bundle/chunks/chunk-YZIR4R3U.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-Z2CRRZYF.js +0 -215
- package/dist/cli-bundle/chunks/chunk-Z2CRRZYF.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-ZD34OFFQ.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-ZJB3UV5U.js +0 -2306
- package/dist/cli-bundle/chunks/chunk-ZJB3UV5U.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-ZVDL32GJ.js +0 -241
- package/dist/cli-bundle/chunks/chunk-ZVDL32GJ.js.map +0 -7
- package/dist/cli-bundle/chunks/claim-4DROPSIS.js +0 -144
- package/dist/cli-bundle/chunks/claim-4DROPSIS.js.map +0 -1
- package/dist/cli-bundle/chunks/claim-VX54TV5U.js +0 -147
- package/dist/cli-bundle/chunks/claim-VX54TV5U.js.map +0 -7
- package/dist/cli-bundle/chunks/close-OB2Y4QP5.js +0 -16
- package/dist/cli-bundle/chunks/config-V57QD47V.js.map +0 -1
- package/dist/cli-bundle/chunks/context-4OQGIPSO.js +0 -45
- package/dist/cli-bundle/chunks/context-WLA6IAWE.js +0 -49
- package/dist/cli-bundle/chunks/contracts-HXJLKCRI.js +0 -12
- package/dist/cli-bundle/chunks/create-WKOZKPQR.js +0 -30
- package/dist/cli-bundle/chunks/eval-N6UHFWVO.js +0 -288
- package/dist/cli-bundle/chunks/eval-N6UHFWVO.js.map +0 -7
- package/dist/cli-bundle/chunks/eval-PHOTWYHI.js +0 -278
- package/dist/cli-bundle/chunks/eval-PHOTWYHI.js.map +0 -1
- package/dist/cli-bundle/chunks/extension-NBAH62ML.js +0 -40
- package/dist/cli-bundle/chunks/extension-ZF6ZZPOU.js +0 -44
- package/dist/cli-bundle/chunks/gc-AETFKZ44.js +0 -398
- package/dist/cli-bundle/chunks/gc-AETFKZ44.js.map +0 -7
- package/dist/cli-bundle/chunks/gc-RLBP4QVN.js +0 -388
- package/dist/cli-bundle/chunks/gc-RLBP4QVN.js.map +0 -1
- package/dist/cli-bundle/chunks/get-NH2MPBCI.js +0 -283
- package/dist/cli-bundle/chunks/get-NH2MPBCI.js.map +0 -1
- package/dist/cli-bundle/chunks/get-P4ZQXCPZ.js +0 -286
- package/dist/cli-bundle/chunks/get-P4ZQXCPZ.js.map +0 -7
- package/dist/cli-bundle/chunks/health-3GVPMQBL.js +0 -1612
- package/dist/cli-bundle/chunks/health-3GVPMQBL.js.map +0 -1
- package/dist/cli-bundle/chunks/health-DNTM72GJ.js +0 -1615
- package/dist/cli-bundle/chunks/health-DNTM72GJ.js.map +0 -7
- package/dist/cli-bundle/chunks/history-RYKLC72X.js +0 -20
- package/dist/cli-bundle/chunks/history-SGPYRAFT.js +0 -24
- package/dist/cli-bundle/chunks/history-redact-4H3FCKF3.js +0 -21
- package/dist/cli-bundle/chunks/init-RPIPQUNV.js +0 -32
- package/dist/cli-bundle/chunks/init-SKQAESQS.js +0 -28
- package/dist/cli-bundle/chunks/list-64LHZ3HM.js +0 -32
- package/dist/cli-bundle/chunks/list-7LXBTEKI.js +0 -36
- package/dist/cli-bundle/chunks/next-7ODPAQ4U.js +0 -306
- package/dist/cli-bundle/chunks/next-7ODPAQ4U.js.map +0 -7
- package/dist/cli-bundle/chunks/next-ODJUM4ZM.js +0 -303
- package/dist/cli-bundle/chunks/next-ODJUM4ZM.js.map +0 -1
- package/dist/cli-bundle/chunks/profile-XQWEQKS3.js +0 -397
- package/dist/cli-bundle/chunks/profile-XQWEQKS3.js.map +0 -1
- package/dist/cli-bundle/chunks/profile-YRDHLMRO.js +0 -400
- package/dist/cli-bundle/chunks/profile-YRDHLMRO.js.map +0 -7
- package/dist/cli-bundle/chunks/register-list-query-5H66WFYF.js.map +0 -7
- package/dist/cli-bundle/chunks/register-list-query-FB3FNDLZ.js.map +0 -1
- package/dist/cli-bundle/chunks/register-operations-A3XAM5J7.js.map +0 -1
- package/dist/cli-bundle/chunks/register-operations-SG7HBSUP.js.map +0 -7
- package/dist/cli-bundle/chunks/register-setup-I45OGJUV.js.map +0 -1
- package/dist/cli-bundle/chunks/register-setup-K6U3NVY5.js.map +0 -7
- package/dist/cli-bundle/chunks/restore-PXOFL6AM.js +0 -19
- package/dist/cli-bundle/chunks/scheduling-shortcuts-SSC4MYWQ.js +0 -91
- package/dist/cli-bundle/chunks/scheduling-shortcuts-SSC4MYWQ.js.map +0 -7
- package/dist/cli-bundle/chunks/scheduling-shortcuts-ULRG7MNP.js +0 -88
- package/dist/cli-bundle/chunks/scheduling-shortcuts-ULRG7MNP.js.map +0 -1
- package/dist/cli-bundle/chunks/search-3S72CTD6.js +0 -38
- package/dist/cli-bundle/chunks/search-WNUNBQXO.js +0 -34
- package/dist/cli-bundle/chunks/stats-IJYTRQGV.js +0 -250
- package/dist/cli-bundle/chunks/stats-IJYTRQGV.js.map +0 -7
- package/dist/cli-bundle/chunks/stats-L2D5Y2O5.js +0 -240
- package/dist/cli-bundle/chunks/stats-L2D5Y2O5.js.map +0 -1
- package/dist/cli-bundle/chunks/telemetry-L2CVOKVN.js +0 -309
- package/dist/cli-bundle/chunks/telemetry-L2CVOKVN.js.map +0 -7
- package/dist/cli-bundle/chunks/telemetry-QBYWQA76.js +0 -306
- package/dist/cli-bundle/chunks/telemetry-QBYWQA76.js.map +0 -1
- package/dist/cli-bundle/chunks/test-DQ2QFJ7W.js +0 -45
- package/dist/cli-bundle/chunks/test-W7QBLVJS.js +0 -41
- package/dist/cli-bundle/chunks/test-all-636NTRTT.js +0 -434
- package/dist/cli-bundle/chunks/test-all-636NTRTT.js.map +0 -1
- package/dist/cli-bundle/chunks/test-all-DWYK3RG6.js +0 -437
- package/dist/cli-bundle/chunks/test-all-DWYK3RG6.js.map +0 -7
- package/dist/cli-bundle/chunks/test-runs-245OINZR.js +0 -28
- package/dist/cli-bundle/chunks/test-runs-ZRD4GCTT.js +0 -24
- package/dist/cli-bundle/chunks/update-SFLZPJXX.js +0 -30
- package/dist/cli-bundle/chunks/update-SJZ6S77U.js +0 -26
- package/dist/cli-bundle/chunks/upgrade-HFFXLZJA.js +0 -290
- package/dist/cli-bundle/chunks/upgrade-HFFXLZJA.js.map +0 -7
- package/dist/cli-bundle/chunks/upgrade-UYQKM7RF.js +0 -287
- package/dist/cli-bundle/chunks/upgrade-UYQKM7RF.js.map +0 -1
- package/dist/cli-bundle/chunks/validate-PA4FDTOV.js +0 -2143
- package/dist/cli-bundle/chunks/validate-PA4FDTOV.js.map +0 -7
- package/dist/cli-bundle/chunks/validate-Z7L75YEJ.js +0 -2105
- package/dist/cli-bundle/chunks/validate-Z7L75YEJ.js.map +0 -1
- /package/dist/cli-bundle/chunks/{activity-4XQIDNM5.js.map → append-F7WPGIQL.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{activity-YKAKZTZ4.js.map → append-PVCTBVJG.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-T3ABIMGW.js.map → chunk-2TILG6F2.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-RCT3YJOK.js.map → chunk-3TYOW6RR.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-3JZNEQBA.js.map → chunk-3X542TEY.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-YOF5VPKM.js.map → chunk-7VQ3JJN5.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-P5TFTLWW.js.map → chunk-AGAVEDIE.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-YFIE7YK6.js.map → chunk-AJUON7E6.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-7WYXBPYQ.js.map → chunk-DR2V5OIV.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-PDXT6Q55.js.map → chunk-EDO7VXSO.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-FUM6UMY4.js.map → chunk-EVEPHNXJ.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-RX3HQSYG.js.map → chunk-FN6SB4HU.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-DLQ4ZTCU.js.map → chunk-H2SMKL2N.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-C3PMDWGX.js.map → chunk-HX6QXV5P.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-N6DNM2FA.js.map → chunk-P3MJJW7P.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-5JE6SMYS.js.map → chunk-PDXJXEZJ.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-AAEQMOC6.js.map → chunk-TEKZOS7M.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-NER3KUUS.js.map → chunk-VLEA2UTQ.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-ZMD35NYG.js.map → chunk-WCWVEXGA.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-T35XLYZF.js.map → chunk-YPMZMKN7.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-R3ZBLGTC.js.map → chunk-YTD5GICJ.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-EEY54JMF.js.map → chunk-ZO7CLOY2.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{close-3YRR3XY6.js.map → close-3YYQ5OG2.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{close-OB2Y4QP5.js.map → close-Z3Q4U7TS.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{context-4OQGIPSO.js.map → close-many-3L2RXH3M.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{context-WLA6IAWE.js.map → close-many-D366FTIG.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{contracts-OJEXMKVW.js.map → comments-54XDJNFE.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{contracts-HXJLKCRI.js.map → comments-HGHC2PN6.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{create-XWWQFQ6S.js.map → copy-44RT5GDW.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{create-WKOZKPQR.js.map → copy-UGMUGHZA.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{extension-ZF6ZZPOU.js.map → create-4GWJWPXG.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{extension-NBAH62ML.js.map → create-AZXCUYKP.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{history-RYKLC72X.js.map → delete-Y6SXIQ4X.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{history-SGPYRAFT.js.map → delete-YQ2VPXNF.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{history-redact-54ICFKXM.js.map → deps-BU5EBJDU.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{history-redact-4H3FCKF3.js.map → deps-FMANWFRP.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{init-RPIPQUNV.js.map → docs-OQBSJNIA.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{init-SKQAESQS.js.map → docs-VNPBZXEL.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{list-64LHZ3HM.js.map → files-72HZEBOE.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{list-7LXBTEKI.js.map → files-HTSB2KJG.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{restore-YJ2ET6AT.js.map → focus-FOG4ALC2.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{restore-PXOFL6AM.js.map → focus-SUTMKXGX.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{schema-Y6DXXK2F.js.map → history-compact-M6IFAMBP.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{schema-2PUXCZ25.js.map → history-compact-NEXRPP2O.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{search-3S72CTD6.js.map → history-redact-NQX3OGZP.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{search-WNUNBQXO.js.map → history-redact-WQJBZ3PX.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{test-W7QBLVJS.js.map → history-repair-CBHMHAJO.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{test-DQ2QFJ7W.js.map → history-repair-NHOJG7WO.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{test-runs-ZRD4GCTT.js.map → learnings-M64NTSOR.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{test-runs-245OINZR.js.map → learnings-T63JGKKN.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{update-SJZ6S77U.js.map → notes-73WE2UV2.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{update-SFLZPJXX.js.map → notes-U7L6HQQ2.js.map} +0 -0
|
@@ -1,220 +0,0 @@
|
|
|
1
|
-
// dist/core/lock/lock-gc.js
|
|
2
|
-
import fs from "node:fs/promises";
|
|
3
|
-
import path from "node:path";
|
|
4
|
-
!(function() {
|
|
5
|
-
try {
|
|
6
|
-
var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}, n = new e.Error().stack;
|
|
7
|
-
n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "e9910e08-e968-52b7-b6cb-01167fa89d4c");
|
|
8
|
-
} catch (e2) {
|
|
9
|
-
}
|
|
10
|
-
})();
|
|
11
|
-
function parseLock(raw) {
|
|
12
|
-
let parsed;
|
|
13
|
-
try {
|
|
14
|
-
parsed = JSON.parse(raw);
|
|
15
|
-
} catch {
|
|
16
|
-
return null;
|
|
17
|
-
}
|
|
18
|
-
if (typeof parsed !== "object" || parsed === null || Array.isArray(parsed)) {
|
|
19
|
-
return null;
|
|
20
|
-
}
|
|
21
|
-
const candidate = parsed;
|
|
22
|
-
const { id, owner, created_at, ttl_seconds } = candidate;
|
|
23
|
-
if (typeof id !== "string" || typeof owner !== "string" || typeof created_at !== "string" || typeof ttl_seconds !== "number" || !Number.isFinite(ttl_seconds)) {
|
|
24
|
-
return null;
|
|
25
|
-
}
|
|
26
|
-
return { id, owner, created_at, ttl_seconds };
|
|
27
|
-
}
|
|
28
|
-
function isErrno(error, code) {
|
|
29
|
-
return typeof error === "object" && error !== null && "code" in error && error.code === code;
|
|
30
|
-
}
|
|
31
|
-
function classifyLockContent(file, raw, nowMs) {
|
|
32
|
-
const lock = parseLock(raw);
|
|
33
|
-
if (lock === null) {
|
|
34
|
-
return {
|
|
35
|
-
detail: "unparseable_json",
|
|
36
|
-
entry: {
|
|
37
|
-
file,
|
|
38
|
-
id: null,
|
|
39
|
-
owner: null,
|
|
40
|
-
created_at: null,
|
|
41
|
-
ttl_seconds: null,
|
|
42
|
-
age_seconds: null,
|
|
43
|
-
stale: false,
|
|
44
|
-
reason: "unparseable"
|
|
45
|
-
}
|
|
46
|
-
};
|
|
47
|
-
}
|
|
48
|
-
const createdAtMs = Date.parse(lock.created_at);
|
|
49
|
-
if (!Number.isFinite(createdAtMs)) {
|
|
50
|
-
return {
|
|
51
|
-
detail: "invalid_timestamp",
|
|
52
|
-
entry: {
|
|
53
|
-
file,
|
|
54
|
-
id: lock.id,
|
|
55
|
-
owner: lock.owner,
|
|
56
|
-
created_at: lock.created_at,
|
|
57
|
-
ttl_seconds: lock.ttl_seconds,
|
|
58
|
-
age_seconds: null,
|
|
59
|
-
stale: false,
|
|
60
|
-
reason: "unparseable"
|
|
61
|
-
}
|
|
62
|
-
};
|
|
63
|
-
}
|
|
64
|
-
const ageMs = nowMs - createdAtMs;
|
|
65
|
-
const age_seconds = Math.floor(ageMs / 1e3);
|
|
66
|
-
const stale = ageMs > lock.ttl_seconds * 1e3;
|
|
67
|
-
return {
|
|
68
|
-
detail: stale ? "expired" : "active",
|
|
69
|
-
entry: {
|
|
70
|
-
file,
|
|
71
|
-
id: lock.id,
|
|
72
|
-
owner: lock.owner,
|
|
73
|
-
created_at: lock.created_at,
|
|
74
|
-
ttl_seconds: lock.ttl_seconds,
|
|
75
|
-
age_seconds,
|
|
76
|
-
stale,
|
|
77
|
-
reason: stale ? "expired" : "active"
|
|
78
|
-
}
|
|
79
|
-
};
|
|
80
|
-
}
|
|
81
|
-
async function scanLockHealth(pmRoot, now) {
|
|
82
|
-
const nowMs = now ?? Date.now();
|
|
83
|
-
const locksDir = path.join(pmRoot, "locks");
|
|
84
|
-
const scan = {
|
|
85
|
-
scanned: 0,
|
|
86
|
-
active_lock_count: 0,
|
|
87
|
-
stale_lock_count: 0,
|
|
88
|
-
unreadable_lock_count: 0,
|
|
89
|
-
unparseable_lock_count: 0
|
|
90
|
-
};
|
|
91
|
-
let dirEntries;
|
|
92
|
-
try {
|
|
93
|
-
const rawDir = await fs.readdir(locksDir);
|
|
94
|
-
dirEntries = rawDir.filter((f) => f.endsWith(".lock")).sort();
|
|
95
|
-
} catch (error) {
|
|
96
|
-
if (isErrno(error, "ENOENT")) {
|
|
97
|
-
return scan;
|
|
98
|
-
}
|
|
99
|
-
throw error;
|
|
100
|
-
}
|
|
101
|
-
for (const file of dirEntries) {
|
|
102
|
-
let raw;
|
|
103
|
-
try {
|
|
104
|
-
raw = await fs.readFile(path.join(locksDir, file), "utf8");
|
|
105
|
-
} catch (readError) {
|
|
106
|
-
if (isErrno(readError, "ENOENT")) {
|
|
107
|
-
continue;
|
|
108
|
-
}
|
|
109
|
-
scan.scanned += 1;
|
|
110
|
-
scan.unreadable_lock_count += 1;
|
|
111
|
-
continue;
|
|
112
|
-
}
|
|
113
|
-
scan.scanned += 1;
|
|
114
|
-
const { detail } = classifyLockContent(file, raw, nowMs);
|
|
115
|
-
if (detail === "active") {
|
|
116
|
-
scan.active_lock_count += 1;
|
|
117
|
-
} else if (detail === "expired") {
|
|
118
|
-
scan.stale_lock_count += 1;
|
|
119
|
-
} else {
|
|
120
|
-
scan.unparseable_lock_count += 1;
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
return scan;
|
|
124
|
-
}
|
|
125
|
-
async function runLockGc(pmRoot, options) {
|
|
126
|
-
const { dryRun, hooks } = options;
|
|
127
|
-
const nowMs = options.now ?? Date.now();
|
|
128
|
-
const locksDir = path.join(pmRoot, "locks");
|
|
129
|
-
const result = {
|
|
130
|
-
scanned: 0,
|
|
131
|
-
removed: [],
|
|
132
|
-
retained: [],
|
|
133
|
-
warnings: [],
|
|
134
|
-
entries: []
|
|
135
|
-
};
|
|
136
|
-
let dirEntries;
|
|
137
|
-
try {
|
|
138
|
-
const raw = await fs.readdir(locksDir);
|
|
139
|
-
dirEntries = raw.filter((f) => f.endsWith(".lock")).sort();
|
|
140
|
-
} catch (error) {
|
|
141
|
-
if (isErrno(error, "ENOENT")) {
|
|
142
|
-
return result;
|
|
143
|
-
}
|
|
144
|
-
throw error;
|
|
145
|
-
}
|
|
146
|
-
for (const file of dirEntries) {
|
|
147
|
-
result.scanned += 1;
|
|
148
|
-
const absPath = path.join(locksDir, file);
|
|
149
|
-
const relPath = `locks/${file}`;
|
|
150
|
-
if (hooks?.onRead) {
|
|
151
|
-
const hookWarnings = await hooks.onRead(absPath);
|
|
152
|
-
result.warnings.push(...hookWarnings);
|
|
153
|
-
}
|
|
154
|
-
let raw;
|
|
155
|
-
try {
|
|
156
|
-
raw = await fs.readFile(absPath, "utf8");
|
|
157
|
-
} catch (readError) {
|
|
158
|
-
if (isErrno(readError, "ENOENT")) {
|
|
159
|
-
result.scanned -= 1;
|
|
160
|
-
continue;
|
|
161
|
-
}
|
|
162
|
-
result.warnings.push(`lock_unreadable:${file}`);
|
|
163
|
-
result.retained.push(relPath);
|
|
164
|
-
result.entries.push({
|
|
165
|
-
file,
|
|
166
|
-
id: null,
|
|
167
|
-
owner: null,
|
|
168
|
-
created_at: null,
|
|
169
|
-
ttl_seconds: null,
|
|
170
|
-
age_seconds: null,
|
|
171
|
-
stale: false,
|
|
172
|
-
reason: "unparseable"
|
|
173
|
-
});
|
|
174
|
-
continue;
|
|
175
|
-
}
|
|
176
|
-
const classified = classifyLockContent(file, raw, nowMs);
|
|
177
|
-
if (classified.detail === "unparseable_json") {
|
|
178
|
-
result.warnings.push(`lock_unparseable:${file}`);
|
|
179
|
-
result.retained.push(relPath);
|
|
180
|
-
result.entries.push(classified.entry);
|
|
181
|
-
continue;
|
|
182
|
-
}
|
|
183
|
-
if (classified.detail === "invalid_timestamp") {
|
|
184
|
-
result.warnings.push(`lock_invalid_timestamp:${file}`);
|
|
185
|
-
result.retained.push(relPath);
|
|
186
|
-
result.entries.push(classified.entry);
|
|
187
|
-
continue;
|
|
188
|
-
}
|
|
189
|
-
if (classified.detail === "active") {
|
|
190
|
-
result.retained.push(relPath);
|
|
191
|
-
result.entries.push(classified.entry);
|
|
192
|
-
continue;
|
|
193
|
-
}
|
|
194
|
-
if (!dryRun) {
|
|
195
|
-
try {
|
|
196
|
-
await fs.unlink(absPath);
|
|
197
|
-
} catch (unlinkError) {
|
|
198
|
-
if (!isErrno(unlinkError, "ENOENT")) {
|
|
199
|
-
result.warnings.push(`lock_remove_failed:${file}`);
|
|
200
|
-
result.retained.push(relPath);
|
|
201
|
-
result.entries.push(classified.entry);
|
|
202
|
-
continue;
|
|
203
|
-
}
|
|
204
|
-
}
|
|
205
|
-
if (hooks?.onWrite) {
|
|
206
|
-
const hookWarnings = await hooks.onWrite(absPath);
|
|
207
|
-
result.warnings.push(...hookWarnings);
|
|
208
|
-
}
|
|
209
|
-
}
|
|
210
|
-
result.removed.push(relPath);
|
|
211
|
-
result.entries.push(classified.entry);
|
|
212
|
-
}
|
|
213
|
-
return result;
|
|
214
|
-
}
|
|
215
|
-
|
|
216
|
-
export {
|
|
217
|
-
scanLockHealth,
|
|
218
|
-
runLockGc
|
|
219
|
-
};
|
|
220
|
-
//# sourceMappingURL=chunk-QZ342C63.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../../../../../../core/lock/lock-gc.ts"],
|
|
4
|
-
"sourcesContent": ["/**\n * lock-gc.ts — Stale lock file garbage collector.\n *\n * Safety-first policy: if a lock file cannot be read or parsed, it is RETAINED\n * rather than deleted. We only remove locks whose staleness can be conclusively\n * determined from the lock's own embedded `ttl_seconds` field.\n *\n * Staleness formula: (now_ms - Date.parse(created_at)) > ttl_seconds * 1000\n * Zero ttl means any lock older than 0 ms is stale. Negative ttl means always stale.\n */\n\nimport fs from \"node:fs/promises\";\nimport path from \"node:path\";\n\n/**\n * Documents the stale lock scan entry payload exchanged by command, SDK, and package integrations.\n */\nexport interface StaleLockScanEntry {\n /** e.g. \"pm-abc1.lock\" */\n file: string;\n /** parsed id, or null if unparseable */\n id: string | null;\n owner: string | null;\n created_at: string | null;\n ttl_seconds: number | null;\n /** floor((now - created_at)/1000), null if unparseable */\n age_seconds: number | null;\n /** true only when classified expired */\n stale: boolean;\n reason: \"expired\" | \"active\" | \"unparseable\";\n}\n\n/**\n * Documents the lock gc hooks payload exchanged by command, SDK, and package integrations.\n */\nexport interface LockGcHooks {\n onRead?: (lockPath: string) => Promise<string[]> | string[];\n onWrite?: (lockPath: string) => Promise<string[]> | string[];\n}\n\n/**\n * Documents the lock gc options payload exchanged by command, SDK, and package integrations.\n */\nexport interface LockGcOptions {\n dryRun: boolean;\n /** epoch ms; defaults to Date.now() — injectable for deterministic tests */\n now?: number;\n hooks?: LockGcHooks;\n}\n\n/**\n * Documents the lock gc result payload exchanged by command, SDK, and package integrations.\n */\nexport interface LockGcResult {\n /** number of *.lock files examined */\n scanned: number;\n /** relative paths like \"locks/pm-abc1.lock\" (removed, or would-remove under dryRun) */\n removed: string[];\n /** relative paths retained (active OR unparseable — never delete what we can't reason about) */\n retained: string[];\n warnings: string[];\n /** one per scanned *.lock file, sorted by file name asc */\n entries: StaleLockScanEntry[];\n}\n\ninterface ParsedLock {\n id: string;\n owner: string;\n created_at: string;\n ttl_seconds: number;\n}\n\nfunction parseLock(raw: string): ParsedLock | null {\n let parsed: unknown;\n try {\n parsed = JSON.parse(raw) as unknown;\n } catch {\n return null;\n }\n if (typeof parsed !== \"object\" || parsed === null || Array.isArray(parsed)) {\n return null;\n }\n const candidate = parsed as Record<string, unknown>;\n const { id, owner, created_at, ttl_seconds } = candidate;\n if (\n typeof id !== \"string\" ||\n typeof owner !== \"string\" ||\n typeof created_at !== \"string\" ||\n typeof ttl_seconds !== \"number\" ||\n !Number.isFinite(ttl_seconds)\n ) {\n return null;\n }\n return { id, owner, created_at, ttl_seconds };\n}\n\nfunction isErrno(error: unknown, code: string): boolean {\n return (\n typeof error === \"object\" &&\n error !== null &&\n \"code\" in error &&\n (error as { code?: string }).code === code\n );\n}\n\n/**\n * Fine-grained classification outcome for one readable lock file's content.\n * `unparseable_json` and `invalid_timestamp` both surface as the coarse\n * `reason: \"unparseable\"` on the scan entry (gc retains both), but stay\n * distinct here so callers can emit precise warnings.\n */\nexport type LockClassificationDetail = \"active\" | \"expired\" | \"unparseable_json\" | \"invalid_timestamp\";\n\n/**\n * Documents the lock content classification payload exchanged by command, SDK, and package integrations.\n */\nexport interface LockContentClassification {\n detail: LockClassificationDetail;\n entry: StaleLockScanEntry;\n}\n\n/**\n * Pure classification of one lock file's raw content against `nowMs`. This is\n * the single staleness/parse policy shared by `pm gc --scope locks` (which acts\n * on it) and the `pm health` locks check (which only reports it).\n */\nexport function classifyLockContent(file: string, raw: string, nowMs: number): LockContentClassification {\n const lock = parseLock(raw);\n if (lock === null) {\n return {\n detail: \"unparseable_json\",\n entry: {\n file,\n id: null,\n owner: null,\n created_at: null,\n ttl_seconds: null,\n age_seconds: null,\n stale: false,\n reason: \"unparseable\",\n },\n };\n }\n const createdAtMs = Date.parse(lock.created_at);\n if (!Number.isFinite(createdAtMs)) {\n return {\n detail: \"invalid_timestamp\",\n entry: {\n file,\n id: lock.id,\n owner: lock.owner,\n created_at: lock.created_at,\n ttl_seconds: lock.ttl_seconds,\n age_seconds: null,\n stale: false,\n reason: \"unparseable\",\n },\n };\n }\n const ageMs = nowMs - createdAtMs;\n const age_seconds = Math.floor(ageMs / 1000);\n const stale = ageMs > lock.ttl_seconds * 1000;\n return {\n detail: stale ? \"expired\" : \"active\",\n entry: {\n file,\n id: lock.id,\n owner: lock.owner,\n created_at: lock.created_at,\n ttl_seconds: lock.ttl_seconds,\n age_seconds,\n stale,\n reason: stale ? \"expired\" : \"active\",\n },\n };\n}\n\n/**\n * Documents the lock health scan payload exchanged by command, SDK, and package integrations.\n */\nexport interface LockHealthScan {\n /** number of *.lock files examined (ghost files that vanish mid-scan are skipped) */\n scanned: number;\n active_lock_count: number;\n stale_lock_count: number;\n unreadable_lock_count: number;\n /** invalid JSON, wrong shape, or an unparseable created_at timestamp */\n unparseable_lock_count: number;\n}\n\n/**\n * Read-only locks scan for `pm health`: classifies every lock file with the\n * same policy `pm gc --scope locks` uses but never removes anything.\n */\nexport async function scanLockHealth(pmRoot: string, now?: number): Promise<LockHealthScan> {\n const nowMs = now ?? Date.now();\n const locksDir = path.join(pmRoot, \"locks\");\n const scan: LockHealthScan = {\n scanned: 0,\n active_lock_count: 0,\n stale_lock_count: 0,\n unreadable_lock_count: 0,\n unparseable_lock_count: 0,\n };\n\n let dirEntries: string[];\n try {\n const rawDir = await fs.readdir(locksDir);\n dirEntries = rawDir.filter((f) => f.endsWith(\".lock\")).sort();\n } catch (error: unknown) {\n if (isErrno(error, \"ENOENT\")) {\n return scan;\n }\n throw error;\n }\n\n for (const file of dirEntries) {\n let raw: string;\n try {\n raw = await fs.readFile(path.join(locksDir, file), \"utf8\");\n } catch (readError: unknown) {\n if (isErrno(readError, \"ENOENT\")) {\n // Disappeared between readdir and readFile — treat as a ghost; skip quietly.\n continue;\n }\n scan.scanned += 1;\n scan.unreadable_lock_count += 1;\n continue;\n }\n scan.scanned += 1;\n const { detail } = classifyLockContent(file, raw, nowMs);\n if (detail === \"active\") {\n scan.active_lock_count += 1;\n } else if (detail === \"expired\") {\n scan.stale_lock_count += 1;\n } else {\n scan.unparseable_lock_count += 1;\n }\n }\n\n return scan;\n}\n\n/**\n * Implements run lock gc for the public runtime surface of this module.\n */\nexport async function runLockGc(pmRoot: string, options: LockGcOptions): Promise<LockGcResult> {\n const { dryRun, hooks } = options;\n const nowMs = options.now ?? Date.now();\n const locksDir = path.join(pmRoot, \"locks\");\n\n const result: LockGcResult = {\n scanned: 0,\n removed: [],\n retained: [],\n warnings: [],\n entries: [],\n };\n\n let dirEntries: string[];\n try {\n const raw = await fs.readdir(locksDir);\n dirEntries = raw.filter((f) => f.endsWith(\".lock\")).sort();\n } catch (error: unknown) {\n if (isErrno(error, \"ENOENT\")) {\n return result;\n }\n throw error;\n }\n\n for (const file of dirEntries) {\n result.scanned += 1;\n const absPath = path.join(locksDir, file);\n const relPath = `locks/${file}`;\n\n // --- onRead hook ---\n if (hooks?.onRead) {\n const hookWarnings = await hooks.onRead(absPath);\n result.warnings.push(...hookWarnings);\n }\n\n // --- read file ---\n let raw: string;\n try {\n raw = await fs.readFile(absPath, \"utf8\");\n } catch (readError: unknown) {\n if (isErrno(readError, \"ENOENT\")) {\n // Disappeared between readdir and readFile — treat as a ghost; skip quietly.\n result.scanned -= 1;\n continue;\n }\n result.warnings.push(`lock_unreadable:${file}`);\n result.retained.push(relPath);\n result.entries.push({\n file,\n id: null,\n owner: null,\n created_at: null,\n ttl_seconds: null,\n age_seconds: null,\n stale: false,\n reason: \"unparseable\",\n });\n continue;\n }\n\n // --- classify (shared with the read-only pm health locks scan) ---\n const classified = classifyLockContent(file, raw, nowMs);\n if (classified.detail === \"unparseable_json\") {\n result.warnings.push(`lock_unparseable:${file}`);\n result.retained.push(relPath);\n result.entries.push(classified.entry);\n continue;\n }\n if (classified.detail === \"invalid_timestamp\") {\n result.warnings.push(`lock_invalid_timestamp:${file}`);\n result.retained.push(relPath);\n result.entries.push(classified.entry);\n continue;\n }\n if (classified.detail === \"active\") {\n result.retained.push(relPath);\n result.entries.push(classified.entry);\n continue;\n }\n\n // --- stale: remove or preview ---\n if (!dryRun) {\n try {\n await fs.unlink(absPath);\n } catch (unlinkError: unknown) {\n if (!isErrno(unlinkError, \"ENOENT\")) {\n result.warnings.push(`lock_remove_failed:${file}`);\n result.retained.push(relPath);\n result.entries.push(classified.entry);\n continue;\n }\n // ENOENT on unlink = already gone (race); treat as removed\n }\n // onWrite hook after successful removal\n if (hooks?.onWrite) {\n const hookWarnings = await hooks.onWrite(absPath);\n result.warnings.push(...hookWarnings);\n }\n }\n\n result.removed.push(relPath);\n result.entries.push(classified.entry);\n }\n\n return result;\n}\n"],
|
|
5
|
-
"mappings": ";AAWA,OAAO,QAAQ;AACf,OAAO,UAAU;;;;;;;;AA4DjB,SAAS,UAAU,KAAW;AAC5B,MAAI;AACJ,MAAI;AACF,aAAS,KAAK,MAAM,GAAG;EACzB,QAAQ;AACN,WAAO;EACT;AACA,MAAI,OAAO,WAAW,YAAY,WAAW,QAAQ,MAAM,QAAQ,MAAM,GAAG;AAC1E,WAAO;EACT;AACA,QAAM,YAAY;AAClB,QAAM,EAAE,IAAI,OAAO,YAAY,YAAW,IAAK;AAC/C,MACE,OAAO,OAAO,YACd,OAAO,UAAU,YACjB,OAAO,eAAe,YACtB,OAAO,gBAAgB,YACvB,CAAC,OAAO,SAAS,WAAW,GAC5B;AACA,WAAO;EACT;AACA,SAAO,EAAE,IAAI,OAAO,YAAY,YAAW;AAC7C;AAEA,SAAS,QAAQ,OAAgB,MAAY;AAC3C,SACE,OAAO,UAAU,YACjB,UAAU,QACV,UAAU,SACT,MAA4B,SAAS;AAE1C;AAuBM,SAAU,oBAAoB,MAAc,KAAa,OAAa;AAC1E,QAAM,OAAO,UAAU,GAAG;AAC1B,MAAI,SAAS,MAAM;AACjB,WAAO;MACL,QAAQ;MACR,OAAO;QACL;QACA,IAAI;QACJ,OAAO;QACP,YAAY;QACZ,aAAa;QACb,aAAa;QACb,OAAO;QACP,QAAQ;;;EAGd;AACA,QAAM,cAAc,KAAK,MAAM,KAAK,UAAU;AAC9C,MAAI,CAAC,OAAO,SAAS,WAAW,GAAG;AACjC,WAAO;MACL,QAAQ;MACR,OAAO;QACL;QACA,IAAI,KAAK;QACT,OAAO,KAAK;QACZ,YAAY,KAAK;QACjB,aAAa,KAAK;QAClB,aAAa;QACb,OAAO;QACP,QAAQ;;;EAGd;AACA,QAAM,QAAQ,QAAQ;AACtB,QAAM,cAAc,KAAK,MAAM,QAAQ,GAAI;AAC3C,QAAM,QAAQ,QAAQ,KAAK,cAAc;AACzC,SAAO;IACL,QAAQ,QAAQ,YAAY;IAC5B,OAAO;MACL;MACA,IAAI,KAAK;MACT,OAAO,KAAK;MACZ,YAAY,KAAK;MACjB,aAAa,KAAK;MAClB;MACA;MACA,QAAQ,QAAQ,YAAY;;;AAGlC;AAmBA,eAAsB,eAAe,QAAgB,KAAY;AAC/D,QAAM,QAAQ,OAAO,KAAK,IAAG;AAC7B,QAAM,WAAW,KAAK,KAAK,QAAQ,OAAO;AAC1C,QAAM,OAAuB;IAC3B,SAAS;IACT,mBAAmB;IACnB,kBAAkB;IAClB,uBAAuB;IACvB,wBAAwB;;AAG1B,MAAI;AACJ,MAAI;AACF,UAAM,SAAS,MAAM,GAAG,QAAQ,QAAQ;AACxC,iBAAa,OAAO,OAAO,CAAC,MAAM,EAAE,SAAS,OAAO,CAAC,EAAE,KAAI;EAC7D,SAAS,OAAgB;AACvB,QAAI,QAAQ,OAAO,QAAQ,GAAG;AAC5B,aAAO;IACT;AACA,UAAM;EACR;AAEA,aAAW,QAAQ,YAAY;AAC7B,QAAI;AACJ,QAAI;AACF,YAAM,MAAM,GAAG,SAAS,KAAK,KAAK,UAAU,IAAI,GAAG,MAAM;IAC3D,SAAS,WAAoB;AAC3B,UAAI,QAAQ,WAAW,QAAQ,GAAG;AAEhC;MACF;AACA,WAAK,WAAW;AAChB,WAAK,yBAAyB;AAC9B;IACF;AACA,SAAK,WAAW;AAChB,UAAM,EAAE,OAAM,IAAK,oBAAoB,MAAM,KAAK,KAAK;AACvD,QAAI,WAAW,UAAU;AACvB,WAAK,qBAAqB;IAC5B,WAAW,WAAW,WAAW;AAC/B,WAAK,oBAAoB;IAC3B,OAAO;AACL,WAAK,0BAA0B;IACjC;EACF;AAEA,SAAO;AACT;AAKA,eAAsB,UAAU,QAAgB,SAAsB;AACpE,QAAM,EAAE,QAAQ,MAAK,IAAK;AAC1B,QAAM,QAAQ,QAAQ,OAAO,KAAK,IAAG;AACrC,QAAM,WAAW,KAAK,KAAK,QAAQ,OAAO;AAE1C,QAAM,SAAuB;IAC3B,SAAS;IACT,SAAS,CAAA;IACT,UAAU,CAAA;IACV,UAAU,CAAA;IACV,SAAS,CAAA;;AAGX,MAAI;AACJ,MAAI;AACF,UAAM,MAAM,MAAM,GAAG,QAAQ,QAAQ;AACrC,iBAAa,IAAI,OAAO,CAAC,MAAM,EAAE,SAAS,OAAO,CAAC,EAAE,KAAI;EAC1D,SAAS,OAAgB;AACvB,QAAI,QAAQ,OAAO,QAAQ,GAAG;AAC5B,aAAO;IACT;AACA,UAAM;EACR;AAEA,aAAW,QAAQ,YAAY;AAC7B,WAAO,WAAW;AAClB,UAAM,UAAU,KAAK,KAAK,UAAU,IAAI;AACxC,UAAM,UAAU,SAAS,IAAI;AAG7B,QAAI,OAAO,QAAQ;AACjB,YAAM,eAAe,MAAM,MAAM,OAAO,OAAO;AAC/C,aAAO,SAAS,KAAK,GAAG,YAAY;IACtC;AAGA,QAAI;AACJ,QAAI;AACF,YAAM,MAAM,GAAG,SAAS,SAAS,MAAM;IACzC,SAAS,WAAoB;AAC3B,UAAI,QAAQ,WAAW,QAAQ,GAAG;AAEhC,eAAO,WAAW;AAClB;MACF;AACA,aAAO,SAAS,KAAK,mBAAmB,IAAI,EAAE;AAC9C,aAAO,SAAS,KAAK,OAAO;AAC5B,aAAO,QAAQ,KAAK;QAClB;QACA,IAAI;QACJ,OAAO;QACP,YAAY;QACZ,aAAa;QACb,aAAa;QACb,OAAO;QACP,QAAQ;OACT;AACD;IACF;AAGA,UAAM,aAAa,oBAAoB,MAAM,KAAK,KAAK;AACvD,QAAI,WAAW,WAAW,oBAAoB;AAC5C,aAAO,SAAS,KAAK,oBAAoB,IAAI,EAAE;AAC/C,aAAO,SAAS,KAAK,OAAO;AAC5B,aAAO,QAAQ,KAAK,WAAW,KAAK;AACpC;IACF;AACA,QAAI,WAAW,WAAW,qBAAqB;AAC7C,aAAO,SAAS,KAAK,0BAA0B,IAAI,EAAE;AACrD,aAAO,SAAS,KAAK,OAAO;AAC5B,aAAO,QAAQ,KAAK,WAAW,KAAK;AACpC;IACF;AACA,QAAI,WAAW,WAAW,UAAU;AAClC,aAAO,SAAS,KAAK,OAAO;AAC5B,aAAO,QAAQ,KAAK,WAAW,KAAK;AACpC;IACF;AAGA,QAAI,CAAC,QAAQ;AACX,UAAI;AACF,cAAM,GAAG,OAAO,OAAO;MACzB,SAAS,aAAsB;AAC7B,YAAI,CAAC,QAAQ,aAAa,QAAQ,GAAG;AACnC,iBAAO,SAAS,KAAK,sBAAsB,IAAI,EAAE;AACjD,iBAAO,SAAS,KAAK,OAAO;AAC5B,iBAAO,QAAQ,KAAK,WAAW,KAAK;AACpC;QACF;MAEF;AAEA,UAAI,OAAO,SAAS;AAClB,cAAM,eAAe,MAAM,MAAM,QAAQ,OAAO;AAChD,eAAO,SAAS,KAAK,GAAG,YAAY;MACtC;IACF;AAEA,WAAO,QAAQ,KAAK,OAAO;AAC3B,WAAO,QAAQ,KAAK,WAAW,KAAK;EACtC;AAEA,SAAO;AACT;",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|
|
@@ -1,368 +0,0 @@
|
|
|
1
|
-
// dist/core/diagnostics/remediation.js
|
|
2
|
-
|
|
3
|
-
!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]="d544ed3b-8846-5b6f-91a8-978992585267")}catch(e){}}();
|
|
4
|
-
var REMEDIATION_REGISTRY = Object.freeze([
|
|
5
|
-
// --- pm health: directories ---
|
|
6
|
-
{
|
|
7
|
-
code: "missing_directory",
|
|
8
|
-
command: "pm init",
|
|
9
|
-
summary: "Recreate missing tracker directories (pm init is idempotent and restores the scaffold)."
|
|
10
|
-
},
|
|
11
|
-
// --- pm health: settings (read/parse) ---
|
|
12
|
-
{
|
|
13
|
-
code: "settings_read_invalid_json",
|
|
14
|
-
command: "pm config list --json",
|
|
15
|
-
summary: "settings.json is not valid JSON and pm fell back to defaults; fix the syntax error in the reported path, then re-run."
|
|
16
|
-
},
|
|
17
|
-
{
|
|
18
|
-
code: "settings_read_invalid_schema",
|
|
19
|
-
command: "pm config list --json",
|
|
20
|
-
summary: "settings.json failed schema validation and pm fell back to defaults; correct the reported key in the file, then re-run."
|
|
21
|
-
},
|
|
22
|
-
{
|
|
23
|
-
code: "settings_read_merge_failed",
|
|
24
|
-
command: "pm config list --json",
|
|
25
|
-
summary: "Global/project settings could not be merged; reconcile the conflicting keys in the reported settings files."
|
|
26
|
-
},
|
|
27
|
-
// --- pm health: settings_values ---
|
|
28
|
-
{
|
|
29
|
-
code: "settings:id_prefix_empty",
|
|
30
|
-
command: "pm config list --json",
|
|
31
|
-
summary: 'id_prefix is empty; set a non-empty "id_prefix" in settings.json so generated item ids are well-formed.'
|
|
32
|
-
},
|
|
33
|
-
{
|
|
34
|
-
code: "settings:locks_ttl_non_positive",
|
|
35
|
-
command: "pm config list --json",
|
|
36
|
-
summary: 'locks.ttl_seconds must be positive; set a positive "locks.ttl_seconds" in settings.json.'
|
|
37
|
-
},
|
|
38
|
-
// --- pm health: telemetry (advisory) ---
|
|
39
|
-
{
|
|
40
|
-
code: "telemetry_state_invalid_json",
|
|
41
|
-
command: "pm health --check-telemetry",
|
|
42
|
-
summary: "Local telemetry state file is corrupt; pm recreates it on the next flush. Advisory only."
|
|
43
|
-
},
|
|
44
|
-
{
|
|
45
|
-
code: "telemetry_queue_invalid_rows",
|
|
46
|
-
command: "pm health --check-telemetry",
|
|
47
|
-
summary: "The telemetry queue has unparseable rows; they are skipped on the next flush. Advisory only."
|
|
48
|
-
},
|
|
49
|
-
{
|
|
50
|
-
code: "telemetry_queue_pending",
|
|
51
|
-
command: "pm health --check-telemetry",
|
|
52
|
-
summary: "Telemetry events are queued; they flush automatically on the next reachable command. Advisory only."
|
|
53
|
-
},
|
|
54
|
-
{
|
|
55
|
-
code: "telemetry_queue_high_retries",
|
|
56
|
-
command: "pm telemetry flush",
|
|
57
|
-
summary: "Some queued telemetry events are near retry exhaustion; flush now and verify endpoint reachability before entries are dropped."
|
|
58
|
-
},
|
|
59
|
-
{
|
|
60
|
-
code: "telemetry_endpoint_probe_failed",
|
|
61
|
-
command: "pm health --check-telemetry",
|
|
62
|
-
summary: "The telemetry endpoint is unreachable; events stay queued until it recovers. Advisory only."
|
|
63
|
-
},
|
|
64
|
-
{
|
|
65
|
-
code: "telemetry_endpoint_probe_http_status",
|
|
66
|
-
command: "pm health --check-telemetry",
|
|
67
|
-
summary: "The telemetry endpoint returned a non-success status; events stay queued until it recovers. Advisory only."
|
|
68
|
-
},
|
|
69
|
-
{
|
|
70
|
-
code: "telemetry_schema_version_behind",
|
|
71
|
-
command: "pm health --check-telemetry",
|
|
72
|
-
summary: "Client schema is behind server; upgrade pm-cli to emit the latest event shape."
|
|
73
|
-
},
|
|
74
|
-
{
|
|
75
|
-
code: "telemetry_otel_export_failing",
|
|
76
|
-
command: "pm health --check-telemetry",
|
|
77
|
-
summary: "OTLP trace spans are queued but the traces endpoint export is failing; spans retry automatically on the next reachable command, or set PM_TELEMETRY_OTEL_DISABLED=1 to skip OTLP export. Advisory only."
|
|
78
|
-
},
|
|
79
|
-
// --- pm health: integrity ---
|
|
80
|
-
{
|
|
81
|
-
code: "integrity_item_unreadable",
|
|
82
|
-
command: "pm validate --check-files --verbose-diagnostics",
|
|
83
|
-
summary: "An item file could not be read; restore or repair the file at the reported path."
|
|
84
|
-
},
|
|
85
|
-
{
|
|
86
|
-
code: "integrity_item_parse_failed",
|
|
87
|
-
command: "pm validate --check-files --verbose-diagnostics",
|
|
88
|
-
summary: "An item file failed to parse; fix the malformed front matter at the reported path."
|
|
89
|
-
},
|
|
90
|
-
{
|
|
91
|
-
code: "integrity_item_conflict_marker",
|
|
92
|
-
command: "pm validate --check-files --verbose-diagnostics",
|
|
93
|
-
summary: "An item file contains Git conflict markers; resolve the <<<<<<< / >>>>>>> markers at the reported line."
|
|
94
|
-
},
|
|
95
|
-
{
|
|
96
|
-
code: "integrity_history_unreadable",
|
|
97
|
-
command: "pm history-repair <id>",
|
|
98
|
-
summary: "A history stream could not be read; re-anchor the affected item's history chain."
|
|
99
|
-
},
|
|
100
|
-
{
|
|
101
|
-
code: "integrity_history_invalid_json",
|
|
102
|
-
command: "pm history-repair <id>",
|
|
103
|
-
summary: "A history stream contains invalid JSON; re-anchor the affected item's history chain."
|
|
104
|
-
},
|
|
105
|
-
{
|
|
106
|
-
code: "integrity_history_conflict_marker",
|
|
107
|
-
command: "pm history-repair <id>",
|
|
108
|
-
summary: "A history stream contains Git conflict markers; resolve the markers, then re-anchor the chain."
|
|
109
|
-
},
|
|
110
|
-
// --- pm health (integrity) + pm validate (format_version): item format version ---
|
|
111
|
-
{
|
|
112
|
-
code: "integrity_item_outdated_format_version",
|
|
113
|
-
command: "pm validate --verbose-diagnostics",
|
|
114
|
-
summary: "An item predates the current storage format version; a pm storage migration rewrites it. Use --verbose-diagnostics to list the affected items."
|
|
115
|
-
},
|
|
116
|
-
{
|
|
117
|
-
code: "integrity_item_ahead_format_version",
|
|
118
|
-
command: "npm install -g @unbrained/pm-cli@latest",
|
|
119
|
-
summary: "An item was written by a newer pm format version than this runtime supports; upgrade pm to read and validate it safely."
|
|
120
|
-
},
|
|
121
|
-
// --- pm health: history_drift ---
|
|
122
|
-
// `pm health` rewrites these commands to `pm history-repair --all` in the
|
|
123
|
-
// per-check remediation_map when more than one stream is drifted.
|
|
124
|
-
{
|
|
125
|
-
code: "history_drift_missing_stream",
|
|
126
|
-
command: "pm history-repair <id>",
|
|
127
|
-
summary: "The item has no history stream; re-anchor the chain to rebuild it (pm history-repair --all repairs every drifted stream in one pass)."
|
|
128
|
-
},
|
|
129
|
-
{
|
|
130
|
-
code: "history_drift_unreadable_stream",
|
|
131
|
-
command: "pm history-repair <id>",
|
|
132
|
-
summary: "The item's history stream is unreadable; re-anchor the chain (pm history-repair --all repairs every drifted stream in one pass)."
|
|
133
|
-
},
|
|
134
|
-
{
|
|
135
|
-
code: "history_drift_hash_mismatch",
|
|
136
|
-
command: "pm history-repair <id>",
|
|
137
|
-
summary: "The item's content hash no longer matches its history; re-anchor the chain (pm history-repair --all repairs every drifted stream in one pass)."
|
|
138
|
-
},
|
|
139
|
-
{
|
|
140
|
-
code: "history_drift_chain_mismatch",
|
|
141
|
-
command: "pm history-repair <id>",
|
|
142
|
-
summary: "The item's history chain is broken; re-anchor the chain (pm history-repair --all repairs every drifted stream in one pass)."
|
|
143
|
-
},
|
|
144
|
-
// --- pm health: storage (history compaction policy) ---
|
|
145
|
-
{
|
|
146
|
-
code: "history_stream_over_compact_threshold",
|
|
147
|
-
command: "pm history-compact <id>",
|
|
148
|
-
summary: "The history stream exceeds the configured compaction threshold; compact it (pm history-compact --all-streams sweeps every over-threshold stream in one pass)."
|
|
149
|
-
},
|
|
150
|
-
// --- pm health: locks ---
|
|
151
|
-
{
|
|
152
|
-
code: "locks_stale_count",
|
|
153
|
-
command: "pm gc --scope locks",
|
|
154
|
-
summary: "Stale item-claim locks (embedded ttl elapsed) can block mutations; sweep them \u2014 gc retains active and unparseable locks."
|
|
155
|
-
},
|
|
156
|
-
{
|
|
157
|
-
code: "locks_unreadable",
|
|
158
|
-
command: "pm gc --scope locks --dry-run",
|
|
159
|
-
summary: "Some lock files could not be read; preview the sweep and inspect the unreadable files manually \u2014 gc never deletes what it cannot read."
|
|
160
|
-
},
|
|
161
|
-
// --- pm health: extensions ---
|
|
162
|
-
// Most extension findings keep their richer, contextual
|
|
163
|
-
// `details.triage.remediation` and are intentionally absent here. The
|
|
164
|
-
// partial-coverage code is the exception: it is not a per-extension triage
|
|
165
|
-
// result but a system-wide adoption gap (unmanaged installs the update-health
|
|
166
|
-
// scan had to skip), so it has a single deterministic fix and belongs in the
|
|
167
|
-
// shared registry like any other health finding (pm-bdvm).
|
|
168
|
-
{
|
|
169
|
-
code: "extension_update_health_partial_coverage",
|
|
170
|
-
command: "pm extension --adopt-all --project",
|
|
171
|
-
summary: "Update-health coverage is partial because unmanaged extensions were skipped; adopt the existing installs into managed metadata so the update scan covers them (use --global for global-scope extensions, or pm package --adopt-all when working with packages)."
|
|
172
|
-
},
|
|
173
|
-
// --- pm health: vectorization ---
|
|
174
|
-
{
|
|
175
|
-
code: "vectorization_stale_items_remaining",
|
|
176
|
-
command: "pm health --refresh-vectors",
|
|
177
|
-
summary: "Some items have stale embeddings; refresh vectors so semantic search results stay current."
|
|
178
|
-
},
|
|
179
|
-
{
|
|
180
|
-
code: "vectorization_embedding_identity_changed",
|
|
181
|
-
command: "pm reindex --mode semantic",
|
|
182
|
-
summary: "Embedding provider/model changed since the last index; run a semantic reindex to rebuild vectors."
|
|
183
|
-
},
|
|
184
|
-
// --- pm validate: metadata ---
|
|
185
|
-
// Note: validate_metadata_missing_author has no entry on purpose. `pm update
|
|
186
|
-
// --author` sets the mutation/audit author (history), not the item's
|
|
187
|
-
// `metadata.author` front-matter field, and there is no CLI flag that writes
|
|
188
|
-
// that field — so emitting a command here would record an audit entry without
|
|
189
|
-
// clearing the finding. A missing item author must be restored at the source.
|
|
190
|
-
{
|
|
191
|
-
code: "validate_metadata_missing_acceptance_criteria",
|
|
192
|
-
command: 'pm update <id> --acceptance-criteria "<criteria>"',
|
|
193
|
-
summary: "Backfill the missing acceptance criteria on the reported item(s)."
|
|
194
|
-
},
|
|
195
|
-
{
|
|
196
|
-
code: "validate_metadata_missing_estimate",
|
|
197
|
-
command: 'pm update <id> --estimate "<estimate>"',
|
|
198
|
-
summary: "Backfill the missing estimate on the reported item(s)."
|
|
199
|
-
},
|
|
200
|
-
{
|
|
201
|
-
code: "validate_metadata_missing_close_reason",
|
|
202
|
-
command: 'pm update <id> --close-reason "<reason>"',
|
|
203
|
-
summary: "Backfill the missing close reason on the reported closed item(s)."
|
|
204
|
-
},
|
|
205
|
-
{
|
|
206
|
-
code: "validate_metadata_missing_reviewer",
|
|
207
|
-
command: 'pm update <id> --reviewer "<name>"',
|
|
208
|
-
summary: "Backfill the missing reviewer on the reported item(s)."
|
|
209
|
-
},
|
|
210
|
-
{
|
|
211
|
-
code: "validate_metadata_missing_risk",
|
|
212
|
-
command: 'pm update <id> --risk "<level>"',
|
|
213
|
-
summary: "Backfill the missing risk on the reported item(s)."
|
|
214
|
-
},
|
|
215
|
-
{
|
|
216
|
-
code: "validate_metadata_missing_confidence",
|
|
217
|
-
command: 'pm update <id> --confidence "<level>"',
|
|
218
|
-
summary: "Backfill the missing confidence on the reported item(s)."
|
|
219
|
-
},
|
|
220
|
-
{
|
|
221
|
-
code: "validate_metadata_missing_sprint",
|
|
222
|
-
command: 'pm update <id> --sprint "<sprint>"',
|
|
223
|
-
summary: "Backfill the missing sprint on the reported item(s)."
|
|
224
|
-
},
|
|
225
|
-
{
|
|
226
|
-
code: "validate_metadata_missing_release",
|
|
227
|
-
command: 'pm update <id> --release "<release>"',
|
|
228
|
-
summary: "Backfill the missing release on the reported item(s)."
|
|
229
|
-
},
|
|
230
|
-
{
|
|
231
|
-
code: "validate_metadata_custom_profile_missing_required_fields",
|
|
232
|
-
command: 'pm config set metadata-required-fields --criterion "<field>"',
|
|
233
|
-
summary: "Config-driven finding: the custom metadata profile has no required fields configured and falls back to core, so configure the fields rather than mutating items."
|
|
234
|
-
},
|
|
235
|
-
{
|
|
236
|
-
code: "validate_metadata_duplicate_issue_codes",
|
|
237
|
-
command: 'pm update <id> --title "<distinct title>"',
|
|
238
|
-
summary: "Two or more items share one logical issue code (GH-235); give each a distinct title so the derived code is unique, or close the redundant item with pm close <id> --duplicate-of <canonical-id> (closed-as-duplicate items are excluded from the check)."
|
|
239
|
-
},
|
|
240
|
-
// --- pm validate: resolution ---
|
|
241
|
-
{
|
|
242
|
-
code: "validate_resolution_missing_fields",
|
|
243
|
-
command: 'pm update <id> --resolution "<how resolved>"',
|
|
244
|
-
summary: "Backfill resolution / expected_result / actual_result on the reported closed item(s)."
|
|
245
|
-
},
|
|
246
|
-
// --- pm validate: lifecycle ---
|
|
247
|
-
{
|
|
248
|
-
code: "validate_lifecycle_active_closure_like_metadata",
|
|
249
|
-
command: "pm update <id> --unset <closure-like-field>",
|
|
250
|
-
summary: "Clear the closure-like field the validator flags on this active item \u2014 the detail row names it (resolution / actual-result / blocked-reason) \u2014 or close the item if it is actually done."
|
|
251
|
-
},
|
|
252
|
-
{
|
|
253
|
-
code: "validate_lifecycle_active_terminal_parent",
|
|
254
|
-
command: "pm update <id> --parent <active-parent-id>",
|
|
255
|
-
summary: "Reopen the terminal parent or move the active child under a non-terminal parent."
|
|
256
|
-
},
|
|
257
|
-
{
|
|
258
|
-
code: "validate_lifecycle_stale_blockers",
|
|
259
|
-
command: "pm update <id> --unset blocked-by --unset blocked-reason",
|
|
260
|
-
summary: "Resolve the stale blocker the validator flags: clear blocked-by/blocked-reason when they linger on a non-blocked item or report a resolved blocker; if instead a blocked item is missing blocker context, add the context or move it out of a blocked status."
|
|
261
|
-
},
|
|
262
|
-
{
|
|
263
|
-
code: "validate_lifecycle_dependency_cycles_error",
|
|
264
|
-
command: "pm update <id> --dep-remove <dep-id>",
|
|
265
|
-
summary: "Break the dependency cycle by removing one edge from the reported cycle."
|
|
266
|
-
},
|
|
267
|
-
{
|
|
268
|
-
code: "validate_lifecycle_dependency_cycles",
|
|
269
|
-
command: "pm update <id> --dep-remove <dep-id>",
|
|
270
|
-
summary: "Break the dependency cycle by removing one edge from the reported cycle."
|
|
271
|
-
},
|
|
272
|
-
{
|
|
273
|
-
code: "validate_hierarchy_parent_cycle_error",
|
|
274
|
-
command: "pm update <id> --parent <other-id>",
|
|
275
|
-
summary: "Break the parent-hierarchy cycle by reparenting one item in the reported cycle to a non-cyclic parent (or clear it with pm update <id> --unset parent)."
|
|
276
|
-
},
|
|
277
|
-
{
|
|
278
|
-
code: "validate_hierarchy_parent_cycle",
|
|
279
|
-
command: "pm update <id> --parent <other-id>",
|
|
280
|
-
summary: "Break the parent-hierarchy cycle by reparenting one item in the reported cycle to a non-cyclic parent (or clear it with pm update <id> --unset parent)."
|
|
281
|
-
},
|
|
282
|
-
// --- pm validate: files ---
|
|
283
|
-
{
|
|
284
|
-
code: "validate_files_missing_linked_paths",
|
|
285
|
-
command: "pm <files|docs> <id> --remove <path>",
|
|
286
|
-
summary: "The check spans both item.files and item.docs under one code: restore the missing linked artifact, or unlink it with pm files (linked file) or pm docs (linked doc)."
|
|
287
|
-
},
|
|
288
|
-
{
|
|
289
|
-
code: "validate_files_orphaned_paths",
|
|
290
|
-
command: "pm <files|docs> <id> --add <path>",
|
|
291
|
-
summary: "Link the orphaned artifact with pm files (file) or pm docs (doc), or remove it from the workspace."
|
|
292
|
-
},
|
|
293
|
-
{
|
|
294
|
-
code: "validate_files_tracked_all_strict_forces_pm_internals",
|
|
295
|
-
command: "pm validate --check-files --include-pm-internals",
|
|
296
|
-
summary: "tracked-all-strict scan flagged pm internals; re-run with --include-pm-internals or a softer --scan-mode."
|
|
297
|
-
},
|
|
298
|
-
// --- pm validate: history_drift ---
|
|
299
|
-
{
|
|
300
|
-
code: "validate_history_drift_missing_streams",
|
|
301
|
-
command: "pm history-repair <id>",
|
|
302
|
-
summary: "Re-anchor the history chains of the items missing a history stream."
|
|
303
|
-
},
|
|
304
|
-
{
|
|
305
|
-
code: "validate_history_drift_unreadable_streams",
|
|
306
|
-
command: "pm history-repair <id>",
|
|
307
|
-
summary: "Re-anchor the history chains of the items with an unreadable history stream."
|
|
308
|
-
},
|
|
309
|
-
{
|
|
310
|
-
code: "validate_history_drift_hash_mismatches",
|
|
311
|
-
command: "pm history-repair <id>",
|
|
312
|
-
summary: "Re-anchor the history chains of the items whose content hash drifted."
|
|
313
|
-
},
|
|
314
|
-
{
|
|
315
|
-
code: "validate_history_drift_chain_mismatches",
|
|
316
|
-
command: "pm history-repair <id>",
|
|
317
|
-
summary: "Re-anchor the history chains of the items with a broken history chain."
|
|
318
|
-
},
|
|
319
|
-
// --- pm validate: command_references ---
|
|
320
|
-
{
|
|
321
|
-
code: "validate_command_references_stale_pm_ids",
|
|
322
|
-
command: 'pm update <id> --replace-tests --test "command=<corrected-command>" [--test ...]',
|
|
323
|
-
summary: "Correct the stale pm-ID inside the item's linked test command (the check scans tests[].command, not the body). --replace-tests overwrites the entire tests list, so re-include the item's other linked tests in the same call."
|
|
324
|
-
},
|
|
325
|
-
{
|
|
326
|
-
code: "validate_format_version_outdated_items",
|
|
327
|
-
command: "pm validate --verbose-diagnostics",
|
|
328
|
-
summary: "One or more items predate the current storage format version; a pm storage migration rewrites them. Use --verbose-diagnostics to list the affected items."
|
|
329
|
-
},
|
|
330
|
-
{
|
|
331
|
-
code: "validate_format_version_ahead_items",
|
|
332
|
-
command: "npm install -g @unbrained/pm-cli@latest",
|
|
333
|
-
summary: "One or more items were written by a newer pm format version than this runtime supports; upgrade pm to read and validate them safely."
|
|
334
|
-
}
|
|
335
|
-
]);
|
|
336
|
-
function resolveRemediation(warning) {
|
|
337
|
-
if (typeof warning !== "string") {
|
|
338
|
-
return void 0;
|
|
339
|
-
}
|
|
340
|
-
const normalized = warning.trim();
|
|
341
|
-
for (const entry of REMEDIATION_REGISTRY) {
|
|
342
|
-
if (normalized === entry.code || normalized.startsWith(`${entry.code}:`)) {
|
|
343
|
-
return entry;
|
|
344
|
-
}
|
|
345
|
-
}
|
|
346
|
-
return void 0;
|
|
347
|
-
}
|
|
348
|
-
function buildRemediationMap(warnings) {
|
|
349
|
-
const map = {};
|
|
350
|
-
for (const warning of warnings) {
|
|
351
|
-
const entry = resolveRemediation(warning);
|
|
352
|
-
if (entry !== void 0 && !Object.prototype.hasOwnProperty.call(map, entry.code)) {
|
|
353
|
-
map[entry.code] = entry.command;
|
|
354
|
-
}
|
|
355
|
-
}
|
|
356
|
-
return map;
|
|
357
|
-
}
|
|
358
|
-
function buildRemediationCommands(warnings) {
|
|
359
|
-
return Object.values(buildRemediationMap(warnings));
|
|
360
|
-
}
|
|
361
|
-
|
|
362
|
-
export {
|
|
363
|
-
buildRemediationMap,
|
|
364
|
-
buildRemediationCommands
|
|
365
|
-
};
|
|
366
|
-
//# sourceMappingURL=chunk-R2EMWY7Q.js.map
|
|
367
|
-
|
|
368
|
-
//# debugId=d544ed3b-8846-5b6f-91a8-978992585267
|