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
@@ -0,0 +1,100 @@
1
+ import { isAbsolute } from 'node:path';
2
+ import { fromConfig } from './config.js';
3
+ import { ToolFailure } from './failure.js';
4
+ /** Fout die als bruikbare melding naar het model teruggaat, niet als crash. */
5
+ export class ProjectDefaultsError extends ToolFailure {
6
+ constructor(message, reason = 'invalid_setting', details = {}) {
7
+ super(message, reason, details);
8
+ }
9
+ }
10
+ /** Env-variabele met de standaarden per project, als JSON. */
11
+ export const PROJECTS_ENV_VAR = 'PHPSTAN_MCP_PROJECTS';
12
+ /** Dezelfde bovengrens als het tool-argument: een standaard mag niet meer dan een aanroep. */
13
+ export const MAX_TIMEOUT_SECONDS = 1800;
14
+ /** De sleutels die een project mag hebben. Alles daarbuiten is een tikfout. */
15
+ const KEYS = ['memoryLimit', 'timeoutSeconds', 'config'];
16
+ // PHPStans eigen vorm: bytes als getal, optioneel met K, M of G, of -1 voor
17
+ // onbeperkt. Een neon-parameter bestaat er niet voor en PHPStan kent er ook geen
18
+ // eigen env-variabele voor, dus dit is de enige plek om het blijvend vast te leggen.
19
+ const MEMORY_LIMIT_PATTERN = /^(-1|\d+[KMG]?)$/i;
20
+ /** Of PHPStan deze waarde als `--memory-limit` accepteert. */
21
+ export function isValidMemoryLimit(value) {
22
+ return MEMORY_LIMIT_PATTERN.test(value);
23
+ }
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 function loadProjectDefaults(env = process.env) {
36
+ const ruw = (env[PROJECTS_ENV_VAR] ?? fromConfig('projects', env))?.trim();
37
+ if (ruw === undefined || ruw === '')
38
+ return new Map();
39
+ let ontleed;
40
+ try {
41
+ ontleed = JSON.parse(ruw);
42
+ }
43
+ catch {
44
+ throw new ProjectDefaultsError(`${PROJECTS_ENV_VAR} bevat geen geldige JSON. Verwacht wordt een object met per ` +
45
+ 'projectpad bijvoorbeeld {"memoryLimit": "2G", "timeoutSeconds": 600, "config": "phpstan.neon"}.');
46
+ }
47
+ if (typeof ontleed !== 'object' || ontleed === null || Array.isArray(ontleed)) {
48
+ throw new ProjectDefaultsError(`${PROJECTS_ENV_VAR} moet een object zijn met een projectpad per sleutel.`);
49
+ }
50
+ const defaults = new Map();
51
+ for (const [pad, waarde] of Object.entries(ontleed)) {
52
+ defaults.set(pad, controleer(pad, waarde));
53
+ }
54
+ return defaults;
55
+ }
56
+ /** De standaarden voor dit project; leeg als er niets bijzonders voor geldt. */
57
+ export function defaultsFor(project, env = process.env) {
58
+ return loadProjectDefaults(env).get(project) ?? {};
59
+ }
60
+ /** Weigert een onbruikbare waarde met een melding die zegt wat er wél mag. */
61
+ function controleer(pad, waarde) {
62
+ const waar = `${PROJECTS_ENV_VAR}: "${pad}"`;
63
+ if (!isAbsolute(pad)) {
64
+ throw new ProjectDefaultsError(`${waar} is geen absoluut projectpad.`);
65
+ }
66
+ if (typeof waarde !== 'object' || waarde === null || Array.isArray(waarde)) {
67
+ throw new ProjectDefaultsError(`${waar} moet een object zijn, bijvoorbeeld {"memoryLimit": "2G"}.`);
68
+ }
69
+ const obj = waarde;
70
+ const onbekend = Object.keys(obj).filter((key) => !KEYS.includes(key));
71
+ if (onbekend.length > 0) {
72
+ throw new ProjectDefaultsError(`${waar} kent ${onbekend.map((key) => `"${key}"`).join(', ')} niet. Toegestaan zijn ${KEYS.join(', ')}.`);
73
+ }
74
+ const result = {};
75
+ if (obj['memoryLimit'] !== undefined) {
76
+ const limit = obj['memoryLimit'];
77
+ if (typeof limit !== 'string' || !isValidMemoryLimit(limit.trim())) {
78
+ throw new ProjectDefaultsError(`${waar} heeft memoryLimit ${JSON.stringify(limit)}, en die vorm accepteert PHPStan niet. ` +
79
+ 'Gebruik een getal met optioneel K, M of G (bijv. "1G"), of -1 voor geen limiet.');
80
+ }
81
+ result.memoryLimit = limit.trim();
82
+ }
83
+ if (obj['timeoutSeconds'] !== undefined) {
84
+ const seconds = obj['timeoutSeconds'];
85
+ if (typeof seconds !== 'number' || !Number.isInteger(seconds) || seconds < 1 || seconds > MAX_TIMEOUT_SECONDS) {
86
+ throw new ProjectDefaultsError(`${waar} heeft timeoutSeconds ${JSON.stringify(seconds)}; verwacht een geheel getal ` +
87
+ `van 1 tot en met ${String(MAX_TIMEOUT_SECONDS)}.`);
88
+ }
89
+ result.timeoutSeconds = seconds;
90
+ }
91
+ if (obj['config'] !== undefined) {
92
+ const config = obj['config'];
93
+ if (typeof config !== 'string' || config.trim() === '') {
94
+ throw new ProjectDefaultsError(`${waar} heeft een lege of onbruikbare config; verwacht een pad binnen het project.`);
95
+ }
96
+ result.config = config.trim();
97
+ }
98
+ return result;
99
+ }
100
+ //# sourceMappingURL=defaults.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"defaults.js","sourceRoot":"","sources":["../src/defaults.ts"],"names":[],"mappings":"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"}
package/dist/failure.d.ts CHANGED
@@ -12,7 +12,7 @@
12
12
  * lijst uit met beleid, niet met vrije tekst — een code die maar één keer voorkomt
