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_llme 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_logcom statusPendentee 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_loge 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)