feat: initial commit - Jhonny Editor

- Adicionado estrutura completa do projeto
- Configurado MCP server para Premiere Pro
- Adicionado documentação e skills
- Configurado Gitignore para o projeto
This commit is contained in:
João Henrique
2026-09-08 09:59:31 -04:00
commit b541f502ba
1507 changed files with 387650 additions and 0 deletions
@@ -0,0 +1,366 @@
# Plano de Desenvolvimento — Primeira Etapa
## Scanner e leitura da timeline via MCP
## Status
Plano de desenvolvimento da primeira etapa. Este documento organiza a implementação futura; não autoriza a criação imediata de código sem que cada fase esteja preparada e validada.
## Objetivo
Construir o primeiro fluxo funcional do sistema capaz de ler a timeline ativa do Premiere por meio do MCP e transformá-la em uma representação interna confiável.
Ao final desta etapa, o sistema deverá conseguir:
1. comunicar-se com o MCP;
2. verificar a disponibilidade do Premiere;
3. ler a sequência ativa, faixas e clipes;
4. converter respostas externas em objetos do domínio;
5. validar dados incompletos ou inválidos;
6. executar a descoberta por meio do `Scanner`;
7. registrar erros e informações relevantes;
8. testar todo o fluxo sem depender do Premiere real.
## Limites da etapa
### Incluído
- conexão e chamadas técnicas ao MCP;
- sessão e erros da integração;
- leitura da timeline, sequência, faixas e clipes;
- conversores de dados externos;
- entidades e objetos de valor necessários;
- contrato de acesso ao editor;
- contexto, pipeline e descoberta da timeline;
- configuração mínima do scanner;
- logs técnicos e de fluxo;
- testes unitários, de integração simulada e de conversores;
- fixtures baseadas em respostas reais do MCP.
### Não incluído
- corte, exclusão ou movimentação de clipes;
- qualquer escrita no Premiere;
- plano de edição;
- decisão automática;
- transcrição;
- análise visual;
- análise de áudio;
- detecção de cenas;
- detecção de retakes;
- uso obrigatório de provider de IA;
- otimizações prematuras ou execução paralela.
## Estrutura planejada
```text
engine/
├── arquitetura/
│ └── documentação da arquitetura
├── scanner/
│ ├── coordenacao/
│ ├── contratos/
│ ├── modelos/
│ ├── configuracao/
│ └── descoberta/
├── integracoes/
│ └── premiere/
│ ├── cliente_mcp.py
│ ├── sessao_mcp.py
│ ├── erros_mcp.py
│ ├── leitura/
│ ├── conversores/
│ └── contratos/
├── dominio/
│ ├── entidades/
│ └── objetos_de_valor/
├── configuracao/
├── persistencia/
├── logging/
└── testes/
```
## Fases de desenvolvimento
### Fase 0 — Preparação e confirmação arquitetural
**Objetivo:** garantir que o desenho está coerente antes da implementação.
**Atividades:**
- revisar `scanner.md`, `integracao-com-premiere.md` e `leitura-da-timeline-via-mcp.md`;
- revisar a skill `boas-praticas-oo.md`;
- confirmar que todos os identificadores internos serão em PT-BR;
- definir os contratos antes das implementações concretas;
- confirmar que o scanner não terá dependência direta do MCP;
- identificar quais classes são realmente necessárias na primeira versão.
**Entrega:** arquitetura aprovada e sem responsabilidades sobrepostas.
### Fase 1 — Descoberta da API real do MCP
**Objetivo:** conhecer o contrato externo antes de criar adaptadores definitivos.
**Atividades:**
- identificar como o MCP é iniciado;
- verificar como a conexão é estabelecida;
- listar as ferramentas disponíveis;
- identificar ferramentas para projeto, sequência, faixas e clipes;
- registrar argumentos, respostas e erros;
- observar formato dos identificadores e dos tempos;
- capturar respostas reais anonimizadas para fixtures;
- confirmar se a comunicação é síncrona ou assíncrona;
- confirmar se existe estado de sessão.
**Regra:** nomes de ferramentas e campos externos não serão inventados. Eles ficarão isolados na integração.
**Entrega:** inventário do MCP e conjunto inicial de fixtures reais.
### Fase 2 — Contratos e modelos do domínio
**Objetivo:** definir as interfaces internas antes dos adaptadores.
**Contratos:**
- `ContratoDeAcessoAoEditor`;
- contrato de etapa do scanner;
- contrato de conversor, quando necessário.
**Entidades:**
- `Projeto`;
- `Sequencia`;
- `Timeline`;
- `Faixa`;
- `Clipe`.
**Objetos de valor:**
- `IntervaloDeTempo`;
- `TipoDeFaixa`;
- `TipoDeMidia`;
- identificadores internos e externos, se necessário.
**Invariantes mínimas:**
- intervalo não pode iniciar antes de zero;
- fim não pode ser anterior ao início;
- identificadores devem ser preservados;
- posição na timeline e posição na origem são distintas;
- clipe pode estar offline sem invalidar toda a timeline;
- nome não é identificador único.
**Entrega:** modelo interno independente de MCP e editor.
### Fase 3 — Cliente e sessão MCP
**Objetivo:** encapsular a comunicação técnica externa.
**Classes:**
- `ClienteMCP`;
- `SessaoMCP`;
- `ErroMCP`;
- `ErroDeConexaoMCP`;
- `ErroDeFerramentaMCP`;
- `ErroDeRespostaMCP`;
- `FerramentaMCPNaoEncontrada`.
**Responsabilidades:**
- conectar e desconectar;
- informar estado da conexão;
- chamar ferramentas;
- controlar timeout;
- retornar resposta bruta;
- traduzir falhas técnicas em erros específicos;
- registrar logs técnicos.
**Restrições:**
- não criar entidades de domínio;
- não conhecer timeline, clipe, cena ou retake;
- não decidir qual ferramenta usar para uma regra de negócio;
- não misturar leitura e escrita.
**Entrega:** comunicação técnica testável com cliente simulado.
### Fase 4 — Leitura estruturada do Premiere
**Objetivo:** oferecer operações de alto nível para o restante do sistema.
**Classes iniciais:**
- `AcessoAoEditor`;
- `AcessoATimeline`;
- `AcessoAClipes`.
**Operações iniciais:**
- obter timeline ativa;
- obter sequência ativa;
- obter faixas;
- obter clipes;
- obter detalhes de um clipe.
Essas classes poderão começar com uma fachada simples e ser divididas somente quando houver crescimento real de responsabilidade.
**Entrega:** leitura sem que o scanner conheça nomes de ferramentas MCP.
### Fase 5 — Conversão e validação
**Objetivo:** transformar respostas externas em objetos internos confiáveis.
**Classes:**
- `ConversorDeTimeline`;
- `ConversorDeFaixas`;
- `ConversorDeClipes`.
**Atividades:**
- normalizar nomes de campos;
- converter tempos e identificadores;
- aplicar valores padrão seguros;
- validar campos obrigatórios;
- preservar campos externos relevantes;
- tratar tipos desconhecidos;
- diferenciar resposta incompleta de timeline vazia;
- gerar erros de validação estruturados.
**Entrega:** timeline de domínio construída a partir de fixtures externas.
### Fase 6 — Núcleo do scanner
**Objetivo:** executar a descoberta por meio do fluxo arquitetural definido.
**Classes:**
- `ContextoDeAnalise`;
- `Analisador`;
- `ResultadoDaAnalise`;
- `StatusDaAnalise`;
- `ErroDeAnalise`;
- `DescobertaDaTimeline`;
- `PipelineDoScanner`;
- `AnalisadorDeTimeline`.
**Fluxo:**
```text
AnalisadorDeTimeline
↓
ContextoDeAnalise
↓
PipelineDoScanner
↓
DescobertaDaTimeline
↓
ContratoDeAcessoAoEditor
↓
Timeline do domínio
↓
Contexto atualizado
```
Na primeira versão, o pipeline poderá conter somente `DescobertaDaTimeline`.
**Entrega:** scanner capaz de retornar o contexto com a timeline lida.
### Fase 7 — Testes e integração simulada
**Objetivo:** garantir comportamento sem depender do Premiere real.
**Implementar:**
- `AcessoAoEditorSimulado`;
- fixtures de projeto, sequência, faixas e clipes;
- testes do cliente MCP;
- testes dos acessos de leitura;
- testes dos conversores;
- testes das entidades e objetos de valor;
- testes do pipeline;
- testes da descoberta;
- testes de integração simulada.
**Cenários obrigatórios:**
- timeline válida;
- timeline vazia;
- nenhuma sequência ativa;
- sequência sem clipes;
- mídia offline;
- resposta incompleta;
- intervalo inválido;
- ferramenta inexistente;
- timeout;
- MCP indisponível;
- campos adicionais desconhecidos.
**Entrega:** suíte automatizada reproduzível.
### Fase 8 — Validação com Premiere real
**Objetivo:** confirmar o fluxo contra o ambiente real.
**Atividades:**
- conectar ao MCP real;
- listar ferramentas e comparar com o inventário;
- ler projeto e sequência reais;
- comparar resposta real com fixtures;
- validar faixas e clipes;
- testar projeto vazio;
- testar mídia offline;
- verificar logs sem dados sensíveis;
- confirmar que nenhuma ferramenta de escrita foi chamada.
**Entrega:** relatório de validação da leitura real.
## Critérios de conclusão
A primeira etapa estará concluída quando:
- o scanner depender apenas de contratos internos;
- o MCP estiver isolado no módulo de integração;
- a timeline ativa puder ser lida do Premiere;
- faixas e clipes forem convertidos para o domínio;
- intervalos da timeline e da origem forem preservados separadamente;
- mídia offline for representada sem interromper toda a leitura;
- timeline vazia for tratada como resultado válido quando apropriado;
- erros técnicos e de validação forem distinguíveis;
- o fluxo puder ser executado com integração simulada;
- os testes automatizados estiverem passando;
- os logs forem úteis e seguros;
- nenhuma alteração for feita na timeline;
- todos os identificadores internos respeitarem PT-BR;
- a implementação estiver aderente à skill de boas práticas OO.
## Ordem resumida
```text
Arquitetura
↓
API real do MCP
↓
Contratos e domínio
↓
ClienteMCP
↓
AcessoAoEditor
↓
Conversores
↓
Contexto e pipeline
↓
DescobertaDaTimeline
↓
Testes simulados
↓
Validação com Premiere real
```
## Regra final
O MCP é o mecanismo de comunicação com o editor. O scanner é o módulo que organiza a descoberta. O domínio representa os dados. Os conversores isolam formatos externos. Nenhuma dessas responsabilidades deve ser concentrada em uma única classe.