> ## Documentation Index
> Fetch the complete documentation index at: https://docs.qaos.machdel.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Référence de configuration JSON

> Référence complète de chaque champ du fichier de configuration QAOS.

Le fichier de configuration QAOS est un document JSON qui spécifie entièrement une exécution de test. Sauvegardez-le n'importe où sur votre système et passez son chemin à `qaos run --config`.

***

## Exemples complets

### Mode QAOS

```json qaos-config.json theme={null}
{
  "name": "Audit complet du site — v2.1",
  "projectId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
  "maxBudget": 10,
  "agentInfo": {
    "environment": "staging",
    "triggeredBy": "ci-pipeline",
    "branch": "main"
  },
  "qaosMode": true,
  "qaosConfig": {
    "startUrl": "https://staging.example.com",
    "subAgents": ["security", "uiux"],
    "maxPages": 50,
    "maxDepth": 4
  }
}
```

### Mode guidé

```json qaos-config.json theme={null}
{
  "name": "Audit complet du site — v2.1",
  "projectId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
  "maxBudget": 10,
  "agentInfo": {
    "environment": "staging",
    "triggeredBy": "ci-pipeline",
    "branch": "main"
  },
  "tasks": [
    {
      "description": "Naviguer vers la page de connexion et se connecter avec les identifiants admin@example.com / password123",
      "context": "Utiliser le compte de test. La page de connexion dispose d'un formulaire standard nom d'utilisateur/mot de passe.",
      "startUrl": "https://staging.example.com/login",
      "subAgents": ["security", "uiux"]
    },
    {
      "description": "Parcourir le tableau de bord principal et interagir avec les tableaux de données",
      "startUrl": "https://staging.example.com/dashboard",
      "subAgents": ["security", "uiux"]
    },
    {
      "description": "Accéder au panneau d'administration et tenter d'effectuer des actions d'administration en tant qu'utilisateur ordinaire",
      "startUrl": "https://staging.example.com/admin",
      "subAgents": ["security"]
    },
    {
      "description": "Naviguer vers les paramètres du compte utilisateur, modifier le profil et changer le mot de passe",
      "startUrl": "https://staging.example.com/settings",
      "subAgents": ["security", "uiux"]
    }
  ]
}
```

***

## Champs de niveau racine

### `name` <span style={{color:'#dc2626'}}>requis</span>

**Type :** `string`

Un libellé lisible pour cette exécution, affiché dans le tableau de bord et les rapports. Utilisez des noms descriptifs qui identifient la portée et le contexte.

```json theme={null}
"name": "Audit de sécurité de production — T1 2025"
```

***

### `projectId` <span style={{color:'#dc2626'}}>requis</span>

**Type :** `string` (UUID)

L'ID du projet QAOS auquel cette exécution appartient. Trouvez les IDs de projet dans le [Tableau de bord](https://qaos.machdel.com) sous **Projets → Paramètres**.

```json theme={null}
"projectId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
```

***

### `agentInfo` <span style={{color:'#6b7280'}}>optionnel</span>

**Type :** `object`

Métadonnées clé-valeur arbitraires attachées à l'exécution et visibles dans le rapport. Utilisez cela pour suivre le contexte comme le nom de l'environnement, les infos du pipeline CI ou l'utilisateur déclencheur.

```json theme={null}
"agentInfo": {
  "environment": "staging",
  "commit": "abc1234",
  "triggeredBy": "github-actions"
}
```

***

### `websiteOrigin` <span style={{color:'#6b7280'}}>optionnel</span>

**Type :** `string`

Le répertoire racine du site web testé. Requis uniquement lorsqu'une `startUrl` est un **chemin de système de fichiers** — soit une URL `file://`, soit un chemin de lecteur Windows local (ex. : `C:/mon-site`).

Lorsqu'il est défini, chaque `startUrl` (dans toutes les tâches et dans `qaosConfig`) doit commencer par cette valeur. Les chemins sont comparés avec des barres obliques, donc `C:\mon-site` et `C:/mon-site` sont traités de la même façon.

<Note>
  Pour les URLs HTTP et HTTPS, vous pouvez omettez ce champ entièrement — il n'est pas utilisé.
</Note>

<Warning>
  Si une `startUrl` est un chemin de système de fichiers, l'exécution sera rejetée sauf si `websiteOrigin` est défini sur le répertoire racine du site.
</Warning>

```json theme={null}
"websiteOrigin": "C:/mon-site"
```

***

### `maxBudget` <span style={{color:'#6b7280'}}>optionnel</span>

**Type :** `number`

