Skip to main content

SessionEvent

Copilot からのメッセージはすべて Revolution\Copilot\Types\SessionEvent クラスです。 このクラスは最もよく使うため、Laravel らしい便利機能が追加されています。

content()

AI からの最も重要な応答メッセージを取得します。
__toString() による暗黙の型変換でもメッセージ内容を返します。

Event type の判定

isAssistantMessage(), isUserMessage(), isIdle(), isAssistantMessageDelta() が使えます。 よく使う Event type があれば、さらにヘルパーが追加される場合があります。 is() で任意の EventType を判定できます。
type()SessionEventType enum の文字列値を返します。

failed() / successful()

イベントタイプが SESSION_ERROR の時は failed() が true になります。 successful() はその逆です。 Laravel の命名に合わせるため、isError() から改名されています。

throw()

Laravel の HTTP API や Process API と同じように、エラーは保持され、throw() で例外を送出できます。 エラーがない場合は何もしないため、次のように書けます。
イベントタイプが SESSION_ERROR の場合は Revolution\Copilot\Exceptions\SessionErrorException を送出します。 タイムアウト時は Revolution\Copilot\Exceptions\SessionTimeoutException を送出します。 JSON-RPC のエラーでは Revolution\Copilot\Exceptions\JsonRpcException を送出します。

Conditionable

when()unless() が使えます。

Dumpable

dump()dd() が使えます。

Tappable

tap() が使えます。

InteractsWithData

この機能は SessionEvent の $data プロパティにのみ適用されます。 all(), has(), only(), collect() などの使い慣れたヘルパーを使えます。 詳しくは InteractsWithData を参照してください。 SessionEvent の $dataEventType ごとに構造が異なるため、イベントごとの値アクセスに便利です。 content() も内部的に InteractsWithData を使っています。

toArray() / toJson()

SessionEvent 全体を配列または JSON に変換できます。
イベント全体向けの collect() メソッドはありません。 $data には InteractsWithData の collect() があるためです。 イベント全体をコレクション操作したい場合は Laravel の collect() ヘルパーを使います。

broadcast() / broadcastNow()

Laravel AI SDK の StreamEvent と同じインターフェースでブロードキャストできます。 AI SDK ではストリーミング時に使いますが、SessionEvent では任意の EventType で使えます。
broadcastNow() はキューを経由せずに即時ブロードキャストします。
ストリーミング時の利用例:
最新情報は GitHub リポジトリ を参照してください。
最終更新日 2026年4月20日