Eventos de streaming
Si habilitas streaming: true en SessionConfig, todo lo que ocurre durante la sesión se transmite como eventos.
Esta página es una versión en español, más legible para Laravel, del streaming-events.md oficial.
La página SessionEvent explica la propia clase SessionEvent extendida para Laravel.
Esta página es la referencia de «qué tipo de evento entrega qué datos».
Resumen
Todo el procesamiento del agente Copilot (inferencia, generación de mensajes, ejecución de herramientas, confirmaciones de permiso, etc.) se emite como eventos de sesión.
- Evento ephemeral: solo se entrega en tiempo real. No se persiste en el log de la sesión (no se reproduce al reanudar).
- Evento persisted: se guarda en el log de la sesión (se reproduce al reanudar).
- Evento delta: evento incremental que llega por fragmentos (
deltaContent, etc.). Se concatena para obtener el texto completo.
- Cadena
parentId: cada evento referencia al ID del evento inmediatamente anterior.
Envoltura de evento (campos comunes)
Todos los eventos tienen la siguiente estructura común:
Ejemplo de suscripción en Laravel
Principales categorías de evento
Assistant events
assistant.turn_start
Inicio del turn.
turnId (obligatorio)
interactionId (opcional)
assistant.intent (ephemeral)
Intención de ejecución actual (por ejemplo, Exploring codebase).
assistant.reasoning
Bloque de razonamiento completo.
reasoningId (obligatorio)
content (obligatorio)
assistant.reasoning_delta (ephemeral)
Delta de texto de razonamiento.
reasoningId (obligatorio)
deltaContent (obligatorio)
assistant.message
Mensaje del assistant ya completo.
Campos principales:
messageId (obligatorio)
content (obligatorio)
toolRequests (opcional)
reasoningOpaque / reasoningText / encryptedContent (opcional)
phase / outputTokens / interactionId (opcional)
parentToolCallId (opcional, cuando proviene de un subagente)
assistant.message_delta (ephemeral)
Delta del cuerpo del mensaje.
messageId (obligatorio)
deltaContent (obligatorio)
parentToolCallId (opcional)
assistant.turn_end
Fin del turn.
assistant.usage (ephemeral)
Información de uso por llamada a API.
Campos principales:
model (obligatorio)
inputTokens / outputTokens / cost / duration (opcional)
apiCallId / providerCallId (opcional)
quotaSnapshots / copilotUsage (opcional)
assistant.streaming_delta (ephemeral)
Progreso de recepción a bajo nivel.
totalResponseSizeBytes (obligatorio)
Inicio de ejecución de herramienta.
toolCallId (obligatorio)
toolName (obligatorio)
arguments / mcpServerName / mcpToolName / parentToolCallId (opcional)
Salida parcial mientras se ejecuta la herramienta.
toolCallId (obligatorio)
partialOutput (obligatorio)
Mensaje de progreso.
toolCallId (obligatorio)
progressMessage (obligatorio)
Ejecución de herramienta completada (éxito/fallo).
toolCallId (obligatorio)
success (obligatorio)
result (en caso de éxito)
error (en caso de fallo)
toolTelemetry / parentToolCallId (opcional)
Invocación de herramienta a petición explícita del usuario.
toolCallId (obligatorio)
toolName (obligatorio)
arguments (opcional)
Session lifecycle events
session.start
Inicio de la sesión. En Cloud Sessions, es más seguro enviar el primer prompt después de que producer confirme el session.start del copilot-agent.
session.idle (ephemeral)
El procesamiento actual ha terminado y se espera la siguiente entrada.
backgroundTasks (opcional)
session.error
Error durante el procesamiento de la sesión.
errorType (obligatorio)
message (obligatorio)
stack / statusCode / providerCallId (opcional)
session.compaction_start
Inicio de la compactación de contexto (data es un objeto vacío).
session.compaction_complete
Fin de la compactación de contexto.
Campos principales:
success (obligatorio)
error (opcional)
preCompactionTokens / postCompactionTokens (opcional)
summaryContent / checkpointPath (opcional)
session.title_changed (ephemeral)
Actualización automática del título.
session.context_changed
Cambio del contexto de trabajo.
cwd (obligatorio)
gitRoot / repository / branch (opcional)
session.info
Información de la sesión como URL remota.
infoType (obligatorio)
url (opcional, por ejemplo cuando infoType es remote)
session.remote_steerable_changed
Evento que indica cambios en la disponibilidad de operación remota desde Mission Control.
remoteSteerable (opcional)
session.usage_info (ephemeral)
Estado de uso de la ventana de contexto.
tokenLimit (obligatorio)
currentTokens (obligatorio)
messagesLength (obligatorio)
session.task_complete
Notificación de tarea completada.
session.shutdown
Cierre de la sesión.
Campos principales:
shutdownType (obligatorio)
errorReason (opcional)
totalPremiumRequests / totalApiDurationMs (obligatorios)
codeChanges / modelMetrics (obligatorios)
permission.requested (ephemeral)
Solicitud de confirmación de permiso.
requestId (obligatorio)
permissionRequest (obligatorio)
permissionRequest.kind:
shell
write
read
mcp
url
memory
custom-tool
permission.completed (ephemeral)
Resolución de la confirmación de permiso.
requestId (obligatorio)
result.kind (obligatorio)
Pregunta al usuario.
requestId (obligatorio)
question (obligatorio)
choices / allowFreeform (opcional)
Entrada del usuario completada.
elicitation.requested (ephemeral)
Solicitud de entrada estructurada (formulario).
requestId (obligatorio)
message (obligatorio)
requestedSchema (obligatorio)
elicitation.completed (ephemeral)
Entrada estructurada completada.
Sub-agent / skill events
subagent.started
toolCallId (obligatorio)
agentName / agentDisplayName / agentDescription (obligatorios)
subagent.completed
toolCallId (obligatorio)
agentName / agentDisplayName (obligatorios)
subagent.failed
toolCallId (obligatorio)
agentName / agentDisplayName (obligatorios)
error (obligatorio)
subagent.selected
agentName (obligatorio)
agentDisplayName (obligatorio)
tools (obligatorio, admite null)
subagent.deselected
Vuelta al agente por defecto (data es un objeto vacío).
skill.invoked
name / path / content (obligatorios)
allowedTools / pluginName / pluginVersion (opcional)
Otros eventos
abort
user.message
content (obligatorio)
transformedContent / attachments / source / agentMode / interactionId (opcional)
system.message
content (obligatorio)
role (obligatorio)
name / metadata (opcional)
requestId / sessionId / toolCallId / toolName (obligatorios)
arguments (opcional)
exit_plan_mode.requested (ephemeral)
requestId / summary / planContent / actions / recommendedAction (obligatorios)
exit_plan_mode.completed (ephemeral)
command.queued (ephemeral)
requestId (obligatorio)
command (obligatorio)
command.completed (ephemeral)
Orden de eventos habitual
Lista completa de eventos (referencia rápida)
Documentación relacionada
Última modificación el 13 de julio de 2026