@unbrained/pm-cli 2026.6.30 → 2026.7.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENTS.md +2 -0
- package/CHANGELOG.md +26 -0
- package/dist/cli/bootstrap-args.js +89 -79
- package/dist/cli/bootstrap-args.js.map +1 -1
- package/dist/cli/commander-usage.d.ts +2 -0
- package/dist/cli/commander-usage.js +58 -47
- package/dist/cli/commander-usage.js.map +1 -1
- package/dist/cli/commands/aggregate.js +102 -79
- package/dist/cli/commands/aggregate.js.map +1 -1
- package/dist/cli/commands/calendar.js +339 -303
- package/dist/cli/commands/calendar.js.map +1 -1
- package/dist/cli/commands/close-many.js +89 -68
- package/dist/cli/commands/close-many.js.map +1 -1
- package/dist/cli/commands/close.js +157 -129
- package/dist/cli/commands/close.js.map +1 -1
- package/dist/cli/commands/comments-audit.js +50 -42
- package/dist/cli/commands/comments-audit.js.map +1 -1
- package/dist/cli/commands/config.d.ts +2 -0
- package/dist/cli/commands/config.js +443 -879
- package/dist/cli/commands/config.js.map +1 -1
- package/dist/cli/commands/context.js +365 -287
- package/dist/cli/commands/context.js.map +1 -1
- package/dist/cli/commands/contracts.js +352 -238
- package/dist/cli/commands/contracts.js.map +1 -1
- package/dist/cli/commands/create.js +483 -434
- package/dist/cli/commands/create.js.map +1 -1
- package/dist/cli/commands/dedupe-audit.js +46 -39
- package/dist/cli/commands/dedupe-audit.js.map +1 -1
- package/dist/cli/commands/dedupe-merge.js +88 -69
- package/dist/cli/commands/dedupe-merge.js.map +1 -1
- package/dist/cli/commands/extension/bundled-catalog.js +59 -46
- package/dist/cli/commands/extension/bundled-catalog.js.map +1 -1
- package/dist/cli/commands/extension/doctor.js +129 -78
- package/dist/cli/commands/extension/doctor.js.map +1 -1
- package/dist/cli/commands/extension/managed-state.js +101 -57
- package/dist/cli/commands/extension/managed-state.js.map +1 -1
- package/dist/cli/commands/extension/scaffold.d.ts +7 -0
- package/dist/cli/commands/extension/scaffold.js +214 -186
- package/dist/cli/commands/extension/scaffold.js.map +1 -1
- package/dist/cli/commands/extension.d.ts +6 -1
- package/dist/cli/commands/extension.js +1034 -902
- package/dist/cli/commands/extension.js.map +1 -1
- package/dist/cli/commands/get.js +114 -81
- package/dist/cli/commands/get.js.map +1 -1
- package/dist/cli/commands/health.d.ts +17 -0
- package/dist/cli/commands/health.js +446 -307
- package/dist/cli/commands/health.js.map +1 -1
- package/dist/cli/commands/history-compact.js +209 -140
- package/dist/cli/commands/history-compact.js.map +1 -1
- package/dist/cli/commands/history-redact.js +162 -119
- package/dist/cli/commands/history-redact.js.map +1 -1
- package/dist/cli/commands/history-repair.js +120 -85
- package/dist/cli/commands/history-repair.js.map +1 -1
- package/dist/cli/commands/init.d.ts +8 -2
- package/dist/cli/commands/init.js +263 -162
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/list-filter-shared.js +55 -48
- package/dist/cli/commands/list-filter-shared.js.map +1 -1
- package/dist/cli/commands/list.js +152 -102
- package/dist/cli/commands/list.js.map +1 -1
- package/dist/cli/commands/next.js +49 -32
- package/dist/cli/commands/next.js.map +1 -1
- package/dist/cli/commands/plan.js +373 -298
- package/dist/cli/commands/plan.js.map +1 -1
- package/dist/cli/commands/recurrence-parsers.js +43 -25
- package/dist/cli/commands/recurrence-parsers.js.map +1 -1
- package/dist/cli/commands/reindex.d.ts +21 -5
- package/dist/cli/commands/reindex.js +345 -205
- package/dist/cli/commands/reindex.js.map +1 -1
- package/dist/cli/commands/restore.d.ts +8 -7
- package/dist/cli/commands/restore.js +105 -69
- package/dist/cli/commands/restore.js.map +1 -1
- package/dist/cli/commands/schema.js +33 -30
- package/dist/cli/commands/schema.js.map +1 -1
- package/dist/cli/commands/search.d.ts +10 -2
- package/dist/cli/commands/search.js +595 -536
- package/dist/cli/commands/search.js.map +1 -1
- package/dist/cli/commands/telemetry.js +98 -87
- package/dist/cli/commands/telemetry.js.map +1 -1
- package/dist/cli/commands/test-all.js +237 -168
- package/dist/cli/commands/test-all.js.map +1 -1
- package/dist/cli/commands/test.d.ts +6 -5
- package/dist/cli/commands/test.js +530 -464
- package/dist/cli/commands/test.js.map +1 -1
- package/dist/cli/commands/update-many.js +57 -42
- package/dist/cli/commands/update-many.js.map +1 -1
- package/dist/cli/commands/update.d.ts +1 -1
- package/dist/cli/commands/update.js +764 -747
- package/dist/cli/commands/update.js.map +1 -1
- package/dist/cli/commands/validate.d.ts +18 -1
- package/dist/cli/commands/validate.js +466 -343
- package/dist/cli/commands/validate.js.map +1 -1
- package/dist/cli/error-guidance.js +399 -357
- package/dist/cli/error-guidance.js.map +1 -1
- package/dist/cli/extension-command-options.js +48 -21
- package/dist/cli/extension-command-options.js.map +1 -1
- package/dist/cli/main.d.ts +47 -0
- package/dist/cli/main.js +428 -341
- package/dist/cli/main.js.map +1 -1
- package/dist/cli/migration-gates.js +22 -45
- package/dist/cli/migration-gates.js.map +1 -1
- package/dist/cli/register-list-query.js +94 -105
- package/dist/cli/register-list-query.js.map +1 -1
- package/dist/cli/register-mutation.js +400 -416
- package/dist/cli/register-mutation.js.map +1 -1
- package/dist/cli/register-operations.js +86 -66
- package/dist/cli/register-operations.js.map +1 -1
- package/dist/cli/register-setup.js +120 -101
- package/dist/cli/register-setup.js.map +1 -1
- package/dist/cli/registration-helpers.js +117 -122
- package/dist/cli/registration-helpers.js.map +1 -1
- package/dist/cli-bundle/chunks/{activity-MVSEND6D.js → activity-CUC4JY3U.js} +9 -9
- package/dist/cli-bundle/chunks/activity-WEIEMM73.js +16 -0
- package/dist/cli-bundle/chunks/{aggregate-MOC4TR2G.js → aggregate-DKUTRY6R.js} +109 -85
- package/dist/cli-bundle/chunks/aggregate-DKUTRY6R.js.map +1 -0
- package/dist/cli-bundle/chunks/{aggregate-XJHLZQ5X.js → aggregate-SW5PNGCS.js} +108 -84
- package/dist/cli-bundle/chunks/{aggregate-XJHLZQ5X.js.map → aggregate-SW5PNGCS.js.map} +2 -2
- package/dist/cli-bundle/chunks/{append-KDHT4GHI.js → append-H32VOR2Y.js} +6 -6
- package/dist/cli-bundle/chunks/{append-LEDBAM3K.js → append-UBM632FK.js} +6 -6
- package/dist/cli-bundle/chunks/{chunk-Z55WX4IQ.js → chunk-2227673O.js} +158 -114
- package/dist/cli-bundle/chunks/chunk-2227673O.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-SJZTPVFT.js → chunk-2ASNV4DH.js} +4 -4
- package/dist/cli-bundle/chunks/{chunk-JVQ7UOYC.js → chunk-2CHRYUXL.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-QE5UFCCO.js → chunk-2KWL5NPW.js} +42 -27
- package/dist/cli-bundle/chunks/chunk-2KWL5NPW.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-ZEATCVAC.js → chunk-36UGKF4O.js} +21 -29
- package/dist/cli-bundle/chunks/chunk-36UGKF4O.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-JZG5ADVE.js → chunk-3AZUFQK6.js} +1103 -963
- package/dist/cli-bundle/chunks/chunk-3AZUFQK6.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-DRPF274X.js → chunk-3LCUASYG.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-JJ4SG243.js → chunk-3Q2HBMTI.js} +2 -2
- package/dist/cli-bundle/chunks/chunk-4BU75MF4.js +87 -0
- package/dist/cli-bundle/chunks/chunk-4BU75MF4.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-GF7EAR22.js → chunk-4NUOWFBT.js} +109 -72
- package/dist/cli-bundle/chunks/chunk-4NUOWFBT.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-TQ6E76BE.js → chunk-55XRYWEG.js} +6 -6
- package/dist/cli-bundle/chunks/{chunk-5IRVSKPS.js → chunk-5GVTFFTC.js} +150 -224
- package/dist/cli-bundle/chunks/chunk-5GVTFFTC.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-CHRNYKNI.js → chunk-5PGBHRY3.js} +41 -26
- package/dist/cli-bundle/chunks/chunk-5PGBHRY3.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-53ARXF2O.js → chunk-66Z3X7ZG.js} +261 -161
- package/dist/cli-bundle/chunks/chunk-66Z3X7ZG.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-A3UNLXNJ.js → chunk-6ITZLD4T.js} +738 -688
- package/dist/cli-bundle/chunks/chunk-6ITZLD4T.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-JTRKME24.js → chunk-6YCYF2AI.js} +262 -162
- package/dist/cli-bundle/chunks/chunk-6YCYF2AI.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-RM6MHL6A.js → chunk-6ZMBJRDJ.js} +580 -467
- package/dist/cli-bundle/chunks/chunk-6ZMBJRDJ.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-RPRW26NG.js → chunk-7MYWF4ZX.js} +110 -73
- package/dist/cli-bundle/chunks/chunk-7MYWF4ZX.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-SNUK7H5J.js → chunk-7NSPKJUS.js} +716 -606
- package/dist/cli-bundle/chunks/chunk-7NSPKJUS.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-KYDYQMNW.js → chunk-7TH5NMVB.js} +95 -53
- package/dist/cli-bundle/chunks/chunk-7TH5NMVB.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-VD3LKZFX.js → chunk-7W4H4K26.js} +739 -689
- package/dist/cli-bundle/chunks/chunk-7W4H4K26.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-IBU2LLWM.js → chunk-A6VOGKBA.js} +6 -6
- package/dist/cli-bundle/chunks/{chunk-MLHX6DN5.js → chunk-AIAIXG7I.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-NIBP3I7A.js → chunk-AJEBCRIY.js} +128 -126
- package/dist/cli-bundle/chunks/chunk-AJEBCRIY.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-VZDBVEZR.js → chunk-B4O5S7I3.js} +79 -57
- package/dist/cli-bundle/chunks/{chunk-VZDBVEZR.js.map → chunk-B4O5S7I3.js.map} +2 -2
- package/dist/cli-bundle/chunks/{chunk-5ABGFWR4.js → chunk-BTX5MIQF.js} +2 -2
- package/dist/cli-bundle/chunks/chunk-BVZZN2LH.js +809 -0
- package/dist/cli-bundle/chunks/chunk-BVZZN2LH.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-3JWQCLR5.js → chunk-CYBDUHNO.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-WFJZDUM7.js → chunk-CZPVDLD2.js} +4 -4
- package/dist/cli-bundle/chunks/{chunk-FDEVKXC4.js → chunk-EMPGXBUF.js} +22 -30
- package/dist/cli-bundle/chunks/chunk-EMPGXBUF.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-HUYYMTGW.js → chunk-EUKTMRN3.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-EVWYAG46.js → chunk-FFOQHGNH.js} +6 -6
- package/dist/cli-bundle/chunks/{chunk-IF4ERU6A.js → chunk-GFMSLORL.js} +6 -6
- package/dist/cli-bundle/chunks/{chunk-IZQOJR2B.js → chunk-GRRG3MCT.js} +198 -189
- package/dist/cli-bundle/chunks/chunk-GRRG3MCT.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-IDYCAK35.js → chunk-H4GRLYJS.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-VMY7MZEM.js → chunk-HQTPRV4D.js} +6 -6
- package/dist/cli-bundle/chunks/{chunk-CY5IJMUM.js → chunk-I66WE2HE.js} +712 -602
- package/dist/cli-bundle/chunks/chunk-I66WE2HE.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-ZFIEEDTJ.js → chunk-IEEJQCZ4.js} +509 -363
- package/dist/cli-bundle/chunks/chunk-IEEJQCZ4.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-DU66JUGT.js → chunk-IG5JYZGU.js} +488 -420
- package/dist/cli-bundle/chunks/chunk-IG5JYZGU.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-7L6TXOOC.js → chunk-JMK5GCK2.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-LBH7UYKY.js → chunk-JXAUVO6X.js} +258 -169
- package/dist/cli-bundle/chunks/{chunk-LBH7UYKY.js.map → chunk-JXAUVO6X.js.map} +2 -2
- package/dist/cli-bundle/chunks/{chunk-KRASIL6M.js → chunk-K2VYLVX4.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-4YIMPANT.js → chunk-KCO2EAN5.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-T7ZMQI4J.js → chunk-KIYCOJ63.js} +198 -189
- package/dist/cli-bundle/chunks/chunk-KIYCOJ63.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-D6USKAMA.js → chunk-KLXF7NCC.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-V3KLX7U7.js → chunk-KN3URLKS.js} +510 -364
- package/dist/cli-bundle/chunks/chunk-KN3URLKS.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-OB3RJV5F.js → chunk-LRKMWUUV.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-74PUWBGN.js → chunk-LTRAF2D7.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-5T6WPLRO.js → chunk-MNBPX5JS.js} +394 -354
- package/dist/cli-bundle/chunks/chunk-MNBPX5JS.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-4TXTVZL3.js → chunk-MRD4T5LF.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-E2Q2ULMR.js → chunk-N2JSWVWG.js} +4 -4
- package/dist/cli-bundle/chunks/{chunk-7WDETKGP.js → chunk-N3QCJS4M.js} +1105 -965
- package/dist/cli-bundle/chunks/chunk-N3QCJS4M.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-KGQ3W65B.js → chunk-NRZS637N.js} +258 -169
- package/dist/cli-bundle/chunks/chunk-NRZS637N.js.map +1 -0
- package/dist/cli-bundle/chunks/chunk-OTUJZKGI.js +799 -0
- package/dist/cli-bundle/chunks/chunk-OTUJZKGI.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-ZIE6WXJ2.js → chunk-Q6K2OACU.js} +153 -90
- package/dist/cli-bundle/chunks/chunk-Q6K2OACU.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-K46GQ265.js → chunk-Q6NXOHS6.js} +489 -421
- package/dist/cli-bundle/chunks/chunk-Q6NXOHS6.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-7RIJGN4R.js → chunk-QH3FSKRJ.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-UB3V5WUI.js → chunk-RM37OPYK.js} +394 -354
- package/dist/cli-bundle/chunks/chunk-RM37OPYK.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-OUQ5JEFM.js → chunk-S62UANU7.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-NO6Y6FB2.js → chunk-SPM2XLWI.js} +37 -28
- package/dist/cli-bundle/chunks/chunk-SPM2XLWI.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-DORJSBGJ.js → chunk-SYNKD3ZG.js} +127 -125
- package/dist/cli-bundle/chunks/chunk-SYNKD3ZG.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-6YRAMXRS.js → chunk-SYVUU7EK.js} +581 -468
- package/dist/cli-bundle/chunks/chunk-SYVUU7EK.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-D5LYZVGB.js → chunk-TPOFWBMY.js} +95 -53
- package/dist/cli-bundle/chunks/chunk-TPOFWBMY.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-IHXXUIXS.js → chunk-TTHCEV5Q.js} +92 -77
- package/dist/cli-bundle/chunks/chunk-TTHCEV5Q.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-DLDCPF5X.js → chunk-U2BEEM2X.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-Z5BM2FKQ.js → chunk-UGLU6Q2I.js} +91 -76
- package/dist/cli-bundle/chunks/chunk-UGLU6Q2I.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-73PTKMAE.js → chunk-UT73HUPC.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-F7G53BOA.js → chunk-UTSH5GWX.js} +4 -4
- package/dist/cli-bundle/chunks/{chunk-AWN4PPH5.js → chunk-UWKEJMZU.js} +157 -113
- package/dist/cli-bundle/chunks/chunk-UWKEJMZU.js.map +7 -0
- package/dist/cli-bundle/chunks/chunk-VY3VQ22F.js +84 -0
- package/dist/cli-bundle/chunks/chunk-VY3VQ22F.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-KTMMTOIP.js → chunk-W47SML5B.js} +152 -89
- package/dist/cli-bundle/chunks/chunk-W47SML5B.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-UFKNF23C.js → chunk-WJAMWAHZ.js} +157 -118
- package/dist/cli-bundle/chunks/chunk-WJAMWAHZ.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-HIBK6H4S.js → chunk-XCHUVHKU.js} +685 -544
- package/dist/cli-bundle/chunks/chunk-XCHUVHKU.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-DJDXAU74.js → chunk-XEWQKDYZ.js} +685 -544
- package/dist/cli-bundle/chunks/chunk-XEWQKDYZ.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-BOWQWXLI.js → chunk-XTHQWXVC.js} +158 -119
- package/dist/cli-bundle/chunks/chunk-XTHQWXVC.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-6T5ZIWBS.js → chunk-XWGEMNBR.js} +150 -224
- package/dist/cli-bundle/chunks/chunk-XWGEMNBR.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-JIP67N2K.js → chunk-Y4NRKBFW.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-WTRUDJ3R.js → chunk-YLZZ6T54.js} +38 -29
- package/dist/cli-bundle/chunks/chunk-YLZZ6T54.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-FBZ5XAAF.js → chunk-YPKFV2JR.js} +6 -6
- package/dist/cli-bundle/chunks/{chunk-OKQ22KTH.js → chunk-Z4DGFQDH.js} +80 -58
- package/dist/cli-bundle/chunks/{chunk-OKQ22KTH.js.map → chunk-Z4DGFQDH.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-BN3CWK6G.js → chunk-ZNHEYCDD.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-YEDFE4DC.js → chunk-ZNT7KEWE.js} +2 -2
- package/dist/cli-bundle/chunks/{claim-HMCLSLUE.js → claim-SENTPZBN.js} +8 -8
- package/dist/cli-bundle/chunks/{claim-6NINZYB3.js → claim-Z7MEQCBT.js} +8 -8
- package/dist/cli-bundle/chunks/{close-OP3LK7Z2.js → close-424MX4CU.js} +7 -7
- package/dist/cli-bundle/chunks/close-YCWQQPDS.js +14 -0
- package/dist/cli-bundle/chunks/{close-many-CXJBOWWY.js → close-many-2IV4J2TR.js} +103 -82
- package/dist/cli-bundle/chunks/close-many-2IV4J2TR.js.map +1 -0
- package/dist/cli-bundle/chunks/{close-many-BFMP6HHK.js → close-many-SWY34BII.js} +102 -81
- package/dist/cli-bundle/chunks/close-many-SWY34BII.js.map +7 -0
- package/dist/cli-bundle/chunks/{comments-ETHABIY6.js → comments-4FGNTSNV.js} +8 -8
- package/dist/cli-bundle/chunks/{comments-MU2WMBUY.js → comments-7YS5MY5X.js} +8 -8
- package/dist/cli-bundle/chunks/config-BZJKK7FZ.js +1062 -0
- package/dist/cli-bundle/chunks/config-BZJKK7FZ.js.map +1 -0
- package/dist/cli-bundle/chunks/config-G74GISC4.js +1072 -0
- package/dist/cli-bundle/chunks/config-G74GISC4.js.map +7 -0
- package/dist/cli-bundle/chunks/{context-7ZEZV3BV.js → context-LHVKJSPJ.js} +12 -12
- package/dist/cli-bundle/chunks/{context-XDI4DKKT.js → context-ZQY54JNS.js} +12 -12
- package/dist/cli-bundle/chunks/{contracts-SMOAN5NF.js → contracts-CP2EZJC7.js} +320 -199
- package/dist/cli-bundle/chunks/contracts-CP2EZJC7.js.map +7 -0
- package/dist/cli-bundle/chunks/{contracts-KP4QAGVW.js → contracts-FIZLMP7O.js} +321 -200
- package/dist/cli-bundle/chunks/contracts-FIZLMP7O.js.map +1 -0
- package/dist/cli-bundle/chunks/{copy-JJ3KOQW2.js → copy-GYNQQPW2.js} +5 -5
- package/dist/cli-bundle/chunks/{copy-CWM6SBY6.js → copy-TLW7JTQT.js} +5 -5
- package/dist/cli-bundle/chunks/{create-J5Q2ELZT.js → create-VSKYSOCD.js} +12 -12
- package/dist/cli-bundle/chunks/create-XTMAPS7I.js +28 -0
- package/dist/cli-bundle/chunks/{delete-2GZLQEUQ.js → delete-4W5JYCEG.js} +5 -5
- package/dist/cli-bundle/chunks/{delete-OOQS4KVD.js → delete-ANTOTI2I.js} +5 -5
- package/dist/cli-bundle/chunks/{deps-IF4IGL4R.js → deps-HPPE6MJN.js} +5 -5
- package/dist/cli-bundle/chunks/{deps-ZVGGCRR6.js → deps-ZQZN54EZ.js} +5 -5
- package/dist/cli-bundle/chunks/{docs-NFTBCQQC.js → docs-RPOVFMP3.js} +7 -7
- package/dist/cli-bundle/chunks/{docs-2TIFR62T.js → docs-XJNYBJGE.js} +7 -7
- package/dist/cli-bundle/chunks/{eval-2F6EH4XN.js → eval-DM6JBZTS.js} +10 -10
- package/dist/cli-bundle/chunks/{eval-PFKXQR3B.js → eval-RFBI5FGS.js} +10 -10
- package/dist/cli-bundle/chunks/{extension-GMVOIP4O.js → extension-B3YY4WY5.js} +11 -10
- package/dist/cli-bundle/chunks/{extension-3LRYX7SW.js → extension-TTSEFQTS.js} +11 -10
- package/dist/cli-bundle/chunks/{files-DF3HO6XK.js → files-5D65CHGE.js} +7 -7
- package/dist/cli-bundle/chunks/{files-T5ODMETM.js → files-GPIG77EN.js} +7 -7
- package/dist/cli-bundle/chunks/{focus-MY5ARIEK.js → focus-C3PEJV2C.js} +6 -6
- package/dist/cli-bundle/chunks/{focus-DLXKK4AH.js → focus-ZHN7WIGX.js} +6 -6
- package/dist/cli-bundle/chunks/{gc-MDGRR2SU.js → gc-D4JQ6OWN.js} +3 -3
- package/dist/cli-bundle/chunks/{gc-FULIVYR4.js → gc-VZIXDL32.js} +3 -3
- package/dist/cli-bundle/chunks/{get-VYPIICPC.js → get-GIBRUUOP.js} +121 -81
- package/dist/cli-bundle/chunks/get-GIBRUUOP.js.map +1 -0
- package/dist/cli-bundle/chunks/{get-AWK324RS.js → get-IOVAN6RU.js} +120 -80
- package/dist/cli-bundle/chunks/get-IOVAN6RU.js.map +7 -0
- package/dist/cli-bundle/chunks/{health-Q66C43GN.js → health-L2U3AFKV.js} +437 -264
- package/dist/cli-bundle/chunks/health-L2U3AFKV.js.map +1 -0
- package/dist/cli-bundle/chunks/{health-FBCVZGSX.js → health-MM7AWXYF.js} +436 -263
- package/dist/cli-bundle/chunks/health-MM7AWXYF.js.map +7 -0
- package/dist/cli-bundle/chunks/history-DD7L7BNL.js +18 -0
- package/dist/cli-bundle/chunks/{history-X4OSES6K.js → history-IL7XCEX2.js} +8 -8
- package/dist/cli-bundle/chunks/{history-compact-2GHT32UX.js → history-compact-HALOTOU7.js} +214 -135
- package/dist/cli-bundle/chunks/history-compact-HALOTOU7.js.map +1 -0
- package/dist/cli-bundle/chunks/{history-compact-WLCQEKXS.js → history-compact-MV25P7DM.js} +213 -134
- package/dist/cli-bundle/chunks/history-compact-MV25P7DM.js.map +7 -0
- package/dist/cli-bundle/chunks/history-redact-IX4YEWMY.js +19 -0
- package/dist/cli-bundle/chunks/{history-redact-45YW65BK.js → history-redact-VYCWQFK7.js} +9 -9
- package/dist/cli-bundle/chunks/{history-repair-FY75IC26.js → history-repair-44MODPQF.js} +124 -84
- package/dist/cli-bundle/chunks/history-repair-44MODPQF.js.map +1 -0
- package/dist/cli-bundle/chunks/{history-repair-GABSDSVD.js → history-repair-CPNAOCNF.js} +123 -83
- package/dist/cli-bundle/chunks/history-repair-CPNAOCNF.js.map +7 -0
- package/dist/cli-bundle/chunks/{init-KO7CGIRQ.js → init-F27NHENZ.js} +12 -11
- package/dist/cli-bundle/chunks/init-HHVQQP6C.js +22 -0
- package/dist/cli-bundle/chunks/{learnings-LHZT5BHW.js → learnings-HJVDQIGY.js} +8 -8
- package/dist/cli-bundle/chunks/{learnings-3F7YLI45.js → learnings-XSFSUUWK.js} +8 -8
- package/dist/cli-bundle/chunks/{list-Y6AU5BJS.js → list-HPMEKCAA.js} +8 -8
- package/dist/cli-bundle/chunks/{list-ROT7JF62.js → list-VMPWTURB.js} +8 -8
- package/dist/cli-bundle/chunks/{next-66BJB4N2.js → next-ETXF2ZCN.js} +59 -37
- package/dist/cli-bundle/chunks/next-ETXF2ZCN.js.map +7 -0
- package/dist/cli-bundle/chunks/{next-N5MWJTBY.js → next-QM6YJIIS.js} +60 -38
- package/dist/cli-bundle/chunks/next-QM6YJIIS.js.map +1 -0
- package/dist/cli-bundle/chunks/{notes-FW6YFLND.js → notes-GDZIKGR6.js} +8 -8
- package/dist/cli-bundle/chunks/{notes-EVJZ3VAB.js → notes-WDDBPC4D.js} +8 -8
- package/dist/cli-bundle/chunks/{plan-ZHKZ7JVF.js → plan-BGDR73Z6.js} +373 -279
- package/dist/cli-bundle/chunks/plan-BGDR73Z6.js.map +1 -0
- package/dist/cli-bundle/chunks/{plan-DQ7G4EDC.js → plan-C5IMM335.js} +372 -278
- package/dist/cli-bundle/chunks/plan-C5IMM335.js.map +7 -0
- package/dist/cli-bundle/chunks/{profile-CHAW6SEA.js → profile-CCOKZ2IQ.js} +9 -9
- package/dist/cli-bundle/chunks/{profile-UPZGCDOG.js → profile-HUCENIEQ.js} +9 -9
- package/dist/cli-bundle/chunks/{register-list-query-Y2VRHPCL.js → register-list-query-ROSNIL52.js} +80 -83
- package/dist/cli-bundle/chunks/register-list-query-ROSNIL52.js.map +1 -0
- package/dist/cli-bundle/chunks/{register-list-query-KY6Z6WV7.js → register-list-query-XN4ZRHSV.js} +79 -82
- package/dist/cli-bundle/chunks/register-list-query-XN4ZRHSV.js.map +7 -0
- package/dist/cli-bundle/chunks/{register-mutation-PCARIGZS.js → register-mutation-CFSB2MS3.js} +406 -385
- package/dist/cli-bundle/chunks/register-mutation-CFSB2MS3.js.map +1 -0
- package/dist/cli-bundle/chunks/{register-mutation-N6AYSKPM.js → register-mutation-KRLAHEL2.js} +405 -384
- package/dist/cli-bundle/chunks/register-mutation-KRLAHEL2.js.map +7 -0
- package/dist/cli-bundle/chunks/{register-operations-L6CYTOIH.js → register-operations-4PASGJDB.js} +112 -93
- package/dist/cli-bundle/chunks/register-operations-4PASGJDB.js.map +7 -0
- package/dist/cli-bundle/chunks/{register-operations-YAT6FUUB.js → register-operations-MBN4KGUM.js} +113 -94
- package/dist/cli-bundle/chunks/register-operations-MBN4KGUM.js.map +1 -0
- package/dist/cli-bundle/chunks/{register-setup-N7UGXYJC.js → register-setup-VIAWYFP5.js} +129 -104
- package/dist/cli-bundle/chunks/register-setup-VIAWYFP5.js.map +1 -0
- package/dist/cli-bundle/chunks/{register-setup-MPANILQF.js → register-setup-ZCGKHDKL.js} +128 -103
- package/dist/cli-bundle/chunks/register-setup-ZCGKHDKL.js.map +7 -0
- package/dist/cli-bundle/chunks/{restore-DKMCLPI5.js → restore-4CBWUMCX.js} +9 -9
- package/dist/cli-bundle/chunks/restore-5UEAGG3W.js +17 -0
- package/dist/cli-bundle/chunks/{scheduling-shortcuts-3F4QUEDH.js → scheduling-shortcuts-6VFKNKCM.js} +12 -12
- package/dist/cli-bundle/chunks/{scheduling-shortcuts-BNZLQK36.js → scheduling-shortcuts-ERHCVTEM.js} +12 -12
- package/dist/cli-bundle/chunks/{schema-OLT6LVKH.js → schema-TDGK6N3I.js} +7 -7
- package/dist/cli-bundle/chunks/{schema-XJXKJQF5.js → schema-UE5KKAUX.js} +7 -7
- package/dist/cli-bundle/chunks/{search-KP6H7COV.js → search-FP7MEU4S.js} +10 -10
- package/dist/cli-bundle/chunks/{search-CX5UMV4H.js → search-K4CFLQ5S.js} +10 -10
- package/dist/cli-bundle/chunks/{stats-QZUG6MX5.js → stats-NJJCALEZ.js} +6 -6
- package/dist/cli-bundle/chunks/{stats-7XW4OEMK.js → stats-XT6QRKQY.js} +6 -6
- package/dist/cli-bundle/chunks/{telemetry-DIFPXCAT.js → telemetry-5SQ5UDXC.js} +84 -70
- package/dist/cli-bundle/chunks/telemetry-5SQ5UDXC.js.map +7 -0
- package/dist/cli-bundle/chunks/{telemetry-WTYFUPRL.js → telemetry-HVXFZA2U.js} +85 -71
- package/dist/cli-bundle/chunks/telemetry-HVXFZA2U.js.map +1 -0
- package/dist/cli-bundle/chunks/{test-QNDXZQCW.js → test-UFSJ5YIO.js} +15 -14
- package/dist/cli-bundle/chunks/{test-HU2BS7EY.js → test-YCDAUBWF.js} +15 -14
- package/dist/cli-bundle/chunks/test-all-2BWKY3GQ.js +427 -0
- package/dist/cli-bundle/chunks/test-all-2BWKY3GQ.js.map +1 -0
- package/dist/cli-bundle/chunks/test-all-PM7UYN42.js +430 -0
- package/dist/cli-bundle/chunks/test-all-PM7UYN42.js.map +7 -0
- package/dist/cli-bundle/chunks/{test-runs-CA6K32RD.js → test-runs-FK5E75AA.js} +185 -147
- package/dist/cli-bundle/chunks/test-runs-FK5E75AA.js.map +1 -0
- package/dist/cli-bundle/chunks/{test-runs-LANLLPVO.js → test-runs-H4TGWGRN.js} +184 -146
- package/dist/cli-bundle/chunks/test-runs-H4TGWGRN.js.map +7 -0
- package/dist/cli-bundle/chunks/update-MTCFES6X.js +24 -0
- package/dist/cli-bundle/chunks/{update-DJKWLBWJ.js → update-Y5WQVT5O.js} +15 -15
- package/dist/cli-bundle/chunks/{update-many-LU3SCNK5.js → update-many-6YAYYRLE.js} +83 -68
- package/dist/cli-bundle/chunks/{update-many-LU3SCNK5.js.map → update-many-6YAYYRLE.js.map} +2 -2
- package/dist/cli-bundle/chunks/{update-many-VW5DGF3S.js → update-many-JTKKSA7Y.js} +84 -69
- package/dist/cli-bundle/chunks/{update-many-VW5DGF3S.js.map → update-many-JTKKSA7Y.js.map} +1 -1
- package/dist/cli-bundle/chunks/{upgrade-ICXY244R.js → upgrade-DTAHZ236.js} +11 -10
- package/dist/cli-bundle/chunks/{upgrade-ICXY244R.js.map → upgrade-DTAHZ236.js.map} +1 -1
- package/dist/cli-bundle/chunks/{upgrade-77FRUAXN.js → upgrade-JUDU7YL4.js} +13 -12
- package/dist/cli-bundle/chunks/{upgrade-77FRUAXN.js.map → upgrade-JUDU7YL4.js.map} +1 -1
- package/dist/cli-bundle/chunks/{validate-2G566PKQ.js → validate-732RWS5W.js} +440 -319
- package/dist/cli-bundle/chunks/validate-732RWS5W.js.map +7 -0
- package/dist/cli-bundle/chunks/{validate-BDPVXHHH.js → validate-W7H5TEDC.js} +441 -320
- package/dist/cli-bundle/chunks/validate-W7H5TEDC.js.map +1 -0
- package/dist/cli-bundle/main.js +986 -1500
- package/dist/cli-bundle/main.js.map +4 -4
- package/dist/core/config/nested-settings.js +89 -67
- package/dist/core/config/nested-settings.js.map +1 -1
- package/dist/core/extensions/activation-summary-markdown.js +23 -12
- package/dist/core/extensions/activation-summary-markdown.js.map +1 -1
- package/dist/core/extensions/extension-policy.d.ts +18 -3
- package/dist/core/extensions/extension-policy.js +116 -106
- package/dist/core/extensions/extension-policy.js.map +1 -1
- package/dist/core/extensions/loader.js +310 -232
- package/dist/core/extensions/loader.js.map +1 -1
- package/dist/core/governance/metadata-coverage.js +20 -28
- package/dist/core/governance/metadata-coverage.js.map +1 -1
- package/dist/core/history/drift-scan.js +93 -81
- package/dist/core/history/drift-scan.js.map +1 -1
- package/dist/core/item/item-format.js +523 -410
- package/dist/core/item/item-format.js.map +1 -1
- package/dist/core/item/item-type-definition.js +14 -14
- package/dist/core/item/item-type-definition.js.map +1 -1
- package/dist/core/item/type-registry.js +87 -82
- package/dist/core/item/type-registry.js.map +1 -1
- package/dist/core/output/mutation-projection.js +42 -26
- package/dist/core/output/mutation-projection.js.map +1 -1
- package/dist/core/schema/runtime-schema.js +34 -28
- package/dist/core/schema/runtime-schema.js.map +1 -1
- package/dist/core/search/semantic-defaults.js +64 -37
- package/dist/core/search/semantic-defaults.js.map +1 -1
- package/dist/core/search/vector-stores.js +32 -17
- package/dist/core/search/vector-stores.js.map +1 -1
- package/dist/core/sentry/helpers.js +31 -28
- package/dist/core/sentry/helpers.js.map +1 -1
- package/dist/core/sentry/instrument.js +54 -43
- package/dist/core/sentry/instrument.js.map +1 -1
- package/dist/core/store/front-matter-cache.js +239 -153
- package/dist/core/store/front-matter-cache.js.map +1 -1
- package/dist/core/store/item-store.js +33 -26
- package/dist/core/store/item-store.js.map +1 -1
- package/dist/core/store/settings.js +247 -203
- package/dist/core/store/settings.js.map +1 -1
- package/dist/core/test/background-runs.js +189 -160
- package/dist/core/test/background-runs.js.map +1 -1
- package/dist/mcp/server.js +387 -367
- package/dist/mcp/server.js.map +1 -1
- package/dist/sdk/cli-contracts/flag-contracts.js +111 -180
- package/dist/sdk/cli-contracts/flag-contracts.js.map +1 -1
- package/dist/sdk/cli-contracts/tool-schema.js +76 -45
- package/dist/sdk/cli-contracts/tool-schema.js.map +1 -1
- package/dist/sdk/compose.d.ts +4 -1
- package/dist/sdk/compose.js +181 -115
- package/dist/sdk/compose.js.map +1 -1
- package/docs/RELEASING.md +2 -3
- package/package.json +2 -2
- package/packages/pm-beads/extensions/beads/runtime.ts +240 -167
- package/packages/pm-guide-shell/extensions/guide-shell/runtime.ts +65 -58
- package/packages/pm-todos/extensions/todos/runtime.ts +65 -42
- package/dist/cli-bundle/chunks/activity-EJBMXUBH.js +0 -16
- package/dist/cli-bundle/chunks/aggregate-MOC4TR2G.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-53ARXF2O.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-5IRVSKPS.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-5T6WPLRO.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-6T5ZIWBS.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-6YRAMXRS.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-7WDETKGP.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-A3UNLXNJ.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-AWN4PPH5.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-BOWQWXLI.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-C2KCIZKZ.js +0 -115
- package/dist/cli-bundle/chunks/chunk-C2KCIZKZ.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-CHRNYKNI.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-CY5IJMUM.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-D5LYZVGB.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-DJDXAU74.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-DORJSBGJ.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-DU66JUGT.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-F6VH3LFC.js +0 -118
- package/dist/cli-bundle/chunks/chunk-F6VH3LFC.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-FDEVKXC4.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-GF7EAR22.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-HIBK6H4S.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-IHXXUIXS.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-ISEKN64V.js +0 -35
- package/dist/cli-bundle/chunks/chunk-ISEKN64V.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-IZQOJR2B.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-JTRKME24.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-JZG5ADVE.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-K46GQ265.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-KGQ3W65B.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-KTMMTOIP.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-KYDYQMNW.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-NIBP3I7A.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-NO6Y6FB2.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-QE5UFCCO.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-RM6MHL6A.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-RPRW26NG.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-SNUK7H5J.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-T7ZMQI4J.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-UB3V5WUI.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-UFKNF23C.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-V3KLX7U7.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-VD3LKZFX.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-W2VMLL5S.js +0 -32
- package/dist/cli-bundle/chunks/chunk-W2VMLL5S.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-WTRUDJ3R.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-Z55WX4IQ.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-Z5BM2FKQ.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-ZEATCVAC.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-ZFIEEDTJ.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-ZIE6WXJ2.js.map +0 -1
- package/dist/cli-bundle/chunks/close-37KEHLYM.js +0 -14
- package/dist/cli-bundle/chunks/close-many-BFMP6HHK.js.map +0 -7
- package/dist/cli-bundle/chunks/close-many-CXJBOWWY.js.map +0 -1
- package/dist/cli-bundle/chunks/config-FIXJZEQK.js +0 -1541
- package/dist/cli-bundle/chunks/config-FIXJZEQK.js.map +0 -7
- package/dist/cli-bundle/chunks/config-X3ZVCUUG.js +0 -1531
- package/dist/cli-bundle/chunks/config-X3ZVCUUG.js.map +0 -1
- package/dist/cli-bundle/chunks/contracts-KP4QAGVW.js.map +0 -1
- package/dist/cli-bundle/chunks/contracts-SMOAN5NF.js.map +0 -7
- package/dist/cli-bundle/chunks/create-DFMNBKBS.js +0 -28
- package/dist/cli-bundle/chunks/get-AWK324RS.js.map +0 -7
- package/dist/cli-bundle/chunks/get-VYPIICPC.js.map +0 -1
- package/dist/cli-bundle/chunks/health-FBCVZGSX.js.map +0 -7
- package/dist/cli-bundle/chunks/health-Q66C43GN.js.map +0 -1
- package/dist/cli-bundle/chunks/history-5XUSLAJA.js +0 -18
- package/dist/cli-bundle/chunks/history-compact-2GHT32UX.js.map +0 -1
- package/dist/cli-bundle/chunks/history-compact-WLCQEKXS.js.map +0 -7
- package/dist/cli-bundle/chunks/history-redact-BVHWDXPR.js +0 -19
- package/dist/cli-bundle/chunks/history-repair-FY75IC26.js.map +0 -1
- package/dist/cli-bundle/chunks/history-repair-GABSDSVD.js.map +0 -7
- package/dist/cli-bundle/chunks/init-TRYJELH4.js +0 -21
- package/dist/cli-bundle/chunks/next-66BJB4N2.js.map +0 -7
- package/dist/cli-bundle/chunks/next-N5MWJTBY.js.map +0 -1
- package/dist/cli-bundle/chunks/plan-DQ7G4EDC.js.map +0 -7
- package/dist/cli-bundle/chunks/plan-ZHKZ7JVF.js.map +0 -1
- package/dist/cli-bundle/chunks/register-list-query-KY6Z6WV7.js.map +0 -7
- package/dist/cli-bundle/chunks/register-list-query-Y2VRHPCL.js.map +0 -1
- package/dist/cli-bundle/chunks/register-mutation-N6AYSKPM.js.map +0 -7
- package/dist/cli-bundle/chunks/register-mutation-PCARIGZS.js.map +0 -1
- package/dist/cli-bundle/chunks/register-operations-L6CYTOIH.js.map +0 -7
- package/dist/cli-bundle/chunks/register-operations-YAT6FUUB.js.map +0 -1
- package/dist/cli-bundle/chunks/register-setup-MPANILQF.js.map +0 -7
- package/dist/cli-bundle/chunks/register-setup-N7UGXYJC.js.map +0 -1
- package/dist/cli-bundle/chunks/restore-IRAKSWIW.js +0 -17
- package/dist/cli-bundle/chunks/telemetry-DIFPXCAT.js.map +0 -7
- package/dist/cli-bundle/chunks/telemetry-WTYFUPRL.js.map +0 -1
- package/dist/cli-bundle/chunks/test-all-PZTBLLQ6.js +0 -360
- package/dist/cli-bundle/chunks/test-all-PZTBLLQ6.js.map +0 -7
- package/dist/cli-bundle/chunks/test-all-XLPI4USF.js +0 -357
- package/dist/cli-bundle/chunks/test-all-XLPI4USF.js.map +0 -1
- package/dist/cli-bundle/chunks/test-runs-CA6K32RD.js.map +0 -1
- package/dist/cli-bundle/chunks/test-runs-LANLLPVO.js.map +0 -7
- package/dist/cli-bundle/chunks/update-UXDLTEOZ.js +0 -24
- package/dist/cli-bundle/chunks/validate-2G566PKQ.js.map +0 -7
- package/dist/cli-bundle/chunks/validate-BDPVXHHH.js.map +0 -1
- /package/dist/cli-bundle/chunks/{activity-MVSEND6D.js.map → activity-CUC4JY3U.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{activity-EJBMXUBH.js.map → activity-WEIEMM73.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{append-KDHT4GHI.js.map → append-H32VOR2Y.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{append-LEDBAM3K.js.map → append-UBM632FK.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-SJZTPVFT.js.map → chunk-2ASNV4DH.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-JVQ7UOYC.js.map → chunk-2CHRYUXL.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-DRPF274X.js.map → chunk-3LCUASYG.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-JJ4SG243.js.map → chunk-3Q2HBMTI.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-TQ6E76BE.js.map → chunk-55XRYWEG.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-IBU2LLWM.js.map → chunk-A6VOGKBA.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-MLHX6DN5.js.map → chunk-AIAIXG7I.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-5ABGFWR4.js.map → chunk-BTX5MIQF.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-3JWQCLR5.js.map → chunk-CYBDUHNO.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-WFJZDUM7.js.map → chunk-CZPVDLD2.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-HUYYMTGW.js.map → chunk-EUKTMRN3.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-EVWYAG46.js.map → chunk-FFOQHGNH.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-IF4ERU6A.js.map → chunk-GFMSLORL.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-IDYCAK35.js.map → chunk-H4GRLYJS.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-VMY7MZEM.js.map → chunk-HQTPRV4D.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-7L6TXOOC.js.map → chunk-JMK5GCK2.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-KRASIL6M.js.map → chunk-K2VYLVX4.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-4YIMPANT.js.map → chunk-KCO2EAN5.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-D6USKAMA.js.map → chunk-KLXF7NCC.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-OB3RJV5F.js.map → chunk-LRKMWUUV.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-74PUWBGN.js.map → chunk-LTRAF2D7.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-4TXTVZL3.js.map → chunk-MRD4T5LF.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-E2Q2ULMR.js.map → chunk-N2JSWVWG.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-7RIJGN4R.js.map → chunk-QH3FSKRJ.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-OUQ5JEFM.js.map → chunk-S62UANU7.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-DLDCPF5X.js.map → chunk-U2BEEM2X.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-73PTKMAE.js.map → chunk-UT73HUPC.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-F7G53BOA.js.map → chunk-UTSH5GWX.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-JIP67N2K.js.map → chunk-Y4NRKBFW.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-FBZ5XAAF.js.map → chunk-YPKFV2JR.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-BN3CWK6G.js.map → chunk-ZNHEYCDD.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-YEDFE4DC.js.map → chunk-ZNT7KEWE.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{claim-HMCLSLUE.js.map → claim-SENTPZBN.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{claim-6NINZYB3.js.map → claim-Z7MEQCBT.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{close-OP3LK7Z2.js.map → close-424MX4CU.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{close-37KEHLYM.js.map → close-YCWQQPDS.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{comments-ETHABIY6.js.map → comments-4FGNTSNV.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{comments-MU2WMBUY.js.map → comments-7YS5MY5X.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{context-7ZEZV3BV.js.map → context-LHVKJSPJ.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{context-XDI4DKKT.js.map → context-ZQY54JNS.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{copy-JJ3KOQW2.js.map → copy-GYNQQPW2.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{copy-CWM6SBY6.js.map → copy-TLW7JTQT.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{create-J5Q2ELZT.js.map → create-VSKYSOCD.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{create-DFMNBKBS.js.map → create-XTMAPS7I.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{delete-2GZLQEUQ.js.map → delete-4W5JYCEG.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{delete-OOQS4KVD.js.map → delete-ANTOTI2I.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{deps-IF4IGL4R.js.map → deps-HPPE6MJN.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{deps-ZVGGCRR6.js.map → deps-ZQZN54EZ.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{docs-NFTBCQQC.js.map → docs-RPOVFMP3.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{docs-2TIFR62T.js.map → docs-XJNYBJGE.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{eval-2F6EH4XN.js.map → eval-DM6JBZTS.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{eval-PFKXQR3B.js.map → eval-RFBI5FGS.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{extension-GMVOIP4O.js.map → extension-B3YY4WY5.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{extension-3LRYX7SW.js.map → extension-TTSEFQTS.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{files-DF3HO6XK.js.map → files-5D65CHGE.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{files-T5ODMETM.js.map → files-GPIG77EN.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{focus-MY5ARIEK.js.map → focus-C3PEJV2C.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{focus-DLXKK4AH.js.map → focus-ZHN7WIGX.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{gc-MDGRR2SU.js.map → gc-D4JQ6OWN.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{gc-FULIVYR4.js.map → gc-VZIXDL32.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{history-5XUSLAJA.js.map → history-DD7L7BNL.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{history-X4OSES6K.js.map → history-IL7XCEX2.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{history-redact-BVHWDXPR.js.map → history-redact-IX4YEWMY.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{history-redact-45YW65BK.js.map → history-redact-VYCWQFK7.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{init-KO7CGIRQ.js.map → init-F27NHENZ.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{init-TRYJELH4.js.map → init-HHVQQP6C.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{learnings-LHZT5BHW.js.map → learnings-HJVDQIGY.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{learnings-3F7YLI45.js.map → learnings-XSFSUUWK.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{list-Y6AU5BJS.js.map → list-HPMEKCAA.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{list-ROT7JF62.js.map → list-VMPWTURB.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{notes-FW6YFLND.js.map → notes-GDZIKGR6.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{notes-EVJZ3VAB.js.map → notes-WDDBPC4D.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{profile-CHAW6SEA.js.map → profile-CCOKZ2IQ.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{profile-UPZGCDOG.js.map → profile-HUCENIEQ.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{restore-DKMCLPI5.js.map → restore-4CBWUMCX.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{restore-IRAKSWIW.js.map → restore-5UEAGG3W.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{scheduling-shortcuts-3F4QUEDH.js.map → scheduling-shortcuts-6VFKNKCM.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{scheduling-shortcuts-BNZLQK36.js.map → scheduling-shortcuts-ERHCVTEM.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{schema-OLT6LVKH.js.map → schema-TDGK6N3I.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{schema-XJXKJQF5.js.map → schema-UE5KKAUX.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{search-KP6H7COV.js.map → search-FP7MEU4S.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{search-CX5UMV4H.js.map → search-K4CFLQ5S.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{stats-QZUG6MX5.js.map → stats-NJJCALEZ.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{stats-7XW4OEMK.js.map → stats-XT6QRKQY.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{test-QNDXZQCW.js.map → test-UFSJ5YIO.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{test-HU2BS7EY.js.map → test-YCDAUBWF.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{update-UXDLTEOZ.js.map → update-MTCFES6X.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{update-DJKWLBWJ.js.map → update-Y5WQVT5O.js.map} +0 -0
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Implements the pm health command surface and its agent-facing runtime behavior.
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="
|
|
7
|
+
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="bd215d4d-d9ea-5734-aa11-b74e1fa0780f")}catch(e){}}();
|
|
8
8
|
import fs from "node:fs/promises";
|
|
9
9
|
import path from "node:path";
|
|
10
10
|
import { resolveItemTypeRegistry } from "../../core/item/type-registry.js";
|
|
@@ -150,6 +150,9 @@ async function listItemDocumentPaths(pmRoot, typeToFolder) {
|
|
|
150
150
|
itemPaths.sort((left, right) => normalizeRelativePath(pmRoot, left).localeCompare(normalizeRelativePath(pmRoot, right)));
|
|
151
151
|
return itemPaths;
|
|
152
152
|
}
|
|
153
|
+
function shouldReportHistoryDirectoryUnreadable(error) {
|
|
154
|
+
return !(typeof error === "object" && error !== null && "code" in error && error.code === "ENOENT");
|
|
155
|
+
}
|
|
153
156
|
async function buildIntegrityCheck(pmRoot, typeToFolder, schema) {
|
|
154
157
|
const itemPaths = await listItemDocumentPaths(pmRoot, typeToFolder);
|
|
155
158
|
const itemUnreadable = [];
|
|
@@ -195,7 +198,7 @@ async function buildIntegrityCheck(pmRoot, typeToFolder, schema) {
|
|
|
195
198
|
}
|
|
196
199
|
catch (error) {
|
|
197
200
|
/* c8 ignore start -- ENOENT/non-ENOENT differentiation requires filesystem fault injection */
|
|
198
|
-
if (
|
|
201
|
+
if (shouldReportHistoryDirectoryUnreadable(error)) {
|
|
199
202
|
historyUnreadable.push("history");
|
|
200
203
|
}
|
|
201
204
|
/* c8 ignore stop */
|
|
@@ -903,6 +906,101 @@ function parseTelemetryQueue(raw) {
|
|
|
903
906
|
maxAttempts,
|
|
904
907
|
};
|
|
905
908
|
}
|
|
909
|
+
function emptyTelemetryQueueSummary() {
|
|
910
|
+
return { validEntries: 0, invalidRows: 0, totalRows: 0, highRetryEntries: 0, maxAttempts: 0 };
|
|
911
|
+
}
|
|
912
|
+
/* c8 ignore start -- telemetry state corruption and otel-failure branches require runtime-coordinated fixture mutation */
|
|
913
|
+
function parseTelemetryRuntimeState(stateRaw) {
|
|
914
|
+
if (!stateRaw || stateRaw.trim().length === 0) {
|
|
915
|
+
return { runtimeState: {}, stateParseFailed: false };
|
|
916
|
+
}
|
|
917
|
+
try {
|
|
918
|
+
const parsed = JSON.parse(stateRaw);
|
|
919
|
+
if (typeof parsed === "object" && parsed !== null && !Array.isArray(parsed)) {
|
|
920
|
+
return { runtimeState: parsed, stateParseFailed: false };
|
|
921
|
+
}
|
|
922
|
+
return { runtimeState: {}, stateParseFailed: true };
|
|
923
|
+
}
|
|
924
|
+
catch {
|
|
925
|
+
return { runtimeState: {}, stateParseFailed: true };
|
|
926
|
+
}
|
|
927
|
+
}
|
|
928
|
+
async function maybeProbeTelemetryEndpoint(settings, checkTelemetry) {
|
|
929
|
+
const endpoint = settings.telemetry.endpoint.trim();
|
|
930
|
+
if (!checkTelemetry || !settings.telemetry.enabled || endpoint.length === 0) {
|
|
931
|
+
return undefined;
|
|
932
|
+
}
|
|
933
|
+
const probe = await probeTelemetryEndpointHealth(endpoint);
|
|
934
|
+
return {
|
|
935
|
+
attempted: true,
|
|
936
|
+
...probe,
|
|
937
|
+
};
|
|
938
|
+
}
|
|
939
|
+
function collectTelemetryQueueWarnings(settings, queueSummary, runtimeState) {
|
|
940
|
+
const warnings = [];
|
|
941
|
+
if (queueSummary.invalidRows > 0) {
|
|
942
|
+
warnings.push(`telemetry_queue_invalid_rows:${queueSummary.invalidRows}`);
|
|
943
|
+
}
|
|
944
|
+
if (!settings.telemetry.enabled || queueSummary.validEntries === 0) {
|
|
945
|
+
return warnings;
|
|
946
|
+
}
|
|
947
|
+
const lastSuccess = runtimeState.last_successful_flush_at;
|
|
948
|
+
const lastFailure = runtimeState.last_failed_flush_at;
|
|
949
|
+
const activeFailure = lastFailure && (!lastSuccess || lastFailure > lastSuccess);
|
|
950
|
+
const neverFlushed = !lastSuccess;
|
|
951
|
+
const highWater = queueSummary.validEntries >= TELEMETRY_QUEUE_HIGH_WATER_MARK;
|
|
952
|
+
if (activeFailure || neverFlushed || highWater) {
|
|
953
|
+
warnings.push(`telemetry_queue_pending:${queueSummary.validEntries}`);
|
|
954
|
+
}
|
|
955
|
+
if (queueSummary.highRetryEntries > 0) {
|
|
956
|
+
warnings.push(`telemetry_queue_high_retries:${queueSummary.highRetryEntries}`);
|
|
957
|
+
}
|
|
958
|
+
return warnings;
|
|
959
|
+
}
|
|
960
|
+
function collectTelemetryEndpointWarnings(endpointProbe) {
|
|
961
|
+
if (!endpointProbe || endpointProbe.ok !== false) {
|
|
962
|
+
return [];
|
|
963
|
+
}
|
|
964
|
+
return typeof endpointProbe.status === "number"
|
|
965
|
+
? [`telemetry_endpoint_probe_http_status:${endpointProbe.status}`]
|
|
966
|
+
: ["telemetry_endpoint_probe_failed"];
|
|
967
|
+
}
|
|
968
|
+
function collectTelemetrySchemaWarnings(endpointProbe) {
|
|
969
|
+
const parsedMaxSchemaVersion = Number.parseInt(endpointProbe?.max_schema_version ?? "", 10);
|
|
970
|
+
if (endpointProbe?.ok === true && Number.isInteger(parsedMaxSchemaVersion) && parsedMaxSchemaVersion > TELEMETRY_SCHEMA_VERSION) {
|
|
971
|
+
return [`telemetry_schema_version_behind:${parsedMaxSchemaVersion}`];
|
|
972
|
+
}
|
|
973
|
+
return [];
|
|
974
|
+
}
|
|
975
|
+
function collectTelemetryOtelWarnings(settings, runtimeState) {
|
|
976
|
+
const pendingOtelSpans = typeof runtimeState.pending_otel_spans === "number" ? runtimeState.pending_otel_spans : 0;
|
|
977
|
+
const lastOtelSuccess = runtimeState.last_otel_success_at;
|
|
978
|
+
const lastOtelFailure = runtimeState.last_otel_failure_at;
|
|
979
|
+
const otelExportFailing = settings.telemetry.enabled &&
|
|
980
|
+
pendingOtelSpans > 0 &&
|
|
981
|
+
Boolean(lastOtelFailure) &&
|
|
982
|
+
// >= so a mixed-outcome batch (success + failure share the same attempt
|
|
983
|
+
// timestamp) still surfaces the warning rather than being masked by the tie.
|
|
984
|
+
(!lastOtelSuccess || lastOtelFailure >= lastOtelSuccess);
|
|
985
|
+
return otelExportFailing ? [`telemetry_otel_export_failing:${pendingOtelSpans}`] : [];
|
|
986
|
+
}
|
|
987
|
+
function buildTelemetryEnvOverrideDetails() {
|
|
988
|
+
return {
|
|
989
|
+
telemetry_disabled: telemetryEnvFlagEnabled("PM_TELEMETRY_DISABLED") || telemetryEnvFlagEnabled("PM_NO_TELEMETRY"),
|
|
990
|
+
pm_no_telemetry: telemetryEnvFlagEnabled("PM_NO_TELEMETRY"),
|
|
991
|
+
telemetry_otel_disabled: telemetryEnvFlagEnabled("PM_TELEMETRY_OTEL_DISABLED"),
|
|
992
|
+
telemetry_inline_flush: telemetryEnvFlagEnabled("PM_TELEMETRY_INLINE_FLUSH"),
|
|
993
|
+
telemetry_source_context: telemetrySourceContextOverride(),
|
|
994
|
+
};
|
|
995
|
+
}
|
|
996
|
+
/* c8 ignore stop */
|
|
997
|
+
function telemetryQueueHasEntries(settings, queueSummary) {
|
|
998
|
+
return settings.telemetry.enabled && queueSummary.validEntries > 0;
|
|
999
|
+
}
|
|
1000
|
+
function isTelemetryQueueDraining(queueHasEntries, warnings) {
|
|
1001
|
+
return (queueHasEntries &&
|
|
1002
|
+
warnings.every((warning) => !warning.startsWith("telemetry_queue_pending:") && !warning.startsWith("telemetry_queue_high_retries:")));
|
|
1003
|
+
}
|
|
906
1004
|
async function probeTelemetryEndpointHealth(endpoint) {
|
|
907
1005
|
let probeUrl = endpoint;
|
|
908
1006
|
try {
|
|
@@ -951,88 +1049,19 @@ async function buildTelemetryCheck(settings, options) {
|
|
|
951
1049
|
const queueRaw = await readFileIfExists(queuePath);
|
|
952
1050
|
const queueExists = queueRaw !== null;
|
|
953
1051
|
const queueSizeBytes = queueRaw ? Buffer.byteLength(queueRaw, "utf8") : 0;
|
|
954
|
-
const queueSummary = queueRaw
|
|
955
|
-
? parseTelemetryQueue(queueRaw)
|
|
956
|
-
: { validEntries: 0, invalidRows: 0, totalRows: 0, highRetryEntries: 0, maxAttempts: 0 };
|
|
1052
|
+
const queueSummary = queueRaw ? parseTelemetryQueue(queueRaw) : emptyTelemetryQueueSummary();
|
|
957
1053
|
const stateRaw = await readFileIfExists(statePath);
|
|
958
|
-
|
|
959
|
-
let stateParseFailed = false;
|
|
960
|
-
/* c8 ignore start -- telemetry state corruption and otel-failure branches require runtime-coordinated fixture mutation */
|
|
961
|
-
if (stateRaw && stateRaw.trim().length > 0) {
|
|
962
|
-
try {
|
|
963
|
-
const parsed = JSON.parse(stateRaw);
|
|
964
|
-
if (typeof parsed === "object" && parsed !== null && !Array.isArray(parsed)) {
|
|
965
|
-
runtimeState = parsed;
|
|
966
|
-
}
|
|
967
|
-
else {
|
|
968
|
-
/* c8 ignore next -- malformed runtime-state payloads are integration-only corruption cases */
|
|
969
|
-
stateParseFailed = true;
|
|
970
|
-
}
|
|
971
|
-
}
|
|
972
|
-
catch {
|
|
973
|
-
stateParseFailed = true;
|
|
974
|
-
}
|
|
975
|
-
}
|
|
1054
|
+
const { runtimeState, stateParseFailed } = parseTelemetryRuntimeState(stateRaw);
|
|
976
1055
|
const endpoint = settings.telemetry.endpoint.trim();
|
|
977
1056
|
const endpointDisplay = normalizeEndpointForDisplay(endpoint);
|
|
978
|
-
|
|
979
|
-
if (options.checkTelemetry && settings.telemetry.enabled && endpoint.length > 0) {
|
|
980
|
-
const probe = await probeTelemetryEndpointHealth(endpoint);
|
|
981
|
-
endpointProbe = {
|
|
982
|
-
attempted: true,
|
|
983
|
-
...probe,
|
|
984
|
-
};
|
|
985
|
-
}
|
|
1057
|
+
const endpointProbe = await maybeProbeTelemetryEndpoint(settings, options.checkTelemetry);
|
|
986
1058
|
const warnings = [];
|
|
987
1059
|
if (stateParseFailed) {
|
|
988
1060
|
warnings.push("telemetry_state_invalid_json");
|
|
989
1061
|
}
|
|
990
|
-
|
|
991
|
-
|
|
992
|
-
}
|
|
993
|
-
const queueHasEntries = settings.telemetry.enabled && queueSummary.validEntries > 0;
|
|
994
|
-
if (queueHasEntries) {
|
|
995
|
-
const lastSuccess = runtimeState.last_successful_flush_at;
|
|
996
|
-
const lastFailure = runtimeState.last_failed_flush_at;
|
|
997
|
-
const activeFailure = lastFailure && (!lastSuccess || lastFailure > lastSuccess);
|
|
998
|
-
const neverFlushed = !lastSuccess;
|
|
999
|
-
const highWater = queueSummary.validEntries >= TELEMETRY_QUEUE_HIGH_WATER_MARK;
|
|
1000
|
-
const highRetries = queueSummary.highRetryEntries > 0;
|
|
1001
|
-
if (activeFailure || neverFlushed || highWater) {
|
|
1002
|
-
warnings.push(`telemetry_queue_pending:${queueSummary.validEntries}`);
|
|
1003
|
-
}
|
|
1004
|
-
if (highRetries) {
|
|
1005
|
-
warnings.push(`telemetry_queue_high_retries:${queueSummary.highRetryEntries}`);
|
|
1006
|
-
}
|
|
1007
|
-
}
|
|
1008
|
-
if (endpointProbe && !endpointProbe.ok) {
|
|
1009
|
-
if (typeof endpointProbe.status === "number") {
|
|
1010
|
-
warnings.push(`telemetry_endpoint_probe_http_status:${endpointProbe.status}`);
|
|
1011
|
-
}
|
|
1012
|
-
else {
|
|
1013
|
-
warnings.push("telemetry_endpoint_probe_failed");
|
|
1014
|
-
}
|
|
1015
|
-
}
|
|
1016
|
-
const parsedMaxSchemaVersion = Number.parseInt(endpointProbe?.max_schema_version ?? "", 10);
|
|
1017
|
-
if (endpointProbe &&
|
|
1018
|
-
endpointProbe.ok &&
|
|
1019
|
-
Number.isInteger(parsedMaxSchemaVersion) &&
|
|
1020
|
-
parsedMaxSchemaVersion > TELEMETRY_SCHEMA_VERSION) {
|
|
1021
|
-
warnings.push(`telemetry_schema_version_behind:${parsedMaxSchemaVersion}`);
|
|
1022
|
-
}
|
|
1062
|
+
warnings.push(...collectTelemetryQueueWarnings(settings, queueSummary, runtimeState), ...collectTelemetryEndpointWarnings(endpointProbe), ...collectTelemetrySchemaWarnings(endpointProbe), ...collectTelemetryOtelWarnings(settings, runtimeState));
|
|
1063
|
+
const queueHasEntries = telemetryQueueHasEntries(settings, queueSummary);
|
|
1023
1064
|
const pendingOtelSpans = typeof runtimeState.pending_otel_spans === "number" ? runtimeState.pending_otel_spans : 0;
|
|
1024
|
-
const lastOtelSuccess = runtimeState.last_otel_success_at;
|
|
1025
|
-
const lastOtelFailure = runtimeState.last_otel_failure_at;
|
|
1026
|
-
const otelExportFailing = settings.telemetry.enabled &&
|
|
1027
|
-
pendingOtelSpans > 0 &&
|
|
1028
|
-
Boolean(lastOtelFailure) &&
|
|
1029
|
-
// >= so a mixed-outcome batch (success + failure share the same attempt
|
|
1030
|
-
// timestamp) still surfaces the warning rather than being masked by the tie.
|
|
1031
|
-
(!lastOtelSuccess || lastOtelFailure >= lastOtelSuccess);
|
|
1032
|
-
if (otelExportFailing) {
|
|
1033
|
-
warnings.push(`telemetry_otel_export_failing:${pendingOtelSpans}`);
|
|
1034
|
-
}
|
|
1035
|
-
/* c8 ignore stop */
|
|
1036
1065
|
return {
|
|
1037
1066
|
check: {
|
|
1038
1067
|
name: "telemetry",
|
|
@@ -1045,8 +1074,7 @@ async function buildTelemetryCheck(settings, options) {
|
|
|
1045
1074
|
queue_path: queuePath,
|
|
1046
1075
|
queue_exists: queueExists,
|
|
1047
1076
|
queue_entries: queueSummary.validEntries,
|
|
1048
|
-
queue_draining: queueHasEntries
|
|
1049
|
-
warnings.every((warning) => !warning.startsWith("telemetry_queue_pending:") && !warning.startsWith("telemetry_queue_high_retries:")),
|
|
1077
|
+
queue_draining: isTelemetryQueueDraining(queueHasEntries, warnings),
|
|
1050
1078
|
queue_invalid_rows: queueSummary.invalidRows,
|
|
1051
1079
|
queue_rows_total: queueSummary.totalRows,
|
|
1052
1080
|
queue_size_bytes: queueSizeBytes,
|
|
@@ -1063,18 +1091,8 @@ async function buildTelemetryCheck(settings, options) {
|
|
|
1063
1091
|
last_otel_success_at: runtimeState.last_otel_success_at ?? null,
|
|
1064
1092
|
last_otel_failure_at: runtimeState.last_otel_failure_at ?? null,
|
|
1065
1093
|
last_otel_failure_error: runtimeState.last_otel_failure_error ?? null,
|
|
1066
|
-
endpoint_probe: endpointProbe ?? {
|
|
1067
|
-
|
|
1068
|
-
},
|
|
1069
|
-
/* c8 ignore start -- env-override combinations are validated through runtime integration suites */
|
|
1070
|
-
env_overrides: {
|
|
1071
|
-
telemetry_disabled: telemetryEnvFlagEnabled("PM_TELEMETRY_DISABLED") || telemetryEnvFlagEnabled("PM_NO_TELEMETRY"),
|
|
1072
|
-
pm_no_telemetry: telemetryEnvFlagEnabled("PM_NO_TELEMETRY"),
|
|
1073
|
-
telemetry_otel_disabled: telemetryEnvFlagEnabled("PM_TELEMETRY_OTEL_DISABLED"),
|
|
1074
|
-
telemetry_inline_flush: telemetryEnvFlagEnabled("PM_TELEMETRY_INLINE_FLUSH"),
|
|
1075
|
-
telemetry_source_context: telemetrySourceContextOverride(),
|
|
1076
|
-
},
|
|
1077
|
-
/* c8 ignore stop */
|
|
1094
|
+
endpoint_probe: endpointProbe ?? { attempted: false },
|
|
1095
|
+
env_overrides: buildTelemetryEnvOverrideDetails(),
|
|
1078
1096
|
},
|
|
1079
1097
|
},
|
|
1080
1098
|
warnings,
|
|
@@ -1165,78 +1183,136 @@ async function buildHistoryDriftCheck(pmRoot, items) {
|
|
|
1165
1183
|
warnings,
|
|
1166
1184
|
};
|
|
1167
1185
|
}
|
|
1168
|
-
|
|
1186
|
+
function buildVectorizationRuntimeSnapshot(settings) {
|
|
1169
1187
|
const runtimeDefaults = resolveSettingsWithSemanticRuntimeDefaults(settings);
|
|
1170
1188
|
const providerResolution = resolveEmbeddingProviders(runtimeDefaults.settings);
|
|
1171
1189
|
const vectorStoreResolution = resolveVectorStores(runtimeDefaults.settings);
|
|
1172
1190
|
const runtimeEmbeddingIdentity = providerResolution.active
|
|
1173
1191
|
? buildVectorizationEmbeddingIdentity(providerResolution.active.name, providerResolution.active.model)
|
|
1174
1192
|
: null;
|
|
1175
|
-
|
|
1176
|
-
|
|
1177
|
-
|
|
1178
|
-
|
|
1193
|
+
return {
|
|
1194
|
+
runtimeDefaults,
|
|
1195
|
+
providerResolution,
|
|
1196
|
+
vectorStoreResolution,
|
|
1197
|
+
runtimeEmbeddingIdentity,
|
|
1198
|
+
semanticRuntimeAvailable: Boolean(providerResolution.active && vectorStoreResolution.active),
|
|
1199
|
+
};
|
|
1200
|
+
}
|
|
1201
|
+
function emptyVectorizationRefreshResult() {
|
|
1202
|
+
return {
|
|
1179
1203
|
refreshed: [],
|
|
1180
1204
|
skipped: [],
|
|
1181
1205
|
warnings: [],
|
|
1182
1206
|
};
|
|
1183
|
-
|
|
1184
|
-
|
|
1185
|
-
|
|
1186
|
-
|
|
1187
|
-
});
|
|
1207
|
+
}
|
|
1208
|
+
async function refreshStaleVectorizationItems(params) {
|
|
1209
|
+
if (!params.refreshPolicy.enabled || !params.snapshot.semanticRuntimeAvailable || params.staleBefore.length === 0) {
|
|
1210
|
+
return emptyVectorizationRefreshResult();
|
|
1188
1211
|
}
|
|
1189
|
-
|
|
1190
|
-
|
|
1191
|
-
|
|
1192
|
-
|
|
1193
|
-
|
|
1194
|
-
|
|
1195
|
-
|
|
1196
|
-
|
|
1197
|
-
|
|
1198
|
-
|
|
1199
|
-
|
|
1200
|
-
|
|
1212
|
+
return refreshSemanticEmbeddingsForMutatedItems(params.pmRoot, params.staleBefore, {
|
|
1213
|
+
settings: params.snapshot.runtimeDefaults.settings,
|
|
1214
|
+
apply_runtime_defaults: false,
|
|
1215
|
+
});
|
|
1216
|
+
}
|
|
1217
|
+
function vectorizationEmbeddingIdentityChanged(params) {
|
|
1218
|
+
return (params.strictVectorizationWarnings &&
|
|
1219
|
+
params.semanticRuntimeAvailable &&
|
|
1220
|
+
Boolean(params.ledgerBefore.embedding &&
|
|
1221
|
+
params.runtimeEmbeddingIdentity &&
|
|
1222
|
+
hasVectorizationEmbeddingIdentityChanged(params.ledgerBefore.embedding, params.runtimeEmbeddingIdentity)));
|
|
1223
|
+
}
|
|
1224
|
+
/* c8 ignore start -- strict-vectorization warning synthesis branches are integration-only policy permutations */
|
|
1225
|
+
function collectVectorizationWarnings(params) {
|
|
1226
|
+
const warningSet = new Set([...params.ledgerBefore.warnings, ...params.ledgerAfter.warnings]);
|
|
1227
|
+
if (params.strictVectorizationWarnings) {
|
|
1228
|
+
for (const warning of params.refreshResult.warnings) {
|
|
1201
1229
|
warningSet.add(warning);
|
|
1202
1230
|
}
|
|
1203
1231
|
}
|
|
1204
|
-
if (embeddingIdentityChanged) {
|
|
1232
|
+
if (params.embeddingIdentityChanged) {
|
|
1205
1233
|
warningSet.add("vectorization_embedding_identity_changed");
|
|
1206
1234
|
}
|
|
1207
|
-
if (strictVectorizationWarnings && semanticRuntimeAvailable && staleAfter.length > 0) {
|
|
1208
|
-
warningSet.add(`vectorization_stale_items_remaining:${staleAfter.length}`);
|
|
1235
|
+
if (params.strictVectorizationWarnings && params.semanticRuntimeAvailable && params.staleAfter.length > 0) {
|
|
1236
|
+
warningSet.add(`vectorization_stale_items_remaining:${params.staleAfter.length}`);
|
|
1237
|
+
}
|
|
1238
|
+
return [...warningSet].sort((left, right) => left.localeCompare(right));
|
|
1239
|
+
}
|
|
1240
|
+
/* c8 ignore stop */
|
|
1241
|
+
function resolveVectorizationRefreshSkippedReason(refreshPolicy, semanticRuntimeAvailable, staleBefore) {
|
|
1242
|
+
if (refreshPolicy.enabled && semanticRuntimeAvailable && staleBefore.length > 0) {
|
|
1243
|
+
return null;
|
|
1244
|
+
}
|
|
1245
|
+
if (!refreshPolicy.enabled) {
|
|
1246
|
+
return "refresh_disabled";
|
|
1209
1247
|
}
|
|
1210
|
-
|
|
1248
|
+
return semanticRuntimeAvailable ? "no_stale_items" : "semantic_runtime_unavailable";
|
|
1249
|
+
}
|
|
1250
|
+
function buildVectorizationProviderDetails(settings, snapshot) {
|
|
1251
|
+
const activeProvider = snapshot.providerResolution.active?.name ?? null;
|
|
1252
|
+
const activeVectorStore = snapshot.vectorStoreResolution.active?.name ?? null;
|
|
1253
|
+
return {
|
|
1254
|
+
provider_active: activeProvider,
|
|
1255
|
+
// GH-244: surface the persisted (possibly empty) configured value and
|
|
1256
|
+
// how the active resolution was sourced, so a config audit can tell
|
|
1257
|
+
// "auto-detected" apart from a genuine misconfiguration when
|
|
1258
|
+
// settings.search.provider / vector_store.adapter are empty strings.
|
|
1259
|
+
provider_configured: typeof settings.search?.provider === "string" ? settings.search.provider : null,
|
|
1260
|
+
provider_source: resolveProviderConfigSource(activeProvider, settings.search?.provider ?? null),
|
|
1261
|
+
vector_store_active: activeVectorStore,
|
|
1262
|
+
vector_store_configured: typeof settings.vector_store?.adapter === "string" ? settings.vector_store.adapter : null,
|
|
1263
|
+
vector_store_source: resolveProviderConfigSource(activeVectorStore, settings.vector_store?.adapter ?? null),
|
|
1264
|
+
};
|
|
1265
|
+
}
|
|
1266
|
+
function buildVectorizationRefreshPolicyDetails(refreshPolicy) {
|
|
1267
|
+
return {
|
|
1268
|
+
enabled: refreshPolicy.enabled,
|
|
1269
|
+
check_only: refreshPolicy.checkOnly,
|
|
1270
|
+
no_refresh: refreshPolicy.noRefresh,
|
|
1271
|
+
refresh_vectors: refreshPolicy.refreshVectors,
|
|
1272
|
+
};
|
|
1273
|
+
}
|
|
1274
|
+
function vectorizationRefreshAttempted(refreshPolicy, semanticRuntimeAvailable, staleBefore) {
|
|
1275
|
+
return refreshPolicy.enabled && staleBefore.length > 0 && semanticRuntimeAvailable;
|
|
1276
|
+
}
|
|
1277
|
+
async function buildVectorizationCheck(pmRoot, settings, items, refreshPolicy, verboseStaleItems) {
|
|
1278
|
+
const snapshot = buildVectorizationRuntimeSnapshot(settings);
|
|
1279
|
+
const ledgerBefore = await readVectorizationStatusLedger(pmRoot);
|
|
1280
|
+
const staleBefore = snapshot.semanticRuntimeAvailable ? collectStaleVectorizationIds(items, ledgerBefore.entries) : [];
|
|
1281
|
+
const refreshResult = await refreshStaleVectorizationItems({ pmRoot, snapshot, refreshPolicy, staleBefore });
|
|
1282
|
+
const ledgerAfter = await readVectorizationStatusLedger(pmRoot);
|
|
1283
|
+
const staleAfter = snapshot.semanticRuntimeAvailable ? collectStaleVectorizationIds(items, ledgerAfter.entries) : [];
|
|
1284
|
+
const strictVectorizationWarnings = !snapshot.runtimeDefaults.auto_ollama_defaults_applied;
|
|
1285
|
+
const embeddingIdentityChanged = vectorizationEmbeddingIdentityChanged({
|
|
1286
|
+
strictVectorizationWarnings,
|
|
1287
|
+
semanticRuntimeAvailable: snapshot.semanticRuntimeAvailable,
|
|
1288
|
+
ledgerBefore,
|
|
1289
|
+
runtimeEmbeddingIdentity: snapshot.runtimeEmbeddingIdentity,
|
|
1290
|
+
});
|
|
1291
|
+
const warnings = collectVectorizationWarnings({
|
|
1292
|
+
ledgerBefore,
|
|
1293
|
+
ledgerAfter,
|
|
1294
|
+
refreshResult,
|
|
1295
|
+
strictVectorizationWarnings,
|
|
1296
|
+
semanticRuntimeAvailable: snapshot.semanticRuntimeAvailable,
|
|
1297
|
+
embeddingIdentityChanged,
|
|
1298
|
+
staleAfter,
|
|
1299
|
+
});
|
|
1211
1300
|
const staleBeforeDetail = selectStaleItemDetail(staleBefore, verboseStaleItems);
|
|
1212
1301
|
const staleAfterDetail = selectStaleItemDetail(staleAfter, verboseStaleItems);
|
|
1302
|
+
const refreshAttempted = vectorizationRefreshAttempted(refreshPolicy, snapshot.semanticRuntimeAvailable, staleBefore);
|
|
1213
1303
|
return {
|
|
1214
1304
|
check: {
|
|
1215
1305
|
name: "vectorization",
|
|
1216
1306
|
status: warnings.length === 0 ? "ok" : "warn",
|
|
1217
1307
|
details: {
|
|
1218
|
-
semantic_runtime_available: semanticRuntimeAvailable,
|
|
1219
|
-
compatibility_mode_auto_defaults: runtimeDefaults.auto_ollama_defaults_applied,
|
|
1220
|
-
auto_ollama_defaults_applied: runtimeDefaults.auto_ollama_defaults_applied,
|
|
1221
|
-
refresh_policy:
|
|
1222
|
-
|
|
1223
|
-
check_only: refreshPolicy.checkOnly,
|
|
1224
|
-
no_refresh: refreshPolicy.noRefresh,
|
|
1225
|
-
refresh_vectors: refreshPolicy.refreshVectors,
|
|
1226
|
-
},
|
|
1227
|
-
provider_active: providerResolution.active?.name ?? null,
|
|
1228
|
-
// GH-244: surface the persisted (possibly empty) configured value and
|
|
1229
|
-
// how the active resolution was sourced, so a config audit can tell
|
|
1230
|
-
// "auto-detected" apart from a genuine misconfiguration when
|
|
1231
|
-
// settings.search.provider / vector_store.adapter are empty strings.
|
|
1232
|
-
provider_configured: typeof settings.search?.provider === "string" ? settings.search.provider : null,
|
|
1233
|
-
provider_source: resolveProviderConfigSource(providerResolution.active?.name ?? null, settings.search?.provider ?? null),
|
|
1234
|
-
vector_store_active: vectorStoreResolution.active?.name ?? null,
|
|
1235
|
-
vector_store_configured: typeof settings.vector_store?.adapter === "string" ? settings.vector_store.adapter : null,
|
|
1236
|
-
vector_store_source: resolveProviderConfigSource(vectorStoreResolution.active?.name ?? null, settings.vector_store?.adapter ?? null),
|
|
1308
|
+
semantic_runtime_available: snapshot.semanticRuntimeAvailable,
|
|
1309
|
+
compatibility_mode_auto_defaults: snapshot.runtimeDefaults.auto_ollama_defaults_applied,
|
|
1310
|
+
auto_ollama_defaults_applied: snapshot.runtimeDefaults.auto_ollama_defaults_applied,
|
|
1311
|
+
refresh_policy: buildVectorizationRefreshPolicyDetails(refreshPolicy),
|
|
1312
|
+
...buildVectorizationProviderDetails(settings, snapshot),
|
|
1237
1313
|
embedding_identity_changed: embeddingIdentityChanged,
|
|
1238
1314
|
embedding_identity_before: ledgerBefore.embedding ?? null,
|
|
1239
|
-
embedding_identity_runtime: runtimeEmbeddingIdentity ?? null,
|
|
1315
|
+
embedding_identity_runtime: snapshot.runtimeEmbeddingIdentity ?? null,
|
|
1240
1316
|
items: items.length,
|
|
1241
1317
|
ledger_entries_before: Object.keys(ledgerBefore.entries).length,
|
|
1242
1318
|
stale_items_detail_mode: verboseStaleItems ? "full" : "summary",
|
|
@@ -1244,14 +1320,8 @@ async function buildVectorizationCheck(pmRoot, settings, items, refreshPolicy, v
|
|
|
1244
1320
|
stale_items_before_total: staleBeforeDetail.total,
|
|
1245
1321
|
stale_items_before: staleBeforeDetail.values,
|
|
1246
1322
|
stale_items_before_truncated: staleBeforeDetail.truncated,
|
|
1247
|
-
refresh_attempted:
|
|
1248
|
-
refresh_skipped_reason: refreshPolicy.
|
|
1249
|
-
? null
|
|
1250
|
-
: !refreshPolicy.enabled
|
|
1251
|
-
? "refresh_disabled"
|
|
1252
|
-
: !semanticRuntimeAvailable
|
|
1253
|
-
? "semantic_runtime_unavailable"
|
|
1254
|
-
: "no_stale_items",
|
|
1323
|
+
refresh_attempted: refreshAttempted,
|
|
1324
|
+
refresh_skipped_reason: resolveVectorizationRefreshSkippedReason(refreshPolicy, snapshot.semanticRuntimeAvailable, staleBefore),
|
|
1255
1325
|
refresh_result: refreshResult,
|
|
1256
1326
|
ledger_entries_after: Object.keys(ledgerAfter.entries).length,
|
|
1257
1327
|
stale_items_after_total: staleAfterDetail.total,
|
|
@@ -1261,7 +1331,6 @@ async function buildVectorizationCheck(pmRoot, settings, items, refreshPolicy, v
|
|
|
1261
1331
|
},
|
|
1262
1332
|
warnings,
|
|
1263
1333
|
};
|
|
1264
|
-
/* c8 ignore stop */
|
|
1265
1334
|
}
|
|
1266
1335
|
function validateSettingsValues(settings) {
|
|
1267
1336
|
const warnings = [];
|
|
@@ -1290,20 +1359,7 @@ function resolveVectorRefreshPolicy(options) {
|
|
|
1290
1359
|
refreshVectors,
|
|
1291
1360
|
};
|
|
1292
1361
|
}
|
|
1293
|
-
|
|
1294
|
-
* Implements run health for the public runtime surface of this module.
|
|
1295
|
-
*/
|
|
1296
|
-
export async function runHealth(global, options = {}) {
|
|
1297
|
-
const pmRoot = resolvePmRoot(process.cwd(), global.path);
|
|
1298
|
-
const settingsPath = getSettingsPath(pmRoot);
|
|
1299
|
-
if (!(await pathExists(settingsPath))) {
|
|
1300
|
-
throw new PmCliError(`Tracker is not initialized at ${pmRoot}. Run pm init first.`, EXIT_CODE.NOT_FOUND);
|
|
1301
|
-
}
|
|
1302
|
-
const { settings, warnings: settingsReadWarnings } = await readSettingsWithMetadata(pmRoot);
|
|
1303
|
-
const normalizedSettingsReadWarnings = [...new Set(settingsReadWarnings)];
|
|
1304
|
-
const typeRegistry = resolveItemTypeRegistry(settings, getActiveExtensionRegistrations());
|
|
1305
|
-
const strictDirectories = options.strictDirectories === true;
|
|
1306
|
-
const refreshPolicy = resolveVectorRefreshPolicy(options);
|
|
1362
|
+
function resolveHealthDirectoryLists(typeRegistry) {
|
|
1307
1363
|
const optionalBuiltinDirs = new Set(PM_OPTIONAL_TYPE_SUBDIRS.filter((entry) => entry.length > 0));
|
|
1308
1364
|
const requiredDirSet = new Set(PM_CORE_REQUIRED_SUBDIRS.filter((entry) => entry.length > 0));
|
|
1309
1365
|
const optionalDirSet = new Set();
|
|
@@ -1314,44 +1370,208 @@ export async function runHealth(global, options = {}) {
|
|
|
1314
1370
|
}
|
|
1315
1371
|
requiredDirSet.add(folder);
|
|
1316
1372
|
}
|
|
1317
|
-
|
|
1318
|
-
|
|
1373
|
+
return {
|
|
1374
|
+
requiredDirs: [...requiredDirSet].sort((left, right) => left.localeCompare(right)),
|
|
1375
|
+
optionalDirs: [...optionalDirSet].sort((left, right) => left.localeCompare(right)),
|
|
1376
|
+
optionalDirSet,
|
|
1377
|
+
};
|
|
1378
|
+
}
|
|
1379
|
+
async function scanHealthDirectories(pmRoot, typeRegistry, strictDirectories) {
|
|
1380
|
+
const { requiredDirs, optionalDirs, optionalDirSet } = resolveHealthDirectoryLists(typeRegistry);
|
|
1319
1381
|
const missingRequiredDirs = [];
|
|
1320
1382
|
const missingOptionalDirs = [];
|
|
1321
1383
|
const hookWarnings = [];
|
|
1322
1384
|
for (const relativeDir of [...requiredDirs, ...optionalDirs]) {
|
|
1323
1385
|
const directoryPath = path.join(pmRoot, relativeDir);
|
|
1324
|
-
hookWarnings.push(...(await runActiveOnReadHooks({
|
|
1325
|
-
|
|
1326
|
-
|
|
1327
|
-
}
|
|
1328
|
-
if (
|
|
1329
|
-
|
|
1330
|
-
|
|
1331
|
-
|
|
1332
|
-
|
|
1333
|
-
missingRequiredDirs.push(relativeDir);
|
|
1334
|
-
}
|
|
1386
|
+
hookWarnings.push(...(await runActiveOnReadHooks({ path: directoryPath, scope: "project" })));
|
|
1387
|
+
if (await isDirectory(directoryPath)) {
|
|
1388
|
+
continue;
|
|
1389
|
+
}
|
|
1390
|
+
if (optionalDirSet.has(relativeDir)) {
|
|
1391
|
+
missingOptionalDirs.push(relativeDir);
|
|
1392
|
+
}
|
|
1393
|
+
else {
|
|
1394
|
+
missingRequiredDirs.push(relativeDir);
|
|
1335
1395
|
}
|
|
1336
1396
|
}
|
|
1337
|
-
|
|
1397
|
+
return {
|
|
1398
|
+
requiredDirs,
|
|
1399
|
+
optionalDirs,
|
|
1400
|
+
missingRequiredDirs,
|
|
1401
|
+
missingOptionalDirs,
|
|
1402
|
+
missingDirs: strictDirectories ? [...missingRequiredDirs, ...missingOptionalDirs] : [...missingRequiredDirs],
|
|
1403
|
+
hookWarnings,
|
|
1404
|
+
};
|
|
1405
|
+
}
|
|
1406
|
+
function resolveHealthSkipPolicy(options) {
|
|
1407
|
+
const summaryMode = options.summary === true && options.full !== true;
|
|
1408
|
+
const fastProjectionCheckOnly = options.checkOnly === true && (options.brief === true || options.summary === true) && options.full !== true;
|
|
1409
|
+
return {
|
|
1410
|
+
summaryMode,
|
|
1411
|
+
skipIntegrity: (options.skipIntegrity === true || fastProjectionCheckOnly) && options.full !== true,
|
|
1412
|
+
skipDrift: (options.skipDrift === true || fastProjectionCheckOnly) && options.full !== true,
|
|
1413
|
+
skipVectors: (options.skipVectors === true || fastProjectionCheckOnly) && options.full !== true,
|
|
1414
|
+
};
|
|
1415
|
+
}
|
|
1416
|
+
async function readHealthItems(params) {
|
|
1417
|
+
if (params.skipPolicy.skipDrift && params.skipPolicy.skipVectors) {
|
|
1418
|
+
return listAllFrontMatter(params.pmRoot, params.settings.item_format, params.typeRegistry.type_to_folder, params.itemReadWarnings, params.settings.schema);
|
|
1419
|
+
}
|
|
1420
|
+
return listAllFrontMatterWithBody(params.pmRoot, params.settings.item_format, params.typeRegistry.type_to_folder, params.itemReadWarnings, params.settings.schema);
|
|
1421
|
+
}
|
|
1422
|
+
function buildSkippedHealthCheck(name) {
|
|
1423
|
+
return { check: { name, status: "ok", details: { skipped: true } }, warnings: [] };
|
|
1424
|
+
}
|
|
1425
|
+
function buildSettingsHealthCheck(settingsPath, settings, normalizedSettingsReadWarnings) {
|
|
1426
|
+
return {
|
|
1427
|
+
name: "settings",
|
|
1428
|
+
/* c8 ignore next -- settings read-warning status split is covered in broader read-settings integration tests */
|
|
1429
|
+
status: normalizedSettingsReadWarnings.length === 0 ? "ok" : "warn",
|
|
1430
|
+
details: {
|
|
1431
|
+
path: settingsPath,
|
|
1432
|
+
version: settings.version,
|
|
1433
|
+
id_prefix: settings.id_prefix,
|
|
1434
|
+
locks_ttl_seconds: settings.locks.ttl_seconds,
|
|
1435
|
+
warnings: normalizedSettingsReadWarnings,
|
|
1436
|
+
},
|
|
1437
|
+
};
|
|
1438
|
+
}
|
|
1439
|
+
function buildDirectoriesHealthCheck(directoryState, strictDirectories) {
|
|
1440
|
+
return {
|
|
1441
|
+
name: "directories",
|
|
1442
|
+
status: directoryState.missingDirs.length === 0 ? "ok" : "warn",
|
|
1443
|
+
details: {
|
|
1444
|
+
required: directoryState.requiredDirs,
|
|
1445
|
+
optional: directoryState.optionalDirs,
|
|
1446
|
+
missing_required: directoryState.missingRequiredDirs,
|
|
1447
|
+
missing_optional: directoryState.missingOptionalDirs,
|
|
1448
|
+
missing: directoryState.missingDirs,
|
|
1449
|
+
strict_directories: strictDirectories,
|
|
1450
|
+
},
|
|
1451
|
+
};
|
|
1452
|
+
}
|
|
1453
|
+
function buildSettingsValuesHealthCheck(settingWarnings) {
|
|
1454
|
+
return {
|
|
1455
|
+
name: "settings_values",
|
|
1456
|
+
status: settingWarnings.length === 0 ? "ok" : "warn",
|
|
1457
|
+
details: { warnings: settingWarnings },
|
|
1458
|
+
};
|
|
1459
|
+
}
|
|
1460
|
+
function buildStorageHealthCheck(items, settings, historySummary) {
|
|
1461
|
+
return {
|
|
1462
|
+
name: "storage",
|
|
1463
|
+
status: historySummary.over_threshold.length === 0 ? "ok" : "warn",
|
|
1464
|
+
details: {
|
|
1465
|
+
items: items.length,
|
|
1466
|
+
history_streams: historySummary.count,
|
|
1467
|
+
...(historySummary.max_entries !== null
|
|
1468
|
+
? {
|
|
1469
|
+
compact_policy: {
|
|
1470
|
+
enabled: settings.history.compact_policy.enabled,
|
|
1471
|
+
max_entries: historySummary.max_entries,
|
|
1472
|
+
trigger: settings.history.compact_policy.trigger,
|
|
1473
|
+
over_threshold_count: historySummary.over_threshold.length,
|
|
1474
|
+
over_threshold: historySummary.over_threshold,
|
|
1475
|
+
},
|
|
1476
|
+
}
|
|
1477
|
+
: {}),
|
|
1478
|
+
},
|
|
1479
|
+
};
|
|
1480
|
+
}
|
|
1481
|
+
function collectHealthWarnings(params) {
|
|
1482
|
+
const warnings = [
|
|
1483
|
+
...params.directoryState.missingDirs.map((dir) => `missing_directory:${dir}`),
|
|
1484
|
+
...params.normalizedSettingsReadWarnings,
|
|
1485
|
+
...params.settingWarnings,
|
|
1486
|
+
...params.normalizedItemReadWarnings,
|
|
1487
|
+
...params.telemetryCheck.warnings,
|
|
1488
|
+
...params.extensionCheck.warnings,
|
|
1489
|
+
...params.historyPolicyWarnings,
|
|
1490
|
+
...params.historySummary.warnings,
|
|
1491
|
+
...params.locksCheck.warnings,
|
|
1492
|
+
...params.integrityCheck.warnings,
|
|
1493
|
+
...params.historyDriftCheck.warnings,
|
|
1494
|
+
...params.vectorizationCheck.warnings,
|
|
1495
|
+
...params.directoryState.hookWarnings,
|
|
1496
|
+
];
|
|
1497
|
+
return [...new Set(warnings)];
|
|
1498
|
+
}
|
|
1499
|
+
function extractHistoryDriftedCount(historyDriftCheck) {
|
|
1500
|
+
const counts = historyDriftCheck.check.details.counts;
|
|
1501
|
+
return typeof counts?.drifted === "number" ? counts.drifted : 0;
|
|
1502
|
+
}
|
|
1503
|
+
function buildHealthRemediationSources(params) {
|
|
1504
|
+
return {
|
|
1505
|
+
settings: params.normalizedSettingsReadWarnings,
|
|
1506
|
+
directories: params.directoryState.missingDirs.map((dir) => `missing_directory:${dir}`),
|
|
1507
|
+
settings_values: params.settingWarnings,
|
|
1508
|
+
telemetry: params.telemetryCheck.warnings,
|
|
1509
|
+
extensions: params.extensionCheck.warnings,
|
|
1510
|
+
storage: params.historySummary.over_threshold.map((id) => `history_stream_over_compact_threshold:${id}`),
|
|
1511
|
+
locks: params.locksCheck.warnings,
|
|
1512
|
+
integrity: params.integrityCheck.warnings,
|
|
1513
|
+
history_drift: params.historyDriftCheck.warnings,
|
|
1514
|
+
vectorization: params.vectorizationCheck.warnings,
|
|
1515
|
+
};
|
|
1516
|
+
}
|
|
1517
|
+
function rewriteBulkHealthRemediation(params) {
|
|
1518
|
+
if (params.check.name === "history_drift" && params.historyDriftedCount > 1) {
|
|
1519
|
+
for (const code of Object.keys(params.remediationMap)) {
|
|
1520
|
+
params.remediationMap[code] = "pm history-repair --all";
|
|
1521
|
+
}
|
|
1522
|
+
}
|
|
1523
|
+
if (params.check.name === "storage" && params.overThresholdCount > 1) {
|
|
1524
|
+
for (const code of Object.keys(params.remediationMap)) {
|
|
1525
|
+
params.remediationMap[code] = "pm history-compact --all-streams";
|
|
1526
|
+
}
|
|
1527
|
+
}
|
|
1528
|
+
}
|
|
1529
|
+
function attachHealthRemediationMaps(params) {
|
|
1530
|
+
for (const check of params.checks) {
|
|
1531
|
+
const remediationMap = buildRemediationMap(params.remediationSources[check.name]);
|
|
1532
|
+
rewriteBulkHealthRemediation({
|
|
1533
|
+
check,
|
|
1534
|
+
remediationMap,
|
|
1535
|
+
historyDriftedCount: params.historyDriftedCount,
|
|
1536
|
+
overThresholdCount: params.overThresholdCount,
|
|
1537
|
+
});
|
|
1538
|
+
if (Object.keys(remediationMap).length > 0) {
|
|
1539
|
+
check.details = { ...check.details, remediation_map: remediationMap };
|
|
1540
|
+
}
|
|
1541
|
+
}
|
|
1542
|
+
}
|
|
1543
|
+
function projectHealthResult(result, options, summaryMode) {
|
|
1544
|
+
if (summaryMode) {
|
|
1545
|
+
return applySummaryHealthProjection(result);
|
|
1546
|
+
}
|
|
1547
|
+
return options.brief === true ? applyBriefHealthProjection(result) : result;
|
|
1548
|
+
}
|
|
1549
|
+
/**
|
|
1550
|
+
* Implements run health for the public runtime surface of this module.
|
|
1551
|
+
*/
|
|
1552
|
+
export async function runHealth(global, options = {}) {
|
|
1553
|
+
const pmRoot = resolvePmRoot(process.cwd(), global.path);
|
|
1554
|
+
const settingsPath = getSettingsPath(pmRoot);
|
|
1555
|
+
if (!(await pathExists(settingsPath))) {
|
|
1556
|
+
throw new PmCliError(`Tracker is not initialized at ${pmRoot}. Run pm init first.`, EXIT_CODE.NOT_FOUND);
|
|
1557
|
+
}
|
|
1558
|
+
const { settings, warnings: settingsReadWarnings } = await readSettingsWithMetadata(pmRoot);
|
|
1559
|
+
const normalizedSettingsReadWarnings = [...new Set(settingsReadWarnings)];
|
|
1560
|
+
const typeRegistry = resolveItemTypeRegistry(settings, getActiveExtensionRegistrations());
|
|
1561
|
+
const strictDirectories = options.strictDirectories === true;
|
|
1562
|
+
const refreshPolicy = resolveVectorRefreshPolicy(options);
|
|
1563
|
+
const directoryState = await scanHealthDirectories(pmRoot, typeRegistry, strictDirectories);
|
|
1338
1564
|
const settingWarnings = validateSettingsValues(settings);
|
|
1339
1565
|
const telemetryCheck = await buildTelemetryCheck(settings, {
|
|
1340
1566
|
checkTelemetry: options.checkTelemetry === true,
|
|
1341
1567
|
});
|
|
1342
1568
|
const extensionCheck = await buildExtensionCheck(pmRoot, settings, Boolean(global.noExtensions));
|
|
1343
|
-
const
|
|
1344
|
-
const fastProjectionCheckOnly = options.checkOnly === true && (options.brief === true || options.summary === true) && options.full !== true;
|
|
1345
|
-
const skipIntegrity = (options.skipIntegrity === true || fastProjectionCheckOnly) && options.full !== true;
|
|
1346
|
-
const skipDrift = (options.skipDrift === true || fastProjectionCheckOnly) && options.full !== true;
|
|
1347
|
-
const skipVectors = (options.skipVectors === true || fastProjectionCheckOnly) && options.full !== true;
|
|
1569
|
+
const skipPolicy = resolveHealthSkipPolicy(options);
|
|
1348
1570
|
const itemReadWarnings = [];
|
|
1349
|
-
const items =
|
|
1350
|
-
? await listAllFrontMatter(pmRoot, settings.item_format, typeRegistry.type_to_folder, itemReadWarnings, settings.schema)
|
|
1351
|
-
: await listAllFrontMatterWithBody(pmRoot, settings.item_format, typeRegistry.type_to_folder, itemReadWarnings, settings.schema);
|
|
1571
|
+
const items = await readHealthItems({ pmRoot, settings, typeRegistry, skipPolicy, itemReadWarnings });
|
|
1352
1572
|
const itemsWithBody = items;
|
|
1353
1573
|
const normalizedItemReadWarnings = [...new Set(itemReadWarnings)];
|
|
1354
|
-
const historyPolicy = skipDrift
|
|
1574
|
+
const historyPolicy = skipPolicy.skipDrift
|
|
1355
1575
|
? { warnings: [] }
|
|
1356
1576
|
: await enforceHistoryStreamPolicyForItems({
|
|
1357
1577
|
pmRoot,
|
|
@@ -1361,137 +1581,58 @@ export async function runHealth(global, options = {}) {
|
|
|
1361
1581
|
});
|
|
1362
1582
|
const historySummary = await countHistoryStreams(pmRoot, settings.history.compact_policy);
|
|
1363
1583
|
const locksCheck = await buildLocksCheck(pmRoot);
|
|
1364
|
-
const integrityCheck = skipIntegrity
|
|
1365
|
-
?
|
|
1584
|
+
const integrityCheck = skipPolicy.skipIntegrity
|
|
1585
|
+
? buildSkippedHealthCheck("integrity")
|
|
1366
1586
|
: await buildIntegrityCheck(pmRoot, typeRegistry.type_to_folder, settings.schema);
|
|
1367
|
-
const historyDriftCheck = skipDrift
|
|
1368
|
-
?
|
|
1587
|
+
const historyDriftCheck = skipPolicy.skipDrift
|
|
1588
|
+
? buildSkippedHealthCheck("history_drift")
|
|
1369
1589
|
: await buildHistoryDriftCheck(pmRoot, itemsWithBody);
|
|
1370
|
-
const vectorizationCheck = skipVectors
|
|
1371
|
-
?
|
|
1590
|
+
const vectorizationCheck = skipPolicy.skipVectors
|
|
1591
|
+
? buildSkippedHealthCheck("vectorization")
|
|
1372
1592
|
: await buildVectorizationCheck(pmRoot, settings, itemsWithBody, refreshPolicy, options.verboseStaleItems === true);
|
|
1373
1593
|
const checks = [
|
|
1374
|
-
|
|
1375
|
-
|
|
1376
|
-
|
|
1377
|
-
status: normalizedSettingsReadWarnings.length === 0 ? "ok" : "warn",
|
|
1378
|
-
details: {
|
|
1379
|
-
path: settingsPath,
|
|
1380
|
-
version: settings.version,
|
|
1381
|
-
id_prefix: settings.id_prefix,
|
|
1382
|
-
locks_ttl_seconds: settings.locks.ttl_seconds,
|
|
1383
|
-
warnings: normalizedSettingsReadWarnings,
|
|
1384
|
-
},
|
|
1385
|
-
},
|
|
1386
|
-
{
|
|
1387
|
-
name: "directories",
|
|
1388
|
-
status: missingDirs.length === 0 ? "ok" : "warn",
|
|
1389
|
-
details: {
|
|
1390
|
-
required: requiredDirs,
|
|
1391
|
-
optional: optionalDirs,
|
|
1392
|
-
missing_required: missingRequiredDirs,
|
|
1393
|
-
missing_optional: missingOptionalDirs,
|
|
1394
|
-
missing: missingDirs,
|
|
1395
|
-
strict_directories: strictDirectories,
|
|
1396
|
-
},
|
|
1397
|
-
},
|
|
1398
|
-
{
|
|
1399
|
-
name: "settings_values",
|
|
1400
|
-
status: settingWarnings.length === 0 ? "ok" : "warn",
|
|
1401
|
-
details: {
|
|
1402
|
-
warnings: settingWarnings,
|
|
1403
|
-
},
|
|
1404
|
-
},
|
|
1594
|
+
buildSettingsHealthCheck(settingsPath, settings, normalizedSettingsReadWarnings),
|
|
1595
|
+
buildDirectoriesHealthCheck(directoryState, strictDirectories),
|
|
1596
|
+
buildSettingsValuesHealthCheck(settingWarnings),
|
|
1405
1597
|
telemetryCheck.check,
|
|
1406
1598
|
extensionCheck.check,
|
|
1407
|
-
|
|
1408
|
-
name: "storage",
|
|
1409
|
-
status: historySummary.over_threshold.length === 0 ? "ok" : "warn",
|
|
1410
|
-
details: {
|
|
1411
|
-
items: items.length,
|
|
1412
|
-
history_streams: historySummary.count,
|
|
1413
|
-
...(historySummary.max_entries !== null
|
|
1414
|
-
? {
|
|
1415
|
-
compact_policy: {
|
|
1416
|
-
enabled: settings.history.compact_policy.enabled,
|
|
1417
|
-
max_entries: historySummary.max_entries,
|
|
1418
|
-
trigger: settings.history.compact_policy.trigger,
|
|
1419
|
-
over_threshold_count: historySummary.over_threshold.length,
|
|
1420
|
-
over_threshold: historySummary.over_threshold,
|
|
1421
|
-
},
|
|
1422
|
-
}
|
|
1423
|
-
: {}),
|
|
1424
|
-
},
|
|
1425
|
-
},
|
|
1599
|
+
buildStorageHealthCheck(items, settings, historySummary),
|
|
1426
1600
|
locksCheck.check,
|
|
1427
1601
|
integrityCheck.check,
|
|
1428
1602
|
historyDriftCheck.check,
|
|
1429
1603
|
vectorizationCheck.check,
|
|
1430
1604
|
];
|
|
1431
|
-
const
|
|
1432
|
-
|
|
1433
|
-
|
|
1434
|
-
|
|
1435
|
-
|
|
1436
|
-
|
|
1437
|
-
|
|
1438
|
-
|
|
1439
|
-
|
|
1440
|
-
|
|
1441
|
-
|
|
1442
|
-
|
|
1443
|
-
|
|
1444
|
-
|
|
1445
|
-
|
|
1446
|
-
|
|
1447
|
-
|
|
1448
|
-
|
|
1449
|
-
|
|
1450
|
-
|
|
1451
|
-
|
|
1452
|
-
|
|
1453
|
-
|
|
1454
|
-
|
|
1455
|
-
|
|
1456
|
-
|
|
1457
|
-
|
|
1458
|
-
|
|
1459
|
-
|
|
1460
|
-
|
|
1461
|
-
|
|
1462
|
-
settings_values: settingWarnings,
|
|
1463
|
-
telemetry: telemetryCheck.warnings,
|
|
1464
|
-
extensions: extensionCheck.warnings,
|
|
1465
|
-
storage: historySummary.over_threshold.map((id) => `history_stream_over_compact_threshold:${id}`),
|
|
1466
|
-
locks: locksCheck.warnings,
|
|
1467
|
-
integrity: integrityCheck.warnings,
|
|
1468
|
-
history_drift: historyDriftCheck.warnings,
|
|
1469
|
-
vectorization: vectorizationCheck.warnings,
|
|
1470
|
-
};
|
|
1471
|
-
const historyDriftedCount = typeof historyDriftCheck.check.details.counts?.drifted === "number"
|
|
1472
|
-
? (historyDriftCheck.check.details.counts.drifted)
|
|
1473
|
-
: 0;
|
|
1474
|
-
for (const check of checks) {
|
|
1475
|
-
const remediationMap = buildRemediationMap(checkRemediationSources[check.name]);
|
|
1476
|
-
// With multiple drifted streams the per-item `pm history-repair <id>`
|
|
1477
|
-
// template would have to be run once per stream; suggest the bulk audited
|
|
1478
|
-
// pass instead so agents repair everything in one command.
|
|
1479
|
-
if (check.name === "history_drift" && historyDriftedCount > 1) {
|
|
1480
|
-
for (const code of Object.keys(remediationMap)) {
|
|
1481
|
-
remediationMap[code] = "pm history-repair --all";
|
|
1482
|
-
}
|
|
1483
|
-
}
|
|
1484
|
-
// With multiple over-threshold streams, point at the one-pass bulk sweep
|
|
1485
|
-
// rather than a per-stream `pm history-compact <id>` template.
|
|
1486
|
-
if (check.name === "storage" && historySummary.over_threshold.length > 1) {
|
|
1487
|
-
for (const code of Object.keys(remediationMap)) {
|
|
1488
|
-
remediationMap[code] = "pm history-compact --all-streams";
|
|
1489
|
-
}
|
|
1490
|
-
}
|
|
1491
|
-
if (Object.keys(remediationMap).length > 0) {
|
|
1492
|
-
check.details = { ...check.details, remediation_map: remediationMap };
|
|
1493
|
-
}
|
|
1494
|
-
}
|
|
1605
|
+
const normalizedWarnings = collectHealthWarnings({
|
|
1606
|
+
directoryState,
|
|
1607
|
+
normalizedSettingsReadWarnings,
|
|
1608
|
+
settingWarnings,
|
|
1609
|
+
normalizedItemReadWarnings,
|
|
1610
|
+
telemetryCheck,
|
|
1611
|
+
extensionCheck,
|
|
1612
|
+
historyPolicyWarnings: historyPolicy.warnings,
|
|
1613
|
+
historySummary,
|
|
1614
|
+
locksCheck,
|
|
1615
|
+
integrityCheck,
|
|
1616
|
+
historyDriftCheck,
|
|
1617
|
+
vectorizationCheck,
|
|
1618
|
+
});
|
|
1619
|
+
attachHealthRemediationMaps({
|
|
1620
|
+
checks,
|
|
1621
|
+
remediationSources: buildHealthRemediationSources({
|
|
1622
|
+
directoryState,
|
|
1623
|
+
normalizedSettingsReadWarnings,
|
|
1624
|
+
settingWarnings,
|
|
1625
|
+
telemetryCheck,
|
|
1626
|
+
extensionCheck,
|
|
1627
|
+
historySummary,
|
|
1628
|
+
locksCheck,
|
|
1629
|
+
integrityCheck,
|
|
1630
|
+
historyDriftCheck,
|
|
1631
|
+
vectorizationCheck,
|
|
1632
|
+
}),
|
|
1633
|
+
historyDriftedCount: extractHistoryDriftedCount(historyDriftCheck),
|
|
1634
|
+
overThresholdCount: historySummary.over_threshold.length,
|
|
1635
|
+
});
|
|
1495
1636
|
// Telemetry is an opt-out, non-critical observability feature. Its operational
|
|
1496
1637
|
// state (queue backlog, unreachable endpoint, corrupt local state) is advisory:
|
|
1497
1638
|
// it must never flip overall project health to not-ok. Such warnings are still
|
|
@@ -1503,14 +1644,12 @@ export async function runHealth(global, options = {}) {
|
|
|
1503
1644
|
warnings: normalizedWarnings,
|
|
1504
1645
|
generated_at: nowIso(),
|
|
1505
1646
|
};
|
|
1506
|
-
|
|
1507
|
-
return applySummaryHealthProjection(result);
|
|
1508
|
-
}
|
|
1509
|
-
return options.brief === true ? applyBriefHealthProjection(result) : result;
|
|
1647
|
+
return projectHealthResult(result, options, skipPolicy.summaryMode);
|
|
1510
1648
|
}
|
|
1511
1649
|
export const _testOnlyHealthCommand = {
|
|
1512
1650
|
buildExtensionHealthTriageSummary,
|
|
1513
1651
|
buildCapabilityContractMetadata,
|
|
1652
|
+
buildVectorizationProviderDetails,
|
|
1514
1653
|
collectUnknownCapabilityGuidance,
|
|
1515
1654
|
isAdvisoryHealthWarning,
|
|
1516
1655
|
isDirectory,
|
|
@@ -1529,4 +1668,4 @@ export const _testOnlyHealthCommand = {
|
|
|
1529
1668
|
warningCode,
|
|
1530
1669
|
};
|
|
1531
1670
|
//# sourceMappingURL=health.js.map
|
|
1532
|
-
//# debugId=
|
|
1671
|
+
//# debugId=bd215d4d-d9ea-5734-aa11-b74e1fa0780f
|