Skip to main content

Eventi di streaming

Abilitando streaming: true in SessionConfig, le attività durante la sessione vengono consegnate come eventi in sequenza. Questa pagina è la versione italiana, resa più leggibile per Laravel, del streaming-events.md ufficiale.
La pagina SessionEvent descrive la classe SessionEvent estesa per Laravel. Questa pagina è la reference su “quale tipo di evento e quali dati arrivano”.

Panoramica

Le attività dell’agente Copilot (reasoning, generazione di messaggi, esecuzione di strumenti, controllo permessi, ecc.) fluiscono come eventi di sessione.
  • Ephemeral event: solo consegna in tempo reale. Non viene persistito nel log della sessione (non viene riprodotto alla ripresa)
  • Persisted event: salvato nel log della sessione (riprodotto alla ripresa)
  • Delta event: evento incrementale (deltaContent ecc.). Concatenandoli si ricostruisce il testo intero
  • parentId chain: ciascun evento fa riferimento all’ID dell’evento precedente in una catena

Envelope dell’evento (campi comuni)

Tutti gli eventi hanno la seguente struttura comune.

Esempio di sottoscrizione in Laravel

Categorie di eventi principali

Assistant events

assistant.turn_start

Inizio del turn.
  • turnId (obbligatorio)
  • interactionId (opzionale)

assistant.intent (ephemeral)

Intenzione di esecuzione corrente (es. Exploring codebase).
  • intent (obbligatorio)

assistant.reasoning

Blocco di reasoning completo.
  • reasoningId (obbligatorio)
  • content (obbligatorio)

assistant.reasoning_delta (ephemeral)

Delta del testo di reasoning.
  • reasoningId (obbligatorio)
  • deltaContent (obbligatorio)

assistant.message

Messaggio finale dell’assistente. Campi principali:
  • messageId (obbligatorio)
  • content (obbligatorio)
  • toolRequests (opzionale)
  • reasoningOpaque / reasoningText / encryptedContent (opzionali)
  • phase / outputTokens / interactionId (opzionali)
  • parentToolCallId (opzionale, quando proviene da un sotto-agente)

assistant.message_delta (ephemeral)

Delta del corpo del messaggio.
  • messageId (obbligatorio)
  • deltaContent (obbligatorio)
  • parentToolCallId (opzionale)

assistant.turn_end

Fine del turn.
  • turnId (obbligatorio)

assistant.usage (ephemeral)

Informazioni di uso per chiamata API. Campi principali:
  • model (obbligatorio)
  • inputTokens / outputTokens / cost / duration (opzionali)
  • apiCallId / providerCallId (opzionali)
  • quotaSnapshots / copilotUsage (opzionali)

assistant.streaming_delta (ephemeral)

Progresso di ricezione a basso livello.
  • totalResponseSizeBytes (obbligatorio)

Tool execution events

tool.execution_start

Inizio esecuzione strumento.
  • toolCallId (obbligatorio)
  • toolName (obbligatorio)
  • arguments / mcpServerName / mcpToolName / parentToolCallId (opzionali)

tool.execution_partial_result (ephemeral)

Output parziale durante l’esecuzione.
  • toolCallId (obbligatorio)
  • partialOutput (obbligatorio)

tool.execution_progress (ephemeral)

Messaggio di progresso.
  • toolCallId (obbligatorio)
  • progressMessage (obbligatorio)

tool.execution_complete

Esecuzione strumento completata (successo/fallimento).
  • toolCallId (obbligatorio)
  • success (obbligatorio)
  • result (in caso di successo)
  • error (in caso di fallimento)
  • toolTelemetry / parentToolCallId (opzionali)

tool.user_requested

Chiamata a strumento su richiesta esplicita dell’utente.
  • toolCallId (obbligatorio)
  • toolName (obbligatorio)
  • arguments (opzionale)

Session lifecycle events

session.start

Inizio sessione. Nelle Cloud Sessions è più sicuro inviare il primo prompt dopo aver verificato che producer sia copilot-agent in session.start.
  • producer (opzionale)

session.idle (ephemeral)

Elaborazione corrente completata, in attesa del prossimo input.
  • backgroundTasks (opzionale)

session.error

