overmind-mcp 2.8.14 → 2.8.19

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.
@@ -7,304 +7,311 @@ export const configExampleSchema = z.object({
7
7
  export async function configExample(args) {
8
8
  const { provider } = args;
9
9
  let text = '';
10
- const interpolationNotice = `
11
- 💡 **NOUVEAUTÉ : INTERPOLATION DE VARIABLES**
12
- Vous pouvez désormais utiliser des variables du fichier \`.env\` dans vos fichiers \`settings_[agent].json\`.
13
- Les variables commençant par \`$\` seront automatiquement remplacées par leur valeur réelle au moment de l'exécution.
10
+ const interpolationNotice = `
11
+ 💡 **NOUVEAUTÉ : INTERPOLATION DE VARIABLES**
12
+ Vous pouvez désormais utiliser des variables du fichier \`.env\` dans vos fichiers \`settings_[agent].json\`.
13
+ Les variables commençant par \`$\` seront automatiquement remplacées par leur valeur réelle au moment de l'exécution.
14
14
  `;
15
15
  switch (provider) {
16
16
  case 'glm':
17
- text = `🚀 **EXEMPLE DE CONFIGURATION POUR GLM / Z.AI (ANTHROPIC PROXY)**
18
-
19
- ### 📂 settings_[nom_agent].json
20
- \`\`\`json
21
- {
22
- "env": {
23
- "ANTHROPIC_MODEL": "$ANTHROPIC_MODEL_Z",
24
- "ANTHROPIC_AUTH_TOKEN": "$ANTHROPIC_AUTH_TOKEN_Y",
25
- "ANTHROPIC_AUTH_TOKEN_FALLBACK": "$ANTHROPIC_AUTH_TOKEN_E",
26
- "ANTHROPIC_BASE_URL": "$ANTHROPIC_BASE_URL_Z"
27
- },
28
- "enableAllProjectMcpServers": false,
29
- "enabledMcpjsonServers": [
30
- "postgresql-server",
31
- "memory"
32
- ],
33
- "agent": "nom_agent",
34
- "runner": "claude"
35
- }
36
- \`\`\`
37
-
38
- ### 📂 .env correspondant
39
- \`\`\`
40
- # Z.AI Configuration
41
- ANTHROPIC_BASE_URL_Z=https://api.z.ai/api/anthropic
42
- ANTHROPIC_MODEL_Z=glm-5.1
43
- ANTHROPIC_AUTH_TOKEN_Y=your_primary_token_here
44
- ANTHROPIC_AUTH_TOKEN_E=your_fallback_token_here
45
- \`\`\`
46
-
47
- **Modèles GLM disponibles :**
48
- - \`glm-5.1\` - Flagship modèle (recommandé)
49
- - \`glm-5\` - Performances solides
50
- - \`glm-4.5-air\` - Modèle léger et coût-efficace
51
-
52
- **Fallback automatique :**
53
- - Utilise \`ANTHROPIC_AUTH_TOKEN_Y\` par défaut
54
- - En cas d'erreur 401/429/5xx, bascule automatiquement sur \`ANTHROPIC_AUTH_TOKEN_E\`
55
-
17
+ text = `🚀 **EXEMPLE DE CONFIGURATION POUR GLM / Z.AI (ANTHROPIC PROXY)**
18
+
19
+ ### 📂 settings_[nom_agent].json
20
+ \`\`\`json
21
+ {
22
+ "env": {
23
+ "ANTHROPIC_MODEL": "$ANTHROPIC_MODEL_Z",
24
+ "ANTHROPIC_AUTH_TOKEN": "$ANTHROPIC_AUTH_TOKEN_Y",
25
+ "ANTHROPIC_AUTH_TOKEN_FALLBACK": "$ANTHROPIC_AUTH_TOKEN_E",
26
+ "ANTHROPIC_BASE_URL": "$ANTHROPIC_BASE_URL_Z"
27
+ },
28
+ "enableAllProjectMcpServers": false,
29
+ "enabledMcpjsonServers": [
30
+ "postgresql-server",
31
+ "memory"
32
+ ],
33
+ "agent": "nom_agent",
34
+ "runner": "claude"
35
+ }
36
+ \`\`\`
37
+
38
+ ### 📂 .env correspondant
39
+ \`\`\`
40
+ # Z.AI Configuration
41
+ ANTHROPIC_BASE_URL_Z=https://api.z.ai/api/anthropic
42
+ ANTHROPIC_MODEL_Z=glm-5.1
43
+ ANTHROPIC_AUTH_TOKEN_Y=your_primary_token_here
44
+ ANTHROPIC_AUTH_TOKEN_E=your_fallback_token_here
45
+ \`\`\`
46
+
47
+ **Modèles GLM disponibles :**
48
+ - \`glm-5.1\` - Flagship modèle (recommandé)
49
+ - \`glm-5\` - Performances solides
50
+ - \`glm-4.5-air\` - Modèle léger et coût-efficace
51
+
52
+ **Fallback automatique :**
53
+ - Utilise \`ANTHROPIC_AUTH_TOKEN_Y\` par défaut
54
+ - En cas d'erreur 401/429/5xx, bascule automatiquement sur \`ANTHROPIC_AUTH_TOKEN_E\`
55
+
56
56
  ${interpolationNotice}`;
57
57
  break;
58
58
  case 'ilmu':
59
- text = `🚀 **EXEMPLE DE CONFIGURATION POUR ILMU AI**
60
-
61
- ### 📂 settings_[nom_agent].json
62
- \`\`\`json
63
- {
64
- "env": {
65
- "ANTHROPIC_MODEL": "$Z_AI_MODEL", // Interpolé depuis le .env
66
- "ANTHROPIC_AUTH_TOKEN": "$Z_AI_API_KEY",
67
- "ANTHROPIC_BASE_URL": "$Z_AI_BASE_URL",
68
- "API_TIMEOUT_MS": "900000"
69
- },
70
- "enableAllProjectMcpServers": false,
71
- "enabledMcpjsonServers": [
72
- "postgresql-server",
73
- "memory",
74
- "discord-server"
75
- ],
76
- "agent": "ilmu_agent",
77
- "runner": "kilo"
78
- }
79
- \`\`\`
59
+ text = `🚀 **EXEMPLE DE CONFIGURATION POUR ILMU AI**
60
+
61
+ ### 📂 settings_[nom_agent].json
62
+ \`\`\`json
63
+ {
64
+ "env": {
65
+ "ANTHROPIC_MODEL": "$Z_AI_MODEL", // Interpolé depuis le .env
66
+ "ANTHROPIC_AUTH_TOKEN": "$Z_AI_API_KEY",
67
+ "ANTHROPIC_BASE_URL": "$Z_AI_BASE_URL",
68
+ "API_TIMEOUT_MS": "900000"
69
+ },
70
+ "enableAllProjectMcpServers": false,
71
+ "enabledMcpjsonServers": [
72
+ "postgresql-server",
73
+ "memory",
74
+ "discord-server"
75
+ ],
76
+ "agent": "ilmu_agent",
77
+ "runner": "kilo"
78
+ }
79
+ \`\`\`
80
80
  ${interpolationNotice}`;
81
81
  break;
82
82
  case 'minimax':
83
- text = `🚀 **EXEMPLE DE CONFIGURATION POUR MINIMAX (VIA PROXY ANTHROPIC)**
84
-
85
- ### 📂 settings_[nom_agent].json
86
- \`\`\`json
87
- {
88
- "env": {
89
- "ANTHROPIC_BASE_URL": "https://api.minimax.io/anthropic",
90
- "ANTHROPIC_AUTH_TOKEN": "$MINIMAX_API_KEY", // Utilisez une variable .env
91
- "API_TIMEOUT_MS": "3000000",
92
- "CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC": 1,
93
- "ANTHROPIC_MODEL": "The_Chaos_Prophet",
94
- "ANTHROPIC_SMALL_FAST_MODEL": "MiniMax-M2",
95
- "ANTHROPIC_DEFAULT_SONNET_MODEL": "MiniMax-M2",
96
- "ANTHROPIC_DEFAULT_OPUS_MODEL": "MiniMax-M2",
97
- "ANTHROPIC_DEFAULT_HAIKU_MODEL": "MiniMax-M2"
98
- },
99
- "agent": "nom_agent",
100
- "runner": "claude"
101
- }
102
- \`\`\`
83
+ text = `🚀 **EXEMPLE DE CONFIGURATION POUR MINIMAX (VIA PROXY ANTHROPIC)**
84
+
85
+ ### 📂 settings_[nom_agent].json
86
+ \`\`\`json
87
+ {
88
+ "env": {
89
+ "ANTHROPIC_BASE_URL": "https://api.minimax.io/anthropic",
90
+ "MINIMAX_CN_API_KEY": "$MINIMAX_CN_API_KEY", // ⚠️ Provider minimax-cn: utilisez MINIMAX_CN_API_KEY (PAS ANTHROPIC_AUTH_TOKEN) — c'est le plugin minimax du binaire hermes v0.16.0 qui décide du nom de la variable.
91
+ "API_TIMEOUT_MS": "3000000",
92
+ "CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC": 1,
93
+ "ANTHROPIC_MODEL": "The_Chaos_Prophet",
94
+ "ANTHROPIC_SMALL_FAST_MODEL": "MiniMax-M2",
95
+ "ANTHROPIC_DEFAULT_SONNET_MODEL": "MiniMax-M2",
96
+ "ANTHROPIC_DEFAULT_OPUS_MODEL": "MiniMax-M2",
97
+ "ANTHROPIC_DEFAULT_HAIKU_MODEL": "MiniMax-M2"
98
+ },
99
+ "agent": "nom_agent",
100
+ "runner": "claude"
101
+ }
102
+ \`\`\`
103
+
104
+ > **Note (Hermes runner + provider minimax-cn)** : le binaire Hermes lit le credential via la variable d'environnement attendue par le plugin provider minimax, soit \`MINIMAX_CN_API_KEY\`. Si vous utilisez \`ANTHROPIC_AUTH_TOKEN\` avec un provider minimax, Hermes upstream va silencieusement renvoyer 401 même si Overmind a la clé. Mapping complet des credentials par provider :
105
+ > - \`minimax-cn\` → \`MINIMAX_CN_API_KEY\`
106
+ > - \`minimax\` (alias) → \`MINIMAX_API_KEY\`
107
+ > - \`zai\` → \`GLM_API_KEY\` ou \`ZAI_ANTHROPIC_FALLBACK_KEY\`
108
+ > - \`z-ai\` → \`Z_AI_API_KEY\`
109
+ > - \`anthropic\` → \`ANTHROPIC_AUTH_TOKEN\` (accepte les suffixes \`_1.._5\`, \`_E\`, \`_F\`, \`_Y\`)
103
110
  ${interpolationNotice}`;
104
111
  break;
105
112
  case 'openrouter':
106
- text = `🚀 **EXEMPLE DE CONFIGURATION POUR OPENROUTER (VIA PROXY ANTHROPIC)**
107
-
108
- ### 📂 settings_[nom_agent].json
109
- \`\`\`json
110
- {
111
- "env": {
112
- "ANTHROPIC_BASE_URL": "https://openrouter.ai/api/v1",
113
- "ANTHROPIC_AUTH_TOKEN": "$OPENROUTER_API_KEY", // Utilisez une variable .env
114
- "API_TIMEOUT_MS": "3000000",
115
- "CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC": 1,
116
- "ANTHROPIC_MODEL": "anthropic/claude-3-5-sonnet",
117
- "ANTHROPIC_SMALL_FAST_MODEL": "anthropic/claude-3-haiku",
118
- "ANTHROPIC_DEFAULT_SONNET_MODEL": "anthropic/claude-3-5-sonnet",
119
- "ANTHROPIC_DEFAULT_OPUS_MODEL": "anthropic/claude-3-opus",
120
- "ANTHROPIC_DEFAULT_HAIKU_MODEL": "anthropic/claude-3-haiku"
121
- },
122
- "agent": "nom_agent",
123
- "runner": "claude"
124
- }
125
- \`\`\`
113
+ text = `🚀 **EXEMPLE DE CONFIGURATION POUR OPENROUTER (VIA PROXY ANTHROPIC)**
114
+
115
+ ### 📂 settings_[nom_agent].json
116
+ \`\`\`json
117
+ {
118
+ "env": {
119
+ "ANTHROPIC_BASE_URL": "https://openrouter.ai/api/v1",
120
+ "ANTHROPIC_AUTH_TOKEN": "$OPENROUTER_API_KEY", // Utilisez une variable .env
121
+ "API_TIMEOUT_MS": "3000000",
122
+ "CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC": 1,
123
+ "ANTHROPIC_MODEL": "anthropic/claude-3-5-sonnet",
124
+ "ANTHROPIC_SMALL_FAST_MODEL": "anthropic/claude-3-haiku",
125
+ "ANTHROPIC_DEFAULT_SONNET_MODEL": "anthropic/claude-3-5-sonnet",
126
+ "ANTHROPIC_DEFAULT_OPUS_MODEL": "anthropic/claude-3-opus",
127
+ "ANTHROPIC_DEFAULT_HAIKU_MODEL": "anthropic/claude-3-haiku"
128
+ },
129
+ "agent": "nom_agent",
130
+ "runner": "claude"
131
+ }
132
+ \`\`\`
126
133
  ${interpolationNotice}`;
127
134
  break;
128
135
  case 'minimaxi':
129
- text = `🚀 **EXEMPLE DE CONFIGURATION POUR MINIMAXI (VERSION ALTERNATIVE)**
130
-
131
- ### 📂 settings_[nom_agent].json
132
- \`\`\`json
133
- {
134
- "env": {
135
- "ANTHROPIC_MODEL": "MiniMax-Text-01",
136
- "ANTHROPIC_AUTH_TOKEN": "$MINIMAXI_API_KEY", // Configuré dans le .env
137
- "ANTHROPIC_BASE_URL": "$MINIMAXI_BASE_URL",
138
- "ANTHROPIC_SMALL_FAST_MODEL": "MiniMax-Text-01",
139
- "ANTHROPIC_DEFAULT_HAIKU_MODEL": "MiniMax-Text-01",
140
- "ANTHROPIC_DEFAULT_OPUS_MODEL": "MiniMax-Text-01",
141
- "ANTHROPIC_DEFAULT_SONNET_MODEL": "MiniMax-Text-01",
142
- "API_TIMEOUT_MS": "900000",
143
- "CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC": "1",
144
- "agent": "minimax_agent"
145
- },
146
- "agent": "minimax_agent",
147
- "runner": "claude"
148
- }
149
- \`\`\`
136
+ text = `🚀 **EXEMPLE DE CONFIGURATION POUR MINIMAXI (VERSION ALTERNATIVE)**
137
+
138
+ ### 📂 settings_[nom_agent].json
139
+ \`\`\`json
140
+ {
141
+ "env": {
142
+ "ANTHROPIC_MODEL": "MiniMax-Text-01",
143
+ "ANTHROPIC_AUTH_TOKEN": "$MINIMAXI_API_KEY", // Configuré dans le .env
144
+ "ANTHROPIC_BASE_URL": "$MINIMAXI_BASE_URL",
145
+ "ANTHROPIC_SMALL_FAST_MODEL": "MiniMax-Text-01",
146
+ "ANTHROPIC_DEFAULT_HAIKU_MODEL": "MiniMax-Text-01",
147
+ "ANTHROPIC_DEFAULT_OPUS_MODEL": "MiniMax-Text-01",
148
+ "ANTHROPIC_DEFAULT_SONNET_MODEL": "MiniMax-Text-01",
149
+ "API_TIMEOUT_MS": "900000",
150
+ "CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC": "1",
151
+ "agent": "minimax_agent"
152
+ },
153
+ "agent": "minimax_agent",
154
+ "runner": "claude"
155
+ }
156
+ \`\`\`
150
157
  ${interpolationNotice}`;
151
158
  break;
152
159
  // ─── OVERMIND: Guide complet $VAR + FALLBACK TOKENS ───
153
160
  case 'overmind':
154
- text = `🎯 **GUIDE COMPLET : SUBSTITUTION $VAR ET FALLBACK TOKENS**
155
-
156
- Overmind supporte deux mécanismes puissants pour vos agents :
157
-
158
- ---
159
-
160
- ### 1️⃣ SUBSTITUTION $VAR (tous les runners)
161
-
162
- Les settings de vos agents peuvent référencer des variables d'environnement du \`.env\` avec la syntaxe \`$NOM_VARIABLE\`.
163
-
164
- \`\`\`json
165
- {
166
- "env": {
167
- "ANTHROPIC_AUTH_TOKEN": "$ANTHROPIC_AUTH_TOKEN_1",
168
- "ANTHROPIC_BASE_URL": "$Z_AI_BASE_URL"
169
- }
170
- }
171
- \`\`\`
172
-
173
- Au runtime, Overmind remplace automatiquement \`$ANTHROPIC_AUTH_TOKEN_1\` par sa valeur réelle depuis le \`.env\`.
174
-
175
- ---
176
-
177
- ### 2️⃣ RETRY AUTOMATIQUE SUR ERREUR (ClaudeRunner + KiloRunner)
178
-
179
- Quand une erreur se produit, Overmind peut RETENTER automatiquement avec des tokens de secours.
180
-
181
- **Erreurs retryables :**
182
- - **401** : Auth failure (token invalide/expiré)
183
- - **429** : Rate limit / quota exhausted (limite atteinte)
184
- - **500, 502, 503** : Server error (erreur serveur)
185
-
186
- **Détection texte stderr :** \`401\`, \`unauthorized\`, \`invalid api key\`, \`authentication failed\`, \`auth error\`, \`429\`, \`rate limit\`, \`quota exhausted\`, \`limit exhausted\`, \`503\`, \`service unavailable\`, \`500\`, \`internal server error\`
187
-
188
- **Flow :** Token primaire → AUTH_FALLBACK_1 → AUTH_FALLBACK_2 → AUTH_FALLBACK_3 → ÉCHEC
189
-
190
- ---
191
-
192
- ### 📂 EXEMPLE COMPLET : ClaudeRunner avec 3 fallback tokens
193
-
194
- \`\`\`json
195
- {
196
- "model": "claude-sonnet-4-20250514",
197
- "env": {
198
- "ANTHROPIC_AUTH_TOKEN": "$ANTHROPIC_AUTH_TOKEN", // Token principal
199
- "AUTH_FALLBACK_1": "$ANTHROPIC_AUTH_TOKEN_2", // Si 401/429/5xx
200
- "AUTH_FALLBACK_2": "$ANTHROPIC_AUTH_TOKEN_3", // Si encore échoué
201
- "AUTH_FALLBACK_3": "$ANTHROPIC_AUTH_TOKEN_4" // Dernier recours
202
- }
203
- }
204
- \`\`\`
205
-
206
- **.env associé :**
207
- \`\`\`
208
- ANTHROPIC_AUTH_TOKEN=sk-cp-primary... # Token principal ( utilisation normale )
209
- ANTHROPIC_AUTH_TOKEN_2=sk-cp-xxx... # Fallback #1
210
- ANTHROPIC_AUTH_TOKEN_3=sk-cp-yyy... # Fallback #2
211
- ANTHROPIC_AUTH_TOKEN_4=sk-cp-zzz... # Fallback #3
212
- \`\`\`
213
-
214
- **Comment ça marche :**
215
- 1. L'agent commence avec \`ANTHROPIC_AUTH_TOKEN\` = \`$ANTHROPIC_AUTH_TOKEN\` → résolu → \`sk-cp-primary...\`
216
- 2. Si erreur 401/429/5xx → retry avec \`AUTH_FALLBACK_1\` → \`sk-cp-xxx...\`
217
- 3. Si encore échec → retry avec \`AUTH_FALLBACK_2\` → \`sk-cp-yyy...\`
218
- 4. Si encore échec → retry avec \`AUTH_FALLBACK_3\` → \`sk-cp-zzz...\`
219
- 5. Si encore échec → \`RETRYABLE_ERROR_ALL_FALLBACKS_EXHAUSTED\`
220
-
221
- ---
222
-
223
- ### 📂 EXEMPLE COMPLET : KiloRunner avec fallback
224
-
225
- \`\`\`json
226
- {
227
- "model": "claude-sonnet-4-20250514",
228
- "env": {
229
- "OPENAI_API_KEY": "$ANTHROPIC_AUTH_TOKEN", // Clé primaire Kilo
230
- "AUTH_FALLBACK_1": "$ANTHROPIC_AUTH_TOKEN_2", // Fallback #1
231
- "AUTH_FALLBACK_2": "$ANTHROPIC_AUTH_TOKEN_3", // Fallback #2
232
- "AUTH_FALLBACK_3": "$ANTHROPIC_AUTH_TOKEN_4" // Fallback #3
233
- }
234
- }
235
- \`\`\`
236
-
237
- > Kilo utilise \`OPENAI_API_KEY\` comme clé primaire (compatible OpenAI / OpenRouter / etc.).
238
-
239
- ---
240
-
241
- ### 📂 EXEMPLE : Variable $VAR simple (sans fallback)
242
-
243
- \`\`\`json
244
- {
245
- "model": "claude-sonnet-4-20250514",
246
- "env": {
247
- "ANTHROPIC_AUTH_TOKEN": "$ANTHROPIC_AUTH_TOKEN",
248
- "ANTHROPIC_BASE_URL": "$Z_AI_BASE_URL",
249
- "API_TIMEOUT_MS": "$API_TIMEOUT_MS"
250
- }
251
- }
252
- \`\`\`
253
-
254
- Les \`$VAR\` peuvent être sur n'importe quelle valeur de \`env\`.
255
-
256
- ---
257
-
258
- ### ⚠️ RÈGLES IMPORTANTES
259
-
260
- - Les clés \`AUTH_FALLBACK_1\`, \`AUTH_FALLBACK_2\`, \`AUTH_FALLBACK_3\` sont réservées par Overmind pour le retry automatique.
261
- - La substitution est à **un seul niveau** : \`$MINIMAXI_API_KEY\` est remplacé, mais pas récursivement.
262
- - Les tokens sont résolus **avant** le spawn de l'agent.
263
- - Le retry fonctionne sur erreur **401 (auth), 429 (rate limit), 500/502/503 (server error)** — pas sur les erreurs de réseau simples (timeout, DNS...).
264
- - Chaque token fallback ne sera testé qu'une seule fois par session d'agent.
161
+ text = `🎯 **GUIDE COMPLET : SUBSTITUTION $VAR ET FALLBACK TOKENS**
162
+
163
+ Overmind supporte deux mécanismes puissants pour vos agents :
164
+
165
+ ---
166
+
167
+ ### 1️⃣ SUBSTITUTION $VAR (tous les runners)
168
+
169
+ Les settings de vos agents peuvent référencer des variables d'environnement du \`.env\` avec la syntaxe \`$NOM_VARIABLE\`.
170
+
171
+ \`\`\`json
172
+ {
173
+ "env": {
174
+ "ANTHROPIC_AUTH_TOKEN": "$ANTHROPIC_AUTH_TOKEN_1",
175
+ "ANTHROPIC_BASE_URL": "$Z_AI_BASE_URL"
176
+ }
177
+ }
178
+ \`\`\`
179
+
180
+ Au runtime, Overmind remplace automatiquement \`$ANTHROPIC_AUTH_TOKEN_1\` par sa valeur réelle depuis le \`.env\`.
181
+
182
+ ---
183
+
184
+ ### 2️⃣ RETRY AUTOMATIQUE SUR ERREUR (ClaudeRunner + KiloRunner)
185
+
186
+ Quand une erreur se produit, Overmind peut RETENTER automatiquement avec des tokens de secours.
187
+
188
+ **Erreurs retryables :**
189
+ - **401** : Auth failure (token invalide/expiré)
190
+ - **429** : Rate limit / quota exhausted (limite atteinte)
191
+ - **500, 502, 503** : Server error (erreur serveur)
192
+
193
+ **Détection texte stderr :** \`401\`, \`unauthorized\`, \`invalid api key\`, \`authentication failed\`, \`auth error\`, \`429\`, \`rate limit\`, \`quota exhausted\`, \`limit exhausted\`, \`503\`, \`service unavailable\`, \`500\`, \`internal server error\`
194
+
195
+ **Flow :** Token primaire → AUTH_FALLBACK_1 → AUTH_FALLBACK_2 → AUTH_FALLBACK_3 → ÉCHEC
196
+
197
+ ---
198
+
199
+ ### 📂 EXEMPLE COMPLET : ClaudeRunner avec 3 fallback tokens
200
+
201
+ \`\`\`json
202
+ {
203
+ "model": "claude-sonnet-4-20250514",
204
+ "env": {
205
+ "ANTHROPIC_AUTH_TOKEN": "$ANTHROPIC_AUTH_TOKEN", // Token principal
206
+ "AUTH_FALLBACK_1": "$ANTHROPIC_AUTH_TOKEN_2", // Si 401/429/5xx
207
+ "AUTH_FALLBACK_2": "$ANTHROPIC_AUTH_TOKEN_3", // Si encore échoué
208
+ "AUTH_FALLBACK_3": "$ANTHROPIC_AUTH_TOKEN_4" // Dernier recours
209
+ }
210
+ }
211
+ \`\`\`
212
+
213
+ **.env associé :**
214
+ \`\`\`
215
+ ANTHROPIC_AUTH_TOKEN=sk-cp-primary... # Token principal ( utilisation normale )
216
+ ANTHROPIC_AUTH_TOKEN_2=sk-cp-xxx... # Fallback #1
217
+ ANTHROPIC_AUTH_TOKEN_3=sk-cp-yyy... # Fallback #2
218
+ ANTHROPIC_AUTH_TOKEN_4=sk-cp-zzz... # Fallback #3
219
+ \`\`\`
220
+
221
+ **Comment ça marche :**
222
+ 1. L'agent commence avec \`ANTHROPIC_AUTH_TOKEN\` = \`$ANTHROPIC_AUTH_TOKEN\` → résolu → \`sk-cp-primary...\`
223
+ 2. Si erreur 401/429/5xx → retry avec \`AUTH_FALLBACK_1\` → \`sk-cp-xxx...\`
224
+ 3. Si encore échec → retry avec \`AUTH_FALLBACK_2\` → \`sk-cp-yyy...\`
225
+ 4. Si encore échec → retry avec \`AUTH_FALLBACK_3\` → \`sk-cp-zzz...\`
226
+ 5. Si encore échec → \`RETRYABLE_ERROR_ALL_FALLBACKS_EXHAUSTED\`
227
+
228
+ ---
229
+
230
+ ### 📂 EXEMPLE COMPLET : KiloRunner avec fallback
231
+
232
+ \`\`\`json
233
+ {
234
+ "model": "claude-sonnet-4-20250514",
235
+ "env": {
236
+ "OPENAI_API_KEY": "$ANTHROPIC_AUTH_TOKEN", // Clé primaire Kilo
237
+ "AUTH_FALLBACK_1": "$ANTHROPIC_AUTH_TOKEN_2", // Fallback #1
238
+ "AUTH_FALLBACK_2": "$ANTHROPIC_AUTH_TOKEN_3", // Fallback #2
239
+ "AUTH_FALLBACK_3": "$ANTHROPIC_AUTH_TOKEN_4" // Fallback #3
240
+ }
241
+ }
242
+ \`\`\`
243
+
244
+ > Kilo utilise \`OPENAI_API_KEY\` comme clé primaire (compatible OpenAI / OpenRouter / etc.).
245
+
246
+ ---
247
+
248
+ ### 📂 EXEMPLE : Variable $VAR simple (sans fallback)
249
+
250
+ \`\`\`json
251
+ {
252
+ "model": "claude-sonnet-4-20250514",
253
+ "env": {
254
+ "ANTHROPIC_AUTH_TOKEN": "$ANTHROPIC_AUTH_TOKEN",
255
+ "ANTHROPIC_BASE_URL": "$Z_AI_BASE_URL",
256
+ "API_TIMEOUT_MS": "$API_TIMEOUT_MS"
257
+ }
258
+ }
259
+ \`\`\`
260
+
261
+ Les \`$VAR\` peuvent être sur n'importe quelle valeur de \`env\`.
262
+
263
+ ---
264
+
265
+ ### ⚠️ RÈGLES IMPORTANTES
266
+
267
+ - Les clés \`AUTH_FALLBACK_1\`, \`AUTH_FALLBACK_2\`, \`AUTH_FALLBACK_3\` sont réservées par Overmind pour le retry automatique.
268
+ - La substitution est à **un seul niveau** : \`$MINIMAXI_API_KEY\` est remplacé, mais pas récursivement.
269
+ - Les tokens sont résolus **avant** le spawn de l'agent.
270
+ - Le retry fonctionne sur erreur **401 (auth), 429 (rate limit), 500/502/503 (server error)** — pas sur les erreurs de réseau simples (timeout, DNS...).
271
+ - Chaque token fallback ne sera testé qu'une seule fois par session d'agent.
265
272
  - Si tous les fallbacks sont épuisés, l'erreur finale est \`RETRYABLE_ERROR_ALL_FALLBACKS_EXHAUSTED\`.`;
266
273
  break;
267
274
  case 'hermes':
268
- text = `🤖 **EXEMPLE DE CONFIGURATION POUR HERMES (NOUS AGENT)**
269
-
270
- ### 📂 .claude/settings_[nom_agent].json
271
- \`\`\`json
272
- {
273
- "model": "MiniMax-M2.7",
274
- "env": {
275
- "HERMES_AUTH_TOKEN": "$HERMES_AUTH_TOKEN",
276
- "HERMES_BASE_URL": "$HERMES_BASE_URL",
277
- "HERMES_MODEL": "MiniMax-M2.7",
278
- "MAX_TOKENS": "16000"
279
- },
280
- "enableAllProjectMcpServers": false,
281
- "enabledMcpjsonServers": [
282
- "postgresql-server",
283
- "memory"
284
- ],
285
- "agent": "nom_agent",
286
- "runner": "hermes"
287
- }
288
- \`\`\`
289
-
290
- ### 📂 .env correspondant
291
- \`\`\`
292
- # Hermes / Nous Agent Configuration
293
- HERMES_AUTH_TOKEN=your_hermes_token_here
294
- HERMES_BASE_URL=https://api.minimax.io
295
- MAX_TOKENS=16000
296
- \`\`\`
297
-
298
- **Comment ça marche :**
299
- - Hermes utilise les **3 fichiers standard** comme les autres runners : \`.claude/settings_[agent].json\`, \`.claude/agents/[agent].md\`, \`.claude/.mcp.[agent].json\`
300
- - Le modèle par défaut est \`MiniMax-M2.7\` (défini dans \`CONFIG.HERMES.DEFAULT_MODEL\`)
301
- - Les agents sont définis via \`PromptManager\` (\`.claude/agents/[nom].md\`)
302
- - Les MCP servers sont configurés via \`.claude/.mcp.[agent].json\` (même format que Claude/Kilo)
303
- - HERMES_DIR est automatiquement injecté au spawn pour l'isolation
304
- - Pas de fallback token intégré (contrairement à Claude/Kilo) — à implémenter via le réseau de tokens Overmind si besoin
305
-
306
- **Modèle par défaut :** \`MiniMax-M2.7\` (via \`CONFIG.HERMES.DEFAULT_MODEL\`)
307
-
275
+ text = `🤖 **EXEMPLE DE CONFIGURATION POUR HERMES (NOUS AGENT)**
276
+
277
+ ### 📂 .claude/settings_[nom_agent].json
278
+ \`\`\`json
279
+ {
280
+ "model": "MiniMax-M2.7",
281
+ "env": {
282
+ "HERMES_AUTH_TOKEN": "$HERMES_AUTH_TOKEN",
283
+ "HERMES_BASE_URL": "$HERMES_BASE_URL",
284
+ "HERMES_MODEL": "MiniMax-M2.7",
285
+ "MAX_TOKENS": "16000"
286
+ },
287
+ "enableAllProjectMcpServers": false,
288
+ "enabledMcpjsonServers": [
289
+ "postgresql-server",
290
+ "memory"
291
+ ],
292
+ "agent": "nom_agent",
293
+ "runner": "hermes"
294
+ }
295
+ \`\`\`
296
+
297
+ ### 📂 .env correspondant
298
+ \`\`\`
299
+ # Hermes / Nous Agent Configuration
300
+ HERMES_AUTH_TOKEN=your_hermes_token_here
301
+ HERMES_BASE_URL=https://api.minimax.io
302
+ MAX_TOKENS=16000
303
+ \`\`\`
304
+
305
+ **Comment ça marche :**
306
+ - Hermes utilise les **3 fichiers standard** comme les autres runners : \`.claude/settings_[agent].json\`, \`.claude/agents/[agent].md\`, \`.claude/.mcp.[agent].json\`
307
+ - Le modèle par défaut est \`MiniMax-M2.7\` (défini dans \`CONFIG.HERMES.DEFAULT_MODEL\`)
308
+ - Les agents sont définis via \`PromptManager\` (\`.claude/agents/[nom].md\`)
309
+ - Les MCP servers sont configurés via \`.claude/.mcp.[agent].json\` (même format que Claude/Kilo)
310
+ - HERMES_DIR est automatiquement injecté au spawn pour l'isolation
311
+ - Pas de fallback token intégré (contrairement à Claude/Kilo) — à implémenter via le réseau de tokens Overmind si besoin
312
+
313
+ **Modèle par défaut :** \`MiniMax-M2.7\` (via \`CONFIG.HERMES.DEFAULT_MODEL\`)
314
+
308
315
  ${interpolationNotice}`;
309
316
  break;
310
317
  }
@@ -1 +1 @@
1
- {"version":3,"file":"config_example.js","sourceRoot":"","sources":["../../src/tools/config_example.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1C,QAAQ,EAAE,CAAC;SACR,IAAI,CAAC,CAAC,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;SAChF,QAAQ,CAAC,qEAAqE,CAAC;CACnF,CAAC,CAAC;AAEH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,IAAyC;IAC3E,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC;IAC1B,IAAI,IAAI,GAAG,EAAE,CAAC;IAEd,MAAM,mBAAmB,GAAG;;;;GAI3B,CAAC;IAEF,QAAQ,QAAQ,EAAE,CAAC;QACjB,KAAK,KAAK;YACR,IAAI,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAuCX,mBAAmB,EAAE,CAAC;YAClB,MAAM;QACR,KAAK,MAAM;YACT,IAAI,GAAG;;;;;;;;;;;;;;;;;;;;;EAqBX,mBAAmB,EAAE,CAAC;YAClB,MAAM;QACR,KAAK,SAAS;YACZ,IAAI,GAAG;;;;;;;;;;;;;;;;;;;;EAoBX,mBAAmB,EAAE,CAAC;YAClB,MAAM;QACR,KAAK,YAAY;YACf,IAAI,GAAG;;;;;;;;;;;;;;;;;;;;EAoBX,mBAAmB,EAAE,CAAC;YAClB,MAAM;QACR,KAAK,UAAU;YACb,IAAI,GAAG;;;;;;;;;;;;;;;;;;;;;EAqBX,mBAAmB,EAAE,CAAC;YAClB,MAAM;QAER,yDAAyD;QACzD,KAAK,UAAU;YACb,IAAI,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2GA+G8F,CAAC;YACtG,MAAM;QAER,KAAK,QAAQ;YACX,IAAI,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAwCX,mBAAmB,EAAE,CAAC;YAClB,MAAM;IACV,CAAC;IAED,OAAO;QACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,CAAC;KAC3C,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"config_example.js","sourceRoot":"","sources":["../../src/tools/config_example.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1C,QAAQ,EAAE,CAAC;SACR,IAAI,CAAC,CAAC,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;SAChF,QAAQ,CAAC,qEAAqE,CAAC;CACnF,CAAC,CAAC;AAEH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,IAAyC;IAC3E,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC;IAC1B,IAAI,IAAI,GAAG,EAAE,CAAC;IAEd,MAAM,mBAAmB,GAAG;;;;GAI3B,CAAC;IAEF,QAAQ,QAAQ,EAAE,CAAC;QACjB,KAAK,KAAK;YACR,IAAI,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAuCX,mBAAmB,EAAE,CAAC;YAClB,MAAM;QACR,KAAK,MAAM;YACT,IAAI,GAAG;;;;;;;;;;;;;;;;;;;;;EAqBX,mBAAmB,EAAE,CAAC;YAClB,MAAM;QACR,KAAK,SAAS;YACZ,IAAI,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;EA2BX,mBAAmB,EAAE,CAAC;YAClB,MAAM;QACR,KAAK,YAAY;YACf,IAAI,GAAG;;;;;;;;;;;;;;;;;;;;EAoBX,mBAAmB,EAAE,CAAC;YAClB,MAAM;QACR,KAAK,UAAU;YACb,IAAI,GAAG;;;;;;;;;;;;;;;;;;;;;EAqBX,mBAAmB,EAAE,CAAC;YAClB,MAAM;QAER,yDAAyD;QACzD,KAAK,UAAU;YACb,IAAI,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2GA+G8F,CAAC;YACtG,MAAM;QAER,KAAK,QAAQ;YACX,IAAI,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAwCX,mBAAmB,EAAE,CAAC;YAClB,MAAM;IACV,CAAC;IAED,OAAO;QACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,CAAC;KAC3C,CAAC;AACJ,CAAC"}