@jafreck/lore 0.2.0 → 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 (180) hide show
  1. package/README.md +399 -199
  2. package/dist/cli.js +139 -18
  3. package/dist/cli.js.map +1 -1
  4. package/dist/index.d.ts +7 -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 +118 -18
  11. package/dist/indexer/db.js.map +1 -1
  12. package/dist/indexer/docs.d.ts +42 -0
  13. package/dist/indexer/docs.d.ts.map +1 -0
  14. package/dist/indexer/docs.js +214 -0
  15. package/dist/indexer/docs.js.map +1 -0
  16. package/dist/indexer/embedder.d.ts +7 -0
  17. package/dist/indexer/embedder.d.ts.map +1 -1
  18. package/dist/indexer/embedder.js +10 -0
  19. package/dist/indexer/embedder.js.map +1 -1
  20. package/dist/indexer/ensure-python-deps.d.ts +1 -1
  21. package/dist/indexer/ensure-python-deps.js +1 -1
  22. package/dist/indexer/extractors/types.d.ts +22 -0
  23. package/dist/indexer/extractors/types.d.ts.map +1 -1
  24. package/dist/indexer/extractors/types.js +12 -0
  25. package/dist/indexer/extractors/types.js.map +1 -1
  26. package/dist/indexer/extractors/typescript.d.ts +1 -1
  27. package/dist/indexer/extractors/typescript.d.ts.map +1 -1
  28. package/dist/indexer/extractors/typescript.js +38 -8
  29. package/dist/indexer/extractors/typescript.js.map +1 -1
  30. package/dist/indexer/git-history.d.ts.map +1 -1
  31. package/dist/indexer/git-history.js +4 -4
  32. package/dist/indexer/git-history.js.map +1 -1
  33. package/dist/indexer/git-hooks.d.ts +1 -0
  34. package/dist/indexer/git-hooks.d.ts.map +1 -1
  35. package/dist/indexer/git-hooks.js +3 -2
  36. package/dist/indexer/git-hooks.js.map +1 -1
  37. package/dist/indexer/index.d.ts +35 -9
  38. package/dist/indexer/index.d.ts.map +1 -1
  39. package/dist/indexer/index.js +470 -30
  40. package/dist/indexer/index.js.map +1 -1
  41. package/dist/indexer/lsp/client.d.ts +61 -0
  42. package/dist/indexer/lsp/client.d.ts.map +1 -0
  43. package/dist/indexer/lsp/client.js +217 -0
  44. package/dist/indexer/lsp/client.js.map +1 -0
  45. package/dist/indexer/lsp/config.d.ts +16 -0
  46. package/dist/indexer/lsp/config.d.ts.map +1 -0
  47. package/dist/indexer/lsp/config.js +78 -0
  48. package/dist/indexer/lsp/config.js.map +1 -0
  49. package/dist/indexer/lsp/enrichment.d.ts +55 -0
  50. package/dist/indexer/lsp/enrichment.d.ts.map +1 -0
  51. package/dist/indexer/lsp/enrichment.js +211 -0
  52. package/dist/indexer/lsp/enrichment.js.map +1 -0
  53. package/dist/indexer/lsp/registry.d.ts +19 -0
  54. package/dist/indexer/lsp/registry.d.ts.map +1 -0
  55. package/dist/indexer/lsp/registry.js +118 -0
  56. package/dist/indexer/lsp/registry.js.map +1 -0
  57. package/dist/indexer/parser.d.ts +7 -0
  58. package/dist/indexer/parser.d.ts.map +1 -1
  59. package/dist/indexer/parser.js +3 -1
  60. package/dist/indexer/parser.js.map +1 -1
  61. package/dist/indexer/poller.d.ts +8 -1
  62. package/dist/indexer/poller.d.ts.map +1 -1
  63. package/dist/indexer/poller.js +7 -1
  64. package/dist/indexer/poller.js.map +1 -1
  65. package/dist/indexer/walker.d.ts +22 -0
  66. package/dist/indexer/walker.d.ts.map +1 -1
  67. package/dist/indexer/walker.js +15 -0
  68. package/dist/indexer/walker.js.map +1 -1
  69. package/dist/indexer/watcher.d.ts +8 -1
  70. package/dist/indexer/watcher.d.ts.map +1 -1
  71. package/dist/indexer/watcher.js +7 -1
  72. package/dist/indexer/watcher.js.map +1 -1
  73. package/dist/{kb-server → lore-server}/db.d.ts +158 -4
  74. package/dist/lore-server/db.d.ts.map +1 -0
  75. package/dist/{kb-server → lore-server}/db.js +457 -26
  76. package/dist/lore-server/db.js.map +1 -0
  77. package/dist/lore-server/server.d.ts +43 -0
  78. package/dist/lore-server/server.d.ts.map +1 -0
  79. package/dist/lore-server/server.js +385 -0
  80. package/dist/lore-server/server.js.map +1 -0
  81. package/dist/{kb-server → lore-server}/tools/annotations.d.ts +2 -2
  82. package/dist/lore-server/tools/annotations.d.ts.map +1 -0
  83. package/dist/{kb-server → lore-server}/tools/annotations.js +2 -2
  84. package/dist/lore-server/tools/annotations.js.map +1 -0
  85. package/dist/{kb-server → lore-server}/tools/architecture.d.ts +9 -2
  86. package/dist/lore-server/tools/architecture.d.ts.map +1 -0
  87. package/dist/{kb-server → lore-server}/tools/architecture.js +37 -2
  88. package/dist/lore-server/tools/architecture.js.map +1 -0
  89. package/dist/lore-server/tools/blame.d.ts +159 -0
  90. package/dist/lore-server/tools/blame.d.ts.map +1 -0
  91. package/dist/lore-server/tools/blame.js +595 -0
  92. package/dist/lore-server/tools/blame.js.map +1 -0
  93. package/dist/{kb-server → lore-server}/tools/coverage.d.ts +2 -2
  94. package/dist/lore-server/tools/coverage.d.ts.map +1 -0
  95. package/dist/{kb-server → lore-server}/tools/coverage.js +2 -2
  96. package/dist/lore-server/tools/coverage.js.map +1 -0
  97. package/dist/lore-server/tools/docs.d.ts +86 -0
  98. package/dist/lore-server/tools/docs.d.ts.map +1 -0
  99. package/dist/lore-server/tools/docs.js +243 -0
  100. package/dist/lore-server/tools/docs.js.map +1 -0
  101. package/dist/{kb-server → lore-server}/tools/graph.d.ts +40 -3
  102. package/dist/lore-server/tools/graph.d.ts.map +1 -0
  103. package/dist/{kb-server → lore-server}/tools/graph.js +122 -11
  104. package/dist/lore-server/tools/graph.js.map +1 -0
  105. package/dist/{kb-server → lore-server}/tools/history.d.ts +13 -6
  106. package/dist/lore-server/tools/history.d.ts.map +1 -0
  107. package/dist/{kb-server → lore-server}/tools/history.js +43 -10
  108. package/dist/lore-server/tools/history.js.map +1 -0
  109. package/dist/lore-server/tools/lookup.d.ts +75 -0
  110. package/dist/lore-server/tools/lookup.d.ts.map +1 -0
  111. package/dist/lore-server/tools/lookup.js +148 -0
  112. package/dist/lore-server/tools/lookup.js.map +1 -0
  113. package/dist/{kb-server → lore-server}/tools/metrics.d.ts +3 -3
  114. package/dist/lore-server/tools/metrics.d.ts.map +1 -0
  115. package/dist/{kb-server → lore-server}/tools/metrics.js +3 -3
  116. package/dist/lore-server/tools/metrics.js.map +1 -0
  117. package/dist/{kb-server → lore-server}/tools/notes.d.ts +16 -16
  118. package/dist/lore-server/tools/notes.d.ts.map +1 -0
  119. package/dist/{kb-server → lore-server}/tools/notes.js +55 -20
  120. package/dist/lore-server/tools/notes.js.map +1 -0
  121. package/dist/{kb-server → lore-server}/tools/routes.d.ts +2 -2
  122. package/dist/lore-server/tools/routes.d.ts.map +1 -0
  123. package/dist/{kb-server → lore-server}/tools/routes.js +2 -2
  124. package/dist/lore-server/tools/routes.js.map +1 -0
  125. package/dist/{kb-server → lore-server}/tools/search.d.ts +57 -13
  126. package/dist/lore-server/tools/search.d.ts.map +1 -0
  127. package/dist/{kb-server → lore-server}/tools/search.js +123 -23
  128. package/dist/lore-server/tools/search.js.map +1 -0
  129. package/dist/{kb-server → lore-server}/tools/snippet.d.ts +20 -4
  130. package/dist/lore-server/tools/snippet.d.ts.map +1 -0
  131. package/dist/lore-server/tools/snippet.js +116 -0
  132. package/dist/lore-server/tools/snippet.js.map +1 -0
  133. package/dist/{kb-server → lore-server}/tools/test-map.d.ts +2 -2
  134. package/dist/lore-server/tools/test-map.d.ts.map +1 -0
  135. package/dist/{kb-server → lore-server}/tools/test-map.js +2 -2
  136. package/dist/lore-server/tools/test-map.js.map +1 -0
  137. package/dist/{kb-server → lore-server}/tools/writeback.d.ts +2 -2
  138. package/dist/lore-server/tools/writeback.d.ts.map +1 -0
  139. package/dist/{kb-server → lore-server}/tools/writeback.js +3 -3
  140. package/dist/lore-server/tools/writeback.js.map +1 -0
  141. package/package.json +14 -14
  142. package/dist/kb-server/db.d.ts.map +0 -1
  143. package/dist/kb-server/db.js.map +0 -1
  144. package/dist/kb-server/server.d.ts +0 -42
  145. package/dist/kb-server/server.d.ts.map +0 -1
  146. package/dist/kb-server/server.js +0 -241
  147. package/dist/kb-server/server.js.map +0 -1
  148. package/dist/kb-server/tools/annotations.d.ts.map +0 -1
  149. package/dist/kb-server/tools/annotations.js.map +0 -1
  150. package/dist/kb-server/tools/architecture.d.ts.map +0 -1
  151. package/dist/kb-server/tools/architecture.js.map +0 -1
  152. package/dist/kb-server/tools/blame.d.ts +0 -67
  153. package/dist/kb-server/tools/blame.d.ts.map +0 -1
  154. package/dist/kb-server/tools/blame.js +0 -162
  155. package/dist/kb-server/tools/blame.js.map +0 -1
  156. package/dist/kb-server/tools/coverage.d.ts.map +0 -1
  157. package/dist/kb-server/tools/coverage.js.map +0 -1
  158. package/dist/kb-server/tools/graph.d.ts.map +0 -1
  159. package/dist/kb-server/tools/graph.js.map +0 -1
  160. package/dist/kb-server/tools/history.d.ts.map +0 -1
  161. package/dist/kb-server/tools/history.js.map +0 -1
  162. package/dist/kb-server/tools/lookup.d.ts +0 -36
  163. package/dist/kb-server/tools/lookup.d.ts.map +0 -1
  164. package/dist/kb-server/tools/lookup.js +0 -45
  165. package/dist/kb-server/tools/lookup.js.map +0 -1
  166. package/dist/kb-server/tools/metrics.d.ts.map +0 -1
  167. package/dist/kb-server/tools/metrics.js.map +0 -1
  168. package/dist/kb-server/tools/notes.d.ts.map +0 -1
  169. package/dist/kb-server/tools/notes.js.map +0 -1
  170. package/dist/kb-server/tools/routes.d.ts.map +0 -1
  171. package/dist/kb-server/tools/routes.js.map +0 -1
  172. package/dist/kb-server/tools/search.d.ts.map +0 -1
  173. package/dist/kb-server/tools/search.js.map +0 -1
  174. package/dist/kb-server/tools/snippet.d.ts.map +0 -1
  175. package/dist/kb-server/tools/snippet.js +0 -49
  176. package/dist/kb-server/tools/snippet.js.map +0 -1
  177. package/dist/kb-server/tools/test-map.d.ts.map +0 -1
  178. package/dist/kb-server/tools/test-map.js.map +0 -1
  179. package/dist/kb-server/tools/writeback.d.ts.map +0 -1
  180. package/dist/kb-server/tools/writeback.js.map +0 -1
