phpstan-mcp-mx 0.12.0 → 0.14.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 +22 -0
- package/README.md +113 -6
- package/dist/baseline.d.ts +19 -0
- package/dist/baseline.js +44 -11
- package/dist/baseline.js.map +1 -1
- package/dist/changed.d.ts +22 -0
- package/dist/changed.js +93 -9
- package/dist/changed.js.map +1 -1
- package/dist/config.d.ts +3 -2
- package/dist/config.js.map +1 -1
- package/dist/defaults.d.ts +37 -0
- package/dist/defaults.js +100 -0
- package/dist/defaults.js.map +1 -0
- package/dist/failure.d.ts +1 -1
- package/dist/failure.js.map +1 -1
- package/dist/index.js +17 -1
- package/dist/index.js.map +1 -1
- package/dist/phpstan.js +58 -19
- package/dist/phpstan.js.map +1 -1
- package/dist/project.d.ts +10 -1
- package/dist/project.js +28 -1
- package/dist/project.js.map +1 -1
- package/dist/report.d.ts +39 -3
- package/dist/report.js +59 -14
- package/dist/report.js.map +1 -1
- package/dist/runs.d.ts +59 -0
- package/dist/runs.js +78 -0
- package/dist/runs.js.map +1 -0
- package/dist/schema-dialect.d.ts +30 -0
- package/dist/schema-dialect.js +57 -0
- package/dist/schema-dialect.js.map +1 -0
- package/dist/server.js +5 -0
- package/dist/server.js.map +1 -1
- package/dist/tmpdir.js.map +1 -1
- package/dist/tools/analysis.d.ts +4 -3
- package/dist/tools/analysis.js +35 -8
- package/dist/tools/analysis.js.map +1 -1
- package/dist/tools/inspect.d.ts +2 -0
- package/dist/tools/inspect.js +140 -1
- package/dist/tools/inspect.js.map +1 -1
- package/dist/tools/prompts.d.ts +8 -1
- package/dist/tools/prompts.js +85 -4
- package/dist/tools/prompts.js.map +1 -1
- package/dist/tools/shared.d.ts +26 -2
- package/dist/tools/shared.js +63 -5
- package/dist/tools/shared.js.map +1 -1
- package/dist/tools.js +9 -4
- package/dist/tools.js.map +1 -1
- package/dist/unmatched.d.ts +91 -0
- package/dist/unmatched.js +309 -0
- package/dist/unmatched.js.map +1 -0
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +2 -1
package/dist/report.js
CHANGED
|
@@ -18,16 +18,19 @@ const MAX_MESSAGE_CHARS = 1000;
|
|
|
18
18
|
* en maar één pagina bevindingen. De samenvatting rekent bewust over de volledige
|
|
19
19
|
* lijst — anders zou de tweede pagina andere totalen melden dan de eerste.
|
|
20
20
|
*/
|
|
21
|
-
export function buildReport(result, window = {}, notices = []) {
|
|
21
|
+
export function buildReport(result, window = {}, notices = [], onChangedLine) {
|
|
22
22
|
const all = result.findings.map((finding) => ({
|
|
23
23
|
...finding,
|
|
24
24
|
file: displayPath(result.project, finding.file),
|
|
25
|
+
...(onChangedLine === undefined ? {} : { onChangedLine: onChangedLine(finding.file, finding.line) }),
|
|
25
26
|
}));
|
|
26
27
|
// Filteren vóór het pagineren, maar ná het samenvatten: page.total moet de
|
|
27
28
|
// gefilterde lijst beschrijven, anders liegen offset en hasMore. De samenvatting
|
|
28
29
|
// rekent over alles, zodat het model ziet wat het met een filter wegliet.
|
|
29
30
|
const filter = normaliseFilter(window.identifiers);
|
|
30
|
-
const
|
|
31
|
+
const onlyChanged = onChangedLine !== undefined && window.onlyChangedLines === true;
|
|
32
|
+
const selected = all.filter((finding) => (filter === null || matches(finding, filter)) && (!onlyChanged || finding.onChangedLine === true));
|
|
33
|
+
const onChangedCount = all.filter((finding) => finding.onChangedLine === true).length;
|
|
31
34
|
const limit = clamp(window.limit ?? DEFAULT_LIMIT, 1, MAX_LIMIT);
|
|
32
35
|
const offset = clamp(window.offset ?? 0, 0, Math.max(selected.length, 0));
|
|
33
36
|
const findings = selected.slice(offset, offset + limit);
|
|
@@ -51,6 +54,9 @@ export function buildReport(result, window = {}, notices = []) {
|
|
|
51
54
|
hasMore: offset + findings.length < selected.length,
|
|
52
55
|
},
|
|
53
56
|
filter,
|
|
57
|
+
changedLines: onChangedLine === undefined
|
|
58
|
+
? null
|
|
59
|
+
: { onChangedLine: onChangedCount, elsewhere: all.length - onChangedCount, onlyChangedLines: onlyChanged },
|
|
54
60
|
};
|
|
55
61
|
}
|
|
56
62
|
/** Lege of alleen-witruimte-waarden vallen weg; blijft er niets over, dan is er geen filter. */
|
|
@@ -71,8 +77,11 @@ function matches(finding, filter) {
|
|
|
71
77
|
const identifier = finding.identifier;
|
|
72
78
|
return filter.some((value) => identifier === value || identifier.startsWith(`${value}.`));
|
|
73
79
|
}
|
|
74
|
-
/**
|
|
75
|
-
|
|
80
|
+
/**
|
|
81
|
+
* Schrijft een rapport uit als tekst voor het model. Met een `runId` noemt de
|
|
82
|
+
* vervolgregel die erbij, zodat de volgende pagina uit hetzelfde resultaat komt.
|
|
83
|
+
*/
|
|
84
|
+
export function renderReport(report, runId) {
|
|
76
85
|
const lines = [];
|
|
77
86
|
// Bovenaan, vóór de fouten: dit bepaalt of je de uitslag hieronder mag vertrouwen.
|
|
78
87
|
if (report.warnings.length > 0) {
|
|
@@ -98,20 +107,26 @@ export function renderReport(report) {
|
|
|
98
107
|
}
|
|
99
108
|
lines.push('');
|
|
100
109
|
}
|
|
110
|
+
const filters = describeFilters(report);
|
|
111
|
+
const changes = report.changedLines === null ? null : describeChangedLines(report.changedLines);
|
|
101
112
|
if (report.page.total === 0) {
|
|
102
|
-
if (
|
|
103
|
-
lines.push(`Geen bevindingen
|
|
113
|
+
if (filters !== null && report.totals.fileErrors > 0) {
|
|
114
|
+
lines.push(`Geen bevindingen ${filters}, ` +
|
|
104
115
|
`terwijl er ${report.totals.fileErrors} andere bevinding(en) zijn.`);
|
|
116
|
+
if (changes !== null)
|
|
117
|
+
lines.push(changes);
|
|
105
118
|
return lines.join('\n');
|
|
106
119
|
}
|
|
107
120
|
const zonderContext = report.generalErrors.length === 0 && report.warnings.length === 0 && report.notices.length === 0;
|
|
108
121
|
lines.push(zonderContext ? 'Geen bevindingen.' : 'Verder geen bevindingen.');
|
|
109
122
|
return lines.join('\n');
|
|
110
123
|
}
|
|
111
|
-
lines.push(
|
|
124
|
+
lines.push(filters === null
|
|
112
125
|
? `${report.page.total} bevinding(en) in ${report.summary.filesWithFindings} bestand(en).`
|
|
113
|
-
: `${report.page.total} bevinding(en)
|
|
114
|
-
|
|
126
|
+
: `${report.page.total} bevinding(en) ${filters}, van ${report.totals.fileErrors} in totaal.`);
|
|
127
|
+
if (changes !== null)
|
|
128
|
+
lines.push(changes);
|
|
129
|
+
lines.push('', filters === null
|
|
115
130
|
? 'Meest voorkomend:'
|
|
116
131
|
: 'Meest voorkomend (over álle bevindingen, ook de weggefilterde):', ...report.summary.byIdentifier.map((row) => ` ${pad(row.count)} ${row.identifier}`));
|
|
117
132
|
if (report.summary.byFile.length > 1) {
|
|
@@ -120,16 +135,20 @@ export function renderReport(report) {
|
|
|
120
135
|
const from = report.page.offset + 1;
|
|
121
136
|
const to = report.page.offset + report.page.returned;
|
|
122
137
|
lines.push('', `Bevindingen ${from}-${to} van ${report.page.total}:`);
|
|
138
|
+
// De markeringskolom staat er alleen als er een wijziging is om tegen te leggen,
|
|
139
|
+
// zodat de uitvoer van de andere tools niet verandert.
|
|
140
|
+
const marked = report.changedLines !== null;
|
|
123
141
|
let current = null;
|
|
124
142
|
for (const finding of report.findings) {
|
|
125
143
|
if (finding.file !== current) {
|
|
126
144
|
current = finding.file;
|
|
127
145
|
lines.push('', current);
|
|
128
146
|
}
|
|
147
|
+
const mark = marked ? (finding.onChangedLine === true ? '+ ' : ' ') : '';
|
|
129
148
|
const where = finding.line === null ? ' ?' : String(finding.line).padStart(4);
|
|
130
|
-
lines.push(`${where} ${finding.identifier ?? '-'} ${finding.message}`);
|
|
149
|
+
lines.push(`${mark}${where} ${finding.identifier ?? '-'} ${finding.message}`);
|
|
131
150
|
if (finding.tip !== null)
|
|
132
|
-
lines.push(
|
|
151
|
+
lines.push(`${marked ? ' ' : ''} tip: ${finding.tip}`);
|
|
133
152
|
}
|
|
134
153
|
if (report.instructions.length > 0) {
|
|
135
154
|
lines.push('', 'PHPStan zegt hierbij:');
|
|
@@ -137,18 +156,44 @@ export function renderReport(report) {
|
|
|
137
156
|
lines.push(` ${regel}`);
|
|
138
157
|
}
|
|
139
158
|
if (report.page.hasMore) {
|
|
140
|
-
lines.push('',
|
|
141
|
-
`
|
|
159
|
+
lines.push('', runId === undefined
|
|
160
|
+
? `Nog ${report.page.total - to} bevinding(en). Roep dezelfde tool opnieuw aan met ` +
|
|
161
|
+
`offset=${to} voor de rest.`
|
|
162
|
+
: `Nog ${report.page.total - to} bevinding(en). Roep dezelfde tool opnieuw aan met ` +
|
|
163
|
+
`offset=${to} en runId="${runId}"; dan komt de rest uit dit resultaat in plaats van ` +
|
|
164
|
+
'uit een nieuwe analyse.');
|
|
142
165
|
}
|
|
143
166
|
return lines.join('\n');
|
|
144
167
|
}
|
|
168
|
+
/** Waarop de pagina beperkt is, als bijzin ("met identifier x op een gewijzigde regel"), of null. */
|
|
169
|
+
function describeFilters(report) {
|
|
170
|
+
const parts = [];
|
|
171
|
+
if (report.filter !== null)
|
|
172
|
+
parts.push(`met identifier ${report.filter.join(', ')}`);
|
|
173
|
+
if (report.changedLines?.onlyChangedLines === true)
|
|
174
|
+
parts.push('op een gewijzigde regel');
|
|
175
|
+
return parts.length === 0 ? null : parts.join(' ');
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* De verhouding tot de wijziging, met het voorbehoud erbij. Dat voorbehoud is het
|
|
179
|
+
* punt: "elders" is niet "stond er al" — een aangepaste signatuur levert fouten op
|
|
180
|
+
* bij de aanroepen, en die regels heb je niet aangeraakt.
|
|
181
|
+
*/
|
|
182
|
+
function describeChangedLines(changes) {
|
|
183
|
+
const zin = `${changes.onChangedLine} op een regel die je gewijzigd hebt (gemarkeerd met +), ` +
|
|
184
|
+
`${changes.elsewhere} elders in deze bestanden.`;
|
|
185
|
+
return changes.elsewhere === 0
|
|
186
|
+
? zin
|
|
187
|
+
: `${zin} Die laatste kunnen er al gestaan hebben, maar ook uit je wijziging volgen — ` +
|
|
188
|
+
'een aangepaste signatuur raakt de aanroepen.';
|
|
189
|
+
}
|
|
145
190
|
/**
|
|
146
191
|
* Kapt een meldinglijst af op aantal en op lengte per melding. Het aantal
|
|
147
192
|
* weggelaten meldingen komt apart terug in plaats van als extra regel in de lijst:
|
|
148
193
|
* die lijst gaat ook als structuredContent naar buiten, en daar hoort geen
|
|
149
194
|
* verzonnen melding tussen te staan.
|
|
150
195
|
*/
|
|
151
|
-
function limitMessages(messages) {
|
|
196
|
+
export function limitMessages(messages) {
|
|
152
197
|
return {
|
|
153
198
|
kept: messages.slice(0, MAX_MESSAGES).map(truncate),
|
|
154
199
|
omitted: Math.max(messages.length - MAX_MESSAGES, 0),
|
package/dist/report.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"report.js","sourceRoot":"","sources":["../src/report.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"report.js","sourceRoot":"","sources":["../src/report.ts"],"names":[],"mappings":"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"}
|
package/dist/runs.d.ts
ADDED
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import type { AnalysisResult } from './phpstan.js';
|
|
2
|
+
import type { ChangedLineCheck } from './report.js';
|
|
3
|
+
/**
|
|
4
|
+
* Hoeveel analyses er bewaard blijven. Klein, want een resultaat van een groot project
|
|
5
|
+
* kan duizenden bevindingen bevatten, en het doel is alleen dat de volgende pagina van
|
|
6
|
+
* een lopend gesprek uit hetzelfde resultaat komt — geen cache over sessies heen.
|
|
7
|
+
*/
|
|
8
|
+
export declare const MAX_RUNS = 16;
|
|
9
|
+
/**
|
|
10
|
+
* Hoe lang een resultaat bruikbaar blijft. Lang genoeg om door een paar pagina's te
|
|
11
|
+
* lopen, kort genoeg dat een vergeten `runId` niet uren later een verouderde pagina
|
|
12
|
+
* oplevert.
|
|
13
|
+
*/
|
|
14
|
+
export declare const RUN_TTL_MS: number;
|
|
15
|
+
/** Alles wat nodig is om een pagina opnieuw op te bouwen zonder PHPStan te starten. */
|
|
16
|
+
export interface StoredRun {
|
|
17
|
+
readonly project: string;
|
|
18
|
+
/** Tool en analyse-argumenten; een runId geldt alleen voor precies die combinatie. */
|
|
19
|
+
readonly key: string;
|
|
20
|
+
readonly result: AnalysisResult;
|
|
21
|
+
readonly notices: readonly string[];
|
|
22
|
+
readonly heading?: string;
|
|
23
|
+
readonly onChangedLine?: ChangedLineCheck;
|
|
24
|
+
}
|
|
25
|
+
/** Een bewaarde run met het moment waarop hij gemaakt is. */
|
|
26
|
+
export interface FoundRun extends StoredRun {
|
|
27
|
+
readonly id: string;
|
|
28
|
+
readonly createdAt: number;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* De bewaarde analyses van deze server.
|
|
32
|
+
*
|
|
33
|
+
* Toestand, en dat is in dit project een beladen woord: `set_project` is afgewezen
|
|
34
|
+
* omdat het model die toestand niet ziet. Een runId staat wél in de context van het
|
|
35
|
+
* model — het geeft hem zelf mee — en zonder runId gedraagt elke tool zich zoals
|
|
36
|
+
* altijd. Dat is het verschil.
|
|
37
|
+
*/
|
|
38
|
+
export declare class RunStore {
|
|
39
|
+
private readonly now;
|
|
40
|
+
private readonly max;
|
|
41
|
+
private readonly ttlMs;
|
|
42
|
+
private readonly runs;
|
|
43
|
+
constructor(now?: () => number, max?: number, ttlMs?: number);
|
|
44
|
+
/** Bewaart een run en geeft zijn id terug. De oudste valt eruit als het er te veel worden. */
|
|
45
|
+
put(run: StoredRun): string;
|
|
46
|
+
/**
|
|
47
|
+
* Een run die bij dit project en deze argumenten hoort, of null. Null voor een
|
|
48
|
+
* onbekend id, een verlopen run en een run met andere argumenten: in alle drie de
|
|
49
|
+
* gevallen zou een pagina eruit iets anders beschrijven dan waar om gevraagd wordt.
|
|
50
|
+
*/
|
|
51
|
+
get(id: string, project: string, key: string): FoundRun | null;
|
|
52
|
+
private prune;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* De sleutel waar een runId aan vastzit: de tool en de argumenten die bepalen wát er
|
|
56
|
+
* geanalyseerd wordt. Geheugenlimiet en timeout horen er niet bij — die veranderen
|
|
57
|
+
* de uitslag niet, alleen of hij er komt.
|
|
58
|
+
*/
|
|
59
|
+
export declare function runKey(tool: string, args: Record<string, unknown>): string;
|
package/dist/runs.js
ADDED
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { randomBytes } from 'node:crypto';
|
|
2
|
+
/**
|
|
3
|
+
* Hoeveel analyses er bewaard blijven. Klein, want een resultaat van een groot project
|
|
4
|
+
* kan duizenden bevindingen bevatten, en het doel is alleen dat de volgende pagina van
|
|
5
|
+
* een lopend gesprek uit hetzelfde resultaat komt — geen cache over sessies heen.
|
|
6
|
+
*/
|
|
7
|
+
export const MAX_RUNS = 16;
|
|
8
|
+
/**
|
|
9
|
+
* Hoe lang een resultaat bruikbaar blijft. Lang genoeg om door een paar pagina's te
|
|
10
|
+
* lopen, kort genoeg dat een vergeten `runId` niet uren later een verouderde pagina
|
|
11
|
+
* oplevert.
|
|
12
|
+
*/
|
|
13
|
+
export const RUN_TTL_MS = 10 * 60_000;
|
|
14
|
+
/**
|
|
15
|
+
* De bewaarde analyses van deze server.
|
|
16
|
+
*
|
|
17
|
+
* Toestand, en dat is in dit project een beladen woord: `set_project` is afgewezen
|
|
18
|
+
* omdat het model die toestand niet ziet. Een runId staat wél in de context van het
|
|
19
|
+
* model — het geeft hem zelf mee — en zonder runId gedraagt elke tool zich zoals
|
|
20
|
+
* altijd. Dat is het verschil.
|
|
21
|
+
*/
|
|
22
|
+
export class RunStore {
|
|
23
|
+
now;
|
|
24
|
+
max;
|
|
25
|
+
ttlMs;
|
|
26
|
+
runs = new Map();
|
|
27
|
+
constructor(now = Date.now, max = MAX_RUNS, ttlMs = RUN_TTL_MS) {
|
|
28
|
+
this.now = now;
|
|
29
|
+
this.max = max;
|
|
30
|
+
this.ttlMs = ttlMs;
|
|
31
|
+
}
|
|
32
|
+
/** Bewaart een run en geeft zijn id terug. De oudste valt eruit als het er te veel worden. */
|
|
33
|
+
put(run) {
|
|
34
|
+
this.prune();
|
|
35
|
+
const id = randomBytes(6).toString('base64url');
|
|
36
|
+
this.runs.set(id, { ...run, id, createdAt: this.now() });
|
|
37
|
+
// Een Map houdt de volgorde van toevoegen aan; de eerste sleutel is dus de oudste.
|
|
38
|
+
while (this.runs.size > this.max) {
|
|
39
|
+
const oldest = this.runs.keys().next().value;
|
|
40
|
+
if (oldest === undefined)
|
|
41
|
+
break;
|
|
42
|
+
this.runs.delete(oldest);
|
|
43
|
+
}
|
|
44
|
+
return id;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Een run die bij dit project en deze argumenten hoort, of null. Null voor een
|
|
48
|
+
* onbekend id, een verlopen run en een run met andere argumenten: in alle drie de
|
|
49
|
+
* gevallen zou een pagina eruit iets anders beschrijven dan waar om gevraagd wordt.
|
|
50
|
+
*/
|
|
51
|
+
get(id, project, key) {
|
|
52
|
+
this.prune();
|
|
53
|
+
const run = this.runs.get(id);
|
|
54
|
+
if (run === undefined || run.project !== project || run.key !== key)
|
|
55
|
+
return null;
|
|
56
|
+
return run;
|
|
57
|
+
}
|
|
58
|
+
prune() {
|
|
59
|
+
const grens = this.now() - this.ttlMs;
|
|
60
|
+
for (const [id, run] of this.runs) {
|
|
61
|
+
if (run.createdAt < grens)
|
|
62
|
+
this.runs.delete(id);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* De sleutel waar een runId aan vastzit: de tool en de argumenten die bepalen wát er
|
|
68
|
+
* geanalyseerd wordt. Geheugenlimiet en timeout horen er niet bij — die veranderen
|
|
69
|
+
* de uitslag niet, alleen of hij er komt.
|
|
70
|
+
*/
|
|
71
|
+
export function runKey(tool, args) {
|
|
72
|
+
const sorted = Object.keys(args)
|
|
73
|
+
.sort()
|
|
74
|
+
.filter((name) => args[name] !== undefined)
|
|
75
|
+
.map((name) => [name, args[name]]);
|
|
76
|
+
return JSON.stringify([tool, sorted]);
|
|
77
|
+
}
|
|
78
|
+
//# sourceMappingURL=runs.js.map
|
package/dist/runs.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runs.js","sourceRoot":"","sources":["../src/runs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAI1C;;;;GAIG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,EAAE,CAAC;AAE3B;;;;GAIG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,EAAE,GAAG,MAAM,CAAC;AAmBtC;;;;;;;GAOG;AACH,MAAM,OAAO,QAAQ;IAIA;IACA;IACA;IALF,IAAI,GAAG,IAAI,GAAG,EAAoB,CAAC;IAEpD,YACmB,MAAoB,IAAI,CAAC,GAAG,EAC5B,MAAc,QAAQ,EACtB,QAAgB,UAAU;QAF1B,QAAG,GAAH,GAAG,CAAyB;QAC5B,QAAG,GAAH,GAAG,CAAmB;QACtB,UAAK,GAAL,KAAK,CAAqB;IAC1C,CAAC;IAEJ,8FAA8F;IAC9F,GAAG,CAAC,GAAc;QAChB,IAAI,CAAC,KAAK,EAAE,CAAC;QACb,MAAM,EAAE,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;QAChD,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QAEzD,mFAAmF;QACnF,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YACjC,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC;YAC7C,IAAI,MAAM,KAAK,SAAS;gBAAE,MAAM;YAChC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC3B,CAAC;QAED,OAAO,EAAE,CAAC;IACZ,CAAC;IAED;;;;OAIG;IACH,GAAG,CAAC,EAAU,EAAE,OAAe,EAAE,GAAW;QAC1C,IAAI,CAAC,KAAK,EAAE,CAAC;QACb,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC9B,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,CAAC,OAAO,KAAK,OAAO,IAAI,GAAG,CAAC,GAAG,KAAK,GAAG;YAAE,OAAO,IAAI,CAAC;QACjF,OAAO,GAAG,CAAC;IACb,CAAC;IAEO,KAAK;QACX,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;QACtC,KAAK,MAAM,CAAC,EAAE,EAAE,GAAG,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YAClC,IAAI,GAAG,CAAC,SAAS,GAAG,KAAK;gBAAE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAClD,CAAC;IACH,CAAC;CACF;AAED;;;;GAIG;AACH,MAAM,UAAU,MAAM,CAAC,IAAY,EAAE,IAA6B;IAChE,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;SAC7B,IAAI,EAAE;SACN,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,SAAS,CAAC;SAC1C,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACrC,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;AACxC,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { Transport } from '@modelcontextprotocol/sdk/shared/transport.js';
|
|
2
|
+
import type { JSONRPCMessage } from '@modelcontextprotocol/sdk/types.js';
|
|
3
|
+
/**
|
|
4
|
+
* Haalt `$schema` weg uit de tool-schema's in een `tools/list`-antwoord.
|
|
5
|
+
*
|
|
6
|
+
* Het SDK zet er altijd `"$schema": "http://json-schema.org/draft-07/schema#"` in, en
|
|
7
|
+
* heeft geen optie om dat te veranderen. Nagemeten met beide soorten validator:
|
|
8
|
+
*
|
|
9
|
+
* - de client van Claude Code accepteert alleen 2020-12 en weigerde daardoor elke tool
|
|
10
|
+
* ("JSON Schema declares an unsupported dialect") — de hele server was onbruikbaar;
|
|
11
|
+
* - de SDK-client gebruikt `new Ajv()`, dat standaard draft-07 is, en weigert juist een
|
|
12
|
+
* schema dat 2020-12 declareert ("no schema with key or ref").
|
|
13
|
+
*
|
|
14
|
+
* Zonder `$schema` compileren ze allebei, en valideren ze hetzelfde: de schema's hier
|
|
15
|
+
* gebruiken alleen wat in beide dialecten hetzelfde betekent. Weglaten is ook wat de
|
|
16
|
+
* MCP-specificatie beoogt — zonder declaratie geldt 2020-12.
|
|
17
|
+
*
|
|
18
|
+
* Een nieuw object in plaats van het bericht aanpassen: het SDK kan hetzelfde object
|
|
19
|
+
* elders nog gebruiken.
|
|
20
|
+
*/
|
|
21
|
+
export declare function stripSchemaDialect(message: JSONRPCMessage): JSONRPCMessage;
|
|
22
|
+
/**
|
|
23
|
+
* Laat een transport elk uitgaand bericht door `stripSchemaDialect` halen. Het transport
|
|
24
|
+
* zelf wordt aangepast en niet ingepakt: `connect` hangt zijn handlers aan het object dat
|
|
25
|
+
* het krijgt, en een wrapper zou die van het echte transport afschermen.
|
|
26
|
+
*
|
|
27
|
+
* Op het transport en niet in de `tools/list`-handler van het SDK, want die overschrijven
|
|
28
|
+
* kan alleen via private velden. `send` is publieke API, en elk antwoord komt erlangs.
|
|
29
|
+
*/
|
|
30
|
+
export declare function withoutSchemaDialect<T extends Transport>(transport: T): T;
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Haalt `$schema` weg uit de tool-schema's in een `tools/list`-antwoord.
|
|
3
|
+
*
|
|
4
|
+
* Het SDK zet er altijd `"$schema": "http://json-schema.org/draft-07/schema#"` in, en
|
|
5
|
+
* heeft geen optie om dat te veranderen. Nagemeten met beide soorten validator:
|
|
6
|
+
*
|
|
7
|
+
* - de client van Claude Code accepteert alleen 2020-12 en weigerde daardoor elke tool
|
|
8
|
+
* ("JSON Schema declares an unsupported dialect") — de hele server was onbruikbaar;
|
|
9
|
+
* - de SDK-client gebruikt `new Ajv()`, dat standaard draft-07 is, en weigert juist een
|
|
10
|
+
* schema dat 2020-12 declareert ("no schema with key or ref").
|
|
11
|
+
*
|
|
12
|
+
* Zonder `$schema` compileren ze allebei, en valideren ze hetzelfde: de schema's hier
|
|
13
|
+
* gebruiken alleen wat in beide dialecten hetzelfde betekent. Weglaten is ook wat de
|
|
14
|
+
* MCP-specificatie beoogt — zonder declaratie geldt 2020-12.
|
|
15
|
+
*
|
|
16
|
+
* Een nieuw object in plaats van het bericht aanpassen: het SDK kan hetzelfde object
|
|
17
|
+
* elders nog gebruiken.
|
|
18
|
+
*/
|
|
19
|
+
export function stripSchemaDialect(message) {
|
|
20
|
+
if (!('result' in message))
|
|
21
|
+
return message;
|
|
22
|
+
const tools = message.result.tools;
|
|
23
|
+
if (!Array.isArray(tools))
|
|
24
|
+
return message;
|
|
25
|
+
return {
|
|
26
|
+
...message,
|
|
27
|
+
result: { ...message.result, tools: tools.map(withoutDialect) },
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Laat een transport elk uitgaand bericht door `stripSchemaDialect` halen. Het transport
|
|
32
|
+
* zelf wordt aangepast en niet ingepakt: `connect` hangt zijn handlers aan het object dat
|
|
33
|
+
* het krijgt, en een wrapper zou die van het echte transport afschermen.
|
|
34
|
+
*
|
|
35
|
+
* Op het transport en niet in de `tools/list`-handler van het SDK, want die overschrijven
|
|
36
|
+
* kan alleen via private velden. `send` is publieke API, en elk antwoord komt erlangs.
|
|
37
|
+
*/
|
|
38
|
+
export function withoutSchemaDialect(transport) {
|
|
39
|
+
const send = transport.send.bind(transport);
|
|
40
|
+
transport.send = (message, options) => send(stripSchemaDialect(message), options);
|
|
41
|
+
return transport;
|
|
42
|
+
}
|
|
43
|
+
function withoutDialect(tool) {
|
|
44
|
+
if (typeof tool !== 'object' || tool === null)
|
|
45
|
+
return tool;
|
|
46
|
+
const copy = { ...tool };
|
|
47
|
+
for (const key of ['inputSchema', 'outputSchema']) {
|
|
48
|
+
const schema = copy[key];
|
|
49
|
+
if (typeof schema === 'object' && schema !== null && '$schema' in schema) {
|
|
50
|
+
const rest = { ...schema };
|
|
51
|
+
delete rest['$schema'];
|
|
52
|
+
copy[key] = rest;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
return copy;
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=schema-dialect.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema-dialect.js","sourceRoot":"","sources":["../src/schema-dialect.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,kBAAkB,CAAC,OAAuB;IACxD,IAAI,CAAC,CAAC,QAAQ,IAAI,OAAO,CAAC;QAAE,OAAO,OAAO,CAAC;IAE3C,MAAM,KAAK,GAAI,OAAO,CAAC,MAA8B,CAAC,KAAK,CAAC;IAC5D,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,OAAO,CAAC;IAE1C,OAAO;QACL,GAAG,OAAO;QACV,MAAM,EAAE,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE;KAChE,CAAC;AACJ,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,oBAAoB,CAAsB,SAAY;IACpE,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC5C,SAAS,CAAC,IAAI,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC;IAClF,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,cAAc,CAAC,IAAa;IACnC,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAE3D,MAAM,IAAI,GAA4B,EAAE,GAAI,IAAgC,EAAE,CAAC;IAC/E,KAAK,MAAM,GAAG,IAAI,CAAC,aAAa,EAAE,cAAc,CAAC,EAAE,CAAC;QAClD,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;QACzB,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,IAAI,SAAS,IAAI,MAAM,EAAE,CAAC;YACzE,MAAM,IAAI,GAA4B,EAAE,GAAI,MAAkC,EAAE,CAAC;YACjF,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC;YACvB,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;QACnB,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC"}
|
package/dist/server.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
2
|
+
import { withoutSchemaDialect } from './schema-dialect.js';
|
|
2
3
|
import { registerTools } from './tools.js';
|
|
3
4
|
import { VERSION } from './version.js';
|
|
4
5
|
/**
|
|
@@ -21,6 +22,10 @@ export function createServer(roots) {
|
|
|
21
22
|
'list_projects aan om te zien welke paden geldig zijn.',
|
|
22
23
|
});
|
|
23
24
|
registerTools(server, roots);
|
|
25
|
+
// Hier en niet in index.ts: dan geldt het ook voor de tests, die via een
|
|
26
|
+
// InMemoryTransport met een echte SDK-client praten. Zie schema-dialect.ts.
|
|
27
|
+
const connect = server.connect.bind(server);
|
|
28
|
+
server.connect = (transport) => connect(withoutSchemaDialect(transport));
|
|
24
29
|
return server;
|
|
25
30
|
}
|
|
26
31
|
//# sourceMappingURL=server.js.map
|
package/dist/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC;;;;;;;;GAQG;AACH,MAAM,UAAU,YAAY,CAAC,KAAa;IACxC,MAAM,MAAM,GAAG,IAAI,SAAS,CAC1B,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,OAAO,EAAE,EACzC;QACE,4EAA4E;QAC5E,4EAA4E;QAC5E,6EAA6E;QAC7E,YAAY,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE;QAC7B,YAAY,EACV,0EAA0E;YAC1E,uEAAuE;YACvE,uDAAuD;KAC1D,CACF,CAAC;IAEF,aAAa,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAE7B,yEAAyE;IACzE,4EAA4E;IAC5E,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC5C,MAAM,CAAC,OAAO,GAAG,CAAC,SAAS,EAAE,EAAE,CAAC,OAAO,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC,CAAC;IAEzE,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
package/dist/tmpdir.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tmpdir.js","sourceRoot":"","sources":["../src/tmpdir.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACpC,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAE3C,+EAA+E;AAC/E,MAAM,OAAO,WAAY,SAAQ,WAAW;IAC1C,YAAY,OAAe,EAAE,SAAwB,iBAAiB,EAAE,UAA0B,EAAE;QAClG,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,CAAC;CACF;AAED,gFAAgF;AAChF,MAAM,CAAC,MAAM,cAAc,GAAG,oBAAoB,CAAC;AAEnD,0DAA0D;AAC1D,MAAM,SAAS,GAAG,aAAa,CAAC;AAEhC,sDAAsD;AACtD,MAAM,WAAW,GAAG,EAAE,CAAC;AAUvB;;;;;;GAMG;AACH,MAAM,UAAU,cAAc,CAAC,MAAyB,OAAO,CAAC,GAAG;
|
|
1
|
+
{"version":3,"file":"tmpdir.js","sourceRoot":"","sources":["../src/tmpdir.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACpC,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAE3C,+EAA+E;AAC/E,MAAM,OAAO,WAAY,SAAQ,WAAW;IAC1C,YAAY,OAAe,EAAE,SAAwB,iBAAiB,EAAE,UAA0B,EAAE;QAClG,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,CAAC;CACF;AAED,gFAAgF;AAChF,MAAM,CAAC,MAAM,cAAc,GAAG,oBAAoB,CAAC;AAEnD,0DAA0D;AAC1D,MAAM,SAAS,GAAG,aAAa,CAAC;AAEhC,sDAAsD;AACtD,MAAM,WAAW,GAAG,EAAE,CAAC;AAUvB;;;;;;GAMG;AACH,MAAM,UAAU,cAAc,CAAC,MAAyB,OAAO,CAAC,GAAG;IAEjE,MAAM,UAAU,GAAG,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,UAAU,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAE5F,IAAI,UAAU,KAAK,SAAS,IAAI,UAAU,KAAK,EAAE;QAAE,OAAO,SAAS,CAAC;IACpE,IAAI,UAAU,KAAK,SAAS,IAAI,UAAU,KAAK,QAAQ;QAAE,OAAO,UAAU,CAAC;IAE3E,MAAM,IAAI,WAAW,CACnB,GAAG,cAAc,cAAc,UAAU,4CAA4C;QACnF,2EAA2E,CAC9E,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAAC,OAAe;IAC3C,MAAM,IAAI,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;IACtF,OAAO,IAAI,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;AACnE,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,SAAS,CAAC,OAAe,EAAE,MAAyB,OAAO,CAAC,GAAG;IAC7E,IAAI,cAAc,CAAC,GAAG,CAAC,KAAK,QAAQ;QAAE,OAAO,EAAE,CAAC;IAEhD,MAAM,IAAI,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC;IACpC,IAAI,CAAC;QACH,SAAS,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACvC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,WAAW,CACnB,qBAAqB,IAAI,+BAA+B;YACtD,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI;YAC7D,OAAO,cAAc,iDAAiD,CACzE,CAAC;IACJ,CAAC;IAED,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AACjD,CAAC"}
|
package/dist/tools/analysis.d.ts
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
2
2
|
import type { Root } from '../roots.js';
|
|
3
|
+
import type { RunStore } from '../runs.js';
|
|
3
4
|
/** Hangt `analyse_project` aan de server: PHPStan over (een deel van) een project. */
|
|
4
|
-
export declare function registerAnalyseProject(server: McpServer, roots: Root[]): void;
|
|
5
|
+
export declare function registerAnalyseProject(server: McpServer, roots: Root[], runs: RunStore): void;
|
|
5
6
|
/** Hangt `analyse_changed` aan de server: alleen wat git gewijzigd heeft. */
|
|
6
|
-
export declare function registerAnalyseChanged(server: McpServer, roots: Root[]): void;
|
|
7
|
+
export declare function registerAnalyseChanged(server: McpServer, roots: Root[], runs: RunStore): void;
|
|
7
8
|
/** Hangt `analyse_file` aan de server: één bestand of map binnen een project. */
|
|
8
|
-
export declare function registerAnalyseFile(server: McpServer, roots: Root[]): void;
|
|
9
|
+
export declare function registerAnalyseFile(server: McpServer, roots: Root[], runs: RunStore): void;
|
package/dist/tools/analysis.js
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
-
import { DEFAULT_BASE, changedPhpFiles } from '../changed.js';
|
|
2
|
+
import { DEFAULT_BASE, changedPhpFiles, isOnChangedLine } from '../changed.js';
|
|
3
3
|
import { displayPath } from '../report.js';
|
|
4
4
|
import { resolveWithin } from '../project.js';
|
|
5
|
+
import { runKey } from '../runs.js';
|
|
5
6
|
import { analysisShape, common, configArgument, projectArgument, readOnly, runAnalysis, window, windowShape, } from './shared.js';
|
|
6
7
|
/** Hangt `analyse_project` aan de server: PHPStan over (een deel van) een project. */
|
|
7
|
-
export function registerAnalyseProject(server, roots) {
|
|
8
|
+
export function registerAnalyseProject(server, roots, runs) {
|
|
8
9
|
server.registerTool('analyse_project', {
|
|
9
10
|
title: 'Project analyseren',
|
|
10
11
|
description: 'Draait PHPStan over (een deel van) een project en geeft de bevindingen terug. ' +
|
|
@@ -40,16 +41,21 @@ export function registerAnalyseProject(server, roots) {
|
|
|
40
41
|
: { paths: args.paths.map((path) => resolveWithin(resolved, path)) }),
|
|
41
42
|
...common(resolved, args),
|
|
42
43
|
},
|
|
43
|
-
}), window(args), extra.signal
|
|
44
|
+
}), window(args), extra.signal, {
|
|
45
|
+
runs,
|
|
46
|
+
key: runKey('analyse_project', { paths: args.paths, level: args.level, config: args.config }),
|
|
47
|
+
runId: args.runId,
|
|
48
|
+
}));
|
|
44
49
|
}
|
|
45
50
|
/** Hangt `analyse_changed` aan de server: alleen wat git gewijzigd heeft. */
|
|
46
|
-
export function registerAnalyseChanged(server, roots) {
|
|
51
|
+
export function registerAnalyseChanged(server, roots, runs) {
|
|
47
52
|
server.registerTool('analyse_changed', {
|
|
48
53
|
title: 'Gewijzigde bestanden analyseren',
|
|
49
54
|
description: 'Draait PHPStan over de PHP-bestanden die in dit project gewijzigd zijn volgens git, ' +
|
|
50
55
|
'inclusief bestanden die nog niet toegevoegd zijn. Bedoeld om te zien of een eigen ' +
|
|
51
56
|
'wijziging fouten oplevert, zonder het hele project door te rekenen. Vergelijkt ' +
|
|
52
|
-
`standaard met ${DEFAULT_BASE}; geef \`base\` mee (bijv. "main") voor de hele branch
|
|
57
|
+
`standaard met ${DEFAULT_BASE}; geef \`base\` mee (bijv. "main") voor de hele branch. ` +
|
|
58
|
+
'Elke bevinding zegt met `onChangedLine` of hij op een gewijzigde regel staat.',
|
|
53
59
|
inputSchema: {
|
|
54
60
|
project: projectArgument,
|
|
55
61
|
base: z
|
|
@@ -60,6 +66,11 @@ export function registerAnalyseChanged(server, roots) {
|
|
|
60
66
|
.boolean()
|
|
61
67
|
.optional()
|
|
62
68
|
.describe('Alleen wat gestaged is (git diff --cached), voor een check vóór een commit'),
|
|
69
|
+
onlyChangedLines: z
|
|
70
|
+
.boolean()
|
|
71
|
+
.optional()
|
|
72
|
+
.describe('Alleen bevindingen op regels die gewijzigd zijn. De tellingen blijven over alles ' +
|
|
73
|
+
'gaan, zodat zichtbaar blijft wat er elders in de bestanden staat'),
|
|
63
74
|
level: z.string().optional().describe('Level-override, 0 t/m 10 of "max"'),
|
|
64
75
|
config: configArgument,
|
|
65
76
|
memoryLimit: z.string().optional(),
|
|
@@ -76,8 +87,20 @@ export function registerAnalyseChanged(server, roots) {
|
|
|
76
87
|
return {
|
|
77
88
|
options: { paths: [...changed.files], ...common(resolved, args) },
|
|
78
89
|
heading: describeChanged(resolved, changed),
|
|
90
|
+
onChangedLine: (file, line) => isOnChangedLine(changed, file, line),
|
|
79
91
|
};
|
|
80
|
-
}, window(args), extra.signal
|
|
92
|
+
}, window(args), extra.signal, {
|
|
93
|
+
runs,
|
|
94
|
+
// Base en staged horen erbij: dezelfde runId met een andere base zou een
|
|
95
|
+
// pagina geven van een andere set gewijzigde bestanden.
|
|
96
|
+
key: runKey('analyse_changed', {
|
|
97
|
+
base: args.base,
|
|
98
|
+
staged: args.staged,
|
|
99
|
+
level: args.level,
|
|
100
|
+
config: args.config,
|
|
101
|
+
}),
|
|
102
|
+
runId: args.runId,
|
|
103
|
+
}));
|
|
81
104
|
}
|
|
82
105
|
/** Waarom er niets geanalyseerd is; de overgeslagen paden horen daar bij. */
|
|
83
106
|
function describeNothingChanged(changed) {
|
|
@@ -105,7 +128,7 @@ function skippedLines(changed) {
|
|
|
105
128
|
];
|
|
106
129
|
}
|
|
107
130
|
/** Hangt `analyse_file` aan de server: één bestand of map binnen een project. */
|
|
108
|
-
export function registerAnalyseFile(server, roots) {
|
|
131
|
+
export function registerAnalyseFile(server, roots, runs) {
|
|
109
132
|
server.registerTool('analyse_file', {
|
|
110
133
|
title: 'Bestand of map analyseren',
|
|
111
134
|
description: 'Draait PHPStan over één bestand of map binnen een project. Het pad mag relatief ' +
|
|
@@ -126,6 +149,10 @@ export function registerAnalyseFile(server, roots) {
|
|
|
126
149
|
paths: [resolveWithin(resolved, args.path)],
|
|
127
150
|
...common(resolved, args),
|
|
128
151
|
},
|
|
129
|
-
}), window(args), extra.signal
|
|
152
|
+
}), window(args), extra.signal, {
|
|
153
|
+
runs,
|
|
154
|
+
key: runKey('analyse_file', { path: args.path, level: args.level, config: args.config }),
|
|
155
|
+
runId: args.runId,
|
|
156
|
+
}));
|
|
130
157
|
}
|
|
131
158
|
//# sourceMappingURL=analysis.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"analysis.js","sourceRoot":"","sources":["../../src/tools/analysis.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"analysis.js","sourceRoot":"","sources":["../../src/tools/analysis.ts"],"names":[],"mappings":"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"}
|
package/dist/tools/inspect.d.ts
CHANGED
|
@@ -12,3 +12,5 @@ export declare function registerServerConfig(server: McpServer, roots: Root[]):
|
|
|
12
12
|
export declare function registerDiagnose(server: McpServer, roots: Root[]): void;
|
|
13
13
|
/** Hangt `baseline_summary` aan de server: wat de baseline verbergt. */
|
|
14
14
|
export declare function registerBaselineSummary(server: McpServer, roots: Root[]): void;
|
|
15
|
+
/** Hangt `unmatched_ignores` aan de server: negeerregels die niets meer doen. */
|
|
16
|
+
export declare function registerUnmatchedIgnores(server: McpServer, roots: Root[]): void;
|