13
13
  * helpt niemand.
14
14
  */
15
- export type FailureReason = 'no_roots_configured' | 'project_outside_roots' | 'project_not_found' | 'path_outside_project' | 'path_not_found' | 'phpstan_missing' | 'config_missing' | 'bootstrap_failed' | 'baseline_unreadable' | 'invalid_setting' | 'memory_limit' | 'timeout' | 'cancelled' | 'git_missing' | 'not_a_git_repository' | 'unknown_base' | 'unusable_output' | 'phpstan_failed';
15
+ export type FailureReason = 'no_roots_configured' | 'project_outside_roots' | 'project_not_found' | 'path_outside_project' | 'path_not_found' | 'phpstan_missing' | 'config_missing' | 'bootstrap_failed' | 'baseline_unreadable' | 'invalid_setting' | 'memory_limit' | 'timeout' | 'cancelled' | 'git_missing' | 'not_a_git_repository' | 'unknown_base' | 'unsupported_with_runner' | 'unusable_output' | 'phpstan_failed';
16
16
  /** Wat er naast de reden bekend is. Alles optioneel: niet elke fout weet dit. */
17
17
  export interface FailureDetails {
18
18
  /** Exit code van het proces, als er een proces was. */
@@ -1 +1 @@
1
- {"version":3,"file":"failure.js","sourceRoot":"","sources":["../src/failure.ts"],"names":[],"mappings":"AAkDA;;;;;GAKG;AACH,MAAM,OAAO,WAAY,SAAQ,KAAK;IAGzB;IACA;IAHX,YACE,OAAe,EACN,MAAqB,EACrB,UAA0B,EAAE;QAErC,KAAK,CAAC,OAAO,CAAC,CAAC;QAHN,WAAM,GAAN,MAAM,CAAe;QACrB,YAAO,GAAP,OAAO,CAAqB;IAGvC,CAAC;CACF"}
1
+ {"version":3,"file":"failure.js","sourceRoot":"","sources":["../src/failure.ts"],"names":[],"mappings":"AAqDA;;;;;GAKG;AACH,MAAM,OAAO,WAAY,SAAQ,KAAK;IAGzB;IACA;IAHX,YACE,OAAe,EACN,MAAqB,EACrB,UAA0B,EAAE;QAErC,KAAK,CAAC,OAAO,CAAC,CAAC;QAHN,WAAM,GAAN,MAAM,CAAe;QACrB,YAAO,GAAP,OAAO,CAAqB;IAGvC,CAAC;CACF"}
package/dist/index.js CHANGED
@@ -1,5 +1,6 @@
1
1
  #!/usr/bin/env node
2
2
  import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
3
+ import { loadProjectDefaults } from './defaults.js';
3
4
  import { loadDefaultMemoryLimit, loadMaxParallel } from './phpstan.js';
4
5
  import { loadTmpDirMode } from './tmpdir.js';
5
6
  import { WRITES_ENV_VAR, writesAllowed } from './tools/writes.js';
@@ -17,7 +18,22 @@ async function main() {
17
18
  describeMemoryDefault() +
18
19
  describeMaxParallel() +
19
20
  describeTmpDir() +
20
- describeWrites());
21
+ describeWrites() +
22
+ describeProjectDefaults());
23
+ }
24
+ /**
25
+ * Hoeveel projecten eigen standaarden hebben. Een kapotte waarde is net als bij de
26
+ * geheugenlimiet niet fataal: projecten zonder standaard werken gewoon, en een
27
+ * analyse legt het probleem alsnog uit.
28
+ */
29
+ function describeProjectDefaults() {
30
+ try {
31
+ const aantal = loadProjectDefaults().size;
32
+ return aantal === 0 ? '' : `, eigen standaarden voor ${String(aantal)} project(en)`;
33
+ }
34
+ catch (error) {
35
+ return `, LET OP: ${error instanceof Error ? error.message : String(error)}`;
36
+ }
21
37
  }
