@unbrained/pm-cli 2026.6.7 → 2026.6.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude-plugin/marketplace.json +1 -1
- package/AGENTS.md +1 -1
- package/CHANGELOG.md +42 -0
- package/CONTRIBUTING.md +1 -1
- package/README.md +1 -1
- package/dist/cli/bootstrap-args.js +30 -13
- package/dist/cli/bootstrap-args.js.map +1 -1
- package/dist/cli/commands/close-many.js +9 -3
- package/dist/cli/commands/close-many.js.map +1 -1
- package/dist/cli/commands/close.js +15 -3
- package/dist/cli/commands/close.js.map +1 -1
- package/dist/cli/commands/comments-audit.js +4 -3
- package/dist/cli/commands/comments-audit.js.map +1 -1
- package/dist/cli/commands/completion.js +40 -33
- package/dist/cli/commands/completion.js.map +1 -1
- package/dist/cli/commands/extension/scaffold.js +6 -14
- package/dist/cli/commands/extension/scaffold.js.map +1 -1
- package/dist/cli/commands/gc.js +10 -2
- package/dist/cli/commands/gc.js.map +1 -1
- package/dist/cli/commands/health.js +10 -2
- package/dist/cli/commands/health.js.map +1 -1
- package/dist/cli/commands/index.d.ts +1 -1
- package/dist/cli/commands/index.js +3 -3
- package/dist/cli/commands/index.js.map +1 -1
- package/dist/cli/commands/init.d.ts +1 -0
- package/dist/cli/commands/init.js +48 -2
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/list.d.ts +11 -2
- package/dist/cli/commands/list.js +104 -2
- package/dist/cli/commands/list.js.map +1 -1
- package/dist/cli/commands/normalize.js +6 -4
- package/dist/cli/commands/normalize.js.map +1 -1
- package/dist/cli/commands/schema.d.ts +13 -2
- package/dist/cli/commands/schema.js +66 -12
- package/dist/cli/commands/schema.js.map +1 -1
- package/dist/cli/commands/search.d.ts +10 -2
- package/dist/cli/commands/search.js +94 -5
- package/dist/cli/commands/search.js.map +1 -1
- package/dist/cli/commands/upgrade.js +4 -12
- package/dist/cli/commands/upgrade.js.map +1 -1
- package/dist/cli/main.js +7 -18
- package/dist/cli/main.js.map +1 -1
- package/dist/cli/register-list-query.js +5 -3
- package/dist/cli/register-list-query.js.map +1 -1
- package/dist/cli/register-mutation.js +33 -24
- package/dist/cli/register-mutation.js.map +1 -1
- package/dist/cli/register-setup.js +4 -2
- package/dist/cli/register-setup.js.map +1 -1
- package/dist/cli/registration-helpers.js +7 -3
- package/dist/cli/registration-helpers.js.map +1 -1
- package/dist/cli-bundle/chunks/activity-A3QKFSSF.js +16 -0
- package/dist/cli-bundle/chunks/{activity-YVB3QRTE.js → activity-Q7XMIZIH.js} +11 -11
- package/dist/cli-bundle/chunks/{aggregate-LH66F75F.js → aggregate-GBSHSXOB.js} +10 -10
- package/dist/cli-bundle/chunks/{aggregate-OHSWFQJM.js → aggregate-HKQJZUBG.js} +10 -10
- package/dist/cli-bundle/chunks/{append-2PPYFAG5.js → append-3RFOU7P5.js} +8 -8
- package/dist/cli-bundle/chunks/{append-AUGT5W6J.js → append-OM74OJVT.js} +8 -8
- package/dist/cli-bundle/chunks/{chunk-HRMHZ4RV.js → chunk-2BYKYPWY.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-TP4DDY27.js → chunk-2HMD3JM2.js} +6 -6
- package/dist/cli-bundle/chunks/{chunk-4CHEG6UK.js → chunk-2YPVCD7T.js} +8 -8
- package/dist/cli-bundle/chunks/{chunk-WAA7UI6M.js → chunk-3E3MDBTB.js} +10 -14
- package/dist/cli-bundle/chunks/chunk-3E3MDBTB.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-UJUT6AHZ.js → chunk-3TXWDGPU.js} +48 -12
- package/dist/cli-bundle/chunks/chunk-3TXWDGPU.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-UT6WFXW2.js → chunk-4TI3532H.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-KNGVP5WJ.js → chunk-4WYBLB6J.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-V6EYFTRL.js → chunk-5NVJA7IW.js} +7 -7
- package/dist/cli-bundle/chunks/{chunk-42LOFGJS.js → chunk-5WO2VKFA.js} +108 -9
- package/dist/cli-bundle/chunks/chunk-5WO2VKFA.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-QQL5QSTZ.js → chunk-7NQIY7Z6.js} +6 -5
- package/dist/cli-bundle/chunks/chunk-7NQIY7Z6.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-KR6R465K.js → chunk-7WXGR44E.js} +5 -5
- package/dist/cli-bundle/chunks/{chunk-KR6R465K.js.map → chunk-7WXGR44E.js.map} +2 -2
- package/dist/cli-bundle/chunks/{chunk-WYEXLDDY.js → chunk-AEMKH5WQ.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-XS3O2TFJ.js → chunk-ALSRBNYB.js} +8 -8
- package/dist/cli-bundle/chunks/chunk-ALSRBNYB.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-OKSKJKHX.js → chunk-AXBUHLW7.js} +9 -9
- package/dist/cli-bundle/chunks/{chunk-UEWA73ZZ.js → chunk-BFJPMUF5.js} +5 -5
- package/dist/cli-bundle/chunks/{chunk-B5RF3IP7.js → chunk-BKQMJXWY.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-HV5SSZXF.js → chunk-CBJXWXI5.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-NHR2QXXZ.js → chunk-D7WK2PKB.js} +20 -8
- package/dist/cli-bundle/chunks/chunk-D7WK2PKB.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-MWRS7Z4P.js → chunk-DV27WDA7.js} +15 -13
- package/dist/cli-bundle/chunks/chunk-DV27WDA7.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-LI65XLJR.js → chunk-EPWT7BEA.js} +8 -8
- package/dist/cli-bundle/chunks/{chunk-LMTOY5HE.js → chunk-ETZZU5QF.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-XYNT7UFP.js → chunk-F33AQIB4.js} +6 -6
- package/dist/cli-bundle/chunks/{chunk-XYNT7UFP.js.map → chunk-F33AQIB4.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-LIN2BPJ7.js → chunk-F33VC5EX.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-SFFVGNHC.js → chunk-FGRJZVXD.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-HLC3KTLP.js → chunk-FO2TYSQZ.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-3A2CMEM7.js → chunk-HOA3GMB6.js} +4 -4
- package/dist/cli-bundle/chunks/{chunk-HMMMWBK2.js → chunk-HP35AVFS.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-AVJD6VTA.js → chunk-J4DKAGTM.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-YO3THIJF.js → chunk-JS47EKLP.js} +7 -7
- package/dist/cli-bundle/chunks/{chunk-2IXCHCLM.js → chunk-K62SNVVE.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-IMCJBN2Q.js → chunk-KBKJVXUS.js} +19 -7
- package/dist/cli-bundle/chunks/chunk-KBKJVXUS.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-CLD3XNCH.js → chunk-KCGMABHM.js} +14 -12
- package/dist/cli-bundle/chunks/chunk-KCGMABHM.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-H7EO3QA3.js → chunk-KN4WSESY.js} +5 -5
- package/dist/cli-bundle/chunks/{chunk-C5W2UH56.js → chunk-KP4KIUQT.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-YPH4ESA2.js → chunk-KS2U7BZ3.js} +11 -6
- package/dist/cli-bundle/chunks/chunk-KS2U7BZ3.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-GPXQBR3H.js → chunk-KVXIQDJG.js} +12 -12
- package/dist/cli-bundle/chunks/{chunk-NQL32HQ5.js → chunk-L3LYL3ID.js} +12 -12
- package/dist/cli-bundle/chunks/{chunk-WCQZBDDH.js → chunk-M7UBTVFT.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-3EOBJOF4.js → chunk-MSH23UWO.js} +4 -4
- package/dist/cli-bundle/chunks/{chunk-UAQOQ7IE.js → chunk-N4SQZ7L3.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-FY6Z3FYY.js → chunk-NDSMKB2I.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-2IF7WLB7.js → chunk-NGEEXR2R.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-UIIQC5YO.js → chunk-NLVCMVC7.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-LQHBENVW.js → chunk-NUKHZZNM.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-YBZW2QQ7.js → chunk-ODN53S6H.js} +6 -6
- package/dist/cli-bundle/chunks/{chunk-LXO6V66E.js → chunk-OTY2YEH5.js} +12 -12
- package/dist/cli-bundle/chunks/{chunk-6RZXO5M2.js → chunk-OVSSE2JP.js} +8 -8
- package/dist/cli-bundle/chunks/{chunk-4GHZR3BA.js → chunk-PQDH3S54.js} +10 -14
- package/dist/cli-bundle/chunks/chunk-PQDH3S54.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-R3V3YCMH.js → chunk-QF4OPBAG.js} +9 -9
- package/dist/cli-bundle/chunks/{chunk-FHHBD7PN.js → chunk-QFVASU44.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-SQPKRA54.js → chunk-QQPZYP73.js} +12 -12
- package/dist/cli-bundle/chunks/{chunk-5AXMRKN5.js → chunk-QWNUDGFQ.js} +8 -8
- package/dist/cli-bundle/chunks/{chunk-TYJJOTUA.js → chunk-R4XIE7NQ.js} +54 -8
- package/dist/cli-bundle/chunks/chunk-R4XIE7NQ.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-O7HSSFCC.js → chunk-RISLL7XH.js} +10 -5
- package/dist/cli-bundle/chunks/{chunk-O7HSSFCC.js.map → chunk-RISLL7XH.js.map} +2 -2
- package/dist/cli-bundle/chunks/{chunk-6J4K6JLA.js → chunk-SDLEYY6A.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-TINUJMWN.js → chunk-SM3RMWGO.js} +109 -10
- package/dist/cli-bundle/chunks/chunk-SM3RMWGO.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-MOYM2C3J.js → chunk-TBLBEOEX.js} +9 -9
- package/dist/cli-bundle/chunks/{chunk-WR5567FH.js → chunk-TXKENAQP.js} +5 -4
- package/dist/cli-bundle/chunks/chunk-TXKENAQP.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-TNPBPNII.js → chunk-UEXNNF3K.js} +7 -7
- package/dist/cli-bundle/chunks/{chunk-RVPTZKBC.js → chunk-UMMJAJB2.js} +9 -9
- package/dist/cli-bundle/chunks/{chunk-THDEID2Z.js → chunk-URJEZOLB.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-M2PW7EZU.js → chunk-VXBUXLVD.js} +7 -7
- package/dist/cli-bundle/chunks/chunk-VXBUXLVD.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-UYQ7HXH4.js → chunk-XEKZCBCS.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-2OJHLWBZ.js → chunk-XLSQ3QLT.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-X7UHMKPE.js → chunk-XNGMIVQY.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-B2KZGPM2.js → chunk-XZS4MV37.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-GNIUOLZ2.js → chunk-YEFOCDIK.js} +7 -7
- package/dist/cli-bundle/chunks/{chunk-X4IZKYHP.js → chunk-YJAKN2N2.js} +46 -10
- package/dist/cli-bundle/chunks/chunk-YJAKN2N2.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-GUZBNB3G.js → chunk-Z2HXAFFH.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-CKLBZHS7.js → chunk-Z55JACL2.js} +53 -7
- package/dist/cli-bundle/chunks/chunk-Z55JACL2.js.map +7 -0
- package/dist/cli-bundle/chunks/{claim-KW743OSW.js → claim-NHBIIBOW.js} +10 -10
- package/dist/cli-bundle/chunks/{claim-BJ4QMPJC.js → claim-RNEBQCOO.js} +10 -10
- package/dist/cli-bundle/chunks/close-UNTFXVM3.js +13 -0
- package/dist/cli-bundle/chunks/{close-SYHSRZDC.js → close-ZMXL2WDS.js} +8 -8
- package/dist/cli-bundle/chunks/{close-many-LAC5VR4G.js → close-many-CDPQGQUB.js} +24 -18
- package/dist/cli-bundle/chunks/close-many-CDPQGQUB.js.map +1 -0
- package/dist/cli-bundle/chunks/{close-many-DBLEYFOY.js → close-many-IQV5C2SI.js} +23 -17
- package/dist/cli-bundle/chunks/close-many-IQV5C2SI.js.map +7 -0
- package/dist/cli-bundle/chunks/{comments-JEO6HHVM.js → comments-EFVBHWPT.js} +10 -10
- package/dist/cli-bundle/chunks/{comments-YT2PQ5DD.js → comments-J5Q4IJPH.js} +10 -10
- package/dist/cli-bundle/chunks/{config-RZRVS3ZV.js → config-72253M2O.js} +10 -11
- package/dist/cli-bundle/chunks/config-72253M2O.js.map +1 -0
- package/dist/cli-bundle/chunks/{config-YJSAAADD.js → config-VFYA6BMI.js} +9 -10
- package/dist/cli-bundle/chunks/config-VFYA6BMI.js.map +7 -0
- package/dist/cli-bundle/chunks/{context-LGYEEKAW.js → context-AVLO4IFH.js} +13 -13
- package/dist/cli-bundle/chunks/{context-ZUH5IOOI.js → context-WMSI2D65.js} +13 -13
- package/dist/cli-bundle/chunks/{contracts-YXJ6NXKH.js → contracts-D4BN3VSQ.js} +4 -4
- package/dist/cli-bundle/chunks/{contracts-ZIBXROPE.js → contracts-RGPOBLPL.js} +4 -4
- package/dist/cli-bundle/chunks/{copy-YPWEIAPD.js → copy-H6TXHK7S.js} +7 -7
- package/dist/cli-bundle/chunks/{copy-BZALX5MQ.js → copy-WXE3OOLZ.js} +7 -7
- package/dist/cli-bundle/chunks/create-EZWAMUKR.js +27 -0
- package/dist/cli-bundle/chunks/{create-CF7EVRX7.js → create-PUAIJEZ7.js} +13 -13
- package/dist/cli-bundle/chunks/{delete-KR4VBWVE.js → delete-PKR2JHLH.js} +7 -7
- package/dist/cli-bundle/chunks/{delete-XLZRTRKR.js → delete-WBME6WG5.js} +7 -7
- package/dist/cli-bundle/chunks/{deps-2YTXD3VM.js → deps-4BQEDV4L.js} +7 -7
- package/dist/cli-bundle/chunks/{deps-GZMFMTGS.js → deps-KWHQRO75.js} +7 -7
- package/dist/cli-bundle/chunks/{docs-SLROFEQ4.js → docs-364GT3ZR.js} +9 -9
- package/dist/cli-bundle/chunks/{docs-ZHISRR2D.js → docs-SCNBUGSV.js} +9 -9
- package/dist/cli-bundle/chunks/{extension-XYCUXICD.js → extension-CRE7JM47.js} +5 -5
- package/dist/cli-bundle/chunks/{extension-3C7OOI4F.js → extension-KK2UPXJD.js} +5 -5
- package/dist/cli-bundle/chunks/{files-FUWF2FYJ.js → files-3GESQAWL.js} +9 -9
- package/dist/cli-bundle/chunks/{files-J4I5IU4O.js → files-66EHM5ZR.js} +9 -9
- package/dist/cli-bundle/chunks/{gc-34NXSNSN.js → gc-D5IWOKQH.js} +13 -5
- package/dist/cli-bundle/chunks/gc-D5IWOKQH.js.map +1 -0
- package/dist/cli-bundle/chunks/{gc-SPIIZX3A.js → gc-MOQDND5J.js} +12 -4
- package/dist/cli-bundle/chunks/gc-MOQDND5J.js.map +7 -0
- package/dist/cli-bundle/chunks/{get-SZKNRHMA.js → get-7J2ZCBV5.js} +11 -11
- package/dist/cli-bundle/chunks/{get-VITKYP6S.js → get-WXSLXV3K.js} +11 -11
- package/dist/cli-bundle/chunks/{health-7G3EPM57.js → health-B6AEM7BV.js} +21 -14
- package/dist/cli-bundle/chunks/health-B6AEM7BV.js.map +1 -0
- package/dist/cli-bundle/chunks/{health-4SNTA2TF.js → health-YMZGOMVX.js} +20 -13
- package/dist/cli-bundle/chunks/health-YMZGOMVX.js.map +7 -0
- package/dist/cli-bundle/chunks/{history-SDAWYZR3.js → history-TJTO5GCR.js} +10 -10
- package/dist/cli-bundle/chunks/history-ZERISU2L.js +20 -0
- package/dist/cli-bundle/chunks/{history-compact-POTZGG7K.js → history-compact-CKNN6UKW.js} +11 -11
- package/dist/cli-bundle/chunks/{history-compact-DMW536VH.js → history-compact-N2Q7IR3T.js} +11 -11
- package/dist/cli-bundle/chunks/history-redact-GODBYT5A.js +19 -0
- package/dist/cli-bundle/chunks/{history-redact-EPJ7GENL.js → history-redact-JUXUOH54.js} +11 -11
- package/dist/cli-bundle/chunks/{history-repair-YNESJRT6.js → history-repair-CCCPBNTF.js} +11 -11
- package/dist/cli-bundle/chunks/{history-repair-IJ7LLBET.js → history-repair-TDBBSRVK.js} +11 -11
- package/dist/cli-bundle/chunks/{init-YHVBTEET.js → init-6ZPKD3YN.js} +9 -9
- package/dist/cli-bundle/chunks/init-CBZHXBR3.js +17 -0
- package/dist/cli-bundle/chunks/{learnings-T4PF24YN.js → learnings-U7U2FNIO.js} +10 -10
- package/dist/cli-bundle/chunks/{learnings-4YBMIVCZ.js → learnings-WYNTYQ5T.js} +10 -10
- package/dist/cli-bundle/chunks/list-7MTPPZHC.js +20 -0
- package/dist/cli-bundle/chunks/{list-3KEVBOYW.js → list-JGP7ODML.js} +10 -10
- package/dist/cli-bundle/chunks/{notes-GJKALVZM.js → notes-P25YVTEG.js} +10 -10
- package/dist/cli-bundle/chunks/{notes-FLUCNJSH.js → notes-QIF6A7XS.js} +10 -10
- package/dist/cli-bundle/chunks/{plan-YYMIL3HV.js → plan-RACB5PI6.js} +13 -13
- package/dist/cli-bundle/chunks/{plan-T5MMZLI3.js → plan-SSBJFWXA.js} +13 -13
- package/dist/cli-bundle/chunks/{register-list-query-I65EZ3HB.js → register-list-query-5IXDPUZ6.js} +23 -21
- package/dist/cli-bundle/chunks/register-list-query-5IXDPUZ6.js.map +1 -0
- package/dist/cli-bundle/chunks/{register-list-query-OECMHO4G.js → register-list-query-GQAEIG4K.js} +22 -20
- package/dist/cli-bundle/chunks/register-list-query-GQAEIG4K.js.map +7 -0
- package/dist/cli-bundle/chunks/{register-mutation-2FLXORLR.js → register-mutation-FAS4YG63.js} +41 -37
- package/dist/cli-bundle/chunks/{register-mutation-2FLXORLR.js.map → register-mutation-FAS4YG63.js.map} +1 -1
- package/dist/cli-bundle/chunks/{register-mutation-5GPDEKHR.js → register-mutation-YZCUILGO.js} +40 -36
- package/dist/cli-bundle/chunks/{register-mutation-5GPDEKHR.js.map → register-mutation-YZCUILGO.js.map} +2 -2
- package/dist/cli-bundle/chunks/{register-operations-GQKT35H5.js → register-operations-IBYWNJN5.js} +30 -30
- package/dist/cli-bundle/chunks/{register-operations-BNGAUMGK.js → register-operations-S2BOLUPF.js} +30 -30
- package/dist/cli-bundle/chunks/{register-setup-EJY44FPH.js → register-setup-ABA2JPWO.js} +19 -18
- package/dist/cli-bundle/chunks/{register-setup-EJY44FPH.js.map → register-setup-ABA2JPWO.js.map} +2 -2
- package/dist/cli-bundle/chunks/{register-setup-DNDCGZ4O.js → register-setup-JRZ4UMWZ.js} +20 -19
- package/dist/cli-bundle/chunks/register-setup-JRZ4UMWZ.js.map +1 -0
- package/dist/cli-bundle/chunks/restore-3JRX27QW.js +17 -0
- package/dist/cli-bundle/chunks/{restore-DDJGVZIN.js → restore-K72ZNPEP.js} +11 -11
- package/dist/cli-bundle/chunks/{schema-B7NQ6XVP.js → schema-3VKRDBLC.js} +76 -20
- package/dist/cli-bundle/chunks/schema-3VKRDBLC.js.map +7 -0
- package/dist/cli-bundle/chunks/{schema-HEGYH6CE.js → schema-UL4B2JX5.js} +77 -21
- package/dist/cli-bundle/chunks/schema-UL4B2JX5.js.map +1 -0
- package/dist/cli-bundle/chunks/{search-JNEZJV7H.js → search-632WJ7GO.js} +103 -14
- package/dist/cli-bundle/chunks/search-632WJ7GO.js.map +7 -0
- package/dist/cli-bundle/chunks/{search-DVVQ4UO2.js → search-EQDHSE4G.js} +104 -15
- package/dist/cli-bundle/chunks/search-EQDHSE4G.js.map +1 -0
- package/dist/cli-bundle/chunks/{stats-SYTJRR4Z.js → stats-O4UTMJMC.js} +7 -7
- package/dist/cli-bundle/chunks/{stats-7JDIJRDH.js → stats-WLJ3XBF5.js} +7 -7
- package/dist/cli-bundle/chunks/{telemetry-4HHWD5Y7.js → telemetry-EUVHFSQU.js} +4 -4
- package/dist/cli-bundle/chunks/{telemetry-EGWP7ZUX.js → telemetry-NRVWX25E.js} +4 -4
- package/dist/cli-bundle/chunks/{test-IIELLSZX.js → test-GXUBQNUC.js} +14 -14
- package/dist/cli-bundle/chunks/test-XN7RJL5Z.js +32 -0
- package/dist/cli-bundle/chunks/{test-all-IHTUJRRC.js → test-all-UTFXC7S2.js} +14 -14
- package/dist/cli-bundle/chunks/{test-all-7DNCMML7.js → test-all-XM6OKI3L.js} +14 -14
- package/dist/cli-bundle/chunks/{test-runs-5FEMBV3A.js → test-runs-7FHCPEA3.js} +5 -5
- package/dist/cli-bundle/chunks/{test-runs-RNKZ37PS.js → test-runs-IK6E2HNX.js} +5 -5
- package/dist/cli-bundle/chunks/update-LFBSEW3N.js +21 -0
- package/dist/cli-bundle/chunks/update-U4B4OMHZ.js +25 -0
- package/dist/cli-bundle/chunks/{update-many-BSZZZYXY.js → update-many-5KD33MKY.js} +22 -22
- package/dist/cli-bundle/chunks/{update-many-BWKJJEBF.js → update-many-N3YTM7K4.js} +22 -22
- package/dist/cli-bundle/chunks/{upgrade-YWI5DJFA.js → upgrade-5SRFLUNW.js} +8 -15
- package/dist/cli-bundle/chunks/upgrade-5SRFLUNW.js.map +7 -0
- package/dist/cli-bundle/chunks/{upgrade-RSE5PC44.js → upgrade-FFXGO43H.js} +9 -16
- package/dist/cli-bundle/chunks/upgrade-FFXGO43H.js.map +1 -0
- package/dist/cli-bundle/chunks/{validate-UCEOB7S6.js → validate-CRWXZILW.js} +16 -16
- package/dist/cli-bundle/chunks/{validate-NK3WKB7C.js → validate-T3LPWSZG.js} +16 -16
- package/dist/cli-bundle/main.js +51 -62
- package/dist/cli-bundle/main.js.map +3 -3
- package/dist/core/config/nested-settings.d.ts +0 -2
- package/dist/core/config/nested-settings.js +2 -4
- package/dist/core/config/nested-settings.js.map +1 -1
- package/dist/core/diagnostics/remediation.js +7 -2
- package/dist/core/diagnostics/remediation.js.map +1 -1
- package/dist/core/fs/fs-utils.js +29 -4
- package/dist/core/fs/fs-utils.js.map +1 -1
- package/dist/core/packages/root.d.ts +10 -0
- package/dist/core/packages/root.js +24 -2
- package/dist/core/packages/root.js.map +1 -1
- package/dist/core/schema/runtime-schema.js +3 -6
- package/dist/core/schema/runtime-schema.js.map +1 -1
- package/dist/core/search/background-refresh.d.ts +0 -8
- package/dist/core/search/background-refresh.js +2 -9
- package/dist/core/search/background-refresh.js.map +1 -1
- package/dist/core/search/vector-stores.js +6 -8
- package/dist/core/search/vector-stores.js.map +1 -1
- package/dist/core/sentry/instrument.js +4 -17
- package/dist/core/sentry/instrument.js.map +1 -1
- package/dist/core/store/paths.js +17 -3
- package/dist/core/store/paths.js.map +1 -1
- package/dist/core/telemetry/runtime.d.ts +1 -0
- package/dist/core/telemetry/runtime.js +3 -3
- package/dist/core/telemetry/runtime.js.map +1 -1
- package/dist/mcp/server.js +76 -13
- package/dist/mcp/server.js.map +1 -1
- package/dist/sdk/cli-contracts/commander-types.js +4 -4
- package/dist/sdk/cli-contracts/commander-types.js.map +1 -1
- package/dist/sdk/cli-contracts/tool-parameter-tables.js +3 -3
- package/dist/sdk/cli-contracts/tool-parameter-tables.js.map +1 -1
- package/dist/sdk/cli-contracts.js +10 -8
- package/dist/sdk/cli-contracts.js.map +1 -1
- package/docs/AGENT_GUIDE.md +3 -1
- package/docs/CLAUDE_CODE_PLUGIN.md +2 -2
- package/docs/COMMANDS.md +6 -4
- package/docs/CONFIGURATION.md +6 -0
- package/docs/EXTENSIONS.md +0 -5
- package/docs/RELEASING.md +17 -0
- package/marketplace.json +1 -1
- package/package.json +1 -1
- package/plugins/pm-claude/.claude-plugin/plugin.json +1 -1
- package/plugins/pm-claude/README.md +3 -3
- package/plugins/pm-claude/commands/pm-init.md +1 -1
- package/dist/cli-bundle/chunks/activity-5UROHJ3D.js +0 -16
- package/dist/cli-bundle/chunks/chunk-42LOFGJS.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-4GHZR3BA.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-CKLBZHS7.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-CLD3XNCH.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-IMCJBN2Q.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-M2PW7EZU.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-MWRS7Z4P.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-NHR2QXXZ.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-QQL5QSTZ.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-TINUJMWN.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-TYJJOTUA.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-UJUT6AHZ.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-WAA7UI6M.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-WR5567FH.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-X4IZKYHP.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-XS3O2TFJ.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-YPH4ESA2.js.map +0 -1
- package/dist/cli-bundle/chunks/close-P4ZBKODL.js +0 -13
- package/dist/cli-bundle/chunks/close-many-DBLEYFOY.js.map +0 -7
- package/dist/cli-bundle/chunks/close-many-LAC5VR4G.js.map +0 -1
- package/dist/cli-bundle/chunks/config-RZRVS3ZV.js.map +0 -1
- package/dist/cli-bundle/chunks/config-YJSAAADD.js.map +0 -7
- package/dist/cli-bundle/chunks/create-4DS2QWQC.js +0 -27
- package/dist/cli-bundle/chunks/gc-34NXSNSN.js.map +0 -1
- package/dist/cli-bundle/chunks/gc-SPIIZX3A.js.map +0 -7
- package/dist/cli-bundle/chunks/health-4SNTA2TF.js.map +0 -7
- package/dist/cli-bundle/chunks/health-7G3EPM57.js.map +0 -1
- package/dist/cli-bundle/chunks/history-YDUEILKP.js +0 -20
- package/dist/cli-bundle/chunks/history-redact-KASLLPE7.js +0 -19
- package/dist/cli-bundle/chunks/init-IGSS4GNH.js +0 -17
- package/dist/cli-bundle/chunks/list-E44O2K64.js +0 -20
- package/dist/cli-bundle/chunks/register-list-query-I65EZ3HB.js.map +0 -1
- package/dist/cli-bundle/chunks/register-list-query-OECMHO4G.js.map +0 -7
- package/dist/cli-bundle/chunks/register-setup-DNDCGZ4O.js.map +0 -1
- package/dist/cli-bundle/chunks/restore-SJSASGZP.js +0 -17
- package/dist/cli-bundle/chunks/schema-B7NQ6XVP.js.map +0 -7
- package/dist/cli-bundle/chunks/schema-HEGYH6CE.js.map +0 -1
- package/dist/cli-bundle/chunks/search-DVVQ4UO2.js.map +0 -1
- package/dist/cli-bundle/chunks/search-JNEZJV7H.js.map +0 -7
- package/dist/cli-bundle/chunks/test-ML5RLWXE.js +0 -32
- package/dist/cli-bundle/chunks/update-6C67X4KS.js +0 -21
- package/dist/cli-bundle/chunks/update-VF26YPT3.js +0 -25
- package/dist/cli-bundle/chunks/upgrade-RSE5PC44.js.map +0 -1
- package/dist/cli-bundle/chunks/upgrade-YWI5DJFA.js.map +0 -7
- /package/dist/cli-bundle/chunks/{activity-5UROHJ3D.js.map → activity-A3QKFSSF.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{activity-YVB3QRTE.js.map → activity-Q7XMIZIH.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{aggregate-LH66F75F.js.map → aggregate-GBSHSXOB.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{aggregate-OHSWFQJM.js.map → aggregate-HKQJZUBG.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{append-2PPYFAG5.js.map → append-3RFOU7P5.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{append-AUGT5W6J.js.map → append-OM74OJVT.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-HRMHZ4RV.js.map → chunk-2BYKYPWY.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-TP4DDY27.js.map → chunk-2HMD3JM2.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-4CHEG6UK.js.map → chunk-2YPVCD7T.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-UT6WFXW2.js.map → chunk-4TI3532H.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-KNGVP5WJ.js.map → chunk-4WYBLB6J.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-V6EYFTRL.js.map → chunk-5NVJA7IW.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-WYEXLDDY.js.map → chunk-AEMKH5WQ.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-OKSKJKHX.js.map → chunk-AXBUHLW7.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-UEWA73ZZ.js.map → chunk-BFJPMUF5.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-B5RF3IP7.js.map → chunk-BKQMJXWY.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-HV5SSZXF.js.map → chunk-CBJXWXI5.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-LI65XLJR.js.map → chunk-EPWT7BEA.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-LMTOY5HE.js.map → chunk-ETZZU5QF.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-LIN2BPJ7.js.map → chunk-F33VC5EX.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-SFFVGNHC.js.map → chunk-FGRJZVXD.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-HLC3KTLP.js.map → chunk-FO2TYSQZ.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-3A2CMEM7.js.map → chunk-HOA3GMB6.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-HMMMWBK2.js.map → chunk-HP35AVFS.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-AVJD6VTA.js.map → chunk-J4DKAGTM.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-YO3THIJF.js.map → chunk-JS47EKLP.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-2IXCHCLM.js.map → chunk-K62SNVVE.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-H7EO3QA3.js.map → chunk-KN4WSESY.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-C5W2UH56.js.map → chunk-KP4KIUQT.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-GPXQBR3H.js.map → chunk-KVXIQDJG.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-NQL32HQ5.js.map → chunk-L3LYL3ID.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-WCQZBDDH.js.map → chunk-M7UBTVFT.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-3EOBJOF4.js.map → chunk-MSH23UWO.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-UAQOQ7IE.js.map → chunk-N4SQZ7L3.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-FY6Z3FYY.js.map → chunk-NDSMKB2I.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-2IF7WLB7.js.map → chunk-NGEEXR2R.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-UIIQC5YO.js.map → chunk-NLVCMVC7.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-LQHBENVW.js.map → chunk-NUKHZZNM.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-YBZW2QQ7.js.map → chunk-ODN53S6H.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-LXO6V66E.js.map → chunk-OTY2YEH5.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-6RZXO5M2.js.map → chunk-OVSSE2JP.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-R3V3YCMH.js.map → chunk-QF4OPBAG.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-FHHBD7PN.js.map → chunk-QFVASU44.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-SQPKRA54.js.map → chunk-QQPZYP73.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-5AXMRKN5.js.map → chunk-QWNUDGFQ.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-6J4K6JLA.js.map → chunk-SDLEYY6A.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-MOYM2C3J.js.map → chunk-TBLBEOEX.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-TNPBPNII.js.map → chunk-UEXNNF3K.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-RVPTZKBC.js.map → chunk-UMMJAJB2.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-THDEID2Z.js.map → chunk-URJEZOLB.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-UYQ7HXH4.js.map → chunk-XEKZCBCS.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-2OJHLWBZ.js.map → chunk-XLSQ3QLT.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-X7UHMKPE.js.map → chunk-XNGMIVQY.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-B2KZGPM2.js.map → chunk-XZS4MV37.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-GNIUOLZ2.js.map → chunk-YEFOCDIK.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-GUZBNB3G.js.map → chunk-Z2HXAFFH.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{claim-KW743OSW.js.map → claim-NHBIIBOW.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{claim-BJ4QMPJC.js.map → claim-RNEBQCOO.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{close-P4ZBKODL.js.map → close-UNTFXVM3.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{close-SYHSRZDC.js.map → close-ZMXL2WDS.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{comments-JEO6HHVM.js.map → comments-EFVBHWPT.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{comments-YT2PQ5DD.js.map → comments-J5Q4IJPH.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{context-LGYEEKAW.js.map → context-AVLO4IFH.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{context-ZUH5IOOI.js.map → context-WMSI2D65.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{contracts-YXJ6NXKH.js.map → contracts-D4BN3VSQ.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{contracts-ZIBXROPE.js.map → contracts-RGPOBLPL.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{copy-YPWEIAPD.js.map → copy-H6TXHK7S.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{copy-BZALX5MQ.js.map → copy-WXE3OOLZ.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{create-4DS2QWQC.js.map → create-EZWAMUKR.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{create-CF7EVRX7.js.map → create-PUAIJEZ7.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{delete-KR4VBWVE.js.map → delete-PKR2JHLH.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{delete-XLZRTRKR.js.map → delete-WBME6WG5.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{deps-2YTXD3VM.js.map → deps-4BQEDV4L.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{deps-GZMFMTGS.js.map → deps-KWHQRO75.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{docs-SLROFEQ4.js.map → docs-364GT3ZR.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{docs-ZHISRR2D.js.map → docs-SCNBUGSV.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{extension-XYCUXICD.js.map → extension-CRE7JM47.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{extension-3C7OOI4F.js.map → extension-KK2UPXJD.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{files-FUWF2FYJ.js.map → files-3GESQAWL.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{files-J4I5IU4O.js.map → files-66EHM5ZR.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{get-SZKNRHMA.js.map → get-7J2ZCBV5.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{get-VITKYP6S.js.map → get-WXSLXV3K.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{history-SDAWYZR3.js.map → history-TJTO5GCR.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{history-YDUEILKP.js.map → history-ZERISU2L.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{history-compact-POTZGG7K.js.map → history-compact-CKNN6UKW.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{history-compact-DMW536VH.js.map → history-compact-N2Q7IR3T.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{history-redact-KASLLPE7.js.map → history-redact-GODBYT5A.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{history-redact-EPJ7GENL.js.map → history-redact-JUXUOH54.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{history-repair-YNESJRT6.js.map → history-repair-CCCPBNTF.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{history-repair-IJ7LLBET.js.map → history-repair-TDBBSRVK.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{init-YHVBTEET.js.map → init-6ZPKD3YN.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{init-IGSS4GNH.js.map → init-CBZHXBR3.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{learnings-T4PF24YN.js.map → learnings-U7U2FNIO.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{learnings-4YBMIVCZ.js.map → learnings-WYNTYQ5T.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{list-E44O2K64.js.map → list-7MTPPZHC.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{list-3KEVBOYW.js.map → list-JGP7ODML.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{notes-GJKALVZM.js.map → notes-P25YVTEG.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{notes-FLUCNJSH.js.map → notes-QIF6A7XS.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{plan-YYMIL3HV.js.map → plan-RACB5PI6.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{plan-T5MMZLI3.js.map → plan-SSBJFWXA.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{register-operations-GQKT35H5.js.map → register-operations-IBYWNJN5.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{register-operations-BNGAUMGK.js.map → register-operations-S2BOLUPF.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{restore-SJSASGZP.js.map → restore-3JRX27QW.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{restore-DDJGVZIN.js.map → restore-K72ZNPEP.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{stats-SYTJRR4Z.js.map → stats-O4UTMJMC.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{stats-7JDIJRDH.js.map → stats-WLJ3XBF5.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{telemetry-4HHWD5Y7.js.map → telemetry-EUVHFSQU.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{telemetry-EGWP7ZUX.js.map → telemetry-NRVWX25E.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{test-IIELLSZX.js.map → test-GXUBQNUC.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{test-ML5RLWXE.js.map → test-XN7RJL5Z.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{test-all-IHTUJRRC.js.map → test-all-UTFXC7S2.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{test-all-7DNCMML7.js.map → test-all-XM6OKI3L.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{test-runs-5FEMBV3A.js.map → test-runs-7FHCPEA3.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{test-runs-RNKZ37PS.js.map → test-runs-IK6E2HNX.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{update-6C67X4KS.js.map → update-LFBSEW3N.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{update-VF26YPT3.js.map → update-U4B4OMHZ.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{update-many-BSZZZYXY.js.map → update-many-5KD33MKY.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{update-many-BWKJJEBF.js.map → update-many-N3YTM7K4.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{validate-UCEOB7S6.js.map → validate-CRWXZILW.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{validate-NK3WKB7C.js.map → validate-T3LPWSZG.js.map} +0 -0
|
@@ -2,23 +2,23 @@
|
|
|
2
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]="8d05da97-b537-5f04-9c8b-7b8ebdb34993")}catch(e){}}();
|
|
3
3
|
import {
|
|
4
4
|
readHistoryEntries
|
|
5
|
-
} from "./chunk-
|
|
6
|
-
import "./chunk-
|
|
5
|
+
} from "./chunk-OVSSE2JP.js";
|
|
6
|
+
import "./chunk-HOA3GMB6.js";
|
|
7
7
|
import {
|
|
8
8
|
parseIntegerLimit
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-NDSMKB2I.js";
|
|
10
10
|
import {
|
|
11
11
|
buildItemNotFoundError,
|
|
12
12
|
locateItem,
|
|
13
13
|
readLocatedItem,
|
|
14
14
|
toItemRecord
|
|
15
|
-
} from "./chunk-
|
|
16
|
-
import "./chunk-
|
|
17
|
-
import "./chunk-
|
|
15
|
+
} from "./chunk-ODN53S6H.js";
|
|
16
|
+
import "./chunk-4TI3532H.js";
|
|
17
|
+
import "./chunk-XEKZCBCS.js";
|
|
18
18
|
import {
|
|
19
19
|
resolveItemTypeRegistry
|
|
20
|
-
} from "./chunk-
|
|
21
|
-
import "./chunk-
|
|
20
|
+
} from "./chunk-Z2HXAFFH.js";
|
|
21
|
+
import "./chunk-XZS4MV37.js";
|
|
22
22
|
import {
|
|
23
23
|
EXIT_CODE,
|
|
24
24
|
FRONT_MATTER_KEY_ORDER,
|
|
@@ -30,7 +30,7 @@ import {
|
|
|
30
30
|
readSettings,
|
|
31
31
|
resolvePmRoot,
|
|
32
32
|
resolveRuntimeFieldRegistry
|
|
33
|
-
} from "./chunk-
|
|
33
|
+
} from "./chunk-YJAKN2N2.js";
|
|
34
34
|
|
|
35
35
|
// dist/cli/commands/get.js
|
|
36
36
|
var GET_DEPTH_VALUES = ["brief", "standard", "deep"];
|
|
@@ -191,7 +191,7 @@ async function runGet(id, global, options = {}) {
|
|
|
191
191
|
result.claim_state = claimState;
|
|
192
192
|
}
|
|
193
193
|
if (options.tree === true) {
|
|
194
|
-
const { runList } = await import("./list-
|
|
194
|
+
const { runList } = await import("./list-JGP7ODML.js");
|
|
195
195
|
const subtree = await runList(void 0, {
|
|
196
196
|
parent: located.id,
|
|
197
197
|
tree: true,
|
|
@@ -211,6 +211,6 @@ async function runGet(id, global, options = {}) {
|
|
|
211
211
|
export {
|
|
212
212
|
runGet
|
|
213
213
|
};
|
|
214
|
-
//# sourceMappingURL=get-
|
|
214
|
+
//# sourceMappingURL=get-7J2ZCBV5.js.map
|
|
215
215
|
|
|
216
216
|
//# debugId=8d05da97-b537-5f04-9c8b-7b8ebdb34993
|
|
@@ -1,22 +1,22 @@
|
|
|
1
1
|
import {
|
|
2
2
|
readHistoryEntries
|
|
3
|
-
} from "./chunk-
|
|
4
|
-
import "./chunk-
|
|
3
|
+
} from "./chunk-2YPVCD7T.js";
|
|
4
|
+
import "./chunk-MSH23UWO.js";
|
|
5
5
|
import {
|
|
6
6
|
parseIntegerLimit
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-FGRJZVXD.js";
|
|
8
8
|
import {
|
|
9
9
|
buildItemNotFoundError,
|
|
10
10
|
locateItem,
|
|
11
11
|
readLocatedItem,
|
|
12
12
|
toItemRecord
|
|
13
|
-
} from "./chunk-
|
|
14
|
-
import "./chunk-
|
|
15
|
-
import "./chunk-
|
|
13
|
+
} from "./chunk-2HMD3JM2.js";
|
|
14
|
+
import "./chunk-K62SNVVE.js";
|
|
15
|
+
import "./chunk-M7UBTVFT.js";
|
|
16
16
|
import {
|
|
17
17
|
resolveItemTypeRegistry
|
|
18
|
-
} from "./chunk-
|
|
19
|
-
import "./chunk-
|
|
18
|
+
} from "./chunk-2BYKYPWY.js";
|
|
19
|
+
import "./chunk-QFVASU44.js";
|
|
20
20
|
import {
|
|
21
21
|
EXIT_CODE,
|
|
22
22
|
FRONT_MATTER_KEY_ORDER,
|
|
@@ -28,7 +28,7 @@ import {
|
|
|
28
28
|
readSettings,
|
|
29
29
|
resolvePmRoot,
|
|
30
30
|
resolveRuntimeFieldRegistry
|
|
31
|
-
} from "./chunk-
|
|
31
|
+
} from "./chunk-3TXWDGPU.js";
|
|
32
32
|
|
|
33
33
|
// dist/cli/commands/get.js
|
|
34
34
|
!(function() {
|
|
@@ -196,7 +196,7 @@ async function runGet(id, global2, options = {}) {
|
|
|
196
196
|
result.claim_state = claimState;
|
|
197
197
|
}
|
|
198
198
|
if (options.tree === true) {
|
|
199
|
-
const { runList } = await import("./list-
|
|
199
|
+
const { runList } = await import("./list-7MTPPZHC.js");
|
|
200
200
|
const subtree = await runList(void 0, {
|
|
201
201
|
parent: located.id,
|
|
202
202
|
tree: true,
|
|
@@ -216,4 +216,4 @@ async function runGet(id, global2, options = {}) {
|
|
|
216
216
|
export {
|
|
217
217
|
runGet
|
|
218
218
|
};
|
|
219
|
-
//# sourceMappingURL=get-
|
|
219
|
+
//# sourceMappingURL=get-WXSLXV3K.js.map
|
|
@@ -1,43 +1,46 @@
|
|
|
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]="6b89e739-76f1-5bb9-8403-cc8eecd5f6c8")}catch(e){}}();
|
|
3
3
|
import {
|
|
4
4
|
buildRemediationMap,
|
|
5
5
|
scanHistoryDrift
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-KS2U7BZ3.js";
|
|
7
7
|
import {
|
|
8
8
|
collectStaleVectorizationIds
|
|
9
9
|
} from "./chunk-IUV734HF.js";
|
|
10
|
-
import "./chunk-
|
|
10
|
+
import "./chunk-HOA3GMB6.js";
|
|
11
|
+
import {
|
|
12
|
+
TELEMETRY_SCHEMA_VERSION
|
|
13
|
+
} from "./chunk-7NQIY7Z6.js";
|
|
11
14
|
import {
|
|
12
15
|
buildRegistrationCollisionRemediation,
|
|
13
16
|
readManagedExtensionState
|
|
14
|
-
} from "./chunk-
|
|
15
|
-
import "./chunk-
|
|
17
|
+
} from "./chunk-F33AQIB4.js";
|
|
18
|
+
import "./chunk-ETZZU5QF.js";
|
|
16
19
|
import {
|
|
17
20
|
readVectorizationStatusLedger,
|
|
18
21
|
refreshSemanticEmbeddingsForMutatedItems,
|
|
19
22
|
resolveEmbeddingProviders,
|
|
20
23
|
resolveSettingsWithSemanticRuntimeDefaults,
|
|
21
24
|
resolveVectorStores
|
|
22
|
-
} from "./chunk-
|
|
25
|
+
} from "./chunk-PQDH3S54.js";
|
|
23
26
|
import "./chunk-LXYVKYMQ.js";
|
|
24
27
|
import {
|
|
25
28
|
collectRegisteredItemFieldNames,
|
|
26
29
|
enforceHistoryStreamPolicyForItems,
|
|
27
30
|
listAllFrontMatter,
|
|
28
31
|
listAllFrontMatterWithBody
|
|
29
|
-
} from "./chunk-
|
|
30
|
-
import "./chunk-
|
|
32
|
+
} from "./chunk-ODN53S6H.js";
|
|
33
|
+
import "./chunk-4TI3532H.js";
|
|
31
34
|
import {
|
|
32
35
|
findFirstMergeConflictMarker,
|
|
33
36
|
parseItemDocument
|
|
34
|
-
} from "./chunk-
|
|
37
|
+
} from "./chunk-XEKZCBCS.js";
|
|
35
38
|
import {
|
|
36
39
|
resolveItemTypeRegistry
|
|
37
|
-
} from "./chunk-
|
|
40
|
+
} from "./chunk-Z2HXAFFH.js";
|
|
38
41
|
import {
|
|
39
42
|
nowIso
|
|
40
|
-
} from "./chunk-
|
|
43
|
+
} from "./chunk-XZS4MV37.js";
|
|
41
44
|
import {
|
|
42
45
|
EXIT_CODE,
|
|
43
46
|
EXTENSION_CAPABILITY_CONTRACT,
|
|
@@ -60,7 +63,7 @@ import {
|
|
|
60
63
|
resolvePmRoot,
|
|
61
64
|
runActiveOnReadHooks,
|
|
62
65
|
toNonEmptyStringOrUndefined
|
|
63
|
-
} from "./chunk-
|
|
66
|
+
} from "./chunk-YJAKN2N2.js";
|
|
64
67
|
|
|
65
68
|
// dist/cli/commands/health.js
|
|
66
69
|
import fs from "node:fs/promises";
|
|
@@ -948,6 +951,10 @@ async function buildTelemetryCheck(settings, options) {
|
|
|
948
951
|
warnings.push("telemetry_endpoint_probe_failed");
|
|
949
952
|
}
|
|
950
953
|
}
|
|
954
|
+
const parsedMaxSchemaVersion = Number.parseInt(endpointProbe?.max_schema_version ?? "", 10);
|
|
955
|
+
if (endpointProbe && endpointProbe.ok && Number.isInteger(parsedMaxSchemaVersion) && parsedMaxSchemaVersion > TELEMETRY_SCHEMA_VERSION) {
|
|
956
|
+
warnings.push(`telemetry_schema_version_behind:${parsedMaxSchemaVersion}`);
|
|
957
|
+
}
|
|
951
958
|
return {
|
|
952
959
|
check: {
|
|
953
960
|
name: "telemetry",
|
|
@@ -1267,6 +1274,6 @@ async function runHealth(global, options = {}) {
|
|
|
1267
1274
|
export {
|
|
1268
1275
|
runHealth
|
|
1269
1276
|
};
|
|
1270
|
-
//# sourceMappingURL=health-
|
|
1277
|
+
//# sourceMappingURL=health-B6AEM7BV.js.map
|
|
1271
1278
|
|
|
1272
|
-
//# debugId=
|
|
1279
|
+
//# debugId=6b89e739-76f1-5bb9-8403-cc8eecd5f6c8
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../../../../cli/commands/health.ts"],"sourcesContent":["import fs from \"node:fs/promises\";\nimport path from \"node:path\";\nimport { resolveItemTypeRegistry } from \"../../core/item/type-registry.js\";\nimport { pathExists, readFileIfExists } from \"../../core/fs/fs-utils.js\";\nimport { activateExtensions, getActiveExtensionRegistrations, loadExtensions, runActiveOnReadHooks } from \"../../core/extensions/index.js\";\nimport { collectRegisteredItemFieldNames } from \"../../core/extensions/item-fields.js\";\nimport {\n EXTENSION_CAPABILITY_CONTRACT,\n KNOWN_EXTENSION_CAPABILITIES,\n parseLegacyExtensionCapabilityAliasWarning,\n parseUnknownExtensionCapabilityWarning,\n type LoadedExtension,\n type UnknownExtensionCapabilityWarningDetails,\n} from \"../../core/extensions/loader.js\";\nimport { enforceHistoryStreamPolicyForItems } from \"../../core/history/history-stream-policy.js\";\nimport { scanHistoryDrift } from \"../../core/history/drift-scan.js\";\nimport {\n readVectorizationStatusLedger,\n refreshSemanticEmbeddingsForMutatedItems,\n} from \"../../core/search/cache.js\";\nimport { resolveEmbeddingProviders } from \"../../core/search/providers.js\";\nimport { resolveSettingsWithSemanticRuntimeDefaults } from \"../../core/search/semantic-defaults.js\";\nimport { collectStaleVectorizationIds } from \"../../core/search/staleness.js\";\nimport { resolveVectorStores } from \"../../core/search/vector-stores.js\";\nimport { EXIT_CODE, PM_CORE_REQUIRED_SUBDIRS, PM_OPTIONAL_TYPE_SUBDIRS } from \"../../core/shared/constants.js\";\nimport { findFirstMergeConflictMarker } from \"../../core/shared/conflict-markers.js\";\nimport type { GlobalOptions } from \"../../core/shared/command-types.js\";\nimport { PmCliError } from \"../../core/shared/errors.js\";\nimport { toNonEmptyStringOrUndefined } from \"../../core/shared/primitives.js\";\nimport { nowIso } from \"../../core/shared/time.js\";\nimport { parseItemDocument } from \"../../core/item/item-format.js\";\nimport { listAllFrontMatter, listAllFrontMatterWithBody } from \"../../core/store/item-store.js\";\nimport { TELEMETRY_SCHEMA_VERSION } from \"../../core/telemetry/runtime.js\";\nimport {\n getItemFormatFromPath,\n getSettingsPath,\n ITEM_FILE_EXTENSIONS,\n resolveGlobalPmRoot,\n resolvePmRoot,\n} from \"../../core/store/paths.js\";\nimport { readSettingsWithMetadata } from \"../../core/store/settings.js\";\nimport { buildRemediationMap } from \"../../core/diagnostics/remediation.js\";\nimport type { ItemFormat, ItemMetadata, PmSettings } from \"../../types/index.js\";\nimport { readManagedExtensionState } from \"./extension.js\";\nimport { buildRegistrationCollisionRemediation } from \"./extension/doctor.js\";\n\ntype HealthStatus = \"ok\" | \"warn\";\ntype MigrationRuntimeStatus = \"pending\" | \"failed\" | \"applied\";\n\nexport interface HealthCheck {\n name:\n | \"settings\"\n | \"directories\"\n | \"settings_values\"\n | \"telemetry\"\n | \"extensions\"\n | \"storage\"\n | \"integrity\"\n | \"history_drift\"\n | \"vectorization\";\n status: HealthStatus;\n details: Record<string, unknown>;\n}\n\nexport interface HealthResult {\n ok: boolean;\n checks: HealthCheck[];\n warning_count?: number;\n warnings: string[];\n projection?: {\n mode: \"brief\" | \"summary\" | \"full\";\n warning_count: number;\n warnings_truncated: boolean;\n detail_limit: number;\n omitted_checks?: HealthCheck[\"name\"][];\n };\n generated_at: string;\n}\n\nexport interface RunHealthOptions {\n strictDirectories?: boolean;\n checkOnly?: boolean;\n checkTelemetry?: boolean;\n noRefresh?: boolean;\n refreshVectors?: boolean;\n verboseStaleItems?: boolean;\n skipVectors?: boolean;\n skipIntegrity?: boolean;\n skipDrift?: boolean;\n full?: boolean;\n brief?: boolean;\n summary?: boolean;\n}\n\ninterface MigrationStatusEntry {\n layer: \"global\" | \"project\";\n name: string;\n id: string;\n status: MigrationRuntimeStatus;\n reason?: string;\n}\n\ninterface MigrationStatusSummary {\n applied: MigrationStatusEntry[];\n pending: MigrationStatusEntry[];\n failed: MigrationStatusEntry[];\n applied_count: number;\n pending_count: number;\n failed_count: number;\n}\n\ninterface ExtensionHealthTriageSummary {\n status: \"ok\" | \"warn\";\n warning_count: number;\n warning_codes: string[];\n load_failure_count: number;\n activation_failure_count: number;\n migration_failed_count: number;\n migration_pending_count: number;\n managed_state_warning_count: number;\n managed_extension_entries_count: number;\n unmanaged_loaded_extension_count: number;\n unmanaged_loaded_extensions: string[];\n unmanaged_expected_extension_count: number;\n unmanaged_expected_extensions: string[];\n unmanaged_action_required_extension_count: number;\n unmanaged_action_required_extensions: string[];\n update_health_coverage: \"full\" | \"partial\";\n update_health_partial: boolean;\n unknown_capability_count: number;\n top_warnings: string[];\n remediation: string[];\n}\n\ntype ItemWithBody = Awaited<ReturnType<typeof listAllFrontMatterWithBody>>[number];\nconst STALE_VECTORIZATION_SUMMARY_LIMIT = 25;\nconst BRIEF_HEALTH_DETAIL_LIMIT = 8;\nconst TELEMETRY_QUEUE_RELATIVE_PATH = path.join(\"runtime\", \"telemetry\", \"events.jsonl\");\nconst TELEMETRY_STATE_RELATIVE_PATH = path.join(\"runtime\", \"telemetry\", \"state.json\");\nconst TELEMETRY_ENDPOINT_PROBE_TIMEOUT_MS = 2_500;\nconst TELEMETRY_QUEUE_HIGH_WATER_MARK = 500;\nconst TELEMETRY_SERVER_MAX_SCHEMA_VERSION_HEADERS = [\n \"x-pm-telemetry-max-schema-version\",\n \"x-pm-telemetry-max-version\",\n] as const;\n\n/**\n * Advisory warnings are surfaced for visibility but never flip overall health to\n * not-ok. Telemetry is opt-out, non-critical observability: a queued/unreachable\n * telemetry endpoint or corrupt local telemetry state is not a project-health\n * failure and must not block agents that gate on `pm health` `ok`.\n */\nfunction isAdvisoryHealthWarning(warning: string): boolean {\n return warning.startsWith(\"telemetry_\");\n}\n\nfunction warningCode(value: string): string {\n const normalized = value.trim();\n const separator = normalized.indexOf(\":\");\n if (separator === -1) {\n return normalized;\n }\n return normalized.slice(0, separator);\n}\n\nfunction collectUnknownCapabilityGuidance(warnings: string[]): UnknownExtensionCapabilityWarningDetails[] {\n const seen = new Set<string>();\n const guidance: UnknownExtensionCapabilityWarningDetails[] = [];\n for (const warning of warnings) {\n const parsedDetails = (() => {\n const unknownWarning = parseUnknownExtensionCapabilityWarning(warning);\n if (unknownWarning) {\n return [unknownWarning];\n }\n return parseLegacyExtensionCapabilityAliasWarning(warning);\n })();\n for (const parsed of parsedDetails) {\n const key = `${parsed.layer}:${parsed.name}:${parsed.capability}`;\n if (seen.has(key)) {\n continue;\n }\n seen.add(key);\n guidance.push(parsed);\n }\n }\n return guidance;\n}\n\nfunction buildCapabilityContractMetadata(): {\n version: number;\n capabilities: string[];\n legacy_aliases: Record<string, string>;\n} {\n return {\n version: EXTENSION_CAPABILITY_CONTRACT.version,\n capabilities: [...EXTENSION_CAPABILITY_CONTRACT.capabilities],\n legacy_aliases: { ...EXTENSION_CAPABILITY_CONTRACT.legacy_aliases },\n };\n}\n\nfunction normalizeExtensionNameForMatch(value: string): string {\n return value.trim().toLowerCase();\n}\n\nfunction isExpectedUnmanagedExtension(name: string, directory: string): boolean {\n const normalizedName = normalizeExtensionNameForMatch(name);\n const normalizedDirectory = normalizeExtensionNameForMatch(directory);\n if (normalizedName.startsWith(\"builtin-\")) {\n return true;\n }\n return normalizedDirectory === \"beads\" || normalizedDirectory === \"todos\";\n}\n\nasync function isDirectory(targetPath: string): Promise<boolean> {\n try {\n const stats = await fs.stat(targetPath);\n return stats.isDirectory();\n } catch {\n return false;\n }\n}\n\nasync function countHistoryStreams(pmRoot: string): Promise<{ count: number; warnings: string[] }> {\n const historyDir = path.join(pmRoot, \"history\");\n if (!(await isDirectory(historyDir))) {\n return {\n count: 0,\n warnings: [],\n };\n }\n const historyFiles = (await fs.readdir(historyDir))\n .filter((entry) => entry.endsWith(\".jsonl\"))\n .sort((left, right) => left.localeCompare(right));\n\n const warnings: string[] = [];\n for (const fileName of historyFiles) {\n warnings.push(\n ...(await runActiveOnReadHooks({\n path: path.join(historyDir, fileName),\n scope: \"project\",\n })),\n );\n }\n\n return {\n count: historyFiles.length,\n warnings,\n };\n}\n\nfunction normalizeRelativePath(pmRoot: string, targetPath: string): string {\n return path.relative(pmRoot, targetPath).replaceAll(\"\\\\\", \"/\");\n}\n\nasync function listItemDocumentPaths(pmRoot: string, typeToFolder: Record<string, string>): Promise<string[]> {\n const folders = [...new Set(Object.values(typeToFolder))].sort((left, right) => left.localeCompare(right));\n const itemPaths: string[] = [];\n for (const folder of folders) {\n const directoryPath = path.join(pmRoot, folder);\n let entries: string[] = [];\n try {\n entries = await fs.readdir(directoryPath);\n } catch (error: unknown) {\n if (typeof error === \"object\" && error !== null && \"code\" in error && (error as { code?: string }).code === \"ENOENT\") {\n continue;\n }\n continue;\n }\n for (const entry of entries) {\n if (!ITEM_FILE_EXTENSIONS.some((extension) => entry.toLowerCase().endsWith(extension))) {\n continue;\n }\n itemPaths.push(path.join(directoryPath, entry));\n }\n }\n itemPaths.sort((left, right) => normalizeRelativePath(pmRoot, left).localeCompare(normalizeRelativePath(pmRoot, right)));\n return itemPaths;\n}\n\nasync function buildIntegrityCheck(\n pmRoot: string,\n typeToFolder: Record<string, string>,\n schema: PmSettings[\"schema\"],\n): Promise<{ check: HealthCheck; warnings: string[] }> {\n const itemPaths = await listItemDocumentPaths(pmRoot, typeToFolder);\n const itemUnreadable: string[] = [];\n const itemConflictMarkers: Array<{ path: string; line: number; marker: string }> = [];\n const itemParseFailures: string[] = [];\n const extensionFieldNames = collectRegisteredItemFieldNames(getActiveExtensionRegistrations());\n\n for (const itemPath of itemPaths) {\n const relativePath = normalizeRelativePath(pmRoot, itemPath);\n let raw = \"\";\n try {\n raw = await fs.readFile(itemPath, \"utf8\");\n } catch {\n itemUnreadable.push(relativePath);\n continue;\n }\n const conflictMarker = findFirstMergeConflictMarker(raw);\n if (conflictMarker) {\n itemConflictMarkers.push({\n path: relativePath,\n line: conflictMarker.line,\n marker: conflictMarker.marker,\n });\n continue;\n }\n try {\n parseItemDocument(raw, { format: getItemFormatFromPath(itemPath) as ItemFormat, schema, extensionFieldNames });\n } catch {\n itemParseFailures.push(relativePath);\n }\n }\n\n const historyDir = path.join(pmRoot, \"history\");\n const historyUnreadable: string[] = [];\n const historyConflictMarkers: Array<{ id: string; line: number; marker: string }> = [];\n const historyInvalidJson: Array<{ id: string; line: number }> = [];\n let historyFiles: string[] = [];\n try {\n historyFiles = (await fs.readdir(historyDir)).filter((entry) => entry.endsWith(\".jsonl\")).sort((left, right) => left.localeCompare(right));\n } catch (error: unknown) {\n if (!(typeof error === \"object\" && error !== null && \"code\" in error && (error as { code?: string }).code === \"ENOENT\")) {\n historyUnreadable.push(\"history\");\n }\n }\n for (const fileName of historyFiles) {\n const itemId = fileName.slice(0, -\".jsonl\".length);\n const historyPath = path.join(historyDir, fileName);\n let raw = \"\";\n try {\n raw = await fs.readFile(historyPath, \"utf8\");\n } catch {\n historyUnreadable.push(itemId);\n continue;\n }\n const conflictMarker = findFirstMergeConflictMarker(raw);\n if (conflictMarker) {\n historyConflictMarkers.push({\n id: itemId,\n line: conflictMarker.line,\n marker: conflictMarker.marker,\n });\n continue;\n }\n const lines = raw.split(/\\r?\\n/);\n for (let index = 0; index < lines.length; index += 1) {\n const line = lines[index]?.trim();\n if (!line) {\n continue;\n }\n try {\n JSON.parse(line);\n } catch {\n historyInvalidJson.push({\n id: itemId,\n line: index + 1,\n });\n }\n }\n }\n\n const warnings = [\n ...itemUnreadable.map((entry) => `integrity_item_unreadable:${entry}`),\n ...itemConflictMarkers.map((entry) => `integrity_item_conflict_marker:${entry.path}:L${entry.line}`),\n ...itemParseFailures.map((entry) => `integrity_item_parse_failed:${entry}`),\n ...historyUnreadable.map((entry) => `integrity_history_unreadable:${entry}`),\n ...historyConflictMarkers.map((entry) => `integrity_history_conflict_marker:${entry.id}:L${entry.line}`),\n ...historyInvalidJson.map((entry) => `integrity_history_invalid_json:${entry.id}:L${entry.line}`),\n ];\n const normalizedWarnings = [...new Set(warnings)].sort((left, right) => left.localeCompare(right));\n\n return {\n check: {\n name: \"integrity\",\n status: normalizedWarnings.length === 0 ? \"ok\" : \"warn\",\n details: {\n checked_item_files: itemPaths.length,\n checked_history_streams: historyFiles.length,\n counts: {\n item_unreadable: itemUnreadable.length,\n item_conflict_markers: itemConflictMarkers.length,\n item_parse_failures: itemParseFailures.length,\n history_unreadable: historyUnreadable.length,\n history_conflict_markers: historyConflictMarkers.length,\n history_invalid_json: historyInvalidJson.length,\n },\n item_unreadable: itemUnreadable,\n item_conflict_markers: itemConflictMarkers,\n item_parse_failures: itemParseFailures,\n history_unreadable: historyUnreadable,\n history_conflict_markers: historyConflictMarkers,\n history_invalid_json: historyInvalidJson,\n },\n },\n warnings: normalizedWarnings,\n };\n}\n\nfunction hasActivateExport(moduleRecord: Record<string, unknown>): boolean {\n if (typeof moduleRecord.activate === \"function\") {\n return true;\n }\n const defaultExport = moduleRecord.default;\n if (typeof defaultExport !== \"object\" || defaultExport === null) {\n return false;\n }\n return typeof (defaultExport as Record<string, unknown>).activate === \"function\";\n}\n\nfunction summarizeLoadedExtension(extension: LoadedExtension): Record<string, unknown> {\n const summary: Record<string, unknown> = {\n layer: extension.layer,\n directory: extension.directory,\n manifest_path: extension.manifest_path,\n name: extension.name,\n version: extension.version,\n entry: extension.entry,\n priority: extension.priority,\n entry_path: extension.entry_path,\n has_activate: hasActivateExport(extension.module as Record<string, unknown>),\n };\n if (Array.isArray(extension.capabilities)) {\n summary.capabilities = [...extension.capabilities];\n }\n return summary;\n}\n\nfunction resolveMigrationId(definition: Record<string, unknown>, fallbackIndex: number): string {\n const explicitId = toNonEmptyStringOrUndefined(definition.id);\n if (explicitId) {\n return explicitId;\n }\n return `migration-${String(fallbackIndex + 1).padStart(3, \"0\")}`;\n}\n\nfunction resolveMigrationStatus(definition: Record<string, unknown>): MigrationRuntimeStatus {\n const rawStatus = toNonEmptyStringOrUndefined(definition.status);\n const normalized = rawStatus?.toLowerCase();\n if (normalized === \"failed\") {\n return \"failed\";\n }\n if (normalized === \"applied\") {\n return \"applied\";\n }\n return \"pending\";\n}\n\nfunction resolveMigrationFailureReason(definition: Record<string, unknown>): string | undefined {\n return toNonEmptyStringOrUndefined(definition.reason) ?? toNonEmptyStringOrUndefined(definition.error) ?? toNonEmptyStringOrUndefined(definition.message);\n}\n\nfunction compareMigrationEntries(left: MigrationStatusEntry, right: MigrationStatusEntry): number {\n const byLayer = (left.layer ?? \"\").localeCompare(right.layer ?? \"\");\n if (byLayer !== 0) {\n return byLayer;\n }\n const byName = (left.name ?? \"\").localeCompare(right.name ?? \"\");\n if (byName !== 0) {\n return byName;\n }\n return (left.id ?? \"\").localeCompare(right.id ?? \"\");\n}\n\nfunction summarizeMigrationStatuses(\n migrations: Array<{\n layer: \"global\" | \"project\";\n name: string;\n definition: Record<string, unknown>;\n }>,\n): { summary: MigrationStatusSummary; warnings: string[] } {\n const applied: MigrationStatusEntry[] = [];\n const pending: MigrationStatusEntry[] = [];\n const failed: MigrationStatusEntry[] = [];\n\n migrations.forEach((migration, index) => {\n const id = resolveMigrationId(migration.definition, index);\n const status = resolveMigrationStatus(migration.definition);\n if (status === \"applied\") {\n applied.push({\n layer: migration.layer,\n name: migration.name,\n id,\n status,\n });\n return;\n }\n if (status === \"failed\") {\n failed.push({\n layer: migration.layer,\n name: migration.name,\n id,\n status,\n reason: resolveMigrationFailureReason(migration.definition),\n });\n return;\n }\n pending.push({\n layer: migration.layer,\n name: migration.name,\n id,\n status,\n });\n });\n\n applied.sort(compareMigrationEntries);\n pending.sort(compareMigrationEntries);\n failed.sort(compareMigrationEntries);\n\n const warnings = [\n ...failed.map((entry) => `extension_migration_failed:${entry.layer}:${entry.name}:${entry.id}`),\n ...pending.map((entry) => `extension_migration_pending:${entry.layer}:${entry.name}:${entry.id}`),\n ];\n\n return {\n summary: {\n applied,\n pending,\n failed,\n applied_count: applied.length,\n pending_count: pending.length,\n failed_count: failed.length,\n },\n warnings,\n };\n}\n\nfunction buildExtensionHealthTriageSummary(\n warnings: string[],\n loadFailureCount: number,\n activationFailureCount: number,\n migrationStatus: MigrationStatusSummary,\n managedStateWarningCount: number,\n managedExtensionEntriesCount: number,\n unmanagedLoadedExtensions: string[],\n unmanagedExpectedExtensions: string[],\n unmanagedActionRequiredExtensions: string[],\n): ExtensionHealthTriageSummary {\n const normalizedWarnings = [...new Set(warnings)].sort((left, right) => left.localeCompare(right));\n const warningCodes = [...new Set(normalizedWarnings.map((value) => warningCode(value)))].sort((left, right) =>\n left.localeCompare(right),\n );\n const unknownCapabilityCount = normalizedWarnings.filter((warning) => warning.startsWith(\"extension_capability_unknown:\")).length;\n const updateHealthPartial = unmanagedActionRequiredExtensions.length > 0;\n const updateHealthCoverage = updateHealthPartial ? \"partial\" : \"full\";\n const remediation: string[] = [];\n const registrationCollisionRemediation = buildRegistrationCollisionRemediation(normalizedWarnings, {\n deactivate: \"pm extension --deactivate <name> --project/--global\",\n doctor: \"pm extension --doctor --project/--global --detail deep --trace\",\n });\n if (registrationCollisionRemediation) {\n remediation.push(registrationCollisionRemediation);\n }\n if (loadFailureCount > 0) {\n remediation.push(\"Run pm extension --explore --project and pm extension --explore --global to inspect load failures.\");\n }\n if (activationFailureCount > 0) {\n remediation.push(\"Review checks[name=extensions].details.activation.failed in pm health --json for activation error details.\");\n }\n if (migrationStatus.failed_count > 0 || migrationStatus.pending_count > 0) {\n remediation.push(\"Resolve pending/failed extension migrations before write commands; use --force only when policy allows.\");\n }\n if (managedStateWarningCount > 0) {\n remediation.push(\"Run pm extension --manage --project and pm extension --manage --global to refresh managed-state diagnostics.\");\n }\n if (unknownCapabilityCount > 0) {\n remediation.push(\n `Unknown extension capabilities detected. Allowed capabilities: ${KNOWN_EXTENSION_CAPABILITIES.join(\", \")}. ` +\n \"Review extension_capability_unknown warning details for suggested replacements.\",\n );\n }\n if (normalizedWarnings.some((warning) => warning.startsWith(\"extension_capability_legacy_alias:\"))) {\n remediation.push(\n \"Legacy extension capability aliases were auto-remapped to canonical capabilities. \" +\n \"Update manifests to canonical names (migration/validation -> schema).\",\n );\n }\n if (normalizedWarnings.some((warning) => warning.startsWith(\"extension_command_definition_legacy_handler_alias:\"))) {\n remediation.push(\n \"Extension command definitions using legacy handler were auto-remapped. \" +\n \"Update command definitions to use run: (context) => ... for forward compatibility.\",\n );\n }\n if (updateHealthPartial) {\n remediation.push(\n \"Update-check coverage is partial because unmanaged extensions need adoption. Adopt existing installs via pm extension --manage --project/--global --fix-managed-state, pm extension --adopt-all --project/--global, or pm extension --adopt <name>.\",\n );\n } else if (unmanagedLoadedExtensions.length > 0) {\n remediation.push(\n \"Loaded unmanaged extensions are currently treated as informational. Use pm extension --manage --project/--global --fix-managed-state to adopt them for update checks.\",\n );\n }\n if (remediation.length === 0) {\n remediation.push(\"No immediate action required. Re-run pm health after extension configuration changes.\");\n }\n return {\n status: normalizedWarnings.length === 0 ? \"ok\" : \"warn\",\n warning_count: normalizedWarnings.length,\n warning_codes: warningCodes,\n load_failure_count: loadFailureCount,\n activation_failure_count: activationFailureCount,\n migration_failed_count: migrationStatus.failed_count,\n migration_pending_count: migrationStatus.pending_count,\n managed_state_warning_count: managedStateWarningCount,\n managed_extension_entries_count: managedExtensionEntriesCount,\n unmanaged_loaded_extension_count: unmanagedLoadedExtensions.length,\n unmanaged_loaded_extensions: unmanagedLoadedExtensions,\n unmanaged_expected_extension_count: unmanagedExpectedExtensions.length,\n unmanaged_expected_extensions: unmanagedExpectedExtensions,\n unmanaged_action_required_extension_count: unmanagedActionRequiredExtensions.length,\n unmanaged_action_required_extensions: unmanagedActionRequiredExtensions,\n update_health_coverage: updateHealthCoverage,\n update_health_partial: updateHealthPartial,\n unknown_capability_count: unknownCapabilityCount,\n top_warnings: normalizedWarnings.slice(0, 8),\n remediation,\n };\n}\n\nasync function buildExtensionCheck(\n pmRoot: string,\n settings: PmSettings,\n noExtensionsFlag: boolean,\n): Promise<{ check: HealthCheck; warnings: string[] }> {\n const loadResult = await loadExtensions({\n pmRoot,\n settings,\n cwd: process.cwd(),\n noExtensions: noExtensionsFlag,\n });\n const loadedSummaries = loadResult.loaded.map((extension) => summarizeLoadedExtension(extension));\n const activationResult = await activateExtensions({\n ...loadResult,\n loaded: loadResult.loaded,\n });\n const [projectManagedState, globalManagedState] = await Promise.all([\n readManagedExtensionState(loadResult.roots.project),\n readManagedExtensionState(loadResult.roots.global),\n ]);\n const migrationStatus = summarizeMigrationStatuses(activationResult.registrations.migrations);\n const activationDetails = {\n failed: activationResult.failed,\n warnings: activationResult.warnings,\n hook_counts: activationResult.hook_counts,\n command_override_count: activationResult.command_override_count,\n command_handler_count: activationResult.command_handler_count,\n parser_override_count: activationResult.parser_override_count,\n preflight_override_count: activationResult.preflight_override_count,\n service_override_count: activationResult.service_override_count,\n renderer_override_count: activationResult.renderer_override_count,\n registration_counts: activationResult.registration_counts,\n registrations: activationResult.registrations,\n migration_status: migrationStatus.summary,\n managed_extensions: {\n project: {\n path: projectManagedState.path,\n count: projectManagedState.state.entries.length,\n entries: projectManagedState.state.entries,\n },\n global: {\n path: globalManagedState.path,\n count: globalManagedState.state.entries.length,\n entries: globalManagedState.state.entries,\n },\n },\n };\n const managedProjectNames = new Set(\n projectManagedState.state.entries.map((entry) => normalizeExtensionNameForMatch(entry.name)),\n );\n const managedGlobalNames = new Set(globalManagedState.state.entries.map((entry) => normalizeExtensionNameForMatch(entry.name)));\n const unmanagedLoadedEntries = [\n ...new Map(\n loadResult.loaded\n .filter((entry) => {\n const managedNames = entry.layer === \"project\" ? managedProjectNames : managedGlobalNames;\n return !managedNames.has(normalizeExtensionNameForMatch(entry.name));\n })\n .map((entry) => [\n `${entry.layer}:${entry.name}`,\n {\n layer: entry.layer,\n name: entry.name,\n directory: entry.directory,\n },\n ]),\n ).values(),\n ].sort((left, right) => {\n const leftKey = `${left.layer}:${left.name}`;\n const rightKey = `${right.layer}:${right.name}`;\n return leftKey.localeCompare(rightKey);\n });\n const unmanagedLoadedExtensions = unmanagedLoadedEntries\n .map((entry) => `${entry.layer}:${entry.name}`)\n .sort((left, right) => left.localeCompare(right));\n const unmanagedExpectedExtensions = unmanagedLoadedEntries\n .filter((entry) => isExpectedUnmanagedExtension(entry.name, entry.directory))\n .map((entry) => `${entry.layer}:${entry.name}`)\n .sort((left, right) => left.localeCompare(right));\n const unmanagedActionRequiredExtensions = unmanagedLoadedEntries\n .filter((entry) => !isExpectedUnmanagedExtension(entry.name, entry.directory))\n .map((entry) => `${entry.layer}:${entry.name}`)\n .sort((left, right) => left.localeCompare(right));\n const updateCoverageWarnings =\n unmanagedActionRequiredExtensions.length > 0\n ? [`extension_update_health_partial_coverage:skipped_unmanaged:${unmanagedActionRequiredExtensions.length}`]\n : [];\n const extensionWarnings = [\n ...loadResult.warnings,\n ...activationDetails.warnings,\n ...migrationStatus.warnings,\n ...projectManagedState.warnings,\n ...globalManagedState.warnings,\n ...updateCoverageWarnings,\n ];\n const capabilityGuidance = collectUnknownCapabilityGuidance(extensionWarnings);\n const capabilityContract = buildCapabilityContractMetadata();\n const extensionTriage = buildExtensionHealthTriageSummary(\n extensionWarnings,\n loadResult.failed.length,\n activationResult.failed.length,\n migrationStatus.summary,\n projectManagedState.warnings.length + globalManagedState.warnings.length,\n projectManagedState.state.entries.length + globalManagedState.state.entries.length,\n unmanagedLoadedExtensions,\n unmanagedExpectedExtensions,\n unmanagedActionRequiredExtensions,\n );\n\n return {\n check: {\n name: \"extensions\",\n status: extensionWarnings.length === 0 ? \"ok\" : \"warn\",\n details: {\n ...loadResult,\n loaded: loadedSummaries,\n warnings: extensionWarnings,\n activation: activationDetails,\n triage: extensionTriage,\n capability_contract: capabilityContract,\n capability_guidance: capabilityGuidance,\n } as Record<string, unknown>,\n },\n warnings: extensionWarnings,\n };\n}\n\nfunction summarizeList(values: string[], limit: number): { values: string[]; truncated: boolean } {\n if (values.length <= limit) {\n return { values, truncated: false };\n }\n return {\n values: values.slice(0, limit),\n truncated: true,\n };\n}\n\nfunction summarizeRecordList(value: unknown, limit: number): { count: number; sample: unknown[]; truncated: boolean } {\n if (!Array.isArray(value)) {\n return {\n count: 0,\n sample: [],\n truncated: false,\n };\n }\n return {\n count: value.length,\n sample: value.slice(0, limit),\n truncated: value.length > limit,\n };\n}\n\nfunction summarizeExtensionRecord(value: unknown): Record<string, unknown> {\n if (typeof value !== \"object\" || value === null || Array.isArray(value)) {\n return {};\n }\n const record = value as Record<string, unknown>;\n return {\n layer: record.layer,\n directory: record.directory,\n name: record.name,\n version: record.version,\n enabled: record.enabled,\n status: record.status,\n has_activate: record.has_activate,\n capabilities: record.capabilities,\n };\n}\n\nfunction summarizeExtensionList(value: unknown, limit: number): { count: number; sample: unknown[]; truncated: boolean } {\n const summary = summarizeRecordList(value, limit);\n return {\n ...summary,\n sample: summary.sample.map((entry) => summarizeExtensionRecord(entry)),\n };\n}\n\nfunction summarizeStringList(value: unknown, limit: number): { count: number; sample: string[]; truncated: boolean } {\n if (!Array.isArray(value)) {\n return {\n count: 0,\n sample: [],\n truncated: false,\n };\n }\n const strings = value.filter((entry): entry is string => typeof entry === \"string\");\n return {\n count: strings.length,\n sample: strings.slice(0, limit),\n truncated: strings.length > limit,\n };\n}\n\nfunction summarizeHealthCheckDetails(check: HealthCheck, limit: number): Record<string, unknown> {\n const details = check.details;\n if (check.name === \"settings\") {\n return {\n version: details.version,\n id_prefix: details.id_prefix,\n locks_ttl_seconds: details.locks_ttl_seconds,\n warnings: summarizeStringList(details.warnings, limit),\n };\n }\n if (check.name === \"directories\") {\n return {\n required_count: Array.isArray(details.required) ? details.required.length : 0,\n optional_count: Array.isArray(details.optional) ? details.optional.length : 0,\n missing_required: summarizeStringList(details.missing_required, limit),\n missing_optional: summarizeStringList(details.missing_optional, limit),\n missing: summarizeStringList(details.missing, limit),\n strict_directories: details.strict_directories,\n };\n }\n if (check.name === \"settings_values\") {\n return {\n warnings: summarizeStringList(details.warnings, limit),\n };\n }\n if (check.name === \"telemetry\") {\n return {\n enabled: details.enabled,\n capture_level: details.capture_level,\n endpoint: details.endpoint,\n queue_exists: details.queue_exists,\n queue_entries: details.queue_entries,\n queue_draining: details.queue_draining,\n queue_invalid_rows: details.queue_invalid_rows,\n queue_rows_total: details.queue_rows_total,\n last_successful_flush_at: details.last_successful_flush_at,\n last_failed_flush_at: details.last_failed_flush_at,\n endpoint_probe: details.endpoint_probe,\n env_overrides: details.env_overrides,\n };\n }\n if (check.name === \"extensions\") {\n const activation = typeof details.activation === \"object\" && details.activation !== null ? (details.activation as Record<string, unknown>) : {};\n return {\n disabled_by_flag: details.disabled_by_flag,\n discovered: summarizeExtensionList(details.discovered, limit),\n effective: summarizeExtensionList(details.effective, limit),\n loaded: summarizeExtensionList(details.loaded, limit),\n failed: summarizeRecordList(details.failed, limit),\n warnings: summarizeStringList(details.warnings, limit),\n activation: {\n failed: summarizeRecordList(activation.failed, limit),\n warnings: summarizeStringList(activation.warnings, limit),\n hook_counts: activation.hook_counts,\n command_handler_count: activation.command_handler_count,\n service_override_count: activation.service_override_count,\n renderer_override_count: activation.renderer_override_count,\n registration_counts: activation.registration_counts,\n migration_status:\n typeof activation.migration_status === \"object\" && activation.migration_status !== null\n ? {\n applied_count: (activation.migration_status as Record<string, unknown>).applied_count,\n pending_count: (activation.migration_status as Record<string, unknown>).pending_count,\n failed_count: (activation.migration_status as Record<string, unknown>).failed_count,\n }\n : null,\n },\n triage: details.triage,\n capability_contract: details.capability_contract,\n capability_guidance: summarizeRecordList(details.capability_guidance, limit),\n };\n }\n if (check.name === \"storage\") {\n return details;\n }\n if (check.name === \"integrity\") {\n return {\n checked_item_files: details.checked_item_files,\n checked_history_streams: details.checked_history_streams,\n counts: details.counts,\n item_unreadable: summarizeStringList(details.item_unreadable, limit),\n item_conflict_markers: summarizeRecordList(details.item_conflict_markers, limit),\n item_parse_failures: summarizeStringList(details.item_parse_failures, limit),\n history_unreadable: summarizeStringList(details.history_unreadable, limit),\n history_conflict_markers: summarizeRecordList(details.history_conflict_markers, limit),\n history_invalid_json: summarizeRecordList(details.history_invalid_json, limit),\n skipped: details.skipped,\n };\n }\n if (check.name === \"history_drift\") {\n return {\n checked_items: details.checked_items,\n counts: details.counts,\n drifted_items: summarizeStringList(details.drifted_items, limit),\n missing_streams: summarizeStringList(details.missing_streams, limit),\n unreadable_streams: summarizeStringList(details.unreadable_streams, limit),\n hash_mismatches: summarizeStringList(details.hash_mismatches, limit),\n chain_mismatches: summarizeStringList(details.chain_mismatches, limit),\n skipped: details.skipped,\n };\n }\n if (check.name === \"vectorization\") {\n return {\n semantic_runtime_available: details.semantic_runtime_available,\n compatibility_mode_auto_defaults: details.compatibility_mode_auto_defaults,\n auto_ollama_defaults_applied: details.auto_ollama_defaults_applied,\n refresh_policy: details.refresh_policy,\n provider_active: details.provider_active,\n vector_store_active: details.vector_store_active,\n items: details.items,\n ledger_entries_before: details.ledger_entries_before,\n stale_items_before_total: details.stale_items_before_total,\n stale_items_before: summarizeStringList(details.stale_items_before, limit),\n refresh_attempted: details.refresh_attempted,\n refresh_skipped_reason: details.refresh_skipped_reason,\n refresh_result: details.refresh_result,\n ledger_entries_after: details.ledger_entries_after,\n stale_items_after_total: details.stale_items_after_total,\n stale_items_after: summarizeStringList(details.stale_items_after, limit),\n skipped: details.skipped,\n };\n }\n return details;\n}\n\nfunction applyBriefHealthProjection(result: HealthResult): HealthResult {\n const warningsSummary = summarizeStringList(result.warnings, BRIEF_HEALTH_DETAIL_LIMIT);\n return {\n ok: result.ok,\n checks: result.checks.map((check) => ({\n name: check.name,\n status: check.status,\n details: summarizeHealthCheckDetails(check, BRIEF_HEALTH_DETAIL_LIMIT),\n })),\n warnings: warningsSummary.sample,\n projection: {\n mode: \"brief\",\n warning_count: warningsSummary.count,\n warnings_truncated: warningsSummary.truncated,\n detail_limit: BRIEF_HEALTH_DETAIL_LIMIT,\n },\n generated_at: result.generated_at,\n };\n}\n\nfunction isSkippedHealthCheck(check: HealthCheck): boolean {\n return check.details.skipped === true;\n}\n\nfunction applySummaryHealthProjection(result: HealthResult): HealthResult {\n const warningsSummary = summarizeStringList(result.warnings, BRIEF_HEALTH_DETAIL_LIMIT);\n const omittedChecks = result.checks.filter(isSkippedHealthCheck).map((check) => check.name);\n return {\n ok: result.ok,\n checks: result.checks\n .filter((check) => !isSkippedHealthCheck(check))\n .map((check) => ({\n name: check.name,\n status: check.status,\n details: {},\n })),\n warning_count: warningsSummary.count,\n warnings: warningsSummary.sample,\n projection: {\n mode: \"summary\",\n warning_count: warningsSummary.count,\n warnings_truncated: warningsSummary.truncated,\n detail_limit: BRIEF_HEALTH_DETAIL_LIMIT,\n omitted_checks: omittedChecks,\n },\n generated_at: result.generated_at,\n };\n}\n\nfunction selectStaleItemDetail(\n values: string[],\n verboseStaleItems: boolean,\n): {\n values: string[];\n truncated: boolean;\n total: number;\n} {\n if (verboseStaleItems) {\n return {\n values,\n truncated: false,\n total: values.length,\n };\n }\n const summary = summarizeList(values, STALE_VECTORIZATION_SUMMARY_LIMIT);\n return {\n values: summary.values,\n truncated: summary.truncated,\n total: values.length,\n };\n}\n\ninterface TelemetryRuntimeStateRecord {\n endpoint?: string;\n queue_entries?: number;\n last_attempted_flush_at?: string;\n last_successful_flush_at?: string;\n last_failed_flush_at?: string;\n last_failed_flush_error?: string;\n}\n\nfunction telemetryEnvFlagEnabled(envKey: \"PM_TELEMETRY_DISABLED\" | \"PM_TELEMETRY_OTEL_DISABLED\" | \"PM_NO_TELEMETRY\"): boolean {\n const value = (process.env[envKey] ?? \"\").trim().toLowerCase();\n return value === \"1\" || value === \"true\" || value === \"yes\" || value === \"on\";\n}\n\nfunction normalizeEndpointForDisplay(rawEndpoint: string): string {\n const trimmed = rawEndpoint.trim();\n if (trimmed.length === 0) {\n return \"\";\n }\n try {\n const parsed = new URL(trimmed);\n parsed.username = \"\";\n parsed.password = \"\";\n parsed.search = \"\";\n parsed.hash = \"\";\n return parsed.toString();\n } catch {\n return trimmed;\n }\n}\n\nfunction parseTelemetryQueue(raw: string): { validEntries: number; invalidRows: number; totalRows: number } {\n let validEntries = 0;\n let invalidRows = 0;\n let totalRows = 0;\n for (const line of raw.split(\"\\n\")) {\n const trimmed = line.trim();\n if (trimmed.length === 0) {\n continue;\n }\n totalRows += 1;\n try {\n const parsed = JSON.parse(trimmed) as Record<string, unknown>;\n if (typeof parsed === \"object\" && parsed !== null && typeof parsed.attempts === \"number\") {\n validEntries += 1;\n } else {\n invalidRows += 1;\n }\n } catch {\n invalidRows += 1;\n }\n }\n return {\n validEntries,\n invalidRows,\n totalRows,\n };\n}\n\nasync function probeTelemetryEndpointHealth(endpoint: string): Promise<{\n probe_url: string;\n ok: boolean;\n status?: number;\n max_schema_version?: string;\n error?: string;\n}> {\n let probeUrl = endpoint;\n try {\n const parsed = new URL(endpoint);\n parsed.pathname = \"/healthz\";\n parsed.search = \"\";\n parsed.hash = \"\";\n probeUrl = parsed.toString();\n } catch {\n // keep original endpoint when URL parsing fails\n }\n try {\n const response = await fetch(probeUrl, {\n method: \"GET\",\n signal: AbortSignal.timeout(TELEMETRY_ENDPOINT_PROBE_TIMEOUT_MS),\n });\n return {\n probe_url: normalizeEndpointForDisplay(probeUrl),\n ok: response.ok,\n status: response.status,\n max_schema_version: (() => {\n for (const headerName of TELEMETRY_SERVER_MAX_SCHEMA_VERSION_HEADERS) {\n const value = response.headers.get(headerName)?.trim();\n if (value && value.length > 0) {\n return value;\n }\n }\n return undefined;\n })(),\n };\n } catch (error: unknown) {\n return {\n probe_url: normalizeEndpointForDisplay(probeUrl),\n ok: false,\n error: error instanceof Error ? error.message : \"probe_failed\",\n };\n }\n}\n\nasync function buildTelemetryCheck(\n settings: PmSettings,\n options: { checkTelemetry: boolean },\n): Promise<{ check: HealthCheck; warnings: string[] }> {\n const globalPmRoot = resolveGlobalPmRoot(process.cwd());\n const queuePath = path.join(globalPmRoot, TELEMETRY_QUEUE_RELATIVE_PATH);\n const statePath = path.join(globalPmRoot, TELEMETRY_STATE_RELATIVE_PATH);\n\n const queueRaw = await readFileIfExists(queuePath);\n const queueExists = queueRaw !== null;\n const queueSizeBytes = queueRaw ? Buffer.byteLength(queueRaw, \"utf8\") : 0;\n const queueSummary = queueRaw ? parseTelemetryQueue(queueRaw) : { validEntries: 0, invalidRows: 0, totalRows: 0 };\n\n const stateRaw = await readFileIfExists(statePath);\n let runtimeState: TelemetryRuntimeStateRecord = {};\n let stateParseFailed = false;\n if (stateRaw && stateRaw.trim().length > 0) {\n try {\n const parsed = JSON.parse(stateRaw) as TelemetryRuntimeStateRecord;\n if (typeof parsed === \"object\" && parsed !== null && !Array.isArray(parsed)) {\n runtimeState = parsed;\n } else {\n stateParseFailed = true;\n }\n } catch {\n stateParseFailed = true;\n }\n }\n\n const endpoint = settings.telemetry.endpoint.trim();\n const endpointDisplay = normalizeEndpointForDisplay(endpoint);\n let endpointProbe:\n | {\n attempted: boolean;\n probe_url: string;\n ok: boolean;\n status?: number;\n max_schema_version?: string;\n error?: string;\n }\n | undefined;\n if (options.checkTelemetry && settings.telemetry.enabled && endpoint.length > 0) {\n const probe = await probeTelemetryEndpointHealth(endpoint);\n endpointProbe = {\n attempted: true,\n ...probe,\n };\n }\n\n const warnings: string[] = [];\n if (stateParseFailed) {\n warnings.push(\"telemetry_state_invalid_json\");\n }\n if (queueSummary.invalidRows > 0) {\n warnings.push(`telemetry_queue_invalid_rows:${queueSummary.invalidRows}`);\n }\n const queueHasEntries = settings.telemetry.enabled && queueSummary.validEntries > 0;\n if (queueHasEntries) {\n const lastSuccess = runtimeState.last_successful_flush_at;\n const lastFailure = runtimeState.last_failed_flush_at;\n const activeFailure = lastFailure && (!lastSuccess || lastFailure > lastSuccess);\n const neverFlushed = !lastSuccess;\n const highWater = queueSummary.validEntries >= TELEMETRY_QUEUE_HIGH_WATER_MARK;\n if (activeFailure || neverFlushed || highWater) {\n warnings.push(`telemetry_queue_pending:${queueSummary.validEntries}`);\n }\n }\n if (endpointProbe && !endpointProbe.ok) {\n if (typeof endpointProbe.status === \"number\") {\n warnings.push(`telemetry_endpoint_probe_http_status:${endpointProbe.status}`);\n } else {\n warnings.push(\"telemetry_endpoint_probe_failed\");\n }\n }\n const parsedMaxSchemaVersion = Number.parseInt(endpointProbe?.max_schema_version ?? \"\", 10);\n if (\n endpointProbe &&\n endpointProbe.ok &&\n Number.isInteger(parsedMaxSchemaVersion) &&\n parsedMaxSchemaVersion > TELEMETRY_SCHEMA_VERSION\n ) {\n warnings.push(`telemetry_schema_version_behind:${parsedMaxSchemaVersion}`);\n }\n\n return {\n check: {\n name: \"telemetry\",\n status: warnings.length === 0 ? \"ok\" : \"warn\",\n details: {\n enabled: settings.telemetry.enabled,\n capture_level: settings.telemetry.capture_level,\n endpoint: endpointDisplay,\n global_pm_root: globalPmRoot,\n queue_path: queuePath,\n queue_exists: queueExists,\n queue_entries: queueSummary.validEntries,\n queue_draining: queueHasEntries && warnings.every((w) => !w.startsWith(\"telemetry_queue_pending:\")),\n queue_invalid_rows: queueSummary.invalidRows,\n queue_rows_total: queueSummary.totalRows,\n queue_size_bytes: queueSizeBytes,\n runtime_state_path: statePath,\n last_attempted_flush_at: runtimeState.last_attempted_flush_at ?? null,\n last_successful_flush_at: runtimeState.last_successful_flush_at ?? null,\n last_failed_flush_at: runtimeState.last_failed_flush_at ?? null,\n last_failed_flush_error: runtimeState.last_failed_flush_error ?? null,\n endpoint_probe: endpointProbe ?? {\n attempted: false,\n },\n env_overrides: {\n telemetry_disabled: telemetryEnvFlagEnabled(\"PM_TELEMETRY_DISABLED\") || telemetryEnvFlagEnabled(\"PM_NO_TELEMETRY\"),\n pm_no_telemetry: telemetryEnvFlagEnabled(\"PM_NO_TELEMETRY\"),\n telemetry_otel_disabled: telemetryEnvFlagEnabled(\"PM_TELEMETRY_OTEL_DISABLED\"),\n },\n },\n },\n warnings,\n };\n}\n\nasync function buildHistoryDriftCheck(\n pmRoot: string,\n items: ItemWithBody[],\n): Promise<{ check: HealthCheck; warnings: string[] }> {\n const { missingStreams, unreadableStreams, hashMismatches, chainMismatches, driftedItems } = await scanHistoryDrift(\n pmRoot,\n items,\n );\n const warnings = [\n ...missingStreams.map((id) => `history_drift_missing_stream:${id}`),\n ...unreadableStreams.map((id) => `history_drift_unreadable_stream:${id}`),\n ...hashMismatches.map((id) => `history_drift_hash_mismatch:${id}`),\n ...chainMismatches.map((id) => `history_drift_chain_mismatch:${id}`),\n ];\n return {\n check: {\n name: \"history_drift\",\n status: warnings.length === 0 ? \"ok\" : \"warn\",\n details: {\n checked_items: items.length,\n drifted_items: driftedItems,\n counts: {\n drifted: driftedItems.length,\n missing_streams: missingStreams.length,\n unreadable_streams: unreadableStreams.length,\n hash_mismatches: hashMismatches.length,\n chain_mismatches: chainMismatches.length,\n },\n missing_streams: missingStreams,\n unreadable_streams: unreadableStreams,\n hash_mismatches: hashMismatches,\n chain_mismatches: chainMismatches,\n },\n },\n warnings,\n };\n}\n\nasync function buildVectorizationCheck(\n pmRoot: string,\n settings: PmSettings,\n items: ItemWithBody[],\n refreshPolicy: {\n enabled: boolean;\n checkOnly: boolean;\n noRefresh: boolean;\n refreshVectors: boolean;\n },\n verboseStaleItems: boolean,\n): Promise<{ check: HealthCheck; warnings: string[] }> {\n const runtimeDefaults = resolveSettingsWithSemanticRuntimeDefaults(settings);\n const providerResolution = resolveEmbeddingProviders(runtimeDefaults.settings);\n const vectorStoreResolution = resolveVectorStores(runtimeDefaults.settings);\n const semanticRuntimeAvailable = Boolean(providerResolution.active && vectorStoreResolution.active);\n const ledgerBefore = await readVectorizationStatusLedger(pmRoot);\n const staleBefore = semanticRuntimeAvailable ? collectStaleVectorizationIds(items, ledgerBefore.entries) : [];\n let refreshResult: Awaited<ReturnType<typeof refreshSemanticEmbeddingsForMutatedItems>> = {\n refreshed: [],\n skipped: [],\n warnings: [],\n };\n if (refreshPolicy.enabled && semanticRuntimeAvailable && staleBefore.length > 0) {\n refreshResult = await refreshSemanticEmbeddingsForMutatedItems(pmRoot, staleBefore, {\n settings: runtimeDefaults.settings,\n apply_runtime_defaults: false,\n });\n }\n const ledgerAfter = await readVectorizationStatusLedger(pmRoot);\n const staleAfter = semanticRuntimeAvailable ? collectStaleVectorizationIds(items, ledgerAfter.entries) : [];\n const strictVectorizationWarnings = !runtimeDefaults.auto_ollama_defaults_applied;\n const warningSet = new Set<string>([...ledgerBefore.warnings, ...ledgerAfter.warnings]);\n if (strictVectorizationWarnings) {\n for (const warning of refreshResult.warnings) {\n warningSet.add(warning);\n }\n }\n if (strictVectorizationWarnings && semanticRuntimeAvailable && staleAfter.length > 0) {\n warningSet.add(`vectorization_stale_items_remaining:${staleAfter.length}`);\n }\n const warnings = [...warningSet].sort((left, right) => left.localeCompare(right));\n const staleBeforeDetail = selectStaleItemDetail(staleBefore, verboseStaleItems);\n const staleAfterDetail = selectStaleItemDetail(staleAfter, verboseStaleItems);\n\n return {\n check: {\n name: \"vectorization\",\n status: warnings.length === 0 ? \"ok\" : \"warn\",\n details: {\n semantic_runtime_available: semanticRuntimeAvailable,\n compatibility_mode_auto_defaults: runtimeDefaults.auto_ollama_defaults_applied,\n auto_ollama_defaults_applied: runtimeDefaults.auto_ollama_defaults_applied,\n refresh_policy: {\n enabled: refreshPolicy.enabled,\n check_only: refreshPolicy.checkOnly,\n no_refresh: refreshPolicy.noRefresh,\n refresh_vectors: refreshPolicy.refreshVectors,\n },\n provider_active: providerResolution.active?.name ?? null,\n vector_store_active: vectorStoreResolution.active?.name ?? null,\n items: items.length,\n ledger_entries_before: Object.keys(ledgerBefore.entries).length,\n stale_items_detail_mode: verboseStaleItems ? \"full\" : \"summary\",\n stale_items_summary_limit: STALE_VECTORIZATION_SUMMARY_LIMIT,\n stale_items_before_total: staleBeforeDetail.total,\n stale_items_before: staleBeforeDetail.values,\n stale_items_before_truncated: staleBeforeDetail.truncated,\n refresh_attempted: refreshPolicy.enabled && staleBefore.length > 0 && semanticRuntimeAvailable,\n refresh_skipped_reason:\n refreshPolicy.enabled && semanticRuntimeAvailable && staleBefore.length > 0\n ? null\n : !refreshPolicy.enabled\n ? \"refresh_disabled\"\n : !semanticRuntimeAvailable\n ? \"semantic_runtime_unavailable\"\n : \"no_stale_items\",\n refresh_result: refreshResult,\n ledger_entries_after: Object.keys(ledgerAfter.entries).length,\n stale_items_after_total: staleAfterDetail.total,\n stale_items_after: staleAfterDetail.values,\n stale_items_after_truncated: staleAfterDetail.truncated,\n },\n },\n warnings,\n };\n}\n\nfunction validateSettingsValues(settings: PmSettings): string[] {\n const warnings: string[] = [];\n if (settings.id_prefix.trim().length === 0) {\n warnings.push(\"settings:id_prefix_empty\");\n }\n if (settings.locks.ttl_seconds <= 0) {\n warnings.push(\"settings:locks_ttl_non_positive\");\n }\n return warnings;\n}\n\nfunction resolveVectorRefreshPolicy(options: RunHealthOptions): {\n enabled: boolean;\n checkOnly: boolean;\n noRefresh: boolean;\n refreshVectors: boolean;\n} {\n const checkOnly = options.checkOnly === true;\n const noRefresh = options.noRefresh === true || checkOnly;\n const refreshVectors = options.refreshVectors === true;\n if (refreshVectors && checkOnly) {\n throw new PmCliError(\"--check-only cannot be combined with --refresh-vectors\", EXIT_CODE.USAGE);\n }\n if (refreshVectors && options.noRefresh === true) {\n throw new PmCliError(\"--no-refresh cannot be combined with --refresh-vectors\", EXIT_CODE.USAGE);\n }\n return {\n enabled: refreshVectors || !noRefresh,\n checkOnly,\n noRefresh,\n refreshVectors,\n };\n}\n\nexport async function runHealth(global: GlobalOptions, options: RunHealthOptions = {}): Promise<HealthResult> {\n const pmRoot = resolvePmRoot(process.cwd(), global.path);\n const settingsPath = getSettingsPath(pmRoot);\n if (!(await pathExists(settingsPath))) {\n throw new PmCliError(`Tracker is not initialized at ${pmRoot}. Run pm init first.`, EXIT_CODE.NOT_FOUND);\n }\n\n const { settings, warnings: settingsReadWarnings } = await readSettingsWithMetadata(pmRoot);\n const normalizedSettingsReadWarnings = [...new Set(settingsReadWarnings)];\n const typeRegistry = resolveItemTypeRegistry(settings, getActiveExtensionRegistrations());\n const strictDirectories = options.strictDirectories === true;\n const refreshPolicy = resolveVectorRefreshPolicy(options);\n const optionalBuiltinDirs = new Set<string>(PM_OPTIONAL_TYPE_SUBDIRS.filter((entry) => entry.length > 0));\n const requiredDirSet = new Set<string>(PM_CORE_REQUIRED_SUBDIRS.filter((entry) => entry.length > 0));\n const optionalDirSet = new Set<string>();\n for (const folder of typeRegistry.folders) {\n if (optionalBuiltinDirs.has(folder)) {\n optionalDirSet.add(folder);\n continue;\n }\n requiredDirSet.add(folder);\n }\n const requiredDirs = [...requiredDirSet].sort((left, right) => left.localeCompare(right));\n const optionalDirs = [...optionalDirSet].sort((left, right) => left.localeCompare(right));\n const missingRequiredDirs: string[] = [];\n const missingOptionalDirs: string[] = [];\n const hookWarnings: string[] = [];\n for (const relativeDir of [...requiredDirs, ...optionalDirs]) {\n const directoryPath = path.join(pmRoot, relativeDir);\n hookWarnings.push(\n ...(await runActiveOnReadHooks({\n path: directoryPath,\n scope: \"project\",\n })),\n );\n if (!(await isDirectory(directoryPath))) {\n if (optionalDirSet.has(relativeDir)) {\n missingOptionalDirs.push(relativeDir);\n } else {\n missingRequiredDirs.push(relativeDir);\n }\n }\n }\n const missingDirs = strictDirectories ? [...missingRequiredDirs, ...missingOptionalDirs] : [...missingRequiredDirs];\n\n const settingWarnings = validateSettingsValues(settings);\n const telemetryCheck = await buildTelemetryCheck(settings, {\n checkTelemetry: options.checkTelemetry === true,\n });\n const extensionCheck = await buildExtensionCheck(pmRoot, settings, Boolean(global.noExtensions));\n const summaryMode = options.summary === true && options.full !== true;\n const fastProjectionCheckOnly =\n options.checkOnly === true && (options.brief === true || options.summary === true) && options.full !== true;\n const skipIntegrity = (options.skipIntegrity === true || fastProjectionCheckOnly) && options.full !== true;\n const skipDrift = (options.skipDrift === true || fastProjectionCheckOnly) && options.full !== true;\n const skipVectors = (options.skipVectors === true || fastProjectionCheckOnly) && options.full !== true;\n const itemReadWarnings: string[] = [];\n const items = skipDrift && skipVectors\n ? await listAllFrontMatter(pmRoot, settings.item_format, typeRegistry.type_to_folder, itemReadWarnings, settings.schema)\n : await listAllFrontMatterWithBody(\n pmRoot,\n settings.item_format,\n typeRegistry.type_to_folder,\n itemReadWarnings,\n settings.schema,\n );\n const itemsWithBody = items as Array<ItemMetadata & { body: string }>;\n const normalizedItemReadWarnings = [...new Set(itemReadWarnings)];\n const historyPolicy = skipDrift\n ? { warnings: [] }\n : await enforceHistoryStreamPolicyForItems({\n pmRoot,\n settings,\n itemIds: items.map((item) => item.id),\n commandLabel: \"health\",\n });\n const historySummary = await countHistoryStreams(pmRoot);\n const integrityCheck = skipIntegrity\n ? { check: { name: \"integrity\" as const, status: \"ok\" as const, details: { skipped: true } }, warnings: [] }\n : await buildIntegrityCheck(pmRoot, typeRegistry.type_to_folder, settings.schema);\n const historyDriftCheck = skipDrift\n ? { check: { name: \"history_drift\" as const, status: \"ok\" as const, details: { skipped: true } }, warnings: [] }\n : await buildHistoryDriftCheck(pmRoot, itemsWithBody);\n const vectorizationCheck = skipVectors\n ? { check: { name: \"vectorization\" as const, status: \"ok\" as const, details: { skipped: true } }, warnings: [] }\n : await buildVectorizationCheck(pmRoot, settings, itemsWithBody, refreshPolicy, options.verboseStaleItems === true);\n\n const checks: HealthCheck[] = [\n {\n name: \"settings\",\n status: normalizedSettingsReadWarnings.length === 0 ? \"ok\" : \"warn\",\n details: {\n path: settingsPath,\n version: settings.version,\n id_prefix: settings.id_prefix,\n locks_ttl_seconds: settings.locks.ttl_seconds,\n warnings: normalizedSettingsReadWarnings,\n },\n },\n {\n name: \"directories\",\n status: missingDirs.length === 0 ? \"ok\" : \"warn\",\n details: {\n required: requiredDirs,\n optional: optionalDirs,\n missing_required: missingRequiredDirs,\n missing_optional: missingOptionalDirs,\n missing: missingDirs,\n strict_directories: strictDirectories,\n },\n },\n {\n name: \"settings_values\",\n status: settingWarnings.length === 0 ? \"ok\" : \"warn\",\n details: {\n warnings: settingWarnings,\n },\n },\n telemetryCheck.check,\n extensionCheck.check,\n {\n name: \"storage\",\n status: \"ok\",\n details: {\n items: items.length,\n history_streams: historySummary.count,\n },\n },\n integrityCheck.check,\n historyDriftCheck.check,\n vectorizationCheck.check,\n ];\n\n const warnings = [\n ...missingDirs.map((dir) => `missing_directory:${dir}`),\n ...normalizedSettingsReadWarnings,\n ...settingWarnings,\n ...normalizedItemReadWarnings,\n ...telemetryCheck.warnings,\n ...extensionCheck.warnings,\n ...historyPolicy.warnings,\n ...historySummary.warnings,\n ...integrityCheck.warnings,\n ...historyDriftCheck.warnings,\n ...vectorizationCheck.warnings,\n ...hookWarnings,\n ];\n const normalizedWarnings = [...new Set(warnings)];\n // Attach a machine-executable remediation_map (warning-code-prefix -> fix\n // command) to each non-extension check so agents gating on `pm health --json`\n // never have to hardcode the warning-code -> fix mapping. The extensions check\n // keeps its richer, contextual `details.triage.remediation`; brief/summary\n // projections omit remediation_map (it lives only in full check details).\n const checkRemediationSources: Partial<Record<HealthCheck[\"name\"], string[]>> = {\n settings: normalizedSettingsReadWarnings,\n directories: missingDirs.map((dir) => `missing_directory:${dir}`),\n settings_values: settingWarnings,\n telemetry: telemetryCheck.warnings,\n integrity: integrityCheck.warnings,\n history_drift: historyDriftCheck.warnings,\n vectorization: vectorizationCheck.warnings,\n };\n for (const check of checks) {\n const sources = checkRemediationSources[check.name];\n if (sources === undefined) {\n continue;\n }\n const remediationMap = buildRemediationMap(sources);\n if (Object.keys(remediationMap).length > 0) {\n check.details = { ...check.details, remediation_map: remediationMap };\n }\n }\n // Telemetry is an opt-out, non-critical observability feature. Its operational\n // state (queue backlog, unreachable endpoint, corrupt local state) is advisory:\n // it must never flip overall project health to not-ok. Such warnings are still\n // surfaced in `warnings` and the telemetry check's own `warn` status.\n const blockingWarnings = normalizedWarnings.filter((warning) => !isAdvisoryHealthWarning(warning));\n const result: HealthResult = {\n ok: blockingWarnings.length === 0,\n checks,\n warnings: normalizedWarnings,\n generated_at: nowIso(),\n };\n if (summaryMode) {\n return applySummaryHealthProjection(result);\n }\n return options.brief === true ? applyBriefHealthProjection(result) : result;\n}\n"],"names":[],"mappings":"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","debugId":"6b89e739-76f1-5bb9-8403-cc8eecd5f6c8"}
|
|
@@ -1,41 +1,44 @@
|
|
|
1
1
|
import {
|
|
2
2
|
buildRemediationMap,
|
|
3
3
|
scanHistoryDrift
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-RISLL7XH.js";
|
|
5
5
|
import {
|
|
6
6
|
collectStaleVectorizationIds
|
|
7
7
|
} from "./chunk-QAJBIGRA.js";
|
|
8
|
-
import "./chunk-
|
|
8
|
+
import "./chunk-MSH23UWO.js";
|
|
9
|
+
import {
|
|
10
|
+
TELEMETRY_SCHEMA_VERSION
|
|
11
|
+
} from "./chunk-TXKENAQP.js";
|
|
9
12
|
import {
|
|
10
13
|
buildRegistrationCollisionRemediation,
|
|
11
14
|
readManagedExtensionState
|
|
12
|
-
} from "./chunk-
|
|
13
|
-
import "./chunk-
|
|
15
|
+
} from "./chunk-7WXGR44E.js";
|
|
16
|
+
import "./chunk-URJEZOLB.js";
|
|
14
17
|
import {
|
|
15
18
|
readVectorizationStatusLedger,
|
|
16
19
|
refreshSemanticEmbeddingsForMutatedItems,
|
|
17
20
|
resolveEmbeddingProviders,
|
|
18
21
|
resolveSettingsWithSemanticRuntimeDefaults,
|
|
19
22
|
resolveVectorStores
|
|
20
|
-
} from "./chunk-
|
|
23
|
+
} from "./chunk-3E3MDBTB.js";
|
|
21
24
|
import "./chunk-3HUE7XOF.js";
|
|
22
25
|
import {
|
|
23
26
|
collectRegisteredItemFieldNames,
|
|
24
27
|
enforceHistoryStreamPolicyForItems,
|
|
25
28
|
listAllFrontMatter,
|
|
26
29
|
listAllFrontMatterWithBody
|
|
27
|
-
} from "./chunk-
|
|
28
|
-
import "./chunk-
|
|
30
|
+
} from "./chunk-2HMD3JM2.js";
|
|
31
|
+
import "./chunk-K62SNVVE.js";
|
|
29
32
|
import {
|
|
30
33
|
findFirstMergeConflictMarker,
|
|
31
34
|
parseItemDocument
|
|
32
|
-
} from "./chunk-
|
|
35
|
+
} from "./chunk-M7UBTVFT.js";
|
|
33
36
|
import {
|
|
34
37
|
resolveItemTypeRegistry
|
|
35
|
-
} from "./chunk-
|
|
38
|
+
} from "./chunk-2BYKYPWY.js";
|
|
36
39
|
import {
|
|
37
40
|
nowIso
|
|
38
|
-
} from "./chunk-
|
|
41
|
+
} from "./chunk-QFVASU44.js";
|
|
39
42
|
import {
|
|
40
43
|
EXIT_CODE,
|
|
41
44
|
EXTENSION_CAPABILITY_CONTRACT,
|
|
@@ -58,7 +61,7 @@ import {
|
|
|
58
61
|
resolvePmRoot,
|
|
59
62
|
runActiveOnReadHooks,
|
|
60
63
|
toNonEmptyStringOrUndefined
|
|
61
|
-
} from "./chunk-
|
|
64
|
+
} from "./chunk-3TXWDGPU.js";
|
|
62
65
|
|
|
63
66
|
// dist/cli/commands/health.js
|
|
64
67
|
import fs from "node:fs/promises";
|
|
@@ -66,7 +69,7 @@ import path from "node:path";
|
|
|
66
69
|
!(function() {
|
|
67
70
|
try {
|
|
68
71
|
var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}, n = new e.Error().stack;
|
|
69
|
-
n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "
|
|
72
|
+
n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "8fd98976-c64b-5a5e-acc8-91761a188267");
|
|
70
73
|
} catch (e2) {
|
|
71
74
|
}
|
|
72
75
|
})();
|
|
@@ -953,6 +956,10 @@ async function buildTelemetryCheck(settings, options) {
|
|
|
953
956
|
warnings.push("telemetry_endpoint_probe_failed");
|
|
954
957
|
}
|
|
955
958
|
}
|
|
959
|
+
const parsedMaxSchemaVersion = Number.parseInt(endpointProbe?.max_schema_version ?? "", 10);
|
|
960
|
+
if (endpointProbe && endpointProbe.ok && Number.isInteger(parsedMaxSchemaVersion) && parsedMaxSchemaVersion > TELEMETRY_SCHEMA_VERSION) {
|
|
961
|
+
warnings.push(`telemetry_schema_version_behind:${parsedMaxSchemaVersion}`);
|
|
962
|
+
}
|
|
956
963
|
return {
|
|
957
964
|
check: {
|
|
958
965
|
name: "telemetry",
|
|
@@ -1272,4 +1279,4 @@ async function runHealth(global2, options = {}) {
|
|
|
1272
1279
|
export {
|
|
1273
1280
|
runHealth
|
|
1274
1281
|
};
|
|
1275
|
-
//# sourceMappingURL=health-
|
|
1282
|
+
//# sourceMappingURL=health-YMZGOMVX.js.map
|