
# Actions de code

La famille `code` exécute du TypeScript personnalisé comme étape d'automatisation pour la logique que les actions déclaratives ne couvrent pas. Un operator, `runTypescript`. La source est une fonction nommée `execute(context)` dont le corps est **vérifié au niveau des types au démarrage du serveur**.

| Prop        | Description                                                                                                                                                                                                   |
| ----------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `code`      | Source TypeScript pour une fonction nommée `execute(context)`. Dans les configurations TS, enveloppez avec `String(function execute(context: CodeContext) { … })` pour l'autocomplétion de l'IDE. **Requis.** |
| `inputData` | Paires clé-valeur résolues par gabarit transmises comme `context.inputData`.                                                                                                                                  |
| `input`     | Paires clé-valeur résolues par gabarit transmises comme `context.input` (mêmes règles de résolution que `inputData`).                                                                                         |
| `packages`  | Spécificateurs de paquets npm avec épinglage de version optionnel (par ex. `lodash`, `date-fns@3.6.0`, `@scope/pkg@1.2.3`). Résolus/installés au démarrage de l'application ou via `sovrium install`.         |
| `timeout`   | Timeout d'exécution en ms (1000–300000, par défaut 30000).                                                                                                                                                    |

## Contexte de code

La fonction `execute` reçoit un objet `context` :

| Membre              | Description                                                               |
| ------------------- | ------------------------------------------------------------------------- |
| `context.trigger`   | La charge utile du déclencheur.                                           |
| `context.steps`     | Sorties des étapes précédentes, indexées par nom d'étape.                 |
| `context.inputData` | Entrées résolues par gabarit depuis la prop `inputData`.                  |
| `context.input`     | Entrées résolues par gabarit depuis la prop `input`.                      |
| `context.env`       | Variables d'environnement (valeurs sensibles masquées dans les journaux). |
| `context.actions`   | Invoque des actions natives ou des modèles réutilisables depuis le code.  |
| `context.packages`  | Les paquets npm déclarés, accessibles par nom.                            |
| `context.log`       | Journalisation structurée : `info`, `warn`, `error`.                      |

```yaml
- name: enrich-lead
  type: code
  operator: runTypescript
  props:
    packages: [date-fns]
    inputData: { url: '{{trigger.data.profile_url}}' }
    code: |
      async function execute(context) {
        const res = await context.actions.http.get({ url: context.inputData.url })
        context.log.info('fetched', res.status)
        return { score: res.body.score, fetchedAt: new Date().toISOString() }
      }
```

:::callout
**Vérifié au niveau des types au démarrage, isolé en sandbox à l'exécution.** Le corps de `execute` est validé au démarrage de l'application, de sorte qu'une fonction malformée échoue rapidement plutôt qu'en cours d'exécution. Les `packages` déclarés sont résolus à l'avance et exposés via `context.packages` — ils ne sont pas récupérés à la demande à l'intérieur de la sandbox.
:::

## Pages connexes

- [Vue d'ensemble des actions](/fr/docs/automation-actions-overview) — invocation des actions natives (également disponibles via `context.actions`) et des modèles `ref` réutilisables.
- [Variables d'environnement](/fr/docs/automation-env-vars) — `context.env` et masquage des secrets.
- [HTTP et webhooks](/fr/docs/automation-http-actions) — les actions HTTP accessibles depuis le code.
