mindlore 0.2.0 → 0.2.1
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 +7 -1
- package/dist/scripts/init.d.ts +10 -0
- package/dist/scripts/init.d.ts.map +1 -0
- package/dist/scripts/init.js +375 -0
- package/dist/scripts/init.js.map +1 -0
- package/dist/scripts/lib/constants.d.ts +29 -0
- package/dist/scripts/lib/constants.d.ts.map +1 -0
- package/dist/scripts/lib/constants.js +58 -0
- package/dist/scripts/lib/constants.js.map +1 -0
- package/dist/scripts/mindlore-fts5-index.d.ts +9 -0
- package/dist/scripts/mindlore-fts5-index.d.ts.map +1 -0
- package/dist/scripts/mindlore-fts5-index.js +89 -0
- package/dist/scripts/mindlore-fts5-index.js.map +1 -0
- package/dist/scripts/mindlore-fts5-search.d.ts +10 -0
- package/dist/scripts/mindlore-fts5-search.d.ts.map +1 -0
- package/dist/scripts/mindlore-fts5-search.js +108 -0
- package/dist/scripts/mindlore-fts5-search.js.map +1 -0
- package/dist/scripts/mindlore-health-check.d.ts +10 -0
- package/dist/scripts/mindlore-health-check.d.ts.map +1 -0
- package/dist/scripts/mindlore-health-check.js +337 -0
- package/dist/scripts/mindlore-health-check.js.map +1 -0
- package/dist/scripts/uninstall.d.ts +10 -0
- package/dist/scripts/uninstall.d.ts.map +1 -0
- package/dist/scripts/uninstall.js +143 -0
- package/dist/scripts/uninstall.js.map +1 -0
- package/dist/tests/compounding.test.d.ts +8 -0
- package/dist/tests/compounding.test.d.ts.map +1 -0
- package/dist/tests/compounding.test.js +51 -0
- package/dist/tests/compounding.test.js.map +1 -0
- package/dist/tests/decision.test.d.ts +2 -0
- package/dist/tests/decision.test.d.ts.map +1 -0
- package/dist/tests/decision.test.js +61 -0
- package/dist/tests/decision.test.js.map +1 -0
- package/dist/tests/dedup.test.d.ts +2 -0
- package/dist/tests/dedup.test.d.ts.map +1 -0
- package/dist/tests/dedup.test.js +74 -0
- package/dist/tests/dedup.test.js.map +1 -0
- package/dist/tests/frontmatter.test.d.ts +2 -0
- package/dist/tests/frontmatter.test.d.ts.map +1 -0
- package/dist/tests/frontmatter.test.js +90 -0
- package/dist/tests/frontmatter.test.js.map +1 -0
- package/dist/tests/fts5.test.d.ts +2 -0
- package/dist/tests/fts5.test.d.ts.map +1 -0
- package/dist/tests/fts5.test.js +95 -0
- package/dist/tests/fts5.test.js.map +1 -0
- package/dist/tests/helpers/db.d.ts +7 -0
- package/dist/tests/helpers/db.d.ts.map +1 -0
- package/dist/tests/helpers/db.js +46 -0
- package/dist/tests/helpers/db.js.map +1 -0
- package/dist/tests/hook-smoke.test.d.ts +2 -0
- package/dist/tests/hook-smoke.test.d.ts.map +1 -0
- package/dist/tests/hook-smoke.test.js +58 -0
- package/dist/tests/hook-smoke.test.js.map +1 -0
- package/dist/tests/init.test.d.ts +2 -0
- package/dist/tests/init.test.d.ts.map +1 -0
- package/dist/tests/init.test.js +85 -0
- package/dist/tests/init.test.js.map +1 -0
- package/dist/tests/log.test.d.ts +2 -0
- package/dist/tests/log.test.d.ts.map +1 -0
- package/dist/tests/log.test.js +68 -0
- package/dist/tests/log.test.js.map +1 -0
- package/dist/tests/read-guard.test.d.ts +2 -0
- package/dist/tests/read-guard.test.d.ts.map +1 -0
- package/dist/tests/read-guard.test.js +69 -0
- package/dist/tests/read-guard.test.js.map +1 -0
- package/dist/tests/search-hook.test.d.ts +2 -0
- package/dist/tests/search-hook.test.d.ts.map +1 -0
- package/dist/tests/search-hook.test.js +108 -0
- package/dist/tests/search-hook.test.js.map +1 -0
- package/dist/tests/session-focus.test.d.ts +2 -0
- package/dist/tests/session-focus.test.d.ts.map +1 -0
- package/dist/tests/session-focus.test.js +71 -0
- package/dist/tests/session-focus.test.js.map +1 -0
- package/dist/tests/uninstall.test.d.ts +2 -0
- package/dist/tests/uninstall.test.d.ts.map +1 -0
- package/dist/tests/uninstall.test.js +98 -0
- package/dist/tests/uninstall.test.js.map +1 -0
- package/hooks/mindlore-read-guard.cjs +1 -1
- package/package.json +19 -7
- package/scripts/init.cjs +0 -448
- package/scripts/lib/constants.cjs +0 -49
- package/scripts/mindlore-fts5-index.cjs +0 -112
- package/scripts/mindlore-fts5-search.cjs +0 -119
- package/scripts/mindlore-health-check.cjs +0 -389
- package/scripts/uninstall.cjs +0 -186
package/README.md
CHANGED
|
@@ -1,6 +1,12 @@
|
|
|
1
1
|
# Mindlore
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+

