@jafreck/lore 0.2.1 → 0.2.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 (134) hide show
  1. package/README.md +68 -17
  2. package/dist/cli.js +6 -6
  3. package/dist/cli.js.map +1 -1
  4. package/dist/index.d.ts +6 -6
  5. package/dist/index.d.ts.map +1 -1
  6. package/dist/index.js +3 -3
  7. package/dist/index.js.map +1 -1
  8. package/dist/indexer/db.d.ts +12 -11
  9. package/dist/indexer/db.d.ts.map +1 -1
  10. package/dist/indexer/db.js +22 -16
  11. package/dist/indexer/db.js.map +1 -1
  12. package/dist/indexer/ensure-python-deps.d.ts +1 -1
  13. package/dist/indexer/ensure-python-deps.js +1 -1
  14. package/dist/indexer/git-history.d.ts.map +1 -1
  15. package/dist/indexer/git-history.js +4 -4
  16. package/dist/indexer/git-history.js.map +1 -1
  17. package/dist/indexer/index.d.ts +3 -2
  18. package/dist/indexer/index.d.ts.map +1 -1
  19. package/dist/indexer/index.js +44 -16
  20. package/dist/indexer/index.js.map +1 -1
  21. package/dist/indexer/poller.d.ts +1 -1
  22. package/dist/indexer/poller.js +1 -1
  23. package/dist/indexer/watcher.d.ts +1 -1
  24. package/dist/indexer/watcher.js +1 -1
  25. package/dist/{kb-server → lore-server}/db.d.ts +76 -4
  26. package/dist/lore-server/db.d.ts.map +1 -0
  27. package/dist/{kb-server → lore-server}/db.js +219 -27
  28. package/dist/lore-server/db.js.map +1 -0
  29. package/dist/lore-server/server.d.ts +43 -0
  30. package/dist/lore-server/server.d.ts.map +1 -0
  31. package/dist/{kb-server → lore-server}/server.js +169 -46
  32. package/dist/lore-server/server.js.map +1 -0
  33. package/dist/{kb-server → lore-server}/tools/annotations.d.ts +2 -2
  34. package/dist/lore-server/tools/annotations.d.ts.map +1 -0
  35. package/dist/{kb-server → lore-server}/tools/annotations.js +2 -2
  36. package/dist/lore-server/tools/annotations.js.map +1 -0
  37. package/dist/{kb-server → lore-server}/tools/architecture.d.ts +2 -2
  38. package/dist/lore-server/tools/architecture.d.ts.map +1 -0
  39. package/dist/{kb-server → lore-server}/tools/architecture.js +2 -2
  40. package/dist/lore-server/tools/architecture.js.map +1 -0
  41. package/dist/lore-server/tools/blame.d.ts +159 -0
  42. package/dist/lore-server/tools/blame.d.ts.map +1 -0
  43. package/dist/lore-server/tools/blame.js +595 -0
  44. package/dist/lore-server/tools/blame.js.map +1 -0
  45. package/dist/{kb-server → lore-server}/tools/coverage.d.ts +2 -2
  46. package/dist/lore-server/tools/coverage.d.ts.map +1 -0
  47. package/dist/{kb-server → lore-server}/tools/coverage.js +2 -2
  48. package/dist/lore-server/tools/coverage.js.map +1 -0
  49. package/dist/{kb-server → lore-server}/tools/docs.d.ts +11 -3
  50. package/dist/lore-server/tools/docs.d.ts.map +1 -0
  51. package/dist/lore-server/tools/docs.js +243 -0
  52. package/dist/lore-server/tools/docs.js.map +1 -0
  53. package/dist/{kb-server → lore-server}/tools/graph.d.ts +40 -3
  54. package/dist/lore-server/tools/graph.d.ts.map +1 -0
  55. package/dist/{kb-server → lore-server}/tools/graph.js +122 -11
  56. package/dist/lore-server/tools/graph.js.map +1 -0
  57. package/dist/{kb-server → lore-server}/tools/history.d.ts +13 -6
  58. package/dist/lore-server/tools/history.d.ts.map +1 -0
  59. package/dist/{kb-server → lore-server}/tools/history.js +43 -10
  60. package/dist/lore-server/tools/history.js.map +1 -0
  61. package/dist/lore-server/tools/lookup.d.ts +75 -0
  62. package/dist/lore-server/tools/lookup.d.ts.map +1 -0
  63. package/dist/lore-server/tools/lookup.js +148 -0
  64. package/dist/lore-server/tools/lookup.js.map +1 -0
  65. package/dist/{kb-server → lore-server}/tools/metrics.d.ts +3 -3
  66. package/dist/lore-server/tools/metrics.d.ts.map +1 -0
  67. package/dist/{kb-server → lore-server}/tools/metrics.js +3 -3
  68. package/dist/lore-server/tools/metrics.js.map +1 -0
  69. package/dist/{kb-server → lore-server}/tools/notes.d.ts +16 -16
  70. package/dist/lore-server/tools/notes.d.ts.map +1 -0
  71. package/dist/{kb-server → lore-server}/tools/notes.js +21 -21
  72. package/dist/lore-server/tools/notes.js.map +1 -0
  73. package/dist/{kb-server → lore-server}/tools/routes.d.ts +2 -2
  74. package/dist/lore-server/tools/routes.d.ts.map +1 -0
  75. package/dist/{kb-server → lore-server}/tools/routes.js +2 -2
  76. package/dist/lore-server/tools/routes.js.map +1 -0
  77. package/dist/{kb-server → lore-server}/tools/search.d.ts +28 -3
  78. package/dist/lore-server/tools/search.d.ts.map +1 -0
  79. package/dist/{kb-server → lore-server}/tools/search.js +22 -2
  80. package/dist/lore-server/tools/search.js.map +1 -0
  81. package/dist/{kb-server → lore-server}/tools/snippet.d.ts +20 -4
  82. package/dist/lore-server/tools/snippet.d.ts.map +1 -0
  83. package/dist/lore-server/tools/snippet.js +116 -0
  84. package/dist/lore-server/tools/snippet.js.map +1 -0
  85. package/dist/{kb-server → lore-server}/tools/test-map.d.ts +2 -2
  86. package/dist/lore-server/tools/test-map.d.ts.map +1 -0
  87. package/dist/{kb-server → lore-server}/tools/test-map.js +2 -2
  88. package/dist/lore-server/tools/test-map.js.map +1 -0
  89. package/dist/{kb-server → lore-server}/tools/writeback.d.ts +2 -2
  90. package/dist/lore-server/tools/writeback.d.ts.map +1 -0
  91. package/dist/{kb-server → lore-server}/tools/writeback.js +3 -3
  92. package/dist/lore-server/tools/writeback.js.map +1 -0
  93. package/package.json +8 -8
  94. package/dist/kb-server/db.d.ts.map +0 -1
  95. package/dist/kb-server/db.js.map +0 -1
  96. package/dist/kb-server/server.d.ts +0 -43
  97. package/dist/kb-server/server.d.ts.map +0 -1
  98. package/dist/kb-server/server.js.map +0 -1
  99. package/dist/kb-server/tools/annotations.d.ts.map +0 -1
  100. package/dist/kb-server/tools/annotations.js.map +0 -1
  101. package/dist/kb-server/tools/architecture.d.ts.map +0 -1
  102. package/dist/kb-server/tools/architecture.js.map +0 -1
  103. package/dist/kb-server/tools/blame.d.ts +0 -67
  104. package/dist/kb-server/tools/blame.d.ts.map +0 -1
  105. package/dist/kb-server/tools/blame.js +0 -162
  106. package/dist/kb-server/tools/blame.js.map +0 -1
  107. package/dist/kb-server/tools/coverage.d.ts.map +0 -1
  108. package/dist/kb-server/tools/coverage.js.map +0 -1
  109. package/dist/kb-server/tools/docs.d.ts.map +0 -1
  110. package/dist/kb-server/tools/docs.js +0 -136
  111. package/dist/kb-server/tools/docs.js.map +0 -1
  112. package/dist/kb-server/tools/graph.d.ts.map +0 -1
  113. package/dist/kb-server/tools/graph.js.map +0 -1
  114. package/dist/kb-server/tools/history.d.ts.map +0 -1
  115. package/dist/kb-server/tools/history.js.map +0 -1
  116. package/dist/kb-server/tools/lookup.d.ts +0 -36
  117. package/dist/kb-server/tools/lookup.d.ts.map +0 -1
  118. package/dist/kb-server/tools/lookup.js +0 -46
  119. package/dist/kb-server/tools/lookup.js.map +0 -1
  120. package/dist/kb-server/tools/metrics.d.ts.map +0 -1
  121. package/dist/kb-server/tools/metrics.js.map +0 -1
  122. package/dist/kb-server/tools/notes.d.ts.map +0 -1
  123. package/dist/kb-server/tools/notes.js.map +0 -1
  124. package/dist/kb-server/tools/routes.d.ts.map +0 -1
  125. package/dist/kb-server/tools/routes.js.map +0 -1
  126. package/dist/kb-server/tools/search.d.ts.map +0 -1
  127. package/dist/kb-server/tools/search.js.map +0 -1
  128. package/dist/kb-server/tools/snippet.d.ts.map +0 -1
  129. package/dist/kb-server/tools/snippet.js +0 -49
  130. package/dist/kb-server/tools/snippet.js.map +0 -1
  131. package/dist/kb-server/tools/test-map.d.ts.map +0 -1
  132. package/dist/kb-server/tools/test-map.js.map +0 -1
  133. package/dist/kb-server/tools/writeback.d.ts.map +0 -1
  134. package/dist/kb-server/tools/writeback.js.map +0 -1
@@ -1,7 +1,7 @@
1
1
  /**
2
- * @module kb-server/db
2
+ * @module lore-server/db
3
3
  *
4
- * Read-only SQLite connection wrapper for the KB MCP server.
4
+ * Read-only SQLite connection wrapper for the Lore MCP server.
5
5
  * All MCP tool files use `openReadOnly()` to open the knowledge-base database.
6
6
  */
7
7
  import Database from 'better-sqlite3';
@@ -41,37 +41,169 @@ export function getSymbolById(db, id) {
41
41
  }
42
42
  return db.prepare('SELECT * FROM symbols WHERE id = ?').get(id);
43
43
  }
44
- /** Fetch all symbols whose name matches the given string (case-insensitive). */
45
- export function getSymbolsByName(db, name, branch) {
46
- const includeMetrics = hasSymbolMetricsTable(db);
47
- if (branch !== undefined) {
48
- return db
49
- .prepare(includeMetrics
50
- ? 'SELECT s.*, sm.line_count, sm.param_count, sm.cyclomatic, sm.max_nesting FROM symbols s JOIN files f ON s.file_id = f.id LEFT JOIN symbol_metrics sm ON sm.symbol_id = s.id WHERE s.name = ? COLLATE NOCASE AND f.branch = ?'
51
- : 'SELECT s.* FROM symbols s JOIN files f ON s.file_id = f.id WHERE s.name = ? COLLATE NOCASE AND f.branch = ?')
52
- .all(name, branch);
44
+ function normalizeSymbolLookupOptions(branchOrOptions) {
45
+ if (typeof branchOrOptions === 'string') {
46
+ return { branch: branchOrOptions };
47
+ }
48
+ return branchOrOptions ?? {};
49
+ }
50
+ /** List symbol range candidates with optional path/branch filters for disambiguation. */
51
+ export function listSymbolRangesByName(db, name, options = {}) {
52
+ const where = ['s.name = ? COLLATE NOCASE'];
53
+ const params = [name];
54
+ if (options.path !== undefined) {
55
+ where.push('f.path = ?');
56
+ params.push(options.path);
57
+ }
58
+ if (options.branch !== undefined) {
59
+ where.push('f.branch = ?');
60
+ params.push(options.branch);
53
61
  }
54
62
  return db
55
- .prepare(includeMetrics
56
- ? 'SELECT s.*, sm.line_count, sm.param_count, sm.cyclomatic, sm.max_nesting FROM symbols s LEFT JOIN symbol_metrics sm ON sm.symbol_id = s.id WHERE s.name = ? COLLATE NOCASE'
57
- : 'SELECT * FROM symbols WHERE name = ? COLLATE NOCASE')
58
- .all(name);
63
+ .prepare(`SELECT s.id AS symbol_id,
64
+ s.name AS symbol_name,
65
+ s.kind AS symbol_kind,
66
+ s.file_id,
67
+ f.path AS file_path,
68
+ f.branch,
69
+ s.start_line,
70
+ s.end_line
71
+ FROM symbols s
72
+ JOIN files f ON f.id = s.file_id
73
+ WHERE ${where.join(' AND ')}
74
+ ORDER BY f.path ASC, f.branch ASC, s.start_line ASC, s.end_line ASC, s.id ASC`)
75
+ .all(...params);
76
+ }
77
+ /**
78
+ * Resolve a symbol name to a concrete file and line range.
79
+ * Returns deterministic ambiguity details instead of selecting an arbitrary match.
80
+ */
81
+ export function resolveSymbolRangeByName(db, name, options = {}) {
82
+ const candidates = listSymbolRangesByName(db, name, options);
83
+ if (candidates.length === 1) {
84
+ const match = candidates[0];
85
+ if (!match) {
86
+ throw new Error('Expected a single symbol range candidate.');
87
+ }
88
+ return { outcome: 'resolved', match };
89
+ }
90
+ if (candidates.length === 0) {
91
+ return {
92
+ outcome: 'missing',
93
+ symbol: name,
94
+ path: options.path,
95
+ branch: options.branch,
96
+ };
97
+ }
98
+ return {
99
+ outcome: 'ambiguous',
100
+ symbol: name,
101
+ path: options.path,
102
+ branch: options.branch,
103
+ candidates,
104
+ };
105
+ }
106
+ function buildNameMatch(name, mode) {
107
+ if (mode === 'prefix') {
108
+ return { clause: 's.name LIKE ? COLLATE NOCASE', value: `${name}%` };
109
+ }
110
+ if (mode === 'contains') {
111
+ return { clause: 's.name LIKE ? COLLATE NOCASE', value: `%${name}%` };
112
+ }
113
+ return { clause: 's.name = ? COLLATE NOCASE', value: name };
59
114
  }
60
- /** Return all symbols, optionally limited to `limit` rows. */
61
- export function listSymbols(db, limit = 100, branch) {
115
+ function applySymbolFilters(where, params, options) {
116
+ if (options.branch !== undefined) {
117
+ where.push('f.branch = ?');
118
+ params.push(options.branch);
119
+ }
120
+ if (options.kind !== undefined) {
121
+ where.push('s.kind = ?');
122
+ params.push(options.kind);
123
+ }
124
+ if (options.pathPrefix !== undefined) {
125
+ where.push('f.path LIKE ?');
126
+ params.push(`${options.pathPrefix}%`);
127
+ }
128
+ if (options.language !== undefined) {
129
+ where.push('f.language = ?');
130
+ params.push(options.language);
131
+ }
132
+ }
133
+ export function getSymbolsByName(db, name, branchOrOptions) {
62
134
  const includeMetrics = hasSymbolMetricsTable(db);
63
- if (branch !== undefined) {
64
- return db
65
- .prepare(includeMetrics
66
- ? 'SELECT s.*, sm.line_count, sm.param_count, sm.cyclomatic, sm.max_nesting FROM symbols s JOIN files f ON s.file_id = f.id LEFT JOIN symbol_metrics sm ON sm.symbol_id = s.id WHERE f.branch = ? LIMIT ?'
67
- : 'SELECT s.* FROM symbols s JOIN files f ON s.file_id = f.id WHERE f.branch = ? LIMIT ?')
68
- .all(branch, limit);
135
+ const options = normalizeSymbolLookupOptions(branchOrOptions);
136
+ const matchMode = options.matchMode ?? 'exact';
137
+ const { clause, value } = buildNameMatch(name, matchMode);
138
+ const where = [clause];
139
+ const params = [value];
140
+ applySymbolFilters(where, params, options);
141
+ return db
142
+ .prepare(`${includeMetrics
143
+ ? 'SELECT s.*, sm.line_count, sm.param_count, sm.cyclomatic, sm.max_nesting'
144
+ : 'SELECT s.*'}
145
+ FROM symbols s
146
+ JOIN files f ON s.file_id = f.id
147
+ ${includeMetrics ? 'LEFT JOIN symbol_metrics sm ON sm.symbol_id = s.id' : ''}
148
+ WHERE ${where.join(' AND ')}`)
149
+ .all(...params);
150
+ }
151
+ export function listSymbols(db, limitOrOptions = 100, branch) {
152
+ const includeMetrics = hasSymbolMetricsTable(db);
153
+ const options = typeof limitOrOptions === 'number'
154
+ ? { limit: limitOrOptions, branch }
155
+ : (limitOrOptions ?? {});
156
+ const where = [];
157
+ const params = [];
158
+ applySymbolFilters(where, params, options);
159
+ const limit = options.limit ?? 100;
160
+ const offset = options.offset ?? 0;
161
+ params.push(limit, offset);
162
+ return db
163
+ .prepare(`${includeMetrics
164
+ ? 'SELECT s.*, sm.line_count, sm.param_count, sm.cyclomatic, sm.max_nesting'
165
+ : 'SELECT s.*'}
166
+ FROM symbols s
167
+ JOIN files f ON s.file_id = f.id
168
+ ${includeMetrics ? 'LEFT JOIN symbol_metrics sm ON sm.symbol_id = s.id' : ''}
169
+ ${where.length > 0 ? `WHERE ${where.join(' AND ')}` : ''}
170
+ LIMIT ? OFFSET ?`)
171
+ .all(...params);
172
+ }
173
+ /** Search symbols by embedding distance with optional branch filtering. */
174
+ export function semanticSearchSymbols(db, args) {
175
+ if (args.queryVector.length === 0)
176
+ return [];
177
+ const includeMetrics = hasSymbolMetricsTable(db);
178
+ const limit = Math.max(1, Math.floor(args.limit ?? 20));
179
+ const where = ['se.embedding MATCH ?', 'se.k = ?'];
180
+ const params = [JSON.stringify(args.queryVector), limit];
181
+ if (args.branch !== undefined) {
182
+ where.push('f.branch = ?');
183
+ params.push(args.branch);
69
184
  }
185
+ const metricSelect = includeMetrics
186
+ ? ', sm.line_count, sm.param_count, sm.cyclomatic, sm.max_nesting'
187
+ : '';
188
+ const metricJoin = includeMetrics ? ' LEFT JOIN symbol_metrics sm ON sm.symbol_id = s.id' : '';
70
189
  return db
71
- .prepare(includeMetrics
72
- ? 'SELECT s.*, sm.line_count, sm.param_count, sm.cyclomatic, sm.max_nesting FROM symbols s LEFT JOIN symbol_metrics sm ON sm.symbol_id = s.id LIMIT ?'
73
- : 'SELECT * FROM symbols LIMIT ?')
74
- .all(limit);
190
+ .prepare(`SELECT s.*${metricSelect},
191
+ f.path AS file_path,
192
+ f.branch AS file_branch,
193
+ distance AS score
194
+ FROM symbol_embeddings se
195
+ JOIN symbols s ON s.rowid = se.rowid
196
+ JOIN files f ON f.id = s.file_id${metricJoin}
197
+ WHERE ${where.join(' AND ')}
198
+ ORDER BY distance ASC,
199
+ f.path ASC,
200
+ f.branch ASC,
201
+ s.name COLLATE NOCASE ASC,
202
+ s.kind ASC,
203
+ s.start_line ASC,
204
+ s.end_line ASC,
205
+ s.id ASC`)
206
+ .all(...params);
75
207
  }
76
208
  function hasExternalSymbolsTable(db) {
77
209
  const row = db
@@ -154,6 +286,28 @@ export function listFiles(db, limit = 100, branch) {
154
286
  }
155
287
  return db.prepare('SELECT * FROM files LIMIT ?').all(limit);
156
288
  }
289
+ /** Return indexed files matching an exact path or directory prefix. */
290
+ export function listFilesByPathPrefix(db, pathPrefix, branch, limit = 1000) {
291
+ const trimmed = pathPrefix.trim();
292
+ if (!trimmed)
293
+ return [];
294
+ const normalized = trimmed.endsWith('/') && trimmed.length > 1 ? trimmed.slice(0, -1) : trimmed;
295
+ const likePattern = normalized === '/' ? '/%' : `${normalized}/%`;
296
+ if (branch !== undefined) {
297
+ return db
298
+ .prepare(`SELECT * FROM files
299
+ WHERE branch = ? AND (path = ? OR path LIKE ?)
300
+ ORDER BY path ASC, branch ASC
301
+ LIMIT ?`)
302
+ .all(branch, normalized, likePattern, limit);
303
+ }
304
+ return db
305
+ .prepare(`SELECT * FROM files
306
+ WHERE path = ? OR path LIKE ?
307
+ ORDER BY path ASC, branch ASC
308
+ LIMIT ?`)
309
+ .all(normalized, likePattern, limit);
310
+ }
157
311
  function normalizeDocKinds(kind, kinds) {
158
312
  const merged = [
159
313
  ...(kind ? [kind] : []),
@@ -488,6 +642,12 @@ export function listApiRoutes(db, args = {}) {
488
642
  ORDER BY ar.method, ar.path, f.path`)
489
643
  .all(...params);
490
644
  }
645
+ function hasCommitEmbeddingsTable(db) {
646
+ const row = db
647
+ .prepare("SELECT 1 AS ok FROM sqlite_master WHERE type IN ('table', 'virtual table') AND name = 'commit_embeddings' LIMIT 1")
648
+ .get();
649
+ return row?.ok === 1;
650
+ }
491
651
  const DEFAULT_STATS_LIMIT = 20;
492
652
  const MAX_STATS_LIMIT = 200;
493
653
  function clampStatsLimit(limit) {
@@ -628,6 +788,38 @@ export function listCommitsByRef(db, refQuery, limit = 50) {
628
788
  return [];
629
789
  }
630
790
  }
791
+ /** Whether commit semantic vectors are queryable and contain at least one row. */
792
+ export function hasCommitEmbeddings(db) {
793
+ if (!hasCommitEmbeddingsTable(db)) {
794
+ return false;
795
+ }
796
+ try {
797
+ const row = db.prepare('SELECT 1 AS ok FROM commit_embeddings LIMIT 1').get();
798
+ return row?.ok === 1;
799
+ }
800
+ catch {
801
+ return false;
802
+ }
803
+ }
804
+ /** Return commits ranked by commit-message vector distance (ascending). */
805
+ export function listCommitsBySemanticQuery(db, queryVector, limit = 50) {
806
+ if (queryVector.length === 0 || !hasCommitEmbeddings(db)) {
807
+ return [];
808
+ }
809
+ try {
810
+ return db
811
+ .prepare(`SELECT c.*
812
+ FROM commit_embeddings ce
813
+ JOIN commits c ON c.rowid = ce.rowid
814
+ WHERE ce.embedding MATCH ?
815
+ AND k = ?
816
+ ORDER BY distance, c.timestamp DESC, c.sha ASC`)
817
+ .all(JSON.stringify(queryVector), limit);
818
+ }
819
+ catch {
820
+ return [];
821
+ }
822
+ }
631
823
  export function listCommitCadence(db, granularity, filters = {}) {
632
824
  const bucketExpr = granularity === 'month'
633
825
  ? "strftime('%Y-%m', c.timestamp, 'unixepoch')"
@@ -0,0 +1 @@
1
+ {"version":3,"file":"db.js","sourceRoot":"","sources":["../../src/lore-server/db.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,43 @@
1
+ /**
2
+ * @module lore-server/server
3
+ *
4
+ * Knowledge-base MCP server.
5
+ *
6
+ * Exports `createLoreMcpServer()` for use by `LoreServerProcess` (HTTP transport)
7
+ * and retains a standalone CLI entry point for development/debugging.
8
+ *
9
+ * MCP tools exposed:
10
+ * lore_lookup — symbol / file lookup
11
+ * lore_graph — call / import graph queries
12
+ * lore_search — structural, semantic, and fused search
13
+ * lore_docs — indexed documentation list/get/search
14
+ * lore_test_map — source-file to mapped-test lookup
15
+ * lore_snippet — source-code snippet extraction
16
+ * lore_blame — git blame metadata for file lines
17
+ * lore_metrics — aggregate code metrics
18
+ * lore_writeback — LLM summary write-back
19
+ * lore_history — git commit history queries
20
+ *
21
+ * Standalone usage:
22
+ * node dist/lore-server/server.js --db <path-to-lore.db>
23
+ * tsx src/lore-server/server.ts --db <path-to-lore.db>
24
+ */
25
+ import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
26
+ import { type Database } from './db.js';
27
+ import { type EmbeddingProvider } from '../indexer/embedder.js';
28
+ import type { SearchObserver } from './tools/search.js';
29
+ /** Optional configuration for `createLoreMcpServer`. */
30
+ export interface LoreServerOptions {
31
+ /** Callback invoked after every `lore_search` call with query/mode/latency/result metadata. */
32
+ searchObserver?: SearchObserver;
33
+ }
34
+ /**
35
+ * Create and return a fully-configured `McpServer` with all Lore tools registered.
36
+ *
37
+ * @param db Read-only SQLite connection to the knowledge-base.
38
+ * @param dbPath Path to the DB file, needed by `lore_writeback` for write access.
39
+ * @param embedder Optional live embedding provider for semantic/fused search.
40
+ * @param options Optional server configuration (e.g. search observer).
41
+ */
42
+ export declare function createLoreMcpServer(db: Database.Database, dbPath: string, embedder?: EmbeddingProvider, options?: LoreServerOptions): McpServer;
43
+ //# sourceMappingURL=server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/lore-server/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAIpE,OAAO,EASL,KAAK,QAAQ,EACd,MAAM,SAAS,CAAC;AAEjB,OAAO,EAAgC,KAAK,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAI9F,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AA+DxD,wDAAwD;AACxD,MAAM,WAAW,iBAAiB;IAChC,+FAA+F;IAC/F,cAAc,CAAC,EAAE,cAAc,CAAC;CACjC;AAID;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CACjC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,MAAM,EAAE,MAAM,EACd,QAAQ,CAAC,EAAE,iBAAiB,EAC5B,OAAO,CAAC,EAAE,iBAAiB,GAC1B,SAAS,CAgWX"}