@jafreck/lore 0.2.4 → 0.3.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 (200) hide show
  1. package/README.md +63 -35
  2. package/dist/cli.js +41 -38
  3. package/dist/cli.js.map +1 -1
  4. package/dist/index.d.ts +24 -5
  5. package/dist/index.d.ts.map +1 -1
  6. package/dist/index.js +23 -4
  7. package/dist/index.js.map +1 -1
  8. package/dist/indexer/call-graph.d.ts +29 -8
  9. package/dist/indexer/call-graph.d.ts.map +1 -1
  10. package/dist/indexer/call-graph.js +232 -31
  11. package/dist/indexer/call-graph.js.map +1 -1
  12. package/dist/indexer/config-parser.js +6 -1
  13. package/dist/indexer/config-parser.js.map +1 -1
  14. package/dist/indexer/coverage.js +3 -1
  15. package/dist/indexer/coverage.js.map +1 -1
  16. package/dist/indexer/db.d.ts.map +1 -1
  17. package/dist/indexer/db.js +70 -1
  18. package/dist/indexer/db.js.map +1 -1
  19. package/dist/indexer/docs.d.ts.map +1 -1
  20. package/dist/indexer/docs.js +4 -0
  21. package/dist/indexer/docs.js.map +1 -1
  22. package/dist/indexer/embedder.d.ts.map +1 -1
  23. package/dist/indexer/embedder.js +5 -0
  24. package/dist/indexer/embedder.js.map +1 -1
  25. package/dist/indexer/extractors/bash.d.ts.map +1 -1
  26. package/dist/indexer/extractors/bash.js +29 -1
  27. package/dist/indexer/extractors/bash.js.map +1 -1
  28. package/dist/indexer/extractors/c.d.ts +5 -2
  29. package/dist/indexer/extractors/c.d.ts.map +1 -1
  30. package/dist/indexer/extractors/c.js +277 -8
  31. package/dist/indexer/extractors/c.js.map +1 -1
  32. package/dist/indexer/extractors/cpp.d.ts +5 -2
  33. package/dist/indexer/extractors/cpp.d.ts.map +1 -1
  34. package/dist/indexer/extractors/cpp.js +349 -3
  35. package/dist/indexer/extractors/cpp.js.map +1 -1
  36. package/dist/indexer/extractors/csharp.d.ts.map +1 -1
  37. package/dist/indexer/extractors/csharp.js +166 -1
  38. package/dist/indexer/extractors/csharp.js.map +1 -1
  39. package/dist/indexer/extractors/dart.d.ts.map +1 -1
  40. package/dist/indexer/extractors/dart.js +134 -1
  41. package/dist/indexer/extractors/dart.js.map +1 -1
  42. package/dist/indexer/extractors/elixir.d.ts.map +1 -1
  43. package/dist/indexer/extractors/elixir.js +45 -0
  44. package/dist/indexer/extractors/elixir.js.map +1 -1
  45. package/dist/indexer/extractors/elm.d.ts.map +1 -1
  46. package/dist/indexer/extractors/elm.js +33 -0
  47. package/dist/indexer/extractors/elm.js.map +1 -1
  48. package/dist/indexer/extractors/go.d.ts.map +1 -1
  49. package/dist/indexer/extractors/go.js +206 -1
  50. package/dist/indexer/extractors/go.js.map +1 -1
  51. package/dist/indexer/extractors/haskell.d.ts.map +1 -1
  52. package/dist/indexer/extractors/haskell.js +29 -0
  53. package/dist/indexer/extractors/haskell.js.map +1 -1
  54. package/dist/indexer/extractors/java.d.ts.map +1 -1
  55. package/dist/indexer/extractors/java.js +170 -1
  56. package/dist/indexer/extractors/java.js.map +1 -1
  57. package/dist/indexer/extractors/javascript.d.ts.map +1 -1
  58. package/dist/indexer/extractors/javascript.js +24 -2
  59. package/dist/indexer/extractors/javascript.js.map +1 -1
  60. package/dist/indexer/extractors/julia.d.ts.map +1 -1
  61. package/dist/indexer/extractors/julia.js +23 -1
  62. package/dist/indexer/extractors/julia.js.map +1 -1
  63. package/dist/indexer/extractors/kotlin.d.ts.map +1 -1
  64. package/dist/indexer/extractors/kotlin.js +122 -1
  65. package/dist/indexer/extractors/kotlin.js.map +1 -1
  66. package/dist/indexer/extractors/lua.d.ts.map +1 -1
  67. package/dist/indexer/extractors/lua.js +19 -1
  68. package/dist/indexer/extractors/lua.js.map +1 -1
  69. package/dist/indexer/extractors/objc.d.ts.map +1 -1
  70. package/dist/indexer/extractors/objc.js +171 -1
  71. package/dist/indexer/extractors/objc.js.map +1 -1
  72. package/dist/indexer/extractors/ocaml.d.ts.map +1 -1
  73. package/dist/indexer/extractors/ocaml.js +29 -0
  74. package/dist/indexer/extractors/ocaml.js.map +1 -1
  75. package/dist/indexer/extractors/php.d.ts.map +1 -1
  76. package/dist/indexer/extractors/php.js +137 -1
  77. package/dist/indexer/extractors/php.js.map +1 -1
  78. package/dist/indexer/extractors/python.d.ts.map +1 -1
  79. package/dist/indexer/extractors/python.js +24 -3
  80. package/dist/indexer/extractors/python.js.map +1 -1
  81. package/dist/indexer/extractors/ruby.d.ts.map +1 -1
  82. package/dist/indexer/extractors/ruby.js +23 -1
  83. package/dist/indexer/extractors/ruby.js.map +1 -1
  84. package/dist/indexer/extractors/rust.d.ts.map +1 -1
  85. package/dist/indexer/extractors/rust.js +139 -2
  86. package/dist/indexer/extractors/rust.js.map +1 -1
  87. package/dist/indexer/extractors/scala.d.ts.map +1 -1
  88. package/dist/indexer/extractors/scala.js +24 -1
  89. package/dist/indexer/extractors/scala.js.map +1 -1
  90. package/dist/indexer/extractors/swift.d.ts.map +1 -1
  91. package/dist/indexer/extractors/swift.js +129 -1
  92. package/dist/indexer/extractors/swift.js.map +1 -1
  93. package/dist/indexer/extractors/types.d.ts +78 -2
  94. package/dist/indexer/extractors/types.d.ts.map +1 -1
  95. package/dist/indexer/extractors/types.js +167 -8
  96. package/dist/indexer/extractors/types.js.map +1 -1
  97. package/dist/indexer/extractors/typescript.d.ts.map +1 -1
  98. package/dist/indexer/extractors/typescript.js +217 -1
  99. package/dist/indexer/extractors/typescript.js.map +1 -1
  100. package/dist/indexer/extractors/zig.d.ts.map +1 -1
  101. package/dist/indexer/extractors/zig.js +30 -0
  102. package/dist/indexer/extractors/zig.js.map +1 -1
  103. package/dist/indexer/git-history.d.ts.map +1 -1
  104. package/dist/indexer/git-history.js +4 -8
  105. package/dist/indexer/git-history.js.map +1 -1
  106. package/dist/indexer/git-hooks.js +1 -1
  107. package/dist/indexer/git-hooks.js.map +1 -1
  108. package/dist/indexer/index.d.ts +27 -52
  109. package/dist/indexer/index.d.ts.map +1 -1
  110. package/dist/indexer/index.js +146 -773
  111. package/dist/indexer/index.js.map +1 -1
  112. package/dist/indexer/lsp/client.d.ts.map +1 -1
  113. package/dist/indexer/lsp/client.js +40 -15
  114. package/dist/indexer/lsp/client.js.map +1 -1
  115. package/dist/indexer/lsp/config.d.ts.map +1 -1
  116. package/dist/indexer/lsp/config.js +18 -4
  117. package/dist/indexer/lsp/config.js.map +1 -1
  118. package/dist/indexer/lsp/enrichment.d.ts +2 -0
  119. package/dist/indexer/lsp/enrichment.d.ts.map +1 -1
  120. package/dist/indexer/lsp/enrichment.js +67 -33
  121. package/dist/indexer/lsp/enrichment.js.map +1 -1
  122. package/dist/indexer/pipeline.d.ts +137 -0
  123. package/dist/indexer/pipeline.d.ts.map +1 -0
  124. package/dist/indexer/pipeline.js +84 -0
  125. package/dist/indexer/pipeline.js.map +1 -0
  126. package/dist/indexer/poller.d.ts +8 -0
  127. package/dist/indexer/poller.d.ts.map +1 -1
  128. package/dist/indexer/poller.js +3 -1
  129. package/dist/indexer/poller.js.map +1 -1
  130. package/dist/indexer/resolution-method.d.ts +40 -0
  131. package/dist/indexer/resolution-method.d.ts.map +1 -0
  132. package/dist/indexer/resolution-method.js +53 -0
  133. package/dist/indexer/resolution-method.js.map +1 -0
  134. package/dist/indexer/resolver.d.ts.map +1 -1
  135. package/dist/indexer/resolver.js +8 -4
  136. package/dist/indexer/resolver.js.map +1 -1
  137. package/dist/indexer/stages/dependency-api.d.ts +18 -0
  138. package/dist/indexer/stages/dependency-api.d.ts.map +1 -0
  139. package/dist/indexer/stages/dependency-api.js +174 -0
  140. package/dist/indexer/stages/dependency-api.js.map +1 -0
  141. package/dist/indexer/stages/docs-index.d.ts +20 -0
  142. package/dist/indexer/stages/docs-index.d.ts.map +1 -0
  143. package/dist/indexer/stages/docs-index.js +144 -0
  144. package/dist/indexer/stages/docs-index.js.map +1 -0
  145. package/dist/indexer/stages/embedding.d.ts +17 -0
  146. package/dist/indexer/stages/embedding.d.ts.map +1 -0
  147. package/dist/indexer/stages/embedding.js +217 -0
  148. package/dist/indexer/stages/embedding.js.map +1 -0
  149. package/dist/indexer/stages/import-resolution.d.ts +17 -0
  150. package/dist/indexer/stages/import-resolution.d.ts.map +1 -0
  151. package/dist/indexer/stages/import-resolution.js +47 -0
  152. package/dist/indexer/stages/import-resolution.js.map +1 -0
  153. package/dist/indexer/stages/index.d.ts +12 -0
  154. package/dist/indexer/stages/index.d.ts.map +1 -0
  155. package/dist/indexer/stages/index.js +12 -0
  156. package/dist/indexer/stages/index.js.map +1 -0
  157. package/dist/indexer/stages/lsp-enrichment.d.ts +48 -0
  158. package/dist/indexer/stages/lsp-enrichment.d.ts.map +1 -0
  159. package/dist/indexer/stages/lsp-enrichment.js +158 -0
  160. package/dist/indexer/stages/lsp-enrichment.js.map +1 -0
  161. package/dist/indexer/stages/source-index.d.ts +31 -0
  162. package/dist/indexer/stages/source-index.d.ts.map +1 -0
  163. package/dist/indexer/stages/source-index.js +314 -0
  164. package/dist/indexer/stages/source-index.js.map +1 -0
  165. package/dist/indexer/watcher.d.ts +8 -0
  166. package/dist/indexer/watcher.d.ts.map +1 -1
  167. package/dist/indexer/watcher.js +18 -1
  168. package/dist/indexer/watcher.js.map +1 -1
  169. package/dist/lore-server/db.d.ts +51 -4
  170. package/dist/lore-server/db.d.ts.map +1 -1
  171. package/dist/lore-server/db.js +102 -93
  172. package/dist/lore-server/db.js.map +1 -1
  173. package/dist/lore-server/server.d.ts +5 -0
  174. package/dist/lore-server/server.d.ts.map +1 -1
  175. package/dist/lore-server/server.js +52 -273
  176. package/dist/lore-server/server.js.map +1 -1
  177. package/dist/lore-server/tool-registry.d.ts +101 -0
  178. package/dist/lore-server/tool-registry.d.ts.map +1 -0
  179. package/dist/lore-server/tool-registry.js +227 -0
  180. package/dist/lore-server/tool-registry.js.map +1 -0
  181. package/dist/lore-server/tools/graph.d.ts +11 -3
  182. package/dist/lore-server/tools/graph.d.ts.map +1 -1
  183. package/dist/lore-server/tools/graph.js +108 -13
  184. package/dist/lore-server/tools/graph.js.map +1 -1
  185. package/dist/lore-server/tools/lookup.d.ts +9 -3
  186. package/dist/lore-server/tools/lookup.d.ts.map +1 -1
  187. package/dist/lore-server/tools/lookup.js +9 -4
  188. package/dist/lore-server/tools/lookup.js.map +1 -1
  189. package/dist/lore-server/tools/notes.d.ts.map +1 -1
  190. package/dist/lore-server/tools/notes.js +6 -2
  191. package/dist/lore-server/tools/notes.js.map +1 -1
  192. package/dist/lore-server/tools/search.d.ts +4 -0
  193. package/dist/lore-server/tools/search.d.ts.map +1 -1
  194. package/dist/lore-server/tools/search.js +50 -14
  195. package/dist/lore-server/tools/search.js.map +1 -1
  196. package/dist/runtime.d.ts +88 -0
  197. package/dist/runtime.d.ts.map +1 -0
  198. package/dist/runtime.js +153 -0
  199. package/dist/runtime.js.map +1 -0
  200. package/package.json +12 -12
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,18 +9,18 @@
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 using a 3-tier resolution strategy (LSP containment, same-file name match, unique name match)
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
21
22
  - Indexes git history (commits, touched files, refs/branches/tags)
