* Extract todo list from SDK messages (finds last TodoWrite tool use).
(log: SDKMessage[])
| 370 | * Extract todo list from SDK messages (finds last TodoWrite tool use). |
| 371 | */ |
| 372 | function extractTodoListFromLog(log: SDKMessage[]): TodoList { |
| 373 | const todoListMessage = log.findLast((msg): msg is SDKAssistantMessage => msg.type === 'assistant' && (msg as unknown as SDKMessageWithMessage).message.content.some(block => block.type === 'tool_use' && block.name === TodoWriteTool.name)); |
| 374 | if (!todoListMessage) { |
| 375 | return []; |
| 376 | } |
| 377 | const input = (todoListMessage as unknown as SDKMessageWithMessage).message.content.find(block => block.type === 'tool_use' && block.name === TodoWriteTool.name)?.input; |
| 378 | if (!input) { |
| 379 | return []; |
| 380 | } |
| 381 | const parsedInput = TodoWriteTool.inputSchema.safeParse(input); |
| 382 | if (!parsedInput.success) { |
| 383 | return []; |
| 384 | } |
| 385 | return parsedInput.data.todos; |
| 386 | } |
| 387 | |
| 388 | /** |
| 389 | * Register a remote agent task in the unified task framework. |