phpstan-mcp-mx 0.25.0 → 0.26.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 +7 -0
- package/README.md +25 -10
- package/dist/tools/prompts.js +23 -13
- package/dist/tools/prompts.js.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,13 @@
|
|
|
3
3
|
All notable changes per version. Generated by semantic-release from the commit
|
|
4
4
|
history since 0.10.0; the versions before that were written by hand.
|
|
5
5
|
|
|
6
|
+
# [0.26.0](https://codeberg.org/MartijnSchimmel/phpstan-mcp-mx/compare/v0.25.0...v0.26.0) (2026-09-13)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
### Features
|
|
10
|
+
|
|
11
|
+
* point the prompts to baseline_history and show_finding ([764c060](https://codeberg.org/MartijnSchimmel/phpstan-mcp-mx/commit/764c060bf83610ab4365657a4dd993415f823574))
|
|
12
|
+
|
|
6
13
|
# [0.25.0](https://codeberg.org/MartijnSchimmel/phpstan-mcp-mx/compare/v0.24.0...v0.25.0) (2026-09-13)
|
|
7
14
|
|
|
8
15
|
|
package/README.md
CHANGED
|
@@ -591,7 +591,9 @@ copy in place of the original (PHPStan's editor mode, `--tmp-file` and `--instea
|
|
|
591
591
|
copy lives in the server's temp directory, or with `PHPSTAN_MCP_RUNNERS` in the temp
|
|
592
592
|
directory of that environment, like the config of `unmatched_ignores`. Only that one file is
|
|
593
593
|
analysed, so it also works for a file outside the `paths` of your config and doesn't need a
|
|
594
|
-
warm result cache
|
|
594
|
+
warm result cache: on a small project it took one to two seconds, on a Larastan project (where
|
|
595
|
+
Laravel boots first) 7 to 15 seconds, also with an empty cache. The first call after the machine
|
|
596
|
+
did other heavy work can take much longer; see [Known sharp edges](#known-sharp-edges).
|
|
595
597
|
|
|
596
598
|
`line` has to be the first line of a statement inside a function or method. Anywhere else —
|
|
597
599
|
in the middle of an array literal that spans several lines, directly in a class body the
|
|
@@ -647,6 +649,12 @@ of a `foreach … as`, and the parameters of a closure. On a line without any va
|
|
|
647
649
|
is not started, and you get only the code. When the line does not start a statement (inside
|
|
648
650
|
a multi-line array or method chain), the answer says so instead of guessing another line.
|
|
649
651
|
|
|
652
|
+
On two Larastan projects one call took 7 to 15 seconds, also with an empty cache and right
|
|
653
|
+
after an analysis with a different config: well within the 60 seconds after which Claude
|
|
654
|
+
Desktop gives up on a tool call. The exception is the first call on a project after the
|
|
655
|
+
machine did other heavy work, which can pass that limit as any tool's can; trying again then
|
|
656
|
+
helps (see [Known sharp edges](#known-sharp-edges)).
|
|
657
|
+
|
|
650
658
|
### `server_config`
|
|
651
659
|
|
|
652
660
|
Returns what *this* server is running with: the project directories in reach, the default
|
|
@@ -961,10 +969,12 @@ comes from a trial run on a real project that went wrong without that sentence.
|
|
|
961
969
|
with `limit: 1` and the difference per kind. The level is often set in a shared config in
|
|
962
970
|
`vendor/`, and `ignore.*` findings don't count: those are inline `@phpstan-ignore` comments
|
|
963
971
|
that have nothing to ignore on a different level.
|
|
964
|
-
- **`phpstan_shrink_baseline`**
|
|
965
|
-
(`
|
|
966
|
-
|
|
967
|
-
|
|
972
|
+
- **`phpstan_shrink_baseline`** whether the baseline is growing or shrinking
|
|
973
|
+
(`baseline_history`), what in it is stale (`unmatched_ignores`), what a new baseline would
|
|
974
|
+
hide (`analyse_project`), and the cheapest real reduction. A baseline that keeps growing needs
|
|
975
|
+
an agreement before a clean-up round. Cleaning up and hiding stay two separate things:
|
|
976
|
+
`generate_baseline` is only suggested when there is nothing to hide, and never called on its
|
|
977
|
+
own initiative.
|
|
968
978
|
- **`phpstan_fix_identifier`** a clean-up round for one identifier or a
|
|
969
979
|
group such as `missingType`, with the `runId` within the round and without `runId` after
|
|
970
980
|
every fix. Without `identifier` the model picks a kind: first what can be fixed at the
|
|
@@ -1157,11 +1167,16 @@ How many were left out is in `omitted`, and in the text as "N more message(s) no
|
|
|
1157
1167
|
- **Claude Desktop gives up on a tool call after 60 seconds,** whatever `timeoutSeconds` says,
|
|
1158
1168
|
and that limit can't be configured (reported in
|
|
1159
1169
|
[anthropics/claude-code#43791](https://github.com/anthropics/claude-code/issues/43791)).
|
|
1160
|
-
Claude Code has no such practical limit. On the projects this server was measured
|
|
1161
|
-
|
|
1162
|
-
|
|
1163
|
-
|
|
1164
|
-
|
|
1170
|
+
Claude Code has no such practical limit. On the Larastan projects this server was measured
|
|
1171
|
+
on (on Windows), one file took 7 to 9 seconds and a full analysis 21 to 34, also with PHPStan's
|
|
1172
|
+
caches empty. **The first call on a project after the machine did other heavy work is the
|
|
1173
|
+
exception:** PHPStan with Larastan reads thousands of files from `vendor/`, and a file that is no
|
|
1174
|
+
longer in the operating system's file cache took about a millisecond to read there. That first
|
|
1175
|
+
call took 43 to 72 seconds for one file and up to 141 for a whole project, past the limit, with
|
|
1176
|
+
any tool. **Trying again helps:** what the first call read is cached by then, and the second one
|
|
1177
|
+
took 7 seconds. In Desktop, also analyse part of a large project (`paths`, `analyse_changed`)
|
|
1178
|
+
rather than all of it. A client built on the MCP SDK cancels the request when it gives up, and
|
|
1179
|
+
the server then stops PHPStan instead of letting it run on.
|
|
1165
1180
|
|
|
1166
1181
|
## Development
|
|
1167
1182
|
|
package/dist/tools/prompts.js
CHANGED
|
@@ -105,7 +105,8 @@ function registerReviewPrompt(server, roots) {
|
|
|
105
105
|
' you changed comes from your change; the rest may have been there already.',
|
|
106
106
|
'4. Fix the findings at the source. Do not weaken types to `mixed` and do not add',
|
|
107
107
|
' anything to the baseline. If it is unclear what PHPStan infers for a value,',
|
|
108
|
-
' ask `inspect_type` instead of guessing.',
|
|
108
|
+
' ask `inspect_type` instead of guessing. Only if you cannot open the file',
|
|
109
|
+
' yourself: `show_finding` shows the code around a finding, with those types.',
|
|
109
110
|
metBase
|
|
110
111
|
? '5. Run `analyse_changed` again, with the same base, until it is clean. Do that'
|
|
111
112
|
: '5. Run `analyse_changed` again until it is clean. Do that',
|
|
@@ -215,7 +216,14 @@ function registerBaselinePrompt(server, roots) {
|
|
|
215
216
|
' number too, since a new baseline does not touch them, and those without an',
|
|
216
217
|
' identifier hide every error on their line. If it says `hasBaseline: false`,',
|
|
217
218
|
' say there is no baseline to shrink, mention the inline count, and stop.',
|
|
218
|
-
'2. `
|
|
219
|
+
'2. `baseline_history`: whether the baseline has been shrinking or growing, and which',
|
|
220
|
+
' change added the most. If it has been growing, say so first: a clean-up round',
|
|
221
|
+
' helps little while errors keep being added, so that needs an agreement first',
|
|
222
|
+
' (fix new errors at the source, generate a baseline only on purpose). A row',
|
|
223
|
+
' without a commit is an uncommitted change to the baseline: mention it, since it',
|
|
224
|
+
' is not what the team has. If the tool fails with `not_a_git_repository` or',
|
|
225
|
+
' `git_missing`, say so and go on.',
|
|
226
|
+
'3. `unmatched_ignores` a full analysis; for a large project, pass',
|
|
219
227
|
' `timeoutSeconds`. Split the outcome into three groups:',
|
|
220
228
|
' - entries that no longer match anything (`inBaseline: true`): the error is',
|
|
221
229
|
' fixed, the entry can go;',
|
|
@@ -231,29 +239,29 @@ function registerBaselinePrompt(server, roots) {
|
|
|
231
239
|
' If `inBaseline` is null, the baseline could not be read: report that and do not',
|
|
232
240
|
' guess. If the tool refuses with `unsupported_with_runner`, the environment where',
|
|
233
241
|
' PHPStan runs has no `sh`: say this step is not possible here and continue with',
|
|
234
|
-
' step
|
|
235
|
-
'
|
|
242
|
+
' step 4.',
|
|
243
|
+
'4. `analyse_project` with `limit: 1`. That total is exactly what a new baseline',
|
|
236
244
|
' would hide; say that in so many words. Leave out `ignore.unmatchedLine` and',
|
|
237
245
|
' `ignore.unmatchedIdentifier` from `summary.byIdentifier`: those are the stale',
|
|
238
|
-
' inline ignores from step
|
|
239
|
-
'
|
|
246
|
+
' inline ignores from step 3, and PHPStan does not put them in a baseline.',
|
|
247
|
+
'5. Pick the cheapest real reduction: a file with few baseline entries and a kind',
|
|
240
248
|
' that can be fixed at the source, such as `missingType.*`. Which kinds are in',
|
|
241
249
|
' which file is given by `baseline_summary` with `path` set to that file: per',
|
|
242
250
|
' entry the identifier, the count and the pattern. Fix at the source:',
|
|
243
251
|
' no `mixed`, no `@phpstan-ignore`, no cast to silence an error.',
|
|
244
252
|
' Check with `analyse_file` on that file that nothing new appears; the baseline',
|
|
245
253
|
' entries that have become stale because of it can then go.',
|
|
246
|
-
'
|
|
247
|
-
' nothing: the findings from step
|
|
254
|
+
'6. `prune_baseline` removes what step 3 found stale and lowers the counts, and adds',
|
|
255
|
+
' nothing: the findings from step 4 stay reported. It only exists when the server',
|
|
248
256
|
' has write permission, and even then you do not call it yourself: it rewrites a',
|
|
249
257
|
' file that is in git. Suggest it, and let me choose.',
|
|
250
|
-
'
|
|
258
|
+
'7. `generate_baseline` also cleans up, but puts the total from step 4 into the',
|
|
251
259
|
' baseline as well. So only suggest it when that total is zero; if it is not, fix',
|
|
252
260
|
' those findings first. The same holds here: suggest it, do not call it.',
|
|
253
261
|
'',
|
|
254
|
-
'Report: how large the baseline is,
|
|
255
|
-
'findings a new baseline would hide, and which
|
|
256
|
-
'done.',
|
|
262
|
+
'Report: how large the baseline is, whether it is growing or shrinking, how many',
|
|
263
|
+
'entries are stale, how many current findings a new baseline would hide, and which',
|
|
264
|
+
'reduction you propose or have done.',
|
|
257
265
|
].join('\n'),
|
|
258
266
|
},
|
|
259
267
|
},
|
|
@@ -315,7 +323,9 @@ function registerKindPrompt(server, roots) {
|
|
|
315
323
|
' baseline, and no cast or `assert()` to silence an error. A cast is only',
|
|
316
324
|
' right if you are sure the value has that type and then that type belongs',
|
|
317
325
|
' at the source, not at the place of the finding. To see what PHPStan infers',
|
|
318
|
-
' for a value at a given line, use `inspect_type` rather than guessing.',
|
|
326
|
+
' for a value at a given line, use `inspect_type` rather than guessing. Only if',
|
|
327
|
+
' you cannot open the file yourself: `show_finding` shows the code around a',
|
|
328
|
+
' finding, with those types.',
|
|
319
329
|
'4. After a fix, analyse again with `identifiers`, without a runId: that gives',
|
|
320
330
|
' the result from before your fix, and then the round seems to do nothing. Pass',
|
|
321
331
|
' `compareTo` with the runId from before the fix: the comparison counts over all',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompts.js","sourceRoot":"","sources":["../../src/tools/prompts.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"prompts.js","sourceRoot":"","sources":["../../src/tools/prompts.ts"],"names":[],"mappings":"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"}
|