mindlore 0.3.2 → 0.3.4

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.
Files changed (81) hide show
  1. package/README.md +50 -24
  2. package/SCHEMA.md +9 -11
  3. package/dist/scripts/init.d.ts +4 -2
  4. package/dist/scripts/init.d.ts.map +1 -1
  5. package/dist/scripts/init.js +67 -59
  6. package/dist/scripts/init.js.map +1 -1
  7. package/dist/scripts/lib/constants.d.ts +10 -5
  8. package/dist/scripts/lib/constants.d.ts.map +1 -1
  9. package/dist/scripts/lib/constants.js +18 -20
  10. package/dist/scripts/lib/constants.js.map +1 -1
  11. package/dist/scripts/lib/obsidian-helpers.d.ts +25 -0
  12. package/dist/scripts/lib/obsidian-helpers.d.ts.map +1 -0
  13. package/dist/scripts/lib/obsidian-helpers.js +88 -0
  14. package/dist/scripts/lib/obsidian-helpers.js.map +1 -0
  15. package/dist/scripts/mindlore-backup.d.ts +12 -0
  16. package/dist/scripts/mindlore-backup.d.ts.map +1 -0
  17. package/dist/scripts/mindlore-backup.js +218 -0
  18. package/dist/scripts/mindlore-backup.js.map +1 -0
  19. package/dist/scripts/mindlore-fts5-index.js +3 -2
  20. package/dist/scripts/mindlore-fts5-index.js.map +1 -1
  21. package/dist/scripts/mindlore-fts5-search.d.ts +3 -2
  22. package/dist/scripts/mindlore-fts5-search.d.ts.map +1 -1
  23. package/dist/scripts/mindlore-fts5-search.js +38 -50
  24. package/dist/scripts/mindlore-fts5-search.js.map +1 -1
  25. package/dist/scripts/mindlore-health-check.js +4 -4
  26. package/dist/scripts/mindlore-health-check.js.map +1 -1
  27. package/dist/scripts/mindlore-obsidian.d.ts +11 -0
  28. package/dist/scripts/mindlore-obsidian.d.ts.map +1 -0
  29. package/dist/scripts/mindlore-obsidian.js +182 -0
  30. package/dist/scripts/mindlore-obsidian.js.map +1 -0
  31. package/dist/scripts/quality-populate.js +1 -3
  32. package/dist/scripts/quality-populate.js.map +1 -1
  33. package/dist/scripts/uninstall.d.ts +4 -3
  34. package/dist/scripts/uninstall.d.ts.map +1 -1
  35. package/dist/scripts/uninstall.js +10 -29
  36. package/dist/scripts/uninstall.js.map +1 -1
  37. package/dist/tests/backup.test.d.ts +2 -0
  38. package/dist/tests/backup.test.d.ts.map +1 -0
  39. package/dist/tests/backup.test.js +105 -0
  40. package/dist/tests/backup.test.js.map +1 -0
  41. package/dist/tests/cwd-changed.test.js +6 -5
  42. package/dist/tests/cwd-changed.test.js.map +1 -1
  43. package/dist/tests/decision.test.js +1 -1
  44. package/dist/tests/decision.test.js.map +1 -1
  45. package/dist/tests/global-layer.test.js +22 -39
  46. package/dist/tests/global-layer.test.js.map +1 -1
  47. package/dist/tests/helpers/db.d.ts +1 -0
  48. package/dist/tests/helpers/db.d.ts.map +1 -1
  49. package/dist/tests/helpers/db.js.map +1 -1
  50. package/dist/tests/init.test.js +22 -0
  51. package/dist/tests/init.test.js.map +1 -1
  52. package/dist/tests/model-router.test.js +2 -1
  53. package/dist/tests/model-router.test.js.map +1 -1
  54. package/dist/tests/obsidian.test.d.ts +2 -0
  55. package/dist/tests/obsidian.test.d.ts.map +1 -0
  56. package/dist/tests/obsidian.test.js +138 -0
  57. package/dist/tests/obsidian.test.js.map +1 -0
  58. package/dist/tests/post-read.test.js +2 -1
  59. package/dist/tests/post-read.test.js.map +1 -1
  60. package/dist/tests/project-namespace.test.d.ts +2 -0
  61. package/dist/tests/project-namespace.test.d.ts.map +1 -0
  62. package/dist/tests/project-namespace.test.js +151 -0
  63. package/dist/tests/project-namespace.test.js.map +1 -0
  64. package/dist/tests/read-guard.test.js +5 -4
  65. package/dist/tests/read-guard.test.js.map +1 -1
  66. package/dist/tests/session-focus.test.js +50 -0
  67. package/dist/tests/session-focus.test.js.map +1 -1
  68. package/hooks/lib/mindlore-common.cjs +38 -29
  69. package/hooks/lib/types.d.ts +2 -0
  70. package/hooks/mindlore-cwd-changed.cjs +1 -1
  71. package/hooks/mindlore-dont-repeat.cjs +2 -2
  72. package/hooks/mindlore-fts5-sync.cjs +4 -3
  73. package/hooks/mindlore-index.cjs +2 -2
  74. package/hooks/mindlore-post-read.cjs +2 -2
  75. package/hooks/mindlore-read-guard.cjs +2 -2
  76. package/hooks/mindlore-search.cjs +0 -2
  77. package/hooks/mindlore-session-end.cjs +5 -2
  78. package/hooks/mindlore-session-focus.cjs +22 -7
  79. package/package.json +1 -1
  80. package/templates/SCHEMA.md +9 -11
  81. package/templates/config.json +4 -1
