
# Le composant de discussion IA

`ai-chat` est le seul type de sa catégorie. Il dessine un panneau de discussion raccordé à un agent déclaré par l'application, et accepte le sac de `props` partagé ainsi que les modules `visibility` et `responsive`.

| Propriété          | Description                                            |
| ------------------ | ------------------------------------------------------ |
| `agent`            | Nom d'un agent de `app.agents[]`.                      |
| `placeholder`      | Texte indicatif du champ de saisie.                    |
| `chatHeight`       | Hauteur du conteneur, en pixels.                       |
| `showHistory`      | Charge la conversation précédente à l'arrivée.         |
| `allowAttachments` | Autorise un lecteur à joindre un fichier à un message. |

`agent` nomme une entrée de [`app.agents[]`](/fr/docs/ai-agents) ; ce que l'agent sait faire — son modèle, ses outils, sa mémoire, ses règles d'approbation — se configure là-bas, pas ici.

```yaml
- type: ai-chat
  agent: support-assistant
  chatHeight: 480
  placeholder: 'Ask a question…'
  allowAttachments: true
```

## Il se dégrade honnêtement là où l'IA ne peut pas tourner

Une application peut déclarer un agent sur un déploiement où aucun fournisseur d'IA n'est configuré. Le rendu ne dessine alors pas un composeur cassé : il retire l'îlot et affiche une ligne `role="status"` indiquant que l'assistant n'est pas disponible ici.

C'est un composant qui dit la vérité sur lui-même, et c'est correct jusque-là — mais il ne peut pas céder la place à un composant _différent_. L'alternative à un composeur n'est pas un composeur désactivé ; c'est le plus souvent un déclencheur de recherche, c'est-à-dire un autre contrôle, avec un autre libellé, un autre raccourci clavier et un autre point d'entrée.

Le module `visibility` est ce qui exprime cela. `runtime: ai` n'affiche le composant que là où l'IA est à la fois déclarée par l'application et capable de tourner sur ce déploiement, et `unlessRuntime: ai` affiche son alternative partout ailleurs :

```yaml
- type: ai-chat
  agent: assistant
  visibility: { runtime: ai }
- type: command-palette
  visibility: { unlessRuntime: ai }
```

Nommer la même capacité dans les deux moitiés sur un seul composant est refusé au décodage de la configuration : soit l'IA tourne ici, soit elle ne tourne pas, si bien que le composant ne s'afficherait sur aucune instance — l'inverse de ce que son auteur a écrit, et invisible à l'exécution.

## Pages connexes

- [Présentation des agents](/fr/docs/ai-agents) — ce que l'agent nommé par `agent` sait faire.
- [Modules de composants partagés](/fr/docs/component-modules) — `visibility`, `responsive` et les autres modules transverses.
