@blamechris/repo-memory 0.5.0 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/config.d.ts +6 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +15 -0
- package/dist/config.js.map +1 -1
- package/dist/server.js +239 -215
- package/dist/server.js.map +1 -1
- package/package.json +1 -1
package/dist/config.d.ts
CHANGED
|
@@ -1,3 +1,8 @@
|
|
|
1
|
+
export interface ToolGroupConfig {
|
|
2
|
+
summaries?: boolean;
|
|
3
|
+
tasks?: boolean;
|
|
4
|
+
telemetry?: boolean;
|
|
5
|
+
}
|
|
1
6
|
export interface RepoMemoryConfig {
|
|
2
7
|
ignore?: string[];
|
|
3
8
|
maxFiles?: number;
|
|
@@ -6,6 +11,7 @@ export interface RepoMemoryConfig {
|
|
|
6
11
|
taskMaxAgeDays?: number;
|
|
7
12
|
telemetryMaxAgeDays?: number;
|
|
8
13
|
};
|
|
14
|
+
tools?: ToolGroupConfig;
|
|
9
15
|
}
|
|
10
16
|
export declare function loadConfig(projectRoot: string): RepoMemoryConfig;
|
|
11
17
|
export declare function clearConfigCache(): void;
|
package/dist/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,gBAAgB;IAC/B,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,EAAE,CAAC,EAAE;QACH,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,mBAAmB,CAAC,EAAE,MAAM,CAAC;KAC9B,CAAC;
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,eAAe;IAC9B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,EAAE,CAAC,EAAE;QACH,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,mBAAmB,CAAC,EAAE,MAAM,CAAC;KAC9B,CAAC;IACF,KAAK,CAAC,EAAE,eAAe,CAAC;CACzB;AAID,wBAAgB,UAAU,CAAC,WAAW,EAAE,MAAM,GAAG,gBAAgB,CAqBhE;AA6DD,wBAAgB,gBAAgB,IAAI,IAAI,CAEvC"}
|
package/dist/config.js
CHANGED
|
@@ -54,6 +54,21 @@ function validateConfig(raw) {
|
|
|
54
54
|
}
|
|
55
55
|
}
|
|
56
56
|
}
|
|
57
|
+
if ('tools' in obj) {
|
|
58
|
+
if (typeof obj.tools !== 'object' || obj.tools === null || Array.isArray(obj.tools)) {
|
|
59
|
+
throw new Error('"tools" must be an object');
|
|
60
|
+
}
|
|
61
|
+
const tools = obj.tools;
|
|
62
|
+
config.tools = {};
|
|
63
|
+
for (const key of ['summaries', 'tasks', 'telemetry']) {
|
|
64
|
+
if (key in tools) {
|
|
65
|
+
if (typeof tools[key] !== 'boolean') {
|
|
66
|
+
throw new Error(`"tools.${key}" must be a boolean`);
|
|
67
|
+
}
|
|
68
|
+
config.tools[key] = tools[key];
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
}
|
|
57
72
|
return config;
|
|
58
73
|
}
|
|
59
74
|
export function clearConfigCache() {
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAC9C,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAE5B,MAAM,eAAe,GAAG,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
package/dist/server.js
CHANGED
|
@@ -18,230 +18,256 @@ import { SessionManager } from './memory/session.js';
|
|
|
18
18
|
import { loadConfig } from './config.js';
|
|
19
19
|
const server = new McpServer({
|
|
20
20
|
name: 'repo-memory',
|
|
21
|
-
version: '0.
|
|
21
|
+
version: '0.6.0',
|
|
22
22
|
});
|
|
23
|
-
server
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
23
|
+
function registerTools(server, config) {
|
|
24
|
+
// === NAVIGATION GROUP (always on) ===
|
|
25
|
+
server.registerTool('get_project_map', {
|
|
26
|
+
title: 'Get Project Map',
|
|
27
|
+
description: 'Returns a structural overview of the project including directory tree, entry points, and key modules.',
|
|
28
|
+
inputSchema: {
|
|
29
|
+
project_root: z.string().describe('Absolute path to the project root'),
|
|
30
|
+
depth: z.number().optional().describe('Max directory depth to include'),
|
|
31
|
+
},
|
|
32
|
+
}, async ({ project_root, depth }) => {
|
|
33
|
+
const projectMap = await getProjectMap(project_root, depth);
|
|
34
|
+
return {
|
|
35
|
+
content: [{ type: 'text', text: JSON.stringify(projectMap) }],
|
|
36
|
+
};
|
|
37
|
+
});
|
|
38
|
+
server.registerTool('get_related_files', {
|
|
39
|
+
title: 'Get Related Files',
|
|
40
|
+
description: 'Returns files related to the given file, ranked by dependency proximity and relevance. Useful for finding what else to look at when exploring a file.',
|
|
41
|
+
inputSchema: {
|
|
42
|
+
path: z.string().describe('File path relative to project root'),
|
|
43
|
+
limit: z.number().optional().describe('Max results (default: 10)'),
|
|
44
|
+
task_id: z.string().optional().describe('Task ID for context-aware ranking'),
|
|
45
|
+
},
|
|
46
|
+
}, async ({ path, limit, task_id }) => {
|
|
31
47
|
const projectRoot = process.cwd();
|
|
32
|
-
const result = await
|
|
48
|
+
const result = await getRelatedFiles(projectRoot, path, { limit, taskId: task_id });
|
|
33
49
|
return {
|
|
34
50
|
content: [{ type: 'text', text: JSON.stringify(result) }],
|
|
35
51
|
};
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
52
|
+
});
|
|
53
|
+
server.registerTool('get_dependency_graph', {
|
|
54
|
+
title: 'Get Dependency Graph',
|
|
55
|
+
description: 'Returns dependency graph information. If a path is given, returns its dependencies/dependents. If no path, returns a summary of the most connected files.',
|
|
56
|
+
inputSchema: {
|
|
57
|
+
path: z.string().optional().describe('File path to query, or omit for full graph summary'),
|
|
58
|
+
direction: z
|
|
59
|
+
.enum(['dependencies', 'dependents', 'both'])
|
|
60
|
+
.optional()
|
|
61
|
+
.describe('Query direction (default: both)'),
|
|
62
|
+
depth: z.number().optional().describe('Max traversal depth'),
|
|
63
|
+
symbol: z.string().optional().describe('Filter edges by import specifier (e.g., "UserService")'),
|
|
64
|
+
},
|
|
65
|
+
}, async ({ path, direction, depth, symbol }) => {
|
|
66
|
+
const projectRoot = process.cwd();
|
|
67
|
+
const result = await getDependencyGraphTool(projectRoot, path, direction, depth, symbol);
|
|
68
|
+
return {
|
|
69
|
+
content: [{ type: 'text', text: JSON.stringify(result) }],
|
|
70
|
+
};
|
|
71
|
+
});
|
|
72
|
+
server.registerTool('get_changed_files', {
|
|
73
|
+
title: 'Get Changed Files',
|
|
74
|
+
description: 'Returns files that have changed since the last check. Compares current file hashes against cached hashes.',
|
|
75
|
+
inputSchema: {
|
|
76
|
+
since: z.string().optional().describe('ISO timestamp or "last_check"'),
|
|
77
|
+
},
|
|
78
|
+
}, async ({ since }) => {
|
|
79
|
+
const projectRoot = process.cwd();
|
|
80
|
+
const result = await getChangedFiles(projectRoot, since);
|
|
40
81
|
return {
|
|
41
|
-
content: [
|
|
42
|
-
{
|
|
43
|
-
type: 'text',
|
|
44
|
-
text: JSON.stringify({
|
|
45
|
-
error: isNotFound ? 'file_not_found' : 'internal_error',
|
|
46
|
-
message,
|
|
47
|
-
path,
|
|
48
|
-
}),
|
|
49
|
-
},
|
|
50
|
-
],
|
|
51
|
-
isError: true,
|
|
82
|
+
content: [{ type: 'text', text: JSON.stringify(result) }],
|
|
52
83
|
};
|
|
84
|
+
});
|
|
85
|
+
// === SUMMARIES GROUP (off by default) ===
|
|
86
|
+
if (config.tools?.summaries) {
|
|
87
|
+
server.registerTool('get_file_summary', {
|
|
88
|
+
title: 'Get File Summary',
|
|
89
|
+
description: 'Returns a cached summary of a file. If the file has not changed since last read, returns the cached summary without re-reading. Use this instead of reading files directly to save tokens.',
|
|
90
|
+
inputSchema: {
|
|
91
|
+
path: z.string().describe('File path relative to project root'),
|
|
92
|
+
},
|
|
93
|
+
}, async ({ path }) => {
|
|
94
|
+
try {
|
|
95
|
+
const projectRoot = process.cwd();
|
|
96
|
+
const result = await getFileSummary(projectRoot, path);
|
|
97
|
+
return {
|
|
98
|
+
content: [{ type: 'text', text: JSON.stringify(result) }],
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
catch (error) {
|
|
102
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
103
|
+
const isNotFound = error instanceof Error && 'code' in error && error.code === 'ENOENT';
|
|
104
|
+
return {
|
|
105
|
+
content: [
|
|
106
|
+
{
|
|
107
|
+
type: 'text',
|
|
108
|
+
text: JSON.stringify({
|
|
109
|
+
error: isNotFound ? 'file_not_found' : 'internal_error',
|
|
110
|
+
message,
|
|
111
|
+
path,
|
|
112
|
+
}),
|
|
113
|
+
},
|
|
114
|
+
],
|
|
115
|
+
isError: true,
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
});
|
|
119
|
+
server.registerTool('batch_file_summaries', {
|
|
120
|
+
title: 'Batch File Summaries',
|
|
121
|
+
description: 'Get cached summaries for multiple files in one call. More efficient than calling get_file_summary repeatedly.',
|
|
122
|
+
inputSchema: {
|
|
123
|
+
paths: z.array(z.string()).describe('Array of file paths relative to project root'),
|
|
124
|
+
},
|
|
125
|
+
}, async ({ paths }) => {
|
|
126
|
+
const projectRoot = process.cwd();
|
|
127
|
+
const result = await batchFileSummaries(projectRoot, paths);
|
|
128
|
+
return {
|
|
129
|
+
content: [{ type: 'text', text: JSON.stringify(result) }],
|
|
130
|
+
};
|
|
131
|
+
});
|
|
132
|
+
server.registerTool('force_reread', {
|
|
133
|
+
title: 'Force Re-read',
|
|
134
|
+
description: 'Re-reads a file from disk, generates a fresh summary, and updates the cache. Use when you know a file has changed or want guaranteed-fresh data.',
|
|
135
|
+
inputSchema: {
|
|
136
|
+
path: z.string().describe('File path relative to project root'),
|
|
137
|
+
},
|
|
138
|
+
}, async ({ path }) => {
|
|
139
|
+
const projectRoot = process.cwd();
|
|
140
|
+
const result = await forceReread(projectRoot, path);
|
|
141
|
+
return {
|
|
142
|
+
content: [{ type: 'text', text: JSON.stringify(result) }],
|
|
143
|
+
};
|
|
144
|
+
});
|
|
145
|
+
server.registerTool('search_by_purpose', {
|
|
146
|
+
title: 'Search By Purpose',
|
|
147
|
+
description: 'Search cached file summaries by keyword. Matches against file purpose, exports, and declarations. Requires files to have been previously summarized.',
|
|
148
|
+
inputSchema: {
|
|
149
|
+
query: z.string().describe('Search keywords (e.g., "database", "auth middleware", "validation")'),
|
|
150
|
+
limit: z.number().optional().describe('Max results (default: 20)'),
|
|
151
|
+
},
|
|
152
|
+
}, async ({ query, limit }) => {
|
|
153
|
+
const projectRoot = process.cwd();
|
|
154
|
+
const result = searchByPurpose(projectRoot, query, limit);
|
|
155
|
+
return {
|
|
156
|
+
content: [{ type: 'text', text: JSON.stringify(result) }],
|
|
157
|
+
};
|
|
158
|
+
});
|
|
159
|
+
server.registerTool('invalidate', {
|
|
160
|
+
title: 'Invalidate Cache',
|
|
161
|
+
description: 'Invalidates cached entries. If a path is provided, only that entry is removed. If no path is provided, all entries are removed.',
|
|
162
|
+
inputSchema: {
|
|
163
|
+
path: z.string().optional().describe('File path to invalidate, or omit to invalidate all'),
|
|
164
|
+
},
|
|
165
|
+
}, async ({ path }) => {
|
|
166
|
+
const projectRoot = process.cwd();
|
|
167
|
+
const result = await invalidateCache(projectRoot, path);
|
|
168
|
+
return {
|
|
169
|
+
content: [{ type: 'text', text: JSON.stringify(result) }],
|
|
170
|
+
};
|
|
171
|
+
});
|
|
53
172
|
}
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
},
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
}, async ({
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
})
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
}
|
|
133
|
-
|
|
134
|
-
const task = createTaskTool(projectRoot, name);
|
|
135
|
-
return {
|
|
136
|
-
content: [{ type: 'text', text: JSON.stringify(task) }],
|
|
137
|
-
};
|
|
138
|
-
});
|
|
139
|
-
server.registerTool('get_task_context', {
|
|
140
|
-
title: 'Get Task Context',
|
|
141
|
-
description: 'Returns task state, explored files, and frontier. If no task_id, returns list of all tasks.',
|
|
142
|
-
inputSchema: {
|
|
143
|
-
task_id: z.string().optional().describe('Task ID to query, or omit to list all tasks'),
|
|
144
|
-
},
|
|
145
|
-
}, async ({ task_id }) => {
|
|
146
|
-
const projectRoot = process.cwd();
|
|
147
|
-
const result = getTaskContext(projectRoot, task_id);
|
|
148
|
-
return {
|
|
149
|
-
content: [{ type: 'text', text: JSON.stringify(result) }],
|
|
150
|
-
};
|
|
151
|
-
});
|
|
152
|
-
server.registerTool('mark_explored', {
|
|
153
|
-
title: 'Mark Explored',
|
|
154
|
-
description: 'Marks a file as explored for a task, with optional status and notes.',
|
|
155
|
-
inputSchema: {
|
|
156
|
-
task_id: z.string().describe('Task ID'),
|
|
157
|
-
path: z.string().describe('File path relative to project root'),
|
|
158
|
-
status: z
|
|
159
|
-
.enum(['explored', 'skipped', 'flagged'])
|
|
160
|
-
.optional()
|
|
161
|
-
.describe('Exploration status (default: explored)'),
|
|
162
|
-
notes: z.string().optional().describe('Optional notes about the file'),
|
|
163
|
-
},
|
|
164
|
-
}, async ({ task_id, path, status, notes }) => {
|
|
165
|
-
const projectRoot = process.cwd();
|
|
166
|
-
const result = markExploredTool(projectRoot, task_id, path, status, notes);
|
|
167
|
-
return {
|
|
168
|
-
content: [{ type: 'text', text: JSON.stringify(result) }],
|
|
169
|
-
};
|
|
170
|
-
});
|
|
171
|
-
server.registerTool('get_token_report', {
|
|
172
|
-
title: 'Get Token Report',
|
|
173
|
-
description: 'Get aggregated token usage telemetry report showing cache efficiency and token savings',
|
|
174
|
-
inputSchema: {
|
|
175
|
-
period: z
|
|
176
|
-
.enum(['session', 'all', 'last_n_hours'])
|
|
177
|
-
.optional()
|
|
178
|
-
.describe('Time period for the report'),
|
|
179
|
-
hours: z
|
|
180
|
-
.number()
|
|
181
|
-
.optional()
|
|
182
|
-
.describe('Number of hours to look back (only for last_n_hours period)'),
|
|
183
|
-
session_id: z
|
|
184
|
-
.string()
|
|
185
|
-
.optional()
|
|
186
|
-
.describe('Session ID (only for session period)'),
|
|
187
|
-
include_diagnostics: z
|
|
188
|
-
.boolean()
|
|
189
|
-
.optional()
|
|
190
|
-
.describe('Include cache health diagnostics'),
|
|
191
|
-
},
|
|
192
|
-
}, async ({ period, hours, session_id, include_diagnostics }) => {
|
|
193
|
-
const projectRoot = process.cwd();
|
|
194
|
-
const report = getTokenReport(projectRoot, period, hours, session_id, include_diagnostics);
|
|
195
|
-
return {
|
|
196
|
-
content: [{ type: 'text', text: JSON.stringify(report, null, 2) }],
|
|
197
|
-
};
|
|
198
|
-
});
|
|
199
|
-
server.registerTool('batch_file_summaries', {
|
|
200
|
-
title: 'Batch File Summaries',
|
|
201
|
-
description: 'Get cached summaries for multiple files in one call. More efficient than calling get_file_summary repeatedly.',
|
|
202
|
-
inputSchema: {
|
|
203
|
-
paths: z.array(z.string()).describe('Array of file paths relative to project root'),
|
|
204
|
-
},
|
|
205
|
-
}, async ({ paths }) => {
|
|
206
|
-
const projectRoot = process.cwd();
|
|
207
|
-
const result = await batchFileSummaries(projectRoot, paths);
|
|
208
|
-
return {
|
|
209
|
-
content: [{ type: 'text', text: JSON.stringify(result) }],
|
|
210
|
-
};
|
|
211
|
-
});
|
|
212
|
-
server.registerTool('get_related_files', {
|
|
213
|
-
title: 'Get Related Files',
|
|
214
|
-
description: 'Returns files related to the given file, ranked by dependency proximity and relevance. Useful for finding what else to look at when exploring a file.',
|
|
215
|
-
inputSchema: {
|
|
216
|
-
path: z.string().describe('File path relative to project root'),
|
|
217
|
-
limit: z.number().optional().describe('Max results (default: 10)'),
|
|
218
|
-
task_id: z.string().optional().describe('Task ID for context-aware ranking'),
|
|
219
|
-
},
|
|
220
|
-
}, async ({ path, limit, task_id }) => {
|
|
221
|
-
const projectRoot = process.cwd();
|
|
222
|
-
const result = await getRelatedFiles(projectRoot, path, { limit, taskId: task_id });
|
|
223
|
-
return {
|
|
224
|
-
content: [{ type: 'text', text: JSON.stringify(result) }],
|
|
225
|
-
};
|
|
226
|
-
});
|
|
227
|
-
server.registerTool('search_by_purpose', {
|
|
228
|
-
title: 'Search By Purpose',
|
|
229
|
-
description: 'Search cached file summaries by keyword. Matches against file purpose, exports, and declarations. Requires files to have been previously summarized.',
|
|
230
|
-
inputSchema: {
|
|
231
|
-
query: z.string().describe('Search keywords (e.g., "database", "auth middleware", "validation")'),
|
|
232
|
-
limit: z.number().optional().describe('Max results (default: 20)'),
|
|
233
|
-
},
|
|
234
|
-
}, async ({ query, limit }) => {
|
|
235
|
-
const projectRoot = process.cwd();
|
|
236
|
-
const result = searchByPurpose(projectRoot, query, limit);
|
|
237
|
-
return {
|
|
238
|
-
content: [{ type: 'text', text: JSON.stringify(result) }],
|
|
239
|
-
};
|
|
240
|
-
});
|
|
173
|
+
// === TASKS GROUP (off by default) ===
|
|
174
|
+
if (config.tools?.tasks) {
|
|
175
|
+
server.registerTool('create_task', {
|
|
176
|
+
title: 'Create Task',
|
|
177
|
+
description: 'Creates a new investigation task for tracking file exploration.',
|
|
178
|
+
inputSchema: {
|
|
179
|
+
name: z.string().describe('Human-readable task name'),
|
|
180
|
+
},
|
|
181
|
+
}, async ({ name }) => {
|
|
182
|
+
const projectRoot = process.cwd();
|
|
183
|
+
const task = createTaskTool(projectRoot, name);
|
|
184
|
+
return {
|
|
185
|
+
content: [{ type: 'text', text: JSON.stringify(task) }],
|
|
186
|
+
};
|
|
187
|
+
});
|
|
188
|
+
server.registerTool('get_task_context', {
|
|
189
|
+
title: 'Get Task Context',
|
|
190
|
+
description: 'Returns task state, explored files, and frontier. If no task_id, returns list of all tasks.',
|
|
191
|
+
inputSchema: {
|
|
192
|
+
task_id: z.string().optional().describe('Task ID to query, or omit to list all tasks'),
|
|
193
|
+
},
|
|
194
|
+
}, async ({ task_id }) => {
|
|
195
|
+
const projectRoot = process.cwd();
|
|
196
|
+
const result = getTaskContext(projectRoot, task_id);
|
|
197
|
+
return {
|
|
198
|
+
content: [{ type: 'text', text: JSON.stringify(result) }],
|
|
199
|
+
};
|
|
200
|
+
});
|
|
201
|
+
server.registerTool('mark_explored', {
|
|
202
|
+
title: 'Mark Explored',
|
|
203
|
+
description: 'Marks a file as explored for a task, with optional status and notes.',
|
|
204
|
+
inputSchema: {
|
|
205
|
+
task_id: z.string().describe('Task ID'),
|
|
206
|
+
path: z.string().describe('File path relative to project root'),
|
|
207
|
+
status: z
|
|
208
|
+
.enum(['explored', 'skipped', 'flagged'])
|
|
209
|
+
.optional()
|
|
210
|
+
.describe('Exploration status (default: explored)'),
|
|
211
|
+
notes: z.string().optional().describe('Optional notes about the file'),
|
|
212
|
+
},
|
|
213
|
+
}, async ({ task_id, path, status, notes }) => {
|
|
214
|
+
const projectRoot = process.cwd();
|
|
215
|
+
const result = markExploredTool(projectRoot, task_id, path, status, notes);
|
|
216
|
+
return {
|
|
217
|
+
content: [{ type: 'text', text: JSON.stringify(result) }],
|
|
218
|
+
};
|
|
219
|
+
});
|
|
220
|
+
}
|
|
221
|
+
// === TELEMETRY GROUP (off by default) ===
|
|
222
|
+
if (config.tools?.telemetry) {
|
|
223
|
+
server.registerTool('get_token_report', {
|
|
224
|
+
title: 'Get Token Report',
|
|
225
|
+
description: 'Get aggregated token usage telemetry report showing cache efficiency and token savings',
|
|
226
|
+
inputSchema: {
|
|
227
|
+
period: z
|
|
228
|
+
.enum(['session', 'all', 'last_n_hours'])
|
|
229
|
+
.optional()
|
|
230
|
+
.describe('Time period for the report'),
|
|
231
|
+
hours: z
|
|
232
|
+
.number()
|
|
233
|
+
.optional()
|
|
234
|
+
.describe('Number of hours to look back (only for last_n_hours period)'),
|
|
235
|
+
session_id: z
|
|
236
|
+
.string()
|
|
237
|
+
.optional()
|
|
238
|
+
.describe('Session ID (only for session period)'),
|
|
239
|
+
include_diagnostics: z
|
|
240
|
+
.boolean()
|
|
241
|
+
.optional()
|
|
242
|
+
.describe('Include cache health diagnostics'),
|
|
243
|
+
},
|
|
244
|
+
}, async ({ period, hours, session_id, include_diagnostics }) => {
|
|
245
|
+
const projectRoot = process.cwd();
|
|
246
|
+
const report = getTokenReport(projectRoot, period, hours, session_id, include_diagnostics);
|
|
247
|
+
return {
|
|
248
|
+
content: [{ type: 'text', text: JSON.stringify(report, null, 2) }],
|
|
249
|
+
};
|
|
250
|
+
});
|
|
251
|
+
}
|
|
252
|
+
}
|
|
241
253
|
async function main() {
|
|
254
|
+
const projectRoot = process.cwd();
|
|
255
|
+
// Load config before tool registration
|
|
256
|
+
const config = loadConfig(projectRoot);
|
|
257
|
+
// Register tools based on config
|
|
258
|
+
registerTools(server, config);
|
|
259
|
+
// Connect transport
|
|
242
260
|
const transport = new StdioServerTransport();
|
|
243
261
|
await server.connect(transport);
|
|
244
|
-
|
|
262
|
+
// Log enabled tool groups
|
|
263
|
+
const enabledGroups = ['navigation'];
|
|
264
|
+
if (config.tools?.summaries)
|
|
265
|
+
enabledGroups.push('summaries');
|
|
266
|
+
if (config.tools?.tasks)
|
|
267
|
+
enabledGroups.push('tasks');
|
|
268
|
+
if (config.tools?.telemetry)
|
|
269
|
+
enabledGroups.push('telemetry');
|
|
270
|
+
process.stderr.write(`Tool groups: ${enabledGroups.join(', ')}\n`);
|
|
245
271
|
// Auto-start session
|
|
246
272
|
const sessionManager = new SessionManager(projectRoot);
|
|
247
273
|
const session = sessionManager.startSession({ source: 'mcp-connect' });
|
|
@@ -258,8 +284,6 @@ async function main() {
|
|
|
258
284
|
process.on('SIGINT', cleanup);
|
|
259
285
|
process.on('SIGTERM', cleanup);
|
|
260
286
|
process.on('beforeExit', cleanup);
|
|
261
|
-
// Load project config
|
|
262
|
-
const config = loadConfig(projectRoot);
|
|
263
287
|
// Run GC in background on startup (non-blocking)
|
|
264
288
|
runGC(projectRoot, config.gc).catch((err) => {
|
|
265
289
|
process.stderr.write(`GC warning: ${err instanceof Error ? err.message : String(err)}\n`);
|
package/dist/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":";AAEA,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,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AACzE,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3F,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AACrE,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAyB,MAAM,aAAa,CAAC;AAEhE,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC;IAC3B,IAAI,EAAE,aAAa;IACnB,OAAO,EAAE,OAAO;CACjB,CAAC,CAAC;AAEH,SAAS,aAAa,CAAC,MAAiB,EAAE,MAAwB;IAChE,uCAAuC;IAEvC,MAAM,CAAC,YAAY,CAAC,iBAAiB,EAAE;QACrC,KAAK,EAAE,iBAAiB;QACxB,WAAW,EACT,uGAAuG;QACzG,WAAW,EAAE;YACX,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,mCAAmC,CAAC;YACtE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gCAAgC,CAAC;SACxE;KACF,EAAE,KAAK,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,EAAE,EAAE;QACnC,MAAM,UAAU,GAAG,MAAM,aAAa,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;QAC5D,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,CAAC;SACvE,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,YAAY,CAAC,mBAAmB,EAAE;QACvC,KAAK,EAAE,mBAAmB;QAC1B,WAAW,EACT,uJAAuJ;QACzJ,WAAW,EAAE;YACX,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,oCAAoC,CAAC;YAC/D,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,2BAA2B,CAAC;YAClE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mCAAmC,CAAC;SAC7E;KACF,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE;QACpC,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;QAClC,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,WAAW,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;QACpF,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;SACnE,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,YAAY,CAAC,sBAAsB,EAAE;QAC1C,KAAK,EAAE,sBAAsB;QAC7B,WAAW,EACT,2JAA2J;QAC7J,WAAW,EAAE;YACX,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oDAAoD,CAAC;YAC1F,SAAS,EAAE,CAAC;iBACT,IAAI,CAAC,CAAC,cAAc,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC;iBAC5C,QAAQ,EAAE;iBACV,QAAQ,CAAC,iCAAiC,CAAC;YAC9C,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qBAAqB,CAAC;YAC5D,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,wDAAwD,CAAC;SACjG;KACF,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE;QAC9C,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;QAClC,MAAM,MAAM,GAAG,MAAM,sBAAsB,CAAC,WAAW,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;QACzF,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;SACnE,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,YAAY,CAAC,mBAAmB,EAAE;QACvC,KAAK,EAAE,mBAAmB;QAC1B,WAAW,EACT,2GAA2G;QAC7G,WAAW,EAAE;YACX,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,+BAA+B,CAAC;SACvE;KACF,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE;QACrB,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;QAClC,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;QACzD,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;SACnE,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,2CAA2C;IAC3C,IAAI,MAAM,CAAC,KAAK,EAAE,SAAS,EAAE,CAAC;QAC5B,MAAM,CAAC,YAAY,CAAC,kBAAkB,EAAE;YACtC,KAAK,EAAE,kBAAkB;YACzB,WAAW,EACT,4LAA4L;YAC9L,WAAW,EAAE;gBACX,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,oCAAoC,CAAC;aAChE;SACF,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE;YACpB,IAAI,CAAC;gBACH,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;gBAClC,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;gBACvD,OAAO;oBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;iBACnE,CAAC;YACJ,CAAC;YAAC,OAAO,KAAc,EAAE,CAAC;gBACxB,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBACvE,MAAM,UAAU,GACd,KAAK,YAAY,KAAK,IAAI,MAAM,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC;gBACvE,OAAO;oBACL,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAe;4BACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gCACnB,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,gBAAgB;gCACvD,OAAO;gCACP,IAAI;6BACL,CAAC;yBACH;qBACF;oBACD,OAAO,EAAE,IAAI;iBACd,CAAC;YACJ,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,YAAY,CAAC,sBAAsB,EAAE;YAC1C,KAAK,EAAE,sBAAsB;YAC7B,WAAW,EAAE,+GAA+G;YAC5H,WAAW,EAAE;gBACX,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,8CAA8C,CAAC;aACpF;SACF,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE;YACrB,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;YAClC,MAAM,MAAM,GAAG,MAAM,kBAAkB,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;YAC5D,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;aACnE,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,YAAY,CAAC,cAAc,EAAE;YAClC,KAAK,EAAE,eAAe;YACtB,WAAW,EACT,kJAAkJ;YACpJ,WAAW,EAAE;gBACX,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,oCAAoC,CAAC;aAChE;SACF,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE;YACpB,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;YAClC,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;YACpD,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;aACnE,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,YAAY,CAAC,mBAAmB,EAAE;YACvC,KAAK,EAAE,mBAAmB;YAC1B,WAAW,EAAE,sJAAsJ;YACnK,WAAW,EAAE;gBACX,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,qEAAqE,CAAC;gBACjG,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,2BAA2B,CAAC;aACnE;SACF,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE;YAC5B,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;YAClC,MAAM,MAAM,GAAG,eAAe,CAAC,WAAW,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;YAC1D,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;aACnE,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,YAAY,CAAC,YAAY,EAAE;YAChC,KAAK,EAAE,kBAAkB;YACzB,WAAW,EACT,iIAAiI;YACnI,WAAW,EAAE;gBACX,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oDAAoD,CAAC;aAC3F;SACF,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE;YACpB,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;YAClC,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;YACxD,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;aACnE,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IAED,uCAAuC;IACvC,IAAI,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC;QACxB,MAAM,CAAC,YAAY,CAAC,aAAa,EAAE;YACjC,KAAK,EAAE,aAAa;YACpB,WAAW,EAAE,iEAAiE;YAC9E,WAAW,EAAE;gBACX,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,0BAA0B,CAAC;aACtD;SACF,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE;YACpB,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;YAClC,MAAM,IAAI,GAAG,cAAc,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;YAC/C,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;aACjE,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,YAAY,CAAC,kBAAkB,EAAE;YACtC,KAAK,EAAE,kBAAkB;YACzB,WAAW,EACT,6FAA6F;YAC/F,WAAW,EAAE;gBACX,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,6CAA6C,CAAC;aACvF;SACF,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE;YACvB,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;YAClC,MAAM,MAAM,GAAG,cAAc,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;YACpD,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;aACnE,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,YAAY,CAAC,eAAe,EAAE;YACnC,KAAK,EAAE,eAAe;YACtB,WAAW,EAAE,sEAAsE;YACnF,WAAW,EAAE;gBACX,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC;gBACvC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,oCAAoC,CAAC;gBAC/D,MAAM,EAAE,CAAC;qBACN,IAAI,CAAC,CAAC,UAAU,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;qBACxC,QAAQ,EAAE;qBACV,QAAQ,CAAC,wCAAwC,CAAC;gBACrD,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,+BAA+B,CAAC;aACvE;SACF,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE;YAC5C,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;YAClC,MAAM,MAAM,GAAG,gBAAgB,CAAC,WAAW,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;YAC3E,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;aACnE,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IAED,2CAA2C;IAC3C,IAAI,MAAM,CAAC,KAAK,EAAE,SAAS,EAAE,CAAC;QAC5B,MAAM,CAAC,YAAY,CAAC,kBAAkB,EAAE;YACtC,KAAK,EAAE,kBAAkB;YACzB,WAAW,EACT,wFAAwF;YAC1F,WAAW,EAAE;gBACX,MAAM,EAAE,CAAC;qBACN,IAAI,CAAC,CAAC,SAAS,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC;qBACxC,QAAQ,EAAE;qBACV,QAAQ,CAAC,4BAA4B,CAAC;gBACzC,KAAK,EAAE,CAAC;qBACL,MAAM,EAAE;qBACR,QAAQ,EAAE;qBACV,QAAQ,CAAC,6DAA6D,CAAC;gBAC1E,UAAU,EAAE,CAAC;qBACV,MAAM,EAAE;qBACR,QAAQ,EAAE;qBACV,QAAQ,CAAC,sCAAsC,CAAC;gBACnD,mBAAmB,EAAE,CAAC;qBACnB,OAAO,EAAE;qBACT,QAAQ,EAAE;qBACV,QAAQ,CAAC,kCAAkC,CAAC;aAChD;SACF,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,mBAAmB,EAAE,EAAE,EAAE;YAC9D,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;YAClC,MAAM,MAAM,GAAG,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,mBAAmB,CAAC,CAAC;YAC3F,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;aAC5E,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AAED,KAAK,UAAU,IAAI;IACjB,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAElC,uCAAuC;IACvC,MAAM,MAAM,GAAG,UAAU,CAAC,WAAW,CAAC,CAAC;IAEvC,iCAAiC;IACjC,aAAa,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAE9B,oBAAoB;IACpB,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAEhC,0BAA0B;IAC1B,MAAM,aAAa,GAAG,CAAC,YAAY,CAAC,CAAC;IACrC,IAAI,MAAM,CAAC,KAAK,EAAE,SAAS;QAAE,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAC7D,IAAI,MAAM,CAAC,KAAK,EAAE,KAAK;QAAE,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACrD,IAAI,MAAM,CAAC,KAAK,EAAE,SAAS;QAAE,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAC7D,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,gBAAgB,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEnE,qBAAqB;IACrB,MAAM,cAAc,GAAG,IAAI,cAAc,CAAC,WAAW,CAAC,CAAC;IACvD,MAAM,OAAO,GAAG,cAAc,CAAC,YAAY,CAAC,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC,CAAC;IACvE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,oBAAoB,OAAO,CAAC,EAAE,IAAI,CAAC,CAAC;IAEzD,sBAAsB;IACtB,MAAM,OAAO,GAAG,GAAG,EAAE;QACnB,IAAI,CAAC;YACH,cAAc,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACxC,CAAC;QAAC,MAAM,CAAC;YACP,+BAA+B;QACjC,CAAC;IACH,CAAC,CAAC;IACF,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC9B,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IAC/B,OAAO,CAAC,EAAE,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;IAElC,iDAAiD;IACjD,KAAK,CAAC,WAAW,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;QAC1C,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,eAAe,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC5F,CAAC,CAAC,CAAC;AACL,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;IAC9B,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACxF,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,gBAAgB,OAAO,IAAI,CAAC,CAAC;IAClD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
|