@jafreck/lore 0.3.6 → 0.3.8

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 (206) hide show
  1. package/README.md +38 -150
  2. package/dist/cli.d.ts +2 -1
  3. package/dist/cli.d.ts.map +1 -1
  4. package/dist/cli.js +80 -32
  5. package/dist/cli.js.map +1 -1
  6. package/dist/db/read-only.d.ts +22 -43
  7. package/dist/db/read-only.d.ts.map +1 -1
  8. package/dist/db/read-only.js +80 -156
  9. package/dist/db/read-only.js.map +1 -1
  10. package/dist/db/schema.d.ts +9 -0
  11. package/dist/db/schema.d.ts.map +1 -1
  12. package/dist/db/schema.js +171 -85
  13. package/dist/db/schema.js.map +1 -1
  14. package/dist/discovery/poller.d.ts +6 -16
  15. package/dist/discovery/poller.d.ts.map +1 -1
  16. package/dist/discovery/poller.js +21 -52
  17. package/dist/discovery/poller.js.map +1 -1
  18. package/dist/discovery/scip-flush.d.ts +44 -0
  19. package/dist/discovery/scip-flush.d.ts.map +1 -0
  20. package/dist/discovery/scip-flush.js +67 -0
  21. package/dist/discovery/scip-flush.js.map +1 -0
  22. package/dist/discovery/watcher.d.ts +6 -16
  23. package/dist/discovery/watcher.d.ts.map +1 -1
  24. package/dist/discovery/watcher.js +22 -54
  25. package/dist/discovery/watcher.js.map +1 -1
  26. package/dist/docs/docs.d.ts +0 -2
  27. package/dist/docs/docs.d.ts.map +1 -1
  28. package/dist/docs/docs.js +0 -27
  29. package/dist/docs/docs.js.map +1 -1
  30. package/dist/embeddings/embedder.d.ts +12 -8
  31. package/dist/embeddings/embedder.d.ts.map +1 -1
  32. package/dist/embeddings/embedder.js +35 -19
  33. package/dist/embeddings/embedder.js.map +1 -1
  34. package/dist/index.d.ts +5 -2
  35. package/dist/index.d.ts.map +1 -1
  36. package/dist/index.js +3 -2
  37. package/dist/index.js.map +1 -1
  38. package/dist/indexer/index.d.ts +19 -10
  39. package/dist/indexer/index.d.ts.map +1 -1
  40. package/dist/indexer/index.js +135 -28
  41. package/dist/indexer/index.js.map +1 -1
  42. package/dist/indexer/pipeline.d.ts +44 -21
  43. package/dist/indexer/pipeline.d.ts.map +1 -1
  44. package/dist/indexer/pipeline.js +48 -26
  45. package/dist/indexer/pipeline.js.map +1 -1
  46. package/dist/indexer/stages/docs-index.d.ts +1 -3
  47. package/dist/indexer/stages/docs-index.d.ts.map +1 -1
  48. package/dist/indexer/stages/docs-index.js +1 -25
  49. package/dist/indexer/stages/docs-index.js.map +1 -1
  50. package/dist/indexer/stages/index.d.ts +4 -2
  51. package/dist/indexer/stages/index.d.ts.map +1 -1
  52. package/dist/indexer/stages/index.js +3 -2
  53. package/dist/indexer/stages/index.js.map +1 -1
  54. package/dist/indexer/stages/lsp-enrichment.d.ts +1 -1
  55. package/dist/indexer/stages/lsp-enrichment.d.ts.map +1 -1
  56. package/dist/indexer/stages/lsp-enrichment.js +44 -21
  57. package/dist/indexer/stages/lsp-enrichment.js.map +1 -1
  58. package/dist/indexer/stages/overlay-cleanup.d.ts +31 -0
  59. package/dist/indexer/stages/overlay-cleanup.d.ts.map +1 -0
  60. package/dist/indexer/stages/overlay-cleanup.js +64 -0
  61. package/dist/indexer/stages/overlay-cleanup.js.map +1 -0
  62. package/dist/indexer/stages/reverse-deps.d.ts +13 -0
  63. package/dist/indexer/stages/reverse-deps.d.ts.map +1 -0
  64. package/dist/indexer/stages/reverse-deps.js +81 -0
  65. package/dist/indexer/stages/reverse-deps.js.map +1 -0
  66. package/dist/indexer/stages/{scip-source.d.ts → scip-indexer.d.ts} +38 -9
  67. package/dist/indexer/stages/scip-indexer.d.ts.map +1 -0
  68. package/dist/indexer/stages/{scip-source.js → scip-indexer.js} +359 -98
  69. package/dist/indexer/stages/scip-indexer.js.map +1 -0
  70. package/dist/indexer/stages/source-index.d.ts +3 -3
  71. package/dist/indexer/stages/source-index.d.ts.map +1 -1
  72. package/dist/indexer/stages/source-index.js +188 -70
  73. package/dist/indexer/stages/source-index.js.map +1 -1
  74. package/dist/lsp/enrichment.d.ts.map +1 -1
  75. package/dist/lsp/enrichment.js +1 -18
  76. package/dist/lsp/enrichment.js.map +1 -1
  77. package/dist/parsing/extractors/go.d.ts.map +1 -1
  78. package/dist/parsing/extractors/go.js +0 -38
  79. package/dist/parsing/extractors/go.js.map +1 -1
  80. package/dist/parsing/extractors/javascript.d.ts.map +1 -1
  81. package/dist/parsing/extractors/javascript.js +0 -47
  82. package/dist/parsing/extractors/javascript.js.map +1 -1
  83. package/dist/parsing/extractors/python.d.ts.map +1 -1
  84. package/dist/parsing/extractors/python.js +0 -22
  85. package/dist/parsing/extractors/python.js.map +1 -1
  86. package/dist/parsing/extractors/types.d.ts +0 -16
  87. package/dist/parsing/extractors/types.d.ts.map +1 -1
  88. package/dist/parsing/extractors/types.js +1 -1
  89. package/dist/parsing/extractors/types.js.map +1 -1
  90. package/dist/parsing/extractors/typescript.d.ts.map +1 -1
  91. package/dist/parsing/extractors/typescript.js +18 -2
  92. package/dist/parsing/extractors/typescript.js.map +1 -1
  93. package/dist/resolution/call-graph.d.ts +3 -1
  94. package/dist/resolution/call-graph.d.ts.map +1 -1
  95. package/dist/resolution/call-graph.js +15 -13
  96. package/dist/resolution/call-graph.js.map +1 -1
  97. package/dist/resolution/resolution-method.d.ts +1 -1
  98. package/dist/resolution/resolution-method.d.ts.map +1 -1
  99. package/dist/resolution/resolution-method.js +2 -0
  100. package/dist/resolution/resolution-method.js.map +1 -1
  101. package/dist/resolution/resolver.d.ts +6 -0
  102. package/dist/resolution/resolver.d.ts.map +1 -1
  103. package/dist/resolution/resolver.js +21 -0
  104. package/dist/resolution/resolver.js.map +1 -1
  105. package/dist/runtime.d.ts +0 -2
  106. package/dist/runtime.d.ts.map +1 -1
  107. package/dist/runtime.js.map +1 -1
  108. package/dist/scip/compdb.d.ts +38 -0
  109. package/dist/scip/compdb.d.ts.map +1 -0
  110. package/dist/scip/compdb.js +138 -0
  111. package/dist/scip/compdb.js.map +1 -0
  112. package/dist/scip/enrichment.d.ts +6 -1
  113. package/dist/scip/enrichment.d.ts.map +1 -1
  114. package/dist/scip/enrichment.js +62 -5
  115. package/dist/scip/enrichment.js.map +1 -1
  116. package/dist/scip/installer.d.ts +59 -0
  117. package/dist/scip/installer.d.ts.map +1 -0
  118. package/dist/scip/installer.js +302 -0
  119. package/dist/scip/installer.js.map +1 -0
  120. package/dist/scip/registry.d.ts +1 -1
  121. package/dist/scip/registry.d.ts.map +1 -1
  122. package/dist/scip/registry.js +33 -5
  123. package/dist/scip/registry.js.map +1 -1
  124. package/dist/server/server.d.ts +3 -8
  125. package/dist/server/server.d.ts.map +1 -1
  126. package/dist/server/server.js +7 -66
  127. package/dist/server/server.js.map +1 -1
  128. package/dist/server/tool-registry.d.ts +2 -2
  129. package/dist/server/tool-registry.d.ts.map +1 -1
  130. package/dist/server/tool-registry.js +37 -41
  131. package/dist/server/tool-registry.js.map +1 -1
  132. package/dist/server/tools/cohesion.d.ts +46 -0
  133. package/dist/server/tools/cohesion.d.ts.map +1 -0
  134. package/dist/server/tools/cohesion.js +100 -0
  135. package/dist/server/tools/cohesion.js.map +1 -0
  136. package/dist/server/tools/dependents.d.ts +139 -0
  137. package/dist/server/tools/dependents.d.ts.map +1 -0
  138. package/dist/server/tools/dependents.js +354 -0
  139. package/dist/server/tools/dependents.js.map +1 -0
  140. package/dist/server/tools/diff.d.ts +73 -0
  141. package/dist/server/tools/diff.d.ts.map +1 -0
  142. package/dist/server/tools/diff.js +157 -0
  143. package/dist/server/tools/diff.js.map +1 -0
  144. package/dist/server/tools/graph.d.ts +7 -3
  145. package/dist/server/tools/graph.d.ts.map +1 -1
  146. package/dist/server/tools/graph.js +15 -85
  147. package/dist/server/tools/graph.js.map +1 -1
  148. package/dist/server/tools/metrics.d.ts +5 -30
  149. package/dist/server/tools/metrics.d.ts.map +1 -1
  150. package/dist/server/tools/metrics.js +21 -57
  151. package/dist/server/tools/metrics.js.map +1 -1
  152. package/dist/server/tools/structure.d.ts +77 -0
  153. package/dist/server/tools/structure.d.ts.map +1 -0
  154. package/dist/server/tools/structure.js +309 -0
  155. package/dist/server/tools/structure.js.map +1 -0
  156. package/dist/server/tools/test-map.d.ts +7 -0
  157. package/dist/server/tools/test-map.d.ts.map +1 -1
  158. package/dist/server/tools/test-map.js +18 -1
  159. package/dist/server/tools/test-map.js.map +1 -1
  160. package/dist/server/tools/trace.d.ts +84 -0
  161. package/dist/server/tools/trace.d.ts.map +1 -0
  162. package/dist/server/tools/trace.js +317 -0
  163. package/dist/server/tools/trace.js.map +1 -0
  164. package/dist/testing/coverage.d.ts +11 -0
  165. package/dist/testing/coverage.d.ts.map +1 -1
  166. package/dist/testing/coverage.js +34 -2
  167. package/dist/testing/coverage.js.map +1 -1
  168. package/dist/testing/test-mapper.d.ts +1 -1
  169. package/dist/testing/test-mapper.d.ts.map +1 -1
  170. package/dist/testing/test-mapper.js +1 -0
  171. package/dist/testing/test-mapper.js.map +1 -1
  172. package/package.json +3 -1
  173. package/dist/indexer/stages/scip-enrichment.d.ts +0 -43
  174. package/dist/indexer/stages/scip-enrichment.d.ts.map +0 -1
  175. package/dist/indexer/stages/scip-enrichment.js +0 -174
  176. package/dist/indexer/stages/scip-enrichment.js.map +0 -1
  177. package/dist/indexer/stages/scip-source.d.ts.map +0 -1
  178. package/dist/indexer/stages/scip-source.js.map +0 -1
  179. package/dist/server/tools/annotations.d.ts +0 -40
  180. package/dist/server/tools/annotations.d.ts.map +0 -1
  181. package/dist/server/tools/annotations.js +0 -35
  182. package/dist/server/tools/annotations.js.map +0 -1
  183. package/dist/server/tools/architecture.d.ts +0 -67
  184. package/dist/server/tools/architecture.d.ts.map +0 -1
  185. package/dist/server/tools/architecture.js +0 -209
  186. package/dist/server/tools/architecture.js.map +0 -1
  187. package/dist/server/tools/coverage.d.ts +0 -67
  188. package/dist/server/tools/coverage.d.ts.map +0 -1
  189. package/dist/server/tools/coverage.js +0 -74
  190. package/dist/server/tools/coverage.js.map +0 -1
  191. package/dist/server/tools/graph-analysis.d.ts +0 -64
  192. package/dist/server/tools/graph-analysis.d.ts.map +0 -1
  193. package/dist/server/tools/graph-analysis.js +0 -82
  194. package/dist/server/tools/graph-analysis.js.map +0 -1
  195. package/dist/server/tools/notes.d.ts +0 -165
  196. package/dist/server/tools/notes.d.ts.map +0 -1
  197. package/dist/server/tools/notes.js +0 -214
  198. package/dist/server/tools/notes.js.map +0 -1
  199. package/dist/server/tools/routes.d.ts +0 -38
  200. package/dist/server/tools/routes.d.ts.map +0 -1
  201. package/dist/server/tools/routes.js +0 -38
  202. package/dist/server/tools/routes.js.map +0 -1
  203. package/dist/server/tools/writeback.d.ts +0 -49
  204. package/dist/server/tools/writeback.d.ts.map +0 -1
  205. package/dist/server/tools/writeback.js +0 -68
  206. package/dist/server/tools/writeback.js.map +0 -1
