Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
93 changes: 75 additions & 18 deletions docs-site/src/content/docs/fr/reference/cli/providers-accounts.md
Original file line number Diff line number Diff line change
Expand Up @@ -100,20 +100,26 @@ Répertoriez et changez de compte de fournisseur et de pools de clés API via le
la surface est :

```text
Usage: ocx account <list|current|use|refresh|auto-switch|priority|login|reauth|code|cancel|remove|add-key|reset-credits> ...

list [provider] Codex account pool, OAuth accounts and API keys (identifiers shown masked as the API returns them).
current <provider> Show the active account or key.
use <provider> <id> Switch the active credential; 'main' selects the Codex App login.
refresh <provider> Force-refresh Codex or provider quota reports.
auto-switch <provider> <on|off|status|threshold N> Control the Codex pool threshold.
priority <provider> <id|main> [first|earlier|normal|later|last|-100..100|reset] Selection order; omit the value to read it.
remove <provider> <id> --yes Remove a stored account or key after an existence check.
add-key <provider> [--label <label>] Add a key read only from piped stdin.
login/reauth/code/cancel Run browser or manual-code auth from a headless shell.
reset-credits <id|main> [--consume --yes] Inspect or consume Codex reset credits.
Switching the active account takes effect immediately; running threads move on their next request, and in-flight requests keep the account they captured.
A selection-order change applies from the next unbound request and never moves a bound thread.
Usage:
ocx account list [provider] [--json] [--all]
ocx account current <provider> [--json]
ocx account use <provider> <account-or-key-id|main> [--json]
ocx account refresh <provider> [--json]
ocx account auto-switch <provider> <on|off|status|threshold <0-100>> [--json]
ocx account alias <provider> <account-or-key-id> <display-name|-> [--json]
ocx account priority <provider> <account-id|main> [<-100..100|first|earlier|normal|later|last|reset>] [--json]
ocx account remove <provider> <account-or-key-id|main> --yes [--json]
ocx account clear-cooldown <provider> <account-id|main> [--json]
ocx account add-key <provider> [--label <label>] [--json]
ocx account import <provider> --format <format> (--file <path>|--stdin) [--json]
ocx account login <provider> [--id <account-id>] [--reauth] [--code -] [--no-wait] [--json]
ocx account code <provider> [--flow <flow-id>] [--json] (reads the code from stdin)
ocx account cancel <provider> [--flow <flow-id>] [--json]
ocx account reset-credits <account-id|main> [--consume --yes] [--json]
ocx account main <doctor|list|register|add|switch|recover> ...

List and switch provider accounts and API-key pools (masked output only).
'main' selects the Codex App login for the openai account pool.
```

Toutes les sous-commandes nécessitent que le proxy soit en cours d'exécution ; le CLI résout automatiquement son port d'exécution enregistré.
Expand Down Expand Up @@ -203,14 +209,33 @@ renvoient 1 ; une sonde de quota en amont qui échoue ou expire produit plutôt

### `ocx account auto-switch <provider> <on|off|status|threshold <0-100>> [--json]`

Contrôle uniquement le groupe de comptes Codex `openai`. `on` règle 80 %, `off` règle 0 %, `status` lit la
valeur actuelle et `threshold <n>` accepte un entier de 0 à 100. Les autres fournisseurs et les valeurs
invalides entraînent le code de sortie 1. `--json` renvoie :
Contrôle le pool Codex `openai` et les pools OAuth pris en charge `anthropic` et `google-antigravity`.
Pour `openai`, `on` fixe le seuil à 80 % et `off` à 0 %. Pour les pools OAuth, `on` et `off`
activent ou désactivent le pool tout en conservant son seuil. `threshold <n>` enregistre un entier de
0 à 100 et active le pool si la valeur est différente de zéro. `status` lit la stratégie actuelle.
Les fournisseurs non pris en charge et les valeurs invalides entraînent le code de sortie 1.
`--json` renvoie :

