-
Status do intake: ready-for-intake
-
Data: 2026-08-26
-
Origem: relatório de operação de agentes de IA em
conn2flow-ai-workspace/sdd/human-requests/req-020.md -
Classificação: cli, auth, environment, cookies, inspect, testing, developer-experience
-
Batch candidato: BATCH-135
Esta especificação define os requisitos para dotar o framework conn2flow e sua interface de linha de comando (c2f) de ferramentas nativas para autenticação automatizada de agentes, alternância de ambiente de desenvolvimento/produção, inspeção visual headless de telas em runtime e emissão segura condicional de cookies de sessão.
1. Emissão Condicional e Segura de Cookies (gestor_cookie_is_secure())
-
Problema Identificado:
-
No núcleo do sistema (
gestor.php,gestor/bibliotecas/gestor.php,gestor/bibliotecas/usuario.php), a chamadasetcookie()utiliza'secure' => truede forma fixa. -
No ambiente local (
http://localhost/ouhttp://[REDACTED]/), clientes de terminal (curl, Node, scripts de automação) descartam os cookiesSet-Cookiecom atributoSecureem conexões HTTP não-criptografadas, impossibilitando a persistência de sessão e bloqueando requisições automatizadas para rotas autenticadas do Gestor.
-
-
Solução Requerida:
-
Implementar a função pura e centralizada
gestor_cookie_is_secure(): boolemgestor/bibliotecas/gestor.php. -
Regras de Avaliação de Segurança (Defesa em Profundidade / Fail-Secure):
-
Se a requisição for HTTPS (detectada via
$_SERVER['HTTPS'] === 'on', porta443ou cabeçalhos de reverse proxyHTTP_X_FORWARDED_PROTO: https), retornartrueobrigatoriamente. -
Se a configuração do sistema
$_GESTOR['development-env'](instanciada emgestor/config.phpa partir deDEVELOPMENT_ENV) forfalse(padrão de produção), retornartrueobrigatoriamente. -
Retornar
falseestritamente se e somente se: a conexão for HTTP pura, não houver HTTPS ativo, e$_GESTOR['development-env'] === true.
-
-
Substituir as atribuições diretas de
'secure' => trueemgestor_sessao_iniciar(),usuario_iniciar_sessao(),gestor.phpe módulos correlatos pela chamada agestor_cookie_is_secure().
-
2. Comandos CLI de Gestão de Ambiente (c2f env:*)
-
Problema Identificado:
-
O framework opera com comportamentos distintos dependendo da variável
DEVELOPMENT_ENV(em modo desenvolvimento, componentes, páginas e layouts podem ser lidos diretamente dos arquivos físicos emresources/; em modo produção, a leitura é estrita do banco de dados). Não há comando no CLI para inspecionar ou alternar esse estado durante testes locais.
-
-
Solução Requerida:
-
Implementar no CLI
c2fos seguintes comandos e aliases: -
c2f env:status(ouc2f env:get): Exibe o modo atual (developmentouproduction), detalhando os caminhos ativos e o estado das flags de sanitização e recursos. -
c2f env:set [development|production](ouc2f dev:on/c2f dev:off/c2f env:toggle): Altera a variávelDEVELOPMENT_ENVno arquivo de ambiente local (.envoudev-environment/data/environment.json), permitindo alternar rapidamente para validação pré-deploy.
-
3. Comando CLI de Autenticação Server-Side (c2f auth:cookie)
-
Problema Identificado:
-
Para que ferramentas de inspeção, testes ponta a ponta e agentes de IA acessem rotas autenticadas (
/gestor/,/admin-paginas/,/chat-intelligence/), é necessário gerar cookies válidos sem depender de submissão de formulários HTML.
-
-
Solução Requerida:
-
Implementar o comando
c2f auth:cookie [opções]: -
Opções:
--user=IDENTIFICADOR(padrãoadminou ID1),--project=ID(opcional),--out=CAMINHO(padrãotemp/agent-cookies.txt). -
Funcionamento: O comando invoca internamente as rotinas criptográficas de
usuario_gerar_jwt()egestor_sessao_iniciar(), assinando a sessão server-side com a chave local. -
Saída: Grava o arquivo de cookie jar no formato padronizado Netscape (diretamente compatível com
curl -b temp/agent-cookies.txte Playwright) e imprime no terminal a string pronta para cabeçalho HTTP (Cookie: _C2FAUTH_=...; _C2FSID_=...).
-
4. Comando CLI de Inspeção Headless de Páginas (c2f page:inspect)
-
Problema Identificado:
-
Agentes de desenvolvimento não conseguem inspecionar estilos computados (
getComputedStyle), animações ativas (getAnimations()) e erros de console JS em tempo de execução sem depender de intervenção humana (pedir screenshots ou cópia de código-fonte).
-
-
Solução Requerida:
-
Implementar o comando
c2f page:inspect <url_ou_rota> [opções]: -
Opções:
-
--project=ID: Identificador do projeto (resolve a URL base local, ex:http://localhost/photon/). -
--selector="SELETORES_SEPARADOS_POR_VIRGULA": Elementos a serem inspecionados no DOM montado. -
--computed="PROPRIEDADES_CSS": Lista de propriedades computadas a extrair (ex:animation,display,opacity,visibility). -
--screenshot[=CAMINHO]: Captura screenshot da página (padrãotemp/inspect-screenshot.png). -
--cookies=CAMINHO: Caminho do arquivo de cookies (padrãotemp/agent-cookies.txtse existente).
-
-
Execução: Dispara uma rotina headless (via Playwright / Chrome headless) que carrega a página com injeção de cookies de sessão, aguarda o ciclo de renderização JS e extrai os dados.
-
Retorno: JSON estruturado no stdout contendo:
status(HTTP),url,consoleErrors(array de erros capturados no console),elements(array de seletores comfound,computedStyleseactiveAnimationsCount), escreenshotPath.
-
5. Blindagem de Parsing de Flags em Comandos de Projeto (c2f project:*)
-
Problema Identificado:
-
Os 8 comandos
project:*do CLI (project:sync-resources,project:deploy,project:sync-files,project:sync-db,project:recover,project:update-all,project:update-system,project:sync-core) liam apenas o argumento posicional$input->getArgument(0). Quando o usuário ou agente passava a flag--project=ID, ela era armazenada em$options['project']e ignorada, acionando o fallback silencioso para o projeto padrão (conn2flow-site).
-
-
Solução Requerida:
-
Atualizar todos os comandos
Project*Command.phppara resolver o identificador do projeto como:$project = $input->getOption('project') ?? $input->getArgument(0); -
Validar se o identificador informado existe em
environment.jsonantes da execução, emitindo erro explícito caso contrário.
-
6. Critérios de Aceitação
-
Sintaxe e Lint:
php -l100% limpo em todos os arquivos alterados e criados. -
Segurança de Cookies:
-
Em ambiente com
DEVELOPMENT_ENV=falseou requisições HTTPS, os cookies são emitidos comSecure: true. -
Em ambiente com
DEVELOPMENT_ENV=truee requisições HTTP locais, os cookies são emitidos comSecure: false.
-
-
Comandos CLI Funcionais:
-
c2f env:statusexibe o status correto da flagDEVELOPMENT_ENV. -
c2f auth:cookiegera arquivo de cookies válido e utilizável pelocurl. -
c2f page:inspectretorna JSON estruturado com status, erros de console e propriedades CSS computadas. -
c2f project:sync-resources --project=IDreconhece a flag--projectsem acionar o projeto padrão.
-
-
Suíte Automatizada: Testes unitários no PHPUnit cobrindo a lógica de
gestor_cookie_is_secure()e a execução dos comandos CLI.