Aller au contenu principal

Événements du runtime

Tout ce que fait le runtime et auquel une autre partie du système peut réagir circule sous forme d'un RuntimeEvent sur un unique bus de diffusion in-process. L'application de bureau, les flux HTTP, le moteur de notifications, le journal d'audit et le magasin d'observabilité sont tous lecteurs de ce même bus.

Cette page est le catalogue. Elle est générée depuis la source Rust : elle dit donc ce que le binaire transporte, et non ce qu'une conception antérieure prévoyait.

Ce qu'est un nom de variante​

Un nom de variante est un contrat de fil. Il atteint l'application de bureau dans l'enveloppe runtime-event sous le champ event_type, et il atteint un client HTTP par les flux d'événements de tâche et de conversation. En renommer une casse tout lecteur qui filtrait dessus : un renommage est un changement de format de fil, pas un remaniement.

Les catégories, et pourquoi elles comptent plus que les noms​

Le pont de bureau ne transmet pas des noms de variantes que l'interface aurait à trier. Il attache une catégorie, et la vue web se branche dessus : une catégorie correspond à un rafraîchissement, un magasin, un panneau. Une variante ajoutée à une catégorie existante est lue par ce qui lit déjà cette catégorie ; une variante dotée d'une catégorie neuve n'est lue par personne tant qu'aucun auditeur n'existe pour elle.

C'est cette asymétrie qui met la catégorie dans le tableau ci-dessous. Trois variantes se trouvaient dans des catégories qu'aucun auditeur ne lisait : l'interface les recevait et n'en faisait rien, ce qu'aucun test et aucun compilateur ne pouvait voir.

Le retard​

Le bus est un anneau borné. Un abonné qui décroche reçoit un signalement de retard plutôt que les événements manqués. La règle tient en une ligne et vit en un seul endroit, apollia_core::events::ResilientReceiver : journaliser un WARN nommant l'abonné et le nombre d'événements perdus, se réabonner en queue, et poursuivre. Ne jamais paniquer sur un retard, et ne jamais perdre des événements sans le dire.

Les routes d'événements envoyés par le serveur sont la seule exception, nommée comme telle : elles confient un flux à la couche HTTP et un flux possède son récepteur, il n'y a donc rien à réabonner. Elles gardent la moitié de la règle qui reste atteignable, le WARN.

Le catalogue​

Le tableau porte les noms de variantes et la forme de leur charge utile. Les descriptions vivent dans les commentaires de documentation de la source, qui sont en anglais, et la règle « une langue par fichier » interdit de les servir ici : la page anglaise les rend.

Avant le tableau, une réserve qu'il ne porte pas. HookDecisionRecorded rapporte la décision d'un hook PreToolUse. Cette décision est appliquée au mieux : un gestionnaire qui expire, dont la livraison échoue, ou qui répond quelque chose d'illisible retombe sur allow, et l'appel d'outil passe.

Une seconde, sur PermissionRequired. Sa description anglaise annonce l'approbation humaine d'un appel d'outil, première ligne d'un commentaire de documentation dont le tableau ne peut pas porter la suite. L'unique émetteur de production est la garde de la boîte aux lettres des agents : il se déclenche quand un envoi d'agent à agent sous garde est refusé, avec tool_name valant mailbox:send. L'envoi n'attend aucune réponse, il lève immédiatement, si bien que le request_id porté par l'événement annonce une demande déjà tranchée.

a2a​

VarianteCharge utile
A2ACompatibilityWarningchamps nommés
A2AGuardTriggeredchamps nommés
A2AInvocationCompletedchamps nommés
A2AInvocationStartedchamps nommés
A2ASkillCompletedchamps nommés
A2ASkillInvokedchamps nommés

agent-changed​

VarianteCharge utile
AgentDegradedchamps nommés
AgentInstalledchamps nommés
AgentMessageAckedchamps nommés
AgentMessageDeliveredchamps nommés
AgentMessageDroppedchamps nommés
AgentMessageSentchamps nommés
AgentReadytuple
AgentRegisteredtuple
AgentStoppedtuple
AgentStoppingtuple
AgentUninstalledchamps nommés
MailboxGuardTriggeredchamps nommés

approval-changed​

VarianteCharge utile
BatchItemAwaitingApprovalchamps nommés
PermissionRequiredchamps nommés
TaskApprovalTimeoutchamps nommés
TaskInputRequiredchamps nommés
TaskResumedchamps nommés

chat-changed​

