@magic5644/graph-it-live 1.0.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/LICENSE +21 -0
- package/README.md +712 -0
- package/bin/graph-it +2 -0
- package/dist/astWorker.js +42176 -0
- package/dist/graph-it.js +42584 -0
- package/dist/indexerWorker.js +42178 -0
- package/dist/mcpServer.mjs +435 -0
- package/dist/mcpWorker.js +42313 -0
- package/dist/queries/python.scm +65 -0
- package/dist/queries/rust.scm +82 -0
- package/dist/queries/typescript.scm +104 -0
- package/dist/wasm/sqljs.wasm +0 -0
- package/dist/wasm/tree-sitter-python.wasm +0 -0
- package/dist/wasm/tree-sitter-rust.wasm +0 -0
- package/dist/wasm/tree-sitter-typescript.wasm +0 -0
- package/dist/wasm/tree-sitter.wasm +0 -0
- package/package.json +1150 -0
package/package.json
ADDED
|
@@ -0,0 +1,1150 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@magic5644/graph-it-live",
|
|
3
|
+
"displayName": "Graph-It-Live",
|
|
4
|
+
"description": "AI-first dependency graph & code intelligence for VS Code. Visualize file imports, symbol call hierarchies, and cross-file call graphs. Detect circular dependencies, dead code, and breaking changes. Built-in MCP Server with 21 tools for GitHub Copilot, Cursor, Claude, Windsurf, and Antigravity. Generate AI-friendly codemaps. TypeScript, JavaScript, Python, Rust, Vue, Svelte, GraphQL.",
|
|
5
|
+
"version": "1.0.0",
|
|
6
|
+
"publisher": "magic5644",
|
|
7
|
+
"author": {
|
|
8
|
+
"name": "magic56"
|
|
9
|
+
},
|
|
10
|
+
"license": "MIT",
|
|
11
|
+
"repository": {
|
|
12
|
+
"type": "git",
|
|
13
|
+
"url": "https://github.com/magic5644/Graph-It-Live.git"
|
|
14
|
+
},
|
|
15
|
+
"homepage": "https://github.com/magic5644/Graph-It-Live/blob/main/README.md",
|
|
16
|
+
"bugs": {
|
|
17
|
+
"url": "https://github.com/magic5644/Graph-It-Live/issues"
|
|
18
|
+
},
|
|
19
|
+
"qna": "https://github.com/magic5644/Graph-It-Live/discussions",
|
|
20
|
+
"icon": "media/Graph-It-Live-Logo-256.png",
|
|
21
|
+
"galleryBanner": {
|
|
22
|
+
"color": "#2D3748",
|
|
23
|
+
"theme": "dark"
|
|
24
|
+
},
|
|
25
|
+
"keywords": [
|
|
26
|
+
"dependency graph",
|
|
27
|
+
"dependency",
|
|
28
|
+
"graph",
|
|
29
|
+
"visualization",
|
|
30
|
+
"import",
|
|
31
|
+
"typescript",
|
|
32
|
+
"javascript",
|
|
33
|
+
"python",
|
|
34
|
+
"rust",
|
|
35
|
+
"vue",
|
|
36
|
+
"svelte",
|
|
37
|
+
"graphql",
|
|
38
|
+
"circular dependency",
|
|
39
|
+
"cycle detection",
|
|
40
|
+
"architecture",
|
|
41
|
+
"code analysis",
|
|
42
|
+
"code map",
|
|
43
|
+
"codemap",
|
|
44
|
+
"call graph",
|
|
45
|
+
"call hierarchy",
|
|
46
|
+
"symbol",
|
|
47
|
+
"dead code",
|
|
48
|
+
"unused exports",
|
|
49
|
+
"breaking changes",
|
|
50
|
+
"impact analysis",
|
|
51
|
+
"reverse dependency",
|
|
52
|
+
"refactoring",
|
|
53
|
+
"code navigation",
|
|
54
|
+
"project structure",
|
|
55
|
+
"mcp",
|
|
56
|
+
"mcp server",
|
|
57
|
+
"model context protocol",
|
|
58
|
+
"copilot",
|
|
59
|
+
"cursor",
|
|
60
|
+
"claude",
|
|
61
|
+
"windsurf",
|
|
62
|
+
"antigravity",
|
|
63
|
+
"ai",
|
|
64
|
+
"llm",
|
|
65
|
+
"ai agent"
|
|
66
|
+
],
|
|
67
|
+
"engines": {
|
|
68
|
+
"vscode": "^1.96.0",
|
|
69
|
+
"node": ">=20.0.0"
|
|
70
|
+
},
|
|
71
|
+
"categories": [
|
|
72
|
+
"Visualization",
|
|
73
|
+
"Programming Languages",
|
|
74
|
+
"AI",
|
|
75
|
+
"Other"
|
|
76
|
+
],
|
|
77
|
+
"activationEvents": [
|
|
78
|
+
"onStartupFinished"
|
|
79
|
+
],
|
|
80
|
+
"main": "./dist/extension.js",
|
|
81
|
+
"contributes": {
|
|
82
|
+
"mcpServerDefinitionProviders": [
|
|
83
|
+
{
|
|
84
|
+
"id": "graphItLiveMcp",
|
|
85
|
+
"label": "Graph-It-Live Dependency Analyzer"
|
|
86
|
+
}
|
|
87
|
+
],
|
|
88
|
+
"viewsContainers": {
|
|
89
|
+
"panel": [
|
|
90
|
+
{
|
|
91
|
+
"id": "graph-it-live-explorer",
|
|
92
|
+
"title": "Graph-It-Live",
|
|
93
|
+
"icon": "$(type-hierarchy-sub)"
|
|
94
|
+
}
|
|
95
|
+
]
|
|
96
|
+
},
|
|
97
|
+
"views": {
|
|
98
|
+
"graph-it-live-explorer": [
|
|
99
|
+
{
|
|
100
|
+
"type": "webview",
|
|
101
|
+
"id": "graph-it-live.graphView",
|
|
102
|
+
"name": "Dependency Graph",
|
|
103
|
+
"icon": "$(type-hierarchy-sub)"
|
|
104
|
+
}
|
|
105
|
+
]
|
|
106
|
+
},
|
|
107
|
+
"commands": [
|
|
108
|
+
{
|
|
109
|
+
"command": "graph-it-live.showGraph",
|
|
110
|
+
"title": "Show Dependency Graph",
|
|
111
|
+
"category": "Graph-It-Live",
|
|
112
|
+
"icon": "$(type-hierarchy-sub)"
|
|
113
|
+
},
|
|
114
|
+
{
|
|
115
|
+
"command": "graph-it-live.forceReindex",
|
|
116
|
+
"title": "Force Graph-It-Live re-index",
|
|
117
|
+
"category": "Graph-It-Live"
|
|
118
|
+
},
|
|
119
|
+
{
|
|
120
|
+
"command": "graph-it-live.showIndexStatus",
|
|
121
|
+
"title": "Show Graph-It-Live index status",
|
|
122
|
+
"category": "Graph-It-Live"
|
|
123
|
+
},
|
|
124
|
+
{
|
|
125
|
+
"command": "graph-it-live.expandAllNodes",
|
|
126
|
+
"title": "Toggle Expand/Collapse All Nodes",
|
|
127
|
+
"icon": "$(expand-all)",
|
|
128
|
+
"category": "Graph-It-Live"
|
|
129
|
+
},
|
|
130
|
+
{
|
|
131
|
+
"command": "graph-it-live.refreshGraph",
|
|
132
|
+
"title": "Refresh Graph",
|
|
133
|
+
"icon": "$(refresh)",
|
|
134
|
+
"category": "Graph-It-Live"
|
|
135
|
+
},
|
|
136
|
+
{
|
|
137
|
+
"command": "graph-it-live.toggleViewMode",
|
|
138
|
+
"title": "Toggle View Mode (File ↔ Symbol)",
|
|
139
|
+
"icon": "$(split-vertical)",
|
|
140
|
+
"category": "Graph-It-Live"
|
|
141
|
+
},
|
|
142
|
+
{
|
|
143
|
+
"command": "graph-it-live.setViewModeFile",
|
|
144
|
+
"title": "Switch to Graph View",
|
|
145
|
+
"icon": "$(type-hierarchy-sub)",
|
|
146
|
+
"category": "Graph-It-Live"
|
|
147
|
+
},
|
|
148
|
+
{
|
|
149
|
+
"command": "graph-it-live.setViewModeList",
|
|
150
|
+
"title": "Switch to List View",
|
|
151
|
+
"icon": "$(list-flat)",
|
|
152
|
+
"category": "Graph-It-Live"
|
|
153
|
+
},
|
|
154
|
+
{
|
|
155
|
+
"command": "graph-it-live.setViewModeSymbol",
|
|
156
|
+
"title": "Switch to Symbol View",
|
|
157
|
+
"icon": "$(symbol-method)",
|
|
158
|
+
"category": "Graph-It-Live"
|
|
159
|
+
},
|
|
160
|
+
{
|
|
161
|
+
"command": "graph-it-live.showReverseDependencies",
|
|
162
|
+
"title": "Show Reverse Dependencies",
|
|
163
|
+
"icon": "$(references)",
|
|
164
|
+
"category": "Graph-It-Live"
|
|
165
|
+
},
|
|
166
|
+
{
|
|
167
|
+
"command": "graph-it-live.hideReverseDependencies",
|
|
168
|
+
"title": "Hide Reverse Dependencies",
|
|
169
|
+
"icon": "$(close)",
|
|
170
|
+
"category": "Graph-It-Live"
|
|
171
|
+
},
|
|
172
|
+
{
|
|
173
|
+
"command": "graph-it-live.enableUnusedFilter",
|
|
174
|
+
"title": "Filter Unused Dependencies",
|
|
175
|
+
"icon": "$(eye)",
|
|
176
|
+
"category": "Graph-It-Live"
|
|
177
|
+
},
|
|
178
|
+
{
|
|
179
|
+
"command": "graph-it-live.disableUnusedFilter",
|
|
180
|
+
"title": "Show All Dependencies",
|
|
181
|
+
"icon": "$(eye-closed)",
|
|
182
|
+
"category": "Graph-It-Live"
|
|
183
|
+
},
|
|
184
|
+
{
|
|
185
|
+
"command": "graph-it-live.showCallGraph",
|
|
186
|
+
"title": "Show Call Graph",
|
|
187
|
+
"category": "Graph-It-Live",
|
|
188
|
+
"icon": "$(call-incoming)"
|
|
189
|
+
}
|
|
190
|
+
],
|
|
191
|
+
"menus": {
|
|
192
|
+
"editor/title": [
|
|
193
|
+
{
|
|
194
|
+
"command": "graph-it-live.showGraph",
|
|
195
|
+
"when": "resourceExtname =~ /\\.(ts|tsx|js|jsx|vue|svelte|mjs|cjs|gql|graphql)$/",
|
|
196
|
+
"group": "navigation"
|
|
197
|
+
}
|
|
198
|
+
],
|
|
199
|
+
"view/title": [
|
|
200
|
+
{
|
|
201
|
+
"command": "workbench.action.navigateBack",
|
|
202
|
+
"when": "view == graph-it-live.graphView",
|
|
203
|
+
"group": "navigation@1"
|
|
204
|
+
},
|
|
205
|
+
{
|
|
206
|
+
"command": "workbench.action.navigateForward",
|
|
207
|
+
"when": "view == graph-it-live.graphView",
|
|
208
|
+
"group": "navigation@2"
|
|
209
|
+
},
|
|
210
|
+
{
|
|
211
|
+
"command": "graph-it-live.refreshGraph",
|
|
212
|
+
"when": "view == graph-it-live.graphView",
|
|
213
|
+
"group": "navigation@3"
|
|
214
|
+
},
|
|
215
|
+
{
|
|
216
|
+
"command": "graph-it-live.setViewModeFile",
|
|
217
|
+
"when": "view == graph-it-live.graphView && graph-it-live.viewMode != 'file'",
|
|
218
|
+
"group": "navigation@4",
|
|
219
|
+
"icon": "$(graph)"
|
|
220
|
+
},
|
|
221
|
+
{
|
|
222
|
+
"command": "graph-it-live.setViewModeFile",
|
|
223
|
+
"when": "view == graph-it-live.graphView && graph-it-live.viewMode == 'file'",
|
|
224
|
+
"group": "navigation@4",
|
|
225
|
+
"icon": "$(type-hierarchy)"
|
|
226
|
+
},
|
|
227
|
+
{
|
|
228
|
+
"command": "graph-it-live.setViewModeList",
|
|
229
|
+
"when": "view == graph-it-live.graphView && graph-it-live.viewMode != 'list'",
|
|
230
|
+
"group": "navigation@5",
|
|
231
|
+
"icon": "$(list-flat)"
|
|
232
|
+
},
|
|
233
|
+
{
|
|
234
|
+
"command": "graph-it-live.setViewModeList",
|
|
235
|
+
"when": "view == graph-it-live.graphView && graph-it-live.viewMode == 'list'",
|
|
236
|
+
"group": "navigation@5",
|
|
237
|
+
"icon": "$(list-selection)"
|
|
238
|
+
},
|
|
239
|
+
{
|
|
240
|
+
"command": "graph-it-live.setViewModeSymbol",
|
|
241
|
+
"when": "view == graph-it-live.graphView && graph-it-live.viewMode != 'symbol'",
|
|
242
|
+
"group": "navigation@6",
|
|
243
|
+
"icon": "$(symbol-method)"
|
|
244
|
+
},
|
|
245
|
+
{
|
|
246
|
+
"command": "graph-it-live.setViewModeSymbol",
|
|
247
|
+
"when": "view == graph-it-live.graphView && graph-it-live.viewMode == 'symbol'",
|
|
248
|
+
"group": "navigation@6",
|
|
249
|
+
"icon": "$(symbol-class)"
|
|
250
|
+
},
|
|
251
|
+
{
|
|
252
|
+
"command": "graph-it-live.showCallGraph",
|
|
253
|
+
"when": "view == graph-it-live.graphView",
|
|
254
|
+
"group": "navigation@7"
|
|
255
|
+
},
|
|
256
|
+
{
|
|
257
|
+
"command": "graph-it-live.showReverseDependencies",
|
|
258
|
+
"when": "view == graph-it-live.graphView && graph-it-live.viewMode == 'file' && !graph-it-live.reverseDependenciesVisible",
|
|
259
|
+
"group": "navigation@8"
|
|
260
|
+
},
|
|
261
|
+
{
|
|
262
|
+
"command": "graph-it-live.hideReverseDependencies",
|
|
263
|
+
"when": "view == graph-it-live.graphView && graph-it-live.viewMode == 'file' && graph-it-live.reverseDependenciesVisible",
|
|
264
|
+
"group": "navigation@8"
|
|
265
|
+
},
|
|
266
|
+
{
|
|
267
|
+
"command": "graph-it-live.enableUnusedFilter",
|
|
268
|
+
"when": "view == graph-it-live.graphView && graph-it-live.viewMode == 'file' && !graph-it-live.unusedFilterActive",
|
|
269
|
+
"group": "navigation@9"
|
|
270
|
+
},
|
|
271
|
+
{
|
|
272
|
+
"command": "graph-it-live.disableUnusedFilter",
|
|
273
|
+
"when": "view == graph-it-live.graphView && graph-it-live.viewMode == 'file' && graph-it-live.unusedFilterActive",
|
|
274
|
+
"group": "navigation@9"
|
|
275
|
+
},
|
|
276
|
+
{
|
|
277
|
+
"command": "graph-it-live.expandAllNodes",
|
|
278
|
+
"when": "view == graph-it-live.graphView && graph-it-live.viewMode == 'file'",
|
|
279
|
+
"group": "navigation@10"
|
|
280
|
+
}
|
|
281
|
+
],
|
|
282
|
+
"editor/context": [
|
|
283
|
+
{
|
|
284
|
+
"command": "graph-it-live.showCallGraph",
|
|
285
|
+
"when": "editorTextFocus",
|
|
286
|
+
"group": "navigation@99"
|
|
287
|
+
}
|
|
288
|
+
]
|
|
289
|
+
},
|
|
290
|
+
"languageModelTools": [
|
|
291
|
+
{
|
|
292
|
+
"name": "graph-it-live_find_referencing_files",
|
|
293
|
+
"canBeReferencedInPrompt": true,
|
|
294
|
+
"toolReferenceName": "graphFindRefs",
|
|
295
|
+
"tags": [
|
|
296
|
+
"graph-it-live",
|
|
297
|
+
"dependencies",
|
|
298
|
+
"references"
|
|
299
|
+
],
|
|
300
|
+
"displayName": "Graph-It-Live: Find Files Referencing",
|
|
301
|
+
"icon": "$(references)",
|
|
302
|
+
"userDescription": "Find all files that import or depend on a specific file",
|
|
303
|
+
"modelDescription": "WHEN: you need to know which files import or depend on a specific file. WHY: you cannot determine reverse dependencies without analyzing the full project dependency index. WHAT: returns a list of file paths that import or reference the target file, with line numbers and import module details.",
|
|
304
|
+
"inputSchema": {
|
|
305
|
+
"type": "object",
|
|
306
|
+
"properties": {
|
|
307
|
+
"targetPath": {
|
|
308
|
+
"type": "string",
|
|
309
|
+
"description": "The absolute path to the file to find references for"
|
|
310
|
+
}
|
|
311
|
+
},
|
|
312
|
+
"required": [
|
|
313
|
+
"targetPath"
|
|
314
|
+
]
|
|
315
|
+
}
|
|
316
|
+
},
|
|
317
|
+
{
|
|
318
|
+
"name": "graph-it-live_analyze_dependencies",
|
|
319
|
+
"canBeReferencedInPrompt": true,
|
|
320
|
+
"toolReferenceName": "graphDeps",
|
|
321
|
+
"tags": [
|
|
322
|
+
"graph-it-live",
|
|
323
|
+
"dependencies",
|
|
324
|
+
"imports"
|
|
325
|
+
],
|
|
326
|
+
"displayName": "Graph-It-Live: Analyze Dependencies",
|
|
327
|
+
"icon": "$(package)",
|
|
328
|
+
"userDescription": "List all dependencies and imports of a file, with resolved paths and metadata",
|
|
329
|
+
"modelDescription": "WHEN: you need to know what a file imports or depends on. WHY: you need resolved absolute paths and structured metadata for all imports in a file, which you cannot get from just reading the source. WHAT: returns all resolved dependencies of the given file with their module names, resolved paths, import types, and line numbers.",
|
|
330
|
+
"inputSchema": {
|
|
331
|
+
"type": "object",
|
|
332
|
+
"properties": {
|
|
333
|
+
"filePath": {
|
|
334
|
+
"type": "string",
|
|
335
|
+
"description": "The absolute path to the file to analyze"
|
|
336
|
+
}
|
|
337
|
+
},
|
|
338
|
+
"required": [
|
|
339
|
+
"filePath"
|
|
340
|
+
]
|
|
341
|
+
}
|
|
342
|
+
},
|
|
343
|
+
{
|
|
344
|
+
"name": "graph-it-live_crawl_dependency_graph",
|
|
345
|
+
"canBeReferencedInPrompt": true,
|
|
346
|
+
"toolReferenceName": "graphCrawl",
|
|
347
|
+
"tags": [
|
|
348
|
+
"graph-it-live",
|
|
349
|
+
"dependencies",
|
|
350
|
+
"graph"
|
|
351
|
+
],
|
|
352
|
+
"displayName": "Graph-It-Live: Crawl Dependency Graph",
|
|
353
|
+
"icon": "$(type-hierarchy)",
|
|
354
|
+
"userDescription": "Traverse the full transitive dependency graph from an entry file",
|
|
355
|
+
"modelDescription": "WHEN: you need to explore the full transitive dependency graph starting from an entry file. WHY: you cannot determine multi-hop dependencies by reading files individually — this traverses the full graph. WHAT: returns all reachable nodes (files) and directed edges (import relationships) in the graph.",
|
|
356
|
+
"inputSchema": {
|
|
357
|
+
"type": "object",
|
|
358
|
+
"properties": {
|
|
359
|
+
"entryFile": {
|
|
360
|
+
"type": "string",
|
|
361
|
+
"description": "The absolute path to the entry file from which to start crawling"
|
|
362
|
+
},
|
|
363
|
+
"maxDepth": {
|
|
364
|
+
"type": "number",
|
|
365
|
+
"description": "Maximum depth to crawl (optional, defaults to the configured maxDepth setting)"
|
|
366
|
+
}
|
|
367
|
+
},
|
|
368
|
+
"required": [
|
|
369
|
+
"entryFile"
|
|
370
|
+
]
|
|
371
|
+
}
|
|
372
|
+
},
|
|
373
|
+
{
|
|
374
|
+
"name": "graph-it-live_get_symbol_graph",
|
|
375
|
+
"canBeReferencedInPrompt": true,
|
|
376
|
+
"toolReferenceName": "graphSymbols",
|
|
377
|
+
"tags": [
|
|
378
|
+
"graph-it-live",
|
|
379
|
+
"symbols",
|
|
380
|
+
"ast"
|
|
381
|
+
],
|
|
382
|
+
"displayName": "Graph-It-Live: Get Symbol Graph",
|
|
383
|
+
"icon": "$(symbol-structure)",
|
|
384
|
+
"userDescription": "Get all symbols (functions, classes, variables) defined in a file and their relationships",
|
|
385
|
+
"modelDescription": "WHEN: you need to understand the symbol-level structure of a file — which functions, classes, and variables it defines and how they relate. WHY: you cannot determine symbol-to-symbol dependency relationships from source text alone without AST analysis. WHAT: returns all symbols (functions, classes, variables) defined in the file with their kinds, export status, and cross-file dependency edges.",
|
|
386
|
+
"inputSchema": {
|
|
387
|
+
"type": "object",
|
|
388
|
+
"properties": {
|
|
389
|
+
"filePath": {
|
|
390
|
+
"type": "string",
|
|
391
|
+
"description": "The absolute path to the file to inspect"
|
|
392
|
+
}
|
|
393
|
+
},
|
|
394
|
+
"required": [
|
|
395
|
+
"filePath"
|
|
396
|
+
]
|
|
397
|
+
}
|
|
398
|
+
},
|
|
399
|
+
{
|
|
400
|
+
"name": "graph-it-live_find_unused_symbols",
|
|
401
|
+
"canBeReferencedInPrompt": true,
|
|
402
|
+
"toolReferenceName": "graphUnused",
|
|
403
|
+
"tags": [
|
|
404
|
+
"graph-it-live",
|
|
405
|
+
"symbols",
|
|
406
|
+
"dead-code"
|
|
407
|
+
],
|
|
408
|
+
"displayName": "Graph-It-Live: Find Unused Exported Symbols",
|
|
409
|
+
"icon": "$(trash)",
|
|
410
|
+
"userDescription": "Find exported symbols that are not used anywhere in the project (dead code)",
|
|
411
|
+
"modelDescription": "WHEN: you want to identify dead code or unused exports in a file. WHY: determining which exports are unused requires checking every file in the project that could import them — something impossible to do with simple text search. WHAT: returns a list of exported symbols that are not referenced anywhere in the project, with an unused percentage.",
|
|
412
|
+
"inputSchema": {
|
|
413
|
+
"type": "object",
|
|
414
|
+
"properties": {
|
|
415
|
+
"filePath": {
|
|
416
|
+
"type": "string",
|
|
417
|
+
"description": "The absolute path to the file to check for unused exports"
|
|
418
|
+
}
|
|
419
|
+
},
|
|
420
|
+
"required": [
|
|
421
|
+
"filePath"
|
|
422
|
+
]
|
|
423
|
+
}
|
|
424
|
+
},
|
|
425
|
+
{
|
|
426
|
+
"name": "graph-it-live_get_symbol_callers",
|
|
427
|
+
"canBeReferencedInPrompt": true,
|
|
428
|
+
"toolReferenceName": "graphCallers",
|
|
429
|
+
"tags": [
|
|
430
|
+
"graph-it-live",
|
|
431
|
+
"symbols",
|
|
432
|
+
"references"
|
|
433
|
+
],
|
|
434
|
+
"displayName": "Graph-It-Live: Get Symbol Callers",
|
|
435
|
+
"icon": "$(call-incoming)",
|
|
436
|
+
"userDescription": "Find all symbols across the project that call or use a given exported symbol",
|
|
437
|
+
"modelDescription": "WHEN: you need to know which symbols (functions, classes) use or call a specific exported symbol. WHY: finding all callers of a symbol across the project requires a reverse symbol index that cannot be built by reading individual files. WHAT: returns all symbols across the project that reference the given symbol, with file paths and symbol IDs.",
|
|
438
|
+
"inputSchema": {
|
|
439
|
+
"type": "object",
|
|
440
|
+
"properties": {
|
|
441
|
+
"filePath": {
|
|
442
|
+
"type": "string",
|
|
443
|
+
"description": "The absolute path to the file containing the symbol"
|
|
444
|
+
},
|
|
445
|
+
"symbolName": {
|
|
446
|
+
"type": "string",
|
|
447
|
+
"description": "The name of the symbol to find callers for (e.g. 'MyClass', 'handleRequest')"
|
|
448
|
+
}
|
|
449
|
+
},
|
|
450
|
+
"required": [
|
|
451
|
+
"filePath",
|
|
452
|
+
"symbolName"
|
|
453
|
+
]
|
|
454
|
+
}
|
|
455
|
+
},
|
|
456
|
+
{
|
|
457
|
+
"name": "graph-it-live_get_impact_analysis",
|
|
458
|
+
"canBeReferencedInPrompt": true,
|
|
459
|
+
"toolReferenceName": "graphImpact",
|
|
460
|
+
"tags": [
|
|
461
|
+
"graph-it-live",
|
|
462
|
+
"symbols",
|
|
463
|
+
"refactoring"
|
|
464
|
+
],
|
|
465
|
+
"displayName": "Graph-It-Live: Get Impact Analysis",
|
|
466
|
+
"icon": "$(report)",
|
|
467
|
+
"userDescription": "Analyze the scope and risk of changing a symbol — shows affected files and symbols",
|
|
468
|
+
"modelDescription": "WHEN: you are about to modify a symbol and want to understand the risk and scope of the change. WHY: determining transitive impact across the project requires traversing the full reverse dependency graph, which is impossible to do manually. WHAT: returns an impact level (high/medium/low), count of affected files and symbols, and the list of impacted items with their usage types (runtime vs type-only).",
|
|
469
|
+
"inputSchema": {
|
|
470
|
+
"type": "object",
|
|
471
|
+
"properties": {
|
|
472
|
+
"filePath": {
|
|
473
|
+
"type": "string",
|
|
474
|
+
"description": "The absolute path to the file containing the symbol"
|
|
475
|
+
},
|
|
476
|
+
"symbolName": {
|
|
477
|
+
"type": "string",
|
|
478
|
+
"description": "The name of the symbol to analyze impact for"
|
|
479
|
+
},
|
|
480
|
+
"includeTransitive": {
|
|
481
|
+
"type": "boolean",
|
|
482
|
+
"description": "Whether to include transitive (indirect) dependents (default: false)"
|
|
483
|
+
},
|
|
484
|
+
"maxDepth": {
|
|
485
|
+
"type": "number",
|
|
486
|
+
"description": "Maximum transitive depth to traverse when includeTransitive is true (default: 3)"
|
|
487
|
+
}
|
|
488
|
+
},
|
|
489
|
+
"required": [
|
|
490
|
+
"filePath",
|
|
491
|
+
"symbolName"
|
|
492
|
+
]
|
|
493
|
+
}
|
|
494
|
+
},
|
|
495
|
+
{
|
|
496
|
+
"name": "graph-it-live_get_index_status",
|
|
497
|
+
"canBeReferencedInPrompt": true,
|
|
498
|
+
"toolReferenceName": "graphIndexStatus",
|
|
499
|
+
"tags": [
|
|
500
|
+
"graph-it-live",
|
|
501
|
+
"index",
|
|
502
|
+
"status"
|
|
503
|
+
],
|
|
504
|
+
"displayName": "Graph-It-Live: Get Index Status",
|
|
505
|
+
"icon": "$(pulse)",
|
|
506
|
+
"userDescription": "Check if the dependency index is ready and get cache statistics",
|
|
507
|
+
"modelDescription": "WHEN: you need to check whether the dependency index is ready before calling other analysis tools. WHY: other tools may return incomplete results if the index is still being built. WHAT: returns the current indexing state (idle/indexing/complete/error), cache statistics, and reverse index availability.",
|
|
508
|
+
"inputSchema": {
|
|
509
|
+
"type": "object",
|
|
510
|
+
"properties": {}
|
|
511
|
+
}
|
|
512
|
+
},
|
|
513
|
+
{
|
|
514
|
+
"name": "graph-it-live_parse_imports",
|
|
515
|
+
"canBeReferencedInPrompt": true,
|
|
516
|
+
"toolReferenceName": "graphImports",
|
|
517
|
+
"tags": [
|
|
518
|
+
"graph-it-live",
|
|
519
|
+
"imports",
|
|
520
|
+
"parsing"
|
|
521
|
+
],
|
|
522
|
+
"displayName": "Graph-It-Live: Parse Imports",
|
|
523
|
+
"icon": "$(list-tree)",
|
|
524
|
+
"userDescription": "Parse and list all import statements in a file with resolved paths",
|
|
525
|
+
"modelDescription": "WHEN: you need a lightweight list of import statements from a file without full graph traversal. WHY: this uses the full language-aware parser pipeline to extract and resolve imports more accurately than regex-based text parsing. WHAT: returns each import with its module specifier, import type (import/require/export/dynamic), and source line number.",
|
|
526
|
+
"inputSchema": {
|
|
527
|
+
"type": "object",
|
|
528
|
+
"properties": {
|
|
529
|
+
"filePath": {
|
|
530
|
+
"type": "string",
|
|
531
|
+
"description": "The absolute path to the file to parse imports from"
|
|
532
|
+
}
|
|
533
|
+
},
|
|
534
|
+
"required": [
|
|
535
|
+
"filePath"
|
|
536
|
+
]
|
|
537
|
+
}
|
|
538
|
+
},
|
|
539
|
+
{
|
|
540
|
+
"name": "graph-it-live_generate_codemap",
|
|
541
|
+
"canBeReferencedInPrompt": true,
|
|
542
|
+
"toolReferenceName": "graphCodemap",
|
|
543
|
+
"tags": [
|
|
544
|
+
"graph-it-live",
|
|
545
|
+
"symbols",
|
|
546
|
+
"codemap"
|
|
547
|
+
],
|
|
548
|
+
"displayName": "Graph-It-Live: Generate Code Map",
|
|
549
|
+
"icon": "$(file-code)",
|
|
550
|
+
"userDescription": "Generate an AI-friendly code map summarizing a file's structure, symbols, and call flow",
|
|
551
|
+
"modelDescription": "WHEN: you need a rich, AI-friendly summary of a file's structure, relationships, and internal call flow. WHY: understanding a file requires combining symbol analysis, import resolution, reverse dependencies, and intra-file call hierarchy — none of which can be inferred from reading the source alone. WHAT: returns exported/internal symbols, file-level dependencies and dependents, intra-file call flow edges, cycle detection, and timing metadata.",
|
|
552
|
+
"inputSchema": {
|
|
553
|
+
"type": "object",
|
|
554
|
+
"properties": {
|
|
555
|
+
"filePath": {
|
|
556
|
+
"type": "string",
|
|
557
|
+
"description": "The absolute path to the file to generate a code map for"
|
|
558
|
+
}
|
|
559
|
+
},
|
|
560
|
+
"required": [
|
|
561
|
+
"filePath"
|
|
562
|
+
]
|
|
563
|
+
}
|
|
564
|
+
},
|
|
565
|
+
{
|
|
566
|
+
"name": "graph-it-live_expand_node",
|
|
567
|
+
"canBeReferencedInPrompt": true,
|
|
568
|
+
"toolReferenceName": "graphExpand",
|
|
569
|
+
"tags": [
|
|
570
|
+
"graph-it-live",
|
|
571
|
+
"dependencies",
|
|
572
|
+
"graph"
|
|
573
|
+
],
|
|
574
|
+
"displayName": "Graph-It-Live: Expand Node Dependencies",
|
|
575
|
+
"icon": "$(expand-all)",
|
|
576
|
+
"userDescription": "Discover new dependencies from a file, excluding an already-known set (incremental graph exploration)",
|
|
577
|
+
"modelDescription": "WHEN: you need to incrementally explore the dependency graph from a specific node, discovering new files not already in your known set. WHY: this efficiently finds only the files you do not already know about, avoiding re-analysis of the entire graph. WHAT: returns newly discovered nodes (file paths) and edges (import relationships) that were not in the provided known set.",
|
|
578
|
+
"inputSchema": {
|
|
579
|
+
"type": "object",
|
|
580
|
+
"properties": {
|
|
581
|
+
"filePath": {
|
|
582
|
+
"type": "string",
|
|
583
|
+
"description": "The absolute path to the file to expand from"
|
|
584
|
+
},
|
|
585
|
+
"knownPaths": {
|
|
586
|
+
"type": "array",
|
|
587
|
+
"items": {
|
|
588
|
+
"type": "string"
|
|
589
|
+
},
|
|
590
|
+
"description": "List of file paths already known — newly discovered nodes will exclude these"
|
|
591
|
+
}
|
|
592
|
+
},
|
|
593
|
+
"required": [
|
|
594
|
+
"filePath"
|
|
595
|
+
]
|
|
596
|
+
}
|
|
597
|
+
},
|
|
598
|
+
{
|
|
599
|
+
"name": "graph-it-live_verify_dependency_usage",
|
|
600
|
+
"canBeReferencedInPrompt": true,
|
|
601
|
+
"toolReferenceName": "graphVerifyUsage",
|
|
602
|
+
"tags": [
|
|
603
|
+
"graph-it-live",
|
|
604
|
+
"dependencies",
|
|
605
|
+
"dead-code"
|
|
606
|
+
],
|
|
607
|
+
"displayName": "Graph-It-Live: Verify Dependency Usage",
|
|
608
|
+
"icon": "$(check)",
|
|
609
|
+
"userDescription": "Check if an import between two files is actually used or is a dead import",
|
|
610
|
+
"modelDescription": "WHEN: you want to check if a dependency between two files is real or dead code (an unused import). WHY: raw imports do not tell the whole story — a file might import something but never use it; AST analysis is required to verify actual symbol usage. WHAT: returns a boolean indicating whether the sourceFile actually uses any symbol from targetFile.",
|
|
611
|
+
"inputSchema": {
|
|
612
|
+
"type": "object",
|
|
613
|
+
"properties": {
|
|
614
|
+
"sourceFile": {
|
|
615
|
+
"type": "string",
|
|
616
|
+
"description": "The absolute path to the file that imports the target"
|
|
617
|
+
},
|
|
618
|
+
"targetFile": {
|
|
619
|
+
"type": "string",
|
|
620
|
+
"description": "The absolute path to the imported file"
|
|
621
|
+
}
|
|
622
|
+
},
|
|
623
|
+
"required": [
|
|
624
|
+
"sourceFile",
|
|
625
|
+
"targetFile"
|
|
626
|
+
]
|
|
627
|
+
}
|
|
628
|
+
},
|
|
629
|
+
{
|
|
630
|
+
"name": "graph-it-live_invalidate_files",
|
|
631
|
+
"canBeReferencedInPrompt": true,
|
|
632
|
+
"toolReferenceName": "graphInvalidate",
|
|
633
|
+
"tags": [
|
|
634
|
+
"graph-it-live",
|
|
635
|
+
"index",
|
|
636
|
+
"cache"
|
|
637
|
+
],
|
|
638
|
+
"displayName": "Graph-It-Live: Invalidate File Cache",
|
|
639
|
+
"icon": "$(discard)",
|
|
640
|
+
"userDescription": "Flush cached dependency data for specific files so the next analysis re-reads them",
|
|
641
|
+
"modelDescription": "WHEN: you have modified files and need to refresh the dependency analysis cache. WHY: the dependency analyzer caches file analysis; when imports/exports change the cache becomes stale. WHAT: clears the cache for the given file paths, returns how many were invalidated.",
|
|
642
|
+
"inputSchema": {
|
|
643
|
+
"type": "object",
|
|
644
|
+
"properties": {
|
|
645
|
+
"filePaths": {
|
|
646
|
+
"type": "array",
|
|
647
|
+
"items": {
|
|
648
|
+
"type": "string"
|
|
649
|
+
},
|
|
650
|
+
"description": "Absolute paths of the files to invalidate from the cache"
|
|
651
|
+
}
|
|
652
|
+
},
|
|
653
|
+
"required": [
|
|
654
|
+
"filePaths"
|
|
655
|
+
]
|
|
656
|
+
}
|
|
657
|
+
},
|
|
658
|
+
{
|
|
659
|
+
"name": "graph-it-live_rebuild_index",
|
|
660
|
+
"canBeReferencedInPrompt": true,
|
|
661
|
+
"toolReferenceName": "graphRebuildIndex",
|
|
662
|
+
"tags": [
|
|
663
|
+
"graph-it-live",
|
|
664
|
+
"index",
|
|
665
|
+
"cache"
|
|
666
|
+
],
|
|
667
|
+
"displayName": "Graph-It-Live: Rebuild Full Index",
|
|
668
|
+
"icon": "$(sync)",
|
|
669
|
+
"userDescription": "Clear all cached dependency data and rebuild the full project index from scratch",
|
|
670
|
+
"modelDescription": "WHEN: the dependency index seems out of sync (after major refactoring, branch switches, or many file changes). WHY: clears ALL cached data and re-indexes the entire workspace, ensuring the dependency graph is accurate. WHAT: returns the rebuild time and new cache size. Note: can take several seconds for large workspaces.",
|
|
671
|
+
"inputSchema": {
|
|
672
|
+
"type": "object",
|
|
673
|
+
"properties": {}
|
|
674
|
+
}
|
|
675
|
+
},
|
|
676
|
+
{
|
|
677
|
+
"name": "graph-it-live_get_symbol_dependents",
|
|
678
|
+
"canBeReferencedInPrompt": true,
|
|
679
|
+
"toolReferenceName": "graphDependents",
|
|
680
|
+
"tags": [
|
|
681
|
+
"graph-it-live",
|
|
682
|
+
"symbols",
|
|
683
|
+
"references"
|
|
684
|
+
],
|
|
685
|
+
"displayName": "Graph-It-Live: Get Symbol Dependents",
|
|
686
|
+
"icon": "$(call-outgoing)",
|
|
687
|
+
"userDescription": "Find all symbols across the codebase that directly depend on (use) a specific symbol",
|
|
688
|
+
"modelDescription": "WHEN: you need to know every file and symbol that calls or uses a given exported symbol — essential for surgical refactoring. WHY: symbol-level impact requires a reverse symbol index that cannot be built by reading individual files. WHAT: returns a list of all symbol dependencies that use the target symbol, with file paths and symbol IDs.",
|
|
689
|
+
"inputSchema": {
|
|
690
|
+
"type": "object",
|
|
691
|
+
"properties": {
|
|
692
|
+
"filePath": {
|
|
693
|
+
"type": "string",
|
|
694
|
+
"description": "The absolute path to the file containing the symbol"
|
|
695
|
+
},
|
|
696
|
+
"symbolName": {
|
|
697
|
+
"type": "string",
|
|
698
|
+
"description": "The name of the symbol to find dependents for"
|
|
699
|
+
}
|
|
700
|
+
},
|
|
701
|
+
"required": [
|
|
702
|
+
"filePath",
|
|
703
|
+
"symbolName"
|
|
704
|
+
]
|
|
705
|
+
}
|
|
706
|
+
},
|
|
707
|
+
{
|
|
708
|
+
"name": "graph-it-live_trace_function_execution",
|
|
709
|
+
"canBeReferencedInPrompt": true,
|
|
710
|
+
"toolReferenceName": "graphTrace",
|
|
711
|
+
"tags": [
|
|
712
|
+
"graph-it-live",
|
|
713
|
+
"symbols",
|
|
714
|
+
"execution"
|
|
715
|
+
],
|
|
716
|
+
"displayName": "Graph-It-Live: Trace Function Execution",
|
|
717
|
+
"icon": "$(type-hierarchy-sub)",
|
|
718
|
+
"userDescription": "Trace the full recursive call chain starting from a function or method",
|
|
719
|
+
"modelDescription": "WHEN: you need to trace the full, deep call chain from a root symbol through multiple files. WHY: provides a complete picture of what a function calls, recursively following the call chain across files until it reaches external modules or the depth limit. WHAT: returns the root symbol, the full call chain with depth information, all visited symbols, and whether the max depth was reached.",
|
|
720
|
+
"inputSchema": {
|
|
721
|
+
"type": "object",
|
|
722
|
+
"properties": {
|
|
723
|
+
"filePath": {
|
|
724
|
+
"type": "string",
|
|
725
|
+
"description": "The absolute path to the file containing the function"
|
|
726
|
+
},
|
|
727
|
+
"symbolName": {
|
|
728
|
+
"type": "string",
|
|
729
|
+
"description": "The name of the function or method to trace"
|
|
730
|
+
},
|
|
731
|
+
"maxDepth": {
|
|
732
|
+
"type": "number",
|
|
733
|
+
"description": "Maximum call chain depth to follow (default: 10)"
|
|
734
|
+
}
|
|
735
|
+
},
|
|
736
|
+
"required": [
|
|
737
|
+
"filePath",
|
|
738
|
+
"symbolName"
|
|
739
|
+
]
|
|
740
|
+
}
|
|
741
|
+
},
|
|
742
|
+
{
|
|
743
|
+
"name": "graph-it-live_analyze_file_logic",
|
|
744
|
+
"canBeReferencedInPrompt": true,
|
|
745
|
+
"toolReferenceName": "graphFileLogic",
|
|
746
|
+
"tags": [
|
|
747
|
+
"graph-it-live",
|
|
748
|
+
"symbols",
|
|
749
|
+
"ast"
|
|
750
|
+
],
|
|
751
|
+
"displayName": "Graph-It-Live: Analyze File Logic",
|
|
752
|
+
"icon": "$(code)",
|
|
753
|
+
"userDescription": "Analyze the intra-file call hierarchy — which functions call which within a single file",
|
|
754
|
+
"modelDescription": "WHEN: you need to understand the internal call relationships between functions and methods within a single file. WHY: without AST analysis you cannot see actual call relationships between functions in a file. WHAT: returns an intra-file call graph with nodes (symbols with type, export status, line range), edges (caller→callee with line number), cycle detection, and timing.",
|
|
755
|
+
"inputSchema": {
|
|
756
|
+
"type": "object",
|
|
757
|
+
"properties": {
|
|
758
|
+
"filePath": {
|
|
759
|
+
"type": "string",
|
|
760
|
+
"description": "The absolute path to the file to analyze"
|
|
761
|
+
}
|
|
762
|
+
},
|
|
763
|
+
"required": [
|
|
764
|
+
"filePath"
|
|
765
|
+
]
|
|
766
|
+
}
|
|
767
|
+
},
|
|
768
|
+
{
|
|
769
|
+
"name": "graph-it-live_resolve_module_path",
|
|
770
|
+
"canBeReferencedInPrompt": true,
|
|
771
|
+
"toolReferenceName": "graphResolve",
|
|
772
|
+
"tags": [
|
|
773
|
+
"graph-it-live",
|
|
774
|
+
"imports",
|
|
775
|
+
"resolution"
|
|
776
|
+
],
|
|
777
|
+
"displayName": "Graph-It-Live: Resolve Module Path",
|
|
778
|
+
"icon": "$(link)",
|
|
779
|
+
"userDescription": "Resolve a module specifier (e.g. './utils', '@/components/Button') to its absolute file path",
|
|
780
|
+
"modelDescription": "WHEN: you need to know which physical file a TypeScript/JavaScript import resolves to, especially for path aliases, barrel files, or relative imports. WHY: without the project's tsconfig path mappings you cannot reliably resolve aliases like '@/' or complex relative paths. WHAT: returns the resolved absolute path, a workspace-relative path, and a boolean indicating whether resolution succeeded.",
|
|
781
|
+
"inputSchema": {
|
|
782
|
+
"type": "object",
|
|
783
|
+
"properties": {
|
|
784
|
+
"fromFile": {
|
|
785
|
+
"type": "string",
|
|
786
|
+
"description": "Absolute path of the file containing the import statement"
|
|
787
|
+
},
|
|
788
|
+
"moduleSpecifier": {
|
|
789
|
+
"type": "string",
|
|
790
|
+
"description": "The module specifier to resolve (e.g. './utils', '@/components/Button', 'lodash')"
|
|
791
|
+
}
|
|
792
|
+
},
|
|
793
|
+
"required": [
|
|
794
|
+
"fromFile",
|
|
795
|
+
"moduleSpecifier"
|
|
796
|
+
]
|
|
797
|
+
}
|
|
798
|
+
},
|
|
799
|
+
{
|
|
800
|
+
"name": "graph-it-live_analyze_breaking_changes",
|
|
801
|
+
"canBeReferencedInPrompt": true,
|
|
802
|
+
"toolReferenceName": "graphBreaking",
|
|
803
|
+
"tags": [
|
|
804
|
+
"graph-it-live",
|
|
805
|
+
"symbols",
|
|
806
|
+
"refactoring"
|
|
807
|
+
],
|
|
808
|
+
"displayName": "Graph-It-Live: Analyze Breaking Changes",
|
|
809
|
+
"icon": "$(warning)",
|
|
810
|
+
"userDescription": "Detect breaking changes when modifying function signatures, interface members, or type aliases",
|
|
811
|
+
"modelDescription": "WHEN: you are about to modify a function signature, interface, or type alias and want to know if callers will break. WHY: static analysis requires parsing both the old and new AST to compare signatures — you cannot reliably do this from text diffs alone. WHAT: returns a list of breaking changes (parameter removed, type changed, visibility reduced, member removed, optional→required), non-breaking changes, and per-symbol severity (error/warning).",
|
|
812
|
+
"inputSchema": {
|
|
813
|
+
"type": "object",
|
|
814
|
+
"properties": {
|
|
815
|
+
"filePath": {
|
|
816
|
+
"type": "string",
|
|
817
|
+
"description": "Absolute path to the file being modified"
|
|
818
|
+
},
|
|
819
|
+
"oldContent": {
|
|
820
|
+
"type": "string",
|
|
821
|
+
"description": "The previous file content to compare against"
|
|
822
|
+
},
|
|
823
|
+
"symbolName": {
|
|
824
|
+
"type": "string",
|
|
825
|
+
"description": "Optional: restrict analysis to a specific symbol name"
|
|
826
|
+
},
|
|
827
|
+
"newContent": {
|
|
828
|
+
"type": "string",
|
|
829
|
+
"description": "The new file content (if omitted, reads the current file from disk)"
|
|
830
|
+
}
|
|
831
|
+
},
|
|
832
|
+
"required": [
|
|
833
|
+
"filePath",
|
|
834
|
+
"oldContent"
|
|
835
|
+
]
|
|
836
|
+
}
|
|
837
|
+
},
|
|
838
|
+
{
|
|
839
|
+
"name": "graph-it-live_query_call_graph",
|
|
840
|
+
"canBeReferencedInPrompt": true,
|
|
841
|
+
"toolReferenceName": "graphCallGraph",
|
|
842
|
+
"tags": [
|
|
843
|
+
"graph-it-live",
|
|
844
|
+
"callgraph",
|
|
845
|
+
"symbols"
|
|
846
|
+
],
|
|
847
|
+
"displayName": "Graph-It-Live: Query Call Graph",
|
|
848
|
+
"icon": "$(type-hierarchy)",
|
|
849
|
+
"userDescription": "Query cross-file callers and callees of a symbol via BFS traversal on the indexed call graph database",
|
|
850
|
+
"modelDescription": "WHEN: you need to understand which functions call a given symbol across multiple files, or what a function calls transitively (beyond a single file). WHY: cross-file call relationships are not visible from reading a single file — they require a pre-built graph index. WHAT: returns the target symbol's metadata plus lists of callers/callees with file paths, relation types (CALLS/INHERITS/IMPLEMENTS/USES), and cycle flags. Requires the Call Graph panel to have been opened at least once to build the index.",
|
|
851
|
+
"inputSchema": {
|
|
852
|
+
"type": "object",
|
|
853
|
+
"properties": {
|
|
854
|
+
"filePath": {
|
|
855
|
+
"type": "string",
|
|
856
|
+
"description": "Absolute path to the file containing the target symbol"
|
|
857
|
+
},
|
|
858
|
+
"symbolName": {
|
|
859
|
+
"type": "string",
|
|
860
|
+
"description": "Name of the symbol to query (function, class, method)"
|
|
861
|
+
},
|
|
862
|
+
"direction": {
|
|
863
|
+
"type": "string",
|
|
864
|
+
"enum": [
|
|
865
|
+
"callers",
|
|
866
|
+
"callees",
|
|
867
|
+
"both"
|
|
868
|
+
],
|
|
869
|
+
"description": "Traversal direction: 'callers' (who calls this), 'callees' (what it calls), or 'both' (default)"
|
|
870
|
+
},
|
|
871
|
+
"depth": {
|
|
872
|
+
"type": "number",
|
|
873
|
+
"description": "Maximum BFS traversal depth (default: 2, max: 10)"
|
|
874
|
+
},
|
|
875
|
+
"relationTypes": {
|
|
876
|
+
"type": "array",
|
|
877
|
+
"items": {
|
|
878
|
+
"type": "string",
|
|
879
|
+
"enum": [
|
|
880
|
+
"CALLS",
|
|
881
|
+
"INHERITS",
|
|
882
|
+
"IMPLEMENTS",
|
|
883
|
+
"USES"
|
|
884
|
+
]
|
|
885
|
+
},
|
|
886
|
+
"description": "Filter by relation types (default: all types included)"
|
|
887
|
+
}
|
|
888
|
+
},
|
|
889
|
+
"required": [
|
|
890
|
+
"filePath",
|
|
891
|
+
"symbolName"
|
|
892
|
+
]
|
|
893
|
+
}
|
|
894
|
+
}
|
|
895
|
+
],
|
|
896
|
+
"configuration": {
|
|
897
|
+
"title": "Graph-It-Live",
|
|
898
|
+
"properties": {
|
|
899
|
+
"graph-it-live.maxDepth": {
|
|
900
|
+
"type": "number",
|
|
901
|
+
"default": 50,
|
|
902
|
+
"description": "Maximum dependency depth to analyze",
|
|
903
|
+
"minimum": 1,
|
|
904
|
+
"maximum": 100
|
|
905
|
+
},
|
|
906
|
+
"graph-it-live.excludeNodeModules": {
|
|
907
|
+
"type": "boolean",
|
|
908
|
+
"default": true,
|
|
909
|
+
"description": "Exclude node_modules from graph"
|
|
910
|
+
},
|
|
911
|
+
"graph-it-live.enableMcpServer": {
|
|
912
|
+
"type": "boolean",
|
|
913
|
+
"default": false,
|
|
914
|
+
"description": "Enable MCP (Model Context Protocol) server for LLM integration. When enabled, exposes dependency analysis tools to GitHub Copilot and other MCP-compatible AI assistants.",
|
|
915
|
+
"markdownDescription": "Enable **MCP (Model Context Protocol)** server for LLM integration. When enabled, exposes dependency analysis tools to GitHub Copilot and other MCP-compatible AI assistants.\n\n[Learn more about MCP](https://code.visualstudio.com/api/extension-guides/ai/mcp)"
|
|
916
|
+
},
|
|
917
|
+
"graph-it-live.enableMcpDebugLogging": {
|
|
918
|
+
"type": "boolean",
|
|
919
|
+
"default": false,
|
|
920
|
+
"description": "Enable detailed debug logging for MCP server. Creates ~/mcp-debug.log with automatic rotation (5MB limit per file, keeps 2 files). Only enable for troubleshooting.",
|
|
921
|
+
"markdownDescription": "**[Privacy Notice]** Enable detailed debug logging for MCP server. Creates `~/mcp-debug.log` with automatic rotation (5MB limit per file, keeps last 2 files). Log file may contain project paths and file names. Only enable temporarily for troubleshooting, then disable to prevent unnecessary data accumulation."
|
|
922
|
+
},
|
|
923
|
+
"graph-it-live.enableBackgroundIndexing": {
|
|
924
|
+
"type": "boolean",
|
|
925
|
+
"default": true,
|
|
926
|
+
"description": "Enable background indexing for faster reverse dependency lookups. When enabled, the extension will index all files in the workspace at startup."
|
|
927
|
+
},
|
|
928
|
+
"graph-it-live.preIndexCallGraph": {
|
|
929
|
+
"type": "boolean",
|
|
930
|
+
"default": true,
|
|
931
|
+
"description": "Pre-index the call graph database at startup alongside background indexing. When enabled, the first 'Show Call Graph' command is near-instant because the symbol-level index is already built."
|
|
932
|
+
},
|
|
933
|
+
"graph-it-live.persistIndex": {
|
|
934
|
+
"type": "boolean",
|
|
935
|
+
"default": false,
|
|
936
|
+
"description": "Persist the reverse index to disk for faster startup. Files are validated using mtime and size to detect changes. Enable this option only if you have some performance issues on large projects."
|
|
937
|
+
},
|
|
938
|
+
"graph-it-live.indexingConcurrency": {
|
|
939
|
+
"type": "number",
|
|
940
|
+
"default": 4,
|
|
941
|
+
"description": "Number of files to process in parallel during background indexing. Lower values reduce CPU usage but increase indexing time.",
|
|
942
|
+
"markdownDescription": "Number of files to process in parallel during background indexing.\n\n⚠️ **Note**: This setting is only editable when Performance Profile is set to 'custom'. Otherwise, it's automatically configured by the selected profile.",
|
|
943
|
+
"minimum": 1,
|
|
944
|
+
"maximum": 16,
|
|
945
|
+
"editPresentation": "multilineText",
|
|
946
|
+
"order": 100
|
|
947
|
+
},
|
|
948
|
+
"graph-it-live.indexingStartDelay": {
|
|
949
|
+
"type": "number",
|
|
950
|
+
"default": 1000,
|
|
951
|
+
"description": "Delay in milliseconds before starting background indexing after extension activation. Allows VS Code to finish startup first.",
|
|
952
|
+
"minimum": 0,
|
|
953
|
+
"maximum": 30000
|
|
954
|
+
},
|
|
955
|
+
"graph-it-live.logLevel": {
|
|
956
|
+
"type": "string",
|
|
957
|
+
"enum": [
|
|
958
|
+
"debug",
|
|
959
|
+
"info",
|
|
960
|
+
"warn",
|
|
961
|
+
"error",
|
|
962
|
+
"none"
|
|
963
|
+
],
|
|
964
|
+
"default": "info",
|
|
965
|
+
"description": "Logging level for the extension. Debug shows all logs, none disables logging.",
|
|
966
|
+
"markdownDescription": "Logging level for the extension output channel.\n\n- **debug**: Verbose output for troubleshooting\n- **info**: Standard operation logs\n- **warn**: Warnings only\n- **error**: Errors only\n- **none**: Disable logging"
|
|
967
|
+
},
|
|
968
|
+
"graph-it-live.unusedDependencyMode": {
|
|
969
|
+
"type": "string",
|
|
970
|
+
"enum": [
|
|
971
|
+
"hide",
|
|
972
|
+
"dim"
|
|
973
|
+
],
|
|
974
|
+
"default": "hide",
|
|
975
|
+
"description": "Choose how to display unused dependencies in the graph. 'hide' removes them, 'dim' reduces their opacity.",
|
|
976
|
+
"markdownDescription": "Choose how to display unused dependencies in the graph.\n\n- **hide**: Remove edges for imports that are not actually used in the code\n- **dim**: Show unused edges with reduced opacity"
|
|
977
|
+
},
|
|
978
|
+
"graph-it-live.unusedAnalysisConcurrency": {
|
|
979
|
+
"type": "number",
|
|
980
|
+
"default": 4,
|
|
981
|
+
"minimum": 1,
|
|
982
|
+
"maximum": 16,
|
|
983
|
+
"description": "Number of source files to analyze in parallel for unused dependency detection. Lower values use less memory but are slower. Adjust based on your machine's capabilities.",
|
|
984
|
+
"markdownDescription": "Number of source files to analyze in parallel for unused dependency detection.\n\n⚠️ **Note**: This setting is only editable when Performance Profile is set to 'custom'. Otherwise, it's automatically configured by the selected profile.\n\n- **1-2**: Low-memory machines (<4GB RAM)\n- **4**: Default, balanced\n- **8-16**: High-performance machines (16GB+ RAM)",
|
|
985
|
+
"order": 101
|
|
986
|
+
},
|
|
987
|
+
"graph-it-live.unusedAnalysisMaxEdges": {
|
|
988
|
+
"type": "number",
|
|
989
|
+
"default": 2000,
|
|
990
|
+
"minimum": 0,
|
|
991
|
+
"description": "Skip automatic unused dependency analysis if the graph has more edges than this threshold. Set to 0 to disable the limit. Manual analysis via toolbar button still works.",
|
|
992
|
+
"markdownDescription": "Skip automatic unused dependency analysis if the graph exceeds this edge count.\n\n⚠️ **Note**: This setting is only editable when Performance Profile is set to 'custom'. Otherwise, it's automatically configured by the selected profile.\n\n- **0**: No limit (always analyze)\n- **1000-2000**: Recommended for low-memory machines\n- **5000+**: High-performance machines",
|
|
993
|
+
"order": 102
|
|
994
|
+
},
|
|
995
|
+
"graph-it-live.persistUnusedAnalysisCache": {
|
|
996
|
+
"type": "boolean",
|
|
997
|
+
"default": false,
|
|
998
|
+
"description": "Cache unused dependency analysis results to disk for faster subsequent loads. Results are invalidated when files change.",
|
|
999
|
+
"markdownDescription": "Cache unused dependency analysis results to disk.\n\n⚠️ **Experimental**: Enable for large projects with stable dependencies. Disable if you experience stale results."
|
|
1000
|
+
},
|
|
1001
|
+
"graph-it-live.maxUnusedAnalysisCacheSize": {
|
|
1002
|
+
"type": "number",
|
|
1003
|
+
"default": 200,
|
|
1004
|
+
"minimum": 10,
|
|
1005
|
+
"maximum": 1000,
|
|
1006
|
+
"description": "Maximum number of source files to cache for unused dependency analysis. Uses LRU (Least Recently Used) eviction when limit is reached.",
|
|
1007
|
+
"markdownDescription": "Maximum number of source files to cache for unused dependency analysis.\n\n- **Lower values** (50-100): Reduce memory usage on constrained systems\n- **Higher values** (500-1000): Better cache hit rate on large projects\n\nUses **LRU eviction** - least recently accessed entries are removed when limit is reached."
|
|
1008
|
+
},
|
|
1009
|
+
"graph-it-live.maxCacheSize": {
|
|
1010
|
+
"type": "number",
|
|
1011
|
+
"default": 500,
|
|
1012
|
+
"minimum": 50,
|
|
1013
|
+
"maximum": 2000,
|
|
1014
|
+
"description": "Maximum number of file dependency analyses to keep in memory cache. Lower values reduce memory usage.",
|
|
1015
|
+
"markdownDescription": "Maximum number of file dependency analyses to keep in memory cache.\n\n⚠️ **Note**: This setting is only editable when Performance Profile is set to 'custom'. Otherwise, it's automatically configured by the selected profile.",
|
|
1016
|
+
"order": 103
|
|
1017
|
+
},
|
|
1018
|
+
"graph-it-live.maxSymbolCacheSize": {
|
|
1019
|
+
"type": "number",
|
|
1020
|
+
"default": 200,
|
|
1021
|
+
"minimum": 50,
|
|
1022
|
+
"maximum": 1000,
|
|
1023
|
+
"description": "Maximum number of symbol analysis results to keep in memory cache. Lower values reduce memory usage.",
|
|
1024
|
+
"markdownDescription": "Maximum number of symbol analysis results to keep in memory cache.\n\n⚠️ **Note**: This setting is only editable when Performance Profile is set to 'custom'. Otherwise, it's automatically configured by the selected profile.",
|
|
1025
|
+
"order": 104
|
|
1026
|
+
},
|
|
1027
|
+
"graph-it-live.performanceProfile": {
|
|
1028
|
+
"type": "string",
|
|
1029
|
+
"enum": [
|
|
1030
|
+
"default",
|
|
1031
|
+
"low-memory",
|
|
1032
|
+
"high-performance",
|
|
1033
|
+
"custom"
|
|
1034
|
+
],
|
|
1035
|
+
"default": "default",
|
|
1036
|
+
"description": "Performance profile preset that automatically configures cache sizes and concurrency.",
|
|
1037
|
+
"markdownDescription": "Performance profile preset:\n\n- **default**: Balanced settings (4GB-8GB RAM)\n- **low-memory**: Optimized for machines with <4GB RAM\n- **high-performance**: Maximizes speed on powerful machines (16GB+ RAM)\n- **custom**: Manual configuration (all performance settings become editable)",
|
|
1038
|
+
"order": 99
|
|
1039
|
+
},
|
|
1040
|
+
"graph-it-live.symbolViewLayout": {
|
|
1041
|
+
"type": "string",
|
|
1042
|
+
"enum": [
|
|
1043
|
+
"hierarchical",
|
|
1044
|
+
"force-directed",
|
|
1045
|
+
"radial"
|
|
1046
|
+
],
|
|
1047
|
+
"default": "hierarchical",
|
|
1048
|
+
"description": "Layout algorithm for symbol-level drill-down view.",
|
|
1049
|
+
"markdownDescription": "Layout algorithm for symbol-level drill-down view:\n\n- **hierarchical**: Top-to-bottom layout (Sugiyama/Dagre). Best for call flows\n- **force-directed**: Interactive physics-based layout. Best for exploring relationships\n- **radial**: Concentric circles with the current file at center. Experimental"
|
|
1050
|
+
}
|
|
1051
|
+
}
|
|
1052
|
+
}
|
|
1053
|
+
},
|
|
1054
|
+
"bin": {
|
|
1055
|
+
"graph-it": "./bin/graph-it"
|
|
1056
|
+
},
|
|
1057
|
+
"scripts": {
|
|
1058
|
+
"vscode:prepublish": "npm run build -- --production",
|
|
1059
|
+
"build": "node esbuild.js",
|
|
1060
|
+
"build:cli": "node esbuild.js --cli-only",
|
|
1061
|
+
"watch": "node esbuild.js --watch",
|
|
1062
|
+
"compile": "npm run build",
|
|
1063
|
+
"compile:tests": "tsc -p tsconfig.vscode-e2e.json",
|
|
1064
|
+
"test": "vitest --run",
|
|
1065
|
+
"test:watch": "vitest --watch",
|
|
1066
|
+
"test:unit": "vitest run --run",
|
|
1067
|
+
"test:cli": "vitest run tests/cli",
|
|
1068
|
+
"test:coverage": "vitest run --coverage",
|
|
1069
|
+
"test:vscode": "npm run compile:tests && npm run compile && node ./tests/vscode-e2e/runTests.js",
|
|
1070
|
+
"test:vscode:vsix": "npm run package && npm run compile:tests && node ./tests/vscode-e2e/runTests.js --vsix",
|
|
1071
|
+
"test:all": "npm run test:unit",
|
|
1072
|
+
"test:bench": "node scripts/run-benchmarks.mjs",
|
|
1073
|
+
"test:mcp": "node scripts/test-mcp.js",
|
|
1074
|
+
"lint": "eslint src",
|
|
1075
|
+
"lint:fix": "eslint src --fix",
|
|
1076
|
+
"check:types": "tsc --noEmit",
|
|
1077
|
+
"audit": "npm audit",
|
|
1078
|
+
"audit:fix": "npm audit fix",
|
|
1079
|
+
"package": "vsce package",
|
|
1080
|
+
"package:vsix": "vsce package",
|
|
1081
|
+
"package:verify": "npx vsce ls | grep '\\.map$' && echo '❌ ERROR: .map files found in package!' && exit 1 || echo '✅ No .map files in package'",
|
|
1082
|
+
"publish": "vsce publish"
|
|
1083
|
+
},
|
|
1084
|
+
"dependencies": {
|
|
1085
|
+
"@dagrejs/dagre": "^2.0.4",
|
|
1086
|
+
"@modelcontextprotocol/sdk": "^1.29.0",
|
|
1087
|
+
"chokidar": "^5.0.0",
|
|
1088
|
+
"cytoscape": "^3.33.1",
|
|
1089
|
+
"cytoscape-fcose": "^2.2.0",
|
|
1090
|
+
"react": "^19.2.4",
|
|
1091
|
+
"react-dom": "^19.2.4",
|
|
1092
|
+
"reactflow": "^11.11.4",
|
|
1093
|
+
"sql.js": "^1.14.1",
|
|
1094
|
+
"tree-sitter-wasms": "^0.1.13",
|
|
1095
|
+
"ts-morph": "^27.0.2",
|
|
1096
|
+
"web-tree-sitter": "^0.26.7",
|
|
1097
|
+
"zod": "^4.3.6"
|
|
1098
|
+
},
|
|
1099
|
+
"devDependencies": {
|
|
1100
|
+
"@eslint/js": "^10.0.1",
|
|
1101
|
+
"@types/mocha": "^10.0.10",
|
|
1102
|
+
"@types/node": "^25.5.0",
|
|
1103
|
+
"@types/react": "^19.2.14",
|
|
1104
|
+
"@types/react-dom": "^19.2.3",
|
|
1105
|
+
"@types/sql.js": "^1.4.11",
|
|
1106
|
+
"@types/vscode": "^1.96.0",
|
|
1107
|
+
"@vitest/coverage-v8": "^4.1.2",
|
|
1108
|
+
"@vitest/ui": "^4.1.2",
|
|
1109
|
+
"@vscode/test-electron": "^2.5.2",
|
|
1110
|
+
"@vscode/vsce": "^3.7.2-7",
|
|
1111
|
+
"esbuild": "^0.27.4",
|
|
1112
|
+
"esbuild-css-modules-plugin": "^3.1.5",
|
|
1113
|
+
"eslint": "^10.1.0",
|
|
1114
|
+
"fast-check": "^4.6.0",
|
|
1115
|
+
"glob": "^13.0.6",
|
|
1116
|
+
"globals": "^17.4.0",
|
|
1117
|
+
"mocha": "^11.7.5",
|
|
1118
|
+
"typescript": "^6.0.2",
|
|
1119
|
+
"typescript-eslint": "^8.58.0",
|
|
1120
|
+
"vitest": "^4.1.2"
|
|
1121
|
+
},
|
|
1122
|
+
"overrides": {
|
|
1123
|
+
"picomatch": "^4.0.4",
|
|
1124
|
+
"minimatch": ">=10.2.1",
|
|
1125
|
+
"flatted": ">=3.4.2",
|
|
1126
|
+
"@vscode/vsce": {
|
|
1127
|
+
"minimatch": "^3.0.3"
|
|
1128
|
+
},
|
|
1129
|
+
"mocha": {
|
|
1130
|
+
"diff": ">=8.0.3",
|
|
1131
|
+
"serialize-javascript": ">=7.0.3"
|
|
1132
|
+
}
|
|
1133
|
+
},
|
|
1134
|
+
"files": [
|
|
1135
|
+
"bin/",
|
|
1136
|
+
"dist/graph-it.js",
|
|
1137
|
+
"dist/astWorker.js",
|
|
1138
|
+
"dist/mcpServer.mjs",
|
|
1139
|
+
"dist/mcpWorker.js",
|
|
1140
|
+
"dist/indexerWorker.js",
|
|
1141
|
+
"dist/wasm/",
|
|
1142
|
+
"dist/queries/",
|
|
1143
|
+
"README.md",
|
|
1144
|
+
"LICENSE"
|
|
1145
|
+
],
|
|
1146
|
+
"publishConfig": {
|
|
1147
|
+
"access": "public",
|
|
1148
|
+
"registry": "https://registry.npmjs.org"
|
|
1149
|
+
}
|
|
1150
|
+
}
|