Server-Sent Events(SSE)用戶端解析器

MCP 的 HTTP 傳輸會*發出* Server-Sent Events,但沒有任何東西消費它:一個串流 text/event-stream 的 LLM、agent 或 chatops 端點,會讓 http_request 拿到未經解析的原始 blob。本功能實作 WHATWG event-stream 解析演算法 —— event / data / id / retry 欄位、註解行、前導空白規則,以及 空白行派發 —— 並提供逐塊串流的增量 feed

純標準函式庫(re);不匯入 PySide6。解析器為純函式且完全具決定性,因此串流邏輯可在無線上伺服器 的情況下於 CI 測試。

無頭 API

from je_auto_control import parse_event_stream, SSEParser

# 解析完整回應內文:
for event in parse_event_stream(response_text):
    handle(event.event, event.data, event.id)

# 或在資料塊抵達時逐塊解析:
parser = SSEParser()
for chunk in stream:
    for event in parser.feed(chunk):
        handle(event)
for event in parser.close():           # 沖出尾端事件
    handle(event)

SSEEvent 是派發出的 (event, data, id, retry) 組合(event 預設 "message")。 SSEParser.feed 在多次呼叫間緩衝尾端不完整的行,並回傳每個由空白行完成的事件;``close`` 會在串流 未以空白行結尾時沖出最後一個事件。idretry 依規範在後續事件間延續。parse_event_stream 是處理完整 blob 的一次性輔助函式,並會沖出尾端事件。

執行器命令

AC_parse_ssetext blob 解析成 {events}``(每筆 ``{event, data, id, retry})。它以 MCP 工具 ac_parse_sse 以及 Script Builder 中 Data 分類下的命令提供。