Skip to content

feat(shim): aviso "preparando" (VerbooCodar) em resposta lenta / cold start - #12

Merged
ImPedro29 merged 2 commits into
mainfrom
feat/warming-idle-hint
Jul 30, 2026
Merged

feat(shim): aviso "preparando" (VerbooCodar) em resposta lenta / cold start#12
ImPedro29 merged 2 commits into
mainfrom
feat/warming-idle-hint

Conversation

@Mafralpm

@Mafralpm Mafralpm commented Jul 29, 2026

Copy link
Copy Markdown

Problema

Quando o backend fica silencioso durante cold start ou preempção, a sessão parece travada. O aviso precisa cobrir tanto fetch lento quanto atraso do primeiro conteúdo sem interferir no resultado.

Implementação

  • cria um controlador de warming por requisição, sem timer global compartilhado
  • agrega avisos ativos para que uma chamada rápida não limpe outra chamada lenta
  • considera conteúdo real somente texto, raciocínio ou tool call visível; chunks vazios de metadados não encerram o aviso
  • finaliza o estado em sucesso, erro, abort, stream abandonado e nos formatos chat-completions e Responses/Codex
  • invalida controladores antigos quando o handler da REPL muda, evitando contaminar a próxima query
  • mantém VERBOO_SLOW_HINT_MS com default de 12 segundos

Copy

Adiciona mensagens rotativas com VerbooCodar ao spinner existente. A mudança continua sendo apenas comunicação visual: não altera retry, timeout, abort ou conteúdo da resposta.

Validação

  • 7 testes específicos do warming, incluindo concorrência, chunk inicial vazio, fetch lento, stream lento, Responses API e falha de rede
  • 201 testes focados de shim, Codex e compressão passaram
  • smoke/build passou

@gemini-code-assist

Copy link
Copy Markdown

Caution

The consumer version of Gemini Code Assist on GitHub has been sunset. All code review activity has officially ceased.

@Mafralpm
Mafralpm force-pushed the feat/warming-idle-hint branch from 5036435 to 87ea13f Compare July 30, 2026 00:09
Mafra and others added 2 commits July 30, 2026 20:37
Quando o backend OSS esta lento (cold start ou preempcao do vLLM) e nao emite
o sinal router_status:"warming", a sessao ficava parada e muda, e o usuario
achava que travou (medido: glm chegou a 97s sem feedback).

Agora um cronometro iniciado no ENVIO da requisicao mostra o mesmo estado de
warming-up (spinner "...VerbooCodar!!") apos VERBOO_SLOW_HINT_MS (default 12s).
Por iniciar no envio (e nao na leitura do corpo), cobre os dois casos: resposta
lenta com a conexao ja aberta, e requisicao pendurada antes de qualquer
resposta. O aviso some assim que o primeiro conteudo real chega, no fim do
stream, em erro ou no abort.

E so comunicacao visual: nao altera retry, nao aborta, nao muda o resultado.

Testes (src/services/api/openaiShim.warmingHint.test.ts, 3 casos):
1. Corpo lento: stream que atrasa o 1o chunk. Verifica que 'warming-up' e
   emitido e depois limpo (null) ao chegar conteudo.
2. Requisicao pendurada: o proprio fetch demora a resolver. Verifica que
   'warming-up' e emitido mesmo assim (cronometro conta desde o envio).
3. Resposta rapida: chunk chega antes do limiar. Verifica que 'warming-up'
   NAO e emitido (sem flicker).
Regressao openaiShim*.test.ts: 117 pass. bun run build ok. tsc 0 erros novos.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@ImPedro29
ImPedro29 force-pushed the feat/warming-idle-hint branch from 87ea13f to d432bec Compare July 30, 2026 23:37

@ImPedro29 ImPedro29 left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Aprovado após tornar o warming request-scoped e cobrir concorrência, chunks vazios e Responses/Codex. O cleanup agora contempla sucesso, erro, abort e stream abandonado. Validação: 201 testes focados, smoke/build e todos os checks do PR verdes.

@ImPedro29
ImPedro29 merged commit 17193c8 into main Jul 30, 2026
8 checks passed
@ImPedro29
ImPedro29 deleted the feat/warming-idle-hint branch July 30, 2026 23:39
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants