@romandp/context-memory-mcp 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (91) hide show
  1. package/README.md +454 -0
  2. package/bin/mcp-memory.js +306 -0
  3. package/dist/config/paths.d.ts +10 -0
  4. package/dist/config/paths.d.ts.map +1 -0
  5. package/dist/config/paths.js +41 -0
  6. package/dist/config/paths.js.map +1 -0
  7. package/dist/db/init.d.ts +6 -0
  8. package/dist/db/init.d.ts.map +1 -0
  9. package/dist/db/init.js +37 -0
  10. package/dist/db/init.js.map +1 -0
  11. package/dist/db/migrations/runner.d.ts +9 -0
  12. package/dist/db/migrations/runner.d.ts.map +1 -0
  13. package/dist/db/migrations/runner.js +285 -0
  14. package/dist/db/migrations/runner.js.map +1 -0
  15. package/dist/db/schema.d.ts +51 -0
  16. package/dist/db/schema.d.ts.map +1 -0
  17. package/dist/db/schema.js +496 -0
  18. package/dist/db/schema.js.map +1 -0
  19. package/dist/http/routes.d.ts +3 -0
  20. package/dist/http/routes.d.ts.map +1 -0
  21. package/dist/http/routes.js +968 -0
  22. package/dist/http/routes.js.map +1 -0
  23. package/dist/http/server.d.ts +5 -0
  24. package/dist/http/server.d.ts.map +1 -0
  25. package/dist/http/server.js +45 -0
  26. package/dist/http/server.js.map +1 -0
  27. package/dist/http/swagger.d.ts +2 -0
  28. package/dist/http/swagger.d.ts.map +1 -0
  29. package/dist/http/swagger.js +101 -0
  30. package/dist/http/swagger.js.map +1 -0
  31. package/dist/index.d.ts +2 -0
  32. package/dist/index.d.ts.map +1 -0
  33. package/dist/index.js +139 -0
  34. package/dist/index.js.map +1 -0
  35. package/dist/memory/budget.d.ts +22 -0
  36. package/dist/memory/budget.d.ts.map +1 -0
  37. package/dist/memory/budget.js +51 -0
  38. package/dist/memory/budget.js.map +1 -0
  39. package/dist/memory/facts.d.ts +3 -0
  40. package/dist/memory/facts.d.ts.map +1 -0
  41. package/dist/memory/facts.js +63 -0
  42. package/dist/memory/facts.js.map +1 -0
  43. package/dist/memory/rebuild.d.ts +4 -0
  44. package/dist/memory/rebuild.d.ts.map +1 -0
  45. package/dist/memory/rebuild.js +31 -0
  46. package/dist/memory/rebuild.js.map +1 -0
  47. package/dist/memory/response.d.ts +11 -0
  48. package/dist/memory/response.d.ts.map +1 -0
  49. package/dist/memory/response.js +20 -0
  50. package/dist/memory/response.js.map +1 -0
  51. package/dist/memory/summary.d.ts +3 -0
  52. package/dist/memory/summary.d.ts.map +1 -0
  53. package/dist/memory/summary.js +67 -0
  54. package/dist/memory/summary.js.map +1 -0
  55. package/dist/memory/toon.d.ts +20 -0
  56. package/dist/memory/toon.d.ts.map +1 -0
  57. package/dist/memory/toon.js +102 -0
  58. package/dist/memory/toon.js.map +1 -0
  59. package/dist/memory/view.d.ts +4 -0
  60. package/dist/memory/view.d.ts.map +1 -0
  61. package/dist/memory/view.js +7 -0
  62. package/dist/memory/view.js.map +1 -0
  63. package/dist/server/setup.d.ts +9 -0
  64. package/dist/server/setup.d.ts.map +1 -0
  65. package/dist/server/setup.js +291 -0
  66. package/dist/server/setup.js.map +1 -0
  67. package/dist/tools/audit.d.ts +2 -0
  68. package/dist/tools/audit.d.ts.map +1 -0
  69. package/dist/tools/audit.js +22 -0
  70. package/dist/tools/audit.js.map +1 -0
  71. package/dist/tools/context.d.ts +5 -0
  72. package/dist/tools/context.d.ts.map +1 -0
  73. package/dist/tools/context.js +104 -0
  74. package/dist/tools/context.js.map +1 -0
  75. package/dist/tools/entry.d.ts +9 -0
  76. package/dist/tools/entry.d.ts.map +1 -0
  77. package/dist/tools/entry.js +214 -0
  78. package/dist/tools/entry.js.map +1 -0
  79. package/dist/tools/project.d.ts +4 -0
  80. package/dist/tools/project.d.ts.map +1 -0
  81. package/dist/tools/project.js +54 -0
  82. package/dist/tools/project.js.map +1 -0
  83. package/dist/tools/task.d.ts +4 -0
  84. package/dist/tools/task.d.ts.map +1 -0
  85. package/dist/tools/task.js +49 -0
  86. package/dist/tools/task.js.map +1 -0
  87. package/dist/types/context.d.ts +139 -0
  88. package/dist/types/context.d.ts.map +1 -0
  89. package/dist/types/context.js +2 -0
  90. package/dist/types/context.js.map +1 -0
  91. package/package.json +68 -0
