fix(agent_jobs): queue dir desde GX_APP_DB, no GX_APP_DIR + logs verbosos
Bug derivado del fix anterior: gx-cli escribia ficheros JSON en `$GX_APP_DIR/agent_jobs_queue/` (apuntando al repo fuente) mientras main.cpp escaneaba `parent(g_layout_db_path)/agent_jobs_queue/` (install Windows). Dos directorios distintos -> jobs huerfanos. Echo reportaba "encolado" pero el worker nunca veia los ficheros. La causa: chat.cpp setea GX_APP_DIR=<registry>/projects/osint_graph/ apps/graph_explorer y GX_APP_DB=<install>/local_files/projects/<slug>/ graph_explorer.db. Dos sitios. Solo APP_DB coincide con donde graph_explorer.exe escanea (parent del .db). Fix: * gx-cli cmd_enricher_run: queue_dir = parent(GX_APP_DB) / agent_jobs_queue. Alineado con main.cpp. * gx-cli: nuevo helper `_log(tag, msg)` que escribe a stderr Y a `<parent(app_db)>/gx-cli.log` para auditoria persistente. Cubre node_create, node_update, node_delete, rel_create, enricher_run. * gx-cli mcp _mcp_log tambien persiste a gx-cli.log. * main.cpp: log el queue scan dir una vez por sesion para detectar mismatches a futuro. * .gitignore: agent_jobs_queue/ y gx-cli.log son runtime, no se commitean. Tests: * test_enricher_run_queue_dir_derives_from_app_db (regresion) configura GX_APP_DB en un dir distinto de GX_APP_DIR y verifica que el JSON aterriza junto a APP_DB. * test_enricher_run_writes_log_to_gx_cli_log valida la auditoria. WSL 81 / Windows 70 + 11 skipped.
This commit is contained in:
@@ -1314,6 +1314,16 @@ static void render() {
|
||||
std::filesystem::path(g_layout_db_path).parent_path() /
|
||||
"agent_jobs_queue";
|
||||
std::error_code ec;
|
||||
// Log el path una sola vez por sesion para detectar mismatches
|
||||
// entre lo que escribe gx-cli y lo que escaneamos aqui.
|
||||
static bool s_logged_queue_dir = false;
|
||||
if (!s_logged_queue_dir) {
|
||||
std::fprintf(stdout,
|
||||
"[chat] agent queue scan dir: %s (exists=%d)\n",
|
||||
queue_dir.string().c_str(),
|
||||
std::filesystem::is_directory(queue_dir, ec) ? 1 : 0);
|
||||
s_logged_queue_dir = true;
|
||||
}
|
||||
if (std::filesystem::is_directory(queue_dir, ec)) {
|
||||
// Reusamos el sqlite ya en memoria solo para parsear JSON via
|
||||
// json_extract (json1 esta enabled en el build). Sin WAL.
|
||||
|
||||
Reference in New Issue
Block a user