mindlore 0.7.1 → 0.7.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (79) hide show
  1. package/dist/scripts/bundle-hooks.js +3 -1
  2. package/dist/scripts/bundle-hooks.js.map +1 -1
  3. package/dist/scripts/lib/all-migrations.d.ts.map +1 -1
  4. package/dist/scripts/lib/all-migrations.js +3 -0
  5. package/dist/scripts/lib/all-migrations.js.map +1 -1
  6. package/dist/scripts/lib/constants.d.ts +7 -0
  7. package/dist/scripts/lib/constants.d.ts.map +1 -1
  8. package/dist/scripts/lib/constants.js +17 -1
  9. package/dist/scripts/lib/constants.js.map +1 -1
  10. package/dist/scripts/lib/mcp-tools.d.ts.map +1 -1
  11. package/dist/scripts/lib/mcp-tools.js +63 -78
  12. package/dist/scripts/lib/mcp-tools.js.map +1 -1
  13. package/dist/scripts/lib/migrations-v072.d.ts +3 -0
  14. package/dist/scripts/lib/migrations-v072.d.ts.map +1 -0
  15. package/dist/scripts/lib/migrations-v072.js +25 -0
  16. package/dist/scripts/lib/migrations-v072.js.map +1 -0
  17. package/dist/scripts/lib/relation-helpers.d.ts +15 -0
  18. package/dist/scripts/lib/relation-helpers.d.ts.map +1 -0
  19. package/dist/scripts/lib/relation-helpers.js +30 -0
  20. package/dist/scripts/lib/relation-helpers.js.map +1 -0
  21. package/dist/scripts/lib/tool-adapters/get-adapter.d.ts +21 -0
  22. package/dist/scripts/lib/tool-adapters/get-adapter.d.ts.map +1 -0
  23. package/dist/scripts/lib/tool-adapters/get-adapter.js +51 -0
  24. package/dist/scripts/lib/tool-adapters/get-adapter.js.map +1 -0
  25. package/dist/scripts/lib/tool-adapters/relate-adapter.d.ts +34 -0
  26. package/dist/scripts/lib/tool-adapters/relate-adapter.d.ts.map +1 -0
  27. package/dist/scripts/lib/tool-adapters/relate-adapter.js +43 -0
  28. package/dist/scripts/lib/tool-adapters/relate-adapter.js.map +1 -0
  29. package/dist/scripts/lib/tool-adapters/search-adapter.d.ts +5 -0
  30. package/dist/scripts/lib/tool-adapters/search-adapter.d.ts.map +1 -1
  31. package/dist/scripts/lib/tool-adapters/search-adapter.js +37 -0
  32. package/dist/scripts/lib/tool-adapters/search-adapter.js.map +1 -1
  33. package/dist/scripts/mcp-server.js +1 -1
  34. package/dist/scripts/mcp-server.js.map +1 -1
  35. package/dist/tests/dont-repeat-dedup.test.d.ts +2 -0
  36. package/dist/tests/dont-repeat-dedup.test.d.ts.map +1 -0
  37. package/dist/tests/dont-repeat-dedup.test.js +93 -0
  38. package/dist/tests/dont-repeat-dedup.test.js.map +1 -0
  39. package/dist/tests/e2e-kg-pipeline.test.d.ts +2 -0
  40. package/dist/tests/e2e-kg-pipeline.test.d.ts.map +1 -0
  41. package/dist/tests/e2e-kg-pipeline.test.js +59 -0
  42. package/dist/tests/e2e-kg-pipeline.test.js.map +1 -0
  43. package/dist/tests/helpers/db.d.ts.map +1 -1
  44. package/dist/tests/helpers/db.js +2 -1
  45. package/dist/tests/helpers/db.js.map +1 -1
  46. package/dist/tests/mcp-get-tool.test.d.ts +2 -0
  47. package/dist/tests/mcp-get-tool.test.d.ts.map +1 -0
  48. package/dist/tests/mcp-get-tool.test.js +93 -0
  49. package/dist/tests/mcp-get-tool.test.js.map +1 -0
  50. package/dist/tests/mcp-relate-tool.test.d.ts +2 -0
  51. package/dist/tests/mcp-relate-tool.test.d.ts.map +1 -0
  52. package/dist/tests/mcp-relate-tool.test.js +85 -0
  53. package/dist/tests/mcp-relate-tool.test.js.map +1 -0
  54. package/dist/tests/mcp-server.test.js +3 -1
  55. package/dist/tests/mcp-server.test.js.map +1 -1
  56. package/dist/tests/mcp-tools.test.js +20 -0
  57. package/dist/tests/mcp-tools.test.js.map +1 -1
  58. package/dist/tests/memory-relate.test.d.ts +2 -0
  59. package/dist/tests/memory-relate.test.d.ts.map +1 -0
  60. package/dist/tests/memory-relate.test.js +70 -0
  61. package/dist/tests/memory-relate.test.js.map +1 -0
  62. package/dist/tests/migrations-v063.test.js +1 -1
  63. package/dist/tests/migrations-v072.test.d.ts +2 -0
  64. package/dist/tests/migrations-v072.test.d.ts.map +1 -0
  65. package/dist/tests/migrations-v072.test.js +74 -0
  66. package/dist/tests/migrations-v072.test.js.map +1 -0
  67. package/dist/tests/plugin-cache-regression.test.d.ts +2 -0
  68. package/dist/tests/plugin-cache-regression.test.d.ts.map +1 -0
  69. package/dist/tests/plugin-cache-regression.test.js +19 -0
  70. package/dist/tests/plugin-cache-regression.test.js.map +1 -0
  71. package/hooks/cc-memory-bulk-sync.cjs +15 -1
  72. package/hooks/cc-session-sync.cjs +15 -1
  73. package/hooks/mindlore-dont-repeat.cjs +18 -0
  74. package/hooks/mindlore-search.cjs +15 -1
  75. package/hooks/mindlore-session-focus.cjs +35 -2
  76. package/hooks/src/mindlore-dont-repeat.cjs +21 -0
  77. package/package.json +3 -2
  78. package/plugin.json +4 -3
  79. package/templates/config.json +1 -1
