fix(chat): preserve midturn steer and session marker ordering (#1241)
This commit is contained in:
1 parent
8cd1ec5298
commit
22fe1290a5
12 files changed
+246
-9
No files matched your search
@@ -53,7 +53,12 @@ interface ChatMessageDao {
|
||||
suspend fun upsert(message: ChatMessageEntity) {
|
||||
val existing = getMessage(message.id)
|
||||
val restId = message.restId ?: existing?.restId
|
||||
val canonicalOrder = canonicalMessageOrder(restId ?: message.id, message.sessionId)
|
||||
val canonicalOrder =
|
||||
if (message.isSessionStartMarker()) {
|
||||
-1L
|
||||
} else {
|
||||
canonicalMessageOrder(restId ?: message.id, message.sessionId)
|
||||
}
|
||||
writeMessage(
|
||||
message.copy(
|
||||
restId = restId,
|
||||
|
||||
@@ -56,6 +56,9 @@ data class ChatMessageEntity(
|
||||
val sortOrder: Long = 0,
|
||||
)
|
||||
|
||||
internal fun ChatMessageEntity.isSessionStartMarker(): Boolean =
|
||||
role == "SYSTEM" && (content == "Session created" || content == "Session branched")
|
||||
|
||||
/** Only the exact session prefix and a nonnegative decimal suffix identify a canonical row. */
|
||||
internal fun canonicalMessageOrder(
|
||||
id: String,
|
||||
|
||||
@@ -39,7 +39,7 @@ fun ChatMessageEntity.toUiModel(): ChatMessage =
|
||||
tps = tps,
|
||||
completionId = completionId,
|
||||
restId = restId,
|
||||
localOrder = sortOrder.takeIf { sortGroup == 1 && it > 0 },
|
||||
localOrder = sortOrder.takeIf { sortGroup == 1 && it > 0 && !isSessionStartMarker() },
|
||||
)
|
||||
|
||||
fun ChatMessage.toEntity(sessionId: String): ChatMessageEntity =
|
||||
|
||||
Reference in new issue
Block a user