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.
Files changed (54) hide show
  1. package/CHANGELOG.md +22 -0
  2. package/README.md +113 -6
  3. package/dist/baseline.d.ts +19 -0
  4. package/dist/baseline.js +44 -11
  5. package/dist/baseline.js.map +1 -1
  6. package/dist/changed.d.ts +22 -0
  7. package/dist/changed.js +93 -9
  8. package/dist/changed.js.map +1 -1
  9. package/dist/config.d.ts +3 -2
  10. package/dist/config.js.map +1 -1
  11. package/dist/defaults.d.ts +37 -0
  12. package/dist/defaults.js +100 -0
  13. package/dist/defaults.js.map +1 -0
  14. package/dist/failure.d.ts +1 -1
  15. package/dist/failure.js.map +1 -1
  16. package/dist/index.js +17 -1
  17. package/dist/index.js.map +1 -1
  18. package/dist/phpstan.js +58 -19
  19. package/dist/phpstan.js.map +1 -1
  20. package/dist/project.d.ts +10 -1
  21. package/dist/project.js +28 -1
  22. package/dist/project.js.map +1 -1
  23. package/dist/report.d.ts +39 -3
  24. package/dist/report.js +59 -14
  25. package/dist/report.js.map +1 -1
  26. package/dist/runs.d.ts +59 -0
  27. package/dist/runs.js +78 -0
  28. package/dist/runs.js.map +1 -0
  29. package/dist/schema-dialect.d.ts +30 -0
  30. package/dist/schema-dialect.js +57 -0
  31. package/dist/schema-dialect.js.map +1 -0
  32. package/dist/server.js +5 -0
  33. package/dist/server.js.map +1 -1
  34. package/dist/tmpdir.js.map +1 -1
  35. package/dist/tools/analysis.d.ts +4 -3
  36. package/dist/tools/analysis.js +35 -8
  37. package/dist/tools/analysis.js.map +1 -1
  38. package/dist/tools/inspect.d.ts +2 -0
  39. package/dist/tools/inspect.js +140 -1
  40. package/dist/tools/inspect.js.map +1 -1
  41. package/dist/tools/prompts.d.ts +8 -1
  42. package/dist/tools/prompts.js +85 -4
  43. package/dist/tools/prompts.js.map +1 -1
  44. package/dist/tools/shared.d.ts +26 -2
  45. package/dist/tools/shared.js +63 -5
  46. package/dist/tools/shared.js.map +1 -1
  47. package/dist/tools.js +9 -4
  48. package/dist/tools.js.map +1 -1
  49. package/dist/unmatched.d.ts +91 -0
  50. package/dist/unmatched.js +309 -0
  51. package/dist/unmatched.js.map +1 -0
  52. package/dist/version.d.ts +1 -1
  53. package/dist/version.js +1 -1
  54. package/package.json +2 -1
package/CHANGELOG.md CHANGED
@@ -4,6 +4,28 @@ Alle noemenswaardige wijzigingen per versie. Vanaf 0.10.0 gegenereerd door
4
4
  semantic-release uit de commit-historie; de versies daarvoor zijn met de hand
5
5
  geschreven.
6
6
 
