Context
serve() now has roughly 15 keyword arguments: validation, asgi_middleware, enable_debug_endpoints, debug_traffic_source, base_url, specialisms, description, mock_ad_server, etc. The signature is noisy, hard to read, and IDE autocomplete is unwieldy.
Group these into a ServeConfig dataclass with sensible defaults. Keep backwards compatibility — both serve(handler, config=ServeConfig(...)) and serve(handler, **kwargs) should work.
Acceptance Criteria
Context
serve()now has roughly 15 keyword arguments:validation,asgi_middleware,enable_debug_endpoints,debug_traffic_source,base_url,specialisms,description,mock_ad_server, etc. The signature is noisy, hard to read, and IDE autocomplete is unwieldy.Group these into a
ServeConfigdataclass with sensible defaults. Keep backwards compatibility — bothserve(handler, config=ServeConfig(...))andserve(handler, **kwargs)should work.Acceptance Criteria
ServeConfigdataclass exported fromadcp.serverserve(handler, config=ServeConfig(...))andserve(handler, **kwargs)call patterns workServeConfig