You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Review findings on the stacked contributor fixes, all red-green verified:
- core.ts upstream JSON branch read the whole body with an unbounded .text();
every non-streaming upstream — now including WebSocket turns deliberately
answered with bounded JSON — could grow proxy memory without limit. The read
goes through relay.readBoundedResponseText (32 MiB ceiling, body cancelled on
overflow) and fails closed with a 502 instead of parsing a partial body.
- anthropic lastValidJsonObject collected every brace offset into two arrays
before its candidate cap, so brace-dense hostile input cost O(n) index storage.
It now scans backwards from the end with lastIndexOf and never materializes an
index; inputs above 1 MiB are not repaired at all.
- an empty text_delta marked sawVisibleText, letting a cut-off tolerant stream
complete as a successful empty answer; only non-empty text authorizes tolerant
completion now.
- a translator-budget overflow could be followed by tool_call_end/done when the
generator was fully drained; the budget error now returns immediately as the
single terminal event.
0 commit comments