Skip to main content

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).
  • intent (obligatorio)

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.
  • turnId (obligatorio)

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)

Tool execution events

tool.execution_start

Inicio de ejecución de herramienta.
  • toolCallId (obligatorio)
  • toolName (obligatorio)
  • arguments / mcpServerName / mcpToolName / parentToolCallId (opcional)

tool.execution_partial_result (ephemeral)

Salida parcial mientras se ejecuta la herramienta.
  • toolCallId (obligatorio)
  • partialOutput (obligatorio)

tool.execution_progress (ephemeral)

Mensaje de progreso.
  • toolCallId (obligatorio)
  • progressMessage (obligatorio)

tool.execution_complete

Ejecución de herramienta completada (éxito/fallo).
  • toolCallId (obligatorio)
  • success (obligatorio)
  • result (en caso de éxito)
  • error (en caso de fallo)
  • toolTelemetry / parentToolCallId (opcional)

tool.user_requested

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.
  • producer (opcional)

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.
  • title (obligatorio)

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.
  • summary (opcional)

session.shutdown

Cierre de la sesión. Campos principales:
  • shutdownType (obligatorio)
  • errorReason (opcional)
  • totalPremiumRequests / totalApiDurationMs (obligatorios)
  • codeChanges / modelMetrics (obligatorios)

Permission / user input events

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)

user_input.requested (ephemeral)

Pregunta al usuario.
  • requestId (obligatorio)
  • question (obligatorio)
  • choices / allowFreeform (opcional)

user_input.completed (ephemeral)

Entrada del usuario completada.
  • requestId (obligatorio)

elicitation.requested (ephemeral)

Solicitud de entrada estructurada (formulario).
  • requestId (obligatorio)
  • message (obligatorio)
  • requestedSchema (obligatorio)

elicitation.completed (ephemeral)

Entrada estructurada completada.
  • requestId (obligatorio)

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

  • reason (obligatorio)

user.message

  • content (obligatorio)
  • transformedContent / attachments / source / agentMode / interactionId (opcional)

system.message

  • content (obligatorio)
  • role (obligatorio)
  • name / metadata (opcional)

external_tool.requested (ephemeral)

  • requestId / sessionId / toolCallId / toolName (obligatorios)
  • arguments (opcional)

external_tool.completed (ephemeral)

  • requestId (obligatorio)

exit_plan_mode.requested (ephemeral)

  • requestId / summary / planContent / actions / recommendedAction (obligatorios)

exit_plan_mode.completed (ephemeral)

  • requestId (obligatorio)

command.queued (ephemeral)

  • requestId (obligatorio)
  • command (obligatorio)

command.completed (ephemeral)

  • requestId (obligatorio)

Orden de eventos habitual

Lista completa de eventos (referencia rápida)

Documentación relacionada

Última modificación el 13 de julio de 2026