Pour `google-antigravity`, `off` désactive le pool spécialisé tenant compte des quotas et enregistre
également la désactivation du basculement OAuth générique sur 429 pour ce fournisseur ; la commande
passe donc réellement en mode strict à compte unique. Définir directement uniquement
`googleAntigravityAccountPool.enabled: false` ne modifie pas cette stratégie générique distincte.

```text
{ provider, autoSwitchThreshold: number, enabled: boolean }
```

### `ocx account alias <provider> <account-or-key-id> <display-name|-> [--json]`

Définit un alias d'affichage sur un compte Codex, un compte OAuth ou une clé API existants ; passez
`-` pour l'effacer. Un alias contient au plus 80 caractères imprimables. Le login Codex App réservé
`main` ne peut pas être renommé : `ocx account alias openai main ...` se termine avec le code 1.
`--json` renvoie :

```text
{ ok: true, provider, id, alias: string | null }
```

### `ocx account priority <provider> <account-id|main> [<-100..100|first|earlier|normal|later|last|reset>] [--json]`

Lit ou définit l’ordre de sélection d’un compte du groupe Codex : **une priorité plus élevée est utilisée plus tôt**.
Expand Down Expand Up @@ -245,7 +270,7 @@ l'actualisation de son catalogue de modèles reste en attente, la sortie humaine
`ocx sync` conseils de récupération sur stderr. `--json` garde la sortie standard analysable et transporte
`catalogRefreshPending: true` dans l'état de connexion terminé sans avertissement humain.

### `ocx account remove <provider> <id|main> --yes [--json]`
### `ocx account remove <provider> <account-or-key-id|main> --yes [--json]`

Cette suppression gardée et non interactive nécessite `--yes`. Avant de supprimer, il vérifie que l'identifiant
existe; un identifiant manquant quitte 1 sans envoyer DELETE. La connexion principale Codex App ne peut pas être supprimée, donc
Expand All @@ -263,6 +288,18 @@ Les formes de réussite et d’échec sont :
déjà enregistré; la sortie humaine imprime des conseils de récupération génériques `ocx sync` sur stderr et quitte toujours 0.
Les enveloppes de retrait de compte OAuth et de clé API n'obtiennent pas ce champ.

### `ocx account clear-cooldown <provider> <account-id|main> [--json]`

Efface une temporisation d'exécution du pool Codex `openai` ou des pools OAuth pris en charge
`anthropic` et `google-antigravity`. `main` n'est accepté que pour `openai` et devient `__main__` dans
le JSON. Un fournisseur non valide ou un compte inconnu produit une réponse API 400 et la CLI se
termine avec le code 1. Pour un compte réel sans temporisation active, l'opération est idempotente :
l'API renvoie 200, la CLI se termine avec le code 0 et `cleared` vaut `false`. `--json` renvoie exactement :

```text
{ ok: true, provider, id, cleared: boolean }
```

### `ocx account add-key <provider> [--label <label>] [--json]`

Ajoute et active une clé pour un fournisseur de clés API. La clé est lue uniquement à partir de non-TTY piped/redirected
Expand All @@ -276,6 +313,26 @@ security find-generic-password -w openrouter | ocx account add-key openrouter --

`--json` renvoie `{ ok: true, id: string | null, label?: string }` et n'inclut jamais la clé.

### `ocx account import <provider> --format <format> (--file <path>|--stdin) [--json]`

Importe une exportation de comptes de taille bornée. La version 1 accepte uniquement le fournisseur
`google-antigravity` au format `cockpit-tools`, depuis exactement une source, `--file` ou `--stdin`.
Le JSON en ligne et les arguments positionnels supplémentaires sont refusés avant l'examen de leur
contenu. Gardez les exportations confidentielles, puis supprimez-les ou sécurisez-les après usage. La
sortie JSON est le résumé sans secret ci-dessous. Toute entrée en échec ou non prise en charge fait se
terminer la commande avec le code 1 ; sinon elle se termine avec le code 0.

