Skip to content

rewrite: Reimplementar filesystem adapter em Go (filesystem.ts) #1044

Description

@ElioNeto

Parte do epic #1036

Depende de: #1042#1040#1041

Objetivo

Reescrever packages/core/src/filesystem.ts em Go como módulo de I/O puro sem estado compartilhado, aproveitando a simplicidade do os e io/fs da stdlib Go.

Comportamentos a preservar

  • Leitura e escrita de arquivos
  • Watch de diretórios (file watcher para hot-reload de contexto)
  • Resolução de paths relativos ao workspace
  • Tratamento de permissões
  • Listagem recursiva de arquivos com filtros
  • Detecção de tipo de arquivo (binário vs texto)

Endpoints Go a implementar

GET /fs/read?path=... ← leitura de arquivo
POST /fs/write ← escrita de arquivo
GET /fs/list?dir=... ← listagem de diretório
GET /fs/watch?dir=... ← SSE com eventos de mudança
DELETE /fs/file?path=... ← remoção de arquivo

Tarefas

  • Implementar internal/filesystem/reader.go
  • Implementar internal/filesystem/watcher.go (usando fsnotify)
  • Implementar internal/filesystem/handler.go (HTTP handlers)
  • Atualizar cliente TS em packages/go-core-client
  • Criar testes unitários em Go
  • Criar testes de paridade (via harness de rewrite: Criar harness de testes de paridade legado vs nova implementação #1040)
  • Ativar feature flag go-core-filesystem e validar

Critérios de aceite

  • Todos os testes de paridade passam
  • File watcher notifica mudanças com latência ≤ 100ms
  • Funciona em Linux, macOS e Windows
  • Rollback via feature flag funciona sem redeploy

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions