Services
ChatService implementations handle the tool-call loop and communication with LLM providers.
- ChatService — abstract base class with tool-call loop, prompt loading
- OpenAI — OpenAI-compatible streaming implementation
- Interrupt — abort in-flight requests and re-send
- Custom provider — adding a new provider