Hacktoberfest 2026: the issues maintainers tagged for October, open and beginner-friendly. Browse Hacktoberfest issues

feat(providers): Messages ingress onto Responses-only upstreams (MessagesViaResponses)

Open
#1,085 0 comments 0 reactions 0 assignees View on GitHub

Maintainers usually reply within 1 day

Nobody has claimed this yet.

Assessment

Difficulty
4/5
Estimated time
3-5 days
Newbie friendliness
38/100
Issue type
Feature
Clarity
Mostly clear
Activity status
Active
Tech stack
go
Domain
api, backend

Research direction

Read internal/server/messages_handler.go and the provider paths internal/providers/chatgpt/chatgpt.go; do not start until #1084 merges. Then trace the Messages-to-chat-to-Responses streaming path and add end-to-end tests for reasoning replay, interleaved thinking and tool calls, and documented or rejected losses. Done means the round trip preserves ordering and state, with no silent loss.

Written by the indexing model from the issue text.

Description

Part of #723 (dialect independence across providers). Blocked by #1084.

Filed from code research done for #1084 (AI agent, verified against source). No human reporter hit this in production yet.

Problem

The /v1/messages ingress translates Anthropic Messages requests into canonical chat requests (ADR-0007). It then dispatches to the provider's chat surface (internal/server/messages_handler.go:255 -> StreamChatCompletion / ExecuteChatCompletion at lines 269 and 283).

Responses-only upstreams (today: the chatgpt provider on the Codex backend) return 501 unsupported_provider_operation on the chat surface (internal/providers/chatgpt/chatgpt.go:140). An Anthropic client (Claude Code, other Messages harnesses) cannot use these providers today.

What is missing

#1084 adds the chat-to-Responses adapter (ChatViaResponses). When it merges, the chain /v1/messages -> canonical chat -> Responses upstream becomes possible in principle. This issue tracks what remains after #1084:

  • Verification. End-to-end tests for the double translation: Messages request -> chat -> Responses upstream -> chat chunks -> Messages SSE events.
  • Thinking and reasoning replay. Anthropic thinking blocks must survive two translations. The extra_content replay state must round-trip: Messages -> chat reasoning_content/extra_content -> Responses reasoning items -> back. Loss points must be named and tested.
  • Loss points. Document what the double translation drops (for example: cache_control is already rejected at ingress; Codex drops temperature, top_p, max_output_tokens). Follow the reject-or-document doctrine of #1055. No silent loss.
  • Interleaved thinking and tool calls. Anthropic clients interleave thinking blocks and tool use. The chat hub merges adjacent assistant messages and tool calls. The order must survive the round trip.

Out of scope

  • A direct Messages-to-Responses converter. The chat hub stays canonical. No N-by-M translator matrix.
  • Changes to the native Anthropic-to-Anthropic passthrough (internal/server/messages_native.go).

Notes

  • Do not start before #1084 merges. Most of this issue may close with tests only, if the chat hub composition works as designed.
Dominant language
Go
Stars
1.2k
Forks
111
Avg merge
14h 43m
Merged PRs (30d)
142

Getting set up

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from ENTERPILOT/GoModel

All issues in ENTERPILOT/GoModel

Similar issues

More Go issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.