#pragma once #include #include #include #include #include "NodeContext.h" #include "NetworkManager.h" #include "ClusterManager.h" #include "ApiServer.h" #include "TaskManager.h" #include "services/Service.h" class Spore { public: Spore(); Spore(std::initializer_list> initialLabels); ~Spore(); // Core lifecycle methods void setup(); void begin(); void loop(); // Service management void addService(std::shared_ptr service); void addService(Service* service); // Access to core components NodeContext& getContext() { return ctx; } NetworkManager& getNetwork() { return network; } TaskManager& getTaskManager() { return taskManager; } ClusterManager& getCluster() { return cluster; } ApiServer& getApiServer() { return apiServer; } private: void initializeCore(); void registerCoreServices(); void startApiServer(); NodeContext ctx; NetworkManager network; TaskManager taskManager; ClusterManager cluster; ApiServer apiServer; std::vector> services; bool initialized; bool apiServerStarted; };