Saltar al contenido principal

Referencia de componentes

Todos los componentes sin estilo (headless) de @agentskit/react y @agentskit/ink. Los componentes emiten atributos data-ak-* (React) o usan primitivas de terminal de Ink (Ink) — no imponen un estilo visual concreto.

Componentes de React

Importa desde @agentskit/react:

import {
ChatContainer,
Message,
InputBar,
Markdown,
CodeBlock,
ToolCallView,
ThinkingIndicator,
} from '@agentskit/react'

ChatContainer

Contenedor con scroll. Conecta un MutationObserver y hace scroll automático al fondo cuando cambian los hijos.

<ChatContainer className="my-chat">
{/* messages, indicators */}
</ChatContainer>
PropTipoPor defectoDescripción
childrenReactNodeObligatorio. Lista de mensajes y otro contenido.
classNamestringClase CSS adicional.

Emite: data-ak-chat-container


Message

Renderiza un único objeto Message de chat.messages.

<Message
message={msg}
avatar={<img src={userAvatar} alt="User" />}
actions={<button onClick={() => copy(msg.content)}>Copy</button>}
/>
PropTipoDescripción
messageMessageTypeObligatorio. Mensaje a mostrar.
avatarReactNodeAvatar opcional junto a la burbuja.
actionsReactNodeFila de acciones opcional bajo el contenido.

Emite: data-ak-message, data-ak-role, data-ak-status, data-ak-content, data-ak-avatar, data-ak-actions


InputBar

Textarea + botón de envío conectados a un objeto ChatReturn. Envía con Enter, inserta salto de línea con Shift+Enter.

<InputBar
chat={chat}
placeholder="Ask anything..."
disabled={false}
/>
PropTipoPor defectoDescripción
chatChatReturnObligatorio. Valor devuelto por useChat.
placeholderstring'Type a message...'Placeholder del textarea.
disabledbooleanfalseDesactiva entrada y botón.

Emite: data-ak-input-bar, data-ak-input, data-ak-send


Markdown

Envoltorio ligero para contenido Markdown. Añade tu propio renderizador (p. ej. react-markdown) dentro o sustituye el componente por completo.

<Markdown content={msg.content} streaming={msg.status === 'streaming'} />
PropTipoPor defectoDescripción
contentstringObligatorio. Cadena Markdown a mostrar.
streamingbooleanfalseAñade data-ak-streaming="true" mientras hay streaming.

Emite: data-ak-markdown, data-ak-streaming


CodeBlock

Muestra un fragmento de código con botón de copiar opcional.

<CodeBlock code="npm install @agentskit/react" language="bash" copyable />
PropTipoPor defectoDescripción
codestringObligatorio. Código fuente a mostrar.
languagestringPista de lenguaje (p. ej. 'tsx', 'bash').
copyablebooleanfalseMuestra un botón Copiar que escribe en el portapapeles.

Emite: data-ak-code-block, data-ak-language, data-ak-copy


ToolCallView

Vista expandible para una sola llamada a herramienta. Al hacer clic en el nombre de la herramienta se alterna la visibilidad de argumentos y resultado.

{msg.toolCalls?.map(tc => (
<ToolCallView key={tc.id} toolCall={tc} />
))}
PropTipoDescripción
toolCallToolCallObligatorio. Objeto de llamada a herramienta de @agentskit/core.

Emite: data-ak-tool-call, data-ak-tool-status, data-ak-tool-toggle, data-ak-tool-details, data-ak-tool-args, data-ak-tool-result


ThinkingIndicator

Tres puntos animados con una etiqueta. No renderiza nada cuando visible es false.

<ThinkingIndicator visible={chat.status === 'streaming'} label="Thinking..." />
PropTipoPor defectoDescripción
visiblebooleanObligatorio. Mostrar u ocultar el indicador.
labelstring'Thinking...'Etiqueta accesible junto a los puntos.

Emite: data-ak-thinking, data-ak-thinking-dots, data-ak-thinking-label


Componentes de Ink

Importa desde @agentskit/ink:

import {
ChatContainer,
Message,
InputBar,
ToolCallView,
ThinkingIndicator,
} from '@agentskit/ink'

ChatContainer (Ink)

Envuelve los hijos en un <Box flexDirection="column" gap={1}> de Ink.

<ChatContainer>
{chat.messages.map(msg => <Message key={msg.id} message={msg} />)}
</ChatContainer>
PropTipoDescripción
childrenReactNodeObligatorio.

Message (Ink)

Renderiza la etiqueta del rol con un color de terminal según el rol y, debajo, el contenido del mensaje.

<Message message={msg} />
PropTipoDescripción
messageMessageTypeObligatorio.

Colores por rol: assistant → cyan, user → green, system → yellow, tool → magenta.


InputBar (Ink)

Captura el teclado con useInput de Ink. Envía con Enter, borra con Backspace/Delete. Deshabilitado mientras hay streaming.

<InputBar chat={chat} placeholder="Type and press Enter..." />
PropTipoPor defectoDescripción
chatChatReturnObligatorio.
placeholderstring'Type a message...'Se muestra encima de la línea de entrada.
disabledbooleanfalseImpide la entrada.

ToolCallView (Ink)

Dibuja un recuadro con borde redondeado con el nombre de la herramienta, el estado y, opcionalmente, los argumentos y el resultado.

<ToolCallView toolCall={tc} expanded />
PropTipoPor defectoDescripción
toolCallToolCallObligatorio.
expandedbooleanfalseMuestra args y resultado en línea.

ThinkingIndicator (Ink)

Texto amarillo en una sola línea. No renderiza nada cuando visible es false.

<ThinkingIndicator visible={chat.status === 'streaming'} label="Thinking..." />
PropTipoPor defectoDescripción
visiblebooleanObligatorio.
labelstring'Thinking...'Texto a mostrar.

Disponibilidad de componentes

Componente@agentskit/react@agentskit/ink
ChatContainer
Message
InputBar
ToolCallView
ThinkingIndicator
MarkdownNo
CodeBlockNo

Relacionado