#pragma once #include #include #include #include #include namespace dts { struct ProcessRequest { std::filesystem::path program; std::vector arguments; std::filesystem::path workingDirectory; std::chrono::milliseconds timeout{10000}; }; struct ProcessResult { bool started = false; bool timedOut = false; int exitCode = -1; std::string output; std::string error; }; class IProcessRunner { public: virtual ~IProcessRunner() = default; [[nodiscard]] virtual ProcessResult run(const ProcessRequest& request) const = 0; }; [[nodiscard]] std::unique_ptr createDefaultProcessRunner(); } // namespace dts