@@ -0,0 +1,88 @@
1
+ "use strict";
2
+ /**
3
+ * obsidian-helpers — Shared utilities for Obsidian integration.
4
+ */
5
+ var __importDefault = (this && this.__importDefault) || function (mod) {
6
+ return (mod && mod.__esModule) ? mod : { "default": mod };
7
+ };
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.convertToWikilinks = convertToWikilinks;
10
+ exports.shouldExport = shouldExport;
11
+ exports.isObsidianVault = isObsidianVault;
12
+ exports.collectMdFiles = collectMdFiles;
13
+ const fs_1 = __importDefault(require("fs"));
14
+ const path_1 = __importDefault(require("path"));
15
+ /** Files/dirs to skip during export */
16
+ const SKIP_FILES = new Set([
17
+ 'config.json',
18
+ 'log.md',
19
+ 'INDEX.md',
20
+ 'SCHEMA.md',
21
+ '.gitignore',
22
+ '.version',
23
+ '.pkg-version',
24
+ ]);
25
+ const SKIP_DIRS = new Set(['.git']);
26
+ /**
27
+ * Convert relative markdown links to Obsidian wikilinks.
28
+ * `[text](../domains/x.md)` → `[[x]]`
29
+ * `[text](./sources/y.md)` → `[[y]]`
30
+ */
31
+ function convertToWikilinks(content) {
32
+ return content.replace(/\[([^\]]+)\]\((?:\.\.?\/)?(?:[\w-]+\/)*([^/)]+)\.md\)/g, (_match, _text, filename) => `[[${filename}]]`);
33
+ }
34
+ /**
35
+ * Check if a file should be exported (newer than vault copy or no vault copy).
36
+ */
37
+ function shouldExport(srcPath, destPath, force) {
38
+ if (force)
39
+ return true;
40
+ try {
41
+ const srcStat = fs_1.default.statSync(srcPath);
42
+ const destStat = fs_1.default.statSync(destPath);
43
+ return srcStat.mtimeMs > destStat.mtimeMs;
44
+ }
45
+ catch (_err) {
46
+ return true;
47
+ }
48
+ }
49
+ /**
50
+ * Check if a directory is an Obsidian vault (has .obsidian/ folder).
51
+ */
52
+ function isObsidianVault(dirPath) {
53
+ return fs_1.default.existsSync(path_1.default.join(dirPath, '.obsidian'));
54
+ }
55
+ /**
56
+ * Recursively collect all .md files from a directory, excluding SKIP_FILES and SKIP_DIRS.
57
+ */
58
+ function collectMdFiles(baseDir, relativeTo) {
59
+ const root = relativeTo ?? baseDir;
60
+ const results = [];
61
+ let entries;
62
+ try {
63
+ entries = fs_1.default.readdirSync(baseDir, { withFileTypes: true });
64
+ }
65
+ catch (_err) {
66
+ return results;
67
+ }
68
+ for (const entry of entries) {
69
+ if (SKIP_DIRS.has(entry.name))
70
+ continue;
71
+ if (entry.name.startsWith('_'))
72
+ continue;
73
+ const fullPath = path_1.default.join(baseDir, entry.name);
74
+ if (entry.isDirectory()) {
75
+ results.push(...collectMdFiles(fullPath, root));
76
+ }
77
+ else if (entry.isFile() && entry.name.endsWith('.md')) {
78
+ if (SKIP_FILES.has(entry.name))
79
+ continue;
80
+ results.push({
81
+ absolute: fullPath,
82
+ relative: path_1.default.relative(root, fullPath),
83
+ });
84
+ }
85
+ }
86
+ return results;
87
+ }
88
+ //# sourceMappingURL=obsidian-helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"obsidian-helpers.js","sourceRoot":"","sources":["../../../scripts/lib/obsidian-helpers.ts"],"names":[],"mappings":";AAAA;;GAEG;;;;;AAuBH,gDAKC;AAKD,oCAaC;AAKD,0CAEC;AAKD,wCAiCC;AAzFD,4CAAoB;AACpB,gDAAwB;AAExB,uCAAuC;AACvC,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC;IACzB,aAAa;IACb,QAAQ;IACR,UAAU;IACV,WAAW;IACX,YAAY;IACZ,UAAU;IACV,cAAc;CACf,CAAC,CAAC;AAEH,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AAEpC;;;;GAIG;AACH,SAAgB,kBAAkB,CAAC,OAAe;IAChD,OAAO,OAAO,CAAC,OAAO,CACpB,wDAAwD,EACxD,CAAC,MAAM,EAAE,KAAa,EAAE,QAAgB,EAAE,EAAE,CAAC,KAAK,QAAQ,IAAI,CAC/D,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAgB,YAAY,CAC1B,OAAe,EACf,QAAgB,EAChB,KAAc;IAEd,IAAI,KAAK;QAAE,OAAO,IAAI,CAAC;IACvB,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,YAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QACrC,MAAM,QAAQ,GAAG,YAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACvC,OAAO,OAAO,CAAC,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC;IAC5C,CAAC;IAAC,OAAO,IAAI,EAAE,CAAC;QACd,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAgB,eAAe,CAAC,OAAe;IAC7C,OAAO,YAAE,CAAC,UAAU,CAAC,cAAI,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC;AACxD,CAAC;AAED;;GAEG;AACH,SAAgB,cAAc,CAC5B,OAAe,EACf,UAAmB;IAEnB,MAAM,IAAI,GAAG,UAAU,IAAI,OAAO,CAAC;IACnC,MAAM,OAAO,GAAkD,EAAE,CAAC;IAElE,IAAI,OAAoB,CAAC;IACzB,IAAI,CAAC;QACH,OAAO,GAAG,YAAE,CAAC,WAAW,CAAC,OAAO,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7D,CAAC;IAAC,OAAO,IAAI,EAAE,CAAC;QACd,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,IAAI,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC;YAAE,SAAS;QACxC,IAAI,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,SAAS;QAEzC,MAAM,QAAQ,GAAG,cAAI,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QAEhD,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;YACxB,OAAO,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC;QAClD,CAAC;aAAM,IAAI,KAAK,CAAC,MAAM,EAAE,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YACxD,IAAI,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC;gBAAE,SAAS;YAEzC,OAAO,CAAC,IAAI,CAAC;gBACX,QAAQ,EAAE,QAAQ;gBAClB,QAAQ,EAAE,cAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;aACxC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC"}
@@ -0,0 +1,12 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * mindlore backup — Git-based backup for ~/.mindlore/
4
+ *
5
+ * Usage:
6
+ * mindlore backup init — Create .gitignore, initial commit
7
+ * mindlore backup status — Show git status + last commit
8
+ * mindlore backup remote <url> — Set remote origin
9
+ * mindlore backup now — Manual commit + push
10
+ */
11
+ export {};
12
+ //# sourceMappingURL=mindlore-backup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mindlore-backup.d.ts","sourceRoot":"","sources":["../../scripts/mindlore-backup.ts"],"names":[],"mappings":";AAEA;;;;;;;;GAQG"}
@@ -0,0 +1,218 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ /**
4
+ * mindlore backup — Git-based backup for ~/.mindlore/
5
+ *
6
+ * Usage:
7
+ * mindlore backup init — Create .gitignore, initial commit
8
+ * mindlore backup status — Show git status + last commit
9
+ * mindlore backup remote <url> — Set remote origin
10
+ * mindlore backup now — Manual commit + push
11
+ */
12
+ var __importDefault = (this && this.__importDefault) || function (mod) {
13
+ return (mod && mod.__esModule) ? mod : { "default": mod };
14
+ };
15
+ Object.defineProperty(exports, "__esModule", { value: true });
16
+ const fs_1 = __importDefault(require("fs"));
17
+ const path_1 = __importDefault(require("path"));
18
+ const child_process_1 = require("child_process");
19
+ const constants_js_1 = require("./lib/constants.js");
20
+ const BASE_DIR = constants_js_1.GLOBAL_MINDLORE_DIR;
21
+ const GIT_DIR = path_1.default.join(BASE_DIR, '.git');
22
+ const GITIGNORE_CONTENT = `*.db
23
+ *.db-wal
24
+ *.db-shm
25
+ _session-reads-*.json
26
+ _pattern-cache-*.json
27
+ `;
28
+ function backupInit() {
29
+ if (!fs_1.default.existsSync(BASE_DIR)) {
30
+ console.error(' ~/.mindlore/ not found. Run: npx mindlore init');
31
+ process.exit(1);
32
+ }
33
+ // Create .gitignore
34
+ const gitignorePath = path_1.default.join(BASE_DIR, '.gitignore');
35
+ fs_1.default.writeFileSync(gitignorePath, GITIGNORE_CONTENT, 'utf8');
36
+ (0, constants_js_1.log)('Created .gitignore');
37
+ // Init git if needed
38
+ if (!fs_1.default.existsSync(GIT_DIR)) {
39
+ (0, child_process_1.execSync)('git init', { cwd: BASE_DIR, stdio: 'pipe', timeout: 10000 });
40
+ (0, constants_js_1.log)('Initialized git repo');
41
+ }
42
+ else {
43
+ (0, constants_js_1.log)('Git repo already initialized');
44
+ }
45
+ // Initial commit
46
+ try {
47
+ (0, child_process_1.execSync)('git add -A', { cwd: BASE_DIR, stdio: 'pipe', timeout: 10000 });
48
+ const status = (0, child_process_1.execSync)('git status --porcelain', {
49
+ cwd: BASE_DIR,
50
+ encoding: 'utf8',
51
+ timeout: 5000,
52
+ }).trim();
53
+ if (status) {
54
+ (0, child_process_1.execSync)('git commit -m "mindlore backup init"', {
55
+ cwd: BASE_DIR,
56
+ stdio: 'pipe',
57
+ timeout: 10000,
58
+ });
59
+ (0, constants_js_1.log)('Initial commit created');
60
+ }
61
+ else {
62
+ (0, constants_js_1.log)('Nothing to commit');
63
+ }
64
+ }
65
+ catch (_err) {
66
+ (0, constants_js_1.log)('WARNING: Could not create initial commit');
67
+ }
68
+ }
69
+ function backupStatus() {
70
+ if (!fs_1.default.existsSync(GIT_DIR)) {
71
+ console.log(' Backup not initialized. Run: mindlore backup init');
72
+ return;
73
+ }
74
+ try {
75
+ const lastCommit = (0, child_process_1.execSync)('git log --oneline -1', {
76
+ cwd: BASE_DIR,
77
+ encoding: 'utf8',
78
+ timeout: 5000,
79
+ }).trim();
80
+ (0, constants_js_1.log)(`Last commit: ${lastCommit}`);
81
+ }
82
+ catch (_err) {
83
+ (0, constants_js_1.log)('No commits yet');
84
+ }
85
+ try {
86
+ const remote = (0, child_process_1.execSync)('git remote get-url origin', {
87
+ cwd: BASE_DIR,
88
+ encoding: 'utf8',
89
+ timeout: 5000,
90
+ stdio: ['pipe', 'pipe', 'pipe'],
91
+ }).trim();
92
+ (0, constants_js_1.log)(`Remote: ${remote}`);
93
+ }
94
+ catch (_err) {
95
+ (0, constants_js_1.log)('Remote: not configured');
96
+ }
97
+ try {
98
+ const status = (0, child_process_1.execSync)('git status --short', {
99
+ cwd: BASE_DIR,
100
+ encoding: 'utf8',
101
+ timeout: 5000,
102
+ }).trim();
103
+ if (status) {
104
+ const lines = status.split('\n');
105
+ (0, constants_js_1.log)(`Uncommitted: ${lines.length} file(s)`);
106
+ }
107
+ else {
108
+ (0, constants_js_1.log)('Working tree clean');
109
+ }
110
+ }
111
+ catch (_err) {
112
+ (0, constants_js_1.log)('Could not get status');
113
+ }
114
+ }
115
+ function backupRemote(url) {
116
+ if (!fs_1.default.existsSync(GIT_DIR)) {
117
+ console.error(' Backup not initialized. Run: mindlore backup init');
118
+ process.exit(1);
119
+ }
120
+ try {
121
+ try {
122
+ (0, child_process_1.execSync)('git remote get-url origin', {
123
+ cwd: BASE_DIR,
124
+ stdio: 'pipe',
125
+ timeout: 5000,
126
+ });
127
+ (0, child_process_1.execFileSync)('git', ['remote', 'set-url', 'origin', url], {
128
+ cwd: BASE_DIR,
129
+ stdio: 'pipe',
130
+ timeout: 5000,
131
+ });
132
+ (0, constants_js_1.log)(`Remote updated: ${url}`);
133
+ }
134
+ catch (_err) {
135
+ (0, child_process_1.execFileSync)('git', ['remote', 'add', 'origin', url], {
136
+ cwd: BASE_DIR,
137
+ stdio: 'pipe',
138
+ timeout: 5000,
139
+ });
140
+ (0, constants_js_1.log)(`Remote added: ${url}`);
141
+ }
142
+ }
143
+ catch (_err) {
144
+ (0, constants_js_1.log)('WARNING: Could not set remote');
145
+ }
146
+ }
147
+ function backupNow() {
148
+ if (!fs_1.default.existsSync(GIT_DIR)) {
149
+ console.error(' Backup not initialized. Run: mindlore backup init');
150
+ process.exit(1);
151
+ }
152
+ try {
153
+ (0, child_process_1.execSync)('git add -A', { cwd: BASE_DIR, stdio: 'pipe', timeout: 10000 });
154
+ const status = (0, child_process_1.execSync)('git status --porcelain', {
155
+ cwd: BASE_DIR,
156
+ encoding: 'utf8',
157
+ timeout: 5000,
158
+ }).trim();
159
+ if (!status) {
160
+ (0, constants_js_1.log)('Nothing to commit — working tree clean');
161
+ return;
162
+ }
163
+ const now = new Date().toISOString().slice(0, 19);
164
+ (0, child_process_1.execSync)(`git commit -m "mindlore backup ${now}"`, {
165
+ cwd: BASE_DIR,
166
+ stdio: 'pipe',
167
+ timeout: 10000,
168
+ });
169
+ (0, constants_js_1.log)('Committed');
170
+ try {
171
+ (0, child_process_1.execSync)('git remote get-url origin', {
172
+ cwd: BASE_DIR,
173
+ stdio: 'pipe',
174
+ timeout: 5000,
175
+ });
176
+ (0, child_process_1.execSync)('git push', { cwd: BASE_DIR, stdio: 'pipe', timeout: 15000 });
177
+ (0, constants_js_1.log)('Pushed to remote');
178
+ }
179
+ catch (_err) {
180
+ (0, constants_js_1.log)('No remote configured — local commit only');
181
+ }
182
+ }
183
+ catch (_err) {
184
+ (0, constants_js_1.log)('WARNING: Backup failed');
185
+ }
186
+ }
187
+ function main() {
188
+ const args = process.argv.slice(2);
189
+ const subcommand = args[0];
190
+ console.log('\n Mindlore Backup\n');
191
+ switch (subcommand) {
192
+ case 'init':
193
+ backupInit();
194
+ break;
195
+ case 'status':
196
+ backupStatus();
197
+ break;
198
+ case 'remote':
199
+ if (!args[1]) {
200
+ console.error(' Usage: mindlore backup remote <url>');
201
+ process.exit(1);
202
+ }
203
+ backupRemote(args[1]);
204
+ break;
205
+ case 'now':
206
+ backupNow();
207
+ break;
208
+ default:
209
+ console.log(' Usage:');
210
+ (0, constants_js_1.log)('mindlore backup init — Initialize backup');
211
+ (0, constants_js_1.log)('mindlore backup status — Show backup status');
212
+ (0, constants_js_1.log)('mindlore backup remote <url> — Set remote repository');
213
+ (0, constants_js_1.log)('mindlore backup now — Commit + push now');
214
+ break;
215
+ }
216
+ }
217
+ main();
218
+ //# sourceMappingURL=mindlore-backup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mindlore-backup.js","sourceRoot":"","sources":["../../scripts/mindlore-backup.ts"],"names":[],"mappings":"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"}
@@ -16,7 +16,7 @@ const constants_js_1 = require("./lib/constants.js");
16
16
  const { sha256, getAllMdFiles, openDatabase, parseFrontmatter, extractFtsMetadata, insertFtsRow, } = require((0, constants_js_1.resolveHookCommon)(__dirname));
