# Commandes et état de la création avec IA

<PageBadges />

## Référence des commandes

Le mode AI accepte des demandes en langage naturel et des commandes préfixées. Toute saisie sans
préfixe est envoyée au modèle ; chaque commande déterministe commence par `/`. Utilisez par exemple
`/preview`, et non `preview`.

| Commande                       | Rôle                                                                              |
| ------------------------------ | --------------------------------------------------------------------------------- |
| `/help`                        | Affiche le résumé aligné des commandes AI.                                        |
| `/status`                      | Affiche schéma, brouillon, modèle, authentification, politique, activité et file. |
| `/providers`                   | Liste fournisseurs Pi, méthodes d'authentification et nombres de modèles.         |
| `/models <provider>`           | Liste les identifiants de modèles d'un fournisseur.                               |
| `/login <provider> <method>`   | Authentifie via le flux `api_key` ou `oauth` défini par Pi.                       |
| `/model [provider/model]`      | Ouvre le sélecteur ou choisit explicitement un fournisseur et un modèle.          |
| `/privacy`                     | Explique la politique cloud et de consentement effective du schéma.               |
| `/load [file\|form]`           | Charge un autre formulaire et bascule vers sa conversation propre.                |
| `/preview`                     | Affiche l'arbre lisible du formulaire de travail.                                 |
| `/json`                        | Affiche le schéma de travail en JSON brut.                                        |
| `/validate`                    | Valide le schéma de travail, y compris une proposition non appliquée.             |
| `/serve [options]`             | Lance l'aperçu ; `--app` lance aussi l'application configurée.                    |
| `/serve status`, `/serve stop` | Inspecte ou arrête les serveurs sans quitter le mode AI.                          |
| `/diff`                        | Affiche les changements cumulés depuis l'entrée en mode AI.                       |
| `/diff --pending`              | Affiche uniquement les changements depuis la dernière application.                |
| `/apply [schema-path]`         | Revérifie et enregistre atomiquement la proposition.                              |
| `/discard`                     | Abandonne le brouillon et restaure l'aperçu validé.                               |
| `/undo`                        | Prépare le dernier schéma enregistré dans cette session pour approbation.         |
| `/new`                         | Démarre une conversation en conservant le modèle sélectionné.                     |
| `/clear`                       | Efface l'historique du formulaire et conserve le modèle.                          |
| `/cancel`                      | Annule la requête active et vide la file des suivis.                              |
| `/exit`                        | Revient au shell ; demande confirmation si une proposition n'est pas appliquée.   |

## État

L'état est local : il ne contacte pas le fournisseur et ne consulte pas les crédits :

```ansi
form0(ai)> /status

AI authoring status
  Schema:             /project/form.schema.json
  Draft:              none
  Provider:           openai-codex
  Model:              gpt-5.6-luna
  Cloud policy:       allowed
  Conversation:       persisted
  Activity:           idle
  Queued follow-ups:  0
  Authentication:
    openai-codex  oauth (stored, subscription) [selected]
```

L'authentification indique la source et le type, sans jamais afficher d'identifiant. Un fournisseur
peut être authentifié sans être sélectionné et l'authentification ne garantit pas des crédits.

## Invites prête et occupée

Une requête change l'état de l'invite et affiche le modèle actif :

```ansi
[AI] Thinking with openai-codex/gpt-5.6-luna…
form0(ai,busy)>
```

Avec le serveur actif, l'invite est `form0(server,ai,busy)>`. À la fin, elle redevient
`form0(ai)>` ou `form0(server,ai)>`.

Appuyer sur Entrée sur une ligne vide ne fait rien et réaffiche l'invite. Le texte saisi pendant le
traitement rejoint une file FIFO et sa position est confirmée.

## Commandes disponibles pendant le traitement

Pendant une requête, `/help`, `/status`, `/privacy`, `/cancel`, `/serve status` et `/serve stop`
restent disponibles. Les autres commandes sont refusées jusqu'à la fin, afin d'éviter de modifier
modèle, conversation ou brouillon sous une requête active.

L'annulation demande à Pi d'arrêter la requête et vide tous les suivis. Si elle réussit, l'invite
prête revient sans afficher l'abandon du fournisseur comme une seconde erreur.