22
- - Enriches symbols with resolved type signatures and definitions via optional index-time LSP integration
23
+ - Enriches symbols with resolved type signatures and definitions via optional index-time LSP integration (batch-pipelined hover + definition requests)
23
24
  - Supports line-level git blame through MCP
24
25
  - Supports automatic refresh via watch mode, poll mode, and git hooks
25
26
 
@@ -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,30 +84,50 @@ 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
- Lore sits between your codebase and any LLM-powered tool. The **indexer**
90
- pipeline walks source files, parses them into ASTs, and extracts
93
+ Lore sits between your codebase and any LLM-powered tool. A `LoreRuntime`
94
+ instance owns all long-lived resources (database, embedder, LSP coordinators,
95
+ watcher/poller) and dispatches both CLI commands and MCP server requests through
96
+ a single lifecycle.
97
+
98
+ The **indexer** is decomposed into composable **pipeline stages** orchestrated
99
+ by `IndexPipeline`. `IndexBuilder` is now a thin façade (~310 lines, down from
100
+ ~1 230) that delegates to the pipeline for both full builds and incremental
101
+ updates. The stage ordering enforces data dependencies structurally:
102
+
103
+ ```
104
+ SourceIndex → DocsIndex → ImportResolution → DependencyApi
105
+ → LspEnrichment → Resolution → TestMap → History → Embedding
106
+ ```
107
+
108
+ Each stage walks source files, parses them into ASTs, and extracts
91
109
  symbols/imports/call-refs via language-specific extractors, then resolves
