---
name: claude_turn
lang: go
domain: tui
version: "1.0.0"
algebraic: product
definition: |
  type ClaudeTurnRole string

  const (
      ClaudeTurnUser       ClaudeTurnRole = "user"
      ClaudeTurnAssistant  ClaudeTurnRole = "assistant"
      ClaudeTurnToolUse    ClaudeTurnRole = "tool_use"
      ClaudeTurnToolResult ClaudeTurnRole = "tool_result"
  )

  type ClaudeTurn struct {
      Role     ClaudeTurnRole `json:"role"`
      Text     string         `json:"text"`
      ToolName string         `json:"tool_name,omitempty"`
  }
description: "Un bloque de la conversación extraído de la pantalla renderizada de la TUI de Claude Code. El campo Role clasifica el tipo de turno; Text contiene el contenido textual (multilinea unido con \\n); ToolName solo se rellena cuando Role == tool_use."
tags: [terminal-capture, claude, tui, conversation]
uses_types: []
file_path: "functions/tui/parse_claude_tui.go"
---

## Notas

`ClaudeTurnRole` es un string enum con cuatro valores:
- `user` — mensaje escrito por el usuario (línea que empieza con `❯`).
- `assistant` — bloque de texto de respuesta del asistente (línea que empieza con `●` y no es una llamada a herramienta).
- `tool_use` — llamada a herramienta `● ToolName(args)`. `ToolName` contiene el identificador de la herramienta.
- `tool_result` — resultado de herramienta `⎿ ...`. Asociado al `tool_use` inmediatamente anterior.

El tipo vive en `functions/tui/parse_claude_tui.go` junto al resto de la función, en el mismo paquete `tui`.
