Gleam.br Wiki

GBR: EARS-0003 Especificação de UI Concorrente e HITL | Wiki

Documentação de engenharia e especificações técnicas da Gleam-BR.

GBR: EARS-0003 Especificação de UI Concorrente e HITL

*Requisitos Ubíquos (Ubiquitous Requirements)*

  • *UBQ-UI-01:* O Ator REPL *deve* operar estritamente de forma não-bloqueante, processando eventos de rede (Chunk, Done) e de disco independentemente do estado do processo de leitura do teclado (stdin).

*Requisitos Orientados a Eventos (Event-Driven Requirements)*

  • *EVD-UI-01:* Quando o Ator REPL receber a mensagem do Task efêmero contendo o texto digitado pelo usuário, ele *deve* despachar este texto como um Prompt para o Ator de Sessão do gbr_llm e imediatamente iniciar um novo Task de leitura.
  • *EVD-UI-02:* Quando a ferramenta MCP do Agente atingir um bloqueio de segurança em um arquivo protegido, a ferramenta *deve* persistir a intenção no gbr_disk_log com status Pendente e enviar um sinal lógico para a Erlang VM colocar sua própria execução em estado de hibernação (liberando ciclos de CPU).

*Requisitos Orientados a Estado (State-Driven Requirements)*

  • *STD-UI-01:* Enquanto o Ator REPL possuir em memória o registro de que uma requisição HITL está aguardando resolução, ele *deve* suprimir e enfileirar a renderização de quaisquer novos eventos de streaming recebidos da IA até que a decisão do Humano seja registrada de volta no disco.

*Requisitos de Comportamento Indesejado (Unwanted Behavior Requirements)*

  • *UNW-UI-01:* Se a CLI for reiniciada forçadamente, o Ator REPL, em sua fase de inicialização, *não deve* ignorar o estado anterior, mas *deve* obrigatoriamente ler o arquivo de recovery do gbr_disk_log e restaurar o estado visual caso existam pedidos HITL órfãos.

A Árvore de Supervisão Master (gleambrai + gbrllm)

Esta é a fotografia final da nossa arquitetura OTP. A fusão do App(gleambrai) com a Biblioteca(gbrllm), onde o cérebro, a rede e a interface dançam em harmonia assíncrona.

[⚙️ gleambr_ai_app_sup] (Strategy: RestForOne)
  │
  ├── [🌍 env_manager_worker]
  │      (Lê os perfis .gbr_envs e fornece o contexto global: senhas, chroot, limites)
  │
  ├── [💾 hitl_disk_log_worker]
  │      (Processo Erlang nativo gerenciando o ring-buffer no disco: gbr_disk_log)
  │
  ├── [🧠 gbr_llm_session_sup] (Biblioteca abstrata importada)
  │      │
  │      ├── [🤖 llm_session_worker] (O Coração da IA)
  │      │      (Guarda o histórico, injeta Tools JSON e aplica Context Pruning)
  │      │
  │      └── [🔫 gun_proxy_worker] (O Músculo da Rede)
  │             (Processo Erlang TCP/TLS traduzindo SSE chunks para ADTs Gleam)
  │
  ├── [🌉 gbr_edge_mcp_sup] (Strategy: RestForOne - Nosso P2P Local)
  │      │
  │      ├── [🏭 mcp_worker_factory]
  │      │      (Gera subprocessos dinâmicos para cada ferramenta executada)
  │      │
  │      └── [🛡️ mcp_context_manager]
  │             (Injeta as ferramentas seguras (ex: FileSystem com Sandboxing))
  │
  └── [💻 repl_interface_worker] (O Rosto do App)
         │ (Coordena ANSI Escape codes, imprime o texto da IA e lê o disk_log)
         │
         └── ↳ [🏃 stdin_read_task] (Filho efêmero criado dinamicamente)
                (Bloqueia no io.get_line e morre entregando a mensagem ao REPL)