✓ PASS
tanstack-ai 1.4.0
stream.utf8-split · openai-chat
Requirements
| Id | Level | Status | Evidence |
|---|---|---|---|
| text-reported | MUST | SATISFIED | text.value="Café Zürich — καλημέρα! 東京で会いましょう 🌸🎉" (primary); truth.text="Café Zürich — καλημέρα! 東京で会いましょう 🌸🎉" |
| no-replacement-chars | MUST | SATISFIED | text.value="Café Zürich — καλημέρα! 東京で会いましょう 🌸🎉" (primary); U+FFFD count=0 |
What the provider sent
- Finish
- stop
- Raw finish
- stop
- Text
- Café Zürich — καλημέρα! 東京で会いましょう 🌸🎉
- Tool calls
[]
- Usage
{ "alternatives": {}, "cached_input": null, "input": null, "output": null, "raw": null, "reasoning": null, "total": null }- Stream completed
true
- Error
null
Wire excerpt
status: 200 content-type: text/event-stream; charset=utf-8 body (chunks_b64): ZGF0YTogeyJpZCI6ImNoYXRjbXBsLUVZQ0JDVkhMajV5cGZ4a09lYWJOTnRBa2hmUmpmIiwib2JqZWN0IjoiY2hhdC5jb21wbGV0aW9uLmNodW5rIiwiY3JlYXRlZCI6MTc5MTgxODY3OCwibW9kZWwiOiJncHQtNi1sdW5hIiwic2VydmljZV90aWVyIjoiZGVmYXVsdCIsInN5c3RlbV9maW5nZXJwcmludCI6bnVsbCwiY2hvaWNlcyI6W3siaW5kZXgiOjAsImRlbHRhIjp7InJvbGUiOiJhc3Npc3RhbnQiLCJjb250ZW50IjoiIiwicmVmdXNhbCI6bnVsbH0sImZpbmlzaF9yZWFzb24iOm51bGx9XSwib2JmdXNjYXRpb24iOiJaa2FnMnU4NmZIeDNhIn0KCmRhdGE6IHsiaWQiOiJjaGF0Y21wbC1FWUNCQ1ZITGo1eXBmeGtPZWFiTk50QWtoZlJqZiIsIm9iamVjdCI6ImNoYXQuY29tcGxldGlvbi5jaHVuayIsImNyZWF0ZWQiOjE3OTE4MTg2NzgsIm1vZGVsIjoiZ3B0LTYtbHVuYSIsInNlcnZpY2VfdGllciI6ImRlZmF1bHQiLCJzeXN0ZW1fZmluZ2VycHJpbnQiOm51bGwsImNob2ljZXMiOlt7ImluZGV4IjowLCJkZWx0YSI6eyJjb250ZW50IjoiQyJ9LCJmaW5pc2hfcmVhc29uIjpudWxsfV0sIm9iZnVzY2F0aW9uIjoiNmNjTmh0N1A3ckkyMWYifQoKZGF0YTogeyJpZCI6ImNoYXRjbXBsLUVZQ0JDVkhMajV5cGZ4a09lYWJOTnRBa2hmUmpmIiwib2JqZWN0IjoiY2hhdC5jb21wbGV0aW9uLmNodW5rIiwiY3JlYXRlZCI6MTc5MTgxODY3OCwibW9kZWwiOiJncHQtNi1sdW5hIiwic2VydmljZV90aWVyIjoiZGVmYXVsdCIsInN5c3RlbV9maW5nZXJwcmludCI6bnVsbCwiY2hvaWNlcyI6W3siaW5kZXgiOjAsImRlbHRhIjp7ImNvbnRlbnQiOiJhZsM= qSJ9LCJmaW5pc2hfcmVhc29uIjpudWxsfV0sIm9iZnVzY2F0aW9uIjoiYXJOQ2tQOVpVejJmIn0KCmRhdGE6IHsiaWQiOiJjaGF0Y21wbC1FWUNCQ1ZITGo1eXBmeGtPZWFiTk50QWtoZlJqZiIsIm9iamVjdCI6ImNoYXQuY29tcGxldGlvbi5jaHVuayIsImNyZWF0ZWQiOjE3OTE4MTg2NzgsIm1vZGVsIjoiZ3B0LTYtbHVuYSIsInNlcnZpY2VfdGllciI6ImRlZmF1bHQiLCJzeXN0ZW1fZmluZ2VycHJpbnQiOm51bGwsImNob2ljZXMiOlt7ImluZGV4IjowLCJkZWx0YSI6eyJjb250ZW50IjoiIFrDvHJpY2gifSwiZmluaXNoX3JlYXNvbiI6bnVsbH1dLCJvYmZ1c2NhdGlvbiI6Ikx1dUlXSEdMIn0KCmRhdGE6IHsiaWQiOiJjaGF0Y21wbC1FWUNCQ1ZITGo1eXBmeGtPZWFiTk50QWtoZlJqZiIsIm9iamVjdCI6ImNoYXQuY29tcGxldGlvbi5jaHVuayIsImNyZWF0ZWQiOjE3OTE4MTg2NzgsIm1vZGVsIjoiZ3B0LTYtbHVuYSIsInNlcnZpY2VfdGllciI6ImRlZmF1bHQiLCJzeXN0ZW1fZmluZ2VycHJpbnQiOm51bGwsImNob2ljZXMiOlt7ImluZGV4IjowLCJkZWx0YSI6eyJjb250ZW50IjoiIOKAlCJ9LCJmaW5pc2hfcmVhc29uIjpudWxsfV0sIm9iZnVzY2F0aW9uIjoiSG9ETUJuOWd4UTQ3NSJ9CgpkYXRhOiB7ImlkIjoiY2hhdGNtcGwtRVlDQkNWSExqNXlwZnhrT2VhYk5OdEFraGZSamYiLCJvYmplY3QiOiJjaGF0LmNvbXBsZXRpb24uY2h1bmsiLCJjcmVhdGVkIjoxNzkxODE4Njc4LCJtb2RlbCI6ImdwdC02LWx1bmEiLCJzZXJ2aWNlX3RpZXIiOiJkZWZhdWx0Iiwic3lzdGVtX2ZpbmdlcnByaW50IjpudWxsLCJjaG9pY2VzIjpbeyJpbmRleCI6MCwiZGVsdGEiOnsiY29udGVudCI6IiDO us6xIn0sImZpbmlzaF9yZWFzb24iOm51bGx9XSwib2JmdXNjYXRpb24iOiI0QzBhdFlUWnh1Z0QifQoKZGF0YTogeyJpZCI6ImNoYXRjbXBsLUVZQ0JDVkhMajV5cGZ4a09lYWJOTnRBa2hmUmpmIiwib2JqZWN0IjoiY2hhdC5jb21wbGV0aW9uLmNodW5rIiwiY3JlYXRlZCI6MTc5MTgxODY3OCwibW9kZWwiOiJncHQtNi1sdW5hIiwic2VydmljZV90aWVyIjoiZGVmYXVsdCIsInN5c3RlbV9maW5nZXJwcmludCI6bnVsbCwiY2hvaWNlcyI6W3siaW5kZXgiOjAsImRlbHRhIjp7ImNvbnRlbnQiOiLOu863In0sImZpbmlzaF9yZWFzb24iOm51bGx9XSwib2JmdXNjYXRpb24iOiJ4VFhUQm1JUWFsTlFRIn0KCmRhdGE6IHsiaWQiOiJjaGF0Y21wbC1FWUNCQ1ZITGo1eXBmeGtPZWFiTk50QWtoZlJqZiIsIm9iamVjdCI6ImNoYXQuY29tcGxldGlvbi5jaHVuayIsImNyZWF0ZWQiOjE3OTE4MTg2NzgsIm1vZGVsIjoiZ3B0LTYtbHVuYSIsInNlcnZpY2VfdGllciI6ImRlZmF1bHQiLCJzeXN0ZW1fZmluZ2VycHJpbnQiOm51bGwsImNob2ljZXMiOlt7ImluZGV4IjowLCJkZWx0YSI6eyJjb250ZW50IjoizrzOrSJ9LCJmaW5pc2hfcmVhc29uIjpudWxsfV0sIm9iZnVzY2F0aW9uIjoibmJWZnFFclZVZlBSMiJ9CgpkYXRhOiB7ImlkIjoiY2hhdGNtcGwtRVlDQkNWSExqNXlwZnhrT2VhYk5OdEFraGZSamYiLCJvYmplY3QiOiJjaGF0LmNvbXBsZXRpb24uY2h1bmsiLCJjcmVhdGVkIjoxNzkxODE4Njc4LCJtb2RlbCI6ImdwdC02LWx1bmEiLCJzZXJ2aWNlX3RpZXIiOiJkZWZhdWx0Iiwic3lzdGVtX2ZpbmdlcnByaW50IjpudWxsLCJjaG9pY2VzIjpbeyJpbmRleCI6MCwiZGVsdGEiOnsiY29udGVudCI6Is+BzrEifSwiZmluaXNoX3JlYXNvbiI6bnVsbH1dLCJvYmZ1c2NhdGlvbiI6IjZtMkJLTVRjOEtUS0kifQoKZGF0YTogeyJpZCI6ImNoYXRjbXBsLUVZQ0JDVkhMajV5cGZ4a09lYWJOTnRBa2hmUmpmIiwib2JqZWN0IjoiY2hhdC5jb21wbGV0aW9uLmNodW5rIiwiY3JlYXRlZCI6MTc5MTgxODY3OCwibW9kZWwiOiJncHQtNi1sdW5hIiwic2VydmljZV90aWVyIjoiZGVmYXVsdCIsInN5c3RlbV9maW5nZXJwcmludCI6bnVsbCwiY2hvaWNlcyI6W3siaW5kZXgiOjAsImRlbHRhIjp7ImNvbnRlbnQiOiIhIn0sImZpbmlzaF9yZWFzb24iOm51bGx9XSwib2JmdXNjYXRpb24iOiJHOXNHbXFISUZIbEwxUyJ9CgpkYXRhOiB7ImlkIjoiY2hhdGNtcGwtRVlDQkNWSExqNXlwZnhrT2VhYk5OdEFraGZSamYiLCJvYmplY3QiOiJjaGF0LmNvbXBsZXRpb24uY2h1bmsiLCJjcmVhdGVkIjoxNzkxODE4Njc4LCJtb2RlbCI6ImdwdC02LWx1bmEiLCJzZXJ2aWNlX3RpZXIiOiJkZWZhdWx0Iiwic3lzdGVtX2ZpbmdlcnByaW50IjpudWxsLCJjaG9pY2VzIjpbeyJpbmRleCI6MCwiZGVsdGEiOnsiY29udGVudCI6IiDmnQ== seS6rCJ9LCJmaW5pc2hfcmVhc29uIjpudWxsfV0sIm9iZnVzY2F0aW9uIjoiVjRuYUlGUzZ0bkgxIn0KCmRhdGE6IHsiaWQiOiJjaGF0Y21wbC1FWUNCQ1ZITGo1eXBmeGtPZWFiTk50QWtoZlJqZiIsIm9iamVjdCI6ImNoYXQuY29tcGxldGlvbi5jaHVuayIsImNyZWF0ZWQiOjE3OTE4MTg2NzgsIm1vZGVsIjoiZ3B0LTYtbHVuYSIsInNlcnZpY2VfdGllciI6ImRlZmF1bHQiLCJzeXN0ZW1fZmluZ2VycHJpbnQiOm51bGwsImNob2ljZXMiOlt7ImluZGV4IjowLCJkZWx0YSI6eyJjb250ZW50Ijoi44GnIn0sImZpbmlzaF9yZWFzb24iOm51bGx9XSwib2JmdXNjYXRpb24iOiI0WDBqTlhTSUZsZk9ueiJ9CgpkYXRhOiB7ImlkIjoiY2hhdGNtcGwtRVlDQkNWSExqNXlwZnhrT2VhYk5OdEFraGZSamYiLCJvYmplY3QiOiJjaGF0LmNvbXBsZXRpb24uY2h1bmsiLCJjcmVhdGVkIjoxNzkxODE4Njc4LCJtb2RlbCI6ImdwdC02LWx1bmEiLCJzZXJ2aWNlX3RpZXIiOiJkZWZhdWx0Iiwic3lzdGVtX2ZpbmdlcnByaW50IjpudWxsLCJjaG9pY2VzIjpbeyJpbmRleCI6MCwiZGVsdGEiOnsiY29udGVudCI6IuS8miJ9LCJmaW5pc2hfcmVhc29uIjpudWxsfV0sIm9iZnVzY2F0aW9uIjoia1RyaGxBOWpRdUp6c0MifQoKZGF0YTogeyJpZCI6ImNoYXRjbXBsLUVZQ0JDVkhMajV5cGZ4a09lYWJOTnRBa2hmUmpmIiwib2JqZWN0IjoiY2hhdC5jb21wbGV0aW9uLmNodW5rIiwiY3JlYXRlZCI6MTc5MTgxODY3OCwibW9kZWwiOiJncHQtNi1sdW5hIiwic2VydmljZV90aWVyIjoiZGVmYXVsdCIsInN5c3RlbV9maW5nZXJwcmludCI6bnVsbCwiY2hvaWNlcyI6W3siaW5kZXgiOjAsImRlbHRhIjp7ImNvbnRlbnQiOiLjgYQifSwiZmluaXNoX3JlYXNvbiI6bnVsbH1dLCJvYmZ1c2NhdGlvbiI6IlAyM0NKc2JtVW5FWlFtIn0KCmRhdGE6IHsiaWQiOiJjaGF0Y21wbC1FWUNCQ1ZITGo1eXBmeGtPZWFiTk50QWtoZlJqZiIsIm9iamVjdCI6ImNoYXQuY29tcGxldGlvbi5jaHVuayIsImNyZWF0ZWQiOjE3OTE4MTg2NzgsIm1vZGVsIjoiZ3B0LTYtbHVuYSIsInNlcnZpY2VfdGllciI6ImRlZmF1bHQiLCJzeXN0ZW1fZmluZ2VycHJpbnQiOm51bGwsImNob2ljZXMiOlt7ImluZGV4IjowLCJkZWx0YSI6eyJjb250ZW50Ijoi44G+In0sImZpbmlzaF9yZWFzb24iOm51bGx9XSwib2JmdXNjYXRpb24iOiJ2VDNGRzJWZndhWTBJRSJ9CgpkYXRhOiB7ImlkIjoiY2hhdGNtcGwtRVlDQkNWSExqNXlwZnhrT2VhYk5OdEFraGZSamYiLCJvYmplY3QiOiJjaGF0LmNvbXBsZXRpb24uY2h1bmsiLCJjcmVhdGVkIjoxNzkxODE4Njc4LCJtb2RlbCI6ImdwdC02LWx1bmEiLCJzZXJ2aWNlX3RpZXIiOiJkZWZhdWx0Iiwic3lzdGVtX2ZpbmdlcnByaW50IjpudWxsLCJjaG9pY2VzIjpbeyJpbmRleCI6MCwiZGVsdGEiOnsiY29udGVudCI6IuOBl+OCh+OBhiJ9LCJmaW5pc2hfcmVhc29uIjpudWxsfV0sIm9iZnVzY2F0aW9uIjoibHFNWFJmaEtKR3VFIn0KCmRhdGE6IHsiaWQiOiJjaGF0Y21wbC1FWUNCQ1ZITGo1eXBmeGtPZWFiTk50QWtoZlJqZiIsIm9iamVjdCI6ImNoYXQuY29tcGxldGlvbi5jaHVuayIsImNyZWF0ZWQiOjE3OTE4MTg2NzgsIm1vZGVsIjoiZ3B0LTYtbHVuYSIsInNlcnZpY2VfdGllciI6ImRlZmF1bHQiLCJzeXN0ZW1fZmluZ2VycHJpbnQiOm51bGwsImNob2ljZXMiOlt7ImluZGV4IjowLCJkZWx0YSI6eyJjb250ZW50IjoiIPCf jLgifSwiZmluaXNoX3JlYXNvbiI6bnVsbH1dLCJvYmZ1c2NhdGlvbiI6IlRzTGlXOXh6Y2VyOFAifQoKZGF0YTogeyJpZCI6ImNoYXRjbXBsLUVZQ0JDVkhMajV5cGZ4a09lYWJOTnRBa2hmUmpmIiwib2JqZWN0IjoiY2hhdC5jb21wbGV0aW9uLmNodW5rIiwiY3JlYXRlZCI6MTc5MTgxODY3OCwibW9kZWwiOiJncHQtNi1sdW5hIiwic2VydmljZV90aWVyIjoiZGVmYXVsdCIsInN5c3RlbV9maW5nZXJwcmludCI6bnVsbCwiY2hvaWNlcyI6W3siaW5kZXgiOjAsImRlbHRhIjp7ImNvbnRlbnQiOiLwn46JIn0sImZpbmlzaF9yZWFzb24iOm51bGx9XSwib2JmdXNjYXRpb24iOiIxTlVkYlpOOXBSQmhKQiJ9CgpkYXRhOiB7ImlkIjoiY2hhdGNtcGwtRVlDQkNWSExqNXlwZnhrT2VhYk5OdEFraGZSamYiLCJvYmplY3QiOiJjaGF0LmNvbXBsZXRpb24uY2h1bmsiLCJjcmVhdGVkIjoxNzkxODE4Njc4LCJtb2RlbCI6ImdwdC02LWx1bmEiLCJzZXJ2aWNlX3RpZXIiOiJkZWZhdWx0Iiwic3lzdGVtX2ZpbmdlcnByaW50IjpudWxsLCJjaG9pY2VzIjpbeyJpbmRleCI6MCwiZGVsdGEiOnt9LCJmaW5pc2hfcmVhc29uIjoic3RvcCJ9XSwib2JmdXNjYXRpb24iOiJnZDBlZ25zSWEifQoKZGF0YTogW0RPTkVdCgo=
What the library reported
- Outcome
- returned
- Finish
{ "raw": null, "source": "RUN_FINISHED.metadata.tanstack.finishReason", "surface": "primary", "value": "stop" }- Text
- Value
- Café Zürich — καλημέρα! 東京で会いましょう 🌸🎉
- Surface
- primary
- Tool calls
[]
- Usage
{ "cached_input": null, "input": null, "output": null, "reasoning": null, "surface": { "cached_input": "absent", "input": "absent", "output": "absent", "reasoning": "absent", "total": "absent" }, "total": null }- Stream
{ "chunks_seen": 21, "completed": true, "used": true }- Error
null
- Unsupported reason
null
Full observation JSON
{
"elapsed_ms": 99.70082400000001,
"error": null,
"finish": {
"raw": null,
"source": "RUN_FINISHED.metadata.tanstack.finishReason",
"surface": "primary",
"value": "stop"
},
"format": "wiretruth.observation/v1",
"library": {
"api": "chat",
"language": "javascript",
"name": "tanstack-ai",
"version": "1.4.0"
},
"notes": [],
"outcome": "returned",
"stream": {
"chunks_seen": 21,
"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": null,
"input": null,
"output": null,
"reasoning": null,
"surface": {
"cached_input": "absent",
"input": "absent",
"output": "absent",
"reasoning": "absent",
"total": "absent"
},
"total": null
}
}Fixture
derived openai-chat/stream.utf8-split
| Provenance | Value |
|---|---|
| Transform | rechunk_inside_utf8 |
| Source fixture | openai-chat/stream.utf8 |
| Rationale | A network chunk boundary splits a multi-byte UTF-8 character. |
| Evidence | https://github.com/langchain-ai/langchainjs/issues/5285 |
Reproduce
wiretruth serve openai-chat/stream.utf8-splitPlain-library snippet from the shim manifest.
createOpenaiChatCompletions(model, apiKey, { baseURL: WIRETRUTH_BASE_URL_OPENAI_CHAT }); POST /v1/chat/completions. https://tanstack.com/ai/latest/docs/adapters/openai#chat-completions-apiUpstream
No matching upstream report.
History
| Version | Grade |
|---|---|
| 1.4.0 | ✓ PASS |
| 1.0.0 | ✓ PASS |
| 0.71.0 | ✓ PASS |