Aller au contenu
English

ReporterHandlers

import type { ReporterHandlers } from "@elie-laloum/outpost";
  • stderrOptionnel
    ((event: { readonly kind: "stderr"; readonly text: string; readonly truncated?: boolean; } & { readonly subagentId?: string; } & { readonly pass: number; readonly at: string; readonly seq?: number; readonly source?: ObservationSource; readonly scope?: ObservationScope; }) => void | Promise<void>) | undefined
    Reçoit la stderr de l’agent ligne par ligne, chacune d’au plus 8192 caractères ; truncated signale une ligne coupée.
  • model-routeOptionnel
    ((event: ModelRouteEvent & { readonly subagentId?: string; } & { readonly pass: number; readonly at: string; readonly seq?: number; readonly source?: ObservationSource; readonly scope?: ObservationScope; }) => void | Promise<void>) | undefined
    Traiter la sélection effective de modèle d’une étape routée, avec motif de repli et confiance facultative.
  • subagentOptionnel
    ((event: { readonly kind: "subagent"; readonly id: string; readonly callId: string; readonly name: string; readonly status: "started" | "finished" | "failed"; readonly conversation?: string; } & { readonly subagentId?: string; } & { readonly pass: number; readonly at: string; readonly seq?: number; readonly source?: ObservationSource; readonly scope?: ObservationScope; }) => void | Promise<void>) | undefined
    Reçoit le démarrage, la fin ou l’échec d’un sous-agent du harness intégré, avec l’appel de délégation et l’identifiant de transcript quand il est stocké.
  • finishedOptionnel
    ((event: { readonly kind: "finished"; } & { readonly subagentId?: string; } & { readonly pass: number; readonly at: string; readonly seq?: number; readonly source?: ObservationSource; readonly scope?: ObservationScope; }) => void | Promise<void>) | undefined
    Reçoit la fin réussie du tour de l’agent, avant qu’Outpost ne collecte les commits et ne fasse le ménage.
  • message-usageOptionnel
    ((event: { readonly kind: "message-usage"; readonly tokens: Usage; readonly messageId?: string; readonly parentCallId?: string; } & { readonly subagentId?: string; } & { readonly pass: number; readonly at: string; readonly seq?: number; readonly source?: ObservationSource; readonly scope?: ObservationScope; }) => void | Promise<void>) | undefined
    Reçoit l’usage que Claude Code rapporte pour chaque message, avec ses identifiants de message et d’appel parent. Il est informatif : l’usage du dispatch compte les totaux des tours.
  • stoppedOptionnel
    ((event: { readonly kind: "stopped"; readonly reason: "completion" | "idle-timeout" | "deadline" | "aborted" | "oversized-event" | "steered"; } & { readonly subagentId?: string; } & { readonly pass: number; readonly at: string; readonly seq?: number; readonly source?: ObservationSource; readonly scope?: ObservationScope; }) => void | Promise<void>) | undefined
    Reçoit la raison pour laquelle Outpost a arrêté le processus de l’agent : completion, idle-timeout, deadline, aborted, oversized-event ou steered.
  • steerOptionnel
    ((event: { readonly kind: "steer"; readonly text: string; readonly mode: SteeringMode; } & { readonly subagentId?: string; } & { readonly pass: number; readonly at: string; readonly seq?: number; readonly source?: ObservationSource; readonly scope?: ObservationScope; }) => void | Promise<void>) | undefined
    Reçoit une consigne de steering remise à l’agent et indique si elle a été injectée ou reprise.
  • reasoningOptionnel
    ((event: { readonly kind: "reasoning"; readonly text: string; readonly parentCallId?: string; } & { readonly subagentId?: string; } & { readonly pass: number; readonly at: string; readonly seq?: number; readonly source?: ObservationSource; readonly scope?: ObservationScope; }) => void | Promise<void>) | undefined
    Reçoit le texte de raisonnement lisible exposé par l’agent ou le modèle.
  • file-changeOptionnel
    ((event: { readonly kind: "file-change"; readonly changes: unknown; readonly callId?: string; } & { readonly subagentId?: string; } & { readonly pass: number; readonly at: string; readonly seq?: number; readonly source?: ObservationSource; readonly scope?: ObservationScope; }) => void | Promise<void>) | undefined
    Reçoit les modifications de fichiers rapportées par Codex, sans modification.
  • model-requestOptionnel
    ((event: { readonly kind: "model-request"; readonly request: unknown; } & { readonly subagentId?: string; } & { readonly pass: number; readonly at: string; readonly seq?: number; readonly source?: ObservationSource; readonly scope?: ObservationScope; }) => void | Promise<void>) | undefined
    Reçoit chaque requête du harness intégré au modèle quand le hub est verbose ; elle peut contenir des instructions privées.
  • model-responseOptionnel
    ((event: { readonly kind: "model-response"; readonly response: unknown; } & { readonly subagentId?: string; } & { readonly pass: number; readonly at: string; readonly seq?: number; readonly source?: ObservationSource; readonly scope?: ObservationScope; }) => void | Promise<void>) | undefined
    Reçoit chaque réponse du modèle au harness intégré quand le hub est verbose.
  • model-retryOptionnel
    ((event: { readonly kind: "model-retry"; readonly attempt: number; readonly message?: string; } & { readonly subagentId?: string; } & { readonly pass: number; readonly at: string; readonly seq?: number; readonly source?: ObservationSource; readonly scope?: ObservationScope; }) => void | Promise<void>) | undefined
    Reçoit une nouvelle tentative rapportée par le provider de modèle, avec son numéro et son message.
  • model-errorOptionnel
    ((event: { readonly kind: "model-error"; readonly message: string; } & { readonly subagentId?: string; } & { readonly pass: number; readonly at: string; readonly seq?: number; readonly source?: ObservationSource; readonly scope?: ObservationScope; }) => void | Promise<void>) | undefined
    Reçoit le message d’une requête au modèle du harness intégré qui a échoué.
  • hookOptionnel
    ((event: { readonly kind: "hook"; readonly phase: string; readonly changed: boolean; } & { readonly subagentId?: string; } & { readonly pass: number; readonly at: string; readonly seq?: number; readonly source?: ObservationSource; readonly scope?: ObservationScope; }) => void | Promise<void>) | undefined
    Reçoit un hook du harness intégré terminé, avec sa phase et s’il a changé quelque chose.
  • instructions-loadedOptionnel
    ((event: { readonly kind: "instructions-loaded"; readonly count: number; } & { readonly subagentId?: string; } & { readonly pass: number; readonly at: string; readonly seq?: number; readonly source?: ObservationSource; readonly scope?: ObservationScope; }) => void | Promise<void>) | undefined
    Reçoit le nombre de sources d’instructions non vides résolues pour un tour du harness intégré.
  • skills-loadedOptionnel
    ((event: { readonly kind: "skills-loaded"; readonly names: readonly string[]; } & { readonly subagentId?: string; } & { readonly pass: number; readonly at: string; readonly seq?: number; readonly source?: ObservationSource; readonly scope?: ObservationScope; }) => void | Promise<void>) | undefined
    Reçoit les skills nouvellement chargés dans une conversation du harness intégré.
  • tool-outputOptionnel
    ((event: { readonly kind: "tool-output"; readonly callId: string; readonly channel: "stdout" | "stderr"; readonly text: string; } & { readonly subagentId?: string; } & { readonly pass: number; readonly at: string; readonly seq?: number; readonly source?: ObservationSource; readonly scope?: ObservationScope; }) => void | Promise<void>) | undefined
    Reçoit la sortie des commandes d’outils du harness intégré par morceaux d’au plus 8192 caractères, reliés par callId.
  • phaseOptionnel
    ((event: { readonly kind: "phase"; readonly name: string; readonly agent?: string; readonly branch?: string; readonly directory?: string; } & { readonly subagentId?: string; } & { readonly pass: number; readonly at: string; readonly seq?: number; readonly source?: ObservationSource; readonly scope?: ObservationScope; }) => void | Promise<void>) | undefined
    Reçoit une phase du dispatch (preparing prompt, running, preparation failed) avec le nom de l’agent, la branche et le répertoire du workspace quand ils sont connus.
  • summaryOptionnel
    ((event: { readonly kind: "summary"; readonly durationMs: number; readonly status: number; readonly tokens: Usage; } & { readonly subagentId?: string; } & { readonly pass: number; readonly at: string; readonly seq?: number; readonly source?: ObservationSource; readonly scope?: ObservationScope; }) => void | Promise<void>) | undefined
    Reçoit la fin d’une passe : sa durée, son statut de sortie et son usage total de tokens.
  • warningOptionnel
    ((event: { readonly kind: "warning"; readonly message: string; } & { readonly subagentId?: string; } & { readonly pass: number; readonly at: string; readonly seq?: number; readonly source?: ObservationSource; readonly scope?: ObservationScope; }) => void | Promise<void>) | undefined
    Reçoit un avertissement non bloquant, comme un usage incomplet ou une divergence de rejeu en mode warn.
  • textOptionnel
    ((event: { readonly kind: "text"; readonly text: string; } & { readonly subagentId?: string; } & { readonly pass: number; readonly at: string; readonly seq?: number; readonly source?: ObservationSource; readonly scope?: ObservationScope; }) => void | Promise<void>) | undefined
    Reçoit un bloc de texte de l’agent.
  • text-deltaOptionnel
    ((event: { readonly kind: "text-delta"; readonly text: string; } & { readonly subagentId?: string; } & { readonly pass: number; readonly at: string; readonly seq?: number; readonly source?: ObservationSource; readonly scope?: ObservationScope; }) => void | Promise<void>) | undefined
    Reçoit un fragment de texte diffusé par Claude Code avec partialMessages ou par le harness intégré.
  • resultOptionnel
    ((event: { readonly kind: "result"; readonly text: string; } & { readonly subagentId?: string; } & { readonly pass: number; readonly at: string; readonly seq?: number; readonly source?: ObservationSource; readonly scope?: ObservationScope; }) => void | Promise<void>) | undefined
    Reçoit le texte de la réponse finale de l’agent pour le tour.
  • promptOptionnel
    ((event: { readonly kind: "prompt"; readonly text: string; } & { readonly subagentId?: string; } & { readonly pass: number; readonly at: string; readonly seq?: number; readonly source?: ObservationSource; readonly scope?: ObservationScope; }) => void | Promise<void>) | undefined
    Reçoit le prompt rendu envoyé au début de chaque passe.
  • toolOptionnel
    ((event: { readonly kind: "tool"; readonly name: string; readonly input: unknown; readonly callId?: string; readonly parentCallId?: string; } & { readonly subagentId?: string; } & { readonly pass: number; readonly at: string; readonly seq?: number; readonly source?: ObservationSource; readonly scope?: ObservationScope; }) => void | Promise<void>) | undefined
    Reçoit un appel d’outil avec son nom, son entrée brute et, quand le protocole les fournit, ses identifiants d’appel et d’appel parent.
  • tool-resultOptionnel
    ((event: { readonly kind: "tool-result"; readonly callId: string; readonly name: string; readonly isError: boolean; readonly preview: string; readonly characters: number; readonly parentCallId?: string; } & { readonly subagentId?: string; } & { readonly pass: number; readonly at: string; readonly seq?: number; readonly source?: ObservationSource; readonly scope?: ObservationScope; }) => void | Promise<void>) | undefined
    Reçoit un résultat d’outil avec son identifiant d’appel, son indicateur d’erreur, ses 2000 premiers caractères et sa longueur totale.
  • stepOptionnel
    ((event: { readonly kind: "step"; readonly index: number; } & { readonly subagentId?: string; } & { readonly pass: number; readonly at: string; readonly seq?: number; readonly source?: ObservationSource; readonly scope?: ObservationScope; }) => void | Promise<void>) | undefined
    Reçoit le début d’une étape du harness intégré, avant sa requête au modèle.
  • tool-deniedOptionnel
    ((event: { readonly kind: "tool-denied"; readonly callId: string; readonly name: string; readonly reason: string; } & { readonly subagentId?: string; } & { readonly pass: number; readonly at: string; readonly seq?: number; readonly source?: ObservationSource; readonly scope?: ObservationScope; }) => void | Promise<void>) | undefined
    Reçoit un appel d’outil du harness intégré refusé par les permissions ou un hook, avec la raison.
  • stop-preventedOptionnel
    ((event: { readonly kind: "stop-prevented"; readonly message: string; } & { readonly subagentId?: string; } & { readonly pass: number; readonly at: string; readonly seq?: number; readonly source?: ObservationSource; readonly scope?: ObservationScope; }) => void | Promise<void>) | undefined
    Reçoit une réponse finale refusée par un hook d’arrêt du harness intégré, avec le message renvoyé au modèle.
  • compactionOptionnel
    ((event: { readonly kind: "compaction"; readonly strategy: string; readonly messages: number; } & { readonly subagentId?: string; } & { readonly pass: number; readonly at: string; readonly seq?: number; readonly source?: ObservationSource; readonly scope?: ObservationScope; }) => void | Promise<void>) | undefined
    Reçoit une compaction de l’historique du harness intégré, avec le nom de la stratégie et le nombre de messages obtenu.
  • conversationOptionnel
    ((event: { readonly kind: "conversation"; readonly id: string; } & { readonly subagentId?: string; } & { readonly pass: number; readonly at: string; readonly seq?: number; readonly source?: ObservationSource; readonly scope?: ObservationScope; }) => void | Promise<void>) | undefined
    Reçoit l’identifiant de conversation natif dès que l’agent le rapporte.
  • usageOptionnel
    ((event: { readonly kind: "usage"; readonly tokens: Usage; readonly cumulative?: boolean; } & { readonly subagentId?: string; } & { readonly pass: number; readonly at: string; readonly seq?: number; readonly source?: ObservationSource; readonly scope?: ObservationScope; }) => void | Promise<void>) | undefined
    Reçoit chaque incrément de tokens compté dans l’usage du dispatch ; les totaux de session arrivent déjà convertis en incréments.
  • failureOptionnel
    ((event: { readonly kind: "failure"; readonly message: string; } & { readonly subagentId?: string; } & { readonly pass: number; readonly at: string; readonly seq?: number; readonly source?: ObservationSource; readonly scope?: ObservationScope; }) => void | Promise<void>) | undefined
    Reçoit un échec rapporté par le protocole de l’agent. Les rejets sans échec protocolaire, comme les timeouts, ne produisent pas d’événement failure.
  • quotaOptionnel
    ((event: { readonly kind: "quota"; readonly message: string; readonly resetAt?: string; } & { readonly subagentId?: string; } & { readonly pass: number; readonly at: string; readonly seq?: number; readonly source?: ObservationSource; readonly scope?: ObservationScope; }) => void | Promise<void>) | undefined
    Reçoit un signal de limite d’usage ou de débit, avec son heure de réinitialisation quand elle est rapportée. Le signal seul ne fait pas échouer le tour.
  • fallbackOptionnel
    ((event: { readonly kind: "fallback"; readonly from: FallbackCandidate; readonly to: FallbackCandidate; readonly failure: FallbackTrigger; readonly message: string; readonly resetAt?: string; } & { readonly subagentId?: string; } & { readonly pass: number; readonly at: string; readonly seq?: number; readonly source?: ObservationSource; readonly scope?: ObservationScope; }) => void | Promise<void>) | undefined
    Reçoit le passage d’un agent de secours à son candidat suivant, avec les deux candidats, la catégorie d’échec et son message.
  • rawOptionnel
    ((event: { readonly kind: "raw"; readonly value: unknown; readonly bytes?: number; readonly truncated?: boolean; } & { readonly subagentId?: string; } & { readonly pass: number; readonly at: string; readonly seq?: number; readonly source?: ObservationSource; readonly scope?: ObservationScope; }) => void | Promise<void>) | undefined
    Reçoit chaque ligne brute du protocole, qui peut contenir des prompts, des contenus de fichiers ou des secrets.
export type ReporterHandlers = {
  readonly [Kind in AgentObservation["kind"]]?: (
    event: Extract<
      AgentObservation,
      {
        kind: Kind;
      }
    >,
  ) => void | Promise<void>;
};