| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
[Capability] Remove CompletionProvider's dead providerClass argument (#499) * [Capability] Remove CompletionProvider's dead providerClass argument It always threw on construction, so it never worked in any release. `provider:` takes the same class-string and is now the first positional argument. * Reword Changelog | 1 个月前 | |
[QA] Raise PHPStan to level 8 (#492) * [QA] Raise PHPStan to level 8 Fixes all 330 errors the bump surfaces across src/, tests/ and examples/, without new baseline entries or ignore comments. * [QA] Fix level 8 errors introduced on main | 8 天前 | |
[Capability] Remove CompletionProvider's dead providerClass argument (#499) * [Capability] Remove CompletionProvider's dead providerClass argument It always threw on construction, so it never worked in any release. `provider:` takes the same class-string and is now the first positional argument. * Reword Changelog | 1 个月前 | |
[Client] Mark the client disconnected when the stdio server exits (#573) | 3 天前 | |
[Tests] Introduce client-server integration tests (#419) * [Tests] Introduce client-server integration tests * Add an in-process loopback that connects a real client transport to a real server transport, draining both Fiber loops in one synchronous pass instead of polling. A stalled exchange fails where it happened rather than hanging. * Cover protocol version negotiation across both implementations, where the unit tests only ever drive one side against a canned counter-offer. * Cover the server-to-client round-trips end to end: elicitation, sampling, roots, plus progress and logging notifications. * Add the `integration` test suite and a `make integration-tests` target. * [Tests] Run the integration suite in CI The unit job pins `--testsuite=unit`, so the new suite would never have run on GitHub. It goes in that job rather than its own: the loopback leans on Fibers, and the matrix is what covers them down to the PHP 8.1 floor. * [Tests] Run integration tests against a real server process Replaces the in-process loopback with the setup from examples/client: the client spawns a fixture server over the real StdioTransport, so the tests exercise the shipped transports and no longer nest both sides' Fibers. Moves the suite into its own CI job, matrixed over PHP 8.1-8.5. | 2 个月前 | |
[Client] Probe for `2026-07-28` and fall back to the handshake (#547) * [Client] Probe for the modern era and fall back to the handshake * [Client] Fail a request refused with an HTTP error status at once * [Client] Fail at once when the stdio server process exits * [Client] Adapt logging, ping and roots to a modern connection * [Client] Fail requests to an exited stdio server as answers * [Client] Require a connection to set the log level on a modern connection * [Client] Correlate an HTTP refusal only by the request's own id * [Tests] Cover version negotiation end to end over stdio and HTTP * [Docs] Document client version negotiation * [Client] Require a probe answer to name its revisions before settling on the modern era * [Client] Fail an HTTP refusal at once when its body is no well-formed answer * [Client] Deliver progress in order with the notifications around it * [Client] Keep a final answer read together with the end of the stdio output * [Client] Check an HTTP refusal body with the message parsers before trusting it * [Client] Never file an HTTP refusal of a client response under the server's id * [Client] Fail the probe on a lost stdio connection instead of falling back * [Client] Read the revisions a refusal names in one place * [Client] Forget the modern log level on reconnect * [Client] Pick the newest advertised revision without relying on declaration order * [Client] Trim comments * [Client] Re-probe once by recursion instead of a two-pass loop * [Client] Deliver progress as it is parsed, keeping its order within a batch * [Tests] Pin the server's refusal code an id-less HTTP refusal carries | 6 天前 | |
[Client] Probe for `2026-07-28` and fall back to the handshake (#547) * [Client] Probe for the modern era and fall back to the handshake * [Client] Fail a request refused with an HTTP error status at once * [Client] Fail at once when the stdio server process exits * [Client] Adapt logging, ping and roots to a modern connection * [Client] Fail requests to an exited stdio server as answers * [Client] Require a connection to set the log level on a modern connection * [Client] Correlate an HTTP refusal only by the request's own id * [Tests] Cover version negotiation end to end over stdio and HTTP * [Docs] Document client version negotiation * [Client] Require a probe answer to name its revisions before settling on the modern era * [Client] Fail an HTTP refusal at once when its body is no well-formed answer * [Client] Deliver progress in order with the notifications around it * [Client] Keep a final answer read together with the end of the stdio output * [Client] Check an HTTP refusal body with the message parsers before trusting it * [Client] Never file an HTTP refusal of a client response under the server's id * [Client] Fail the probe on a lost stdio connection instead of falling back * [Client] Read the revisions a refusal names in one place * [Client] Forget the modern log level on reconnect * [Client] Pick the newest advertised revision without relying on declaration order * [Client] Trim comments * [Client] Re-probe once by recursion instead of a two-pass loop * [Client] Deliver progress as it is parsed, keeping its order within a batch * [Tests] Pin the server's refusal code an id-less HTTP refusal carries | 6 天前 | |
[Tests] Introduce client-server integration tests (#419) * [Tests] Introduce client-server integration tests * Add an in-process loopback that connects a real client transport to a real server transport, draining both Fiber loops in one synchronous pass instead of polling. A stalled exchange fails where it happened rather than hanging. * Cover protocol version negotiation across both implementations, where the unit tests only ever drive one side against a canned counter-offer. * Cover the server-to-client round-trips end to end: elicitation, sampling, roots, plus progress and logging notifications. * Add the `integration` test suite and a `make integration-tests` target. * [Tests] Run the integration suite in CI The unit job pins `--testsuite=unit`, so the new suite would never have run on GitHub. It goes in that job rather than its own: the loopback leans on Fibers, and the matrix is what covers them down to the PHP 8.1 floor. * [Tests] Run integration tests against a real server process Replaces the in-process loopback with the setup from examples/client: the client spawns a fixture server over the real StdioTransport, so the tests exercise the shipped transports and no longer nest both sides' Fibers. Moves the suite into its own CI job, matrixed over PHP 8.1-8.5. | 2 个月前 | |
[Client] Implement setMaxRetries connection retries (#413) * [Client] Implement setMaxRetries connection retries * [Client] Reject a negative retry count in Configuration * [Client] Use a positive init timeout in the retry test * [Client] Drop redundant docblock note on setMaxRetries * [Client] Clear the initialized flag on a failed connection * [Client] Trim comments to the non-obvious ones * [Client] Cover retries and timeout cleanup with integration tests The retry fixture counts the processes it was started as, which is what separates a real retry from a second call into the same server. The timeout fixture outlives the client's patience and then goes idle, so the next request runs on a connection the client already gave up on once. | 2 个月前 | |
[Client] Implement setMaxRetries connection retries (#413) * [Client] Implement setMaxRetries connection retries * [Client] Reject a negative retry count in Configuration * [Client] Use a positive init timeout in the retry test * [Client] Drop redundant docblock note on setMaxRetries * [Client] Clear the initialized flag on a failed connection * [Client] Trim comments to the non-obvious ones * [Client] Cover retries and timeout cleanup with integration tests The retry fixture counts the processes it was started as, which is what separates a real retry from a second call into the same server. The timeout fixture outlives the client's patience and then goes idle, so the next request runs on a connection the client already gave up on once. | 2 个月前 | |
[Schema][Client] Bump default spec version (#550) * [Examples] Ask for log messages in the client communication examples * [Client] Default to protocol version 2026-07-28 | 6 天前 | |
[Schema][Client] Bump default spec version (#550) * [Examples] Ask for log messages in the client communication examples * [Client] Default to protocol version 2026-07-28 | 6 天前 | |
[Schema][Server] Harden sampling tools against the spec (#420) * harden sampling tools against the spec Report tool-flow violations as -32602 instead of dropping the request, accept resource_link in tool results, gate tools on sampling.tools, and reject empty content. * normalize keyed content arrays to lists array_filter() and friends preserve keys, and a keyed array serializes as a JSON object instead of the content-block array the schema requires. | 1 个月前 |
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 1 个月前 | ||
| 8 天前 | ||
| 1 个月前 | ||
| 3 天前 | ||
| 2 个月前 | ||
| 6 天前 | ||
| 6 天前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 2 个月前 | ||
| 6 天前 | ||
| 6 天前 | ||
| 1 个月前 |