@@ -0,0 +1,85 @@
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 path_1 = __importDefault(require("path"));
7
+ const fs_1 = __importDefault(require("fs"));
8
+ const os_1 = __importDefault(require("os"));
9
+ const db_1 = require("./helpers/db");
10
+ const relate_adapter_1 = require("../scripts/lib/tool-adapters/relate-adapter");
11
+ describe('mindlore_relate tool', () => {
12
+ let testDir;
13
+ let ctx;
14
+ beforeEach(() => {
15
+ testDir = fs_1.default.mkdtempSync(path_1.default.join(os_1.default.tmpdir(), 'mindlore-relate-'));
16
+ const dbPath = path_1.default.join(testDir, 'test.db');
17
+ const db = (0, db_1.createTestDbWithFullSchema)(dbPath);
18
+ (0, db_1.insertFts)(db, { path: path_1.default.join(testDir, 'sources/alpha.md'), slug: 'alpha', title: 'Alpha', content: 'content A', category: 'sources', type: 'source' });
19
+ (0, db_1.insertFts)(db, { path: path_1.default.join(testDir, 'sources/beta.md'), slug: 'beta', title: 'Beta', content: 'content B', category: 'sources', type: 'source' });
20
+ ctx = { db, baseDir: testDir };
21
+ });
22
+ afterEach(() => {
23
+ ctx.db.close();
24
+ fs_1.default.rmSync(testDir, { recursive: true, force: true });
25
+ });
26
+ it('adds a new relation', () => {
27
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion
28
+ const result = (0, relate_adapter_1.handleRelate)(ctx, { action: 'add', source_a: 'alpha', source_b: 'beta', relation_type: 'extends' });
29
+ expect(result.created).toBe(true);
30
+ expect(result.existing).toBe(false);
31
+ });
32
+ it('returns existing=true for duplicate relation', () => {
33
+ (0, relate_adapter_1.handleRelate)(ctx, { action: 'add', source_a: 'alpha', source_b: 'beta', relation_type: 'extends' });
34
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion
35
+ const result = (0, relate_adapter_1.handleRelate)(ctx, { action: 'add', source_a: 'alpha', source_b: 'beta', relation_type: 'extends' });
36
+ expect(result.created).toBe(false);
37
+ expect(result.existing).toBe(true);
38
+ });
39
+ it('removes a relation', () => {
40
+ (0, relate_adapter_1.handleRelate)(ctx, { action: 'add', source_a: 'alpha', source_b: 'beta', relation_type: 'cites' });
41
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion
42
+ const result = (0, relate_adapter_1.handleRelate)(ctx, { action: 'remove', source_a: 'alpha', source_b: 'beta', relation_type: 'cites' });
43
+ expect(result.removed).toBe(true);
44
+ });
45
+ it('returns removed=false for non-existent relation', () => {
46
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion
47
+ const result = (0, relate_adapter_1.handleRelate)(ctx, { action: 'remove', source_a: 'alpha', source_b: 'beta', relation_type: 'cites' });
48
+ expect(result.removed).toBe(false);
49
+ });
50
+ it('lists all relations', () => {
51
+ (0, relate_adapter_1.handleRelate)(ctx, { action: 'add', source_a: 'alpha', source_b: 'beta', relation_type: 'extends' });
52
+ (0, relate_adapter_1.handleRelate)(ctx, { action: 'add', source_a: 'beta', source_b: 'alpha', relation_type: 'cites' });
53
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion
54
+ const result = (0, relate_adapter_1.handleRelate)(ctx, { action: 'list' });
55
+ expect(result.relations).toHaveLength(2);
56
+ expect(result.total).toBe(2);
57
+ });
58
+ it('lists relations filtered by source — includes both outgoing and incoming edges', () => {
59
+ (0, relate_adapter_1.handleRelate)(ctx, { action: 'add', source_a: 'alpha', source_b: 'beta', relation_type: 'extends' });
60
+ (0, relate_adapter_1.handleRelate)(ctx, { action: 'add', source_a: 'beta', source_b: 'alpha', relation_type: 'cites' });
61
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion
62
+ const result = (0, relate_adapter_1.handleRelate)(ctx, { action: 'list', source: 'alpha' });
63
+ expect(result.relations).toHaveLength(2);
64
+ expect(result.relations.some(r => r.source_a === 'alpha' && r.source_b === 'beta')).toBe(true);
65
+ expect(result.relations.some(r => r.source_a === 'beta' && r.source_b === 'alpha')).toBe(true);
66
+ });
67
+ it('throws on invalid relation_type', () => {
68
+ expect(() => {
69
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion
70
+ (0, relate_adapter_1.handleRelate)(ctx, { action: 'add', source_a: 'alpha', source_b: 'beta', relation_type: 'invalid' });
71
+ }).toThrow();
72
+ });
73
+ it('throws when source slug not found in FTS5', () => {
74
+ expect(() => {
75
+ (0, relate_adapter_1.handleRelate)(ctx, { action: 'add', source_a: 'nonexistent', source_b: 'beta', relation_type: 'cites' });
76
+ }).toThrow(/not found/);
77
+ });
78
+ it('requires source_a and source_b for add action', () => {
79
+ expect(() => {
80
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion
81
+ (0, relate_adapter_1.handleRelate)(ctx, { action: 'add', source_a: 'alpha' });
82
+ }).toThrow();
83
+ });
84
+ });
85
+ //# sourceMappingURL=mcp-relate-tool.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-relate-tool.test.js","sourceRoot":"","sources":["../../tests/mcp-relate-tool.test.ts"],"names":[],"mappings":"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"}
@@ -86,7 +86,9 @@ describe('MCP Server stdio integration', () => {
86
86
  expect(toolNames).toContain('mindlore_recall');
87
87
  expect(toolNames).toContain('mindlore_brief');
88
88
  expect(toolNames).toContain('mindlore_decide');
89
- expect(toolNames).toHaveLength(6);
89
+ expect(toolNames).toContain('mindlore_relate');
90
+ expect(toolNames).toContain('mindlore_get');
91
+ expect(toolNames).toHaveLength(8);
90
92
  });
