diff --git a/docs/spec.md b/docs/spec.md index d30df659..c900c2c4 100644 --- a/docs/spec.md +++ b/docs/spec.md @@ -1171,6 +1171,7 @@ Conferência na documentação oficial (code.claude.com/docs) em 2026-09-28; esf | `SetForegroundWindow` vindo do daemon | 24.7 | **A verificar**: o daemon roda como tarefa de logon, sem janela; o Windows pode recusar trazer outra janela para a frente | D4 | | Entrada do dono no gancho de baixo nível | 24.7 | **A verificar**: `LLMHF_INJECTED` e `LLKHF_INJECTED` separam a entrada do `SendInput` da do dono | D4 | | `--strict-mcp-config` com servidores do dono | 25 | **Visto com 2.1.287** (2026-10-05, `claude -p` real com servidores de teste): um `mcp.json` com um servidor `stdio` que faz o papel do `permission_prompt` e outro `stdio` do dono sobe os dois (`system/init` traz `mcp_servers` com `name` e `status: connected`, e `source: dynamic`); `${VAR}` em `env` (stdio) e em `headers` (http) é expandido do ambiente do processo; a tool do servidor do dono, fora de `--allowedTools`, chega à tool de aprovação com `tool_name: mcp____`, `input` e `tool_use_id`, e roda depois do `allow`. **Também visto** (2026-10-05): o pedido de controle `{"subtype":"mcp_status"}` é respondido 1,5 s depois de subir, sem nenhum turno, com `mcpServers` (`name`, `status`, `config`, `scope`, `source`, `tools`, e `error` quando falha: `Connection closed` para um programa que não existe, `ECONNREFUSED...` para um endereço sem servidor); a resposta traz `config` com os valores já expandidos | feito (E2); manual (PR): um servidor do dono no Claude Code real pelo daemon | +| Catálogo de bots no Claude Code real | 26 | **Visto com 2.1.287** (2026-10-06, daemon de teste em pasta própria, `claude -p` real, modelo do plano): (1) o chefe (Sonnet), pedido "preciso de alguém para as redes sociais", chamou `crew_roster` e `list_bot_templates` e sugeriu com `template`; o cartão trouxe as instruções da ficha (2 253 caracteres) sem o campo `template`, e o bot criado ficou igual ao cartão. O chefe errou uma vez o nome de um campo do `send_message` (`message` por `body`) e se corrigiu. (2) Quatro papéis, criados com `catalog.add` em modo Manual, seguiram a ficha: Social Media (perguntou com `ask_owner`, entregou o calendário com `share_file` e `complete_task`, disse que não publicou), Atendimento (recusou o que o material não cobria, sem inventar política, e deixou nota ao dono), Designer (HTML único para celular, avisou que não o abriu no navegador) e Pesquisador (busca e leitura de páginas, 2 fontes com link e a data do dado, disse o que não achou). Os outros 8 papéis não foram testados. Dono validou o catálogo em 2026-10-06 | Itens do runtime anterior (ConPTY, hooks em exec form, `crossSessionInbound`, linha de auth do inbox, diálogo de confiança, `ESC[6n` do ConPTY, consultas do terminal no replay) foram verificados no M2–M4 e deixaram de se aplicar com a ADR 0001; o histórico está no git e na ADR.