package/README.md CHANGED
@@ -9,14 +9,14 @@
9
9
 
10
10
  **The teammate that knows it all**
11
11
 
12
- Lore holds 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, docs, and all git data — with optional embeddings for semantic search — so agents can reason about your codebase without re-reading it from scratch.
12
+ Lore holds 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, annotations, docs, and all git data — with optional embeddings for semantic search — so agents can reason about your codebase without re-reading it from scratch.
13
13
 
14
- Lore-enabled agents achieve up to **2.1× faster** responses, up to **79% fewer tokens**, and up to **+43pp correctness improvement** on code intelligence tasks compared to a baseline agent grep and file reads alone. See the [full benchmark results](docs/benchmark-results.md) for details.
14
+ Lore-enabled agents achieve up to **8.8× faster** responses, up to **97% fewer tokens**, and up to **+33pp correctness improvement** on code intelligence tasks compared to a baseline agent with grep and file reads alone. See the [full benchmark results](docs/benchmark-results.md) for details.
15
15
 
16
16
  ## What Lore does
17
17
 
18
18
  - Indexes source files using SCIP indexers by default for pre-resolved symbols and edges, with tree-sitter parsing as a fallback for languages without a SCIP indexer
19
- - Extracts symbols, imports, call refs, type refs, annotations, and API routes across all 23 supported languages
19
+ - Extracts symbols, imports, call refs, type refs, and annotations across all 23 supported languages
20
20
  - Resolves internal vs external imports and builds call/import/module/inheritance/type-dependency graph edges using a 3-tier resolution strategy (SCIP/LSP containment, same-file name match, unique name match)
21
21
  - Discovers and indexes documentation (`.md`, `.rst`, `.adoc`, `.txt`) with inferred kinds/titles
22
22
  - Stores everything in a normalized SQL schema with optional vector search
@@ -37,37 +37,41 @@ flowchart LR
37
37
  COV[Coverage Reports]
38
38
  end
39
39
 
40
- subgraph Lore Indexer
41
- SCIPDIRECT[SCIP Source<br/>pre-resolved symbols + refs] --> WALK
42
- WALK[Walker] --> PARSE[Parser] --> EXTRACT[Extractors<br/>symbols · imports · call refs<br/>type refs · routes · annotations]
40
+ subgraph INDEXER[Lore Indexer]
41
+ SCIPDIRECT[SCIP Source<br/>pre-resolved symbols + refs] --> WALK
42
+ WALK[Walker] --> PARSE[Parser] --> EXTRACT[Extractors<br/>symbols · imports · call refs<br/>type refs · annotations]
43
43
  EXTRACT --> RESOLVE[Import Resolver<br/>internal ↔ external]
44
- EXTRACT --> CALLGRAPH[Relationship Resolver]
44
+ EXTRACT --> CALLGRAPH[Relationship Resolver]
45
45
  EXTRACT -.-> LSPENRICH[LSP Enrichment<br/>type signatures · definition locations]
46
- DOCSINGEST[Docs Ingest<br/>sections · headings · notes]
46
+ DOCSINGEST[Docs Ingest<br/>sections · headings]
47
47
  GITHIST[Git History Ingest<br/>commits · diffs · refs]
48
48
  COVINGEST[Coverage Ingest<br/>lcov · cobertura]
49
49
  end
50
50
 
51
+ SRC --> SCIPDIRECT
52
+ SRC --> WALK
53
+ DOCS --> DOCSINGEST
54
+ GIT --> GITHIST
55
+ COV --> COVINGEST
56
+
51
57
  DB[(SQL DB)]
52
58
  EMBED([Embedding Model])
53
59
 
54
- subgraph MCP Server
60
+ subgraph MCP_SERVER[MCP Server]
55
61
  LOOKUP[lore_lookup]
56
62
  SEARCH[lore_search]
57
63
  DOCS_TOOL[lore_docs]
58
- ANNOT[lore_annotations]
59
64
  GRAPH[lore_graph]
60
- ROUTES[lore_routes]
61
- NOTES[lore_notes_read/write]
62
- ARCH[lore_architecture]
65
+ DEPENDENTS[lore_dependents]
66
+ TRACE[lore_trace]
67
+ DIFF[lore_diff]
68
+ COHESION[lore_cohesion]
69
+ STRUCTURE[lore_structure]
63
70
  TESTMAP[lore_test_map]
64
71
  SNIPPET[lore_snippet]
65
72
  BLAME[lore_blame]
66
73
  HISTORY[lore_history]
67
74
  METRICS[lore_metrics]
68
- COVERAGE[lore_coverage]
69
- WRITEBACK[lore_writeback]
70
- ANALYZE[lore_analyze]
71
75
  end
72
76
 
73
77
  subgraph MCP_CLIENTS[MCP Clients — Agents]
@@ -78,63 +82,22 @@ flowchart LR
78
82
  CLAUDE_CODE ~~~ COPILOT ~~~ CURSOR ~~~ CUSTOM
79
83
  end
80
84
 
81
- SRC --> WALK
82
- DOCS --> DOCSINGEST --> DB
83
- GIT --> GITHIST --> DB
84
- COV --> COVINGEST --> DB
85
+ DOCSINGEST --> DB
86
+ GITHIST --> DB
87
+ COVINGEST --> DB
85
88
 
