ccpoad / internal /protocol /registry_codex_anthropic_stream_test.go
anyalerob's picture
Upload folder using huggingface_hub
2986042 verified
Raw
History Blame Contribute Delete
4.46 kB
package protocol_test
import (
"bytes"
"context"
"strings"
"testing"
"ccLoad/internal/protocol"
"ccLoad/internal/protocol/builtin"
)
func TestRegistryCodexAnthropicStream(t *testing.T) {
t.Parallel()
reg := protocol.NewRegistry()
builtin.Register(reg)
t.Run("message done fallback emits text when no delta arrived", func(t *testing.T) {
var state any
out, err := reg.TranslateResponseStream(
context.Background(),
protocol.Codex,
protocol.Anthropic,
"claude-3-5-sonnet",
nil,
nil,
[]byte("event: response.output_item.done\ndata: {\"type\":\"response.output_item.done\",\"item\":{\"type\":\"message\",\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"hello\"}]}}\n\n"),
&state,
)
if err != nil {
t.Fatalf("message done failed: %v", err)
}
body := string(bytes.Join(out, nil))
if !strings.Contains(body, `"text_delta"`) || !strings.Contains(body, `"hello"`) {
t.Fatalf("unexpected anthropic fallback stream: %s", body)
}
})
t.Run("message done fallback ignores duplicate text after delta", func(t *testing.T) {
var state any
if _, err := reg.TranslateResponseStream(
context.Background(),
protocol.Codex,
protocol.Anthropic,
"claude-3-5-sonnet",
nil,
nil,
[]byte("event: response.output_text.delta\ndata: {\"type\":\"response.output_text.delta\",\"delta\":\"hello\"}\n\n"),
&state,
); err != nil {
t.Fatalf("delta failed: %v", err)
}
out, err := reg.TranslateResponseStream(
context.Background(),
protocol.Codex,
protocol.Anthropic,
"claude-3-5-sonnet",
nil,
nil,
[]byte("event: response.output_item.done\ndata: {\"type\":\"response.output_item.done\",\"item\":{\"type\":\"message\",\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"hello\"}]}}\n\n"),
&state,
)
if err != nil {
t.Fatalf("duplicate message done failed: %v", err)
}
if out != nil {
t.Fatalf("expected duplicate fallback to be ignored, got %#v", out)
}
})
t.Run("reasoning summary emits thinking block with cached signature", func(t *testing.T) {
var state any
chunks := []string{
"event: response.output_item.added\ndata: {\"type\":\"response.output_item.added\",\"item\":{\"type\":\"reasoning\",\"encrypted_content\":\"enc_sig_1\"}}\n\n",
"event: response.reasoning_summary_part.added\ndata: {\"type\":\"response.reasoning_summary_part.added\"}\n\n",
"event: response.reasoning_summary_text.delta\ndata: {\"type\":\"response.reasoning_summary_text.delta\",\"delta\":\"step by step\"}\n\n",
"event: response.reasoning_summary_part.done\ndata: {\"type\":\"response.reasoning_summary_part.done\"}\n\n",
"event: response.output_item.done\ndata: {\"type\":\"response.output_item.done\",\"item\":{\"type\":\"reasoning\"}}\n\n",
}
var joined bytes.Buffer
for _, chunk := range chunks {
out, err := reg.TranslateResponseStream(
context.Background(),
protocol.Codex,
protocol.Anthropic,
"claude-3-5-sonnet",
nil,
nil,
[]byte(chunk),
&state,
)
if err != nil {
t.Fatalf("chunk failed: %v", err)
}
for _, b := range out {
joined.Write(b)
}
}
body := joined.String()
if !strings.Contains(body, `"type":"thinking"`) || !strings.Contains(body, `"thinking_delta"`) || !strings.Contains(body, `"signature_delta"`) || !strings.Contains(body, `"signature":"enc_sig_1"`) || !strings.Contains(body, `event: content_block_stop`) {
t.Fatalf("unexpected anthropic reasoning stream: %s", body)
}
})
t.Run("function call string arguments stay raw json", func(t *testing.T) {
var state any
out, err := reg.TranslateResponseStream(
context.Background(),
protocol.Codex,
protocol.Anthropic,
"claude-3-5-sonnet",
nil,
nil,
[]byte("event: response.output_item.done\ndata: {\"type\":\"response.output_item.done\",\"item\":{\"type\":\"function_call\",\"call_id\":\"call_skill_1\",\"name\":\"Skill\",\"arguments\":\"{\\\"args\\\":\\\"skill: \\\\\\\"superpowers:using-superpowers\\\\\\\"\\\",\\\"skill\\\":\\\"superpowers:using-superpowers\\\"}\"}}\n\n"),
&state,
)
if err != nil {
t.Fatalf("function_call done failed: %v", err)
}
body := string(bytes.Join(out, nil))
if !strings.Contains(body, `"partial_json":"{\"args\":\"skill: \\\"superpowers:using-superpowers\\\"\",\"skill\":\"superpowers:using-superpowers\"}"`) {
t.Fatalf("expected raw object json in partial_json, got: %s", body)
}
})
}