SessionEvent
Todos los mensajes que llegan desde Copilot son de la claseRevolution\Copilot\Types\SessionEvent.
Como es la clase que más se usa, incluye funcionalidades cómodas al estilo Laravel.
content()
Obtiene el mensaje de respuesta más importante de la IA.
__toString() también se devuelve el contenido del mensaje.
Detección del event type
Puedes usarisAssistantMessage(), isUserMessage(), isIdle(), isAssistantMessageDelta().
Si hay algún event type que se usa mucho, puede que se añadan más helpers.
Con is() puedes comprobar cualquier EventType.
type() devuelve el valor string del enum SessionEventType.
failed() / successful()
Cuando el tipo de evento es SESSION_ERROR, failed() devuelve true.
successful() es lo contrario.
Para adecuarse al estilo de nombres de Laravel, se renombró desde isError().
throw()
Igual que en las APIs HTTP y Process de Laravel, el error se conserva y puedes lanzarlo como excepción con throw().
Si no hay error, no hace nada, así que puedes escribir:
SESSION_ERROR, se lanza Revolution\Copilot\Exceptions\SessionErrorException.
En caso de timeout, se lanza Revolution\Copilot\Exceptions\SessionTimeoutException.
Ante un error JSON-RPC, se lanza Revolution\Copilot\Exceptions\JsonRpcException.
Conditionable
Puedes usarwhen() y unless().
Dumpable
Puedes usardump() y dd().
Tappable
Puedes usartap().
InteractsWithData
Esta función solo se aplica a la propiedad$data de SessionEvent.
Puedes usar helpers habituales como all(), has(), only(), collect().
Para más detalles, consulta InteractsWithData.
Como la estructura de $data de SessionEvent varía según el EventType, es útil para acceder a los valores según el evento.
content() también usa InteractsWithData internamente.
toArray() / toJson()
Puedes convertir todo el SessionEvent en array o JSON.
collect() para el evento completo.
Se debe a que $data tiene el collect() de InteractsWithData.
Si quieres operar sobre todo el evento como colección, usa el helper collect() de Laravel.
broadcast() / broadcastNow()
Puedes emitir con la misma interfaz que StreamEvent de Laravel AI SDK.
En AI SDK se usa durante el streaming, pero en SessionEvent puedes usarlo con cualquier EventType.
broadcastNow() emite inmediatamente, sin pasar por la cola.
Consulta la información más reciente en el repositorio de GitHub.