@@ -19,6 +19,7 @@ CREATE TABLE IF NOT EXISTS files (
19
19
  language TEXT NOT NULL,
20
20
  size_bytes INTEGER NOT NULL DEFAULT 0,
21
21
  last_hash TEXT,
22
+ source TEXT NOT NULL DEFAULT '',
22
23
  indexed_at INTEGER NOT NULL DEFAULT (unixepoch()),
23
24
  UNIQUE(path, branch)
24
25
  );
@@ -32,7 +33,11 @@ CREATE TABLE IF NOT EXISTS symbols (
32
33
  start_line INTEGER NOT NULL,
33
34
  end_line INTEGER NOT NULL,
34
35
  signature TEXT,
35
- doc_comment TEXT
36
+ doc_comment TEXT,
37
+ resolved_type_signature TEXT,
38
+ resolved_return_type TEXT,
39
+ definition_uri TEXT,
40
+ definition_path TEXT
36
41
  );
37
42
 
38
43
  -- File-linked annotations extracted from comments (e.g. TODO/FIXME/NOTE).
@@ -69,7 +74,11 @@ CREATE TABLE IF NOT EXISTS symbol_refs (
69
74
  caller_id INTEGER NOT NULL REFERENCES symbols(id) ON DELETE CASCADE,
70
75
  callee_id INTEGER REFERENCES symbols(id),
71
76
  callee_name TEXT NOT NULL,
72
- call_line INTEGER NOT NULL
77
+ call_line INTEGER NOT NULL,
78
+ resolved_type_signature TEXT,
79
+ resolved_return_type TEXT,
80
+ definition_uri TEXT,
81
+ definition_path TEXT
73
82
  );
