18#include <condition_variable>
26namespace httplib {
class Client; }
63 void close()
override;
86 std::string sse_path_;
87 std::string message_endpoint_;
90 std::unique_ptr<httplib::Client> client_;
91 std::atomic<bool> connected_{
false};
92 std::atomic<bool> running_{
false};
93 std::thread sse_reader_thread_;
95 std::mutex pending_mutex_;
96 std::condition_variable pending_cv_;
97 std::map<int, std::string> pending_responses_;
98 std::atomic<int> next_request_id_{1};
113 void warn_if_cleartext()
const;
123 static bool parse_request_id(
150 void sse_reader_loop();
158 void handle_sse_data(
const std::string& data);
166 void handle_endpoint_event(
const std::string& data);
174 void process_sse_line(
const std::string&
line);
176 std::string current_event_type_;
SSE transport: HTTP GET for event stream, POST for requests.
void close() override
Stop SSE reader and close HTTP client.
bool is_connected() const override
Check if SSE stream is connected.
std::string send_request(const std::string &request_json, uint32_t timeout_ms=0) override
POST a JSON-RPC request and wait for matching response.
bool open() override
Connect to SSE endpoint and start reader thread.
~SSETransport() override
Destructor — ensures reader thread is stopped.
Abstract transport for external MCP communication.
Activate model on GPU (WARM → ACTIVE).
@ optional
optional: every escape asks the host's path approver
Abstract transport for external MCP server communication.