@raviolelabs/engram-mcp 0.5.3 → 0.5.5

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 (180) hide show
  1. package/dist/cloud/bridge-client.d.ts.map +1 -1
  2. package/dist/cloud/bridge-client.js +14 -1
  3. package/dist/cloud/bridge-client.js.map +1 -1
  4. package/dist/cloud/pairing.d.ts.map +1 -1
  5. package/dist/cloud/pairing.js +45 -4
  6. package/dist/cloud/pairing.js.map +1 -1
  7. package/dist/core/db/index.d.ts.map +1 -1
  8. package/dist/core/db/index.js +31 -15
  9. package/dist/core/db/index.js.map +1 -1
  10. package/dist/core/logger.d.ts.map +1 -1
  11. package/dist/core/logger.js +22 -4
  12. package/dist/core/logger.js.map +1 -1
  13. package/dist/core/server/http.d.ts.map +1 -1
  14. package/dist/core/server/http.js +14 -3
  15. package/dist/core/server/http.js.map +1 -1
  16. package/package.json +1 -2
  17. package/dist/mcp-server/tests/mcp-e2e.test.d.ts +0 -2
  18. package/dist/mcp-server/tests/mcp-e2e.test.d.ts.map +0 -1
  19. package/dist/mcp-server/tests/mcp-e2e.test.js +0 -157
  20. package/dist/mcp-server/tests/mcp-e2e.test.js.map +0 -1
  21. package/dist/memory/modules/_custom/tests/custom-types.test.d.ts +0 -2
  22. package/dist/memory/modules/_custom/tests/custom-types.test.d.ts.map +0 -1
  23. package/dist/memory/modules/_custom/tests/custom-types.test.js +0 -96
  24. package/dist/memory/modules/_custom/tests/custom-types.test.js.map +0 -1
  25. package/dist/memory/modules/audio/tests/audio.test.d.ts +0 -2
  26. package/dist/memory/modules/audio/tests/audio.test.d.ts.map +0 -1
  27. package/dist/memory/modules/audio/tests/audio.test.js +0 -66
  28. package/dist/memory/modules/audio/tests/audio.test.js.map +0 -1
  29. package/dist/memory/modules/audio/tests/transcriber.test.d.ts +0 -2
  30. package/dist/memory/modules/audio/tests/transcriber.test.d.ts.map +0 -1
  31. package/dist/memory/modules/audio/tests/transcriber.test.js +0 -27
  32. package/dist/memory/modules/audio/tests/transcriber.test.js.map +0 -1
  33. package/dist/memory/modules/conversations/tests/conversations.test.d.ts +0 -2
  34. package/dist/memory/modules/conversations/tests/conversations.test.d.ts.map +0 -1
  35. package/dist/memory/modules/conversations/tests/conversations.test.js +0 -75
  36. package/dist/memory/modules/conversations/tests/conversations.test.js.map +0 -1
  37. package/dist/memory/modules/drive/tests/drive.test.d.ts +0 -2
  38. package/dist/memory/modules/drive/tests/drive.test.d.ts.map +0 -1
  39. package/dist/memory/modules/drive/tests/drive.test.js +0 -66
  40. package/dist/memory/modules/drive/tests/drive.test.js.map +0 -1
  41. package/dist/memory/modules/notes/tests/notes.test.d.ts +0 -2
  42. package/dist/memory/modules/notes/tests/notes.test.d.ts.map +0 -1
  43. package/dist/memory/modules/notes/tests/notes.test.js +0 -64
  44. package/dist/memory/modules/notes/tests/notes.test.js.map +0 -1
  45. package/dist/memory/modules/notion/tests/notion.test.d.ts +0 -2
  46. package/dist/memory/modules/notion/tests/notion.test.d.ts.map +0 -1
  47. package/dist/memory/modules/notion/tests/notion.test.js +0 -53
  48. package/dist/memory/modules/notion/tests/notion.test.js.map +0 -1
  49. package/dist/memory/modules/obsidian/tests/obsidian.test.d.ts +0 -2
  50. package/dist/memory/modules/obsidian/tests/obsidian.test.d.ts.map +0 -1
  51. package/dist/memory/modules/obsidian/tests/obsidian.test.js +0 -72
  52. package/dist/memory/modules/obsidian/tests/obsidian.test.js.map +0 -1
  53. package/dist/memory/modules/obsidian/tests/vault-reader.test.d.ts +0 -2
  54. package/dist/memory/modules/obsidian/tests/vault-reader.test.d.ts.map +0 -1
  55. package/dist/memory/modules/obsidian/tests/vault-reader.test.js +0 -37
  56. package/dist/memory/modules/obsidian/tests/vault-reader.test.js.map +0 -1
  57. package/dist/memory/modules/youtube/tests/channel.test.d.ts +0 -2
  58. package/dist/memory/modules/youtube/tests/channel.test.d.ts.map +0 -1
  59. package/dist/memory/modules/youtube/tests/channel.test.js +0 -61
  60. package/dist/memory/modules/youtube/tests/channel.test.js.map +0 -1
  61. package/dist/memory/modules/youtube/tests/transcript-fetcher.test.d.ts +0 -2
  62. package/dist/memory/modules/youtube/tests/transcript-fetcher.test.d.ts.map +0 -1
  63. package/dist/memory/modules/youtube/tests/transcript-fetcher.test.js +0 -23
  64. package/dist/memory/modules/youtube/tests/transcript-fetcher.test.js.map +0 -1
  65. package/dist/memory/modules/youtube/tests/youtube.test.d.ts +0 -2
  66. package/dist/memory/modules/youtube/tests/youtube.test.d.ts.map +0 -1
  67. package/dist/memory/modules/youtube/tests/youtube.test.js +0 -61
  68. package/dist/memory/modules/youtube/tests/youtube.test.js.map +0 -1
  69. package/dist/sync/tests/apply.test.d.ts +0 -4
  70. package/dist/sync/tests/apply.test.d.ts.map +0 -1
  71. package/dist/sync/tests/apply.test.js +0 -117
  72. package/dist/sync/tests/apply.test.js.map +0 -1
  73. package/dist/sync/tests/ops-log.test.d.ts +0 -2
  74. package/dist/sync/tests/ops-log.test.d.ts.map +0 -1
  75. package/dist/sync/tests/ops-log.test.js +0 -105
  76. package/dist/sync/tests/ops-log.test.js.map +0 -1
  77. package/dist/sync/tests/two-device-sync.test.d.ts +0 -2
  78. package/dist/sync/tests/two-device-sync.test.d.ts.map +0 -1
  79. package/dist/sync/tests/two-device-sync.test.js +0 -250
  80. package/dist/sync/tests/two-device-sync.test.js.map +0 -1
  81. package/dist/tests/chunker.test.d.ts +0 -2
  82. package/dist/tests/chunker.test.d.ts.map +0 -1
  83. package/dist/tests/chunker.test.js +0 -24
  84. package/dist/tests/chunker.test.js.map +0 -1
  85. package/dist/tests/cloud-auth.test.d.ts +0 -2
  86. package/dist/tests/cloud-auth.test.d.ts.map +0 -1
  87. package/dist/tests/cloud-auth.test.js +0 -75
  88. package/dist/tests/cloud-auth.test.js.map +0 -1
  89. package/dist/tests/cloud-crypto.test.d.ts +0 -2
  90. package/dist/tests/cloud-crypto.test.d.ts.map +0 -1
  91. package/dist/tests/cloud-crypto.test.js +0 -58
  92. package/dist/tests/cloud-crypto.test.js.map +0 -1
  93. package/dist/tests/cloud-integration.test.d.ts +0 -2
  94. package/dist/tests/cloud-integration.test.d.ts.map +0 -1
  95. package/dist/tests/cloud-integration.test.js +0 -193
  96. package/dist/tests/cloud-integration.test.js.map +0 -1
  97. package/dist/tests/cloud-pairing.test.d.ts +0 -2
  98. package/dist/tests/cloud-pairing.test.d.ts.map +0 -1
  99. package/dist/tests/cloud-pairing.test.js +0 -86
  100. package/dist/tests/cloud-pairing.test.js.map +0 -1
  101. package/dist/tests/cloud-saves-integration.test.d.ts +0 -2
  102. package/dist/tests/cloud-saves-integration.test.d.ts.map +0 -1
  103. package/dist/tests/cloud-saves-integration.test.js +0 -92
  104. package/dist/tests/cloud-saves-integration.test.js.map +0 -1
  105. package/dist/tests/cloud-transit.test.d.ts +0 -2
  106. package/dist/tests/cloud-transit.test.d.ts.map +0 -1
  107. package/dist/tests/cloud-transit.test.js +0 -263
  108. package/dist/tests/cloud-transit.test.js.map +0 -1
  109. package/dist/tests/config.test.d.ts +0 -2
  110. package/dist/tests/config.test.d.ts.map +0 -1
  111. package/dist/tests/config.test.js +0 -25
  112. package/dist/tests/config.test.js.map +0 -1
  113. package/dist/tests/db.test.d.ts +0 -2
  114. package/dist/tests/db.test.d.ts.map +0 -1
  115. package/dist/tests/db.test.js +0 -73
  116. package/dist/tests/db.test.js.map +0 -1
  117. package/dist/tests/embeddings-providers.test.d.ts +0 -2
  118. package/dist/tests/embeddings-providers.test.d.ts.map +0 -1
  119. package/dist/tests/embeddings-providers.test.js +0 -62
  120. package/dist/tests/embeddings-providers.test.js.map +0 -1
  121. package/dist/tests/embeddings.test.d.ts +0 -2
  122. package/dist/tests/embeddings.test.d.ts.map +0 -1
  123. package/dist/tests/embeddings.test.js +0 -22
  124. package/dist/tests/embeddings.test.js.map +0 -1
  125. package/dist/tests/integrations-api.test.d.ts +0 -2
  126. package/dist/tests/integrations-api.test.d.ts.map +0 -1
  127. package/dist/tests/integrations-api.test.js +0 -129
  128. package/dist/tests/integrations-api.test.js.map +0 -1
  129. package/dist/tests/memory-store.test.d.ts +0 -2
  130. package/dist/tests/memory-store.test.d.ts.map +0 -1
  131. package/dist/tests/memory-store.test.js +0 -129
  132. package/dist/tests/memory-store.test.js.map +0 -1
  133. package/dist/tests/module-registry.test.d.ts +0 -2
  134. package/dist/tests/module-registry.test.d.ts.map +0 -1
  135. package/dist/tests/module-registry.test.js +0 -44
  136. package/dist/tests/module-registry.test.js.map +0 -1
  137. package/dist/tests/property-extractor.test.d.ts +0 -2
  138. package/dist/tests/property-extractor.test.d.ts.map +0 -1
  139. package/dist/tests/property-extractor.test.js +0 -24
  140. package/dist/tests/property-extractor.test.js.map +0 -1
  141. package/dist/tests/public-tools.test.d.ts +0 -2
  142. package/dist/tests/public-tools.test.d.ts.map +0 -1
  143. package/dist/tests/public-tools.test.js +0 -286
  144. package/dist/tests/public-tools.test.js.map +0 -1
  145. package/dist/tests/reindex.test.d.ts +0 -2
  146. package/dist/tests/reindex.test.d.ts.map +0 -1
  147. package/dist/tests/reindex.test.js +0 -58
  148. package/dist/tests/reindex.test.js.map +0 -1
  149. package/dist/tests/scope-encryption.test.d.ts +0 -2
  150. package/dist/tests/scope-encryption.test.d.ts.map +0 -1
  151. package/dist/tests/scope-encryption.test.js +0 -71
  152. package/dist/tests/scope-encryption.test.js.map +0 -1
  153. package/dist/tests/shamir.test.d.ts +0 -2
  154. package/dist/tests/shamir.test.d.ts.map +0 -1
  155. package/dist/tests/shamir.test.js +0 -57
  156. package/dist/tests/shamir.test.js.map +0 -1
  157. package/dist/tests/source-registry.test.d.ts +0 -2
  158. package/dist/tests/source-registry.test.d.ts.map +0 -1
  159. package/dist/tests/source-registry.test.js +0 -58
  160. package/dist/tests/source-registry.test.js.map +0 -1
  161. package/dist/tests/types.test.d.ts +0 -2
  162. package/dist/tests/types.test.d.ts.map +0 -1
  163. package/dist/tests/types.test.js +0 -26
  164. package/dist/tests/types.test.js.map +0 -1
  165. package/dist/tests/vector.test.d.ts +0 -2
  166. package/dist/tests/vector.test.d.ts.map +0 -1
  167. package/dist/tests/vector.test.js +0 -61
  168. package/dist/tests/vector.test.js.map +0 -1
  169. package/dist/tests/wikilinks.test.d.ts +0 -2
  170. package/dist/tests/wikilinks.test.d.ts.map +0 -1
  171. package/dist/tests/wikilinks.test.js +0 -20
  172. package/dist/tests/wikilinks.test.js.map +0 -1
  173. package/dist/webapp/tests/api.test.d.ts +0 -2
  174. package/dist/webapp/tests/api.test.d.ts.map +0 -1
  175. package/dist/webapp/tests/api.test.js +0 -125
  176. package/dist/webapp/tests/api.test.js.map +0 -1
  177. package/dist/webapp/tests/mcp-http.test.d.ts +0 -2
  178. package/dist/webapp/tests/mcp-http.test.d.ts.map +0 -1
  179. package/dist/webapp/tests/mcp-http.test.js +0 -47
  180. package/dist/webapp/tests/mcp-http.test.js.map +0 -1
