Injected by the host rather than imported: the renderer registry lives in @sheetxl/query, which
depends on the SDK, so neither the SDK nor this package can reach it without a dependency cycle.
A host that has it (the CLI, the MCP server) passes renderMarkdown straight in - a rejected
promise or a throw is treated as "not renderable" and falls back to JSON.
Renders a value as its markdown report, or returns
nullwhen the value is not renderable.