@jafreck/lore 0.2.4 → 0.2.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (141) hide show
  1. package/README.md +22 -13
  2. package/dist/cli.js +81 -14
  3. package/dist/cli.js.map +1 -1
  4. package/dist/indexer/call-graph.d.ts +24 -7
  5. package/dist/indexer/call-graph.d.ts.map +1 -1
  6. package/dist/indexer/call-graph.js +154 -22
  7. package/dist/indexer/call-graph.js.map +1 -1
  8. package/dist/indexer/config-parser.js +6 -1
  9. package/dist/indexer/config-parser.js.map +1 -1
  10. package/dist/indexer/coverage.js +3 -1
  11. package/dist/indexer/coverage.js.map +1 -1
  12. package/dist/indexer/db.d.ts.map +1 -1
  13. package/dist/indexer/db.js +43 -0
  14. package/dist/indexer/db.js.map +1 -1
  15. package/dist/indexer/docs.d.ts.map +1 -1
  16. package/dist/indexer/docs.js +4 -0
  17. package/dist/indexer/docs.js.map +1 -1
  18. package/dist/indexer/embedder.d.ts.map +1 -1
  19. package/dist/indexer/embedder.js +5 -0
  20. package/dist/indexer/embedder.js.map +1 -1
  21. package/dist/indexer/extractors/bash.d.ts.map +1 -1
  22. package/dist/indexer/extractors/bash.js +29 -1
  23. package/dist/indexer/extractors/bash.js.map +1 -1
  24. package/dist/indexer/extractors/c.d.ts +5 -2
  25. package/dist/indexer/extractors/c.d.ts.map +1 -1
  26. package/dist/indexer/extractors/c.js +277 -8
  27. package/dist/indexer/extractors/c.js.map +1 -1
  28. package/dist/indexer/extractors/cpp.d.ts +5 -2
  29. package/dist/indexer/extractors/cpp.d.ts.map +1 -1
  30. package/dist/indexer/extractors/cpp.js +349 -3
  31. package/dist/indexer/extractors/cpp.js.map +1 -1
  32. package/dist/indexer/extractors/csharp.d.ts.map +1 -1
  33. package/dist/indexer/extractors/csharp.js +166 -1
  34. package/dist/indexer/extractors/csharp.js.map +1 -1
  35. package/dist/indexer/extractors/dart.d.ts.map +1 -1
  36. package/dist/indexer/extractors/dart.js +134 -1
  37. package/dist/indexer/extractors/dart.js.map +1 -1
  38. package/dist/indexer/extractors/elixir.d.ts.map +1 -1
  39. package/dist/indexer/extractors/elixir.js +45 -0
  40. package/dist/indexer/extractors/elixir.js.map +1 -1
  41. package/dist/indexer/extractors/elm.d.ts.map +1 -1
  42. package/dist/indexer/extractors/elm.js +33 -0
  43. package/dist/indexer/extractors/elm.js.map +1 -1
  44. package/dist/indexer/extractors/go.d.ts.map +1 -1
  45. package/dist/indexer/extractors/go.js +206 -1
  46. package/dist/indexer/extractors/go.js.map +1 -1
  47. package/dist/indexer/extractors/haskell.d.ts.map +1 -1
  48. package/dist/indexer/extractors/haskell.js +29 -0
  49. package/dist/indexer/extractors/haskell.js.map +1 -1
  50. package/dist/indexer/extractors/java.d.ts.map +1 -1
  51. package/dist/indexer/extractors/java.js +170 -1
  52. package/dist/indexer/extractors/java.js.map +1 -1
  53. package/dist/indexer/extractors/javascript.d.ts.map +1 -1
  54. package/dist/indexer/extractors/javascript.js +24 -2
  55. package/dist/indexer/extractors/javascript.js.map +1 -1
  56. package/dist/indexer/extractors/julia.d.ts.map +1 -1
  57. package/dist/indexer/extractors/julia.js +23 -1
  58. package/dist/indexer/extractors/julia.js.map +1 -1
  59. package/dist/indexer/extractors/kotlin.d.ts.map +1 -1
  60. package/dist/indexer/extractors/kotlin.js +122 -1
  61. package/dist/indexer/extractors/kotlin.js.map +1 -1
  62. package/dist/indexer/extractors/lua.d.ts.map +1 -1
  63. package/dist/indexer/extractors/lua.js +19 -1
  64. package/dist/indexer/extractors/lua.js.map +1 -1
  65. package/dist/indexer/extractors/objc.d.ts.map +1 -1
  66. package/dist/indexer/extractors/objc.js +171 -1
  67. package/dist/indexer/extractors/objc.js.map +1 -1
  68. package/dist/indexer/extractors/ocaml.d.ts.map +1 -1
  69. package/dist/indexer/extractors/ocaml.js +29 -0
  70. package/dist/indexer/extractors/ocaml.js.map +1 -1
  71. package/dist/indexer/extractors/php.d.ts.map +1 -1
  72. package/dist/indexer/extractors/php.js +133 -1
  73. package/dist/indexer/extractors/php.js.map +1 -1
  74. package/dist/indexer/extractors/python.d.ts.map +1 -1
  75. package/dist/indexer/extractors/python.js +24 -3
  76. package/dist/indexer/extractors/python.js.map +1 -1
  77. package/dist/indexer/extractors/ruby.d.ts.map +1 -1
  78. package/dist/indexer/extractors/ruby.js +23 -1
  79. package/dist/indexer/extractors/ruby.js.map +1 -1
  80. package/dist/indexer/extractors/rust.d.ts.map +1 -1
  81. package/dist/indexer/extractors/rust.js +139 -2
  82. package/dist/indexer/extractors/rust.js.map +1 -1
  83. package/dist/indexer/extractors/scala.d.ts.map +1 -1
  84. package/dist/indexer/extractors/scala.js +24 -1
  85. package/dist/indexer/extractors/scala.js.map +1 -1
  86. package/dist/indexer/extractors/swift.d.ts.map +1 -1
  87. package/dist/indexer/extractors/swift.js +129 -1
  88. package/dist/indexer/extractors/swift.js.map +1 -1
  89. package/dist/indexer/extractors/types.d.ts +78 -2
  90. package/dist/indexer/extractors/types.d.ts.map +1 -1
  91. package/dist/indexer/extractors/types.js +167 -8
  92. package/dist/indexer/extractors/types.js.map +1 -1
  93. package/dist/indexer/extractors/typescript.d.ts.map +1 -1
  94. package/dist/indexer/extractors/typescript.js +217 -1
  95. package/dist/indexer/extractors/typescript.js.map +1 -1
  96. package/dist/indexer/extractors/zig.d.ts.map +1 -1
  97. package/dist/indexer/extractors/zig.js +30 -0
  98. package/dist/indexer/extractors/zig.js.map +1 -1
  99. package/dist/indexer/git-history.d.ts.map +1 -1
  100. package/dist/indexer/git-history.js +4 -8
  101. package/dist/indexer/git-history.js.map +1 -1
  102. package/dist/indexer/git-hooks.js +1 -1
  103. package/dist/indexer/git-hooks.js.map +1 -1
  104. package/dist/indexer/index.d.ts +24 -1
  105. package/dist/indexer/index.d.ts.map +1 -1
  106. package/dist/indexer/index.js +199 -68
  107. package/dist/indexer/index.js.map +1 -1
  108. package/dist/indexer/lsp/client.d.ts.map +1 -1
  109. package/dist/indexer/lsp/client.js +40 -15
  110. package/dist/indexer/lsp/client.js.map +1 -1
  111. package/dist/indexer/lsp/config.d.ts.map +1 -1
  112. package/dist/indexer/lsp/config.js +18 -4
  113. package/dist/indexer/lsp/config.js.map +1 -1
  114. package/dist/indexer/poller.d.ts +8 -0
  115. package/dist/indexer/poller.d.ts.map +1 -1
  116. package/dist/indexer/poller.js +3 -1
  117. package/dist/indexer/poller.js.map +1 -1
  118. package/dist/indexer/resolver.d.ts.map +1 -1
  119. package/dist/indexer/resolver.js +8 -4
  120. package/dist/indexer/resolver.js.map +1 -1
  121. package/dist/indexer/watcher.d.ts +8 -0
  122. package/dist/indexer/watcher.d.ts.map +1 -1
  123. package/dist/indexer/watcher.js +18 -1
  124. package/dist/indexer/watcher.js.map +1 -1
  125. package/dist/lore-server/db.d.ts.map +1 -1
  126. package/dist/lore-server/db.js +28 -24
  127. package/dist/lore-server/db.js.map +1 -1
  128. package/dist/lore-server/server.d.ts.map +1 -1
  129. package/dist/lore-server/server.js +12 -51
  130. package/dist/lore-server/server.js.map +1 -1
  131. package/dist/lore-server/tools/graph.d.ts +4 -3
  132. package/dist/lore-server/tools/graph.d.ts.map +1 -1
  133. package/dist/lore-server/tools/graph.js +48 -10
  134. package/dist/lore-server/tools/graph.js.map +1 -1
  135. package/dist/lore-server/tools/notes.d.ts.map +1 -1
  136. package/dist/lore-server/tools/notes.js +6 -2
  137. package/dist/lore-server/tools/notes.js.map +1 -1
  138. package/dist/lore-server/tools/search.d.ts.map +1 -1
  139. package/dist/lore-server/tools/search.js +46 -14
  140. package/dist/lore-server/tools/search.js.map +1 -1
  141. package/package.json +2 -2
