fix: address Cubic round-4 P2 issues

- isTodo: allow optional id to match Todo interface, preventing
  todos without ids from being silently dropped
- messageHasContentFromSDK: treat unknown part types as empty
  (continue) instead of content (return true) for parity with
  existing storage logic
- readMessagesFromSDK in recover-empty-content-message-sdk: wrap
  SDK call in try/catch to prevent recovery from throwing
This commit is contained in:
YeonGyu-Kim
2026-02-16 00:45:07 +09:00
parent 557340af68
commit 8d82025b70
3 changed files with 8 additions and 4 deletions

View File

@@ -4,7 +4,7 @@ function isTodo(value: unknown): value is Todo {
if (typeof value !== "object" || value === null) return false
const todo = value as Record<string, unknown>
return (
typeof todo["id"] === "string" &&
(typeof todo["id"] === "string" || todo["id"] === undefined) &&
typeof todo["content"] === "string" &&
typeof todo["status"] === "string" &&
typeof todo["priority"] === "string"

View File

@@ -32,7 +32,7 @@ function messageHasContentFromSDK(message: SDKMessage): boolean {
if (TOOL_TYPES.has(type)) return true
return true
continue
}
return false

View File

@@ -133,8 +133,12 @@ function sdkMessageHasContent(message: MessageData): boolean {
}
async function readMessagesFromSDK(client: Client, sessionID: string): Promise<MessageData[]> {
const response = await client.session.messages({ path: { id: sessionID } })
return (response.data ?? []) as MessageData[]
try {
const response = await client.session.messages({ path: { id: sessionID } })
return (response.data ?? []) as MessageData[]
} catch {
return []
}
}
function findMessagesWithThinkingOnlyFromSDK(messages: MessageData[]): string[] {