74
83
 
75
84
  -- External (third-party / stdlib) dependencies inferred from imports.
@@ -81,6 +90,25 @@ CREATE TABLE IF NOT EXISTS external_deps (
81
90
  UNIQUE(file_id, package)
82
91
  );
83
92
 
93
+ -- Symbols extracted from direct dependency declarations and public API surfaces.
94
+ CREATE TABLE IF NOT EXISTS external_symbols (
95
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
96
+ dependency_ecosystem TEXT NOT NULL DEFAULT 'npm',
97
+ source_type TEXT NOT NULL DEFAULT 'declaration',
98
+ source_ref TEXT NOT NULL DEFAULT '',
99
+ package_name TEXT NOT NULL,
100
+ package_version TEXT,
101
+ symbol_name TEXT NOT NULL,
102
+ symbol_kind TEXT NOT NULL,
103
+ signature TEXT NOT NULL DEFAULT '',
104
+ doc_comment TEXT,
105
+ resolved_type_signature TEXT,
106
+ resolved_return_type TEXT,
107
+ definition_uri TEXT,
108
+ definition_path TEXT,
109
+ UNIQUE(dependency_ecosystem, package_name, package_version, symbol_name, symbol_kind, signature)
110
+ );
111
+
84
112
  -- Logical modules grouping related files (e.g. Rust crates, Python packages).
