Drain the server’s stderr line-by-line, logging each line via tracing.
Without this the OS pipe buffer fills up on chatty servers (rust-analyzer
during indexing, tsserver on startup errors) and the server’s own writes
block, which can stall stdin/stdout handling.
Read framed LSP messages from the server’s stdout. Each message is
broadcast as an lsp:message event with { server_id, message }.
Loop exits on EOF (server died) — the supervisor’s child handle
then surfaces the exit via Drop on the next stop cycle.