fix: seal workbench final response from terminal trace

This commit is contained in:
lyon
2026-06-20 00:11:35 +08:00
parent d46d2216cb
commit c3ca0f869e
6 changed files with 316 additions and 17 deletions
@@ -78,6 +78,15 @@ const markdownFinalText = [
"|---|---|",
"| local | pass |"
].join("\n");
const terminalAssistantFinalText = [
"全部六份数据到手!下面是完整的六语言终极性能对比:",
"",
"| language | runtime | status |",
"|---|---|---|",
"| Lua | LuaJIT | pass |",
"| Python | CPython | pass |",
"| Rust | native | pass |"
].join("\n");
let state = createScenarioState("baseline");
const sseClients = new Set<ServerResponse>();
@@ -383,6 +392,10 @@ function createScenarioState(scenarioId: string): ScenarioState {
sessions.unshift(markdownFinalSession());
traces.trc_markdown_final = markdownFinalTrace();
}
if (id === "terminal-assistant-event-final-response") {
sessions.unshift(terminalAssistantFinalSession());
traces.trc_terminal_assistant_final = terminalAssistantFinalTrace();
}
if (id === "progress-only-final-response") markRunningProgressOnly(sessions, traces);
if (id === "terminal-completed-no-final-response") markRunningNoFinalResponse(sessions, traces);
if (id === "tool-completed-projection-running") markToolCompletedProjectionRunning(sessions, traces);
@@ -431,6 +444,8 @@ function createScenarioState(scenarioId: string): ScenarioState {
? "ses_terminal_empty"
: id === "markdown-final-response"
? "ses_markdown_final"
: id === "terminal-assistant-event-final-response"
? "ses_terminal_assistant_final"
: id === "progress-only-final-response" || id === "terminal-completed-no-final-response" || id === "tool-completed-projection-running"
? "ses_running"
: id === "projector-resume-from-checkpoint"
@@ -972,6 +987,47 @@ function markdownFinalTrace(): JsonRecord {
};
}
function terminalAssistantFinalSession(): SessionRecord {
const now = new Date().toISOString();
const trace = terminalAssistantFinalTrace();
return {
sessionId: "ses_terminal_assistant_final",
conversationId: "cnv_terminal_assistant_final",
threadId: "thr_terminal_assistant_final",
status: "completed",
lastTraceId: "trc_terminal_assistant_final",
startedAt: now,
updatedAt: now,
messageCount: 2,
firstUserMessagePreview: "再把lua加入对比测试",
messages: [
{ id: "msg_terminal_assistant_user", messageId: "msg_terminal_assistant_user", role: "user", title: "用户", text: "再把lua加入对比测试", status: "sent", createdAt: now, sessionId: "ses_terminal_assistant_final", threadId: "thr_terminal_assistant_final", traceId: "trc_terminal_assistant_final", turnId: "trc_terminal_assistant_final" },
{ id: "msg_terminal_assistant_agent", messageId: "msg_terminal_assistant_agent", role: "agent", title: "Code Agent", text: terminalAssistantFinalText, parts: [{ type: "text", text: terminalAssistantFinalText, status: "completed" }], status: "completed", createdAt: now, updatedAt: now, sessionId: "ses_terminal_assistant_final", threadId: "thr_terminal_assistant_final", traceId: "trc_terminal_assistant_final", turnId: "trc_terminal_assistant_final", runnerTrace: trace, finalResponse: { text: terminalAssistantFinalText, status: "completed" } }
]
};
}
function terminalAssistantFinalTrace(): JsonRecord {
const createdAt = new Date().toISOString();
const events = [
{ seq: 1, sourceSeq: 21, createdAt, label: "agentrun:assistant:message", type: "assistant_message", status: "running", replyAuthority: false, final: false, terminal: false, message: "现在写 Lua 基准测试脚本。" },
{ seq: 2, sourceSeq: 28, createdAt, label: "agentrun:assistant:message", type: "assistant_message", status: "completed", replyAuthority: true, final: true, terminal: true, message: terminalAssistantFinalText },
{ seq: 3, sourceSeq: 29, createdAt, label: "agentrun:terminal:completed", type: "result", status: "completed", terminal: true, message: "AgentRun command completed." }
];
return {
traceId: "trc_terminal_assistant_final",
status: "completed",
sessionId: "ses_terminal_assistant_final",
threadId: "thr_terminal_assistant_final",
events,
eventCount: events.length,
fullTraceLoaded: true,
hasMore: false,
assistantText: terminalAssistantFinalText,
finalResponse: { text: terminalAssistantFinalText, status: "completed" }
};
}
function manyRailSession(index: number): SessionRecord {
const id = String(index).padStart(2, "0");
const now = new Date(Date.now() - (index + 1) * 1000).toISOString();