85
113
  CREATE TABLE IF NOT EXISTS modules (
86
114
  id INTEGER PRIMARY KEY AUTOINCREMENT,
@@ -115,7 +143,7 @@ CREATE TABLE IF NOT EXISTS symbol_metrics (
115
143
  CREATE INDEX IF NOT EXISTS idx_symbol_metrics_cyclomatic ON symbol_metrics(cyclomatic);
116
144
 
117
145
  -- Key-value store for knowledge-base metadata (schema version, embedding model, etc.).
118
- CREATE TABLE IF NOT EXISTS kb_meta (
146
+ CREATE TABLE IF NOT EXISTS lore_meta (
119
147
  key TEXT PRIMARY KEY,
120
148
  value TEXT NOT NULL
121
149
  );
@@ -133,6 +161,34 @@ CREATE TABLE IF NOT EXISTS notes (
133
161
  UNIQUE(key, scope)
134
162
  );
135
163
 
164
+ -- Indexed documentation files.
165
+ CREATE TABLE IF NOT EXISTS docs (
166
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
167
+ path TEXT NOT NULL,
168
+ branch TEXT NOT NULL DEFAULT '',
169
+ kind TEXT NOT NULL,
170
+ title TEXT NOT NULL,
171
+ content TEXT NOT NULL,
172
+ content_hash TEXT NOT NULL,
173
+ indexed_at INTEGER NOT NULL DEFAULT (unixepoch()),
174
+ UNIQUE(path, branch)
175
+ );
176
+
177
+ -- Heading-based documentation chunks.
178
+ CREATE TABLE IF NOT EXISTS doc_sections (
179
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
180
+ doc_id INTEGER NOT NULL REFERENCES docs(id) ON DELETE CASCADE,
181
+ section_index INTEGER NOT NULL,
182
+ title TEXT NOT NULL,
183
+ depth INTEGER NOT NULL,
184
+ heading_path TEXT NOT NULL,
185
+ line_start INTEGER NOT NULL,
186
+ line_end INTEGER NOT NULL,
187
+ content TEXT NOT NULL,
188
+ content_hash TEXT NOT NULL,
189
+ UNIQUE(doc_id, section_index)
190
+ );
191
+
136
192
  -- Full-text search index over symbol names, signatures, and kinds (BM25 via FTS5).
137
193
  CREATE VIRTUAL TABLE IF NOT EXISTS symbols_fts USING fts5(
138
194
  name, signature, kind
@@ -214,7 +270,32 @@ CREATE INDEX IF NOT EXISTS idx_annotations_file_id ON annotations(file_id);
214
270
  CREATE INDEX IF NOT EXISTS idx_coverage_runs_ingested_at ON coverage_runs(ingested_at);
215
271
  CREATE INDEX IF NOT EXISTS idx_coverage_files_path ON coverage_files(file_path);
216
272
  CREATE INDEX IF NOT EXISTS idx_coverage_lines_path_line ON coverage_lines(file_path, line_number);
273
+ CREATE INDEX IF NOT EXISTS idx_docs_branch_kind ON docs(branch, kind);
274
+ CREATE INDEX IF NOT EXISTS idx_doc_sections_doc_id ON doc_sections(doc_id);
275
+ CREATE INDEX IF NOT EXISTS idx_external_symbols_dependency_ecosystem ON external_symbols(dependency_ecosystem);
276
+ CREATE INDEX IF NOT EXISTS idx_external_symbols_package_name ON external_symbols(package_name);
277
+ CREATE INDEX IF NOT EXISTS idx_external_symbols_symbol_name ON external_symbols(symbol_name);
217
278
  `;
279
+ const ENRICHMENT_SCHEMA_MIGRATIONS = [
280
+ { table: 'files', column: 'source', sql: "ALTER TABLE files ADD COLUMN source TEXT NOT NULL DEFAULT ''" },
281
+ { table: 'symbols', column: 'resolved_type_signature', sql: 'ALTER TABLE symbols ADD COLUMN resolved_type_signature TEXT' },
282
+ { table: 'symbols', column: 'resolved_return_type', sql: 'ALTER TABLE symbols ADD COLUMN resolved_return_type TEXT' },
283
+ { table: 'symbols', column: 'definition_uri', sql: 'ALTER TABLE symbols ADD COLUMN definition_uri TEXT' },
284
+ { table: 'symbols', column: 'definition_path', sql: 'ALTER TABLE symbols ADD COLUMN definition_path TEXT' },
285
+ { table: 'symbol_refs', column: 'resolved_type_signature', sql: 'ALTER TABLE symbol_refs ADD COLUMN resolved_type_signature TEXT' },
286
+ { table: 'symbol_refs', column: 'resolved_return_type', sql: 'ALTER TABLE symbol_refs ADD COLUMN resolved_return_type TEXT' },
287
+ { table: 'symbol_refs', column: 'definition_uri', sql: 'ALTER TABLE symbol_refs ADD COLUMN definition_uri TEXT' },
288
+ { table: 'symbol_refs', column: 'definition_path', sql: 'ALTER TABLE symbol_refs ADD COLUMN definition_path TEXT' },
289
+ { table: 'external_symbols', column: 'resolved_type_signature', sql: 'ALTER TABLE external_symbols ADD COLUMN resolved_type_signature TEXT' },
290
+ { table: 'external_symbols', column: 'resolved_return_type', sql: 'ALTER TABLE external_symbols ADD COLUMN resolved_return_type TEXT' },
291
+ { table: 'external_symbols', column: 'definition_uri', sql: 'ALTER TABLE external_symbols ADD COLUMN definition_uri TEXT' },
292
+ { table: 'external_symbols', column: 'definition_path', sql: 'ALTER TABLE external_symbols ADD COLUMN definition_path TEXT' },
293
+ ];
294
+ const ENRICHMENT_INDEX_MIGRATIONS = [
295
+ 'CREATE INDEX IF NOT EXISTS idx_symbols_definition_path ON symbols(definition_path)',
296
+ 'CREATE INDEX IF NOT EXISTS idx_symbol_refs_definition_path ON symbol_refs(definition_path)',
297
+ 'CREATE INDEX IF NOT EXISTS idx_external_symbols_definition_path ON external_symbols(definition_path)',
298
+ ];
218
299
  // ─── Public API ───────────────────────────────────────────────────────────────
219
300
  /**
220
301
  * Opens (or creates) the SQLite database at `path` and initialises the schema.
@@ -229,27 +310,43 @@ export function openDb(path) {
229
310
  db.pragma('foreign_keys = ON');
230
311
  // Create all tables in a single transaction.
231
312
  db.exec(DDL);
313
+ ensureEnrichmentSchema(db);
232
314
  return db;
233
315
  }
234
- // ─── kb_meta helpers ──────────────────────────────────────────────────────────
235
- export const KB_META_INDEX_CHECKPOINT = 'index_checkpoint';
236
- export const KB_META_LAST_HEAD_SHA = 'last_known_head_sha';
237
- export const KB_META_COVERAGE_LAST_SOURCE_PATH = 'coverage_last_source_path';
238
- export const KB_META_COVERAGE_LAST_SOURCE_MTIME = 'coverage_last_source_mtime';
239
- /** Write (or overwrite) a key-value pair in `kb_meta`. */
240
- export function setKbMeta(db, key, value) {
241
- db.prepare('INSERT OR REPLACE INTO kb_meta (key, value) VALUES (?, ?)').run(key, value);
316
+ function ensureEnrichmentSchema(db) {
317
+ for (const migration of ENRICHMENT_SCHEMA_MIGRATIONS) {
318
+ if (!hasTableColumn(db, migration.table, migration.column)) {
319
+ db.exec(migration.sql);
320
+ }
321
+ }
322
+ for (const indexMigration of ENRICHMENT_INDEX_MIGRATIONS) {
323
+ db.exec(indexMigration);
324
+ }
325
+ }
326
+ function hasTableColumn(db, table, column) {
327
+ const rows = db.pragma(`table_info(${table})`);
328
+ return rows.some((row) => row.name === column);
242
329
  }
243
- /** Read a value from `kb_meta`; returns `undefined` if the key is absent. */
244
- export function getKbMeta(db, key) {
245
- const row = db.prepare('SELECT value FROM kb_meta WHERE key = ?').get(key);
330
+ // ─── lore_meta helpers ──────────────────────────────────────────────────────────
331
+ export const LORE_META_INDEX_CHECKPOINT = 'index_checkpoint';
332
+ export const LORE_META_LAST_HEAD_SHA = 'last_known_head_sha';
333
+ export const LORE_META_COVERAGE_LAST_SOURCE_PATH = 'coverage_last_source_path';
334
+ export const LORE_META_COVERAGE_LAST_SOURCE_MTIME = 'coverage_last_source_mtime';
335
+ /** Write (or overwrite) a key-value pair in `lore_meta`. */
336
+ export function setLoreMeta(db, key, value) {
337
+ db.prepare('INSERT OR REPLACE INTO lore_meta (key, value) VALUES (?, ?)').run(key, value);
338
+ }
339
+ /** Read a value from `lore_meta`; returns `undefined` if the key is absent. */
340
+ export function getLoreMeta(db, key) {
341
+ const row = db.prepare('SELECT value FROM lore_meta WHERE key = ?').get(key);
246
342
  return row?.value;
247
343
  }
248
344
  // ─── Vec0 virtual tables ──────────────────────────────────────────────────────
249
345
  /**
250
- * Loads the sqlite-vec extension and creates the `symbol_embeddings` and
251
- * `symbol_semantic_embeddings` vec0 virtual tables with the given dimension.
252
- * Also stores `embedding_dims` in `kb_meta` for validation on reopen.
346
+ * Loads the sqlite-vec extension and creates the `symbol_embeddings`,
347
+ * `symbol_semantic_embeddings`, and `commit_embeddings` vec0 virtual tables
348
+ * with the given dimension.
349
+ * Also stores `embedding_dims` in `lore_meta` for validation on reopen.
253
350
  *
254
351
  * This function is idempotent: it is safe to call multiple times with the
255
352
  * same `dims` value.
@@ -269,7 +366,10 @@ export function createVec0Tables(db, dims) {
269
366
  CREATE VIRTUAL TABLE IF NOT EXISTS symbol_semantic_embeddings USING vec0(
270
367
  embedding FLOAT[${dims}]
271
368
  );
369
+ CREATE VIRTUAL TABLE IF NOT EXISTS commit_embeddings USING vec0(
370
+ embedding FLOAT[${dims}]
371
+ );
272
372
  `);
273
- setKbMeta(db, 'embedding_dims', String(dims));
373
+ setLoreMeta(db, 'embedding_dims', String(dims));
274
374
  }
275
375
  //# sourceMappingURL=db.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"db.js","sourceRoot":"","sources":["../../src/indexer/db.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AACtC,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAKlD,gFAAgF;AAEhF,MAAM,GAAG,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4MX,CAAC;AAEF,iFAAiF;AAEjF;;;;;GAKG;AACH,MAAM,UAAU,MAAM,CAAC,IAAY;IACjC,MAAM,EAAE,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC;IAE9B,sEAAsE;IACtE,EAAE,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;IAChC,EAAE,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC;IAE/B,6CAA6C;IAC7C,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAEb,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,iFAAiF;AAEjF,MAAM,CAAC,MAAM,wBAAwB,GAAG,kBAAkB,CAAC;AAC3D,MAAM,CAAC,MAAM,qBAAqB,GAAG,qBAAqB,CAAC;AAC3D,MAAM,CAAC,MAAM,iCAAiC,GAAG,2BAA2B,CAAC;AAC7E,MAAM,CAAC,MAAM,kCAAkC,GAAG,4BAA4B,CAAC;AAE/E,0DAA0D;AAC1D,MAAM,UAAU,SAAS,CAAC,EAAqB,EAAE,GAAW,EAAE,KAAa;IACzE,EAAE,CAAC,OAAO,CAAC,2DAA2D,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AAC1F,CAAC;AAED,6EAA6E;AAC7E,MAAM,UAAU,SAAS,CAAC,EAAqB,EAAE,GAAW;IAC1D,MAAM,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,yCAAyC,CAAC,CAAC,GAAG,CAAC,GAAG,CAE5D,CAAC;IACd,OAAO,GAAG,EAAE,KAAK,CAAC;AACpB,CAAC;AAED,iFAAiF;AAEjF;;;;;;;;;;GAUG;AACH,MAAM,UAAU,gBAAgB,CAAC,EAAqB,EAAE,IAAY;IAClE,wCAAwC;IACxC,yFAAyF;IACzF,MAAM,SAAS,GAAG,UAAU,CAAC,YAAY,CAA0C,CAAC;IACpF,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAEnB,EAAE,CAAC,IAAI,CAAC;;wBAEc,IAAI;;;wBAGJ,IAAI;;GAEzB,CAAC,CAAC;IAEH,SAAS,CAAC,EAAE,EAAE,gBAAgB,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;AAChD,CAAC"}
1
+ {"version":3,"file":"db.js","sourceRoot":"","sources":["../../src/indexer/db.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,42 @@
1
+ export type DocumentKind = 'readme' | 'adr' | 'architecture' | 'design' | 'guide' | 'changelog' | 'reference' | 'text';
2
+ export interface DocumentSection {
3
+ title: string;
4
+ depth: number;
5
+ headingPath: string[];
6
+ line: number;
7
+ }
8
+ export interface DocumentationFile {
9
+ path: string;
10
+ kind: DocumentKind;
11
+ title: string;
12
+ content: string;
13
+ hash: string;
14
+ sections: DocumentSection[];
15
+ chunks: DocumentChunk[];
16
+ }
17
+ export interface DocumentChunk {
18
+ sectionIndex: number;
19
+ title: string;
20
+ depth: number;
21
+ headingPath: string[];
22
+ lineStart: number;
23
+ lineEnd: number;
24
+ content: string;
25
+ hash: string;
26
+ }
27
+ export interface DocsDiscoveryConfig {
28
+ rootDir: string;
29
+ includeGlobs?: string[];
30
+ excludeGlobs?: string[];
31
+ extensions?: string[];
32
+ }
33
+ export declare const DEFAULT_DOC_EXTENSIONS: string[];
34
+ export declare const DEFAULT_DOC_INCLUDE_GLOBS: string[];
35
+ export declare function discoverDocumentationFiles(config: DocsDiscoveryConfig): Promise<DocumentationFile[]>;
36
+ export declare function inferDocumentKind(filePath: string): DocumentKind;
37
+ export declare function inferDocumentTitle(filePath: string, content: string): string;
38
+ export declare function inferDocumentSections(filePath: string, content: string): DocumentSection[];
39
+ export declare function inferDocumentChunks(filePath: string, content: string, sections: DocumentSection[]): DocumentChunk[];
40
+ export declare function inferSeededDocNoteKey(doc: Pick<DocumentationFile, 'path' | 'kind'>): string | null;
41
+ export declare function buildDocNoteScope(docPath: string, branch: string): string;
42
+ //# sourceMappingURL=docs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"docs.d.ts","sourceRoot":"","sources":["../../src/indexer/docs.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,YAAY,GACpB,QAAQ,GACR,KAAK,GACL,cAAc,GACd,QAAQ,GACR,OAAO,GACP,WAAW,GACX,WAAW,GACX,MAAM,CAAC;AAEX,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,YAAY,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,eAAe,EAAE,CAAC;IAC5B,MAAM,EAAE,aAAa,EAAE,CAAC;CACzB;AAED,MAAM,WAAW,aAAa;IAC5B,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;CACvB;AAaD,eAAO,MAAM,sBAAsB,UAAmC,CAAC;AAEvE,eAAO,MAAM,yBAAyB,UAOrC,CAAC;AAKF,wBAAsB,0BAA0B,CAAC,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC,CA2C1G;AAED,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,YAAY,CA4BhE;AAED,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAU5E;AAED,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,eAAe,EAAE,CAiC1F;AAED,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,eAAe,EAAE,GAC1B,aAAa,EAAE,CAwCjB;AAED,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,IAAI,CAAC,iBAAiB,EAAE,MAAM,GAAG,MAAM,CAAC,GAAG,MAAM,GAAG,IAAI,CAkBlG;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAEzE"}
@@ -0,0 +1,214 @@
1
+ import fg from 'fast-glob';
2
+ import { basename, extname } from 'node:path';
3
+ import { readFileSync } from 'node:fs';
4
+ import { createHash } from 'node:crypto';
5
+ const DEFAULT_EXCLUDES = [
6
+ '**/node_modules/**',
7
+ '**/.git/**',
8
+ '**/dist/**',
9
+ '**/build/**',
10
+ '**/__pycache__/**',
11
+ '**/target/**',
12
+ ];
13
+ export const DEFAULT_DOC_EXTENSIONS = ['.md', '.rst', '.adoc', '.txt'];
14
+ export const DEFAULT_DOC_INCLUDE_GLOBS = [
15
+ '**/[Rr][Ee][Aa][Dd][Mm][Ee]{,.*}',
16
+ '**/docs/**/*.{md,rst,adoc,txt}',
17
+ '**/{adr,adrs,ADR,ADRS}/**/*.{md,rst,adoc,txt}',
18
+ '**/{ADR,adr}-*.{md,rst,adoc,txt}',
19
+ '**/[0-9][0-9][0-9][0-9]-*.{md,rst,adoc,txt}',
20
+ '{architecture,ARCHITECTURE,design,DESIGN,overview,OVERVIEW,changelog,CHANGELOG,guide,GUIDE}*.{md,rst,adoc,txt}',
21
+ ];
22
+ const MARKDOWN_HEADING_RE = /^(#{1,6})\s+(.+?)\s*#*\s*$/;
23
+ const SEEDABLE_DOC_KINDS = new Set(['readme', 'architecture', 'adr']);
24
+ export async function discoverDocumentationFiles(config) {
25
+ const includePatterns = config.includeGlobs && config.includeGlobs.length > 0
26
+ ? config.includeGlobs
27
+ : DEFAULT_DOC_INCLUDE_GLOBS;
28
+ const ignorePatterns = [...DEFAULT_EXCLUDES, ...(config.excludeGlobs ?? [])];
29
+ const configuredExtensions = config.extensions && config.extensions.length > 0
30
+ ? config.extensions
31
+ : DEFAULT_DOC_EXTENSIONS;
32
+ const allowedExtensions = new Set(configuredExtensions.map(ext => ext.toLowerCase()));
33
+ const candidatePaths = await fg(includePatterns, {
34
+ cwd: config.rootDir,
35
+ absolute: true,
36
+ onlyFiles: true,
37
+ ignore: ignorePatterns,
38
+ dot: false,
39
+ caseSensitiveMatch: false,
40
+ });
41
+ const uniqueSortedPaths = [...new Set(candidatePaths)].sort((a, b) => a.localeCompare(b));
42
+ const docs = [];
43
+ for (const filePath of uniqueSortedPaths) {
44
+ const ext = extname(filePath).toLowerCase();
45
+ if (!allowedExtensions.has(ext) && !isReadmeVariant(filePath)) {
46
+ continue;
47
+ }
48
+ const content = readFileSync(filePath, 'utf8');
49
+ const sections = inferDocumentSections(filePath, content);
50
+ const chunks = inferDocumentChunks(filePath, content, sections);
51
+ docs.push({
52
+ path: filePath,
53
+ kind: inferDocumentKind(filePath),
54
+ title: inferDocumentTitle(filePath, content),
55
+ content,
56
+ hash: createHash('sha256').update(content).digest('hex'),
57
+ sections,
58
+ chunks,
59
+ });
60
+ }
61
+ return docs;
62
+ }
63
+ export function inferDocumentKind(filePath) {
64
+ const normalizedPath = filePath.replace(/\\/g, '/').toLowerCase();
65
+ const filename = basename(normalizedPath, extname(normalizedPath));
66
+ if (filename.startsWith('readme'))
67
+ return 'readme';
68
+ if (normalizedPath.includes('/adr/') ||
69
+ normalizedPath.includes('/adrs/') ||
70
+ filename.startsWith('adr') ||
71
+ /\/\d{4}-/.test(normalizedPath)) {
72
+ return 'adr';
73
+ }
74
+ if (filename.includes('changelog'))
75
+ return 'changelog';
76
+ if (filename.includes('architecture') || filename === 'arch')
77
+ return 'architecture';
78
+ if (filename.includes('design') || filename.includes('overview'))
79
+ return 'design';
80
+ if (filename.includes('guide') ||
81
+ filename.includes('tutorial') ||
82
+ filename.includes('how-to') ||
83
+ filename.includes('howto') ||
84
+ filename.includes('contributing') ||
85
+ normalizedPath.includes('/docs/')) {
86
+ return 'guide';
87
+ }
88
+ if (extname(normalizedPath) === '.txt')
89
+ return 'text';
90
+ return 'reference';
91
+ }
92
+ export function inferDocumentTitle(filePath, content) {
93
+ const markdownHeading = extractFirstMarkdownHeading(content);
94
+ if (markdownHeading)
95
+ return markdownHeading;
96
+ const filename = basename(filePath, extname(filePath));
97
+ return filename
98
+ .replace(/[_-]+/g, ' ')
99
+ .replace(/\s+/g, ' ')
100
+ .trim()
101
+ .replace(/\b\w/g, char => char.toUpperCase());
102
+ }
103
+ export function inferDocumentSections(filePath, content) {
104
+ const ext = extname(filePath).toLowerCase();
105
+ if (ext !== '.md')
106
+ return [];
107
+ const sections = [];
108
+ const headingStack = [];
109
+ const lines = content.split(/\r?\n/);
110
+ for (let index = 0; index < lines.length; index += 1) {
111
+ const line = lines[index];
112
+ if (!line)
113
+ continue;
114
+ const headingMatch = line.match(MARKDOWN_HEADING_RE);
115
+ if (!headingMatch)
116
+ continue;
117
+ const marker = headingMatch[1];
118
+ const rawTitle = headingMatch[2];
119
+ if (!marker || !rawTitle)
120
+ continue;
121
+ const depth = marker.length;
122
+ const title = rawTitle.trim();
123
+ headingStack[depth - 1] = title;
124
+ headingStack.length = depth;
125
+ sections.push({
126
+ title,
127
+ depth,
128
+ headingPath: headingStack.slice(),
129
+ line: index + 1,
130
+ });
131
+ }
132
+ return sections;
133
+ }
134
+ export function inferDocumentChunks(filePath, content, sections) {
135
+ const lines = content.split(/\r?\n/);
136
+ const ext = extname(filePath).toLowerCase();
137
+ if (ext !== '.md' || sections.length === 0) {
138
+ return [{
139
+ sectionIndex: 0,
140
+ title: inferDocumentTitle(filePath, content),
141
+ depth: 0,
142
+ headingPath: [],
143
+ lineStart: 1,
144
+ lineEnd: Math.max(1, lines.length),
145
+ content,
146
+ hash: createHash('sha256').update(content).digest('hex'),
147
+ }];
148
+ }
149
+ const chunks = [];
150
+ for (let index = 0; index < sections.length; index += 1) {
151
+ const section = sections[index];
152
+ const nextSection = sections[index + 1];
153
+ if (!section)
154
+ continue;
155
+ const lineStart = section.line;
156
+ const lineEnd = nextSection ? nextSection.line - 1 : lines.length;
157
+ const chunkContent = lines.slice(Math.max(0, lineStart - 1), Math.max(lineStart - 1, lineEnd)).join('\n');
158
+ chunks.push({
159
+ sectionIndex: index,
160
+ title: section.title,
161
+ depth: section.depth,
162
+ headingPath: section.headingPath,
163
+ lineStart,
164
+ lineEnd,
165
+ content: chunkContent,
166
+ hash: createHash('sha256').update(chunkContent).digest('hex'),
167
+ });
168
+ }
169
+ return chunks;
170
+ }
171
+ export function inferSeededDocNoteKey(doc) {
172
+ if (!SEEDABLE_DOC_KINDS.has(doc.kind)) {
173
+ return null;
174
+ }
175
+ if (doc.kind === 'readme') {
176
+ return 'docs/readme';
177
+ }
178
+ const stem = basename(doc.path, extname(doc.path));
179
+ const slug = toSlug(stem) || 'doc';
180
+ if (doc.kind === 'architecture') {
181
+ return slug === 'architecture' || slug === 'arch'
182
+ ? 'docs/architecture'
183
+ : `docs/architecture/${slug}`;
184
+ }
185
+ return `docs/adr/${slug}`;
186
+ }
187
+ export function buildDocNoteScope(docPath, branch) {
188
+ return `doc:${docPath}@${branch}`;
189
+ }
190
+ function extractFirstMarkdownHeading(content) {
191
+ const lines = content.split(/\r?\n/);
192
+ for (const line of lines) {
193
+ const headingMatch = line.match(MARKDOWN_HEADING_RE);
194
+ if (headingMatch) {
195
+ const rawTitle = headingMatch[2];
196
+ if (rawTitle) {
197
+ return rawTitle.trim();
198
+ }
199
+ }
200
+ }
201
+ return undefined;
202
+ }
203
+ function isReadmeVariant(filePath) {
204
+ const lowerName = basename(filePath).toLowerCase();
205
+ return lowerName === 'readme' || lowerName.startsWith('readme.');
206
+ }
207
+ function toSlug(value) {
208
+ return value
209
+ .trim()
210
+ .toLowerCase()
211
+ .replace(/[^a-z0-9]+/g, '-')
212
+ .replace(/^-+|-+$/g, '');
213
+ }
214
+ //# sourceMappingURL=docs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"docs.js","sourceRoot":"","sources":["../../src/indexer/docs.ts"],"names":[],"mappings":"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"}
@@ -27,6 +27,13 @@ export interface EmbeddingProvider {
27
27
  /** Release the underlying process / resources. */
28
28
  dispose(): Promise<void>;
29
29
  }
30
+ export interface StructuralEmbeddingInput {
31
+ name: string;
32
+ signature: string | null;
33
+ resolvedTypeSignature?: string | null;
34
+ resolvedReturnType?: string | null;
35
+ }
36
+ export declare function buildStructuralEmbeddingText(input: StructuralEmbeddingInput): string;
30
37
  /**
31
38
  * Communicates with a Python subprocess via stdin/stdout NDJSON to produce
32
39
  * embeddings using a sentence-transformers compatible model.
@@ -1 +1 @@
1
- {"version":3,"file":"embedder.d.ts","sourceRoot":"","sources":["../../src/indexer/embedder.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAOH,MAAM,WAAW,iBAAiB;IAChC,kEAAkE;IAClE,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAC5C,uCAAuC;IACvC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B;;;OAGG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB;;;OAGG;IACH,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACtB,kDAAkD;IAClD,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1B;AAoCD;;;;;;;GAOG;AACH,qBAAa,4BAA6B,YAAW,iBAAiB;IACpE,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,OAAO,CAAC,KAAK,CAAuB;IAEpC,OAAO,CAAC,IAAI,CAA6B;IACzC,OAAO,CAAC,EAAE,CAAmC;IAC7C,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAwB;IACxD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,wEAAwE;IACxE,OAAO,CAAC,WAAW,CAAS;gBAEhB,SAAS,EAAE,MAAM,EAAE,SAAS,SAAY;IAKpD,gEAAgE;IAChE,IAAI,IAAI,IAAI,MAAM,CAKjB;IAED;;;OAGG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAgCrB,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;IAW3C,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAa9B,sEAAsE;IACtE,OAAO,CAAC,YAAY;CAuCrB;AAID,0EAA0E;AAC1E,eAAO,MAAM,uBAAuB,4BAA4B,CAAC;AAEjE;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,EAC1B,SAAS,SAAY,GACpB,4BAA4B,CAG9B"}
1
+ {"version":3,"file":"embedder.d.ts","sourceRoot":"","sources":["../../src/indexer/embedder.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAOH,MAAM,WAAW,iBAAiB;IAChC,kEAAkE;IAClE,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAC5C,uCAAuC;IACvC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B;;;OAGG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB;;;OAGG;IACH,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACtB,kDAAkD;IAClD,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1B;AAED,MAAM,WAAW,wBAAwB;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,qBAAqB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtC,kBAAkB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACpC;AAED,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,wBAAwB,GAAG,MAAM,CASpF;AAoCD;;;;;;;GAOG;AACH,qBAAa,4BAA6B,YAAW,iBAAiB;IACpE,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,OAAO,CAAC,KAAK,CAAuB;IAEpC,OAAO,CAAC,IAAI,CAA6B;IACzC,OAAO,CAAC,EAAE,CAAmC;IAC7C,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAwB;IACxD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,wEAAwE;IACxE,OAAO,CAAC,WAAW,CAAS;gBAEhB,SAAS,EAAE,MAAM,EAAE,SAAS,SAAY;IAKpD,gEAAgE;IAChE,IAAI,IAAI,IAAI,MAAM,CAKjB;IAED;;;OAGG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAgCrB,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;IAW3C,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAa9B,sEAAsE;IACtE,OAAO,CAAC,YAAY;CAuCrB;AAID,0EAA0E;AAC1E,eAAO,MAAM,uBAAuB,4BAA4B,CAAC;AAEjE;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,EAC1B,SAAS,SAAY,GACpB,4BAA4B,CAG9B"}
@@ -11,6 +11,16 @@
11
11
  */
12
12
  import { spawn } from 'node:child_process';
13
13
  import * as readline from 'node:readline';
14
+ export function buildStructuralEmbeddingText(input) {
15
+ const parts = [
16
+ input.signature?.trim() ?? '',
17
+ input.resolvedTypeSignature?.trim() ?? '',
18
+ input.resolvedReturnType?.trim() ?? '',
19
+ input.name.trim(),
20
+ ].filter((part) => part.length > 0);
21
+ const uniqueParts = [...new Set(parts)];
22
+ return uniqueParts.join('\n');
23
+ }
14
24
  // ─── Python bootstrap script ──────────────────────────────────────────────────
15
25
  /**
16
26
  * Inline Python script that:
@@ -1 +1 @@
1
- {"version":3,"file":"embedder.js","sourceRoot":"","sources":["../../src/indexer/embedder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"embedder.js","sourceRoot":"","sources":["../../src/indexer/embedder.ts"],"names":[],"mappings":"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"}
@@ -5,7 +5,7 @@
5
5
  * embedding generation (`sentence-transformers`, `torch`). If missing,
6
6
  * attempts an automatic `pip install` before the first embedding run.
7
7
  *
8
- * This is only used when `kbIndex.embeddings.enabled` is `true` in the
8
+ * This is only used when `loreIndex.embeddings.enabled` is `true` in the
9
9
  * migration config.
10
10
  */
11
11
  /**
@@ -5,7 +5,7 @@
5
5
  * embedding generation (`sentence-transformers`, `torch`). If missing,
6
6
  * attempts an automatic `pip install` before the first embedding run.
7
7
  *
8
- * This is only used when `kbIndex.embeddings.enabled` is `true` in the
8
+ * This is only used when `loreIndex.embeddings.enabled` is `true` in the
9
9
  * migration config.
10
10
  */
11
11
  import { execFile } from 'node:child_process';
@@ -6,6 +6,13 @@
6
6
  */
7
7
  import type Parser from 'tree-sitter';
8
8
  /** A symbol (function, class, struct, etc.) extracted from a source file. */
9
+ export interface DeclarationSurface {
10
+ /** True when symbol is externally visible from the module/package boundary. */
11
+ isPublic: boolean;
12
+ /** True when symbol comes from a declaration-only API surface (no implementation body). */
13
+ isDeclaration: boolean;
14
+ }
15
+ /** A symbol (function, class, struct, etc.) extracted from a source file. */
9
16
  export interface RawSymbol {
10
17
  /** Simple name of the symbol (e.g. `myFunc`, `MyStruct`). */
11
18
  name: string;
@@ -13,12 +20,18 @@ export interface RawSymbol {
13
20
  kind: string;
14
21
  /** 0-indexed start line in the source file. */
15
22
  startLine: number;
23
+ /** 0-indexed start character in the source line (best-effort, optional). */
24
+ startCharacter?: number;
16
25
  /** 0-indexed end line in the source file. */
17
26
  endLine: number;
18
27
  /** Textual signature of the symbol (declaration without body). */
19
28
  signature: string;
20
29
  /** Documentation comment immediately preceding the symbol, if extracted by the language extractor. */
21
30
  docComment?: string;
31
+ /** True when declaration is exported from its module. */
32
+ isExported?: boolean;
33
+ /** Normalized declaration-surface metadata for dependency API indexing. */
34
+ declarationSurface?: DeclarationSurface;
22
35
  /** Original AST node for the symbol declaration/expression, when available. */
23
36
  astNode?: Parser.SyntaxNode;
24
37
  }
@@ -39,6 +52,8 @@ export interface RawCallRef {
39
52
  calleeRaw: string;
40
53
  /** 0-indexed line of the call expression. */
41
54
  line: number;
55
+ /** 0-indexed character in the call line (best-effort, optional). */
56
+ character?: number;
42
57
  }
43
58
  /** An environment-variable reference found in a source file. */
44
59
  export interface RawEnvRef {
@@ -115,4 +130,11 @@ export declare function findFirst(node: Parser.SyntaxNode, type: string): Parser
115
130
  export declare function nodeSignature(node: Parser.SyntaxNode): string;
116
131
  /** Returns an empty `ExtractionResult`. */
117
132
  export declare function emptyResult(): ExtractionResult;
133
+ /**
134
+ * Returns true when a symbol belongs to the public declaration API surface.
135
+ *
136
+ * Falls back to `isExported` so existing extractors remain compatible while
137
+ * they migrate to `declarationSurface`.
138
+ */
139
+ export declare function isPublicDeclarationSurfaceSymbol(symbol: RawSymbol): boolean;
118
140
  //# sourceMappingURL=types.d.ts.map