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,79 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* get-entry-points.ts
|
|
3
|
+
*
|
|
4
|
+
* MCP tool: get_entry_points
|
|
5
|
+
*
|
|
6
|
+
* Identifies the runnable entry points of a repository: main functions, CLI
|
|
7
|
+
* handlers, HTTP server startups, Lambda/serverless handlers, test suites, and
|
|
8
|
+
* standalone scripts. Detection is heuristic-based — it combines symbol names,
|
|
9
|
+
* file names, and signature patterns to classify candidates by kind and assign a
|
|
10
|
+
* confidence score.
|
|
11
|
+
*
|
|
12
|
+
* Designed for:
|
|
13
|
+
* - Onboarding: "where does this application start?"
|
|
14
|
+
* - Dependency mapping: trace execution from the root
|
|
15
|
+
* - CI/CD: enumerate all runnable targets
|
|
16
|
+
* - Security: identify all public-facing handlers (Lambda, HTTP)
|
|
17
|
+
*
|
|
18
|
+
* Use get_context_bundle to follow the full dependency chain from an entry point.
|
|
19
|
+
* Use find_dead_code to discover unreachable code from the entry points.
|
|
20
|
+
*/
|
|
21
|
+
import { z } from 'zod';
|
|
22
|
+
import type { CallToolResult } from '@modelcontextprotocol/sdk/types.js';
|
|
23
|
+
export declare const name = "get_entry_points";
|
|
24
|
+
export declare const description: string;
|
|
25
|
+
export declare const inputSchema: {
|
|
26
|
+
repoId: z.ZodString;
|
|
27
|
+
kind: z.ZodOptional<z.ZodEnum<{
|
|
28
|
+
main_function: "main_function";
|
|
29
|
+
cli_handler: "cli_handler";
|
|
30
|
+
server_startup: "server_startup";
|
|
31
|
+
lambda_handler: "lambda_handler";
|
|
32
|
+
test_suite: "test_suite";
|
|
33
|
+
script: "script";
|
|
34
|
+
}>>;
|
|
35
|
+
filePath: z.ZodOptional<z.ZodString>;
|
|
36
|
+
minConfidence: z.ZodOptional<z.ZodEnum<{
|
|
37
|
+
high: "high";
|
|
38
|
+
low: "low";
|
|
39
|
+
medium: "medium";
|
|
40
|
+
}>>;
|
|
41
|
+
limit: z.ZodOptional<z.ZodNumber>;
|
|
42
|
+
};
|
|
43
|
+
interface SymbolRow {
|
|
44
|
+
id: string;
|
|
45
|
+
name: string;
|
|
46
|
+
kind: string;
|
|
47
|
+
file_path: string;
|
|
48
|
+
start_byte: number;
|
|
49
|
+
signature: string;
|
|
50
|
+
summary: string;
|
|
51
|
+
}
|
|
52
|
+
export type EntryKind = 'main_function' | 'cli_handler' | 'server_startup' | 'lambda_handler' | 'test_suite' | 'script';
|
|
53
|
+
export type Confidence = 'high' | 'medium' | 'low';
|
|
54
|
+
export interface EntryPoint {
|
|
55
|
+
symbolId: string;
|
|
56
|
+
name: string;
|
|
57
|
+
kind: EntryKind;
|
|
58
|
+
confidence: Confidence;
|
|
59
|
+
reason: string;
|
|
60
|
+
filePath: string;
|
|
61
|
+
startLine: number;
|
|
62
|
+
signature: string;
|
|
63
|
+
summary: string;
|
|
64
|
+
}
|
|
65
|
+
/** Run all rules against a symbol row and return the first match. */
|
|
66
|
+
export declare function detectEntryPoint(sym: SymbolRow): {
|
|
67
|
+
kind: EntryKind;
|
|
68
|
+
confidence: Confidence;
|
|
69
|
+
reason: string;
|
|
70
|
+
} | null;
|
|
71
|
+
export declare function handler(args: {
|
|
72
|
+
repoId: string;
|
|
73
|
+
kind?: EntryKind;
|
|
74
|
+
filePath?: string;
|
|
75
|
+
minConfidence?: Confidence;
|
|
76
|
+
limit?: number;
|
|
77
|
+
}): Promise<CallToolResult>;
|
|
78
|
+
export {};
|
|
79
|
+
//# sourceMappingURL=get-entry-points.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-entry-points.d.ts","sourceRoot":"","sources":["../../../src/server/tools/get-entry-points.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAEzE,eAAO,MAAM,IAAI,qBAAqB,CAAC;AAEvC,eAAO,MAAM,WAAW,QAWyC,CAAC;AAElE,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;CAuBvB,CAAC;AAIF,UAAU,SAAS;IACjB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,MAAM,SAAS,GACjB,eAAe,GACf,aAAa,GACb,gBAAgB,GAChB,gBAAgB,GAChB,YAAY,GACZ,QAAQ,CAAC;AAEb,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;AAEnD,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,SAAS,CAAC;IAChB,UAAU,EAAE,UAAU,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CACjB;AA4LD,qEAAqE;AACrE,wBAAgB,gBAAgB,CAC9B,GAAG,EAAE,SAAS,GACb;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,UAAU,EAAE,UAAU,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAMpE;AAYD,wBAAsB,OAAO,CAAC,IAAI,EAAE;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,UAAU,CAAC;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,GAAG,OAAO,CAAC,cAAc,CAAC,CA4J1B"}
|
|
@@ -0,0 +1,362 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* get-entry-points.ts
|
|
3
|
+
*
|
|
4
|
+
* MCP tool: get_entry_points
|
|
5
|
+
*
|
|
6
|
+
* Identifies the runnable entry points of a repository: main functions, CLI
|
|
7
|
+
* handlers, HTTP server startups, Lambda/serverless handlers, test suites, and
|
|
8
|
+
* standalone scripts. Detection is heuristic-based — it combines symbol names,
|
|
9
|
+
* file names, and signature patterns to classify candidates by kind and assign a
|
|
10
|
+
* confidence score.
|
|
11
|
+
*
|
|
12
|
+
* Designed for:
|
|
13
|
+
* - Onboarding: "where does this application start?"
|
|
14
|
+
* - Dependency mapping: trace execution from the root
|
|
15
|
+
* - CI/CD: enumerate all runnable targets
|
|
16
|
+
* - Security: identify all public-facing handlers (Lambda, HTTP)
|
|
17
|
+
*
|
|
18
|
+
* Use get_context_bundle to follow the full dependency chain from an entry point.
|
|
19
|
+
* Use find_dead_code to discover unreachable code from the entry points.
|
|
20
|
+
*/
|
|
21
|
+
import { z } from 'zod';
|
|
22
|
+
import { openDatabase, getRepo } from '../../core/db/schema.js';
|
|
23
|
+
import { buildMeta } from './_meta.js';
|
|
24
|
+
export const name = 'get_entry_points';
|
|
25
|
+
export const description = 'Identify the runnable entry points of a repository: main functions, CLI handlers, ' +
|
|
26
|
+
'HTTP server startups, Lambda/serverless handlers, test suites, and standalone scripts. ' +
|
|
27
|
+
'Detection combines symbol name heuristics, file name patterns, and signature analysis. ' +
|
|
28
|
+
'Each result includes a kind (main_function, cli_handler, server_startup, lambda_handler, ' +
|
|
29
|
+
'test_suite, script), a confidence level (high/medium/low), and the reason for classification. ' +
|
|
30
|
+
'Use this to answer "where does this application start?", enumerate all runnable targets, ' +
|
|
31
|
+
'or trace execution paths from the root.' +
|
|
32
|
+
'\n\nRelated tools:' +
|
|
33
|
+
'\n get_context_bundle — full dependency chain from an entry point' +
|
|
34
|
+
'\n find_dead_code — unreachable code relative to entry points' +
|
|
35
|
+
'\n get_call_hierarchy — callee tree rooted at an entry point';
|
|
36
|
+
export const inputSchema = {
|
|
37
|
+
repoId: z.string().describe('Repository ID returned by index_folder or list_repos'),
|
|
38
|
+
kind: z
|
|
39
|
+
.enum(['main_function', 'cli_handler', 'server_startup', 'lambda_handler', 'test_suite', 'script'])
|
|
40
|
+
.optional()
|
|
41
|
+
.describe('Filter results to a specific entry-point kind'),
|
|
42
|
+
filePath: z
|
|
43
|
+
.string()
|
|
44
|
+
.optional()
|
|
45
|
+
.describe('Restrict to a specific file path or directory prefix ' +
|
|
46
|
+
'(e.g. "src/cmd/" returns entry points from that subtree only)'),
|
|
47
|
+
minConfidence: z
|
|
48
|
+
.enum(['high', 'medium', 'low'])
|
|
49
|
+
.optional()
|
|
50
|
+
.describe('Minimum confidence level to include. ' +
|
|
51
|
+
'"high" returns only strong matches; "low" returns all candidates (default "low").'),
|
|
52
|
+
limit: z
|
|
53
|
+
.number().int().positive().optional()
|
|
54
|
+
.describe('Maximum number of entry points to return (default 100)'),
|
|
55
|
+
};
|
|
56
|
+
/** Entry-file names that strongly suggest a runnable script. */
|
|
57
|
+
const ENTRY_FILE_NAMES = new Set([
|
|
58
|
+
'main', 'index', 'app', 'server', 'cli', 'run', 'start',
|
|
59
|
+
'bootstrap', 'entry', 'bin', 'cmd', 'program',
|
|
60
|
+
]);
|
|
61
|
+
/** Extract the stem (basename without extension) of a file path. */
|
|
62
|
+
function fileStem(filePath) {
|
|
63
|
+
const base = filePath.split('/').pop() ?? filePath;
|
|
64
|
+
const dot = base.lastIndexOf('.');
|
|
65
|
+
return (dot > 0 ? base.slice(0, dot) : base).toLowerCase();
|
|
66
|
+
}
|
|
67
|
+
/** True when the file lives at the project root (no directory component). */
|
|
68
|
+
function isRootFile(filePath) {
|
|
69
|
+
return !filePath.includes('/');
|
|
70
|
+
}
|
|
71
|
+
/** True when the file is inside a bin/, cmd/, or cli/ directory (not scripts/). */
|
|
72
|
+
function isBinDir(filePath) {
|
|
73
|
+
return /(?:^|\/)(?:bin|cmd|cli)\//i.test(filePath);
|
|
74
|
+
}
|
|
75
|
+
const RULES = [
|
|
76
|
+
// ── Lambda / serverless handler ──────────────────────────────────────────────
|
|
77
|
+
{
|
|
78
|
+
match(sym) {
|
|
79
|
+
// export const handler = async (event, context) => ...
|
|
80
|
+
// exports.handler = ...
|
|
81
|
+
if (sym.name === 'handler' &&
|
|
82
|
+
(sym.kind === 'function' || sym.kind === 'const' || sym.kind === 'method') &&
|
|
83
|
+
/\b(event|context|callback)\b/.test(sym.signature)) {
|
|
84
|
+
return { kind: 'lambda_handler', confidence: 'high', reason: 'symbol named "handler" with event/context parameter' };
|
|
85
|
+
}
|
|
86
|
+
// Any exported symbol named "handler" in a lambda-style file
|
|
87
|
+
if (sym.name === 'handler' &&
|
|
88
|
+
(sym.kind === 'function' || sym.kind === 'const') &&
|
|
89
|
+
/(?:lambda|handler|serverless|function)/i.test(sym.file_path)) {
|
|
90
|
+
return { kind: 'lambda_handler', confidence: 'medium', reason: 'symbol named "handler" in a lambda/serverless file' };
|
|
91
|
+
}
|
|
92
|
+
return null;
|
|
93
|
+
},
|
|
94
|
+
},
|
|
95
|
+
// ── Main function ─────────────────────────────────────────────────────────────
|
|
96
|
+
{
|
|
97
|
+
match(sym) {
|
|
98
|
+
if (sym.name !== 'main')
|
|
99
|
+
return null;
|
|
100
|
+
if (sym.kind !== 'function' && sym.kind !== 'method' && sym.kind !== 'const')
|
|
101
|
+
return null;
|
|
102
|
+
// High confidence: file is named "main" or the function is explicitly exported
|
|
103
|
+
if (fileStem(sym.file_path) === 'main' ||
|
|
104
|
+
sym.signature.startsWith('export') ||
|
|
105
|
+
isRootFile(sym.file_path)) {
|
|
106
|
+
return { kind: 'main_function', confidence: 'high', reason: 'function named "main"' };
|
|
107
|
+
}
|
|
108
|
+
return { kind: 'main_function', confidence: 'medium', reason: 'function named "main" (non-root file)' };
|
|
109
|
+
},
|
|
110
|
+
},
|
|
111
|
+
// ── CLI handler ───────────────────────────────────────────────────────────────
|
|
112
|
+
{
|
|
113
|
+
match(sym) {
|
|
114
|
+
if (sym.kind !== 'function' && sym.kind !== 'const' && sym.kind !== 'class')
|
|
115
|
+
return null;
|
|
116
|
+
const stem = fileStem(sym.file_path);
|
|
117
|
+
// High: file is in bin/cmd/cli dir and symbol is main/run/execute/cli
|
|
118
|
+
if (isBinDir(sym.file_path) && /^(main|run|execute|cli|command|program)$/.test(sym.name.toLowerCase())) {
|
|
119
|
+
return { kind: 'cli_handler', confidence: 'high', reason: 'entry function in bin/cmd/cli directory' };
|
|
120
|
+
}
|
|
121
|
+
// Medium: file named cli/cmd/bin AND function is exported
|
|
122
|
+
if (['cli', 'cmd', 'bin', 'command'].includes(stem) &&
|
|
123
|
+
sym.kind === 'function' &&
|
|
124
|
+
sym.signature.startsWith('export')) {
|
|
125
|
+
return { kind: 'cli_handler', confidence: 'medium', reason: `exported function in file named "${stem}"` };
|
|
126
|
+
}
|
|
127
|
+
// Low: symbol name strongly implies CLI
|
|
128
|
+
if (/^(parseArgs?|parseArguments|runCli|executeCli|cliMain)$/.test(sym.name) && sym.kind === 'function') {
|
|
129
|
+
return { kind: 'cli_handler', confidence: 'low', reason: 'function name suggests CLI argument parsing' };
|
|
130
|
+
}
|
|
131
|
+
return null;
|
|
132
|
+
},
|
|
133
|
+
},
|
|
134
|
+
// ── HTTP server startup ───────────────────────────────────────────────────────
|
|
135
|
+
{
|
|
136
|
+
match(sym) {
|
|
137
|
+
if (sym.kind !== 'function' && sym.kind !== 'const' && sym.kind !== 'class')
|
|
138
|
+
return null;
|
|
139
|
+
const stem = fileStem(sym.file_path);
|
|
140
|
+
// High: symbol name is bootstrap/startServer/listen with "listen" or "listen(" in signature
|
|
141
|
+
if (/^(bootstrap|startServer|startApp|listenOn|serve|createServer)$/.test(sym.name) && sym.kind === 'function') {
|
|
142
|
+
return { kind: 'server_startup', confidence: 'high', reason: `server bootstrap function named "${sym.name}"` };
|
|
143
|
+
}
|
|
144
|
+
// High: file named "server" or "app" at root, symbol is main/start/run
|
|
145
|
+
if (['server', 'app'].includes(stem) &&
|
|
146
|
+
isRootFile(sym.file_path) &&
|
|
147
|
+
/^(main|start|run|init|boot|bootstrap)$/.test(sym.name.toLowerCase())) {
|
|
148
|
+
return { kind: 'server_startup', confidence: 'high', reason: `server startup function in root "${stem}" file` };
|
|
149
|
+
}
|
|
150
|
+
// Medium: file named "server" or "app", non-root
|
|
151
|
+
if (['server', 'app'].includes(stem) && sym.name.toLowerCase() === 'main') {
|
|
152
|
+
return { kind: 'server_startup', confidence: 'medium', reason: `main function in "${stem}" file` };
|
|
153
|
+
}
|
|
154
|
+
// Low: symbol name suggests server start
|
|
155
|
+
if (/^(startListening|runServer|initServer|bootServer)$/.test(sym.name) && sym.kind === 'function') {
|
|
156
|
+
return { kind: 'server_startup', confidence: 'low', reason: `function name "${sym.name}" suggests server startup` };
|
|
157
|
+
}
|
|
158
|
+
return null;
|
|
159
|
+
},
|
|
160
|
+
},
|
|
161
|
+
// ── Test suite ────────────────────────────────────────────────────────────────
|
|
162
|
+
{
|
|
163
|
+
match(sym) {
|
|
164
|
+
// File is clearly a test file
|
|
165
|
+
if (!/(?:\.test\.|\.spec\.|_test\.|_spec\.|\/test\/|\/spec\/|\/tests\/|\/specs\/)/.test(sym.file_path)) {
|
|
166
|
+
return null;
|
|
167
|
+
}
|
|
168
|
+
if (sym.kind !== 'function')
|
|
169
|
+
return null;
|
|
170
|
+
// High: describe/it/test/suite at top level
|
|
171
|
+
if (/^(describe|suite|context)$/.test(sym.name)) {
|
|
172
|
+
return { kind: 'test_suite', confidence: 'high', reason: 'top-level describe/suite in test file' };
|
|
173
|
+
}
|
|
174
|
+
return null;
|
|
175
|
+
},
|
|
176
|
+
},
|
|
177
|
+
// ── Standalone script (entry file with a runnable shape) ──────────────────────
|
|
178
|
+
{
|
|
179
|
+
match(sym) {
|
|
180
|
+
if (sym.kind !== 'function' && sym.kind !== 'const')
|
|
181
|
+
return null;
|
|
182
|
+
const stem = fileStem(sym.file_path);
|
|
183
|
+
// High: the entry file is named "index"/"main"/"app"/"server" AND symbol is a
|
|
184
|
+
// clearly-named top-level exported runner
|
|
185
|
+
if (ENTRY_FILE_NAMES.has(stem) &&
|
|
186
|
+
/^(run|start|boot|init|execute|launch|setup)$/.test(sym.name.toLowerCase()) &&
|
|
187
|
+
sym.signature.startsWith('export')) {
|
|
188
|
+
return { kind: 'script', confidence: 'high', reason: `exported "${sym.name}" function in entry file "${stem}"` };
|
|
189
|
+
}
|
|
190
|
+
// Medium: file is in scripts/ dir, symbol is top-level function
|
|
191
|
+
if (/(?:^|\/)scripts?\//i.test(sym.file_path) && sym.kind === 'function') {
|
|
192
|
+
return { kind: 'script', confidence: 'medium', reason: 'function in scripts/ directory' };
|
|
193
|
+
}
|
|
194
|
+
return null;
|
|
195
|
+
},
|
|
196
|
+
},
|
|
197
|
+
// ── Default export from a known entry file (catch-all for exotic frameworks) ──
|
|
198
|
+
{
|
|
199
|
+
match(sym) {
|
|
200
|
+
if (!sym.signature.includes('export default'))
|
|
201
|
+
return null;
|
|
202
|
+
if (sym.kind !== 'function' && sym.kind !== 'const' && sym.kind !== 'class')
|
|
203
|
+
return null;
|
|
204
|
+
const stem = fileStem(sym.file_path);
|
|
205
|
+
if (ENTRY_FILE_NAMES.has(stem) && isRootFile(sym.file_path)) {
|
|
206
|
+
return { kind: 'script', confidence: 'medium', reason: `default export from root "${stem}" file` };
|
|
207
|
+
}
|
|
208
|
+
return null;
|
|
209
|
+
},
|
|
210
|
+
},
|
|
211
|
+
];
|
|
212
|
+
/** Run all rules against a symbol row and return the first match. */
|
|
213
|
+
export function detectEntryPoint(sym) {
|
|
214
|
+
for (const rule of RULES) {
|
|
215
|
+
const result = rule.match(sym);
|
|
216
|
+
if (result)
|
|
217
|
+
return result;
|
|
218
|
+
}
|
|
219
|
+
return null;
|
|
220
|
+
}
|
|
221
|
+
// ─── Confidence ordering ──────────────────────────────────────────────────────
|
|
222
|
+
const CONFIDENCE_RANK = { high: 2, medium: 1, low: 0 };
|
|
223
|
+
function meetsMinConfidence(c, min) {
|
|
224
|
+
return CONFIDENCE_RANK[c] >= CONFIDENCE_RANK[min];
|
|
225
|
+
}
|
|
226
|
+
// ─── Handler ──────────────────────────────────────────────────────────────────
|
|
227
|
+
export async function handler(args) {
|
|
228
|
+
const t0 = Date.now();
|
|
229
|
+
const { repoId, minConfidence = 'low', limit = 100, } = args;
|
|
230
|
+
const db = openDatabase(repoId);
|
|
231
|
+
try {
|
|
232
|
+
// ── Validate repo exists ────────────────────────────────────────────────────
|
|
233
|
+
const repo = getRepo(db, repoId);
|
|
234
|
+
if (!repo) {
|
|
235
|
+
return {
|
|
236
|
+
content: [{
|
|
237
|
+
type: 'text',
|
|
238
|
+
text: JSON.stringify({ error: `Repo "${repoId}" not found. Run index_folder first.` }),
|
|
239
|
+
}],
|
|
240
|
+
isError: true,
|
|
241
|
+
};
|
|
242
|
+
}
|
|
243
|
+
// ── Fetch candidate symbols ─────────────────────────────────────────────────
|
|
244
|
+
// We only need callable/instantiable kinds — no need to scan consts or types
|
|
245
|
+
// that could never be runnable. But we do include 'const' because many
|
|
246
|
+
// Lambda handlers are `export const handler = ...`.
|
|
247
|
+
const candidateKinds = ['function', 'class', 'method', 'const', 'component', 'hook'];
|
|
248
|
+
const kindPlaceholders = candidateKinds.map((_, i) => `@k${i}`).join(', ');
|
|
249
|
+
const kindParams = { repoId };
|
|
250
|
+
candidateKinds.forEach((k, i) => { kindParams[`k${i}`] = k; });
|
|
251
|
+
let sql = `
|
|
252
|
+
SELECT id, name, kind, file_path, start_byte, signature, summary
|
|
253
|
+
FROM symbols
|
|
254
|
+
WHERE repo_id = @repoId
|
|
255
|
+
AND kind IN (${kindPlaceholders})
|
|
256
|
+
`;
|
|
257
|
+
if (args.filePath) {
|
|
258
|
+
sql += ' AND (file_path = @filePath OR file_path LIKE @filePathPrefix)';
|
|
259
|
+
kindParams['filePath'] = args.filePath;
|
|
260
|
+
kindParams['filePathPrefix'] = `${args.filePath}%`;
|
|
261
|
+
}
|
|
262
|
+
sql += ' ORDER BY file_path ASC, start_byte ASC';
|
|
263
|
+
const rows = db
|
|
264
|
+
.prepare(sql)
|
|
265
|
+
.all(kindParams);
|
|
266
|
+
// ── Apply detection rules ───────────────────────────────────────────────────
|
|
267
|
+
let rawBytes = 0;
|
|
268
|
+
const entryPoints = [];
|
|
269
|
+
// Deduplicate: one entry point per symbol id
|
|
270
|
+
const seen = new Set();
|
|
271
|
+
for (const row of rows) {
|
|
272
|
+
const detection = detectEntryPoint(row);
|
|
273
|
+
if (!detection)
|
|
274
|
+
continue;
|
|
275
|
+
if (seen.has(row.id))
|
|
276
|
+
continue;
|
|
277
|
+
if (!meetsMinConfidence(detection.confidence, minConfidence))
|
|
278
|
+
continue;
|
|
279
|
+
if (args.kind && detection.kind !== args.kind)
|
|
280
|
+
continue;
|
|
281
|
+
seen.add(row.id);
|
|
282
|
+
// Estimate line number from start_byte
|
|
283
|
+
rawBytes += row.signature.length + row.summary.length;
|
|
284
|
+
entryPoints.push({
|
|
285
|
+
symbolId: row.id,
|
|
286
|
+
name: row.name,
|
|
287
|
+
kind: detection.kind,
|
|
288
|
+
confidence: detection.confidence,
|
|
289
|
+
reason: detection.reason,
|
|
290
|
+
filePath: row.file_path,
|
|
291
|
+
startLine: 0, // filled in below
|
|
292
|
+
signature: row.signature,
|
|
293
|
+
summary: row.summary,
|
|
294
|
+
});
|
|
295
|
+
}
|
|
296
|
+
// ── Sort: high confidence first, then by file path ─────────────────────────
|
|
297
|
+
entryPoints.sort((a, b) => {
|
|
298
|
+
const cd = CONFIDENCE_RANK[b.confidence] - CONFIDENCE_RANK[a.confidence];
|
|
299
|
+
if (cd !== 0)
|
|
300
|
+
return cd;
|
|
301
|
+
return a.filePath.localeCompare(b.filePath) || a.name.localeCompare(b.name);
|
|
302
|
+
});
|
|
303
|
+
// ── Apply limit ────────────────────────────────────────────────────────────
|
|
304
|
+
const truncated = entryPoints.length > limit;
|
|
305
|
+
const limited = entryPoints.slice(0, limit);
|
|
306
|
+
// ── Compute startLine from stored file content ────────────────────────────
|
|
307
|
+
const fileToSymbols = new Map();
|
|
308
|
+
for (const ep of limited) {
|
|
309
|
+
const row = rows.find((r) => r.id === ep.symbolId);
|
|
310
|
+
if (!row)
|
|
311
|
+
continue;
|
|
312
|
+
const list = fileToSymbols.get(ep.filePath) ?? [];
|
|
313
|
+
list.push({ ep, row });
|
|
314
|
+
fileToSymbols.set(ep.filePath, list);
|
|
315
|
+
}
|
|
316
|
+
for (const [filePath, items] of fileToSymbols) {
|
|
317
|
+
const fileRow = db
|
|
318
|
+
.prepare('SELECT raw_content FROM files WHERE repo_id = ? AND path = ?')
|
|
319
|
+
.get(repoId, filePath);
|
|
320
|
+
if (fileRow?.raw_content) {
|
|
321
|
+
rawBytes += fileRow.raw_content.length;
|
|
322
|
+
const content = fileRow.raw_content;
|
|
323
|
+
for (const { ep, row } of items) {
|
|
324
|
+
const slice = content.slice(0, Math.min(row.start_byte, content.length));
|
|
325
|
+
let line = 1;
|
|
326
|
+
for (let i = 0; i < slice.length; i++) {
|
|
327
|
+
if (slice[i] === 0x0a)
|
|
328
|
+
line++;
|
|
329
|
+
}
|
|
330
|
+
ep.startLine = line;
|
|
331
|
+
}
|
|
332
|
+
}
|
|
333
|
+
else {
|
|
334
|
+
for (const { ep, row } of items) {
|
|
335
|
+
ep.startLine = Math.max(1, Math.floor(row.start_byte / 80) + 1);
|
|
336
|
+
}
|
|
337
|
+
}
|
|
338
|
+
}
|
|
339
|
+
// ── Build kind summary ────────────────────────────────────────────────────
|
|
340
|
+
const kindCounts = {};
|
|
341
|
+
for (const ep of limited) {
|
|
342
|
+
kindCounts[ep.kind] = (kindCounts[ep.kind] ?? 0) + 1;
|
|
343
|
+
}
|
|
344
|
+
const responseBytes = limited.reduce((sum, ep) => sum + ep.signature.length + ep.summary.length + ep.filePath.length + ep.reason.length + 100, 0);
|
|
345
|
+
const tokenEstimate = Math.ceil(responseBytes / 4);
|
|
346
|
+
const output = {
|
|
347
|
+
totalFound: limited.length,
|
|
348
|
+
truncated,
|
|
349
|
+
kindCounts,
|
|
350
|
+
entryPoints: limited,
|
|
351
|
+
_tokenEstimate: tokenEstimate,
|
|
352
|
+
_meta: buildMeta({ timingMs: Date.now() - t0, rawBytes, responseBytes }),
|
|
353
|
+
};
|
|
354
|
+
return {
|
|
355
|
+
content: [{ type: 'text', text: JSON.stringify(output, null, 2) }],
|
|
356
|
+
};
|
|
357
|
+
}
|
|
358
|
+
finally {
|
|
359
|
+
db.close();
|
|
360
|
+
}
|
|
361
|
+
}
|
|
362
|
+
//# sourceMappingURL=get-entry-points.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-entry-points.js","sourceRoot":"","sources":["../../../src/server/tools/get-entry-points.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,53 @@
|
|
|
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 type { CallToolResult } from '@modelcontextprotocol/sdk/types.js';
|
|
21
|
+
export declare const name = "get_public_api";
|
|
22
|
+
export declare const description: string;
|
|
23
|
+
export declare const inputSchema: {
|
|
24
|
+
repoId: z.ZodString;
|
|
25
|
+
filePath: z.ZodOptional<z.ZodString>;
|
|
26
|
+
kind: z.ZodOptional<z.ZodEnum<{
|
|
27
|
+
function: "function";
|
|
28
|
+
method: "method";
|
|
29
|
+
class: "class";
|
|
30
|
+
const: "const";
|
|
31
|
+
type: "type";
|
|
32
|
+
interface: "interface";
|
|
33
|
+
enum: "enum";
|
|
34
|
+
component: "component";
|
|
35
|
+
composable: "composable";
|
|
36
|
+
hook: "hook";
|
|
37
|
+
route: "route";
|
|
38
|
+
decorator: "decorator";
|
|
39
|
+
middleware: "middleware";
|
|
40
|
+
}>>;
|
|
41
|
+
includeMembers: z.ZodOptional<z.ZodBoolean>;
|
|
42
|
+
groupByFile: z.ZodOptional<z.ZodBoolean>;
|
|
43
|
+
limit: z.ZodOptional<z.ZodNumber>;
|
|
44
|
+
};
|
|
45
|
+
export declare function handler(args: {
|
|
46
|
+
repoId: string;
|
|
47
|
+
filePath?: string;
|
|
48
|
+
kind?: string;
|
|
49
|
+
includeMembers?: boolean;
|
|
50
|
+
groupByFile?: boolean;
|
|
51
|
+
limit?: number;
|
|
52
|
+
}): Promise<CallToolResult>;
|
|
53
|
+
//# sourceMappingURL=get-public-api.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-public-api.d.ts","sourceRoot":"","sources":["../../../src/server/tools/get-public-api.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAGzE,eAAO,MAAM,IAAI,mBAAmB,CAAC;AAErC,eAAO,MAAM,WAAW,QAUgD,CAAC;AAEzE,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;CA+BvB,CAAC;AAgBF,wBAAsB,OAAO,CAAC,IAAI,EAAE;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,GAAG,OAAO,CAAC,cAAc,CAAC,CAuL1B"}
|