Referência

Eventos

Tipos de evento usados pelo event log de sessions, pelo stream SSE e por webhooks.

Eventos são ordenados por seq dentro de uma session. O mesmo evento pode ser lido no histórico e recebido no stream.

#Eventos ingeríveis

Seu backend pode postar estes eventos no endpoint de events da session:

TipoPayloadUso
user.message{ content, idempotencyKey? }Envia uma mensagem ou instrução do usuário.
user.interrupt{ idempotencyKey? }Solicita interrupção do trabalho atual.
user.custom_tool_result{ toolUseId, content, isError?, idempotencyKey? }Responde custom tool executada pelo cliente.
user.tool_confirmation{ toolUseId, decision, reason?, idempotencyKey? }Aprova ou nega tool que pediu confirmação.

content usa blocos de texto: [{ "type": "text", "text": "..." }].

#Eventos do agent

TipoQuando ocorre
agent.messageO agent produziu resposta textual.
agent.thinkingO provider expôs conteúdo de raciocínio apresentável.
agent.tool_useO agent solicitou uma built-in tool.
agent.tool_resultResultado de uma built-in tool.
agent.custom_tool_useO agent solicitou uma custom tool executada pelo seu backend.
agent.mcp_tools_listedTools MCP foram resolvidas para a session.
agent.mcp_tool_useO agent solicitou uma tool MCP.
agent.mcp_tool_resultResultado de uma tool MCP.
agent.memory_readUma tool de memória leu um documento.
agent.memory_writeUma tool de memória escreveu um documento.
agent.outputs_capturedOutputs da execução foram capturados como artifacts.
agent.skills_mountedSkills foram montadas para a session.

#Eventos de status

TipoSignificado
session.status_idleA session está pronta ou aguardando ação externa.
session.status_runningA session está processando trabalho.
session.status_rescheduledA session foi reagendada para continuar.
session.status_terminatedA session terminou.
session.errorA execução registrou falha terminal ou recuperável conforme payload.

#Eventos de observabilidade

TipoSignificado
span.model_request_startInício de uma chamada ao modelo.
span.model_request_endFim de uma chamada ao modelo, incluindo usage quando disponível.

Esses eventos ajudam a depurar latência e consumo, mas normalmente não dirigem experiência de usuário.

#Eventos entregáveis por webhook

Webhooks aceitam um subconjunto estável de alto valor operacional:

Tipo
agent.message
session.status_idle
session.status_running
session.status_rescheduled
session.status_terminated

#Uso no SDK

ts
import { isAgentMessage, isAgentCustomToolUse } from '@noorden/sdk';

for await (const event of session.stream({ afterSeq: checkpoint })) {
  checkpoint = event.seq;

  if (isAgentMessage(event)) {
    await appendText(event.text);
  }

  if (isAgentCustomToolUse(event)) {
    await queueTool(event.toolUseId, event.name, event.input);
  }
}