The broker claims provider abstraction but is OpenAI-only in practice: hardcoded OPENAI_RESPONSES_URL (:27), OpenAI-Beta: responses=v1 header (:303), load_provider_registry requires providers.openai (:601-603). The "registry" only remaps OpenAI URLs.
Fix
- Registry-driven provider dispatch: each provider entry declares
url, auth_scheme (bearer/API-key/OAuth), payload_shape (openai_responses, openai_chat, anthropic_messages, ...), and headers.
- Move privacy checks that assume OpenAI payload shape (
count_input_images :572) behind the payload-shape adapter.
- Emit provider-agnostic audit events.
- Ship first-party support for Anthropic + a local (Ollama-compatible) endpoint.
Ties in with the on-device ModelAdapter.java seam — new providers likely also need a new adapter on the assistant side.
Size: L
The broker claims provider abstraction but is OpenAI-only in practice: hardcoded
OPENAI_RESPONSES_URL(:27),OpenAI-Beta: responses=v1header (:303),load_provider_registryrequiresproviders.openai(:601-603). The "registry" only remaps OpenAI URLs.Fix
url,auth_scheme(bearer/API-key/OAuth),payload_shape(openai_responses,openai_chat,anthropic_messages, ...), andheaders.count_input_images:572) behind the payload-shape adapter.Ties in with the on-device
ModelAdapter.javaseam — new providers likely also need a new adapter on the assistant side.Size: L