Skip to main content

SessionEvent

Tous les messages provenant de Copilot sont des instances de Revolution\Copilot\Types\SessionEvent. Comme cette classe est très utilisée, des commodités à la Laravel lui ont été ajoutées.

content()

Récupère le message de réponse le plus important renvoyé par l’IA.
Une conversion implicite via __toString() renvoie également le contenu du message.

Test du type d’événement

isAssistantMessage(), isUserMessage(), isIdle(), isAssistantMessageDelta() sont disponibles. Pour les types d’événements couramment utilisés, d’autres helpers peuvent être ajoutés. is() permet de tester un EventType arbitraire.
type() renvoie la valeur chaîne de l’enum SessionEventType.

failed() / successful()

Si le type d’événement est SESSION_ERROR, failed() renvoie true. successful() est l’inverse. Pour s’aligner sur la nomenclature Laravel, isError() a été renommé.

throw()

Comme pour les APIs HTTP et Process de Laravel, l’erreur est conservée et peut être relancée via throw(). Si aucune erreur, la méthode ne fait rien ; vous pouvez donc écrire :
Si le type d’événement est SESSION_ERROR, Revolution\Copilot\Exceptions\SessionErrorException est levée. En cas de timeout, Revolution\Copilot\Exceptions\SessionTimeoutException est levée. Pour les erreurs JSON-RPC, Revolution\Copilot\Exceptions\JsonRpcException est levée.

Conditionable

when() et unless() sont disponibles.

Dumpable

dump() et dd() sont disponibles.

Tappable

tap() est disponible.

InteractsWithData

Cette fonctionnalité ne s’applique qu’à la propriété $data de SessionEvent. Vous disposez d’helpers familiers : all(), has(), only(), collect(), etc. Pour plus de détails, voir InteractsWithData. Comme la structure de $data diffère selon l’EventType, ces accès sont pratiques. content() s’appuie également sur InteractsWithData en interne.

toArray() / toJson()

Vous pouvez convertir l’ensemble du SessionEvent en tableau ou en JSON.
Il n’existe pas de méthode collect() sur l’événement entier. En effet, $data possède déjà collect() via InteractsWithData. Pour manipuler l’événement en tant que collection, utilisez le helper collect() de Laravel.

broadcast() / broadcastNow()

La diffusion utilise la même interface que StreamEvent de Laravel AI SDK. Là où l’AI SDK l’utilise en streaming, ici vous pouvez l’utiliser pour n’importe quel EventType.
broadcastNow() diffuse immédiatement sans passer par la file d’attente.
Exemple en streaming :
Pour les dernières informations, consultez le dépôt GitHub.
Dernière modification le 13 juillet 2026