@pcircle/memesh 4.2.7 → 4.2.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/.claude-plugin/plugin.json +1 -1
- package/README.de.md +45 -2
- package/README.es.md +45 -2
- package/README.fr.md +45 -2
- package/README.ja.md +45 -2
- package/README.ko.md +45 -2
- package/README.md +16 -2
- package/README.pt.md +45 -2
- package/README.th.md +16 -2
- package/README.vi.md +45 -2
- package/README.zh-CN.md +44 -2
- package/README.zh-TW.md +44 -2
- package/dashboard/dist/index.html +7 -7
- package/dist/cli/view-live.d.ts.map +1 -1
- package/dist/cli/view-live.js +3 -1
- package/dist/cli/view-live.js.map +1 -1
- package/dist/core/analytics.d.ts +0 -31
- package/dist/core/analytics.d.ts.map +1 -1
- package/dist/core/analytics.js +0 -59
- package/dist/core/analytics.js.map +1 -1
- package/dist/core/config.d.ts +0 -1
- package/dist/core/config.d.ts.map +1 -1
- package/dist/core/config.js +25 -4
- package/dist/core/config.js.map +1 -1
- package/dist/core/digest-validator.d.ts +1 -1
- package/dist/core/digest-validator.d.ts.map +1 -1
- package/dist/core/digest-validator.js +7 -2
- package/dist/core/digest-validator.js.map +1 -1
- package/dist/core/doctor.d.ts +5 -0
- package/dist/core/doctor.d.ts.map +1 -1
- package/dist/core/doctor.js +87 -5
- package/dist/core/doctor.js.map +1 -1
- package/dist/core/dreamer.d.ts.map +1 -1
- package/dist/core/dreamer.js.map +1 -1
- package/dist/core/embedder.d.ts +1 -0
- package/dist/core/embedder.d.ts.map +1 -1
- package/dist/core/embedder.js +14 -2
- package/dist/core/embedder.js.map +1 -1
- package/dist/core/extractor.d.ts.map +1 -1
- package/dist/core/extractor.js +10 -1
- package/dist/core/extractor.js.map +1 -1
- package/dist/core/failure-analyzer.d.ts.map +1 -1
- package/dist/core/failure-analyzer.js +16 -2
- package/dist/core/failure-analyzer.js.map +1 -1
- package/dist/core/llm-telemetry.d.ts +12 -0
- package/dist/core/llm-telemetry.d.ts.map +1 -1
- package/dist/core/llm-telemetry.js +21 -3
- package/dist/core/llm-telemetry.js.map +1 -1
- package/dist/core/operations.d.ts +5 -0
- package/dist/core/operations.d.ts.map +1 -1
- package/dist/core/operations.js +16 -0
- package/dist/core/operations.js.map +1 -1
- package/dist/core/paths.d.ts +2 -0
- package/dist/core/paths.d.ts.map +1 -1
- package/dist/core/paths.js +43 -0
- package/dist/core/paths.js.map +1 -1
- package/dist/core/project-tags.d.ts +20 -0
- package/dist/core/project-tags.d.ts.map +1 -0
- package/dist/core/project-tags.js +42 -0
- package/dist/core/project-tags.js.map +1 -0
- package/dist/core/schema-export.d.ts.map +1 -1
- package/dist/core/schema-export.js +17 -1
- package/dist/core/schema-export.js.map +1 -1
- package/dist/core/skill-usage-log.d.ts +1 -1
- package/dist/core/skill-usage-log.d.ts.map +1 -1
- package/dist/core/skill-usage-log.js +2 -2
- package/dist/core/skill-usage-log.js.map +1 -1
- package/dist/core/verifier.d.ts.map +1 -1
- package/dist/core/verifier.js +1 -6
- package/dist/core/verifier.js.map +1 -1
- package/dist/skills-manifest.json +10 -10
- package/dist/transports/cli/cli.js +132 -5
- package/dist/transports/cli/cli.js.map +1 -1
- package/dist/transports/http/server.d.ts.map +1 -1
- package/dist/transports/http/server.js +0 -1
- package/dist/transports/http/server.js.map +1 -1
- package/package.json +1 -1
- package/scripts/hooks/_shared.js +79 -3
- package/scripts/hooks/pre-compact.js +32 -8
- package/scripts/hooks/session-start.js +168 -17
- package/scripts/hooks/session-summary.js +137 -23
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"view-live.d.ts","sourceRoot":"","sources":["../../src/cli/view-live.ts"],"names":[],"mappings":"AAwBA,wBAAgB,yBAAyB,IAAI,MAAM,
|
|
1
|
+
{"version":3,"file":"view-live.d.ts","sourceRoot":"","sources":["../../src/cli/view-live.ts"],"names":[],"mappings":"AAwBA,wBAAgB,yBAAyB,IAAI,MAAM,CA8nElD"}
|
package/dist/cli/view-live.js
CHANGED
|
@@ -423,7 +423,9 @@ export function generateLiveDashboardHtml() {
|
|
|
423
423
|
var isLight = document.body.classList.contains('light');
|
|
424
424
|
themeBtn.textContent = isLight ? '\\ud83c\\udf19' : '\\u2600\\ufe0f';
|
|
425
425
|
localStorage.setItem('memesh-theme', isLight ? 'light' : 'dark');
|
|
426
|
-
|
|
426
|
+
// Theme is persisted client-side in localStorage only. An earlier
|
|
427
|
+
// POST /v1/config { theme } wrote a config.theme that nothing ever
|
|
428
|
+
// read back; removed with that dead field.
|
|
427
429
|
// Update graph label colors if graph has been rendered
|
|
428
430
|
var newLabelColor = isLight ? '#09090b' : '#fafafa';
|
|
429
431
|
var graphWrap = document.getElementById('graph-svg-wrap');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"view-live.js","sourceRoot":"","sources":["../../src/cli/view-live.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AAEpC,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAC/D,MAAM,SAAS,GAAG,EAAE;KACjB,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,EAAE,cAAc,CAAC,EAAE,MAAM,CAAC;KACpE,OAAO,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC;AAWxC,MAAM,UAAU,yBAAyB;IACvC,MAAM,GAAG,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2XX,CAAC,IAAI,EAAE,CAAC;IAIT,MAAM,MAAM,GAAG
|
|
1
|
+
{"version":3,"file":"view-live.js","sourceRoot":"","sources":["../../src/cli/view-live.ts"],"names":[],"mappings":"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"}
|
package/dist/core/analytics.d.ts
CHANGED
|
@@ -4,26 +4,6 @@ export interface HealthFactor {
|
|
|
4
4
|
weight: number;
|
|
5
5
|
detail: string;
|
|
6
6
|
}
|
|
7
|
-
export interface RecallEffectiveness {
|
|
8
|
-
overallHitRate: number;
|
|
9
|
-
totalHits: number;
|
|
10
|
-
totalMisses: number;
|
|
11
|
-
trackedEntities: number;
|
|
12
|
-
topEffective: Array<{
|
|
13
|
-
name: string;
|
|
14
|
-
type: string;
|
|
15
|
-
hits: number;
|
|
16
|
-
misses: number;
|
|
17
|
-
hitRate: number;
|
|
18
|
-
}>;
|
|
19
|
-
mostIgnored: Array<{
|
|
20
|
-
name: string;
|
|
21
|
-
type: string;
|
|
22
|
-
hits: number;
|
|
23
|
-
misses: number;
|
|
24
|
-
hitRate: number;
|
|
25
|
-
}>;
|
|
26
|
-
}
|
|
27
7
|
export declare const NOISE_TYPES: Set<string>;
|
|
28
8
|
export type AgeBucket = 'week' | 'month' | 'quarter' | 'older';
|
|
29
9
|
export interface AgeMatrixEntry {
|
|
@@ -58,17 +38,6 @@ export interface AnalyticsResult {
|
|
|
58
38
|
created: number;
|
|
59
39
|
recalled: number;
|
|
60
40
|
}>;
|
|
61
|
-
valueMetrics: {
|
|
62
|
-
totalRecalls: number;
|
|
63
|
-
lessonCount: number;
|
|
64
|
-
lessonsWithWarnings: number;
|
|
65
|
-
typeDistribution: unknown[];
|
|
66
|
-
};
|
|
67
|
-
recallEffectiveness: RecallEffectiveness | null;
|
|
68
|
-
cleanup: {
|
|
69
|
-
staleEntities: unknown[];
|
|
70
|
-
duplicateCandidates: unknown[];
|
|
71
|
-
};
|
|
72
41
|
ageMatrix: AgeMatrixEntry[];
|
|
73
42
|
knowledgeRadar: KnowledgeRadarEntry[];
|
|
74
43
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"analytics.d.ts","sourceRoot":"","sources":["../../src/core/analytics.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAG3C,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB;
|
|
1
|
+
{"version":3,"file":"analytics.d.ts","sourceRoot":"","sources":["../../src/core/analytics.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAG3C,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB;AAGD,eAAO,MAAM,WAAW,aAGtB,CAAC;AAEH,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,GAAG,OAAO,CAAC;AAE/D,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,SAAS,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,MAAM,WAAW,UAAU;IAGzB,cAAc,EAAE,MAAM,CAAC;IAEvB,KAAK,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAI9C,YAAY,EAAE,aAAa,GAAG,gCAAgC,CAAC;CAChE;AAED,MAAM,WAAW,eAAe;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE;QACb,QAAQ,EAAE,YAAY,CAAC;QACvB,OAAO,EAAE,YAAY,CAAC;QACtB,SAAS,EAAE,YAAY,CAAC;QACxB,OAAO,EAAE,YAAY,CAAC;KACvB,CAAC;IACF,UAAU,EAAE,UAAU,CAAC;IACvB,QAAQ,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACrE,SAAS,EAAE,cAAc,EAAE,CAAC;IAC5B,cAAc,EAAE,mBAAmB,EAAE,CAAC;CACvC;AAOD,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,GAAG,eAAe,CA0MvE;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE;QACR,gBAAgB,EAAE,MAAM,CAAC;QACzB,gBAAgB,EAAE,MAAM,CAAC;QACzB,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC;IACF,SAAS,EAAE;QACT,cAAc,EAAE,MAAM,CAAC;QACvB,iBAAiB,EAAE,MAAM,CAAC;KAC3B,CAAC;IACF,aAAa,EAAE;QACb,UAAU,EAAE,MAAM,CAAC;QACnB,cAAc,EAAE,MAAM,CAAC;QACvB,cAAc,EAAE,MAAM,CAAC;KACxB,CAAC;CACH;AAMD,wBAAgB,kBAAkB,CAChC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,UAAU,SAAK,GACd,iBAAiB,CA8DnB"}
|
package/dist/core/analytics.js
CHANGED
|
@@ -63,62 +63,6 @@ export function computeAnalytics(db) {
|
|
|
63
63
|
}
|
|
64
64
|
}
|
|
65
65
|
const timeline = Array.from(timelineMap.values()).sort((a, b) => a.date.localeCompare(b.date));
|
|
66
|
-
const totalRecalls = db.prepare("SELECT COALESCE(SUM(access_count), 0) as c FROM entities").get().c;
|
|
67
|
-
const lessonsWithWarnings = db.prepare("SELECT COUNT(*) as c FROM entities WHERE type = 'lesson_learned' AND access_count > 0").get().c;
|
|
68
|
-
const typeDistribution = db.prepare("SELECT type, COUNT(*) as count FROM entities GROUP BY type ORDER BY count DESC").all();
|
|
69
|
-
const valueMetrics = {
|
|
70
|
-
totalRecalls,
|
|
71
|
-
lessonCount,
|
|
72
|
-
lessonsWithWarnings,
|
|
73
|
-
typeDistribution,
|
|
74
|
-
};
|
|
75
|
-
const staleEntities = db.prepare(`
|
|
76
|
-
SELECT id, name, type, confidence,
|
|
77
|
-
CAST((julianday('now') - julianday(COALESCE(last_accessed_at, created_at))) AS INTEGER) as days_unused
|
|
78
|
-
FROM entities
|
|
79
|
-
WHERE status = 'active'
|
|
80
|
-
AND confidence < 0.4
|
|
81
|
-
AND (last_accessed_at IS NULL OR last_accessed_at < datetime('now', '-30 days'))
|
|
82
|
-
ORDER BY confidence ASC
|
|
83
|
-
LIMIT 10
|
|
84
|
-
`).all();
|
|
85
|
-
const duplicateCandidates = db.prepare(`
|
|
86
|
-
SELECT e1.name as name1, e2.name as name2, e1.type
|
|
87
|
-
FROM entities e1
|
|
88
|
-
JOIN entities e2 ON e1.id < e2.id AND e1.type = e2.type
|
|
89
|
-
WHERE e1.status = 'active' AND e2.status = 'active'
|
|
90
|
-
AND (INSTR(LOWER(e1.name), LOWER(e2.name)) > 0 OR INSTR(LOWER(e2.name), LOWER(e1.name)) > 0)
|
|
91
|
-
LIMIT 5
|
|
92
|
-
`).all();
|
|
93
|
-
const cleanup = { staleEntities, duplicateCandidates };
|
|
94
|
-
let recallEffectiveness = null;
|
|
95
|
-
try {
|
|
96
|
-
const recallColCheck = db.prepare("PRAGMA table_info(entities)").all();
|
|
97
|
-
if (recallColCheck.some((c) => c.name === 'recall_hits')) {
|
|
98
|
-
const totals = db.prepare(`SELECT COALESCE(SUM(recall_hits), 0) as hits, COALESCE(SUM(recall_misses), 0) as misses,
|
|
99
|
-
COUNT(*) as tracked FROM entities WHERE (recall_hits > 0 OR recall_misses > 0)`).get();
|
|
100
|
-
const total = totals.hits + totals.misses;
|
|
101
|
-
const overallHitRate = total > 0 ? totals.hits / total : 0;
|
|
102
|
-
const topEffective = db.prepare(`SELECT name, type, COALESCE(recall_hits, 0) as hits, COALESCE(recall_misses, 0) as misses,
|
|
103
|
-
CAST(COALESCE(recall_hits, 0) AS REAL) / (COALESCE(recall_hits, 0) + COALESCE(recall_misses, 0)) as hitRate
|
|
104
|
-
FROM entities WHERE (COALESCE(recall_hits, 0) + COALESCE(recall_misses, 0)) > 0
|
|
105
|
-
ORDER BY hitRate DESC, hits DESC LIMIT 5`).all();
|
|
106
|
-
const mostIgnored = db.prepare(`SELECT name, type, COALESCE(recall_hits, 0) as hits, COALESCE(recall_misses, 0) as misses,
|
|
107
|
-
CAST(COALESCE(recall_hits, 0) AS REAL) / (COALESCE(recall_hits, 0) + COALESCE(recall_misses, 0)) as hitRate
|
|
108
|
-
FROM entities WHERE (COALESCE(recall_hits, 0) + COALESCE(recall_misses, 0)) > 0
|
|
109
|
-
ORDER BY hitRate ASC, misses DESC LIMIT 5`).all();
|
|
110
|
-
recallEffectiveness = {
|
|
111
|
-
overallHitRate,
|
|
112
|
-
totalHits: totals.hits,
|
|
113
|
-
totalMisses: totals.misses,
|
|
114
|
-
trackedEntities: totals.tracked,
|
|
115
|
-
topEffective,
|
|
116
|
-
mostIgnored,
|
|
117
|
-
};
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
catch {
|
|
121
|
-
}
|
|
122
66
|
const ageMatrixRaw = db.prepare(`
|
|
123
67
|
SELECT type,
|
|
124
68
|
CASE
|
|
@@ -196,9 +140,6 @@ export function computeAnalytics(db) {
|
|
|
196
140
|
healthFactors,
|
|
197
141
|
loopMetric,
|
|
198
142
|
timeline,
|
|
199
|
-
valueMetrics,
|
|
200
|
-
recallEffectiveness,
|
|
201
|
-
cleanup,
|
|
202
143
|
ageMatrix,
|
|
203
144
|
knowledgeRadar,
|
|
204
145
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"analytics.js","sourceRoot":"","sources":["../../src/core/analytics.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"analytics.js","sourceRoot":"","sources":["../../src/core/analytics.ts"],"names":[],"mappings":"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"}
|
package/dist/core/config.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/core/config.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,SAAS;IACxB,QAAQ,EAAE,WAAW,GAAG,QAAQ,GAAG,QAAQ,CAAC;IAC5C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAkBD,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,GAAG,QAAQ,GAAG,QAAQ,CAAC;IACvC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,YAAY;IAC3B,GAAG,CAAC,EAAE,SAAS,CAAC;IAgBhB,YAAY,CAAC,EAAE,SAAS,EAAE,CAAC;IAM3B,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IAMtB,0BAA0B,CAAC,EAAE,OAAO,CAAC;IAWrC,UAAU,CAAC,EAAE,KAAK,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,CAAC;IACjD,
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/core/config.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,SAAS;IACxB,QAAQ,EAAE,WAAW,GAAG,QAAQ,GAAG,QAAQ,CAAC;IAC5C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAkBD,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,GAAG,QAAQ,GAAG,QAAQ,CAAC;IACvC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,YAAY;IAC3B,GAAG,CAAC,EAAE,SAAS,CAAC;IAgBhB,YAAY,CAAC,EAAE,SAAS,EAAE,CAAC;IAM3B,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IAMtB,0BAA0B,CAAC,EAAE,OAAO,CAAC;IAWrC,UAAU,CAAC,EAAE,KAAK,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,CAAC;IACjD,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,IAAI,CAAC;IACX,YAAY,EAAE,IAAI,CAAC;IACnB,OAAO,EAAE,IAAI,CAAC;IACd,kBAAkB,EAAE,IAAI,CAAC;IACzB,UAAU,EAAE,MAAM,GAAG,QAAQ,GAAG,WAAW,GAAG,QAAQ,GAAG,OAAO,CAAC;IACjE,GAAG,EAAE,SAAS,GAAG,IAAI,CAAC;IAOtB,YAAY,EAAE,SAAS,EAAE,CAAC;IAC1B,WAAW,EAAE,CAAC,GAAG,CAAC,CAAC;CACpB;AA2BD,wBAAgB,UAAU,IAAI,YAAY,CA2BzC;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI,CAetD;AAED,wBAAgB,YAAY,CAC1B,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,KAAK,CAAC,GAAG;IAAE,GAAG,CAAC,EAAE,SAAS,GAAG,IAAI,CAAA;CAAE,GACvE,YAAY,CAmBd;AAID,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAG9C;AAiED,wBAAgB,kBAAkB,CAAC,MAAM,CAAC,EAAE,YAAY,GAAG,YAAY,CAyBtE;AA+CD,wBAAgB,qBAAqB,CAAC,MAAM,CAAC,EAAE,YAAY,GAAG,MAAM,CAOnE;AAQD,wBAAgB,eAAe,CAAC,MAAM,CAAC,EAAE,YAAY,GAAG,IAAI,CAM3D;AAID,wBAAgB,YAAY,IAAI,MAAM,CAAwB;AAC9D,wBAAgB,aAAa,IAAI,MAAM,CAA6B"}
|
package/dist/core/config.js
CHANGED
|
@@ -10,14 +10,26 @@ function configDir() {
|
|
|
10
10
|
function configFilePath() {
|
|
11
11
|
return path.join(configDir(), 'config.json');
|
|
12
12
|
}
|
|
13
|
+
let lastConfigReadWarning = null;
|
|
13
14
|
export function readConfig() {
|
|
15
|
+
const p = configFilePath();
|
|
16
|
+
if (!fs.existsSync(p))
|
|
17
|
+
return {};
|
|
14
18
|
try {
|
|
15
|
-
const p = configFilePath();
|
|
16
|
-
if (!fs.existsSync(p))
|
|
17
|
-
return {};
|
|
18
19
|
return JSON.parse(fs.readFileSync(p, 'utf8'));
|
|
19
20
|
}
|
|
20
|
-
catch {
|
|
21
|
+
catch (err) {
|
|
22
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
23
|
+
const key = `${p}::${msg}`;
|
|
24
|
+
if (key !== lastConfigReadWarning) {
|
|
25
|
+
lastConfigReadWarning = key;
|
|
26
|
+
try {
|
|
27
|
+
process.stderr.write(`[memesh config] ${p} exists but could not be read/parsed (${msg}). ` +
|
|
28
|
+
`Every setting in it — LLM provider, fallbacks, embedder — is being ignored, ` +
|
|
29
|
+
`so Smart Mode is off until this is fixed.\n`);
|
|
30
|
+
}
|
|
31
|
+
catch { }
|
|
32
|
+
}
|
|
21
33
|
return {};
|
|
22
34
|
}
|
|
23
35
|
}
|
|
@@ -58,7 +70,16 @@ export function maskApiKey(key) {
|
|
|
58
70
|
return '***';
|
|
59
71
|
return key.slice(0, 4) + '***' + key.slice(-4);
|
|
60
72
|
}
|
|
73
|
+
function envAutoDetectDisabled() {
|
|
74
|
+
const raw = process.env.MEMESH_AUTO_DETECT_LLM;
|
|
75
|
+
if (raw === undefined)
|
|
76
|
+
return false;
|
|
77
|
+
const v = raw.trim().toLowerCase();
|
|
78
|
+
return v === '0' || v === 'false' || v === 'no' || v === 'off';
|
|
79
|
+
}
|
|
61
80
|
function detectFromEnv() {
|
|
81
|
+
if (envAutoDetectDisabled())
|
|
82
|
+
return null;
|
|
62
83
|
if (process.env.ANTHROPIC_API_KEY) {
|
|
63
84
|
return { provider: 'anthropic', model: 'claude-haiku-4-5', apiKey: process.env.ANTHROPIC_API_KEY };
|
|
64
85
|
}
|
package/dist/core/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/core/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/core/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"digest-validator.d.ts","sourceRoot":"","sources":["../../src/core/digest-validator.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"digest-validator.d.ts","sourceRoot":"","sources":["../../src/core/digest-validator.ts"],"names":[],"mappings":"AAsCA,OAAO,EAAW,KAAK,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAG7C,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAOD,MAAM,WAAW,gBAAgB;IAY/B,MAAM,EAAE,MAAM,GAAG,QAAQ,GAAG,QAAQ,GAAG,aAAa,CAAC;IACrD,gBAAgB,EAAE,eAAe,EAAE,CAAC;IAEpC,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,qBAAqB;IACpC,SAAS,CAAC,EAAE,SAAS,EAAE,CAAC;IACxB,SAAS,CAAC,EAAE,CAAC,QAAQ,EAAE,UAAU,EAAE,KAAK,IAAI,CAAC;CAC9C;AAgBD,wBAAsB,cAAc,CAClC,kBAAkB,EAAE,MAAM,EAAE,EAC5B,kBAAkB,EAAE,MAAM,EAAE,EAC5B,GAAG,EAAE,SAAS,EACd,IAAI,GAAE,qBAA0B,GAC/B,OAAO,CAAC,gBAAgB,CAAC,CA8C3B;AAaD,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB,CAoDrE"}
|
|
@@ -27,8 +27,13 @@ export async function validateDigest(digestObservations, sourceObservations, llm
|
|
|
27
27
|
onAttempt: opts.onAttempt,
|
|
28
28
|
});
|
|
29
29
|
}
|
|
30
|
-
catch {
|
|
31
|
-
|
|
30
|
+
catch (err) {
|
|
31
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
32
|
+
try {
|
|
33
|
+
process.stderr.write(`[memesh digest-validator] validation did not run: ${msg}\n`);
|
|
34
|
+
}
|
|
35
|
+
catch { }
|
|
36
|
+
return { status: 'unavailable', suspiciousClaims: [], rawResponse: '' };
|
|
32
37
|
}
|
|
33
38
|
return parseValidatorResponse(rawResponse);
|
|
34
39
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"digest-validator.js","sourceRoot":"","sources":["../../src/core/digest-validator.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"digest-validator.js","sourceRoot":"","sources":["../../src/core/digest-validator.ts"],"names":[],"mappings":"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"}
|
package/dist/core/doctor.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import fs from 'fs';
|
|
2
2
|
import { detectCapabilities, getConfigPath } from './config.js';
|
|
3
|
+
import { probeProvider } from './llm-validator.js';
|
|
3
4
|
import { openDatabase, closeDatabase, isDatabaseOpen } from '../db.js';
|
|
4
5
|
import { getUpdateCheck } from './version-check.js';
|
|
5
6
|
import { getCurrentInstallChannel, getInstallChannelSupport } from './install-channel.js';
|
|
@@ -11,6 +12,7 @@ export interface DoctorCheck {
|
|
|
11
12
|
status: DoctorCheckStatus;
|
|
12
13
|
summary: string;
|
|
13
14
|
fix?: string;
|
|
15
|
+
informational?: boolean;
|
|
14
16
|
}
|
|
15
17
|
export interface DoctorResult {
|
|
16
18
|
status: DoctorOverallStatus;
|
|
@@ -20,6 +22,9 @@ interface DoctorOptions {
|
|
|
20
22
|
packageRoot: string;
|
|
21
23
|
packageVersion: string;
|
|
22
24
|
probeHttp?: boolean;
|
|
25
|
+
probeCapabilities?: boolean;
|
|
26
|
+
embedTextImpl?: (text: string) => Promise<Float32Array | null>;
|
|
27
|
+
probeProviderImpl?: typeof probeProvider;
|
|
23
28
|
httpBaseUrl?: string;
|
|
24
29
|
platform?: NodeJS.Platform;
|
|
25
30
|
openDatabaseImpl?: typeof openDatabase;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/core/doctor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AAKpB,OAAO,EAAE,kBAAkB,EAAE,aAAa,
|
|
1
|
+
{"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/core/doctor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AAKpB,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAqB,MAAM,aAAa,CAAC;AAEnF,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,aAAa,EAAyB,cAAc,EAAE,MAAM,UAAU,CAAC;AAC9F,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,wBAAwB,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAI1F,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;AACzD,MAAM,MAAM,mBAAmB,GAAG,MAAM,GAAG,oBAAoB,GAAG,MAAM,CAAC;AAEzE,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,iBAAiB,CAAC;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;IAqBb,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,mBAAmB,CAAC;IAC5B,MAAM,EAAE,WAAW,EAAE,CAAC;CACvB;AAUD,UAAU,aAAa;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,OAAO,CAAC;IAQpB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC;IAC/D,iBAAiB,CAAC,EAAE,OAAO,aAAa,CAAC;IACzC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC;IAC3B,gBAAgB,CAAC,EAAE,OAAO,YAAY,CAAC;IACvC,iBAAiB,CAAC,EAAE,OAAO,aAAa,CAAC;IACzC,kBAAkB,CAAC,EAAE,OAAO,cAAc,CAAC;IAC3C,sBAAsB,CAAC,EAAE,OAAO,kBAAkB,CAAC;IACnD,iBAAiB,CAAC,EAAE,OAAO,aAAa,CAAC;IACzC,kBAAkB,CAAC,EAAE,OAAO,cAAc,CAAC;IAC3C,4BAA4B,CAAC,EAAE,OAAO,wBAAwB,CAAC;IAC/D,4BAA4B,CAAC,EAAE,OAAO,wBAAwB,CAAC;IAC/D,cAAc,CAAC,EAAE,OAAO,EAAE,CAAC,UAAU,CAAC;IACtC,gBAAgB,CAAC,EAAE,OAAO,EAAE,CAAC,YAAY,CAAC;IAC1C,YAAY,CAAC,EAAE,OAAO,EAAE,CAAC,QAAQ,CAAC;IAClC,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;IAMzB,sBAAsB,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK;QAAE,EAAE,EAAE,IAAI,CAAA;KAAE,GAAG;QAAE,EAAE,EAAE,KAAK,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAMhG,sBAAsB,CAAC,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;CAC9C;AAuwCD,wBAAsB,SAAS,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC,CA+M7E;AAaD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,GAAG,MAAM,EAAE,CAgBzF"}
|
package/dist/core/doctor.js
CHANGED
|
@@ -4,11 +4,14 @@ import { createHash } from 'crypto';
|
|
|
4
4
|
import { createRequire } from 'module';
|
|
5
5
|
import { pathToFileURL } from 'url';
|
|
6
6
|
import { detectCapabilities, getConfigPath } from './config.js';
|
|
7
|
+
import { embedText, isOnnxModelCached } from './embedder.js';
|
|
8
|
+
import { probeProvider } from './llm-validator.js';
|
|
7
9
|
import { openDatabase, closeDatabase, getPendingReindexInfo, isDatabaseOpen } from '../db.js';
|
|
8
10
|
import { getUpdateCheck } from './version-check.js';
|
|
9
11
|
import { getCurrentInstallChannel, getInstallChannelSupport } from './install-channel.js';
|
|
10
12
|
import { getInstallRecord } from './install-id.js';
|
|
11
13
|
import { getDbPath, memeshDir } from './paths.js';
|
|
14
|
+
const EMBEDDING_PROBE_TIMEOUT_MS = 15000;
|
|
12
15
|
const EXPECTED_HOOK_TYPES = ['PreToolUse', 'SessionStart', 'PostToolUse', 'Stop', 'PreCompact'];
|
|
13
16
|
const LOCALE_README_FILES = [
|
|
14
17
|
'README.de.md',
|
|
@@ -90,6 +93,9 @@ function resolveDatabasePath() {
|
|
|
90
93
|
function createCheck(id, label, status, summary, fix) {
|
|
91
94
|
return { id, label, status, summary, fix };
|
|
92
95
|
}
|
|
96
|
+
function createInfo(id, label, summary, fix) {
|
|
97
|
+
return { id, label, status: 'pass', summary, fix, informational: true };
|
|
98
|
+
}
|
|
93
99
|
function parseJsonFile(filePath, readFileSyncImpl) {
|
|
94
100
|
try {
|
|
95
101
|
const raw = readFileSyncImpl(filePath, 'utf8');
|
|
@@ -471,15 +477,88 @@ function verifySkillsManifest(packageRoot, existsSyncImpl, readFileSyncImpl) {
|
|
|
471
477
|
].filter(Boolean).join('; ');
|
|
472
478
|
return createCheck('skills-manifest', 'Skills + hooks integrity', 'fail', `Manifest verification failed: ${detail}.`, 'Reinstall the package: `npm install -g @pcircle/memesh`. If the problem reproduces on a fresh install, open a security issue at https://github.com/PCIRCLE-AI/memesh-llm-memory/security.');
|
|
473
479
|
}
|
|
480
|
+
async function inspectConfigParse(getConfigPathImpl, existsSyncImpl, readFileSyncImpl) {
|
|
481
|
+
const configPath = getConfigPathImpl();
|
|
482
|
+
if (!existsSyncImpl(configPath)) {
|
|
483
|
+
return createCheck('config_parse', 'Config parses', 'pass', 'No config file yet — defaults apply. This is normal for a fresh install.');
|
|
484
|
+
}
|
|
485
|
+
try {
|
|
486
|
+
const raw = readFileSyncImpl(configPath, 'utf8');
|
|
487
|
+
const parsed = JSON.parse(raw);
|
|
488
|
+
if (parsed === null || typeof parsed !== 'object' || Array.isArray(parsed)) {
|
|
489
|
+
return createCheck('config_parse', 'Config parses', 'fail', `${configPath} parsed but is not a JSON object — every setting is being ignored.`, `Fix or remove ${configPath}, then re-run memesh doctor.`);
|
|
490
|
+
}
|
|
491
|
+
return createCheck('config_parse', 'Config parses', 'pass', `${configPath} is valid JSON and its settings are in effect.`);
|
|
492
|
+
}
|
|
493
|
+
catch (err) {
|
|
494
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
495
|
+
return createCheck('config_parse', 'Config parses', 'fail', `${configPath} could not be read or parsed (${msg}). Every setting in it — LLM provider, fallbacks, embedder — is being silently ignored right now.`, `Fix the JSON or remove the file to fall back to defaults: mv ${configPath} ${configPath}.bak`);
|
|
496
|
+
}
|
|
497
|
+
}
|
|
498
|
+
async function inspectEmbeddingProbe(capabilities, probeCapabilities, embedTextImpl) {
|
|
499
|
+
if (capabilities.embeddings === 'tfidf') {
|
|
500
|
+
return createInfo('embeddings_probe', 'Embeddings work', 'No neural embedder configured — recall runs on FTS5 keyword search alone. That is a supported mode, not a fault.');
|
|
501
|
+
}
|
|
502
|
+
if (!probeCapabilities) {
|
|
503
|
+
const isLocal = capabilities.embeddings === 'onnx';
|
|
504
|
+
if (!isLocal) {
|
|
505
|
+
return createInfo('embeddings_probe', 'Embeddings work', `NOT VERIFIED. Config names "${capabilities.embeddings}", but generating a test embedding is a network call (billed on hosted providers) so it was not made — a revoked key or an unreachable host would look identical to a healthy setup here.`, 'Run: memesh doctor --probe (generates one test embedding to confirm)');
|
|
506
|
+
}
|
|
507
|
+
if (!isOnnxModelCached()) {
|
|
508
|
+
return createInfo('embeddings_probe', 'Embeddings work', `NOT VERIFIED. Config names "onnx" but the model is not in the local cache yet, and probing would download ~90 MB — which a diagnostic command must not do on its own.`, 'Run: memesh doctor --probe (downloads the model once, then verifies)');
|
|
509
|
+
}
|
|
510
|
+
}
|
|
511
|
+
let timer;
|
|
512
|
+
try {
|
|
513
|
+
const vector = await Promise.race([
|
|
514
|
+
embedTextImpl('memesh doctor embedding probe'),
|
|
515
|
+
new Promise((_, reject) => {
|
|
516
|
+
timer = setTimeout(() => reject(new Error(`no response within ${EMBEDDING_PROBE_TIMEOUT_MS / 1000}s`)), EMBEDDING_PROBE_TIMEOUT_MS);
|
|
517
|
+
}),
|
|
518
|
+
]);
|
|
519
|
+
if (!vector || vector.length === 0) {
|
|
520
|
+
return createCheck('embeddings_probe', 'Embeddings work', 'warn', `Config selects "${capabilities.embeddings}" but generating a test embedding returned nothing. Semantic recall is degraded to FTS5-only; keyword search still works.`, 'Run: memesh doctor --probe for detail, or check network access to the embedding provider.');
|
|
521
|
+
}
|
|
522
|
+
return createCheck('embeddings_probe', 'Embeddings work', 'pass', `Generated a ${vector.length}-dim test embedding via "${capabilities.embeddings}".`);
|
|
523
|
+
}
|
|
524
|
+
catch (err) {
|
|
525
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
526
|
+
return createCheck('embeddings_probe', 'Embeddings work', 'warn', `Config selects "${capabilities.embeddings}" but the embedder threw (${msg}). Semantic recall is degraded to FTS5-only.`, 'Check the embedding provider is reachable, or set: memesh config set embedder.provider onnx');
|
|
527
|
+
}
|
|
528
|
+
finally {
|
|
529
|
+
clearTimeout(timer);
|
|
530
|
+
}
|
|
531
|
+
}
|
|
532
|
+
async function inspectLlmProbe(capabilities, probeCapabilities, probeProviderImpl) {
|
|
533
|
+
const llm = capabilities.llm;
|
|
534
|
+
if (!llm) {
|
|
535
|
+
return createInfo('llm_probe', 'LLM reachable', 'No LLM configured — Core Mode. Write-side features (consolidate, lessons, auto-tag, dream) are off by design.');
|
|
536
|
+
}
|
|
537
|
+
if (!probeCapabilities) {
|
|
538
|
+
return createInfo('llm_probe', 'LLM reachable', `NOT VERIFIED. Config names ${llm.provider} (${llm.model ?? 'default'}), but no live call was made — an expired key or an unreachable host would look identical to a healthy setup here.`, 'Run: memesh doctor --probe (makes one small live call to confirm)');
|
|
539
|
+
}
|
|
540
|
+
try {
|
|
541
|
+
const result = await probeProviderImpl(llm.provider, llm.apiKey);
|
|
542
|
+
if (result.valid) {
|
|
543
|
+
return createCheck('llm_probe', 'LLM reachable', 'pass', `${llm.provider} answered a live probe.`);
|
|
544
|
+
}
|
|
545
|
+
return createCheck('llm_probe', 'LLM reachable', 'fail', `${llm.provider} is configured but did not answer: ${result.error ?? 'unknown error'}. Every LLM-backed feature is silently doing nothing.`, 'Check the API key / host, then re-run: memesh doctor --probe');
|
|
546
|
+
}
|
|
547
|
+
catch (err) {
|
|
548
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
549
|
+
return createCheck('llm_probe', 'LLM reachable', 'fail', `${llm.provider} probe threw: ${msg}. Every LLM-backed feature is silently doing nothing.`, 'Check the API key / host, then re-run: memesh doctor --probe');
|
|
550
|
+
}
|
|
551
|
+
}
|
|
474
552
|
function summarizeOverallStatus(checks) {
|
|
475
|
-
|
|
553
|
+
const assertions = checks.filter((check) => !check.informational);
|
|
554
|
+
if (assertions.some((check) => check.status === 'fail'))
|
|
476
555
|
return 'FAIL';
|
|
477
|
-
if (
|
|
556
|
+
if (assertions.some((check) => check.status === 'warn'))
|
|
478
557
|
return 'PASS_WITH_CONCERNS';
|
|
479
558
|
return 'PASS';
|
|
480
559
|
}
|
|
481
560
|
export async function runDoctor(options) {
|
|
482
|
-
const { packageRoot, packageVersion, probeHttp = false, httpBaseUrl = 'http://127.0.0.1:3737', platform = process.platform, openDatabaseImpl = openDatabase, closeDatabaseImpl = closeDatabase, isDatabaseOpenImpl = isDatabaseOpen, detectCapabilitiesImpl = detectCapabilities, getConfigPathImpl = getConfigPath, getUpdateCheckImpl = getUpdateCheck, getCurrentInstallChannelImpl = getCurrentInstallChannel, getInstallChannelSupportImpl = getInstallChannelSupport, existsSyncImpl = fs.existsSync, readFileSyncImpl = fs.readFileSync, statSyncImpl = fs.statSync, fetchImpl = fetch, nativeBindingProbeImpl, resolveShellMemeshImpl = defaultResolveShellMemesh, } = options;
|
|
561
|
+
const { packageRoot, packageVersion, probeHttp = false, probeCapabilities = false, embedTextImpl = embedText, probeProviderImpl = probeProvider, httpBaseUrl = 'http://127.0.0.1:3737', platform = process.platform, openDatabaseImpl = openDatabase, closeDatabaseImpl = closeDatabase, isDatabaseOpenImpl = isDatabaseOpen, detectCapabilitiesImpl = detectCapabilities, getConfigPathImpl = getConfigPath, getUpdateCheckImpl = getUpdateCheck, getCurrentInstallChannelImpl = getCurrentInstallChannel, getInstallChannelSupportImpl = getInstallChannelSupport, existsSyncImpl = fs.existsSync, readFileSyncImpl = fs.readFileSync, statSyncImpl = fs.statSync, fetchImpl = fetch, nativeBindingProbeImpl, resolveShellMemeshImpl = defaultResolveShellMemesh, } = options;
|
|
483
562
|
const wasDbOpenBeforeUs = isDatabaseOpenImpl();
|
|
484
563
|
const safeCloseDatabaseImpl = wasDbOpenBeforeUs
|
|
485
564
|
? () => undefined
|
|
@@ -571,7 +650,10 @@ export async function runDoctor(options) {
|
|
|
571
650
|
checks.push(inspectShellCli(install, packageRoot, resolveShellMemeshImpl));
|
|
572
651
|
checks.push(verifySkillsManifest(packageRoot, existsSyncImpl, readFileSyncImpl));
|
|
573
652
|
const capabilities = detectCapabilitiesImpl();
|
|
574
|
-
checks.push(
|
|
653
|
+
checks.push(createInfo('capabilities', 'Capabilities (configured)', `Search level ${capabilities.searchLevel} (${capabilities.searchLevel === 1 ? 'Smart Mode' : 'Core'}); embeddings: ${capabilities.embeddings}; LLM: ${capabilities.llm ? `${capabilities.llm.provider} (${capabilities.llm.model ?? 'default'})` : 'not configured'}. Configured values only — see the probe rows below for what actually works.`));
|
|
654
|
+
checks.push(await inspectConfigParse(getConfigPathImpl, existsSyncImpl, readFileSyncImpl));
|
|
655
|
+
checks.push(await inspectEmbeddingProbe(capabilities, probeCapabilities, embedTextImpl));
|
|
656
|
+
checks.push(await inspectLlmProbe(capabilities, probeCapabilities, probeProviderImpl));
|
|
575
657
|
checks.push(await inspectUpdateStatus(packageVersion, getUpdateCheckImpl, installSupport));
|
|
576
658
|
try {
|
|
577
659
|
const record = getInstallRecord();
|
|
@@ -602,7 +684,7 @@ export function formatDoctorReport(result, packageVersion) {
|
|
|
602
684
|
const lines = [`MeMesh doctor v${packageVersion}`, `Overall: ${result.status}`];
|
|
603
685
|
for (const check of result.checks) {
|
|
604
686
|
lines.push('');
|
|
605
|
-
lines.push(`[${iconForStatus(check.status)}] ${check.label}`);
|
|
687
|
+
lines.push(`[${check.informational ? 'INFO' : iconForStatus(check.status)}] ${check.label}`);
|
|
606
688
|
lines.push(` ${check.summary}`);
|
|
607
689
|
if (check.fix) {
|
|
608
690
|
lines.push(` Fix: ${check.fix}`);
|