Skip to content

rewrite: Reimplementar session event streaming em Go (session-event.ts + session-message-updater.ts) #1045

Description

@ElioNeto

Parte do epic #1036

Depende de: #1042 #1040 #1041 #1043

Objetivo

Reescrever packages/core/src/session-event.ts (9 KB) e packages/core/src/session-message-updater.ts (13 KB) em Go. Esses módulos gerenciam o streaming de eventos da sessão com LLM e são o coração do agent swarm.

Mapeamento Effect-TS → Go

O maior desafio aqui é que o código atual usa Effect fibers e streams (packages/core/src/effect/). O equivalente em Go é:

Effect-TS Go
Effect.fiber goroutine
Stream channel
Effect.cancel context.WithCancel
Effect.retry loop com backoff
Layer (dependency injection) struct com interfaces

Comportamentos a preservar

  • Recepção e roteamento de eventos de sessão
  • Streaming de tokens LLM para o cliente
  • Atualização incremental de mensagens
  • Cancelamento de sessão em andamento
  • Redução de múltiplos eventos em uma mensagem consolidada
  • Persistência de eventos para reconstrução de contexto

Endpoints Go a implementar

POST /session                    ← cria sessão
GET  /session/:id/events         ← SSE com eventos em tempo real
POST /session/:id/message        ← envia mensagem ao LLM
DELETE /session/:id              ← cancela sessão
GET  /session/:id/messages       ← histórico de mensagens

Tarefas

  • Mapear todos os tipos de evento de session-event.ts
  • Implementar internal/session/event.go
  • Implementar internal/session/updater.go com goroutines
  • Implementar SSE handler para streaming de tokens
  • Implementar cancelamento via context.Context
  • Atualizar cliente TS em packages/go-core-client
  • Criar testes unitários em Go
  • Criar testes de paridade (via harness de rewrite: Criar harness de testes de paridade legado vs nova implementação #1040)
  • Ativar feature flag go-core-session e validar

Critérios de aceite

  • Todos os testes de paridade passam
  • Latência de primeiro token igual ou inferior ao legado TS
  • Cancelamento responde em ≤ 500ms
  • Agent swarm funciona com múltiplas sessões concorrentes
  • Rollback via feature flag funciona sem redeploy

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions