kmp-api-lookup-mcp 0.1.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 (38) hide show
  1. package/README.md +219 -0
  2. package/dist/config/index.d.ts +4 -0
  3. package/dist/config/index.js +33 -0
  4. package/dist/config/index.js.map +1 -0
  5. package/dist/index.d.ts +2 -0
  6. package/dist/index.js +29 -0
  7. package/dist/index.js.map +1 -0
  8. package/dist/indexer/index.d.ts +12 -0
  9. package/dist/indexer/index.js +245 -0
  10. package/dist/indexer/index.js.map +1 -0
  11. package/dist/search-utils.d.ts +10 -0
  12. package/dist/search-utils.js +81 -0
  13. package/dist/search-utils.js.map +1 -0
  14. package/dist/server/createServer.d.ts +11 -0
  15. package/dist/server/createServer.js +30 -0
  16. package/dist/server/createServer.js.map +1 -0
  17. package/dist/server/index.d.ts +2 -0
  18. package/dist/server/index.js +3 -0
  19. package/dist/server/index.js.map +1 -0
  20. package/dist/server/lookupDetail.d.ts +3 -0
  21. package/dist/server/lookupDetail.js +295 -0
  22. package/dist/server/lookupDetail.js.map +1 -0
  23. package/dist/server/lookupService.d.ts +34 -0
  24. package/dist/server/lookupService.js +822 -0
  25. package/dist/server/lookupService.js.map +1 -0
  26. package/dist/server/metadataInspector.d.ts +14 -0
  27. package/dist/server/metadataInspector.js +288 -0
  28. package/dist/server/metadataInspector.js.map +1 -0
  29. package/dist/storage/index.d.ts +58 -0
  30. package/dist/storage/index.js +554 -0
  31. package/dist/storage/index.js.map +1 -0
  32. package/dist/tools/index.d.ts +3 -0
  33. package/dist/tools/index.js +488 -0
  34. package/dist/tools/index.js.map +1 -0
  35. package/dist/types.d.ts +287 -0
  36. package/dist/types.js +2 -0
  37. package/dist/types.js.map +1 -0
  38. package/package.json +56 -0
@@ -0,0 +1,554 @@
1
+ import { mkdirSync } from 'node:fs';
2
+ import path from 'node:path';
3
+ import Database from 'better-sqlite3';
4
+ import { buildFtsQuery, compactSelector, escapeLikePattern, normalizeSelector, normalizeText, uniqueSorted, } from '../search-utils.js';
5
+ export class KlibIndexStorage {
6
+ config;
7
+ db;
8
+ constructor(config) {
9
+ this.config = config;
10
+ mkdirSync(path.dirname(config.dbPath), { recursive: true });
11
+ this.db = new Database(config.dbPath);
12
+ this.db.pragma('journal_mode = WAL');
13
+ this.db.pragma('foreign_keys = ON');
14
+ this.db.pragma('busy_timeout = 5000');
15
+ this.initializeSchema();
16
+ }
17
+ close() {
18
+ this.db.close();
19
+ }
20
+ listIndexedDatasets() {
21
+ const rows = this.db
22
+ .prepare(`
23
+ SELECT
24
+ d.kotlin_version,
25
+ i.konan_home,
26
+ d.target,
27
+ d.indexed_at,
28
+ d.record_count,
29
+ d.framework_count,
30
+ GROUP_CONCAT(f.name, ',') AS frameworks
31
+ FROM datasets d
32
+ JOIN installations i ON i.id = d.installation_id
33
+ LEFT JOIN frameworks f ON f.dataset_id = d.id
34
+ GROUP BY d.id
35
+ ORDER BY d.kotlin_version DESC, d.target ASC
36
+ `)
37
+ .all();
38
+ return rows.map((row) => ({
39
+ kotlinVersion: row.kotlin_version,
40
+ konanHome: row.konan_home,
41
+ target: row.target,
42
+ indexedAt: row.indexed_at,
43
+ recordCount: row.record_count,
44
+ frameworkCount: row.framework_count,
45
+ frameworks: row.frameworks ? uniqueSorted(row.frameworks.split(',')) : [],
46
+ }));
47
+ }
48
+ getRecordCounts() {
49
+ const row = this.db
50
+ .prepare(`
51
+ SELECT
52
+ (SELECT COUNT(*) FROM datasets) AS datasets,
53
+ (SELECT COUNT(*) FROM frameworks) AS frameworks,
54
+ (SELECT COUNT(*) FROM symbols) AS symbols
55
+ `)
56
+ .get();
57
+ return row;
58
+ }
59
+ getFrameworkSnapshots(konanHome, target, frameworkNames) {
60
+ if (frameworkNames.length === 0) {
61
+ return new Map();
62
+ }
63
+ const placeholders = frameworkNames.map(() => '?').join(', ');
64
+ const rows = this.db
65
+ .prepare(`
66
+ SELECT f.name, f.source_mtime_ms, f.symbol_count
67
+ FROM frameworks f
68
+ JOIN datasets d ON d.id = f.dataset_id
69
+ JOIN installations i ON i.id = d.installation_id
70
+ WHERE i.konan_home = ?
71
+ AND d.target = ?
72
+ AND f.name IN (${placeholders})
73
+ `)
74
+ .all(konanHome, target, ...frameworkNames);
75
+ return new Map(rows.map((row) => [
76
+ row.name,
77
+ {
78
+ sourceMtimeMs: row.source_mtime_ms,
79
+ symbolCount: row.symbol_count,
80
+ },
81
+ ]));
82
+ }
83
+ writeFrameworkBatch(params) {
84
+ const transaction = this.db.transaction(() => {
85
+ const installationId = this.upsertInstallation(params.installation, params.indexedAt);
86
+ const datasetId = this.upsertDataset(installationId, params.installation.kotlinVersion, params.target, params.indexedAt);
87
+ for (const item of params.items) {
88
+ if (params.cleanBefore) {
89
+ this.deleteFrameworkData(datasetId, item.source.name);
90
+ }
91
+ const frameworkId = this.upsertFramework(datasetId, item, params.indexedAt);
92
+ for (const record of item.records) {
93
+ this.upsertSymbol({
94
+ datasetId,
95
+ frameworkId,
96
+ kotlinVersion: params.installation.kotlinVersion,
97
+ konanHome: params.installation.konanHome,
98
+ target: params.target,
99
+ framework: item.source.name,
100
+ record,
101
+ });
102
+ }
103
+ this.syncFrameworkSearchIndex(datasetId, item.source.name);
104
+ this.refreshFrameworkStats(datasetId, item.source.name, item.lineCount, params.indexedAt);
105
+ }
106
+ this.refreshDatasetStats(datasetId, params.indexedAt);
107
+ return params.items.reduce((total, item) => total + item.records.length, 0);
108
+ });
109
+ return transaction();
110
+ }
111
+ searchSymbols(query) {
112
+ const results = [];
113
+ const seenIds = new Set();
114
+ const stages = resolveStages(query.matchMode);
115
+ for (const stage of stages) {
116
+ if (results.length >= query.limit) {
117
+ break;
118
+ }
119
+ const stageResults = this.queryStage(stage, query, query.limit - results.length);
120
+ for (const result of stageResults) {
121
+ if (seenIds.has(result.id)) {
122
+ continue;
123
+ }
124
+ seenIds.add(result.id);
125
+ results.push(result);
126
+ if (results.length >= query.limit) {
127
+ break;
128
+ }
129
+ }
130
+ }
131
+ return results;
132
+ }
133
+ initializeSchema() {
134
+ this.db.exec(`
135
+ CREATE TABLE IF NOT EXISTS installations (
136
+ id INTEGER PRIMARY KEY,
137
+ kotlin_version TEXT NOT NULL,
138
+ konan_home TEXT NOT NULL UNIQUE,
139
+ source TEXT NOT NULL,
140
+ discovered_at TEXT NOT NULL
141
+ );
142
+
143
+ CREATE TABLE IF NOT EXISTS datasets (
144
+ id INTEGER PRIMARY KEY,
145
+ installation_id INTEGER NOT NULL REFERENCES installations(id) ON DELETE CASCADE,
146
+ kotlin_version TEXT NOT NULL,
147
+ target TEXT NOT NULL,
148
+ indexed_at TEXT NOT NULL,
149
+ record_count INTEGER NOT NULL DEFAULT 0,
150
+ framework_count INTEGER NOT NULL DEFAULT 0,
151
+ UNIQUE(installation_id, target)
152
+ );
153
+
154
+ CREATE TABLE IF NOT EXISTS frameworks (
155
+ id INTEGER PRIMARY KEY,
156
+ dataset_id INTEGER NOT NULL REFERENCES datasets(id) ON DELETE CASCADE,
157
+ name TEXT NOT NULL,
158
+ source_path TEXT NOT NULL,
159
+ source_mtime_ms REAL NOT NULL,
160
+ line_count INTEGER NOT NULL,
161
+ symbol_count INTEGER NOT NULL,
162
+ indexed_at TEXT NOT NULL,
163
+ UNIQUE(dataset_id, name)
164
+ );
165
+
166
+ CREATE TABLE IF NOT EXISTS symbols (
167
+ id INTEGER PRIMARY KEY,
168
+ dataset_id INTEGER NOT NULL REFERENCES datasets(id) ON DELETE CASCADE,
169
+ framework_id INTEGER NOT NULL REFERENCES frameworks(id) ON DELETE CASCADE,
170
+ kotlin_version TEXT NOT NULL,
171
+ konan_home TEXT NOT NULL,
172
+ target TEXT NOT NULL,
173
+ framework TEXT NOT NULL,
174
+ package_name TEXT NOT NULL,
175
+ class_name TEXT,
176
+ member_name TEXT NOT NULL,
177
+ member_name_normalized TEXT NOT NULL,
178
+ objc_selector TEXT,
179
+ objc_selector_normalized TEXT,
180
+ objc_selector_compact TEXT,
181
+ raw_signature TEXT NOT NULL,
182
+ raw_signature_lower TEXT NOT NULL,
183
+ searchable_text TEXT NOT NULL,
184
+ member_kind TEXT NOT NULL,
185
+ is_meta_class INTEGER NOT NULL DEFAULT 0,
186
+ UNIQUE(dataset_id, framework, raw_signature)
187
+ );
188
+
189
+ CREATE INDEX IF NOT EXISTS idx_symbols_version_target ON symbols(kotlin_version, target);
190
+ CREATE INDEX IF NOT EXISTS idx_symbols_framework ON symbols(framework);
191
+ CREATE INDEX IF NOT EXISTS idx_symbols_member_name_normalized ON symbols(member_name_normalized);
192
+ CREATE INDEX IF NOT EXISTS idx_symbols_objc_selector_normalized ON symbols(objc_selector_normalized);
193
+ CREATE INDEX IF NOT EXISTS idx_symbols_objc_selector_compact ON symbols(objc_selector_compact);
194
+
195
+ CREATE VIRTUAL TABLE IF NOT EXISTS symbol_search USING fts5(
196
+ symbol_id UNINDEXED,
197
+ dataset_id UNINDEXED,
198
+ framework,
199
+ package_name,
200
+ class_name,
201
+ member_name,
202
+ objc_selector,
203
+ raw_signature,
204
+ tokenize = 'unicode61 remove_diacritics 2'
205
+ );
206
+ `);
207
+ }
208
+ upsertInstallation(installation, discoveredAt) {
209
+ this.db
210
+ .prepare(`
211
+ INSERT INTO installations (kotlin_version, konan_home, source, discovered_at)
212
+ VALUES (?, ?, ?, ?)
213
+ ON CONFLICT(konan_home) DO UPDATE SET
214
+ kotlin_version = excluded.kotlin_version,
215
+ source = excluded.source,
216
+ discovered_at = excluded.discovered_at
217
+ `)
218
+ .run(installation.kotlinVersion, installation.konanHome, installation.sources.join(','), discoveredAt);
219
+ const row = this.db
220
+ .prepare('SELECT id FROM installations WHERE konan_home = ?')
221
+ .get(installation.konanHome);
222
+ return row.id;
223
+ }
224
+ upsertDataset(installationId, kotlinVersion, target, indexedAt) {
225
+ this.db
226
+ .prepare(`
227
+ INSERT INTO datasets (installation_id, kotlin_version, target, indexed_at, record_count, framework_count)
228
+ VALUES (?, ?, ?, ?, 0, 0)
229
+ ON CONFLICT(installation_id, target) DO UPDATE SET
230
+ kotlin_version = excluded.kotlin_version,
231
+ indexed_at = excluded.indexed_at
232
+ `)
233
+ .run(installationId, kotlinVersion, target, indexedAt);
234
+ const row = this.db
235
+ .prepare('SELECT id FROM datasets WHERE installation_id = ? AND target = ?')
236
+ .get(installationId, target);
237
+ return row.id;
238
+ }
239
+ upsertFramework(datasetId, item, indexedAt) {
240
+ this.db
241
+ .prepare(`
242
+ INSERT INTO frameworks (
243
+ dataset_id,
244
+ name,
245
+ source_path,
246
+ source_mtime_ms,
247
+ line_count,
248
+ symbol_count,
249
+ indexed_at
250
+ )
251
+ VALUES (?, ?, ?, ?, ?, ?, ?)
252
+ ON CONFLICT(dataset_id, name) DO UPDATE SET
253
+ source_path = excluded.source_path,
254
+ source_mtime_ms = excluded.source_mtime_ms,
255
+ line_count = excluded.line_count,
256
+ symbol_count = excluded.symbol_count,
257
+ indexed_at = excluded.indexed_at
258
+ `)
259
+ .run(datasetId, item.source.name, item.source.directoryPath, item.source.sourceMtimeMs, item.lineCount, item.records.length, indexedAt);
260
+ const row = this.db
261
+ .prepare('SELECT id FROM frameworks WHERE dataset_id = ? AND name = ?')
262
+ .get(datasetId, item.source.name);
263
+ return row.id;
264
+ }
265
+ upsertSymbol(params) {
266
+ this.db
267
+ .prepare(`
268
+ INSERT INTO symbols (
269
+ dataset_id,
270
+ framework_id,
271
+ kotlin_version,
272
+ konan_home,
273
+ target,
274
+ framework,
275
+ package_name,
276
+ class_name,
277
+ member_name,
278
+ member_name_normalized,
279
+ objc_selector,
280
+ objc_selector_normalized,
281
+ objc_selector_compact,
282
+ raw_signature,
283
+ raw_signature_lower,
284
+ searchable_text,
285
+ member_kind,
286
+ is_meta_class
287
+ )
288
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
289
+ ON CONFLICT(dataset_id, framework, raw_signature) DO UPDATE SET
290
+ framework_id = excluded.framework_id,
291
+ kotlin_version = excluded.kotlin_version,
292
+ konan_home = excluded.konan_home,
293
+ target = excluded.target,
294
+ package_name = excluded.package_name,
295
+ class_name = excluded.class_name,
296
+ member_name = excluded.member_name,
297
+ member_name_normalized = excluded.member_name_normalized,
298
+ objc_selector = excluded.objc_selector,
299
+ objc_selector_normalized = excluded.objc_selector_normalized,
300
+ objc_selector_compact = excluded.objc_selector_compact,
301
+ raw_signature_lower = excluded.raw_signature_lower,
302
+ searchable_text = excluded.searchable_text,
303
+ member_kind = excluded.member_kind,
304
+ is_meta_class = excluded.is_meta_class
305
+ `)
306
+ .run(params.datasetId, params.frameworkId, params.kotlinVersion, params.konanHome, params.target, params.framework, params.record.packageName, params.record.className, params.record.memberSearchName, normalizeText(params.record.memberSearchName), params.record.objcSelector, params.record.objcSelectorNormalized, params.record.objcSelectorCompact, params.record.rawSignature, params.record.rawSignature.toLowerCase(), buildSearchableText(params.record), params.record.memberKind, params.record.isMetaClass ? 1 : 0);
307
+ }
308
+ deleteFrameworkData(datasetId, frameworkName) {
309
+ this.db
310
+ .prepare('DELETE FROM symbol_search WHERE dataset_id = ? AND framework = ?')
311
+ .run(datasetId, frameworkName);
312
+ this.db
313
+ .prepare('DELETE FROM symbols WHERE dataset_id = ? AND framework = ?')
314
+ .run(datasetId, frameworkName);
315
+ this.db
316
+ .prepare('DELETE FROM frameworks WHERE dataset_id = ? AND name = ?')
317
+ .run(datasetId, frameworkName);
318
+ }
319
+ syncFrameworkSearchIndex(datasetId, frameworkName) {
320
+ this.db
321
+ .prepare('DELETE FROM symbol_search WHERE dataset_id = ? AND framework = ?')
322
+ .run(datasetId, frameworkName);
323
+ const rows = this.db
324
+ .prepare(`
325
+ SELECT id, dataset_id, framework, package_name, class_name, member_name, objc_selector, raw_signature
326
+ FROM symbols
327
+ WHERE dataset_id = ? AND framework = ?
328
+ `)
329
+ .all(datasetId, frameworkName);
330
+ const insertStatement = this.db.prepare(`
331
+ INSERT INTO symbol_search (
332
+ symbol_id,
333
+ dataset_id,
334
+ framework,
335
+ package_name,
336
+ class_name,
337
+ member_name,
338
+ objc_selector,
339
+ raw_signature
340
+ )
341
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?)
342
+ `);
343
+ for (const row of rows) {
344
+ insertStatement.run(row.id, row.dataset_id, row.framework, row.package_name, row.class_name ?? '', row.member_name, row.objc_selector ?? '', row.raw_signature);
345
+ }
346
+ }
347
+ refreshFrameworkStats(datasetId, frameworkName, lineCount, indexedAt) {
348
+ const row = this.db
349
+ .prepare(`
350
+ SELECT COUNT(*) AS symbolCount
351
+ FROM symbols
352
+ WHERE dataset_id = ? AND framework = ?
353
+ `)
354
+ .get(datasetId, frameworkName);
355
+ this.db
356
+ .prepare(`
357
+ UPDATE frameworks
358
+ SET line_count = ?, symbol_count = ?, indexed_at = ?
359
+ WHERE dataset_id = ? AND name = ?
360
+ `)
361
+ .run(lineCount, row.symbolCount, indexedAt, datasetId, frameworkName);
362
+ }
363
+ refreshDatasetStats(datasetId, indexedAt) {
364
+ const row = this.db
365
+ .prepare(`
366
+ SELECT
367
+ (SELECT COUNT(*) FROM symbols WHERE dataset_id = ?) AS recordCount,
368
+ (SELECT COUNT(*) FROM frameworks WHERE dataset_id = ?) AS frameworkCount
369
+ `)
370
+ .get(datasetId, datasetId);
371
+ this.db
372
+ .prepare(`
373
+ UPDATE datasets
374
+ SET record_count = ?, framework_count = ?, indexed_at = ?
375
+ WHERE id = ?
376
+ `)
377
+ .run(row.recordCount, row.frameworkCount, indexedAt, datasetId);
378
+ }
379
+ queryStage(stage, query, limit) {
380
+ switch (stage) {
381
+ case 'exact':
382
+ return this.queryExact(query, limit);
383
+ case 'prefix':
384
+ return this.queryPrefix(query, limit);
385
+ case 'fts':
386
+ return this.queryFts(query, limit);
387
+ case 'fuzzy':
388
+ return this.queryFuzzy(query, limit);
389
+ default:
390
+ return [];
391
+ }
392
+ }
393
+ queryExact(query, limit) {
394
+ const filters = this.buildSymbolFilters(query, 'symbols');
395
+ const normalizedQuery = normalizeText(query.query);
396
+ const normalizedSelector = normalizeSelector(query.query) ?? normalizedQuery;
397
+ const compactQuery = compactSelector(query.query) ?? normalizedQuery;
398
+ const rows = this.db
399
+ .prepare(`
400
+ SELECT *
401
+ FROM symbols
402
+ WHERE ${filters.clause}
403
+ AND (
404
+ member_name_normalized = ?
405
+ OR objc_selector_normalized = ?
406
+ OR objc_selector_compact = ?
407
+ )
408
+ ORDER BY framework ASC, COALESCE(class_name, '') ASC, member_name ASC
409
+ LIMIT ?
410
+ `)
411
+ .all(...filters.params, normalizedQuery, normalizedSelector, compactQuery, limit);
412
+ return rows.map((row) => this.mapSearchResult(row, 'exact', query.includeRawSignature));
413
+ }
414
+ queryPrefix(query, limit) {
415
+ const filters = this.buildSymbolFilters(query, 'symbols');
416
+ const normalizedQuery = `${escapeLikePattern(normalizeText(query.query))}%`;
417
+ const normalizedSelector = `${escapeLikePattern(normalizeSelector(query.query) ?? normalizeText(query.query))}%`;
418
+ const compactQuery = `${escapeLikePattern(compactSelector(query.query) ?? normalizeText(query.query))}%`;
419
+ const rows = this.db
420
+ .prepare(`
421
+ SELECT *
422
+ FROM symbols
423
+ WHERE ${filters.clause}
424
+ AND (
425
+ member_name_normalized LIKE ? ESCAPE '\\'
426
+ OR COALESCE(objc_selector_normalized, '') LIKE ? ESCAPE '\\'
427
+ OR COALESCE(objc_selector_compact, '') LIKE ? ESCAPE '\\'
428
+ )
429
+ ORDER BY framework ASC, COALESCE(class_name, '') ASC, member_name ASC
430
+ LIMIT ?
431
+ `)
432
+ .all(...filters.params, normalizedQuery, normalizedSelector, compactQuery, limit);
433
+ return rows.map((row) => this.mapSearchResult(row, 'prefix', query.includeRawSignature));
434
+ }
435
+ queryFts(query, limit) {
436
+ const ftsQuery = buildFtsQuery(query.query);
437
+ if (!ftsQuery) {
438
+ return [];
439
+ }
440
+ const filters = this.buildSymbolFilters(query, 's');
441
+ const rows = this.db
442
+ .prepare(`
443
+ SELECT s.*
444
+ FROM symbol_search
445
+ JOIN symbols s ON s.id = CAST(symbol_search.symbol_id AS INTEGER)
446
+ WHERE ${filters.clause}
447
+ AND symbol_search MATCH ?
448
+ ORDER BY bm25(symbol_search), s.framework ASC, COALESCE(s.class_name, '') ASC, s.member_name ASC
449
+ LIMIT ?
450
+ `)
451
+ .all(...filters.params, ftsQuery, limit);
452
+ return rows.map((row) => this.mapSearchResult(row, 'fts', query.includeRawSignature));
453
+ }
454
+ queryFuzzy(query, limit) {
455
+ const filters = this.buildSymbolFilters(query, 'symbols');
456
+ const normalizedContains = `%${escapeLikePattern(normalizeText(query.query))}%`;
457
+ const compactContains = `%${escapeLikePattern(compactSelector(query.query) ?? normalizeText(query.query))}%`;
458
+ const normalizedPrefix = `${escapeLikePattern(normalizeText(query.query))}%`;
459
+ const rows = this.db
460
+ .prepare(`
461
+ SELECT *
462
+ FROM symbols
463
+ WHERE ${filters.clause}
464
+ AND (
465
+ searchable_text LIKE ? ESCAPE '\\'
466
+ OR COALESCE(objc_selector_compact, '') LIKE ? ESCAPE '\\'
467
+ OR raw_signature_lower LIKE ? ESCAPE '\\'
468
+ )
469
+ ORDER BY
470
+ CASE
471
+ WHEN member_name_normalized LIKE ? ESCAPE '\\' THEN 0
472
+ ELSE 1
473
+ END,
474
+ framework ASC,
475
+ COALESCE(class_name, '') ASC,
476
+ member_name ASC
477
+ LIMIT ?
478
+ `)
479
+ .all(...filters.params, normalizedContains, compactContains, normalizedContains, normalizedPrefix, limit);
480
+ return rows.map((row) => this.mapSearchResult(row, 'fuzzy', query.includeRawSignature));
481
+ }
482
+ buildSymbolFilters(query, alias) {
483
+ const clauses = [`${alias}.kotlin_version = ?`];
484
+ const params = [query.kotlinVersion];
485
+ if (query.targets.length > 0) {
486
+ clauses.push(`${alias}.target IN (${query.targets.map(() => '?').join(', ')})`);
487
+ params.push(...query.targets);
488
+ }
489
+ if (query.frameworks.length > 0) {
490
+ clauses.push(`${alias}.framework IN (${query.frameworks.map(() => '?').join(', ')})`);
491
+ params.push(...query.frameworks);
492
+ }
493
+ if (!query.includeMetaClasses) {
494
+ clauses.push(`${alias}.is_meta_class = 0`);
495
+ }
496
+ return {
497
+ clause: clauses.join(' AND '),
498
+ params,
499
+ };
500
+ }
501
+ mapSearchResult(row, matchType, includeRawSignature) {
502
+ const declarationForm = resolveDeclarationForm(row.raw_signature);
503
+ return {
504
+ id: row.id,
505
+ kotlinVersion: row.kotlin_version,
506
+ konanHome: row.konan_home,
507
+ target: row.target,
508
+ framework: row.framework,
509
+ packageName: row.package_name,
510
+ className: row.class_name,
511
+ memberName: row.member_name,
512
+ objcSelector: row.objc_selector,
513
+ memberKind: row.member_kind,
514
+ declarationForm,
515
+ isMetaClass: row.is_meta_class === 1,
516
+ matchType,
517
+ ...(includeRawSignature ? { rawSignature: row.raw_signature } : {}),
518
+ };
519
+ }
520
+ }
521
+ function resolveStages(matchMode) {
522
+ switch (matchMode) {
523
+ case 'exact':
524
+ return ['exact'];
525
+ case 'prefix':
526
+ return ['prefix'];
527
+ case 'fuzzy':
528
+ return ['fts', 'fuzzy'];
529
+ case 'auto':
530
+ default:
531
+ return ['exact', 'prefix', 'fts', 'fuzzy'];
532
+ }
533
+ }
534
+ function buildSearchableText(record) {
535
+ return [
536
+ record.packageName,
537
+ record.className ?? '',
538
+ record.memberSearchName,
539
+ record.objcSelector ?? '',
540
+ record.rawSignature,
541
+ ]
542
+ .join(' ')
543
+ .toLowerCase();
544
+ }
545
+ function resolveDeclarationForm(rawSignature) {
546
+ if (/\|null\[\d+\]$/.test(rawSignature)) {
547
+ return 'class';
548
+ }
549
+ if (/\|.+\.objc:[^\[]+\[\d+\]$/.test(rawSignature)) {
550
+ return 'objc_bridge_extension';
551
+ }
552
+ return 'direct_member';
553
+ }
554
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/storage/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { type McpServer } from '@modelcontextprotocol/server';
2
+ import type { ToolService } from '../types.js';
3
+ export declare function registerTools(server: McpServer, service: ToolService): void;