Mario Zechner
4b926a30a2
fix(ai): own Anthropic SSE parsing to avoid SDK JSON.parse hard-failures
...
Bypass the Anthropic SDK streaming parser entirely. Use
client.messages.create().asResponse() and decode the SSE stream
ourselves with defensive JSON parsing that repairs invalid escape
sequences and control characters inside string literals.
- Switch from SDK .stream() to .asResponse() + pi-owned SSE decoder
- Add repairJson() / parseJsonWithRepair() to json-parse.ts
- Add anthropic-sse-parsing.test.ts regression for malformed tool deltas
- Update github-copilot-anthropic.test.ts mock to match new call path
- Update deprecated claude-3-5-haiku-20241022 refs to claude-haiku-4-5
- Remove stale non-reasoning model test
fixes #3175
2026-04-21 23:00:56 +02:00
..
2026-03-14 04:18:28 +01:00
2026-04-14 23:20:13 +02:00
2026-04-20 23:11:08 +02:00
2026-03-30 12:43:34 +02:00
2026-04-20 22:05:28 +02:00
2026-04-20 22:05:28 +02:00
2026-04-20 23:06:47 +02:00
2026-03-18 01:12:11 +01:00
2026-03-23 02:02:42 +01:00
2026-03-29 21:08:50 +02:00
2026-04-20 23:11:08 +02:00
2026-03-30 12:43:34 +02:00
2026-03-04 08:55:30 +01:00
2026-04-16 10:59:32 +02:00
2026-04-17 00:52:14 +02:00
2026-03-14 05:36:21 +01:00
2026-04-20 22:05:28 +02:00
2026-03-24 20:09:43 +01:00
2026-01-06 11:59:09 +01:00
2026-01-31 23:24:10 +01:00
2026-02-02 00:23:12 +01:00
2026-03-27 00:47:40 +01:00
2026-04-20 22:05:28 +02:00
2026-03-06 16:57:14 +01:00
2026-04-20 15:09:50 +02:00
2026-04-20 22:05:28 +02:00
2026-03-27 03:36:57 +01:00
2026-04-20 15:59:57 +02:00
2026-04-18 18:29:23 +02:00
2026-04-15 23:54:34 +02:00
2026-04-20 14:46:37 +02:00
2026-01-24 01:43:34 +01:00
2026-03-29 21:08:50 +02:00
2026-04-20 14:35:30 +02:00
2026-03-28 22:10:34 +01:00
2026-04-20 22:05:28 +02:00
2026-03-31 13:49:57 +02:00
2026-01-16 00:31:53 +01:00
2026-02-12 21:28:06 +01:00
2026-03-25 22:15:19 +01:00
2026-03-22 21:48:34 +01:00
2026-03-22 21:48:34 +01:00
2026-04-03 20:14:12 +02:00
2026-04-08 18:46:40 +02:00
2026-04-20 14:33:32 +02:00
2026-03-27 04:00:21 +01:00
2026-04-17 00:02:14 +02:00
2026-04-17 09:46:47 +02:00
2026-04-16 12:33:47 +02:00
2026-04-03 20:14:12 +02:00
2026-04-20 17:12:05 +02:00
2026-03-20 10:00:57 +01:00
2026-03-20 19:36:06 +01:00
2026-02-12 21:28:06 +01:00
2026-04-20 22:56:26 +02:00
2026-04-15 12:00:46 +02:00
2026-01-13 17:53:11 +01:00
2026-04-20 23:11:08 +02:00
2026-04-20 22:05:28 +02:00
2026-04-16 10:59:32 +02:00
2026-04-20 14:33:32 +02:00
2025-12-09 14:44:13 +01:00
2026-03-07 14:34:27 +01:00
2026-04-15 23:39:10 +02:00
2026-02-04 13:27:54 +01:00
2026-03-29 21:08:50 +02:00
2026-04-20 14:14:36 +02:00
2026-04-20 22:05:28 +02:00
2026-03-23 02:02:42 +01:00
2026-04-05 21:24:32 +02:00
2026-03-14 05:36:21 +01:00
2026-04-20 16:25:12 +02:00
2026-03-20 01:55:30 +01:00
2026-02-01 19:03:38 +01:00
2026-02-17 00:08:32 +01:00
2026-04-03 20:14:12 +02:00
2026-04-20 22:05:28 +02:00
2026-03-22 21:21:29 +01:00
2025-12-22 00:23:01 +01:00
2026-04-20 22:05:28 +02:00
2026-03-23 02:33:52 +01:00
2026-03-29 21:08:50 +02:00
2026-01-13 13:03:04 +01:00
2026-03-31 14:41:50 +02:00
2026-04-20 22:05:28 +02:00
2026-04-20 22:32:11 +02:00
2026-03-30 15:56:37 +02:00
2026-03-28 22:25:06 +01:00
2025-12-05 11:59:39 +01:00
2026-04-17 00:22:39 +02:00
2026-04-20 22:05:28 +02:00