91
93
  it('executes mindlore_stats tool', async () => {
92
94
  const response = await sendRequest(proc, {
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-server.test.js","sourceRoot":"","sources":["../../tests/mcp-server.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mcp-server.test.js","sourceRoot":"","sources":["../../tests/mcp-server.test.ts"],"names":[],"mappings":"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"}
@@ -40,6 +40,14 @@ function createTestContext() {
40
40
  CREATE TABLE IF NOT EXISTS vocabulary (
41
41
  word TEXT PRIMARY KEY
42
42
  );
43
+ CREATE TABLE IF NOT EXISTS mindlore_relations (
44
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
45
+ source_a TEXT NOT NULL,
46
+ source_b TEXT NOT NULL,
47
+ relation_type TEXT NOT NULL CHECK(relation_type IN ('cites', 'extends', 'contradicts', 'supersedes')),
48
+ created_at TEXT NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%SZ', 'now')),
49
+ UNIQUE(source_a, source_b, relation_type)
50
+ );
43
51
  `);
44
52
  return {
45
53
  db,
@@ -85,6 +93,18 @@ describe('search adapter', () => {
85
93
  ctx.cleanup();
86
94
  }
87
95
  });
96
+ it('returns related field in search results', () => {
97
+ const ctx = createTestContext();
98
+ try {
99
+ ctx.db.prepare('INSERT INTO mindlore_fts (path, slug, description, type, category, title, content, tags, quality, date_captured, project) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)').run('/test/a.md', 'a', 'desc', 'source', 'sources', 'A', 'content A', 'tag', '5', '2026-05-04', 'mindlore');
100
+ const result = (0, search_adapter_1.handleSearch)(ctx, { query: 'content A' });
101
+ expect(result.related).toBeDefined();
102
+ expect(Array.isArray(result.related)).toBe(true);
103
+ }
104
+ finally {
105
+ ctx.cleanup();
106
+ }
107
+ });
88
108
  });
89
109
  describe('stats adapter', () => {
90
110
  it('returns basic stats', () => {
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-tools.test.js","sourceRoot":"","sources":["../../tests/mcp-tools.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mcp-tools.test.js","sourceRoot":"","sources":["../../tests/mcp-tools.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=memory-relate.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory-relate.test.d.ts","sourceRoot":"","sources":["../../tests/memory-relate.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,70 @@
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 path_1 = __importDefault(require("path"));
7
+ const fs_1 = __importDefault(require("fs"));
8
+ const os_1 = __importDefault(require("os"));
9
+ const db_1 = require("./helpers/db");
10
+ const search_adapter_1 = require("../scripts/lib/tool-adapters/search-adapter");
11
+ const relate_adapter_1 = require("../scripts/lib/tool-adapters/relate-adapter");
12
+ describe('Memory Relate — search with related sources', () => {
13
+ let testDir;
14
+ let ctx;
15
+ beforeEach(() => {
16
+ testDir = fs_1.default.mkdtempSync(path_1.default.join(os_1.default.tmpdir(), 'mindlore-memrel-'));
17
+ const dbPath = path_1.default.join(testDir, 'test.db');
18
+ const db = (0, db_1.createTestDbWithFullSchema)(dbPath);
19
+ (0, db_1.insertFts)(db, { path: path_1.default.join(testDir, 'sources/react.md'), slug: 'react', title: 'React Framework', content: 'React is a UI library for building user interfaces', category: 'sources', type: 'source' });
20
+ (0, db_1.insertFts)(db, { path: path_1.default.join(testDir, 'sources/vue.md'), slug: 'vue', title: 'Vue Framework', content: 'Vue is a progressive framework', category: 'sources', type: 'source' });
21
+ (0, db_1.insertFts)(db, { path: path_1.default.join(testDir, 'sources/angular.md'), slug: 'angular', title: 'Angular Framework', content: 'Angular is a platform', category: 'sources', type: 'source' });
22
+ ctx = { db, baseDir: testDir };
23
+ });
24
+ afterEach(() => {
25
+ ctx.db.close();
26
+ fs_1.default.rmSync(testDir, { recursive: true, force: true });
27
+ });
28
+ it('includes related sources in search response', () => {
29
+ (0, relate_adapter_1.handleRelate)(ctx, { action: 'add', source_a: 'react', source_b: 'vue', relation_type: 'extends' });
30
+ const result = (0, search_adapter_1.handleSearch)(ctx, { query: 'React UI library' });
31
+ expect(result.related).toBeDefined();
32
+ expect(result.related.length).toBeGreaterThan(0);
33
+ expect(result.related[0].source).toBe('vue');
34
+ expect(result.related[0].via).toBe('react');
35
+ });
36
+ it('deduplicates related sources that appear in results', () => {
37
+ (0, relate_adapter_1.handleRelate)(ctx, { action: 'add', source_a: 'react', source_b: 'vue', relation_type: 'extends' });
38
+ const result = (0, search_adapter_1.handleSearch)(ctx, { query: 'framework' });
39
+ const resultSlugs = new Set(result.results.map(r => r.slug));
40
+ for (const rel of result.related) {
41
+ expect(resultSlugs.has(rel.source)).toBe(false);
42
+ }
43
+ });
44
+ it('sorts related by priority (supersedes > contradicts > extends > cites)', () => {
45
+ (0, relate_adapter_1.handleRelate)(ctx, { action: 'add', source_a: 'react', source_b: 'vue', relation_type: 'cites' });
46
+ (0, relate_adapter_1.handleRelate)(ctx, { action: 'add', source_a: 'react', source_b: 'angular', relation_type: 'supersedes' });
47
+ const result = (0, search_adapter_1.handleSearch)(ctx, { query: 'React UI library' });
48
+ expect(result.related.length).toBeGreaterThanOrEqual(2);
49
+ const types = result.related.map(r => r.relation_type);
50
+ const supersIdx = types.indexOf('supersedes');
51
+ const citesIdx = types.indexOf('cites');
52
+ if (supersIdx !== -1 && citesIdx !== -1) {
53
+ expect(supersIdx).toBeLessThan(citesIdx);
54
+ }
55
+ });
56
+ it('returns max 5 related sources', () => {
57
+ for (let i = 0; i < 8; i++) {
58
+ const slug = `extra-${i}`;
59
+ (0, db_1.insertFts)(ctx.db, { path: path_1.default.join(testDir, `sources/${slug}.md`), slug, title: `Extra ${i}`, content: `extra content ${i}`, category: 'sources', type: 'source' });
60
+ (0, relate_adapter_1.handleRelate)(ctx, { action: 'add', source_a: 'react', source_b: slug, relation_type: 'cites' });
61
+ }
62
+ const result = (0, search_adapter_1.handleSearch)(ctx, { query: 'React UI library' });
63
+ expect(result.related.length).toBeLessThanOrEqual(5);
64
+ });
65
+ it('returns empty related when no relations exist', () => {
66
+ const result = (0, search_adapter_1.handleSearch)(ctx, { query: 'React UI library' });
67
+ expect(result.related).toEqual([]);
68
+ });
69
+ });
70
+ //# sourceMappingURL=memory-relate.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory-relate.test.js","sourceRoot":"","sources":["../../tests/memory-relate.test.ts"],"names":[],"mappings":"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"}
@@ -68,7 +68,7 @@ describe('v0.6.3 migrations', () => {
68
68
  const dir = makeTmpDir();
69
69
  const db = (0, db_js_1.createTestDbWithFullSchema)(path_1.default.join(dir, 'mindlore.db'));
70
70
  const row = db.prepare('SELECT MAX(version) as v FROM schema_versions').get();
71
- expect(row.v).toBe(19);
71
+ expect(row.v).toBe(20);
72
72
  cleanup(dir, db);
73
73
  });
74
74
  test('vocabulary table accepts inserts and dedup', () => {
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=migrations-v072.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migrations-v072.test.d.ts","sourceRoot":"","sources":["../../tests/migrations-v072.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,74 @@
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 path_1 = __importDefault(require("path"));
7
+ const fs_1 = __importDefault(require("fs"));
8
+ const os_1 = __importDefault(require("os"));
9
+ const db_1 = require("./helpers/db");
10
+ const db_helpers_js_1 = require("../scripts/lib/db-helpers.js");
11
+ describe('migrations-v072', () => {
12
+ let testDir;
13
+ let dbPath;
14
+ beforeEach(() => {
15
+ testDir = fs_1.default.mkdtempSync(path_1.default.join(os_1.default.tmpdir(), 'mindlore-mig072-'));
16
+ dbPath = path_1.default.join(testDir, 'test.db');
17
+ });
18
+ afterEach(() => {
19
+ fs_1.default.rmSync(testDir, { recursive: true, force: true });
20
+ });
21
+ it('creates mindlore_relations table with correct schema', () => {
22
+ const db = (0, db_1.createTestDbWithFullSchema)(dbPath);
23
+ const tables = db.prepare("SELECT name FROM sqlite_master WHERE type='table' AND name='mindlore_relations'").all();
24
+ expect(tables).toHaveLength(1);
25
+ const cols = (0, db_helpers_js_1.dbAll)(db, "PRAGMA table_info(mindlore_relations)");
26
+ const colNames = cols.map(c => c.name);
27
+ expect(colNames).toContain('id');
28
+ expect(colNames).toContain('source_a');
29
+ expect(colNames).toContain('source_b');
30
+ expect(colNames).toContain('relation_type');
31
+ expect(colNames).toContain('created_at');
32
+ db.close();
33
+ });
34
+ it('enforces CHECK constraint on relation_type', () => {
35
+ const db = (0, db_1.createTestDbWithFullSchema)(dbPath);
36
+ expect(() => {
37
+ db.prepare("INSERT INTO mindlore_relations (source_a, source_b, relation_type) VALUES ('a', 'b', 'invalid')").run();
38
+ }).toThrow();
39
+ db.close();
40
+ });
41
+ it('enforces UNIQUE constraint on (source_a, source_b, relation_type)', () => {
42
+ const db = (0, db_1.createTestDbWithFullSchema)(dbPath);
43
+ db.prepare("INSERT INTO mindlore_relations (source_a, source_b, relation_type) VALUES ('a', 'b', 'cites')").run();
44
+ expect(() => {
45
+ db.prepare("INSERT INTO mindlore_relations (source_a, source_b, relation_type) VALUES ('a', 'b', 'cites')").run();
46
+ }).toThrow();
47
+ db.close();
48
+ });
49
+ it('allows INSERT OR IGNORE for idempotency', () => {
50
+ const db = (0, db_1.createTestDbWithFullSchema)(dbPath);
51
+ db.prepare("INSERT INTO mindlore_relations (source_a, source_b, relation_type) VALUES ('a', 'b', 'cites')").run();
52
+ const result = db.prepare("INSERT OR IGNORE INTO mindlore_relations (source_a, source_b, relation_type) VALUES ('a', 'b', 'cites')").run();
53
+ expect(result.changes).toBe(0);
54
+ db.close();
55
+ });
56
+ it('creates indexes on source_a, source_b, relation_type', () => {
57
+ const db = (0, db_1.createTestDbWithFullSchema)(dbPath);
58
+ const indexes = (0, db_helpers_js_1.dbAll)(db, "SELECT name FROM sqlite_master WHERE type='index' AND tbl_name='mindlore_relations'");
59
+ const names = indexes.map(i => i.name);
60
+ expect(names).toContain('idx_relations_source_a');
61
+ expect(names).toContain('idx_relations_source_b');
62
+ expect(names).toContain('idx_relations_type');
63
+ db.close();
64
+ });
65
+ it('is idempotent on re-run', () => {
66
+ const db = (0, db_1.createTestDbWithFullSchema)(dbPath);
67
+ db.close();
68
+ const db2 = (0, db_1.createTestDbWithFullSchema)(dbPath);
69
+ const tables = db2.prepare("SELECT name FROM sqlite_master WHERE type='table' AND name='mindlore_relations'").all();
70
+ expect(tables).toHaveLength(1);
71
+ db2.close();
72
+ });
73
+ });
74
+ //# sourceMappingURL=migrations-v072.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migrations-v072.test.js","sourceRoot":"","sources":["../../tests/migrations-v072.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=plugin-cache-regression.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin-cache-regression.test.d.ts","sourceRoot":"","sources":["../../tests/plugin-cache-regression.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,19 @@
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 path_1 = __importDefault(require("path"));
7
+ describe('plugin cache regression', () => {
8
+ it('bundled hooks do not reference unbundled build artifacts', () => {
9
+ const hookDir = path_1.default.join(__dirname, '..', 'hooks');
10
+ const fs = require('fs');
11
+ const hookFiles = fs.readdirSync(hookDir).filter((f) => f.endsWith('.cjs'));
12
+ for (const file of hookFiles) {
13
+ const content = fs.readFileSync(path_1.default.join(hookDir, file), 'utf8');
14
+ // Bundled hooks should not require from dist/ (not shipped with plugin)
15
+ expect(content).not.toMatch(/require\(["']\.\.\/dist\//);
16
+ }
17
+ });
18
+ });
19
+ //# sourceMappingURL=plugin-cache-regression.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin-cache-regression.test.js","sourceRoot":"","sources":["../../tests/plugin-cache-regression.test.ts"],"names":[],"mappings":";;;;;AAAA,gDAAwB;AAExB,QAAQ,CAAC,yBAAyB,EAAE,GAAG,EAAE;IACvC,EAAE,CAAC,0DAA0D,EAAE,GAAG,EAAE;QAClE,MAAM,OAAO,GAAG,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;QACpD,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QACzB,MAAM,SAAS,GAAG,EAAE,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;QAEpF,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;YAC7B,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,cAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,CAAC;YAClE,wEAAwE;YACxE,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,2BAA2B,CAAC,CAAC;QAC3D,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -34,10 +34,11 @@ var require_constants = __commonJS({
34
34
  return mod && mod.__esModule ? mod : { "default": mod };
35
35
  };
36
36
  Object.defineProperty(exports2, "__esModule", { value: true });
37
- exports2.CONSOLIDATION_THRESHOLD = exports2.STALE_THRESHOLD = exports2.DECAY_HALF_LIFE_DAYS = exports2.DEFAULT_TOKEN_BUDGET = exports2.CC_MEMORY_BOOST = exports2.CC_SUBAGENT_CATEGORY = exports2.CC_SESSION_CATEGORY = exports2.CC_MEMORY_CATEGORY = exports2.CC_MEMORY_DIR = exports2.CC_MEMORY_PATH_MARKER = exports2.TYPE_TO_DIR = exports2.QUALITY_HEURISTICS = exports2.QUALITY_VALUES = exports2.FRONTMATTER_TYPES = exports2.FTS5_COLUMNS = exports2.STOP_WORDS = exports2.TURKISH_WORD_RE = exports2.STOP_WORDS_MIN_LENGTH = exports2.SESSION_CATEGORIES = exports2.CATEGORIES = exports2.SCHEMA_VERSION = exports2.DEFAULT_MODELS = exports2.CONFIG_FILE = exports2.MCP_BUSY_TIMEOUT_MS = exports2.DB_BUSY_TIMEOUT_MS = exports2.SKIP_FILES = exports2.DIRECTORIES = exports2.DB_NAME = exports2.GLOBAL_MINDLORE_DIR = exports2.MINDLORE_DIR = exports2.KNOWN_HOOK_EVENTS = void 0;
37
+ exports2.CONSOLIDATION_THRESHOLD = exports2.STALE_THRESHOLD = exports2.DECAY_HALF_LIFE_DAYS = exports2.DEFAULT_TOKEN_BUDGET = exports2.CC_MEMORY_BOOST = exports2.CC_SUBAGENT_CATEGORY = exports2.CC_SESSION_CATEGORY = exports2.CC_MEMORY_CATEGORY = exports2.CC_MEMORY_DIR = exports2.CC_MEMORY_PATH_MARKER = exports2.TYPE_TO_DIR = exports2.RELATED_OVERFETCH = exports2.MAX_RELATED_SOURCES = exports2.RELATION_PRIORITY = exports2.SYMMETRIC_TYPES = exports2.RELATION_TYPES = exports2.QUALITY_HEURISTICS = exports2.QUALITY_VALUES = exports2.FRONTMATTER_TYPES = exports2.FTS5_COLUMNS = exports2.STOP_WORDS = exports2.TURKISH_WORD_RE = exports2.STOP_WORDS_MIN_LENGTH = exports2.SESSION_CATEGORIES = exports2.CATEGORIES = exports2.SCHEMA_VERSION = exports2.DEFAULT_MODELS = exports2.CONFIG_FILE = exports2.MCP_BUSY_TIMEOUT_MS = exports2.DB_BUSY_TIMEOUT_MS = exports2.SKIP_FILES = exports2.DIRECTORIES = exports2.DB_NAME = exports2.GLOBAL_MINDLORE_DIR = exports2.MINDLORE_DIR = exports2.KNOWN_HOOK_EVENTS = void 0;
38
38
  exports2.isKnownHookEvent = isKnownHookEvent;
39
39
  exports2.isSessionCategory = isSessionCategory;
40
40
  exports2.fixVersionTokens = fixVersionTokens;
41
+ exports2.buildPriorityCase = buildPriorityCase;
41
42
  exports2.homedir = homedir;
42
43
  exports2.getActiveMindloreDir = getActiveMindloreDir;
43
44
  exports2.getAllDbs = getAllDbs;
@@ -325,6 +326,19 @@ var require_constants = __commonJS({
325
326
  "cc-session": "low",
326
327
  "cc-subagent": "low"
327
328
  };
329
+ exports2.RELATION_TYPES = ["cites", "extends", "contradicts", "supersedes"];
330
+ exports2.SYMMETRIC_TYPES = /* @__PURE__ */ new Set(["contradicts"]);
331
+ exports2.RELATION_PRIORITY = {
332
+ supersedes: 1,
333
+ contradicts: 2,
334
+ extends: 3,
335
+ cites: 4
336
+ };
337
+ exports2.MAX_RELATED_SOURCES = 5;
338
+ exports2.RELATED_OVERFETCH = 10;
339
+ function buildPriorityCase() {
340
+ return Object.entries(exports2.RELATION_PRIORITY).map(([type, priority]) => `WHEN '${type}' THEN ${priority}`).join(" ");
341
+ }
328
342
  exports2.TYPE_TO_DIR = {
329
343
  raw: "raw",
330
344
  source: "sources",
@@ -34,10 +34,11 @@ var require_constants = __commonJS({
34
34
  return mod && mod.__esModule ? mod : { "default": mod };
35
35
  };
36
36
  Object.defineProperty(exports2, "__esModule", { value: true });
37
- exports2.CONSOLIDATION_THRESHOLD = exports2.STALE_THRESHOLD = exports2.DECAY_HALF_LIFE_DAYS = exports2.DEFAULT_TOKEN_BUDGET = exports2.CC_MEMORY_BOOST = exports2.CC_SUBAGENT_CATEGORY = exports2.CC_SESSION_CATEGORY = exports2.CC_MEMORY_CATEGORY = exports2.CC_MEMORY_DIR = exports2.CC_MEMORY_PATH_MARKER = exports2.TYPE_TO_DIR = exports2.QUALITY_HEURISTICS = exports2.QUALITY_VALUES = exports2.FRONTMATTER_TYPES = exports2.FTS5_COLUMNS = exports2.STOP_WORDS = exports2.TURKISH_WORD_RE = exports2.STOP_WORDS_MIN_LENGTH = exports2.SESSION_CATEGORIES = exports2.CATEGORIES = exports2.SCHEMA_VERSION = exports2.DEFAULT_MODELS = exports2.CONFIG_FILE = exports2.MCP_BUSY_TIMEOUT_MS = exports2.DB_BUSY_TIMEOUT_MS = exports2.SKIP_FILES = exports2.DIRECTORIES = exports2.DB_NAME = exports2.GLOBAL_MINDLORE_DIR = exports2.MINDLORE_DIR = exports2.KNOWN_HOOK_EVENTS = void 0;
37
+ exports2.CONSOLIDATION_THRESHOLD = exports2.STALE_THRESHOLD = exports2.DECAY_HALF_LIFE_DAYS = exports2.DEFAULT_TOKEN_BUDGET = exports2.CC_MEMORY_BOOST = exports2.CC_SUBAGENT_CATEGORY = exports2.CC_SESSION_CATEGORY = exports2.CC_MEMORY_CATEGORY = exports2.CC_MEMORY_DIR = exports2.CC_MEMORY_PATH_MARKER = exports2.TYPE_TO_DIR = exports2.RELATED_OVERFETCH = exports2.MAX_RELATED_SOURCES = exports2.RELATION_PRIORITY = exports2.SYMMETRIC_TYPES = exports2.RELATION_TYPES = exports2.QUALITY_HEURISTICS = exports2.QUALITY_VALUES = exports2.FRONTMATTER_TYPES = exports2.FTS5_COLUMNS = exports2.STOP_WORDS = exports2.TURKISH_WORD_RE = exports2.STOP_WORDS_MIN_LENGTH = exports2.SESSION_CATEGORIES = exports2.CATEGORIES = exports2.SCHEMA_VERSION = exports2.DEFAULT_MODELS = exports2.CONFIG_FILE = exports2.MCP_BUSY_TIMEOUT_MS = exports2.DB_BUSY_TIMEOUT_MS = exports2.SKIP_FILES = exports2.DIRECTORIES = exports2.DB_NAME = exports2.GLOBAL_MINDLORE_DIR = exports2.MINDLORE_DIR = exports2.KNOWN_HOOK_EVENTS = void 0;
38
38
  exports2.isKnownHookEvent = isKnownHookEvent;
39
39
  exports2.isSessionCategory = isSessionCategory;
40
40
  exports2.fixVersionTokens = fixVersionTokens;
41
+ exports2.buildPriorityCase = buildPriorityCase;
41
42
  exports2.homedir = homedir;
42
43
  exports2.getActiveMindloreDir = getActiveMindloreDir;
43
44
  exports2.getAllDbs = getAllDbs;
@@ -325,6 +326,19 @@ var require_constants = __commonJS({
325
326
  "cc-session": "low",
326
327
  "cc-subagent": "low"
327
328
  };
329
+ exports2.RELATION_TYPES = ["cites", "extends", "contradicts", "supersedes"];
330
+ exports2.SYMMETRIC_TYPES = /* @__PURE__ */ new Set(["contradicts"]);
331
+ exports2.RELATION_PRIORITY = {
332
+ supersedes: 1,
333
+ contradicts: 2,
334
+ extends: 3,
335
+ cites: 4
336
+ };
337
+ exports2.MAX_RELATED_SOURCES = 5;
338
+ exports2.RELATED_OVERFETCH = 10;
339
+ function buildPriorityCase() {
340
+ return Object.entries(exports2.RELATION_PRIORITY).map(([type, priority]) => `WHEN '${type}' THEN ${priority}`).join(" ");
341
+ }
328
342
  exports2.TYPE_TO_DIR = {
329
343
  raw: "raw",
330
344
  source: "sources",
@@ -74,6 +74,23 @@ function extractNegativePatterns(content) {
74
74
  }
75
75
  return patterns;
76
76
  }
77
+ var _lessonsEnforcementCached = null;
78
+ function hasLessonsEnforcementHook() {
79
+ if (_lessonsEnforcementCached !== null) return _lessonsEnforcementCached;
80
+ try {
81
+ const settingsPath = path.join(os.homedir(), ".claude", "settings.json");
82
+ const settings = JSON.parse(fs.readFileSync(settingsPath, "utf8"));
83
+ const hooks = settings.hooks || {};
84
+ const preToolUse = hooks.PreToolUse || [];
85
+ _lessonsEnforcementCached = preToolUse.some((entry) => {
86
+ const cmds = (entry.hooks || []).map((h) => h.command || "").concat(entry.command || "");
87
+ return cmds.some((c) => c.includes("lessons-enforcement"));
88
+ });
89
+ } catch (_err) {
90
+ _lessonsEnforcementCached = false;
91
+ }
92
+ return _lessonsEnforcementCached;
93
+ }
77
94
  function checkContent(content, patterns) {
78
95
  const matches = [];
79
96
  for (const p of patterns) {
@@ -117,6 +134,7 @@ function main() {
117
134
  toolInput.new_string || ""
118
135
  ].join("\n");
119
136
  if (allContent.trim().length < 10) return process.exit(0);
137
+ if (hasLessonsEnforcementHook()) return process.exit(0);
120
138
  const mindloreDir = findMindloreDir();
121
139
  const cachePath = mindloreDir ? path.join(mindloreDir, "diary", `_pattern-cache-${getProjectName()}.json`) : null;
122
140
  const cache = readCache(cachePath);
@@ -34,10 +34,11 @@ var require_constants = __commonJS({
34
34
  return mod && mod.__esModule ? mod : { "default": mod };
35
35
  };
36
36
  Object.defineProperty(exports2, "__esModule", { value: true });
37
- exports2.CONSOLIDATION_THRESHOLD = exports2.STALE_THRESHOLD = exports2.DECAY_HALF_LIFE_DAYS = exports2.DEFAULT_TOKEN_BUDGET = exports2.CC_MEMORY_BOOST = exports2.CC_SUBAGENT_CATEGORY = exports2.CC_SESSION_CATEGORY = exports2.CC_MEMORY_CATEGORY = exports2.CC_MEMORY_DIR = exports2.CC_MEMORY_PATH_MARKER = exports2.TYPE_TO_DIR = exports2.QUALITY_HEURISTICS = exports2.QUALITY_VALUES = exports2.FRONTMATTER_TYPES = exports2.FTS5_COLUMNS = exports2.STOP_WORDS = exports2.TURKISH_WORD_RE = exports2.STOP_WORDS_MIN_LENGTH = exports2.SESSION_CATEGORIES = exports2.CATEGORIES = exports2.SCHEMA_VERSION = exports2.DEFAULT_MODELS = exports2.CONFIG_FILE = exports2.MCP_BUSY_TIMEOUT_MS = exports2.DB_BUSY_TIMEOUT_MS = exports2.SKIP_FILES = exports2.DIRECTORIES = exports2.DB_NAME = exports2.GLOBAL_MINDLORE_DIR = exports2.MINDLORE_DIR = exports2.KNOWN_HOOK_EVENTS = void 0;
37
+ exports2.CONSOLIDATION_THRESHOLD = exports2.STALE_THRESHOLD = exports2.DECAY_HALF_LIFE_DAYS = exports2.DEFAULT_TOKEN_BUDGET = exports2.CC_MEMORY_BOOST = exports2.CC_SUBAGENT_CATEGORY = exports2.CC_SESSION_CATEGORY = exports2.CC_MEMORY_CATEGORY = exports2.CC_MEMORY_DIR = exports2.CC_MEMORY_PATH_MARKER = exports2.TYPE_TO_DIR = exports2.RELATED_OVERFETCH = exports2.MAX_RELATED_SOURCES = exports2.RELATION_PRIORITY = exports2.SYMMETRIC_TYPES = exports2.RELATION_TYPES = exports2.QUALITY_HEURISTICS = exports2.QUALITY_VALUES = exports2.FRONTMATTER_TYPES = exports2.FTS5_COLUMNS = exports2.STOP_WORDS = exports2.TURKISH_WORD_RE = exports2.STOP_WORDS_MIN_LENGTH = exports2.SESSION_CATEGORIES = exports2.CATEGORIES = exports2.SCHEMA_VERSION = exports2.DEFAULT_MODELS = exports2.CONFIG_FILE = exports2.MCP_BUSY_TIMEOUT_MS = exports2.DB_BUSY_TIMEOUT_MS = exports2.SKIP_FILES = exports2.DIRECTORIES = exports2.DB_NAME = exports2.GLOBAL_MINDLORE_DIR = exports2.MINDLORE_DIR = exports2.KNOWN_HOOK_EVENTS = void 0;
38
38
  exports2.isKnownHookEvent = isKnownHookEvent;
39
39
  exports2.isSessionCategory = isSessionCategory;
40
40
  exports2.fixVersionTokens = fixVersionTokens;
41
+ exports2.buildPriorityCase = buildPriorityCase;
41
42
  exports2.homedir = homedir;
42
43
  exports2.getActiveMindloreDir = getActiveMindloreDir;
43
44
  exports2.getAllDbs = getAllDbs2;
@@ -325,6 +326,19 @@ var require_constants = __commonJS({
325
326
  "cc-session": "low",
326
327
  "cc-subagent": "low"
327
328
  };
329
+ exports2.RELATION_TYPES = ["cites", "extends", "contradicts", "supersedes"];
330
+ exports2.SYMMETRIC_TYPES = /* @__PURE__ */ new Set(["contradicts"]);
331
+ exports2.RELATION_PRIORITY = {
332
+ supersedes: 1,
333
+ contradicts: 2,
334
+ extends: 3,
335
+ cites: 4
336
+ };
337
+ exports2.MAX_RELATED_SOURCES = 5;
338
+ exports2.RELATED_OVERFETCH = 10;
339
+ function buildPriorityCase() {
340
+ return Object.entries(exports2.RELATION_PRIORITY).map(([type, priority]) => `WHEN '${type}' THEN ${priority}`).join(" ");
341
+ }
328
342
  exports2.TYPE_TO_DIR = {
329
343
  raw: "raw",
330
344
  source: "sources",