package/README.md CHANGED
@@ -1,6 +1,7 @@
1
1
  # Lore
2
2
 
3
3
  [![CI](https://github.com/jafreck/Lore/actions/workflows/ci.yml/badge.svg?branch=main)](https://github.com/jafreck/Lore/actions/workflows/ci.yml)
4
+ [![codecov](https://codecov.io/gh/jafreck/Lore/branch/main/graph/badge.svg)](https://codecov.io/gh/jafreck/Lore)
4
5
  [![npm version](https://img.shields.io/npm/v/@jafreck/lore)](https://www.npmjs.com/package/@jafreck/lore)
5
6
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)
6
7
  [![Node.js](https://img.shields.io/badge/node-%3E%3D22.0.0-brightgreen)](https://nodejs.org)
@@ -8,13 +9,13 @@
8
9
 
9
10
  **The teammate that has seen it all**
10
11
 
11
- Lore is your agent's institutional knowledge over the codebase — it knows what was built, why it changed, and how it all connects. Lore indexes your code and git history into a structured knowledge base that agents query through MCP. It maps symbols, imports, call relationships, and git history — with optional embeddings for semantic search — so agents can reason about your codebase
12
+ Lore is your agent's institutional knowledge over the codebase — it knows what was built, why it changed, and how it all connects. Lore indexes your code and git history into a structured knowledge base that agents query through MCP. It maps symbols, imports, call relationships, type relationships, routes, annotations, and git history — with optional embeddings for semantic search — so agents can reason about your codebase
12
13
  without re-reading it from scratch.
13
14
 
14
15
  ## What Lore does
15
16
 
16
- - Parses source files and extracts symbols, imports, and call refs
17
- - Resolves internal vs external imports and builds call/import graph edges
17
+ - Parses source files and extracts symbols, imports, call refs, type refs, annotations, and API routes across all 24 supported languages
18
+ - Resolves internal vs external imports and builds call/import/module/inheritance/type-dependency graph edges
18
19
  - Discovers and indexes documentation (`.md`, `.rst`, `.adoc`, `.txt`) with inferred kinds/titles
19
20
  - Stores everything in a normalized SQL schema with optional vector search
20
21
  - Enables RAG-style retrieval with semantic/fused search across symbols and doc sections
@@ -35,9 +36,9 @@ flowchart LR
35
36
  end
36
37
 
37
38
  subgraph Lore Indexer
38
- WALK[Walker] --> PARSE[Parser] --> EXTRACT[Extractors<br/>symbols · imports · call refs]
39
+ WALK[Walker] --> PARSE[Parser] --> EXTRACT[Extractors<br/>symbols · imports · call refs<br/>type refs · routes · annotations]
39
40
  EXTRACT --> RESOLVE[Import Resolver<br/>internal ↔ external]
40
- EXTRACT --> CALLGRAPH[Call-Graph Builder]
41
+ EXTRACT --> CALLGRAPH[Relationship Resolver]
41
42
  EXTRACT -.-> LSPENRICH[LSP Enrichment<br/>type signatures · definition locations]
42
43
  DOCSINGEST[Docs Ingest<br/>sections · headings · notes]
43
44
  GITHIST[Git History Ingest<br/>commits · diffs · refs]
@@ -51,12 +52,15 @@ flowchart LR
51
52
  LOOKUP[lore_lookup]
52
53
  SEARCH[lore_search]
53
54
  DOCS_TOOL[lore_docs]
55
+ ANNOT[lore_annotations]
54
56
  GRAPH[lore_graph]
57
+ ROUTES[lore_routes]
58
+ NOTES[lore_notes_read/write]
59
+ ARCH[lore_architecture]
55
60
  TESTMAP[lore_test_map]
56
61
  SNIPPET[lore_snippet]
57
62
  BLAME[lore_blame]
58
63
  HISTORY[lore_history]
59
- COMMITSTATS[lore_commit_stats]
60
64
  METRICS[lore_metrics]
61
65
  COVERAGE[lore_coverage]
62
66
  WRITEBACK[lore_writeback]
@@ -80,10 +84,10 @@ flowchart LR
80
84
  RESOLVE -.->|optional| EMBED
81
85
  EMBED -.-> DB
82
86
 
83
- DB --- LOOKUP & SEARCH & DOCS_TOOL & GRAPH & TESTMAP & SNIPPET & BLAME & HISTORY & COMMITSTATS & METRICS & COVERAGE & WRITEBACK
87
+ DB --- LOOKUP & SEARCH & DOCS_TOOL & ANNOT & GRAPH & ROUTES & NOTES & ARCH & TESTMAP & SNIPPET & BLAME & HISTORY & METRICS & COVERAGE & WRITEBACK
84
88
  EMBED <-.->|semantic/fused| SEARCH
85
89
 
86
- LOOKUP & SEARCH & DOCS_TOOL & GRAPH & TESTMAP & SNIPPET & BLAME & HISTORY & COMMITSTATS & METRICS & COVERAGE & WRITEBACK <--> MCP_CLIENTS
90
+ LOOKUP & SEARCH & DOCS_TOOL & ANNOT & GRAPH & ROUTES & NOTES & ARCH & TESTMAP & SNIPPET & BLAME & HISTORY & METRICS & COVERAGE & WRITEBACK <--> MCP_CLIENTS
87
91
  ```
88
92
 
89
93
  Lore sits between your codebase and any LLM-powered tool. The **indexer**
@@ -102,8 +106,9 @@ blame/history, and write summaries back.
102
106
  The index stays fresh automatically. You can install **git hooks**
103
107
  (`post-commit`, `post-merge`, etc.) that trigger an incremental refresh on
104
108
  every commit, run a **watch** mode that reacts to filesystem events in
105
- real time, or use **poll** mode for environments where watch events are
106
- unreliable. Each refresh only re-processes files whose content hash has
109
+ real time (with live embedding updates), or use **poll** mode for
110
+ environments where watch events are unreliable (also with live embedding
111
+ updates). Each refresh only re-processes files whose content hash has
107
112
  changed, so updates are fast even on large repositories.
108
113
 
109
114
  See [docs/architecture.md](docs/architecture.md) for the full schema and
@@ -164,12 +169,11 @@ await builder.build();
164
169
  | `lore_notes_write` | Upsert agent-authored notes by key and scope, with optional source hash for staleness tracking |
165
170
  | `lore_notes_read` | Read notes by exact key or key prefix with scope-aware staleness metadata |
166
171
  | `lore_architecture` | Build a component-level architecture view with edges, entry/leaf nodes, and external dependency usage |
167
- | `lore_graph` | Query call/import/module/inheritance edges; call edges include `callee_coverage_percent` |
172
+ | `lore_graph` | Query call/import/module/inheritance/type-dependency edges; call edges include `callee_coverage_percent` |
168
173
  | `lore_snippet` | Return snippets from indexed source snapshots by file path + line range or by symbol name; path/symbol resolution is branch-aware and responses include containing-symbol context metadata (name, kind, start/end lines) when available |
169
174
  | `lore_test_map` | Return mapped test files (with confidence) for a given source file path |
170
175
  | `lore_blame` | Query blame, line-range history, or ownership aggregates with optional symbol targeting, commit-context enrichment, and risk signals |
171
176
  | `lore_history` | Query commit history by file, commit, author, ref, recency, or semantic commit-message similarity |
172
- | `lore_commit_stats` | Git commit analytics: cadence, size, churn, top authors, message patterns, schedule heatmaps, branch activity |
173
177
  | `lore_metrics` | Aggregate index metrics plus coverage/staleness fields |
174
178
  | `lore_coverage` | Symbol-level coverage, uncovered lines, and staleness metadata |
175
179
  | `lore_writeback` | Persist agent-authored symbol summaries |
@@ -469,6 +473,10 @@ npx @jafreck/lore refresh --db ./lore.db --root ./my-project --watch
469
473
  npx @jafreck/lore refresh --db ./lore.db --root ./my-project --poll
470
474
  ```
471
475
 
476
+ Both watch and poll modes support **live embeddings** — when an embedding
477
+ model is configured, changed files have their vectors re-generated
478
+ incrementally during each refresh cycle.
479
+
472
480
  Each refresh only re-processes files whose content hash has changed, so updates
473
481
  are fast even on large repositories.
474
482
 
@@ -540,7 +548,8 @@ npm test
540
548
  npm run coverage
541
549
  ```
542
550
 
543
- CI enforces a minimum 95% coverage threshold.
551
+ CI currently enforces minimum coverage thresholds of 77% statements, 64%
552
+ branches, 80% functions, and 79% lines.
544
553
 
545
554
  ## Publish authentication (npm)
546
555
 
package/dist/cli.js CHANGED
@@ -23,10 +23,10 @@ function usage() {
23
23
  console.error(`Usage:
24
24
  lore index --root <dir> --db <path> [--embedding-model <id>] [--index-deps] [--history] [--history-depth <n>] [--history-all]
25
25
  Index a codebase into a knowledge-base SQLite file
26
- lore mcp --db <path> Start the Lore MCP server (stdio transport)
26
+ lore mcp --db <path> [--root <dir> --watch|--poll] Start the Lore MCP server (stdio transport), optionally with live indexing
27
27
  lore refresh --db <path> --root <dir> [--index-deps] [--history] [--history-depth <n>] [--history-all] Run an incremental index update and exit
28
- lore refresh --db <path> --root <dir> --watch Watch for file changes and refresh automatically
29
- lore refresh --db <path> --root <dir> --poll Poll for file changes and refresh automatically
28
+ lore refresh --db <path> --root <dir> --watch [--embedding-model <id>] Watch for file changes and refresh automatically
29
+ lore refresh --db <path> --root <dir> --poll [--embedding-model <id>] Poll for file changes and refresh automatically
30
30
  lore hooks --db <path> --root <dir> [--history] [--history-depth <n>] [--history-all] [--lsp] [--no-lsp]
31
31
  Install git hooks for automatic refresh on commit/merge/checkout
32
32
  lore ingest-coverage --db <path> --root <dir> --file <path> --format <lcov|cobertura> [--commit <sha>]
@@ -117,7 +117,7 @@ async function main() {
117
117
  : LogLevel.INFO;
118
118
  const resolvedLogFile = logFileRaw
119
119
  ?? (dbPathForLog
120
- ? dbPathForLog.replace(/\.db$/, '.log')
120
+ ? dbPathForLog.replace(/\.[^.]+$/, '.log')
121
121
  : undefined);
122
122
  const log = initLogger({ level: resolvedLogLevel, logFile: resolvedLogFile });
123
123
  if (subcommand === 'index') {
@@ -313,8 +313,46 @@ async function main() {
313
313
  const transport = new StdioServerTransport();
314
314
  await server.connect(transport);
315
315
  log.startup('mcp server ready', { transport: 'stdio' });
316
+ // ── Optional live-index watcher/poller (shares the same embedder) ────
317
+ const watchMode = args.includes('--watch');
318
+ const pollMode = args.includes('--poll');
319
+ const rootDir = flag(args, '--root');
320
+ let refresher;
321
+ if (watchMode || pollMode) {
322
+ if (!rootDir) {
323
+ log.warn('startup', '--root <dir> is required when using --watch or --poll with mcp; live indexing disabled');
324
+ }
325
+ else {
326
+ const walkerConfig = { rootDir };
327
+ const refreshOptions = { embedder };
328
+ if (watchMode) {
329
+ const { FileWatcher } = await import('./indexer/watcher.js');
330
+ const watcher = new FileWatcher(dbPath, walkerConfig, refreshOptions);
331
+ watcher.start();
332
+ refresher = watcher;
333
+ log.startup('watch mode started (shared embedder)', { rootDir, embeddingEnabled: !!embedder });
334
+ }
335
+ else {
336
+ const { FilePoller } = await import('./indexer/poller.js');
337
+ const poller = new FilePoller(dbPath, walkerConfig, refreshOptions);
338
+ poller.start();
339
+ refresher = poller;
340
+ log.startup('poll mode started (shared embedder)', { rootDir, embeddingEnabled: !!embedder });
341
+ }
342
+ }
343
+ }
316
344
  // Signal readiness on stderr so parent processes can detect it.
317
345
  process.stderr.write('READY\n');
346
+ // Clean up on shutdown: stop the refresher, then dispose the shared embedder.
347
+ const shutdown = () => {
348
+ if (refresher)
349
+ refresher.stop();
350
+ if (embedder)
351
+ embedder.dispose().catch(() => { });
352
+ process.exit(0);
353
+ };
354
+ process.on('SIGINT', shutdown);
355
+ process.on('SIGTERM', shutdown);
318
356
  }
319
357
  else if (subcommand === 'refresh') {
320
358
  const dbPath = flag(args, '--db');
@@ -383,23 +421,52 @@ async function main() {
383
421
  lsp: lspSettings,
384
422
  ...(shouldEnableHistory && { history: historyOption }),
385
423
  };
424
+ // Build an optional long-lived embedder for watch/poll modes.
425
+ const embeddingModel = flag(args, '--embedding-model');
426
+ let embedder;
427
+ if ((watchMode || pollMode) && embeddingModel) {
428
+ const { SentenceTransformersProvider } = await import('./indexer/embedder.js');
429
+ const provider = new SentenceTransformersProvider(embeddingModel);
430
+ try {
431
+ await provider.init();
432
+ embedder = provider;
433
+ process.stderr.write(JSON.stringify({ level: 'info', source: 'cli', message: 'embedding model loaded for live updates', embeddingModel }) + '\n');
434
+ }
435
+ catch (err) {
436
+ process.stderr.write(JSON.stringify({ level: 'warn', source: 'cli', message: 'embedding model unavailable, continuing without embeddings', embeddingModel, error: String(err) }) + '\n');
437
+ try {
438
+ await provider.dispose();
439
+ }
440
+ catch { /* ignore */ }
441
+ }
442
+ }
386
443
  if (watchMode) {
387
444
  const { FileWatcher } = await import('./indexer/watcher.js');
388
- const watcher = new FileWatcher(dbPath, walkerConfig, refreshOptions);
445
+ const watcher = new FileWatcher(dbPath, walkerConfig, { ...refreshOptions, embedder });
389
446
  watcher.start();
390
- process.stderr.write(JSON.stringify({ level: 'info', source: 'cli', message: 'watch mode started', rootDir }) + '\n');
391
- // Keep the process alive until interrupted
392
- process.on('SIGINT', () => { watcher.stop(); process.exit(0); });
393
- process.on('SIGTERM', () => { watcher.stop(); process.exit(0); });
447
+ process.stderr.write(JSON.stringify({ level: 'info', source: 'cli', message: 'watch mode started', rootDir, embeddingEnabled: !!embedder }) + '\n');
448
+ const shutdown = () => {
449
+ watcher.stop();
450
+ if (embedder)
451
+ embedder.dispose().catch(() => { });
452
+ process.exit(0);
453
+ };
454
+ process.on('SIGINT', shutdown);
455
+ process.on('SIGTERM', shutdown);
394
456
  }
395
457
  else if (pollMode) {
396
458
  const { FilePoller } = await import('./indexer/poller.js');
397
- const poller = new FilePoller(dbPath, walkerConfig, refreshOptions);
459
+ const poller = new FilePoller(dbPath, walkerConfig, { ...refreshOptions, embedder });
398
460
  poller.start();
399
- process.stderr.write(JSON.stringify({ level: 'info', source: 'cli', message: 'poll mode started', rootDir }) + '\n');
400
- // Keep the process alive until interrupted
401
- process.on('SIGINT', () => { poller.stop(); process.exit(0); });
402
- process.on('SIGTERM', () => { poller.stop(); process.exit(0); });
461
+ process.stderr.write(JSON.stringify({ level: 'info', source: 'cli', message: 'poll mode started', rootDir, embeddingEnabled: !!embedder }) + '\n');
462
+ const shutdown = () => {
463
+ poller.stop();
464
+ if (embedder)
465
+ embedder.dispose().catch(() => { });
466
+ process.exit(0);
467
+ };
468
+ process.on('SIGINT', shutdown);
469
+ process.on('SIGTERM', shutdown);
403
470
  }
404
471
  else {
405
472
  // Manual refresh: full build if DB doesn't exist yet, otherwise incremental update
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,13 @@
1
1
  /**
2
2
  * @module indexer/call-graph
3
3
  *
4
- * Call-graph utilities operating on the SQLite knowledge-base:
4
+ * Call-graph and cross-reference resolution utilities operating on the
5
+ * SQLite knowledge-base:
5
6
  *
6
- * - `buildCallGraph(db)` — resolves raw callee names in `symbol_refs` to
7
- * concrete symbol IDs where possible.
7
+ * - `resolveSymbolEdges(db)` — resolves raw names in `symbol_refs`,
8
+ * `type_refs`, and `symbol_relationships` to concrete symbol IDs.
9
+ * - `normalizeTypeName(raw)` — strips qualifiers/generics/pointers to
10
+ * produce a bare type name for fallback matching.
8
11
  * - `topoSort(db)` — topological ordering of files based on `file_imports`
9
12
  * using Kahn's algorithm.
10
13
  * - `detectCycles(db)` — cycle detection over the `file_imports` graph using
@@ -12,12 +15,26 @@
12
15
  */
13
16
  import type { Database } from './db.js';
14
17
  /**
15
- * Resolves unresolved `symbol_refs` rows by looking up `callee_name` in the
16
- * `symbols` table and writing the matching `callee_id` back.
18
+ * Produces a bare type name from a raw type reference for fallback matching.
17
19
  *
18
- * Only exact-name matches within the same DB are performed; cross-file
19
- * disambiguation is not attempted here.
20
+ * Steps:
21
+ * 1. Strip CV qualifiers
22
+ * 2. Strip type-intro keywords (struct, enum, union, class)
23
+ * 3. Strip Rust reference/lifetime syntax
24
+ * 4. Strip pointer/reference suffixes
25
+ * 5. Truncate at first `<`
26
+ * 6. Take the last segment after `::` or `.`
27
+ * 7. Trim whitespace
20
28
  */
29
+ export declare function normalizeTypeName(raw: string): string;
30
+ /**
31
+ * Resolves unresolved edges in `symbol_refs`, `type_refs`, and
32
+ * `symbol_relationships` using name-based and definition-path-based passes.
33
+ *
34
+ * Replaces the old `buildCallGraph()`.
35
+ */
36
+ export declare function resolveSymbolEdges(db: Database.Database): void;
37
+ /** @deprecated Use `resolveSymbolEdges` instead. */
21
38
  export declare function buildCallGraph(db: Database.Database): void;
22
39
  /**
23
40
  * Returns file IDs in topologically sorted order (dependencies before
@@ -1 +1 @@
1
- {"version":3,"file":"call-graph.d.ts","sourceRoot":"","sources":["../../src/indexer/call-graph.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAIxC;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAwC1D;AAID;;;;;;GAMG;AACH,wBAAgB,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,GAAG,MAAM,EAAE,CA2DxD;AAID;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,GAAG,MAAM,EAAE,EAAE,CA+E9D"}
1
+ {"version":3,"file":"call-graph.d.ts","sourceRoot":"","sources":["../../src/indexer/call-graph.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAIxC;;;;;;;;;;;GAWG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CA2BrD;AAID;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAgE9D;AAED,oDAAoD;AACpD,wBAAgB,cAAc,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAE1D;AAyGD;;;;;;GAMG;AACH,wBAAgB,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,GAAG,MAAM,EAAE,CA2DxD;AAID;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,GAAG,MAAM,EAAE,EAAE,CA+E9D"}
@@ -1,25 +1,123 @@
1
1
  /**
2
2
  * @module indexer/call-graph
3
3
  *
4
- * Call-graph utilities operating on the SQLite knowledge-base:
4
+ * Call-graph and cross-reference resolution utilities operating on the
5
+ * SQLite knowledge-base:
5
6
  *
6
- * - `buildCallGraph(db)` — resolves raw callee names in `symbol_refs` to
7
- * concrete symbol IDs where possible.
7
+ * - `resolveSymbolEdges(db)` — resolves raw names in `symbol_refs`,
8
+ * `type_refs`, and `symbol_relationships` to concrete symbol IDs.
9
+ * - `normalizeTypeName(raw)` — strips qualifiers/generics/pointers to
10
+ * produce a bare type name for fallback matching.
8
11
  * - `topoSort(db)` — topological ordering of files based on `file_imports`
9
12
  * using Kahn's algorithm.
10
13
  * - `detectCycles(db)` — cycle detection over the `file_imports` graph using
11
14
  * Tarjan's strongly-connected-components algorithm.
12
15
  */
13
- // ─── buildCallGraph ───────────────────────────────────────────────────────────
16
+ // ─── normalizeTypeName ────────────────────────────────────────────────────────
14
17
  /**
15
- * Resolves unresolved `symbol_refs` rows by looking up `callee_name` in the
16
- * `symbols` table and writing the matching `callee_id` back.
18
+ * Produces a bare type name from a raw type reference for fallback matching.
17
19
  *
18
- * Only exact-name matches within the same DB are performed; cross-file
19
- * disambiguation is not attempted here.
20
+ * Steps:
21
+ * 1. Strip CV qualifiers
22
+ * 2. Strip type-intro keywords (struct, enum, union, class)
23
+ * 3. Strip Rust reference/lifetime syntax
24
+ * 4. Strip pointer/reference suffixes
25
+ * 5. Truncate at first `<`
26
+ * 6. Take the last segment after `::` or `.`
27
+ * 7. Trim whitespace
20
28
  */
29
+ export function normalizeTypeName(raw) {
30
+ let s = raw;
31
+ // 1. Strip CV qualifiers (word-bounded)
32
+ s = s.replace(/\b(const|volatile|restrict|mutable)\b/g, '');
33
+ // 2. Strip type-intro keywords (word-bounded)
34
+ s = s.replace(/\b(struct|enum|union|class)\b/g, '');
35
+ // 3. Strip Rust reference/lifetime syntax: &'lifetime_name, &mut, &
36
+ s = s.replace(/^&'[a-zA-Z_]\w*\s+(mut\s+)?/, '');
37
+ s = s.replace(/^&mut\s+/, '');
38
+ s = s.replace(/^&/, '');
39
+ // 4. Strip pointer/reference suffixes and nullable `?` (Kotlin, C#, Swift)
40
+ s = s.replace(/[\*&\[\]?]+$/, '');
41
+ // 4b. Function pointer syntax — if there's a remaining (*) pattern, it's not a named type
42
+ if (/\(\s*\*\s*\)/.test(s))
43
+ return '';
44
+ // 5. Truncate at first `<`
45
+ const ltIdx = s.indexOf('<');
46
+ if (ltIdx !== -1)
47
+ s = s.slice(0, ltIdx);
48
+ // 6. Take last segment after `::` or `.`
49
+ const colonIdx = s.lastIndexOf('::');
50
+ if (colonIdx !== -1) {
51
+ s = s.slice(colonIdx + 2);
52
+ }
53
+ else {
54
+ const dotIdx = s.lastIndexOf('.');
55
+ if (dotIdx !== -1)
56
+ s = s.slice(dotIdx + 1);
57
+ }
58
+ // 7. Trim
59
+ return s.trim();
60
+ }
61
+ // ─── resolveSymbolEdges ───────────────────────────────────────────────────────
62
+ /**
63
+ * Resolves unresolved edges in `symbol_refs`, `type_refs`, and
64
+ * `symbol_relationships` using name-based and definition-path-based passes.
65
+ *
66
+ * Replaces the old `buildCallGraph()`.
67
+ */
68
+ export function resolveSymbolEdges(db) {
69
+ const nameToSymbols = buildNameMap(db);
70
+ const pathToSymbols = buildPathMap(db);
71
+ const runInTransaction = db.transaction(() => {
72
+ // ── symbol_refs: name-based, then definition-path ──
73
+ resolveByNameGeneric(nameToSymbols, {
74
+ selectUnresolved: db.prepare(`SELECT sr.id, sr.callee_name AS target_name, s.file_id AS source_file_id
75
+ FROM symbol_refs sr JOIN symbols s ON s.id = sr.caller_id
76
+ WHERE sr.callee_id IS NULL`),
77
+ update: db.prepare('UPDATE symbol_refs SET callee_id = ? WHERE id = ?'),
78
+ });
79
+ resolveByDefinitionPathGeneric(pathToSymbols, {
80
+ selectUnresolved: db.prepare(`SELECT id, definition_path FROM symbol_refs WHERE callee_id IS NULL AND definition_path IS NOT NULL`),
81
+ update: db.prepare('UPDATE symbol_refs SET callee_id = ? WHERE id = ?'),
82
+ });
83
+ // ── type_refs: qualified name first, then bare fallback ──
84
+ resolveByNameGeneric(nameToSymbols, {
85
+ selectUnresolved: db.prepare(`SELECT tr.id, tr.type_name AS target_name, COALESCE(s.file_id, tr.file_id) AS source_file_id
86
+ FROM type_refs tr LEFT JOIN symbols s ON s.id = tr.symbol_id
87
+ WHERE tr.type_id IS NULL`),
88
+ update: db.prepare('UPDATE type_refs SET type_id = ? WHERE id = ?'),
89
+ });
90
+ resolveByNameGeneric(nameToSymbols, {
91
+ selectUnresolved: db.prepare(`SELECT tr.id, tr.type_name_bare AS target_name, COALESCE(s.file_id, tr.file_id) AS source_file_id
92
+ FROM type_refs tr LEFT JOIN symbols s ON s.id = tr.symbol_id
93
+ WHERE tr.type_id IS NULL AND tr.type_name_bare != tr.type_name`),
94
+ update: db.prepare('UPDATE type_refs SET type_id = ? WHERE id = ?'),
95
+ });
96
+ resolveByDefinitionPathGeneric(pathToSymbols, {
97
+ selectUnresolved: db.prepare(`SELECT id, definition_path FROM type_refs WHERE type_id IS NULL AND definition_path IS NOT NULL`),
98
+ update: db.prepare('UPDATE type_refs SET type_id = ? WHERE id = ?'),
99
+ });
100
+ // ── symbol_relationships ──
101
+ resolveByNameGeneric(nameToSymbols, {
102
+ selectUnresolved: db.prepare(`SELECT sr.id, sr.target_symbol_name AS target_name, COALESCE(s.file_id, sr.file_id) AS source_file_id
103
+ FROM symbol_relationships sr LEFT JOIN symbols s ON s.id = sr.source_symbol_id
104
+ WHERE sr.target_symbol_id IS NULL`),
105
+ update: db.prepare('UPDATE symbol_relationships SET target_symbol_id = ? WHERE id = ?'),
106
+ normalizeTargetName: normalizeTypeName,
107
+ });
108
+ resolveByDefinitionPathGeneric(pathToSymbols, {
109
+ selectUnresolved: db.prepare(`SELECT id, definition_path FROM symbol_relationships WHERE target_symbol_id IS NULL AND definition_path IS NOT NULL`),
110
+ update: db.prepare('UPDATE symbol_relationships SET target_symbol_id = ? WHERE id = ?'),
111
+ });
112
+ });
113
+ runInTransaction();
114
+ }
115
+ /** @deprecated Use `resolveSymbolEdges` instead. */
21
116
  export function buildCallGraph(db) {
22
- // Build a multimap: symbol name → array of { id, file_id }
117
+ resolveSymbolEdges(db);
118
+ }
119
+ // ─── Shared lookup maps ───────────────────────────────────────────────────────
120
+ function buildNameMap(db) {
23
121
  const nameToSymbols = new Map();
24
122
  const allSymbols = db
25
123
  .prepare('SELECT id, name, file_id FROM symbols')
@@ -32,27 +130,61 @@ export function buildCallGraph(db) {
32
130
  }
33
131
  list.push({ id: row.id, file_id: row.file_id });
34
132
  }
35
- // Fetch all unresolved refs along with the caller's file_id for proximity.
36
- const unresolved = db
37
- .prepare(`SELECT sr.id, sr.callee_name, s.file_id AS caller_file_id
38
- FROM symbol_refs sr
39
- JOIN symbols s ON s.id = sr.caller_id
40
- WHERE sr.callee_id IS NULL`)
133
+ return nameToSymbols;
134
+ }
135
+ function buildPathMap(db) {
136
+ const pathToSymbols = new Map();
137
+ const allSymbols = db
138
+ .prepare(`SELECT s.id, s.start_line, f.path
139
+ FROM symbols s
140
+ JOIN files f ON f.id = s.file_id`)
41
141
  .all();
42
- const update = db.prepare('UPDATE symbol_refs SET callee_id = ? WHERE id = ?');
43
- const updateMany = db.transaction(() => {
142
+ for (const row of allSymbols) {
143
+ let list = pathToSymbols.get(row.path);
144
+ if (!list) {
145
+ list = [];
146
+ pathToSymbols.set(row.path, list);
147
+ }
148
+ list.push({ id: row.id, start_line: row.start_line });
149
+ }
150
+ return pathToSymbols;
151
+ }
152
+ function resolveByNameGeneric(nameToSymbols, config) {
153
+ const unresolved = config.selectUnresolved.all();
154
+ const updateMany = () => {
44
155
  for (const ref of unresolved) {
45
- const candidates = nameToSymbols.get(ref.callee_name);
156
+ let candidates = nameToSymbols.get(ref.target_name);
157
+ if ((!candidates || candidates.length === 0) && config.normalizeTargetName) {
158
+ const normalized = config.normalizeTargetName(ref.target_name);
159
+ if (normalized && normalized !== ref.target_name) {
160
+ candidates = nameToSymbols.get(normalized);
161
+ }
162
+ }
46
163
  if (!candidates || candidates.length === 0)
47
164
  continue;
48
- // Prefer same-file match for common names like init, new, parse.
49
- const sameFile = candidates.find(c => c.file_id === ref.caller_file_id);
165
+ const sameFile = candidates.find(c => c.file_id === ref.source_file_id);
50
166
  const best = sameFile ?? candidates[0];
51
- update.run(best.id, ref.id);
167
+ config.update.run(best.id, ref.id);
52
168
  }
53
- });
169
+ };
54
170
  updateMany();
55
171
  }
172
+ function resolveByDefinitionPathGeneric(pathToSymbols, config) {
173
+ const unresolved = config.selectUnresolved.all();
174
+ if (unresolved.length === 0)
175
+ return;
176
+ for (const ref of unresolved) {
177
+ const candidates = pathToSymbols.get(ref.definition_path);
178
+ if (!candidates || candidates.length === 0)
179
+ continue;
180
+ if (candidates.length === 1) {
181
+ config.update.run(candidates[0].id, ref.id);
182
+ continue;
183
+ }
184
+ const sorted = [...candidates].sort((a, b) => a.start_line - b.start_line);
185
+ config.update.run(sorted[0].id, ref.id);
186
+ }
187
+ }
56
188
  // ─── topoSort ─────────────────────────────────────────────────────────────────
57
189
  /**
58
190
  * Returns file IDs in topologically sorted order (dependencies before