> ## Documentation Index
> Fetch the complete documentation index at: https://wb-21fd5541-workspaces-notebooks.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# WeaveAdkPlugin

> Référence du SDK TypeScript

export const GitHubLink = ({url, compact = false}) => <a href={url} target="_blank" rel="noopener noreferrer" className={compact ? "source-link" : "github-source-link"}>
    {compact ? "voir la source" : <>
    <svg width="20" height="20" viewBox="0 0 24 24" fill="currentColor" xmlns="http://www.w3.org/2000/svg">
      <path d="M12 0C5.37 0 0 5.37 0 12c0 5.31 3.435 9.795 8.205 11.385.6.105.825-.255.825-.57 0-.285-.015-1.23-.015-2.235-3.015.555-3.795-.735-4.035-1.41-.135-.345-.72-1.41-1.23-1.695-.42-.225-1.02-.78-.015-.795.945-.015 1.62.87 1.845 1.23 1.08 1.815 2.805 1.305 3.495.99.105-.78.42-1.305.765-1.605-2.67-.3-5.46-1.335-5.46-5.925 0-1.305.465-2.385 1.23-3.225-.12-.3-.54-1.53.12-3.18 0 0 1.005-.315 3.3 1.23.96-.27 1.98-.405 3-.405s2.04.135 3 .405c2.295-1.56 3.3-1.23 3.3-1.23.66 1.65.24 2.88.12 3.18.765.84 1.23 1.905 1.23 3.225 0 4.605-2.805 5.625-5.475 5.925.435.375.81 1.095.81 2.22 0 1.605-.015 2.895-.015 3.3 0 .315.225.69.825.57A12.02 12.02 0 0024 12c0-6.63-5.37-12-12-12z" />
    </svg>
    Source GitHub
      </>}
  </a>;

<GitHubLink url="https://github.com/wandb/weave/blob/7c9efdc9fe05ffcaf2430dd652ef9bc5b3ffdfaa/sdks/node/src/integrations/googleAdk.ts#L589" />

Plugin ADK qui émet, sous forme de spans OTel GenAI-semconv, les invocations du runner, les runs d'agent, les appels de modèle et les
exécutions d'outils dans le pipeline d'agents de Weave.

Implémente structurellement l'intégralité de l'interface `BasePlugin`. Le PluginManager d'ADK
invoque chaque callback ; ils sont donc tous présents, même lorsqu'un callback n'effectue aucune opération.
ADK considère toute valeur de retour autre que `undefined` comme un court-circuit ; chaque callback
capture donc ses propres erreurs et renvoie `undefined`.

<div id="implements">
  ## Implémente
</div>

* `BasePlugin`

<div id="constructor">
  ## Constructeur
</div>

> **new WeaveAdkPlugin**(): `WeaveAdkPlugin`

<div id="returns">
  ### Renvoie
</div>

`WeaveAdkPlugin`

<div id="properties">
  ## Propriétés
</div>

<div id="name">
  ### nom
</div>

> `readonly` **nom**: `"weave"` = `WEAVE_ADK_PLUGIN_NAME`

<div id="implementation-of">
  #### Implémentation de
</div>

`AdkBasePlugin.name`

<div id="methods">
  ## Méthodes
</div>

<div id="afteragentcallback">
  ### afterAgentCallback()
</div>

> **afterAgentCallback**(`params`): `Promise`\<`undefined`>

Callback exécuté après l'exécution de la logique principale d'un agent.

Ce callback peut être utilisé pour inspecter, journaliser ou modifier le
résultat final de l'agent avant qu'il ne soit renvoyé.

<div id="parameters">
  #### Paramètres
</div>

<ParamField path="params" type="object" required>
  <Expandable title="propriétés" defaultOpen>
    <ParamField path="agent" type="BaseAgent" required>
      L’agent qui vient de s’exécuter.
    </ParamField>

    <ParamField path="callbackContext" type="Context" required>
      Le contexte de l’appel d’agent.
    </ParamField>
  </Expandable>
</ParamField>

<div id="returns-2">
  #### Renvoie
</div>

`Promise`\<`undefined`>

Un objet `Content` facultatif. Si une valeur est renvoyée, elle
remplace le résultat d'origine de l'agent. Renvoyer `undefined` conserve le
résultat d'origine, sans modification.

<div id="implementation-of-2">
  #### Implémentation de
</div>

`AdkBasePlugin.afterAgentCallback`

***

<div id="aftercontextcompaction">
  ### afterContextCompaction()
</div>

> **afterContextCompaction**(`_params`) : `Promise`\<`undefined`>

Callback exécuté après le compactage du contexte.

Ce callback permet d’inspecter le contexte
après son compactage.

<div id="parameters-2">
  #### Paramètres
</div>

<ParamField path="_params" type="unknown" required />

<div id="returns-3">
  #### Renvoie
</div>

`Promise`\<`undefined`>

<div id="implementation-of-3">
  #### Implémentation de
</div>

`AdkBasePlugin.afterContextCompaction`

***

<div id="aftermodelcallback">
  ### afterModelCallback()
</div>

> **afterModelCallback**(`params`): `Promise`\<`undefined`>

Callback exécuté après réception d’une réponse du modèle.

C’est l’emplacement idéal pour journaliser les réponses du modèle, collecter des métriques sur l’utilisation des jetons
ou effectuer un post-traitement sur le `LlmResponse` brut.

<div id="parameters-3">
  #### Paramètres
</div>

<ParamField path="params" type="object" required>
  <Expandable title="propriété" defaultOpen>
    <ParamField path="callbackContext" type="Context" required>
      Le contexte de l'appel d'agent en cours.
    </ParamField>

    <ParamField path="llmResponse" type="LlmResponse" required>
      L'objet de réponse renvoyé par le modèle.
    </ParamField>
  </Expandable>
</ParamField>

<div id="returns-4">
  #### Renvoie
</div>

`Promise`\<`undefined`>

Valeur facultative. Une valeur de retour autre que `undefined` peut être utilisée par le
framework pour modifier ou remplacer la réponse. Renvoyer `undefined`
permet d'utiliser la réponse d'origine.

<div id="implementation-of-4">
  #### Implémentation de
</div>

`AdkBasePlugin.afterModelCallback`

***

<div id="afterruncallback">
  ### afterRunCallback()
</div>

> **afterRunCallback**(`params`) : `Promise`\<`undefined`>

Callback exécuté une fois qu’une exécution du runner ADK est terminée.

Il s’agit du callback final du cycle de vie ADK, adapté au nettoyage,
à la journalisation finale ou aux tâches de génération de rapports.

<div id="parameters-4">
  #### Paramètres
</div>

<ParamField path="params" type="object" required>
  <Expandable title="propriétés" defaultOpen>
    <ParamField path="invocationContext" type="InvocationContext" required>
      Le contexte de l'invocation complète.
    </ParamField>
  </Expandable>
</ParamField>

<div id="returns-5">
  #### Renvoie
</div>

`Promise`\<`undefined`>

indéfini

<div id="implementation-of-5">
  #### Implémentation de
</div>

`AdkBasePlugin.afterRunCallback`

***

<div id="aftertoolcallback">
  ### afterToolCallback()
</div>

> **afterToolCallback**(`params`): `Promise`\<`undefined`>

Callback exécuté après l’appel d’un outil.

Ce callback permet d’inspecter, de journaliser ou de modifier le résultat
renvoyé par un outil.

<div id="parameters-5">
  #### Paramètres
</div>

<ParamField path="params" type="object" required>
  <Expandable title="propriétés" defaultOpen>
    <ParamField path="result" type="Record<string, unknown> | null" required>
      Le dictionnaire renvoyé par l'invocation de l'outil.
    </ParamField>

    <ParamField path="tool" type="BaseTool" required>
      L'instance de l'outil qui vient d'être exécutée.
    </ParamField>

    <ParamField path="toolArgs" type="Record<string, unknown>" required>
      Les arguments d'origine transmis à l'outil.
    </ParamField>

    <ParamField path="toolContext" type="Context" required>
      Le contexte propre à l'exécution de l'outil.
    </ParamField>
  </Expandable>
</ParamField>

<div id="returns-6">
  #### Renvoie
</div>

`Promise`\<`undefined`>

Un dictionnaire facultatif. Si un dictionnaire est renvoyé, il
**remplace** le résultat original de l’outil. Cela permet de
post-traiter ou de modifier les sorties de l’outil. Renvoyer `undefined` conserve
le résultat original, non modifié.

<div id="implementation-of-6">
  #### Implémentation de
</div>