92
- imports (internal vs external) and builds the call graph. An optional
93
- **LSP enrichment** pass queries language servers to resolve type signatures
94
- and jump-to-definition URIs for extracted symbols. An optional **embedder**
95
- generates dense vectors for semantic search, and a parallel **git history**
96
- ingest captures commits, diffs, and refs. Everything is persisted to a
97
- normalized SQL database. The **MCP server** then exposes that
98
- database as a set of tools that any MCP-compatible client can call to look up
99
- symbols, search code, traverse call graphs, read snippets, query
100
- blame/history, and write summaries back.
110
+ imports (internal vs external) and resolves symbol references using a
111
+ **3-tier resolution** strategy: LSP containment same-file name match
112
+ unique name match. An optional **LSP enrichment** stage queries language
113
+ servers with batch-pipelined hover + definition requests. An optional
114
+ **embedder** generates dense vectors for semantic search (with async
115
+ initialization so the MCP server starts instantly), and a parallel **git
116
+ history** ingest captures commits, diffs, and refs. Everything is persisted to
117
+ a normalized SQL database.
118
+
119
+ The **MCP server** uses a `ToolRegistry` that auto-discovers tool modules
120
+ from their exported `toolDef` / `handler` definitions — no duplicate schema
121
+ code. It exposes the database as a set of tools that any MCP-compatible
122
+ client can call to look up symbols, search code, traverse call graphs, read
123
+ snippets, query blame/history, and write summaries back.
101
124
 
102
125
  The index stays fresh automatically. You can install **git hooks**
103
126
  (`post-commit`, `post-merge`, etc.) that trigger an incremental refresh on
104
127
  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
128
+ real time (with live embedding updates), or use **poll** mode for
129
+ environments where watch events are unreliable (also with live embedding
130
+ updates). Each refresh only re-processes files whose content hash has
107
131
  changed, so updates are fast even on large repositories.
108
132
 
109
133
  See [docs/architecture.md](docs/architecture.md) for the full schema and
@@ -164,12 +188,11 @@ await builder.build();
164
188
  | `lore_notes_write` | Upsert agent-authored notes by key and scope, with optional source hash for staleness tracking |
165
189
  | `lore_notes_read` | Read notes by exact key or key prefix with scope-aware staleness metadata |
166
190
  | `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` |
191
+ | `lore_graph` | Query call/import/module/inheritance/type-dependency edges; call edges include `callee_coverage_percent` |
168
192
  | `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
193
  | `lore_test_map` | Return mapped test files (with confidence) for a given source file path |
170
194
  | `lore_blame` | Query blame, line-range history, or ownership aggregates with optional symbol targeting, commit-context enrichment, and risk signals |
171
195
  | `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
196
  | `lore_metrics` | Aggregate index metrics plus coverage/staleness fields |
174
197
  | `lore_coverage` | Symbol-level coverage, uncovered lines, and staleness metadata |
175
198
  | `lore_writeback` | Persist agent-authored symbol summaries |
@@ -469,6 +492,10 @@ npx @jafreck/lore refresh --db ./lore.db --root ./my-project --watch
469
492
  npx @jafreck/lore refresh --db ./lore.db --root ./my-project --poll
470
493
  ```
471
494
 
495
+ Both watch and poll modes support **live embeddings** — when an embedding
496
+ model is configured, changed files have their vectors re-generated
497
+ incrementally during each refresh cycle.
498
+
472
499
  Each refresh only re-processes files whose content hash has changed, so updates
473
500
  are fast even on large repositories.
474
501
 
@@ -479,7 +506,7 @@ are fast even on large repositories.
479
506
  Build or update a knowledge base.
480
507
 
481
508
  ```bash
482
- npx @jafreck/lore index --root <dir> --db <path> [--embedding-model <id>] [--index-deps] [--history] [--history-depth <n>] [--history-all] [--include <glob>] [--exclude <glob>] [--language <lang>] [--docs-include <glob>] [--docs-exclude <glob>] [--docs-extension <ext>] [--docs-auto-notes|--no-docs-auto-notes] [--lsp] [--no-lsp]
509
+ npx @jafreck/lore index --root <dir> --db <path> [--embedding-model <id>] [--blocking-embedder] [--index-deps] [--history] [--history-depth <n>] [--history-all] [--include <glob>] [--exclude <glob>] [--language <lang>] [--docs-include <glob>] [--docs-exclude <glob>] [--docs-extension <ext>] [--docs-auto-notes|--no-docs-auto-notes] [--lsp] [--no-lsp]
483
510
  ```
484
511
 
485
512
  ### lore refresh
@@ -513,7 +540,7 @@ npx @jafreck/lore ingest-coverage --db <path> --root <dir> --file <path> --forma
513
540
  Start the MCP server over stdio.
514
541
 
515
542
  ```bash
516
- npx @jafreck/lore mcp --db <path>
543
+ npx @jafreck/lore mcp --db <path> [--blocking-embedder]
517
544
  ```
518
545
 
519
546
  ## Build from source
@@ -540,7 +567,8 @@ npm test
540
567
  npm run coverage
541
568
  ```
542
569
 
543
- CI enforces a minimum 95% coverage threshold.
570
+ CI currently enforces minimum coverage thresholds of 77% statements, 64%
571
+ branches, 80% functions, and 79% lines.
544
572
 
545
573
  ## Publish authentication (npm)
546
574
 
@@ -561,24 +589,24 @@ CI publish flow:
561
589
  - Ensure publish jobs expose that secret as the `NODE_AUTH_TOKEN` environment
562
590
  variable before running `npm publish`.
563
591
 
564
- ## Release publish workflow (`@jafreck/lore@0.1.0`)
592
+ ## Release publish workflow (`@jafreck/lore@0.3.0`)
565
593
 
