mirror of
https://github.com/simstudioai/sim.git
synced 2026-09-21 13:00:04 +08:00
fix(memory): add Bun.gc, stream cancellation, and unconsumed fetch drains (#3416)
* fix(memory): add Bun.gc, stream cancellation, and unconsumed fetch drains * fix(memory): await reader.cancel() and use non-blocking Bun.gc * fix(memory): update Bun.gc comment to match non-blocking call * fix(memory): use response.body.cancel() instead of response.text() for drains * fix(executor): flush TextDecoder after streaming loop for multi-byte chars * fix(memory): use text() drain for SecureFetchResponse which lacks body property * fix(chat): prevent premature isExecuting=false from killing chat stream The onExecutionCompleted/Error/Cancelled callbacks were setting isExecuting=false as soon as the server-side SSE stream completed. For chat executions, this triggered a useEffect in chat.tsx that cancelled the client-side stream reader before it finished consuming buffered data — causing empty or partial chat responses. Skip the isExecuting=false in these callbacks for chat executions since the chat's own finally block handles cleanup after the stream is fully consumed. * fix(chat): remove useEffect anti-pattern that killed chat stream on state change The effect reacted to isExecuting becoming false to clean up streams, but this is an anti-pattern per React guidelines — using state changes as a proxy for events. All cleanup cases are already handled by proper event paths: stream done (processStreamingResponse), user cancel (handleStopStreaming), component unmount (cleanup effect), and abort/error (catch block). * fix(servicenow): remove invalid string comparison on numeric offset param * upgrade turborepo
This commit is contained in:
+1
-1
@@ -42,7 +42,7 @@
|
||||
"glob": "13.0.0",
|
||||
"husky": "9.1.7",
|
||||
"lint-staged": "16.0.0",
|
||||
"turbo": "2.8.12"
|
||||
"turbo": "2.8.13"
|
||||
},
|
||||
"lint-staged": {
|
||||
"*.{js,jsx,ts,tsx,json,css,scss}": [
|
||||
|
||||
Reference in New Issue
Block a user