fix(workbench): persist admitted turn messages (#1983)
Co-authored-by: root <root@lyon.remote>
This commit is contained in:
@@ -280,7 +280,7 @@ function buildWorkbenchProjectionFacts({ traceId = null, ownerUserId = null, own
|
||||
const timing = projectionTimingForStatus(projection.timing, terminal);
|
||||
const diagnostic = projectionDiagnostics({ traceId: safeId, result: payload, trace: payload?.runnerTrace ?? null, projection });
|
||||
const finalText = finalResponseTextValue(projection.finalResponse, payload?.finalResponse, session?.finalResponse, payload?.assistantText);
|
||||
const messages = normalizeMessages(session?.messages, {
|
||||
const messages = normalizeMessages(workbenchProjectionInputMessages({ session, payload, params, traceId: safeId, timestamp, terminal, terminalStatus, finalText }), {
|
||||
traceId: safeId,
|
||||
sessionId: resolvedSessionId,
|
||||
conversationId: resolvedConversationId,
|
||||
@@ -377,6 +377,48 @@ function buildWorkbenchProjectionFacts({ traceId = null, ownerUserId = null, own
|
||||
};
|
||||
}
|
||||
|
||||
function workbenchProjectionInputMessages({ session = {}, payload = {}, params = {}, traceId = null, timestamp = null, terminal = false, terminalStatus = "completed", finalText = null } = {}) {
|
||||
if (Array.isArray(session?.messages) && session.messages.length > 0) return session.messages;
|
||||
if (Array.isArray(payload?.messages) && payload.messages.length > 0) return payload.messages;
|
||||
if (!traceId) return [];
|
||||
const turnId = textValue(payload?.turnId) || traceId;
|
||||
const userText = textValue(params?.message ?? params?.prompt ?? payload?.prompt ?? payload?.message);
|
||||
const userMessageId = textValue(payload?.userMessageId ?? payload?.userMessage?.messageId) || stableFactId("msg", { traceId, role: "user" });
|
||||
const assistantMessageId = textValue(payload?.assistantMessageId ?? payload?.messageId ?? payload?.assistantMessage?.messageId) || stableFactId("msg", { traceId, role: "agent" });
|
||||
const createdAt = timestampValue(timestamp ?? payload?.createdAt ?? payload?.updatedAt);
|
||||
const messages = [];
|
||||
if (userText) {
|
||||
messages.push({
|
||||
messageId: userMessageId,
|
||||
role: "user",
|
||||
status: "sent",
|
||||
text: userText,
|
||||
traceId,
|
||||
turnId,
|
||||
createdAt,
|
||||
updatedAt: createdAt,
|
||||
valuesPrinted: false
|
||||
});
|
||||
}
|
||||
messages.push({
|
||||
messageId: assistantMessageId,
|
||||
role: "agent",
|
||||
status: terminal ? terminalStatus : "running",
|
||||
text: terminal && finalText ? finalText : "",
|
||||
traceId,
|
||||
turnId,
|
||||
timing: payload?.timing,
|
||||
startedAt: payload?.startedAt,
|
||||
lastEventAt: payload?.lastEventAt,
|
||||
finishedAt: payload?.finishedAt,
|
||||
durationMs: payload?.durationMs,
|
||||
createdAt,
|
||||
updatedAt: createdAt,
|
||||
valuesPrinted: false
|
||||
});
|
||||
return messages;
|
||||
}
|
||||
|
||||
function normalizeMessages(messages, context) {
|
||||
const normalized = Array.isArray(messages) ? messages.map((message, index) => normalizeMessageFact(message, index, context)).filter(Boolean) : [];
|
||||
if (context?.terminal && context?.finalText && context?.traceId && !normalized.some((message) => message.role !== "user" && message.traceId === context.traceId)) {
|
||||
|
||||
Reference in New Issue
Block a user