22
38
  /**
23
39
  * Zet de standaard geheugenlimiet in de opstartregel, zodat je in het clientlog ziet
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/phpstan.js CHANGED
@@ -1,4 +1,6 @@
1
1
  import { fromConfig } from './config.js';
2
+ import { PROJECTS_ENV_VAR, ProjectDefaultsError, defaultsFor, isValidMemoryLimit } from './defaults.js';
3
+ import { ProjectError, resolveWithin } from './project.js';
2
4
  import { PhpstanError } from './phpstan/error.js';
3
5
  import { naarHost, naarOmgeving, phpstanIn, runnerFor } from './runner.js';
4
6
  import { collectWarnings, condenseDetails, toResult, tryParse } from './phpstan/output.js';
@@ -12,10 +14,6 @@ export { PhpstanError } from './phpstan/error.js';
12
14
  export const DEFAULT_TIMEOUT_MS = 300_000;
13
15
  /** Env-variabele met de `--memory-limit` voor aanroepen die er zelf geen meegeven. */
14
16
  export const MEMORY_LIMIT_ENV_VAR = 'PHPSTAN_MCP_MEMORY_LIMIT';
15
- // PHPStans eigen vorm: bytes als getal, optioneel met K, M of G, of -1 voor
16
- // onbeperkt. Een neon-parameter bestaat er niet voor en PHPStan kent er ook geen
17
- // eigen env-variabele voor, dus dit is de enige plek om het blijvend vast te leggen.
18
- const MEMORY_LIMIT_PATTERN = /^(-1|\d+[KMG]?)$/i;
19
17
  /**
20
18
  * Leegt PHPStans resultcache voor dit project.
21
19
  *
@@ -30,10 +28,13 @@ export async function clearResultCache(project, options = {}) {
30
28
  throwIfAborted(project.path, options.signal);
31
29
  return enqueue(project.path, () => withSlot(async () => {
32
30
  throwIfAborted(project.path, options.signal);
31
+ // Met de config van het project: een config met een eigen tmpDir leegt anders
32
+ // de verkeerde map.
33
33
  const args = ['clear-result-cache', '--no-ansi'];
34
- if (options.config !== undefined)
35
- args.push(`--configuration=${options.config}`);
36
- const execution = await execute(binary, args, project.path, options.timeoutMs ?? DEFAULT_TIMEOUT_MS, options.signal);
34
+ const config = options.config ?? defaultConfig(project);
35
+ if (config !== undefined)
36
+ args.push(`--configuration=${config}`);
37
+ const execution = await execute(binary, args, project.path, timeoutFor(project, options), options.signal);
37
38
  const output = execution.stdout.trim();
38
39
  if (execution.code !== 0 || output === '') {
39
40
  throw new PhpstanError(`PHPStan kon de resultcache van ${project.path} niet legen (exit code ${execution.code ?? '?'}).\n\n` +
@@ -55,7 +56,7 @@ export async function generateBaseline(project, options) {
55
56
  const installed = { ...project, binary };
56
57
  return enqueue(project.path, () => withSlot(async () => {
57
58
  throwIfAborted(project.path, options.signal);
58
- const execution = await execute(binary, buildBaselineArgs(installed, options), project.path, options.timeoutMs ?? DEFAULT_TIMEOUT_MS, options.signal);
59
+ const execution = await execute(binary, buildBaselineArgs(installed, options), project.path, timeoutFor(project, options), options.signal);
59
60
  // Op de tekst afgaan en niet op de exit code, om dezelfde reden als bij een
60
61
  // analyse: PHPStan meldt "niets te schrijven" met exit 1 én met een bruikbare
61
62
  // uitleg erbij, en die uitleg is meer waard dan een eigen foutmelding.
@@ -127,7 +128,7 @@ export async function diagnose(project, options = {}) {
127
128
  throwIfAborted(project.path, options.signal);
128
129
  return withSlot(async () => {
129
130
  throwIfAborted(project.path, options.signal);
130
- const execution = await execute(binary, ['diagnose', '--no-ansi'], project.path, options.timeoutMs ?? DEFAULT_TIMEOUT_MS, options.signal);
131
+ const execution = await execute(binary, ['diagnose', '--no-ansi'], project.path, timeoutFor(project, options), options.signal);
131
132
  if (execution.spawnError !== null) {
132
133
  throw new PhpstanError(`PHPStan kon niet gestart worden in ${project.path}: ${execution.spawnError.message}`);
133
134
  }
@@ -170,7 +171,7 @@ async function run(project, options) {
170
171
  const args = plan.runner === null
171
172
  ? ruweArgs
172
173
  : [...plan.prefix, plan.phpstan, ...vertaalArgs(ruweArgs, project.path, plan.runner)];
173
- const timeoutMs = options.timeoutMs ?? DEFAULT_TIMEOUT_MS;
174
+ const timeoutMs = timeoutFor(project, options);
174
175
  // Nog een keer, want tussen de queue, het slot en dit punt kan er tijd zitten:
175
176
  // PHPStan starten voor een verzoek dat niemand meer wil is pure verspilling.
176
177
  throwIfAborted(project.path, options.signal);
@@ -208,7 +209,7 @@ export function loadDefaultMemoryLimit(env = process.env) {
208
209
  const configured = (env[MEMORY_LIMIT_ENV_VAR] ?? fromConfig('memoryLimit', env))?.trim();
209
210
  if (configured === undefined || configured === '')
210
211
  return undefined;
211
- if (!MEMORY_LIMIT_PATTERN.test(configured)) {
212
+ if (!isValidMemoryLimit(configured)) {
212
213
  throw new PhpstanError(`${MEMORY_LIMIT_ENV_VAR} staat op "${configured}", en die vorm accepteert PHPStan niet. ` +
213
214
  'Gebruik een getal met optioneel K, M of G (bijv. "1G"), of -1 voor geen limiet.');
214
215
  }
@@ -219,10 +220,42 @@ function buildArgs(project, options) {
219
220
  'analyse',
220
221
  '--error-format=json',
221
222
  ...QUIET_FLAGS,
222
- ...flags(options),
223
+ ...flags(project, options),
223
224
  ...targets(project, options),
224
225
  ];
225
226
  }
227
+ /**
228
+ * De timeout voor deze aanroep: het argument, dan de standaard van het project, dan
229
+ * die van de server. Dezelfde volgorde als bij de geheugenlimiet.
230
+ */
231
+ function timeoutFor(project, options) {
232
+ if (options.timeoutMs !== undefined)
233
+ return options.timeoutMs;
234
+ const seconds = defaultsFor(project.path).timeoutSeconds;
235
+ return seconds === undefined ? DEFAULT_TIMEOUT_MS : seconds * 1000;
236
+ }
237
+ /**
238
+ * De config uit de standaarden van het project, als absoluut pad binnen het project.
239
+ *
240
+ * Door resolveWithin, ook al komt hij uit de serverconfiguratie en niet uit een
241
+ * aanroep: een neon kan PHP-code laten uitvoeren, en de whitelist gaat over wat er
242
+ * gestart wordt, niet alleen over wat er geanalyseerd wordt. Een fout hier is een
243
+ * fout in de serverconfiguratie en wordt ook zo genoemd — anders lijkt het alsof de
244
+ * aanroeper een verkeerd pad meegaf.
245
+ */
246
+ function defaultConfig(project) {
247
+ const config = defaultsFor(project.path).config;
248
+ if (config === undefined)
249
+ return undefined;
250
+ try {
251
+ return resolveWithin(project, config);
252
+ }
253
+ catch (error) {
254
+ if (!(error instanceof ProjectError))
255
+ throw error;
256
+ throw new ProjectDefaultsError(`${PROJECTS_ENV_VAR}: de config "${config}" voor ${project.path} is niet te gebruiken. ${error.message}`);
257
+ }
258
+ }
226
259
  /**
227
260
  * Dezelfde aanroep, maar met `--generate-baseline` in plaats van een errorformat:
228
261
  * PHPStan schrijft dan een bestand en rapporteert in tekst hoeveel het er waren.
@@ -233,23 +266,29 @@ function buildBaselineArgs(project, options) {
233
266
  ...QUIET_FLAGS,
234
267
  `--generate-baseline=${options.file}`,
235
268
  ...(options.allowEmpty === true ? ['--allow-empty-baseline'] : []),
236
- ...flags(options),
269
+ ...flags(project, options),
237
270
  ...targets(project, options),
238
271
  ];
239
272
  }
240
273
  /** Vlaggen die er altijd bij horen, zodat de uitvoer machineleesbaar blijft. */
