GCWing / GCWing/OpenBitFun

[Bug]: chat UI can stay stuck processing when a dialog turn completion event is dropped

Cerrado
#2,656 0 comentarios 0 reacciones 0 asignados Ver en GitHub
Lenguaje dominante
Rust
Estrellas
2.3k
Forks
231
Merge medio
2 h 49 min
PR fusionados (30 d)
589

Descripción

## Summary

handleDialogTurnComplete gates settlement on eventOwnsLatestSessionTurn, which requires the completed turn to be the last dialog turn; when an optimistic follow-up turn exists (or the machine context was reset by the failure path), the completion event is dropped and the session stays PROCESSING forever.

Ownership matching now prefers the machine's currentDialogTurnId, the failure path settles with a single FINISHING_SETTLED transition instead of ERROR_OCCURRED→RESET (which clears currentDialogTurnId and desynchronizes later ownership checks), and completion events settle unconditionally (BACKEND_STREAM_COMPLETED while PROCESSING plus an unconditional beginTurnCompletion). The ownsSessionSettlement mechanism stays in place at all other consumption points.

## Area

src/web-ui/src/flow_chat/services/flow-chat-manager/EventHandlerModule.ts (+ its test file).

## Reproduction or evidence

At 32f2427697, eventOwnsLatestSessionTurn (:183-192) still prioritizes dialogTurns.at(-1); handleDialogTurnComplete :2648/:2658 still gate both transitions on ownsSessionSettlement; the failed path (:2748-2749) still performs the ERROR_OCCURRED→RESET double transition. A turn completed while a newer optimistic turn exists leaves the state machine in PROCESSING indefinitely. Regression test: settles the state machine when completion arrives for a non-latest turn.

## Environment

All platforms (frontend state machine); baseline 32f2427697.

---
AI-assisted change. Testing: verified locally (`pnpm vitest run EventHandlerModule.test.ts` 48 passed, 0 failed, including the new regression case; `pnpm run type-check` (tsc --noEmit) exit 0 with no errors).

Guía de contribución

Abrir la guía de contribución

Línea de trabajo

Empieza por src/web-ui/src/flow_chat/services/flow-chat-manager/EventHandlerModule.ts, especialmente por eventOwnsLatestSessionTurn y handleDialogTurnComplete, y después lee su archivo de pruebas. Reproduce el caso de una completion descartada y ejecuta pnpm vitest run EventHandlerModule.test.ts además de pnpm run type-check; el trabajo estará terminado cuando la completion de un turno que no es el más reciente complete la máquina de estados sin romper las pruebas existentes.

Escrito por el modelo de indexación a partir del texto del issue.

Evaluación

Stack tecnológico
typescript
Área
frontend
Tipo de issue
Error
Dificultad
3/5
Tiempo estimado
1-2 días
Estado de actividad
Activo
Claridad
Bien especificado
Aptitud para principiantes
76/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.