增加流式信息中断处理机制
This commit is contained in:
@@ -1,4 +1,9 @@
|
||||
import { abortAgentChat, forkAgentChat, streamAgentChat } from "./chatStream";
|
||||
import {
|
||||
abortAgentChat,
|
||||
forkAgentChat,
|
||||
resumeAgentChatStream,
|
||||
streamAgentChat,
|
||||
} from "./chatStream";
|
||||
import { ReadableStream } from "stream/web";
|
||||
import { TextEncoder, TextDecoder } from "util";
|
||||
|
||||
@@ -76,6 +81,51 @@ describe("streamAgentChat", () => {
|
||||
]);
|
||||
});
|
||||
|
||||
it("parses state events from a resumed stream", async () => {
|
||||
apiFetch.mockResolvedValue({
|
||||
ok: true,
|
||||
body: makeStream([
|
||||
'event: state\ndata: {"session_id":"s1","messages":[{"id":"a1","role":"assistant","content":"已输出"}],"is_streaming":true,"run_status":"running"}\n\n',
|
||||
'event: token\ndata: {"session_id":"s1","content":"继续"}\n\n',
|
||||
'event: done\ndata: {"session_id":"s1"}\n\n',
|
||||
]),
|
||||
});
|
||||
|
||||
const events: Array<{
|
||||
type: string;
|
||||
sessionId?: string;
|
||||
messages?: unknown[];
|
||||
isStreaming?: boolean;
|
||||
runStatus?: string;
|
||||
content?: string;
|
||||
}> = [];
|
||||
|
||||
await resumeAgentChatStream({
|
||||
sessionId: "s1",
|
||||
onEvent: (event) => events.push(event),
|
||||
});
|
||||
|
||||
expect(apiFetch).toHaveBeenCalledWith(
|
||||
expect.stringContaining("/api/v1/agent/chat/session/s1/stream"),
|
||||
expect.objectContaining({
|
||||
method: "GET",
|
||||
projectHeaderMode: "include",
|
||||
skipAuthRedirect: true,
|
||||
}),
|
||||
);
|
||||
expect(events).toEqual([
|
||||
{
|
||||
type: "state",
|
||||
sessionId: "s1",
|
||||
messages: [{ id: "a1", role: "assistant", content: "已输出" }],
|
||||
isStreaming: true,
|
||||
runStatus: "running",
|
||||
},
|
||||
{ type: "token", sessionId: "s1", content: "继续" },
|
||||
{ type: "done", sessionId: "s1" },
|
||||
]);
|
||||
});
|
||||
|
||||
it("parses progress events", async () => {
|
||||
apiFetch.mockResolvedValue({
|
||||
ok: true,
|
||||
|
||||
Reference in New Issue
Block a user