7
+ # [0.14.0](https://codeberg.org/MartijnSchimmel/phpstan-mcp-mx/compare/v0.13.0...v0.14.0) (2026-09-10)
8
+
9
+
10
+ ### Bug Fixes
11
+
12
+ * laat $schema weg uit de tool-schema's ([96be748](https://codeberg.org/MartijnSchimmel/phpstan-mcp-mx/commit/96be748cd7d738e485f6de1960c3c3e0919c7579))
13
+
14
+
15
+ ### Features
16
+
17
+ * lees de volgende pagina uit hetzelfde resultaat met runId ([caee99f](https://codeberg.org/MartijnSchimmel/phpstan-mcp-mx/commit/caee99f7fb645acf267b4748ecdaee1cb936e3cb))
18
+ * prompt die laat zien wat een level hoger kost ([94cad76](https://codeberg.org/MartijnSchimmel/phpstan-mcp-mx/commit/94cad761b6fc97a46ef47cbc972a2f2522bb32db))
19
+ * spoor verouderde negeerregels op met unmatched_ignores ([435db54](https://codeberg.org/MartijnSchimmel/phpstan-mcp-mx/commit/435db540f1b132552805a7a897db52fced1b470c))
20
+ * standaarden per project voor geheugen, timeout en config ([053335b](https://codeberg.org/MartijnSchimmel/phpstan-mcp-mx/commit/053335bb97a93f7b99f5fc21b07489bff4f11c68))
21
+
22
+ # [0.13.0](https://codeberg.org/MartijnSchimmel/phpstan-mcp-mx/compare/v0.12.0...v0.13.0) (2026-09-10)
23
+
24
+
25
+ ### Features
26
+
27
+ * markeer bevindingen op gewijzigde regels in analyse_changed ([aeeb6b8](https://codeberg.org/MartijnSchimmel/phpstan-mcp-mx/commit/aeeb6b87a2e7c51d395abdaeaeb6e2c39b247767))
28
+
7
29
  # [0.12.0](https://codeberg.org/MartijnSchimmel/phpstan-mcp-mx/compare/v0.11.1...v0.12.0) (2026-09-10)
8
30
 
9
31
 
package/README.md CHANGED
@@ -194,12 +194,15 @@ pad in `PHPSTAN_MCP_CONFIG`):
194
194
  "command": ["docker", "exec", "-w", "/var/www/html", "admin-app"],
195
195
  "workdir": "/var/www/html"
196
196
  }
197
+ },
198
+ "projects": {
199
+ "/Users/jij/projecten/shop": { "memoryLimit": "4G", "timeoutSeconds": 900 }
197
200
  }
198
201
  }
199
202
  ```
200
203
 
201
204
  Daarmee is je MCP-registratie één regel zonder `--env`, en staat de configuratie op één plek
202
- in plaats van verdeeld over zes variabelen.
205
+ in plaats van verdeeld over zeven variabelen.
203
206
 
204
207
  Een bestand dat er niet is, is geen fout: dan geldt alleen de omgeving. Een bestand dat er
205
208
  wél is maar niet klopt, laat de server niet starten — dan heeft iemand iets bedoeld wat
@@ -325,6 +328,41 @@ Dit is de enige manier om het bij de server vast te leggen. PHPStan kent er geen
325
328
  eigen env-variabele; het alternatief is `memory_limit` in je `php.ini`, en dat geldt dan
326
329
  voor élke PHP-CLI op je machine.
327
330
 
331
+ Heeft één project meer nodig dan de rest, zet het dan bij dat project in
332
+ `PHPSTAN_MCP_PROJECTS` in plaats van deze waarde voor iedereen op te hogen — met
333
+ `PHPSTAN_MCP_MAX_PARALLEL=2` is een machinebrede 4G twee keer 4G.
334
+
335
+ ### `PHPSTAN_MCP_PROJECTS` (optioneel)
336
+
337
+ Standaarden voor één project, als JSON — of onder `projects` in het configbestand:
338
+
339
+ ```json
340
+ {
341
+ "/Users/jij/projecten/shop": {
342
+ "memoryLimit": "4G",
343
+ "timeoutSeconds": 900,
344
+ "config": "phpstan-ci.neon"
345
+ }
346
+ }
347
+ ```
348
+
349
+ | Sleutel | Betekenis |
350
+ | --- | --- |
351
+ | `memoryLimit` | `--memory-limit` voor dit project, in dezelfde vorm als `PHPSTAN_MCP_MEMORY_LIMIT` |
352
+ | `timeoutSeconds` | timeout voor dit project, van 1 tot en met 1800 |
353
+ | `config` | configbestand binnen het project, als PHPStan dat niet zelf vindt |
354
+
355
+ De volgorde is steeds dezelfde: wat de aanroep meegeeft, dan de standaard van het project,
356
+ dan die van de hele server. Een standaard is dus geen plafond.
357
+
358
+ `config` gaat door dezelfde padcontrole als een `config` uit een aanroep en moet binnen het
359
+ project liggen; een neon kan PHP-code laten uitvoeren. Hij telt overal als dé config van het
360
+ project: bij de melding dat er een baseline meedoet en bij `unmatched_ignores`.
361
+
362
+ Een onbekende sleutel wordt geweigerd, niet genegeerd: `memorylimit` met een kleine l zou
363
+ anders stil niets doen. `list_projects` en `server_config` tonen welke standaarden er gelden,
364
+ en een kapotte waarde staat daar als probleem bij — de lijst met projecten blijft werken.
365
+
328
366
  ## Tools
329
367
 
330
368
  Elke tool verwacht een expliciet `project`-pad. De server heeft geen "huidig project": dat
@@ -375,10 +413,17 @@ antwoord volloopt met wat er al jaren stond.
375
413
  | `project` | ja | absoluut pad naar de projectroot |
376
414
  | `base` | nee | commit, branch of tag om tegen te vergelijken (standaard `HEAD`) |
377
415
  | `staged` | nee | alleen wat gestaged is (`git diff --cached`), voor een check vóór een commit |
416
+ | `onlyChangedLines` | nee | alleen bevindingen op regels die gewijzigd zijn |
378
417
 
379
418
  Verder dezelfde argumenten als `analyse_project`, op `paths` na. Met `base=main` krijg je de
380
419
  hele branch in plaats van alleen je onopgeslagen werk.
381
420
 
421
+ Elke bevinding zegt met `onChangedLine` of hij op een gewijzigde regel staat; in de tekst
422
+ staat er een `+` voor. Een gewijzigd bestand bevat vaak ook fouten die er al stonden, en
423
+ zonder dat onderscheid ga je die repareren of stop je te vroeg. Let wel: een bevinding op een
424
+ ongewijzigde regel kan nog steeds uit je wijziging volgen — een aangepaste signatuur geeft
425
+ fouten bij de aanroepen, en die regels heb je niet aangeraakt.
426
+
382
427
  Twee dingen die het meeneemt en die je makkelijk mist: **nieuwe bestanden die nog niet aan
383
428
  git toegevoegd zijn** (`git diff` kent die niet, dus er is een tweede uitvraag voor) en
384
429
  **niets uit `resources/views`** — een `.blade.php` eindigt op `.php`, maar is een template
@@ -415,8 +460,11 @@ clientlog, onzichtbaar voor het model. Een geweigerde instelling wordt gemeld in
415
460
  weggelaten: staat `PHPSTAN_MCP_MAX_PARALLEL` op onzin, dan is dat veld `null` en staat de
416
461
  reden onder "Geweigerde instellingen", terwijl de rest gewoon leesbaar blijft.
417
462
 
418
- Let op wat er *niet* in staat: dit is een vaste lijst van zes instellingen en geen
419
- doorgeefluik naar de omgeving. In dezelfde omgeving zitten tokens; die horen niet in een
463
+ Heeft een project eigen standaarden (`PHPSTAN_MCP_PROJECTS`), dan staan die er per project
464
+ onder.
465
+
466
+ Let op wat er *niet* in staat: dit is een vaste lijst van instellingen en geen doorgeefluik
467
+ naar de omgeving. In dezelfde omgeving zitten tokens; die horen niet in een
420
468
  toolantwoord.
421
469
 
422
470
  ### `diagnose_project`
@@ -456,6 +504,36 @@ Let op het onderscheid: wat hier in staat is precies wat `analyse_project` *niet
456
504
  project dat zijn baseline includet, rapporteert alleen de fouten die er nieuw bij komen —
457
505
  die vergelijking maakt PHPStan zelf al.
458
506
 
507
+ ### `unmatched_ignores`
508
+
509
+ Zoekt de negeerregels die niets meer doen: baseline-regels voor fouten die allang opgelost
510
+ zijn, en regels waarvan de `count` hoger is dan wat er nog voorkomt. Veel projecten zetten
511
+ `reportUnmatchedIgnoredErrors: false`, en dan groeit dat ongemerkt — op één project bleken
512
+ 554 van de 2116 baseline-regels niets meer te matchen.
513
+
514
+ | Argument | Verplicht | Betekenis |
515
+ | --- | --- | --- |
516
+ | `project` | ja | absoluut pad naar de projectroot |
517
+ | `memoryLimit` | nee | dit is een volledige analyse, dus die kan meer nodig hebben |
518
+ | `timeoutSeconds` | nee | standaard 300 |
519
+ | `offset` / `limit` | nee | welk deel van de regels je terugkrijgt |
520
+
521
+ Dit is een volledige analyse, met een tijdelijke config die die van het project includet en
522
+ de vlag omzet. Die config staat in de tijdelijke map van de server en niet in het project,
523
+ dus er verandert niets aan je repository. PHPStans resultcache blijft bruikbaar: de vlag
524
+ verandert niets aan wat er geanalyseerd wordt, dus de volgende gewone analyse is net zo snel.
525
+
526
+ Per regel staat erbij of hij uit de baseline komt. Patronen zonder pad komen apart; die staan
527
+ in `ignoreErrors` van je config of van een config die een pakket meebrengt, en daar helpt een
528
+ nieuwe baseline niet.
529
+
530
+ Er is bewust geen `level` en geen `paths`: op een ander niveau zijn het andere fouten, en bij
531
+ een deel van het project lijkt alles daarbuiten verouderd.
532
+
533
+ Werkt niet op een project met een eigen uitvoeringsomgeving (`PHPSTAN_MCP_RUNNERS`): de
534
+ tijdelijke config staat op de host en is in een container niet te zien. De tool zegt dat met
535
+ reden `unsupported_with_runner`.
536
+
459
537
  ### `generate_baseline` (alleen met schrijfrechten)
460
538
 
461
539
  Zet alle huidige fouten in een baseline, zodat een volgende analyse alleen meldt wat er nieuw
@@ -495,6 +573,21 @@ includes:
495
573
  - phpstan-baseline.neon
496
574
  ```
497
575
 
576
+ ## Prompts
577
+
578
+ Twee werkpatronen die alleen bestaande tools combineren. Een prompt en geen tool, omdat een
579
+ tool context kost in elke sessie en een prompt alleen als je hem kiest.
580
+
581
+ - **`phpstan_wijziging_nakijken`** — je eigen wijziging nakijken met `analyse_changed`,
582
+ beginnen bij de bevindingen op gewijzigde regels, en herhalen tot het schoon is (zonder
583
+ `runId`, anders zie je de uitslag van vóór je reparatie).
584
+ - **`phpstan_level_verhogen`** — wat een level hoger kost: twee tellingen met `limit: 1` en
585
+ het verschil per soort. Het level staat vaak in een gedeelde config in `vendor/`, en
586
+ `ignore.*`-bevindingen tellen niet mee: dat zijn inline `@phpstan-ignore`-regels die op een
587
+ ander level niets te negeren hebben.
588
+
589
+ Beide nemen een optioneel `project`; de tweede ook een doel-`level`.
590
+
498
591
  ## Als een tool mislukt
499
592
 
500
593
  Een mislukte aanroep geeft twee blokken terug: de melding in gewone taal, en een JSON-blok
@@ -515,8 +608,8 @@ met velden waarop je kunt sturen.
515
608
  lezen: `no_roots_configured`, `project_outside_roots`, `project_not_found`,
516
609
  `path_outside_project`, `path_not_found`, `phpstan_missing`, `config_missing`,
517
610
  `bootstrap_failed`, `baseline_unreadable`, `invalid_setting`, `memory_limit`, `timeout`,
518
- `cancelled`, `git_missing`, `not_a_git_repository`, `unknown_base`, `unusable_output` en
519
- `phpstan_failed`.
611
+ `cancelled`, `git_missing`, `not_a_git_repository`, `unknown_base`, `unsupported_with_runner`,
612
+ `unusable_output` en `phpstan_failed`.
520
613
 
521
614
  De velden staan bewust in `content` en niet in `structuredContent`: dat laatste wordt door
522
615
  MCP-clients gevalideerd tegen het schema van het *geslaagde* antwoord.
@@ -542,7 +635,21 @@ src/Support/Filters/DealFilters.php
542
635
  42 argument.type Parameter #1 $id expects int, string given.
543
636
  ```
544
637
 
545
- Bij meer resultaten eindigt de tekst met de letterlijke vervolgaanroep (`offset=50`).
638
+ Bij meer resultaten eindigt de tekst met de letterlijke vervolgaanroep:
639
+
640
+ ```
641
+ Nog 12 bevinding(en). Roep dezelfde tool opnieuw aan met offset=50 en runId="kX3v9aQp"; dan
642
+ komt de rest uit dit resultaat in plaats van uit een nieuwe analyse.
643
+ ```
644
+
645
+ Met die `runId` komt de volgende pagina uit hetzelfde resultaat. Zonder zou elke pagina een
646
+ nieuwe analyse zijn, en wie tussendoor een bestand aanpast krijgt dan pagina's met
647
+ verschillende totalen. Alleen `offset`, `limit`, `identifiers` en `onlyChangedLines` mogen
648
+ anders zijn. Hoort de `runId` bij andere argumenten, is hij verlopen (na tien minuten) of
649
+ onbekend, dan volgt een nieuwe analyse met een melding erbij in plaats van een fout.
650
+
651
+ Een pagina uit een eerder resultaat noemt hoe oud dat resultaat is. Analyseer na een
652
+ reparatie dus zónder `runId`: anders zie je de uitslag van vóór de reparatie.
546
653
 
547
654
  ### Annuleren
548
655
 
@@ -55,6 +55,25 @@ export declare function findBaselineFiles(project: ResolvedProject): string[];
55
55
  * op een naam in een comment of onder een andere sleutel.
56
56
  */
57
57
  export declare function describeIncludedBaseline(project: ResolvedProject): string | null;
58
+ /**
59
+ * De baseline-bestanden in de projectroot die de config van het project includeert.
60
+ * Leeg als er geen config is of als die niet te lezen is: dan doet er geen mee.
61
+ */
62
+ export declare function includedBaselineFiles(project: ResolvedProject): string[];
63
+ /** De entries uit de geïncludeerde baselines, met de bestanden die niet te lezen waren. */
64
+ export interface IncludedBaselines {
65
+ readonly files: readonly string[];
66
+ readonly entries: readonly BaselineEntry[];
67
+ /** Bestanden die wél meedoen maar waar deze parser niets uit haalt. */
68
+ readonly unreadable: readonly string[];
69
+ }
70
+ /**
71
+ * Leest de entries uit de baselines die meedoen. Een onleesbaar bestand gooit hier
72
+ * niet, anders dan bij summariseBaseline: wie dit aanroept heeft een analyse in
73
+ * handen die ook zonder de baseline bruikbaar is, en moet alleen weten dát hij
74
+ * niet kan zeggen wat eruit komt.
75
+ */
76
+ export declare function readIncludedBaselines(project: ResolvedProject): IncludedBaselines;
58
77
  /**
59
78
  * Leest een baseline-bestand uit.
60
79
  *
package/dist/baseline.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import { ToolFailure } from './failure.js';
2
2
  import { readFileSync, readdirSync } from 'node:fs';
3
- import { join } from 'node:path';
3
+ import { join, resolve } from 'node:path';
4
4
  /** Hoeveel regels de samenvattingslijsten hoogstens tonen. */
5
5
  const SUMMARY_ROWS = 15;
6
6
  /** Fout die als bruikbare melding naar het model teruggaat, niet als crash. */
@@ -38,16 +38,7 @@ export function findBaselineFiles(project) {
38
38
  * op een naam in een comment of onder een andere sleutel.
39
39
  */
40
40
  export function describeIncludedBaseline(project) {
41
- if (project.config === null)
42
- return null;
43
- let config;
44
- try {
45
- config = readFileSync(join(project.path, project.config), 'utf8');
46
- }
47
- catch {
48
- return null;
49
- }
50
- const included = findBaselineFiles(project).filter((file) => isIncludedIn(config, file));
41
+ const included = includedBaselineFiles(project);
51
42
  if (included.length === 0)
52
43
  return null;
53
44
  const namen = included.join(', ');
@@ -67,6 +58,48 @@ export function describeIncludedBaseline(project) {
67
58
  return (`${namen} wordt geïncludeerd: ${String(errors)} genegeerde fout(en) staan niet in dit ` +
68
59
  'rapport. Gebruik baseline_summary om te zien wat er in staat.');
69
60
  }
61
+ /**
62
+ * De baseline-bestanden in de projectroot die de config van het project includeert.
63
+ * Leeg als er geen config is of als die niet te lezen is: dan doet er geen mee.
64
+ */
65
+ export function includedBaselineFiles(project) {
66
+ if (project.config === null)
67
+ return [];
68
+ let config;
69
+ try {
70
+ config = readFileSync(resolve(project.path, project.config), 'utf8');
71
+ }
72
+ catch {
73
+ return [];
74
+ }
75
+ return findBaselineFiles(project).filter((file) => isIncludedIn(config, file));
76
+ }
77
+ /**
78
+ * Leest de entries uit de baselines die meedoen. Een onleesbaar bestand gooit hier
79
+ * niet, anders dan bij summariseBaseline: wie dit aanroept heeft een analyse in
80
+ * handen die ook zonder de baseline bruikbaar is, en moet alleen weten dát hij
81
+ * niet kan zeggen wat eruit komt.
82
+ */
83
+ export function readIncludedBaselines(project) {
84
+ const files = includedBaselineFiles(project);
85
+ const entries = [];
86
+ const unreadable = [];
87
+ for (const file of files) {
88
+ let content;
89
+ try {
90
+ content = readFileSync(join(project.path, file), 'utf8');
91
+ }
92
+ catch {
93
+ unreadable.push(file);
94
+ continue;
95
+ }
96
+ const parsed = parseBaseline(content);
97
+ if (parsed.length === 0 && content.includes('ignoreErrors'))
98
+ unreadable.push(file);
99
+ entries.push(...parsed);
100
+ }
101
+ return { files, entries, unreadable };
102
+ }
70
103
  /** Of `file` in deze config als lijst-entry voorkomt, met of zonder ./ ervoor. */
71
104
  function isIncludedIn(config, file) {
72
105
  const escaped = file.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
@@ -1 +1 @@
1
- {"version":3,"file":"baseline.js","sourceRoot":"","sources":["../src/baseline.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"baseline.js","sourceRoot":"","sources":["../src/baseline.ts"],"names":[],"mappings":"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"}
package/dist/changed.d.ts CHANGED
@@ -7,6 +7,10 @@ export declare class GitError extends ToolFailure {
7
7
  }
8
8
  /** Waartegen standaard vergeleken wordt: de laatste commit van deze werkboom. */
9
9
  export declare const DEFAULT_BASE = "HEAD";
10
+ /** Een reeks regelnummers in de nieuwe versie van een bestand, van en tot en met. */
11
+ export type LineRange = readonly [from: number, to: number];
12
+ /** Welke regels van een bestand gewijzigd zijn; `'all'` voor een bestand dat helemaal nieuw is. */
13
+ export type ChangedLines = 'all' | readonly LineRange[];
10
14
  /** De gewijzigde PHP-bestanden van een project, met wat er niet bruikbaar was. */
11
15
  export interface ChangedFiles {
12
16
  readonly base: string;
@@ -19,6 +23,8 @@ export interface ChangedFiles {
19
23
  path: string;
20
24
  reason: string;
21
25
  }[];
26
+ /** Per bestand uit `files`, onder hetzelfde absolute pad: welke regels erin gewijzigd zijn. */
27
+ readonly lines: ReadonlyMap<string, ChangedLines>;
22
28
  }
23
29
  /**
24
30
  * Zoekt de PHP-bestanden die in dit project gewijzigd zijn ten opzichte van `base`.
@@ -28,3 +34,19 @@ export interface ChangedFiles {
28
34
  * Zonder die tweede mist juist het bestand dat net is aangemaakt.
29
35
  */
30
36
  export declare function changedPhpFiles(project: ResolvedProject, base?: string, staged?: boolean): Promise<ChangedFiles>;
37
+ /**
38
+ * Of een bevinding op een regel staat die in deze wijziging zit. Een bevinding zonder
39
+ * regelnummer in een inhoudelijk gewijzigd bestand telt mee: uitsluiten kan dan niet,
40
+ * en wie op deze vlag filtert zou hem anders nooit te zien krijgen — weglaten is hier
41
+ * de gevaarlijke kant.
42
+ */
43
+ export declare function isOnChangedLine(changed: ChangedFiles, file: string, line: number | null): boolean;
44
+ /**
45
+ * Leest uit `git diff -U0 --no-prefix` welke regels er per bestand in de nieuwe
46
+ * versie gewijzigd zijn, onder het pad zoals git het noemt.
47
+ *
48
+ * De regels binnen een hunk worden afgeteld en niet op hun voorvoegsel gelezen: een
49
+ * toegevoegde regel die met "++ " begint staat in de diff als "+++ …" en is dan niet
50
+ * van een bestandskop te onderscheiden. Nagemeten, git zet hem er zo neer.
51
+ */
52
+ export declare function parseChangedLines(patch: string): Map<string, LineRange[]>;
package/dist/changed.js CHANGED
@@ -31,32 +31,55 @@ export async function changedPhpFiles(project, base = DEFAULT_BASE, staged = fal
31
31
  // bestand te laten schrijven; nagemeten, git maakt dat bestand daadwerkelijk aan.
32
32
  // Dubbel dichtgezet, want de vlag bestaat pas sinds git 2.24: checkBase weigert
33
33
  // zo'n waarde ook los van git.
34
- const changed = await git(project.path, [
35
- 'diff',
36
- '--name-only',
34
+ // --cached vergelijkt de index met `base` in plaats van de werkboom: dat is de
35
+ // vraag "wat sta ik op het punt te committen".
36
+ const range = [
37
37
  '--relative',
38
38
  '--diff-filter=ACMR',
39
- // --cached vergelijkt de index met `base` in plaats van de werkboom: dat is de
40
- // vraag "wat sta ik op het punt te committen".
41
39
  ...(staged ? ['--cached'] : []),
42
40
  '--end-of-options',
43
41
  checkBase(base),
42
+ ];
43
+ const changed = await git(project.path, ['diff', '--name-only', ...range]);
44
+ // Een aparte uitvraag voor de regels in plaats van de namen hieruit te halen: een
45
+ // bestand waarvan alleen de modus veranderde heeft geen hunks en zou dan uit de
46
+ // lijst vallen, en dat is een ander gedrag dan tot nu toe.
47
+ //
48
+ // De vlaggen zetten vast wat de gebruikersconfig anders zou bepalen: `diff.noprefix`
49
+ // of `diff.mnemonicPrefix` veranderen de kop, `color.diff=always` zet escapecodes
50
+ // tussen de regels, en een externe diff of textconv levert iets heel anders op.
51
+ const patch = await git(project.path, [
52
+ 'diff',
53
+ '-U0',
54
+ '--no-prefix',
55
+ '--no-color',
56
+ '--no-ext-diff',
57
+ '--no-textconv',
58
+ ...range,
44
59
  ]);
60
+ const hunks = parseChangedLines(patch);
45
61
  // Niet-toegevoegde bestanden horen er alleen bij als je naar de werkboom kijkt.
46
62
  // Bij --cached zijn ze per definitie niet gestaged, dus dan blijft die uitvraag weg.
47
63
  const untracked = staged
48
64
  ? ''
49
65
  : await git(project.path, ['ls-files', '--others', '--exclude-standard']);
50
- const candidates = [...new Set([...lines(changed), ...lines(untracked)])]
66
+ const fresh = new Set(lines(untracked));
67
+ const candidates = [...new Set([...lines(changed), ...fresh])]
51
68
  .filter(isAnalysablePhp)
52
69
  .sort();
53
70
  const files = [];
54
71
  const skipped = [];
72
+ const changedLines = new Map();
55
73
  for (const candidate of candidates) {
56
74
  try {
57
75
  // Via resolveWithin en niet met een eigen join: dan geldt hier dezelfde
58
76
  // realpath-en-containment-garantie als voor een pad dat het model zelf geeft.
59
- files.push(resolveWithin(project, candidate));
77
+ const file = resolveWithin(project, candidate);
78
+ files.push(file);
79
+ // Onder het geresolvede pad, want zo komt het bij PHPStan binnen en zo
80
+ // rapporteert PHPStan het terug. Geen hunks (alleen de modus veranderd, of
81
+ // een pure rename) is een lege lijst: dan is er inhoudelijk niets gewijzigd.
82
+ changedLines.set(file, fresh.has(candidate) ? 'all' : (hunks.get(candidate) ?? []));
60
83
  }
61
84
  catch (error) {
62
85
  // Git kan een bestand noemen dat er inmiddels niet meer is, of dat via een
@@ -69,7 +92,63 @@ export async function changedPhpFiles(project, base = DEFAULT_BASE, staged = fal
69
92
  });
70
93
  }
71
94
  }
72
- return { base, staged, files, skipped };
95
+ return { base, staged, files, skipped, lines: changedLines };
96
+ }
97
+ /**
98
+ * Of een bevinding op een regel staat die in deze wijziging zit. Een bevinding zonder
99
+ * regelnummer in een inhoudelijk gewijzigd bestand telt mee: uitsluiten kan dan niet,
100
+ * en wie op deze vlag filtert zou hem anders nooit te zien krijgen — weglaten is hier
101
+ * de gevaarlijke kant.
102
+ */
103
+ export function isOnChangedLine(changed, file, line) {
104
+ const ranges = changed.lines.get(file);
105
+ if (ranges === undefined)
106
+ return false;
107
+ if (ranges === 'all')
108
+ return true;
109
+ if (line === null)
110
+ return ranges.length > 0;
111
+ return ranges.some(([from, to]) => line >= from && line <= to);
112
+ }
113
+ /**
114
+ * Leest uit `git diff -U0 --no-prefix` welke regels er per bestand in de nieuwe
115
+ * versie gewijzigd zijn, onder het pad zoals git het noemt.
116
+ *
117
+ * De regels binnen een hunk worden afgeteld en niet op hun voorvoegsel gelezen: een
118
+ * toegevoegde regel die met "++ " begint staat in de diff als "+++ …" en is dan niet
119
+ * van een bestandskop te onderscheiden. Nagemeten, git zet hem er zo neer.
120
+ */
121
+ export function parseChangedLines(patch) {
122
+ const result = new Map();
123
+ let current = null;
124
+ let remaining = 0;
125
+ for (const line of patch.split('\n')) {
126
+ if (remaining > 0) {
127
+ // "" hoort bij de regel ervoor en telt niet mee.
128
+ if (!line.startsWith('\\'))
129
+ remaining--;
130
+ continue;
131
+ }
132
+ if (line.startsWith('+++ ')) {
133
+ // Een pad met een spatie krijgt van git een tab erachter, voor GNU patch.
134
+ const path = line.slice(4).replace(/\t$/, '');
135
+ current = path === '/dev/null' ? null : [];
136
+ if (current !== null)
137
+ result.set(path, current);
138
+ continue;
139
+ }
140
+ const hunk = /^@@ -\d+(?:,(\d+))? \+(\d+)(?:,(\d+))? @@/.exec(line);
141
+ if (hunk === null)
142
+ continue;
143
+ const removed = hunk[1] === undefined ? 1 : Number(hunk[1]);
144
+ const start = Number(hunk[2]);
145
+ const added = hunk[3] === undefined ? 1 : Number(hunk[3]);
146
+ remaining = removed + added;
147
+ // Alleen weggehaald ("+5,0") laat in de nieuwe versie geen regel achter.
148
+ if (current !== null && added > 0)
149
+ current.push([start, start + added - 1]);
150
+ }
151
+ return result;
73
152
  }
74
153
  /**
75
154
  * Blade-templates eindigen óók op `.php`, en juist die moeten er niet in: een
@@ -138,7 +217,12 @@ function execute(cwd, args) {
138
217
  return new Promise((resolve) => {
139
218
  // Zonder shell, net als bij PHPStan. Geen detached procesgroep: git start geen
140
219
  // workers die de pipes openhouden, dus 'close' volgt hier gewoon op de timeout.
141
- const child = spawn('git', [...args], { cwd, timeout: GIT_TIMEOUT_MS });
220
+ //
221
+ // core.quotePath=false: anders komt "Één.php" terug als "\303\211\303\251n.php",
222
+ // tussen aanhalingstekens, en valt dat bestand in resolveWithin af als "bestaat
223
+ // niet". Paden met een aanhalingsteken of backslash blijven gequote; die worden
224
+ // overgeslagen en benoemd, net als elk ander pad dat niet te openen is.
225
+ const child = spawn('git', ['-c', 'core.quotePath=false', ...args], { cwd, timeout: GIT_TIMEOUT_MS });
142
226
  let stdout = '';
143
227
  let stderr = '';
144
228
  let spawnError = null;
@@ -1 +1 @@
1
- {"version":3,"file":"changed.js","sourceRoot":"","sources":["../src/changed.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"changed.js","sourceRoot":"","sources":["../src/changed.ts"],"names":[],"mappings":"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"}
package/dist/config.d.ts CHANGED
@@ -7,8 +7,8 @@ export declare class ConfigError extends ToolFailure {
7
7
  /** Env-variabele die een ander configbestand aanwijst dan de standaardplek. */
8
8
  export declare const CONFIG_ENV_VAR = "PHPSTAN_MCP_CONFIG";
9
9
  /**
10
- * De instellingen zoals ze in het configbestand mogen staan. Dezelfde zes die ook
11
- * als env-variabele kunnen: het bestand is een andere plek, geen andere taal.
10
+ * De instellingen zoals ze in het configbestand mogen staan. Dezelfde die ook als
11
+ * env-variabele kunnen: het bestand is een andere plek, geen andere taal.
12
12
  */
13
13
  export interface FileConfig {
14
14
  readonly roots?: readonly string[];
@@ -17,6 +17,7 @@ export interface FileConfig {
17
17
  readonly tmpDir?: string;
18
18
  readonly allowWrites?: boolean;
19
19
  readonly runners?: Record<string, unknown>;
20
+ readonly projects?: Record<string, unknown>;
20
21
  }
21
22
  /**
22
23
  * Waar het configbestand staat. `XDG_CONFIG_HOME` wint, anders `~/.config` — de
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,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,+EAA+E;AAC/E,MAAM,CAAC,MAAM,cAAc,GAAG,oBAAoB,CAAC;AAenD;;;GAGG;AACH,MAAM,UAAU,UAAU,CAAC,MAAyB,OAAO,CAAC,GAAG;IAC7D,MAAM,SAAS,GAAG,GAAG,CAAC,cAAc,CAAC,EAAE,IAAI,EAAE,CAAC;IAC9C,IAAI,SAAS,KAAK,SAAS,IAAI,SAAS,KAAK,EAAE;QAAE,OAAO,SAAS,CAAC;IAElE,MAAM,KAAK,GAAG,GAAG,CAAC,iBAAiB,CAAC,EAAE,IAAI,EAAE,CAAC;IAC7C,OAAO,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC,EAAE,aAAa,EAAE,aAAa,CAAC,CAAC;AACtH,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,UAAU,CAAC,MAAyB,OAAO,CAAC,GAAG;IAC7D,MAAM,GAAG,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;IAE5B,IAAI,MAAc,CAAC;IACnB,IAAI,CAAC;QACH,MAAM,GAAG,YAAY,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IACrC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,IAAI,OAAgB,CAAC;IACrB,IAAI,CAAC;QACH,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC/B,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,WAAW,CAAC,GAAG,GAAG,2BAA2B,CAAC,CAAC;IAC3D,CAAC;IAED,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QAC9E,MAAM,IAAI,WAAW,CAAC,GAAG,GAAG,sDAAsD,CAAC,CAAC;IACtF,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,UAAU,CAAC,OAAyB,EAAE,MAAyB,OAAO,CAAC,GAAG;IACxF,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC;IACxC,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAE3C,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;QAAE,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACnD,IAAI,OAAO,MAAM,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IAC9D,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC;AACxB,CAAC"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,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,+EAA+E;AAC/E,MAAM,CAAC,MAAM,cAAc,GAAG,oBAAoB,CAAC;AAgBnD;;;GAGG;AACH,MAAM,UAAU,UAAU,CAAC,MAAyB,OAAO,CAAC,GAAG;IAC7D,MAAM,SAAS,GAAG,GAAG,CAAC,cAAc,CAAC,EAAE,IAAI,EAAE,CAAC;IAC9C,IAAI,SAAS,KAAK,SAAS,IAAI,SAAS,KAAK,EAAE;QAAE,OAAO,SAAS,CAAC;IAElE,MAAM,KAAK,GAAG,GAAG,CAAC,iBAAiB,CAAC,EAAE,IAAI,EAAE,CAAC;IAC7C,OAAO,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC,EAAE,aAAa,EAAE,aAAa,CAAC,CAAC;AACtH,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,UAAU,CAAC,MAAyB,OAAO,CAAC,GAAG;IAC7D,MAAM,GAAG,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;IAE5B,IAAI,MAAc,CAAC;IACnB,IAAI,CAAC;QACH,MAAM,GAAG,YAAY,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IACrC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,IAAI,OAAgB,CAAC;IACrB,IAAI,CAAC;QACH,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC/B,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,WAAW,CAAC,GAAG,GAAG,2BAA2B,CAAC,CAAC;IAC3D,CAAC;IAED,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QAC9E,MAAM,IAAI,WAAW,CAAC,GAAG,GAAG,sDAAsD,CAAC,CAAC;IACtF,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,UAAU,CAAC,OAAyB,EAAE,MAAyB,OAAO,CAAC,GAAG;IACxF,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC;IACxC,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAE3C,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;QAAE,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACnD,IAAI,OAAO,MAAM,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IAC9D,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC;AACxB,CAAC"}
@@ -0,0 +1,37 @@
1
+ import type { FailureDetails, FailureReason } from './failure.js';
2
+ import { ToolFailure } from './failure.js';
3
+ /** Fout die als bruikbare melding naar het model teruggaat, niet als crash. */
4
+ export declare class ProjectDefaultsError extends ToolFailure {
5
+ constructor(message: string, reason?: FailureReason, details?: FailureDetails);
6
+ }
7
+ /** Env-variabele met de standaarden per project, als JSON. */
8
+ export declare const PROJECTS_ENV_VAR = "PHPSTAN_MCP_PROJECTS";
9
+ /** Dezelfde bovengrens als het tool-argument: een standaard mag niet meer dan een aanroep. */
10
+ export declare const MAX_TIMEOUT_SECONDS = 1800;
11
+ /**
12
+ * Wat per project anders mag dan de rest van de machine. Een Larastan-project kan 2G
13
+ * nodig hebben waar een klein pakket met 256M toe kan; één machinebrede limiet is dan
14
+ * voor het ene te krap en voor het andere een onnodig hoog plafond.
15
+ */
16
+ export interface ProjectDefaults {
17
+ readonly memoryLimit?: string;
18
+ readonly timeoutSeconds?: number;
19
+ /** Relatief aan de projectroot; gaat bij gebruik door resolveWithin. */
20
+ readonly config?: string;
21
+ }
22
+ /** Of PHPStan deze waarde als `--memory-limit` accepteert. */
23
+ export declare function isValidMemoryLimit(value: string): boolean;
24
+ /**
25
+ * Leest de standaarden per project uit de omgeving, of anders uit het configbestand.
26
+ *
27
+ * Net als de runners komt dit uit de serverconfiguratie en nooit uit een aanroep. De
28
+ * aanroeper kan een standaard wél overrulen met een tool-argument; dat is de
29
+ * volgorde die ook bij de globale geheugenlimiet geldt.
30
+ *
31
+ * Een onbekende sleutel wordt geweigerd en niet genegeerd: `memorylimit` met een
32
+ * kleine l doet anders stilzwijgend niets, en dan heeft iemand iets bedoeld wat niet
33
+ * gebeurt — dezelfde reden waarom een kapot configbestand de server niet laat starten.
34
+ */
35
+ export declare function loadProjectDefaults(env?: NodeJS.ProcessEnv): Map<string, ProjectDefaults>;
36
+ /** De standaarden voor dit project; leeg als er niets bijzonders voor geldt. */
37
+ export declare function defaultsFor(project: string, env?: NodeJS.ProcessEnv): ProjectDefaults;