mindlore 0.6.7 → 0.6.8

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 (169) hide show
  1. package/README.md +259 -259
  2. package/SCHEMA.md +292 -292
  3. package/dist/scripts/cc-memory-bulk-sync.d.ts.map +1 -1
  4. package/dist/scripts/cc-memory-bulk-sync.js +47 -42
  5. package/dist/scripts/cc-memory-bulk-sync.js.map +1 -1
  6. package/dist/scripts/cc-session-sync.d.ts.map +1 -1
  7. package/dist/scripts/cc-session-sync.js +58 -48
  8. package/dist/scripts/cc-session-sync.js.map +1 -1
  9. package/dist/scripts/init.js +8 -8
  10. package/dist/scripts/init.js.map +1 -1
  11. package/dist/scripts/lib/all-migrations.d.ts.map +1 -1
  12. package/dist/scripts/lib/all-migrations.js +4 -1
  13. package/dist/scripts/lib/all-migrations.js.map +1 -1
  14. package/dist/scripts/lib/consolidation.d.ts +4 -3
  15. package/dist/scripts/lib/consolidation.d.ts.map +1 -1
  16. package/dist/scripts/lib/consolidation.js +10 -10
  17. package/dist/scripts/lib/consolidation.js.map +1 -1
  18. package/dist/scripts/lib/constants.d.ts +1 -7
  19. package/dist/scripts/lib/constants.d.ts.map +1 -1
  20. package/dist/scripts/lib/constants.js +2 -9
  21. package/dist/scripts/lib/constants.js.map +1 -1
  22. package/dist/scripts/lib/db-helpers.d.ts +0 -15
  23. package/dist/scripts/lib/db-helpers.d.ts.map +1 -1
  24. package/dist/scripts/lib/db-helpers.js +1 -51
  25. package/dist/scripts/lib/db-helpers.js.map +1 -1
  26. package/dist/scripts/lib/decay.d.ts.map +1 -1
  27. package/dist/scripts/lib/decay.js +9 -9
  28. package/dist/scripts/lib/decay.js.map +1 -1
  29. package/dist/scripts/lib/episodes.js +23 -23
  30. package/dist/scripts/lib/migrations-v061.js +21 -21
  31. package/dist/scripts/lib/migrations-v062.js +11 -11
  32. package/dist/scripts/lib/migrations-v063.js +14 -14
  33. package/dist/scripts/lib/migrations-v067.js +11 -11
  34. package/dist/scripts/lib/migrations-v068.d.ts +3 -0
  35. package/dist/scripts/lib/migrations-v068.d.ts.map +1 -0
  36. package/dist/scripts/lib/migrations-v068.js +37 -0
  37. package/dist/scripts/lib/migrations-v068.js.map +1 -0
  38. package/dist/scripts/lib/migrations.d.ts.map +1 -1
  39. package/dist/scripts/lib/migrations.js +0 -15
  40. package/dist/scripts/lib/migrations.js.map +1 -1
  41. package/dist/scripts/lib/schema-version.js +6 -6
  42. package/dist/scripts/lib/search-cache.js +11 -11
  43. package/dist/scripts/lib/session-payload.d.ts.map +1 -1
  44. package/dist/scripts/lib/session-payload.js +7 -7
  45. package/dist/scripts/lib/session-payload.js.map +1 -1
  46. package/dist/scripts/lib/triage.js +3 -3
  47. package/dist/scripts/mindlore-backup.js +9 -9
  48. package/dist/scripts/mindlore-fts5-index.d.ts +1 -2
  49. package/dist/scripts/mindlore-fts5-index.d.ts.map +1 -1
  50. package/dist/scripts/mindlore-fts5-index.js +12 -64
  51. package/dist/scripts/mindlore-fts5-index.js.map +1 -1
  52. package/dist/scripts/mindlore-health-check.d.ts.map +1 -1
  53. package/dist/scripts/mindlore-health-check.js +0 -11
  54. package/dist/scripts/mindlore-health-check.js.map +1 -1
  55. package/dist/tests/cc-memory-bulk-sync.test.js +23 -0
  56. package/dist/tests/cc-memory-bulk-sync.test.js.map +1 -1
  57. package/dist/tests/cc-session-sync.test.js +25 -0
  58. package/dist/tests/cc-session-sync.test.js.map +1 -1
  59. package/dist/tests/compaction-snapshot.test.js +2 -2
  60. package/dist/tests/consolidation.test.js +5 -5
  61. package/dist/tests/consolidation.test.js.map +1 -1
  62. package/dist/tests/decay.test.js +9 -9
  63. package/dist/tests/diary.test.js +4 -4
  64. package/dist/tests/episode-kind-constant.test.d.ts +2 -0
  65. package/dist/tests/episode-kind-constant.test.d.ts.map +1 -0
  66. package/dist/tests/episode-kind-constant.test.js +28 -0
  67. package/dist/tests/episode-kind-constant.test.js.map +1 -0
  68. package/dist/tests/episodes-inject.test.js +9 -9
  69. package/dist/tests/fts5.test.js +66 -125
  70. package/dist/tests/fts5.test.js.map +1 -1
  71. package/dist/tests/globalSetup.d.ts +2 -0
  72. package/dist/tests/globalSetup.d.ts.map +1 -0
  73. package/dist/tests/globalSetup.js +36 -0
  74. package/dist/tests/globalSetup.js.map +1 -0
  75. package/dist/tests/helpers/db.d.ts +13 -5
  76. package/dist/tests/helpers/db.d.ts.map +1 -1
  77. package/dist/tests/helpers/db.js +60 -33
  78. package/dist/tests/helpers/db.js.map +1 -1
  79. package/dist/tests/lesson-graduation.test.js +11 -11
  80. package/dist/tests/lesson-graduation.test.js.map +1 -1
  81. package/dist/tests/migrations-v053.test.js +16 -16
  82. package/dist/tests/migrations-v061.test.js +10 -10
  83. package/dist/tests/migrations-v063.test.js +2 -2
  84. package/dist/tests/migrations-v068.test.d.ts +2 -0
  85. package/dist/tests/migrations-v068.test.d.ts.map +1 -0
  86. package/dist/tests/migrations-v068.test.js +53 -0
  87. package/dist/tests/migrations-v068.test.js.map +1 -0
  88. package/dist/tests/nomination-counts.test.d.ts +2 -0
  89. package/dist/tests/nomination-counts.test.d.ts.map +1 -0
  90. package/dist/tests/nomination-counts.test.js +51 -0
  91. package/dist/tests/nomination-counts.test.js.map +1 -0
  92. package/dist/tests/recall-telemetry.test.js +8 -8
  93. package/dist/tests/schema-version.test.js +3 -7
  94. package/dist/tests/schema-version.test.js.map +1 -1
  95. package/dist/tests/search-hook.test.js +2 -2
  96. package/dist/tests/sec-regression.test.js +0 -50
  97. package/dist/tests/sec-regression.test.js.map +1 -1
  98. package/dist/tests/session-end-cleanup.test.js +3 -20
  99. package/dist/tests/session-end-cleanup.test.js.map +1 -1
  100. package/dist/tests/session-focus.test.js +7 -30
  101. package/dist/tests/session-focus.test.js.map +1 -1
  102. package/dist/tests/session-payload.test.js +1 -1
  103. package/dist/tests/session-summary.test.js +1 -1
  104. package/hooks/lib/constants.cjs +15 -0
  105. package/hooks/lib/mindlore-common.cjs +974 -1042
  106. package/hooks/mindlore-cwd-changed.cjs +57 -57
  107. package/hooks/mindlore-decision-detector.cjs +54 -54
  108. package/hooks/mindlore-dont-repeat.cjs +222 -222
  109. package/hooks/mindlore-fts5-sync.cjs +97 -88
  110. package/hooks/mindlore-index.cjs +229 -229
  111. package/hooks/mindlore-model-router.cjs +54 -54
  112. package/hooks/mindlore-post-compact.cjs +69 -69
  113. package/hooks/mindlore-post-read.cjs +106 -106
  114. package/hooks/mindlore-pre-compact.cjs +154 -154
  115. package/hooks/mindlore-read-guard.cjs +105 -105
  116. package/hooks/mindlore-research-guard.cjs +176 -176
  117. package/hooks/mindlore-search.cjs +200 -200
  118. package/hooks/mindlore-session-end.cjs +509 -526
  119. package/hooks/mindlore-session-focus.cjs +256 -259
  120. package/package.json +75 -78
  121. package/plugin.json +1 -1
  122. package/skills/mindlore-diary/SKILL.md +85 -85
  123. package/skills/mindlore-evolve/SKILL.md +126 -126
  124. package/skills/mindlore-explore/SKILL.md +109 -109
  125. package/skills/mindlore-ingest/SKILL.md +195 -195
  126. package/skills/mindlore-maintain/SKILL.md +125 -125
  127. package/skills/mindlore-query/SKILL.md +151 -151
  128. package/skills/mindlore-reflect/SKILL.md +141 -141
  129. package/skills/mindlore-stats/SKILL.md +106 -106
  130. package/templates/INDEX.md +14 -14
  131. package/templates/SCHEMA.md +292 -292
  132. package/templates/config.json +1 -1
  133. package/templates/extraction/article.md +15 -15
  134. package/templates/extraction/changelog.md +15 -15
  135. package/templates/extraction/default.md +15 -15
  136. package/templates/extraction/docs.md +15 -15
  137. package/templates/extraction/github-repo.md +17 -17
  138. package/dist/scripts/lib/daemon.d.ts +0 -16
  139. package/dist/scripts/lib/daemon.d.ts.map +0 -1
  140. package/dist/scripts/lib/daemon.js +0 -133
  141. package/dist/scripts/lib/daemon.js.map +0 -1
  142. package/dist/scripts/lib/embedding.d.ts +0 -5
  143. package/dist/scripts/lib/embedding.d.ts.map +0 -1
  144. package/dist/scripts/lib/embedding.js +0 -44
  145. package/dist/scripts/lib/embedding.js.map +0 -1
  146. package/dist/scripts/mindlore-daemon.d.ts +0 -2
  147. package/dist/scripts/mindlore-daemon.d.ts.map +0 -1
  148. package/dist/scripts/mindlore-daemon.js +0 -117
  149. package/dist/scripts/mindlore-daemon.js.map +0 -1
  150. package/dist/tests/daemon-integration.test.d.ts +0 -2
  151. package/dist/tests/daemon-integration.test.d.ts.map +0 -1
  152. package/dist/tests/daemon-integration.test.js +0 -37
  153. package/dist/tests/daemon-integration.test.js.map +0 -1
  154. package/dist/tests/daemon.test.d.ts +0 -2
  155. package/dist/tests/daemon.test.d.ts.map +0 -1
  156. package/dist/tests/daemon.test.js +0 -187
  157. package/dist/tests/daemon.test.js.map +0 -1
  158. package/dist/tests/embedding-hf-integration.test.d.ts +0 -2
  159. package/dist/tests/embedding-hf-integration.test.d.ts.map +0 -1
  160. package/dist/tests/embedding-hf-integration.test.js +0 -52
  161. package/dist/tests/embedding-hf-integration.test.js.map +0 -1
  162. package/dist/tests/embedding.test.d.ts +0 -6
  163. package/dist/tests/embedding.test.d.ts.map +0 -1
  164. package/dist/tests/embedding.test.js +0 -71
  165. package/dist/tests/embedding.test.js.map +0 -1
  166. package/dist/tests/sqlite-vec-v12.test.d.ts +0 -2
  167. package/dist/tests/sqlite-vec-v12.test.d.ts.map +0 -1
  168. package/dist/tests/sqlite-vec-v12.test.js +0 -72
  169. package/dist/tests/sqlite-vec-v12.test.js.map +0 -1