86
89
  RESOLVE & CALLGRAPH --> DB
87
90
  LSPENRICH -.->|optional| DB
88
91
  RESOLVE -.->|optional| EMBED
89
92
  EMBED -.-> DB
90
93
 
91
- DB --- LOOKUP & SEARCH & DOCS_TOOL & ANNOT & GRAPH & ROUTES & NOTES & ARCH & TESTMAP & SNIPPET & BLAME & HISTORY & METRICS & COVERAGE & WRITEBACK & ANALYZE
94
+ DB --- LOOKUP & SEARCH & DOCS_TOOL & GRAPH & DEPENDENTS & TRACE & DIFF & COHESION & STRUCTURE & TESTMAP & SNIPPET & BLAME & HISTORY & METRICS
92
95
  EMBED <-.->|semantic/fused| SEARCH
93
96
 
94
- LOOKUP & SEARCH & DOCS_TOOL & ANNOT & GRAPH & ROUTES & NOTES & ARCH & TESTMAP & SNIPPET & BLAME & HISTORY & METRICS & COVERAGE & WRITEBACK & ANALYZE <--> MCP_CLIENTS
97
+ LOOKUP & SEARCH & DOCS_TOOL & GRAPH & DEPENDENTS & TRACE & DIFF & COHESION & STRUCTURE & TESTMAP & SNIPPET & BLAME & HISTORY & METRICS <--> MCP_CLIENTS
95
98
  ```
96
99
 
97
- Lore sits between your codebase and any LLM-powered tool. A `LoreRuntime`
98
- instance owns all long-lived resources (database, embedder, LSP coordinators,
99
- watcher/poller) and dispatches both CLI commands and MCP server requests through
100
- a single lifecycle.
101
-
102
- The **indexer** is decomposed into composable **pipeline stages** orchestrated
103
- by `IndexPipeline`. `IndexBuilder` is now a thin façade (~310 lines, down from
104
- ~1 230) that delegates to the pipeline for both full builds and incremental
105
- updates. The stage ordering enforces data dependencies structurally:
106
-
107
- ```
108
- ScipSource → SourceIndex → DocsIndex → ImportResolution → DependencyApi
109
- → ScipEnrichment → LspEnrichment → Resolution → TestMap → History → Embedding
110
- ```
111
-
112
- **SCIP is the default source stage.** `ScipSourceStage` runs first and
113
- populates symbols, refs, and pre-resolved edges for every language that has
114
- a SCIP indexer available. `SourceIndexStage` then handles remaining languages
115
- (or all languages if SCIP is explicitly disabled) via tree-sitter as a
116
- fallback. A **SCIP enrichment** stage then writes definition locations and
117
- type metadata from SCIP data, while an optional **LSP enrichment** stage can
118
- enrich symbols not already covered by SCIP. Symbol references are
119
- resolved using a **3-tier strategy**: SCIP/LSP containment → same-file name
120
- match → unique name match. An optional **embedder** generates dense vectors
121
- for semantic search (with async initialization so the MCP server starts
122
- instantly), and a parallel **git history** ingest captures commits, diffs,
123
- and refs. Everything is persisted to a normalized SQL database.
124
-
125
- The **MCP server** uses a `ToolRegistry` that auto-discovers tool modules
126
- from their exported `toolDef` / `handler` definitions — no duplicate schema
127
- code. It exposes the database as a set of tools that any MCP-compatible
128
- client can call to look up symbols, search code, traverse call graphs, read
129
- snippets, query blame/history, and write summaries back.
130
-
131
- The index stays fresh automatically. You can install **git hooks**
132
- (`post-commit`, `post-merge`, etc.) that trigger an incremental refresh on
133
- every commit, run a **watch** mode that reacts to filesystem events in
134
- real time (with live embedding updates), or use **poll** mode for
135
- environments where watch events are unreliable (also with live embedding
136
- updates). Each refresh only re-processes files whose content hash has
137
- changed, so updates are fast even on large repositories.
100
+ Lore sits between your codebase and any LLM-powered tool. The indexer uses a SCIP-first strategy with tree-sitter fallback to extract symbols, imports, and relationships, then persists everything to a normalized SQL database. The MCP server auto-discovers tool modules and exposes the database to any MCP-compatible client. The index stays fresh via git hooks, watch mode, or poll mode — each refresh only re-processes files whose content hash has changed.
138
101
 
139
102
  See [docs/architecture.md](docs/architecture.md) for the full schema and
140
103
  pipeline breakdown.
@@ -189,20 +152,17 @@ await builder.build();
189
152
  | `lore_lookup` | Find symbols by name or files by path, including external dependency API symbols and LSP-resolved metadata when available |
190
153
  | `lore_search` | Structural BM25, semantic vector, or fused RRF search across symbols and doc sections |
191
154
  | `lore_docs` | List, fetch, or search indexed documentation with branch, kind, and path filters |
192
- | `lore_annotations` | Return indexed TODO/FIXME/HACK/NOTE-style annotations with optional path and limit filters |
193
- | `lore_routes` | Query extracted API routes/endpoints with optional method, path prefix, and framework filters |
194
- | `lore_notes_write` | Upsert agent-authored notes by key and scope, with optional source hash for staleness tracking |
195
- | `lore_notes_read` | Read notes by exact key or key prefix with scope-aware staleness metadata |
196
- | `lore_architecture` | Build a component-level architecture view with edges, entry/leaf nodes, and external dependency usage |
197
- | `lore_graph` | Query call/import/module/inheritance/type-dependency edges; supports `source_id` for outbound and `target_id` for inbound/reverse queries; call edges include `callee_coverage_percent` |
155
+ | `lore_dependents` | Find everything affected by changing a symbol or file — callers, importers, subclasses, and type references in one call |
156
+ | `lore_trace` | Trace an execution path from an entry point and return an ordered call sequence with source code for each step |
157
+ | `lore_diff` | Compare exported symbols between two indexed branches; returns added, removed, and changed symbols |
158
+ | `lore_cohesion` | Rank directories by module cohesion (ratio of internal to external symbol references) |
159
+ | `lore_structure` | Detect structural anomalies import cycles (Tarjan SCC), layering violations (Kahn toposort), and outlier couplings |
160
+ | `lore_graph` | Query call/import/inheritance/type-dependency edges; supports `source_id` for outbound and `target_id` for inbound/reverse queries; call edges include `callee_coverage_percent` |
198
161
  | `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 |
199
162
  | `lore_test_map` | Return mapped test files (with confidence) for a given source file path |
200
163
  | `lore_blame` | Query blame, line-range history, or ownership aggregates with optional symbol targeting, commit-context enrichment, and risk signals |
201
164
  | `lore_history` | Query commit history by file, commit, author, ref, recency, or semantic commit-message similarity |
202
165
  | `lore_metrics` | Aggregate index metrics plus coverage/staleness fields |
203
- | `lore_coverage` | Symbol-level coverage, uncovered lines, and staleness metadata |
204
- | `lore_writeback` | Persist agent-authored symbol summaries |
205
- | `lore_analyze` | Run graph analysis primitives: symbol-level cycle detection (SCC), connected components (file or symbol scope), bounded-size symbol clustering, and condensed codebase summary |
206
166
 
207
167
  ### lore_lookup query options
208
168
 
@@ -330,13 +290,6 @@ CLI discovery controls:
330
290
 
331
291
  - `--docs-include <glob>` / `--docs-exclude <glob>` — repeatable include/exclude filters
332
292
  - `--docs-extension <ext>` — repeatable extension filter (e.g. `.md`)
333
- - `--docs-auto-notes` / `--no-docs-auto-notes` — toggle seeded doc-note upserts (default: enabled)
334
-
335
- When auto-notes are enabled, Lore seeds `notes` rows for README, architecture,
336
- and ADR docs using deterministic keys. Each note tracks a `source_hash` for
337
- staleness detection — `lore_notes_read` reports doc-scoped notes as stale when
338
- the backing document changes or disappears.
339
-
340
293
  Programmatic example:
341
294
 
342
295
  ```ts
@@ -520,7 +473,7 @@ are fast even on large repositories.
520
473
  Build or update a knowledge base.
521
474
 
522
475
  ```bash
523
- 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-scip]
476
+ 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>] [--lsp] [--no-scip]
524
477
  ```
525
478
 
526
479
  ### lore refresh
@@ -528,7 +481,7 @@ npx @jafreck/lore index --root <dir> --db <path> [--embedding-model <id>] [--blo
528
481
  Incremental refresh (one-shot, watch, or poll).
529
482
 
530
483
  ```bash
531
- npx @jafreck/lore refresh --db <path> --root <dir> [--index-deps] [--history] [--history-depth <n>] [--history-all] [--docs-include <glob>] [--docs-exclude <glob>] [--docs-extension <ext>] [--docs-auto-notes|--no-docs-auto-notes] [--lsp] [--no-scip]
484
+ npx @jafreck/lore refresh --db <path> --root <dir> [--index-deps] [--history] [--history-depth <n>] [--history-all] [--docs-include <glob>] [--docs-exclude <glob>] [--docs-extension <ext>] [--lsp] [--no-scip]
532
485
  npx @jafreck/lore refresh --db <path> --root <dir> --watch [--index-deps] [--history] [--docs-include <glob>] [--docs-exclude <glob>] [--docs-extension <ext>] [--lsp] [--no-scip]
