---
name: claude_tui_parse
lang: go
domain: tui
version: "1.0.0"
algebraic: product
definition: |
  type ClaudeTUIParse struct {
      Turns  []ClaudeTurn `json:"turns"`
      Answer string       `json:"answer"`
  }
description: "Resultado del parseo de una pantalla capturada de la TUI de Claude Code. Turns contiene todos los bloques de conversación visibles en orden (user, assistant, tool_use, tool_result). Answer es la concatenación de los bloques assistant que siguen al último turno user — equivalente al output de `claude -p`."
tags: [terminal-capture, claude, tui, conversation]
uses_types:
  - claude_turn_go_tui
file_path: "functions/tui/parse_claude_tui.go"
---

## Notas

`Answer` se calcula así:
1. Localizar el último turno con `Role == user`.
2. Concatenar con `\n` el `Text` de todos los turnos `assistant` (no `tool_use`, no `tool_result`) que aparecen después.
3. Si no hay ningún turno `user`, concatenar todos los `assistant`.
4. Hacer trim del resultado.

Este valor es el equivalente programático de lo que imprime `claude -p` cuando la respuesta termina. Es vacío si la pantalla capturada no contiene respuesta del asistente (por ejemplo, captura prematura durante el streaming).