Budget maximum de l'exécution en USD. Lorsqu'il est défini, l'exécution est arrêtée dès que le coût OpenAI estimé atteint cette valeur.

```json theme={null}
"maxBudget": 5
```

Formule de coût utilisée par le serveur :

`costUsd = (inputTokens / 1000) * 0.00075 + (outputTokens / 1000) * 0.0045`

***

### `qaosMode` <span style={{color:'#6b7280'}}>optionnel</span>

**Type :** `boolean`

Quand `true`, active le mode d'exploration autonome. L'agent démarre depuis `qaosConfig.startUrl`, découvre les pages par lui-même et audite tout ce qu'il trouve. Le tableau `tasks` est ignoré.

```json theme={null}
"qaosMode": true
```

***

### `qaosConfig` <span style={{color:'#6b7280'}}>requis si `qaosMode: true`</span>

**Type :** `object`

Configuration de l'exploration autonome. Utilisé uniquement lorsque `qaosMode` est `true`.

| Champ       | Type   | Requis | Description                                                                                                                                                             |
| ----------- | ------ | ------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `startUrl`  | string | Oui    | L'URL depuis laquelle l'agent commence l'exploration. Doit inclure un schéma reconnu (`https://`, `http://`, `file://`, un chemin Windows ou un chemin absolu Unix/Mac) |
| `subAgents` | array  | Oui    | Agents à exécuter : `"security"`, `"uiux"`, ou les deux                                                                                                                 |
| `maxPages`  | number | Non    | Nombre maximum de pages à visiter. Omettez pour aucune limite                                                                                                           |
| `maxDepth`  | number | Non    | Profondeur maximale de liens à suivre depuis `startUrl`. Omettez pour aucune limite                                                                                     |

```json theme={null}
"qaosConfig": {
  "startUrl": "https://app.example.com",
  "subAgents": ["security", "uiux"],
  "maxPages": 20,
  "maxDepth": 3
}
```

***

### `tasks` <span style={{color:'#6b7280'}}>requis sauf si `qaosMode: true`</span>

**Type :** `array`

La liste des tâches du mode guidé à exécuter. Les tâches s'exécutent séquentiellement dans l'ordre où elles sont définies. Requis lorsque `qaosMode` n'est pas défini. Ignoré lorsque `qaosMode: true`.

***

## Champs de tâche

Chaque objet dans le tableau `tasks` :

### `description` <span style={{color:'#dc2626'}}>requis</span>

**Type :** `string`

Une description en langage naturel de ce que cette tâche doit faire. L'agent l'interprète pour décider quelles actions entreprendre, vers quelles pages naviguer et quoi rechercher. Des descriptions plus précises donnent de meilleurs résultats.

```json theme={null}
"description": "Aller sur la page de paiement, ajouter l'article #SKU-001 au panier, procéder au paiement et vérifier le formulaire de paiement pour les critères de sécurité"
```

***

### `context` <span style={{color:'#6b7280'}}>optionnel</span>

**Type :** `string`

Informations supplémentaires dont l'agent doit être conscient lors de l'exécution de cette tâche. Utile pour fournir des identifiants, expliquer un comportement spécifique à l'application ou signaler des limitations connues.

```json theme={null}
"context": "Utiliser les identifiants de test test@example.com / testpass123. Le tableau de bord peut prendre 2-3 secondes pour charger les données."
```

***

### `startUrl` <span style={{color:'#dc2626'}}>requis</span>

**Type :** `string`

L'URL vers laquelle l'agent navigue au début de cette tâche. Doit inclure un schéma reconnu :

* **URLs web** : `https://` ou `http://`
* **Chemins de système de fichiers** : URL `file://`, un chemin Windows (`C:/mon-site/page.html`), ou un chemin absolu Unix/Mac (`/home/user/site/page.html`)

<Warning>
  Omettre le schéma (ex. : écrire `example.com` au lieu de `https://example.com`) entraînera le rejet de l'exécution. Incluez toujours le schéma complet.
</Warning>

```json theme={null}
"startUrl": "https://app.example.com/login"
```

***

### `subAgents` <span style={{color:'#6b7280'}}>optionnel</span>

**Type :** `array` de `"security"` | `"uiux"`

Les modules d'agents à activer pour cette tâche. Accepte un tableau contenant une valeur, les deux, ou aucune. Un tableau vide est valide — l'agent naviguera et tentera de compléter la tâche, mais n'effectuera aucune évaluation de critères. Le cas d'usage principal est de vérifier qu'un flux peut être complété de bout en bout (la tâche échoue si l'agent ne peut pas la terminer, ce qui révèle des bugs dans le flux). Il peut aussi servir à préparer un état avant une tâche suivante qui, elle, effectuera des évaluations.