566
594
  Publishing is automated by `.github/workflows/publish.yml`. Creating a version
567
- tag (for example, `v0.1.0`) or publishing a GitHub Release triggers the npm
595
+ tag (for example, `v0.3.0`) or publishing a GitHub Release triggers the npm
568
596
  publish job.
569
597
 
570
- Release steps for `@jafreck/lore@0.1.0`:
598
+ Release steps for `@jafreck/lore@0.3.0`:
571
599
 
572
- 1. Ensure `package.json` has `"version": "0.1.0"`.
573
- 2. Push the tag: `git tag v0.1.0 && git push origin v0.1.0` (or publish a
574
- GitHub Release for `v0.1.0`).
600
+ 1. Ensure `package.json` has `"version": "0.3.0"`.
601
+ 2. Push the tag: `git tag v0.3.0 && git push origin v0.3.0` (or publish a
602
+ GitHub Release for `v0.3.0`).
575
603
  3. Confirm the workflow logs show `npm publish --dry-run` output before the
576
604
  live `npm publish` step.
577
605
 
578
606
  Post-publish verification:
579
607
 
580
- - Check the package metadata: `npm view @jafreck/lore version` returns `0.1.0`.
581
- - Confirm installability: `npm view @jafreck/lore@0.1.0 name version`.
608
+ - Check the package metadata: `npm view @jafreck/lore version` returns `0.3.0`.
609
+ - Confirm installability: `npm view @jafreck/lore@0.3.0 name version`.
582
610
 
583
611
  ## Benchmarking index performance (500+ file repos)
584
612
 
package/dist/cli.js CHANGED
@@ -18,15 +18,16 @@
18
18
  import * as fs from 'node:fs';
19
19
  import { loadLspSettingsFromLoreConfig, resolveEffectiveLspSettings, } from './indexer/lsp/config.js';
20
20
  import { initLogger, LogLevel, LOG_LEVEL_NAMES } from './logger.js';
21
+ import { LoreRuntime } from './runtime.js';
21
22
  // ─── Argument helpers ─────────────────────────────────────────────────────────
