@grafema/mcp 0.2.0-beta → 0.2.5-beta
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/analysis-worker.js +9 -5
- package/dist/analysis-worker.js.map +1 -0
- package/dist/analysis.d.ts.map +1 -1
- package/dist/analysis.js +1 -0
- package/dist/analysis.js.map +1 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +13 -5
- package/dist/config.js.map +1 -0
- package/dist/definitions.d.ts +4 -4
- package/dist/definitions.d.ts.map +1 -1
- package/dist/definitions.js +89 -3
- package/dist/definitions.js.map +1 -0
- package/dist/handlers.d.ts +4 -2
- package/dist/handlers.d.ts.map +1 -1
- package/dist/handlers.js +172 -20
- package/dist/handlers.js.map +1 -0
- package/dist/prompts.d.ts +25 -0
- package/dist/prompts.d.ts.map +1 -0
- package/dist/prompts.js +33 -0
- package/dist/prompts.js.map +1 -0
- package/dist/server.js +46 -20
- package/dist/server.js.map +1 -0
- package/dist/state.js +1 -0
- package/dist/state.js.map +1 -0
- package/dist/types.d.ts +50 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +1 -0
- package/dist/types.js.map +1 -0
- package/dist/utils.js +2 -1
- package/dist/utils.js.map +1 -0
- package/package.json +4 -3
- package/src/analysis-worker.ts +10 -7
- package/src/analysis.ts +2 -1
- package/src/config.ts +12 -4
- package/src/definitions.ts +92 -5
- package/src/handlers.ts +219 -26
- package/src/prompts.ts +56 -0
- package/src/server.ts +74 -20
- package/src/types.ts +53 -1
- package/src/utils.ts +2 -2
package/dist/types.d.ts
CHANGED
|
@@ -35,12 +35,14 @@ export interface QueryGraphArgs {
|
|
|
35
35
|
limit?: number;
|
|
36
36
|
offset?: number;
|
|
37
37
|
format?: 'table' | 'json' | 'tree';
|
|
38
|
+
explain?: boolean;
|
|
38
39
|
}
|
|
39
40
|
export interface FindCallsArgs {
|
|
40
41
|
target: string;
|
|
41
42
|
limit?: number;
|
|
42
43
|
offset?: number;
|
|
43
44
|
include_indirect?: boolean;
|
|
45
|
+
className?: string;
|
|
44
46
|
}
|
|
45
47
|
export interface TraceAliasArgs {
|
|
46
48
|
variableName: string;
|
|
@@ -150,7 +152,7 @@ export interface GraphBackend {
|
|
|
150
152
|
export interface GraphNode {
|
|
151
153
|
id: string;
|
|
152
154
|
type: string;
|
|
153
|
-
name
|
|
155
|
+
name?: string;
|
|
154
156
|
file?: string;
|
|
155
157
|
line?: number;
|
|
156
158
|
[key: string]: unknown;
|
|
@@ -207,6 +209,30 @@ export interface GetFunctionDetailsArgs {
|
|
|
207
209
|
transitive?: boolean;
|
|
208
210
|
}
|
|
209
211
|
export type { CallInfo, CallerInfo, FindCallsOptions } from '@grafema/core';
|
|
212
|
+
/**
|
|
213
|
+
* Datalog query result binding
|
|
214
|
+
*/
|
|
215
|
+
export interface DatalogBinding {
|
|
216
|
+
name: string;
|
|
217
|
+
value: string;
|
|
218
|
+
}
|
|
219
|
+
/**
|
|
220
|
+
* Call result structure for filtering
|
|
221
|
+
*/
|
|
222
|
+
export interface CallResult {
|
|
223
|
+
id: string;
|
|
224
|
+
name?: string;
|
|
225
|
+
object?: string;
|
|
226
|
+
file?: string;
|
|
227
|
+
line?: number;
|
|
228
|
+
resolved: boolean;
|
|
229
|
+
target: {
|
|
230
|
+
type: string;
|
|
231
|
+
name: string;
|
|
232
|
+
file?: string;
|
|
233
|
+
line?: number;
|
|
234
|
+
} | null;
|
|
235
|
+
}
|
|
210
236
|
/**
|
|
211
237
|
* Information about a conditional guard (SCOPE node)
|
|
212
238
|
*/
|
|
@@ -218,4 +244,27 @@ export interface GuardInfo {
|
|
|
218
244
|
file: string;
|
|
219
245
|
line: number;
|
|
220
246
|
}
|
|
247
|
+
export interface ReadProjectStructureArgs {
|
|
248
|
+
path?: string;
|
|
249
|
+
depth?: number;
|
|
250
|
+
include_files?: boolean;
|
|
251
|
+
}
|
|
252
|
+
export interface WriteConfigArgs {
|
|
253
|
+
services?: Array<{
|
|
254
|
+
name: string;
|
|
255
|
+
path: string;
|
|
256
|
+
entryPoint?: string;
|
|
257
|
+
}>;
|
|
258
|
+
plugins?: {
|
|
259
|
+
indexing?: string[];
|
|
260
|
+
analysis?: string[];
|
|
261
|
+
enrichment?: string[];
|
|
262
|
+
validation?: string[];
|
|
263
|
+
};
|
|
264
|
+
include?: string[];
|
|
265
|
+
exclude?: string[];
|
|
266
|
+
workspace?: {
|
|
267
|
+
roots?: string[];
|
|
268
|
+
};
|
|
269
|
+
}
|
|
221
270
|
//# sourceMappingURL=types.d.ts.map
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,IAAI,CAAC;AAGtC,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,gBAAgB,EAAE,MAAM,CAAC;IACzB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,OAAO,EAAE,eAAe,CAAC;CAC1B;AAGD,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;CAClB;AAGD,YAAY,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACnD,YAAY,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAG7C,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/types.js
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG"}
|
package/dist/utils.js
CHANGED
|
@@ -73,7 +73,7 @@ export function normalizeLimit(limit) {
|
|
|
73
73
|
return Math.min(Math.max(1, Math.floor(limit)), MAX_LIMIT);
|
|
74
74
|
}
|
|
75
75
|
export function formatPaginationInfo(params) {
|
|
76
|
-
const { limit, offset, returned, total, hasMore } = params;
|
|
76
|
+
const { limit: _limit, offset, returned, total, hasMore } = params;
|
|
77
77
|
let info = `\n📄 Pagination: showing ${returned}`;
|
|
78
78
|
if (total !== undefined) {
|
|
79
79
|
info += ` of ${total}`;
|
|
@@ -178,3 +178,4 @@ export function truncate(s, maxLen) {
|
|
|
178
178
|
return s;
|
|
179
179
|
return s.slice(0, maxLen - 3) + '...';
|
|
180
180
|
}
|
|
181
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@grafema/mcp",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.5-beta",
|
|
4
4
|
"description": "MCP server for Grafema code analysis toolkit",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/server.js",
|
|
@@ -38,8 +38,9 @@
|
|
|
38
38
|
"dependencies": {
|
|
39
39
|
"@modelcontextprotocol/sdk": "^1.25.1",
|
|
40
40
|
"ajv": "^8.17.1",
|
|
41
|
-
"
|
|
42
|
-
"@grafema/types": "0.2.
|
|
41
|
+
"yaml": "^2.8.2",
|
|
42
|
+
"@grafema/types": "0.2.5-beta",
|
|
43
|
+
"@grafema/core": "0.2.5-beta"
|
|
43
44
|
},
|
|
44
45
|
"devDependencies": {
|
|
45
46
|
"@types/node": "^25.0.8",
|
package/src/analysis-worker.ts
CHANGED
|
@@ -13,7 +13,6 @@ import { pathToFileURL } from 'url';
|
|
|
13
13
|
import {
|
|
14
14
|
Orchestrator,
|
|
15
15
|
RFDBServerBackend,
|
|
16
|
-
Plugin,
|
|
17
16
|
// Indexing
|
|
18
17
|
JSModuleIndexer,
|
|
19
18
|
// Analysis
|
|
@@ -33,6 +32,7 @@ import {
|
|
|
33
32
|
MountPointResolver,
|
|
34
33
|
PrefixEvaluator,
|
|
35
34
|
HTTPConnectionEnricher,
|
|
35
|
+
RejectionPropagationEnricher,
|
|
36
36
|
// Validation
|
|
37
37
|
CallResolverValidator,
|
|
38
38
|
EvalBanValidator,
|
|
@@ -41,7 +41,8 @@ import {
|
|
|
41
41
|
GraphConnectivityValidator,
|
|
42
42
|
DataFlowValidator,
|
|
43
43
|
} from '@grafema/core';
|
|
44
|
-
import type { ParallelConfig
|
|
44
|
+
import type { ParallelConfig ,
|
|
45
|
+
Plugin} from '@grafema/core';
|
|
45
46
|
|
|
46
47
|
/**
|
|
47
48
|
* Config structure
|
|
@@ -83,7 +84,6 @@ interface ErrorMessage {
|
|
|
83
84
|
stack?: string;
|
|
84
85
|
}
|
|
85
86
|
|
|
86
|
-
type WorkerMessage = ProgressMessage | CompleteMessage | ErrorMessage;
|
|
87
87
|
|
|
88
88
|
const projectPath = process.argv[2];
|
|
89
89
|
const serviceName = process.argv[3] && process.argv[3] !== '' ? process.argv[3] : null;
|
|
@@ -172,6 +172,7 @@ async function run(): Promise<void> {
|
|
|
172
172
|
MountPointResolver: () => new MountPointResolver(),
|
|
173
173
|
PrefixEvaluator: () => new PrefixEvaluator(),
|
|
174
174
|
HTTPConnectionEnricher: () => new HTTPConnectionEnricher(),
|
|
175
|
+
RejectionPropagationEnricher: () => new RejectionPropagationEnricher(),
|
|
175
176
|
CallResolverValidator: () => new CallResolverValidator(),
|
|
176
177
|
EvalBanValidator: () => new EvalBanValidator(),
|
|
177
178
|
SQLInjectionValidator: () => new SQLInjectionValidator(),
|
|
@@ -187,7 +188,7 @@ async function run(): Promise<void> {
|
|
|
187
188
|
|
|
188
189
|
// Build plugins array from config
|
|
189
190
|
const plugins: Plugin[] = [];
|
|
190
|
-
for (const [
|
|
191
|
+
for (const [_phase, pluginNames] of Object.entries(config.plugins || {})) {
|
|
191
192
|
for (const name of pluginNames) {
|
|
192
193
|
if (builtinPlugins[name]) {
|
|
193
194
|
plugins.push(builtinPlugins[name]());
|
|
@@ -253,7 +254,7 @@ async function run(): Promise<void> {
|
|
|
253
254
|
const allEdges = await db.getAllEdgesAsync();
|
|
254
255
|
edgeCount = allEdges.length;
|
|
255
256
|
|
|
256
|
-
for await (const
|
|
257
|
+
for await (const _node of db.queryNodes({})) {
|
|
257
258
|
nodeCount++;
|
|
258
259
|
}
|
|
259
260
|
|
|
@@ -282,14 +283,16 @@ async function run(): Promise<void> {
|
|
|
282
283
|
await db.close();
|
|
283
284
|
console.log('[Worker] Database connection closed in cleanup');
|
|
284
285
|
} catch (closeErr) {
|
|
285
|
-
|
|
286
|
+
const message = closeErr instanceof Error ? closeErr.message : String(closeErr);
|
|
287
|
+
console.error('[Worker] Error closing database connection:', message);
|
|
286
288
|
}
|
|
287
289
|
}
|
|
288
290
|
}
|
|
289
291
|
}
|
|
290
292
|
|
|
291
293
|
run().catch(err => {
|
|
292
|
-
|
|
294
|
+
const error = err instanceof Error ? err : new Error(String(err));
|
|
295
|
+
sendError(error);
|
|
293
296
|
console.error('Analysis failed:', err);
|
|
294
297
|
process.exit(1);
|
|
295
298
|
});
|
package/src/analysis.ts
CHANGED
package/src/config.ts
CHANGED
|
@@ -33,6 +33,7 @@ import {
|
|
|
33
33
|
InstanceOfResolver,
|
|
34
34
|
HTTPConnectionEnricher,
|
|
35
35
|
RustFFIEnricher,
|
|
36
|
+
RejectionPropagationEnricher,
|
|
36
37
|
// Validation
|
|
37
38
|
CallResolverValidator,
|
|
38
39
|
EvalBanValidator,
|
|
@@ -95,6 +96,7 @@ export const BUILTIN_PLUGINS: Record<string, PluginFactory> = {
|
|
|
95
96
|
InstanceOfResolver: () => new InstanceOfResolver(),
|
|
96
97
|
HTTPConnectionEnricher: () => new HTTPConnectionEnricher(),
|
|
97
98
|
RustFFIEnricher: () => new RustFFIEnricher(),
|
|
99
|
+
RejectionPropagationEnricher: () => new RejectionPropagationEnricher(),
|
|
98
100
|
|
|
99
101
|
// Validation
|
|
100
102
|
CallResolverValidator: () => new CallResolverValidator(),
|
|
@@ -153,16 +155,22 @@ export async function loadCustomPlugins(projectPath: string): Promise<CustomPlug
|
|
|
153
155
|
const PluginClass = module.default || module[file.replace(/\.(m?js)$/, '')];
|
|
154
156
|
if (PluginClass && typeof PluginClass === 'function') {
|
|
155
157
|
const pluginName = PluginClass.name || file.replace(/\.(m?js)$/, '');
|
|
156
|
-
|
|
158
|
+
const instance = new PluginClass();
|
|
159
|
+
if (instance.config) {
|
|
160
|
+
instance.config.sourceFile = pluginPath;
|
|
161
|
+
}
|
|
162
|
+
customPlugins.push(instance);
|
|
157
163
|
pluginMap[pluginName] = PluginClass;
|
|
158
164
|
log(`[Grafema MCP] Loaded custom plugin: ${pluginName} from ${file}`);
|
|
159
165
|
}
|
|
160
166
|
} catch (err) {
|
|
161
|
-
|
|
167
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
168
|
+
log(`[Grafema MCP] Failed to load plugin ${file}: ${message}`);
|
|
162
169
|
}
|
|
163
170
|
}
|
|
164
171
|
} catch (err) {
|
|
165
|
-
|
|
172
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
173
|
+
log(`[Grafema MCP] Error loading custom plugins: ${message}`);
|
|
166
174
|
}
|
|
167
175
|
|
|
168
176
|
return { plugins: customPlugins, pluginMap };
|
|
@@ -197,7 +205,7 @@ export function createPlugins(
|
|
|
197
205
|
plugins.push(factory());
|
|
198
206
|
log(`[Grafema MCP] Enabled plugin: ${name}`);
|
|
199
207
|
} else {
|
|
200
|
-
log(`[Grafema MCP]
|
|
208
|
+
log(`[Grafema MCP] Plugin not found: ${name} (skipping)`);
|
|
201
209
|
}
|
|
202
210
|
}
|
|
203
211
|
|
package/src/definitions.ts
CHANGED
|
@@ -6,9 +6,11 @@ import { DEFAULT_LIMIT, MAX_LIMIT } from './utils.js';
|
|
|
6
6
|
|
|
7
7
|
interface SchemaProperty {
|
|
8
8
|
type: string;
|
|
9
|
-
description
|
|
9
|
+
description?: string;
|
|
10
10
|
enum?: string[];
|
|
11
|
-
items?:
|
|
11
|
+
items?: SchemaProperty;
|
|
12
|
+
properties?: Record<string, SchemaProperty>;
|
|
13
|
+
required?: string[];
|
|
12
14
|
}
|
|
13
15
|
|
|
14
16
|
export interface ToolDefinition {
|
|
@@ -33,7 +35,7 @@ Available predicates:
|
|
|
33
35
|
|
|
34
36
|
NODE TYPES:
|
|
35
37
|
- MODULE, FUNCTION, METHOD, CLASS, VARIABLE, PARAMETER
|
|
36
|
-
- CALL, METHOD_CALL, CALL_SITE
|
|
38
|
+
- CALL, PROPERTY_ACCESS, METHOD_CALL, CALL_SITE
|
|
37
39
|
- http:route, http:request, db:query, socketio:emit, socketio:on
|
|
38
40
|
|
|
39
41
|
EDGE TYPES:
|
|
@@ -101,7 +103,7 @@ Returns call sites with file locations and whether they're resolved.`,
|
|
|
101
103
|
properties: {
|
|
102
104
|
type: {
|
|
103
105
|
type: 'string',
|
|
104
|
-
description: 'Node type (e.g., FUNCTION, CLASS, MODULE)',
|
|
106
|
+
description: 'Node type (e.g., FUNCTION, CLASS, MODULE, PROPERTY_ACCESS)',
|
|
105
107
|
},
|
|
106
108
|
name: {
|
|
107
109
|
type: 'string',
|
|
@@ -390,7 +392,7 @@ Examples:
|
|
|
390
392
|
properties: {
|
|
391
393
|
topic: {
|
|
392
394
|
type: 'string',
|
|
393
|
-
description: 'Topic: queries, types, guarantees, or overview',
|
|
395
|
+
description: 'Topic: queries, types, guarantees, onboarding, or overview',
|
|
394
396
|
},
|
|
395
397
|
},
|
|
396
398
|
},
|
|
@@ -505,4 +507,89 @@ Max transitive depth is 5 to prevent explosion.`,
|
|
|
505
507
|
required: ['name'],
|
|
506
508
|
},
|
|
507
509
|
},
|
|
510
|
+
{
|
|
511
|
+
name: 'read_project_structure',
|
|
512
|
+
description: `Get the directory structure of the project.
|
|
513
|
+
Returns a tree of files and directories, useful for understanding
|
|
514
|
+
project layout during onboarding.
|
|
515
|
+
|
|
516
|
+
Excludes: node_modules, .git, dist, build, .grafema, coverage, .next, .nuxt
|
|
517
|
+
|
|
518
|
+
Use this tool when studying a new project to identify services,
|
|
519
|
+
packages, and entry points.`,
|
|
520
|
+
inputSchema: {
|
|
521
|
+
type: 'object',
|
|
522
|
+
properties: {
|
|
523
|
+
path: {
|
|
524
|
+
type: 'string',
|
|
525
|
+
description: 'Subdirectory to scan (relative to project root). Default: project root.',
|
|
526
|
+
},
|
|
527
|
+
depth: {
|
|
528
|
+
type: 'number',
|
|
529
|
+
description: 'Maximum directory depth (default: 3, max: 5)',
|
|
530
|
+
},
|
|
531
|
+
include_files: {
|
|
532
|
+
type: 'boolean',
|
|
533
|
+
description: 'Include files in output, not just directories (default: true)',
|
|
534
|
+
},
|
|
535
|
+
},
|
|
536
|
+
},
|
|
537
|
+
},
|
|
538
|
+
{
|
|
539
|
+
name: 'write_config',
|
|
540
|
+
description: `Write or update the Grafema configuration file (.grafema/config.yaml).
|
|
541
|
+
Validates all inputs before writing. Creates .grafema/ directory if needed.
|
|
542
|
+
|
|
543
|
+
Use this tool after studying the project to save the discovered configuration.
|
|
544
|
+
Only include fields you want to override — defaults are used for omitted fields.`,
|
|
545
|
+
inputSchema: {
|
|
546
|
+
type: 'object',
|
|
547
|
+
properties: {
|
|
548
|
+
services: {
|
|
549
|
+
type: 'array',
|
|
550
|
+
items: {
|
|
551
|
+
type: 'object',
|
|
552
|
+
properties: {
|
|
553
|
+
name: { type: 'string', description: 'Service name (e.g., "backend")' },
|
|
554
|
+
path: { type: 'string', description: 'Path relative to project root (e.g., "apps/backend")' },
|
|
555
|
+
entryPoint: { type: 'string', description: 'Entry point file relative to service path (e.g., "src/index.ts")' },
|
|
556
|
+
},
|
|
557
|
+
required: ['name', 'path'],
|
|
558
|
+
},
|
|
559
|
+
description: 'Service definitions (leave empty to use auto-discovery)',
|
|
560
|
+
},
|
|
561
|
+
plugins: {
|
|
562
|
+
type: 'object',
|
|
563
|
+
properties: {
|
|
564
|
+
indexing: { type: 'array', items: { type: 'string' }, description: 'Indexing plugins' },
|
|
565
|
+
analysis: { type: 'array', items: { type: 'string' }, description: 'Analysis plugins' },
|
|
566
|
+
enrichment: { type: 'array', items: { type: 'string' }, description: 'Enrichment plugins' },
|
|
567
|
+
validation: { type: 'array', items: { type: 'string' }, description: 'Validation plugins' },
|
|
568
|
+
},
|
|
569
|
+
description: 'Plugin configuration (omit to use defaults)',
|
|
570
|
+
},
|
|
571
|
+
include: {
|
|
572
|
+
type: 'array',
|
|
573
|
+
items: { type: 'string' },
|
|
574
|
+
description: 'Glob patterns for files to include (e.g., ["src/**/*.ts"])',
|
|
575
|
+
},
|
|
576
|
+
exclude: {
|
|
577
|
+
type: 'array',
|
|
578
|
+
items: { type: 'string' },
|
|
579
|
+
description: 'Glob patterns for files to exclude (e.g., ["**/*.test.ts"])',
|
|
580
|
+
},
|
|
581
|
+
workspace: {
|
|
582
|
+
type: 'object',
|
|
583
|
+
properties: {
|
|
584
|
+
roots: {
|
|
585
|
+
type: 'array',
|
|
586
|
+
items: { type: 'string' },
|
|
587
|
+
description: 'Root directories for multi-root workspace',
|
|
588
|
+
},
|
|
589
|
+
},
|
|
590
|
+
description: 'Multi-root workspace config (only for workspaces)',
|
|
591
|
+
},
|
|
592
|
+
},
|
|
593
|
+
},
|
|
594
|
+
},
|
|
508
595
|
];
|