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) {
|
} else if (event.type === "tool_start" && event.tool) {
|
||||||
const item: TraceItem = {
|
const item: TraceItem = {
|
||||||
id: event.call_id ?? `${event.tool}-${event.ts ?? Date.now()}`,
|
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) {
|
} else if (event.type === "tool_start" && event.tool) {
|
||||||
const item: TraceItem = {
|
const item: TraceItem = {
|
||||||
id: event.call_id ?? `${event.tool}-${event.ts ?? Date.now()}`,
|
id: event.call_id ?? `${event.tool}-${event.ts ?? Date.now()}`,
|
||||||
|
|||||||
Reference in New Issue
Block a user