533
486
  npx @jafreck/lore refresh --db <path> --root <dir> --poll [--index-deps] [--history] [--docs-include <glob>] [--docs-exclude <glob>] [--docs-extension <ext>] [--lsp] [--no-scip]
534
487
  ```
@@ -551,18 +504,12 @@ npx @jafreck/lore ingest-coverage --db <path> --root <dir> --file <path> --forma
551
504
 
552
505
  ### lore mcp
553
506
 
554
- Start the MCP server over stdio.
507
+ Start the MCP server over stdio. When `--root` is given and no database exists
508
+ yet, Lore auto-indexes before starting.
555
509
 
556
510
  ```bash
557
- npx @jafreck/lore mcp --db <path> [--blocking-embedder]
558
- ```
559
-
560
- ### lore analyze
561
-
562
- Run graph analysis on an indexed knowledge base.
563
-
564
- ```bash
565
- npx @jafreck/lore analyze --db <path> [--mode <cycles|components|clusters|summary>] [--edge-kinds <call|type|both>] [--branch <name>] [--max-lines <n>]
511
+ npx @jafreck/lore mcp --root <dir> [--watch|--poll]
512
+ npx @jafreck/lore mcp --db <path> [--root <dir> --watch|--poll] [--blocking-embedder]
566
513
  ```
567
514
 
568
515
  ## Build from source
@@ -592,62 +539,3 @@ npm run coverage
592
539
  CI currently enforces minimum coverage thresholds of 77% statements, 64%
593
540
  branches, 80% functions, and 79% lines.
594
541
 
595
- ## Publish authentication (npm)
596
-
597
- Lore publish operations use `NODE_AUTH_TOKEN` (see `.npmrc`) and never commit
598
- tokens to the repository.
599
-
600
- Local publish flow:
601
-
602
- ```bash
603
- export NODE_AUTH_TOKEN=<npm automation token>
604
- npm publish --access public
605
- ```
606
-
607
- CI publish flow:
608
-
609
- - Add `NODE_AUTH_TOKEN` as a secret in your CI provider (for GitHub Actions,
610
- use a repository or environment secret).
611
- - Ensure publish jobs expose that secret as the `NODE_AUTH_TOKEN` environment
612
- variable before running `npm publish`.
613
-
614
- ## Release publish workflow
615
-
616
- Publishing is automated by `.github/workflows/publish.yml`. Publishing a
617
- GitHub Release triggers the npm publish job.
618
-
619
- Release steps:
620
-
621
- 1. Ensure `package.json` has the target version.
622
- 2. Publish a GitHub Release with the matching `vX.Y.Z` tag.
623
- 3. Confirm the workflow logs show `npm publish --dry-run` output before the
624
- live `npm publish` step.
625
-
626
- Post-publish verification:
627
-
628
- - Check the package metadata: `npm view @jafreck/lore version`.
629
- - Confirm installability: `npm view @jafreck/lore@<version> name version`.
630
-
631
- ## Benchmarking index performance (500+ file repos)
632
-
633
- Use this procedure when you need measurable before/after evidence for indexing changes:
634
-
635
- 1. Pick a repository with at least 500 source files and note the exact commit SHA you will test.
636
- 2. Capture a baseline timing from the same machine and environment:
637
-
638
- ```bash
639
- time npx @jafreck/lore index --root /path/to/repo --db ./lore-baseline.db
640
- ```
641
-
642
- 3. Apply your change, rebuild Lore, then capture a post-change timing against the same repository commit:
643
-
644
- ```bash
645
- npm run build
646
- time npx @jafreck/lore index --root /path/to/repo --db ./lore-after.db
647
- ```
648
-
649
- 4. Record both timings (baseline and post-change) in the related GitHub issue or PR under an "Acceptance Evidence" section, including repo name, commit SHA, and command used.
650
-
651
- ## License
652
-
653
- [MIT](LICENSE)
package/dist/cli.d.ts CHANGED
@@ -7,7 +7,8 @@
7
7
  * Usage:
8
8
  * lore index --root <dir> --db <path> [--embedding-model <id>]
9
9
  * Index a codebase into a knowledge-base file.
10
- * lore mcp --db <path> Start the knowledge-base MCP server (stdio transport).
10
+ * lore mcp --root <dir> Start the MCP server, indexing automatically if needed.
11
+ * lore mcp --db <path> Start the MCP server with a pre-indexed DB.
11
12
  * lore refresh --db <path> --root <dir> Run an incremental index update and exit.
12
13
  * lore refresh --db <path> --root <dir> --watch Watch for changes and refresh automatically.
13
14
  * lore refresh --db <path> --root <dir> --poll Poll for changes and refresh automatically.
package/dist/cli.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;;GAeG"}
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;;;GAgBG"}
package/dist/cli.js CHANGED
@@ -7,7 +7,8 @@
7
7
  * Usage:
8
8
  * lore index --root <dir> --db <path> [--embedding-model <id>]
9
9
  * Index a codebase into a knowledge-base file.
10
- * lore mcp --db <path> Start the knowledge-base MCP server (stdio transport).
10
+ * lore mcp --root <dir> Start the MCP server, indexing automatically if needed.
11
+ * lore mcp --db <path> Start the MCP server with a pre-indexed DB.
11
12
  * lore refresh --db <path> --root <dir> Run an incremental index update and exit.
12
13
  * lore refresh --db <path> --root <dir> --watch Watch for changes and refresh automatically.
13
14
  * lore refresh --db <path> --root <dir> --poll Poll for changes and refresh automatically.
@@ -24,9 +25,10 @@ import { LoreRuntime } from './runtime.js';
24
25
  // ─── Argument helpers ─────────────────────────────────────────────────────────
25
26
  function usage() {
26
27
  console.error(`Usage:
27
- lore index --root <dir> --db <path> [--embedding-model <id>] [--index-deps] [--history] [--history-depth <n>] [--history-all]
28
+ lore index --root <dir> --db <path> [--embeddings] [--embedding-model <id>] [--index-deps] [--history] [--history-depth <n>] [--history-all]
28
29
  Index a codebase into a knowledge-base SQLite file
29
- lore mcp --db <path> [--root <dir> --watch|--poll] Start the Lore MCP server (stdio transport), optionally with live indexing
30
+ lore mcp --root <dir> [--watch|--poll] Start the Lore MCP server, auto-indexing if no DB exists yet
31
+ lore mcp --db <path> [--root <dir> --watch|--poll] Start the Lore MCP server with a pre-indexed DB
30
32
  lore refresh --db <path> --root <dir> [--index-deps] [--history] [--history-depth <n>] [--history-all] Run an incremental index update and exit
31
33
  lore refresh --db <path> --root <dir> --watch [--embedding-model <id>] Watch for file changes and refresh automatically
32
34
  lore refresh --db <path> --root <dir> --poll [--embedding-model <id>] Poll for file changes and refresh automatically
@@ -36,11 +38,15 @@ function usage() {
36
38
  Ingest an explicit coverage report file into the knowledge base
37
39
  lore analyze --db <path> [--mode <mode>] [--edge-kinds <kind>] [--branch <name>] [--max-lines <n>]
38
40
  Run graph analysis on the knowledge-base (cycles, components, clusters, summary)
41
+ lore install-scip [--language <lang>] [--list]
42
+ Install SCIP indexers for richer code intelligence (auto-downloads missing indexers)
39
43
 
40
44
  Options:
41
45
  --root <dir> Root directory to index (required for index, refresh)
42
- --db <path> Path to a Lore knowledge-base SQLite file (required for index, mcp, refresh)
43
- --embedding-model <id> Embedding model identifier (default: Qwen/Qwen3-Embedding-4B)
46
+ --db <path> Path to a Lore knowledge-base SQLite file (required for index, refresh; optional for mcp)
47
+ --embedding-model <id> Embedding model identifier (default: Qwen3-Embedding-0.6B-ONNX)
48
+ --embeddings Enable embedding generation during indexing (disabled by default)
49
+ --no-embeddings Disable embedding generation during indexing (default)
44
50
  --index-deps Enable dependency API indexing (disabled by default)
45
51
  --history Enable git history ingestion
46
52
  --history-depth <n> Limit commit ingestion to the most recent N commits
@@ -51,8 +57,6 @@ Options:
51
57
  --docs-include <glob> Glob pattern for docs to include (repeatable)
52
58
  --docs-exclude <glob> Glob pattern for docs to exclude (repeatable)
53
59
  --docs-extension <ext> Documentation extension to include, e.g. .md (repeatable)
54
- --docs-auto-notes Enable doc-based note seeding during indexing (default)
55
- --no-docs-auto-notes Disable doc-based note seeding during indexing
56
60
  --watch Enable fs-event watch mode (low-latency, may miss events on some platforms)
57
61
  --poll Enable polling mode (reliable but higher CPU/IO cost)
58
62
  --lsp Enable index-time LSP enrichment (disabled by default)
@@ -80,19 +84,6 @@ function flags(args, name) {
80
84
  }
81
85
  return results;
82
86
  }
