phpstan-mcp-mx 0.8.0 → 0.10.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/CHANGELOG.md +87 -0
- package/README.md +3 -3
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/phpstan/error.d.ts +8 -0
- package/dist/phpstan/error.js +9 -0
- package/dist/phpstan/error.js.map +1 -0
- package/dist/phpstan/output.d.ts +57 -0
- package/dist/phpstan/output.js +76 -0
- package/dist/phpstan/output.js.map +1 -0
- package/dist/phpstan/process.d.ts +45 -0
- package/dist/phpstan/process.js +148 -0
- package/dist/phpstan/process.js.map +1 -0
- package/dist/phpstan/queue.d.ts +21 -0
- package/dist/phpstan/queue.js +76 -0
- package/dist/phpstan/queue.js.map +1 -0
- package/dist/phpstan.d.ts +7 -65
- package/dist/phpstan.js +8 -289
- package/dist/phpstan.js.map +1 -1
- package/dist/server.js +4 -0
- package/dist/server.js.map +1 -1
- package/dist/tools/analysis.d.ts +8 -0
- package/dist/tools/analysis.js +131 -0
- package/dist/tools/analysis.js.map +1 -0
- package/dist/tools/inspect.d.ts +14 -0
- package/dist/tools/inspect.js +218 -0
- package/dist/tools/inspect.js.map +1 -0
- package/dist/tools/prompts.d.ts +3 -0
- package/dist/tools/prompts.js +45 -0
- package/dist/tools/prompts.js.map +1 -0
- package/dist/tools/shared.d.ts +160 -0
- package/dist/tools/shared.js +219 -0
- package/dist/tools/shared.js.map +1 -0
- package/dist/tools/writes.d.ts +17 -0
- package/dist/tools/writes.js +131 -0
- package/dist/tools/writes.js.map +1 -0
- package/dist/tools.d.ts +0 -11
- package/dist/tools.js +4 -671
- package/dist/tools.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/dist/version.js.map +1 -1
- package/package.json +14 -4
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shared.js","sourceRoot":"","sources":["../../src/tools/shared.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
2
|
+
import type { Root } from '../roots.js';
|
|
3
|
+
/** Env-variabele die schrijvende tools vrijgeeft. */
|
|
4
|
+
export declare const WRITES_ENV_VAR = "PHPSTAN_MCP_ALLOW_WRITES";
|
|
5
|
+
/**
|
|
6
|
+
* Of schrijvende tools geregistreerd mogen worden. Alleen "1" en "true" tellen; al
|
|
7
|
+
* het andere staat uit. Dat faalt de veilige kant op: een typfout laat schrijven
|
|
8
|
+
* uit, en de opstartregel zegt wat er geldt.
|
|
9
|
+
*
|
|
10
|
+
* Niet registreren en niet weigeren-bij-de-aanroep: een tool die bestaat maar altijd
|
|
11
|
+
* nee zegt, kost het model een ronde en context om dat te ontdekken.
|
|
12
|
+
*/
|
|
13
|
+
export declare function writesAllowed(env?: NodeJS.ProcessEnv): boolean;
|
|
14
|
+
/** Hangt `clear_result_cache` aan de server. Verandert wel iets, maar niet aan de broncode. */
|
|
15
|
+
export declare function registerClearResultCache(server: McpServer, roots: Root[]): void;
|
|
16
|
+
/** Hangt `generate_baseline` aan de server. Alleen aanroepen als schrijven aanstaat. */
|
|
17
|
+
export declare function registerGenerateBaseline(server: McpServer, roots: Root[]): void;
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { clearResultCache, generateBaseline } from '../phpstan.js';
|
|
3
|
+
import { displayPath } from '../report.js';
|
|
4
|
+
import { resolveNewWithin, resolveProject, resolveWithin } from '../project.js';
|
|
5
|
+
import { clears, common, configArgument, log, projectArgument, toFailure, writes } from './shared.js';
|
|
6
|
+
/** Env-variabele die schrijvende tools vrijgeeft. */
|
|
7
|
+
export const WRITES_ENV_VAR = 'PHPSTAN_MCP_ALLOW_WRITES';
|
|
8
|
+
/**
|
|
9
|
+
* Of schrijvende tools geregistreerd mogen worden. Alleen "1" en "true" tellen; al
|
|
10
|
+
* het andere staat uit. Dat faalt de veilige kant op: een typfout laat schrijven
|
|
11
|
+
* uit, en de opstartregel zegt wat er geldt.
|
|
12
|
+
*
|
|
13
|
+
* Niet registreren en niet weigeren-bij-de-aanroep: een tool die bestaat maar altijd
|
|
14
|
+
* nee zegt, kost het model een ronde en context om dat te ontdekken.
|
|
15
|
+
*/
|
|
16
|
+
export function writesAllowed(env = process.env) {
|
|
17
|
+
const configured = env[WRITES_ENV_VAR]?.trim().toLowerCase();
|
|
18
|
+
return configured === '1' || configured === 'true';
|
|
19
|
+
}
|
|
20
|
+
/** Hangt `clear_result_cache` aan de server. Verandert wel iets, maar niet aan de broncode. */
|
|
21
|
+
export function registerClearResultCache(server, roots) {
|
|
22
|
+
server.registerTool('clear_result_cache', {
|
|
23
|
+
title: 'Resultcache legen',
|
|
24
|
+
description: 'Leegt PHPStans resultcache, zodat de volgende analyse alles opnieuw doorrekent. ' +
|
|
25
|
+
'Gebruik dit als een uitslag niet klopt met de code — bijvoorbeeld na een wijziging ' +
|
|
26
|
+
'aan een extensie of een geïncludeerde config. Let op: die cache ligt standaard niet ' +
|
|
27
|
+
'in het project maar in de tijdelijke map van het systeem, en wordt dan gedeeld met ' +
|
|
28
|
+
'elk ander project dat geen eigen tmpDir zet. Het antwoord noemt de map die geleegd is.',
|
|
29
|
+
inputSchema: {
|
|
30
|
+
project: projectArgument,
|
|
31
|
+
config: configArgument,
|
|
32
|
+
timeoutSeconds: z.number().int().positive().max(1800).optional(),
|
|
33
|
+
},
|
|
34
|
+
outputSchema: { project: z.string(), output: z.string() },
|
|
35
|
+
annotations: clears(),
|
|
36
|
+
}, async (args, extra) => {
|
|
37
|
+
try {
|
|
38
|
+
const resolved = resolveProject(args.project, roots);
|
|
39
|
+
const cleared = await clearResultCache(resolved, {
|
|
40
|
+
...(args.config === undefined ? {} : { config: resolveWithin(resolved, args.config) }),
|
|
41
|
+
...(args.timeoutSeconds === undefined ? {} : { timeoutMs: args.timeoutSeconds * 1000 }),
|
|
42
|
+
signal: extra.signal,
|
|
43
|
+
});
|
|
44
|
+
// Juist deze twee zijn het melden waard: ze veranderen iets, en dan is een
|
|
45
|
+
// logregel het enige spoor dat er iets gebeurd is.
|
|
46
|
+
log(server, 'info', { gebeurtenis: 'resultcache geleegd', project: resolved.path });
|
|
47
|
+
return {
|
|
48
|
+
content: [{ type: 'text', text: cleared.output }],
|
|
49
|
+
structuredContent: { ...cleared },
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
catch (error) {
|
|
53
|
+
return toFailure(error);
|
|
54
|
+
}
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
/** Standaardnaam, dezelfde die PHPStan zelf gebruikt. */
|
|
58
|
+
const DEFAULT_BASELINE = 'phpstan-baseline.neon';
|
|
59
|
+
/** Hangt `generate_baseline` aan de server. Alleen aanroepen als schrijven aanstaat. */
|
|
60
|
+
export function registerGenerateBaseline(server, roots) {
|
|
61
|
+
server.registerTool('generate_baseline', {
|
|
62
|
+
title: 'Baseline genereren',
|
|
63
|
+
description: 'Zet alle huidige fouten in een baseline-bestand, zodat een volgende analyse alleen ' +
|
|
64
|
+
'meldt wat er nieuw bij komt. Bedoeld om een bestaand project onder PHPStan te ' +
|
|
65
|
+
'krijgen, niet om fouten weg te werken: wat hierin komt, wordt daarna niet meer ' +
|
|
66
|
+
'gemeld. Overschrijft een bestaande baseline. Het bestand moet nog wel in de config ' +
|
|
67
|
+
'geïncludeerd worden voordat het effect heeft.',
|
|
68
|
+
inputSchema: {
|
|
69
|
+
project: projectArgument,
|
|
70
|
+
file: z
|
|
71
|
+
.string()
|
|
72
|
+
.optional()
|
|
73
|
+
.describe(`Doelbestand binnen het project (standaard ${DEFAULT_BASELINE})`),
|
|
74
|
+
paths: z.array(z.string()).optional().describe('Paden binnen het project'),
|
|
75
|
+
level: z.string().optional().describe('Level-override, 0 t/m 10 of "max"'),
|
|
76
|
+
config: configArgument,
|
|
77
|
+
allowEmpty: z
|
|
78
|
+
.boolean()
|
|
79
|
+
.optional()
|
|
80
|
+
.describe('Ook schrijven als er niets te negeren valt; anders weigert PHPStan'),
|
|
81
|
+
memoryLimit: z.string().optional(),
|
|
82
|
+
timeoutSeconds: z.number().int().positive().max(1800).optional(),
|
|
83
|
+
},
|
|
84
|
+
outputSchema: {
|
|
85
|
+
project: z.string(),
|
|
86
|
+
file: z.string(),
|
|
87
|
+
errors: z.number().describe('Hoeveel fouten er in de baseline gezet zijn'),
|
|
88
|
+
output: z.string(),
|
|
89
|
+
},
|
|
90
|
+
annotations: writes(),
|
|
91
|
+
}, async (args, extra) => {
|
|
92
|
+
try {
|
|
93
|
+
const resolved = resolveProject(args.project, roots);
|
|
94
|
+
const generated = await generateBaseline(resolved, {
|
|
95
|
+
file: resolveNewWithin(resolved, args.file ?? DEFAULT_BASELINE),
|
|
96
|
+
...(args.paths === undefined
|
|
97
|
+
? {}
|
|
98
|
+
: { paths: args.paths.map((path) => resolveWithin(resolved, path)) }),
|
|
99
|
+
...(args.allowEmpty === undefined ? {} : { allowEmpty: args.allowEmpty }),
|
|
100
|
+
...common(resolved, args),
|
|
101
|
+
signal: extra.signal,
|
|
102
|
+
});
|
|
103
|
+
log(server, 'info', {
|
|
104
|
+
gebeurtenis: 'baseline geschreven',
|
|
105
|
+
project: resolved.path,
|
|
106
|
+
bestand: generated.file,
|
|
107
|
+
fouten: generated.errors,
|
|
108
|
+
});
|
|
109
|
+
return {
|
|
110
|
+
content: [{ type: 'text', text: renderGenerated(resolved, generated) }],
|
|
111
|
+
structuredContent: { ...generated },
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
catch (error) {
|
|
115
|
+
return toFailure(error);
|
|
116
|
+
}
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
/** De uitkomst plus wat er nog moet gebeuren voordat de baseline iets doet. */
|
|
120
|
+
function renderGenerated(project, generated) {
|
|
121
|
+
const naam = displayPath(project.path, generated.file);
|
|
122
|
+
return [
|
|
123
|
+
`${String(generated.errors)} fout(en) in ${naam} gezet.`,
|
|
124
|
+
'',
|
|
125
|
+
`Deze fouten worden vanaf nu niet meer gemeld zodra ${naam} in de configuratie staat:`,
|
|
126
|
+
'',
|
|
127
|
+
'includes:',
|
|
128
|
+
` - ${naam}`,
|
|
129
|
+
].join('\n');
|
|
130
|
+
}
|
|
131
|
+
//# sourceMappingURL=writes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"writes.js","sourceRoot":"","sources":["../../src/tools/writes.ts"],"names":[],"mappings":"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"}
|
package/dist/tools.d.ts
CHANGED
|
@@ -1,15 +1,4 @@
|
|
|
1
1
|
import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
2
2
|
import type { Root } from './roots.js';
|
|
3
|
-
/** Env-variabele die schrijvende tools vrijgeeft. */
|
|
4
|
-
export declare const WRITES_ENV_VAR = "PHPSTAN_MCP_ALLOW_WRITES";
|
|
5
|
-
/**
|
|
6
|
-
* Of schrijvende tools geregistreerd mogen worden. Alleen "1" en "true" tellen; al
|
|
7
|
-
* het andere staat uit. Dat faalt de veilige kant op: een typfout laat schrijven
|
|
8
|
-
* uit, en de opstartregel zegt wat er geldt.
|
|
9
|
-
*
|
|
10
|
-
* Niet registreren en niet weigeren-bij-de-aanroep: een tool die bestaat maar altijd
|
|
11
|
-
* nee zegt, kost het model een ronde en context om dat te ontdekken.
|
|
12
|
-
*/
|
|
13
|
-
export declare function writesAllowed(env?: NodeJS.ProcessEnv): boolean;
|
|
14
3
|
/** Hangt alle tools aan de server. */
|
|
15
4
|
export declare function registerTools(server: McpServer, roots: Root[]): void;
|