mindlore 0.2.1 → 0.3.0
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 +8 -8
- package/SCHEMA.md +15 -2
- package/dist/scripts/init.d.ts +1 -1
- package/dist/scripts/init.js +98 -67
- package/dist/scripts/init.js.map +1 -1
- package/dist/scripts/lib/constants.d.ts +27 -0
- package/dist/scripts/lib/constants.d.ts.map +1 -1
- package/dist/scripts/lib/constants.js +74 -1
- package/dist/scripts/lib/constants.js.map +1 -1
- package/dist/scripts/lib/schemas.d.ts +93 -0
- package/dist/scripts/lib/schemas.d.ts.map +1 -0
- package/dist/scripts/lib/schemas.js +108 -0
- package/dist/scripts/lib/schemas.js.map +1 -0
- package/dist/scripts/mindlore-fts5-index.js +3 -4
- package/dist/scripts/mindlore-fts5-index.js.map +1 -1
- package/dist/scripts/mindlore-fts5-search.d.ts +1 -1
- package/dist/scripts/mindlore-fts5-search.js +87 -74
- package/dist/scripts/mindlore-fts5-search.js.map +1 -1
- package/dist/scripts/uninstall.d.ts +1 -1
- package/dist/scripts/uninstall.js +27 -17
- package/dist/scripts/uninstall.js.map +1 -1
- package/dist/tests/compounding.test.js +2 -2
- package/dist/tests/compounding.test.js.map +1 -1
- package/dist/tests/cwd-changed.test.d.ts +2 -0
- package/dist/tests/cwd-changed.test.d.ts.map +1 -0
- package/dist/tests/cwd-changed.test.js +62 -0
- package/dist/tests/cwd-changed.test.js.map +1 -0
- package/dist/tests/dedup.test.js +4 -4
- package/dist/tests/dedup.test.js.map +1 -1
- package/dist/tests/dont-repeat.test.d.ts +2 -0
- package/dist/tests/dont-repeat.test.d.ts.map +1 -0
- package/dist/tests/dont-repeat.test.js +100 -0
- package/dist/tests/dont-repeat.test.js.map +1 -0
- package/dist/tests/e2e-pipeline.test.d.ts +2 -0
- package/dist/tests/e2e-pipeline.test.d.ts.map +1 -0
- package/dist/tests/e2e-pipeline.test.js +220 -0
- package/dist/tests/e2e-pipeline.test.js.map +1 -0
- package/dist/tests/evolve.test.d.ts +2 -0
- package/dist/tests/evolve.test.d.ts.map +1 -0
- package/dist/tests/evolve.test.js +105 -0
- package/dist/tests/evolve.test.js.map +1 -0
- package/dist/tests/explore.test.d.ts +2 -0
- package/dist/tests/explore.test.d.ts.map +1 -0
- package/dist/tests/explore.test.js +146 -0
- package/dist/tests/explore.test.js.map +1 -0
- package/dist/tests/fts5.test.js +7 -7
- package/dist/tests/fts5.test.js.map +1 -1
- package/dist/tests/global-layer.test.d.ts +2 -0
- package/dist/tests/global-layer.test.d.ts.map +1 -0
- package/dist/tests/global-layer.test.js +152 -0
- package/dist/tests/global-layer.test.js.map +1 -0
- package/dist/tests/helpers/db.d.ts +14 -1
- package/dist/tests/helpers/db.d.ts.map +1 -1
- package/dist/tests/helpers/db.js +3 -3
- package/dist/tests/helpers/db.js.map +1 -1
- package/dist/tests/hook-smoke.test.js +2 -2
- package/dist/tests/hook-smoke.test.js.map +1 -1
- package/dist/tests/init.test.js +24 -0
- package/dist/tests/init.test.js.map +1 -1
- package/dist/tests/post-read.test.d.ts +2 -0
- package/dist/tests/post-read.test.d.ts.map +1 -0
- package/dist/tests/post-read.test.js +69 -0
- package/dist/tests/post-read.test.js.map +1 -0
- package/dist/tests/quality-populate.test.d.ts +2 -0
- package/dist/tests/quality-populate.test.d.ts.map +1 -0
- package/dist/tests/quality-populate.test.js +85 -0
- package/dist/tests/quality-populate.test.js.map +1 -0
- package/dist/tests/reflect.test.d.ts +2 -0
- package/dist/tests/reflect.test.d.ts.map +1 -0
- package/dist/tests/reflect.test.js +122 -0
- package/dist/tests/reflect.test.js.map +1 -0
- package/dist/tests/schemas.test.d.ts +2 -0
- package/dist/tests/schemas.test.d.ts.map +1 -0
- package/dist/tests/schemas.test.js +87 -0
- package/dist/tests/schemas.test.js.map +1 -0
- package/dist/tests/search-hook.test.js +3 -3
- package/dist/tests/search-hook.test.js.map +1 -1
- package/dist/tests/upgrade.test.d.ts +2 -0
- package/dist/tests/upgrade.test.d.ts.map +1 -0
- package/dist/tests/upgrade.test.js +91 -0
- package/dist/tests/upgrade.test.js.map +1 -0
- package/hooks/lib/mindlore-common.cjs +66 -5
- package/hooks/lib/types.d.ts +56 -0
- package/hooks/mindlore-cwd-changed.cjs +57 -0
- package/hooks/mindlore-dont-repeat.cjs +222 -0
- package/hooks/mindlore-fts5-sync.cjs +6 -9
- package/hooks/mindlore-index.cjs +3 -3
- package/hooks/mindlore-post-read.cjs +97 -0
- package/hooks/mindlore-read-guard.cjs +27 -4
- package/hooks/mindlore-search.cjs +73 -52
- package/hooks/mindlore-session-end.cjs +43 -1
- package/hooks/mindlore-session-focus.cjs +14 -0
- package/package.json +3 -2
- package/plugin.json +24 -1
- package/skills/mindlore-decide/SKILL.md +8 -0
- package/skills/mindlore-evolve/SKILL.md +81 -0
- package/skills/mindlore-explore/SKILL.md +84 -0
- package/skills/mindlore-health/SKILL.md +8 -0
- package/skills/mindlore-ingest/SKILL.md +19 -4
- package/skills/mindlore-log/SKILL.md +30 -13
- package/skills/mindlore-query/SKILL.md +8 -0
- package/templates/SCHEMA.md +15 -2
|
@@ -27,14 +27,14 @@ describe('Knowledge Compounding', () => {
|
|
|
27
27
|
const sourcePath = path_1.default.join(TEST_DIR, 'sources', 'react-hooks.md');
|
|
28
28
|
const sourceContent = '---\nslug: react-hooks\ntype: source\n---\n# React Hooks\n\nUseEffect cleanup patterns.';
|
|
29
29
|
fs_1.default.writeFileSync(sourcePath, sourceContent);
|
|
30
|
-
(0, db_js_1.insertFts)(db, sourcePath, 'react-hooks', 'UseEffect cleanup patterns', 'source', 'sources', 'React Hooks', sourceContent, '', null);
|
|
30
|
+
(0, db_js_1.insertFts)(db, { path: sourcePath, slug: 'react-hooks', description: 'UseEffect cleanup patterns', type: 'source', category: 'sources', title: 'React Hooks', content: sourceContent, tags: '', quality: null });
|
|
31
31
|
db.prepare('INSERT INTO file_hashes (path, content_hash, last_indexed) VALUES (?, ?, ?)').run(sourcePath, (0, db_js_1.sha256)(sourceContent), new Date().toISOString());
|
|
32
32
|
// Step 2: Simulate query → writeback (agent creates an insight)
|
|
33
33
|
const insightPath = path_1.default.join(TEST_DIR, 'insights', 'react-cleanup.md');
|
|
34
34
|
const insightContent = '---\nslug: react-cleanup\ntype: insight\n---\n# React Cleanup Pattern\n\nAlways return cleanup function from useEffect to avoid memory leaks.';
|
|
35
35
|
fs_1.default.writeFileSync(insightPath, insightContent);
|
|
36
36
|
// Step 3: Reindex (simulates the hook)
|
|
37
|
-
(0, db_js_1.insertFts)(db, insightPath, 'react-cleanup', 'Avoid memory leaks with useEffect cleanup', 'insight', 'insights', 'React Cleanup Pattern', insightContent, '', null);
|
|
37
|
+
(0, db_js_1.insertFts)(db, { path: insightPath, slug: 'react-cleanup', description: 'Avoid memory leaks with useEffect cleanup', type: 'insight', category: 'insights', title: 'React Cleanup Pattern', content: insightContent, tags: '', quality: null });
|
|
38
38
|
db.prepare('INSERT INTO file_hashes (path, content_hash, last_indexed) VALUES (?, ?, ?)').run(insightPath, (0, db_js_1.sha256)(insightContent), new Date().toISOString());
|
|
39
39
|
// Step 4: Next query should find the writeback content
|
|
40
40
|
const results = db
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compounding.test.js","sourceRoot":"","sources":["../../tests/compounding.test.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;;;AAEH,4CAAoB;AACpB,gDAAwB;AACxB,2CAAiG;AAEjG,MAAM,QAAQ,GAAG,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,4BAA4B,CAAC,CAAC;AAC1E,MAAM,OAAO,GAAG,cAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;AAEnD,UAAU,CAAC,GAAG,EAAE;IACd,IAAA,oBAAY,EAAC,QAAQ,EAAE,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC;AAClD,CAAC,CAAC,CAAC;AAEH,SAAS,CAAC,GAAG,EAAE;IACb,IAAA,uBAAe,EAAC,QAAQ,CAAC,CAAC;AAC5B,CAAC,CAAC,CAAC;AAMH,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;IACrC,IAAI,CAAC,yDAAyD,EAAE,GAAG,EAAE;QACnE,MAAM,EAAE,GAAG,IAAA,oBAAY,EAAC,OAAO,CAAC,CAAC;QAEjC,mCAAmC;QACnC,MAAM,UAAU,GAAG,cAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,EAAE,gBAAgB,CAAC,CAAC;QACpE,MAAM,aAAa,GAAG,yFAAyF,CAAC;QAChH,YAAE,CAAC,aAAa,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;QAE5C,IAAA,iBAAS,EAAC,EAAE,EAAE,UAAU,EAAE,aAAa,EAAE,4BAA4B,EAAE,QAAQ,EAAE,SAAS,EAAE,aAAa,EAAE,aAAa,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"compounding.test.js","sourceRoot":"","sources":["../../tests/compounding.test.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;;;AAEH,4CAAoB;AACpB,gDAAwB;AACxB,2CAAiG;AAEjG,MAAM,QAAQ,GAAG,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,4BAA4B,CAAC,CAAC;AAC1E,MAAM,OAAO,GAAG,cAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;AAEnD,UAAU,CAAC,GAAG,EAAE;IACd,IAAA,oBAAY,EAAC,QAAQ,EAAE,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC;AAClD,CAAC,CAAC,CAAC;AAEH,SAAS,CAAC,GAAG,EAAE;IACb,IAAA,uBAAe,EAAC,QAAQ,CAAC,CAAC;AAC5B,CAAC,CAAC,CAAC;AAMH,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;IACrC,IAAI,CAAC,yDAAyD,EAAE,GAAG,EAAE;QACnE,MAAM,EAAE,GAAG,IAAA,oBAAY,EAAC,OAAO,CAAC,CAAC;QAEjC,mCAAmC;QACnC,MAAM,UAAU,GAAG,cAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,EAAE,gBAAgB,CAAC,CAAC;QACpE,MAAM,aAAa,GAAG,yFAAyF,CAAC;QAChH,YAAE,CAAC,aAAa,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;QAE5C,IAAA,iBAAS,EAAC,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,aAAa,EAAE,WAAW,EAAE,4BAA4B,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,aAAa,EAAE,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QAChN,EAAE,CAAC,OAAO,CACR,6EAA6E,CAC9E,CAAC,GAAG,CAAC,UAAU,EAAE,IAAA,cAAM,EAAC,aAAa,CAAC,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;QAEnE,gEAAgE;QAChE,MAAM,WAAW,GAAG,cAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,EAAE,kBAAkB,CAAC,CAAC;QACxE,MAAM,cAAc,GAClB,+IAA+I,CAAC;QAClJ,YAAE,CAAC,aAAa,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;QAE9C,uCAAuC;QACvC,IAAA,iBAAS,EAAC,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,eAAe,EAAE,WAAW,EAAE,2CAA2C,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAE,uBAAuB,EAAE,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QAC/O,EAAE,CAAC,OAAO,CACR,6EAA6E,CAC9E,CAAC,GAAG,CAAC,WAAW,EAAE,IAAA,cAAM,EAAC,cAAc,CAAC,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;QAErE,uDAAuD;QACvD,MAAM,OAAO,GAAG,EAAE;aACf,OAAO,CACN;;;iBAGS,CACV;aACA,GAAG,CAAC,sBAAsB,CAAiB,CAAC;QAE/C,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;QAC1C,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEzE,EAAE,CAAC,KAAK,EAAE,CAAC;IACb,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cwd-changed.test.d.ts","sourceRoot":"","sources":["../../tests/cwd-changed.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,62 @@
|
|
|
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 child_process_1 = require("child_process");
|
|
9
|
+
const db_1 = require("./helpers/db");
|
|
10
|
+
const TEST_DIR = path_1.default.join(__dirname, '..', '.test-cwd-changed');
|
|
11
|
+
const FAKE_PROJECT_A = path_1.default.join(TEST_DIR, 'project-a');
|
|
12
|
+
const FAKE_PROJECT_B = path_1.default.join(TEST_DIR, 'project-b');
|
|
13
|
+
const HOOK_SCRIPT = path_1.default.resolve(__dirname, '..', 'hooks', 'mindlore-cwd-changed.cjs');
|
|
14
|
+
beforeEach(() => {
|
|
15
|
+
(0, db_1.setupTestDir)(TEST_DIR);
|
|
16
|
+
fs_1.default.mkdirSync(FAKE_PROJECT_A, { recursive: true });
|
|
17
|
+
fs_1.default.mkdirSync(FAKE_PROJECT_B, { recursive: true });
|
|
18
|
+
});
|
|
19
|
+
afterEach(() => {
|
|
20
|
+
(0, db_1.teardownTestDir)(TEST_DIR);
|
|
21
|
+
});
|
|
22
|
+
describe('mindlore-cwd-changed hook', () => {
|
|
23
|
+
test('writes _scope.json when project .mindlore/ exists', () => {
|
|
24
|
+
// Create .mindlore/ in project A
|
|
25
|
+
const mindloreDir = path_1.default.join(FAKE_PROJECT_A, '.mindlore');
|
|
26
|
+
const diaryDir = path_1.default.join(mindloreDir, 'diary');
|
|
27
|
+
fs_1.default.mkdirSync(diaryDir, { recursive: true });
|
|
28
|
+
(0, child_process_1.execSync)(`node "${HOOK_SCRIPT}"`, {
|
|
29
|
+
cwd: FAKE_PROJECT_A,
|
|
30
|
+
stdio: 'pipe',
|
|
31
|
+
env: { ...process.env, HOME: TEST_DIR, USERPROFILE: TEST_DIR },
|
|
32
|
+
});
|
|
33
|
+
const scopePath = path_1.default.join(diaryDir, '_scope.json');
|
|
34
|
+
expect(fs_1.default.existsSync(scopePath)).toBe(true);
|
|
35
|
+
const scope = JSON.parse(fs_1.default.readFileSync(scopePath, 'utf8'));
|
|
36
|
+
expect(scope.scope).toBe('project');
|
|
37
|
+
expect(scope.dir).toBe(mindloreDir);
|
|
38
|
+
});
|
|
39
|
+
test('outputs warning to stderr when no .mindlore/ exists', () => {
|
|
40
|
+
// Hook outputs to stderr — capture via 2>&1
|
|
41
|
+
const result = (0, child_process_1.execSync)(`node "${HOOK_SCRIPT}" 2>&1`, {
|
|
42
|
+
cwd: FAKE_PROJECT_B,
|
|
43
|
+
encoding: 'utf8',
|
|
44
|
+
env: { ...process.env, HOME: TEST_DIR, USERPROFILE: TEST_DIR },
|
|
45
|
+
});
|
|
46
|
+
expect(result).toContain('mindlore kurulu degil');
|
|
47
|
+
});
|
|
48
|
+
test('scope.json has correct timestamp format', () => {
|
|
49
|
+
const mindloreDir = path_1.default.join(FAKE_PROJECT_A, '.mindlore');
|
|
50
|
+
const diaryDir = path_1.default.join(mindloreDir, 'diary');
|
|
51
|
+
fs_1.default.mkdirSync(diaryDir, { recursive: true });
|
|
52
|
+
(0, child_process_1.execSync)(`node "${HOOK_SCRIPT}"`, {
|
|
53
|
+
cwd: FAKE_PROJECT_A,
|
|
54
|
+
stdio: 'pipe',
|
|
55
|
+
env: { ...process.env, HOME: TEST_DIR, USERPROFILE: TEST_DIR },
|
|
56
|
+
});
|
|
57
|
+
const scope = JSON.parse(fs_1.default.readFileSync(path_1.default.join(diaryDir, '_scope.json'), 'utf8'));
|
|
58
|
+
expect(scope.timestamp).toMatch(/^\d{4}-\d{2}-\d{2}T/);
|
|
59
|
+
expect(scope.cwd).toBe(FAKE_PROJECT_A);
|
|
60
|
+
});
|
|
61
|
+
});
|
|
62
|
+
//# sourceMappingURL=cwd-changed.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cwd-changed.test.js","sourceRoot":"","sources":["../../tests/cwd-changed.test.ts"],"names":[],"mappings":"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"}
|
package/dist/tests/dedup.test.js
CHANGED
|
@@ -22,7 +22,7 @@ describe('Content-Hash Dedup', () => {
|
|
|
22
22
|
const content = '# Test\n\nSome content here.';
|
|
23
23
|
const hash = (0, db_js_1.sha256)(content);
|
|
24
24
|
const filePath = path_1.default.join(TEST_DIR, 'test.md');
|
|
25
|
-
(0, db_js_1.insertFts)(db, filePath, 'test-doc', 'Some content here', 'source', 'sources', 'Test', content, '', null);
|
|
25
|
+
(0, db_js_1.insertFts)(db, { path: filePath, slug: 'test-doc', description: 'Some content here', type: 'source', category: 'sources', title: 'Test', content, tags: '', quality: null });
|
|
26
26
|
db.prepare('INSERT INTO file_hashes (path, content_hash, last_indexed) VALUES (?, ?, ?)').run(filePath, hash, new Date().toISOString());
|
|
27
27
|
const result = db
|
|
28
28
|
.prepare('SELECT content_hash FROM file_hashes WHERE path = ?')
|
|
@@ -35,7 +35,7 @@ describe('Content-Hash Dedup', () => {
|
|
|
35
35
|
const content = '# Unchanged\n\nThis content does not change.';
|
|
36
36
|
const hash = (0, db_js_1.sha256)(content);
|
|
37
37
|
const filePath = path_1.default.join(TEST_DIR, 'unchanged.md');
|
|
38
|
-
(0, db_js_1.insertFts)(db, filePath, 'unchanged-doc', 'This content does not change', 'source', 'sources', 'Unchanged', content, '', null);
|
|
38
|
+
(0, db_js_1.insertFts)(db, { path: filePath, slug: 'unchanged-doc', description: 'This content does not change', type: 'source', category: 'sources', title: 'Unchanged', content, tags: '', quality: null });
|
|
39
39
|
db.prepare('INSERT INTO file_hashes (path, content_hash, last_indexed) VALUES (?, ?, ?)').run(filePath, hash, '2026-01-01T00:00:00Z');
|
|
40
40
|
const existing = db
|
|
41
41
|
.prepare('SELECT content_hash FROM file_hashes WHERE path = ?')
|
|
@@ -54,7 +54,7 @@ describe('Content-Hash Dedup', () => {
|
|
|
54
54
|
const modified = '# Modified\n\nSecond version with changes.';
|
|
55
55
|
const filePath = path_1.default.join(TEST_DIR, 'changing.md');
|
|
56
56
|
const originalHash = (0, db_js_1.sha256)(original);
|
|
57
|
-
(0, db_js_1.insertFts)(db, filePath, 'changing-doc', 'First version', 'source', 'sources', 'Original', original, '', null);
|
|
57
|
+
(0, db_js_1.insertFts)(db, { path: filePath, slug: 'changing-doc', description: 'First version', type: 'source', category: 'sources', title: 'Original', content: original, tags: '', quality: null });
|
|
58
58
|
db.prepare('INSERT INTO file_hashes (path, content_hash, last_indexed) VALUES (?, ?, ?)').run(filePath, originalHash, '2026-01-01T00:00:00Z');
|
|
59
59
|
const modifiedHash = (0, db_js_1.sha256)(modified);
|
|
60
60
|
const existing = db
|
|
@@ -62,7 +62,7 @@ describe('Content-Hash Dedup', () => {
|
|
|
62
62
|
.get(filePath);
|
|
63
63
|
expect(existing.content_hash).not.toBe(modifiedHash);
|
|
64
64
|
db.prepare('DELETE FROM mindlore_fts WHERE path = ?').run(filePath);
|
|
65
|
-
(0, db_js_1.insertFts)(db, filePath, 'changing-doc', 'Second version with changes', 'source', 'sources', 'Modified', modified, '', null);
|
|
65
|
+
(0, db_js_1.insertFts)(db, { path: filePath, slug: 'changing-doc', description: 'Second version with changes', type: 'source', category: 'sources', title: 'Modified', content: modified, tags: '', quality: null });
|
|
66
66
|
db.prepare('UPDATE file_hashes SET content_hash = ?, last_indexed = ? WHERE path = ?').run(modifiedHash, new Date().toISOString(), filePath);
|
|
67
67
|
const results = db
|
|
68
68
|
.prepare('SELECT path FROM mindlore_fts WHERE mindlore_fts MATCH ?')
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dedup.test.js","sourceRoot":"","sources":["../../tests/dedup.test.ts"],"names":[],"mappings":";;;;;AAAA,gDAAwB;AACxB,oEAAsC;AACtC,2CAAiG;AAEjG,MAAM,QAAQ,GAAG,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,sBAAsB,CAAC,CAAC;AACpE,MAAM,OAAO,GAAG,cAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;AAEnD,UAAU,CAAC,GAAG,EAAE;IACd,IAAA,oBAAY,EAAC,QAAQ,CAAC,CAAC;IACvB,MAAM,EAAE,GAAG,IAAA,oBAAY,EAAC,OAAO,CAAC,CAAC;IACjC,EAAE,CAAC,KAAK,EAAE,CAAC;AACb,CAAC,CAAC,CAAC;AAEH,SAAS,CAAC,GAAG,EAAE;IACb,IAAA,uBAAe,EAAC,QAAQ,CAAC,CAAC;AAC5B,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;IAClC,IAAI,CAAC,kCAAkC,EAAE,GAAG,EAAE;QAC5C,MAAM,EAAE,GAAG,IAAI,wBAAQ,CAAC,OAAO,CAAC,CAAC;QAEjC,MAAM,OAAO,GAAG,8BAA8B,CAAC;QAC/C,MAAM,IAAI,GAAG,IAAA,cAAM,EAAC,OAAO,CAAC,CAAC;QAC7B,MAAM,QAAQ,GAAG,cAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;QAEhD,IAAA,iBAAS,EAAC,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,mBAAmB,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"dedup.test.js","sourceRoot":"","sources":["../../tests/dedup.test.ts"],"names":[],"mappings":";;;;;AAAA,gDAAwB;AACxB,oEAAsC;AACtC,2CAAiG;AAEjG,MAAM,QAAQ,GAAG,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,sBAAsB,CAAC,CAAC;AACpE,MAAM,OAAO,GAAG,cAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;AAEnD,UAAU,CAAC,GAAG,EAAE;IACd,IAAA,oBAAY,EAAC,QAAQ,CAAC,CAAC;IACvB,MAAM,EAAE,GAAG,IAAA,oBAAY,EAAC,OAAO,CAAC,CAAC;IACjC,EAAE,CAAC,KAAK,EAAE,CAAC;AACb,CAAC,CAAC,CAAC;AAEH,SAAS,CAAC,GAAG,EAAE;IACb,IAAA,uBAAe,EAAC,QAAQ,CAAC,CAAC;AAC5B,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;IAClC,IAAI,CAAC,kCAAkC,EAAE,GAAG,EAAE;QAC5C,MAAM,EAAE,GAAG,IAAI,wBAAQ,CAAC,OAAO,CAAC,CAAC;QAEjC,MAAM,OAAO,GAAG,8BAA8B,CAAC;QAC/C,MAAM,IAAI,GAAG,IAAA,cAAM,EAAC,OAAO,CAAC,CAAC;QAC7B,MAAM,QAAQ,GAAG,cAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;QAEhD,IAAA,iBAAS,EAAC,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,mBAAmB,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QAC5K,EAAE,CAAC,OAAO,CACR,6EAA6E,CAC9E,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;QAEhD,MAAM,MAAM,GAAG,EAAE;aACd,OAAO,CAAC,qDAAqD,CAAC;aAC9D,GAAG,CAAC,QAAQ,CAA6B,CAAC;QAC7C,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEvC,EAAE,CAAC,KAAK,EAAE,CAAC;IACb,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,6CAA6C,EAAE,GAAG,EAAE;QACvD,MAAM,EAAE,GAAG,IAAI,wBAAQ,CAAC,OAAO,CAAC,CAAC;QAEjC,MAAM,OAAO,GAAG,8CAA8C,CAAC;QAC/D,MAAM,IAAI,GAAG,IAAA,cAAM,EAAC,OAAO,CAAC,CAAC;QAC7B,MAAM,QAAQ,GAAG,cAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;QAErD,IAAA,iBAAS,EAAC,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,eAAe,EAAE,WAAW,EAAE,8BAA8B,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QACjM,EAAE,CAAC,OAAO,CACR,6EAA6E,CAC9E,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,EAAE,sBAAsB,CAAC,CAAC;QAE9C,MAAM,QAAQ,GAAG,EAAE;aAChB,OAAO,CAAC,qDAAqD,CAAC;aAC9D,GAAG,CAAC,QAAQ,CAA6B,CAAC;QAC7C,MAAM,OAAO,GAAG,IAAA,cAAM,EAAC,OAAO,CAAC,CAAC;QAEhC,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAE5C,MAAM,KAAK,GAAG,EAAE;aACb,OAAO,CAAC,yDAAyD,CAAC;aAClE,GAAG,CAAC,QAAQ,CAAoB,CAAC;QACpC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAE1B,EAAE,CAAC,KAAK,EAAE,CAAC;IACb,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,sCAAsC,EAAE,GAAG,EAAE;QAChD,MAAM,EAAE,GAAG,IAAI,wBAAQ,CAAC,OAAO,CAAC,CAAC;QAEjC,MAAM,QAAQ,GAAG,8BAA8B,CAAC;QAChD,MAAM,QAAQ,GAAG,4CAA4C,CAAC;QAC9D,MAAM,QAAQ,GAAG,cAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;QAEpD,MAAM,YAAY,GAAG,IAAA,cAAM,EAAC,QAAQ,CAAC,CAAC;QACtC,IAAA,iBAAS,EAAC,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,cAAc,EAAE,WAAW,EAAE,eAAe,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QAC1L,EAAE,CAAC,OAAO,CACR,6EAA6E,CAC9E,CAAC,GAAG,CAAC,QAAQ,EAAE,YAAY,EAAE,sBAAsB,CAAC,CAAC;QAEtD,MAAM,YAAY,GAAG,IAAA,cAAM,EAAC,QAAQ,CAAC,CAAC;QACtC,MAAM,QAAQ,GAAG,EAAE;aAChB,OAAO,CAAC,qDAAqD,CAAC;aAC9D,GAAG,CAAC,QAAQ,CAA6B,CAAC;QAE7C,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAErD,EAAE,CAAC,OAAO,CAAC,yCAAyC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACpE,IAAA,iBAAS,EAAC,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,cAAc,EAAE,WAAW,EAAE,6BAA6B,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QACxM,EAAE,CAAC,OAAO,CACR,0EAA0E,CAC3E,CAAC,GAAG,CAAC,YAAY,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,QAAQ,CAAC,CAAC;QAExD,MAAM,OAAO,GAAG,EAAE;aACf,OAAO,CAAC,0DAA0D,CAAC;aACnE,GAAG,CAAC,SAAS,CAA4B,CAAC;QAC7C,MAAM,CAAC,OAAO,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAEhC,EAAE,CAAC,KAAK,EAAE,CAAC;IACb,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dont-repeat.test.d.ts","sourceRoot":"","sources":["../../tests/dont-repeat.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,100 @@
|
|
|
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 child_process_1 = require("child_process");
|
|
9
|
+
const db_1 = require("./helpers/db");
|
|
10
|
+
const TEST_DIR = path_1.default.join(__dirname, '..', '.test-dont-repeat');
|
|
11
|
+
const HOOK_SCRIPT = path_1.default.resolve(__dirname, '..', 'hooks', 'mindlore-dont-repeat.cjs');
|
|
12
|
+
beforeEach(() => {
|
|
13
|
+
(0, db_1.setupTestDir)(TEST_DIR);
|
|
14
|
+
// Create a fake lessons file with negative rules
|
|
15
|
+
const lessonsDir = path_1.default.join(TEST_DIR, '.claude', 'lessons');
|
|
16
|
+
fs_1.default.mkdirSync(lessonsDir, { recursive: true });
|
|
17
|
+
fs_1.default.writeFileSync(path_1.default.join(lessonsDir, 'global.md'), [
|
|
18
|
+
'# Global Lessons',
|
|
19
|
+
'',
|
|
20
|
+
'- YAPMA: ESM projede `__dirname` kullanma. `fileURLToPath(import.meta.url)` kullan',
|
|
21
|
+
'- DON\'T: Use `any` type in TypeScript — use `unknown` + type guard',
|
|
22
|
+
'- NEVER: Use `console.log` for production logging',
|
|
23
|
+
].join('\n'), 'utf8');
|
|
24
|
+
});
|
|
25
|
+
afterEach(() => {
|
|
26
|
+
(0, db_1.teardownTestDir)(TEST_DIR);
|
|
27
|
+
});
|
|
28
|
+
function runHook(stdinData) {
|
|
29
|
+
try {
|
|
30
|
+
return (0, child_process_1.execSync)(`node "${HOOK_SCRIPT}"`, {
|
|
31
|
+
input: JSON.stringify(stdinData),
|
|
32
|
+
encoding: 'utf8',
|
|
33
|
+
timeout: 5000,
|
|
34
|
+
env: { ...process.env, HOME: TEST_DIR, USERPROFILE: TEST_DIR },
|
|
35
|
+
cwd: TEST_DIR,
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
catch (err) {
|
|
39
|
+
return err.stdout || '';
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
describe('mindlore-dont-repeat hook', () => {
|
|
43
|
+
test('detects violation when writing code with banned pattern', () => {
|
|
44
|
+
const result = runHook({
|
|
45
|
+
tool_name: 'Write',
|
|
46
|
+
tool_input: {
|
|
47
|
+
file_path: path_1.default.join(TEST_DIR, 'test.ts'),
|
|
48
|
+
content: 'const dir = __dirname;\nconsole.log(dir);',
|
|
49
|
+
},
|
|
50
|
+
});
|
|
51
|
+
// Should output JSON with additionalContext containing violation
|
|
52
|
+
if (result.trim()) {
|
|
53
|
+
const parsed = JSON.parse(result);
|
|
54
|
+
expect(parsed.hookSpecificOutput.additionalContext).toContain('dont-repeat');
|
|
55
|
+
}
|
|
56
|
+
// If no output, patterns may not have matched (short pattern filter)
|
|
57
|
+
});
|
|
58
|
+
test('does not trigger on non-code files', () => {
|
|
59
|
+
const result = runHook({
|
|
60
|
+
tool_name: 'Write',
|
|
61
|
+
tool_input: {
|
|
62
|
+
file_path: path_1.default.join(TEST_DIR, 'README.md'),
|
|
63
|
+
content: 'const dir = __dirname;',
|
|
64
|
+
},
|
|
65
|
+
});
|
|
66
|
+
expect(result.trim()).toBe('');
|
|
67
|
+
});
|
|
68
|
+
test('does not trigger on Edit old_string (code being removed)', () => {
|
|
69
|
+
const result = runHook({
|
|
70
|
+
tool_name: 'Edit',
|
|
71
|
+
tool_input: {
|
|
72
|
+
file_path: path_1.default.join(TEST_DIR, 'test.ts'),
|
|
73
|
+
old_string: 'const dir = __dirname;',
|
|
74
|
+
new_string: 'const dir = import.meta.url;',
|
|
75
|
+
},
|
|
76
|
+
});
|
|
77
|
+
// old_string contains __dirname but should NOT trigger (it's being removed)
|
|
78
|
+
// new_string is clean
|
|
79
|
+
expect(result.trim()).toBe('');
|
|
80
|
+
});
|
|
81
|
+
test('only accepts Write and Edit tool names', () => {
|
|
82
|
+
const result = runHook({
|
|
83
|
+
tool_name: 'Read',
|
|
84
|
+
tool_input: {
|
|
85
|
+
file_path: path_1.default.join(TEST_DIR, 'test.ts'),
|
|
86
|
+
},
|
|
87
|
+
});
|
|
88
|
+
expect(result.trim()).toBe('');
|
|
89
|
+
});
|
|
90
|
+
test('exits cleanly with empty stdin', () => {
|
|
91
|
+
const result = (0, child_process_1.execSync)(`echo "{}" | node "${HOOK_SCRIPT}"`, {
|
|
92
|
+
encoding: 'utf8',
|
|
93
|
+
timeout: 5000,
|
|
94
|
+
env: { ...process.env, HOME: TEST_DIR, USERPROFILE: TEST_DIR },
|
|
95
|
+
cwd: TEST_DIR,
|
|
96
|
+
});
|
|
97
|
+
expect(result.trim()).toBe('');
|
|
98
|
+
});
|
|
99
|
+
});
|
|
100
|
+
//# sourceMappingURL=dont-repeat.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dont-repeat.test.js","sourceRoot":"","sources":["../../tests/dont-repeat.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"e2e-pipeline.test.d.ts","sourceRoot":"","sources":["../../tests/e2e-pipeline.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,220 @@
|
|
|
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_1 = require("./helpers/db");
|
|
9
|
+
const TEST_DIR = path_1.default.join(__dirname, '..', '.test-e2e-pipeline');
|
|
10
|
+
const DB_PATH = path_1.default.join(TEST_DIR, 'mindlore.db');
|
|
11
|
+
beforeEach(() => {
|
|
12
|
+
(0, db_1.setupTestDir)(TEST_DIR, [
|
|
13
|
+
'raw', 'sources', 'domains', 'analyses', 'insights',
|
|
14
|
+
'connections', 'learnings', 'diary', 'decisions',
|
|
15
|
+
]);
|
|
16
|
+
});
|
|
17
|
+
afterEach(() => {
|
|
18
|
+
(0, db_1.teardownTestDir)(TEST_DIR);
|
|
19
|
+
});
|
|
20
|
+
describe('E2E Pipeline: ingest → index → search → connections', () => {
|
|
21
|
+
test('full pipeline: write source → index → search finds it', () => {
|
|
22
|
+
// Step 1: Simulate ingest — write raw + source
|
|
23
|
+
const rawContent = [
|
|
24
|
+
'---',
|
|
25
|
+
'slug: react-hooks-raw',
|
|
26
|
+
'type: raw',
|
|
27
|
+
'source_url: https://react.dev/reference/react/useEffect',
|
|
28
|
+
'date_captured: 2026-04-12',
|
|
29
|
+
'---',
|
|
30
|
+
'',
|
|
31
|
+
'# useEffect',
|
|
32
|
+
'',
|
|
33
|
+
'useEffect is a React Hook that lets you synchronize a component with an external system.',
|
|
34
|
+
].join('\n');
|
|
35
|
+
const sourceContent = [
|
|
36
|
+
'---',
|
|
37
|
+
'slug: react-hooks',
|
|
38
|
+
'type: source',
|
|
39
|
+
'title: React useEffect Guide',
|
|
40
|
+
'source_url: https://react.dev/reference/react/useEffect',
|
|
41
|
+
'date_captured: 2026-04-12',
|
|
42
|
+
'tags: react, hooks, useEffect',
|
|
43
|
+
'quality: high',
|
|
44
|
+
'---',
|
|
45
|
+
'',
|
|
46
|
+
'# React useEffect Guide',
|
|
47
|
+
'',
|
|
48
|
+
'useEffect lets you synchronize with external systems.',
|
|
49
|
+
'',
|
|
50
|
+
'## Key Takeaways',
|
|
51
|
+
'- Cleanup function prevents memory leaks',
|
|
52
|
+
'- Dependency array controls re-execution',
|
|
53
|
+
].join('\n');
|
|
54
|
+
fs_1.default.writeFileSync(path_1.default.join(TEST_DIR, 'raw', 'react-hooks-raw.md'), rawContent);
|
|
55
|
+
fs_1.default.writeFileSync(path_1.default.join(TEST_DIR, 'sources', 'react-hooks.md'), sourceContent);
|
|
56
|
+
// Step 2: Index into FTS5
|
|
57
|
+
const db = (0, db_1.createTestDb)(DB_PATH);
|
|
58
|
+
(0, db_1.insertFts)(db, {
|
|
59
|
+
path: path_1.default.join(TEST_DIR, 'sources', 'react-hooks.md'),
|
|
60
|
+
slug: 'react-hooks',
|
|
61
|
+
description: 'React useEffect synchronization patterns',
|
|
62
|
+
type: 'source',
|
|
63
|
+
category: 'sources',
|
|
64
|
+
title: 'React useEffect Guide',
|
|
65
|
+
content: sourceContent,
|
|
66
|
+
tags: 'react, hooks, useEffect',
|
|
67
|
+
quality: 'high',
|
|
68
|
+
dateCaptured: '2026-04-12',
|
|
69
|
+
});
|
|
70
|
+
// Step 3: Search — should find the indexed source
|
|
71
|
+
const results = db.prepare("SELECT slug, title, quality, date_captured FROM mindlore_fts WHERE mindlore_fts MATCH 'useEffect'").all();
|
|
72
|
+
expect(results).toHaveLength(1);
|
|
73
|
+
expect(results[0].slug).toBe('react-hooks');
|
|
74
|
+
expect(results[0].quality).toBe('high');
|
|
75
|
+
expect(results[0].date_captured).toBe('2026-04-12');
|
|
76
|
+
db.close();
|
|
77
|
+
});
|
|
78
|
+
test('multi-source search with ranking', () => {
|
|
79
|
+
const db = (0, db_1.createTestDb)(DB_PATH);
|
|
80
|
+
// Insert 3 sources with overlapping keywords
|
|
81
|
+
(0, db_1.insertFts)(db, {
|
|
82
|
+
path: path_1.default.join(TEST_DIR, 'sources', 'hooks-guide.md'),
|
|
83
|
+
slug: 'hooks-guide',
|
|
84
|
+
type: 'source',
|
|
85
|
+
title: 'Hooks Complete Guide',
|
|
86
|
+
content: 'Hooks hooks hooks. useEffect, useState, useCallback. Hooks are lifecycle callbacks in React.',
|
|
87
|
+
tags: 'react, hooks',
|
|
88
|
+
quality: 'high',
|
|
89
|
+
});
|
|
90
|
+
(0, db_1.insertFts)(db, {
|
|
91
|
+
path: path_1.default.join(TEST_DIR, 'sources', 'cc-hooks.md'),
|
|
92
|
+
slug: 'cc-hooks',
|
|
93
|
+
type: 'source',
|
|
94
|
+
title: 'Claude Code Hooks',
|
|
95
|
+
content: 'PreToolUse hooks, PostToolUse hooks, SessionStart hooks. CC lifecycle callbacks.',
|
|
96
|
+
tags: 'hooks, claude-code',
|
|
97
|
+
quality: 'high',
|
|
98
|
+
});
|
|
99
|
+
(0, db_1.insertFts)(db, {
|
|
100
|
+
path: path_1.default.join(TEST_DIR, 'sources', 'python-basics.md'),
|
|
101
|
+
slug: 'python-basics',
|
|
102
|
+
type: 'source',
|
|
103
|
+
title: 'Python Basics',
|
|
104
|
+
content: 'Python is a programming language for data science and web development.',
|
|
105
|
+
tags: 'python',
|
|
106
|
+
quality: 'medium',
|
|
107
|
+
});
|
|
108
|
+
// Search "hooks" — should return 2, not python
|
|
109
|
+
const results = db.prepare("SELECT slug FROM mindlore_fts WHERE mindlore_fts MATCH 'hooks' ORDER BY rank").all();
|
|
110
|
+
expect(results.length).toBeGreaterThanOrEqual(2);
|
|
111
|
+
const slugs = results.map(r => r.slug);
|
|
112
|
+
expect(slugs).toContain('hooks-guide');
|
|
113
|
+
expect(slugs).toContain('cc-hooks');
|
|
114
|
+
expect(slugs).not.toContain('python-basics');
|
|
115
|
+
db.close();
|
|
116
|
+
});
|
|
117
|
+
test('connection detection: shared tags across sources', () => {
|
|
118
|
+
const db = (0, db_1.createTestDb)(DB_PATH);
|
|
119
|
+
// Two sources with shared "hooks" tag but different domains
|
|
120
|
+
(0, db_1.insertFts)(db, {
|
|
121
|
+
path: path_1.default.join(TEST_DIR, 'sources', 'react-hooks.md'),
|
|
122
|
+
slug: 'react-hooks',
|
|
123
|
+
type: 'source',
|
|
124
|
+
title: 'React Hooks',
|
|
125
|
+
content: 'React hooks for state management',
|
|
126
|
+
tags: 'hooks, react, state-management',
|
|
127
|
+
});
|
|
128
|
+
(0, db_1.insertFts)(db, {
|
|
129
|
+
path: path_1.default.join(TEST_DIR, 'sources', 'cc-hooks.md'),
|
|
130
|
+
slug: 'cc-hooks',
|
|
131
|
+
type: 'source',
|
|
132
|
+
title: 'CC Hooks',
|
|
133
|
+
content: 'Claude Code hooks for lifecycle callbacks',
|
|
134
|
+
tags: 'hooks, claude-code, lifecycle',
|
|
135
|
+
});
|
|
136
|
+
(0, db_1.insertFts)(db, {
|
|
137
|
+
path: path_1.default.join(TEST_DIR, 'sources', 'unrelated.md'),
|
|
138
|
+
slug: 'unrelated',
|
|
139
|
+
type: 'source',
|
|
140
|
+
title: 'Python ML',
|
|
141
|
+
content: 'Machine learning with Python',
|
|
142
|
+
tags: 'python, ml',
|
|
143
|
+
});
|
|
144
|
+
// Find tag overlap (simulating explore logic)
|
|
145
|
+
const allSources = db.prepare("SELECT slug, tags FROM mindlore_fts WHERE type = 'source'").all();
|
|
146
|
+
const tagMap = {};
|
|
147
|
+
for (const src of allSources) {
|
|
148
|
+
if (!src.tags)
|
|
149
|
+
continue;
|
|
150
|
+
const tags = src.tags.split(',').map(t => t.trim());
|
|
151
|
+
for (const tag of tags) {
|
|
152
|
+
if (!tagMap[tag])
|
|
153
|
+
tagMap[tag] = [];
|
|
154
|
+
tagMap[tag].push(src.slug);
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
// "hooks" tag shared by react-hooks and cc-hooks
|
|
158
|
+
expect(tagMap['hooks']).toBeDefined();
|
|
159
|
+
expect(tagMap['hooks']).toContain('react-hooks');
|
|
160
|
+
expect(tagMap['hooks']).toContain('cc-hooks');
|
|
161
|
+
expect(tagMap['hooks']).not.toContain('unrelated');
|
|
162
|
+
// Write connection file
|
|
163
|
+
const connectionContent = [
|
|
164
|
+
'---',
|
|
165
|
+
'type: connection',
|
|
166
|
+
'slug: conn-react-cc-hooks',
|
|
167
|
+
'sources: [react-hooks.md, cc-hooks.md]',
|
|
168
|
+
'strength: medium',
|
|
169
|
+
'tags: hooks',
|
|
170
|
+
'---',
|
|
171
|
+
'',
|
|
172
|
+
'## Connection',
|
|
173
|
+
'Both sources discuss hooks patterns in different contexts.',
|
|
174
|
+
].join('\n');
|
|
175
|
+
const connPath = path_1.default.join(TEST_DIR, 'connections', 'conn-react-cc-hooks.md');
|
|
176
|
+
fs_1.default.writeFileSync(connPath, connectionContent);
|
|
177
|
+
expect(fs_1.default.existsSync(connPath)).toBe(true);
|
|
178
|
+
// Connection is indexable
|
|
179
|
+
(0, db_1.insertFts)(db, {
|
|
180
|
+
path: connPath,
|
|
181
|
+
slug: 'conn-react-cc-hooks',
|
|
182
|
+
type: 'connection',
|
|
183
|
+
title: 'React Hooks ↔ CC Hooks',
|
|
184
|
+
content: connectionContent,
|
|
185
|
+
tags: 'hooks',
|
|
186
|
+
});
|
|
187
|
+
const connResults = db.prepare("SELECT slug FROM mindlore_fts WHERE type = 'connection'").all();
|
|
188
|
+
expect(connResults).toHaveLength(1);
|
|
189
|
+
db.close();
|
|
190
|
+
});
|
|
191
|
+
test('10-column FTS5 schema integrity', () => {
|
|
192
|
+
const db = (0, db_1.createTestDb)(DB_PATH);
|
|
193
|
+
// Insert a row with all 10 columns and read back to verify schema
|
|
194
|
+
(0, db_1.insertFts)(db, {
|
|
195
|
+
path: '/test/schema-check.md',
|
|
196
|
+
slug: 'schema-check',
|
|
197
|
+
description: 'test desc',
|
|
198
|
+
type: 'source',
|
|
199
|
+
category: 'sources',
|
|
200
|
+
title: 'Schema Check',
|
|
201
|
+
content: 'test content',
|
|
202
|
+
tags: 'test',
|
|
203
|
+
quality: 'high',
|
|
204
|
+
dateCaptured: '2026-04-12',
|
|
205
|
+
});
|
|
206
|
+
const row = db.prepare('SELECT path, slug, description, type, category, title, content, tags, quality, date_captured FROM mindlore_fts WHERE slug = ?').get('schema-check');
|
|
207
|
+
expect(row.path).toBe('/test/schema-check.md');
|
|
208
|
+
expect(row.slug).toBe('schema-check');
|
|
209
|
+
expect(row.description).toBe('test desc');
|
|
210
|
+
expect(row.type).toBe('source');
|
|
211
|
+
expect(row.category).toBe('sources');
|
|
212
|
+
expect(row.title).toBe('Schema Check');
|
|
213
|
+
expect(row.content).toBe('test content');
|
|
214
|
+
expect(row.tags).toBe('test');
|
|
215
|
+
expect(row.quality).toBe('high');
|
|
216
|
+
expect(row.date_captured).toBe('2026-04-12');
|
|
217
|
+
db.close();
|
|
218
|
+
});
|
|
219
|
+
});
|
|
220
|
+
//# sourceMappingURL=e2e-pipeline.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"e2e-pipeline.test.js","sourceRoot":"","sources":["../../tests/e2e-pipeline.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"evolve.test.d.ts","sourceRoot":"","sources":["../../tests/evolve.test.ts"],"names":[],"mappings":""}
|