dsh-coding-subscription-oauth 0.5.8 → 0.6.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +217 -188
- package/CONTRIBUTING.md +120 -120
- package/INSTALL.md +241 -209
- package/LICENSE +19 -19
- package/NOTICE +11 -11
- package/README.de.md +298 -294
- package/README.es.md +299 -295
- package/README.fr.md +299 -295
- package/README.ja.md +299 -295
- package/README.ko.md +299 -295
- package/README.md +313 -307
- package/README.pt-BR.md +299 -295
- package/README.ru.md +299 -295
- package/README.zh-CN.md +311 -305
- package/compatibility/dsh-bom.json +30 -0
- package/cordis.patch.yml +13 -13
- package/docs/00-project-rules.md +195 -195
- package/docs/02-architecture.md +134 -129
- package/docs/02-architecture.zh-CN.md +134 -129
- package/lib/adapter.d.ts.map +1 -1
- package/lib/alias-adapter.d.ts +3 -1
- package/lib/alias-adapter.d.ts.map +1 -1
- package/lib/auth-routes.d.ts +8 -15
- package/lib/auth-routes.d.ts.map +1 -1
- package/lib/bin.js +746 -1402
- package/lib/bin.js.map +4 -4
- package/lib/capability-routes.d.ts +3 -3
- package/lib/capability-routes.d.ts.map +1 -1
- package/lib/capability-settings.d.ts +5 -4
- package/lib/capability-settings.d.ts.map +1 -1
- package/lib/client.js +27 -8
- package/lib/client.js.map +4 -4
- package/lib/compatibility.d.ts +46 -0
- package/lib/compatibility.d.ts.map +1 -0
- package/lib/dsh-host-adapter.d.ts +18 -0
- package/lib/dsh-host-adapter.d.ts.map +1 -0
- package/lib/gateway-auth.d.ts +1 -2
- package/lib/gateway-auth.d.ts.map +1 -1
- package/lib/gateway-routes.d.ts +3 -4
- package/lib/gateway-routes.d.ts.map +1 -1
- package/lib/gateway.d.ts +4 -0
- package/lib/gateway.d.ts.map +1 -1
- package/lib/ids.d.ts +3 -32
- package/lib/ids.d.ts.map +1 -1
- package/lib/imagine-routes.d.ts +2 -0
- package/lib/imagine-routes.d.ts.map +1 -1
- package/lib/index.d.ts +19 -4
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +26627 -1047
- package/lib/index.js.map +4 -4
- package/lib/invariant.js.map +1 -1
- package/lib/oauth-import-routes.d.ts +3 -4
- package/lib/oauth-import-routes.d.ts.map +1 -1
- package/lib/proxy.d.ts +3 -16
- package/lib/proxy.d.ts.map +1 -1
- package/lib/web-origin.d.ts +28 -4
- package/lib/web-origin.d.ts.map +1 -1
- package/lib/web-routes.d.ts.map +1 -1
- package/media/en/settings_accounts.png +0 -0
- package/media/en/settings_capabilities.png +0 -0
- package/media/en/settings_gateway.png +0 -0
- package/media/settings_accounts.png +0 -0
- package/media/settings_capabilities.png +0 -0
- package/media/settings_gateway.png +0 -0
- package/media/settings_overview.png +0 -0
- package/media/zh-CN/settings_accounts.png +0 -0
- package/media/zh-CN/settings_capabilities.png +0 -0
- package/media/zh-CN/settings_gateway.png +0 -0
- package/package.json +211 -174
- package/patches/dsh-agy@0.1.2.patch +25 -25
- package/scripts/release.mjs +186 -170
- package/scripts/smoke-deployed-routes.mjs +146 -146
- package/scripts/verify-deployed-catalog.mjs +87 -87
- package/src/adapter.ts +329 -268
- package/src/alias-adapter.ts +141 -147
- package/src/auth-routes.ts +921 -871
- package/src/auth.ts +67 -67
- package/src/bin.ts +350 -350
- package/src/capability-routes.ts +279 -275
- package/src/capability-runtime.ts +313 -313
- package/src/capability-settings.ts +658 -657
- package/src/capability-tools.ts +666 -666
- package/src/catalog.ts +271 -271
- package/src/client/GrokBuildSettings.tsx +770 -718
- package/src/client/api.ts +88 -88
- package/src/client/components/AboutTab.tsx +30 -30
- package/src/client/components/AccountsTab.tsx +241 -224
- package/src/client/components/Badge.tsx +33 -33
- package/src/client/components/CapabilitiesTab.tsx +265 -227
- package/src/client/components/CliPullPreview.tsx +116 -107
- package/src/client/components/CopyButton.tsx +57 -57
- package/src/client/components/GatewayTab.tsx +469 -409
- package/src/client/components/NoticeBanner.tsx +46 -46
- package/src/client/components/ProgressBar.tsx +53 -53
- package/src/client/components/ProviderCard.tsx +606 -502
- package/src/client/components/SettingsTabs.tsx +75 -75
- package/src/client/components/ToggleSwitch.tsx +71 -62
- package/src/client/constants.ts +224 -206
- package/src/client/display.ts +61 -61
- package/src/client/dshClientAdapter.ts +127 -0
- package/src/client/gatewaySnippets.ts +37 -36
- package/src/client/index.tsx +156 -37
- package/src/client/locales.ts +535 -491
- package/src/client/microStyles.ts +52 -33
- package/src/client/parsers.ts +396 -386
- package/src/client/styles.ts +325 -307
- package/src/client/types.ts +197 -185
- package/src/codex-http.ts +447 -447
- package/src/codex-images.ts +485 -485
- package/src/codex-model-capabilities.ts +320 -320
- package/src/codex-search.ts +245 -245
- package/src/codex-usage.ts +263 -263
- package/src/compatibility.ts +55 -0
- package/src/dsh-host-adapter.ts +173 -0
- package/src/gateway-anthropic-messages.ts +84 -84
- package/src/gateway-auth.ts +102 -100
- package/src/gateway-backend.ts +274 -274
- package/src/gateway-body.ts +49 -49
- package/src/gateway-config.ts +76 -76
- package/src/gateway-http.ts +104 -104
- package/src/gateway-openai-chat.ts +124 -124
- package/src/gateway-openai-responses.ts +53 -53
- package/src/gateway-parse.ts +224 -224
- package/src/gateway-protocol.ts +52 -52
- package/src/gateway-routes.ts +158 -152
- package/src/gateway.ts +258 -242
- package/src/grok-errors.ts +24 -24
- package/src/grok-imagine.ts +1627 -1627
- package/src/grok-import.ts +151 -151
- package/src/http-json.ts +82 -82
- package/src/ids.ts +59 -45
- package/src/imagine-routes.ts +463 -461
- package/src/index.ts +729 -592
- package/src/invariant.ts +17 -17
- package/src/kimi-errors.ts +26 -26
- package/src/media-store.ts +927 -927
- package/src/oauth-import-routes.ts +324 -314
- package/src/oauth-providers.ts +152 -152
- package/src/oauth-session.ts +183 -183
- package/src/oauth-sources.ts +1104 -1104
- package/src/oauth.ts +620 -620
- package/src/provider.ts +128 -128
- package/src/proxy.ts +11 -99
- package/src/redact.ts +72 -72
- package/src/session.ts +218 -218
- package/src/store.ts +217 -217
- package/src/web-origin.ts +296 -60
- package/src/web-routes.ts +38 -75
package/README.fr.md
CHANGED
|
@@ -1,300 +1,304 @@
|
|
|
1
|
-
|
|
2
|
-
<!-- banner -->
|
|
3
|
-
<div align="center">
|
|
4
|
-
|
|
5
|
-
# 🔐 dsh-coding-subscription-oauth
|
|
6
|
-
|
|
7
|
-
**v0.
|
|
8
|
-
|
|
9
|
-
**Plugin OAuth pour abonnements de codage de [DeepSeek Harness](https://github.com/deepseek-ai/dsh).** Connectez-vous une fois avec les abonnements que vous payez déjà, puis utilisez leurs modèles depuis la page de configuration ou la CLI dsh. **Aucun token collé dans le chat.**
|
|
10
|
-
|
|
11
|
-
[](LICENSE)
|
|
12
|
-
[](CONTRIBUTING.md)
|
|
13
|
-
|
|
14
|
-
*[English](README.md) · [中文版](README.zh-CN.md) · [日本語](README.ja.md) · [한국어](README.ko.md) · [Português (BR)](README.pt-BR.md) · [Español](README.es.md) · [Français](README.fr.md) · [Deutsch](README.de.md) · [Русский](README.ru.md)*
|
|
15
|
-
|
|
1
|
+
|
|
2
|
+
<!-- banner -->
|
|
3
|
+
<div align="center">
|
|
4
|
+
|
|
5
|
+
# 🔐 dsh-coding-subscription-oauth
|
|
6
|
+
|
|
7
|
+
**v0.6.2 · anciennement `dsh-grok-build`
|
|
8
|
+
|
|
9
|
+
**Plugin OAuth pour abonnements de codage de [DeepSeek Harness](https://github.com/deepseek-ai/dsh).** Connectez-vous une fois avec les abonnements que vous payez déjà, puis utilisez leurs modèles depuis la page de configuration ou la CLI dsh. **Aucun token collé dans le chat.**
|
|
10
|
+
|
|
11
|
+
[](LICENSE)
|
|
12
|
+
[](CONTRIBUTING.md)
|
|
13
|
+
|
|
14
|
+
*[English](README.md) · [中文版](README.zh-CN.md) · [日本語](README.ja.md) · [한국어](README.ko.md) · [Português (BR)](README.pt-BR.md) · [Español](README.es.md) · [Français](README.fr.md) · [Deutsch](README.de.md) · [Русский](README.ru.md)*
|
|
15
|
+
|
|
16
16
|
</div>
|
|
17
17
|
|
|
18
18
|
---
|
|
19
19
|
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
Le projet s'appelait **`dsh-grok-build`** (Grok Build uniquement). Il couvre maintenant SuperGrok / Codex / Kimi / Claude / Antigravity.
|
|
23
|
-
|
|
24
|
-
| | Utiliser | Toujours valable |
|
|
25
|
-
|---|---|---|
|
|
26
|
-
| GitHub / `dsh plugin add` | [`dsh-coding-subscription-oauth`](https://github.com/lninghaha/dsh-coding-subscription-oauth) | `github:lninghaha/dsh-grok-build` (même `main`) |
|
|
27
|
-
| npm | `dsh-coding-subscription-oauth@0.5.8` (version actuelle) | Aucun ancien paquet npm n'a été publié |
|
|
28
|
-
| CLI | `dsh-coding-oauth` | `dsh-grok-build` |
|
|
29
|
-
| Cordis plugin id | `llm-grok-build-oauth` | inchangé |
|
|
30
|
-
| API HTTP des réglages | `/plugins/dsh-grok-build/*` | inchangé |
|
|
31
|
-
| Fichiers d'identifiants | `$DSH_HOME/.grok-build-auth.json` et les autres `*-oauth-auth.json` | inchangé |
|
|
32
|
-
|
|
33
|
-
## ✨ Fonctionnalités
|
|
34
|
-
|
|
35
|
-
- 🧾 **Apportez votre abonnement** — utilisez les plans de codage que vous payez déjà au lieu de clés API séparées.
|
|
36
|
-
- 🔑 **OAuth local, sans coller de clé** — autorisez dans la page de configuration ou la CLI ; les tokens n'entrent jamais dans le chat.
|
|
37
|
-
- 🧩 **Un plugin, cinq fournisseurs** — Grok Build, Codex, Kimi, Claude et Google Antigravity.
|
|
38
|
-
- 🛡️ **Sécurisé par conception** — fichiers d'identification propriétaire-seul `0600`, écriture atomique, verrou de fichier inter-processus.
|
|
39
|
-
- ⚙️ **Catalogue dynamique** — le sélecteur n'affiche que les routes authentifiées, étiquetées `(OAuth)`, y compris le `xhigh` de grok-4.6.
|
|
40
|
-
- 🌐 **Conscient du proxy** — ne proxifie que les domaines d'abonnement examinés et de confiance.
|
|
41
|
-
- 📥 **CLI Pull manuel** — les paramètres découvrent en lecture seule les fichiers OAuth officiels des CLI Grok/Codex/Kimi/Claude autorisés ; vous récupérez une copie à sens unique après prévisualisation et confirmation d'écrasement.
|
|
42
|
-
- 🗂️ **Paramètres en onglets** — Accounts, Gateway, Capabilities et About ; les hôtes distants privilégient le device code avec moins de bruit CLI missing ; les cartes connectées restent repliées jusqu'à expansion.
|
|
43
|
-
- 🎛️ **Capacités optionnelles, désactivées par défaut** — recherche Codex, usage/quota, génération/édition d'images, Fast et Grok Imagine s'appliquent en direct dès leur activation.
|
|
44
|
-
- 🔌 **Passerelle API locale opt-in** — serveur loopback compatible OpenAI/Anthropic, désactivé par défaut ; pour vos propres outils, jamais un relais public.
|
|
45
|
-
|
|
46
|
-
## Problèmes d'intégration que ce plugin résout
|
|
47
|
-
|
|
48
|
-
Ce sont les recherches et erreurs DSH qui mènent le plus souvent ici.
|
|
49
|
-
| Vous avez cherché / vu | Ce qui était cassé | Ce que fait le plugin |
|
|
50
|
-
|---|---|---|
|
|
51
|
-
| SuperGrok / X Premium dans DSH, Grok Build vs `api.x.ai` | La route `xai` est l'API à l'usage. L'abonnement coding passe par `cli-chat-proxy.grok.com` | Route `grok-build` + en-têtes d'empreinte CLI (`X-XAI-Token-Auth`, etc.) pour éviter un 403 silencieux |
|
|
52
|
-
| `API key is invalid` / `AUTH` | L'UI mappe **tout** AUTH sur ce texte. Souvent le access token OAuth a juste expiré | Refresh **5 min** avant l'expiry ; sur 401, invalide le jeton et **relance le step** |
|
|
53
|
-
| `INVALID_REPLAY_STATE` au 2ᵉ tour Codex/Kimi | Le replay gardait l'id provider natif de pi-ai | Conserve l'id de route Harness et répare l'ancien replay |
|
|
54
|
-
| grok-4.6 sans **xhigh** | `/v1/models-v2` renvoie déjà `reasoning_efforts` ; cloner le modèle 4.5 cache xhigh | Lit les efforts en direct. 4.6 a xhigh ; 4.5 reste low/medium/high |
|
|
55
|
-
| Kimi Code en `x-api-key` Anthropic | Le jeton OAuth partait comme clé Anthropic | Uniquement `Authorization: Bearer` |
|
|
56
|
-
| Des modèles non connectés restent dans le sélecteur | Toutes les routes enregistrées étaient listées | Les routes non authentifiées sont vides ; les noms connectés portent `(OAuth)` |
|
|
57
|
-
| PKCE sur un DSH distant / headless | Impossible de revenir sur `localhost` | Device-code pour Grok/Codex/Kimi ; Claude accepte l'URL de redirect collée |
|
|
58
|
-
| Le proxy passe Grok et casse Kimi en Chine | Un `HTTPS_PROXY` global | Proxy sur liste blanche ; Kimi reste **direct** sauf `proxyKimi: true` |
|
|
59
|
-
|
|
60
|
-
## Fournisseurs pris en charge
|
|
61
|
-
|
|
62
|
-
| Fournisseur | Route | Authentification | Coexiste avec |
|
|
63
|
-
|---|---|---|---|
|
|
64
|
-
| **xAI Grok Build** | `grok-build` | SuperGrok / X Premium OAuth | `xai` |
|
|
65
|
-
| **OpenAI Codex** | `codex-oauth` | ChatGPT Plus/Pro OAuth | `openai` |
|
|
66
|
-
| **Kimi Code** | `kimi-code-oauth` | Kimi Code OAuth | `kimi-coding` |
|
|
67
|
-
| **Claude Code** | `claude-code-oauth` | Claude Pro/Max OAuth | — |
|
|
68
|
-
| **Google Antigravity** | `agy` | `dsh-agy` Google OAuth | — |
|
|
69
|
-
|
|
70
|
-
> La connexion par dispositif de Grok Build, le catalogue dynamique `/v1/models-v2` et l'inférence en streaming via Responses sont vérifiés sur des déploiements réels. Codex/Kimi/Claude réutilisent l'OAuth/refresh natif du fournisseur de `@earendil-works/pi-ai` plutôt que de réimplémenter les flux de chaque vendeur.
|
|
71
|
-
|
|
72
|
-
## 🚀 Démarrage rapide
|
|
73
|
-
|
|
74
|
-
```bash
|
|
75
|
-
# 1. installez le plugin dans le profil web (version actuelle npm)
|
|
76
|
-
dsh plugin --profile web add dsh-coding-subscription-oauth@0.5.8
|
|
77
|
-
|
|
78
|
-
# 2. optionnel — Google Antigravity (version épinglée examinée)
|
|
79
|
-
dsh plugin --profile web add dsh-agy@0.1.2
|
|
80
|
-
|
|
81
|
-
# 3. redémarrez le service dsh web résident
|
|
82
|
-
systemctl --user restart dsh-web.service
|
|
83
|
-
```
|
|
84
|
-
|
|
85
|
-
Ensuite ouvrez **Settings → Coding OAuth** et connectez-vous à n'importe quel fournisseur. C'est tout — choisissez votre modèle authentifié dans le sélecteur.
|
|
86
|
-
|
|
87
|
-
## 📚 Sommaire
|
|
88
|
-
|
|
89
|
-
- [Changement de nom](#changement-de-nom)
|
|
90
|
-
- [Fonctionnalités](#-fonctionnalités)
|
|
91
|
-
- [Problèmes d'intégration que ce plugin résout](#problèmes-dintégration-que-ce-plugin-résout)
|
|
92
|
-
- [Fournisseurs pris en charge](#fournisseurs-pris-en-charge)
|
|
93
|
-
- [Démarrage rapide](#-démarrage-rapide)
|
|
94
|
-
- [Installation](#installation)
|
|
95
|
-
- [Page de configuration](#page-de-configuration)
|
|
96
|
-
- [Capacités optionnelles](#capacités-optionnelles)
|
|
97
|
-
- [Passerelle API locale](#passerelle-api-locale)
|
|
98
|
-
- [CLI](#cli)
|
|
99
|
-
- [Kimi en Chine](#kimi-en-chine)
|
|
100
|
-
- [Proxy réseau](#proxy-réseau)
|
|
101
|
-
- [Résilience](#résilience)
|
|
102
|
-
- [Identifiants](#identifiants)
|
|
103
|
-
- [Architecture](#architecture)
|
|
104
|
-
- [Notes techniques](#notes-techniques)
|
|
105
|
-
- [Conformité](#conformité)
|
|
106
|
-
- [Documentation](#documentation)
|
|
107
|
-
- [Lié](#lié)
|
|
108
|
-
- [Contribution](#contribution)
|
|
109
|
-
- [Licence](#licence)
|
|
110
|
-
|
|
111
|
-
## Installation
|
|
112
|
-
|
|
113
|
-
Nécessite DeepSeek Harness `0.1.0-rc.6+` et Node.js 22.19+. Détails complets dans les [notes d'installation](INSTALL.md).
|
|
114
|
-
|
|
115
|
-
```bash
|
|
116
|
-
# version actuelle npm (recommandé)
|
|
117
|
-
dsh plugin --profile web add dsh-coding-subscription-oauth@0.5.8
|
|
118
|
-
|
|
119
|
-
# développement/alternatif : depuis GitHub
|
|
120
|
-
dsh plugin --profile web add github:lninghaha/dsh-coding-subscription-oauth
|
|
121
|
-
|
|
122
|
-
# développement/alternatif : un checkout local de développement
|
|
123
|
-
dsh plugin --profile web add ./dsh-coding-subscription-oauth
|
|
124
|
-
```
|
|
125
|
-
|
|
126
|
-
Redémarrez `dsh web` après l'installation. Vérification sur un déploiement en direct :
|
|
127
|
-
|
|
128
|
-
```bash
|
|
129
|
-
pnpm run verify:deployed # vérifie /api/llm.models réel + état OAuth
|
|
130
|
-
DSH_EXPECT_AGY_AUTH=signed-in pnpm run verify:deployed # si Google est connecté
|
|
131
|
-
|
|
132
|
-
DSH_RESTORE_PROVIDER=openai \
|
|
133
|
-
DSH_RESTORE_MODEL=gpt-5.6-sol \
|
|
134
|
-
DSH_RESTORE_REASONING=max \
|
|
135
|
-
pnpm run smoke:deployed # appels réels Codex/Kimi + rejeu du second tour
|
|
136
|
-
```
|
|
137
|
-
|
|
138
|
-
> `smoke:deployed` crée une session temporaire, valide les appels d'outils de Codex et Kimi ainsi qu'un second tour utilisateur (régression `INVALID_REPLAY_STATE`), restaure le modèle par défaut déclaré, puis archive la session.
|
|
139
|
-
|
|
140
|
-
## Page de configuration
|
|
141
|
-
|
|
142
|
-
Ouvrez **Settings → Coding OAuth** :
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
<table>
|
|
147
|
-
<tr>
|
|
148
|
-
<td align="center" valign="top" width="33%">
|
|
149
|
-
<a href="media/settings_accounts.png"><img src="media/settings_accounts.png" alt="Coding OAuth Accounts tab" width="280" /></a><br />
|
|
150
|
-
<sub>Accounts</sub>
|
|
151
|
-
</td>
|
|
152
|
-
<td align="center" valign="top" width="33%">
|
|
153
|
-
<a href="media/settings_gateway.png"><img src="media/settings_gateway.png" alt="Coding OAuth Gateway tab" width="280" /></a><br />
|
|
154
|
-
<sub>Gateway</sub>
|
|
155
|
-
</td>
|
|
156
|
-
<td align="center" valign="top" width="33%">
|
|
157
|
-
<a href="media/settings_capabilities.png"><img src="media/settings_capabilities.png" alt="Coding OAuth Capabilities tab" width="280" /></a><br />
|
|
158
|
-
<sub>Capabilities</sub>
|
|
159
|
-
</td>
|
|
160
|
-
</tr>
|
|
161
|
-
</table>
|
|
162
|
-
|
|
163
|
-
| Fournisseur | Méthodes |
|
|
164
|
-
|---|---|
|
|
165
|
-
| Grok | code d'autorisation · code de dispositif · importation CLI Grok · sélection de modèles |
|
|
166
|
-
| Codex | code de dispositif (recommandé sur DSH distant) · PKCE navigateur |
|
|
167
|
-
| Kimi | code de dispositif |
|
|
168
|
-
| Claude | PKCE navigateur (un navigateur distant peut coller l'URL complète de redirect localhost) |
|
|
169
|
-
| Antigravity | état d'installation de `dsh-agy` + commandes CLI locales au profil |
|
|
170
|
-
|
|
171
|
-
La page de configuration est divisée en quatre onglets principaux : **Accounts**, **Gateway**, **Capabilities** et **About**. Les cartes des fournisseurs connectés se replient en un résumé compact et se déplient pour l'édition des modèles. L'aperçu du pull CLI occupe toute la largeur, et le statut d'Imagine s'affiche dans l'onglet Capabilities.
|
|
172
|
-
|
|
173
|
-
Le sélecteur ne liste que les routes ayant terminé l'authentification ; les fournisseurs non authentifiés renvoient une liste vide. Les noms de fournisseurs portent `(OAuth)` et le catalogue est rafraîchi via `llm/adapters-updated` après connexion/déconnexion.
|
|
20
|
+
> **Upgrade / 升级:** Follow the versioned steps in [`INSTALL.md`](INSTALL.md). Install into the existing `web` profile, keep profile/config/credential files, and restart one existing DSH Web process after all packages are updated. When Hub and Subscription are both used, `dsh-coding-oauth-core@0.1.0` is their shared npm dependency, not a separate DSH plugin.
|
|
174
21
|
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
```
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
-
|
|
247
|
-
-
|
|
248
|
-
-
|
|
249
|
-
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
22
|
+
---
|
|
23
|
+
|
|
24
|
+
## Changement de nom
|
|
25
|
+
|
|
26
|
+
Le projet s'appelait **`dsh-grok-build`** (Grok Build uniquement). Il couvre maintenant SuperGrok / Codex / Kimi / Claude / Antigravity.
|
|
27
|
+
|
|
28
|
+
| | Utiliser | Toujours valable |
|
|
29
|
+
|---|---|---|
|
|
30
|
+
| GitHub / `dsh plugin add` | [`dsh-coding-subscription-oauth`](https://github.com/lninghaha/dsh-coding-subscription-oauth) | `github:lninghaha/dsh-grok-build` (même `main`) |
|
|
31
|
+
| npm | `dsh-coding-subscription-oauth@0.6.2` (version actuelle) | Aucun ancien paquet npm n'a été publié |
|
|
32
|
+
| CLI | `dsh-coding-oauth` | `dsh-grok-build` |
|
|
33
|
+
| Cordis plugin id | `llm-grok-build-oauth` | inchangé |
|
|
34
|
+
| API HTTP des réglages | `/plugins/dsh-grok-build/*` | inchangé |
|
|
35
|
+
| Fichiers d'identifiants | `$DSH_HOME/.grok-build-auth.json` et les autres `*-oauth-auth.json` | inchangé |
|
|
36
|
+
|
|
37
|
+
## ✨ Fonctionnalités
|
|
38
|
+
|
|
39
|
+
- 🧾 **Apportez votre abonnement** — utilisez les plans de codage que vous payez déjà au lieu de clés API séparées.
|
|
40
|
+
- 🔑 **OAuth local, sans coller de clé** — autorisez dans la page de configuration ou la CLI ; les tokens n'entrent jamais dans le chat.
|
|
41
|
+
- 🧩 **Un plugin, cinq fournisseurs** — Grok Build, Codex, Kimi, Claude et Google Antigravity.
|
|
42
|
+
- 🛡️ **Sécurisé par conception** — fichiers d'identification propriétaire-seul `0600`, écriture atomique, verrou de fichier inter-processus.
|
|
43
|
+
- ⚙️ **Catalogue dynamique** — le sélecteur n'affiche que les routes authentifiées, étiquetées `(OAuth)`, y compris le `xhigh` de grok-4.6.
|
|
44
|
+
- 🌐 **Conscient du proxy** — ne proxifie que les domaines d'abonnement examinés et de confiance.
|
|
45
|
+
- 📥 **CLI Pull manuel** — les paramètres découvrent en lecture seule les fichiers OAuth officiels des CLI Grok/Codex/Kimi/Claude autorisés ; vous récupérez une copie à sens unique après prévisualisation et confirmation d'écrasement.
|
|
46
|
+
- 🗂️ **Paramètres en onglets** — Accounts, Gateway, Capabilities et About ; les hôtes distants privilégient le device code avec moins de bruit CLI missing ; les cartes connectées restent repliées jusqu'à expansion.
|
|
47
|
+
- 🎛️ **Capacités optionnelles, désactivées par défaut** — recherche Codex, usage/quota, génération/édition d'images, Fast et Grok Imagine s'appliquent en direct dès leur activation.
|
|
48
|
+
- 🔌 **Passerelle API locale opt-in** — serveur loopback compatible OpenAI/Anthropic, désactivé par défaut ; pour vos propres outils, jamais un relais public.
|
|
49
|
+
|
|
50
|
+
## Problèmes d'intégration que ce plugin résout
|
|
51
|
+
|
|
52
|
+
Ce sont les recherches et erreurs DSH qui mènent le plus souvent ici.
|
|
53
|
+
| Vous avez cherché / vu | Ce qui était cassé | Ce que fait le plugin |
|
|
54
|
+
|---|---|---|
|
|
55
|
+
| SuperGrok / X Premium dans DSH, Grok Build vs `api.x.ai` | La route `xai` est l'API à l'usage. L'abonnement coding passe par `cli-chat-proxy.grok.com` | Route `grok-build` + en-têtes d'empreinte CLI (`X-XAI-Token-Auth`, etc.) pour éviter un 403 silencieux |
|
|
56
|
+
| `API key is invalid` / `AUTH` | L'UI mappe **tout** AUTH sur ce texte. Souvent le access token OAuth a juste expiré | Refresh **5 min** avant l'expiry ; sur 401, invalide le jeton et **relance le step** |
|
|
57
|
+
| `INVALID_REPLAY_STATE` au 2ᵉ tour Codex/Kimi | Le replay gardait l'id provider natif de pi-ai | Conserve l'id de route Harness et répare l'ancien replay |
|
|
58
|
+
| grok-4.6 sans **xhigh** | `/v1/models-v2` renvoie déjà `reasoning_efforts` ; cloner le modèle 4.5 cache xhigh | Lit les efforts en direct. 4.6 a xhigh ; 4.5 reste low/medium/high |
|
|
59
|
+
| Kimi Code en `x-api-key` Anthropic | Le jeton OAuth partait comme clé Anthropic | Uniquement `Authorization: Bearer` |
|
|
60
|
+
| Des modèles non connectés restent dans le sélecteur | Toutes les routes enregistrées étaient listées | Les routes non authentifiées sont vides ; les noms connectés portent `(OAuth)` |
|
|
61
|
+
| PKCE sur un DSH distant / headless | Impossible de revenir sur `localhost` | Device-code pour Grok/Codex/Kimi ; Claude accepte l'URL de redirect collée |
|
|
62
|
+
| Le proxy passe Grok et casse Kimi en Chine | Un `HTTPS_PROXY` global | Proxy sur liste blanche ; Kimi reste **direct** sauf `proxyKimi: true` |
|
|
63
|
+
|
|
64
|
+
## Fournisseurs pris en charge
|
|
65
|
+
|
|
66
|
+
| Fournisseur | Route | Authentification | Coexiste avec |
|
|
67
|
+
|---|---|---|---|
|
|
68
|
+
| **xAI Grok Build** | `grok-build` | SuperGrok / X Premium OAuth | `xai` |
|
|
69
|
+
| **OpenAI Codex** | `codex-oauth` | ChatGPT Plus/Pro OAuth | `openai` |
|
|
70
|
+
| **Kimi Code** | `kimi-code-oauth` | Kimi Code OAuth | `kimi-coding` |
|
|
71
|
+
| **Claude Code** | `claude-code-oauth` | Claude Pro/Max OAuth | — |
|
|
72
|
+
| **Google Antigravity** | `agy` | `dsh-agy` Google OAuth | — |
|
|
73
|
+
|
|
74
|
+
> La connexion par dispositif de Grok Build, le catalogue dynamique `/v1/models-v2` et l'inférence en streaming via Responses sont vérifiés sur des déploiements réels. Codex/Kimi/Claude réutilisent l'OAuth/refresh natif du fournisseur de `@earendil-works/pi-ai` plutôt que de réimplémenter les flux de chaque vendeur.
|
|
75
|
+
|
|
76
|
+
## 🚀 Démarrage rapide
|
|
77
|
+
|
|
78
|
+
```bash
|
|
79
|
+
# 1. installez le plugin dans le profil web (version actuelle npm)
|
|
80
|
+
dsh plugin --profile web add dsh-coding-subscription-oauth@0.6.2
|
|
81
|
+
|
|
82
|
+
# 2. optionnel — Google Antigravity (version épinglée examinée)
|
|
83
|
+
dsh plugin --profile web add dsh-agy@0.1.2
|
|
84
|
+
|
|
85
|
+
# 3. redémarrez le processus DSH Web existant avec le gestionnaire configuré
|
|
86
|
+
# `dsh web` est l’alias CLI officiel, pas un nom de service.
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
Ensuite ouvrez **Settings → Coding OAuth** et connectez-vous à n'importe quel fournisseur. C'est tout — choisissez votre modèle authentifié dans le sélecteur.
|
|
90
|
+
|
|
91
|
+
## 📚 Sommaire
|
|
92
|
+
|
|
93
|
+
- [Changement de nom](#changement-de-nom)
|
|
94
|
+
- [Fonctionnalités](#-fonctionnalités)
|
|
95
|
+
- [Problèmes d'intégration que ce plugin résout](#problèmes-dintégration-que-ce-plugin-résout)
|
|
96
|
+
- [Fournisseurs pris en charge](#fournisseurs-pris-en-charge)
|
|
97
|
+
- [Démarrage rapide](#-démarrage-rapide)
|
|
98
|
+
- [Installation](#installation)
|
|
99
|
+
- [Page de configuration](#page-de-configuration)
|
|
100
|
+
- [Capacités optionnelles](#capacités-optionnelles)
|
|
101
|
+
- [Passerelle API locale](#passerelle-api-locale)
|
|
102
|
+
- [CLI](#cli)
|
|
103
|
+
- [Kimi en Chine](#kimi-en-chine)
|
|
104
|
+
- [Proxy réseau](#proxy-réseau)
|
|
105
|
+
- [Résilience](#résilience)
|
|
106
|
+
- [Identifiants](#identifiants)
|
|
107
|
+
- [Architecture](#architecture)
|
|
108
|
+
- [Notes techniques](#notes-techniques)
|
|
109
|
+
- [Conformité](#conformité)
|
|
110
|
+
- [Documentation](#documentation)
|
|
111
|
+
- [Lié](#lié)
|
|
112
|
+
- [Contribution](#contribution)
|
|
113
|
+
- [Licence](#licence)
|
|
114
|
+
|
|
115
|
+
## Installation
|
|
116
|
+
|
|
117
|
+
Nécessite DeepSeek Harness `0.1.1-rc.2` et Node.js 22.19+. Détails complets dans les [notes d'installation](INSTALL.md).
|
|
118
|
+
|
|
119
|
+
```bash
|
|
120
|
+
# version actuelle npm (recommandé)
|
|
121
|
+
dsh plugin --profile web add dsh-coding-subscription-oauth@0.6.2
|
|
122
|
+
|
|
123
|
+
# développement/alternatif : depuis GitHub
|
|
124
|
+
dsh plugin --profile web add github:lninghaha/dsh-coding-subscription-oauth
|
|
125
|
+
|
|
126
|
+
# développement/alternatif : un checkout local de développement
|
|
127
|
+
dsh plugin --profile web add ./dsh-coding-subscription-oauth
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
Redémarrez le processus DSH Web existant après l'installation. Vérification sur un déploiement en direct :
|
|
131
|
+
|
|
132
|
+
```bash
|
|
133
|
+
pnpm run verify:deployed # vérifie /api/llm.models réel + état OAuth
|
|
134
|
+
DSH_EXPECT_AGY_AUTH=signed-in pnpm run verify:deployed # si Google est connecté
|
|
135
|
+
|
|
136
|
+
DSH_RESTORE_PROVIDER=openai \
|
|
137
|
+
DSH_RESTORE_MODEL=gpt-5.6-sol \
|
|
138
|
+
DSH_RESTORE_REASONING=max \
|
|
139
|
+
pnpm run smoke:deployed # appels réels Codex/Kimi + rejeu du second tour
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
> `smoke:deployed` crée une session temporaire, valide les appels d'outils de Codex et Kimi ainsi qu'un second tour utilisateur (régression `INVALID_REPLAY_STATE`), restaure le modèle par défaut déclaré, puis archive la session.
|
|
143
|
+
|
|
144
|
+
## Page de configuration
|
|
145
|
+
|
|
146
|
+
Ouvrez **Settings → Coding OAuth** :
|
|
147
|
+
|
|
148
|
+
|
|
149
|
+
|
|
150
|
+
<table>
|
|
151
|
+
<tr>
|
|
152
|
+
<td align="center" valign="top" width="33%">
|
|
153
|
+
<a href="media/en/settings_accounts.png"><img src="media/en/settings_accounts.png" alt="Coding OAuth Accounts tab" width="280" /></a><br />
|
|
154
|
+
<sub>Accounts</sub>
|
|
155
|
+
</td>
|
|
156
|
+
<td align="center" valign="top" width="33%">
|
|
157
|
+
<a href="media/en/settings_gateway.png"><img src="media/en/settings_gateway.png" alt="Coding OAuth Gateway tab" width="280" /></a><br />
|
|
158
|
+
<sub>Gateway</sub>
|
|
159
|
+
</td>
|
|
160
|
+
<td align="center" valign="top" width="33%">
|
|
161
|
+
<a href="media/en/settings_capabilities.png"><img src="media/en/settings_capabilities.png" alt="Coding OAuth Capabilities tab" width="280" /></a><br />
|
|
162
|
+
<sub>Capabilities</sub>
|
|
163
|
+
</td>
|
|
164
|
+
</tr>
|
|
165
|
+
</table>
|
|
166
|
+
|
|
167
|
+
| Fournisseur | Méthodes |
|
|
168
|
+
|---|---|
|
|
169
|
+
| Grok | code d'autorisation · code de dispositif · importation CLI Grok · sélection de modèles |
|
|
170
|
+
| Codex | code de dispositif (recommandé sur DSH distant) · PKCE navigateur |
|
|
171
|
+
| Kimi | code de dispositif |
|
|
172
|
+
| Claude | PKCE navigateur (un navigateur distant peut coller l'URL complète de redirect localhost) |
|
|
173
|
+
| Antigravity | état d'installation de `dsh-agy` + commandes CLI locales au profil |
|
|
174
|
+
|
|
175
|
+
La page de configuration est divisée en quatre onglets principaux : **Accounts**, **Gateway**, **Capabilities** et **About**. Les cartes des fournisseurs connectés se replient en un résumé compact et se déplient pour l'édition des modèles. L'aperçu du pull CLI occupe toute la largeur, et le statut d'Imagine s'affiche dans l'onglet Capabilities.
|
|
176
|
+
|
|
177
|
+
Le sélecteur ne liste que les routes ayant terminé l'authentification ; les fournisseurs non authentifiés renvoient une liste vide. Les noms de fournisseurs portent `(OAuth)` et le catalogue est rafraîchi via `llm/adapters-updated` après connexion/déconnexion.
|
|
178
|
+
|
|
179
|
+
## Capacités optionnelles
|
|
180
|
+
|
|
181
|
+
Les sept options `codexSearch`, `codexImages`, `codexImageEdits`, `codexUsage`, `codexFast`, `grokImagineImage` et `grokImagineVideo` sont désactivées par défaut et s'appliquent à chaud, sans redémarrage. Les limites sont `searchResults` (1–20, défaut 5), `imageCount` (1–4, défaut 1) et `videoArtifactTtlMs` (1 heure–7 jours, défaut 7 jours ; l'interface affiche 1–168 heures). Réduire la rétention raccourcit et nettoie immédiatement les artefacts existants ; l'augmenter ne concerne que les nouveaux.
|
|
182
|
+
|
|
183
|
+
## Passerelle API locale
|
|
184
|
+
|
|
185
|
+
Désactivée par défaut. Une fois activée, elle démarre un serveur `node:http` isolé (pas le port web de DSH) sur `127.0.0.1:18080` et réutilise les mêmes sessions OAuth authentifiées :
|
|
186
|
+
|
|
187
|
+
```yaml
|
|
188
|
+
gateway:
|
|
189
|
+
enabled: false
|
|
190
|
+
bind: 127.0.0.1
|
|
191
|
+
port: 18080
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
Endpoints : `GET /healthz`, `GET /v1/models`, `POST /v1/chat/completions`, `POST /v1/responses`, `POST /v1/messages`. Une clé Bearer est stockée dans `$DSH_HOME/.coding-oauth-gateway.json` (`0600`). La configuration permet de copier l'URL de base OpenAI (base + `/v1`), l'URL de base Anthropic et la clé Bearer actuelle sans la régénérer ; la révélation de la clé est limitée au loopback et n'est pas persistée dans le stockage du navigateur. La rotation est une action destructive avec confirmation. Le port d'écoute peut être modifié directement puis enregistré avec Apply, ou rempli par Random (18100–18999) ; le port choisi est persisté dans le document de passerelle propriétaire-seul, et un listener en cours d'exécution se rebind. Le bind reste configurable uniquement en YAML ; un bind non loopback exige une clé. Ce n'est pas un relais distant.
|
|
195
|
+
|
|
196
|
+
## CLI
|
|
197
|
+
|
|
198
|
+
```bash
|
|
199
|
+
# `dsh-grok-build` reste un alias de commande
|
|
200
|
+
dsh-coding-oauth login [--pkce] | import | status | logout
|
|
201
|
+
|
|
202
|
+
# fournisseurs plus récents
|
|
203
|
+
dsh-coding-oauth login codex --device-auth | codex --browser | kimi | claude
|
|
204
|
+
dsh-coding-oauth status all
|
|
205
|
+
dsh-coding-oauth logout codex
|
|
206
|
+
|
|
207
|
+
# Antigravity (installez d'abord dans le profil web)
|
|
208
|
+
dsh plugin --profile web exec dsh-agy login --headless
|
|
209
|
+
```
|
|
210
|
+
|
|
211
|
+
> La CLI de `dsh-agy` modifie le pool de comptes en dehors du processus DSH, elle ne peut donc pas émettre d'événement de catalogue dans le processus — fermez et rouvrez le sélecteur de modèles après connexion/déconnexion.
|
|
212
|
+
|
|
213
|
+
## Kimi en Chine
|
|
214
|
+
|
|
215
|
+
L'OAuth de l'abonnement Kimi Code utilise `https://auth.kimi.com` ; l'inférence utilise `https://api.kimi.com/coding`. `https://api.moonshot.cn/v1` est le canal de clé API à l'utilisation du **Moonshot Open Platform** — il n'existe aucun « endpoint OAuth Chine » commutable. Ce plugin utilise une route séparée `kimi-code-oauth` et n'affecte pas une configuration `kimi-coding` par clé API existante.
|
|
216
|
+
|
|
217
|
+
## Proxy réseau
|
|
218
|
+
|
|
219
|
+
Priorité : `config.proxy` → `CODING_OAUTH_PROXY` → `GROK_BUILD_PROXY` → `HTTPS_PROXY`/`HTTP_PROXY`.
|
|
220
|
+
|
|
221
|
+
```yaml
|
|
222
|
+
- id: llm-grok-build-oauth
|
|
223
|
+
config:
|
|
224
|
+
proxy: http://127.0.0.1:7890
|
|
225
|
+
proxyKimi: false
|
|
226
|
+
```
|
|
227
|
+
|
|
228
|
+
Seuls les domaines d'abonnement examinés sont proxifiés (xAI/Grok, OpenAI Codex, Claude/Anthropic, Google Antigravity) ; tout le reste du trafic DSH garde son répartiteur d'origine. Kimi reste direct par défaut et n'utilise le proxy que lorsque `proxyKimi: true`.
|
|
229
|
+
|
|
230
|
+
## Résilience
|
|
231
|
+
|
|
232
|
+
Les jetons d'accès OAuth sont renouvelés **cinq minutes** avant l'expiration enregistrée (pi-ai 0.84+). Si l'amont refuse encore un jeton localement valide avec 401/403, le plugin recule le `expires` stocké et l'étape relancée rafraîchit le jeton avant de renvoyer.
|
|
233
|
+
|
|
234
|
+
Les nouvelles tentatives suivent la politique du harness : les pannes transitoires (`RATE_LIMIT`/`SERVER`/`TIMEOUT`/`TRANSPORT`/`EMPTY_RESPONSE`) **et `AUTH`** sont relancées avec un backoff exponentiel (5 essais, 5 s → 10 s → 20 s → 40 s → 80 s (~155 s cumulés), jitter 10 %). L'épuisement de quota et un refresh token mort **ne** sont **pas** relancés. Surcharge par déploiement :
|
|
235
|
+
|
|
236
|
+
```yaml
|
|
237
|
+
- id: llm-grok-build-oauth
|
|
238
|
+
config:
|
|
239
|
+
retryPolicy:
|
|
240
|
+
mode: normal
|
|
241
|
+
maxRetries: 5
|
|
242
|
+
retryableCodes: [EMPTY_RESPONSE, RATE_LIMIT, SERVER, TIMEOUT, TRANSPORT, AUTH]
|
|
243
|
+
backoff: { initialDelayMs: 5000, maxDelayMs: 80000, jitterRatio: 0.1 }
|
|
244
|
+
```
|
|
245
|
+
|
|
246
|
+
## Identifiants
|
|
247
|
+
|
|
248
|
+
Propriétaire-seul `0600`, écriture atomique, verrou de fichier inter-processus :
|
|
249
|
+
|
|
250
|
+
- `$DSH_HOME/.grok-build-auth.json`
|
|
251
|
+
- `$DSH_HOME/.codex-oauth-auth.json`
|
|
252
|
+
- `$DSH_HOME/.kimi-code-oauth-auth.json`
|
|
253
|
+
- `$DSH_HOME/.claude-code-oauth-auth.json`
|
|
254
|
+
|
|
255
|
+
Les caches de sélection vivent dans les fichiers `*-models.json` correspondants. **Aucun statut HTTP, log ou interface ne peut renvoyer un token.**
|
|
256
|
+
|
|
257
|
+
## Architecture
|
|
258
|
+
|
|
259
|
+
```mermaid
|
|
260
|
+
flowchart LR
|
|
261
|
+
subgraph DSH["DSH Harness"]
|
|
262
|
+
UI[Configuration / Web · Coding OAuth] --> LLM[llm route]
|
|
263
|
+
LLM --> ALIA[Adaptateur d'alias de route]
|
|
264
|
+
end
|
|
265
|
+
ALIA --> PI[fournisseur natif pi-ai<br/>OAuth · refresh · stream]
|
|
266
|
+
PI --> GROK[Grok Build]
|
|
267
|
+
PI --> COD[Codex]
|
|
268
|
+
PI --> KIMI[Kimi]
|
|
269
|
+
PI --> CLAU[Claude]
|
|
270
|
+
AGY[plugin dsh-agy] --> GAL[Google Antigravity]
|
|
271
|
+
```
|
|
272
|
+
|
|
273
|
+
## Notes techniques
|
|
274
|
+
|
|
275
|
+
- **Grok Build** : fournisseur Responses personnalisé sur `cli-chat-proxy.grok.com/v1`, en-têtes d'empreinte CLI, catalogue de modèles dynamique.
|
|
276
|
+
- **Codex/Kimi/Claude** : les fournisseurs natifs pi-ai gèrent OAuth et refresh ; l'adaptateur d'alias de route les mappe aux ids natifs tandis que l'identité du modèle reste inchangée.
|
|
277
|
+
- Le token d'accès Kimi est explicitement converti en `Authorization: Bearer` — jamais envoyé par erreur comme `x-api-key` d'Anthropic.
|
|
278
|
+
- Google Antigravity n'est **pas** rétro-ingénieré ici ; il utilise un plugin DSH dédié épinglé en version.
|
|
279
|
+
|
|
280
|
+
## Conformité
|
|
281
|
+
|
|
282
|
+
Utiliser des abonnements de codage via un harness tiers peut se situer dans une zone grise des conditions de chaque vendeur et peut déclencher des contrôles de quota, régionaux ou de risque de compte. **N'utilisez que vos propres comptes** ; ce projet ne prend pas en charge les comptes en masse, la revente de quota, le relais distant, le contournement de paywall ou l'usurpation de client. Pour un usage commercial, préférez les canaux officiels de clé API des vendeurs.
|
|
283
|
+
|
|
284
|
+
## Documentation
|
|
285
|
+
|
|
286
|
+
| Document | Objectif |
|
|
287
|
+
|---|---|
|
|
288
|
+
| [`INSTALL.md`](INSTALL.md) | Détails d'installation et d'utilisation |
|
|
289
|
+
| [`CHANGELOG.md`](CHANGELOG.md) | Historique des versions |
|
|
290
|
+
| [`docs/00-project-rules.md`](docs/00-project-rules.md) | Versioning, boucle de release, répartition public/privé |
|
|
291
|
+
| [`docs/02-architecture.md`](docs/02-architecture.md) | Architecture interne (routes, flux de données, modules, API) · [中文](docs/02-architecture.zh-CN.md) |
|
|
292
|
+
| [`CONTRIBUTING.md`](CONTRIBUTING.md) | Guide de contribution |
|
|
293
|
+
|
|
294
|
+
## Lié
|
|
295
|
+
|
|
296
|
+
- [`dsh-agy`](https://www.npmjs.com/package/dsh-agy) — plugin séparé épinglé pour Google Antigravity.
|
|
297
|
+
|
|
298
|
+
## Contribution
|
|
299
|
+
|
|
300
|
+
Les contributions de toute nature sont bienvenues — fonctionnalités, documentation, traductions, rapports de bugs. Voir **[CONTRIBUTING](CONTRIBUTING.md)** pour le flux, les conventions de commit et la boucle de release. Si votre langue n'est pas listée, envoyez un PR avec une traduction du README et nous l'ajouterons au tableau ci-dessus.
|
|
301
|
+
|
|
302
|
+
## Licence
|
|
303
|
+
|
|
304
|
+
[Apache-2.0](LICENSE) · voir [NOTICE](NOTICE). Des portions sont dérivées du projet [dsh-xai](https://github.com/MirDie/dsh-xai) (Apache-2.0).
|