```text
{
totalCount,
importedCount,
updatedCount,
failedCount,
unsupportedCount,
results: Array<{ index, status, code }>
}
```

### `ocx account reset-credits <id|main> [--consume --yes]`

Inspectez Codex réinitialiser les crédits d'un compte. Consommer un crédit est destructeur et nécessite à la fois
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -207,6 +207,55 @@ Laissez cette option désactivée, sauf si vous comprenez les risques liés aux
préférez le changement manuel avec `ocx account use anthropic <id>`.
:::

### `googleAntigravityAccountPool` (expérimental)

Cette option regroupe des comptes OAuth Google Antigravity uniquement pour le fournisseur Cloud Code
Assist `google-antigravity`. Elle est désactivée par défaut. Le pool ne fournit jamais d'identifiants à
Google AI Studio, Vertex AI, une autre entrée de fournisseur ou une route utilisant une clé API.

Définir directement `googleAntigravityAccountPool.enabled` sur `false` dans la configuration désactive
la sélection selon les quotas, l'affinité de session et le budget spécialisé 402/429 sans modifier le
basculement OAuth générique distinct. En revanche, `ocx account auto-switch google-antigravity off` et un
`PUT/PATCH /api/oauth/accounts/pool` de l'API de gestion avec `enabled: false` explicite imposent le
mode strict à un seul compte : ils enregistrent aussi
`providers.google-antigravity.oauthAccountFailover.enabled` à `false`. Une mise à jour partielle qui
omet `enabled` conserve l'intention existante du basculement générique. Pour garder ce basculement avec
le pool spécialisé désactivé, modifiez directement la configuration et réglez cet override sur `true`.

| Clé | Type | Par défaut | Description |
| --- | --- | --- | --- |
| `googleAntigravityAccountPool.enabled?` | `boolean` | `false` | Active l'affinité de session locale au processus et un basculement borné après une réponse finale 429 ou une réponse 402 remontée. |
| `googleAntigravityAccountPool.autoSwitchThreshold?` | `number` | `80` | Seuil d'épuisement de 0 à 100. `quota` et `fill-first` utilisent l'utilisation maximale en cache correspondant à la famille `Gem` ou `Cla` du modèle demandé ; une utilisation inconnue conserve le compte actif sain. `0` désactive le changement selon l'utilisation, pas la reprise après échec. |
| `googleAntigravityAccountPool.strategy?` | `"quota" \| "round-robin" \| "fill-first"` | `"quota"` | Stratégie pour les sessions nouvelles ou sans liaison. |
| `googleAntigravityAccountPool.stickyLimit?` | `number` | `1` | Nombre de liaisons de nouvelles sessions conservées sur une sélection `round-robin`. Plage 1–100 ; sans effet sur les autres stratégies. |

Les stratégies conservent l'affinité d'une session tant que son compte reste admissible. Pour une
session nouvelle ou sans liaison, `quota` conserve le compte actif sain lorsque l'utilisation pertinente
est inconnue ou inférieure au seuil, puis choisit le compte admissible dont l'utilisation connue est la
plus faible. `round-robin` répartit uniformément les liaisons et n'emploie pas le seuil pour la rotation
ordinaire. `fill-first` remplit le compte actif jusqu'à sa temporisation, son indisponibilité ou le seuil
d'épuisement, puis passe au compte admissible suivant.

Chaque envoi résout un instantané OAuth lié à cette génération, avec le jeton bearer et le `projectId`
Cloud Code Assist. Une réponse finale 429 ou une réponse 402 remontée met le compte en temporisation,
efface son affinité et reconstruit la requête pour un autre instantané admissible. Sans `Retry-After`
exploitable, la temporisation par défaut est de 60 secondes ; une valeur amont analysée est plafonnée à
15 minutes. Une requête autorise au plus trois basculements, soit quatre envois amont au total. Si tous
les comptes admissibles sont en temporisation, le client reçoit un 429 avec le premier `Retry-After`
connu.

