mindlore 0.5.0 → 0.5.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/README.md +15 -2
- package/dist/scripts/fetch-raw.d.ts +2 -0
- package/dist/scripts/fetch-raw.d.ts.map +1 -0
- package/dist/scripts/fetch-raw.js +124 -0
- package/dist/scripts/fetch-raw.js.map +1 -0
- package/dist/scripts/init.js +45 -3
- package/dist/scripts/init.js.map +1 -1
- package/dist/scripts/lib/constants.d.ts +13 -0
- package/dist/scripts/lib/constants.d.ts.map +1 -1
- package/dist/scripts/lib/constants.js +24 -4
- package/dist/scripts/lib/constants.js.map +1 -1
- package/dist/scripts/lib/db-helpers.d.ts +12 -2
- package/dist/scripts/lib/db-helpers.d.ts.map +1 -1
- package/dist/scripts/lib/db-helpers.js +36 -0
- package/dist/scripts/lib/db-helpers.js.map +1 -1
- package/dist/scripts/lib/hybrid-search.d.ts +0 -2
- package/dist/scripts/lib/hybrid-search.d.ts.map +1 -1
- package/dist/scripts/lib/hybrid-search.js +7 -1
- package/dist/scripts/lib/hybrid-search.js.map +1 -1
- package/dist/scripts/lib/migrations-v051.d.ts +3 -0
- package/dist/scripts/lib/migrations-v051.d.ts.map +1 -0
- package/dist/scripts/lib/migrations-v051.js +24 -0
- package/dist/scripts/lib/migrations-v051.js.map +1 -0
- package/dist/scripts/lib/migrations-v052.d.ts +3 -0
- package/dist/scripts/lib/migrations-v052.d.ts.map +1 -0
- package/dist/scripts/lib/migrations-v052.js +23 -0
- package/dist/scripts/lib/migrations-v052.js.map +1 -0
- package/dist/scripts/lib/migrations.d.ts +1 -0
- package/dist/scripts/lib/migrations.d.ts.map +1 -1
- package/dist/scripts/lib/migrations.js +3 -1
- package/dist/scripts/lib/migrations.js.map +1 -1
- package/dist/scripts/lib/privacy-filter.d.ts +3 -0
- package/dist/scripts/lib/privacy-filter.d.ts.map +1 -0
- package/dist/scripts/lib/privacy-filter.js +28 -0
- package/dist/scripts/lib/privacy-filter.js.map +1 -0
- package/dist/scripts/lib/similarity.d.ts +12 -0
- package/dist/scripts/lib/similarity.d.ts.map +1 -0
- package/dist/scripts/lib/similarity.js +64 -0
- package/dist/scripts/lib/similarity.js.map +1 -0
- package/dist/scripts/lib/skeleton.d.ts +2 -0
- package/dist/scripts/lib/skeleton.d.ts.map +1 -0
- package/dist/scripts/lib/skeleton.js +99 -0
- package/dist/scripts/lib/skeleton.js.map +1 -0
- package/dist/scripts/lib/skill-memory.d.ts +13 -0
- package/dist/scripts/lib/skill-memory.d.ts.map +1 -0
- package/dist/scripts/lib/skill-memory.js +94 -0
- package/dist/scripts/lib/skill-memory.js.map +1 -0
- package/dist/scripts/mindlore-fts5-index.js +18 -3
- package/dist/scripts/mindlore-fts5-index.js.map +1 -1
- package/dist/scripts/mindlore-health-check.d.ts +1 -1
- package/dist/scripts/mindlore-health-check.d.ts.map +1 -1
- package/dist/scripts/mindlore-health-check.js +117 -96
- package/dist/scripts/mindlore-health-check.js.map +1 -1
- package/dist/scripts/quality-populate.js +8 -4
- package/dist/scripts/quality-populate.js.map +1 -1
- package/dist/tests/catch-up.test.d.ts +2 -0
- package/dist/tests/catch-up.test.d.ts.map +1 -0
- package/dist/tests/catch-up.test.js +88 -0
- package/dist/tests/catch-up.test.js.map +1 -0
- package/dist/tests/cc-memory-sync.test.d.ts +2 -0
- package/dist/tests/cc-memory-sync.test.d.ts.map +1 -0
- package/dist/tests/cc-memory-sync.test.js +121 -0
- package/dist/tests/cc-memory-sync.test.js.map +1 -0
- package/dist/tests/episode-file.test.d.ts +2 -0
- package/dist/tests/episode-file.test.d.ts.map +1 -0
- package/dist/tests/episode-file.test.js +82 -0
- package/dist/tests/episode-file.test.js.map +1 -0
- package/dist/tests/fetch-raw.test.d.ts +2 -0
- package/dist/tests/fetch-raw.test.d.ts.map +1 -0
- package/dist/tests/fetch-raw.test.js +43 -0
- package/dist/tests/fetch-raw.test.js.map +1 -0
- package/dist/tests/helpers/db.d.ts +1 -0
- package/dist/tests/helpers/db.d.ts.map +1 -1
- package/dist/tests/helpers/db.js +10 -0
- package/dist/tests/helpers/db.js.map +1 -1
- package/dist/tests/hook-logging.test.d.ts +2 -0
- package/dist/tests/hook-logging.test.d.ts.map +1 -0
- package/dist/tests/hook-logging.test.js +108 -0
- package/dist/tests/hook-logging.test.js.map +1 -0
- package/dist/tests/index-cli-embed.test.d.ts +7 -0
- package/dist/tests/index-cli-embed.test.d.ts.map +1 -0
- package/dist/tests/index-cli-embed.test.js +128 -0
- package/dist/tests/index-cli-embed.test.js.map +1 -0
- package/dist/tests/privacy-filter.test.d.ts +2 -0
- package/dist/tests/privacy-filter.test.d.ts.map +1 -0
- package/dist/tests/privacy-filter.test.js +56 -0
- package/dist/tests/privacy-filter.test.js.map +1 -0
- package/dist/tests/resolve-hook-common.test.d.ts +2 -0
- package/dist/tests/resolve-hook-common.test.d.ts.map +1 -0
- package/dist/tests/resolve-hook-common.test.js +30 -0
- package/dist/tests/resolve-hook-common.test.js.map +1 -0
- package/dist/tests/schema-version.test.js +28 -0
- package/dist/tests/schema-version.test.js.map +1 -1
- package/dist/tests/search-cli-hybrid.test.d.ts +6 -0
- package/dist/tests/search-cli-hybrid.test.d.ts.map +1 -0
- package/dist/tests/search-cli-hybrid.test.js +103 -0
- package/dist/tests/search-cli-hybrid.test.js.map +1 -0
- package/dist/tests/search-hook.test.js +33 -0
- package/dist/tests/search-hook.test.js.map +1 -1
- package/dist/tests/search-offload.test.d.ts +2 -0
- package/dist/tests/search-offload.test.d.ts.map +1 -0
- package/dist/tests/search-offload.test.js +34 -0
- package/dist/tests/search-offload.test.js.map +1 -0
- package/dist/tests/similarity.test.d.ts +2 -0
- package/dist/tests/similarity.test.d.ts.map +1 -0
- package/dist/tests/similarity.test.js +61 -0
- package/dist/tests/similarity.test.js.map +1 -0
- package/dist/tests/skeleton.test.d.ts +2 -0
- package/dist/tests/skeleton.test.d.ts.map +1 -0
- package/dist/tests/skeleton.test.js +116 -0
- package/dist/tests/skeleton.test.js.map +1 -0
- package/dist/tests/skill-memory-api.test.d.ts +2 -0
- package/dist/tests/skill-memory-api.test.d.ts.map +1 -0
- package/dist/tests/skill-memory-api.test.js +62 -0
- package/dist/tests/skill-memory-api.test.js.map +1 -0
- package/dist/tests/skill-memory.test.d.ts +2 -0
- package/dist/tests/skill-memory.test.d.ts.map +1 -0
- package/dist/tests/skill-memory.test.js +67 -0
- package/dist/tests/skill-memory.test.js.map +1 -0
- package/dist/tests/token-budget.test.d.ts +2 -0
- package/dist/tests/token-budget.test.d.ts.map +1 -0
- package/dist/tests/token-budget.test.js +32 -0
- package/dist/tests/token-budget.test.js.map +1 -0
- package/dist/tests/wiki-lint.test.d.ts +2 -0
- package/dist/tests/wiki-lint.test.d.ts.map +1 -0
- package/dist/tests/wiki-lint.test.js +47 -0
- package/dist/tests/wiki-lint.test.js.map +1 -0
- package/hooks/lib/mindlore-common.cjs +109 -2
- package/hooks/mindlore-cwd-changed.cjs +2 -2
- package/hooks/mindlore-decision-detector.cjs +2 -2
- package/hooks/mindlore-dont-repeat.cjs +2 -2
- package/hooks/mindlore-fts5-sync.cjs +2 -2
- package/hooks/mindlore-index.cjs +141 -3
- package/hooks/mindlore-model-router.cjs +2 -2
- package/hooks/mindlore-post-compact.cjs +2 -2
- package/hooks/mindlore-post-read.cjs +2 -2
- package/hooks/mindlore-pre-compact.cjs +2 -2
- package/hooks/mindlore-read-guard.cjs +15 -3
- package/hooks/mindlore-research-guard.cjs +2 -2
- package/hooks/mindlore-search.cjs +69 -41
- package/hooks/mindlore-session-end.cjs +129 -39
- package/hooks/mindlore-session-focus.cjs +24 -3
- package/package.json +6 -5
- package/plugin.json +29 -2
- package/skills/mindlore-diary/SKILL.md +76 -0
- package/skills/mindlore-ingest/SKILL.md +48 -50
- package/skills/mindlore-log/SKILL.md +3 -143
- package/skills/mindlore-reflect/SKILL.md +104 -0
- package/templates/config.json +6 -1
|
@@ -11,6 +11,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
11
11
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
12
12
|
};
|
|
13
13
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
|
+
exports.detectWikiContradictions = detectWikiContradictions;
|
|
14
15
|
const fs_1 = __importDefault(require("fs"));
|
|
15
16
|
const path_1 = __importDefault(require("path"));
|
|
16
17
|
const constants_js_1 = require("./lib/constants.js");
|
|
@@ -24,6 +25,55 @@ function parseFrontmatter(content) {
|
|
|
24
25
|
function getAllMdFiles(dir) {
|
|
25
26
|
return _getAllMd(dir, new Set());
|
|
26
27
|
}
|
|
28
|
+
// ── Wiki lint ──────────────────────────────────────────────────────────
|
|
29
|
+
function detectWikiContradictions(baseDir) {
|
|
30
|
+
const sourcesDir = path_1.default.join(baseDir, 'sources');
|
|
31
|
+
const domainsDir = path_1.default.join(baseDir, 'domains');
|
|
32
|
+
const warnings = [];
|
|
33
|
+
const tagMap = new Map();
|
|
34
|
+
for (const dir of [sourcesDir, domainsDir]) {
|
|
35
|
+
if (!fs_1.default.existsSync(dir))
|
|
36
|
+
continue;
|
|
37
|
+
for (const file of fs_1.default.readdirSync(dir).filter((f) => f.endsWith('.md'))) {
|
|
38
|
+
const filePath = path_1.default.join(dir, file);
|
|
39
|
+
const content = fs_1.default.readFileSync(filePath, 'utf8');
|
|
40
|
+
const tagMatch = content.match(/tags:\s*\[([^\]]+)\]/);
|
|
41
|
+
if (!tagMatch)
|
|
42
|
+
continue;
|
|
43
|
+
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion -- tagMatch[1] exists when tagMatch is truthy (capture group 1)
|
|
44
|
+
const tags = tagMatch[1].split(',').map((t) => t.trim().replace(/['"]/g, ''));
|
|
45
|
+
for (const tag of tags) {
|
|
46
|
+
if (!tagMap.has(tag))
|
|
47
|
+
tagMap.set(tag, []);
|
|
48
|
+
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion -- tagMap.has(tag) check above ensures entry exists
|
|
49
|
+
tagMap.get(tag).push({ path: filePath, content });
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
for (const [tag, files] of tagMap) {
|
|
54
|
+
if (files.length < 2)
|
|
55
|
+
continue;
|
|
56
|
+
const numericClaims = new Map();
|
|
57
|
+
for (const { path: fp, content } of files) {
|
|
58
|
+
const matches = content.matchAll(/(\w+)\s+(?:has|uses|contains|supports)\s+(\d+)\s+(\w+)/gi);
|
|
59
|
+
for (const m of matches) {
|
|
60
|
+
const key = `${m[1]?.toLowerCase()} ${m[3]?.toLowerCase()}`;
|
|
61
|
+
if (!numericClaims.has(key))
|
|
62
|
+
numericClaims.set(key, []);
|
|
63
|
+
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion -- numericClaims.has(key) check above ensures entry exists; m[2] is capture group 2 of a successful match
|
|
64
|
+
numericClaims.get(key).push({ file: fp, value: m[2] });
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
for (const [claim, entries] of numericClaims) {
|
|
68
|
+
const values = new Set(entries.map((e) => e.value));
|
|
69
|
+
if (values.size > 1) {
|
|
70
|
+
const fileNames = entries.map((e) => path_1.default.basename(e.file)).join(', ');
|
|
71
|
+
warnings.push(`[${tag}] "${claim}" has conflicting values: ${[...values].join(' vs ')} in ${fileNames}`);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
return warnings;
|
|
76
|
+
}
|
|
27
77
|
class HealthChecker {
|
|
28
78
|
baseDir;
|
|
29
79
|
results = [];
|
|
@@ -33,6 +83,13 @@ class HealthChecker {
|
|
|
33
83
|
constructor(baseDir) {
|
|
34
84
|
this.baseDir = baseDir;
|
|
35
85
|
}
|
|
86
|
+
withCheckedDb(fn) {
|
|
87
|
+
const dbPath = path_1.default.join(this.baseDir, constants_js_1.DB_NAME);
|
|
88
|
+
if (!fs_1.default.existsSync(dbPath))
|
|
89
|
+
return { warn: true, detail: 'database missing' };
|
|
90
|
+
const result = (0, db_helpers_js_1.withReadonlyDb)(dbPath, fn);
|
|
91
|
+
return result ?? { ok: false, detail: 'database open failed' };
|
|
92
|
+
}
|
|
36
93
|
check(name, fn) {
|
|
37
94
|
try {
|
|
38
95
|
const result = fn();
|
|
@@ -100,56 +157,19 @@ class HealthChecker {
|
|
|
100
157
|
});
|
|
101
158
|
}
|
|
102
159
|
checkDatabase() {
|
|
103
|
-
this.check('mindlore.db FTS5', () => {
|
|
104
|
-
const
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
let Database;
|
|
109
|
-
try {
|
|
110
|
-
Database = require('better-sqlite3');
|
|
111
|
-
}
|
|
112
|
-
catch (_err) {
|
|
113
|
-
return { warn: true, detail: 'better-sqlite3 not available, cannot verify' };
|
|
114
|
-
}
|
|
115
|
-
const db = new Database(dbPath, { readonly: true });
|
|
116
|
-
try {
|
|
117
|
-
const result = (0, db_helpers_js_1.dbGet)(db, 'SELECT count(*) as cnt FROM mindlore_fts') ?? { cnt: 0 };
|
|
118
|
-
const hashResult = (0, db_helpers_js_1.dbGet)(db, 'SELECT count(*) as cnt FROM file_hashes') ?? { cnt: 0 };
|
|
119
|
-
const schemaVersion = detectSchemaVersion(db);
|
|
120
|
-
if (schemaVersion < 11) {
|
|
121
|
-
return {
|
|
122
|
-
warn: true,
|
|
123
|
-
detail: `${result.cnt} indexed, ${hashResult.cnt} hashes — ${schemaVersion}-col schema (run: npx mindlore init to upgrade to 11-col)`,
|
|
124
|
-
};
|
|
125
|
-
}
|
|
160
|
+
this.check('mindlore.db FTS5', () => this.withCheckedDb((db) => {
|
|
161
|
+
const result = (0, db_helpers_js_1.dbGet)(db, 'SELECT count(*) as cnt FROM mindlore_fts') ?? { cnt: 0 };
|
|
162
|
+
const hashResult = (0, db_helpers_js_1.dbGet)(db, 'SELECT count(*) as cnt FROM file_hashes') ?? { cnt: 0 };
|
|
163
|
+
const schemaVersion = detectSchemaVersion(db);
|
|
164
|
+
if (schemaVersion < 11) {
|
|
126
165
|
return {
|
|
127
|
-
|
|
128
|
-
detail: `${result.cnt} indexed, ${hashResult.cnt} hashes
|
|
166
|
+
warn: true,
|
|
167
|
+
detail: `${result.cnt} indexed, ${hashResult.cnt} hashes — ${schemaVersion}-col schema (run: npx mindlore init to upgrade to 11-col)`,
|
|
129
168
|
};
|
|
130
169
|
}
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
}
|
|
135
|
-
finally {
|
|
136
|
-
db.close();
|
|
137
|
-
}
|
|
138
|
-
});
|
|
139
|
-
// Check vec table + schema version (v0.5.0) — reuse single DB open
|
|
140
|
-
this.check('documents_vec table', () => {
|
|
141
|
-
const dbPath = path_1.default.join(this.baseDir, constants_js_1.DB_NAME);
|
|
142
|
-
if (!fs_1.default.existsSync(dbPath)) {
|
|
143
|
-
return { warn: true, detail: 'database missing' };
|
|
144
|
-
}
|
|
145
|
-
let Database;
|
|
146
|
-
try {
|
|
147
|
-
Database = require('better-sqlite3');
|
|
148
|
-
}
|
|
149
|
-
catch (_err) {
|
|
150
|
-
return { warn: true, detail: 'better-sqlite3 not available' };
|
|
151
|
-
}
|
|
152
|
-
const db = new Database(dbPath, { readonly: true });
|
|
170
|
+
return { ok: true, detail: `${result.cnt} indexed, ${hashResult.cnt} hashes, 11-col schema` };
|
|
171
|
+
}));
|
|
172
|
+
this.check('documents_vec table', () => this.withCheckedDb((db) => {
|
|
153
173
|
try {
|
|
154
174
|
const sqliteVec = require('sqlite-vec');
|
|
155
175
|
sqliteVec.load(db);
|
|
@@ -159,23 +179,8 @@ class HealthChecker {
|
|
|
159
179
|
catch (_err) {
|
|
160
180
|
return { warn: true, detail: 'sqlite-vec not available or vec table not created (run: npm run index -- --embed)' };
|
|
161
181
|
}
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
}
|
|
165
|
-
});
|
|
166
|
-
this.check('schema version', () => {
|
|
167
|
-
const dbPath = path_1.default.join(this.baseDir, constants_js_1.DB_NAME);
|
|
168
|
-
if (!fs_1.default.existsSync(dbPath)) {
|
|
169
|
-
return { warn: true, detail: 'database missing' };
|
|
170
|
-
}
|
|
171
|
-
let Database;
|
|
172
|
-
try {
|
|
173
|
-
Database = require('better-sqlite3');
|
|
174
|
-
}
|
|
175
|
-
catch (_err) {
|
|
176
|
-
return { warn: true, detail: 'better-sqlite3 not available' };
|
|
177
|
-
}
|
|
178
|
-
const db = new Database(dbPath, { readonly: true });
|
|
182
|
+
}));
|
|
183
|
+
this.check('schema version', () => this.withCheckedDb((db) => {
|
|
179
184
|
try {
|
|
180
185
|
const { getSchemaVersion } = require('./lib/schema-version.js');
|
|
181
186
|
const version = getSchemaVersion(db);
|
|
@@ -184,50 +189,25 @@ class HealthChecker {
|
|
|
184
189
|
catch (_err) {
|
|
185
190
|
return { warn: true, detail: 'schema_versions table missing' };
|
|
186
191
|
}
|
|
187
|
-
|
|
188
|
-
db.close();
|
|
189
|
-
}
|
|
190
|
-
});
|
|
192
|
+
}));
|
|
191
193
|
}
|
|
192
194
|
checkOrphans() {
|
|
193
195
|
this.check('Orphan files', () => {
|
|
194
|
-
const dbPath = path_1.default.join(this.baseDir, constants_js_1.DB_NAME);
|
|
195
|
-
if (!fs_1.default.existsSync(dbPath)) {
|
|
196
|
-
return { warn: true, detail: 'no database, cannot check' };
|
|
197
|
-
}
|
|
198
|
-
let Database;
|
|
199
|
-
try {
|
|
200
|
-
Database = require('better-sqlite3');
|
|
201
|
-
}
|
|
202
|
-
catch (_err) {
|
|
203
|
-
return { warn: true, detail: 'better-sqlite3 not available' };
|
|
204
|
-
}
|
|
205
196
|
const mdFiles = getAllMdFiles(this.baseDir).filter(constants_js_1.isContentFile);
|
|
206
|
-
|
|
207
|
-
try {
|
|
197
|
+
return this.withCheckedDb((db) => {
|
|
208
198
|
const indexed = new Set();
|
|
209
199
|
const rows = (0, db_helpers_js_1.dbAll)(db, 'SELECT path FROM file_hashes');
|
|
210
200
|
for (const row of rows) {
|
|
211
201
|
indexed.add(path_1.default.resolve(row.path));
|
|
212
202
|
}
|
|
213
203
|
const orphans = mdFiles.filter((f) => !indexed.has(path_1.default.resolve(f)));
|
|
214
|
-
if (orphans.length === 0)
|
|
204
|
+
if (orphans.length === 0)
|
|
215
205
|
return { ok: true, detail: 'no orphans' };
|
|
216
|
-
}
|
|
217
206
|
if (orphans.length <= 3) {
|
|
218
|
-
return {
|
|
219
|
-
warn: true,
|
|
220
|
-
detail: `${orphans.length} unindexed: ${orphans.map((f) => path_1.default.basename(f)).join(', ')}`,
|
|
221
|
-
};
|
|
207
|
+
return { warn: true, detail: `${orphans.length} unindexed: ${orphans.map((f) => path_1.default.basename(f)).join(', ')}` };
|
|
222
208
|
}
|
|
223
|
-
return {
|
|
224
|
-
|
|
225
|
-
detail: `${orphans.length} unindexed files — run: npm run index`,
|
|
226
|
-
};
|
|
227
|
-
}
|
|
228
|
-
finally {
|
|
229
|
-
db.close();
|
|
230
|
-
}
|
|
209
|
+
return { ok: false, detail: `${orphans.length} unindexed files — run: npm run index` };
|
|
210
|
+
});
|
|
231
211
|
});
|
|
232
212
|
}
|
|
233
213
|
checkFrontmatter() {
|
|
@@ -338,6 +318,41 @@ class HealthChecker {
|
|
|
338
318
|
return { warn: true, detail: `${conflicts.length} tag conflicts: ${conflicts.slice(0, 2).join('; ')}` };
|
|
339
319
|
});
|
|
340
320
|
}
|
|
321
|
+
checkSourceTypeColumn() {
|
|
322
|
+
this.check('source_type column', () => this.withCheckedDb((db) => {
|
|
323
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion -- pragma returns array
|
|
324
|
+
const cols = db.pragma('table_info(file_hashes)');
|
|
325
|
+
const has = cols.some(c => c.name === 'source_type');
|
|
326
|
+
return has
|
|
327
|
+
? { ok: true, detail: 'source_type column present' }
|
|
328
|
+
: { warn: true, detail: 'source_type column missing — run: npm run index' };
|
|
329
|
+
}));
|
|
330
|
+
}
|
|
331
|
+
checkCcMemorySync() {
|
|
332
|
+
this.check('CC memory sync', () => this.withCheckedDb((db) => {
|
|
333
|
+
const row = (0, db_helpers_js_1.dbGet)(db, 'SELECT COUNT(*) as cnt FROM mindlore_fts WHERE category = ?', constants_js_1.CC_MEMORY_CATEGORY);
|
|
334
|
+
const count = row?.cnt ?? 0;
|
|
335
|
+
return count > 0
|
|
336
|
+
? { ok: true, detail: `${count} CC memory entries synced` }
|
|
337
|
+
: { warn: true, detail: 'No CC memory synced yet — will sync on next file change' };
|
|
338
|
+
}));
|
|
339
|
+
}
|
|
340
|
+
checkWikiContradictions() {
|
|
341
|
+
this.check('wiki-lint', () => {
|
|
342
|
+
const warnings = detectWikiContradictions(this.baseDir);
|
|
343
|
+
return warnings.length === 0
|
|
344
|
+
? { ok: true, detail: 'No contradictions detected' }
|
|
345
|
+
: { warn: true, detail: `${warnings.length} potential contradiction(s):\n${warnings.join('\n')}` };
|
|
346
|
+
});
|
|
347
|
+
}
|
|
348
|
+
checkSkillMemoryTable() {
|
|
349
|
+
this.check('skill-memory-table', () => this.withCheckedDb((db) => {
|
|
350
|
+
const table = (0, db_helpers_js_1.dbGet)(db, "SELECT name FROM sqlite_master WHERE type='table' AND name='skill_memory'");
|
|
351
|
+
return table
|
|
352
|
+
? { ok: true, detail: 'skill_memory table exists' }
|
|
353
|
+
: { warn: true, detail: 'skill_memory table missing (run npm run index)' };
|
|
354
|
+
}));
|
|
355
|
+
}
|
|
341
356
|
run() {
|
|
342
357
|
this.checkDirectories();
|
|
343
358
|
this.checkSchema();
|
|
@@ -347,6 +362,10 @@ class HealthChecker {
|
|
|
347
362
|
this.checkFrontmatter();
|
|
348
363
|
this.checkStaleDeltas();
|
|
349
364
|
this.checkConflictingAnalyses();
|
|
365
|
+
this.checkSourceTypeColumn();
|
|
366
|
+
this.checkCcMemorySync();
|
|
367
|
+
this.checkWikiContradictions();
|
|
368
|
+
this.checkSkillMemoryTable();
|
|
350
369
|
return this;
|
|
351
370
|
}
|
|
352
371
|
report() {
|
|
@@ -372,5 +391,7 @@ function main() {
|
|
|
372
391
|
const healthy = checker.run().report();
|
|
373
392
|
process.exit(healthy ? 0 : 1);
|
|
374
393
|
}
|
|
375
|
-
main
|
|
394
|
+
const isMain = typeof require !== 'undefined' && require.main === module;
|
|
395
|
+
if (isMain)
|
|
396
|
+
main();
|
|
376
397
|
//# sourceMappingURL=mindlore-health-check.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mindlore-health-check.js","sourceRoot":"","sources":["../../scripts/mindlore-health-check.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"mindlore-health-check.js","sourceRoot":"","sources":["../../scripts/mindlore-health-check.ts"],"names":[],"mappings":"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"}
|
|
@@ -22,12 +22,16 @@ function resolveQuality(meta) {
|
|
|
22
22
|
return constants_js_1.QUALITY_HEURISTICS[sourceType];
|
|
23
23
|
}
|
|
24
24
|
// URL-based fallback when source_type is missing
|
|
25
|
-
|
|
26
|
-
|
|
25
|
+
let hostname = '';
|
|
26
|
+
try {
|
|
27
|
+
hostname = new URL(String(meta.source_url || '')).hostname;
|
|
28
|
+
}
|
|
29
|
+
catch { /* invalid URL */ }
|
|
30
|
+
if (hostname === 'github.com' || hostname.endsWith('.github.com'))
|
|
27
31
|
return 'high';
|
|
28
|
-
if (
|
|
32
|
+
if (hostname.startsWith('docs.') || hostname.startsWith('developer.'))
|
|
29
33
|
return 'high';
|
|
30
|
-
if (
|
|
34
|
+
if (hostname === 'youtube.com' || hostname === 'www.youtube.com' || hostname === 'youtu.be')
|
|
31
35
|
return 'medium';
|
|
32
36
|
return 'medium';
|
|
33
37
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"quality-populate.js","sourceRoot":"","sources":["../../scripts/quality-populate.ts"],"names":[],"mappings":";;AAEA;;;;;;;GAOG;;;;;AAEH,4CAAoB;AACpB,gDAAwB;AACxB,qDAA6H;AAO7H,MAAM,EAAE,gBAAgB,EAAE,YAAY,EAAE,GAAe,OAAO,CAAC,IAAA,gCAAiB,EAAC,SAAS,CAAC,CAAC,CAAC;AAE7F,SAAS,cAAc,CAAC,IAA6B;IACnD,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;IAChE,IAAI,UAAU,IAAI,iCAAkB,CAAC,UAAU,CAAC,EAAE,CAAC;QACjD,OAAO,iCAAkB,CAAC,UAAU,CAAC,CAAC;IACxC,CAAC;IACD,iDAAiD;IACjD,
|
|
1
|
+
{"version":3,"file":"quality-populate.js","sourceRoot":"","sources":["../../scripts/quality-populate.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"catch-up.test.d.ts","sourceRoot":"","sources":["../../tests/catch-up.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const fs_1 = __importDefault(require("fs"));
|
|
7
|
+
const path_1 = __importDefault(require("path"));
|
|
8
|
+
const os_1 = __importDefault(require("os"));
|
|
9
|
+
const better_sqlite3_1 = __importDefault(require("better-sqlite3"));
|
|
10
|
+
const child_process_1 = require("child_process");
|
|
11
|
+
const crypto_1 = __importDefault(require("crypto"));
|
|
12
|
+
describe('FTS5 catch-up mechanism', () => {
|
|
13
|
+
let tmpDir;
|
|
14
|
+
let mindloreDir;
|
|
15
|
+
let rawDir;
|
|
16
|
+
let dbPath;
|
|
17
|
+
beforeEach(() => {
|
|
18
|
+
tmpDir = fs_1.default.mkdtempSync(path_1.default.join(os_1.default.tmpdir(), 'mindlore-catchup-'));
|
|
19
|
+
mindloreDir = path_1.default.join(tmpDir, '.mindlore');
|
|
20
|
+
rawDir = path_1.default.join(mindloreDir, 'raw');
|
|
21
|
+
dbPath = path_1.default.join(mindloreDir, 'mindlore.db');
|
|
22
|
+
fs_1.default.mkdirSync(rawDir, { recursive: true });
|
|
23
|
+
const db = new better_sqlite3_1.default(dbPath);
|
|
24
|
+
db.exec(`
|
|
25
|
+
CREATE VIRTUAL TABLE IF NOT EXISTS mindlore_fts USING fts5(
|
|
26
|
+
path, slug, description, type, category, title, content, tags, quality, date_captured, project,
|
|
27
|
+
tokenize='porter unicode61'
|
|
28
|
+
);
|
|
29
|
+
CREATE TABLE IF NOT EXISTS file_hashes (
|
|
30
|
+
path TEXT PRIMARY KEY,
|
|
31
|
+
content_hash TEXT,
|
|
32
|
+
last_indexed TEXT
|
|
33
|
+
);
|
|
34
|
+
`);
|
|
35
|
+
db.close();
|
|
36
|
+
});
|
|
37
|
+
afterEach(() => { fs_1.default.rmSync(tmpDir, { recursive: true, force: true }); });
|
|
38
|
+
it('indexes untracked files when INDEX.md triggers hook', () => {
|
|
39
|
+
const untracked = path_1.default.join(rawDir, 'untracked-source.md');
|
|
40
|
+
fs_1.default.writeFileSync(untracked, '---\nslug: untracked\ntype: raw\n---\nSome content here', 'utf8');
|
|
41
|
+
const indexMd = path_1.default.join(mindloreDir, 'INDEX.md');
|
|
42
|
+
fs_1.default.writeFileSync(indexMd, '# Index', 'utf8');
|
|
43
|
+
const hookPath = path_1.default.resolve(__dirname, '..', 'hooks', 'mindlore-index.cjs');
|
|
44
|
+
const input = JSON.stringify({ path: indexMd });
|
|
45
|
+
try {
|
|
46
|
+
(0, child_process_1.execSync)(`node "${hookPath}"`, {
|
|
47
|
+
input,
|
|
48
|
+
encoding: 'utf8',
|
|
49
|
+
timeout: 10000,
|
|
50
|
+
env: { ...process.env, MINDLORE_HOME: mindloreDir },
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
catch { /* hook may exit with non-zero */ }
|
|
54
|
+
const db = new better_sqlite3_1.default(dbPath, { readonly: true });
|
|
55
|
+
const row = db.prepare('SELECT * FROM file_hashes WHERE path = ?').get(untracked);
|
|
56
|
+
db.close();
|
|
57
|
+
expect(row).toBeDefined();
|
|
58
|
+
});
|
|
59
|
+
it('skips already-indexed files (hash dedup)', () => {
|
|
60
|
+
const tracked = path_1.default.join(rawDir, 'tracked.md');
|
|
61
|
+
const content = '---\nslug: tracked\ntype: raw\n---\nAlready indexed';
|
|
62
|
+
fs_1.default.writeFileSync(tracked, content, 'utf8');
|
|
63
|
+
const hash = crypto_1.default.createHash('sha256').update(content).digest('hex');
|
|
64
|
+
const db = new better_sqlite3_1.default(dbPath);
|
|
65
|
+
db.prepare('INSERT INTO file_hashes (path, content_hash, last_indexed) VALUES (?, ?, ?)')
|
|
66
|
+
.run(tracked, hash, new Date().toISOString());
|
|
67
|
+
db.close();
|
|
68
|
+
const indexMd = path_1.default.join(mindloreDir, 'INDEX.md');
|
|
69
|
+
fs_1.default.writeFileSync(indexMd, '# Index', 'utf8');
|
|
70
|
+
const hookPath = path_1.default.resolve(__dirname, '..', 'hooks', 'mindlore-index.cjs');
|
|
71
|
+
const input = JSON.stringify({ path: indexMd });
|
|
72
|
+
try {
|
|
73
|
+
(0, child_process_1.execSync)(`node "${hookPath}"`, {
|
|
74
|
+
input,
|
|
75
|
+
encoding: 'utf8',
|
|
76
|
+
timeout: 10000,
|
|
77
|
+
env: { ...process.env, MINDLORE_HOME: mindloreDir },
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
catch { /* hook may exit with non-zero */ }
|
|
81
|
+
const db2 = new better_sqlite3_1.default(dbPath, { readonly: true });
|
|
82
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion -- better-sqlite3 .get() returns unknown
|
|
83
|
+
const count = db2.prepare('SELECT COUNT(*) as c FROM file_hashes').get();
|
|
84
|
+
db2.close();
|
|
85
|
+
expect(count.c).toBe(1);
|
|
86
|
+
});
|
|
87
|
+
});
|
|
88
|
+
//# sourceMappingURL=catch-up.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"catch-up.test.js","sourceRoot":"","sources":["../../tests/catch-up.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cc-memory-sync.test.d.ts","sourceRoot":"","sources":["../../tests/cc-memory-sync.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const fs_1 = __importDefault(require("fs"));
|
|
7
|
+
const path_1 = __importDefault(require("path"));
|
|
8
|
+
const db_js_1 = require("./helpers/db.js");
|
|
9
|
+
const db_helpers_js_1 = require("../scripts/lib/db-helpers.js");
|
|
10
|
+
const TEST_DIR = path_1.default.join(__dirname, '..', '.test-cc-memory-sync');
|
|
11
|
+
const DB_PATH = path_1.default.join(TEST_DIR, 'mindlore.db');
|
|
12
|
+
const MEMORY_DIR = path_1.default.join(TEST_DIR, 'mock-memory');
|
|
13
|
+
beforeEach(() => {
|
|
14
|
+
(0, db_js_1.setupTestDir)(TEST_DIR, ['sources']);
|
|
15
|
+
(0, db_js_1.setupTestDir)(MEMORY_DIR, []);
|
|
16
|
+
});
|
|
17
|
+
afterEach(() => {
|
|
18
|
+
(0, db_js_1.teardownTestDir)(TEST_DIR);
|
|
19
|
+
(0, db_js_1.teardownTestDir)(MEMORY_DIR);
|
|
20
|
+
});
|
|
21
|
+
describe('CC Memory Sync', () => {
|
|
22
|
+
test('should detect CC memory path and set source_type', () => {
|
|
23
|
+
const memFile = path_1.default.join(MEMORY_DIR, 'feedback_testing.md');
|
|
24
|
+
fs_1.default.writeFileSync(memFile, [
|
|
25
|
+
'---',
|
|
26
|
+
'name: Test Feedback',
|
|
27
|
+
'description: Always run tests before commit',
|
|
28
|
+
'type: feedback',
|
|
29
|
+
'---',
|
|
30
|
+
'',
|
|
31
|
+
'Run tests before every commit.',
|
|
32
|
+
].join('\n'));
|
|
33
|
+
const db = (0, db_js_1.createTestDbWithMigrations)(DB_PATH);
|
|
34
|
+
const { parseFrontmatter, insertFtsRow } = require('../hooks/lib/mindlore-common.cjs');
|
|
35
|
+
const content = fs_1.default.readFileSync(memFile, 'utf8');
|
|
36
|
+
const { meta } = parseFrontmatter(content);
|
|
37
|
+
insertFtsRow(db, {
|
|
38
|
+
path: memFile,
|
|
39
|
+
slug: 'feedback_testing',
|
|
40
|
+
description: meta.description ?? '',
|
|
41
|
+
type: String(meta.type ?? 'unknown'),
|
|
42
|
+
category: 'cc-memory',
|
|
43
|
+
title: String(meta.name ?? ''),
|
|
44
|
+
content,
|
|
45
|
+
tags: '',
|
|
46
|
+
quality: null,
|
|
47
|
+
project: 'test-project',
|
|
48
|
+
});
|
|
49
|
+
const rows = (0, db_helpers_js_1.dbAll)(db, "SELECT path FROM mindlore_fts WHERE category = 'cc-memory'");
|
|
50
|
+
expect(rows.length).toBe(1);
|
|
51
|
+
db.close();
|
|
52
|
+
});
|
|
53
|
+
test('should redact secrets from CC memory before indexing', () => {
|
|
54
|
+
const memFile = path_1.default.join(MEMORY_DIR, 'project_tokens.md');
|
|
55
|
+
fs_1.default.writeFileSync(memFile, [
|
|
56
|
+
'---',
|
|
57
|
+
'name: Token Info',
|
|
58
|
+
'type: project',
|
|
59
|
+
'---',
|
|
60
|
+
'',
|
|
61
|
+
'API key: sk-proj-abc123def456ghi789jkl012mno345pqr',
|
|
62
|
+
].join('\n'));
|
|
63
|
+
const { redactSecrets } = require('../dist/scripts/lib/privacy-filter.js');
|
|
64
|
+
const content = fs_1.default.readFileSync(memFile, 'utf8');
|
|
65
|
+
const cleaned = redactSecrets(content);
|
|
66
|
+
expect(cleaned).not.toContain('sk-proj-');
|
|
67
|
+
expect(cleaned).toContain('[REDACTED]');
|
|
68
|
+
});
|
|
69
|
+
test('should copy CC memory file to ~/.mindlore/memory/{project}/', () => {
|
|
70
|
+
const memFile = path_1.default.join(MEMORY_DIR, 'user_role.md');
|
|
71
|
+
fs_1.default.writeFileSync(memFile, [
|
|
72
|
+
'---',
|
|
73
|
+
'name: User Role',
|
|
74
|
+
'type: user',
|
|
75
|
+
'---',
|
|
76
|
+
'',
|
|
77
|
+
'Senior developer focused on security.',
|
|
78
|
+
].join('\n'));
|
|
79
|
+
const db = (0, db_js_1.createTestDbWithMigrations)(DB_PATH);
|
|
80
|
+
const copyDir = path_1.default.join(TEST_DIR, 'memory', 'test-project');
|
|
81
|
+
fs_1.default.mkdirSync(copyDir, { recursive: true });
|
|
82
|
+
const content = fs_1.default.readFileSync(memFile, 'utf8');
|
|
83
|
+
fs_1.default.writeFileSync(path_1.default.join(copyDir, 'user_role.md'), content, 'utf8');
|
|
84
|
+
expect(fs_1.default.existsSync(path_1.default.join(copyDir, 'user_role.md'))).toBe(true);
|
|
85
|
+
const copied = fs_1.default.readFileSync(path_1.default.join(copyDir, 'user_role.md'), 'utf8');
|
|
86
|
+
expect(copied).toContain('Senior developer');
|
|
87
|
+
db.close();
|
|
88
|
+
});
|
|
89
|
+
test('should not crash on unchanged file re-index (double db.close regression)', () => {
|
|
90
|
+
// Regression test for: early-return path called db.close() before finally block
|
|
91
|
+
// which also called db.close(), causing a crash on the most common code path.
|
|
92
|
+
const memFile = path_1.default.join(MEMORY_DIR, 'unchanged_test.md');
|
|
93
|
+
const content = [
|
|
94
|
+
'---',
|
|
95
|
+
'name: Unchanged Test',
|
|
96
|
+
'type: feedback',
|
|
97
|
+
'---',
|
|
98
|
+
'',
|
|
99
|
+
'This content will not change between indexes.',
|
|
100
|
+
].join('\n');
|
|
101
|
+
fs_1.default.writeFileSync(memFile, content);
|
|
102
|
+
const hash = (0, db_js_1.sha256)(content);
|
|
103
|
+
const db = (0, db_js_1.createTestDbWithMigrations)(DB_PATH);
|
|
104
|
+
// First index: insert file_hash
|
|
105
|
+
db.prepare('INSERT INTO file_hashes (path, content_hash, last_indexed, source_type) VALUES (?, ?, ?, ?)').run(memFile, hash, new Date().toISOString(), 'cc-memory');
|
|
106
|
+
// Simulate the indexCcMemory try/finally pattern with early return on unchanged
|
|
107
|
+
try {
|
|
108
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion -- better-sqlite3 .get() returns unknown
|
|
109
|
+
const existing = db.prepare('SELECT content_hash FROM file_hashes WHERE path = ?').get(memFile);
|
|
110
|
+
expect(existing).toBeDefined();
|
|
111
|
+
expect(existing?.content_hash).toBe(hash);
|
|
112
|
+
if (existing && existing.content_hash === hash) {
|
|
113
|
+
return; // unchanged — only finally should close
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
finally {
|
|
117
|
+
db.close(); // single close — no crash
|
|
118
|
+
}
|
|
119
|
+
});
|
|
120
|
+
});
|
|
121
|
+
//# sourceMappingURL=cc-memory-sync.test.js.map
|