VarianteCharge utile
ChatApprovalRequiredchamps nommés
ChatApprovalResolvedchamps nommés
ChatApprovalTimeoutchamps nommés
ChatErrorchamps nommés
ChatMessageSentchamps nommés
ChatResponseCompletedchamps nommés
ChatResponseStartedchamps nommés
ChatSessionClosedchamps nommés
ChatSessionCreatedchamps nommés
ChatToolCallCompletedchamps nommés
ChatToolCallStartedchamps nommés
ChatUserInputRequiredchamps nommés
ChatUserInputResolvedchamps nommés
DecisionPointRecordedchamps nommés
ThinkingEndedchamps nommés
ThinkingStartedchamps nommés
ToolCallRetryingchamps nommés

chat-token​

VarianteCharge utile
ChatTokenchamps nommés

hook-decision​

VarianteCharge utile
HookDecisionRecordedchamps nommés

llm-changed​

VarianteCharge utile
CostCeilingReachedchamps nommés
LlmAgentModelFallbackchamps nommés
LlmCallCompletedchamps nommés
LlmCallFailedchamps nommés
LlmFallbackTriggeredchamps nommés
LlmModelFailedchamps nommés
LlmModelLoadingchamps nommés
LlmModelReadychamps nommés
LlmModelReloadedchamps nommés
LlmModelUnloadedchamps nommés
LlmResponseCapturedchamps nommés
MetaLlmBudgetExceededchamps nommés
TokenBudgetUpdatedchamps nommés

memory-changed​

VarianteCharge utile
SharedNamespaceAddedchamps nommés

onboarding-changed​

VarianteCharge utile
OnboardingCompletedchamps nommés
OnboardingRequiredaucune
OnboardingStartedchamps nommés

plan-approval​

VarianteCharge utile
PlanAbandonedchamps nommés
PlanApprovalRequiredchamps nommés
PlanApprovedchamps nommés
PlanRejectedchamps nommés

plan-mode​

VarianteCharge utile
ChatPlanApprovedchamps nommés
ChatPlanPhaseChangedchamps nommés
ChatPlanRejectedchamps nommés
PlanSubmittedchamps nommés
PlanUpdatedchamps nommés

session-metrics​

VarianteCharge utile
SessionMetricsUpdatedchamps nommés

stt-changed​

VarianteCharge utile
SttModelLoadedchamps nommés
SttRecordingStartedaucune
SttRecordingStoppedchamps nommés
SttTranscribedchamps nommés
SttTranscriptionFailedchamps nommés

system​

VarianteCharge utile
AllReadyaucune
ConfigInvalidchamps nommés
ConfigReloadedchamps nommés
ContextCompactedchamps nommés
FileModifiedSinceReadchamps nommés
GovernanceFailClosedchamps nommés
McpServerHealthChangedchamps nommés
McpServerReloadedchamps nommés
ShutdownRequestedaucune
ToolCircuitBrokenchamps nommés
ToolCircuitRestoredchamps nommés
ToolOutputCapturedchamps nommés

task-changed​

VarianteCharge utile
BashFilePathsExtractedchamps nommés
BatchEndedchamps nommés
PlanAlternativesGeneratedchamps nommés
PlanCacheHitchamps nommés
PlanCompletedchamps nommés
PlanFailedchamps nommés
PlanGeneratedchamps nommés
PlanReplanningchamps nommés
StepCompletedchamps nommés
StepFailedchamps nommés
StepStartedchamps nommés
TaskCanceledchamps nommés
TaskCompletedchamps nommés
TaskStartedchamps nommés
TodoUpdatedchamps nommés
VerificationCompletedchamps nommés
WorkflowStepCompletedchamps nommés
WorkflowStepFailedchamps nommés
WorkflowStepStartedchamps nommés

trace-event​

VarianteCharge utile
A2AInvokeCompletedchamps nommés
A2AInvokeStartedchamps nommés
ActionParseErrorchamps nommés
AgentLogchamps nommés
LlmCallStartedchamps nommés
ProfileReadchamps nommés
Retrychamps nommés
Thoughtchamps nommés
ToolCallCompletedchamps nommés
ToolCallDeniedchamps nommés
ToolCallStartedchamps nommés

trigger-fired​

VarianteCharge utile
TriggerDisabledchamps nommés
TriggerEnabledchamps nommés
TriggerErrorchamps nommés
TriggerFiredchamps nommés
TriggerQueueFullchamps nommés
TriggerSkippedchamps nommés
TriggersReloadedchamps nommés