17
17
  // ── Main ───────────────────────────────────────────────────────────────
18
18
  function main() {
19
- const baseDir = process.argv[2] ?? path_1.default.join(process.cwd(), '.mindlore');
19
+ const baseDir = process.argv[2] ?? constants_js_1.GLOBAL_MINDLORE_DIR;
20
20
  const dbPath = path_1.default.join(baseDir, constants_js_1.DB_NAME);
21
21
  if (!fs_1.default.existsSync(dbPath)) {
22
22
  console.error(' Database not found. Run: npx mindlore init');
@@ -41,6 +41,7 @@ function main() {
41
41
  let skipped = 0;
42
42
  let errors = 0;
43
43
  const now = new Date().toISOString();
44
+ const project = path_1.default.basename(process.cwd());
44
45
  const transaction = db.transaction(() => {
45
46
  for (const filePath of mdFiles) {
46
47
  try {
@@ -54,7 +55,7 @@ function main() {
54
55
  const { meta, body } = parseFrontmatter(content);
55
56
  const { slug, description, type, category, title, tags, quality, dateCaptured } = extractFtsMetadata(meta, body, filePath, baseDir);
56
57
  deleteFts.run(filePath);
57
- insertFtsRow(db, { path: filePath, slug, description, type, category, title, content: body, tags, quality, dateCaptured });
58
+ insertFtsRow(db, { path: filePath, slug, description, type, category, title, content: body, tags, quality, dateCaptured, project });
58
59
  upsertHash.run(filePath, hash, now);
59
60
  indexed++;
60
61
  }
@@ -1 +1 @@
1
- {"version":3,"file":"mindlore-fts5-index.js","sourceRoot":"","sources":["../../scripts/mindlore-fts5-index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mindlore-fts5-index.js","sourceRoot":"","sources":["../../scripts/mindlore-fts5-index.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,10 @@
1
1
  #!/usr/bin/env node
2
2
  /**
3
- * mindlore-fts5-search — Search .mindlore/ knowledge base via FTS5.
3
+ * mindlore-fts5-search — Search ~/.mindlore/ knowledge base via FTS5.
4
4
  *
5
- * Usage: node dist/scripts/mindlore-fts5-search.js "query" [--global] [--all]
5
+ * Usage: node dist/scripts/mindlore-fts5-search.js "query" [--all] [--project <name>]
6
6
  *
7
+ * v0.3.3: Single global DB. Default: filter by current project. --all: no filter.
7
8
  * Returns top 3 results ranked by BM25 with file path and snippet.
8
9
  */
9
10
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"mindlore-fts5-search.d.ts","sourceRoot":"","sources":["../../scripts/mindlore-fts5-search.ts"],"names":[],"mappings":";AAEA;;;;;;GAMG"}
1
+ {"version":3,"file":"mindlore-fts5-search.d.ts","sourceRoot":"","sources":["../../scripts/mindlore-fts5-search.ts"],"names":[],"mappings":";AAEA;;;;;;;GAOG"}
@@ -1,10 +1,11 @@
1
1
  #!/usr/bin/env node
2
2
  "use strict";
3
3
  /**
4
- * mindlore-fts5-search — Search .mindlore/ knowledge base via FTS5.
4
+ * mindlore-fts5-search — Search ~/.mindlore/ knowledge base via FTS5.
5
5
  *
6
- * Usage: node dist/scripts/mindlore-fts5-search.js "query" [--global] [--all]
6
+ * Usage: node dist/scripts/mindlore-fts5-search.js "query" [--all] [--project <name>]
7
7
  *
8
+ * v0.3.3: Single global DB. Default: filter by current project. --all: no filter.
8
9
  * Returns top 3 results ranked by BM25 with file path and snippet.
9
10
  */
10
11
  var __importDefault = (this && this.__importDefault) || function (mod) {
@@ -16,11 +17,18 @@ const path_1 = __importDefault(require("path"));
16
17
  const constants_js_1 = require("./lib/constants.js");
17
18
  const { openDatabase, extractHeadings } = require((0, constants_js_1.resolveHookCommon)(__dirname));
18
19
  const MAX_RESULTS = 3;
19
- function searchSingleDb(dbPath, sanitized) {
20
- const db = openDatabase(dbPath, { readonly: true });
21
- if (!db)
22
- return [];
20
+ function queryDb(db, sanitized, projectFilter) {
23
21
  try {
22
+ if (projectFilter) {
23
+ return db
24
+ .prepare(`SELECT path, snippet(mindlore_fts, 1, '>>>', '<<<', '...', 40) as snippet,
25
+ rank
26
+ FROM mindlore_fts
27
+ WHERE mindlore_fts MATCH ? AND project = ?
28
+ ORDER BY rank
29
+ LIMIT ?`)
30
+ .all(sanitized, projectFilter, MAX_RESULTS);
31
+ }
24
32
  return db
25
33
  .prepare(`SELECT path, snippet(mindlore_fts, 1, '>>>', '<<<', '...', 40) as snippet,
26
34
  rank
@@ -33,37 +41,20 @@ function searchSingleDb(dbPath, sanitized) {
33
41
  catch (_err) {
34
42
  return [];
35
43
  }
36
- finally {
37
- db.close();
38
- }
39
44
  }
40
45
  function main() {
41
46
  const args = process.argv.slice(2);
42
- const isGlobal = args.includes('--global');
43
47
  const isAll = args.includes('--all');
44
- const query = args.find((a) => !a.startsWith('--'));
48
+ const projectIdx = args.indexOf('--project');
49
+ const explicitProject = projectIdx !== -1 ? args[projectIdx + 1] : undefined;
50
+ const query = args.find((a) => !a.startsWith('--') && a !== explicitProject);
45
51
  if (!query) {
46
- console.error('Usage: node mindlore-fts5-search.js "query" [--global] [--all]');
52
+ console.error('Usage: node mindlore-fts5-search.js "query" [--all] [--project <name>]');
47
53
  process.exit(1);
48
54
  }
49
- // Determine which directories to search
50
- const searchDirs = [];
51
- const projectDir = path_1.default.join(process.cwd(), constants_js_1.MINDLORE_DIR);
52
- if (isAll) {
53
- if (fs_1.default.existsSync(projectDir))
54
- searchDirs.push(projectDir);
55
- if (fs_1.default.existsSync(constants_js_1.GLOBAL_MINDLORE_DIR) && constants_js_1.GLOBAL_MINDLORE_DIR !== projectDir) {
56
- searchDirs.push(constants_js_1.GLOBAL_MINDLORE_DIR);
57
- }
58
- }
59
- else if (isGlobal) {
60
- searchDirs.push(constants_js_1.GLOBAL_MINDLORE_DIR);
61
- }
62
- else {
63
- searchDirs.push(fs_1.default.existsSync(projectDir) ? projectDir : constants_js_1.GLOBAL_MINDLORE_DIR);
64
- }
65
- const validDirs = searchDirs.filter((d) => fs_1.default.existsSync(path_1.default.join(d, constants_js_1.DB_NAME)));
66
- if (validDirs.length === 0) {
55
+ // v0.3.3: Single global DB
56
+ const dbPath = path_1.default.join(constants_js_1.GLOBAL_MINDLORE_DIR, constants_js_1.DB_NAME);
57
+ if (!fs_1.default.existsSync(dbPath)) {
67
58
  console.error(' Database not found. Run: npx mindlore init && npm run index');
68
59
  process.exit(1);
69
60
  }
@@ -72,37 +63,34 @@ function main() {
72
63
  console.log(' No valid search terms.');
73
64
  process.exit(0);
74
65
  }
75
- // Search all target DBs, collect results with their baseDir
76
- const allResults = [];
77
- for (const dir of validDirs) {
78
- const dbPath = path_1.default.join(dir, constants_js_1.DB_NAME);
79
- const results = searchSingleDb(dbPath, sanitized);
80
- for (const r of results) {
81
- allResults.push({ ...r, baseDir: dir });
66
+ const projectFilter = isAll ? undefined : (explicitProject ?? (0, constants_js_1.getProjectName)());
67
+ const db = openDatabase(dbPath, { readonly: true });
68
+ if (!db) {
69
+ console.error(' Could not open database.');
70
+ process.exit(1);
71
+ }
72
+ let relevant;
73
+ try {
74
+ relevant = queryDb(db, sanitized, projectFilter);
75
+ // If project-scoped search returns nothing, fallback to all projects
76
+ if (relevant.length === 0 && projectFilter) {
77
+ relevant = queryDb(db, sanitized);
82
78
  }
83
79
  }
84
- // Sort by rank, deduplicate by full path (project wins — appears first)
85
- allResults.sort((a, b) => a.rank - b.rank);
86
- const seen = new Set();
87
- const unique = allResults.filter((r) => {
88
- const normalized = path_1.default.resolve(r.path);
89
- if (seen.has(normalized))
90
- return false;
91
- seen.add(normalized);
92
- return true;
93
- });
94
- const relevant = unique.slice(0, MAX_RESULTS);
80
+ finally {
81
+ db.close();
82
+ }
95
83
  if (relevant.length === 0) {
96
84
  console.log(` No results for: "${query}"`);
97
85
  process.exit(0);
98
86
  }
99
- const scopeLabel = isAll ? 'all' : isGlobal ? 'global' : 'project';
87
+ const scopeLabel = isAll ? 'all' : `project:${projectFilter}`;
100
88
  console.log(`\n Mindlore Search [${scopeLabel}]: "${query}" (${relevant.length} results)\n`);
101
89
  for (let i = 0; i < relevant.length; i++) {
102
90
  const r = relevant[i];
103
91
  if (!r)
104
92
  continue;
105
- const relativePath = path_1.default.relative(r.baseDir, r.path);
93
+ const relativePath = path_1.default.relative(constants_js_1.GLOBAL_MINDLORE_DIR, r.path);
106
94
  const fileName = path_1.default.basename(r.path, '.md');
107
95
  let headings = [];
108
96
  if (fs_1.default.existsSync(r.path)) {
@@ -1 +1 @@
1
- {"version":3,"file":"mindlore-fts5-search.js","sourceRoot":"","sources":["../../scripts/mindlore-fts5-search.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mindlore-fts5-search.js","sourceRoot":"","sources":["../../scripts/mindlore-fts5-search.ts"],"names":[],"mappings":"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"}
@@ -118,15 +118,15 @@ class HealthChecker {
118
118
  .prepare('SELECT count(*) as cnt FROM file_hashes')
119
119
  .get();
120
120
  const schemaVersion = detectSchemaVersion(db);
121
- if (schemaVersion < 10) {
121
+ if (schemaVersion < 11) {
122
122
  return {
123
123
  warn: true,
124
- detail: `${result.cnt} indexed, ${hashResult.cnt} hashes — ${schemaVersion}-col schema (run: npx mindlore init to upgrade to 10-col)`,
124
+ detail: `${result.cnt} indexed, ${hashResult.cnt} hashes — ${schemaVersion}-col schema (run: npx mindlore init to upgrade to 11-col)`,
125
125
  };
126
126
  }
127
127
  return {
128
128
  ok: true,
129
- detail: `${result.cnt} indexed, ${hashResult.cnt} hashes, 10-col schema`,
129
+ detail: `${result.cnt} indexed, ${hashResult.cnt} hashes, 11-col schema`,
130
130
  };
131
131
  }
132
132
  catch (err) {
@@ -311,7 +311,7 @@ class HealthChecker {
311
311
  }
312
312
  // ── Main ───────────────────────────────────────────────────────────────
313
313
  function main() {
314
- const baseDir = process.argv[2] ?? path_1.default.join(process.cwd(), '.mindlore');
314
+ const baseDir = process.argv[2] ?? constants_js_1.GLOBAL_MINDLORE_DIR;
315
315
  if (!fs_1.default.existsSync(baseDir)) {
316
316
  console.error(` .mindlore/ not found at: ${baseDir}`);
317
317
  console.error(' Run: npx mindlore init');