feat: handle status events to create assistant placeholder early
This commit is contained in:
@@ -332,6 +332,23 @@ export function GeminiChat() {
|
||||
})
|
||||
);
|
||||
|
||||
} else if (event.type === "status") {
|
||||
// status 事件:确保 assistant 消息占位符已存在(trace 面板早于 token 出现)
|
||||
setConversations((prev) =>
|
||||
prev.map((c) => {
|
||||
if (c.id !== streamConvId) return c;
|
||||
const exists = c.messages.some((m) => m.id === aiMsgId);
|
||||
if (exists) return c;
|
||||
return {
|
||||
...c,
|
||||
messages: [
|
||||
...c.messages,
|
||||
{ id: aiMsgId, role: "assistant" as const, content: "", timestamp: new Date(), traceItems: [] },
|
||||
],
|
||||
};
|
||||
})
|
||||
);
|
||||
|
||||
} else if (event.type === "tool_start" && event.tool) {
|
||||
const item: TraceItem = {
|
||||
id: event.call_id ?? `${event.tool}-${event.ts ?? Date.now()}`,
|
||||
@@ -447,6 +464,23 @@ export function GeminiChat() {
|
||||
};
|
||||
})
|
||||
);
|
||||
} else if (event.type === "status") {
|
||||
// status 事件:确保 assistant 消息占位符已存在(trace 面板早于 token 出现)
|
||||
setConversations((prev) =>
|
||||
prev.map((c) => {
|
||||
if (c.id !== regenConvId) return c;
|
||||
const exists = c.messages.some((m) => m.id === newAiMsgId);
|
||||
if (exists) return c;
|
||||
return {
|
||||
...c,
|
||||
messages: [
|
||||
...c.messages,
|
||||
{ id: newAiMsgId, role: "assistant" as const, content: "", timestamp: new Date(), traceItems: [] },
|
||||
],
|
||||
};
|
||||
})
|
||||
);
|
||||
|
||||
} else if (event.type === "tool_start" && event.tool) {
|
||||
const item: TraceItem = {
|
||||
id: event.call_id ?? `${event.tool}-${event.ts ?? Date.now()}`,
|
||||
|
||||
Reference in New Issue
Block a user