Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,6 @@ import (
type ClaudeToOpenAIConverter struct {
// State tracking for streaming conversion
messageStartSent bool
messageStopSent bool
messageId string
// Cache stop_reason until we get usage info
pendingStopReason *string
Expand Down Expand Up @@ -392,19 +391,16 @@ func (c *ClaudeToOpenAIConverter) ConvertOpenAIStreamResponseToClaude(ctx wrappe
c.pendingStopReason = nil
}

if c.messageStartSent && !c.messageStopSent {
c.messageStopSent = true
log.Debugf("[OpenAI->Claude] Sending final message_stop event")
messageStopEvent := &claudeTextGenStreamResponse{
Type: "message_stop",
}
stopData, _ := json.Marshal(messageStopEvent)
result.WriteString(fmt.Sprintf("event: %s\ndata: %s\n\n", messageStopEvent.Type, stopData))
// Send message_stop after stream DONE
log.Debugf("[OpenAI->Claude] Sending final message_stop event")
messageStopEvent := &claudeTextGenStreamResponse{
Type: "message_stop",
}
stopData, _ := json.Marshal(messageStopEvent)
result.WriteString(fmt.Sprintf("event: %s\ndata: %s\n\n", messageStopEvent.Type, stopData))

// Reset all state for next request
c.messageStartSent = false
c.messageStopSent = false
c.messageId = ""
c.pendingStopReason = nil
c.nextContentIndex = 0
Expand Down Expand Up @@ -789,14 +785,6 @@ func (c *ClaudeToOpenAIConverter) buildClaudeStreamResponse(ctx wrapper.HttpCont
log.Debugf("[OpenAI->Claude] Generated message_delta event with usage and stop_reason")
responses = append(responses, messageDelta)

// Send message_stop after combined message_delta
if !c.messageStopSent {
c.messageStopSent = true
log.Debugf("[OpenAI->Claude] Generated message_stop event")
responses = append(responses, &claudeTextGenStreamResponse{
Type: "message_stop",
})
}
}

return responses
Expand Down