22
23
  function usage() {
23
24
  console.error(`Usage:
24
25
  lore index --root <dir> --db <path> [--embedding-model <id>] [--index-deps] [--history] [--history-depth <n>] [--history-all]
25
26
  Index a codebase into a knowledge-base SQLite file
26
- lore mcp --db <path> Start the Lore MCP server (stdio transport)
27
+ lore mcp --db <path> [--root <dir> --watch|--poll] Start the Lore MCP server (stdio transport), optionally with live indexing
27
28
  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
29
+ lore refresh --db <path> --root <dir> --watch [--embedding-model <id>] Watch for file changes and refresh automatically
30
+ lore refresh --db <path> --root <dir> --poll [--embedding-model <id>] Poll for file changes and refresh automatically
30
31
  lore hooks --db <path> --root <dir> [--history] [--history-depth <n>] [--history-all] [--lsp] [--no-lsp]
31
32
  Install git hooks for automatic refresh on commit/merge/checkout
32
33
  lore ingest-coverage --db <path> --root <dir> --file <path> --format <lcov|cobertura> [--commit <sha>]
@@ -117,7 +118,7 @@ async function main() {
117
118
  : LogLevel.INFO;
118
119
  const resolvedLogFile = logFileRaw
119
120
  ?? (dbPathForLog
120
- ? dbPathForLog.replace(/\.db$/, '.log')
121
+ ? dbPathForLog.replace(/\.[^.]+$/, '.log')
121
122
  : undefined);
122
123
  const log = initLogger({ level: resolvedLogLevel, logFile: resolvedLogFile });
123
124
  if (subcommand === 'index') {
@@ -257,7 +258,6 @@ async function main() {
257
258
  const { openReadOnly } = await import('./lore-server/db.js');
258
259
  const { createLoreMcpServer } = await import('./lore-server/server.js');
259
260
  const { getLoreMeta } = await import('./indexer/db.js');
260
- const { SentenceTransformersProvider, } = await import('./indexer/embedder.js');
261
261
  const db = openReadOnly(dbPath);
262
262
  // Gather DB stats for startup log
263
263
  const totalFiles = db.prepare('SELECT COUNT(*) AS cnt FROM files').get().cnt;
@@ -281,22 +281,25 @@ async function main() {
281
281
  // Build optional embedder from model recorded at index time.
282
282
  let embedder;
283
283
  const modelName = getLoreMeta(db, 'embedding_model');
284
- if (modelName) {
285
- const provider = new SentenceTransformersProvider(modelName);
286
- try {
287
- await provider.init();
288
- embedder = provider;
289
- log.startup('embedding model loaded', { embeddingModel: modelName, embeddingReady: true });
290
- }
291
- catch {
292
- log.warn('startup', 'embedding model unavailable, falling back to structural search', { embeddingModel: modelName });
293
- try {
294
- await provider.dispose();
295
- }
296
- catch {
297
- /* ignore */
298
- }
299
- }
284
+ // ── Optional live-index watcher/poller (shares the same embedder) ────
285
+ const watchMode = args.includes('--watch');
286
+ const pollMode = args.includes('--poll');
287
+ const rootDir = flag(args, '--root');
288
+ const runtime = new LoreRuntime({
289
+ dbPath,
290
+ rootDir: rootDir ?? '.',
291
+ walkerConfig: { rootDir: rootDir ?? '.' },
292
+ lsp: null,
293
+ history: false,
294
+ indexDependencies: false,
295
+ docsAutoNotes: true,
296
+ embeddingModel: modelName ?? undefined,
297
+ refreshMode: (watchMode && rootDir) ? 'watch' : (pollMode && rootDir) ? 'poll' : 'none',
298
+ }, log);
299
+ await runtime.start();
300
+ embedder = runtime.embedder;
301
+ if ((watchMode || pollMode) && !rootDir) {
302
+ log.warn('startup', '--root <dir> is required when using --watch or --poll with mcp; live indexing disabled');
300
303
  }
301
304
  log.startup('db stats', {
302
305
  dbPath,
@@ -315,6 +318,7 @@ async function main() {
315
318
  log.startup('mcp server ready', { transport: 'stdio' });
316
319
  // Signal readiness on stderr so parent processes can detect it.
317
320
  process.stderr.write('READY\n');
321
+ runtime.installSignalHandlers();
318
322
  }
319
323
  else if (subcommand === 'refresh') {
320
324
  const dbPath = flag(args, '--db');
@@ -383,23 +387,22 @@ async function main() {
383
387
  lsp: lspSettings,
384
388
  ...(shouldEnableHistory && { history: historyOption }),
385
389
  };
386
- if (watchMode) {
387
- const { FileWatcher } = await import('./indexer/watcher.js');
388
- const watcher = new FileWatcher(dbPath, walkerConfig, refreshOptions);
389
- 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); });
394
- }
395
- else if (pollMode) {
396
- const { FilePoller } = await import('./indexer/poller.js');
397
- const poller = new FilePoller(dbPath, walkerConfig, refreshOptions);
398
- 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); });
390
+ // Build an optional long-lived embedder for watch/poll modes.
391
+ const embeddingModel = flag(args, '--embedding-model');
392
+ if (watchMode || pollMode) {
393
+ const runtime = new LoreRuntime({
394
+ dbPath,
395
+ rootDir,
396
+ walkerConfig,
397
+ lsp: lspSettings,
398
+ history: shouldEnableHistory ? historyOption : false,
399
+ indexDependencies,
400
+ docsAutoNotes,
401
+ embeddingModel: embeddingModel ?? undefined,
402
+ refreshMode: watchMode ? 'watch' : 'poll',
403
+ }, log);
404
+ await runtime.start();
405
+ runtime.installSignalHandlers();
403
406
  }
404
407
  else {
405
408
  // 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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"}
package/dist/index.d.ts CHANGED
@@ -1,11 +1,21 @@
1
+ /**
2
+ * @module index
3
+ *
4
+ * Public API surface for the Lore knowledge-base toolkit.
5
+ *
6
+ * Exports are intentional and small. Internal helpers like `ParserPool`,
7
+ * `normalizeTypeName`, etc., are not exposed. `buildCallGraph` has been
8
+ * removed — use `resolveSymbolEdges` instead.
9
+ *
10
+ * Layering: runtime → domain services → storage → shared types
11
+ */
1
12
  export { IndexBuilder } from './indexer/index.js';
2
13
  export { openDb, setLoreMeta, getLoreMeta, createVec0Tables } from './indexer/db.js';
3
14
  export type { Database } from './indexer/db.js';
4
- export { buildCallGraph, topoSort, detectCycles } from './indexer/call-graph.js';
15
+ export { resolveSymbolEdges, topoSort, detectCycles } from './indexer/call-graph.js';
5
16
  export { walkFiles, detectLanguageForPath } from './indexer/walker.js';
6
17
  export type { WalkerConfig, FileEntry } from './indexer/walker.js';
7
18
  export { ImportResolver } from './indexer/resolver.js';
8
- export { ParserPool } from './indexer/parser.js';
9
19
  export { ensurePythonDeps } from './indexer/ensure-python-deps.js';
10
20
  export { installGitHooks } from './indexer/git-hooks.js';
11
21
  export type { InstallGitHooksOptions } from './indexer/git-hooks.js';
@@ -13,15 +23,24 @@ export type { EffectiveLspSettings, LspSettingsOverrides } from './indexer/lsp/c
13
23
  export { SentenceTransformersProvider, Qwen3EmbeddingProvider, DEFAULT_EMBEDDING_MODEL } from './indexer/embedder.js';
14
24
  export type { EmbeddingProvider } from './indexer/embedder.js';
15
25
  export type { ExtractionResult, RawCallRef, RawImport, RawSymbol, SymbolExtractor, } from './indexer/extractors/types.js';
26
+ export { RESOLUTION_METHODS, RESOLVED_METHODS, UNRESOLVED_METHODS } from './indexer/resolution-method.js';
27
+ export type { ResolutionMethod } from './indexer/resolution-method.js';
28
+ export { IndexPipeline } from './indexer/pipeline.js';
29
+ export type { PipelineContext, PipelineStage } from './indexer/pipeline.js';
30
+ export { SourceIndexStage, DocsIndexStage, ImportResolutionStage, DependencyApiStage, LspEnrichmentStage, EmbeddingStage, } from './indexer/stages/index.js';
31
+ export { LoreRuntime } from './runtime.js';
32
+ export type { RuntimeConfig, Refresher } from './runtime.js';
16
33
  export { FileWatcher } from './indexer/watcher.js';
17
34
  export type { WatcherOptions } from './indexer/watcher.js';
18
35
  export { FilePoller } from './indexer/poller.js';
19
36
  export type { PollerOptions } from './indexer/poller.js';
20
- export { createLoreMcpServer } from './lore-server/server.js';
37
+ export { createLoreMcpServer, createLoreMcpServerAsync } from './lore-server/server.js';
21
38
  export type { LoreServerOptions } from './lore-server/server.js';
22
39
  export type { SearchObservation, SearchObserver } from './lore-server/tools/search.js';
23
- export { openReadOnly, getSymbolById, getSymbolsByName, listSymbols, getFileById, getFileByPath, listFiles, } from './lore-server/db.js';
24
- export type { SymbolRow, FileRow } from './lore-server/db.js';
40
+ export { registerTools } from './lore-server/tool-registry.js';
41
+ export type { ToolModule, ToolDefinition } from './lore-server/tool-registry.js';
42
+ export { openReadOnly, getSymbolById, getSymbolsByName, listSymbols, getFileById, getFileByPath, listFiles, listResolvedEdges, } from './lore-server/db.js';
43
+ export type { SymbolRow, FileRow, ResolvedEdge, ListResolvedEdgesOptions } from './lore-server/db.js';
25
44
  export { LoreLogger, LogLevel, LOG_LEVEL_NAMES, initLogger, getLogger, resetLogger } from './logger.js';
26
45
  export type { LoreLoggerOptions, LogEntry, ToolCallFields, StartupFields } from './logger.js';
27
46
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACrF,YAAY,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACjF,OAAO,EAAE,SAAS,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AACvE,YAAY,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,YAAY,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AACrE,YAAY,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC1F,OAAO,EAAE,4BAA4B,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AACtH,YAAY,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,YAAY,EACV,gBAAgB,EAChB,UAAU,EACV,SAAS,EACT,SAAS,EACT,eAAe,GAChB,MAAM,+BAA+B,CAAC;AAGvC,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,YAAY,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,YAAY,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAGzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,YAAY,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AACjE,YAAY,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AACvF,OAAO,EACL,YAAY,EACZ,aAAa,EACb,gBAAgB,EAChB,WAAW,EACX,WAAW,EACX,aAAa,EACb,SAAS,GACV,MAAM,qBAAqB,CAAC;AAC7B,YAAY,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAG9D,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,eAAe,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AACxG,YAAY,EAAE,iBAAiB,EAAE,QAAQ,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACrF,YAAY,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,kBAAkB,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACrF,OAAO,EAAE,SAAS,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AACvE,YAAY,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,YAAY,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AACrE,YAAY,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC1F,OAAO,EAAE,4BAA4B,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AACtH,YAAY,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,YAAY,EACV,gBAAgB,EAChB,UAAU,EACV,SAAS,EACT,SAAS,EACT,eAAe,GAChB,MAAM,+BAA+B,CAAC;AAGvC,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAC1G,YAAY,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAGvE,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,YAAY,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAC5E,OAAO,EACL,gBAAgB,EAChB,cAAc,EACd,qBAAqB,EACrB,kBAAkB,EAClB,kBAAkB,EAClB,cAAc,GACf,MAAM,2BAA2B,CAAC;AAInC,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAG7D,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,YAAY,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,YAAY,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAGzD,OAAO,EAAE,mBAAmB,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AACxF,YAAY,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AACjE,YAAY,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AACvF,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAC/D,YAAY,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AACjF,OAAO,EACL,YAAY,EACZ,aAAa,EACb,gBAAgB,EAChB,WAAW,EACX,WAAW,EACX,aAAa,EACb,SAAS,EACT,iBAAiB,GAClB,MAAM,qBAAqB,CAAC;AAC7B,YAAY,EAAE,SAAS,EAAE,OAAO,EAAE,YAAY,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAGtG,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,eAAe,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AACxG,YAAY,EAAE,iBAAiB,EAAE,QAAQ,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC"}
package/dist/index.js CHANGED
@@ -1,18 +1,37 @@
1
+ /**
2
+ * @module index
3
+ *
4
+ * Public API surface for the Lore knowledge-base toolkit.
5
+ *
6
+ * Exports are intentional and small. Internal helpers like `ParserPool`,
7
+ * `normalizeTypeName`, etc., are not exposed. `buildCallGraph` has been
8
+ * removed — use `resolveSymbolEdges` instead.
9
+ *
10
+ * Layering: runtime → domain services → storage → shared types
11
+ */
12
+ // ── Indexing API ──────────────────────────────────────────────────────────────
1
13
  export { IndexBuilder } from './indexer/index.js';
2
14
  export { openDb, setLoreMeta, getLoreMeta, createVec0Tables } from './indexer/db.js';
3
- export { buildCallGraph, topoSort, detectCycles } from './indexer/call-graph.js';
15
+ export { resolveSymbolEdges, topoSort, detectCycles } from './indexer/call-graph.js';
4
16
  export { walkFiles, detectLanguageForPath } from './indexer/walker.js';
5
17
  export { ImportResolver } from './indexer/resolver.js';
6
- export { ParserPool } from './indexer/parser.js';
7
18
  export { ensurePythonDeps } from './indexer/ensure-python-deps.js';
8
19
  export { installGitHooks } from './indexer/git-hooks.js';
9
20
  export { SentenceTransformersProvider, Qwen3EmbeddingProvider, DEFAULT_EMBEDDING_MODEL } from './indexer/embedder.js';
21
+ // ── Resolution method taxonomy (shared constant) ─────────────────────────────
22
+ export { RESOLUTION_METHODS, RESOLVED_METHODS, UNRESOLVED_METHODS } from './indexer/resolution-method.js';
23
+ // ── Pipeline (composable indexing stages) ─────────────────────────────────────
24
+ export { IndexPipeline } from './indexer/pipeline.js';
25
+ export { SourceIndexStage, DocsIndexStage, ImportResolutionStage, DependencyApiStage, LspEnrichmentStage, EmbeddingStage, } from './indexer/stages/index.js';
26
+ // ── Runtime ───────────────────────────────────────────────────────────────────
27
+ export { LoreRuntime } from './runtime.js';
10
28
  // ── File watcher / poller ─────────────────────────────────────────────────────
11
29
  export { FileWatcher } from './indexer/watcher.js';
12
30
  export { FilePoller } from './indexer/poller.js';
13
31
  // ── MCP server ────────────────────────────────────────────────────────────────
14
- export { createLoreMcpServer } from './lore-server/server.js';
15
- export { openReadOnly, getSymbolById, getSymbolsByName, listSymbols, getFileById, getFileByPath, listFiles, } from './lore-server/db.js';
32
+ export { createLoreMcpServer, createLoreMcpServerAsync } from './lore-server/server.js';
33
+ export { registerTools } from './lore-server/tool-registry.js';
34
+ export { openReadOnly, getSymbolById, getSymbolsByName, listSymbols, getFileById, getFileByPath, listFiles, listResolvedEdges, } from './lore-server/db.js';
16
35
  // ── Logging ───────────────────────────────────────────────────────────────────
17
36
  export { LoreLogger, LogLevel, LOG_LEVEL_NAMES, initLogger, getLogger, resetLogger } from './logger.js';
18
37
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAErF,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACjF,OAAO,EAAE,SAAS,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAEvE,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAGzD,OAAO,EAAE,4BAA4B,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAUtH,iFAAiF;AACjF,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAEnD,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAGjD,iFAAiF;AACjF,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAG9D,OAAO,EACL,YAAY,EACZ,aAAa,EACb,gBAAgB,EAChB,WAAW,EACX,WAAW,EACX,aAAa,EACb,SAAS,GACV,MAAM,qBAAqB,CAAC;AAG7B,iFAAiF;AACjF,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,eAAe,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,iFAAiF;AACjF,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAErF,OAAO,EAAE,kBAAkB,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACrF,OAAO,EAAE,SAAS,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAEvE,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAGzD,OAAO,EAAE,4BAA4B,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAUtH,gFAAgF;AAChF,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAG1G,iFAAiF;AACjF,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAEtD,OAAO,EACL,gBAAgB,EAChB,cAAc,EACd,qBAAqB,EACrB,kBAAkB,EAClB,kBAAkB,EAClB,cAAc,GACf,MAAM,2BAA2B,CAAC;AAGnC,iFAAiF;AACjF,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAG3C,iFAAiF;AACjF,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAEnD,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAGjD,iFAAiF;AACjF,OAAO,EAAE,mBAAmB,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AAGxF,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAE/D,OAAO,EACL,YAAY,EACZ,aAAa,EACb,gBAAgB,EAChB,WAAW,EACX,WAAW,EACX,aAAa,EACb,SAAS,EACT,iBAAiB,GAClB,MAAM,qBAAqB,CAAC;AAG7B,iFAAiF;AACjF,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,eAAe,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC"}
@@ -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,13 +15,31 @@
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
  */
21
- export declare function buildCallGraph(db: Database.Database): void;
29
+ export declare function normalizeTypeName(raw: string): string;
30
+ /**
31
+ * Resolves unresolved edges in `symbol_refs`, `type_refs`, and
32
+ * `symbol_relationships` using a layered resolution strategy:
33
+ *
34
+ * 1. **LSP containment mapping** (`lsp_definition`) — when `definition_path`
35
+ * + `definition_line` are populated, map to the narrowest enclosing symbol.
36
+ * 2. **Same-file name match** (`name_same_file`) — if the ref name matches
37
+ * exactly one symbol in the same file, resolve it.
38
+ * 3. **Globally unique name** (`name_unique`) — if the ref name matches
39
+ * exactly one symbol across the entire index, resolve it.
40
+ * 4. Leave as `unresolved` / `external_definition` otherwise.
41
+ */
42
+ export declare function resolveSymbolEdges(db: Database.Database): void;
22
43
  /**
23
44
  * Returns file IDs in topologically sorted order (dependencies before
24
45
  * dependents) using Kahn's algorithm over the `file_imports` graph.
@@ -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;AAKxC;;;;;;;;;;;GAWG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CA2BrD;AAID;;;;;;;;;;;GAWG;AACH,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAwD9D;AAqOD;;;;;;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"}