83
- function docsAutoNotesFlag(args) {
84
- const enable = args.includes('--docs-auto-notes');
85
- const disable = args.includes('--no-docs-auto-notes');
86
- if (enable && disable) {
87
- console.error('Error: --docs-auto-notes and --no-docs-auto-notes cannot be used together.\n');
88
- usage();
89
- }
90
- if (enable)
91
- return true;
92
- if (disable)
93
- return false;
94
- return true;
95
- }
96
87
  function explicitLspEnabled(args) {
97
88
  if (args.includes('--lsp'))
98
89
  return true;
@@ -142,6 +133,12 @@ async function main() {
142
133
  return;
143
134
  }
144
135
  const embeddingModel = flag(args, '--embedding-model');
136
+ const embeddingsEnabled = embeddingModel !== undefined || args.includes('--embeddings');
137
+ if (args.includes('--embeddings') && args.includes('--no-embeddings')) {
138
+ console.error('Error: --embeddings and --no-embeddings cannot be used together.\n');
139
+ usage();
140
+ return;
141
+ }
145
142
  const indexDependencies = args.includes('--index-deps');
146
143
  const historyEnabled = args.includes('--history');
147
144
  const historyAll = args.includes('--history-all');
@@ -196,7 +193,6 @@ async function main() {
196
193
  const docsIncludeGlobs = flags(args, '--docs-include');
197
194
  const docsExcludeGlobs = flags(args, '--docs-exclude');
198
195
  const docsExtensions = flags(args, '--docs-extension');
199
- const docsAutoNotes = docsAutoNotesFlag(args);
200
196
  // Static reverse map: language name → extensions (mirrors EXT_TO_LANG in walker.ts)
201
197
  const LANG_TO_EXTS = {
202
198
  c: ['.c', '.h'],
@@ -238,9 +234,14 @@ async function main() {
238
234
  }
239
235
  }
240
236
  const { IndexBuilder } = await import('./indexer/index.js');
237
+ // Create an embedding provider when embeddings are enabled.
238
+ let embedder;
239
+ if (embeddingsEnabled) {
240
+ const { LazyEmbeddingProvider, DEFAULT_EMBEDDING_MODEL } = await import('./embeddings/embedder.js');
241
+ embedder = new LazyEmbeddingProvider(embeddingModel ?? DEFAULT_EMBEDDING_MODEL);
242
+ }
241
243
  const shouldEnableHistory = historyEnabled || historyAll || historyDepth !== undefined;
242
244
  const options = {
243
- docsAutoNotes,
244
245
  indexDependencies,
245
246
  lsp: lspSettings,
246
247
  scip: scipSettings,
@@ -260,16 +261,40 @@ async function main() {
260
261
  ...(docsIncludeGlobs.length > 0 && { docsIncludeGlobs }),
261
262
  ...(docsExcludeGlobs.length > 0 && { docsExcludeGlobs }),
262
263
  ...(docsExtensions.length > 0 && { docsExtensions }),
263
- }, undefined, options);
264
+ }, embedder, options);
264
265
  await builder.build();
265
266
  }
