#pragma once #include #include struct Collector { std::string id; // basename del directorio (ej. "api_hn_top") std::string name; // del manifest (fallback id) std::string description; // del manifest std::string dir; // path absoluto al directorio del collector std::string run_py; // path absoluto al run.py bool has_run = false; }; // Enumera /*/manifest.yaml + run.py. // Parsing manifest minimo: solo lee `id`, `name:`, `description:` por linea (sin yaml-cpp). bool collectors_discover(const std::string& collectors_root, std::vector& out);