Inference adapter for Grimoire plugin providers.
Grimoire plugins expose a simple HTTP contract:
GET /models→ list available modelsPOST /chat→ chat completion (streaming via SSE whenstream: true)
The provider's base_url must point to the plugin container's HTTP root
(e.g. http://172.17.0.2:8080). Context is passed in the request body.
Unlike OpenAI/Anthropic, messages use a simplified format matching the plugin contract spec (role as string, content as string or null).