Files
jhonny-editor/admin/PremiereMCP.command
T
João Henrique e16244d68d feat: removidos da tela Editar vídeo os passos legados de transcri
- removidos da tela Editar vídeo os passos legados de transcrição, falantes e métricas.

Resumo:
- 4 arquivos alterados
- 0 novos
- 4 modificados
- 0 removidos

 4 files changed, 35 insertions(+), 161 deletions(-)

Arquivos:
  - .jhonny/analises.db
  - admin/PremiereMCP.command
  - code/cep-plugin/index.html
  - code/cep-plugin/main.js
2026-09-10 10:38:18 -04:00

217 lines
8.0 KiB
Bash
Executable File

#!/bin/zsh
# ============================================================
# Jhonny - admin/PremiereMCP.command
#
# PONTO DE ENTRADA UNICO do MCP do Premiere Pro (code/) e do pipeline
# de corte de silencio por transcricao (Whisper). Rode este arquivo
# sempre que mexer no codigo antes de testar dentro do Premiere.
#
# 1. BUILD compila o TypeScript (code/, tsc -> dist/), valida a
# sintaxe dos scripts do painel CEP e do apply-silence-cuts,
# e reinstala a COPIA do painel que o Premiere realmente
# carrega (~/Library/.../Adobe/CEP/extensions/MCPBridgeCEP -
# editar code/cep-plugin sozinho nao e o bastante)
# 2. PYTHON confere o venv/dependencias do pipeline de transcricao
# (faster-whisper) e a presenca dos scripts esperados
# 3. RAG reindexa na RAG do Jhonny (jhonny-rag) o que mudou em
# code/ desde o ultimo build - mantem o indice em dia pro
# agente de IA buscar o codigo certo. Best-effort: se o
# abre o tunel temporariamente quando necessario e fecha o
# processo que este ciclo iniciou ao terminar.
# 4. LEMBRETE recarregue somente a extensao CEP para o painel
# reinstalado ser carregado - este passo so imprime isso
#
# Nao mexe em git (este projeto nao e um repositorio git) e nao sobe
# nenhum servidor - o bridge roda dentro do proprio Premiere via CEP.
#
# Uso:
# admin/PremiereMCP.command ciclo completo
# SKIP_BUILD=1 admin/PremiereMCP.command pula o build TypeScript
# SKIP_PYTHON=1 admin/PremiereMCP.command pula a checagem Python
# SKIP_RAG=1 admin/PremiereMCP.command pula a reindexacao RAG
# ONLY=build admin/PremiereMCP.command roda so uma etapa
# (build | python | rag | reload)
# ============================================================
set -u
ROOT="$(cd "$(dirname "$0")/.." && pwd -P)"
CODE="$ROOT/code"
CEP="$CODE/cep-plugin"
SCRIPTS="$CODE/scripts"
# Pipeline de transcricao (Whisper) - mesmo venv usado nesta sessao.
TRANSCRICAO="/Volumes/Merongo/SISTEMAS/WHISPERX/transcricao"
VENV_PY="/Volumes/Merongo/SISTEMAS/venvs/whisperx-transcricao/bin/python"
GRN="$(tput setaf 2 2>/dev/null)"; YLW="$(tput setaf 3 2>/dev/null)"
RD="$(tput setaf 1 2>/dev/null)"; BLU="$(tput setaf 4 2>/dev/null)"
NC="$(tput sgr0 2>/dev/null)"
step() { echo; echo "${BLU}============================================================${NC}"
echo "${BLU} $*${NC}"
echo "${BLU}============================================================${NC}"; }
ok() { echo "${GRN}-> OK ${NC}$*"; }
warn() { echo "${YLW}-> Aviso: ${NC}$*"; }
die() { echo "${RD}-> Erro: ${NC}$*" >&2; exit 1; }
ONLY="${ONLY:-all}"
run_step() { [ "$ONLY" = "all" ] || [ "$ONLY" = "$1" ]; }
FAILED=0
RAG_TUNNEL_PID=""
cleanup_rag_tunnel() {
if [ -n "$RAG_TUNNEL_PID" ] && kill -0 "$RAG_TUNNEL_PID" 2>/dev/null; then
kill "$RAG_TUNNEL_PID" 2>/dev/null || true
wait "$RAG_TUNNEL_PID" 2>/dev/null || true
fi
}
trap cleanup_rag_tunnel EXIT
[ -d "$CODE" ] || die "pasta do projeto nao encontrada: $CODE"
# ------------------------------------------------------------
# 1) Build (TypeScript + validacao de sintaxe dos scripts)
# ------------------------------------------------------------
if run_step build && [ "${SKIP_BUILD:-0}" != "1" ]; then
step "1/4 BUILD (tsc + validacao de sintaxe)"
cd "$CODE" || die "nao consegui entrar em $CODE"
if npm run build; then
ok "npm run build (dist/ atualizado)"
else
warn "npm run build falhou - veja o log acima"
FAILED=1
fi
for f in "$CEP/main.js" "$SCRIPTS/apply-silence-cuts.mjs"; do
if [ -f "$f" ]; then
if node --check "$f" 2>/dev/null; then
ok "sintaxe valida: ${f#$ROOT/}"
else
warn "sintaxe invalida: ${f#$ROOT/}"
FAILED=1
fi
else
warn "arquivo esperado nao encontrado: ${f#$ROOT/}"
FAILED=1
fi
done
# O Premiere carrega o painel de uma COPIA instalada em
# ~/Library/.../Adobe/CEP/extensions/MCPBridgeCEP, nao direto de
# code/cep-plugin. Sem este passo, mudancas no painel nunca aparecem
# dentro do Premiere, mesmo com o app reaberto.
if node dist/index.js --install-cep >/tmp/premiere-mcp-install-cep.log 2>&1; then
ok "painel CEP reinstalado (copia sincronizada)"
else
warn "falha ao reinstalar o painel CEP - veja /tmp/premiere-mcp-install-cep.log"
FAILED=1
fi
elif run_step build; then
step "1/4 BUILD - PULADO (SKIP_BUILD=1)"
fi
# ------------------------------------------------------------
# 2) Pipeline Python (Whisper / corte de silencio)
# ------------------------------------------------------------
if run_step python && [ "${SKIP_PYTHON:-0}" != "1" ]; then
step "2/4 PYTHON (venv + pipeline de transcricao)"
if [ -x "$VENV_PY" ]; then
ok "venv encontrado: $VENV_PY"
else
warn "venv nao encontrado em $VENV_PY"
FAILED=1
fi
if [ -x "$VENV_PY" ] && "$VENV_PY" -c "import faster_whisper" 2>/dev/null; then
ok "faster-whisper importavel"
else
warn "faster-whisper nao importavel neste venv"
FAILED=1
fi
for f in "$TRANSCRICAO/transcribe_cli.py" "$TRANSCRICAO/silence_cutter.py"; do
if [ -f "$f" ]; then
ok "script presente: ${f#/Volumes/Merongo/}"
else
warn "script esperado nao encontrado: ${f#/Volumes/Merongo/}"
FAILED=1
fi
done
elif run_step python; then
step "2/4 PYTHON - PULADO (SKIP_PYTHON=1)"
fi
# ------------------------------------------------------------
# 3) RAG - reindexa na RAG do Jhonny o que mudou em code/
# ------------------------------------------------------------
if run_step rag && [ "${SKIP_RAG:-0}" != "1" ]; then
step "3/4 RAG (reindexacao incremental jhonny-rag)"
RAG_PY="$ROOT/rag/.venv/bin/python3"
[ -x "$RAG_PY" ] || RAG_PY="$(command -v python3)"
if ! nc -z 127.0.0.1 55435 2>/dev/null; then
echo "-> Abrindo tunel RAG temporario (127.0.0.1:55435)..."
ssh -N \
-o ExitOnForwardFailure=yes \
-o ServerAliveInterval=30 \
-o ServerAliveCountMax=3 \
-L "127.0.0.1:55435:127.0.0.1:55435" \
root@179.197.228.240 &
RAG_TUNNEL_PID=$!
RAG_TUNNEL_READY=0
for _ in $(seq 1 10); do
if nc -z 127.0.0.1 55435 2>/dev/null; then
RAG_TUNNEL_READY=1
break
fi
if ! kill -0 "$RAG_TUNNEL_PID" 2>/dev/null; then
break
fi
sleep 0.5
done
if [ "$RAG_TUNNEL_READY" != "1" ]; then
warn "nao foi possivel abrir o tunel RAG - reindexacao pulada."
else
ok "tunel RAG aberto temporariamente"
fi
fi
if [ -n "$RAG_TUNNEL_PID" ] && ! nc -z 127.0.0.1 55435 2>/dev/null; then
warn "tunel RAG ficou indisponivel - reindexacao pulada."
elif ! nc -z 127.0.0.1 55435 2>/dev/null; then
warn "tunel RAG fechado - reindexacao pulada."
elif [ ! -x "$RAG_PY" ]; then
warn "python do rag nao encontrado - reindexacao pulada."
else
if ( cd "$ROOT" && RAG_ENV_FILE="$ROOT/rag/jhonny.env" \
"$RAG_PY" "$ROOT/rag/index_code.py" >/tmp/premiere-mcp-rag.log 2>&1 ); then
ok "RAG reindexado (incremental) - índice em dia"
else
warn "reindexacao RAG falhou - veja /tmp/premiere-mcp-rag.log"
FAILED=1
fi
fi
elif run_step rag; then
step "3/4 RAG - PULADO (SKIP_RAG=1)"
fi
# ------------------------------------------------------------
# 4) Lembrete de recarregar somente a extensao dentro do Premiere
# ------------------------------------------------------------
if run_step reload; then
step "4/4 RECARREGAR A EXTENSAO CEP"
echo "O painel ja foi reinstalado (passo 1). Para carregar a copia nova:"
echo " 1. Feche somente o painel MCP for Adobe Premiere Pro"
echo " 2. Abra novamente em Window > Extensions > MCP for Adobe Premiere Pro"
echo " 3. Confira a aba Editar video e os passos Concluir edicao / Aplicar na timeline"
fi
echo
if [ "$FAILED" != "0" ]; then
die "ciclo terminou com pendencias - corrija os avisos acima antes de testar no Premiere."
fi
ok "Ciclo concluido. Pronto para recarregar somente a extensao no Premiere."