Image recognition and the chat model shared DEEPSEEK_API_KEY: the
image-recognition bundle defaulted apiKeyEnv to the model key, so saving one
overwrote the other. Point the bundle at IMAGE_RECOGNITION_API_KEY and guard
both the provider and the settings card against a stale model ref, so vision
never reads or writes the chat key. Also add a clear-key button, default the
model to qwen3-vl-flash on the DashScope compatible-mode endpoint, and send
file images as base64 with a normalized base URL.
Co-Authored-By: Claude <noreply@anthropic.com>
Make the HTTP vision provider's configuration independent of the main chat
model: the API key default moves from DEEPSEEK_API_KEY to IMAGE_RECOGNITION_API_KEY,
and the URL and model get image-recognition-specific defaults (Aliyun DashScope
compatible-mode and qwen3-vl-flash) instead of the chat model's deepseek-v4-flash.
The provider fails loud when no model is configured.
Co-Authored-By: Claude <noreply@anthropic.com>
Document the four image-recognition packages and the vision group, register
the vision domain in the package index, add the capability decision as an
Agent Note, declare the invariants peer dep, and drop the unused agents
injection from the consumer.
Co-Authored-By: Claude <noreply@anthropic.com>
Registers an OpenAI-compatible chat-completions provider into
ctx.imageRecognition with a user-editable baseURL + API key via a settings
section and the credential plane. Logs the secret-free vision request body
as the image-recognition/llm-request session event.
Co-Authored-By: Claude <noreply@anthropic.com>