Files
fn_registry/docs/capabilities/cpp-windows.md
T
egutierrez fc4180cbb3 chore: auto-commit (129 archivos)
- .claude/agents/fn-analizador/SKILL.md
- .claude/agents/fn-constructor/SKILL.md
- .claude/agents/fn-executor/SKILL.md
- .claude/agents/fn-mejorador/SKILL.md
- .claude/agents/fn-orquestador/SKILL.md
- .claude/agents/fn-recopilador/SKILL.md
- .claude/commands/app.md
- .claude/commands/compile.md
- .claude/commands/cpp-app.md
- .claude/commands/create_functions.md
- ...

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-06-01 22:23:12 +02:00

4.9 KiB

cpp-windows

Operar apps C++ del registry en Windows desde WSL2: compilar, desplegar, lanzar, verificar y relanzar.

Funciones del grupo

ID Firma corta Que hace
build_cpp_windows_bash_infra build_cpp_windows([target]) Cross-compila apps C++ para Windows con mingw-w64
deploy_cpp_exe_to_windows_bash_infra deploy_cpp_exe_to_windows(app_name, app_dir) Copia .exe + DLLs + assets al Desktop Windows, mata proceso previo
launch_cpp_app_windows_bash_infra launch_cpp_app_windows(app_name, [desktop_dir]) Lanza .exe en Windows via cmd.exe /c start, retorna inmediatamente
is_cpp_app_running_windows_bash_infra is_cpp_app_running_windows(app_name) Exit 0 si el proceso esta vivo (tasklist.exe), stdout: RUNNING: PID=N MEM=...K
launch_cpp_app_windows_bash_infra launch_cpp_app_windows(app_name, [desktop_dir]) Lanza .exe en Windows via cmd.exe /c start, retorna inmediatamente
e2e_run_cpp_windows_bash_infra e2e_run_cpp_windows(target, [--no-build], [--no-deploy]) Build + deploy + run headless de app C++ (tests e2e tipo altsnap)
redeploy_cpp_app_windows_bash_pipelines redeploy_cpp_app_windows(app_name, app_dir, [--build]) Pipeline completo (UNA app): build? + deploy + launch + verify
redeploy_all_cpp_apps_bash_pipelines redeploy_all_cpp_apps([filter]) Bulk: compila TODO el arbol cpp/ en un cmake pass + despliega cada .exe. Filtro opcional por substring de nombre. Tolerante a fallos por app.
resolve_cpp_app_dir_bash_infra resolve_cpp_app_dir([app_name]) Resuelve <name>\t<abs_dir>. Busca en apps/, cpp/apps/ (legacy), projects/*/apps/. Sin arg deduce desde CWD.

Ejemplo canonico

Redeploy rapido (build ya hecho)

source bash/functions/infra/deploy_cpp_exe_to_windows.sh
source bash/functions/infra/launch_cpp_app_windows.sh
source bash/functions/infra/is_cpp_app_running_windows.sh

deploy_cpp_exe_to_windows "registry_dashboard" \
    "$HOME/fn_registry/projects/fn_monitoring/apps/registry_dashboard"
launch_cpp_app_windows "registry_dashboard"
sleep 1
if is_cpp_app_running_windows "registry_dashboard"; then
    echo "OK: arrancado"
else
    echo "ERROR: no arranco" >&2; exit 1
fi

Via pipeline (un solo comando)

source bash/functions/pipelines/redeploy_cpp_app_windows.sh

# Sin recompilar
redeploy_cpp_app_windows "registry_dashboard" \
    "$HOME/fn_registry/projects/fn_monitoring/apps/registry_dashboard"

# Con recompilacion previa
redeploy_cpp_app_windows "chart_demo" \
    "$HOME/fn_registry/cpp/apps/chart_demo" --build

Comprobar si esta vivo antes de decidir

source bash/functions/infra/is_cpp_app_running_windows.sh

if is_cpp_app_running_windows "registry_dashboard"; then
    echo "Ya esta corriendo — skip launch"
else
    launch_cpp_app_windows "registry_dashboard"
fi

Fronteras

  • No gestiona builds Linux ni assets de Linux — solo el flujo Windows.
  • No verifica que la app funcione correctamente, solo que el proceso existe (tasklist.exe).
  • No gestiona credenciales ni configuracion de la app — eso es responsabilidad de cada app via local_files/.
  • Tests automatizados en CI no son posibles — requieren WSL2 con Windows activo.

Prerequisitos

  • WSL2 con interop a Windows habilitado (tasklist.exe, cmd.exe, wslpath accesibles).
  • mingw-w64 instalado en WSL para build_cpp_windows (sudo apt install mingw-w64).
  • El .exe compilado en cpp/build/windows/apps/<app>/ antes de deploy_cpp_exe_to_windows.

Notas

El flujo estandar es: build_cpp_windowsdeploy_cpp_exe_to_windowslaunch_cpp_app_windowsis_cpp_app_running_windows. El pipeline redeploy_cpp_app_windows encapsula los pasos 2-4 (con 1 opcional via --build).

deploy_cpp_exe_to_windows ya incluye un taskkill.exe interno — no es necesario matar el proceso manualmente antes de llamarlo. is_cpp_app_running_windows es util cuando se quiere tomar la decision de matar/no matar de forma explicita antes del deploy.

Bulk redeploy (2026-05-16)

Tras cambios en cpp/framework/app_base.* o cualquier funcion linkada por muchos apps, usar:

./fn run redeploy_all_cpp_apps          # todas las apps
./fn run redeploy_all_cpp_apps graph    # solo apps con "graph" en el nombre

Build best-effort: si test targets rotos (test_llm_anthropic, test_graph_icons usan setenv() no disponible en mingw), el pipeline avisa pero sigue desplegando los .exe que SI se construyeron. Resumen final con OK/SKIPPED/FAILED por app.

Layouts soportados

resolve_cpp_app_dir (y por tanto compile_cpp_app) busca apps en este orden:

  1. apps/<X>/ — canonical issue 0096.
  2. cpp/apps/<X>/ — legacy.
  3. projects/*/apps/<X>/ — apps de proyectos.

Tambien deduce desde CWD si la sesion esta dentro de cualquiera de las tres. Fix retroactivo: antes del 2026-05-16 resolve_cpp_app_dir no veia apps/<X>/ y ./fn run compile_cpp_app <name> fallaba para apps en ese layout.