purecontext-mcp 1.1.7 → 1.2.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/AGENT_INSTRUCTIONS.md +393 -0
- package/AGENT_INSTRUCTIONS_SHORT.md +53 -0
- package/AST-SEARCH.md +274 -0
- package/CHANGELOG.md +62 -0
- package/CODE-INTELLIGENCE.md +369 -0
- package/HEALTH-DASHBOARDS.md +241 -0
- package/README.md +7 -0
- package/REFACTORING-SAFELY.md +279 -0
- package/UNDERSTANDING-RELATIONSHIPS.md +240 -0
- package/USER-GUIDE.md +14 -0
- package/VISUALIZING-CODE.md +199 -0
- package/WORKFLOW-TECH-DEBT.md +286 -0
- package/dist/core/db/dep-store.d.ts +75 -0
- package/dist/core/db/dep-store.d.ts.map +1 -1
- package/dist/core/db/dep-store.js +277 -0
- package/dist/core/db/dep-store.js.map +1 -1
- package/dist/core/db/schema.d.ts.map +1 -1
- package/dist/core/db/schema.js +12 -0
- package/dist/core/db/schema.js.map +1 -1
- package/dist/core/index-manager.js +1 -1
- package/dist/core/index-manager.js.map +1 -1
- package/dist/core/token-tracker.d.ts +0 -9
- package/dist/core/token-tracker.d.ts.map +1 -1
- package/dist/core/token-tracker.js +0 -21
- package/dist/core/token-tracker.js.map +1 -1
- package/dist/core/types.d.ts +5 -0
- package/dist/core/types.d.ts.map +1 -1
- package/dist/graph/diagram-renderer.d.ts +83 -0
- package/dist/graph/diagram-renderer.d.ts.map +1 -0
- package/dist/graph/diagram-renderer.js +294 -0
- package/dist/graph/diagram-renderer.js.map +1 -0
- package/dist/graph/graph-traversal.d.ts +92 -0
- package/dist/graph/graph-traversal.d.ts.map +1 -1
- package/dist/graph/graph-traversal.js +440 -2
- package/dist/graph/graph-traversal.js.map +1 -1
- package/dist/server/http-server.d.ts.map +1 -1
- package/dist/server/http-server.js +30 -1
- package/dist/server/http-server.js.map +1 -1
- package/dist/server/mcp-server.d.ts.map +1 -1
- package/dist/server/mcp-server.js +145 -0
- package/dist/server/mcp-server.js.map +1 -1
- package/dist/server/tools/_meta.d.ts +0 -2
- package/dist/server/tools/_meta.d.ts.map +1 -1
- package/dist/server/tools/_meta.js +1 -4
- package/dist/server/tools/_meta.js.map +1 -1
- package/dist/server/tools/check-delete-safe.d.ts +50 -0
- package/dist/server/tools/check-delete-safe.d.ts.map +1 -0
- package/dist/server/tools/check-delete-safe.js +308 -0
- package/dist/server/tools/check-delete-safe.js.map +1 -0
- package/dist/server/tools/check-move-safe.d.ts +44 -0
- package/dist/server/tools/check-move-safe.d.ts.map +1 -0
- package/dist/server/tools/check-move-safe.js +266 -0
- package/dist/server/tools/check-move-safe.js.map +1 -0
- package/dist/server/tools/check-rename-safe.d.ts +48 -0
- package/dist/server/tools/check-rename-safe.d.ts.map +1 -0
- package/dist/server/tools/check-rename-safe.js +218 -0
- package/dist/server/tools/check-rename-safe.js.map +1 -0
- package/dist/server/tools/diff-health-radar.d.ts +44 -0
- package/dist/server/tools/diff-health-radar.d.ts.map +1 -0
- package/dist/server/tools/diff-health-radar.js +192 -0
- package/dist/server/tools/diff-health-radar.js.map +1 -0
- package/dist/server/tools/find-cycles.d.ts +31 -0
- package/dist/server/tools/find-cycles.d.ts.map +1 -0
- package/dist/server/tools/find-cycles.js +85 -0
- package/dist/server/tools/find-cycles.js.map +1 -0
- package/dist/server/tools/find-implementations.d.ts +47 -0
- package/dist/server/tools/find-implementations.d.ts.map +1 -0
- package/dist/server/tools/find-implementations.js +167 -0
- package/dist/server/tools/find-implementations.js.map +1 -0
- package/dist/server/tools/find-untested-symbols.d.ts +52 -0
- package/dist/server/tools/find-untested-symbols.d.ts.map +1 -0
- package/dist/server/tools/find-untested-symbols.js +308 -0
- package/dist/server/tools/find-untested-symbols.js.map +1 -0
- package/dist/server/tools/get-architecture-snapshot.d.ts +43 -0
- package/dist/server/tools/get-architecture-snapshot.d.ts.map +1 -0
- package/dist/server/tools/get-architecture-snapshot.js +292 -0
- package/dist/server/tools/get-architecture-snapshot.js.map +1 -0
- package/dist/server/tools/get-call-hierarchy.d.ts +43 -0
- package/dist/server/tools/get-call-hierarchy.d.ts.map +1 -0
- package/dist/server/tools/get-call-hierarchy.js +119 -0
- package/dist/server/tools/get-call-hierarchy.js.map +1 -0
- package/dist/server/tools/get-class-hierarchy.d.ts +36 -0
- package/dist/server/tools/get-class-hierarchy.d.ts.map +1 -0
- package/dist/server/tools/get-class-hierarchy.js +125 -0
- package/dist/server/tools/get-class-hierarchy.js.map +1 -0
- package/dist/server/tools/get-complexity-hotspots.d.ts +50 -0
- package/dist/server/tools/get-complexity-hotspots.d.ts.map +1 -0
- package/dist/server/tools/get-complexity-hotspots.js +282 -0
- package/dist/server/tools/get-complexity-hotspots.js.map +1 -0
- package/dist/server/tools/get-coupling-map.d.ts +39 -0
- package/dist/server/tools/get-coupling-map.d.ts.map +1 -0
- package/dist/server/tools/get-coupling-map.js +107 -0
- package/dist/server/tools/get-coupling-map.js.map +1 -0
- package/dist/server/tools/get-debt-report.d.ts +44 -0
- package/dist/server/tools/get-debt-report.d.ts.map +1 -0
- package/dist/server/tools/get-debt-report.js +606 -0
- package/dist/server/tools/get-debt-report.js.map +1 -0
- package/dist/server/tools/get-entry-points.d.ts +79 -0
- package/dist/server/tools/get-entry-points.d.ts.map +1 -0
- package/dist/server/tools/get-entry-points.js +362 -0
- package/dist/server/tools/get-entry-points.js.map +1 -0
- package/dist/server/tools/get-public-api.d.ts +53 -0
- package/dist/server/tools/get-public-api.d.ts.map +1 -0
- package/dist/server/tools/get-public-api.js +218 -0
- package/dist/server/tools/get-public-api.js.map +1 -0
- package/dist/server/tools/get-savings-stats.d.ts.map +1 -1
- package/dist/server/tools/get-savings-stats.js +1 -3
- package/dist/server/tools/get-savings-stats.js.map +1 -1
- package/dist/server/tools/get-test-coverage-map.d.ts +66 -0
- package/dist/server/tools/get-test-coverage-map.d.ts.map +1 -0
- package/dist/server/tools/get-test-coverage-map.js +588 -0
- package/dist/server/tools/get-test-coverage-map.js.map +1 -0
- package/dist/server/tools/get-todos.d.ts +51 -0
- package/dist/server/tools/get-todos.d.ts.map +1 -0
- package/dist/server/tools/get-todos.js +180 -0
- package/dist/server/tools/get-todos.js.map +1 -0
- package/dist/server/tools/get-type-graph.d.ts +73 -0
- package/dist/server/tools/get-type-graph.d.ts.map +1 -0
- package/dist/server/tools/get-type-graph.js +437 -0
- package/dist/server/tools/get-type-graph.js.map +1 -0
- package/dist/server/tools/health-radar.d.ts +50 -0
- package/dist/server/tools/health-radar.d.ts.map +1 -0
- package/dist/server/tools/health-radar.js +426 -0
- package/dist/server/tools/health-radar.js.map +1 -0
- package/dist/server/tools/plan-refactoring.d.ts +74 -0
- package/dist/server/tools/plan-refactoring.d.ts.map +1 -0
- package/dist/server/tools/plan-refactoring.js +644 -0
- package/dist/server/tools/plan-refactoring.js.map +1 -0
- package/dist/server/tools/render-call-graph.d.ts +40 -0
- package/dist/server/tools/render-call-graph.d.ts.map +1 -0
- package/dist/server/tools/render-call-graph.js +215 -0
- package/dist/server/tools/render-call-graph.js.map +1 -0
- package/dist/server/tools/render-class-hierarchy.d.ts +42 -0
- package/dist/server/tools/render-class-hierarchy.d.ts.map +1 -0
- package/dist/server/tools/render-class-hierarchy.js +265 -0
- package/dist/server/tools/render-class-hierarchy.js.map +1 -0
- package/dist/server/tools/render-dep-matrix.d.ts +38 -0
- package/dist/server/tools/render-dep-matrix.d.ts.map +1 -0
- package/dist/server/tools/render-dep-matrix.js +186 -0
- package/dist/server/tools/render-dep-matrix.js.map +1 -0
- package/dist/server/tools/render-diagram.d.ts +47 -0
- package/dist/server/tools/render-diagram.d.ts.map +1 -0
- package/dist/server/tools/render-diagram.js +266 -0
- package/dist/server/tools/render-diagram.js.map +1 -0
- package/dist/server/tools/render-import-graph.d.ts +41 -0
- package/dist/server/tools/render-import-graph.d.ts.map +1 -0
- package/dist/server/tools/render-import-graph.js +158 -0
- package/dist/server/tools/render-import-graph.js.map +1 -0
- package/dist/server/tools/search-ast.d.ts +55 -0
- package/dist/server/tools/search-ast.d.ts.map +1 -0
- package/dist/server/tools/search-ast.js +279 -0
- package/dist/server/tools/search-ast.js.map +1 -0
- package/dist/server/tools/search-by-complexity.d.ts +92 -0
- package/dist/server/tools/search-by-complexity.d.ts.map +1 -0
- package/dist/server/tools/search-by-complexity.js +268 -0
- package/dist/server/tools/search-by-complexity.js.map +1 -0
- package/dist/server/tools/search-by-decorator.d.ts +48 -0
- package/dist/server/tools/search-by-decorator.d.ts.map +1 -0
- package/dist/server/tools/search-by-decorator.js +518 -0
- package/dist/server/tools/search-by-decorator.js.map +1 -0
- package/dist/server/tools/search-by-signature.d.ts +56 -0
- package/dist/server/tools/search-by-signature.d.ts.map +1 -0
- package/dist/server/tools/search-by-signature.js +200 -0
- package/dist/server/tools/search-by-signature.js.map +1 -0
- package/dist/ui/assets/BlastRadius-QdgESOL8.js +1 -0
- package/dist/ui/assets/{DependencyGraph-CDtBHM0U.js → DependencyGraph-BSMhzwWV.js} +6 -6
- package/dist/ui/assets/{NotFound-Cdt6X8pl.js → NotFound-CipFP_s1.js} +1 -1
- package/dist/ui/assets/RepoDetail-Dfp5z5Kq.js +1 -0
- package/dist/ui/assets/{RepoList-B9LaZvob.js → RepoList-BKtST3hB.js} +1 -1
- package/dist/ui/assets/{Search-CLqv2KGV.js → Search-DzhGDViy.js} +1 -1
- package/dist/ui/assets/{SymbolView-BlbDR1DU.js → SymbolView-ryVEwAHG.js} +1 -1
- package/dist/ui/assets/{index-DADf5y_L.css → index-Ny8gn9F0.css} +1 -1
- package/dist/ui/assets/{index-i3Q1XbEh.js → index-nX2chMqi.js} +6 -6
- package/dist/ui/assets/{useSearch-mbMk6-M1.js → useSearch-BnBCRKui.js} +1 -1
- package/dist/ui/index.html +2 -2
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/docs/dev/jcodemunch-gap-analysis.md +198 -0
- package/package.json +9 -1
- package/user-manual.md +2466 -0
- package/dist/ui/assets/BlastRadius-BDZWhEk-.js +0 -1
- package/dist/ui/assets/RepoDetail-M6WaYbZ3.js +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-todos.d.ts","sourceRoot":"","sources":["../../../src/server/tools/get-todos.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAEzE,eAAO,MAAM,IAAI,cAAc,CAAC;AAEhC,eAAO,MAAM,WAAW,QAUgD,CAAC;AAEzE,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;CA+BvB,CAAC;AAIF,MAAM,WAAW,QAAQ;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,IAAI,EAAE,MAAM,CAAC;CACd;AAMD,wBAAsB,OAAO,CAAC,IAAI,EAAE;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,GAAG,OAAO,CAAC,cAAc,CAAC,CAgJ1B"}
|
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* get-todos.ts
|
|
3
|
+
*
|
|
4
|
+
* MCP tool: get_todos
|
|
5
|
+
*
|
|
6
|
+
* Scans indexed file content for TODO/FIXME/HACK/NOTE/OPTIMIZE/BUG/XXX
|
|
7
|
+
* comment tags. Returns each occurrence with its file path, line number,
|
|
8
|
+
* tag type, optional assignee (e.g. TODO(alice):), and the comment text.
|
|
9
|
+
*
|
|
10
|
+
* Designed for:
|
|
11
|
+
* - Tracking outstanding work items embedded in source code
|
|
12
|
+
* - Generating a tech-debt inventory from comment annotations
|
|
13
|
+
* - Finding all FIXMEs before a release cutoff
|
|
14
|
+
* - Auditing comment hygiene across a codebase
|
|
15
|
+
*/
|
|
16
|
+
import { z } from 'zod';
|
|
17
|
+
import { openDatabase, getRepo } from '../../core/db/schema.js';
|
|
18
|
+
import { getAllFilesWithContent } from '../../core/db/file-store.js';
|
|
19
|
+
import { buildMeta } from './_meta.js';
|
|
20
|
+
export const name = 'get_todos';
|
|
21
|
+
export const description = 'Scan all indexed source files for TODO/FIXME/HACK/NOTE/OPTIMIZE/BUG/XXX comment tags. ' +
|
|
22
|
+
'Returns each occurrence with file path, line number, tag type, optional assignee ' +
|
|
23
|
+
'(e.g. TODO(alice):), and the comment text. ' +
|
|
24
|
+
'Use this to generate a tech-debt inventory, find all FIXMEs before a release, or ' +
|
|
25
|
+
'audit comment hygiene across a codebase. ' +
|
|
26
|
+
'Supports filtering by tag type, assignee name, and file path.' +
|
|
27
|
+
'\n\nRelated tools:' +
|
|
28
|
+
'\n get_debt_report — structured tech-debt metrics including comment-based debt' +
|
|
29
|
+
'\n get_complexity_hotspots — identify complex symbols that may have hidden TODOs' +
|
|
30
|
+
'\n search_text — free-form text search across file content';
|
|
31
|
+
export const inputSchema = {
|
|
32
|
+
repoId: z.string().describe('Repository ID returned by index_folder or list_repos'),
|
|
33
|
+
tags: z
|
|
34
|
+
.array(z.enum(['TODO', 'FIXME', 'HACK', 'NOTE', 'OPTIMIZE', 'BUG', 'XXX']))
|
|
35
|
+
.optional()
|
|
36
|
+
.describe('Tag types to scan for. Defaults to all seven tags: ' +
|
|
37
|
+
'TODO, FIXME, HACK, NOTE, OPTIMIZE, BUG, XXX.'),
|
|
38
|
+
filePath: z
|
|
39
|
+
.string()
|
|
40
|
+
.optional()
|
|
41
|
+
.describe('Restrict to a specific file path or directory prefix ' +
|
|
42
|
+
'(e.g. "src/services/" returns todos from that subtree only)'),
|
|
43
|
+
assignee: z
|
|
44
|
+
.string()
|
|
45
|
+
.optional()
|
|
46
|
+
.describe('Filter by assignee name. Matches "TODO(alice)" when assignee="alice". ' +
|
|
47
|
+
'Case-insensitive.'),
|
|
48
|
+
groupByFile: z
|
|
49
|
+
.boolean()
|
|
50
|
+
.optional()
|
|
51
|
+
.describe('Group results by file (default true). Set false for a flat sorted list.'),
|
|
52
|
+
limit: z
|
|
53
|
+
.number().int().positive()
|
|
54
|
+
.optional()
|
|
55
|
+
.describe('Maximum number of todo items to return (default 200)'),
|
|
56
|
+
};
|
|
57
|
+
const ALL_TAGS = ['TODO', 'FIXME', 'HACK', 'NOTE', 'OPTIMIZE', 'BUG', 'XXX'];
|
|
58
|
+
// ─── Handler ──────────────────────────────────────────────────────────────────
|
|
59
|
+
export async function handler(args) {
|
|
60
|
+
const t0 = Date.now();
|
|
61
|
+
const { repoId, groupByFile = true, limit = 200, } = args;
|
|
62
|
+
const db = openDatabase(repoId);
|
|
63
|
+
try {
|
|
64
|
+
// ── Validate repo exists ───────────────────────────────────────────────────
|
|
65
|
+
const repo = getRepo(db, repoId);
|
|
66
|
+
if (!repo) {
|
|
67
|
+
return {
|
|
68
|
+
content: [{
|
|
69
|
+
type: 'text',
|
|
70
|
+
text: JSON.stringify({ error: `Repo "${repoId}" not found. Run index_folder first.` }),
|
|
71
|
+
}],
|
|
72
|
+
isError: true,
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
// ── Build tag regex ────────────────────────────────────────────────────────
|
|
76
|
+
const activeTags = (args.tags && args.tags.length > 0)
|
|
77
|
+
? args.tags.map((t) => t.toUpperCase())
|
|
78
|
+
: [...ALL_TAGS];
|
|
79
|
+
const tagAlternation = activeTags.join('|');
|
|
80
|
+
// Matches: TODO, TODO:, TODO(alice), TODO(alice):
|
|
81
|
+
// Group 1 = tag, Group 2 = assignee (optional), Group 3 = trailing text
|
|
82
|
+
const pattern = new RegExp(`\\b(${tagAlternation})\\b(?:\\(([^)]+)\\))?[:\\s]*(.*)`, 'i');
|
|
83
|
+
// ── Load and scan files ────────────────────────────────────────────────────
|
|
84
|
+
const files = getAllFilesWithContent(db, repoId);
|
|
85
|
+
const todos = [];
|
|
86
|
+
let rawBytes = 0;
|
|
87
|
+
let truncated = false;
|
|
88
|
+
for (const file of files) {
|
|
89
|
+
if (!file.rawContent)
|
|
90
|
+
continue;
|
|
91
|
+
// Apply file path filter
|
|
92
|
+
if (args.filePath) {
|
|
93
|
+
const fp = file.path;
|
|
94
|
+
if (fp !== args.filePath && !fp.startsWith(args.filePath)) {
|
|
95
|
+
continue;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
rawBytes += file.rawContent.length;
|
|
99
|
+
const text = file.rawContent.toString('utf8');
|
|
100
|
+
const lines = text.split('\n');
|
|
101
|
+
for (let i = 0; i < lines.length; i++) {
|
|
102
|
+
const line = lines[i];
|
|
103
|
+
const m = pattern.exec(line);
|
|
104
|
+
if (!m)
|
|
105
|
+
continue;
|
|
106
|
+
const tag = m[1].toUpperCase();
|
|
107
|
+
const assignee = m[2] ? m[2].trim() : null;
|
|
108
|
+
const itemText = m[3]
|
|
109
|
+
? m[3].replace(/\*\/$/, '').trim() // strip trailing */ from block comments
|
|
110
|
+
: '';
|
|
111
|
+
// Apply assignee filter
|
|
112
|
+
if (args.assignee) {
|
|
113
|
+
if (!assignee || assignee.toLowerCase() !== args.assignee.toLowerCase()) {
|
|
114
|
+
continue;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
todos.push({
|
|
118
|
+
filePath: file.path,
|
|
119
|
+
line: i + 1,
|
|
120
|
+
tag,
|
|
121
|
+
assignee,
|
|
122
|
+
text: itemText,
|
|
123
|
+
});
|
|
124
|
+
if (todos.length >= limit) {
|
|
125
|
+
truncated = true;
|
|
126
|
+
break;
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
if (truncated)
|
|
130
|
+
break;
|
|
131
|
+
}
|
|
132
|
+
// ── Build response ─────────────────────────────────────────────────────────
|
|
133
|
+
const responseBytes = todos.reduce((sum, t) => sum + t.filePath.length + t.text.length + (t.assignee?.length ?? 0) + 40, 0);
|
|
134
|
+
const tokenEstimate = Math.ceil(responseBytes / 4);
|
|
135
|
+
// ── Tag summary ────────────────────────────────────────────────────────────
|
|
136
|
+
const tagCounts = {};
|
|
137
|
+
for (const todo of todos) {
|
|
138
|
+
tagCounts[todo.tag] = (tagCounts[todo.tag] ?? 0) + 1;
|
|
139
|
+
}
|
|
140
|
+
let output;
|
|
141
|
+
if (groupByFile) {
|
|
142
|
+
const byFile = new Map();
|
|
143
|
+
for (const item of todos) {
|
|
144
|
+
const list = byFile.get(item.filePath) ?? [];
|
|
145
|
+
list.push(item);
|
|
146
|
+
byFile.set(item.filePath, list);
|
|
147
|
+
}
|
|
148
|
+
const files2 = Array.from(byFile.entries())
|
|
149
|
+
.sort(([a], [b]) => a.localeCompare(b))
|
|
150
|
+
.map(([filePath, items]) => ({ filePath, todos: items }));
|
|
151
|
+
output = {
|
|
152
|
+
totalTodos: todos.length,
|
|
153
|
+
fileCount: byFile.size,
|
|
154
|
+
tagCounts,
|
|
155
|
+
truncated,
|
|
156
|
+
files: files2,
|
|
157
|
+
_tokenEstimate: tokenEstimate,
|
|
158
|
+
_meta: buildMeta({ timingMs: Date.now() - t0, rawBytes, responseBytes }),
|
|
159
|
+
};
|
|
160
|
+
}
|
|
161
|
+
else {
|
|
162
|
+
output = {
|
|
163
|
+
totalTodos: todos.length,
|
|
164
|
+
fileCount: new Set(todos.map((t) => t.filePath)).size,
|
|
165
|
+
tagCounts,
|
|
166
|
+
truncated,
|
|
167
|
+
todos,
|
|
168
|
+
_tokenEstimate: tokenEstimate,
|
|
169
|
+
_meta: buildMeta({ timingMs: Date.now() - t0, rawBytes, responseBytes }),
|
|
170
|
+
};
|
|
171
|
+
}
|
|
172
|
+
return {
|
|
173
|
+
content: [{ type: 'text', text: JSON.stringify(output, null, 2) }],
|
|
174
|
+
};
|
|
175
|
+
}
|
|
176
|
+
finally {
|
|
177
|
+
db.close();
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
//# sourceMappingURL=get-todos.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-todos.js","sourceRoot":"","sources":["../../../src/server/tools/get-todos.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* get-type-graph.ts
|
|
3
|
+
*
|
|
4
|
+
* MCP tool: get_type_graph
|
|
5
|
+
*
|
|
6
|
+
* Returns the type dependency graph for a repository (or a scoped subtree),
|
|
7
|
+
* showing how interfaces, classes, type aliases, and enums relate to each
|
|
8
|
+
* other through inheritance (`extends`), implementation (`implements`), and
|
|
9
|
+
* optional usage relationships.
|
|
10
|
+
*
|
|
11
|
+
* Use this tool to:
|
|
12
|
+
* - Understand a domain model's type hierarchy before refactoring
|
|
13
|
+
* - Find all types that depend on a given interface
|
|
14
|
+
* - Generate a Mermaid class diagram from live code
|
|
15
|
+
* - Answer "what does this type extend/implement, and who extends it?"
|
|
16
|
+
*
|
|
17
|
+
* Differs from related tools:
|
|
18
|
+
* get_class_hierarchy — single-root ancestor/descendant tree for one class
|
|
19
|
+
* find_implementations — all concrete implementations of one interface
|
|
20
|
+
* get_type_graph — full multi-root graph of all type relationships
|
|
21
|
+
* in a scope; supports rootSymbol for focused traversal
|
|
22
|
+
*/
|
|
23
|
+
import { z } from 'zod';
|
|
24
|
+
import type { CallToolResult } from '@modelcontextprotocol/sdk/types.js';
|
|
25
|
+
import type { SymbolKind } from '../../core/types.js';
|
|
26
|
+
export declare const name = "get_type_graph";
|
|
27
|
+
export declare const description: string;
|
|
28
|
+
export declare const inputSchema: {
|
|
29
|
+
repoId: z.ZodString;
|
|
30
|
+
rootSymbol: z.ZodOptional<z.ZodString>;
|
|
31
|
+
maxDepth: z.ZodOptional<z.ZodNumber>;
|
|
32
|
+
scope: z.ZodOptional<z.ZodString>;
|
|
33
|
+
kinds: z.ZodOptional<z.ZodArray<z.ZodEnum<{
|
|
34
|
+
class: "class";
|
|
35
|
+
type: "type";
|
|
36
|
+
interface: "interface";
|
|
37
|
+
enum: "enum";
|
|
38
|
+
}>>>;
|
|
39
|
+
includeAbstract: z.ZodOptional<z.ZodBoolean>;
|
|
40
|
+
format: z.ZodOptional<z.ZodEnum<{
|
|
41
|
+
mermaid: "mermaid";
|
|
42
|
+
graph: "graph";
|
|
43
|
+
}>>;
|
|
44
|
+
limit: z.ZodOptional<z.ZodNumber>;
|
|
45
|
+
};
|
|
46
|
+
export interface TypeNode {
|
|
47
|
+
id: string;
|
|
48
|
+
name: string;
|
|
49
|
+
kind: SymbolKind;
|
|
50
|
+
filePath: string;
|
|
51
|
+
signature: string;
|
|
52
|
+
summary: string;
|
|
53
|
+
isAbstract: boolean;
|
|
54
|
+
isGeneric: boolean;
|
|
55
|
+
}
|
|
56
|
+
export interface TypeEdge {
|
|
57
|
+
source: string;
|
|
58
|
+
target: string;
|
|
59
|
+
relation: 'extends' | 'implements';
|
|
60
|
+
targetName: string;
|
|
61
|
+
resolved: boolean;
|
|
62
|
+
}
|
|
63
|
+
export declare function handler(args: {
|
|
64
|
+
repoId: string;
|
|
65
|
+
rootSymbol?: string;
|
|
66
|
+
maxDepth?: number;
|
|
67
|
+
scope?: string;
|
|
68
|
+
kinds?: Array<'interface' | 'class' | 'type' | 'enum'>;
|
|
69
|
+
includeAbstract?: boolean;
|
|
70
|
+
format?: 'graph' | 'mermaid';
|
|
71
|
+
limit?: number;
|
|
72
|
+
}): Promise<CallToolResult>;
|
|
73
|
+
//# sourceMappingURL=get-type-graph.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-type-graph.d.ts","sourceRoot":"","sources":["../../../src/server/tools/get-type-graph.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AACzE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEtD,eAAO,MAAM,IAAI,mBAAmB,CAAC;AAErC,eAAO,MAAM,WAAW,QAa2C,CAAC;AAEpE,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;CAyDvB,CAAC;AAcF,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,UAAU,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,OAAO,CAAC;IACpB,SAAS,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,QAAQ;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,SAAS,GAAG,YAAY,CAAC;IACnC,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,OAAO,CAAC;CACnB;AA6GD,wBAAsB,OAAO,CAAC,IAAI,EAAE;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,KAAK,CAAC,WAAW,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC,CAAC;IACvD,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,MAAM,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,GAAG,OAAO,CAAC,cAAc,CAAC,CA2R1B"}
|