Pular para o conteúdo principal

Referência de componentes

Todos os componentes headless em @agentskit/react e @agentskit/ink. Os componentes emitem atributos data-ak-* (React) ou usam primitivas de terminal do Ink (Ink) — não impõem estilo visual.

Componentes React

Importe de @agentskit/react:

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

ChatContainer

Wrapper rolável. Anexa um MutationObserver e rola automaticamente para o fim quando os filhos mudam.

<ChatContainer className="my-chat">
{/* messages, indicators */}
</ChatContainer>
PropTipoPadrãoDescrição
childrenReactNodeObrigatório. Lista de mensagens e outro conteúdo.
classNamestringClasse CSS extra.

Emite: data-ak-chat-container


Message

Renderiza um único objeto Message de chat.messages.

<Message
message={msg}
avatar={<img src={userAvatar} alt="User" />}
actions={<button onClick={() => copy(msg.content)}>Copy</button>}
/>
PropTipoDescrição
messageMessageTypeObrigatório. A mensagem a renderizar.
avatarReactNodeAvatar opcional ao lado do balão.
actionsReactNodeLinha de ações opcional abaixo do conteúdo.

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


InputBar

Textarea + botão enviar ligados a um objeto ChatReturn. Envia com Enter, insere nova linha com Shift+Enter.

<InputBar
chat={chat}
placeholder="Ask anything..."
disabled={false}
/>
PropTipoPadrãoDescrição
chatChatReturnObrigatório. Valor retornado por useChat.
placeholderstring'Type a message...'Placeholder da textarea.
disabledbooleanfalseDesabilita entrada e botão.

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


Markdown

Wrapper leve para conteúdo markdown. Adicione seu próprio renderizador (por exemplo react-markdown) dentro ou substitua o componente inteiro.

<Markdown content={msg.content} streaming={msg.status === 'streaming'} />
PropTipoPadrãoDescrição
contentstringObrigatório. String markdown a exibir.
streamingbooleanfalseAdiciona data-ak-streaming="true" durante o streaming.

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


CodeBlock

Renderiza um trecho de código com botão copiar opcional.

<CodeBlock code="npm install @agentskit/react" language="bash" copyable />
PropTipoPadrãoDescrição
codestringObrigatório. Código-fonte a exibir.
languagestringDica de linguagem (por exemplo 'tsx', 'bash').
copyablebooleanfalseMostra botão Copiar que grava na área de transferência.

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


ToolCallView

Visão expansível para uma única chamada de ferramenta. Clicar no nome da ferramenta alterna visibilidade de args e resultado.

{msg.toolCalls?.map(tc => (
<ToolCallView key={tc.id} toolCall={tc} />
))}
PropTipoDescrição
toolCallToolCallObrigatório. Objeto de chamada de ferramenta 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

Três pontos animados com rótulo. Não renderiza nada quando visible é false.

<ThinkingIndicator visible={chat.status === 'streaming'} label="Thinking..." />
PropTipoPadrãoDescrição
visiblebooleanObrigatório. Mostra ou oculta o indicador.
labelstring'Thinking...'Rótulo acessível ao lado dos pontos.

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


Componentes Ink

Importe de @agentskit/ink:

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

ChatContainer (Ink)

Envolve filhos num <Box flexDirection="column" gap={1}> do Ink.

<ChatContainer>
{chat.messages.map(msg => <Message key={msg.id} message={msg} />)}
</ChatContainer>
PropTipoDescrição
childrenReactNodeObrigatório.

Message (Ink)

Renderiza o rótulo do papel numa cor de terminal específica ao papel, depois o conteúdo abaixo.

<Message message={msg} />
PropTipoDescrição
messageMessageTypeObrigatório.

Cores por papel: assistant → cyan, user → green, system → yellow, tool → magenta.


InputBar (Ink)

Captura entrada de teclado via useInput do Ink. Envia com Enter, apaga com Backspace/Delete. Desabilitado durante streaming.

<InputBar chat={chat} placeholder="Type and press Enter..." />
PropTipoPadrãoDescrição
chatChatReturnObrigatório.
placeholderstring'Type a message...'Mostrado acima da linha de entrada.
disabledbooleanfalseImpede entrada.

ToolCallView (Ink)

Renderiza caixa com borda arredondada com nome da ferramenta, status e opcionalmente args e resultado.

<ToolCallView toolCall={tc} expanded />
PropTipoPadrãoDescrição
toolCallToolCallObrigatório.
expandedbooleanfalseMostra args e resultado inline.

ThinkingIndicator (Ink)

Texto amarelo em linha única. Não renderiza nada quando visible é false.

<ThinkingIndicator visible={chat.status === 'streaming'} label="Thinking..." />
PropTipoPadrãoDescrição
visiblebooleanObrigatório.
labelstring'Thinking...'Texto a exibir.

Disponibilidade de componentes

Componente@agentskit/react@agentskit/ink
ChatContainerSimSim
MessageSimSim
InputBarSimSim
ToolCallViewSimSim
ThinkingIndicatorSimSim
MarkdownSimNão
CodeBlockSimNão

Relacionados