`AdkBasePlugin.afterToolCallback`

***

<div id="beforeagentcallback">
  ### beforeAgentCallback()
</div>

> **beforeAgentCallback**(`params`): `Promise`\<`undefined`>

Callback exécuté avant la logique principale d’un agent.

Ce callback peut être utilisé pour la journalisation, la configuration ou pour interrompre prématurément l’exécution de l’agent en renvoyant une valeur.

<div id="parameters-6">
  #### Paramètres
</div>

<ParamField path="params" type="object" required>
  <Expandable title="propriétés" defaultOpen>
    <ParamField path="agent" type="BaseAgent" required>
      L’agent sur le point de s’exécuter.
    </ParamField>

    <ParamField path="callbackContext" type="Context" required>
      Le contexte de l’appel d’agent.
    </ParamField>
  </Expandable>
</ParamField>

<div id="returns-7">
  #### Renvoie
</div>

`Promise`\<`undefined`>

Un objet `Content` facultatif. Si une valeur est renvoyée, elle
contourne les callbacks de l’agent et son exécution, et est renvoyée directement.
Renvoyer `undefined` permet à l’agent de poursuivre normalement.

<div id="implementation-of-7">
  #### Implémentation de
</div>

`AdkBasePlugin.beforeAgentCallback`

***

<div id="beforecontextcompaction">
  ### beforeContextCompaction()
</div>

> **beforeContextCompaction**(`_params`) : `Promise`\<`undefined`>

Callback exécuté avant le compactage du contexte.

Ce callback permet d’inspecter ou de modifier le contexte
avant qu’il ne soit compacté.

<div id="parameters-7">
  #### Paramètres
</div>

<ParamField path="_params" type="unknown" required />

<div id="returns-8">
  #### Renvoie
</div>

`Promise`\<`undefined`>

<div id="implementation-of-8">
  #### Implémentation de
</div>

`AdkBasePlugin.beforeContextCompaction`

***

<div id="beforemodelcallback">
  ### beforeModelCallback()
</div>

> **beforeModelCallback**(`params`) : `Promise`\<`undefined`>

Callback exécuté avant l’envoi d’une requête au modèle.

Permet d’inspecter, de journaliser ou de modifier l’objet `LlmRequest`.
Peut également servir à implémenter la mise en cache en renvoyant une
`LlmResponse` mise en cache, ce qui évite l’appel de modèle réel.

<div id="parameters-8">
  #### Paramètres
</div>

<ParamField path="params" type="object" required>
  <Expandable title="propriété" defaultOpen>
    <ParamField path="callbackContext" type="Context" required>
      Le contexte de l'appel d'agent en cours.
    </ParamField>

    <ParamField path="llmRequest" type="LlmRequest" required>
      L'objet de requête préparé à envoyer au modèle.
    </ParamField>
  </Expandable>
</ParamField>

<div id="returns-9">
  #### Renvoie
</div>

`Promise`\<`undefined`>

Une valeur facultative. Une valeur différente de `undefined`
déclenche une sortie anticipée et renvoie immédiatement la réponse. Renvoyer
`undefined` permet à la requête LLM de se poursuivre normalement.

<div id="implementation-of-9">
  #### Implémentation de
</div>

`AdkBasePlugin.beforeModelCallback`

***

<div id="beforeruncallback">
  ### beforeRunCallback()
</div>

> **beforeRunCallback**(`params`): `Promise`\<`undefined`>

Callback exécuté avant l’exécution du runner ADK.

Il s’agit du premier callback appelé dans le cycle de vie, idéal pour les tâches globales de
configuration ou d’initialisation.

<div id="parameters-9">
  #### Paramètres
</div>

<ParamField path="params" type="object" required>
  <Expandable title="propriétés" defaultOpen>
    <ParamField path="invocationContext" type="InvocationContext" required>
      Le contexte de l’invocation complète, contenant
      les informations de session, l’agent racine, etc.
    </ParamField>
  </Expandable>
</ParamField>

<div id="returns-10">
  #### Renvoie
</div>

`Promise`\<`undefined`>

Un `Event` facultatif à renvoyer à l'ADK. Renvoyez une valeur
pour interrompre l'exécution du runner et le terminer avec cet événement.
Renvoyez `undefined` pour poursuivre normalement.

<div id="implementation-of-10">
  #### Implémentation de
</div>

