Port the multi-API client from llm.chat (llm.rs kept in lockstep):
the optional api input selects the dialect, default stays the
unchanged v0.1.x Ollama behavior. openai covers vLLM, LM Studio,
LiteLLM and cloud OpenAI; api-specific error hints; api_key sent
as Bearer (ollama/openai) or x-api-key (anthropic). model_digest
stays an Ollama-only best-effort probe and is documented as such.
Proven end-to-end against a hermetic OpenAI-wire fake (request
shape validated, response parsed) via a hub flow run.
Signed-off-by: flemming-it <sf@flemming.it>
Same shape as text-extract's docs commit. Audit-grade model-
provenance fields documented next to each output so the
operator sees the contract without leaving the Store sheet.
Signed-off-by: flemming-it <sf@flemming.it>