241
274
  const QUIET_FLAGS = ['--no-progress', '--no-interaction', '--no-ansi'];
242
- /** De vlaggen die uit de opties komen, in de volgorde die PHPStan zelf aanhoudt. */
243
- function flags(options) {
275
+ /**
276
+ * De vlaggen die uit de opties komen, in de volgorde die PHPStan zelf aanhoudt.
277
+ *
278
+ * Steeds dezelfde voorrang: wat de aanroep meegeeft, dan de standaard van dit
279
+ * project, dan die van de hele server. Een standaard is geen plafond.
280
+ */
281
+ function flags(project, options) {
244
282
  const args = [];
283
+ const defaults = defaultsFor(project.path);
245
284
  // Vóór de rest, zoals PHPStan het zelf ook documenteert: de config bepaalt wat de
246
285
  // overige vlaggen overrulen.
247
- if (options.config !== undefined)
248
- args.push(`--configuration=${options.config}`);
286
+ const config = options.config ?? defaultConfig(project);
287
+ if (config !== undefined)
288
+ args.push(`--configuration=${config}`);
249
289
  if (options.level !== undefined)
250
290
  args.push(`--level=${options.level}`);
251
- // De aanroep gaat vóór de env-variabele: die is de standaard, niet het plafond.
252
- const memoryLimit = options.memoryLimit ?? loadDefaultMemoryLimit();
291
+ const memoryLimit = options.memoryLimit ?? defaults.memoryLimit ?? loadDefaultMemoryLimit();
253
292
  if (memoryLimit !== undefined)
254
293
  args.push(`--memory-limit=${memoryLimit}`);
255
294
  return args;
@@ -1 +1 @@
1
- {"version":3,"file":"phpstan.js","sourceRoot":"","sources":["../src/phpstan.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"phpstan.js","sourceRoot":"","sources":["../src/phpstan.ts"],"names":[],"mappings":"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"}
package/dist/project.d.ts CHANGED
@@ -7,7 +7,10 @@ export interface ResolvedProject {
7
7
  readonly path: string;
8
8
  /** Absoluut pad naar vendor/bin/phpstan, of null als het niet geïnstalleerd is. */
9
9
  readonly binary: string | null;
10
- /** Bestandsnaam van de gevonden config, of null als het project er geen heeft. */
10
+ /**
11
+ * De config die gebruikt wordt, relatief aan de projectroot: die uit de standaarden
12
+ * van het project, anders de gevonden config, anders null.
13
+ */
11
14
  readonly config: string | null;
12
15
  }
13
16
  /** Een project zoals `list_projects` het rapporteert. */
@@ -21,6 +24,12 @@ export interface ProjectSummary {
21
24
  readonly hasGit: boolean;
22
25
  /** Waar PHPStan hier draait, of null als dat gewoon op de host is. */
23
26
  readonly runner: string | null;
27
+ /** Wat voor dit project anders is dan voor de rest, of null als er niets bijzonders geldt. */
28
+ readonly defaults: {
29
+ readonly memoryLimit: string | null;
30
+ readonly timeoutSeconds: number | null;
31
+ readonly config: string | null;
32
+ } | null;
24
33
  }
25
34
  /** Fout die als bruikbare melding naar het model teruggaat, niet als crash. */
26
35
  export declare class ProjectError extends ToolFailure {
package/dist/project.js CHANGED
@@ -1,6 +1,7 @@
1
1
  import { ToolFailure } from './failure.js';
2
2
  import { readdirSync, realpathSync, statSync } from 'node:fs';
3
3
  import { basename, dirname, isAbsolute, join, relative } from 'node:path';
4
+ import { defaultsFor } from './defaults.js';
4
5
  import { isUsable, ROOTS_ENV_VAR } from './roots.js';
5
6
  import { runnerFor } from './runner.js';
6
7
  /** Volgorde waarin PHPStan zelf zijn configuratie zoekt. */
@@ -57,9 +58,24 @@ export function describeProject(path) {
57
58
  return {
58
59
  path,
59
60
  binary: isFile(binary) ? binary : null,
60
- config: CONFIG_NAMES.find((name) => isFile(join(path, name))) ?? null,
61
+ // De standaard gaat vóór wat er ligt: dat is ook wat er aan PHPStan meegegeven
62
+ // wordt, en de baseline-melding en unmatched_ignores moeten naar díe config kijken.
63
+ config: readDefaults(path)?.config ?? CONFIG_NAMES.find((name) => isFile(join(path, name))) ?? null,
61
64
  };
62
65
  }
66
+ /**
67
+ * De standaarden van dit project, of null als ze niet te lezen zijn. Bewust stil:
68
+ * een kapotte instelling legt hier anders ook list_projects plat, terwijl de analyse
69
+ * zelf hem alsnog weigert met de uitleg erbij, en server_config hem noemt.
70
+ */
71
+ function readDefaults(path) {
72
+ try {
73
+ return defaultsFor(path);
74
+ }
75
+ catch {
76
+ return null;
77
+ }
78
+ }
63
79
  /**
64
80
  * Zet een pad-argument om in een absoluut pad binnen het project. Accepteert zowel
65
81
  * een pad relatief aan de projectroot als een absoluut pad, want een model dat net
@@ -151,6 +167,10 @@ function summarise(path, root) {
151
167
  // De runner staat erbij omdat hij verklaart waaróm een project zonder vendor/ toch
152
168
  // analyseerbaar is — en waar het dan gebeurt.
153
169
  const runner = runnerFor(path);
170
+ // Om dezelfde reden: zonder dit is niet te zien waarom het ene project wél met 2G
171
+ // draait en het andere niet.
172
+ const defaults = readDefaults(path) ?? {};
173
+ const hasDefaults = Object.keys(defaults).length > 0;
154
174
  return {
155
175
  path,
156
176
  root,
@@ -158,6 +178,13 @@ function summarise(path, root) {
158
178
  config,
159
179
  hasGit: hasGitDir(path),
160
180
  runner: runner === null ? null : runner.command.join(' '),
181
+ defaults: hasDefaults
182
+ ? {
183
+ memoryLimit: defaults.memoryLimit ?? null,
184
+ timeoutSeconds: defaults.timeoutSeconds ?? null,
185
+ config: defaults.config ?? null,
186
+ }
187
+ : null,
161
188
  };
162
189
  }
163
190
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"project.js","sourceRoot":"","sources":["../src/project.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"project.js","sourceRoot":"","sources":["../src/project.ts"],"names":[],"mappings":"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"}
package/dist/report.d.ts CHANGED
@@ -12,6 +12,25 @@ export declare const MAX_MESSAGES = 10;
12
12
  /** Een bevinding zoals ze naar buiten gaat: pad relatief waar dat kan. */
13
13
  export interface DisplayFinding extends Omit<Finding, 'file'> {
14
14
  readonly file: string;
15
+ /**
16
+ * Alleen als er een wijziging is om tegen te leggen (analyse_changed). Ontbreekt
17
+ * bij de andere tools in plaats van `null` te zijn: dat zou op elke bevinding
18
+ * een veld kosten dat niets zegt.
19
+ */
20
+ readonly onChangedLine?: boolean;
21
+ }
22
+ /**
23
+ * Of een bevinding op een gewijzigde regel staat. Als functie meegegeven, zodat dit
24
+ * bestand niets van git hoeft te weten. Krijgt het absolute pad, zoals PHPStan het
25
+ * rapporteert — niet het pad dat naar buiten gaat.
26
+ */
27
+ export type ChangedLineCheck = (file: string, line: number | null) => boolean;
28
+ /** Hoe de bevindingen zich verhouden tot de wijziging, geteld over álle bevindingen. */
29
+ export interface ChangedLinesSummary {
30
+ readonly onChangedLine: number;
31
+ readonly elsewhere: number;
32
+ /** Of de pagina beperkt is tot bevindingen op een gewijzigde regel. */
33
+ readonly onlyChangedLines: boolean;
15
34
  }
16
35
  /** Welk deel van de bevindingen dit antwoord bevat. */
17
36
  export interface Page {
@@ -65,6 +84,8 @@ export interface Report {
65
84
  readonly page: Page;
66
85
  /** Op welke identifiers de pagina beperkt is, of null als er niet gefilterd is. */
67
86
  readonly filter: readonly string[] | null;
87
+ /** Null als er geen wijziging is om tegen te leggen, zoals bij analyse_project. */
88
+ readonly changedLines: ChangedLinesSummary | null;
68
89
  }
69
90
  /** Waar in de bevindingenlijst dit antwoord begint en hoe lang het is. */
70
91
  export interface Window {
@@ -76,15 +97,30 @@ export interface Window {
76
97
  * "argumentx.iets"). De samenvatting blijft over álles rekenen.
77
98
  */
78
99
  readonly identifiers?: readonly string[] | undefined;
100
+ /** Alleen bevindingen op een gewijzigde regel; doet niets zonder ChangedLineCheck. */
101
+ readonly onlyChangedLines?: boolean | undefined;
79
102
  }
80
103
  /**
81
104
  * Zet een analyse om in het antwoord dat de tool teruggeeft: tellingen over alles,
82
105
  * en maar één pagina bevindingen. De samenvatting rekent bewust over de volledige
83
106
  * lijst — anders zou de tweede pagina andere totalen melden dan de eerste.
84
107
  */
85
- export declare function buildReport(result: AnalysisResult, window?: Window, notices?: readonly string[]): Report;
86
- /** Schrijft een rapport uit als tekst voor het model. */
87
- export declare function renderReport(report: Report): string;
108
+ export declare function buildReport(result: AnalysisResult, window?: Window, notices?: readonly string[], onChangedLine?: ChangedLineCheck): Report;
109
+ /**
110
+ * Schrijft een rapport uit als tekst voor het model. Met een `runId` noemt de
111
+ * vervolgregel die erbij, zodat de volgende pagina uit hetzelfde resultaat komt.
112
+ */
113
+ export declare function renderReport(report: Report, runId?: string): string;
114
+ /**
115
+ * Kapt een meldinglijst af op aantal en op lengte per melding. Het aantal
116
+ * weggelaten meldingen komt apart terug in plaats van als extra regel in de lijst:
117
+ * die lijst gaat ook als structuredContent naar buiten, en daar hoort geen
118
+ * verzonnen melding tussen te staan.
119
+ */
120
+ export declare function limitMessages(messages: readonly string[]): {
121
+ kept: string[];
122
+ omitted: number;
123
+ };
88
124
  /**
89
125
  * Pad zoals het aan het model getoond wordt: relatief aan de projectroot, tenzij
90
126
  * het bestand daarbuiten ligt. PHPStan rapporteert ook fouten in vendor/ of in