#pragma once #include #include #include #include #include #include namespace frameyap { struct WorkerReply { uint64_t id; std::string text; std::string error; }; // Opens (rotating `previous`) an owner-private 0600 file in the FrameYap state // directory, or throws. Used only for opt-in advanced debugging. int open_private_debug_log(const char* name, const char* previous); class Worker { public: explicit Worker(std::chrono::milliseconds warmup_timeout = std::chrono::seconds(120), std::chrono::milliseconds request_timeout = std::chrono::seconds(60)); ~Worker(); Worker(const Worker&) = delete; Worker& operator=(const Worker&) = delete; void start(const std::string& python, const std::string& script, const std::string& model, int threads = 2, bool advanced_debug = false, const std::string& backend = {}, const std::string& manifest_dir = {}, const std::string& root = {}); bool ready() const; void submit(uint64_t id, const std::vector& pcm); std::optional poll(); void stop(); private: struct State; std::unique_ptr state_; }; } // namespace frameyap