`AdkBasePlugin.beforeRunCallback`

***

<div id="beforetoolcallback">
  ### beforeToolCallback()
</div>

> **beforeToolCallback**(`params`) : `Promise`\<`undefined`>

Callback exécuté avant l'appel d'un outil.

Ce callback est utile pour journaliser l'utilisation des outils, valider les entrées ou
modifier les arguments avant qu'ils ne soient transmis à l'outil.

<div id="parameters-10">
  #### Paramètres
</div>

<ParamField path="params" type="object" required>
  <Expandable title="propriétés" defaultOpen>
    <ParamField path="tool" type="BaseTool" required>
      L'instance de l'outil sur le point d'être exécutée.
    </ParamField>

    <ParamField path="toolArgs" type="Record<string, unknown>" required>
      Le dictionnaire des arguments à utiliser pour invoquer
      l'outil.
    </ParamField>

    <ParamField path="toolContext" type="Context" required>
      Le contexte propre à l'exécution de l'outil.
    </ParamField>
  </Expandable>
</ParamField>

<div id="returns-11">
  #### Renvoie
</div>

`Promise`\<`undefined`>

Un dictionnaire facultatif. Si un dictionnaire est renvoyé, l’exécution de l’outil est interrompue et cette réponse est renvoyée immédiatement. Renvoyer `undefined` utilise les arguments d’origine non modifiés.

<div id="implementation-of-11">
  #### Implémentation de
</div>

`AdkBasePlugin.beforeToolCallback`

***

<div id="beforetoolselection">
  ### beforeToolSelection()
</div>

> **beforeToolSelection**(`_params`) : `Promise`\<`undefined`>

Callback exécuté avant la sélection d’un outil.

Ce callback permet d’inspecter, de journaliser ou de modifier les
outils disponibles avant leur sélection.

<div id="parameters-11">
  #### Paramètres
</div>

<ParamField path="_params" type="unknown" required />

<div id="returns-12">
  #### Renvoie
</div>

`Promise`\<`undefined`>

Valeur facultative. Le framework peut utiliser une valeur de retour autre que
`undefined` pour modifier ou remplacer les outils disponibles. Renvoyer
`undefined` permet d'utiliser les outils d'origine.

<div id="implementation-of-12">
  #### Implémentation de
</div>

`AdkBasePlugin.beforeToolSelection`

***

<div id="finishinterruptedinvocation">
  ### finishInterruptedInvocation()
</div>

> **finishInterruptedInvocation**(`invocationId`): `void`

Finalise un run qui n’a jamais atteint `afterRunCallback`. ADK n’appelle
`afterRunCallback` qu’une fois la boucle d’événements vidée normalement. Par conséquent, un consommateur qui
quitte `runAsync` prématurément — ou un run annulé — laisse l’invocation
(et ses spans) ouverte. Le wrapper de runner d’auto-instrumentation appelle ceci depuis un
bloc `finally` pour les fermer en tant qu’interrompus. Idempotent : aucune opération si le run
est déjà terminé (le cas courant, lorsqu’il a été entièrement consommé).

<div id="parameters-12">
  #### Paramètres
</div>

<ParamField path="invocationId" type="string" required />

<div id="returns-13">
  #### Renvoie
</div>

`void`

***

<div id="oneventcallback">
  ### onEventCallback()
</div>

> **onEventCallback**(`params`): `Promise`\<`undefined`>

Callback exécuté après qu’un événement a été émis par le runner.

C’est l’emplacement idéal pour modifier l’événement avant qu’il ne soit
géré par l’application d’agent sous-jacente.

<div id="parameters-13">
  #### Paramètres
</div>

<ParamField path="params" type="object" required>
  <Expandable title="propriétés" defaultOpen>
    <ParamField path="event" type="Event" required>
      L'événement émis par le runner.
    </ParamField>

    <ParamField path="invocationContext" type="InvocationContext" required>
      Le contexte de l'invocation complète.
    </ParamField>
  </Expandable>
</ParamField>

<div id="returns-14">
  #### Renvoie
</div>

`Promise`\<`undefined`>

Valeur facultative. Une valeur de retour autre que `undefined` peut être utilisée par le
framework pour modifier ou remplacer la réponse. Renvoyer `undefined`
permet d'utiliser la réponse d'origine.

<div id="implementation-of-13">
  #### Implémentation de
</div>

