Provider-neutral vocabulary for chat completions, plus the providers that speak it.
[LlmProvider] is the port: chat_completion
and chat_completion_stream over
[LlmRequest] / [LlmResponse]. [openai] covers OpenAI and every
OpenAI-compatible endpoint (OpenRouter, vLLM, llama.cpp); [gemini] covers
Google's API. [provider_from_env] picks one from the environment.
The types are deliberately not tied to A2A. [ToolCall] and
[ToolDefinition] are the tool-calling vocabulary shared with the MCP
bridge, which is why they live in their own crate rather than inside an
agent framework.