#pragma once #include #include // Registro estatico de enrichers (issue 0026). // // Al arrancar la app se escanea `/enrichers/*/manifest.yaml` y se // rellena el registro. El context menu del viewport consulta // `enrichers_for_type(type_ref)` para mostrar el submenu filtrado por tipo // del nodo right-clickado. // // Para v1 no parseamos `params` con detalle — solo lo necesario para // presentar el item de menu y submitear el job con `{}`. namespace ge { struct EnricherSpec { std::string id; // ej: "fetch_webpage" std::string name; // ej: "Fetch web page" std::string description; std::vector applies_to; // tipos validos (case-insensitive) std::string run_path; // path absoluto a run.py }; // Escanea el directorio. Reentrante (limpia el registro anterior). Devuelve // el numero de enrichers cargados, -1 si el dir no existe. int enrichers_load(const char* enrichers_dir); // Lista todos los enrichers cargados. const std::vector& enrichers_all(); // Filtra por tipo. Comparacion case-insensitive. Si applies_to es vacio en el // manifest, el enricher se considera global (aplica a cualquier tipo). std::vector enrichers_for_type(const char* type_ref); // Resuelve un enricher por id. Devuelve nullptr si no existe. const EnricherSpec* enricher_by_id(const char* id); } // namespace ge