@@ -0,0 +1,496 @@
1
+ import { getDatabase } from './init.js';
2
+ import { toFtsQuery } from './migrations/runner.js';
3
+ function parsePagination(params) {
4
+ const limit = params.limit && params.limit > 0 ? Math.min(params.limit, 200) : 0;
5
+ const page = params.page && params.page > 0 ? params.page : 0;
6
+ return { limit, offset: limit > 0 ? (page - 1) * limit : 0 };
7
+ }
8
+ // ---- PROJECTS ----
9
+ export function createProject(project) {
10
+ const db = getDatabase();
11
+ db.prepare(`
12
+ INSERT INTO projects (id, name, description, status, created_at, updated_at)
13
+ VALUES (?, ?, ?, ?, ?, ?)
14
+ `).run(project.id, project.name, project.description || null, project.status, project.created_at, project.updated_at);
15
+ }
16
+ export function getProject(id) {
17
+ const row = getDatabase().prepare('SELECT * FROM projects WHERE id = ?').get(id);
18
+ return row || null;
19
+ }
20
+ export function getAllProjects(params) {
21
+ const { limit, offset } = parsePagination(params || {});
22
+ const db = getDatabase();
23
+ const total = db.prepare('SELECT COUNT(*) as count FROM projects').get().count;
24
+ if (!limit) {
25
+ const data = db.prepare('SELECT * FROM projects ORDER BY created_at DESC').all();
26
+ return { data, total };
27
+ }
28
+ const data = db.prepare('SELECT * FROM projects ORDER BY created_at DESC LIMIT ? OFFSET ?').all(limit, offset);
29
+ return { data, total };
30
+ }
31
+ export function updateProject(id, updates) {
32
+ const existing = getProject(id);
33
+ if (!existing)
34
+ throw new Error(`Project ${id} not found`);
35
+ const merged = { ...existing, ...updates, id, updated_at: new Date().toISOString() };
36
+ getDatabase().prepare(`
37
+ UPDATE projects SET name=?, description=?, status=?, updated_at=? WHERE id=?
38
+ `).run(merged.name, merged.description || null, merged.status, merged.updated_at, id);
39
+ }
40
+ export function deleteProject(id) {
41
+ getDatabase().prepare('DELETE FROM projects WHERE id = ?').run(id);
42
+ }
43
+ // ---- SDD ENTRIES ----
44
+ export function createEntry(entry) {
45
+ getDatabase().prepare(`
46
+ INSERT INTO sdd_entries (id, project_id, section, title, content, status, parent_id, metadata, created_at, updated_at)
47
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
48
+ `).run(entry.id, entry.project_id, entry.section, entry.title, entry.content, entry.status, entry.parent_id || null, entry.metadata ? JSON.stringify(entry.metadata) : null, entry.created_at, entry.updated_at);
49
+ }
50
+ export function getEntry(id) {
51
+ const row = getDatabase().prepare('SELECT * FROM sdd_entries WHERE id = ?').get(id);
52
+ if (!row)
53
+ return null;
54
+ return { ...row, metadata: row.metadata ? JSON.parse(row.metadata) : undefined };
55
+ }
56
+ export function getProjectEntries(projectId, section, paramsPg) {
57
+ const { limit, offset } = parsePagination(paramsPg || {});
58
+ const db = getDatabase();
59
+ let countSql = 'SELECT COUNT(*) as count FROM sdd_entries WHERE project_id = ?';
60
+ let dataSql = 'SELECT * FROM sdd_entries WHERE project_id = ?';
61
+ const countParams = [projectId];
62
+ const dataParams = [projectId];
63
+ if (section) {
64
+ countSql += ' AND section = ?';
65
+ dataSql += ' AND section = ?';
66
+ countParams.push(section);
67
+ dataParams.push(section);
68
+ }
69
+ const total = db.prepare(countSql).get(...countParams).count;
70
+ dataSql += ' ORDER BY created_at ASC';
71
+ if (limit) {
72
+ dataSql += ' LIMIT ? OFFSET ?';
73
+ dataParams.push(limit, offset);
74
+ }
75
+ const rows = db.prepare(dataSql).all(...dataParams);
76
+ const data = rows.map(r => ({ ...r, metadata: r.metadata ? JSON.parse(r.metadata) : undefined }));
77
+ return { data, total };
78
+ }
79
+ export function getAllEntries(paramsPg) {
80
+ const { limit, offset } = parsePagination(paramsPg || {});
81
+ const db = getDatabase();
82
+ const total = db.prepare('SELECT COUNT(*) as count FROM sdd_entries').get().count;
83
+ let sql = 'SELECT * FROM sdd_entries ORDER BY created_at ASC';
84
+ const params = [];
85
+ if (limit) {
86
+ sql += ' LIMIT ? OFFSET ?';
87
+ params.push(limit, offset);
88
+ }
89
+ const rows = db.prepare(sql).all(...params);
90
+ const data = rows.map(r => ({ ...r, metadata: r.metadata ? JSON.parse(r.metadata) : undefined }));
91
+ return { data, total };
92
+ }
93
+ export function updateEntry(id, updates) {
94
+ const existing = getEntry(id);
95
+ if (!existing)
96
+ throw new Error(`Entry ${id} not found`);
97
+ const merged = { ...existing, ...updates, id, updated_at: new Date().toISOString() };
98
+ getDatabase().prepare(`
99
+ UPDATE sdd_entries SET project_id=?, section=?, title=?, content=?, status=?, parent_id=?, metadata=?, updated_at=? WHERE id=?
100
+ `).run(merged.project_id, merged.section, merged.title, merged.content, merged.status, merged.parent_id || null, merged.metadata ? JSON.stringify(merged.metadata) : null, merged.updated_at, id);
101
+ }
102
+ export function deleteEntry(id) {
103
+ getDatabase().prepare('DELETE FROM sdd_entries WHERE id = ?').run(id);
104
+ }
105
+ export function searchEntries(projectId, query, paramsPg) {
106
+ const { limit, offset } = parsePagination(paramsPg || {});
107
+ const db = getDatabase();
108
+ let ftsQuery;
109
+ try {
110
+ ftsQuery = toFtsQuery(query);
111
+ }
112
+ catch {
113
+ ftsQuery = query;
114
+ }
115
+ const countResult = db.prepare(`
116
+ SELECT COUNT(*) as count FROM fts_entries f
117
+ JOIN sdd_entries s ON s.id = f.entry_id
118
+ WHERE s.project_id = ? AND f.fts_entries MATCH ?
119
+ `).get(projectId, ftsQuery);
120
+ const total = countResult?.count ?? 0;
121
+ let sql = `
122
+ SELECT s.* FROM sdd_entries s
123
+ JOIN fts_entries f ON f.entry_id = s.id
124
+ WHERE s.project_id = ? AND f.fts_entries MATCH ?
125
+ ORDER BY rank
126
+ `;
127
+ const params = [projectId, ftsQuery];
128
+ if (limit) {
129
+ sql += ' LIMIT ? OFFSET ?';
130
+ params.push(limit, offset);
131
+ }
132
+ const rows = db.prepare(sql).all(...params);
133
+ const data = rows.map(r => ({ ...r, metadata: r.metadata ? JSON.parse(r.metadata) : undefined }));
134
+ return { data, total };
135
+ }
136
+ export function searchAllEntries(query, paramsPg) {
137
+ const { limit, offset } = parsePagination(paramsPg || {});
138
+ const db = getDatabase();
139
+ let ftsQuery;
140
+ try {
141
+ ftsQuery = toFtsQuery(query);
142
+ }
143
+ catch {
144
+ ftsQuery = query;
145
+ }
146
+ const countResult = db.prepare(`
147
+ SELECT COUNT(*) as count FROM fts_entries f
148
+ JOIN sdd_entries s ON s.id = f.entry_id
149
+ WHERE f.fts_entries MATCH ?
150
+ `).get(ftsQuery);
151
+ const total = countResult?.count ?? 0;
152
+ let sql = `
153
+ SELECT s.* FROM sdd_entries s
154
+ JOIN fts_entries f ON f.entry_id = s.id
155
+ WHERE f.fts_entries MATCH ?
156
+ ORDER BY rank
157
+ `;
158
+ const params = [ftsQuery];
159
+ if (limit) {
160
+ sql += ' LIMIT ? OFFSET ?';
161
+ params.push(limit, offset);
162
+ }
163
+ const rows = db.prepare(sql).all(...params);
164
+ const data = rows.map(r => ({ ...r, metadata: r.metadata ? JSON.parse(r.metadata) : undefined }));
165
+ return { data, total };
166
+ }
167
+ // ---- TASKS ----
168
+ export function createTask(task) {
169
+ getDatabase().prepare(`
170
+ INSERT INTO tasks (id, project_id, sdd_entry_id, title, description, status, priority, created_at, updated_at)
171
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)
172
+ `).run(task.id, task.project_id, task.sdd_entry_id || null, task.title, task.description || null, task.status, task.priority, task.created_at, task.updated_at);
173
+ }
174
+ export function getTask(id) {
175
+ const row = getDatabase().prepare('SELECT * FROM tasks WHERE id = ?').get(id);
176
+ return row || null;
177
+ }
178
+ export function getProjectTasks(projectId, entryId, paramsPg) {
179
+ const { limit, offset } = parsePagination(paramsPg || {});
180
+ const db = getDatabase();
181
+ let countSql = 'SELECT COUNT(*) as count FROM tasks WHERE project_id = ?';
182
+ let dataSql = 'SELECT * FROM tasks WHERE project_id = ?';
183
+ const countParams = [projectId];
184
+ const dataParams = [projectId];
185
+ if (entryId) {
186
+ countSql += ' AND sdd_entry_id = ?';
187
+ dataSql += ' AND sdd_entry_id = ?';
188
+ countParams.push(entryId);
189
+ dataParams.push(entryId);
190
+ }
191
+ const total = db.prepare(countSql).get(...countParams).count;
192
+ dataSql += ' ORDER BY created_at ASC';
193
+ if (limit) {
194
+ dataSql += ' LIMIT ? OFFSET ?';
195
+ dataParams.push(limit, offset);
196
+ }
197
+ const data = db.prepare(dataSql).all(...dataParams);
198
+ return { data, total };
199
+ }
200
+ export function getTasksByEntry(entryId) {
201
+ return getDatabase().prepare('SELECT * FROM tasks WHERE sdd_entry_id = ? ORDER BY created_at ASC').all(entryId);
202
+ }
203
+ export function updateTask(id, updates) {
204
+ const existing = getTask(id);
205
+ if (!existing)
206
+ throw new Error(`Task ${id} not found`);
207
+ const merged = { ...existing, ...updates, id, updated_at: new Date().toISOString() };
208
+ getDatabase().prepare(`
209
+ UPDATE tasks SET project_id=?, sdd_entry_id=?, title=?, description=?, status=?, priority=?, updated_at=? WHERE id=?
210
+ `).run(merged.project_id, merged.sdd_entry_id || null, merged.title, merged.description || null, merged.status, merged.priority, merged.updated_at, id);
211
+ }
212
+ export function deleteTask(id) {
213
+ getDatabase().prepare('DELETE FROM tasks WHERE id = ?').run(id);
214
+ }
215
+ // ---- AUDIT LOG ----
216
+ export function getAuditLog(filters, paramsPg) {
217
+ const { limit, offset } = parsePagination(paramsPg || {});
218
+ const db = getDatabase();
219
+ let countSql = 'SELECT COUNT(*) as count FROM audit_log WHERE 1=1';
220
+ let dataSql = 'SELECT * FROM audit_log WHERE 1=1';
221
+ const countParams = [];
222
+ const dataParams = [];
223
+ if (filters?.entity_type) {
224
+ countSql += ' AND entity_type = ?';
225
+ dataSql += ' AND entity_type = ?';
226
+ countParams.push(filters.entity_type);
227
+ dataParams.push(filters.entity_type);
228
+ }
229
+ if (filters?.entity_id) {
230
+ countSql += ' AND entity_id = ?';
231
+ dataSql += ' AND entity_id = ?';
232
+ countParams.push(filters.entity_id);
233
+ dataParams.push(filters.entity_id);
234
+ }
235
+ if (filters?.project_id) {
236
+ countSql += ' AND project_id = ?';
237
+ dataSql += ' AND project_id = ?';
238
+ countParams.push(filters.project_id);
239
+ dataParams.push(filters.project_id);
240
+ }
241
+ const total = db.prepare(countSql).get(...countParams).count;
242
+ dataSql += ' ORDER BY timestamp DESC';
243
+ if (limit) {
244
+ dataSql += ' LIMIT ? OFFSET ?';
245
+ dataParams.push(limit, offset);
246
+ }
247
+ const data = db.prepare(dataSql).all(...dataParams);
248
+ return { data, total };
249
+ }
250
+ // ---- DESIGN DECISIONS ----
251
+ export function addDesignDecision(dd) {
252
+ getDatabase().prepare(`
253
+ INSERT INTO design_decisions (id, entry_id, decision, rationale, alternatives_considered, created_at)
254
+ VALUES (?, ?, ?, ?, ?, ?)
255
+ `).run(dd.id, dd.entry_id, dd.decision, dd.rationale, dd.alternatives_considered || null, dd.created_at);
256
+ }
257
+ export function getDesignDecisions(entryId) {
258
+ return getDatabase().prepare('SELECT * FROM design_decisions WHERE entry_id = ? ORDER BY created_at ASC').all(entryId);
259
+ }
260
+ // ---- ENTRY RELATIONSHIPS ----
261
+ export function addEntryRelationship(rel) {
262
+ getDatabase().prepare(`
263
+ INSERT INTO entry_relationships (id, source_entry_id, target_entry_id, relationship_type, created_at)
264
+ VALUES (?, ?, ?, ?, ?)
265
+ `).run(rel.id, rel.source_entry_id, rel.target_entry_id, rel.relationship_type, rel.created_at);
266
+ }
267
+ export function getEntryRelationships(entryId) {
268
+ return getDatabase().prepare(`
269
+ SELECT * FROM entry_relationships WHERE source_entry_id = ? OR target_entry_id = ? ORDER BY created_at ASC
270
+ `).all(entryId, entryId);
271
+ }
272
+ // ---- ENTRY CONTEXT ----
273
+ export function getEntryContext(entryId) {
274
+ const entry = getEntry(entryId);
275
+ if (!entry)
276
+ return null;
277
+ const decisions = getDesignDecisions(entryId);
278
+ const relationships = getEntryRelationships(entryId);
279
+ return { entry, decisions, relationships };
280
+ }
281
+ // ---- COMPACT MEMORY ----
282
+ export function upsertEntrySummary(summary) {
283
+ const db = getDatabase();
284
+ db.prepare(`
285
+ INSERT INTO entry_summaries (entry_id, summary_short, summary_dense, keywords, source_hash, version, updated_at)
286
+ VALUES (?, ?, ?, ?, ?, ?, ?)
287
+ ON CONFLICT(entry_id) DO UPDATE SET
288
+ summary_short = excluded.summary_short,
289
+ summary_dense = excluded.summary_dense,
290
+ keywords = excluded.keywords,
291
+ source_hash = excluded.source_hash,
292
+ version = excluded.version,
293
+ updated_at = excluded.updated_at
294
+ `).run(summary.entry_id, summary.summary_short, summary.summary_dense, JSON.stringify(summary.keywords), summary.source_hash, summary.version, summary.updated_at);
295
+ const entry = getEntry(summary.entry_id);
296
+ if (entry) {
297
+ db.prepare('DELETE FROM fts_entry_summaries WHERE entry_id = ?').run(summary.entry_id);
298
+ db.prepare(`
299
+ INSERT INTO fts_entry_summaries (entry_id, project_id, summary_short, summary_dense, keywords)
300
+ VALUES (?, ?, ?, ?, ?)
301
+ `).run(summary.entry_id, entry.project_id, summary.summary_short, summary.summary_dense, summary.keywords.join(' '));
302
+ }
303
+ }
304
+ export function getEntrySummary(entryId) {
305
+ const row = getDatabase().prepare('SELECT * FROM entry_summaries WHERE entry_id = ?').get(entryId);
306
+ if (!row)
307
+ return null;
308
+ return { ...row, keywords: row.keywords ? JSON.parse(row.keywords) : [] };
309
+ }
310
+ export function deleteEntrySummary(entryId) {
311
+ const db = getDatabase();
312
+ db.prepare('DELETE FROM entry_summaries WHERE entry_id = ?').run(entryId);
313
+ db.prepare('DELETE FROM fts_entry_summaries WHERE entry_id = ?').run(entryId);
314
+ }
315
+ export function replaceEntryFacts(entryId, facts) {
316
+ const db = getDatabase();
317
+ const tx = db.transaction((nextFacts) => {
318
+ db.prepare('DELETE FROM memory_facts WHERE entry_id = ?').run(entryId);
319
+ const stmt = db.prepare(`
320
+ INSERT INTO memory_facts (id, project_id, entry_id, kind, subject, predicate, object, weight, source, created_at)
321
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
322
+ `);
323
+ for (const fact of nextFacts) {
324
+ stmt.run(fact.id, fact.project_id, fact.entry_id || null, fact.kind, fact.subject, fact.predicate, fact.object, fact.weight, fact.source, fact.created_at);
325
+ }
326
+ });
327
+ tx(facts);
328
+ }
329
+ export function listMemoryFacts(filters, paramsPg) {
330
+ const { limit, offset } = parsePagination(paramsPg || {});
331
+ const db = getDatabase();
332
+ let countSql = 'SELECT COUNT(*) as count FROM memory_facts WHERE 1=1';
333
+ let dataSql = 'SELECT * FROM memory_facts WHERE 1=1';
334
+ const countParams = [];
335
+ const dataParams = [];
336
+ if (filters?.project_id) {
337
+ countSql += ' AND project_id = ?';
338
+ dataSql += ' AND project_id = ?';
339
+ countParams.push(filters.project_id);
340
+ dataParams.push(filters.project_id);
341
+ }
342
+ if (filters?.entry_id) {
343
+ countSql += ' AND entry_id = ?';
344
+ dataSql += ' AND entry_id = ?';
345
+ countParams.push(filters.entry_id);
346
+ dataParams.push(filters.entry_id);
347
+ }
348
+ if (filters?.kind) {
349
+ countSql += ' AND kind = ?';
350
+ dataSql += ' AND kind = ?';
351
+ countParams.push(filters.kind);
352
+ dataParams.push(filters.kind);
353
+ }
354
+ const total = db.prepare(countSql).get(...countParams).count;
355
+ dataSql += ' ORDER BY created_at ASC';
356
+ if (limit) {
357
+ dataSql += ' LIMIT ? OFFSET ?';
358
+ dataParams.push(limit, offset);
359
+ }
360
+ const data = db.prepare(dataSql).all(...dataParams);
361
+ return { data, total };
362
+ }
363
+ function fallbackSummary(entry) {
364
+ return {
365
+ entry_id: entry.id,
366
+ summary_short: entry.title,
367
+ summary_dense: `sec:${entry.section}\nst:${entry.status}\ntitle:${entry.title}`,
368
+ keywords: [],
369
+ source_hash: '',
370
+ version: 1,
371
+ updated_at: entry.updated_at,
372
+ };
373
+ }
374
+ export function getCompactEntry(entryId) {
375
+ const entry = getEntry(entryId);
376
+ if (!entry)
377
+ return null;
378
+ const summary = getEntrySummary(entryId) || fallbackSummary(entry);
379
+ return {
380
+ id: entry.id,
381
+ project_id: entry.project_id,
382
+ section: entry.section,
383
+ status: entry.status,
384
+ title: entry.title,
385
+ summary_short: summary.summary_short,
386
+ summary_dense: summary.summary_dense,
387
+ keywords: summary.keywords,
388
+ };
389
+ }
390
+ export function getCompactEntriesByIds(entryIds) {
391
+ return entryIds.map(id => getCompactEntry(id)).filter((entry) => entry !== null);
392
+ }
393
+ export function getCompactEntryContext(entryId) {
394
+ const entry = getCompactEntry(entryId);
395
+ if (!entry)
396
+ return null;
397
+ const decisions = getDesignDecisions(entryId);
398
+ const relationships = getEntryRelationships(entryId);
399
+ const { data: facts } = listMemoryFacts({ entry_id: entryId });
400
+ return { entry, decisions, relationships, facts };
401
+ }
402
+ export function searchCompactEntries(query, projectId, paramsPg) {
403
+ const { limit, offset } = parsePagination(paramsPg || {});
404
+ const db = getDatabase();
405
+ let ftsQuery;
406
+ try {
407
+ ftsQuery = toFtsQuery(query);
408
+ }
409
+ catch {
410
+ ftsQuery = query;
411
+ }
412
+ let countSql = 'SELECT COUNT(*) as count FROM fts_entry_summaries WHERE fts_entry_summaries MATCH ?';
413
+ let dataSql = `
414
+ SELECT entry_id FROM fts_entry_summaries
415
+ WHERE fts_entry_summaries MATCH ?
416
+ `;
417
+ const countParams = [ftsQuery];
418
+ const dataParams = [ftsQuery];
419
+ if (projectId) {
420
+ countSql += ' AND project_id = ?';
421
+ dataSql += ' AND project_id = ?';
422
+ countParams.push(projectId);
423
+ dataParams.push(projectId);
424
+ }
425
+ const total = db.prepare(countSql).get(...countParams).count;
426
+ dataSql += ' ORDER BY rank';
427
+ if (limit) {
428
+ dataSql += ' LIMIT ? OFFSET ?';
429
+ dataParams.push(limit, offset);
430
+ }
431
+ const rows = db.prepare(dataSql).all(...dataParams);
432
+ const data = rows.map(row => getCompactEntry(row.entry_id)).filter((entry) => entry !== null);
433
+ if (data.length > 0 || total > 0) {
434
+ return { total, data };
435
+ }
436
+ const base = projectId ? searchEntries(projectId, query, paramsPg) : searchAllEntries(query, paramsPg);
437
+ return {
438
+ total: base.total,
439
+ data: base.data.map(entry => getCompactEntry(entry.id) || {
440
+ id: entry.id,
441
+ project_id: entry.project_id,
442
+ section: entry.section,
443
+ status: entry.status,
444
+ title: entry.title,
445
+ summary_short: entry.title,
446
+ summary_dense: entry.content,
447
+ keywords: [],
448
+ }),
449
+ };
450
+ }
451
+ export function getProjectCompact(projectId, paramsPg) {
452
+ const project = getProject(projectId);
453
+ if (!project)
454
+ return null;
455
+ const { data: entries } = getProjectEntries(projectId, undefined, paramsPg?.entryLimit ? { page: 1, limit: paramsPg.entryLimit } : undefined);
456
+ const { data: tasks } = getProjectTasks(projectId, undefined, paramsPg?.taskLimit ? { page: 1, limit: paramsPg.taskLimit } : undefined);
457
+ const classifications = getClassifications('project', projectId);
458
+ return {
459
+ project,
460
+ entries: entries.map(entry => getCompactEntry(entry.id) || {
461
+ id: entry.id,
462
+ project_id: entry.project_id,
463
+ section: entry.section,
464
+ status: entry.status,
465
+ title: entry.title,
466
+ summary_short: entry.title,
467
+ summary_dense: entry.content,
468
+ keywords: [],
469
+ }),
470
+ tasks: tasks.map(task => ({
471
+ id: task.id,
472
+ project_id: task.project_id,
473
+ sdd_entry_id: task.sdd_entry_id,
474
+ title: task.title,
475
+ status: task.status,
476
+ priority: task.priority,
477
+ })),
478
+ classifications,
479
+ };
480
+ }
481
+ // ---- CLASSIFICATIONS ----
482
+ export function addClassification(c) {
483
+ getDatabase().prepare(`
484
+ INSERT INTO classifications (id, classifiable_type, classifiable_id, tag, confidence, created_at)
485
+ VALUES (?, ?, ?, ?, ?, ?)
486
+ `).run(c.id, c.classifiable_type, c.classifiable_id, c.tag, c.confidence, c.created_at);
487
+ }
488
+ export function getClassifications(type, id) {
489
+ return getDatabase().prepare(`
490
+ SELECT * FROM classifications WHERE classifiable_type = ? AND classifiable_id = ? ORDER BY confidence DESC
491
+ `).all(type, id);
492
+ }
493
+ export function removeClassification(id) {
494
+ getDatabase().prepare('DELETE FROM classifications WHERE id = ?').run(id);
495
+ }
496
+ //# sourceMappingURL=schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/db/schema.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ declare const router: import("express-serve-static-core").Router;
2
+ export default router;
3
+ //# sourceMappingURL=routes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../../src/http/routes.ts"],"names":[],"mappings":"AAmBA,QAAA,MAAM,MAAM,4CAAW,CAAC;AA45BxB,eAAe,MAAM,CAAC"}