diff --git a/.jhonny/analises.db b/.jhonny/analises.db index 246cdf1..743174d 100644 Binary files a/.jhonny/analises.db and b/.jhonny/analises.db differ diff --git a/code/engine/aplicar_montagem_incremental_prototipo.py b/code/engine/aplicar_montagem_incremental_prototipo.py index 9c3f6f2..516e8dc 100644 --- a/code/engine/aplicar_montagem_incremental_prototipo.py +++ b/code/engine/aplicar_montagem_incremental_prototipo.py @@ -9,9 +9,11 @@ from __future__ import annotations import argparse import json +import os from pathlib import Path import sys from datetime import datetime +import shutil CAMINHO_DO_CODIGO = Path(__file__).resolve().parent.parent if str(CAMINHO_DO_CODIGO) not in sys.path: @@ -108,13 +110,29 @@ def _nome_da_sequencia(nome_da_origem: str) -> str: def resolver_node() -> str: - """Resolve o Node usado pelo servidor MCP local.""" - import shutil - - caminho = shutil.which("node") - if caminho: - return caminho - raise ErroDeMontagemIncremental("Node.js não foi encontrado no PATH do painel.") + """Resolve o Node mesmo quando o painel CEP possui um PATH reduzido.""" + caminho_configurado = os.environ.get("PREMIERE_NODE_BIN", "").strip() + if caminho_configurado: + if os.path.isfile(caminho_configurado) and os.access(caminho_configurado, os.X_OK): + return caminho_configurado + raise ErroDeMontagemIncremental( + f"Node.js configurado em PREMIERE_NODE_BIN não é executável: {caminho_configurado}" + ) + encontrado_no_path = shutil.which("node.exe" if os.name == "nt" else "node") + if encontrado_no_path: + return encontrado_no_path + caminhos_conhecidos = ( + ("C:/Program Files/nodejs/node.exe", "C:/Program Files/nodejs/nodejs.exe") + if os.name == "nt" + else ("/opt/homebrew/bin/node", "/usr/local/bin/node", "/usr/bin/node") + ) + for caminho in caminhos_conhecidos: + if os.path.isfile(caminho) and os.access(caminho, os.X_OK): + return caminho + raise ErroDeMontagemIncremental( + "Node.js não encontrado. Instale o Node.js ou configure PREMIERE_NODE_BIN " + "com o caminho completo do executável." + ) def principal() -> None: