fix(messages-transform): narrow assistant-tail recovery trigger

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
This commit is contained in:
YeonGyu-Kim
2026-05-18 15:50:23 +09:00
parent 44ee5e6ae7
commit ca3ea0bbe2
+32
View File
@@ -28,6 +28,34 @@ function findLastUserMessage(messages: MessageWithParts[]): UserMessageInfo | un
return undefined
}
function findLastUserTurn(messages: MessageWithParts[]): MessageWithParts | undefined {
for (let index = messages.length - 1; index >= 0; index -= 1) {
const message = messages[index]
if (message?.info.role === "user") {
return message
}
}
return undefined
}
function isRecord(value: unknown): value is Record<string, unknown> {
return typeof value === "object" && value !== null
}
function isCompactionContinuationPart(part: unknown): boolean {
if (!isRecord(part)) {
return false
}
const metadata = part["metadata"]
return isRecord(metadata) && metadata["compaction_continue"] === true
}
function hasInternalContinuationTrigger(messages: MessageWithParts[]): boolean {
return findLastUserTurn(messages)?.parts.some(isCompactionContinuationPart) === true
}
function createAssistantPrefillRecoveryMessage(
lastAssistantMessage: MessageWithParts,
messages: MessageWithParts[],
@@ -70,6 +98,10 @@ function ensureUserTurnAfterAssistantTail(output: MessagesTransformOutput): void
return
}
if (!hasInternalContinuationTrigger(output.messages)) {
return
}
output.messages.push(createAssistantPrefillRecoveryMessage(lastMessage, output.messages))
}