@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.
- package/README.md +38 -150
- package/dist/cli.d.ts +2 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +80 -32
- package/dist/cli.js.map +1 -1
- package/dist/db/read-only.d.ts +22 -43
- package/dist/db/read-only.d.ts.map +1 -1
- package/dist/db/read-only.js +80 -156
- package/dist/db/read-only.js.map +1 -1
- package/dist/db/schema.d.ts +9 -0
- package/dist/db/schema.d.ts.map +1 -1
- package/dist/db/schema.js +171 -85
- package/dist/db/schema.js.map +1 -1
- package/dist/discovery/poller.d.ts +6 -16
- package/dist/discovery/poller.d.ts.map +1 -1
- package/dist/discovery/poller.js +21 -52
- package/dist/discovery/poller.js.map +1 -1
- package/dist/discovery/scip-flush.d.ts +44 -0
- package/dist/discovery/scip-flush.d.ts.map +1 -0
- package/dist/discovery/scip-flush.js +67 -0
- package/dist/discovery/scip-flush.js.map +1 -0
- package/dist/discovery/watcher.d.ts +6 -16
- package/dist/discovery/watcher.d.ts.map +1 -1
- package/dist/discovery/watcher.js +22 -54
- package/dist/discovery/watcher.js.map +1 -1
- package/dist/docs/docs.d.ts +0 -2
- package/dist/docs/docs.d.ts.map +1 -1
- package/dist/docs/docs.js +0 -27
- package/dist/docs/docs.js.map +1 -1
- package/dist/embeddings/embedder.d.ts +12 -8
- package/dist/embeddings/embedder.d.ts.map +1 -1
- package/dist/embeddings/embedder.js +35 -19
- package/dist/embeddings/embedder.js.map +1 -1
- package/dist/index.d.ts +5 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -2
- package/dist/index.js.map +1 -1
- package/dist/indexer/index.d.ts +19 -10
- package/dist/indexer/index.d.ts.map +1 -1
- package/dist/indexer/index.js +135 -28
- package/dist/indexer/index.js.map +1 -1
- package/dist/indexer/pipeline.d.ts +44 -21
- package/dist/indexer/pipeline.d.ts.map +1 -1
- package/dist/indexer/pipeline.js +48 -26
- package/dist/indexer/pipeline.js.map +1 -1
- package/dist/indexer/stages/docs-index.d.ts +1 -3
- package/dist/indexer/stages/docs-index.d.ts.map +1 -1
- package/dist/indexer/stages/docs-index.js +1 -25
- package/dist/indexer/stages/docs-index.js.map +1 -1
- package/dist/indexer/stages/index.d.ts +4 -2
- package/dist/indexer/stages/index.d.ts.map +1 -1
- package/dist/indexer/stages/index.js +3 -2
- package/dist/indexer/stages/index.js.map +1 -1
- package/dist/indexer/stages/lsp-enrichment.d.ts +1 -1
- package/dist/indexer/stages/lsp-enrichment.d.ts.map +1 -1
- package/dist/indexer/stages/lsp-enrichment.js +44 -21
- package/dist/indexer/stages/lsp-enrichment.js.map +1 -1
- package/dist/indexer/stages/overlay-cleanup.d.ts +31 -0
- package/dist/indexer/stages/overlay-cleanup.d.ts.map +1 -0
- package/dist/indexer/stages/overlay-cleanup.js +64 -0
- package/dist/indexer/stages/overlay-cleanup.js.map +1 -0
- package/dist/indexer/stages/reverse-deps.d.ts +13 -0
- package/dist/indexer/stages/reverse-deps.d.ts.map +1 -0
- package/dist/indexer/stages/reverse-deps.js +81 -0
- package/dist/indexer/stages/reverse-deps.js.map +1 -0
- package/dist/indexer/stages/{scip-source.d.ts → scip-indexer.d.ts} +38 -9
- package/dist/indexer/stages/scip-indexer.d.ts.map +1 -0
- package/dist/indexer/stages/{scip-source.js → scip-indexer.js} +359 -98
- package/dist/indexer/stages/scip-indexer.js.map +1 -0
- package/dist/indexer/stages/source-index.d.ts +3 -3
- package/dist/indexer/stages/source-index.d.ts.map +1 -1
- package/dist/indexer/stages/source-index.js +188 -70
- package/dist/indexer/stages/source-index.js.map +1 -1
- package/dist/lsp/enrichment.d.ts.map +1 -1
- package/dist/lsp/enrichment.js +1 -18
- package/dist/lsp/enrichment.js.map +1 -1
- package/dist/parsing/extractors/go.d.ts.map +1 -1
- package/dist/parsing/extractors/go.js +0 -38
- package/dist/parsing/extractors/go.js.map +1 -1
- package/dist/parsing/extractors/javascript.d.ts.map +1 -1
- package/dist/parsing/extractors/javascript.js +0 -47
- package/dist/parsing/extractors/javascript.js.map +1 -1
- package/dist/parsing/extractors/python.d.ts.map +1 -1
- package/dist/parsing/extractors/python.js +0 -22
- package/dist/parsing/extractors/python.js.map +1 -1
- package/dist/parsing/extractors/types.d.ts +0 -16
- package/dist/parsing/extractors/types.d.ts.map +1 -1
- package/dist/parsing/extractors/types.js +1 -1
- package/dist/parsing/extractors/types.js.map +1 -1
- package/dist/parsing/extractors/typescript.d.ts.map +1 -1
- package/dist/parsing/extractors/typescript.js +18 -2
- package/dist/parsing/extractors/typescript.js.map +1 -1
- package/dist/resolution/call-graph.d.ts +3 -1
- package/dist/resolution/call-graph.d.ts.map +1 -1
- package/dist/resolution/call-graph.js +15 -13
- package/dist/resolution/call-graph.js.map +1 -1
- package/dist/resolution/resolution-method.d.ts +1 -1
- package/dist/resolution/resolution-method.d.ts.map +1 -1
- package/dist/resolution/resolution-method.js +2 -0
- package/dist/resolution/resolution-method.js.map +1 -1
- package/dist/resolution/resolver.d.ts +6 -0
- package/dist/resolution/resolver.d.ts.map +1 -1
- package/dist/resolution/resolver.js +21 -0
- package/dist/resolution/resolver.js.map +1 -1
- package/dist/runtime.d.ts +0 -2
- package/dist/runtime.d.ts.map +1 -1
- package/dist/runtime.js.map +1 -1
- package/dist/scip/compdb.d.ts +38 -0
- package/dist/scip/compdb.d.ts.map +1 -0
- package/dist/scip/compdb.js +138 -0
- package/dist/scip/compdb.js.map +1 -0
- package/dist/scip/enrichment.d.ts +6 -1
- package/dist/scip/enrichment.d.ts.map +1 -1
- package/dist/scip/enrichment.js +62 -5
- package/dist/scip/enrichment.js.map +1 -1
- package/dist/scip/installer.d.ts +59 -0
- package/dist/scip/installer.d.ts.map +1 -0
- package/dist/scip/installer.js +302 -0
- package/dist/scip/installer.js.map +1 -0
- package/dist/scip/registry.d.ts +1 -1
- package/dist/scip/registry.d.ts.map +1 -1
- package/dist/scip/registry.js +33 -5
- package/dist/scip/registry.js.map +1 -1
- package/dist/server/server.d.ts +3 -8
- package/dist/server/server.d.ts.map +1 -1
- package/dist/server/server.js +7 -66
- package/dist/server/server.js.map +1 -1
- package/dist/server/tool-registry.d.ts +2 -2
- package/dist/server/tool-registry.d.ts.map +1 -1
- package/dist/server/tool-registry.js +37 -41
- package/dist/server/tool-registry.js.map +1 -1
- package/dist/server/tools/cohesion.d.ts +46 -0
- package/dist/server/tools/cohesion.d.ts.map +1 -0
- package/dist/server/tools/cohesion.js +100 -0
- package/dist/server/tools/cohesion.js.map +1 -0
- package/dist/server/tools/dependents.d.ts +139 -0
- package/dist/server/tools/dependents.d.ts.map +1 -0
- package/dist/server/tools/dependents.js +354 -0
- package/dist/server/tools/dependents.js.map +1 -0
- package/dist/server/tools/diff.d.ts +73 -0
- package/dist/server/tools/diff.d.ts.map +1 -0
- package/dist/server/tools/diff.js +157 -0
- package/dist/server/tools/diff.js.map +1 -0
- package/dist/server/tools/graph.d.ts +7 -3
- package/dist/server/tools/graph.d.ts.map +1 -1
- package/dist/server/tools/graph.js +15 -85
- package/dist/server/tools/graph.js.map +1 -1
- package/dist/server/tools/metrics.d.ts +5 -30
- package/dist/server/tools/metrics.d.ts.map +1 -1
- package/dist/server/tools/metrics.js +21 -57
- package/dist/server/tools/metrics.js.map +1 -1
- package/dist/server/tools/structure.d.ts +77 -0
- package/dist/server/tools/structure.d.ts.map +1 -0
- package/dist/server/tools/structure.js +309 -0
- package/dist/server/tools/structure.js.map +1 -0
- package/dist/server/tools/test-map.d.ts +7 -0
- package/dist/server/tools/test-map.d.ts.map +1 -1
- package/dist/server/tools/test-map.js +18 -1
- package/dist/server/tools/test-map.js.map +1 -1
- package/dist/server/tools/trace.d.ts +84 -0
- package/dist/server/tools/trace.d.ts.map +1 -0
- package/dist/server/tools/trace.js +317 -0
- package/dist/server/tools/trace.js.map +1 -0
- package/dist/testing/coverage.d.ts +11 -0
- package/dist/testing/coverage.d.ts.map +1 -1
- package/dist/testing/coverage.js +34 -2
- package/dist/testing/coverage.js.map +1 -1
- package/dist/testing/test-mapper.d.ts +1 -1
- package/dist/testing/test-mapper.d.ts.map +1 -1
- package/dist/testing/test-mapper.js +1 -0
- package/dist/testing/test-mapper.js.map +1 -1
- package/package.json +3 -1
- package/dist/indexer/stages/scip-enrichment.d.ts +0 -43
- package/dist/indexer/stages/scip-enrichment.d.ts.map +0 -1
- package/dist/indexer/stages/scip-enrichment.js +0 -174
- package/dist/indexer/stages/scip-enrichment.js.map +0 -1
- package/dist/indexer/stages/scip-source.d.ts.map +0 -1
- package/dist/indexer/stages/scip-source.js.map +0 -1
- package/dist/server/tools/annotations.d.ts +0 -40
- package/dist/server/tools/annotations.d.ts.map +0 -1
- package/dist/server/tools/annotations.js +0 -35
- package/dist/server/tools/annotations.js.map +0 -1
- package/dist/server/tools/architecture.d.ts +0 -67
- package/dist/server/tools/architecture.d.ts.map +0 -1
- package/dist/server/tools/architecture.js +0 -209
- package/dist/server/tools/architecture.js.map +0 -1
- package/dist/server/tools/coverage.d.ts +0 -67
- package/dist/server/tools/coverage.d.ts.map +0 -1
- package/dist/server/tools/coverage.js +0 -74
- package/dist/server/tools/coverage.js.map +0 -1
- package/dist/server/tools/graph-analysis.d.ts +0 -64
- package/dist/server/tools/graph-analysis.d.ts.map +0 -1
- package/dist/server/tools/graph-analysis.js +0 -82
- package/dist/server/tools/graph-analysis.js.map +0 -1
- package/dist/server/tools/notes.d.ts +0 -165
- package/dist/server/tools/notes.d.ts.map +0 -1
- package/dist/server/tools/notes.js +0 -214
- package/dist/server/tools/notes.js.map +0 -1
- package/dist/server/tools/routes.d.ts +0 -38
- package/dist/server/tools/routes.d.ts.map +0 -1
- package/dist/server/tools/routes.js +0 -38
- package/dist/server/tools/routes.js.map +0 -1
- package/dist/server/tools/writeback.d.ts +0 -49
- package/dist/server/tools/writeback.d.ts.map +0 -1
- package/dist/server/tools/writeback.js +0 -68
- package/dist/server/tools/writeback.js.map +0 -1
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module lore-server/tools/diff
|
|
3
|
+
*
|
|
4
|
+
* MCP tool: compare exported symbols between two indexed branches.
|
|
5
|
+
*/
|
|
6
|
+
// ─── Tool definition ──────────────────────────────────────────────────────────
|
|
7
|
+
export const toolDef = {
|
|
8
|
+
name: 'lore_diff',
|
|
9
|
+
description: 'Compare exported symbols between two indexed branches. ' +
|
|
10
|
+
'Returns added, removed, and changed (signature-different) symbols.',
|
|
11
|
+
inputSchema: {
|
|
12
|
+
type: 'object',
|
|
13
|
+
properties: {
|
|
14
|
+
old_branch: {
|
|
15
|
+
type: 'string',
|
|
16
|
+
description: 'The baseline branch to diff from.',
|
|
17
|
+
},
|
|
18
|
+
new_branch: {
|
|
19
|
+
type: 'string',
|
|
20
|
+
description: 'The target branch to diff to. Defaults to the most recently indexed branch.',
|
|
21
|
+
},
|
|
22
|
+
path_prefix: {
|
|
23
|
+
type: 'string',
|
|
24
|
+
description: 'Limit results to files whose path starts with this prefix.',
|
|
25
|
+
},
|
|
26
|
+
kind: {
|
|
27
|
+
type: 'string',
|
|
28
|
+
description: 'Limit results to symbols of this kind (e.g. "function", "class").',
|
|
29
|
+
},
|
|
30
|
+
limit: {
|
|
31
|
+
type: 'integer',
|
|
32
|
+
description: 'Max entries per result array (default 50, max 500).',
|
|
33
|
+
minimum: 1,
|
|
34
|
+
maximum: 500,
|
|
35
|
+
},
|
|
36
|
+
},
|
|
37
|
+
required: ['old_branch'],
|
|
38
|
+
},
|
|
39
|
+
};
|
|
40
|
+
// ─── Handler ──────────────────────────────────────────────────────────────────
|
|
41
|
+
/** Compare exported symbols between two indexed branches. */
|
|
42
|
+
export function handler(db, args) {
|
|
43
|
+
const oldBranch = args.old_branch;
|
|
44
|
+
const newBranch = args.new_branch ?? resolveDefaultBranch(db, oldBranch);
|
|
45
|
+
const limit = Math.min(Math.max(1, args.limit ?? 50), 500);
|
|
46
|
+
const filterClauses = [];
|
|
47
|
+
const filterParams = [];
|
|
48
|
+
// Separate filter clauses for the changed query which uses different aliases
|
|
49
|
+
const changedFilterClauses = [];
|
|
50
|
+
const changedFilterParams = [];
|
|
51
|
+
if (args.path_prefix) {
|
|
52
|
+
const prefixPattern = escapeLikePrefix(args.path_prefix);
|
|
53
|
+
filterClauses.push('AND f.path LIKE ? ESCAPE \'\\\'');
|
|
54
|
+
filterParams.push(prefixPattern);
|
|
55
|
+
changedFilterClauses.push('AND f_new.path LIKE ? ESCAPE \'\\\'');
|
|
56
|
+
changedFilterParams.push(prefixPattern);
|
|
57
|
+
}
|
|
58
|
+
if (args.kind) {
|
|
59
|
+
filterClauses.push('AND s.kind = ?');
|
|
60
|
+
filterParams.push(args.kind);
|
|
61
|
+
changedFilterClauses.push('AND s_new.kind = ?');
|
|
62
|
+
changedFilterParams.push(args.kind);
|
|
63
|
+
}
|
|
64
|
+
const filters = filterClauses.join(' ');
|
|
65
|
+
const changedFilters = changedFilterClauses.join(' ');
|
|
66
|
+
// Added: exported symbols in new_branch not present in old_branch
|
|
67
|
+
const added = db.prepare(`SELECT s.name, s.kind, f.path AS file_path, s.signature
|
|
68
|
+
FROM symbols s
|
|
69
|
+
JOIN files f ON f.id = s.file_id
|
|
70
|
+
WHERE f.branch = ?
|
|
71
|
+
AND s.is_exported = 1
|
|
72
|
+
${filters}
|
|
73
|
+
AND NOT EXISTS (
|
|
74
|
+
SELECT 1
|
|
75
|
+
FROM symbols s2
|
|
76
|
+
JOIN files f2 ON f2.id = s2.file_id
|
|
77
|
+
WHERE f2.branch = ?
|
|
78
|
+
AND s2.name = s.name
|
|
79
|
+
AND s2.kind = s.kind
|
|
80
|
+
AND f2.path = f.path
|
|
81
|
+
AND s2.is_exported = 1
|
|
82
|
+
)
|
|
83
|
+
ORDER BY f.path, s.name
|
|
84
|
+
LIMIT ?`).all(newBranch, ...filterParams, oldBranch, limit);
|
|
85
|
+
// Removed: exported symbols in old_branch not present in new_branch
|
|
86
|
+
const removed = db.prepare(`SELECT s.name, s.kind, f.path AS file_path, s.signature
|
|
87
|
+
FROM symbols s
|
|
88
|
+
JOIN files f ON f.id = s.file_id
|
|
89
|
+
WHERE f.branch = ?
|
|
90
|
+
AND s.is_exported = 1
|
|
91
|
+
${filters}
|
|
92
|
+
AND NOT EXISTS (
|
|
93
|
+
SELECT 1
|
|
94
|
+
FROM symbols s2
|
|
95
|
+
JOIN files f2 ON f2.id = s2.file_id
|
|
96
|
+
WHERE f2.branch = ?
|
|
97
|
+
AND s2.name = s.name
|
|
98
|
+
AND s2.kind = s.kind
|
|
99
|
+
AND f2.path = f.path
|
|
100
|
+
AND s2.is_exported = 1
|
|
101
|
+
)
|
|
102
|
+
ORDER BY f.path, s.name
|
|
103
|
+
LIMIT ?`).all(oldBranch, ...filterParams, newBranch, limit);
|
|
104
|
+
// Changed: same name/kind/path but different signature across branches
|
|
105
|
+
const changed = db.prepare(`SELECT s_new.name,
|
|
106
|
+
s_new.kind,
|
|
107
|
+
f_new.path AS file_path,
|
|
108
|
+
s_old.signature AS old_signature,
|
|
109
|
+
s_new.signature AS new_signature
|
|
110
|
+
FROM symbols s_new
|
|
111
|
+
JOIN files f_new ON f_new.id = s_new.file_id
|
|
112
|
+
JOIN files f_old ON f_old.path = f_new.path AND f_old.branch = ?
|
|
113
|
+
JOIN symbols s_old ON s_old.file_id = f_old.id
|
|
114
|
+
AND s_old.name = s_new.name
|
|
115
|
+
AND s_old.kind = s_new.kind
|
|
116
|
+
AND s_old.is_exported = 1
|
|
117
|
+
WHERE f_new.branch = ?
|
|
118
|
+
AND s_new.is_exported = 1
|
|
119
|
+
${changedFilters}
|
|
120
|
+
AND COALESCE(s_new.signature, '') != COALESCE(s_old.signature, '')
|
|
121
|
+
ORDER BY f_new.path, s_new.name
|
|
122
|
+
LIMIT ?`).all(oldBranch, newBranch, ...changedFilterParams, limit);
|
|
123
|
+
return {
|
|
124
|
+
old_branch: oldBranch,
|
|
125
|
+
new_branch: newBranch,
|
|
126
|
+
added,
|
|
127
|
+
removed,
|
|
128
|
+
changed,
|
|
129
|
+
summary: {
|
|
130
|
+
added_count: added.length,
|
|
131
|
+
removed_count: removed.length,
|
|
132
|
+
changed_count: changed.length,
|
|
133
|
+
},
|
|
134
|
+
};
|
|
135
|
+
}
|
|
136
|
+
// ─── Helpers ──────────────────────────────────────────────────────────────────
|
|
137
|
+
/**
|
|
138
|
+
* Resolve the default new_branch by picking the most recently indexed branch
|
|
139
|
+
* from the files table that is different from old_branch.
|
|
140
|
+
*/
|
|
141
|
+
function resolveDefaultBranch(db, oldBranch) {
|
|
142
|
+
const row = db.prepare(`SELECT branch FROM files
|
|
143
|
+
WHERE branch != ?
|
|
144
|
+
ORDER BY indexed_at DESC
|
|
145
|
+
LIMIT 1`).get(oldBranch);
|
|
146
|
+
if (!row) {
|
|
147
|
+
throw new Error(`Cannot resolve new_branch: no other indexed branch found besides '${oldBranch}'. ` +
|
|
148
|
+
'Please specify new_branch explicitly.');
|
|
149
|
+
}
|
|
150
|
+
return row.branch;
|
|
151
|
+
}
|
|
152
|
+
/** Escape a path prefix for use with LIKE … ESCAPE '\\'. */
|
|
153
|
+
function escapeLikePrefix(prefix) {
|
|
154
|
+
const escaped = prefix.replace(/\\/g, '\\\\').replace(/%/g, '\\%').replace(/_/g, '\\_');
|
|
155
|
+
return escaped + '%';
|
|
156
|
+
}
|
|
157
|
+
//# sourceMappingURL=diff.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diff.js","sourceRoot":"","sources":["../../../src/server/tools/diff.ts"],"names":[],"mappings":"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"}
|
|
@@ -16,7 +16,7 @@ export declare const toolDef: {
|
|
|
16
16
|
readonly properties: {
|
|
17
17
|
readonly kind: {
|
|
18
18
|
readonly type: "string";
|
|
19
|
-
readonly enum: readonly ["call", "import", "
|
|
19
|
+
readonly enum: readonly ["call", "import", "inheritance", "type_dependency"];
|
|
20
20
|
readonly description: string;
|
|
21
21
|
};
|
|
22
22
|
readonly source_id: {
|
|
@@ -69,7 +69,7 @@ export declare const toolDef: {
|
|
|
69
69
|
readonly required: readonly ["kind"];
|
|
70
70
|
};
|
|
71
71
|
};
|
|
72
|
-
type GraphKind = 'call' | 'import' | '
|
|
72
|
+
type GraphKind = 'call' | 'import' | 'inheritance' | 'type_dependency';
|
|
73
73
|
export interface GraphArgs {
|
|
74
74
|
kind: GraphKind;
|
|
75
75
|
source_id?: number;
|
|
@@ -86,9 +86,11 @@ export interface GraphArgs {
|
|
|
86
86
|
export interface GraphEdge {
|
|
87
87
|
source_id: number | null;
|
|
88
88
|
source_name: string;
|
|
89
|
+
source_file_path?: string | null;
|
|
89
90
|
source_branch: string;
|
|
90
91
|
target_id: number | null;
|
|
91
92
|
target_name: string;
|
|
93
|
+
target_file_path?: string | null;
|
|
92
94
|
callee_coverage_percent?: number | null;
|
|
93
95
|
ref_kind?: string;
|
|
94
96
|
line?: number;
|
|
@@ -101,9 +103,11 @@ export interface GraphEdge {
|
|
|
101
103
|
export interface CompactGraphEdge {
|
|
102
104
|
source_id: number | null;
|
|
103
105
|
source_name: string;
|
|
106
|
+
source_file_path?: string | null;
|
|
104
107
|
source_branch: string;
|
|
105
108
|
target_id: number | null;
|
|
106
109
|
target_name: string;
|
|
110
|
+
target_file_path?: string | null;
|
|
107
111
|
callee_coverage_percent?: number | null;
|
|
108
112
|
ref_kind?: string;
|
|
109
113
|
}
|
|
@@ -114,7 +118,7 @@ export interface GraphResult {
|
|
|
114
118
|
semantic_nodes?: GraphSemanticNode[];
|
|
115
119
|
}
|
|
116
120
|
export interface GraphSemanticNode {
|
|
117
|
-
node_type: 'symbol'
|
|
121
|
+
node_type: 'symbol';
|
|
118
122
|
id: number;
|
|
119
123
|
name: string;
|
|
120
124
|
branch: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"graph.d.ts","sourceRoot":"","sources":["../../../src/server/tools/graph.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAEtD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uCAAuC,CAAC;AAI9E,eAAO,MAAM,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4EV,CAAC;AAIX,KAAK,SAAS,GAAG,MAAM,GAAG,QAAQ,GAAG,
|
|
1
|
+
{"version":3,"file":"graph.d.ts","sourceRoot":"","sources":["../../../src/server/tools/graph.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,8 +10,8 @@ import { getCoveragePercentBySymbolIds, semanticSearchSymbols } from '../../db/r
|
|
|
10
10
|
// ─── Tool definition ──────────────────────────────────────────────────────────
|
|
11
11
|
export const toolDef = {
|
|
12
12
|
name: 'lore_graph',
|
|
13
|
-
description: 'Query call, import,
|
|
14
|
-
'Set `kind` to "call", "import", "
|
|
13
|
+
description: 'Query call, import, inheritance, or type dependency graph edges stored in the knowledge-base index. ' +
|
|
14
|
+
'Set `kind` to "call", "import", "inheritance", or "type_dependency". ' +
|
|
15
15
|
'Use source_id for outbound edges (what does X call?) and target_id for inbound edges (who calls X?). ' +
|
|
16
16
|
'Set depth > 1 to follow transitive edges (e.g., depth=3 returns the full 3-hop blast radius in one call). ' +
|
|
17
17
|
'Set compact=true to omit provenance fields (line numbers, resolution details) and reduce token count. ' +
|
|
@@ -21,9 +21,9 @@ export const toolDef = {
|
|
|
21
21
|
properties: {
|
|
22
22
|
kind: {
|
|
23
23
|
type: 'string',
|
|
24
|
-
enum: ['call', 'import', '
|
|
24
|
+
enum: ['call', 'import', 'inheritance', 'type_dependency'],
|
|
25
25
|
description: '"call" returns symbol → callee edges; "import" returns file → imported-file edges; ' +
|
|
26
|
-
'"
|
|
26
|
+
'"inheritance" returns symbol → base-symbol edges; ' +
|
|
27
27
|
'"type_dependency" returns symbol → referenced-type edges.',
|
|
28
28
|
},
|
|
29
29
|
source_id: {
|
|
@@ -106,9 +106,11 @@ function getStructuralEdges(db, args, limit) {
|
|
|
106
106
|
params.push(limit);
|
|
107
107
|
const sql = `SELECT sr.caller_id AS source_id,
|
|
108
108
|
s_caller.name AS source_name,
|
|
109
|
+
f_caller.path AS source_file_path,
|
|
109
110
|
f_caller.branch AS source_branch,
|
|
110
111
|
sr.callee_id AS target_id,
|
|
111
112
|
sr.callee_name AS target_name,
|
|
113
|
+
sr.definition_path AS target_file_path,
|
|
112
114
|
sr.call_kind AS call_kind,
|
|
113
115
|
sr.call_line + 1 AS line,
|
|
114
116
|
CASE
|
|
@@ -164,45 +166,6 @@ function getStructuralEdges(db, args, limit) {
|
|
|
164
166
|
const edges = db.prepare(sql).all(...params);
|
|
165
167
|
return edges;
|
|
166
168
|
}
|
|
167
|
-
else if (args.kind === 'module') {
|
|
168
|
-
// Module-level: inferred from file_imports + file_modules.
|
|
169
|
-
// NOTE: No writer populates `modules`/`file_modules` — this query returns
|
|
170
|
-
// empty results until a module-detection writer is implemented.
|
|
171
|
-
// The INNER JOIN on file_modules ensures graceful empty results.
|
|
172
|
-
const conditions = [];
|
|
173
|
-
const params = [];
|
|
174
|
-
if (args.source_id !== undefined) {
|
|
175
|
-
conditions.push('m_src.id = ?');
|
|
176
|
-
params.push(args.source_id);
|
|
177
|
-
}
|
|
178
|
-
if (args.target_id !== undefined) {
|
|
179
|
-
conditions.push('m_dst.id = ?');
|
|
180
|
-
params.push(args.target_id);
|
|
181
|
-
}
|
|
182
|
-
if (args.branch !== undefined) {
|
|
183
|
-
conditions.push('f_src.branch = ?');
|
|
184
|
-
params.push(args.branch);
|
|
185
|
-
}
|
|
186
|
-
const whereClause = conditions.length > 0 ? `WHERE ${conditions.join(' AND ')}` : '';
|
|
187
|
-
params.push(limit);
|
|
188
|
-
const sql = `SELECT DISTINCT
|
|
189
|
-
m_src.id AS source_id,
|
|
190
|
-
m_src.name AS source_name,
|
|
191
|
-
f_src.branch AS source_branch,
|
|
192
|
-
m_dst.id AS target_id,
|
|
193
|
-
COALESCE(m_dst.name, fi.raw_import) AS target_name
|
|
194
|
-
FROM file_imports fi
|
|
195
|
-
JOIN files f_src ON f_src.id = fi.file_id
|
|
196
|
-
JOIN file_modules fm_src ON fm_src.file_id = f_src.id
|
|
197
|
-
JOIN modules m_src ON m_src.id = fm_src.module_id
|
|
198
|
-
LEFT JOIN files f_dst ON f_dst.id = fi.resolved_id
|
|
199
|
-
LEFT JOIN file_modules fm_dst ON fm_dst.file_id = f_dst.id
|
|
200
|
-
LEFT JOIN modules m_dst ON m_dst.id = fm_dst.module_id
|
|
201
|
-
${whereClause}
|
|
202
|
-
LIMIT ?`;
|
|
203
|
-
const edges = db.prepare(sql).all(...params);
|
|
204
|
-
return edges;
|
|
205
|
-
}
|
|
206
169
|
else if (args.kind === 'inheritance') {
|
|
207
170
|
// Symbol-level inheritance edges (e.g., class extends, implements)
|
|
208
171
|
const conditions = ["rel.relationship_type IN ('extends', 'implements')"];
|
|
@@ -223,9 +186,11 @@ function getStructuralEdges(db, args, limit) {
|
|
|
223
186
|
params.push(limit);
|
|
224
187
|
const sql = `SELECT rel.source_symbol_id AS source_id,
|
|
225
188
|
s_src.name AS source_name,
|
|
189
|
+
f_src.path AS source_file_path,
|
|
226
190
|
f_src.branch AS source_branch,
|
|
227
191
|
rel.target_symbol_id AS target_id,
|
|
228
192
|
COALESCE(s_dst.name, rel.target_symbol_name) AS target_name,
|
|
193
|
+
rel.definition_path AS target_file_path,
|
|
229
194
|
rel.line + 1 AS line,
|
|
230
195
|
CASE
|
|
231
196
|
WHEN rel.character IS NULL THEN NULL
|
|
@@ -264,9 +229,11 @@ function getStructuralEdges(db, args, limit) {
|
|
|
264
229
|
params.push(limit);
|
|
265
230
|
const sql = `SELECT tr.symbol_id AS source_id,
|
|
266
231
|
COALESCE(s_src.name, '') AS source_name,
|
|
232
|
+
f_src.path AS source_file_path,
|
|
267
233
|
f_src.branch AS source_branch,
|
|
268
234
|
tr.type_id AS target_id,
|
|
269
235
|
COALESCE(s_dst.name, tr.type_name) AS target_name,
|
|
236
|
+
tr.definition_path AS target_file_path,
|
|
270
237
|
tr.ref_kind AS ref_kind,
|
|
271
238
|
tr.ref_line + 1 AS line,
|
|
272
239
|
CASE
|
|
@@ -287,22 +254,6 @@ function getStructuralEdges(db, args, limit) {
|
|
|
287
254
|
return edges;
|
|
288
255
|
}
|
|
289
256
|
}
|
|
290
|
-
function getSemanticModuleMappings(db, symbolIds) {
|
|
291
|
-
if (symbolIds.length === 0) {
|
|
292
|
-
return [];
|
|
293
|
-
}
|
|
294
|
-
const placeholders = symbolIds.map(() => '?').join(', ');
|
|
295
|
-
return db.prepare(`SELECT s.id AS symbol_id,
|
|
296
|
-
m.id AS module_id,
|
|
297
|
-
m.name AS module_name,
|
|
298
|
-
m.kind AS module_kind,
|
|
299
|
-
f.branch AS source_branch
|
|
300
|
-
FROM symbols s
|
|
301
|
-
JOIN files f ON f.id = s.file_id
|
|
302
|
-
JOIN file_modules fm ON fm.file_id = f.id
|
|
303
|
-
JOIN modules m ON m.id = fm.module_id
|
|
304
|
-
WHERE s.id IN (${placeholders})`).all(...symbolIds);
|
|
305
|
-
}
|
|
306
257
|
function compactEdge(edge) {
|
|
307
258
|
const compact = {
|
|
308
259
|
source_id: edge.source_id,
|
|
@@ -311,6 +262,10 @@ function compactEdge(edge) {
|
|
|
311
262
|
target_id: edge.target_id,
|
|
312
263
|
target_name: edge.target_name,
|
|
313
264
|
};
|
|
265
|
+
if (edge.source_file_path != null)
|
|
266
|
+
compact.source_file_path = edge.source_file_path;
|
|
267
|
+
if (edge.target_file_path != null)
|
|
268
|
+
compact.target_file_path = edge.target_file_path;
|
|
314
269
|
if (edge.callee_coverage_percent !== undefined)
|
|
315
270
|
compact.callee_coverage_percent = edge.callee_coverage_percent;
|
|
316
271
|
if (edge.ref_kind !== undefined)
|
|
@@ -425,34 +380,9 @@ function finishResult(db, args, edges, limit, compact, depth) {
|
|
|
425
380
|
kind: row.kind,
|
|
426
381
|
file_path: row.file_path,
|
|
427
382
|
}));
|
|
428
|
-
const scoreBySymbolId = new Map(filteredSymbols.map((row) => [row.id, row.score]));
|
|
429
|
-
const moduleNodesByKey = new Map();
|
|
430
|
-
const moduleMappings = getSemanticModuleMappings(db, Array.from(scoreBySymbolId.keys()));
|
|
431
|
-
for (const mapping of moduleMappings) {
|
|
432
|
-
const symbolScore = scoreBySymbolId.get(mapping.symbol_id);
|
|
433
|
-
if (symbolScore === undefined) {
|
|
434
|
-
continue;
|
|
435
|
-
}
|
|
436
|
-
const moduleKey = `${mapping.module_id}:${mapping.source_branch}`;
|
|
437
|
-
const existing = moduleNodesByKey.get(moduleKey);
|
|
438
|
-
if (!existing || symbolScore < existing.score) {
|
|
439
|
-
moduleNodesByKey.set(moduleKey, {
|
|
440
|
-
node_type: 'module',
|
|
441
|
-
id: mapping.module_id,
|
|
442
|
-
name: mapping.module_name,
|
|
443
|
-
branch: mapping.source_branch,
|
|
444
|
-
score: symbolScore,
|
|
445
|
-
kind: mapping.module_kind,
|
|
446
|
-
});
|
|
447
|
-
}
|
|
448
|
-
}
|
|
449
|
-
const moduleNodes = Array.from(moduleNodesByKey.values()).sort((a, b) => a.score - b.score
|
|
450
|
-
|| a.branch.localeCompare(b.branch)
|
|
451
|
-
|| a.name.localeCompare(b.name)
|
|
452
|
-
|| a.id - b.id);
|
|
453
383
|
return {
|
|
454
384
|
edges: finalEdges,
|
|
455
|
-
semantic_nodes:
|
|
385
|
+
semantic_nodes: symbolNodes,
|
|
456
386
|
mode_used: 'semantic',
|
|
457
387
|
depth_used: depth,
|
|
458
388
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"graph.js","sourceRoot":"","sources":["../../../src/server/tools/graph.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"graph.js","sourceRoot":"","sources":["../../../src/server/tools/graph.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @module lore-server/tools/metrics
|
|
3
3
|
*
|
|
4
|
-
* MCP tool: return
|
|
4
|
+
* MCP tool: return a global ranking of the most complex symbols in the codebase.
|
|
5
5
|
*/
|
|
6
6
|
import type { Database } from '../../db/read-only.js';
|
|
7
7
|
export declare const toolDef: {
|
|
@@ -10,46 +10,22 @@ export declare const toolDef: {
|
|
|
10
10
|
readonly inputSchema: {
|
|
11
11
|
readonly type: "object";
|
|
12
12
|
readonly properties: {
|
|
13
|
-
readonly mode: {
|
|
14
|
-
readonly type: "string";
|
|
15
|
-
readonly enum: readonly ["aggregate", "complexity"];
|
|
16
|
-
readonly description: "Metrics mode: aggregate counts (default) or complexity-ranked symbols.";
|
|
17
|
-
};
|
|
18
13
|
readonly limit: {
|
|
19
14
|
readonly type: "number";
|
|
20
|
-
readonly description: "Max symbols
|
|
15
|
+
readonly description: "Max symbols to return (default 20, max 200).";
|
|
21
16
|
};
|
|
22
17
|
readonly min_cyclomatic: {
|
|
23
18
|
readonly type: "number";
|
|
24
|
-
readonly description: "Minimum cyclomatic score filter
|
|
19
|
+
readonly description: "Minimum cyclomatic score filter (default 0).";
|
|
25
20
|
};
|
|
26
21
|
};
|
|
27
22
|
readonly required: readonly [];
|
|
28
23
|
};
|
|
29
24
|
};
|
|
30
25
|
export interface MetricsArgs {
|
|
31
|
-
mode?: 'aggregate' | 'complexity';
|
|
32
26
|
limit?: number;
|
|
33
27
|
min_cyclomatic?: number;
|
|
34
28
|
}
|
|
35
|
-
export interface AggregateMetricsResult {
|
|
36
|
-
symbol_count: number;
|
|
37
|
-
file_count: number;
|
|
38
|
-
import_edge_count: number;
|
|
39
|
-
coverage_available: boolean;
|
|
40
|
-
coverage_commit: string | null;
|
|
41
|
-
current_commit: string | null;
|
|
42
|
-
commits_behind: number;
|
|
43
|
-
stale: boolean;
|
|
44
|
-
global_lines_found: number | null;
|
|
45
|
-
global_lines_hit: number | null;
|
|
46
|
-
global_coverage_percent: number | null;
|
|
47
|
-
per_branch: Array<{
|
|
48
|
-
branch: string;
|
|
49
|
-
file_count: number;
|
|
50
|
-
symbol_count: number;
|
|
51
|
-
}>;
|
|
52
|
-
}
|
|
53
29
|
export interface ComplexitySymbolRow {
|
|
54
30
|
id: number;
|
|
55
31
|
file_id: number;
|
|
@@ -64,10 +40,9 @@ export interface ComplexitySymbolRow {
|
|
|
64
40
|
cyclomatic: number;
|
|
65
41
|
max_nesting: number;
|
|
66
42
|
}
|
|
67
|
-
export interface
|
|
43
|
+
export interface MetricsResult {
|
|
68
44
|
symbols: ComplexitySymbolRow[];
|
|
69
45
|
}
|
|
70
|
-
|
|
71
|
-
/** Collect aggregate counts from the knowledge-base tables. */
|
|
46
|
+
/** Return symbols ranked by cyclomatic complexity. */
|
|
72
47
|
export declare function handler(db: Database.Database, args: MetricsArgs): MetricsResult;
|
|
73
48
|
//# sourceMappingURL=metrics.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"metrics.d.ts","sourceRoot":"","sources":["../../../src/server/tools/metrics.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"metrics.d.ts","sourceRoot":"","sources":["../../../src/server/tools/metrics.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAItD,eAAO,MAAM,OAAO;;;;;;;;;;;;;;;;;CAmBV,CAAC;AAIX,MAAM,WAAW,WAAW;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,mBAAmB,EAAE,CAAC;CAChC;AAED,sDAAsD;AACtD,wBAAgB,OAAO,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,IAAI,EAAE,WAAW,GAAG,aAAa,CAmB/E"}
|
|
@@ -1,80 +1,44 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @module lore-server/tools/metrics
|
|
3
3
|
*
|
|
4
|
-
* MCP tool: return
|
|
4
|
+
* MCP tool: return a global ranking of the most complex symbols in the codebase.
|
|
5
5
|
*/
|
|
6
|
-
import { getCoverageStaleness, getLatestCoverageTotals } from '../../db/read-only.js';
|
|
7
6
|
// ─── Tool definition ──────────────────────────────────────────────────────────
|
|
8
7
|
export const toolDef = {
|
|
9
8
|
name: 'lore_metrics',
|
|
10
|
-
description: 'Return
|
|
11
|
-
'
|
|
9
|
+
description: 'Return a global ranking of the most complex symbols across the entire codebase, ' +
|
|
10
|
+
'ranked by cyclomatic complexity. Use limit and min_cyclomatic to filter.',
|
|
12
11
|
inputSchema: {
|
|
13
12
|
type: 'object',
|
|
14
13
|
properties: {
|
|
15
|
-
mode: {
|
|
16
|
-
type: 'string',
|
|
17
|
-
enum: ['aggregate', 'complexity'],
|
|
18
|
-
description: 'Metrics mode: aggregate counts (default) or complexity-ranked symbols.',
|
|
19
|
-
},
|
|
20
14
|
limit: {
|
|
21
15
|
type: 'number',
|
|
22
|
-
description: 'Max symbols
|
|
16
|
+
description: 'Max symbols to return (default 20, max 200).',
|
|
23
17
|
},
|
|
24
18
|
min_cyclomatic: {
|
|
25
19
|
type: 'number',
|
|
26
|
-
description: 'Minimum cyclomatic score filter
|
|
20
|
+
description: 'Minimum cyclomatic score filter (default 0).',
|
|
27
21
|
},
|
|
28
22
|
},
|
|
29
23
|
required: [],
|
|
30
24
|
},
|
|
31
25
|
};
|
|
32
|
-
/**
|
|
26
|
+
/** Return symbols ranked by cyclomatic complexity. */
|
|
33
27
|
export function handler(db, args) {
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
return { symbols };
|
|
50
|
-
}
|
|
51
|
-
const symbolCount = db.prepare('SELECT COUNT(*) AS c FROM symbols').get().c;
|
|
52
|
-
const fileCount = db.prepare('SELECT COUNT(*) AS c FROM files').get().c;
|
|
53
|
-
const importEdgeCount = db.prepare('SELECT COUNT(*) AS c FROM file_imports').get().c;
|
|
54
|
-
const perBranch = db
|
|
55
|
-
.prepare(`SELECT f.branch,
|
|
56
|
-
COUNT(DISTINCT f.id) AS file_count,
|
|
57
|
-
COUNT(DISTINCT s.id) AS symbol_count
|
|
58
|
-
FROM files f
|
|
59
|
-
LEFT JOIN symbols s ON s.file_id = f.id
|
|
60
|
-
GROUP BY f.branch
|
|
61
|
-
ORDER BY f.branch`)
|
|
62
|
-
.all();
|
|
63
|
-
const coverageTotals = getLatestCoverageTotals(db);
|
|
64
|
-
const staleness = getCoverageStaleness(db);
|
|
65
|
-
return {
|
|
66
|
-
symbol_count: symbolCount,
|
|
67
|
-
file_count: fileCount,
|
|
68
|
-
import_edge_count: importEdgeCount,
|
|
69
|
-
coverage_available: coverageTotals !== undefined,
|
|
70
|
-
coverage_commit: staleness.coverage_commit,
|
|
71
|
-
current_commit: staleness.current_commit,
|
|
72
|
-
commits_behind: staleness.commits_behind,
|
|
73
|
-
stale: staleness.stale,
|
|
74
|
-
global_lines_found: coverageTotals?.lines_found ?? null,
|
|
75
|
-
global_lines_hit: coverageTotals?.lines_hit ?? null,
|
|
76
|
-
global_coverage_percent: coverageTotals?.coverage_percent ?? null,
|
|
77
|
-
per_branch: perBranch,
|
|
78
|
-
};
|
|
28
|
+
const minCyclomatic = Math.max(0, args.min_cyclomatic ?? 0);
|
|
29
|
+
const limit = Math.min(Math.max(1, args.limit ?? 20), 200);
|
|
30
|
+
const symbols = db
|
|
31
|
+
.prepare(`SELECT s.*,
|
|
32
|
+
sm.line_count,
|
|
33
|
+
sm.param_count,
|
|
34
|
+
sm.cyclomatic,
|
|
35
|
+
sm.max_nesting
|
|
36
|
+
FROM symbol_metrics sm
|
|
37
|
+
JOIN symbols s ON s.id = sm.symbol_id
|
|
38
|
+
WHERE sm.cyclomatic >= ?
|
|
39
|
+
ORDER BY sm.cyclomatic DESC, s.id ASC
|
|
40
|
+
LIMIT ?`)
|
|
41
|
+
.all(minCyclomatic, limit);
|
|
42
|
+
return { symbols };
|
|
79
43
|
}
|
|
80
44
|
//# sourceMappingURL=metrics.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"metrics.js","sourceRoot":"","sources":["../../../src/server/tools/metrics.ts"],"names":[],"mappings":"AAAA;;;;GAIG;
|
|
1
|
+
{"version":3,"file":"metrics.js","sourceRoot":"","sources":["../../../src/server/tools/metrics.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,iFAAiF;AAEjF,MAAM,CAAC,MAAM,OAAO,GAAG;IACrB,IAAI,EAAE,cAAc;IACpB,WAAW,EACT,kFAAkF;QAClF,0EAA0E;IAC5E,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,KAAK,EAAE;gBACL,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,8CAA8C;aAC5D;YACD,cAAc,EAAE;gBACd,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,8CAA8C;aAC5D;SACF;QACD,QAAQ,EAAE,EAAE;KACb;CACO,CAAC;AA4BX,sDAAsD;AACtD,MAAM,UAAU,OAAO,CAAC,EAAqB,EAAE,IAAiB;IAC9D,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,cAAc,IAAI,CAAC,CAAC,CAAC;IAC5D,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;IAC3D,MAAM,OAAO,GAAG,EAAE;SACf,OAAO,CACN;;;;;;;;;gBASU,CACX;SACA,GAAG,CAAC,aAAa,EAAE,KAAK,CAA0B,CAAC;IAEtD,OAAO,EAAE,OAAO,EAAE,CAAC;AACrB,CAAC"}
|