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,218 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* get-public-api.ts
|
|
3
|
+
*
|
|
4
|
+
* MCP tool: get_public_api
|
|
5
|
+
*
|
|
6
|
+
* Returns the public API surface of a repository: all exported symbols, grouped
|
|
7
|
+
* by file. A symbol is "public" when its signature begins with the `export`
|
|
8
|
+
* keyword (TypeScript/JavaScript export declarations, re-exports included).
|
|
9
|
+
*
|
|
10
|
+
* Designed for:
|
|
11
|
+
* - Onboarding: "what does this library expose?"
|
|
12
|
+
* - API contract review: "has the surface changed between snapshots?"
|
|
13
|
+
* - Documentation seeding: enumerate exports to generate docs
|
|
14
|
+
* - Dependency analysis: know what consumers can legally import
|
|
15
|
+
*
|
|
16
|
+
* Use find_dead_code to find exported symbols that nobody imports.
|
|
17
|
+
* Use get_blast_radius before removing an export to understand downstream impact.
|
|
18
|
+
*/
|
|
19
|
+
import { z } from 'zod';
|
|
20
|
+
import { openDatabase, getRepo } from '../../core/db/schema.js';
|
|
21
|
+
import { buildMeta } from './_meta.js';
|
|
22
|
+
export const name = 'get_public_api';
|
|
23
|
+
export const description = 'Return the public API surface of a repository: all exported symbols, grouped by file. ' +
|
|
24
|
+
'A symbol is considered public when its signature begins with the export keyword. ' +
|
|
25
|
+
'Use this to answer "what does this library expose?", audit API contracts, seed ' +
|
|
26
|
+
'documentation, or compare the public surface before and after a refactor. ' +
|
|
27
|
+
'Each result includes symbolId, name, kind, signature, summary, file path, and ' +
|
|
28
|
+
'whether the symbol is a default export.' +
|
|
29
|
+
'\n\nRelated tools:' +
|
|
30
|
+
'\n find_dead_code — exported symbols that nobody imports' +
|
|
31
|
+
'\n get_blast_radius — downstream impact of removing an export' +
|
|
32
|
+
'\n get_repo_outline — all symbols (exported and unexported) by file';
|
|
33
|
+
export const inputSchema = {
|
|
34
|
+
repoId: z.string().describe('Repository ID returned by index_folder or list_repos'),
|
|
35
|
+
filePath: z
|
|
36
|
+
.string()
|
|
37
|
+
.optional()
|
|
38
|
+
.describe('Restrict to a specific file path or directory prefix ' +
|
|
39
|
+
'(e.g. "src/services/" returns all exports from that subtree)'),
|
|
40
|
+
kind: z
|
|
41
|
+
.enum([
|
|
42
|
+
'function', 'class', 'method', 'const', 'type', 'interface', 'enum',
|
|
43
|
+
'component', 'composable', 'hook', 'route', 'decorator', 'middleware',
|
|
44
|
+
])
|
|
45
|
+
.optional()
|
|
46
|
+
.describe('Filter results to a specific symbol kind'),
|
|
47
|
+
includeMembers: z
|
|
48
|
+
.boolean()
|
|
49
|
+
.optional()
|
|
50
|
+
.describe('When true, also include public methods of exported classes. ' +
|
|
51
|
+
'Methods do not carry the export keyword themselves but are part of the exported ' +
|
|
52
|
+
'API surface. Only effective when kind is not set (default false).'),
|
|
53
|
+
groupByFile: z
|
|
54
|
+
.boolean()
|
|
55
|
+
.optional()
|
|
56
|
+
.describe('Group results by file (default true). Set false for a flat sorted list.'),
|
|
57
|
+
limit: z
|
|
58
|
+
.number().int().positive().optional()
|
|
59
|
+
.describe('Maximum number of exported symbols to return (default 500)'),
|
|
60
|
+
};
|
|
61
|
+
// ─── Handler ──────────────────────────────────────────────────────────────────
|
|
62
|
+
export async function handler(args) {
|
|
63
|
+
const t0 = Date.now();
|
|
64
|
+
const { repoId, includeMembers = false, groupByFile = true, limit = 500, } = args;
|
|
65
|
+
const db = openDatabase(repoId);
|
|
66
|
+
try {
|
|
67
|
+
// ── Validate repo exists ───────────────────────────────────────────────────
|
|
68
|
+
const repo = getRepo(db, repoId);
|
|
69
|
+
if (!repo) {
|
|
70
|
+
return {
|
|
71
|
+
content: [{
|
|
72
|
+
type: 'text',
|
|
73
|
+
text: JSON.stringify({ error: `Repo "${repoId}" not found. Run index_folder first.` }),
|
|
74
|
+
}],
|
|
75
|
+
isError: true,
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
// ── Query exported symbols ─────────────────────────────────────────────────
|
|
79
|
+
// A symbol is exported if its signature begins with "export"
|
|
80
|
+
const conditions = [
|
|
81
|
+
'repo_id = @repoId',
|
|
82
|
+
"(signature LIKE 'export %' OR signature LIKE 'export' OR signature LIKE 'export\n%')",
|
|
83
|
+
];
|
|
84
|
+
const params = { repoId };
|
|
85
|
+
if (args.kind) {
|
|
86
|
+
conditions.push('kind = @kind');
|
|
87
|
+
params['kind'] = args.kind;
|
|
88
|
+
}
|
|
89
|
+
if (args.filePath) {
|
|
90
|
+
conditions.push('(file_path = @filePath OR file_path LIKE @filePathPrefix)');
|
|
91
|
+
params['filePath'] = args.filePath;
|
|
92
|
+
params['filePathPrefix'] = `${args.filePath}%`;
|
|
93
|
+
}
|
|
94
|
+
params['limit'] = limit;
|
|
95
|
+
const exportedSql = `
|
|
96
|
+
SELECT id, name, kind, file_path, start_byte, signature, summary
|
|
97
|
+
FROM symbols
|
|
98
|
+
WHERE ${conditions.join(' AND ')}
|
|
99
|
+
ORDER BY file_path ASC, start_byte ASC
|
|
100
|
+
LIMIT @limit
|
|
101
|
+
`;
|
|
102
|
+
const rows = db
|
|
103
|
+
.prepare(exportedSql)
|
|
104
|
+
.all(params);
|
|
105
|
+
// ── Optionally include methods of exported classes ─────────────────────────
|
|
106
|
+
if (includeMembers && !args.kind) {
|
|
107
|
+
const exportedClassFiles = new Set(rows
|
|
108
|
+
.filter((r) => r.kind === 'class' || r.kind === 'component')
|
|
109
|
+
.map((r) => r.file_path));
|
|
110
|
+
if (exportedClassFiles.size > 0) {
|
|
111
|
+
const existingIds = new Set(rows.map((r) => r.id));
|
|
112
|
+
const fileList = Array.from(exportedClassFiles);
|
|
113
|
+
const placeholders = fileList.map((_, i) => `@fp${i}`).join(', ');
|
|
114
|
+
const memberParams = { repoId };
|
|
115
|
+
fileList.forEach((fp, i) => { memberParams[`fp${i}`] = fp; });
|
|
116
|
+
const memberSql = `
|
|
117
|
+
SELECT id, name, kind, file_path, start_byte, signature, summary
|
|
118
|
+
FROM symbols
|
|
119
|
+
WHERE repo_id = @repoId
|
|
120
|
+
AND kind = 'method'
|
|
121
|
+
AND file_path IN (${placeholders})
|
|
122
|
+
ORDER BY file_path ASC, start_byte ASC
|
|
123
|
+
`;
|
|
124
|
+
const memberRows = db
|
|
125
|
+
.prepare(memberSql)
|
|
126
|
+
.all(memberParams);
|
|
127
|
+
for (const r of memberRows) {
|
|
128
|
+
if (!existingIds.has(r.id)) {
|
|
129
|
+
rows.push(r);
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
rows.sort((a, b) => a.file_path.localeCompare(b.file_path) || a.start_byte - b.start_byte);
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
// ── Compute startLine from stored file content ─────────────────────────────
|
|
136
|
+
const fileSymbols = new Map();
|
|
137
|
+
for (const row of rows) {
|
|
138
|
+
const list = fileSymbols.get(row.file_path) ?? [];
|
|
139
|
+
list.push(row);
|
|
140
|
+
fileSymbols.set(row.file_path, list);
|
|
141
|
+
}
|
|
142
|
+
const lineMap = new Map();
|
|
143
|
+
let rawBytes = 0;
|
|
144
|
+
for (const [filePath, syms] of fileSymbols) {
|
|
145
|
+
const fileRow = db
|
|
146
|
+
.prepare('SELECT raw_content FROM files WHERE repo_id = ? AND path = ?')
|
|
147
|
+
.get(repoId, filePath);
|
|
148
|
+
if (fileRow?.raw_content) {
|
|
149
|
+
rawBytes += fileRow.raw_content.length;
|
|
150
|
+
const content = fileRow.raw_content;
|
|
151
|
+
for (const sym of syms) {
|
|
152
|
+
const slice = content.slice(0, Math.min(sym.start_byte, content.length));
|
|
153
|
+
let line = 1;
|
|
154
|
+
for (let i = 0; i < slice.length; i++) {
|
|
155
|
+
if (slice[i] === 0x0a)
|
|
156
|
+
line++;
|
|
157
|
+
}
|
|
158
|
+
lineMap.set(sym.id, line);
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
else {
|
|
162
|
+
for (const sym of syms) {
|
|
163
|
+
lineMap.set(sym.id, Math.max(1, Math.floor(sym.start_byte / 80) + 1));
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
// ── Shape symbols ─────────────────────────────────────────────────────────
|
|
168
|
+
const shaped = rows.map((row) => ({
|
|
169
|
+
symbolId: row.id,
|
|
170
|
+
name: row.name,
|
|
171
|
+
kind: row.kind,
|
|
172
|
+
filePath: row.file_path,
|
|
173
|
+
startLine: lineMap.get(row.id) ?? 1,
|
|
174
|
+
signature: row.signature,
|
|
175
|
+
summary: row.summary,
|
|
176
|
+
isDefault: row.signature.includes('export default'),
|
|
177
|
+
}));
|
|
178
|
+
const responseBytes = shaped.reduce((sum, s) => sum + s.signature.length + s.summary.length + s.filePath.length + 80, 0);
|
|
179
|
+
const tokenEstimate = Math.ceil(responseBytes / 4);
|
|
180
|
+
// ── Format output ─────────────────────────────────────────────────────────
|
|
181
|
+
const uniqueFileCount = fileSymbols.size;
|
|
182
|
+
let output;
|
|
183
|
+
if (groupByFile) {
|
|
184
|
+
const byFile = new Map();
|
|
185
|
+
for (const sym of shaped) {
|
|
186
|
+
const list = byFile.get(sym.filePath) ?? [];
|
|
187
|
+
list.push(sym);
|
|
188
|
+
byFile.set(sym.filePath, list);
|
|
189
|
+
}
|
|
190
|
+
const files = Array.from(byFile.entries())
|
|
191
|
+
.sort(([a], [b]) => a.localeCompare(b))
|
|
192
|
+
.map(([filePath, exports]) => ({ filePath, exports }));
|
|
193
|
+
output = {
|
|
194
|
+
totalExported: shaped.length,
|
|
195
|
+
fileCount: files.length,
|
|
196
|
+
files,
|
|
197
|
+
_tokenEstimate: tokenEstimate,
|
|
198
|
+
_meta: buildMeta({ timingMs: Date.now() - t0, rawBytes, responseBytes }),
|
|
199
|
+
};
|
|
200
|
+
}
|
|
201
|
+
else {
|
|
202
|
+
output = {
|
|
203
|
+
totalExported: shaped.length,
|
|
204
|
+
fileCount: uniqueFileCount,
|
|
205
|
+
symbols: shaped,
|
|
206
|
+
_tokenEstimate: tokenEstimate,
|
|
207
|
+
_meta: buildMeta({ timingMs: Date.now() - t0, rawBytes, responseBytes }),
|
|
208
|
+
};
|
|
209
|
+
}
|
|
210
|
+
return {
|
|
211
|
+
content: [{ type: 'text', text: JSON.stringify(output, null, 2) }],
|
|
212
|
+
};
|
|
213
|
+
}
|
|
214
|
+
finally {
|
|
215
|
+
db.close();
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
//# sourceMappingURL=get-public-api.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-public-api.js","sourceRoot":"","sources":["../../../src/server/tools/get-public-api.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-savings-stats.d.ts","sourceRoot":"","sources":["../../../src/server/tools/get-savings-stats.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"get-savings-stats.d.ts","sourceRoot":"","sources":["../../../src/server/tools/get-savings-stats.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAMxB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAWzE,eAAO,MAAM,IAAI,sBAAsB,CAAC;AAExC,eAAO,MAAM,WAAW,QAGiC,CAAC;AAE1D,eAAO,MAAM,WAAW;;CAMvB,CAAC;AAIF,wBAAgB,OAAO,CAAC,IAAI,EAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,cAAc,CAuCjE"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
-
import { getTotalSaved, resetSavings, getSessionStart,
|
|
2
|
+
import { getTotalSaved, resetSavings, getSessionStart, } from '../../core/token-tracker.js';
|
|
3
3
|
// ─── Context window sizes (in tokens) ────────────────────────────────────────
|
|
4
4
|
const CONTEXT_WINDOWS = {
|
|
5
5
|
claude_200k: 200_000,
|
|
@@ -31,7 +31,6 @@ export function handler(args) {
|
|
|
31
31
|
};
|
|
32
32
|
}
|
|
33
33
|
const total = getTotalSaved();
|
|
34
|
-
const { total_cost_avoided } = costAvoided(total, total);
|
|
35
34
|
const equivalent_context_windows = {};
|
|
36
35
|
for (const [label, size] of Object.entries(CONTEXT_WINDOWS)) {
|
|
37
36
|
equivalent_context_windows[label] = parseFloat((total / size).toFixed(2));
|
|
@@ -43,7 +42,6 @@ export function handler(args) {
|
|
|
43
42
|
text: JSON.stringify({
|
|
44
43
|
total_tokens_saved: total,
|
|
45
44
|
equivalent_context_windows,
|
|
46
|
-
total_cost_avoided,
|
|
47
45
|
session_start: getSessionStart().toISOString(),
|
|
48
46
|
_meta: {
|
|
49
47
|
powered_by: 'PureContext MCP',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-savings-stats.js","sourceRoot":"","sources":["../../../src/server/tools/get-savings-stats.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EACL,aAAa,EACb,YAAY,EACZ,eAAe,
|
|
1
|
+
{"version":3,"file":"get-savings-stats.js","sourceRoot":"","sources":["../../../src/server/tools/get-savings-stats.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EACL,aAAa,EACb,YAAY,EACZ,eAAe,GAChB,MAAM,6BAA6B,CAAC;AAGrC,gFAAgF;AAEhF,MAAM,eAAe,GAAG;IACtB,WAAW,EAAE,OAAO;IACpB,SAAS,EAAE,OAAO;CACV,CAAC;AAEX,iFAAiF;AAEjF,MAAM,CAAC,MAAM,IAAI,GAAG,mBAAmB,CAAC;AAExC,MAAM,CAAC,MAAM,WAAW,GACtB,4EAA4E;IAC5E,2FAA2F;IAC3F,uDAAuD,CAAC;AAE1D,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,KAAK,EAAE,CAAC;SACL,OAAO,EAAE;SACT,QAAQ,EAAE;SACV,OAAO,CAAC,KAAK,CAAC;SACd,QAAQ,CAAC,4DAA4D,CAAC;CAC1E,CAAC;AAEF,iFAAiF;AAEjF,MAAM,UAAU,OAAO,CAAC,IAAyB;IAC/C,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;QACf,MAAM,QAAQ,GAAG,YAAY,EAAE,CAAC;QAChC,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,cAAc,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;iBACzE;aACF;SACF,CAAC;IACJ,CAAC;IAED,MAAM,KAAK,GAAG,aAAa,EAAE,CAAC;IAE9B,MAAM,0BAA0B,GAA2B,EAAE,CAAC;IAC9D,KAAK,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE,CAAC;QAC5D,0BAA0B,CAAC,KAAK,CAAC,GAAG,UAAU,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5E,CAAC;IAED,OAAO;QACL,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAClB;oBACE,kBAAkB,EAAE,KAAK;oBACzB,0BAA0B;oBAC1B,aAAa,EAAE,eAAe,EAAE,CAAC,WAAW,EAAE;oBAC9C,KAAK,EAAE;wBACL,UAAU,EAAE,iBAAiB;qBAC9B;iBACF,EACD,IAAI,EACJ,CAAC,CACF;aACF;SACF;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* get-test-coverage-map.ts
|
|
3
|
+
*
|
|
4
|
+
* MCP tool: get_test_coverage_map
|
|
5
|
+
*
|
|
6
|
+
* Parses a coverage JSON report (Istanbul/NYC or V8/c8 format) and maps
|
|
7
|
+
* line-level coverage data to symbols in the indexed codebase. Returns
|
|
8
|
+
* per-file coverage metrics and per-symbol covered/uncovered status.
|
|
9
|
+
*
|
|
10
|
+
* Supported formats:
|
|
11
|
+
* Istanbul/NYC — coverage-final.json produced by nyc, jest --coverage,
|
|
12
|
+
* vitest --coverage.reporter=json, c8 (json reporter).
|
|
13
|
+
* Keys are absolute file paths; values have statementMap,
|
|
14
|
+
* fnMap, branchMap, s, f, b counters.
|
|
15
|
+
*
|
|
16
|
+
* V8 — coverage produced by Node --experimental-vm-modules or
|
|
17
|
+
* c8 json-summary. An array of {url, functions} objects
|
|
18
|
+
* where url is a file:// URI and functions carry byte-range
|
|
19
|
+
* hit counts.
|
|
20
|
+
*
|
|
21
|
+
* Detection strategy:
|
|
22
|
+
* - Top-level object → Istanbul
|
|
23
|
+
* - Top-level array → V8
|
|
24
|
+
* Auto-detected by default; override with the `format` parameter.
|
|
25
|
+
*
|
|
26
|
+
* Symbol coverage:
|
|
27
|
+
* Symbols are matched to coverage functions by exact name. If no name
|
|
28
|
+
* match is found, line-range overlap is used as a fallback.
|
|
29
|
+
* This is a static heuristic — minified or transpiled code may reduce
|
|
30
|
+
* accuracy. For precise coverage, ensure the coverage report was generated
|
|
31
|
+
* from the same (or source-mapped) code that was indexed.
|
|
32
|
+
*
|
|
33
|
+
* Differs from related tools:
|
|
34
|
+
* find_untested_symbols — name-based heuristic, no coverage file needed
|
|
35
|
+
* get_complexity_hotspots — complexity ranking without coverage data
|
|
36
|
+
* get_quality_metrics — per-symbol quality scoring, not coverage
|
|
37
|
+
*/
|
|
38
|
+
import { z } from 'zod';
|
|
39
|
+
import type { CallToolResult } from '@modelcontextprotocol/sdk/types.js';
|
|
40
|
+
export declare const name = "get_test_coverage_map";
|
|
41
|
+
export declare const description: string;
|
|
42
|
+
export declare const inputSchema: {
|
|
43
|
+
repoId: z.ZodString;
|
|
44
|
+
coveragePath: z.ZodString;
|
|
45
|
+
scope: z.ZodOptional<z.ZodString>;
|
|
46
|
+
filePath: z.ZodOptional<z.ZodString>;
|
|
47
|
+
minCoverage: z.ZodOptional<z.ZodNumber>;
|
|
48
|
+
includeUncoveredLines: z.ZodOptional<z.ZodBoolean>;
|
|
49
|
+
limit: z.ZodOptional<z.ZodNumber>;
|
|
50
|
+
format: z.ZodOptional<z.ZodEnum<{
|
|
51
|
+
auto: "auto";
|
|
52
|
+
istanbul: "istanbul";
|
|
53
|
+
v8: "v8";
|
|
54
|
+
}>>;
|
|
55
|
+
};
|
|
56
|
+
export declare function handler(args: {
|
|
57
|
+
repoId: string;
|
|
58
|
+
coveragePath: string;
|
|
59
|
+
scope?: string;
|
|
60
|
+
filePath?: string;
|
|
61
|
+
minCoverage?: number;
|
|
62
|
+
includeUncoveredLines?: boolean;
|
|
63
|
+
limit?: number;
|
|
64
|
+
format?: 'auto' | 'istanbul' | 'v8';
|
|
65
|
+
}): Promise<CallToolResult>;
|
|
66
|
+
//# sourceMappingURL=get-test-coverage-map.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-test-coverage-map.d.ts","sourceRoot":"","sources":["../../../src/server/tools/get-test-coverage-map.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAGzE,eAAO,MAAM,IAAI,0BAA0B,CAAC;AAE5C,eAAO,MAAM,WAAW,QAY8C,CAAC;AAIvE,eAAO,MAAM,WAAW;;;;;;;;;;;;;CA0CvB,CAAC;AAudF,wBAAsB,OAAO,CAAC,IAAI,EAAE;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI,CAAC;CACrC,GAAG,OAAO,CAAC,cAAc,CAAC,CAkQ1B"}
|