Skip to content

Evita decodificar conteúdo em consultas de metadados do GitHub#82

Open
patrickadeelino wants to merge 1 commit into
mainfrom
codex/github-files-content-targets
Open

Evita decodificar conteúdo em consultas de metadados do GitHub#82
patrickadeelino wants to merge 1 commit into
mainfrom
codex/github-files-content-targets

Conversation

@patrickadeelino

@patrickadeelino patrickadeelino commented Jun 24, 2026

Copy link
Copy Markdown
Collaborator

Contexto

O conector GitHub expõe a tabela files para descoberta e leitura de arquivos do repositório. No fluxo de AI Dashboards, consultas simples de documentação e runbooks podem primeiro precisar listar caminhos e nomes antes de decidir quais arquivos ler.

Antes desta mudança, GithubFilesTable sempre acessava decoded_content para cada arquivo retornado, mesmo quando a query só selecionava metadados como path e name. Isso torna consultas de descoberta frágeis: qualquer arquivo com encoding ausente ou não-base64 pode derrubar a query inteira com unsupported encoding.

O que foi implementado

A tabela files agora diferencia consulta de metadados de consulta de conteúdo. Quando a seleção não pede content, o handler retorna apenas os dados de arquivo necessários sem tentar decodificar o conteúdo. Quando content é pedido, o handler continua lendo o conteúdo como antes.

Também foi adicionado tratamento por linha para falha de decode causada por AssertionError. Em vez de quebrar a consulta inteira, o arquivo continua sendo retornado com content = None, preservando path, name e repository para o consumidor decidir como lidar com aquele item.

Arquitetura e decisões

A mudança fica restrita ao GithubFilesTable e mantém o contrato público atual da tabela, sem adicionar colunas novas. O comportamento padrão de SELECT * ou ausência de targets continua incluindo conteúdo, preservando compatibilidade com consumidores existentes.

A decisão principal é usar targets como fronteira entre descoberta e leitura. Isso evita trabalho desnecessário em queries metadata-only e reduz o impacto de arquivos binários, symlinks, submodules ou objetos da API do GitHub sem conteúdo base64.

Pontos de atenção para review

  • Confirmar que targets vazio deve continuar significando leitura de conteúdo, para manter compatibilidade com o comportamento anterior.
  • Confirmar que retornar content = None em decode unsupported é preferível a remover a linha ou falhar a query inteira.
  • Esta PR não adiciona novas colunas de status/erro; isso pode ser evoluído depois se quisermos expor content_status/content_error.

@patrickadeelino patrickadeelino marked this pull request as ready for review June 24, 2026 20:44
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant