✓ PASS

vercel-ai 7.0.153

stream.utf8 · anthropic

Back to results · Scenario

Requirements

IdLevelStatusEvidence
text-reportedMUSTSATISFIEDtext.value="Café Zürich — καλημέρα! 東京で会いましょう 🌸🎉" (primary); truth.text="Café Zürich — καλημέρα! 東京で会いましょう 🌸🎉"
no-replacement-charsMUSTSATISFIEDtext.value="Café Zürich — καλημέρα! 東京で会いましょう 🌸🎉" (primary); U+FFFD count=0

What the provider sent

Finish
stop
Raw finish
end_turn
Text
Café Zürich — καλημέρα! 東京で会いましょう 🌸🎉
Tool calls
[]
Usage
{
  "alternatives": {},
  "cached_input": null,
  "input": 25,
  "output": 40,
  "raw": {
    "input_tokens": 25,
    "output_tokens": 40
  },
  "reasoning": null,
  "total": 65
}
Stream completed
true
Error
null
Wire excerpt
status: 200
content-type: text/event-stream
body (sse):
event: message_start
data: {"type": "message_start", "message": {"id": "msg_01Aq9w938a90dw8q", "type": "message", "role": "assistant", "content": [], "model": "claude-sonnet-5-5", "stop_reason": null, "stop_sequence": null, "usage": {"input_tokens": 25, "output_tokens": 1}}}


event: content_block_start
data: {"type": "content_block_start", "index": 0, "content_block": {"type": "text", "text": ""}}


event: ping
data: {"type": "ping"}


event: content_block_delta
data: {"type": "content_block_delta", "index": 0, "delta": {"type": "text_delta", "text": "Café "}}


event: content_block_delta
data: {"type": "content_block_delta", "index": 0, "delta": {"type": "text_delta", "text": "Zürich — καλημέρα! 東京で会いましょう 🌸🎉"}}


event: content_block_stop
data: {"type": "content_block_stop", "index": 0}


event: message_delta
data: {"type":"message_delta","delta":{"stop_reason":"end_turn","stop_sequence":null},"usage":{"output_tokens":40}}


event: message_stop
data: {"type": "message_stop"}

What the library reported

Outcome
returned
Finish
{
  "raw": "end_turn",
  "source": "fullStream.finish.finishReason",
  "surface": "primary",
  "value": "stop"
}
Text
Value
Café Zürich — καλημέρα! 東京で会いましょう 🌸🎉
Surface
primary
Tool calls
[]
Usage
{
  "cached_input": 0,
  "input": 25,
  "output": 40,
  "reasoning": null,
  "surface": {
    "cached_input": "primary",
    "input": "primary",
    "output": "primary",
    "reasoning": "absent",
    "total": "primary"
  },
  "total": 65
}
Stream
{
  "chunks_seen": 9,
  "completed": true,
  "used": true
}
Error
null
Unsupported reason
null
Full observation JSON
{
  "elapsed_ms": 161.06262400000003,
  "error": null,
  "finish": {
    "raw": "end_turn",
    "source": "fullStream.finish.finishReason",
    "surface": "primary",
    "value": "stop"
  },
  "format": "wiretruth.observation/v1",
  "library": {
    "api": "streamText",
    "language": "javascript",
    "name": "vercel-ai",
    "version": "7.0.153"
  },
  "notes": [],
  "outcome": "returned",
  "stream": {
    "chunks_seen": 9,
    "completed": true,
    "used": true
  },
  "structured": {
    "attempted": false,
    "returned_as_success": false,
    "value": null
  },
  "text": {
    "surface": "primary",
    "value": "Café Zürich — καλημέρα! 東京で会いましょう 🌸🎉"
  },
  "tool_calls": [],
  "unsupported_reason": null,
  "usage": {
    "cached_input": 0,
    "input": 25,
    "output": 40,
    "reasoning": null,
    "surface": {
      "cached_input": "primary",
      "input": "primary",
      "output": "primary",
      "reasoning": "absent",
      "total": "primary"
    },
    "total": 65
  }
}

Fixture

documented anthropic/stream.utf8

ProvenanceValue
Sourcehttps://platform.claude.com/docs/en/build-with-claude/streaming#basic-streaming-request
NotesDocumented shapes, not a recording. Message envelope and stop fields follow handling-stop-reasons; content blocks follow thinking/streaming and handle-tool-calls. Model changed to claude-sonnet-5-5; IDs and scenario text are filled in. Token counts are illustrative, filled in to include thinking within the requested output limit, not measured. Based on the basic Hello stream, substituting the requested accented Latin, Greek, Japanese and emoji text. Each text fragment occurs once in the response. Adaptive thinking is assumed skipped. UTF-8 byte boundaries are unchanged here; the derived variant splits characters. SSE names, JSON shapes, field order and spaced text/thinking events follow streaming examples; the compact message_delta follows Streaming request with tool use. Fragment boundaries and counts are filled in. Signature placeholder is copied literally from the signature_delta example; empty thinking_delta follows the documented omitted display flow.

Reproduce

wiretruth serve anthropic/stream.utf8

Plain-library snippet from the shim manifest.

createAnthropic({ baseURL: WIRETRUTH_BASE_URL_ANTHROPIC + '/v1', apiKey })(model)

Upstream

No matching upstream report.

History

VersionGrade
7.0.153✓ PASS
7.0.146✓ PASS
7.0.142✓ PASS