Flowral Agents — painel de chat e agentes
Decisão aprovada: Rust + Slint como UI. Fluxo ACP primeiro, com integração explícita ao OpenCode V2 ou superior. O painel é aplicativo separado, aberto sob demanda, mas compartilha crates e temas com a Central de Controle.
Não confundir versões
- OpenCode V2+ = versões suportadas do programa OpenCode. Integração/configuração com sintaxe atual de V2.
- ACP = protocolo entre cliente Flowral e agente de código. O Rust SDK oferece ACP v1 estável e v2 experimental. A versão do ACP será negociada por capabilities, não automaticamente igual a V2 do OpenCode.
- MCP = protocolo agente→servidor de ferramentas. Gerenciar MCP não significa que Flowral executará diretamente ferramentas sem usuário/agent.
Arquitetura
flowral-agents (Slint UI)
↕ models: session, prompt, messages, permission_requests, tool_calls, diffs
flowral-acp (Rust, SDK oficial + child process)
↕ JSON-RPC stdio/transport negociado
opencode acp | outro agente ACP verificado
↕ provider configurado e MCPs autorizados
modelos / ferramentas / arquivos do workspace
OpenCode também possui APIs próprias; usar adapter OpenCode V2 quando um recurso específico não está disponível no ACP. Não depender de scraping da TUI ou comportamento indefinido.
Fluxos
- Abrir workspace/projeto, escolher agent executável detectado e profile de provider, criar sessão.
- Negociar capabilities, context roots, workspace, limites e permissões.
- Enviar prompt, apresentar streaming, status do agente, chamadas a ferramentas e orçamento quando disponível.
- Mostrar alterações de arquivos/diffs com indicação de risco, antes de aplicar quando o agente/protocolo permitir.
- Confirmar ferramentas com efeitos (executar shell, gravar arquivo, remover diretório, network, MCP).
- Persistir histórico e metadados locais, sem copiar tokens de autenticação para logs.
- Encerrar subprocesso com protocolo de shutdown, liberar handles e detectar órfãos.
Telas
- Welcome: projetos recentes, agentes instalados, provider/modelo ativo.
- Chat: mensagens e Markdown com alta legibilidade, blocos de código, anexos suportados pelo agente.
- Tool activity: ação, argumento resumido, status, duração, permissão, cancel.
- Changes: diff agrupado por arquivo, staged/unstaged e aprovação explícita.
- Sessions: nomes, busca e restore somente quando suportado.
- Settings: integrador de MCP e providers (abre a mesma tela do Control Center).
- Diagnostics: handshake ACP, versões, compatibilidade e logs com redaction.
Múltiplos agentes
Somente após MVP: várias sessões lado a lado, coordenação explícita, não executar dois agentes escrevendo no mesmo workspace sem isolamento; considerar git worktrees por sessão. Nunca executar prompts em paralelo sem escolha do usuário.
Provider management
Tela embutida ou reuso do módulo da Central; custom OpenAI-compatible endpoint e variantes, API key / auth, metadados de custo, test de conexão e seleção por projeto. Respeitar providers.
Critérios de aceite
- Cliente ACP real consegue conversar com
opencode acpV2+ usando SDK Rust e negociar versão suportada. - UI lida com cancelamento, reconexão/falhas e mensagens de progresso.
- Prompts e arquivos são autorizados no escopo do projeto; nunca vazar chave em crash dump.
- Agent encerrado não deixa processos ativos indevidos.
- Medição do sistema em repouso considera painel fechado; não exigir serviço HTTP permanentemente aberto.
- Não alegar compatibilidade ACP com Claude Code/Codex/Hermes/etc sem teste específico do adapter ou proxy.