Skip to main content

Événements de streaming

Lorsque streaming: true est activé dans SessionConfig, les opérations de la session sont diffusées sous forme d’événements séquentiels. Cette page est une version française, rendue plus lisible pour Laravel, du streaming-events.md officiel.
La page SessionEvent décrit la classe SessionEvent étendue côté Laravel. Cette page est une référence de « quels types d’événements existent et quelles données ils transportent ».

Vue d’ensemble

Toutes les opérations de l’agent Copilot (raisonnement, génération de messages, exécution d’outils, demandes de permission, etc.) transitent sous forme d’événements de session.
  • Événement éphémère : diffusé en temps réel uniquement. Non persisté dans le journal de session (non rejoué à la reprise)
  • Événement persisté : sauvegardé dans le journal de session (rejoué à la reprise)
  • Événement delta : événement de différentiel arrivant par fragments (deltaContent, etc.). À concaténer pour reconstituer le texte complet
  • Chaîne parentId : chaque événement référence l’ID de l’événement précédent

Enveloppe d’événement (champs communs)

Chaque événement possède la structure commune suivante.

Exemple d’abonnement dans Laravel

Principales catégories d’événements

Assistant events

assistant.turn_start

Début de tour.
  • turnId (requis)
  • interactionId (optionnel)

assistant.intent (éphémère)

Intention d’exécution en cours (ex. Exploring codebase).
  • intent (requis)

assistant.reasoning

Version finalisée du bloc de raisonnement.
  • reasoningId (requis)
  • content (requis)

assistant.reasoning_delta (éphémère)

Delta du texte de raisonnement.
  • reasoningId (requis)
  • deltaContent (requis)

assistant.message

Message finalisé de l’assistant. Principaux champs :
  • messageId (requis)
  • content (requis)
  • toolRequests (optionnel)
  • reasoningOpaque / reasoningText / encryptedContent (optionnels)
  • phase / outputTokens / interactionId (optionnels)
  • parentToolCallId (optionnel, quand issu d’un sous-agent)

assistant.message_delta (éphémère)

Delta du corps de message.
  • messageId (requis)
  • deltaContent (requis)
  • parentToolCallId (optionnel)

assistant.turn_end

Fin de tour.
  • turnId (requis)

assistant.usage (éphémère)

Informations de consommation par appel d’API. Principaux champs :
  • model (requis)
  • inputTokens / outputTokens / cost / duration (optionnels)
  • apiCallId / providerCallId (optionnels)
  • quotaSnapshots / copilotUsage (optionnels)

assistant.streaming_delta (éphémère)

Progression bas niveau de réception.
  • totalResponseSizeBytes (requis)

Événements d’exécution d’outil

tool.execution_start

Début d’exécution d’un outil.
  • toolCallId (requis)
  • toolName (requis)
  • arguments / mcpServerName / mcpToolName / parentToolCallId (optionnels)

tool.execution_partial_result (éphémère)

Sortie partielle pendant l’exécution.
  • toolCallId (requis)
  • partialOutput (requis)

tool.execution_progress (éphémère)

Message de progression.
  • toolCallId (requis)
  • progressMessage (requis)

tool.execution_complete

Fin d’exécution (succès/échec).
  • toolCallId (requis)
  • success (requis)
  • result (en cas de succès)
  • error (en cas d’échec)
  • toolTelemetry / parentToolCallId (optionnels)

tool.user_requested

Appel d’outil demandé explicitement par l’utilisateur.
  • toolCallId (requis)
  • toolName (requis)
  • arguments (optionnel)

Cycle de vie de session

session.start

Début de session. En Cloud Sessions, il est plus sûr d’attendre un session.start dont le producer est copilot-agent avant d’envoyer le premier prompt.
  • producer (optionnel)

session.idle (éphémère)

Le traitement en cours est terminé, en attente du prochain input.
  • backgroundTasks (optionnel)

session.error

Erreur pendant le traitement.
  • errorType (requis)
  • message (requis)
  • stack / statusCode / providerCallId (optionnels)

session.compaction_start

Début de la compaction de contexte (data est un objet vide).

session.compaction_complete

Fin de la compaction de contexte. Principaux champs :
  • success (requis)
  • error (optionnel)
  • preCompactionTokens / postCompactionTokens (optionnels)
  • summaryContent / checkpointPath (optionnels)

session.title_changed (éphémère)

Mise à jour automatique du titre.
  • title (requis)

session.context_changed

Changement de contexte de travail.
  • cwd (requis)
  • gitRoot / repository / branch (optionnels)

session.info

Informations de session (URL distante, etc.).
  • infoType (requis)
  • url (optionnel, ex. si infoType vaut remote)

session.remote_steerable_changed

Indique un changement d’éligibilité au pilotage distant depuis Mission Control.
  • remoteSteerable (optionnel)

session.usage_info (éphémère)

État d’utilisation de la fenêtre de contexte.
  • tokenLimit (requis)
  • currentTokens (requis)
  • messagesLength (requis)

session.task_complete

Notification d’achèvement de tâche.
  • summary (optionnel)

session.shutdown

Fin de session. Principaux champs :
  • shutdownType (requis)
  • errorReason (optionnel)
  • totalPremiumRequests / totalApiDurationMs (requis)
  • codeChanges / modelMetrics (requis)

Événements permission / entrée utilisateur

permission.requested (éphémère)

Demande de confirmation de permission.
  • requestId (requis)
  • permissionRequest (requis)
permissionRequest.kind :
  • shell
  • write
  • read
  • mcp
  • url
  • memory
  • custom-tool

permission.completed (éphémère)

Résolution de la demande de permission.
  • requestId (requis)
  • result.kind (requis)

user_input.requested (éphémère)

Question posée à l’utilisateur.
  • requestId (requis)
  • question (requis)
  • choices / allowFreeform (optionnels)

user_input.completed (éphémère)

Fin de la saisie utilisateur.
  • requestId (requis)

elicitation.requested (éphémère)

Demande de saisie structurée (formulaire).
  • requestId (requis)
  • message (requis)
  • requestedSchema (requis)

elicitation.completed (éphémère)

Fin de la saisie structurée.
  • requestId (requis)

Sous-agents / skills

subagent.started

  • toolCallId (requis)
  • agentName / agentDisplayName / agentDescription (requis)

subagent.completed

  • toolCallId (requis)
  • agentName / agentDisplayName (requis)

subagent.failed

  • toolCallId (requis)
  • agentName / agentDisplayName (requis)
  • error (requis)

subagent.selected

  • agentName (requis)
  • agentDisplayName (requis)
  • tools (requis, null autorisé)

subagent.deselected

Retour à l’agent par défaut (data est un objet vide).

skill.invoked

  • name / path / content (requis)
  • allowedTools / pluginName / pluginVersion (optionnels)

Autres événements

abort

  • reason (requis)

user.message

  • content (requis)
  • transformedContent / attachments / source / agentMode / interactionId (optionnels)

system.message

  • content (requis)
  • role (requis)
  • name / metadata (optionnels)

external_tool.requested (éphémère)

  • requestId / sessionId / toolCallId / toolName (requis)
  • arguments (optionnel)

external_tool.completed (éphémère)

  • requestId (requis)

exit_plan_mode.requested (éphémère)

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

exit_plan_mode.completed (éphémère)

  • requestId (requis)

command.queued (éphémère)

  • requestId (requis)
  • command (requis)

command.completed (éphémère)

  • requestId (requis)

Ordre typique des événements

Liste complète (référence rapide)

Documents associés

Dernière modification le 13 juillet 2026