feat(graph_explorer): adopta layout assets/ via fn::asset_path

Junto con el cambio del framework (commit 81d8a7c9), graph_explorer
ahora resuelve enrichers/, runtime Python y gx-cli desde
<exe_dir>/assets/ con fallback a las rutas dev legacy.

- main.cpp: enrichers_dir busca primero <exe_dir>/assets/enrichers/
  (deploy con /compile). Fallback a <app_dir>/enrichers/ del repo
  cuando se ejecuta desde build/ (modo dev).
- jobs.cpp::resolve_python_runtime: incluye
  <exe_dir>/assets/runtime/python/{python.exe|bin/python3} como
  primera opcion de la cadena de fallback. La opcion legacy sin
  assets/ queda como segundo intento.
- chat.cpp: gxcli_path busca <exe_dir>/assets/gx-cli{.exe} con
  fallback a <app_dir>/gx-cli para modo dev.

Tests: 32/32 verde. Build Linux + Windows OK. Deploy fresco a
Desktop con todas las 6 apps confirma layout limpio:
  <app>.exe + (duckdb.dll si aplica) + assets/ + local_files/

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-05-03 00:50:44 +02:00
parent 375573db38
commit 8623732d6d
3 changed files with 55 additions and 16 deletions
+20 -3
View File
@@ -1,5 +1,6 @@
#include "chat.h"
#include "app_base.h"
#include "imgui.h"
#include "core/icons_tabler.h"
#include "core/selectable_text.h"
@@ -16,6 +17,7 @@
#include <cstring>
#include <ctime>
#include <deque>
#include <filesystem>
#include <mutex>
#include <random>
#include <sstream>
@@ -808,10 +810,25 @@ std::string write_mcp_config() {
config_path_for_claude = config_path_native;
#endif
// El "command" que claude ejecutara es gx-cli con shebang python3. En
// WSL esto es la ruta Linux dentro de fn_registry.
// gx-cli vive en <exe_dir>/assets/ tras el deploy con la
// convencion assets/. Fallback al app_dir del repo en modo dev.
std::string app_dir_linux = to_linux_path(g_st->app_dir);
std::string gxcli_path = app_dir_linux + "/gx-cli";
std::string gxcli_path;
{
std::string assets_gx = fn::asset_path(
#ifdef _WIN32
"gx-cli.exe"
#else
"gx-cli"
#endif
);
std::error_code _ec;
if (std::filesystem::exists(assets_gx, _ec)) {
gxcli_path = to_linux_path(assets_gx);
} else {
gxcli_path = app_dir_linux + "/gx-cli";
}
}
// No metemos env: en el config para que herede del proceso padre
// (claude, que ya tiene GX_OPS_DB/GX_APP_DB/GX_APP_DIR via WSLENV).