Commit Graph

7 Commits

Author SHA1 Message Date
Pine 768bcd4356 fix(image-recognition): keep the vision key on its own ref; add clear-key
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>
2026-08-14 23:01:15 +08:00
Pine 6890e87021 feat(image-recognition): independent key/url/model defaults
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>
2026-08-14 20:45:35 +08:00
Pine 08ac7c3da5 feat(vision): gate recognition on a configured provider
Expose ImageRecognitionRuntime.available() and gate the image-task pre-step
injection on it, so the capability is dormant until an endpoint is
configured instead of guiding the model to a call that can only fail.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-08-14 12:08:30 +08:00
Pine f5f114dfb8 docs(vision): package READMEs, Model Experience, and the capability Agent Note
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>
2026-08-14 11:15:59 +08:00
Pine 457304e619 feat(vision): add the model-facing recognition consumer
Registers the recognize_image tool and a bundled image-recognition skill,
and hooks agent/pre-step to deterministically inject the skill body when a
step input carries an image (content block or image path/URL), so the model
recognizes the image before continuing the task.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-08-14 10:57:38 +08:00
Pine 6409636afb feat(vision): add the configurable HTTP vision provider
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>
2026-08-14 10:56:10 +08:00
Pine fc180997c6 feat(vision): add the image-recognition capability seam
Service Definition for ctx.imageRecognition: a provider registry and
provider-selecting execution, mirrored on the web seam (duplicate ids
rejected, order-independent selection, ImageRecognitionError taxonomy).

Co-Authored-By: Claude <noreply@anthropic.com>
2026-08-14 10:55:57 +08:00