@jafreck/lore 0.2.1 → 0.2.3
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.
- package/README.md +68 -17
- package/dist/cli.js +6 -6
- package/dist/cli.js.map +1 -1
- package/dist/index.d.ts +6 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -3
- package/dist/index.js.map +1 -1
- package/dist/indexer/db.d.ts +12 -11
- package/dist/indexer/db.d.ts.map +1 -1
- package/dist/indexer/db.js +22 -16
- package/dist/indexer/db.js.map +1 -1
- package/dist/indexer/ensure-python-deps.d.ts +1 -1
- package/dist/indexer/ensure-python-deps.js +1 -1
- package/dist/indexer/git-history.d.ts.map +1 -1
- package/dist/indexer/git-history.js +4 -4
- package/dist/indexer/git-history.js.map +1 -1
- package/dist/indexer/index.d.ts +3 -2
- package/dist/indexer/index.d.ts.map +1 -1
- package/dist/indexer/index.js +44 -16
- package/dist/indexer/index.js.map +1 -1
- package/dist/indexer/poller.d.ts +1 -1
- package/dist/indexer/poller.js +1 -1
- package/dist/indexer/watcher.d.ts +1 -1
- package/dist/indexer/watcher.js +1 -1
- package/dist/{kb-server → lore-server}/db.d.ts +76 -4
- package/dist/lore-server/db.d.ts.map +1 -0
- package/dist/{kb-server → lore-server}/db.js +219 -27
- package/dist/lore-server/db.js.map +1 -0
- package/dist/lore-server/server.d.ts +43 -0
- package/dist/lore-server/server.d.ts.map +1 -0
- package/dist/{kb-server → lore-server}/server.js +169 -46
- package/dist/lore-server/server.js.map +1 -0
- package/dist/{kb-server → lore-server}/tools/annotations.d.ts +2 -2
- package/dist/lore-server/tools/annotations.d.ts.map +1 -0
- package/dist/{kb-server → lore-server}/tools/annotations.js +2 -2
- package/dist/lore-server/tools/annotations.js.map +1 -0
- package/dist/{kb-server → lore-server}/tools/architecture.d.ts +2 -2
- package/dist/lore-server/tools/architecture.d.ts.map +1 -0
- package/dist/{kb-server → lore-server}/tools/architecture.js +2 -2
- package/dist/lore-server/tools/architecture.js.map +1 -0
- package/dist/lore-server/tools/blame.d.ts +159 -0
- package/dist/lore-server/tools/blame.d.ts.map +1 -0
- package/dist/lore-server/tools/blame.js +595 -0
- package/dist/lore-server/tools/blame.js.map +1 -0
- package/dist/{kb-server → lore-server}/tools/coverage.d.ts +2 -2
- package/dist/lore-server/tools/coverage.d.ts.map +1 -0
- package/dist/{kb-server → lore-server}/tools/coverage.js +2 -2
- package/dist/lore-server/tools/coverage.js.map +1 -0
- package/dist/{kb-server → lore-server}/tools/docs.d.ts +11 -3
- package/dist/lore-server/tools/docs.d.ts.map +1 -0
- package/dist/lore-server/tools/docs.js +243 -0
- package/dist/lore-server/tools/docs.js.map +1 -0
- package/dist/{kb-server → lore-server}/tools/graph.d.ts +40 -3
- package/dist/lore-server/tools/graph.d.ts.map +1 -0
- package/dist/{kb-server → lore-server}/tools/graph.js +122 -11
- package/dist/lore-server/tools/graph.js.map +1 -0
- package/dist/{kb-server → lore-server}/tools/history.d.ts +13 -6
- package/dist/lore-server/tools/history.d.ts.map +1 -0
- package/dist/{kb-server → lore-server}/tools/history.js +43 -10
- package/dist/lore-server/tools/history.js.map +1 -0
- package/dist/lore-server/tools/lookup.d.ts +75 -0
- package/dist/lore-server/tools/lookup.d.ts.map +1 -0
- package/dist/lore-server/tools/lookup.js +148 -0
- package/dist/lore-server/tools/lookup.js.map +1 -0
- package/dist/{kb-server → lore-server}/tools/metrics.d.ts +3 -3
- package/dist/lore-server/tools/metrics.d.ts.map +1 -0
- package/dist/{kb-server → lore-server}/tools/metrics.js +3 -3
- package/dist/lore-server/tools/metrics.js.map +1 -0
- package/dist/{kb-server → lore-server}/tools/notes.d.ts +16 -16
- package/dist/lore-server/tools/notes.d.ts.map +1 -0
- package/dist/{kb-server → lore-server}/tools/notes.js +21 -21
- package/dist/lore-server/tools/notes.js.map +1 -0
- package/dist/{kb-server → lore-server}/tools/routes.d.ts +2 -2
- package/dist/lore-server/tools/routes.d.ts.map +1 -0
- package/dist/{kb-server → lore-server}/tools/routes.js +2 -2
- package/dist/lore-server/tools/routes.js.map +1 -0
- package/dist/{kb-server → lore-server}/tools/search.d.ts +28 -3
- package/dist/lore-server/tools/search.d.ts.map +1 -0
- package/dist/{kb-server → lore-server}/tools/search.js +22 -2
- package/dist/lore-server/tools/search.js.map +1 -0
- package/dist/{kb-server → lore-server}/tools/snippet.d.ts +20 -4
- package/dist/lore-server/tools/snippet.d.ts.map +1 -0
- package/dist/lore-server/tools/snippet.js +116 -0
- package/dist/lore-server/tools/snippet.js.map +1 -0
- package/dist/{kb-server → lore-server}/tools/test-map.d.ts +2 -2
- package/dist/lore-server/tools/test-map.d.ts.map +1 -0
- package/dist/{kb-server → lore-server}/tools/test-map.js +2 -2
- package/dist/lore-server/tools/test-map.js.map +1 -0
- package/dist/{kb-server → lore-server}/tools/writeback.d.ts +2 -2
- package/dist/lore-server/tools/writeback.d.ts.map +1 -0
- package/dist/{kb-server → lore-server}/tools/writeback.js +3 -3
- package/dist/lore-server/tools/writeback.js.map +1 -0
- package/package.json +8 -8
- package/dist/kb-server/db.d.ts.map +0 -1
- package/dist/kb-server/db.js.map +0 -1
- package/dist/kb-server/server.d.ts +0 -43
- package/dist/kb-server/server.d.ts.map +0 -1
- package/dist/kb-server/server.js.map +0 -1
- package/dist/kb-server/tools/annotations.d.ts.map +0 -1
- package/dist/kb-server/tools/annotations.js.map +0 -1
- package/dist/kb-server/tools/architecture.d.ts.map +0 -1
- package/dist/kb-server/tools/architecture.js.map +0 -1
- package/dist/kb-server/tools/blame.d.ts +0 -67
- package/dist/kb-server/tools/blame.d.ts.map +0 -1
- package/dist/kb-server/tools/blame.js +0 -162
- package/dist/kb-server/tools/blame.js.map +0 -1
- package/dist/kb-server/tools/coverage.d.ts.map +0 -1
- package/dist/kb-server/tools/coverage.js.map +0 -1
- package/dist/kb-server/tools/docs.d.ts.map +0 -1
- package/dist/kb-server/tools/docs.js +0 -136
- package/dist/kb-server/tools/docs.js.map +0 -1
- package/dist/kb-server/tools/graph.d.ts.map +0 -1
- package/dist/kb-server/tools/graph.js.map +0 -1
- package/dist/kb-server/tools/history.d.ts.map +0 -1
- package/dist/kb-server/tools/history.js.map +0 -1
- package/dist/kb-server/tools/lookup.d.ts +0 -36
- package/dist/kb-server/tools/lookup.d.ts.map +0 -1
- package/dist/kb-server/tools/lookup.js +0 -46
- package/dist/kb-server/tools/lookup.js.map +0 -1
- package/dist/kb-server/tools/metrics.d.ts.map +0 -1
- package/dist/kb-server/tools/metrics.js.map +0 -1
- package/dist/kb-server/tools/notes.d.ts.map +0 -1
- package/dist/kb-server/tools/notes.js.map +0 -1
- package/dist/kb-server/tools/routes.d.ts.map +0 -1
- package/dist/kb-server/tools/routes.js.map +0 -1
- package/dist/kb-server/tools/search.d.ts.map +0 -1
- package/dist/kb-server/tools/search.js.map +0 -1
- package/dist/kb-server/tools/snippet.d.ts.map +0 -1
- package/dist/kb-server/tools/snippet.js +0 -49
- package/dist/kb-server/tools/snippet.js.map +0 -1
- package/dist/kb-server/tools/test-map.d.ts.map +0 -1
- package/dist/kb-server/tools/test-map.js.map +0 -1
- package/dist/kb-server/tools/writeback.d.ts.map +0 -1
- package/dist/kb-server/tools/writeback.js.map +0 -1
|
@@ -1,38 +1,42 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @module
|
|
2
|
+
* @module lore-server/server
|
|
3
3
|
*
|
|
4
4
|
* Knowledge-base MCP server.
|
|
5
5
|
*
|
|
6
|
-
* Exports `
|
|
6
|
+
* Exports `createLoreMcpServer()` for use by `LoreServerProcess` (HTTP transport)
|
|
7
7
|
* and retains a standalone CLI entry point for development/debugging.
|
|
8
8
|
*
|
|
9
9
|
* MCP tools exposed:
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
10
|
+
* lore_lookup — symbol / file lookup
|
|
11
|
+
* lore_graph — call / import graph queries
|
|
12
|
+
* lore_search — structural, semantic, and fused search
|
|
13
|
+
* lore_docs — indexed documentation list/get/search
|
|
14
|
+
* lore_test_map — source-file to mapped-test lookup
|
|
15
|
+
* lore_snippet — source-code snippet extraction
|
|
16
|
+
* lore_blame — git blame metadata for file lines
|
|
17
|
+
* lore_metrics — aggregate code metrics
|
|
18
|
+
* lore_writeback — LLM summary write-back
|
|
19
|
+
* lore_history — git commit history queries
|
|
20
20
|
*
|
|
21
21
|
* Standalone usage:
|
|
22
|
-
* node dist/
|
|
23
|
-
* tsx src/
|
|
22
|
+
* node dist/lore-server/server.js --db <path-to-lore.db>
|
|
23
|
+
* tsx src/lore-server/server.ts --db <path-to-lore.db>
|
|
24
24
|
*/
|
|
25
25
|
import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
26
26
|
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
|
|
27
27
|
import { z } from 'zod';
|
|
28
28
|
import { fileURLToPath } from 'url';
|
|
29
29
|
import { listCommitAuthorStats, listCommitBranchActivity, listCommitCadence, listCommitChurnByFile, listCommitMessagePrefixes, listCommitSchedule, listCommitSizes, openReadOnly, } from './db.js';
|
|
30
|
-
import {
|
|
30
|
+
import { getLoreMeta } from '../indexer/db.js';
|
|
31
31
|
import { SentenceTransformersProvider } from '../indexer/embedder.js';
|
|
32
32
|
import * as lookup from './tools/lookup.js';
|
|
33
33
|
import * as graph from './tools/graph.js';
|
|
34
34
|
import * as search from './tools/search.js';
|
|
35
35
|
import * as docs from './tools/docs.js';
|
|
36
|
+
import * as annotations from './tools/annotations.js';
|
|
37
|
+
import * as routes from './tools/routes.js';
|
|
38
|
+
import * as notes from './tools/notes.js';
|
|
39
|
+
import * as architecture from './tools/architecture.js';
|
|
36
40
|
import * as testMap from './tools/test-map.js';
|
|
37
41
|
import * as snippet from './tools/snippet.js';
|
|
38
42
|
import * as blame from './tools/blame.js';
|
|
@@ -71,24 +75,37 @@ function handleCommitStats(db, args) {
|
|
|
71
75
|
}
|
|
72
76
|
// ─── Server factory ───────────────────────────────────────────────────────────
|
|
73
77
|
/**
|
|
74
|
-
* Create and return a fully-configured `McpServer` with all
|
|
78
|
+
* Create and return a fully-configured `McpServer` with all Lore tools registered.
|
|
75
79
|
*
|
|
76
80
|
* @param db Read-only SQLite connection to the knowledge-base.
|
|
77
|
-
* @param dbPath Path to the DB file, needed by `
|
|
81
|
+
* @param dbPath Path to the DB file, needed by `lore_writeback` for write access.
|
|
78
82
|
* @param embedder Optional live embedding provider for semantic/fused search.
|
|
79
83
|
* @param options Optional server configuration (e.g. search observer).
|
|
80
84
|
*/
|
|
81
|
-
export function
|
|
82
|
-
const server = new McpServer({ name: 'lore-
|
|
83
|
-
// ──
|
|
85
|
+
export function createLoreMcpServer(db, dbPath, embedder, options) {
|
|
86
|
+
const server = new McpServer({ name: 'lore-server', version: '0.1.0' }, { capabilities: { tools: {} } });
|
|
87
|
+
// ── lore_lookup ──────────────────────────────────────────────────────────────
|
|
84
88
|
server.tool(lookup.toolDef.name, lookup.toolDef.description, {
|
|
85
89
|
kind: z.enum(['symbol', 'file']).describe('Whether to look up a symbol or a file.'),
|
|
86
90
|
query: z.string().describe('Symbol name or file path to look up (includes persisted enrichment metadata when available).'),
|
|
91
|
+
mode: z
|
|
92
|
+
.enum(['exact', 'semantic', 'fused'])
|
|
93
|
+
.optional()
|
|
94
|
+
.describe('For kind="symbol", retrieval mode (default: exact).'),
|
|
87
95
|
branch: z.string().optional().describe('Optional branch to filter results.'),
|
|
96
|
+
match_mode: z
|
|
97
|
+
.enum(['exact', 'prefix', 'contains'])
|
|
98
|
+
.optional()
|
|
99
|
+
.describe('For kind="symbol": symbol-name match mode (default "exact").'),
|
|
100
|
+
symbol_kind: z.string().optional().describe('For kind="symbol": optional symbol kind filter.'),
|
|
101
|
+
path_prefix: z.string().optional().describe('For kind="symbol": optional indexed file-path prefix filter.'),
|
|
102
|
+
language: z.string().optional().describe('For kind="symbol": optional indexed file language filter.'),
|
|
103
|
+
limit: z.number().int().nonnegative().optional().describe('For kind="symbol" with empty query: maximum rows to return.'),
|
|
104
|
+
offset: z.number().int().nonnegative().optional().describe('For kind="symbol" with empty query: rows to skip before returning results.'),
|
|
88
105
|
}, async (args) => ({
|
|
89
|
-
content: [{ type: 'text', text: JSON.stringify(lookup.handler(db, args)) }],
|
|
106
|
+
content: [{ type: 'text', text: JSON.stringify(await lookup.handler(db, args, embedder)) }],
|
|
90
107
|
}));
|
|
91
|
-
// ──
|
|
108
|
+
// ── lore_graph ───────────────────────────────────────────────────────────────
|
|
92
109
|
server.tool(graph.toolDef.name, graph.toolDef.description, {
|
|
93
110
|
kind: z
|
|
94
111
|
.enum(['call', 'import', 'module', 'inheritance'])
|
|
@@ -96,10 +113,26 @@ export function createKbMcpServer(db, dbPath, embedder, options) {
|
|
|
96
113
|
source_id: z.number().optional().describe('Filter edges by source node id.'),
|
|
97
114
|
limit: z.number().optional().describe('Max edges to return (default 200).'),
|
|
98
115
|
branch: z.string().optional().describe('Optional branch to filter edges.'),
|
|
116
|
+
mode: z
|
|
117
|
+
.enum(['structural', 'semantic'])
|
|
118
|
+
.optional()
|
|
119
|
+
.describe('Query mode (default: structural).'),
|
|
120
|
+
query_vector: z
|
|
121
|
+
.array(z.number())
|
|
122
|
+
.optional()
|
|
123
|
+
.describe('Embedding vector for semantic mode related-node retrieval.'),
|
|
124
|
+
semantic_limit: z
|
|
125
|
+
.number()
|
|
126
|
+
.optional()
|
|
127
|
+
.describe('Semantic related-node cap (default: min(limit, 20)).'),
|
|
128
|
+
semantic_max_distance: z
|
|
129
|
+
.number()
|
|
130
|
+
.optional()
|
|
131
|
+
.describe('Optional max embedding distance threshold for semantic nodes.'),
|
|
99
132
|
}, async (args) => ({
|
|
100
133
|
content: [{ type: 'text', text: JSON.stringify(graph.handler(db, args)) }],
|
|
101
134
|
}));
|
|
102
|
-
// ──
|
|
135
|
+
// ── lore_search ──────────────────────────────────────────────────────────────
|
|
103
136
|
server.tool(search.toolDef.name, search.toolDef.description, {
|
|
104
137
|
query: z.string().describe('Search query.'),
|
|
105
138
|
mode: z
|
|
@@ -107,17 +140,32 @@ export function createKbMcpServer(db, dbPath, embedder, options) {
|
|
|
107
140
|
.optional()
|
|
108
141
|
.describe('Search mode (default: structural).'),
|
|
109
142
|
limit: z.number().optional().describe('Max results (default 20).'),
|
|
143
|
+
path_prefix: z.string().optional().describe('Optional source file path prefix filter for symbol results.'),
|
|
144
|
+
language: z.string().optional().describe('Optional source language filter for symbol results.'),
|
|
145
|
+
kind: z.string().optional().describe('Optional symbol kind filter for symbol results.'),
|
|
146
|
+
doc_path_prefix: z
|
|
147
|
+
.string()
|
|
148
|
+
.optional()
|
|
149
|
+
.describe('Optional documentation path prefix filter for semantic/fused doc-section results.'),
|
|
150
|
+
doc_kind: z
|
|
151
|
+
.string()
|
|
152
|
+
.optional()
|
|
153
|
+
.describe('Optional documentation kind filter for semantic/fused doc-section results.'),
|
|
110
154
|
branch: z.string().optional().describe('Optional branch to filter results. Query-time retrieval uses SQLite-only persisted data.'),
|
|
111
155
|
}, async (args) => ({
|
|
112
156
|
content: [{ type: 'text', text: JSON.stringify(await search.handler(db, args, embedder, options?.searchObserver)) }],
|
|
113
157
|
}));
|
|
114
|
-
// ──
|
|
158
|
+
// ── lore_docs ────────────────────────────────────────────────────────────────
|
|
115
159
|
server.tool(docs.toolDef.name, docs.toolDef.description, {
|
|
116
160
|
action: z
|
|
117
161
|
.enum(['list', 'get', 'search'])
|
|
118
162
|
.describe('Docs operation mode: list docs, get a doc by path, or search sections.'),
|
|
119
163
|
path: z.string().optional().describe('Optional doc path filter (required for exact get).'),
|
|
120
164
|
query: z.string().optional().describe('Search query text for action="search".'),
|
|
165
|
+
mode: z
|
|
166
|
+
.enum(['text', 'semantic', 'fused'])
|
|
167
|
+
.optional()
|
|
168
|
+
.describe('For action="search", retrieval mode (default: text).'),
|
|
121
169
|
kind: z.string().optional().describe('Optional single doc kind filter.'),
|
|
122
170
|
kinds: z.array(z.string()).optional().describe('Optional doc kind filter list.'),
|
|
123
171
|
include_sections: z
|
|
@@ -128,16 +176,66 @@ export function createKbMcpServer(db, dbPath, embedder, options) {
|
|
|
128
176
|
limit: z.number().optional().describe('Max rows to return (defaults depend on action).'),
|
|
129
177
|
branch: z.string().optional().describe('Optional branch to filter docs.'),
|
|
130
178
|
}, async (args) => ({
|
|
131
|
-
content: [{ type: 'text', text: JSON.stringify(docs.handler(db, args)) }],
|
|
179
|
+
content: [{ type: 'text', text: JSON.stringify(await docs.handler(db, args, embedder)) }],
|
|
180
|
+
}));
|
|
181
|
+
// ── lore_annotations ─────────────────────────────────────────────────────────
|
|
182
|
+
server.tool(annotations.toolDef.name, annotations.toolDef.description, {
|
|
183
|
+
kind: z
|
|
184
|
+
.enum(['TODO', 'FIXME', 'HACK', 'XXX', 'NOTE', 'BUG', 'OPTIMIZE'])
|
|
185
|
+
.describe('Annotation kind/tag to filter by.'),
|
|
186
|
+
path: z.string().optional().describe('Optional exact file path filter.'),
|
|
187
|
+
limit: z.number().optional().describe('Maximum number of results to return (default 20).'),
|
|
188
|
+
}, async (args) => ({
|
|
189
|
+
content: [{ type: 'text', text: JSON.stringify(annotations.handler(db, args)) }],
|
|
190
|
+
}));
|
|
191
|
+
// ── lore_routes ──────────────────────────────────────────────────────────────
|
|
192
|
+
server.tool(routes.toolDef.name, routes.toolDef.description, {
|
|
193
|
+
method: z.string().optional().describe('Optional HTTP method filter (for example GET, POST).'),
|
|
194
|
+
path_prefix: z.string().optional().describe('Optional route path prefix filter.'),
|
|
195
|
+
framework: z.string().optional().describe('Optional framework filter (for example express, fastapi, gin).'),
|
|
196
|
+
}, async (args) => ({
|
|
197
|
+
content: [{ type: 'text', text: JSON.stringify(routes.handler(db, args)) }],
|
|
132
198
|
}));
|
|
133
|
-
// ──
|
|
199
|
+
// ── lore_notes_write ─────────────────────────────────────────────────────────
|
|
200
|
+
server.tool(notes.writeToolDef.name, notes.writeToolDef.description, {
|
|
201
|
+
key: z.string().describe('Topic identifier, e.g. "architecture/overview".'),
|
|
202
|
+
scope: z
|
|
203
|
+
.string()
|
|
204
|
+
.optional()
|
|
205
|
+
.describe('Optional scope (default "global"), e.g. file:<path>, module:<name>.'),
|
|
206
|
+
content: z.string().describe('The note text.'),
|
|
207
|
+
model: z.string().optional().describe('Model identifier that authored the note.'),
|
|
208
|
+
source_hash: z.string().optional().describe('Optional source hash used for staleness detection.'),
|
|
209
|
+
}, async (args) => ({
|
|
210
|
+
content: [{ type: 'text', text: JSON.stringify(notes.writeHandler(dbPath, args)) }],
|
|
211
|
+
}));
|
|
212
|
+
// ── lore_notes_read ──────────────────────────────────────────────────────────
|
|
213
|
+
server.tool(notes.readToolDef.name, notes.readToolDef.description, {
|
|
214
|
+
key: z.string().optional().describe('Exact key match.'),
|
|
215
|
+
key_prefix: z.string().optional().describe('Prefix match (e.g. "architecture/").'),
|
|
216
|
+
scope: z.string().optional().describe('Optional scope filter.'),
|
|
217
|
+
limit: z.number().optional().describe('Max notes to return (default 20, max 200).'),
|
|
218
|
+
}, async (args) => ({
|
|
219
|
+
content: [{ type: 'text', text: JSON.stringify(notes.readHandler(db, args)) }],
|
|
220
|
+
}));
|
|
221
|
+
// ── lore_architecture ────────────────────────────────────────────────────────
|
|
222
|
+
server.tool(architecture.toolDef.name, architecture.toolDef.description, {
|
|
223
|
+
depth: z
|
|
224
|
+
.number()
|
|
225
|
+
.optional()
|
|
226
|
+
.describe('Optional path depth used to group files into components (default 2).'),
|
|
227
|
+
branch: z.string().optional().describe('Optional branch name to filter architecture output.'),
|
|
228
|
+
}, async (args) => ({
|
|
229
|
+
content: [{ type: 'text', text: JSON.stringify(architecture.handler(db, args)) }],
|
|
230
|
+
}));
|
|
231
|
+
// ── lore_test_map ─────────────────────────────────────────────────────────────
|
|
134
232
|
server.tool(testMap.toolDef.name, testMap.toolDef.description, {
|
|
135
233
|
source_path: z.string().describe('Source file path to resolve mapped test files for.'),
|
|
136
234
|
branch: z.string().optional().describe('Optional branch to constrain mappings.'),
|
|
137
235
|
}, async (args) => ({
|
|
138
236
|
content: [{ type: 'text', text: JSON.stringify(testMap.handler(db, args)) }],
|
|
139
237
|
}));
|
|
140
|
-
// ──
|
|
238
|
+
// ── lore_snippet ─────────────────────────────────────────────────────────────
|
|
141
239
|
server.tool(snippet.toolDef.name, snippet.toolDef.description, {
|
|
142
240
|
path: z.string().describe('Absolute file path as stored in the index.'),
|
|
143
241
|
start_line: z.number().optional().describe('First line (1-based, inclusive).'),
|
|
@@ -146,11 +244,24 @@ export function createKbMcpServer(db, dbPath, embedder, options) {
|
|
|
146
244
|
}, async (args) => ({
|
|
147
245
|
content: [{ type: 'text', text: JSON.stringify(snippet.handler(db, args)) }],
|
|
148
246
|
}));
|
|
149
|
-
// ──
|
|
150
|
-
server.tool(metrics.toolDef.name, metrics.toolDef.description, {
|
|
151
|
-
|
|
247
|
+
// ── lore_metrics ─────────────────────────────────────────────────────────────
|
|
248
|
+
server.tool(metrics.toolDef.name, metrics.toolDef.description, {
|
|
249
|
+
mode: z
|
|
250
|
+
.enum(metrics.toolDef.inputSchema.properties.mode.enum)
|
|
251
|
+
.optional()
|
|
252
|
+
.describe(metrics.toolDef.inputSchema.properties.mode.description),
|
|
253
|
+
limit: z
|
|
254
|
+
.number()
|
|
255
|
+
.optional()
|
|
256
|
+
.describe(metrics.toolDef.inputSchema.properties.limit.description),
|
|
257
|
+
min_cyclomatic: z
|
|
258
|
+
.number()
|
|
259
|
+
.optional()
|
|
260
|
+
.describe(metrics.toolDef.inputSchema.properties.min_cyclomatic.description),
|
|
261
|
+
}, async (args = {}) => ({
|
|
262
|
+
content: [{ type: 'text', text: JSON.stringify(metrics.handler(db, args)) }],
|
|
152
263
|
}));
|
|
153
|
-
// ──
|
|
264
|
+
// ── lore_coverage ────────────────────────────────────────────────────────────
|
|
154
265
|
server.tool(coverage.toolDef.name, coverage.toolDef.description, {
|
|
155
266
|
symbol_id: z.number().optional().describe('Optional symbol id to fetch exact coverage for.'),
|
|
156
267
|
symbol_name: z.string().optional().describe('Optional symbol name filter (case-insensitive).'),
|
|
@@ -160,18 +271,30 @@ export function createKbMcpServer(db, dbPath, embedder, options) {
|
|
|
160
271
|
}, async (args) => ({
|
|
161
272
|
content: [{ type: 'text', text: JSON.stringify(coverage.handler(db, args)) }],
|
|
162
273
|
}));
|
|
163
|
-
// ──
|
|
274
|
+
// ── lore_blame ───────────────────────────────────────────────────────────────
|
|
164
275
|
server.tool(blame.toolDef.name, blame.toolDef.description, {
|
|
165
|
-
path: z.string().describe('Absolute file path as stored in the index.'),
|
|
276
|
+
path: z.string().optional().describe('Absolute file path as stored in the index.'),
|
|
166
277
|
line: z.number().optional().describe('Single line to blame (1-based).'),
|
|
167
278
|
start_line: z.number().optional().describe('Range start line (1-based).'),
|
|
168
279
|
end_line: z.number().optional().describe('Range end line (1-based).'),
|
|
169
280
|
ref: z.string().optional().describe('Git ref to blame against (default HEAD).'),
|
|
170
281
|
branch: z.string().optional().describe('Optional branch to disambiguate indexed file path.'),
|
|
282
|
+
mode: z
|
|
283
|
+
.enum(['blame', 'history', 'ownership'])
|
|
284
|
+
.optional()
|
|
285
|
+
.describe('Query mode (default: "blame").'),
|
|
286
|
+
symbol: z
|
|
287
|
+
.string()
|
|
288
|
+
.optional()
|
|
289
|
+
.describe('Optional symbol name to resolve to an indexed file + line range.'),
|
|
290
|
+
scope: z
|
|
291
|
+
.enum(['file', 'directory'])
|
|
292
|
+
.optional()
|
|
293
|
+
.describe('Ownership mode scope. If omitted, inferred from `path`.'),
|
|
171
294
|
}, async (args) => ({
|
|
172
295
|
content: [{ type: 'text', text: JSON.stringify(blame.handler(db, args)) }],
|
|
173
296
|
}));
|
|
174
|
-
// ──
|
|
297
|
+
// ── lore_writeback ───────────────────────────────────────────────────────────
|
|
175
298
|
server.tool(writeback.toolDef.name, writeback.toolDef.description, {
|
|
176
299
|
symbol_id: z.number().describe('Symbol id to attach the summary to.'),
|
|
177
300
|
summary: z.string().describe('Natural-language summary text.'),
|
|
@@ -182,18 +305,18 @@ export function createKbMcpServer(db, dbPath, embedder, options) {
|
|
|
182
305
|
{ type: 'text', text: JSON.stringify(writeback.handler(dbPath, args)) },
|
|
183
306
|
],
|
|
184
307
|
}));
|
|
185
|
-
// ──
|
|
308
|
+
// ── lore_history ─────────────────────────────────────────────────────────────
|
|
186
309
|
server.tool(history.toolDef.name, history.toolDef.description, {
|
|
187
310
|
mode: z
|
|
188
|
-
.enum(['file', 'commit', 'author', 'ref', 'recent'])
|
|
189
|
-
.describe('Query mode: file, commit, author, ref, or recent.'),
|
|
190
|
-
query: z.string().optional().describe('File path, commit SHA, author name/email, or
|
|
311
|
+
.enum(['file', 'commit', 'author', 'ref', 'semantic', 'recent'])
|
|
312
|
+
.describe('Query mode: file, commit, author, ref, semantic, or recent.'),
|
|
313
|
+
query: z.string().optional().describe('File path, commit SHA, author name/email, ref, or semantic query text.'),
|
|
191
314
|
limit: z.number().optional().describe('Max results (default 20, max 200).'),
|
|
192
315
|
}, async (args) => ({
|
|
193
|
-
content: [{ type: 'text', text: JSON.stringify(history.handler(db, args)) }],
|
|
316
|
+
content: [{ type: 'text', text: JSON.stringify(await history.handler(db, args, embedder)) }],
|
|
194
317
|
}));
|
|
195
|
-
// ──
|
|
196
|
-
server.tool('
|
|
318
|
+
// ── lore_commit_stats ────────────────────────────────────────────────────────
|
|
319
|
+
server.tool('lore_commit_stats', 'Return git commit analytics for a selected metric.', {
|
|
197
320
|
metric: z
|
|
198
321
|
.enum(['cadence', 'size', 'churn', 'authors', 'messages', 'schedule', 'branches'])
|
|
199
322
|
.describe('Analytics metric to compute.'),
|
|
@@ -208,12 +331,12 @@ export function createKbMcpServer(db, dbPath, embedder, options) {
|
|
|
208
331
|
}
|
|
209
332
|
// ─── Embedding helper ─────────────────────────────────────────────────────────
|
|
210
333
|
/**
|
|
211
|
-
* Read the embedding model stored in `
|
|
334
|
+
* Read the embedding model stored in `lore_meta` at index time and spin up a
|
|
212
335
|
* `SentenceTransformersProvider` instance for it. Returns `undefined` when no
|
|
213
336
|
* embedding model is recorded in the database.
|
|
214
337
|
*/
|
|
215
338
|
async function buildEmbedder(db) {
|
|
216
|
-
const modelName =
|
|
339
|
+
const modelName = getLoreMeta(db, 'embedding_model');
|
|
217
340
|
if (!modelName)
|
|
218
341
|
return undefined;
|
|
219
342
|
const provider = new SentenceTransformersProvider(modelName);
|
|
@@ -235,7 +358,7 @@ function parseArgs() {
|
|
|
235
358
|
const args = process.argv.slice(2);
|
|
236
359
|
const dbIdx = args.indexOf('--db');
|
|
237
360
|
if (dbIdx === -1 || !args[dbIdx + 1]) {
|
|
238
|
-
console.error('Usage:
|
|
361
|
+
console.error('Usage: lore-server --db <path>');
|
|
239
362
|
process.exit(1);
|
|
240
363
|
}
|
|
241
364
|
return { dbPath: args[dbIdx + 1] };
|
|
@@ -245,7 +368,7 @@ async function main() {
|
|
|
245
368
|
const { dbPath } = parseArgs();
|
|
246
369
|
const db = openReadOnly(dbPath);
|
|
247
370
|
const embedder = await buildEmbedder(db);
|
|
248
|
-
const server =
|
|
371
|
+
const server = createLoreMcpServer(db, dbPath, embedder);
|
|
249
372
|
// Connect via stdio transport (standalone/debug mode).
|
|
250
373
|
const transport = new StdioServerTransport();
|
|
251
374
|
await server.connect(transport);
|
|
@@ -255,7 +378,7 @@ async function main() {
|
|
|
255
378
|
// Only run when executed as a standalone script, not when imported as a module.
|
|
256
379
|
if (process.argv[1] === fileURLToPath(import.meta.url)) {
|
|
257
380
|
main().catch((err) => {
|
|
258
|
-
console.error('
|
|
381
|
+
console.error('Lore server fatal error:', err);
|
|
259
382
|
process.exit(1);
|
|
260
383
|
});
|
|
261
384
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/lore-server/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EACL,qBAAqB,EACrB,wBAAwB,EACxB,iBAAiB,EACjB,qBAAqB,EACrB,yBAAyB,EACzB,kBAAkB,EAClB,eAAe,EACf,YAAY,GAEb,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,4BAA4B,EAA0B,MAAM,wBAAwB,CAAC;AAC9F,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAC;AAC5C,OAAO,KAAK,KAAK,MAAM,kBAAkB,CAAC;AAC1C,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAC;AAE5C,OAAO,KAAK,IAAI,MAAM,iBAAiB,CAAC;AACxC,OAAO,KAAK,WAAW,MAAM,wBAAwB,CAAC;AACtD,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAC;AAC5C,OAAO,KAAK,KAAK,MAAM,kBAAkB,CAAC;AAC1C,OAAO,KAAK,YAAY,MAAM,yBAAyB,CAAC;AACxD,OAAO,KAAK,OAAO,MAAM,qBAAqB,CAAC;AAC/C,OAAO,KAAK,OAAO,MAAM,oBAAoB,CAAC;AAC9C,OAAO,KAAK,KAAK,MAAM,kBAAkB,CAAC;AAC1C,OAAO,KAAK,OAAO,MAAM,oBAAoB,CAAC;AAC9C,OAAO,KAAK,QAAQ,MAAM,qBAAqB,CAAC;AAChD,OAAO,KAAK,SAAS,MAAM,sBAAsB,CAAC;AAClD,OAAO,KAAK,OAAO,MAAM,oBAAoB,CAAC;AAmB9C,SAAS,iBAAiB,CAAC,EAAqB,EAAE,IAAqB;IACrE,MAAM,OAAO,GAAG;QACd,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,MAAM,EAAE,IAAI,CAAC,MAAM;KACpB,CAAC;IACF,QAAQ,IAAI,CAAC,MAAM,EAAE,CAAC;QACpB,KAAK,SAAS;YACZ,OAAO;gBACL,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,GAAG,EAAE,iBAAiB,CAAC,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC;gBAC1C,IAAI,EAAE,iBAAiB,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC;gBAC5C,KAAK,EAAE,iBAAiB,CAAC,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC;aAC/C,CAAC;QACJ,KAAK,MAAM;YACT,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,eAAe,CAAC,EAAE,EAAE,OAAO,CAAC,EAAE,CAAC;QACxE,KAAK,OAAO;YACV,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,qBAAqB,CAAC,EAAE,EAAE,OAAO,CAAC,EAAE,CAAC;QAC5E,KAAK,SAAS;YACZ,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,qBAAqB,CAAC,EAAE,EAAE,OAAO,CAAC,EAAE,CAAC;QAC9E,KAAK,UAAU;YACb,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,QAAQ,EAAE,yBAAyB,CAAC,EAAE,EAAE,OAAO,CAAC,EAAE,CAAC;QACnF,KAAK,UAAU;YACb,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,kBAAkB,CAAC,EAAE,EAAE,OAAO,CAAC,EAAE,CAAC;QAC3E,KAAK,UAAU;YACb,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,wBAAwB,CAAC,EAAE,EAAE,OAAO,CAAC,EAAE,CAAC;IAChF,CAAC;AACH,CAAC;AAUD,iFAAiF;AAEjF;;;;;;;GAOG;AACH,MAAM,UAAU,mBAAmB,CACjC,EAAqB,EACrB,MAAc,EACd,QAA4B,EAC5B,OAA2B;IAE3B,MAAM,MAAM,GAAG,IAAI,SAAS,CAC1B,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,OAAO,EAAE,EACzC,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,CAChC,CAAC;IAEF,gFAAgF;IAChF,MAAM,CAAC,IAAI,CACT,MAAM,CAAC,OAAO,CAAC,IAAI,EACnB,MAAM,CAAC,OAAO,CAAC,WAAW,EAC1B;QACE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,wCAAwC,CAAC;QACnF,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,8FAA8F,CAAC;QAC1H,IAAI,EAAE,CAAC;aACJ,IAAI,CAAC,CAAC,OAAO,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;aACpC,QAAQ,EAAE;aACV,QAAQ,CAAC,qDAAqD,CAAC;QAClE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oCAAoC,CAAC;QAC5E,UAAU,EAAE,CAAC;aACV,IAAI,CAAC,CAAC,OAAO,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;aACrC,QAAQ,EAAE;aACV,QAAQ,CAAC,8DAA8D,CAAC;QAC3E,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iDAAiD,CAAC;QAC9F,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,8DAA8D,CAAC;QAC3G,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,2DAA2D,CAAC;QACrG,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,6DAA6D,CAAC;QACxH,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,4EAA4E,CAAC;KACzI,EACD,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;QACf,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,MAAM,CAAC,OAAO,CAAC,EAAE,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC,EAAE,CAAC;KAC5F,CAAC,CACH,CAAC;IAEF,gFAAgF;IAChF,MAAM,CAAC,IAAI,CACT,KAAK,CAAC,OAAO,CAAC,IAAI,EAClB,KAAK,CAAC,OAAO,CAAC,WAAW,EACzB;QACE,IAAI,EAAE,CAAC;aACJ,IAAI,CAAC,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC;aACjD,QAAQ,CAAC,2DAA2D,CAAC;QACxE,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iCAAiC,CAAC;QAC5E,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oCAAoC,CAAC;QAC3E,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kCAAkC,CAAC;QAC1E,IAAI,EAAE,CAAC;aACJ,IAAI,CAAC,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;aAChC,QAAQ,EAAE;aACV,QAAQ,CAAC,mCAAmC,CAAC;QAChD,YAAY,EAAE,CAAC;aACZ,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;aACjB,QAAQ,EAAE;aACV,QAAQ,CAAC,4DAA4D,CAAC;QACzE,cAAc,EAAE,CAAC;aACd,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CAAC,sDAAsD,CAAC;QACnE,qBAAqB,EAAE,CAAC;aACrB,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CAAC,+DAA+D,CAAC;KAC7E,EACD,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;QACf,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC;KAC3E,CAAC,CACH,CAAC;IAEF,gFAAgF;IAChF,MAAM,CAAC,IAAI,CACT,MAAM,CAAC,OAAO,CAAC,IAAI,EACnB,MAAM,CAAC,OAAO,CAAC,WAAW,EAC1B;QACE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,eAAe,CAAC;QAC3C,IAAI,EAAE,CAAC;aACJ,IAAI,CAAC,CAAC,YAAY,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;aACzC,QAAQ,EAAE;aACV,QAAQ,CAAC,oCAAoC,CAAC;QACjD,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,2BAA2B,CAAC;QAClE,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,6DAA6D,CAAC;QAC1G,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qDAAqD,CAAC;QAC/F,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iDAAiD,CAAC;QACvF,eAAe,EAAE,CAAC;aACf,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CAAC,mFAAmF,CAAC;QAChG,QAAQ,EAAE,CAAC;aACR,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CAAC,4EAA4E,CAAC;QACzF,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0FAA0F,CAAC;KACnI,EACD,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;QACf,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,MAAM,CAAC,OAAO,CAAC,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,cAAc,CAAC,CAAC,EAAE,CAAC;KACrH,CAAC,CACH,CAAC;IAEF,gFAAgF;IAChF,MAAM,CAAC,IAAI,CACT,IAAI,CAAC,OAAO,CAAC,IAAI,EACjB,IAAI,CAAC,OAAO,CAAC,WAAW,EACxB;QACE,MAAM,EAAE,CAAC;aACN,IAAI,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;aAC/B,QAAQ,CAAC,wEAAwE,CAAC;QACrF,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oDAAoD,CAAC;QAC1F,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,wCAAwC,CAAC;QAC/E,IAAI,EAAE,CAAC;aACJ,IAAI,CAAC,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;aACnC,QAAQ,EAAE;aACV,QAAQ,CAAC,sDAAsD,CAAC;QACnE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kCAAkC,CAAC;QACxE,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gCAAgC,CAAC;QAChF,gBAAgB,EAAE,CAAC;aAChB,OAAO,EAAE;aACT,QAAQ,EAAE;aACV,QAAQ,CAAC,8DAA8D,CAAC;QAC3E,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gCAAgC,CAAC;QACrF,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iDAAiD,CAAC;QACxF,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iCAAiC,CAAC;KAC1E,EACD,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;QACf,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC,EAAE,CAAC;KAC1F,CAAC,CACH,CAAC;IAEF,gFAAgF;IAChF,MAAM,CAAC,IAAI,CACT,WAAW,CAAC,OAAO,CAAC,IAAI,EACxB,WAAW,CAAC,OAAO,CAAC,WAAW,EAC/B;QACE,IAAI,EAAE,CAAC;aACJ,IAAI,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC;aACjE,QAAQ,CAAC,mCAAmC,CAAC;QAChD,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kCAAkC,CAAC;QACxE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mDAAmD,CAAC;KAC3F,EACD,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;QACf,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC;KACjF,CAAC,CACH,CAAC;IAEF,gFAAgF;IAChF,MAAM,CAAC,IAAI,CACT,MAAM,CAAC,OAAO,CAAC,IAAI,EACnB,MAAM,CAAC,OAAO,CAAC,WAAW,EAC1B;QACE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sDAAsD,CAAC;QAC9F,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oCAAoC,CAAC;QACjF,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gEAAgE,CAAC;KAC5G,EACD,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;QACf,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC;KAC5E,CAAC,CACH,CAAC;IAEF,gFAAgF;IAChF,MAAM,CAAC,IAAI,CACT,KAAK,CAAC,YAAY,CAAC,IAAI,EACvB,KAAK,CAAC,YAAY,CAAC,WAAW,EAC9B;QACE,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,iDAAiD,CAAC;QAC3E,KAAK,EAAE,CAAC;aACL,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CAAC,qEAAqE,CAAC;QAClF,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC;QAC9C,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0CAA0C,CAAC;QACjF,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oDAAoD,CAAC;KAClG,EACD,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;QACf,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC;KACpF,CAAC,CACH,CAAC;IAEF,gFAAgF;IAChF,MAAM,CAAC,IAAI,CACT,KAAK,CAAC,WAAW,CAAC,IAAI,EACtB,KAAK,CAAC,WAAW,CAAC,WAAW,EAC7B;QACE,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kBAAkB,CAAC;QACvD,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sCAAsC,CAAC;QAClF,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,wBAAwB,CAAC;QAC/D,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,4CAA4C,CAAC;KACpF,EACD,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;QACf,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC;KAC/E,CAAC,CACH,CAAC;IAEF,gFAAgF;IAChF,MAAM,CAAC,IAAI,CACT,YAAY,CAAC,OAAO,CAAC,IAAI,EACzB,YAAY,CAAC,OAAO,CAAC,WAAW,EAChC;QACE,KAAK,EAAE,CAAC;aACL,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CAAC,sEAAsE,CAAC;QACnF,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qDAAqD,CAAC;KAC9F,EACD,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;QACf,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC;KAClF,CAAC,CACH,CAAC;IAEF,iFAAiF;IACjF,MAAM,CAAC,IAAI,CACT,OAAO,CAAC,OAAO,CAAC,IAAI,EACpB,OAAO,CAAC,OAAO,CAAC,WAAW,EAC3B;QACE,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,oDAAoD,CAAC;QACtF,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,wCAAwC,CAAC;KACjF,EACD,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;QACf,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC;KAC7E,CAAC,CACH,CAAC;IAEF,gFAAgF;IAChF,MAAM,CAAC,IAAI,CACT,OAAO,CAAC,OAAO,CAAC,IAAI,EACpB,OAAO,CAAC,OAAO,CAAC,WAAW,EAC3B;QACE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,4CAA4C,CAAC;QACvE,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kCAAkC,CAAC;QAC9E,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iCAAiC,CAAC;QAC3E,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gDAAgD,CAAC;KACzF,EACD,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;QACf,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC;KAC7E,CAAC,CACH,CAAC;IAEF,gFAAgF;IAChF,MAAM,CAAC,IAAI,CACT,OAAO,CAAC,OAAO,CAAC,IAAI,EACpB,OAAO,CAAC,OAAO,CAAC,WAAW,EAC3B;QACE,IAAI,EAAE,CAAC;aACJ,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;aACtD,QAAQ,EAAE;aACV,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC;QACpE,KAAK,EAAE,CAAC;aACL,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,UAAU,CAAC,KAAK,CAAC,WAAW,CAAC;QACrE,cAAc,EAAE,CAAC;aACd,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,UAAU,CAAC,cAAc,CAAC,WAAW,CAAC;KAC/E,EACD,KAAK,EAAE,OAA4B,EAAE,EAAE,EAAE,CAAC,CAAC;QACzC,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC;KAC7E,CAAC,CACH,CAAC;IAEF,gFAAgF;IAChF,MAAM,CAAC,IAAI,CACT,QAAQ,CAAC,OAAO,CAAC,IAAI,EACrB,QAAQ,CAAC,OAAO,CAAC,WAAW,EAC5B;QACE,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iDAAiD,CAAC;QAC5F,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iDAAiD,CAAC;QAC9F,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,4BAA4B,CAAC;QAClE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,yBAAyB,CAAC;QACjE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,yCAAyC,CAAC;KACjF,EACD,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;QACf,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC;KAC9E,CAAC,CACH,CAAC;IAEF,gFAAgF;IAChF,MAAM,CAAC,IAAI,CACT,KAAK,CAAC,OAAO,CAAC,IAAI,EAClB,KAAK,CAAC,OAAO,CAAC,WAAW,EACzB;QACE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,4CAA4C,CAAC;QAClF,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iCAAiC,CAAC;QACvE,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,6BAA6B,CAAC;QACzE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,2BAA2B,CAAC;QACrE,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0CAA0C,CAAC;QAC/E,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oDAAoD,CAAC;QAC5F,IAAI,EAAE,CAAC;aACJ,IAAI,CAAC,CAAC,OAAO,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;aACvC,QAAQ,EAAE;aACV,QAAQ,CAAC,gCAAgC,CAAC;QAC7C,MAAM,EAAE,CAAC;aACN,MAAM,EAAE;aACR,QAAQ,EAAE;aACV,QAAQ,CAAC,kEAAkE,CAAC;QAC/E,KAAK,EAAE,CAAC;aACL,IAAI,CAAC,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;aAC3B,QAAQ,EAAE;aACV,QAAQ,CAAC,yDAAyD,CAAC;KACvE,EACD,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;QACf,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC;KAC3E,CAAC,CACH,CAAC;IAEF,gFAAgF;IAChF,MAAM,CAAC,IAAI,CACT,SAAS,CAAC,OAAO,CAAC,IAAI,EACtB,SAAS,CAAC,OAAO,CAAC,WAAW,EAC7B;QACE,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,qCAAqC,CAAC;QACrE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,gCAAgC,CAAC;QAC9D,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,8CAA8C,CAAC;QAC1E,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oDAAoD,CAAC;KAC7F,EACD,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;QACf,OAAO,EAAE;YACP,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,EAAE;SACxE;KACF,CAAC,CACH,CAAC;IAEF,gFAAgF;IAChF,MAAM,CAAC,IAAI,CACT,OAAO,CAAC,OAAO,CAAC,IAAI,EACpB,OAAO,CAAC,OAAO,CAAC,WAAW,EAC3B;QACE,IAAI,EAAE,CAAC;aACJ,IAAI,CAAC,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;aAC/D,QAAQ,CAAC,6DAA6D,CAAC;QAC1E,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,wEAAwE,CAAC;QAC/G,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oCAAoC,CAAC;KAC5E,EACD,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;QACf,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,OAAO,CAAC,OAAO,CAAC,EAAE,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC,EAAE,CAAC;KAC7F,CAAC,CACH,CAAC;IAEF,gFAAgF;IAChF,MAAM,CAAC,IAAI,CACT,mBAAmB,EACnB,oDAAoD,EACpD;QACE,MAAM,EAAE,CAAC;aACN,IAAI,CAAC,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;aACjF,QAAQ,CAAC,8BAA8B,CAAC;QAC3C,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mDAAmD,CAAC;QAC1F,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,4CAA4C,CAAC;QACnF,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,4CAA4C,CAAC;QACnF,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,8CAA8C,CAAC;KACvF,EACD,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;QACf,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC;KAC/E,CAAC,CACH,CAAC;IAEF,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,iFAAiF;AAEjF;;;;GAIG;AACH,KAAK,UAAU,aAAa,CAAC,EAAqB;IAChD,MAAM,SAAS,GAAG,WAAW,CAAC,EAAE,EAAE,iBAAiB,CAAC,CAAC;IACrD,IAAI,CAAC,SAAS;QAAE,OAAO,SAAS,CAAC;IAEjC,MAAM,QAAQ,GAAG,IAAI,4BAA4B,CAAC,SAAS,CAAC,CAAC;IAC7D,IAAI,CAAC;QACH,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QACtB,OAAO,QAAQ,CAAC;IAClB,CAAC;IAAC,MAAM,CAAC;QACP,6DAA6D;QAC7D,IAAI,CAAC;YAAC,MAAM,QAAQ,CAAC,OAAO,EAAE,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;QACxD,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED,iFAAiF;AAEjF,SAAS,SAAS;IAChB,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACnC,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACnC,IAAI,KAAK,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,EAAE,CAAC;QACrC,OAAO,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAC;QAChD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,KAAK,GAAG,CAAC,CAAE,EAAE,CAAC;AACtC,CAAC;AAED,iFAAiF;AAEjF,KAAK,UAAU,IAAI;IACjB,MAAM,EAAE,MAAM,EAAE,GAAG,SAAS,EAAE,CAAC;IAE/B,MAAM,EAAE,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;IAChC,MAAM,QAAQ,GAAG,MAAM,aAAa,CAAC,EAAE,CAAC,CAAC;IAEzC,MAAM,MAAM,GAAG,mBAAmB,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;IAEzD,uDAAuD;IACvD,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAEhC,sDAAsD;IACtD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;AAClC,CAAC;AAED,gFAAgF;AAChF,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;IACvD,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;QACnB,OAAO,CAAC,KAAK,CAAC,0BAA0B,EAAE,GAAG,CAAC,CAAC;QAC/C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @module
|
|
2
|
+
* @module lore-server/tools/annotations
|
|
3
3
|
*
|
|
4
4
|
* MCP tool: return indexed source-code annotations by kind.
|
|
5
5
|
*/
|
|
6
6
|
import type { Database } from '../db.js';
|
|
7
7
|
import { listAnnotations } from '../db.js';
|
|
8
8
|
export declare const toolDef: {
|
|
9
|
-
readonly name: "
|
|
9
|
+
readonly name: "lore_annotations";
|
|
10
10
|
readonly description: "Return indexed annotations (TODO/FIXME/etc.) by kind, with optional file path filter and result limit.";
|
|
11
11
|
readonly inputSchema: {
|
|
12
12
|
readonly type: "object";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"annotations.d.ts","sourceRoot":"","sources":["../../../src/lore-server/tools/annotations.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAE3C,eAAO,MAAM,OAAO;;;;;;;;;;;;;;;;;;;;;;CAuBV,CAAC;AAEX,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,UAAU,CAAC;IACtE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,UAAU,CAAC,OAAO,eAAe,CAAC,CAAC;CAC7C;AAED,wBAAgB,OAAO,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,IAAI,EAAE,eAAe,GAAG,iBAAiB,CAIvF"}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @module
|
|
2
|
+
* @module lore-server/tools/annotations
|
|
3
3
|
*
|
|
4
4
|
* MCP tool: return indexed source-code annotations by kind.
|
|
5
5
|
*/
|
|
6
6
|
import { listAnnotations } from '../db.js';
|
|
7
7
|
export const toolDef = {
|
|
8
|
-
name: '
|
|
8
|
+
name: 'lore_annotations',
|
|
9
9
|
description: 'Return indexed annotations (TODO/FIXME/etc.) by kind, with optional file path filter and result limit.',
|
|
10
10
|
inputSchema: {
|
|
11
11
|
type: 'object',
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"annotations.js","sourceRoot":"","sources":["../../../src/lore-server/tools/annotations.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAE3C,MAAM,CAAC,MAAM,OAAO,GAAG;IACrB,IAAI,EAAE,kBAAkB;IACxB,WAAW,EACT,wGAAwG;IAC1G,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,IAAI,EAAE;gBACJ,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,CAAC;gBACjE,WAAW,EAAE,mCAAmC;aACjD;YACD,IAAI,EAAE;gBACJ,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,kCAAkC;aAChD;YACD,KAAK,EAAE;gBACL,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,mDAAmD;aACjE;SACF;QACD,QAAQ,EAAE,CAAC,MAAM,CAAC;KACnB;CACO,CAAC;AAYX,MAAM,UAAU,OAAO,CAAC,EAAqB,EAAE,IAAqB;IAClE,OAAO;QACL,OAAO,EAAE,eAAe,CAAC,EAAE,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;KACrE,CAAC;AACJ,CAAC"}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @module
|
|
2
|
+
* @module lore-server/tools/architecture
|
|
3
3
|
*
|
|
4
4
|
* MCP tool: return a high-level architecture view grouped by path depth.
|
|
5
5
|
*/
|
|
6
6
|
import type { Database } from '../db.js';
|
|
7
7
|
export declare const toolDef: {
|
|
8
|
-
readonly name: "
|
|
8
|
+
readonly name: "lore_architecture";
|
|
9
9
|
readonly description: string;
|
|
10
10
|
readonly inputSchema: {
|
|
11
11
|
readonly type: "object";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"architecture.d.ts","sourceRoot":"","sources":["../../../src/lore-server/tools/architecture.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAEzC,eAAO,MAAM,OAAO;;;;;;;;;;;;;;;;;CAmBV,CAAC;AAEX,MAAM,WAAW,gBAAgB;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,qBAAqB;IACpC,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,sBAAsB,EAAE,CAAC;CACxC;AAED,MAAM,WAAW,gBAAgB;IAC/B,gBAAgB,EAAE,MAAM,CAAC;IACzB,gBAAgB,EAAE,MAAM,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,uBAAuB;IACtC,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,kBAAkB;IACjC,UAAU,EAAE,qBAAqB,EAAE,CAAC;IACpC,KAAK,EAAE,gBAAgB,EAAE,CAAC;IAC1B,YAAY,EAAE,gBAAgB,EAAE,CAAC;IACjC,UAAU,EAAE,gBAAgB,EAAE,CAAC;IAC/B,aAAa,EAAE,uBAAuB,EAAE,CAAC;CAC1C;AAiBD,wBAAgB,OAAO,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,IAAI,EAAE,gBAAgB,GAAG,kBAAkB,CA2MzF"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @module
|
|
2
|
+
* @module lore-server/tools/architecture
|
|
3
3
|
*
|
|
4
4
|
* MCP tool: return a high-level architecture view grouped by path depth.
|
|
5
5
|
*/
|
|
6
6
|
export const toolDef = {
|
|
7
|
-
name: '
|
|
7
|
+
name: 'lore_architecture',
|
|
8
8
|
description: 'Return an architecture overview grouped by path prefix, including component summaries, ' +
|
|
9
9
|
'inter-component edges, entry points, leaf nodes, and external dependency usage.',
|
|
10
10
|
inputSchema: {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"architecture.js","sourceRoot":"","sources":["../../../src/lore-server/tools/architecture.ts"],"names":[],"mappings":"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"}
|