Ask flow fails with two distinct issues on OpenAI-compatible / Anthropic-compatible providers: hanging SSE streams and invalid tool-call arguments
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Idoneità per principianti
- 35/100
- Tipo di issue
- Bug
- Chiarezza
- Da chiarire
- Stato di attività
- Tranquilla
- Stack tecnologico
- typescript
Direzione di ricerca
Start by reproducing the Ask workflow with the documented OpenAI-compatible and Anthropic-compatible provider modes, focusing on the streaming consumer and tool-call handling paths. Compare the captured SSE termination and malformed arguments with Sourcebot's diagnostics, title-generation requests, and conversation state; done means the failure boundaries and any existing safeguards are clearly identified.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Summary
We investigated repeated Ask failures in Sourcebot and captured the real upstream model traffic with a transparent proxy. We found two separate failure modes:
-
Streaming/network failure
Some model requests return200 OKwithtext/event-stream, start streaming, but never terminate correctly. Eventually the client fails with:TypeError: terminatedTLSSocket.onHttpSocketCloseread ETIMEDOUT
-
Tool-call argument failure
In OpenAI-compatible mode, the model sometimes emits invalid function arguments JSON for tool calls, which leads to:invalid function arguments json string- upstream
400 Bad Request
These are not the same failure.
Environment
- Sourcebot: current Docker image as of 2026-04-10
- Runtime: Node 24 inside container
- Deployment: local Docker on WSL2
- Provider modes tested:
openai-compatibleanthropic
What we ruled out
We ruled out the following as the primary root cause:
- WSL general outbound connectivity
- Docker general outbound connectivity
- basic long-lived
fetch/undiciSSE streaming in both host and container - host proxy env leakage into the Sourcebot container
Using the same sourcebot container and Node fetch/undici, an independent long streaming request to the same model endpoint completed successfully:
- host:
49 chunks,23594 bytes,38.4s - container:
52 chunks,25029 bytes,43.6s
This narrowed the failures to Sourcebot's real Ask workflow rather than general WSL/Docker outbound connectivity.
Failure mode 1: hanging SSE stream
Symptom
Frontend remains stuck in generating, and backend eventually reports:
TypeError: terminatedTLSSocket.onHttpSocketClose
Captured behavior
For some Ask requests, upstream responds with:
200 OKcontent-type: text/event-stream
But the stream never ends normally. Our proxy later records:
message: "terminated"cause_code: "ETIMEDOUT"cause_message: "read ETIMEDOUT"
This happened in both Anthropic-compatible and OpenAI-compatible runs.
Example evidence
OpenAI-compatible sample:
- request body size about
45 KB - stream starts successfully
- then hangs until timeout
Anthropic-compatible sample:
- request to
/anthropic/v1/messages stream=truethinking.enabledtool_choice={"type":"auto"}tools_count=8- stream starts, then never cleanly finishes
See sanitized evidence: https://gist.github.com/leozhengliu-pixel/6252d9b8415ab65dd106d11e2bf59da0
Failure mode 2: invalid tool-call arguments
Symptom
Frontend error:
Failed after 2 attempts with non-retryable error: 'invalid params, invalid function arguments json string ...'
Captured behavior
In an OpenAI-compatible request, the assistant produced this tool call:
{
"id": "call_function_j32rtdm8f446_1",
"type": "function",
"function": {
"name": "read_file",
"arguments": "\"{\""
}
}
The arguments field is not a JSON object string like:
{"path":"...","repo":"..."}
It is just a malformed string literal.
The same request also contains the tool error returned into conversation state:
{
"role": "tool",
"tool_call_id": "call_function_j32rtdm8f446_1",
"content": "Invalid input for tool read_file: JSON parsing failed: Text: {.\nError message: Expected property name or '}' in JSON at position 1 (line 1 column 2)"
}
That request ultimately receives 400 Bad Request.
Why I believe this is relevant to Sourcebot
Even if some instability may be provider-side, Sourcebot is the shared client here, and these failures happen specifically under Sourcebot Ask orchestration:
- tool-rich multi-step interaction
- title-generation subrequests
- conversation accumulation
- streaming consumer path
At minimum, it would help if Sourcebot:
- handled hanging SSE streams more defensively
- surfaced raw upstream request/response diagnostics more clearly
- isolated title-generation failure from main answer flow
- degraded more safely on malformed tool arguments
Requested guidance
Please help clarify:
- Is this a known limitation of Ask with OpenAI-compatible / Anthropic-compatible providers?
- Are there recommended settings to disable or simplify:
- title generation
- thinking
- tool streaming
- multi-step Ask behavior
- Is there an existing safeguard for malformed
tool_calls[].function.arguments? - Is there a supported way to capture Sourcebot's exact model payloads without patching Sourcebot?
I can provide more sanitized payloads if useful.
- Lingua principale
- TypeScript
- Stelle
- 3.9k
- Fork
- 374
- Merge medio
- 21h 18m
- PR unite (30g)
- 39
Guida per i contributori
Apri la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di sourcebot-dev/sourcebot
-
bug triage needed
Difficoltà 2/5 1-3 ore Idoneità per principianti 84/100
sourcebot-dev/sourcebot#1681 · 1 commento ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 84/100
sourcebot-dev/sourcebot#1633 ·
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
sourcebot-dev/sourcebot#1384 · 4 commenti ·
-
ask_sb bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
sourcebot-dev/sourcebot#1137 · 4 commenti ·
-
bug triage needed
Difficoltà 3/5 1-2 giorni Idoneità per principianti 48/100
sourcebot-dev/sourcebot#1661 · 1 commento ·
Tutte le issue di sourcebot-dev/sourcebot
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 65/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
-
bug v2
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
modelcontextprotocol/inspector#2458 · 1 commento ·
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 75/100
railmapgen/rmp-gallery#4068 ·
-
Mend: dependency security vulnerability status: needs triage 🕵️♀️
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
carbon-design-system/ibm-products#9907 ·