La rotation spécialisée sur échec 402/429 est limitée au chemin d'envoi principal Responses ordinaire
et aux continuations de terminal. Lorsqu'elles passent par Google, les boucles `image/video bridge` et
`web-search sidecar` peuvent utiliser le compte initialement sélectionné pour la requête, mais elles ne
le placent pas en temporisation et ne le font pas tourner via ce pool spécialisé. Le point de terminaison
d'image Antigravity autonome reste lui aussi hors de ce chemin de rotation.

:::caution[Résilience opérationnelle, pas contournement de quota]
Utilisez ce pool pour récupérer après des défaillances transitoires, pas pour contourner les quotas ou
les contrôles du fournisseur. L'automatisation multicomptes peut enfreindre les conditions du fournisseur ;
laissez cette fonction désactivée si vous n'acceptez pas ce risque.
:::

### Formes d'enregistrement gérées

Les entrées `apiKeys[]` contiennent les chaînes `id`, `name`, la valeur `key` générée et la date ISO `createdAt`.
Expand Down
36 changes: 33 additions & 3 deletions docs-site/src/content/docs/fr/reference/management-api.md
Original file line number Diff line number Diff line change
Expand Up @@ -174,14 +174,44 @@ d’abord et soumettez le résumé renvoyé. Préférez la quarantaine lorsqu’
| `POST /api/oauth/logout` | Supprimer les informations d'identification du fournisseur sélectionné | 400 fournisseur inconnu ; `oauth_mutation_busy` |
| `GET, DELETE /api/oauth/accounts` | Répertorier les comptes masqués ou supprimer un compte | 400 invalide provider/id ; 404 compte manquant ; `oauth_mutation_busy` |
| `PUT /api/oauth/accounts/active` | Sélectionnez le compte OAuth actif | 400 invalide provider/account ; `oauth_mutation_busy` |
| `GET, PUT, PATCH /api/oauth/accounts/pool` | Lire ou mettre à jour la stratégie du pool OAuth Anthropic | 400 fournisseur non Anthropic ou stratégie invalide |
| `POST /api/oauth/accounts/clear-cooldown` | Effacer le temps de recharge d'un compte OAuth | 400 invalide provider/account |
| `GET, PUT, PATCH /api/oauth/accounts/pool` | Lire ou mettre à jour la stratégie du pool OAuth Anthropic ou Google Antigravity | 400 fournisseur non pris en charge ou stratégie invalide |
| `POST /api/oauth/accounts/clear-cooldown` | Effacer la temporisation d'un compte OAuth | 400 fournisseur non valide ou compte inconnu ; un compte connu sans temporisation renvoie 200 avec `{ ok: true, cleared: false }` |
| `PUT /api/oauth/accounts/alias` | Définir ou supprimer un alias de compte OAuth | 400 invalide provider/account/alias |
| `GET, POST, DELETE /api/providers/keys` | Répertorier les clés de fournisseur masquées, en ajouter ou en activer une, ou en supprimer une | 400 saisie invalide ; 404 fournisseur ou clé manquante |
| `PUT /api/providers/keys/active` | Sélectionnez la clé active d'un fournisseur | 400 saisie invalide ; 404 provider/key manquant |
| `PUT /api/providers/keys/alias` | Définir ou supprimer un alias de clé de fournisseur | 400 saisie invalide ; 404 provider/key manquant |
| `GET, POST, PATCH, DELETE /api/keys` | Répertorier, créer, modifier ou supprimer les clés d'admission du plan de données | 400 corps ou identifiant invalide ; 404 clé manquante |

#### Contrat des pools OAuth par fournisseur

