137960c9aa
The generated-media surface previously had almost no upscaler coverage: only fal-ai/flux-2-pro chained Clarity Upscaler (hardcoded catalog default), every other image model returned ~1MP output with no high-res path, and video had no upscaler at all. Krea's API treats the enhancer as a standard second pass; this brings the same shape to Hermes. - image_generate: new optional 'upscale' boolean in the tool schema. Explicit true chains the backend upscaler on ANY model (including edits); explicit false disables flux-2-pro's automatic default; omitted keeps per-model catalog behavior. Response now reports 'upscaled' so the agent knows which resolution it got. - FAL image path: explicit flag overrides the catalog 'upscale' default (Clarity Upscaler, 2x). Failure falls back to the native image. - Krea plugin: upscale=true chains Krea Enhance (/generate/enhance/krea/enhance, 2x, prompt-guided) through the same BYO/managed base URL + auth as generation, with a best-effort poll loop that never fails a successful generation. - video_generate: new optional 'upscale' boolean; FAL video plugin chains ByteDance SeedVR2 (fal-ai/seedvr/upscale/video, 2x factor mode). Providers without upscalers ignore the kwarg per the ABC contract (documented in both ABCs). Validation: targeted suites green (123 tests across 6 files, including new coverage for override-wins/default-kept/failure-fallback on all three paths); live E2E on direct FAL verified both chains end-to-end (klein 9b + Clarity upscaled image; pixverse-v6 1s 360p + SeedVR2 upscaled video).