The revision has no way for a server to put a request on a response stream, so a handler that needs input from the user says so in its result instead: a handler returning InputRequiredResult comes back as resultType: "input_required" with the asks and an opaque requestState, and the client retries the same request carrying inputResponses. RequestContext::getInputContext() is what the handler reads them through. RequestStateCodec signs and time-bounds the state, so a tampered or expired one is refused rather than trusted - the state travels through the client, which is not a place to keep something the server later believes.
26 lines
581 B
YAML
26 lines
581 B
YAML
services:
|
|
nginx:
|
|
image: nginx:1.26-alpine
|
|
ports:
|
|
# Overridable so the fixture can coexist with anything already on 8000.
|
|
- "${CONFORMANCE_PORT:-8000}:80"
|
|
volumes:
|
|
- ./nginx.conf:/etc/nginx/conf.d/default.conf:ro
|
|
- ../../..:/app:ro
|
|
depends_on:
|
|
- php-fpm
|
|
networks:
|
|
- mcp-net
|
|
|
|
php-fpm:
|
|
image: php:8.4-fpm-alpine
|
|
volumes:
|
|
- ../../..:/app:ro
|
|
- ../sessions:/app/tests/Conformance/sessions
|
|
- ../logs:/app/tests/Conformance/logs
|
|
working_dir: /app
|
|
networks:
|
|
- mcp-net
|
|
|
|
networks:
|
|
mcp-net:
|