```json theme={null}
"subAgents": ["security", "uiux"]  // exécuter les deux
"subAgents": ["security"]          // sécurité uniquement
"subAgents": ["uiux"]              // UI/UX uniquement
"subAgents": []                    // évaluation du flux uniquement
```

| Agent        | Ce qu'il vérifie                                                                                                 |
| ------------ | ---------------------------------------------------------------------------------------------------------------- |
| `"security"` | Contrôle d'accès, injection, cryptographie, gestion des sessions, divulgation d'information                      |
| `"uiux"`     | Accessibilité, utilisabilité des formulaires, navigation au clavier, contraste des couleurs, conception réactive |

<Warning>
  Si un sous-agent est inclus dans `subAgents` mais que **tous** ses critères sont listés dans `ignoredIssueIds`, l'exécution sera rejetée avec une erreur. Retirez l'agent de `subAgents` ou réactivez au moins un de ses critères.
</Warning>

***

## Modèles courants

### Mode QAOS — audit complet du site

```json theme={null}
{
  "name": "Audit complet du site",
  "projectId": "votre-id-de-projet",
  "qaosMode": true,
  "qaosConfig": {
    "startUrl": "https://app.example.com",
    "subAgents": ["security", "uiux"],
    "maxPages": 50,
    "maxDepth": 4
  }
}
```

### Flux d'authentification en plusieurs étapes

```json theme={null}
{
  "tasks": [
    {
      "description": "Se connecter avec le nom d'utilisateur admin@example.com et le mot de passe TestPass123",
      "startUrl": "https://app.example.com/login",
      "subAgents": ["security", "uiux"]
    },
    {
      "description": "Parcourir le tableau de bord authentifié et la page de profil utilisateur",
      "startUrl": "https://app.example.com/dashboard",
      "subAgents": ["security", "uiux"]
    }
  ]
}
```

### Audit d'administration axé sur la sécurité

```json theme={null}
{
  "tasks": [
    {
      "description": "Tenter d'accéder au panneau d'administration à /admin sans authentification",
      "startUrl": "https://app.example.com/admin",
      "subAgents": ["security"]
    },
    {
      "description": "Se connecter en tant qu'utilisateur ordinaire et tenter d'accéder aux endpoints réservés aux administrateurs",
      "startUrl": "https://app.example.com/login",
      "context": "Identifiants utilisateur ordinaire : user@example.com / UserPass123",
      "subAgents": ["security"]
    }
  ]
}
```

### Vérification d'accessibilité uniquement

```json theme={null}
{
  "tasks": [
    {
      "description": "Examiner la page d'accueil pour les critères d'accessibilité",
      "startUrl": "https://app.example.com/",
      "subAgents": ["uiux"]
    },
    {
      "description": "Parcourir le formulaire d'inscription et le formulaire de contact pour les critères d'accessibilité",
      "startUrl": "https://app.example.com/register",
      "subAgents": ["uiux"]
    }
  ]
}
```

### Tâche de complétion uniquement (sans évaluation)

Utilisez `"subAgents": []` pour vérifier qu'un flux peut être complété sans rechercher de critères spécifiques. La tâche échoue si l'agent ne peut pas la terminer, ce qui révèle des bugs dans le flux lui-même. Il est également possible de l'utiliser pour préparer un état (ex. : connexion) avant une tâche suivante qui effectuera des évaluations.

```json theme={null}
{
  "tasks": [
    {
      "description": "Se connecter au site web",
      "context": "Utilise les informations d'identification test@example.com / testpass123",
      "startUrl": "https://app.example.com/login",
      "subAgents": []
    },
    {
      "description": "Parcourir le tableau de bord authentifié",
      "startUrl": "https://app.example.com/dashboard",
      "subAgents": ["security", "uiux"]
    }
  ]
}
```

### Tester un site statique local

Utilisez des chemins de système de fichiers pour tester un site statique servi localement. Définissez `websiteOrigin` sur le répertoire racine et utilisez des chemins complets pour chaque tâche.

```json theme={null}
{
  "name": "Audit du site local",
  "projectId": "votre-id-de-projet",
  "websiteOrigin": "C:/mon-site",
  "tasks": [
    {
      "description": "Examiner la page d'accueil pour les critères d'accessibilité",
      "startUrl": "C:/mon-site/index.html",
      "subAgents": ["uiux"]
    },
    {
      "description": "Examiner le formulaire de contact pour les critères d'accessibilité et de sécurité",
      "startUrl": "C:/mon-site/contact.html",
      "subAgents": ["security", "uiux"]
    }
  ]
}
```