`AdkBasePlugin.onEventCallback`

***

<div id="onmodelerrorcallback">
  ### onModelErrorCallback()
</div>

> **onModelErrorCallback**(`params`): `Promise`\<`undefined`>

Callback exécuté lorsqu’un appel de modèle rencontre une erreur.

Ce callback permet de gérer les erreurs de modèle de manière appropriée,
en fournissant éventuellement des réponses alternatives ou des mécanismes de récupération.

<div id="parameters-14">
  #### Paramètres
</div>

<ParamField path="params" type="object" required>
  <Expandable title="propriété" defaultOpen>
    <ParamField path="callbackContext" type="Context" required>
      Le contexte de l'appel d'agent en cours.
    </ParamField>

    <ParamField path="error" type="Error" required>
      L'exception levée lors de l'exécution du modèle.
    </ParamField>

    <ParamField path="llmRequest" type="LlmRequest" required>
      La requête envoyée au modèle au moment où l'erreur
      s'est produite.
    </ParamField>
  </Expandable>
</ParamField>

<div id="returns-15">
  #### Renvoie
</div>

`Promise`\<`undefined`>

Une LlmResponse facultative. Si une LlmResponse est renvoyée, elle est
utilisée au lieu de propager l’erreur. Renvoyer `undefined` permet
de lever l’erreur d’origine.

<div id="implementation-of-14">
  #### Implémentation de
</div>

`AdkBasePlugin.onModelErrorCallback`

***

<div id="ontoolerrorcallback">
  ### onToolErrorCallback()
</div>

> **onToolErrorCallback**(`params`) : `Promise`\<`undefined`>

Callback exécuté lorsqu’un appel d’outil rencontre une erreur.
tool: BaseTool;
toolArgs: Record\<string, unknown>;
toolContext: Context;
result: Record\<string, unknown>;
}): Promise\<Record\<string, unknown> | undefined> \{
return;
}

/\*\*
Callback exécuté lorsqu’un appel d’outil rencontre une erreur.

Ce callback permet de gérer les erreurs d’outil avec élégance,
en fournissant éventuellement des réponses alternatives ou des mécanismes de récupération.

<div id="parameters-15">
  #### Paramètres
</div>

<ParamField path="params" type="object" required>
  <Expandable title="properties" defaultOpen>
    <ParamField path="error" type="Error" required>
      L'exception levée lors de l'exécution de l'outil.
    </ParamField>

    <ParamField path="tool" type="BaseTool" required>
      L'instance de l'outil qui a rencontré une erreur.
    </ParamField>

    <ParamField path="toolArgs" type="Record<string, unknown>" required>
      Les arguments transmis à l'outil.
    </ParamField>

    <ParamField path="toolContext" type="Context" required>
      Le contexte propre à l'exécution de l'outil.
    </ParamField>
  </Expandable>
</ParamField>

<div id="returns-16">
  #### Renvoie
</div>

`Promise`\<`undefined`>

Un dictionnaire facultatif. Si un dictionnaire est renvoyé, il est
utilisé comme réponse de l’outil au lieu de propager l’erreur. Renvoyer
`undefined` permet de lever l’erreur d’origine.

<div id="implementation-of-15">
  #### Implémentation de
</div>

`AdkBasePlugin.onToolErrorCallback`

***

<div id="onusermessagecallback">
  ### onUserMessageCallback()
</div>

> **onUserMessageCallback**(`_params`): `Promise`\<`undefined`>

Callback exécuté lorsqu’un message utilisateur est reçu avant le début d’une invocation.

Ce callback permet de journaliser et de modifier le message utilisateur avant que le runner ne démarre l’invocation.

<div id="parameters-16">
  #### Paramètres
</div>

<ParamField path="_params" type="object" required>
  <Expandable title="propriétés" defaultOpen>
    <ParamField path="invocationContext" type="InvocationContext" required />

    <ParamField path="userMessage" type="Content" required />
  </Expandable>
</ParamField>

<div id="returns-17">
  #### Renvoie
</div>

`Promise`\<`undefined`>

Un `Content` facultatif à renvoyer à l’ADK. Renvoyez une
valeur pour remplacer le message de l’utilisateur. Renvoyez `undefined` pour poursuivre
normalement.

<div id="implementation-of-16">
  #### Implémentation de
</div>

`AdkBasePlugin.onUserMessageCallback`
