Eventi di streaming
Abilitandostreaming: 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 (
deltaContentecc.). Concatenandoli si ricostruisce il testo intero parentIdchain: 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. quandoinfoTypeè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:
shellwritereadmcpurlmemorycustom-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, ammettenull)
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
- Reference ufficiale degli Streaming Events
- Descrizione della classe eventi per Laravel: SessionEvent
- Pattern di implementazione dello streaming: Streaming