@@ -1,263 +0,0 @@
1
- import { describe, it, expect, beforeEach, afterEach } from 'vitest';
2
- import fs from 'fs';
3
- import os from 'os';
4
- import path from 'path';
5
- import http from 'http';
6
- import { ulid } from 'ulid';
7
- import { initDb, closeDb, getDb } from '../db/index.js';
8
- import { initVectorStore } from '../vector/store.js';
9
- import { MemoryStore } from '../memory/core/store.js';
10
- import { saveTokens } from '../cloud/auth.js';
11
- import { generateMasterKeySalt, deriveMasterKey, encryptBlob } from '../cloud/crypto.js';
12
- import { pollOnce } from '../cloud/transit-poller.js';
13
- function startMockTransitServer(state) {
14
- return new Promise((resolve) => {
15
- const server = http.createServer((req, res) => {
16
- const url = new URL(req.url, `http://localhost`);
17
- // GET /transit/inbox?since=…
18
- if (req.method === 'GET' && url.pathname === '/transit/inbox') {
19
- const since = url.searchParams.get('since') ?? '';
20
- const items = state.inbox.filter((i) => i.createdAt > since);
21
- res.writeHead(200, { 'Content-Type': 'application/json' });
22
- res.end(JSON.stringify({ items }));
23
- return;
24
- }
25
- // GET /blob/:id — simulates R2 signed URL
26
- if (req.method === 'GET' && url.pathname.startsWith('/blob/')) {
27
- const id = url.pathname.replace('/blob/', '');
28
- const blob = state.blobsByItemId.get(id);
29
- if (!blob) {
30
- res.writeHead(404);
31
- res.end('Not found');
32
- return;
33
- }
34
- res.writeHead(200, { 'Content-Type': 'application/octet-stream' });
35
- res.end(Buffer.from(blob));
36
- return;
37
- }
38
- // POST /transit/ack
39
- if (req.method === 'POST' && url.pathname === '/transit/ack') {
40
- let body = '';
41
- req.on('data', (d) => (body += d));
42
- req.on('end', () => {
43
- const { id } = JSON.parse(body);
44
- state.ackedIds.push(id);
45
- // Remove from inbox
46
- state.inbox = state.inbox.filter((i) => i.id !== id);
47
- res.writeHead(200, { 'Content-Type': 'application/json' });
48
- res.end(JSON.stringify({ ok: true }));
49
- });
50
- return;
51
- }
52
- res.writeHead(404);
53
- res.end();
54
- });
55
- server.listen(0, '127.0.0.1', () => {
56
- const addr = server.address();
57
- resolve({ server, baseUrl: `http://127.0.0.1:${addr.port}` });
58
- });
59
- });
60
- }
61
- // ---------------------------------------------------------------------------
62
- // Helpers
63
- // ---------------------------------------------------------------------------
64
- const ollamaConfig = {
65
- provider: 'ollama',
66
- baseUrl: 'http://localhost:11434',
67
- model: 'nomic-embed-text',
68
- dimensions: 768,
69
- };
70
- function fakeJwt(expSec) {
71
- const h = Buffer.from(JSON.stringify({ alg: 'HS256' })).toString('base64url');
72
- const p = Buffer.from(JSON.stringify({ sub: 'u', exp: expSec })).toString('base64url');
73
- return `${h}.${p}.sig`;
74
- }
75
- // ---------------------------------------------------------------------------
76
- // Tests
77
- // ---------------------------------------------------------------------------
78
- describe('cloud/transit-poller', () => {
79
- let tmpDir;
80
- let store;
81
- let masterKey;
82
- let saltHex;
83
- let mockState;
84
- let mockServer;
85
- let baseUrl;
86
- let config;
87
- beforeEach(async () => {
88
- tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), 'engram-transit-'));
89
- initDb(tmpDir);
90
- initVectorStore(tmpDir);
91
- store = new MemoryStore({ embeddings: ollamaConfig });
92
- // Generate master key
93
- saltHex = await generateMasterKeySalt();
94
- masterKey = await deriveMasterKey('test-passphrase', saltHex);
95
- // Save fake JWT to oauth_tokens (poller calls getValidJwt which reads DB)
96
- const expSec = Math.floor(Date.now() / 1000) + 3600;
97
- saveTokens({
98
- jwt: fakeJwt(expSec),
99
- refreshToken: 'rt',
100
- apiKey: 'ak-test',
101
- expiresAt: expSec * 1000,
102
- });
103
- // Start mock server
104
- mockState = { inbox: [], ackedIds: [], blobsByItemId: new Map() };
105
- const started = await startMockTransitServer(mockState);
106
- mockServer = started.server;
107
- baseUrl = started.baseUrl;
108
- config = {
109
- dataDir: tmpDir,
110
- embeddings: ollamaConfig,
111
- propertyExtraction: {
112
- enabled: false,
113
- baseUrl: 'http://localhost:11434',
114
- model: 'llama3.2:3b',
115
- maxTokens: 300,
116
- },
117
- whisper: { enabled: true, model: 'small.en', language: 'auto' },
118
- youtube: { enabled: true, preferLanguage: 'en', fallbackToYtdlp: true },
119
- modules: {},
120
- mcp: { stdio: true, httpPort: 7777 },
121
- engramAccount: {
122
- jwt: fakeJwt(Math.floor(Date.now() / 1000) + 3600),
123
- refreshToken: 'rt',
124
- apiKey: 'ak-test',
125
- masterKeySalt: saltHex,
126
- baseUrl,
127
- pairedAt: new Date().toISOString(),
128
- },
129
- };
130
- });
131
- afterEach(() => {
132
- closeDb();
133
- mockServer.close();
134
- fs.rmSync(tmpDir, { recursive: true, force: true });
135
- });
136
- it('pollOnce returns processed=0 when inbox is empty', async () => {
137
- const result = await pollOnce({ store, config, masterKey });
138
- expect(result.processed).toBe(0);
139
- expect(result.errors).toBe(0);
140
- });
141
- it('pollOnce ingests a text item and acks it', async () => {
142
- // Prepare encrypted text blob
143
- const itemId = ulid();
144
- const plaintext = new TextEncoder().encode('Hello from mobile! This is a transit text note.');
145
- const encrypted = await encryptBlob(plaintext, masterKey);
146
- mockState.blobsByItemId.set(itemId, encrypted);
147
- const item = {
148
- id: itemId,
149
- type: 'text',
150
- downloadUrl: `${baseUrl}/blob/${itemId}`,
151
- createdAt: new Date().toISOString(),
152
- mimeType: 'text/plain',
153
- filename: 'note.txt',
154
- sizeBytes: encrypted.length,
155
- };
156
- mockState.inbox.push(item);
157
- const result = await pollOnce({ store, config, masterKey });
158
- expect(result.processed).toBe(1);
159
- expect(result.errors).toBe(0);
160
- expect(mockState.ackedIds).toContain(itemId);
161
- expect(mockState.inbox).toHaveLength(0);
162
- // Verify the memory was actually stored
163
- const memories = getDb()
164
- .prepare("SELECT content, properties_json FROM memories WHERE type = 'notes'")
165
- .all();
166
- expect(memories).toHaveLength(1);
167
- expect(memories[0].content).toBe('Hello from mobile! This is a transit text note.');
168
- const props = JSON.parse(memories[0].properties_json);
169
- expect(props.custom?.transit_id).toBe(itemId);
170
- }, 30_000);
171
- it('pollOnce processes multiple items and acks each', async () => {
172
- for (let i = 0; i < 3; i++) {
173
- const id = ulid();
174
- const pt = new TextEncoder().encode(`Transit note number ${i}`);
175
- const enc = await encryptBlob(pt, masterKey);
176
- mockState.blobsByItemId.set(id, enc);
177
- mockState.inbox.push({
178
- id,
179
- type: 'text',
180
- downloadUrl: `${baseUrl}/blob/${id}`,
181
- createdAt: new Date(Date.now() + i).toISOString(),
182
- mimeType: 'text/plain',
183
- sizeBytes: enc.length,
184
- });
185
- }
186
- const result = await pollOnce({ store, config, masterKey });
187
- expect(result.processed).toBe(3);
188
- expect(result.errors).toBe(0);
189
- expect(mockState.ackedIds).toHaveLength(3);
190
- expect(mockState.inbox).toHaveLength(0);
191
- }, 60_000);
192
- it('pollOnce handles decryption failure gracefully (wrong key), counts as error', async () => {
193
- const itemId = ulid();
194
- // Encrypt with a DIFFERENT master key
195
- const otherSalt = await generateMasterKeySalt();
196
- const otherKey = await deriveMasterKey('other-passphrase', otherSalt);
197
- const enc = await encryptBlob(new TextEncoder().encode('secret'), otherKey);
198
- mockState.blobsByItemId.set(itemId, enc);
199
- mockState.inbox.push({
200
- id: itemId,
201
- type: 'text',
202
- downloadUrl: `${baseUrl}/blob/${itemId}`,
203
- createdAt: new Date().toISOString(),
204
- mimeType: 'text/plain',
205
- sizeBytes: enc.length,
206
- });
207
- const result = await pollOnce({ store, config, masterKey });
208
- // Error counted, item NOT acked (stays in inbox)
209
- expect(result.errors).toBe(1);
210
- expect(result.processed).toBe(0);
211
- expect(mockState.ackedIds).toHaveLength(0);
212
- expect(mockState.inbox).toHaveLength(1);
213
- }, 30_000);
214
- it('pollOnce persists last_ts watermark so next poll uses since filter', async () => {
215
- const id1 = ulid();
216
- const ts1 = '2026-01-01T00:00:00.000Z';
217
- const pt = new TextEncoder().encode('old note');
218
- const enc = await encryptBlob(pt, masterKey);
219
- mockState.blobsByItemId.set(id1, enc);
220
- mockState.inbox.push({
221
- id: id1,
222
- type: 'text',
223
- downloadUrl: `${baseUrl}/blob/${id1}`,
224
- createdAt: ts1,
225
- mimeType: 'text/plain',
226
- sizeBytes: enc.length,
227
- });
228
- await pollOnce({ store, config, masterKey });
229
- // Second poll — inbox is empty, mock server filters by since
230
- const result2 = await pollOnce({ store, config, masterKey });
231
- expect(result2.processed).toBe(0);
232
- // module_state should have the watermark
233
- const row = getDb()
234
- .prepare("SELECT value_json FROM module_state WHERE module_id = 'cloud_transit' AND key = 'last_ts'")
235
- .get();
236
- expect(row).not.toBeUndefined();
237
- expect(JSON.parse(row.value_json)).toBe(ts1);
238
- }, 30_000);
239
- it('doc item is ingested as notes with doc tags', async () => {
240
- const id = ulid();
241
- const text = 'This is a shared document excerpt. Machine learning basics.';
242
- const enc = await encryptBlob(new TextEncoder().encode(text), masterKey);
243
- mockState.blobsByItemId.set(id, enc);
244
- mockState.inbox.push({
245
- id,
246
- type: 'doc',
247
- downloadUrl: `${baseUrl}/blob/${id}`,
248
- createdAt: new Date().toISOString(),
249
- mimeType: 'application/pdf',
250
- filename: 'ml-basics.pdf',
251
- sizeBytes: enc.length,
252
- });
253
- const result = await pollOnce({ store, config, masterKey });
254
- expect(result.processed).toBe(1);
255
- const memories = getDb()
256
- .prepare("SELECT properties_json FROM memories WHERE type = 'notes'")
257
- .all();
258
- const props = JSON.parse(memories[0].properties_json);
259
- expect(props.tags).toContain('document');
260
- expect(props.custom?.mime_type).toBe('application/pdf');
261
- }, 30_000);
262
- });
263
- //# sourceMappingURL=cloud-transit.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cloud-transit.test.js","sourceRoot":"","sources":["../../src/tests/cloud-transit.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=config.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"config.test.d.ts","sourceRoot":"","sources":["../../src/tests/config.test.ts"],"names":[],"mappings":""}
@@ -1,25 +0,0 @@
1
- import { describe, it, expect } from 'vitest';
2
- import { EngramConfigSchema, defaultConfig } from '../config/schema.js';
3
- describe('EngramConfig schema', () => {
4
- it('accepts the default config', () => {
5
- expect(() => EngramConfigSchema.parse(defaultConfig)).not.toThrow();
6
- });
7
- it('requires embeddings.model', () => {
8
- const bad = { ...defaultConfig, embeddings: { provider: 'ollama' } };
9
- expect(() => EngramConfigSchema.parse(bad)).toThrow();
10
- });
11
- });
12
- describe('EngramConfig propertyExtraction', () => {
13
- it('default config has property extraction disabled (calling agent provides title/tags)', () => {
14
- expect(defaultConfig.propertyExtraction.enabled).toBe(false);
15
- expect(defaultConfig.propertyExtraction.model).toBe('llama3.2:3b'); // model still set for opt-in case
16
- });
17
- it('parses a config that enables property extraction', () => {
18
- const cfg = {
19
- ...defaultConfig,
20
- propertyExtraction: { ...defaultConfig.propertyExtraction, enabled: true },
21
- };
22
- expect(() => EngramConfigSchema.parse(cfg)).not.toThrow();
23
- });
24
- });
25
- //# sourceMappingURL=config.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"config.test.js","sourceRoot":"","sources":["../../src/tests/config.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAExE,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;IACnC,EAAE,CAAC,4BAA4B,EAAE,GAAG,EAAE;QACpC,MAAM,CAAC,GAAG,EAAE,CAAC,kBAAkB,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;IACtE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2BAA2B,EAAE,GAAG,EAAE;QACnC,MAAM,GAAG,GAAG,EAAE,GAAG,aAAa,EAAE,UAAU,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,CAAC;QACrE,MAAM,CAAC,GAAG,EAAE,CAAC,kBAAkB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;IACxD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,iCAAiC,EAAE,GAAG,EAAE;IAC/C,EAAE,CAAC,qFAAqF,EAAE,GAAG,EAAE;QAC7F,MAAM,CAAC,aAAa,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC7D,MAAM,CAAC,aAAa,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,kCAAkC;IACxG,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kDAAkD,EAAE,GAAG,EAAE;QAC1D,MAAM,GAAG,GAAG;YACV,GAAG,aAAa;YAChB,kBAAkB,EAAE,EAAE,GAAG,aAAa,CAAC,kBAAkB,EAAE,OAAO,EAAE,IAAI,EAAE;SAC3E,CAAC;QACF,MAAM,CAAC,GAAG,EAAE,CAAC,kBAAkB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;IAC5D,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=db.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"db.test.d.ts","sourceRoot":"","sources":["../../src/tests/db.test.ts"],"names":[],"mappings":""}
@@ -1,73 +0,0 @@
1
- import { describe, it, expect, beforeEach, afterEach } from 'vitest';
2
- import fs from 'fs';
3
- import os from 'os';
4
- import path from 'path';
5
- import { initDb, getDb, closeDb } from '../db/index.js';
6
- describe('db migrations', () => {
7
- let tmpDir;
8
- beforeEach(() => {
9
- tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), 'engram-test-'));
10
- initDb(tmpDir);
11
- });
12
- afterEach(() => {
13
- closeDb();
14
- fs.rmSync(tmpDir, { recursive: true, force: true });
15
- });
16
- it('creates the memories table', () => {
17
- const row = getDb()
18
- .prepare("SELECT name FROM sqlite_master WHERE type='table' AND name='memories'")
19
- .get();
20
- expect(row).toBeDefined();
21
- });
22
- it('creates the FTS5 table', () => {
23
- const row = getDb()
24
- .prepare("SELECT name FROM sqlite_master WHERE type='table' AND name='memories_fts'")
25
- .get();
26
- expect(row).toBeDefined();
27
- });
28
- it('records schema version up to latest', () => {
29
- const row = getDb().prepare('SELECT MAX(version) as v FROM schema_version').get();
30
- expect(row.v).toBe(7); // v7 adds poll_count to ingest_jobs for exponential backoff hints
31
- });
32
- it('creates the ops_log + tombstones + device_identity tables at v4', () => {
33
- const opsLog = getDb()
34
- .prepare("SELECT name FROM sqlite_master WHERE type='table' AND name='ops_log'")
35
- .get();
36
- const tombstones = getDb()
37
- .prepare("SELECT name FROM sqlite_master WHERE type='table' AND name='tombstones'")
38
- .get();
39
- const deviceIdentity = getDb()
40
- .prepare("SELECT name FROM sqlite_master WHERE type='table' AND name='device_identity'")
41
- .get();
42
- expect(opsLog).toBeDefined();
43
- expect(tombstones).toBeDefined();
44
- expect(deviceIdentity).toBeDefined();
45
- });
46
- it('creates the watched_sources table at v2', () => {
47
- const row = getDb()
48
- .prepare("SELECT name FROM sqlite_master WHERE type='table' AND name='watched_sources'")
49
- .get();
50
- expect(row).toBeDefined();
51
- });
52
- it('creates the saved_views and settings tables at v3', () => {
53
- const views = getDb()
54
- .prepare("SELECT name FROM sqlite_master WHERE type='table' AND name='saved_views'")
55
- .get();
56
- const settings = getDb()
57
- .prepare("SELECT name FROM sqlite_master WHERE type='table' AND name='settings'")
58
- .get();
59
- expect(views).toBeDefined();
60
- expect(settings).toBeDefined();
61
- });
62
- it('creates the recovery_shards + snapshot_log tables at v5', () => {
63
- const shards = getDb()
64
- .prepare("SELECT name FROM sqlite_master WHERE type='table' AND name='recovery_shards'")
65
- .get();
66
- const snapLog = getDb()
67
- .prepare("SELECT name FROM sqlite_master WHERE type='table' AND name='snapshot_log'")
68
- .get();
69
- expect(shards).toBeDefined();
70
- expect(snapLog).toBeDefined();
71
- });
72
- });
73
- //# sourceMappingURL=db.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"db.test.js","sourceRoot":"","sources":["../../src/tests/db.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=embeddings-providers.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"embeddings-providers.test.d.ts","sourceRoot":"","sources":["../../src/tests/embeddings-providers.test.ts"],"names":[],"mappings":""}
@@ -1,62 +0,0 @@
1
- import { describe, it, expect } from 'vitest';
2
- import { embed } from '../embeddings/index.js';
3
- describe('embeddings provider dispatch', () => {
4
- it('routes to Ollama', async () => {
5
- const config = {
6
- provider: 'ollama',
7
- baseUrl: 'http://localhost:11434',
8
- model: 'nomic-embed-text',
9
- dimensions: 768,
10
- };
11
- const vec = await embed('hello', config);
12
- expect(vec.length).toBe(768);
13
- }, 30_000);
14
- it('rejects voyage without apiKey', async () => {
15
- await expect(embed('hello', {
16
- provider: 'voyage',
17
- model: 'voyage-3-large',
18
- dimensions: 1024,
19
- })).rejects.toThrow(/apiKey/);
20
- });
21
- it('rejects openai without apiKey', async () => {
22
- await expect(embed('hello', {
23
- provider: 'openai',
24
- model: 'text-embedding-3-small',
25
- dimensions: 1536,
26
- })).rejects.toThrow(/apiKey/);
27
- });
28
- it('rejects engram without apiKey', async () => {
29
- await expect(embed('hello', {
30
- provider: 'engram',
31
- model: 'engram-base',
32
- dimensions: 1024,
33
- })).rejects.toThrow(/apiKey/);
34
- });
35
- it('rejects openai-compatible without baseUrl', async () => {
36
- await expect(embed('hello', {
37
- provider: 'openai-compatible',
38
- model: 'my-model',
39
- dimensions: 768,
40
- })).rejects.toThrow(/baseUrl/);
41
- });
42
- // Voyage/OpenAI real-API tests are run manually when VOYAGE_API_KEY / OPENAI_API_KEY are set.
43
- it.skipIf(!process.env.VOYAGE_API_KEY)('real Voyage call returns expected dim', async () => {
44
- const vec = await embed('Hello world', {
45
- provider: 'voyage',
46
- model: 'voyage-3-large',
47
- apiKey: process.env.VOYAGE_API_KEY,
48
- dimensions: 1024,
49
- });
50
- expect(vec.length).toBe(1024);
51
- }, 20_000);
52
- it.skipIf(!process.env.OPENAI_API_KEY)('real OpenAI call returns expected dim', async () => {
53
- const vec = await embed('Hello world', {
54
- provider: 'openai',
55
- model: 'text-embedding-3-small',
56
- apiKey: process.env.OPENAI_API_KEY,
57
- dimensions: 1536,
58
- });
59
- expect(vec.length).toBe(1536);
60
- }, 20_000);
61
- });
62
- //# sourceMappingURL=embeddings-providers.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"embeddings-providers.test.js","sourceRoot":"","sources":["../../src/tests/embeddings-providers.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=embeddings.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"embeddings.test.d.ts","sourceRoot":"","sources":["../../src/tests/embeddings.test.ts"],"names":[],"mappings":""}
@@ -1,22 +0,0 @@
1
- import { describe, it, expect } from 'vitest';
2
- import { embed, cosineSimilarity } from '../embeddings/index.js';
3
- const config = {
4
- provider: 'ollama',
5
- baseUrl: 'http://localhost:11434',
6
- model: 'nomic-embed-text',
7
- dimensions: 768,
8
- };
9
- describe('embeddings (real Ollama)', () => {
10
- it('embeds a short string to a 768-dim vector', async () => {
11
- const vec = await embed('hello world', config);
12
- expect(vec).toBeInstanceOf(Float32Array);
13
- expect(vec.length).toBe(768);
14
- });
15
- it('similar texts have high cosine similarity', async () => {
16
- const a = await embed('I love programming', config);
17
- const b = await embed('Coding is my passion', config);
18
- const c = await embed('The weather is nice', config);
19
- expect(cosineSimilarity(a, b)).toBeGreaterThan(cosineSimilarity(a, c));
20
- });
21
- });
22
- //# sourceMappingURL=embeddings.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"embeddings.test.js","sourceRoot":"","sources":["../../src/tests/embeddings.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAEjE,MAAM,MAAM,GAAG;IACb,QAAQ,EAAE,QAAiB;IAC3B,OAAO,EAAE,wBAAwB;IACjC,KAAK,EAAE,kBAAkB;IACzB,UAAU,EAAE,GAAG;CAChB,CAAC;AAEF,QAAQ,CAAC,0BAA0B,EAAE,GAAG,EAAE;IACxC,EAAE,CAAC,2CAA2C,EAAE,KAAK,IAAI,EAAE;QACzD,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;QAC/C,MAAM,CAAC,GAAG,CAAC,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC;QACzC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC/B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2CAA2C,EAAE,KAAK,IAAI,EAAE;QACzD,MAAM,CAAC,GAAG,MAAM,KAAK,CAAC,oBAAoB,EAAE,MAAM,CAAC,CAAC;QACpD,MAAM,CAAC,GAAG,MAAM,KAAK,CAAC,sBAAsB,EAAE,MAAM,CAAC,CAAC;QACtD,MAAM,CAAC,GAAG,MAAM,KAAK,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;QACrD,MAAM,CAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACzE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=integrations-api.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"integrations-api.test.d.ts","sourceRoot":"","sources":["../../src/tests/integrations-api.test.ts"],"names":[],"mappings":""}