`GET /api/oauth/accounts/pool?provider=anthropic|google-antigravity` exige le paramètre de requête
`provider`. Sa réponse contient directement les champs `provider`, `enabled`, `autoSwitchThreshold`
(par défaut `80`), `strategy` (normalisé en `quota`, `round-robin` ou `fill-first`), `stickyLimit`
(normalisé en entier de 1 à 100) et `experimental: true`.

`PUT` et `PATCH /api/oauth/accounts/pool` exigent un objet JSON avec `provider` et acceptent les
champs facultatifs `enabled` (booléen), `autoSwitchThreshold` (entier de 0 à 100), `strategy`
(`quota`, `round-robin` ou `fill-first`) et `stickyLimit` (entier de 1 à 100). Les champs omis
conservent leur valeur actuelle ou par défaut. En cas de succès, la réponse contient directement
`{ ok: true, provider, enabled, autoSwitchThreshold, strategy, stickyLimit, experimental: true }`,
sans enveloppe `config`. Un corps mal formé ou qui n'est pas un objet, un fournisseur non pris en
charge ou un champ invalide renvoie une réponse d'erreur HTTP 400 générique.

Pour `google-antigravity`, écrire `enabled: false` enregistre également
`providers.google-antigravity.oauthAccountFailover.enabled: false`. Cela garantit que le sens de
« off » pour l'API de gestion et la CLI reste fidèle, en désactivant à la fois le pool spécialisé
tenant compte des quotas et le mécanisme de basculement générique sur 429, autrement activé selon la
présence de comptes. Modifier directement uniquement `googleAntigravityAccountPool.enabled` ne
change pas cette stratégie générique.

`POST /api/oauth/accounts/clear-cooldown` accepte `{ provider, accountId }`. Le fournisseur doit être
`anthropic` ou `google-antigravity`, et le compte doit exister pour ce fournisseur. Un compte inconnu
renvoie l'erreur HTTP 400 générique `account not found`. Un compte connu qui n'est pas en
temporisation produit un succès idempotent : HTTP 200 avec `{ ok: true, cleared: false }`. Pour
Google, l'opération efface à la fois l'état du pool spécialisé et celui du mécanisme de basculement
générique ; elle reste donc valable après un changement de mode du pool. Ces réponses ne contiennent
jamais de jetons, d'adresses e-mail ni de clés complètes.

Les réponses qui répertorient les identifiants sont délibérément masquées. Les jetons d'accès OAuth et les clés API complètes des
fournisseurs ne sont pas renvoyés aux clients du tableau de bord.

Expand Down Expand Up @@ -245,7 +275,7 @@ Codex. Ses routes sont les suivantes :
| `PUT /api/codex-auth/accounts/alias` | Définir ou supprimer un alias de compte | 400 invalide account/alias |
| `PUT /api/codex-auth/accounts/pause` | Suspendre ou reprendre un compte | 400 invalide account/state ; 404 compte manquant |
| `PUT /api/codex-auth/accounts/pause-exhausted` | Suspendre les comptes dont le quota est épuisé | Les échecs de verrouillage de mutation deviennent 503 |
| `POST /api/codex-auth/accounts/clear-cooldown` | Effacer le temps de recharge d'exécution pour un compte ou tous les comptes | 400 identifiant invalide |
| `POST /api/codex-auth/accounts/clear-cooldown` | Effacer la temporisation d'exécution d'un compte | 400 identifiant de compte non valide ou inconnu ; un compte connu sans temporisation renvoie 200 avec `{ ok: true, id, cleared: false }` |
| `GET, PUT /api/codex-auth/active` | Lire ou sélectionner le compte actif | 400 compte invalide ou manquant ; 409 conflit avec un compte suspendu ou une ancienne ligne |
| `PUT /api/codex-auth/auto-switch` | Définir le seuil de quota pour le changement automatique de compte | 400 seuil invalide |
| `PUT, PATCH /api/codex-auth/pool-strategy` | Mettre à jour la stratégie de sélection du groupe de comptes Codex | 400 stratégie ou configuration invalide |
Expand Down
Loading
Loading