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년 7월 13일