feat(kernel): complete tree-first graph tasks 074-080

This commit is contained in:
lix-2026
2026-04-16 22:01:51 +08:00
parent 2ff10fa86c
commit b1d5d97142
65 changed files with 11579 additions and 4606 deletions
+54
View File
@@ -0,0 +1,54 @@
use crate::context::RequestContext;
use axum::extract::ws::{Message, WebSocket, WebSocketUpgrade};
use axum::extract::Extension;
use axum::response::Response;
use futures_util::StreamExt;
use serde_json::json;
pub async fn socket(
ws: WebSocketUpgrade,
Extension(context): Extension<RequestContext>,
) -> Response {
ws.on_upgrade(move |socket| handle_socket(socket, context))
}
async fn handle_socket(mut socket: WebSocket, context: RequestContext) {
let payload = json!({
"kind": "ws_placeholder",
"requestId": context.trace.request_id,
"traceId": context.trace.trace_id,
"workspaceId": context.workspace.workspace_id,
"notes": [
"当前为 task-062 最小骨架,后续可承接协作推送和运行态事件。"
]
});
let _ = socket
.send(Message::Text(payload.to_string().into()))
.await;
while let Some(message) = socket.next().await {
let Ok(message) = message else {
break;
};
match message {
Message::Text(text) => {
let echo = json!({
"kind": "ws_echo",
"traceId": context.trace.trace_id,
"text": text.to_string(),
});
if socket
.send(Message::Text(echo.to_string().into()))
.await
.is_err()
{
break;
}
}
Message::Close(_) => break,
_ => {}
}
}
}