Hotfix: Vision model proxy for screenshots
Problem: Non-vision planning models (e.g. glm-4.7) received raw base64 image_url content from both desktop and browser screenshots, causing Z.ai 400 errors and uncontrolled fallback to Sonnet.
Fix: All screenshots (desktop + browser) are now routed through the configured browser.vision_model (e.g. google/gemini-3-flash-preview) for text descriptions before reaching the planning model. The planning model only sees concise text descriptions, never raw images.
- Desktop
desktop_screenshotresults: base64 stripped, replaced withdesktop_descriptiontext - Browser EKO auto-screenshots: vision model describes page state, injected as plain text
- Legacy raw image injection preserved as fallback when no vision model is configured