Parent: #1564
Context
The app sets session_status = 'busy' optimistically on prompt submit with no timeout. If SSE events never arrive (fan-in gap, network issue), "Thinking" persists forever.
Change
After setting optimistic 'busy,' start a fallback timer. If no SSE event resolves the status within a timeout (30s), poll the session detail endpoint to check actual execution status and reconcile. Cancel the timer when the SSE event arrives normally.
Acceptance criteria
Files
packages/app-bundle/overlay/packages/app/src/components/prompt-input/submit.ts
packages/app-bundle/overlay/packages/app/src/context/server-session.ts
Parent: #1564
Context
The app sets
session_status = 'busy'optimistically on prompt submit with no timeout. If SSE events never arrive (fan-in gap, network issue), "Thinking" persists forever.Change
After setting optimistic 'busy,' start a fallback timer. If no SSE event resolves the status within a timeout (30s), poll the session detail endpoint to check actual execution status and reconcile. Cancel the timer when the SSE event arrives normally.
Acceptance criteria
Files
packages/app-bundle/overlay/packages/app/src/components/prompt-input/submit.tspackages/app-bundle/overlay/packages/app/src/context/server-session.ts