Fix runtime guidance transcript replay
This commit is contained in:
@@ -49,6 +49,7 @@ type ClawSession = {
|
||||
type ClawStoredMessage = {
|
||||
role?: string;
|
||||
content?: string;
|
||||
message_id?: string;
|
||||
name?: string;
|
||||
tool_call_id?: string;
|
||||
tool_calls?: ClawStoredToolCall[];
|
||||
@@ -801,7 +802,7 @@ export function toReplayRepository(
|
||||
: [];
|
||||
if (!content && !toolParts.length) continue;
|
||||
if (content.trimStart().startsWith("<system-reminder>")) continue;
|
||||
const id = `${fallbackSessionId}-${index}`;
|
||||
const id = replayMessageId(fallbackSessionId, message, index);
|
||||
const shouldShowAssistantText =
|
||||
message.role !== "assistant" ||
|
||||
!toolParts.length ||
|
||||
@@ -1185,6 +1186,18 @@ function isRunStatusMessage(message?: ClawStoredMessage) {
|
||||
return message?.metadata?.kind === "run_status";
|
||||
}
|
||||
|
||||
function replayMessageId(
|
||||
sessionId: string,
|
||||
message: ClawStoredMessage,
|
||||
index: number,
|
||||
) {
|
||||
const stableId =
|
||||
typeof message.message_id === "string" && message.message_id.trim()
|
||||
? message.message_id.trim()
|
||||
: String(index);
|
||||
return `${sessionId}-${stableId}`;
|
||||
}
|
||||
|
||||
function resolvePendingPrompt(
|
||||
messages: readonly ClawStoredMessage[],
|
||||
runStatus?: ClawRunStatus | null,
|
||||
@@ -1194,16 +1207,12 @@ function resolvePendingPrompt(
|
||||
? runStatus.pending_prompt.trim()
|
||||
: "";
|
||||
if (!pendingPrompt) return null;
|
||||
for (let index = messages.length - 1; index >= 0; index -= 1) {
|
||||
const message = messages[index];
|
||||
if (!message || message.role === "system" || message.role === "tool")
|
||||
continue;
|
||||
for (const message of messages) {
|
||||
if (!message || message.role !== "user") continue;
|
||||
const content = cleanStoredContent(message.content ?? "").trim();
|
||||
if (!content || content.trimStart().startsWith("<system-reminder>"))
|
||||
continue;
|
||||
return message.role === "user" && content === pendingPrompt
|
||||
? null
|
||||
: pendingPrompt;
|
||||
if (content === pendingPrompt) return null;
|
||||
}
|
||||
return pendingPrompt;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user