fix(recovery): detect empty text parts alongside tool calls in fixEmptyMessages (fixes #2830)
This commit is contained in:
@@ -1,4 +1,4 @@
|
|||||||
import { replaceEmptyTextPartsAsync } from "../session-recovery/storage/empty-text"
|
import { replaceEmptyTextPartsAsync, findMessagesWithEmptyTextPartsFromSDK } from "../session-recovery/storage/empty-text"
|
||||||
import { injectTextPartAsync } from "../session-recovery/storage/text-part-injector"
|
import { injectTextPartAsync } from "../session-recovery/storage/text-part-injector"
|
||||||
import type { Client } from "./client"
|
import type { Client } from "./client"
|
||||||
|
|
||||||
@@ -157,11 +157,19 @@ export async function fixEmptyMessagesWithSDK(params: {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const emptyMessageIds = await findEmptyMessagesFromSDK(params.client, params.sessionID)
|
const emptyMessageIds = await findEmptyMessagesFromSDK(params.client, params.sessionID)
|
||||||
if (emptyMessageIds.length === 0) {
|
|
||||||
|
// Also find messages with empty text parts alongside non-empty content (e.g., tool calls).
|
||||||
|
// messageHasContentFromSDK returns true for these since they have tool parts,
|
||||||
|
// but the API still rejects the empty text block.
|
||||||
|
const emptyTextPartIds = await findMessagesWithEmptyTextPartsFromSDK(params.client, params.sessionID)
|
||||||
|
const additionalIds = emptyTextPartIds.filter((id) => !emptyMessageIds.includes(id))
|
||||||
|
const allTargetIds = [...emptyMessageIds, ...additionalIds]
|
||||||
|
|
||||||
|
if (allTargetIds.length === 0) {
|
||||||
return { fixed: false, fixedMessageIds: [], scannedEmptyCount: 0 }
|
return { fixed: false, fixedMessageIds: [], scannedEmptyCount: 0 }
|
||||||
}
|
}
|
||||||
|
|
||||||
for (const messageID of emptyMessageIds) {
|
for (const messageID of allTargetIds) {
|
||||||
const replaced = await replaceEmptyTextPartsAsync(
|
const replaced = await replaceEmptyTextPartsAsync(
|
||||||
params.client,
|
params.client,
|
||||||
params.sessionID,
|
params.sessionID,
|
||||||
@@ -187,5 +195,5 @@ export async function fixEmptyMessagesWithSDK(params: {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return { fixed, fixedMessageIds, scannedEmptyCount: emptyMessageIds.length }
|
return { fixed, fixedMessageIds, scannedEmptyCount: allTargetIds.length }
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user