(rawMessages: Array<Record<string, unknown>>)
| 403 | } |
| 404 | |
| 405 | function extractClaudePlanText(rawMessages: Array<Record<string, unknown>>): string | null { |
| 406 | for (let index = rawMessages.length - 1; index >= 0; index--) { |
| 407 | const message = rawMessages[index].message as Record<string, unknown> |
| 408 | if (message.type === "result" && typeof message.result === "string" && message.result.length > 0) return message.result |
| 409 | } |
| 410 | for (let index = rawMessages.length - 1; index >= 0; index--) { |
| 411 | const message = rawMessages[index].message as Record<string, unknown> |
| 412 | if (message.type !== "assistant") continue |
| 413 | const nested = typeof message.message === "object" && message.message !== null ? (message.message as Record<string, unknown>) : {} |
| 414 | const content = Array.isArray(nested.content) ? nested.content : [] |
| 415 | const textParts = content |
| 416 | .filter((block): block is Record<string, unknown> => typeof block === "object" && block !== null) |
| 417 | .filter((block) => block.type === "text" && typeof block.text === "string") |
| 418 | .map((block) => block.text as string) |
| 419 | if (textParts.length > 0) return textParts.join("\n") |
| 420 | } |
| 421 | return null |
| 422 | } |
| 423 | |
| 424 | function extractCodexPlanText(rawMessages: Array<Record<string, unknown>>): string | null { |
| 425 | const textParts: string[] = [] |
no outgoing calls
no test coverage detected