Apresentando Verboo Code 0.10.7: resume limpo, timeout de 120s e JSON schema no shim
Back to the blog
Artigo

Apresentando Verboo Code 0.10.7: resume limpo, timeout de 120s e JSON schema no shim

Mafra
29/07/2026
4 min read

Em 8 de julho de 2026, o Verboo Code recebeu a versão 0.10.7 com dois commits sobre 9 arquivos alterados. Três mudanças valem atenção: retomar uma sessão interrompida não injeta mais uma mensagem fantasma no histórico, uma trava de 120 segundos impede que o CLI fique pendurado esperando a primeira resposta da API, e o shim OpenAI-compatible passa a aceitar saída estruturada via JSON schema. Nada de breaking change, nada de migração. Só npm install -g @verboo/code@latest e segue o jogo.

Novidades

Structured output chega ao shim OpenAI-compatible

Até a 0.10.6, pedir saída estruturada (JSON schema) só funcionava de verdade contra a API nativa da Anthropic. Quem rodava modelos via o shim OpenAI-compatible, o caminho que o Verboo Code usa pra falar com provedores como OpenAI, Codex, Gemini e vLLM/SGLang, perdia esse recurso: o parâmetro simplesmente não era traduzido.

A 0.10.7 resolve isso em src/services/api/openaiShim.ts. Quando a requisição carrega um output_config com json_schema ou json_object, o shim agora monta o response_format equivalente no corpo da chamada chat/completions, incluindo sanitização do schema pro formato que a API da OpenAI espera. Na prática, isso significa que ferramentas que dependem de saída em formato fixo (parsers, integrações, subagentes que trocam dados estruturados) passam a funcionar igual, seja qual for o provedor por trás do modelo escolhido no /model.

Sessão correlacionada no roteador

O shim agora envia o header X-Verboo-Session-Id em toda chamada que passa pelo roteador da Verboo. Antes, cada requisição chegava anônima do ponto de vista do roteador, sem vínculo explícito com a sessão de onde partiu. Com o header, o roteador consegue correlacionar as chamadas de uma mesma sessão, o que abre caminho pra métricas mais precisas por sessão e, no médio prazo, roteamento com afinidade: a mesma sessão tende a bater no mesmo backend, reduzindo variância de latência entre troca de modelos.

Correções

Resume não duplica mais "Continue de onde parou"

Interromper uma resposta no meio (Ctrl+C) e depois rodar verboo --resume tinha um efeito colateral: o CLI injetava uma mensagem sintética de "continue de onde parou" no histórico pra dar contexto ao modelo, mas essa mensagem ficava visível na conversa, poluindo o que deveria ser um retomar limpo.

A função removeInterruptedMessage, nova em src/utils/messages.ts, remove essa mensagem injetada e a sentinela que a segue assim que o resume é processado, mas só quando a interrupção é sintética. Interrupções reais, quando você mesmo digitou algo e foi cortado no meio, continuam preservadas no histórico como estavam: a sentinela invisível segue mantendo a alternância válida da API até você digitar algo novo. A lógica de decisão está em src/main.tsx, na wiring do fluxo de resume.

Trava de 120 segundos contra hang no início da query

Se a API não respondesse nada na primeira leva de uma query, o CLI podia ficar pendurado indefinidamente, sem erro, sem timeout, sem jeito de saber se ainda estava processando ou travado. A 0.10.7 adiciona um AbortController com timeout de 120 segundos em src/screens/REPL.tsx: se a resposta não chegar nesse prazo, o abort dispara sozinho, o estado da query volta pra idle e a REPL mostra um erro em vez de ficar pendurada pra sempre.

effort ao lado de reasoning_effort pra deployments vLLM/SGLang

Alguns deployments vLLM e SGLang expõem o nível de esforço de raciocínio numa chave de topo diferente da usada pela OpenAI. O shim agora envia os dois: reasoning_effort (padrão OpenAI/Codex) e effort (alias pra esses deployments), tanto no fluxo padrão quanto no ramo específico do DeepSeek thinking. Resultado: menos casos de "configurei o esforço e o modelo ignorou" em endpoints self-hosted.

De brinde, um bug pequeno de logging: a função que registra o fim de cada chamada de API sempre marcava o status de streaming como falso, mesmo em chamadas que estavam de fato em streaming. Corrigido pra refletir o valor real.

Infraestrutura

  • cleanMessagesForLogging: mensagens sintéticas (as que o próprio CLI injeta internamente, como o "continue" do resume) agora são filtradas antes de qualquer log de debug ou transcript, então elas não vazam pra artefatos de diagnóstico onde não fazem sentido.

Como atualizar

npm install -g @verboo/code@latest

Ou com Bun:

bun install -g @verboo/code@latest

Diff completo: e34491f...58b294a no GitHub. Pra ver o que veio antes, o post do Verboo Code 0.10.6.

Structured output, resume sem lixo no histórico e timeout que não deixa o terminal travado: rotina de quem já roda o Verboo Code. Tokens ilimitados, 6 modelos open source, GPU dedicada.

Enjoyed this article?
Share knowledge with your network.
Read also

Related articles