fix(workbench): apply admission timing without id changes (#1969)

This commit is contained in:
Lyon
2026-06-23 13:58:19 +08:00
committed by GitHub
parent 0411e7efc7
commit 949b11dea8
+10 -2
View File
@@ -1419,13 +1419,21 @@ function nonBlockingProjection(projection: ProjectionDiagnostic | null): Project
const userMessageId = firstNonEmptyString(lifecycle.userMessageId);
const assistantMessageId = firstNonEmptyString(lifecycle.assistantMessageId);
const admissionTiming = optimisticAdmissionTimingPatch(lifecycle);
if (!turnId && !userMessageId && !assistantMessageId && canonicalTraceId === traceId) return canonicalTraceId;
const hasAdmissionTiming = Boolean(admissionTiming.timing?.startedAt || admissionTiming.timing?.lastEventAt);
if (!turnId && !userMessageId && !assistantMessageId && !hasAdmissionTiming && canonicalTraceId === traceId) return canonicalTraceId;
updateActiveMessages((source) => source.map((message) => {
if (message.traceId !== traceId) return message;
const runnerTrace = message.runnerTrace ? { ...message.runnerTrace, traceId: canonicalTraceId } : message.runnerTrace;
const base = { ...message, traceId: canonicalTraceId, runnerTrace, updatedAt: new Date().toISOString() };
if (message.role === "user" && userMessageId) return { ...base, id: userMessageId, messageId: userMessageId, turnId };
if (message.role === "agent" && assistantMessageId) return { ...base, ...admissionTiming, id: assistantMessageId, messageId: assistantMessageId, turnId };
if (message.role === "agent") {
const next = { ...base, ...admissionTiming };
return {
...next,
...(assistantMessageId ? { id: assistantMessageId, messageId: assistantMessageId } : {}),
...(turnId ? { turnId } : {})
};
}
return turnId ? { ...base, turnId } : base;
}));
return canonicalTraceId;