feat(kernel): complete tree-first graph tasks 074-080
This commit is contained in:
@@ -0,0 +1,33 @@
|
||||
use crate::context::RequestContext;
|
||||
use axum::extract::Extension;
|
||||
use axum::response::sse::{Event, KeepAlive, Sse};
|
||||
use futures_util::stream;
|
||||
use serde_json::json;
|
||||
use std::convert::Infallible;
|
||||
use std::time::Duration;
|
||||
|
||||
pub async fn events(
|
||||
Extension(context): Extension<RequestContext>,
|
||||
) -> Sse<impl futures_util::Stream<Item = Result<Event, Infallible>>> {
|
||||
let payload = json!({
|
||||
"kind": "sse_placeholder",
|
||||
"requestId": context.trace.request_id,
|
||||
"traceId": context.trace.trace_id,
|
||||
"workspaceId": context.workspace.workspace_id,
|
||||
"notes": [
|
||||
"当前为 task-062 最小骨架,后续在此对齐统一流式输出协议。",
|
||||
"此路由预留给 Hermes token/tool/client event 回流。"
|
||||
]
|
||||
});
|
||||
|
||||
let event = Event::default()
|
||||
.event("ready")
|
||||
.json_data(payload)
|
||||
.expect("SSE 占位事件必须可序列化");
|
||||
|
||||
Sse::new(stream::iter(vec![Ok(event)])).keep_alive(
|
||||
KeepAlive::new()
|
||||
.interval(Duration::from_secs(15))
|
||||
.text("keepalive"),
|
||||
)
|
||||
}
|
||||
Reference in New Issue
Block a user