Errore durante l’elaborazione della sessione.
  • errorType (obbligatorio)
  • message (obbligatorio)
  • stack / statusCode / providerCallId (opzionali)

session.compaction_start

Inizio compattazione del contesto (data è un oggetto vuoto).

session.compaction_complete

Compattazione del contesto completata. Campi principali:
  • success (obbligatorio)
  • error (opzionale)
  • preCompactionTokens / postCompactionTokens (opzionali)
  • summaryContent / checkpointPath (opzionali)

session.title_changed (ephemeral)

Aggiornamento automatico del titolo.
  • title (obbligatorio)

session.context_changed

Cambio del contesto di lavoro.
  • cwd (obbligatorio)
  • gitRoot / repository / branch (opzionali)

session.info

Informazioni della sessione come URL remoto.
  • infoType (obbligatorio)
  • url (opzionale, ad es. quando infoType è remote)

session.remote_steerable_changed

Evento che indica il cambio della possibilità di operare a distanza da Mission Control.
  • remoteSteerable (opzionale)

session.usage_info (ephemeral)

Stato di uso della context window.
  • tokenLimit (obbligatorio)
  • currentTokens (obbligatorio)
  • messagesLength (obbligatorio)

session.task_complete

Notifica di completamento task.
  • summary (opzionale)

session.shutdown

Chiusura della sessione. Campi principali:
  • shutdownType (obbligatorio)
  • errorReason (opzionale)
  • totalPremiumRequests / totalApiDurationMs (obbligatori)
  • codeChanges / modelMetrics (obbligatori)

Permission / user input events

permission.requested (ephemeral)

Richiesta di conferma di permesso.
  • requestId (obbligatorio)
  • permissionRequest (obbligatorio)
permissionRequest.kind:
  • shell
  • write
  • read
  • mcp
  • url
  • memory
  • custom-tool

permission.completed (ephemeral)

Esito della verifica del permesso.
  • requestId (obbligatorio)
  • result.kind (obbligatorio)

user_input.requested (ephemeral)

Domanda all’utente.
  • requestId (obbligatorio)
  • question (obbligatorio)
  • choices / allowFreeform (opzionali)

user_input.completed (ephemeral)

Input utente completato.
  • requestId (obbligatorio)

elicitation.requested (ephemeral)

Richiesta di input strutturato (form).
  • requestId (obbligatorio)
  • message (obbligatorio)
  • requestedSchema (obbligatorio)

elicitation.completed (ephemeral)

Completamento dell’input strutturato.
  • requestId (obbligatorio)

Sub-agent / skill events

subagent.started

  • toolCallId (obbligatorio)
  • agentName / agentDisplayName / agentDescription (obbligatori)

subagent.completed

  • toolCallId (obbligatorio)
  • agentName / agentDisplayName (obbligatori)

subagent.failed

  • toolCallId (obbligatorio)
  • agentName / agentDisplayName (obbligatori)
  • error (obbligatorio)

subagent.selected

  • agentName (obbligatorio)
  • agentDisplayName (obbligatorio)
  • tools (obbligatorio, ammette null)

subagent.deselected

Ritorno all’agente predefinito (data è un oggetto vuoto).

skill.invoked

  • name / path / content (obbligatori)
  • allowedTools / pluginName / pluginVersion (opzionali)

Other events

abort

  • reason (obbligatorio)

user.message

  • content (obbligatorio)
  • transformedContent / attachments / source / agentMode / interactionId (opzionali)

system.message

  • content (obbligatorio)
  • role (obbligatorio)
  • name / metadata (opzionali)

external_tool.requested (ephemeral)

  • requestId / sessionId / toolCallId / toolName (obbligatori)
  • arguments (opzionale)

external_tool.completed (ephemeral)

  • requestId (obbligatorio)

exit_plan_mode.requested (ephemeral)

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

exit_plan_mode.completed (ephemeral)

  • requestId (obbligatorio)

command.queued (ephemeral)

  • requestId (obbligatorio)
  • command (obbligatorio)

command.completed (ephemeral)

  • requestId (obbligatorio)

Ordine tipico degli eventi

Elenco completo degli eventi (riferimento rapido)

Documenti correlati

Ultima modifica il 13 luglio 2026