|
|
4
|
+
[](https://www.npmjs.com/package/mindlore)
|
|
5
|
+

|
|
6
|
+

|
|
7
|
+

|
|
8
|
+
|
|
9
|
+
> AI-native knowledge system for [Claude Code](https://claude.ai/claude-code)
|
|
4
10
|
|
|
5
11
|
Persistent, searchable, evolving knowledge base that compounds across sessions.
|
|
6
12
|
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* mindlore init — Initialize .mindlore/ knowledge base in current project.
|
|
4
|
+
*
|
|
5
|
+
* Usage: npx mindlore init [--recommended]
|
|
6
|
+
*
|
|
7
|
+
* Idempotent: running again does not destroy existing data.
|
|
8
|
+
*/
|
|
9
|
+
export {};
|
|
10
|
+
//# sourceMappingURL=init.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../scripts/init.ts"],"names":[],"mappings":";AAEA;;;;;;GAMG"}
|
|
@@ -0,0 +1,375 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
"use strict";
|
|
3
|
+
/**
|
|
4
|
+
* mindlore init — Initialize .mindlore/ knowledge base in current project.
|
|
5
|
+
*
|
|
6
|
+
* Usage: npx mindlore init [--recommended]
|
|
7
|
+
*
|
|
8
|
+
* Idempotent: running again does not destroy existing data.
|
|
9
|
+
*/
|
|
10
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
11
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
12
|
+
};
|
|
13
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
|
+
const fs_1 = __importDefault(require("fs"));
|
|
15
|
+
const path_1 = __importDefault(require("path"));
|
|
16
|
+
const constants_js_1 = require("./lib/constants.js");
|
|
17
|
+
const { SQL_FTS_CREATE } = require((0, constants_js_1.resolveHookCommon)(__dirname));
|
|
18
|
+
const TEMPLATE_FILES = ['INDEX.md', 'log.md'];
|
|
19
|
+
// ── Helpers ────────────────────────────────────────────────────────────
|
|
20
|
+
function log(msg) {
|
|
21
|
+
console.log(` ${msg}`);
|
|
22
|
+
}
|
|
23
|
+
function resolvePackageRoot() {
|
|
24
|
+
// When compiled to dist/scripts/, go up two levels to reach package root
|
|
25
|
+
// When running as .ts (ts-jest), go up one level
|
|
26
|
+
const candidate = path_1.default.resolve(__dirname, '..');
|
|
27
|
+
if (fs_1.default.existsSync(path_1.default.join(candidate, 'package.json'))) {
|
|
28
|
+
return candidate;
|
|
29
|
+
}
|
|
30
|
+
return path_1.default.resolve(__dirname, '..', '..');
|
|
31
|
+
}
|
|
32
|
+
function ensureDir(dirPath) {
|
|
33
|
+
if (!fs_1.default.existsSync(dirPath)) {
|
|
34
|
+
fs_1.default.mkdirSync(dirPath, { recursive: true });
|
|
35
|
+
return true;
|
|
36
|
+
}
|
|
37
|
+
return false;
|
|
38
|
+
}
|
|
39
|
+
// ── Step 1: Create .mindlore/ directories ──────────────────────────────
|
|
40
|
+
function createDirectories(baseDir) {
|
|
41
|
+
let created = 0;
|
|
42
|
+
for (const dir of constants_js_1.DIRECTORIES) {
|
|
43
|
+
if (ensureDir(path_1.default.join(baseDir, dir))) {
|
|
44
|
+
created++;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
return created;
|
|
48
|
+
}
|
|
49
|
+
// ── Step 2: Copy template files ────────────────────────────────────────
|
|
50
|
+
function copyTemplates(baseDir, packageRoot) {
|
|
51
|
+
const templatesDir = path_1.default.join(packageRoot, 'templates');
|
|
52
|
+
let copied = 0;
|
|
53
|
+
for (const file of TEMPLATE_FILES) {
|
|
54
|
+
const dest = path_1.default.join(baseDir, file);
|
|
55
|
+
if (!fs_1.default.existsSync(dest)) {
|
|
56
|
+
const src = path_1.default.join(templatesDir, file);
|
|
57
|
+
if (fs_1.default.existsSync(src)) {
|
|
58
|
+
fs_1.default.copyFileSync(src, dest);
|
|
59
|
+
copied++;
|
|
60
|
+
}
|
|
61
|
+
else {
|
|
62
|
+
log(`WARNING: template not found: ${src}`);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
// Copy SCHEMA.md
|
|
67
|
+
const schemaSrc = path_1.default.join(packageRoot, 'SCHEMA.md');
|
|
68
|
+
const schemaDest = path_1.default.join(baseDir, 'SCHEMA.md');
|
|
69
|
+
if (!fs_1.default.existsSync(schemaDest)) {
|
|
70
|
+
if (fs_1.default.existsSync(schemaSrc)) {
|
|
71
|
+
fs_1.default.copyFileSync(schemaSrc, schemaDest);
|
|
72
|
+
copied++;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
return copied;
|
|
76
|
+
}
|
|
77
|
+
function migrateDatabase(dbPath, DatabaseCtor) {
|
|
78
|
+
const db = new DatabaseCtor(dbPath);
|
|
79
|
+
try {
|
|
80
|
+
const info = db.pragma('table_info(mindlore_fts)');
|
|
81
|
+
const columns = info.map((r) => r.name);
|
|
82
|
+
if (!columns.includes('slug') || !columns.includes('description')) {
|
|
83
|
+
log('Upgrading FTS5 schema (2 → 9 columns, porter stemmer)...');
|
|
84
|
+
db.exec('DROP TABLE IF EXISTS mindlore_fts');
|
|
85
|
+
db.exec(SQL_FTS_CREATE);
|
|
86
|
+
db.exec('DELETE FROM file_hashes');
|
|
87
|
+
db.close();
|
|
88
|
+
return true;
|
|
89
|
+
}
|
|
90
|
+
else if (!columns.includes('tags')) {
|
|
91
|
+
log('Upgrading FTS5 schema (7 → 9 columns, +tags +quality)...');
|
|
92
|
+
db.exec('DROP TABLE IF EXISTS mindlore_fts');
|
|
93
|
+
db.exec(SQL_FTS_CREATE);
|
|
94
|
+
db.exec('DELETE FROM file_hashes');
|
|
95
|
+
db.close();
|
|
96
|
+
return true;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
catch (_err) {
|
|
100
|
+
db.exec('DROP TABLE IF EXISTS mindlore_fts');
|
|
101
|
+
db.exec(SQL_FTS_CREATE);
|
|
102
|
+
db.exec('DELETE FROM file_hashes');
|
|
103
|
+
db.close();
|
|
104
|
+
return true;
|
|
105
|
+
}
|
|
106
|
+
db.close();
|
|
107
|
+
return false;
|
|
108
|
+
}
|
|
109
|
+
function createDatabase(baseDir) {
|
|
110
|
+
const dbPath = path_1.default.join(baseDir, constants_js_1.DB_NAME);
|
|
111
|
+
if (fs_1.default.existsSync(dbPath)) {
|
|
112
|
+
let DatabaseCtor;
|
|
113
|
+
try {
|
|
114
|
+
DatabaseCtor = require('better-sqlite3');
|
|
115
|
+
}
|
|
116
|
+
catch (_err) {
|
|
117
|
+
return false;
|
|
118
|
+
}
|
|
119
|
+
const migrated = migrateDatabase(dbPath, DatabaseCtor);
|
|
120
|
+
if (migrated) {
|
|
121
|
+
log('FTS5 schema upgraded — run index to rebuild');
|
|
122
|
+
}
|
|
123
|
+
else {
|
|
124
|
+
log('Database already exists, schema OK');
|
|
125
|
+
}
|
|
126
|
+
return migrated;
|
|
127
|
+
}
|
|
128
|
+
let DatabaseCtor;
|
|
129
|
+
try {
|
|
130
|
+
DatabaseCtor = require('better-sqlite3');
|
|
131
|
+
}
|
|
132
|
+
catch (_err) {
|
|
133
|
+
log('WARNING: better-sqlite3 not installed. Run: npm install better-sqlite3');
|
|
134
|
+
log('Database creation skipped — run mindlore init again after installing.');
|
|
135
|
+
return false;
|
|
136
|
+
}
|
|
137
|
+
const db = new DatabaseCtor(dbPath);
|
|
138
|
+
db.pragma('journal_mode = WAL');
|
|
139
|
+
db.exec(SQL_FTS_CREATE);
|
|
140
|
+
db.exec(`
|
|
141
|
+
CREATE TABLE IF NOT EXISTS file_hashes (
|
|
142
|
+
path TEXT PRIMARY KEY,
|
|
143
|
+
content_hash TEXT NOT NULL,
|
|
144
|
+
last_indexed TEXT NOT NULL
|
|
145
|
+
);
|
|
146
|
+
`);
|
|
147
|
+
db.close();
|
|
148
|
+
return true;
|
|
149
|
+
}
|
|
150
|
+
// ── Step 4: Merge hooks into settings.json ─────────────────────────────
|
|
151
|
+
function mergeHooks(packageRoot) {
|
|
152
|
+
const settingsPath = path_1.default.join((0, constants_js_1.homedir)(), '.claude', 'settings.json');
|
|
153
|
+
if (!fs_1.default.existsSync(settingsPath)) {
|
|
154
|
+
log('WARNING: ~/.claude/settings.json not found. Hooks not registered.');
|
|
155
|
+
log('Create it manually or install Claude Code first.');
|
|
156
|
+
return false;
|
|
157
|
+
}
|
|
158
|
+
let settings;
|
|
159
|
+
try {
|
|
160
|
+
const raw = fs_1.default.readFileSync(settingsPath, 'utf8');
|
|
161
|
+
settings = JSON.parse(raw);
|
|
162
|
+
}
|
|
163
|
+
catch (_err) {
|
|
164
|
+
log('WARNING: Could not parse settings.json. Hooks not registered.');
|
|
165
|
+
return false;
|
|
166
|
+
}
|
|
167
|
+
const pluginPath = path_1.default.join(packageRoot, 'plugin.json');
|
|
168
|
+
if (!fs_1.default.existsSync(pluginPath)) {
|
|
169
|
+
log('WARNING: plugin.json not found. Hooks not registered.');
|
|
170
|
+
return false;
|
|
171
|
+
}
|
|
172
|
+
const plugin = JSON.parse(fs_1.default.readFileSync(pluginPath, 'utf8'));
|
|
173
|
+
if (!plugin.hooks || plugin.hooks.length === 0) {
|
|
174
|
+
return false;
|
|
175
|
+
}
|
|
176
|
+
if (!settings.hooks) {
|
|
177
|
+
settings.hooks = {};
|
|
178
|
+
}
|
|
179
|
+
let added = 0;
|
|
180
|
+
for (const hook of plugin.hooks) {
|
|
181
|
+
const event = hook.event;
|
|
182
|
+
if (!settings.hooks[event]) {
|
|
183
|
+
settings.hooks[event] = [];
|
|
184
|
+
}
|
|
185
|
+
const hookScript = path_1.default.join(packageRoot, hook.script);
|
|
186
|
+
const hookName = path_1.default.basename(hook.script, '.cjs');
|
|
187
|
+
const exists = settings.hooks[event].some((entry) => {
|
|
188
|
+
if (entry.hooks && Array.isArray(entry.hooks)) {
|
|
189
|
+
return entry.hooks.some((h) => (h.command ?? '').includes(hookName));
|
|
190
|
+
}
|
|
191
|
+
return (entry.command ?? '').includes(hookName);
|
|
192
|
+
});
|
|
193
|
+
if (!exists) {
|
|
194
|
+
settings.hooks[event].push({
|
|
195
|
+
hooks: [
|
|
196
|
+
{
|
|
197
|
+
type: 'command',
|
|
198
|
+
command: `node "${hookScript}"`,
|
|
199
|
+
},
|
|
200
|
+
],
|
|
201
|
+
});
|
|
202
|
+
added++;
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
if (added > 0) {
|
|
206
|
+
const backupPath = settingsPath + '.mindlore-backup';
|
|
207
|
+
if (!fs_1.default.existsSync(backupPath)) {
|
|
208
|
+
fs_1.default.copyFileSync(settingsPath, backupPath);
|
|
209
|
+
}
|
|
210
|
+
fs_1.default.writeFileSync(settingsPath, JSON.stringify(settings, null, 2), 'utf8');
|
|
211
|
+
}
|
|
212
|
+
return added;
|
|
213
|
+
}
|
|
214
|
+
// ── Step 5: Add SCHEMA.md to projectDocFiles ───────────────────────────
|
|
215
|
+
function addSchemaToProjectDocs() {
|
|
216
|
+
const projectSettingsDir = path_1.default.join(process.cwd(), '.claude');
|
|
217
|
+
const projectSettingsPath = path_1.default.join(projectSettingsDir, 'settings.json');
|
|
218
|
+
let settings = {};
|
|
219
|
+
if (fs_1.default.existsSync(projectSettingsPath)) {
|
|
220
|
+
try {
|
|
221
|
+
settings = JSON.parse(fs_1.default.readFileSync(projectSettingsPath, 'utf8'));
|
|
222
|
+
}
|
|
223
|
+
catch (_err) {
|
|
224
|
+
settings = {};
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
else {
|
|
228
|
+
ensureDir(projectSettingsDir);
|
|
229
|
+
}
|
|
230
|
+
if (!settings.projectDocFiles) {
|
|
231
|
+
settings.projectDocFiles = [];
|
|
232
|
+
}
|
|
233
|
+
const schemaPath = path_1.default.join(constants_js_1.MINDLORE_DIR, 'SCHEMA.md');
|
|
234
|
+
if (!settings.projectDocFiles.includes(schemaPath)) {
|
|
235
|
+
settings.projectDocFiles.push(schemaPath);
|
|
236
|
+
fs_1.default.writeFileSync(projectSettingsPath, JSON.stringify(settings, null, 2), 'utf8');
|
|
237
|
+
return true;
|
|
238
|
+
}
|
|
239
|
+
return false;
|
|
240
|
+
}
|
|
241
|
+
// ── Step 6: Register skills ────────────────────────────────────────────
|
|
242
|
+
function registerSkills(packageRoot, plugin) {
|
|
243
|
+
const skillsDir = path_1.default.join((0, constants_js_1.homedir)(), '.claude', 'skills');
|
|
244
|
+
ensureDir(skillsDir);
|
|
245
|
+
if (!plugin.skills || plugin.skills.length === 0)
|
|
246
|
+
return 0;
|
|
247
|
+
let added = 0;
|
|
248
|
+
for (const skill of plugin.skills) {
|
|
249
|
+
const skillSrcDir = path_1.default.join(packageRoot, path_1.default.dirname(skill.path));
|
|
250
|
+
const skillDestDir = path_1.default.join(skillsDir, skill.name);
|
|
251
|
+
ensureDir(skillDestDir);
|
|
252
|
+
const entries = fs_1.default.readdirSync(skillSrcDir, { withFileTypes: true });
|
|
253
|
+
for (const entry of entries) {
|
|
254
|
+
if (!entry.isFile())
|
|
255
|
+
continue;
|
|
256
|
+
fs_1.default.copyFileSync(path_1.default.join(skillSrcDir, entry.name), path_1.default.join(skillDestDir, entry.name));
|
|
257
|
+
}
|
|
258
|
+
added++;
|
|
259
|
+
}
|
|
260
|
+
return added;
|
|
261
|
+
}
|
|
262
|
+
// ── Step 7: Install better-sqlite3 if needed ──────────────────────────
|
|
263
|
+
function ensureBetterSqlite3() {
|
|
264
|
+
try {
|
|
265
|
+
require('better-sqlite3');
|
|
266
|
+
return true;
|
|
267
|
+
}
|
|
268
|
+
catch (_err) {
|
|
269
|
+
try {
|
|
270
|
+
const { execSync } = require('child_process');
|
|
271
|
+
log('Installing better-sqlite3 (native dependency)...');
|
|
272
|
+
execSync('npm install better-sqlite3 --no-save', {
|
|
273
|
+
cwd: process.cwd(),
|
|
274
|
+
stdio: 'pipe',
|
|
275
|
+
timeout: 120000,
|
|
276
|
+
});
|
|
277
|
+
return true;
|
|
278
|
+
}
|
|
279
|
+
catch (_installErr) {
|
|
280
|
+
log('WARNING: Could not install better-sqlite3. FTS5 search disabled.');
|
|
281
|
+
log(' Run manually: npm install better-sqlite3');
|
|
282
|
+
return false;
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
// ── Step 8: Add .mindlore/ to .gitignore ───────────────────────────────
|
|
287
|
+
function addToGitignore() {
|
|
288
|
+
const gitignorePath = path_1.default.join(process.cwd(), '.gitignore');
|
|
289
|
+
const entry = '.mindlore/';
|
|
290
|
+
if (fs_1.default.existsSync(gitignorePath)) {
|
|
291
|
+
const content = fs_1.default.readFileSync(gitignorePath, 'utf8');
|
|
292
|
+
if (content.includes(entry)) {
|
|
293
|
+
return false;
|
|
294
|
+
}
|
|
295
|
+
fs_1.default.appendFileSync(gitignorePath, `\n${entry}\n`, 'utf8');
|
|
296
|
+
}
|
|
297
|
+
else {
|
|
298
|
+
fs_1.default.writeFileSync(gitignorePath, `${entry}\n`, 'utf8');
|
|
299
|
+
}
|
|
300
|
+
return true;
|
|
301
|
+
}
|
|
302
|
+
// ── Main ───────────────────────────────────────────────────────────────
|
|
303
|
+
function main() {
|
|
304
|
+
const args = process.argv.slice(2);
|
|
305
|
+
const command = args[0];
|
|
306
|
+
if (command === 'uninstall') {
|
|
307
|
+
require('./uninstall.js');
|
|
308
|
+
return;
|
|
309
|
+
}
|
|
310
|
+
if (command && command !== 'init') {
|
|
311
|
+
console.log(`Unknown command: ${command}`);
|
|
312
|
+
console.log('Usage: npx mindlore init [--recommended]');
|
|
313
|
+
console.log(' npx mindlore uninstall [--all]');
|
|
314
|
+
process.exit(1);
|
|
315
|
+
}
|
|
316
|
+
const isRecommended = args.includes('--recommended');
|
|
317
|
+
const packageRoot = resolvePackageRoot();
|
|
318
|
+
const baseDir = path_1.default.join(process.cwd(), constants_js_1.MINDLORE_DIR);
|
|
319
|
+
console.log('\n Mindlore — AI-native knowledge system\n');
|
|
320
|
+
// Step 1: Directories
|
|
321
|
+
const dirsCreated = createDirectories(baseDir);
|
|
322
|
+
log(dirsCreated > 0
|
|
323
|
+
? `Created ${dirsCreated} directories in ${constants_js_1.MINDLORE_DIR}/`
|
|
324
|
+
: 'All directories already exist');
|
|
325
|
+
// Step 2: Templates
|
|
326
|
+
const filesCopied = copyTemplates(baseDir, packageRoot);
|
|
327
|
+
log(filesCopied > 0
|
|
328
|
+
? `Copied ${filesCopied} template files`
|
|
329
|
+
: 'All templates already in place');
|
|
330
|
+
// Step 3: better-sqlite3 (before DB creation so it's available)
|
|
331
|
+
ensureBetterSqlite3();
|
|
332
|
+
// Step 4: Database
|
|
333
|
+
const dbCreated = createDatabase(baseDir);
|
|
334
|
+
log(dbCreated ? 'Created FTS5 database' : 'Database already exists');
|
|
335
|
+
// Read plugin.json once for hooks + skills
|
|
336
|
+
const pluginPath = path_1.default.join(packageRoot, 'plugin.json');
|
|
337
|
+
const plugin = fs_1.default.existsSync(pluginPath)
|
|
338
|
+
? JSON.parse(fs_1.default.readFileSync(pluginPath, 'utf8'))
|
|
339
|
+
: {};
|
|
340
|
+
// Step 5: Hooks
|
|
341
|
+
const hooksAdded = mergeHooks(packageRoot);
|
|
342
|
+
if (typeof hooksAdded === 'number' && hooksAdded > 0) {
|
|
343
|
+
log(`Registered ${hooksAdded} hooks in ~/.claude/settings.json`);
|
|
344
|
+
}
|
|
345
|
+
else {
|
|
346
|
+
log('Hooks already registered (or settings.json not found)');
|
|
347
|
+
}
|
|
348
|
+
// Step 6: SCHEMA.md in projectDocFiles
|
|
349
|
+
const schemaAdded = addSchemaToProjectDocs();
|
|
350
|
+
log(schemaAdded
|
|
351
|
+
? 'Added SCHEMA.md to project settings'
|
|
352
|
+
: 'SCHEMA.md already in project settings');
|
|
353
|
+
// Step 7: Skills
|
|
354
|
+
const skillsAdded = registerSkills(packageRoot, plugin);
|
|
355
|
+
log(skillsAdded > 0
|
|
356
|
+
? `Registered ${skillsAdded} skills in ~/.claude/skills/`
|
|
357
|
+
: 'Skills already registered');
|
|
358
|
+
// Step 8: .gitignore
|
|
359
|
+
const gitignoreAdded = addToGitignore();
|
|
360
|
+
log(gitignoreAdded
|
|
361
|
+
? 'Added .mindlore/ to .gitignore'
|
|
362
|
+
: '.mindlore/ already in .gitignore');
|
|
363
|
+
// Recommended profile tips
|
|
364
|
+
if (isRecommended) {
|
|
365
|
+
console.log('\n Recommended setup:');
|
|
366
|
+
log('Install markitdown for better web/doc extraction:');
|
|
367
|
+
log(' pip install markitdown');
|
|
368
|
+
log('');
|
|
369
|
+
log('Install context-mode for token savings:');
|
|
370
|
+
log(' See: https://github.com/context-mode/context-mode');
|
|
371
|
+
}
|
|
372
|
+
console.log('\n Done! Start with: /mindlore-ingest\n');
|
|
373
|
+
}
|
|
374
|
+
main();
|
|
375
|
+
//# sourceMappingURL=init.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../scripts/init.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
export declare const MINDLORE_DIR = ".mindlore";
|
|
2
|
+
export declare const DB_NAME = "mindlore.db";
|
|
3
|
+
export declare const DIRECTORIES: readonly ["raw", "sources", "domains", "analyses", "insights", "connections", "learnings", "diary", "decisions"];
|
|
4
|
+
export declare const SKIP_FILES: Set<string>;
|
|
5
|
+
export declare const TYPE_TO_DIR: Record<string, string>;
|
|
6
|
+
export declare function homedir(): string;
|
|
7
|
+
export interface HookEntry {
|
|
8
|
+
hooks?: Array<{
|
|
9
|
+
type?: string;
|
|
10
|
+
command?: string;
|
|
11
|
+
}>;
|
|
12
|
+
command?: string;
|
|
13
|
+
}
|
|
14
|
+
export interface Settings {
|
|
15
|
+
hooks?: Record<string, HookEntry[]>;
|
|
16
|
+
projectDocFiles?: string[];
|
|
17
|
+
[key: string]: unknown;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Filter predicate: true if file is NOT a skip file (INDEX.md, SCHEMA.md, log.md).
|
|
21
|
+
*/
|
|
22
|
+
export declare function isContentFile(filePath: string): boolean;
|
|
23
|
+
/**
|
|
24
|
+
* Resolve hook common module path — works from both src/ and dist/.
|
|
25
|
+
* From scripts/: ../hooks/lib/mindlore-common.cjs
|
|
26
|
+
* From dist/scripts/: ../../hooks/lib/mindlore-common.cjs
|
|
27
|
+
*/
|
|
28
|
+
export declare function resolveHookCommon(callerDir: string): string;
|
|
29
|
+
//# sourceMappingURL=constants.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../scripts/lib/constants.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,YAAY,cAAc,CAAC;AACxC,eAAO,MAAM,OAAO,gBAAgB,CAAC;AAErC,eAAO,MAAM,WAAW,kHAUd,CAAC;AAEX,eAAO,MAAM,UAAU,aAA+C,CAAC;AAEvE,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAU9C,CAAC;AAEF,wBAAgB,OAAO,IAAI,MAAM,CAEhC;AAID,MAAM,WAAW,SAAS;IACxB,KAAK,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACnD,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,QAAQ;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;IACpC,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAEvD;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAI3D"}
|
|
@@ -0,0 +1,58 @@
|
|
|
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
|
+
exports.TYPE_TO_DIR = exports.SKIP_FILES = exports.DIRECTORIES = exports.DB_NAME = exports.MINDLORE_DIR = void 0;
|
|
7
|
+
exports.homedir = homedir;
|
|
8
|
+
exports.isContentFile = isContentFile;
|
|
9
|
+
exports.resolveHookCommon = resolveHookCommon;
|
|
10
|
+
const os_1 = __importDefault(require("os"));
|
|
11
|
+
const fs_1 = __importDefault(require("fs"));
|
|
12
|
+
const path_1 = __importDefault(require("path"));
|
|
13
|
+
exports.MINDLORE_DIR = '.mindlore';
|
|
14
|
+
exports.DB_NAME = 'mindlore.db';
|
|
15
|
+
exports.DIRECTORIES = [
|
|
16
|
+
'raw',
|
|
17
|
+
'sources',
|
|
18
|
+
'domains',
|
|
19
|
+
'analyses',
|
|
20
|
+
'insights',
|
|
21
|
+
'connections',
|
|
22
|
+
'learnings',
|
|
23
|
+
'diary',
|
|
24
|
+
'decisions',
|
|
25
|
+
];
|
|
26
|
+
exports.SKIP_FILES = new Set(['INDEX.md', 'SCHEMA.md', 'log.md']);
|
|
27
|
+
exports.TYPE_TO_DIR = {
|
|
28
|
+
raw: 'raw',
|
|
29
|
+
source: 'sources',
|
|
30
|
+
domain: 'domains',
|
|
31
|
+
analysis: 'analyses',
|
|
32
|
+
insight: 'insights',
|
|
33
|
+
connection: 'connections',
|
|
34
|
+
learning: 'learnings',
|
|
35
|
+
decision: 'decisions',
|
|
36
|
+
diary: 'diary',
|
|
37
|
+
};
|
|
38
|
+
function homedir() {
|
|
39
|
+
return os_1.default.homedir();
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Filter predicate: true if file is NOT a skip file (INDEX.md, SCHEMA.md, log.md).
|
|
43
|
+
*/
|
|
44
|
+
function isContentFile(filePath) {
|
|
45
|
+
return !exports.SKIP_FILES.has(path_1.default.basename(filePath));
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Resolve hook common module path — works from both src/ and dist/.
|
|
49
|
+
* From scripts/: ../hooks/lib/mindlore-common.cjs
|
|
50
|
+
* From dist/scripts/: ../../hooks/lib/mindlore-common.cjs
|
|
51
|
+
*/
|
|
52
|
+
function resolveHookCommon(callerDir) {
|
|
53
|
+
const candidate = path_1.default.resolve(callerDir, '..', 'hooks', 'lib', 'mindlore-common.cjs');
|
|
54
|
+
if (fs_1.default.existsSync(candidate))
|
|
55
|
+
return candidate;
|
|
56
|
+
return path_1.default.resolve(callerDir, '..', '..', 'hooks', 'lib', 'mindlore-common.cjs');
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=constants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../scripts/lib/constants.ts"],"names":[],"mappings":";;;;;;AAiCA,0BAEC;AAkBD,sCAEC;AAOD,8CAIC;AAlED,4CAAoB;AACpB,4CAAoB;AACpB,gDAAwB;AAEX,QAAA,YAAY,GAAG,WAAW,CAAC;AAC3B,QAAA,OAAO,GAAG,aAAa,CAAC;AAExB,QAAA,WAAW,GAAG;IACzB,KAAK;IACL,SAAS;IACT,SAAS;IACT,UAAU;IACV,UAAU;IACV,aAAa;IACb,WAAW;IACX,OAAO;IACP,WAAW;CACH,CAAC;AAEE,QAAA,UAAU,GAAG,IAAI,GAAG,CAAC,CAAC,UAAU,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC;AAE1D,QAAA,WAAW,GAA2B;IACjD,GAAG,EAAE,KAAK;IACV,MAAM,EAAE,SAAS;IACjB,MAAM,EAAE,SAAS;IACjB,QAAQ,EAAE,UAAU;IACpB,OAAO,EAAE,UAAU;IACnB,UAAU,EAAE,aAAa;IACzB,QAAQ,EAAE,WAAW;IACrB,QAAQ,EAAE,WAAW;IACrB,KAAK,EAAE,OAAO;CACf,CAAC;AAEF,SAAgB,OAAO;IACrB,OAAO,YAAE,CAAC,OAAO,EAAE,CAAC;AACtB,CAAC;AAeD;;GAEG;AACH,SAAgB,aAAa,CAAC,QAAgB;IAC5C,OAAO,CAAC,kBAAU,CAAC,GAAG,CAAC,cAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;AAClD,CAAC;AAED;;;;GAIG;AACH,SAAgB,iBAAiB,CAAC,SAAiB;IACjD,MAAM,SAAS,GAAG,cAAI,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,qBAAqB,CAAC,CAAC;IACvF,IAAI,YAAE,CAAC,UAAU,CAAC,SAAS,CAAC;QAAE,OAAO,SAAS,CAAC;IAC/C,OAAO,cAAI,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,qBAAqB,CAAC,CAAC;AACpF,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* mindlore-fts5-index — Full re-index of .mindlore/ into FTS5 database.
|
|
4
|
+
*
|
|
5
|
+
* Scans all .md files, computes SHA256 content-hash, skips unchanged files.
|
|
6
|
+
* Usage: node dist/scripts/mindlore-fts5-index.js [path-to-mindlore-dir]
|
|
7
|
+
*/
|
|
8
|
+
export {};
|
|
9
|
+
//# sourceMappingURL=mindlore-fts5-index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mindlore-fts5-index.d.ts","sourceRoot":"","sources":["../../scripts/mindlore-fts5-index.ts"],"names":[],"mappings":";AAEA;;;;;GAKG"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
"use strict";
|
|
3
|
+
/**
|
|
4
|
+
* mindlore-fts5-index — Full re-index of .mindlore/ into FTS5 database.
|
|
5
|
+
*
|
|
6
|
+
* Scans all .md files, computes SHA256 content-hash, skips unchanged files.
|
|
7
|
+
* Usage: node dist/scripts/mindlore-fts5-index.js [path-to-mindlore-dir]
|
|
8
|
+
*/
|
|
9
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
10
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
11
|
+
};
|
|
12
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
+
const fs_1 = __importDefault(require("fs"));
|
|
14
|
+
const path_1 = __importDefault(require("path"));
|
|
15
|
+
const constants_js_1 = require("./lib/constants.js");
|
|
16
|
+
const { sha256, getAllMdFiles, openDatabase, parseFrontmatter, extractFtsMetadata, SQL_FTS_INSERT, } = require((0, constants_js_1.resolveHookCommon)(__dirname));
|
|
17
|
+
// ── Main ───────────────────────────────────────────────────────────────
|
|
18
|
+
function main() {
|
|
19
|
+
const baseDir = process.argv[2] ?? path_1.default.join(process.cwd(), '.mindlore');
|
|
20
|
+
const dbPath = path_1.default.join(baseDir, constants_js_1.DB_NAME);
|
|
21
|
+
if (!fs_1.default.existsSync(dbPath)) {
|
|
22
|
+
console.error(' Database not found. Run: npx mindlore init');
|
|
23
|
+
process.exit(1);
|
|
24
|
+
}
|
|
25
|
+
const db = openDatabase(dbPath);
|
|
26
|
+
if (!db) {
|
|
27
|
+
console.error(' better-sqlite3 not installed. Run: npm install better-sqlite3');
|
|
28
|
+
process.exit(1);
|
|
29
|
+
}
|
|
30
|
+
const getHash = db.prepare('SELECT content_hash FROM file_hashes WHERE path = ?');
|
|
31
|
+
const upsertHash = db.prepare(`
|
|
32
|
+
INSERT INTO file_hashes (path, content_hash, last_indexed)
|
|
33
|
+
VALUES (?, ?, ?)
|
|
34
|
+
ON CONFLICT(path) DO UPDATE SET
|
|
35
|
+
content_hash = excluded.content_hash,
|
|
36
|
+
last_indexed = excluded.last_indexed
|
|
37
|
+
`);
|
|
38
|
+
const deleteFts = db.prepare('DELETE FROM mindlore_fts WHERE path = ?');
|
|
39
|
+
const insertFts = db.prepare(SQL_FTS_INSERT);
|
|
40
|
+
const mdFiles = getAllMdFiles(baseDir);
|
|
41
|
+
let indexed = 0;
|
|
42
|
+
let skipped = 0;
|
|
43
|
+
let errors = 0;
|
|
44
|
+
const now = new Date().toISOString();
|
|
45
|
+
const transaction = db.transaction(() => {
|
|
46
|
+
for (const filePath of mdFiles) {
|
|
47
|
+
try {
|
|
48
|
+
const content = fs_1.default.readFileSync(filePath, 'utf8').replace(/\r\n/g, '\n');
|
|
49
|
+
const hash = sha256(content);
|
|
50
|
+
const existing = getHash.get(filePath);
|
|
51
|
+
if (existing && existing.content_hash === hash) {
|
|
52
|
+
skipped++;
|
|
53
|
+
continue;
|
|
54
|
+
}
|
|
55
|
+
const { meta, body } = parseFrontmatter(content);
|
|
56
|
+
const { slug, description, type, category, title, tags, quality } = extractFtsMetadata(meta, body, filePath, baseDir);
|
|
57
|
+
deleteFts.run(filePath);
|
|
58
|
+
insertFts.run(filePath, slug, description, type, category, title, body, tags, quality);
|
|
59
|
+
upsertHash.run(filePath, hash, now);
|
|
60
|
+
indexed++;
|
|
61
|
+
}
|
|
62
|
+
catch (err) {
|
|
63
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
64
|
+
console.error(` Error indexing ${path_1.default.basename(filePath)}: ${message}`);
|
|
65
|
+
errors++;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
});
|
|
69
|
+
transaction();
|
|
70
|
+
const allIndexed = db.prepare('SELECT path FROM file_hashes').all();
|
|
71
|
+
const existingPaths = new Set(mdFiles);
|
|
72
|
+
let removed = 0;
|
|
73
|
+
const deleteHash = db.prepare('DELETE FROM file_hashes WHERE path = ?');
|
|
74
|
+
const cleanupTransaction = db.transaction(() => {
|
|
75
|
+
for (const row of allIndexed) {
|
|
76
|
+
if (!existingPaths.has(row.path)) {
|
|
77
|
+
deleteFts.run(row.path);
|
|
78
|
+
deleteHash.run(row.path);
|
|
79
|
+
removed++;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
});
|
|
83
|
+
cleanupTransaction();
|
|
84
|
+
db.close();
|
|
85
|
+
console.log(`\n FTS5 Index: ${indexed} indexed, ${skipped} unchanged, ${removed} removed, ${errors} errors\n`);
|
|
86
|
+
process.exit(errors > 0 ? 1 : 0);
|
|
87
|
+
}
|
|
88
|
+
main();
|
|
89
|
+
//# sourceMappingURL=mindlore-fts5-index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mindlore-fts5-index.js","sourceRoot":"","sources":["../../scripts/mindlore-fts5-index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* mindlore-fts5-search — Search .mindlore/ knowledge base via FTS5.
|
|
4
|
+
*
|
|
5
|
+
* Usage: node dist/scripts/mindlore-fts5-search.js "query" [path-to-mindlore-dir]
|
|
6
|
+
*
|
|
7
|
+
* Returns top 3 results ranked by BM25 with file path and snippet.
|
|
8
|
+
*/
|
|
9
|
+
export {};
|
|
10
|
+
//# sourceMappingURL=mindlore-fts5-search.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mindlore-fts5-search.d.ts","sourceRoot":"","sources":["../../scripts/mindlore-fts5-search.ts"],"names":[],"mappings":";AAEA;;;;;;GAMG"}
|