Part of #1. Depends on #3.
Goal
When a Responses request contains an input_image content part, the upstream Copilot proxy expects the Copilot-Vision-Request: true header (mirrors what VS Code Copilot Chat sends). Without it, vision requests on multimodal models can be rejected or silently degraded.
Current state
src/services/copilot/create-chat-completions.ts does not set Copilot-Vision-Request today. The Responses service client created in #3 should set it conditionally.
Tasks
Acceptance criteria
- Manual test with a Responses request containing
input_image against a vision-capable model returns a vision-aware reply
- Manual test with a text-only request does not set the header (verify via
--verbose)
File pointers
- litellm reference:
litellm/llms/github_copilot/responses/transformation.py — _has_vision_input
Part of #1. Depends on #3.
Goal
When a Responses request contains an
input_imagecontent part, the upstream Copilot proxy expects theCopilot-Vision-Request: trueheader (mirrors what VS Code Copilot Chat sends). Without it, vision requests on multimodal models can be rejected or silently degraded.Current state
src/services/copilot/create-chat-completions.tsdoes not setCopilot-Vision-Requesttoday. The Responses service client created in #3 should set it conditionally.Tasks
_hasVisionInput(input)helper that recursively walksinputitems / message content parts looking fortype: 'input_image'(cap depth at, say, 8 to avoid pathological inputs)Copilot-Vision-Request: trueimage_urlcontent parts (small follow-up; verify against what VS Code actually sends)Acceptance criteria
input_imageagainst a vision-capable model returns a vision-aware reply--verbose)File pointers
litellm/llms/github_copilot/responses/transformation.py—_has_vision_input