/** * Type declarations for the dsh-free-vision host plugin. * The implementation is plain ESM (dsh/index.js); these types describe the * public surface for editors and downstream tooling. */ export interface FreeVisionConfig { /** Per-provider API keys. Legacy flat `apiKey` is migrated here. */ keys?: Record /** Per-provider optional API base URL overrides. Empty/missing = official default. */ baseURLs?: Record /** Active provider: qwen | volcengine | siliconflow | zhipu | hunyuan | custom */ modelProvider?: string /** Model override (defaults per provider) */ modelName?: string /** Public tool name */ toolName?: string /** Max output tokens */ maxTokens?: number /** Sampling temperature */ temperature?: number /** Multi-crop large images */ multiCrop?: boolean /** Per-call timeout (ms) */ toolCallTimeoutMs?: number /** Extra env vars passed to the vision engine */ lumaEnv?: Record /** Extra allowed image root dirs (; or , separated) */ allowedDirs?: string /** Keep pasted images as durable image blocks so the chat renders native * thumbnails; text-only models get them rewritten to image-reference text. */ preservePastedImages?: boolean /** At dispatch, replace image blocks with a cached vision description so the * model answers in one step without calling image_understand. */ describeAtDispatch?: boolean /** Default prompt for the at-dispatch image description. */ describePrompt?: string /** Vision-description LRU cache capacity (per sha256). */ describeCacheSize?: number /** Enable the show_image tool (render a found/screenshot image into the chat). */ showImageEnabled?: boolean /** Public wire name for the show_image tool (renamable to dodge collisions). */ showImageToolName?: string /** Per-image byte cap for show_image (also bounded by host attachment limits). */ showImageMaxBytes?: number /** Pixel cap (w×h) for show_image; 0 = unlimited. */ showImagePixels?: number /** Legacy single key (deprecated, migrated to keys) */ apiKey?: string } export interface ConfigResponse { schema: unknown value: FreeVisionConfig hasKey: boolean keySource: 'file' | 'env' | 'none' } export const name: 'free-vision' export const inject: ['tools'] export const Config: import('@deepseek-ai/schemastery').default.Schema export function apply(ctx: unknown, config?: Partial): void