@@ -1,187 +0,0 @@
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 net_1 = __importDefault(require("net"));
7
- const fs_1 = __importDefault(require("fs"));
8
- const path_1 = __importDefault(require("path"));
9
- const os_1 = __importDefault(require("os"));
10
- describe('daemon constants', () => {
11
- const constants = require('../dist/scripts/lib/constants.js');
12
- it('should define DAEMON_PORT_FILE inside mindlore dir', () => {
13
- expect(constants.DAEMON_PORT_FILE).toContain('mindlore-daemon.port');
14
- });
15
- it('should define DAEMON_PID_FILE inside mindlore dir', () => {
16
- expect(constants.DAEMON_PID_FILE).toContain('mindlore-daemon.pid');
17
- });
18
- it('should define DAEMON_TIMEOUT_MS as 300', () => {
19
- expect(constants.DAEMON_TIMEOUT_MS).toBe(300);
20
- });
21
- it('should define DAEMON_HOST as 127.0.0.1', () => {
22
- expect(constants.DAEMON_HOST).toBe('127.0.0.1');
23
- });
24
- });
25
- describe('daemon server', () => {
26
- let createDaemonServer;
27
- beforeAll(async () => {
28
- const mod = await import('../scripts/lib/daemon.js');
29
- createDaemonServer = mod.createDaemonServer;
30
- });
31
- it('should start and respond to ping', async () => {
32
- const server = createDaemonServer({ skipModelLoad: true });
33
- await server.start();
34
- const port = server.getPort();
35
- expect(port).toBeGreaterThan(0);
36
- const response = await new Promise((resolve) => {
37
- const client = net_1.default.createConnection(port, '127.0.0.1', () => {
38
- client.write(JSON.stringify({ type: 'ping' }) + '\n');
39
- });
40
- client.on('data', (data) => {
41
- resolve(data.toString().trim());
42
- client.end();
43
- });
44
- });
45
- const parsed = JSON.parse(response);
46
- expect(parsed.type).toBe('pong');
47
- await server.stop();
48
- }, 10000);
49
- it('should respond to embed request with mock embedding', async () => {
50
- const mockEmbed = new Array(384).fill(0.1);
51
- const server = createDaemonServer({ skipModelLoad: true, mockEmbedding: mockEmbed });
52
- await server.start();
53
- const port = server.getPort();
54
- const response = await new Promise((resolve) => {
55
- const client = net_1.default.createConnection(port, '127.0.0.1', () => {
56
- client.write(JSON.stringify({ type: 'embed', text: 'test query' }) + '\n');
57
- });
58
- client.on('data', (data) => {
59
- resolve(data.toString().trim());
60
- client.end();
61
- });
62
- });
63
- const parsed = JSON.parse(response);
64
- expect(parsed.type).toBe('embedding');
65
- expect(parsed.embedding).toHaveLength(384);
66
- await server.stop();
67
- }, 10000);
68
- it('should write PID file on start and remove on stop', async () => {
69
- const pidFile = path_1.default.join(os_1.default.tmpdir(), `mindlore-test-pid-${Date.now()}`);
70
- const portFile = path_1.default.join(os_1.default.tmpdir(), `mindlore-test-port-${Date.now()}`);
71
- const server = createDaemonServer({ skipModelLoad: true, pidFile, portFile });
72
- await server.start();
73
- expect(fs_1.default.existsSync(pidFile)).toBe(true);
74
- const pid = parseInt(fs_1.default.readFileSync(pidFile, 'utf8').trim());
75
- expect(pid).toBe(process.pid);
76
- expect(fs_1.default.existsSync(portFile)).toBe(true);
77
- const writtenPort = parseInt(fs_1.default.readFileSync(portFile, 'utf8').trim());
78
- expect(writtenPort).toBe(server.getPort());
79
- await server.stop();
80
- expect(fs_1.default.existsSync(pidFile)).toBe(false);
81
- expect(fs_1.default.existsSync(portFile)).toBe(false);
82
- }, 10000);
83
- it('should report running status', async () => {
84
- const server = createDaemonServer({ skipModelLoad: true });
85
- expect(server.isRunning()).toBe(false);
86
- await server.start();
87
- expect(server.isRunning()).toBe(true);
88
- await server.stop();
89
- expect(server.isRunning()).toBe(false);
90
- }, 10000);
91
- });
92
- describe('daemon lifecycle edge cases', () => {
93
- let createDaemonServer;
94
- beforeAll(async () => {
95
- const mod = await import('../scripts/lib/daemon.js');
96
- createDaemonServer = mod.createDaemonServer;
97
- });
98
- it('should handle concurrent connections', async () => {
99
- const server = createDaemonServer({
100
- skipModelLoad: true,
101
- mockEmbedding: new Array(384).fill(0.1),
102
- });
103
- await server.start();
104
- const port = server.getPort();
105
- const promises = Array.from({ length: 3 }, () => new Promise((resolve) => {
106
- const client = net_1.default.createConnection(port, '127.0.0.1', () => {
107
- client.write(JSON.stringify({ type: 'ping' }) + '\n');
108
- });
109
- client.on('data', (data) => {
110
- resolve(data.toString().trim());
111
- client.end();
112
- });
113
- }));
114
- const results = await Promise.all(promises);
115
- for (const r of results) {
116
- expect(JSON.parse(r).type).toBe('pong');
117
- }
118
- await server.stop();
119
- }, 10000);
120
- it('should handle invalid JSON gracefully', async () => {
121
- const server = createDaemonServer({ skipModelLoad: true });
122
- await server.start();
123
- const port = server.getPort();
124
- const response = await new Promise((resolve) => {
125
- const client = net_1.default.createConnection(port, '127.0.0.1', () => {
126
- client.write('not valid json\n');
127
- });
128
- client.on('data', (data) => {
129
- resolve(data.toString().trim());
130
- client.end();
131
- });
132
- });
133
- const parsed = JSON.parse(response);
134
- expect(parsed.type).toBe('error');
135
- expect(parsed.error).toContain('Invalid JSON');
136
- await server.stop();
137
- }, 10000);
138
- it('should return error for embed without text', async () => {
139
- const server = createDaemonServer({ skipModelLoad: true });
140
- await server.start();
141
- const port = server.getPort();
142
- const response = await new Promise((resolve) => {
143
- const client = net_1.default.createConnection(port, '127.0.0.1', () => {
144
- client.write(JSON.stringify({ type: 'embed' }) + '\n');
145
- });
146
- client.on('data', (data) => {
147
- resolve(data.toString().trim());
148
- client.end();
149
- });
150
- });
151
- const parsed = JSON.parse(response);
152
- expect(parsed.type).toBe('error');
153
- expect(parsed.error).toContain('No text');
154
- await server.stop();
155
- }, 10000);
156
- it('should handle stop command', async () => {
157
- const server = createDaemonServer({ skipModelLoad: true });
158
- await server.start();
159
- expect(server.isRunning()).toBe(true);
160
- const port = server.getPort();
161
- const response = await new Promise((resolve) => {
162
- const client = net_1.default.createConnection(port, '127.0.0.1', () => {
163
- client.write(JSON.stringify({ type: 'stop' }) + '\n');
164
- });
165
- client.on('data', (data) => {
166
- resolve(data.toString().trim());
167
- client.end();
168
- });
169
- });
170
- expect(JSON.parse(response).type).toBe('stopped');
171
- // Wait for graceful shutdown
172
- await new Promise(r => setTimeout(r, 200));
173
- expect(server.isRunning()).toBe(false);
174
- }, 10000);
175
- });
176
- describe('daemon CLI registration', () => {
177
- it('should be registered as CLI subcommand in init.ts', () => {
178
- const initSource = fs_1.default.readFileSync(path_1.default.join(__dirname, '..', 'scripts', 'init.ts'), 'utf8');
179
- expect(initSource).toContain("daemon:");
180
- expect(initSource).toContain('mindlore-daemon');
181
- });
182
- it('mindlore-daemon.ts script should exist', () => {
183
- const scriptPath = path_1.default.join(__dirname, '..', 'scripts', 'mindlore-daemon.ts');
184
- expect(fs_1.default.existsSync(scriptPath)).toBe(true);
185
- });
186
- });
187
- //# sourceMappingURL=daemon.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"daemon.test.js","sourceRoot":"","sources":["../../tests/daemon.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=embedding-hf-integration.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"embedding-hf-integration.test.d.ts","sourceRoot":"","sources":["../../tests/embedding-hf-integration.test.ts"],"names":[],"mappings":""}
@@ -1,52 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- /**
4
- * Integration smoke test — only runs when @huggingface/transformers installed.
5
- * Skips automatically if package missing (dev environment guard).
6
- */
7
- let pkgAvailable = false;
8
- const skipHF = process.env.CI === 'true' || parseInt(process.versions.node, 10) >= 24;
9
- try {
10
- require.resolve('@huggingface/transformers');
11
- pkgAvailable = true;
12
- }
13
- catch { /* skip */ }
14
- // Skip in CI and Node 24+ — onnxruntime-node Float32Array realm mismatch in Jest sandbox
15
- (pkgAvailable && !skipHF ? describe : describe.skip)('HF Transformers smoke', () => {
16
- test('Xenova/multilingual-e5-small loads from HF package', async () => {
17
- const { pipeline } = await import('@huggingface/transformers');
18
- // eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion, @typescript-eslint/no-explicit-any -- ESM pipeline type unresolvable in CJS Jest
19
- const embedder = await pipeline('feature-extraction', 'Xenova/multilingual-e5-small', { dtype: 'q8' });
20
- // eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion, @typescript-eslint/no-explicit-any -- callable pipeline signature
21
- const result = await embedder(['passage: hello'], { pooling: 'mean', normalize: true });
22
- const list = result.tolist();
23
- expect(list[0]).toHaveLength(384);
24
- }, 60_000);
25
- test('alternative ID intfloat/multilingual-e5-small loads', async () => {
26
- const { pipeline } = await import('@huggingface/transformers');
27
- const embedder = await pipeline('feature-extraction', 'intfloat/multilingual-e5-small');
28
- // eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion, @typescript-eslint/no-explicit-any -- callable pipeline signature
29
- const result = await embedder(['passage: hello'], { pooling: 'mean', normalize: true });
30
- expect(result.tolist()[0]).toHaveLength(384);
31
- }, 60_000);
32
- });
33
- let embeddingAvailable = false;
34
- try {
35
- require('@huggingface/transformers');
36
- embeddingAvailable = true;
37
- }
38
- catch { /* ESM-only module — Jest CJS mode cannot load it */ }
39
- (embeddingAvailable && !skipHF ? describe : describe.skip)('embedding drift check', () => {
40
- test('cosine >=0.99 vs reference v2 embedding', async () => {
41
- const refPath = require('path').join(__dirname, 'fixtures/embedding-v2-reference.json');
42
- expect(require('fs').existsSync(refPath)).toBe(true);
43
- const ref = JSON.parse(require('fs').readFileSync(refPath, 'utf8'));
44
- const { generateEmbedding } = await import('../scripts/lib/embedding.js');
45
- const fresh = await generateEmbedding('passage: mindlore test');
46
- let dot = 0;
47
- for (let i = 0; i < ref.length; i++)
48
- dot += (ref[i] ?? 0) * (fresh[i] ?? 0);
49
- expect(dot).toBeGreaterThanOrEqual(0.99);
50
- }, 60_000);
51
- });
52
- //# sourceMappingURL=embedding-hf-integration.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"embedding-hf-integration.test.js","sourceRoot":"","sources":["../../tests/embedding-hf-integration.test.ts"],"names":[],"mappings":"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"}
@@ -1,6 +0,0 @@
1
- /**
2
- * Embedding module unit tests — mock @huggingface/transformers.
3
- * Real model integration test → Task 14 standalone script.
4
- */
5
- export {};
6
- //# sourceMappingURL=embedding.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"embedding.test.d.ts","sourceRoot":"","sources":["../../tests/embedding.test.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
@@ -1,71 +0,0 @@
1
- "use strict";
2
- /**
3
- * Embedding module unit tests — mock @huggingface/transformers.
4
- * Real model integration test → Task 14 standalone script.
5
- */
6
- Object.defineProperty(exports, "__esModule", { value: true });
7
- // Mock the dynamic import before any imports
8
- jest.mock('@huggingface/transformers', () => {
9
- // Return a fake 384-dim embedding based on text hash for deterministic results
10
- function fakeEmbed(texts) {
11
- const embeddings = texts.map(text => {
12
- // Simple deterministic pseudo-embedding from text
13
- const vec = new Array(384).fill(0).map((_, i) => {
14
- let h = 0;
15
- for (let c = 0; c < text.length; c++) {
16
- h = ((h << 5) - h + text.charCodeAt(c) + i) | 0;
17
- }
18
- return (h % 1000) / 1000;
19
- });
20
- // Normalize
21
- const norm = Math.sqrt(vec.reduce((s, v) => s + v * v, 0));
22
- return norm > 0 ? vec.map(v => v / norm) : vec;
23
- });
24
- return { tolist: () => embeddings };
25
- }
26
- return {
27
- __esModule: true,
28
- pipeline: jest.fn().mockResolvedValue(jest.fn().mockImplementation((texts, _opts) => {
29
- return Promise.resolve(fakeEmbed(texts));
30
- })),
31
- };
32
- });
33
- const embedding_js_1 = require("../scripts/lib/embedding.js");
34
- describe('Embedding Module', () => {
35
- test('EMBEDDING_DIM should be 384', () => {
36
- expect(embedding_js_1.EMBEDDING_DIM).toBe(384);
37
- });
38
- test('EMBEDDING_MODEL should be multilingual-e5-small', () => {
39
- expect(embedding_js_1.EMBEDDING_MODEL).toBe('Xenova/multilingual-e5-small');
40
- });
41
- test('should generate a 384-dim embedding', async () => {
42
- const embedding = await (0, embedding_js_1.generateEmbedding)('TypeScript is a programming language');
43
- expect(embedding).toHaveLength(384);
44
- expect(typeof embedding[0]).toBe('number');
45
- // Embeddings should be normalized (L2 norm ≈ 1.0)
46
- const norm = Math.sqrt(embedding.reduce((sum, v) => sum + v * v, 0));
47
- expect(norm).toBeCloseTo(1.0, 1);
48
- });
49
- test('should batch embed multiple texts', async () => {
50
- const texts = ['Hello world', 'Merhaba dünya'];
51
- const embeddings = await (0, embedding_js_1.batchEmbed)(texts);
52
- expect(embeddings).toHaveLength(2);
53
- expect(embeddings[0]).toHaveLength(384);
54
- expect(embeddings[1]).toHaveLength(384);
55
- });
56
- test('should produce different embeddings for different texts', async () => {
57
- const e1 = await (0, embedding_js_1.generateEmbedding)('authentication security');
58
- const e2 = await (0, embedding_js_1.generateEmbedding)('database performance');
59
- // Different texts should produce different embeddings
60
- const same = e1.every((v, i) => v === (e2[i] ?? 0));
61
- expect(same).toBe(false);
62
- });
63
- test('should add passage: prefix when not present', async () => {
64
- const e1 = await (0, embedding_js_1.generateEmbedding)('test text');
65
- const e2 = await (0, embedding_js_1.generateEmbedding)('passage: test text');
66
- // Both should produce valid embeddings
67
- expect(e1).toHaveLength(384);
68
- expect(e2).toHaveLength(384);
69
- });
70
- });
71
- //# sourceMappingURL=embedding.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"embedding.test.js","sourceRoot":"","sources":["../../tests/embedding.test.ts"],"names":[],"mappings":";AAAA;;;GAGG;;AAEH,6CAA6C;AAC7C,IAAI,CAAC,IAAI,CAAC,2BAA2B,EAAE,GAAG,EAAE;IAC1C,+EAA+E;IAC/E,SAAS,SAAS,CAAC,KAAe;QAChC,MAAM,UAAU,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;YAClC,kDAAkD;YAClD,MAAM,GAAG,GAAG,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;gBAC9C,IAAI,CAAC,GAAG,CAAC,CAAC;gBACV,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;oBACrC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;gBAClD,CAAC;gBACD,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;YAC3B,CAAC,CAAC,CAAC;YACH,YAAY;YACZ,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YAC3D,OAAO,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;QACjD,CAAC,CAAC,CAAC;QACH,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,UAAU,EAAE,CAAC;IACtC,CAAC;IAED,OAAO;QACL,UAAU,EAAE,IAAI;QAChB,QAAQ,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,iBAAiB,CACnC,IAAI,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,CAAC,KAAe,EAAE,KAA8B,EAAE,EAAE;YAC/E,OAAO,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;QAC3C,CAAC,CAAC,CACH;KACF,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,8DAA4G;AAE5G,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;IAChC,IAAI,CAAC,6BAA6B,EAAE,GAAG,EAAE;QACvC,MAAM,CAAC,4BAAa,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAClC,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,iDAAiD,EAAE,GAAG,EAAE;QAC3D,MAAM,CAAC,8BAAe,CAAC,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;IAC/D,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,qCAAqC,EAAE,KAAK,IAAI,EAAE;QACrD,MAAM,SAAS,GAAG,MAAM,IAAA,gCAAiB,EAAC,sCAAsC,CAAC,CAAC;QAClF,MAAM,CAAC,SAAS,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;QACpC,MAAM,CAAC,OAAO,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC3C,kDAAkD;QAClD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACrE,MAAM,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;IACnC,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,mCAAmC,EAAE,KAAK,IAAI,EAAE;QACnD,MAAM,KAAK,GAAG,CAAC,aAAa,EAAE,eAAe,CAAC,CAAC;QAC/C,MAAM,UAAU,GAAG,MAAM,IAAA,yBAAU,EAAC,KAAK,CAAC,CAAC;QAC3C,MAAM,CAAC,UAAU,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QACnC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;QACxC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,yDAAyD,EAAE,KAAK,IAAI,EAAE;QACzE,MAAM,EAAE,GAAG,MAAM,IAAA,gCAAiB,EAAC,yBAAyB,CAAC,CAAC;QAC9D,MAAM,EAAE,GAAG,MAAM,IAAA,gCAAiB,EAAC,sBAAsB,CAAC,CAAC;QAC3D,sDAAsD;QACtD,MAAM,IAAI,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACpD,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC3B,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,6CAA6C,EAAE,KAAK,IAAI,EAAE;QAC7D,MAAM,EAAE,GAAG,MAAM,IAAA,gCAAiB,EAAC,WAAW,CAAC,CAAC;QAChD,MAAM,EAAE,GAAG,MAAM,IAAA,gCAAiB,EAAC,oBAAoB,CAAC,CAAC;QACzD,uCAAuC;QACvC,MAAM,CAAC,EAAE,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;QAC7B,MAAM,CAAC,EAAE,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;IAC/B,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=sqlite-vec-v12.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sqlite-vec-v12.test.d.ts","sourceRoot":"","sources":["../../tests/sqlite-vec-v12.test.ts"],"names":[],"mappings":""}
@@ -1,72 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
- var __importDefault = (this && this.__importDefault) || function (mod) {
36
- return (mod && mod.__esModule) ? mod : { "default": mod };
37
- };
38
- Object.defineProperty(exports, "__esModule", { value: true });
39
- const better_sqlite3_1 = __importDefault(require("better-sqlite3"));
40
- const sqliteVec = __importStar(require("sqlite-vec"));
41
- const path_1 = __importDefault(require("path"));
42
- const os_1 = __importDefault(require("os"));
43
- const fs_1 = __importDefault(require("fs"));
44
- describe('sqlite-vec on better-sqlite3 v12', () => {
45
- let dbPath;
46
- let db;
47
- beforeEach(() => {
48
- dbPath = path_1.default.join(fs_1.default.mkdtempSync(path_1.default.join(os_1.default.tmpdir(), 'vec-v12-')), 'test.db');
49
- db = new better_sqlite3_1.default(dbPath);
50
- sqliteVec.load(db);
51
- });
52
- afterEach(() => {
53
- db.close();
54
- fs_1.default.rmSync(path_1.default.dirname(dbPath), { recursive: true, force: true });
55
- });
56
- test('vec0 virtual table create + insert + cosine query', () => {
57
- db.exec('CREATE VIRTUAL TABLE vec_items USING vec0(embedding float[3])');
58
- const insert = db.prepare('INSERT INTO vec_items(embedding) VALUES (?)');
59
- insert.run(Buffer.from(new Float32Array([1, 0, 0]).buffer));
60
- insert.run(Buffer.from(new Float32Array([0, 1, 0]).buffer));
61
- const rows = db.prepare('SELECT rowid, distance FROM vec_items WHERE embedding MATCH ? ORDER BY distance LIMIT 2').all(Buffer.from(new Float32Array([1, 0, 0]).buffer));
62
- expect(rows.length).toBe(2);
63
- // eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion -- sqlite row shape guaranteed by vec0 schema
64
- const first = rows[0];
65
- expect(first.rowid).toBe(1);
66
- expect(first.distance).toBeCloseTo(0);
67
- });
68
- test('better-sqlite3 prepare + run works', () => {
69
- expect(() => db.prepare('SELECT 1').get()).not.toThrow();
70
- });
71
- });
72
- //# sourceMappingURL=sqlite-vec-v12.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sqlite-vec-v12.test.js","sourceRoot":"","sources":["../../tests/sqlite-vec-v12.test.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,oEAAsC;AACtC,sDAAwC;AACxC,gDAAwB;AACxB,4CAAoB;AACpB,4CAAoB;AAIpB,QAAQ,CAAC,kCAAkC,EAAE,GAAG,EAAE;IAChD,IAAI,MAAc,CAAC;IACnB,IAAI,EAAqB,CAAC;IAE1B,UAAU,CAAC,GAAG,EAAE;QACd,MAAM,GAAG,cAAI,CAAC,IAAI,CAAC,YAAE,CAAC,WAAW,CAAC,cAAI,CAAC,IAAI,CAAC,YAAE,CAAC,MAAM,EAAE,EAAE,UAAU,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;QAClF,EAAE,GAAG,IAAI,wBAAQ,CAAC,MAAM,CAAC,CAAC;QAC1B,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACrB,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACb,EAAE,CAAC,KAAK,EAAE,CAAC;QACX,YAAE,CAAC,MAAM,CAAC,cAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACpE,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,mDAAmD,EAAE,GAAG,EAAE;QAC7D,EAAE,CAAC,IAAI,CAAC,+DAA+D,CAAC,CAAC;QACzE,MAAM,MAAM,GAAG,EAAE,CAAC,OAAO,CAAC,6CAA6C,CAAC,CAAC;QACzE,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;QAC5D,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;QAC5D,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,CACrB,yFAAyF,CAC1F,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;QACvD,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC5B,qHAAqH;QACrH,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAW,CAAC;QAChC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC5B,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IACxC,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,oCAAoC,EAAE,GAAG,EAAE;QAC9C,MAAM,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;IAC3D,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}