266
267
  else if (subcommand === 'mcp') {
267
- const dbPath = flag(args, '--db');
268
- if (!dbPath) {
269
- console.error('Error: --db <path> is required for the mcp subcommand.\n');
268
+ const rootDir = flag(args, '--root');
269
+ let dbPath = flag(args, '--db');
270
+ if (!dbPath && !rootDir) {
271
+ console.error('Error: --root <dir> or --db <path> is required for the mcp subcommand.\n');
270
272
  usage();
271
273
  return;
272
274
  }
275
+ // When --root is given without --db, derive a default DB path.
276
+ if (!dbPath) {
277
+ const { join } = await import('node:path');
278
+ dbPath = join(rootDir, '.lore', 'lore.db');
279
+ }
280
+ // Auto-index if the DB does not exist and we have a root directory.
281
+ if (!fs.existsSync(dbPath) && rootDir) {
282
+ log.startup('auto-indexing before mcp start', { dbPath, rootDir });
283
+ process.stderr.write(JSON.stringify({ level: 'info', source: 'cli', message: 'auto-indexing repository', rootDir, dbPath }) + '\n');
284
+ const { join } = await import('node:path');
285
+ const dir = join(dbPath, '..');
286
+ if (!fs.existsSync(dir))
287
+ fs.mkdirSync(dir, { recursive: true });
288
+ const { IndexBuilder } = await import('./indexer/index.js');
289
+ const builder = new IndexBuilder(dbPath, { rootDir });
290
+ await builder.build();
291
+ log.startup('auto-index complete', { dbPath });
292
+ }
293
+ else if (!fs.existsSync(dbPath)) {
294
+ console.error(`Error: database file not found: ${dbPath}\nProvide --root <dir> to auto-index, or create the DB first with \`lore index\`.\n`);
295
+ process.exit(1);
296
+ return;
297
+ }
273
298
  log.startup('mcp server initializing', { dbPath });
274
299
  // Dynamically import so tree-shaking keeps the MCP server out of the
275
300
  // library entry point for consumers who only need the indexer.
@@ -304,7 +329,6 @@ async function main() {
304
329
  // ── Optional live-index watcher/poller (shares the same embedder) ────
305
330
  const watchMode = args.includes('--watch');
306
331
  const pollMode = args.includes('--poll');
307
- const rootDir = flag(args, '--root');
308
332
  const runtime = new LoreRuntime({
309
333
  dbPath,
310
334
  rootDir: rootDir ?? '.',
@@ -313,7 +337,6 @@ async function main() {
313
337
  scip: null,
314
338
  history: false,
315
339
  indexDependencies: false,
316
- docsAutoNotes: true,
317
340
  embeddingModel: modelName ?? undefined,
318
341
  refreshMode: (watchMode && rootDir) ? 'watch' : (pollMode && rootDir) ? 'poll' : 'none',
319
342
  }, log);
@@ -333,7 +356,7 @@ async function main() {
333
356
  totalEdges,
334
357
  commitCount,
335
358
  });
336
- const server = createLoreMcpServer(db, dbPath, embedder, { logger: log });
359
+ const server = await createLoreMcpServer(db, dbPath, embedder, { logger: log });
337
360
  const transport = new StdioServerTransport();
338
361
  await server.connect(transport);
339
362
  log.startup('mcp server ready', { transport: 'stdio' });
@@ -409,7 +432,6 @@ async function main() {
409
432
  const docsIncludeGlobs = flags(args, '--docs-include');
410
433
  const docsExcludeGlobs = flags(args, '--docs-exclude');
411
434
  const docsExtensions = flags(args, '--docs-extension');
412
- const docsAutoNotes = docsAutoNotesFlag(args);
413
435
  const walkerConfig = {
414
436
  rootDir,
415
437
  ...(docsIncludeGlobs.length > 0 && { docsIncludeGlobs }),
@@ -433,7 +455,6 @@ async function main() {
433
455
  scip: scipSettings,
434
456
  history: shouldEnableHistory ? historyOption : false,
435
457
  indexDependencies,
436
- docsAutoNotes,
437
458
  embeddingModel: embeddingModel ?? undefined,
438
459
  refreshMode: watchMode ? 'watch' : 'poll',
439
460
  }, log);
@@ -445,7 +466,6 @@ async function main() {
445
466
  const { IndexBuilder } = await import('./indexer/index.js');
446
467
  const builder = new IndexBuilder(dbPath, walkerConfig, undefined, {
447
468
  ...refreshOptions,
448
- docsAutoNotes,
449
469
  });
450
470
  const dbExists = fs.existsSync(dbPath);
451
471
  if (dbExists) {
@@ -606,6 +626,34 @@ async function main() {
606
626
  db.close();
607
627
  console.log(JSON.stringify(result, null, 2));
608
628
  }
629
+ else if (subcommand === 'install-scip') {
630
+ // ── Install SCIP indexers ──────────────────────────────────────────────────
631
+ const { installAllMissing, SCIP_INSTALL_SPECS } = await import('./scip/installer.js');
632
+ const languageFilter = flags(args, '--language');
633
+ if (args.includes('--list')) {
634
+ // Just list available indexers and their status
635
+ for (const spec of SCIP_INSTALL_SPECS) {
636
+ console.log(` ${spec.command.padEnd(20)} ${spec.languages.join(', ').padEnd(25)} ${spec.method}`);
637
+ }
638
+ return;
639
+ }
640
+ const results = await installAllMissing({
641
+ languages: languageFilter.length > 0 ? languageFilter : undefined,
642
+ });
643
+ let installed = 0;
644
+ let failed = 0;
645
+ for (const r of results) {
646
+ if (r.installed) {
647
+ console.log(` ✓ ${r.command} → ${r.path}`);
648
+ installed++;
649
+ }
650
+ else {
651
+ console.log(` ✗ ${r.command}: ${r.error ?? 'unknown error'}`);
652
+ failed++;
653
+ }
654
+ }
655
+ console.log(`\n${installed} installed, ${failed} unavailable`);
656
+ }
609
657
  else {
610
658
  console.error(`Unknown subcommand: ${subcommand}\n`);
611
659
  usage();
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,EACL,6BAA6B,EAC7B,2BAA2B,GAC5B,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,8BAA8B,EAC9B,4BAA4B,GAC7B,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACpE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C,iFAAiF;AAEjF,SAAS,KAAK;IACZ,OAAO,CAAC,KAAK,CACX;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kDAuC8C,CAC/C,CAAC;IACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,SAAS,IAAI,CAAC,IAAc,EAAE,IAAY;IACxC,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/B,IAAI,GAAG,KAAK,CAAC,CAAC;QAAE,OAAO,SAAS,CAAC;IACjC,OAAO,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;AACvB,CAAC;AAED,qGAAqG;AACrG,SAAS,KAAK,CAAC,IAAc,EAAE,IAAY;IACzC,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QACzC,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI;YAAE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAW,CAAC,CAAC;IAC5D,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,iBAAiB,CAAC,IAAc;IACvC,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAC;IAClD,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,sBAAsB,CAAC,CAAC;IACtD,IAAI,MAAM,IAAI,OAAO,EAAE,CAAC;QACtB,OAAO,CAAC,KAAK,CAAC,8EAA8E,CAAC,CAAC;QAC9F,KAAK,EAAE,CAAC;IACV,CAAC;IACD,IAAI,MAAM;QAAE,OAAO,IAAI,CAAC;IACxB,IAAI,OAAO;QAAE,OAAO,KAAK,CAAC;IAC1B,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,kBAAkB,CAAC,IAAc;IACxC,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;QAAE,OAAO,IAAI,CAAC;IACxC,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,mBAAmB,CAAC,IAAc;IACzC,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC;QAAE,OAAO,KAAK,CAAC;IAC7C,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,iFAAiF;AAEjF,KAAK,UAAU,IAAI;IACjB,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAEnC,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxE,KAAK,EAAE,CAAC;QACR,OAAO;IACT,CAAC;IAED,MAAM,UAAU,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IAE3B,8EAA8E;IAC9E,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;IAC9C,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;IAC5C,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACxC,MAAM,gBAAgB,GAAG,WAAW;QAClC,CAAC,CAAC,CAAC,eAAe,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC;QAC/D,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC;IAClB,MAAM,eAAe,GAAG,UAAU;WAC7B,CAAC,YAAY;YACd,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,UAAU,EAAE,MAAM,CAAC;YAC1C,CAAC,CAAC,SAAS,CAAC,CAAC;IACjB,MAAM,GAAG,GAAG,UAAU,CAAC,EAAE,KAAK,EAAE,gBAAgB,EAAE,OAAO,EAAE,eAAe,EAAE,CAAC,CAAC;IAE9E,0EAA0E;IAC1E,oEAAoE;IACpE,wEAAwE;IACxE,uEAAuE;IACvE,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,cAAc,EAAE,CAAC,CAAC;IAE7C,IAAI,UAAU,KAAK,OAAO,EAAE,CAAC;QAC3B,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QACrC,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAClC,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,6DAA6D,CAAC,CAAC;YAC7E,KAAK,EAAE,CAAC;YACR,OAAO;QACT,CAAC;QACD,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,CAAC,KAAK,CAAC,4DAA4D,CAAC,CAAC;YAC5E,KAAK,EAAE,CAAC;YACR,OAAO;QACT,CAAC;QACD,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,EAAE,mBAAmB,CAAC,CAAC;QACvD,MAAM,iBAAiB,GAAG,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;QACxD,MAAM,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;QAClD,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;QAClD,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAC;QAEtD,IAAI,YAAgC,CAAC;QACrC,IAAI,eAAe,KAAK,SAAS,EAAE,CAAC;YAClC,MAAM,MAAM,GAAG,MAAM,CAAC,eAAe,CAAC,CAAC;YACvC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,IAAI,CAAC,EAAE,CAAC;gBAC5C,OAAO,CAAC,KAAK,CAAC,qDAAqD,CAAC,CAAC;gBACrE,KAAK,EAAE,CAAC;gBACR,OAAO;YACT,CAAC;YACD,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACpC,CAAC;QAED,IAAI,UAA+B,CAAC;QACpC,IAAI,WAAgC,CAAC;QACrC,IAAI,CAAC;YACH,UAAU,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;YACtC,WAAW,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAC;QAC1C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACvE,OAAO,CAAC,KAAK,CAAC,UAAU,OAAO,KAAK,CAAC,CAAC;YACtC,KAAK,EAAE,CAAC;YACR,OAAO;QACT,CAAC;QAED,IAAI,WAAW,CAAC;QAChB,IAAI,CAAC;YACH,MAAM,SAAS,GAAG,6BAA6B,CAAC,OAAO,CAAC,CAAC;YACzD,WAAW,GAAG,2BAA2B,CACvC,SAAS,EACT,EAAE,GAAG,CAAC,UAAU,KAAK,SAAS,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,EAAE,CAC7D,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACvE,OAAO,CAAC,KAAK,CAAC,UAAU,OAAO,IAAI,CAAC,CAAC;YACrC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAChB,OAAO;QACT,CAAC;QAED,IAAI,YAAY,CAAC;QACjB,IAAI,CAAC;YACH,MAAM,UAAU,GAAG,8BAA8B,CAAC,OAAO,CAAC,CAAC;YAC3D,YAAY,GAAG,4BAA4B,CACzC,UAAU,EACV,EAAE,GAAG,CAAC,WAAW,KAAK,SAAS,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC,EAAE,CAC/D,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACvE,OAAO,CAAC,KAAK,CAAC,UAAU,OAAO,IAAI,CAAC,CAAC;YACrC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAChB,OAAO;QACT,CAAC;QAED,MAAM,YAAY,GAAG,KAAK,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;QAC9C,MAAM,YAAY,GAAG,KAAK,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;QAC9C,MAAM,aAAa,GAAG,KAAK,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;QAChD,MAAM,gBAAgB,GAAG,KAAK,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC;QACvD,MAAM,gBAAgB,GAAG,KAAK,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC;QACvD,MAAM,cAAc,GAAG,KAAK,CAAC,IAAI,EAAE,kBAAkB,CAAC,CAAC;QACvD,MAAM,aAAa,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;QAE9C,oFAAoF;QACpF,MAAM,YAAY,GAA6B;YAC7C,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC;YACf,IAAI,EAAE,CAAC,KAAK,CAAC;YACb,MAAM,EAAE,CAAC,KAAK,CAAC;YACf,GAAG,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;YAC5C,UAAU,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC;YAC3B,UAAU,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;YAC3C,EAAE,EAAE,CAAC,KAAK,CAAC;YACX,IAAI,EAAE,CAAC,OAAO,CAAC;YACf,MAAM,EAAE,CAAC,KAAK,CAAC;YACf,IAAI,EAAE,CAAC,KAAK,CAAC;YACb,GAAG,EAAE,CAAC,MAAM,CAAC;YACb,KAAK,EAAE,CAAC,QAAQ,CAAC;YACjB,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC;YACvB,KAAK,EAAE,CAAC,QAAQ,EAAE,KAAK,CAAC;YACxB,GAAG,EAAE,CAAC,MAAM,CAAC;YACb,IAAI,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC;YAC9B,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC;YACvB,GAAG,EAAE,CAAC,MAAM,CAAC;YACb,KAAK,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC;YACtB,OAAO,EAAE,CAAC,KAAK,CAAC;YAChB,KAAK,EAAE,CAAC,KAAK,CAAC;YACd,GAAG,EAAE,CAAC,MAAM,CAAC;YACb,IAAI,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC;SACpB,CAAC;QAEF,yCAAyC;QACzC,IAAI,UAAgC,CAAC;QACrC,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC7B,UAAU,GAAG,EAAE,CAAC;YAChB,KAAK,MAAM,IAAI,IAAI,aAAa,EAAE,CAAC;gBACjC,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;gBAChC,IAAI,CAAC,IAAI,EAAE,CAAC;oBACV,OAAO,CAAC,KAAK,CAAC,4BAA4B,IAAI,uBAAuB,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBACtH,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;oBAChB,OAAO;gBACT,CAAC;gBACD,UAAU,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;YAC3B,CAAC;QACH,CAAC;QAED,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,oBAAoB,CAAC,CAAC;QAE5D,MAAM,mBAAmB,GAAG,cAAc,IAAI,UAAU,IAAI,YAAY,KAAK,SAAS,CAAC;QACvF,MAAM,OAAO,GAAG;YACd,aAAa;YACb,iBAAiB;YACjB,GAAG,EAAE,WAAW;YAChB,IAAI,EAAE,YAAY;YAClB,GAAG,CAAC,cAAc,IAAI,EAAE,cAAc,EAAE,CAAC;YACzC,GAAG,CAAC,mBAAmB,IAAI;gBACzB,OAAO,EAAE;oBACP,GAAG,CAAC,YAAY,KAAK,SAAS,IAAI,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC;oBAC1D,GAAG,CAAC,UAAU,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;iBACjC;aACF,CAAC;SACH,CAAC;QAEF,MAAM,OAAO,GAAG,IAAI,YAAY,CAC9B,MAAM,EACN;YACE,OAAO;YACP,GAAG,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,YAAY,EAAE,CAAC;YAChD,GAAG,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,YAAY,EAAE,CAAC;YAChD,GAAG,CAAC,UAAU,IAAI,EAAE,UAAU,EAAE,CAAC;YACjC,GAAG,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,gBAAgB,EAAE,CAAC;YACxD,GAAG,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,gBAAgB,EAAE,CAAC;YACxD,GAAG,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,cAAc,EAAE,CAAC;SACrD,EACD,SAAS,EACT,OAAO,CACR,CAAC;QACF,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;IACxB,CAAC;SAAM,IAAI,UAAU,KAAK,KAAK,EAAE,CAAC;QAChC,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAClC,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,CAAC,KAAK,CAAC,0DAA0D,CAAC,CAAC;YAC1E,KAAK,EAAE,CAAC;YACR,OAAO;QACT,CAAC;QAED,GAAG,CAAC,OAAO,CAAC,yBAAyB,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;QAEnD,qEAAqE;QACrE,+DAA+D;QAC/D,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,MAAM,CAAC,yCAAyC,CAAC,CAAC;QAC9E,MAAM,EAAE,oBAAoB,EAAE,GAAG,MAAM,MAAM,CAC3C,2CAA2C,CAC5C,CAAC;QAEF,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,mBAAmB,CAAC,CAAC;QAC3D,MAAM,EAAE,mBAAmB,EAAE,GAAG,MAAM,MAAM,CAAC,oBAAoB,CAAC,CAAC;QACnE,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,MAAM,CAAC,gBAAgB,CAAC,CAAC;QAEvD,MAAM,EAAE,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;QAEhC,kCAAkC;QAClC,MAAM,UAAU,GAAI,EAAE,CAAC,OAAO,CAAC,mCAAmC,CAAC,CAAC,GAAG,EAAsB,CAAC,GAAG,CAAC;QAClG,MAAM,YAAY,GAAI,EAAE,CAAC,OAAO,CAAC,qCAAqC,CAAC,CAAC,GAAG,EAAsB,CAAC,GAAG,CAAC;QACtG,IAAI,UAAU,GAAG,CAAC,CAAC;QACnB,IAAI,CAAC;YACH,UAAU,GAAI,EAAE,CAAC,OAAO,CAAC,yCAAyC,CAAC,CAAC,GAAG,EAAsB,CAAC,GAAG,CAAC;QACpG,CAAC;QAAC,MAAM,CAAC,CAAC,yBAAyB,CAAC,CAAC;QACrC,IAAI,SAAS,GAAG,CAAC,CAAC;QAClB,IAAI,CAAC;YACH,SAAS,GAAI,EAAE,CAAC,OAAO,CAAC,kCAAkC,CAAC,CAAC,GAAG,EAAsB,CAAC,GAAG,CAAC;QAC5F,CAAC;QAAC,MAAM,CAAC,CAAC,yBAAyB,CAAC,CAAC;QACrC,IAAI,WAA+B,CAAC;QACpC,IAAI,CAAC;YACH,WAAW,GAAI,EAAE,CAAC,OAAO,CAAC,qCAAqC,CAAC,CAAC,GAAG,EAAsB,CAAC,GAAG,CAAC;QACjG,CAAC;QAAC,MAAM,CAAC,CAAC,iCAAiC,CAAC,CAAC;QAC7C,MAAM,WAAW,GAAG,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;QAEjF,6DAA6D;QAC7D,IAAI,QAA0E,CAAC;QAC/E,MAAM,SAAS,GAAG,WAAW,CAAC,EAAE,EAAE,iBAAiB,CAAuB,CAAC;QAE3E,wEAAwE;QACxE,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QAC3C,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACzC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAErC,MAAM,OAAO,GAAG,IAAI,WAAW,CAAC;YAC9B,MAAM;YACN,OAAO,EAAE,OAAO,IAAI,GAAG;YACvB,YAAY,EAAE,EAAE,OAAO,EAAE,OAAO,IAAI,GAAG,EAAE;YACzC,GAAG,EAAE,IAAI;YACT,IAAI,EAAE,IAAI;YACV,OAAO,EAAE,KAAK;YACd,iBAAiB,EAAE,KAAK;YACxB,aAAa,EAAE,IAAI;YACnB,cAAc,EAAE,SAAS,IAAI,SAAS;YACtC,WAAW,EAAE,CAAC,SAAS,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM;SACxF,EAAE,GAAG,CAAC,CAAC;QAER,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;QACtB,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;QAE5B,IAAI,CAAC,SAAS,IAAI,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YACxC,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,wFAAwF,CAAC,CAAC;QAChH,CAAC;QAED,GAAG,CAAC,OAAO,CAAC,UAAU,EAAE;YACtB,MAAM;YACN,WAAW;YACX,cAAc,EAAE,SAAS,IAAI,IAAI;YACjC,cAAc,EAAE,CAAC,CAAC,QAAQ;YAC1B,UAAU;YACV,YAAY;YACZ,SAAS;YACT,UAAU;YACV,WAAW;SACZ,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,mBAAmB,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;QAE1E,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;QAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAEhC,GAAG,CAAC,OAAO,CAAC,kBAAkB,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC;QAExD,gEAAgE;QAChE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAEhC,OAAO,CAAC,qBAAqB,EAAE,CAAC;IAClC,CAAC;SAAM,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;QACpC,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAClC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAErC,IAAI,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;YACxB,OAAO,CAAC,KAAK,CAAC,gFAAgF,CAAC,CAAC;YAChG,KAAK,EAAE,CAAC;YACR,OAAO;QACT,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QAC3C,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACzC,MAAM,iBAAiB,GAAG,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;QAExD,MAAM,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;QAClD,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;QAClD,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAC;QAEtD,IAAI,YAAgC,CAAC;QACrC,IAAI,eAAe,KAAK,SAAS,EAAE,CAAC;YAClC,MAAM,MAAM,GAAG,MAAM,CAAC,eAAe,CAAC,CAAC;YACvC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,IAAI,CAAC,EAAE,CAAC;gBAC5C,OAAO,CAAC,KAAK,CAAC,qDAAqD,CAAC,CAAC;gBACrE,KAAK,EAAE,CAAC;gBACR,OAAO;YACT,CAAC;YACD,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACpC,CAAC;QAED,IAAI,UAA+B,CAAC;QACpC,IAAI,YAAiC,CAAC;QACtC,IAAI,CAAC;YACH,UAAU,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;YACtC,YAAY,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAC;QAC3C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACvE,OAAO,CAAC,KAAK,CAAC,UAAU,OAAO,KAAK,CAAC,CAAC;YACtC,KAAK,EAAE,CAAC;YACR,OAAO;QACT,CAAC;QAED,IAAI,WAAW,CAAC;QAChB,IAAI,CAAC;YACH,MAAM,SAAS,GAAG,6BAA6B,CAAC,OAAO,CAAC,CAAC;YACzD,WAAW,GAAG,2BAA2B,CACvC,SAAS,EACT,EAAE,GAAG,CAAC,UAAU,KAAK,SAAS,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,EAAE,CAC7D,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACvE,OAAO,CAAC,KAAK,CAAC,UAAU,OAAO,IAAI,CAAC,CAAC;YACrC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAChB,OAAO;QACT,CAAC;QAED,IAAI,YAAY,CAAC;QACjB,IAAI,CAAC;YACH,MAAM,UAAU,GAAG,8BAA8B,CAAC,OAAO,CAAC,CAAC;YAC3D,YAAY,GAAG,4BAA4B,CACzC,UAAU,EACV,EAAE,GAAG,CAAC,YAAY,KAAK,SAAS,IAAI,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC,EAAE,CACjE,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACvE,OAAO,CAAC,KAAK,CAAC,UAAU,OAAO,IAAI,CAAC,CAAC;YACrC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAChB,OAAO;QACT,CAAC;QAED,MAAM,mBAAmB,GAAG,cAAc,IAAI,UAAU,IAAI,YAAY,KAAK,SAAS,CAAC;QACvF,MAAM,aAAa,GAAG,mBAAmB;YACvC,CAAC,CAAC;gBACE,GAAG,CAAC,YAAY,KAAK,SAAS,IAAI,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC;gBAC1D,GAAG,CAAC,UAAU,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;aACjC;YACH,CAAC,CAAC,KAAK,CAAC;QACV,MAAM,gBAAgB,GAAG,KAAK,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC;QACvD,MAAM,gBAAgB,GAAG,KAAK,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC;QACvD,MAAM,cAAc,GAAG,KAAK,CAAC,IAAI,EAAE,kBAAkB,CAAC,CAAC;QACvD,MAAM,aAAa,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;QAE9C,MAAM,YAAY,GAAG;YACnB,OAAO;YACP,GAAG,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,gBAAgB,EAAE,CAAC;YACxD,GAAG,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,gBAAgB,EAAE,CAAC;YACxD,GAAG,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,cAAc,EAAE,CAAC;SACrD,CAAC;QACF,MAAM,cAAc,GAAG;YACrB,iBAAiB;YACjB,GAAG,EAAE,WAAW;YAChB,IAAI,EAAE,YAAY;YAClB,GAAG,CAAC,mBAAmB,IAAI,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC;SACvD,CAAC;QAEF,8DAA8D;QAC9D,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,EAAE,mBAAmB,CAAC,CAAC;QAEvD,IAAI,SAAS,IAAI,QAAQ,EAAE,CAAC;YAC1B,MAAM,OAAO,GAAG,IAAI,WAAW,CAAC;gBAC9B,MAAM;gBACN,OAAO;gBACP,YAAY;gBACZ,GAAG,EAAE,WAAW;gBAChB,IAAI,EAAE,YAAY;gBAClB,OAAO,EAAE,mBAAmB,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK;gBACpD,iBAAiB;gBACjB,aAAa;gBACb,cAAc,EAAE,cAAc,IAAI,SAAS;gBAC3C,WAAW,EAAE,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM;aAC1C,EAAE,GAAG,CAAC,CAAC;YAER,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;YACtB,OAAO,CAAC,qBAAqB,EAAE,CAAC;QAClC,CAAC;aAAM,CAAC;YACN,mFAAmF;YACnF,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,oBAAoB,CAAC,CAAC;YAC5D,MAAM,OAAO,GAAG,IAAI,YAAY,CAAC,MAAM,EAAE,YAAY,EAAE,SAAS,EAAE;gBAChE,GAAG,cAAc;gBACjB,aAAa;aACd,CAAC,CAAC;YAEH,MAAM,QAAQ,GAAG,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;YACvC,IAAI,QAAQ,EAAE,CAAC;gBACb,MAAM,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,SAAS,EAAE,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;oBACpD,MAAM,CAAC,gBAAgB,CAAC;oBACxB,MAAM,CAAC,uBAAuB,CAAC;iBAChC,CAAC,CAAC;gBACH,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,YAAY,CAAC,CAAC;gBAC5C,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;gBAC1B,MAAM,MAAM,GAAG,MAAM,CAAC;gBACtB,IAAI,YAAsB,CAAC;gBAC3B,IAAI,CAAC;oBACH,YAAY,GACV,EAAE,CAAC,OAAO,CAAC,yCAAyC,CAAC,CAAC,GAAG,CAAC,MAAM,CACjE,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBAC3B,CAAC;wBAAS,CAAC;oBACT,EAAE,CAAC,KAAK,EAAE,CAAC;gBACb,CAAC;gBACD,MAAM,YAAY,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;gBAChF,MAAM,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;YACrC,CAAC;iBAAM,CAAC;gBACN,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;YACxB,CAAC;YAED,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,kBAAkB,EAAE,OAAO,EAAE,CAAC,GAAG,IAAI,CAC9F,CAAC;QACJ,CAAC;IACH,CAAC;SAAM,IAAI,UAAU,KAAK,OAAO,EAAE,CAAC;QAClC,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAClC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAErC,IAAI,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;YACxB,OAAO,CAAC,KAAK,CAAC,8EAA8E,CAAC,CAAC;YAC9F,KAAK,EAAE,CAAC;YACR,OAAO;QACT,CAAC;QAED,MAAM,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;QAClD,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;QAClD,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAC;QACtD,MAAM,cAAc,GAAG,cAAc,IAAI,UAAU,IAAI,eAAe,KAAK,SAAS,CAAC;QAErF,IAAI,UAA+B,CAAC;QACpC,IAAI,YAAiC,CAAC;QACtC,IAAI,CAAC;YACH,UAAU,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;YACtC,YAAY,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAC;QAC3C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACvE,OAAO,CAAC,KAAK,CAAC,UAAU,OAAO,KAAK,CAAC,CAAC;YACtC,KAAK,EAAE,CAAC;YACR,OAAO;QACT,CAAC;QAED,IAAI,WAAW,CAAC;QAChB,IAAI,CAAC;YACH,MAAM,SAAS,GAAG,6BAA6B,CAAC,OAAO,CAAC,CAAC;YACzD,WAAW,GAAG,2BAA2B,CACvC,SAAS,EACT,EAAE,GAAG,CAAC,UAAU,KAAK,SAAS,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,EAAE,CAC7D,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACvE,OAAO,CAAC,KAAK,CAAC,UAAU,OAAO,IAAI,CAAC,CAAC;YACrC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAChB,OAAO;QACT,CAAC;QAED,IAAI,YAAY,CAAC;QACjB,IAAI,CAAC;YACH,MAAM,UAAU,GAAG,8BAA8B,CAAC,OAAO,CAAC,CAAC;YAC3D,YAAY,GAAG,4BAA4B,CACzC,UAAU,EACV,EAAE,GAAG,CAAC,YAAY,KAAK,SAAS,IAAI,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC,EAAE,CACjE,CAAC;QACJ,CAAC;QAAC,MAAM,CAAC;YACP,6CAA6C;QAC/C,CAAC;QAED,MAAM,EAAE,eAAe,EAAE,GAAG,MAAM,MAAM,CAAC,gBAAgB,CAAC,CAAC;QAC3D,MAAM,MAAM,GAAG,eAAe,CAAC;YAC7B,QAAQ,EAAE,OAAO;YACjB,OAAO;YACP,MAAM;YACN,cAAc;YACd,UAAU,EAAE,WAAW,CAAC,OAAO;YAC/B,WAAW,EAAE,YAAY,EAAE,OAAO,IAAI,KAAK;SAC5C,CAAC,CAAC;QAEH,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,IAAI,CAAC,SAAS,CAAC;YACb,KAAK,EAAE,MAAM;YACb,MAAM,EAAE,KAAK;YACb,OAAO,EAAE,qBAAqB;YAC9B,OAAO;YACP,KAAK,EAAE,MAAM,CAAC,SAAS;SACxB,CAAC,GAAG,IAAI,CACV,CAAC;IACJ,CAAC;SAAM,IAAI,UAAU,KAAK,iBAAiB,EAAE,CAAC;QAC5C,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAClC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QACrC,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QACxC,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;QACtC,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;QAEzC,IAAI,CAAC,MAAM,IAAI,CAAC,OAAO,IAAI,CAAC,UAAU,IAAI,CAAC,MAAM,EAAE,CAAC;YAClD,OAAO,CAAC,KAAK,CAAC,mIAAmI,CAAC,CAAC;YACnJ,KAAK,EAAE,CAAC;YACR,OAAO;QACT,CAAC;QAED,IAAI,MAAM,KAAK,MAAM,IAAI,MAAM,KAAK,WAAW,EAAE,CAAC;YAChD,OAAO,CAAC,KAAK,CAAC,uCAAuC,MAAM,iCAAiC,CAAC,CAAC;YAC9F,KAAK,EAAE,CAAC;YACR,OAAO;QACT,CAAC;QAED,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,oBAAoB,CAAC,CAAC;QAC5D,MAAM,OAAO,GAAG,IAAI,YAAY,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;QACtD,MAAM,OAAO,CAAC,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;IAC9D,CAAC;SAAM,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;QACpC,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAClC,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,CAAC,KAAK,CAAC,8DAA8D,CAAC,CAAC;YAC9E,KAAK,EAAE,CAAC;YACR,OAAO;QACT,CAAC;QAED,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,SAAS,CAAC;QAC/C,MAAM,UAAU,GAAG,CAAC,QAAQ,EAAE,YAAY,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC;QACnE,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YAC/B,OAAO,CAAC,KAAK,CAAC,iCAAiC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC1E,KAAK,EAAE,CAAC;YACR,OAAO;QACT,CAAC;QAED,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,EAAE,cAAc,CAAC,IAAI,MAAM,CAAC;QAC1D,MAAM,cAAc,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;QAChD,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;YAC3C,OAAO,CAAC,KAAK,CAAC,uCAAuC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACpF,KAAK,EAAE,CAAC;YACR,OAAO;QACT,CAAC;QACD,MAAM,SAAS,GAAG,YAAwC,CAAC;QAE3D,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;QACtC,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;QAC9C,IAAI,QAA4B,CAAC;QACjC,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;YAC9B,MAAM,MAAM,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;YACnC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,IAAI,CAAC,EAAE,CAAC;gBAC5C,OAAO,CAAC,KAAK,CAAC,iDAAiD,CAAC,CAAC;gBACjE,KAAK,EAAE,CAAC;gBACR,OAAO;YACT,CAAC;YACD,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAChC,CAAC;QAED,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,mBAAmB,CAAC,CAAC;QAC3D,MAAM,EACJ,kBAAkB,EAClB,uBAAuB,EACvB,cAAc,EACd,oBAAoB,GACrB,GAAG,MAAM,MAAM,CAAC,gCAAgC,CAAC,CAAC;QAEnD,MAAM,EAAE,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;QAChC,MAAM,IAAI,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC;QAEnC,IAAI,MAAe,CAAC;QACpB,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;YACtB,MAAM,GAAG,kBAAkB,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;QACxC,CAAC;aAAM,IAAI,IAAI,KAAK,YAAY,EAAE,CAAC;YACjC,MAAM,GAAG,uBAAuB,CAAC,EAAE,EAAE,EAAE,GAAG,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;QACrE,CAAC;aAAM,IAAI,IAAI,KAAK,UAAU,EAAE,CAAC;YAC/B,MAAM,GAAG,cAAc,CAAC,EAAE,EAAE,EAAE,GAAG,IAAI,EAAE,kBAAkB,EAAE,QAAQ,EAAE,CAAC,CAAC;QACzE,CAAC;aAAM,CAAC;YACN,MAAM,GAAG,oBAAoB,CAAC,EAAE,EAAE,EAAE,GAAG,IAAI,EAAE,iBAAiB,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC9E,CAAC;QAED,EAAE,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAC/C,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,KAAK,CAAC,uBAAuB,UAAU,IAAI,CAAC,CAAC;QACrD,KAAK,EAAE,CAAC;QACR,OAAO;IACT,CAAC;AACH,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;IACnB,OAAO,CAAC,KAAK,CAAC,oBAAoB,EAAE,GAAG,CAAC,CAAC;IACzC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}