SNA

イベント

WS と SSE 上を流れる 15 種類の AgentEvent プロトコルです。

すべてのランタイムが正規化された AgentEvent ストリームを emit します。 アプリは WebSocket (push) または GET /agent/events (SSE) で 購読し、どちらも同じワイヤ形を運びます。

イベントタイプ

タイプ発生タイミング持つもの
initセッション開始provider、model、capabilities
assistant確定した assistant テキストブロック全文
assistant_deltaストリーミングテキストチャンクdelta
text_delta一部アダプタが使う別名delta
thinking拡張 thinking の最終ブロックthinking 全文
thinking_deltaストリーミング thinking チャンクdelta
tool_useツール呼び出しツール名、入力
tool_use_deltaストリーミングツール入力 (JSON)partial 入力
tool_resultツール応答result、isError、durationMs
permission_neededツールが承認を要求ツール名、入力、decisionId
milestoneランタイム定義のマーカーlabel
user_message(正規化後の) ユーザー側エコーcontent
interruptedターン取り消しreason
errorランタイムエラーmessage
completeターン終了usage、costUsd、durationMs

delta vs final

text と thinking は _delta チャンクと最終 assistant / thinking イベントの両方が到着します。最終イベントが正規版であり、履歴にも 最終イベントが永続化されます。delta はライブ描画用です。

ツール使用については tool_use_delta が部分 JSON 入力 (Anthropic の input_json_delta) を運びます。最終 tool_use イベントはパース済みの 完全な入力を持ちます。

購読

WebSocket (ライブ UI 推奨):

client.agent.onEvent(({ event }) => {
  if (event.type === "assistant_delta") render(event.delta);
});
await client.agent.subscribe(sessionId);

SSE (WS が使えない場合):

for await (const event of client.agent.streamEvents(sessionId)) {
  if (event.type === "complete") break;
}

セッションなしの単発実行には SSE エンドポイント POST /agent/run-once/stream とそのクライアントラッパー agent.runOnceStream(opts) が同じイベントプロトコルを運びます。

目次