overmind-mcp 2.8.30 → 2.8.35

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.
@@ -1,318 +1,371 @@
1
1
  import { z } from 'zod';
2
2
  export const configExampleSchema = z.object({
3
3
  provider: z
4
- .enum(['glm', 'minimax', 'openrouter', 'ilmu', 'minimaxi', 'overmind', 'hermes'])
4
+ .enum([
5
+ // Standard providers (legacy ClaudeRunner/KiloRunner)
6
+ 'glm',
7
+ 'openrouter',
8
+ 'ilmu',
9
+ 'anthropic',
10
+ 'overmind',
11
+ // Hermes providers (NousHermesRunner — 2.8.34+)
12
+ 'hermes-minimax-cn',
13
+ 'hermes-minimax-global',
14
+ 'hermes-zai',
15
+ 'hermes-anthropic',
16
+ ])
5
17
  .describe('Le fournisseur pour lequel vous voulez un exemple de configuration.'),
6
18
  });
19
+ /**
20
+ * config_example tool — provides copy-pasteable config templates for each
21
+ * supported provider. Updated for Overmind 2.8.34+:
22
+ * - Hermes runner uses the CANONICAL Hermes layout (HERMES_HOME/agents/<name>/)
23
+ * instead of the legacy polylgot `agent_<name>/.hermes/` dir.
24
+ * - The runner auto-injects provider-specific env vars (MINIMAX_CN_API_KEY,
25
+ * MINIMAX_CN_BASE_URL, etc.) into the canonical settings.json based on
26
+ * the token prefix + ANTHROPIC_BASE_URL. Users only need to set
27
+ * ANTHROPIC_AUTH_TOKEN (+ ANTHROPIC_BASE_URL) and the runner does the rest.
28
+ * - `--provider` is now passed to the CLI (forces Hermes upstream to skip
29
+ * the auto-router that was picking openrouter for MiniMax-M3).
30
+ *
31
+ * Use case: when a user asks "how do I configure agent X for provider Y",
32
+ * call this tool and copy/paste the relevant section.
33
+ */
7
34
  export async function configExample(args) {
8
35
  const { provider } = args;
9
36
  let text = '';
10
37
  const interpolationNotice = `
11
38
  💡 **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
- `;
39
+ Les fichiers \`settings_<agent>.json\` et la config canonique Hermes
40
+ supportent les références \`$VAR\` qui sont résolues depuis \`Workflow/.env\`
41
+ ou \`process.env\` au moment du spawn.
42
+ `;
15
43
  switch (provider) {
16
- case 'glm':
17
- text = `🚀 **EXEMPLE DE CONFIGURATION POUR GLM / Z.AI (ANTHROPIC PROXY)**
44
+ // ═══════════════════════════════════════════════════════════════════
45
+ // HERMES NOUVEAU FORMAT CANONIQUE (2.8.30+)
46
+ // ═══════════════════════════════════════════════════════════════════
47
+ case 'hermes-minimax-cn':
48
+ text = `🇨🇳 **HERMES + MINIMAX CN** (Overmind 2.8.34+, NousHermesRunner)
18
49
 
19
- ### 📂 settings_[nom_agent].json
50
+ ### 📂 Workflow/.claude/settings_<agent>.json
20
51
  \`\`\`json
21
52
  {
22
53
  "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"
54
+ "ANTHROPIC_AUTH_TOKEN": "$ANTHROPIC_AUTH_TOKEN_1",
55
+ "ANTHROPIC_BASE_URL": "https://api.minimaxi.com/anthropic",
56
+ "ANTHROPIC_MODEL": "MiniMax-M3",
57
+ "ANTHROPIC_PROVIDER": "minimax-cn"
27
58
  },
28
59
  "enableAllProjectMcpServers": false,
29
- "enabledMcpjsonServers": [
30
- "postgresql-server",
31
- "memory"
32
- ],
60
+ "enabledMcpjsonServers": ["memory-server", "discord-server"],
33
61
  "agent": "nom_agent",
34
- "runner": "claude"
62
+ "runner": "hermes"
35
63
  }
36
64
  \`\`\`
37
65
 
38
- ### 📂 .env correspondant
66
+ ### 📂 Workflow/.claude/agents/<agent>.md (system prompt, optionnel)
67
+ \`\`\`markdown
68
+ # Persona de l'agent
69
+
70
+ Tu es un assistant ... (description libre)
39
71
  \`\`\`
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
72
+
73
+ ### 📂 Workflow/.env (tokens)
74
+ \`\`\`
75
+ ANTHROPIC_AUTH_TOKEN_1=sk-cp-xxxxxxxx # token MiniMax CN valide
76
+ ANTHROPIC_AUTH_TOKEN_2=sk-cp-yyyyyyyy
77
+ ANTHROPIC_AUTH_TOKEN_3=sk-cp-zzzzzzzz
45
78
  \`\`\`
46
79
 
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
80
+ ### 🔧 Ce que le runner fait automatiquement au spawn
51
81
 
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\`
82
+ 1. Lit \`settings_<agent>.json\` + interpole les \`$VAR\` depuis le \`.env\`
83
+ 2. Détecte le provider depuis le token prefix + URL :
84
+ - \`sk-cp-*\` + URL contient \`minimaxi\` **MiniMax CN**
85
+ 3. Écrit le **settings.json canonique** dans
86
+ \`<HERMES_HOME>/agents/<agent>/settings.json\` avec :
87
+ - L'env block (héritée de settings_<agent>.json)
88
+ - \`MINIMAX_CN_API_KEY\` (le plugin \`minimax-cn\` upstream lit CECI, pas \`ANTHROPIC_AUTH_TOKEN\`)
89
+ - \`MINIMAX_CN_BASE_URL\` (le résolveur provider upstream lit CECI, pas \`ANTHROPIC_BASE_URL\`)
90
+ 4. Spawn \`hermes chat -q "..." --model MiniMax-M3 --provider minimax-cn --yolo\`
91
+ avec \`HERMES_HOME=<workspace>/.overmind/hermes/\`
55
92
 
93
+ ### 🌳 Arborescence canonique (Overmind-managed + Hermes-managed)
94
+ \`\`\`
95
+ Workflow/.overmind/hermes/ ← HERMES_HOME (shared root)
96
+ ├── agents/
97
+ │ └── nom_agent/ ← per-agent home
98
+ │ ├── settings.json ← écrit par le runner
99
+ │ ├── SOUL.md ← (optionnel) persona par-agent
100
+ │ ├── sessions/ logs/ memories/ ... ← Hermes upstream écrit
101
+ ├── config.yaml ← global, Hermes upstream
102
+ ├── auth.json ← global, Hermes upstream (credential pool)
103
+ ├── sessions/ logs/ ... ← partagés entre agents
104
+ \`\`\`
105
+
106
+ ### ⚠️ Pièges courants
107
+ - Ne PAS écrire manuellement \`<HERMES_HOME>/agents/<name>/.hermes/\` — c'est l'ancien
108
+ format polyglot (pré-2.8.30). Le runner crée directement \`agents/<name>/\`.
109
+ - Ne PAS toucher \`config.yaml\` ou \`auth.json\` au root — Hermes upstream les gère.
110
+ - Le token \`$VAR\` est résolu **une seule fois** (pas récursif).
111
+ - Si tu changes l'URL de \`api.minimax.io\` (GLOBAL) → \`api.minimaxi.com\` (CN avec le \`i\`),
112
+ le runner switch automatiquement entre \`MINIMAX_API_KEY\` et \`MINIMAX_CN_API_KEY\`.
113
+ - Les tokens sk-cp sont partagés entre CN et GLOBAL — c'est **l'URL dans settings** qui
114
+ décide quel bucket/provider est utilisé.
56
115
  ${interpolationNotice}`;
57
116
  break;
58
- case 'ilmu':
59
- text = `🚀 **EXEMPLE DE CONFIGURATION POUR ILMU AI**
117
+ case 'hermes-minimax-global':
118
+ text = `🌍 **HERMES + MINIMAX GLOBAL** (Overmind 2.8.34+, NousHermesRunner)
60
119
 
61
- ### 📂 settings_[nom_agent].json
120
+ ### 📂 Workflow/.claude/settings_<agent>.json
62
121
  \`\`\`json
63
122
  {
64
123
  "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"
124
+ "ANTHROPIC_AUTH_TOKEN": "$ANTHROPIC_AUTH_TOKEN_GLOBAL",
125
+ "ANTHROPIC_BASE_URL": "https://api.minimax.io/anthropic",
126
+ "ANTHROPIC_MODEL": "MiniMax-M3",
127
+ "ANTHROPIC_PROVIDER": "minimax"
69
128
  },
70
129
  "enableAllProjectMcpServers": false,
71
- "enabledMcpjsonServers": [
72
- "postgresql-server",
73
- "memory",
74
- "discord-server"
75
- ],
76
- "agent": "ilmu_agent",
77
- "runner": "kilo"
130
+ "enabledMcpjsonServers": ["memory-server"],
131
+ "agent": "nom_agent",
132
+ "runner": "hermes"
78
133
  }
79
134
  \`\`\`
135
+
136
+ ### Différence vs CN
137
+ - **URL :** \`api.minimax.io\` (SANS le \`i\`) — endpoint international
138
+ - **Env var seedé :** \`MINIMAX_API_KEY\` (pas \`MINIMAX_CN_API_KEY\`)
139
+ - **Plugin upstream :** profile \`minimax\` (pas \`minimax-cn\`)
140
+ - Le runner détecte \`api.minimax.io\` dans l'URL et switch auto.
141
+
142
+ Voir \`hermes-minimax-cn\` pour le détail complet du flow + arborescence.
80
143
  ${interpolationNotice}`;
81
144
  break;
82
- case 'minimax':
83
- text = `🚀 **EXEMPLE DE CONFIGURATION POUR MINIMAX (VIA PROXY ANTHROPIC)**
145
+ case 'hermes-zai':
146
+ text = `🤖 **HERMES + Z.AI / GLM** (Overmind 2.8.34+, NousHermesRunner)
84
147
 
85
- ### 📂 settings_[nom_agent].json
148
+ ### 📂 Workflow/.claude/settings_<agent>.json
86
149
  \`\`\`json
87
150
  {
88
151
  "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"
152
+ "ANTHROPIC_AUTH_TOKEN": "$ANTHROPIC_AUTH_TOKEN_Y",
153
+ "ANTHROPIC_BASE_URL": "https://api.z.ai/api/coding/paas/v4",
154
+ "ANTHROPIC_MODEL": "glm-5.1",
155
+ "ANTHROPIC_PROVIDER": "zai"
98
156
  },
157
+ "enableAllProjectMcpServers": false,
158
+ "enabledMcpjsonServers": ["memory-server"],
99
159
  "agent": "nom_agent",
100
- "runner": "claude"
160
+ "runner": "hermes"
101
161
  }
102
162
  \`\`\`
103
163
 
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\`)
164
+ ### Ce que le runner fait au spawn (auto-détection token)
165
+ - Token Z.AI = 32hex (\`c78a134949fc4c369911c24e9fa4b84c.OZhHX5Obs6qF1ISt\`) ou
166
+ 32hex simple (\`5f650035e5a845549e4765184d8179b1\`)
167
+ - Runner seed automatiquement :
168
+ - \`ZAI_ANTHROPIC_FALLBACK_KEY\` (= valeur du token)
169
+ - \`GLM_API_KEY\` (= valeur du token)
170
+ - Plugin upstream \`zai\` lit ces vars.
171
+
172
+ Voir \`hermes-minimax-cn\` pour le détail complet du flow + arborescence.
110
173
  ${interpolationNotice}`;
111
174
  break;
112
- case 'openrouter':
113
- text = `🚀 **EXEMPLE DE CONFIGURATION POUR OPENROUTER (VIA PROXY ANTHROPIC)**
175
+ case 'hermes-anthropic':
176
+ text = `🅰️ **HERMES + ANTHROPIC (OFFICIEL)** (Overmind 2.8.34+, NousHermesRunner)
114
177
 
115
- ### 📂 settings_[nom_agent].json
178
+ ### 📂 Workflow/.claude/settings_<agent>.json
116
179
  \`\`\`json
117
180
  {
118
181
  "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"
182
+ "ANTHROPIC_AUTH_TOKEN": "$ANTHROPIC_AUTH_TOKEN",
183
+ "ANTHROPIC_BASE_URL": "https://api.anthropic.com",
184
+ "ANTHROPIC_MODEL": "claude-sonnet-4-6",
185
+ "ANTHROPIC_PROVIDER": "anthropic"
128
186
  },
187
+ "enableAllProjectMcpServers": false,
188
+ "enabledMcpjsonServers": ["memory-server"],
129
189
  "agent": "nom_agent",
130
- "runner": "claude"
190
+ "runner": "hermes"
131
191
  }
132
192
  \`\`\`
193
+
194
+ ### Note
195
+ Pour Anthropic, le runner ne seed PAS de variables provider-specific — il laisse
196
+ \`ANTHROPIC_AUTH_TOKEN\` tel quel. Le plugin upstream \`anthropic\` lit cette var
197
+ directement, donc pas de transformation nécessaire.
198
+
199
+ Voir \`hermes-minimax-cn\` pour le détail complet du flow + arborescence.
133
200
  ${interpolationNotice}`;
134
201
  break;
135
- case 'minimaxi':
136
- text = `🚀 **EXEMPLE DE CONFIGURATION POUR MINIMAXI (VERSION ALTERNATIVE)**
202
+ // ═══════════════════════════════════════════════════════════════════
203
+ // LEGACY: ClaudeRunner / KiloRunner (autres providers)
204
+ // ═══════════════════════════════════════════════════════════════════
205
+ case 'glm':
206
+ text = `🚀 **EXEMPLE DE CONFIGURATION POUR GLM / Z.AI (CLAUDE RUNNER)**
137
207
 
138
208
  ### 📂 settings_[nom_agent].json
139
209
  \`\`\`json
140
210
  {
141
211
  "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"
212
+ "ANTHROPIC_MODEL": "$ANTHROPIC_MODEL_Z",
213
+ "ANTHROPIC_AUTH_TOKEN": "$ANTHROPIC_AUTH_TOKEN_Y",
214
+ "ANTHROPIC_AUTH_TOKEN_FALLBACK": "$ANTHROPIC_AUTH_TOKEN_E",
215
+ "ANTHROPIC_BASE_URL": "$ANTHROPIC_BASE_URL_Z"
152
216
  },
153
- "agent": "minimax_agent",
217
+ "enableAllProjectMcpServers": false,
218
+ "enabledMcpjsonServers": ["postgresql-server", "memory"],
219
+ "agent": "nom_agent",
154
220
  "runner": "claude"
155
221
  }
156
222
  \`\`\`
157
- ${interpolationNotice}`;
158
- break;
159
- // ─── OVERMIND: Guide complet $VAR + FALLBACK TOKENS ───
160
- case 'overmind':
161
- text = `🎯 **GUIDE COMPLET : SUBSTITUTION $VAR ET FALLBACK TOKENS**
162
223
 
163
- Overmind supporte deux mécanismes puissants pour vos agents :
224
+ ### 📂 .env correspondant
225
+ \`\`\`
226
+ ANTHROPIC_BASE_URL_Z=https://api.z.ai/api/anthropic
227
+ ANTHROPIC_MODEL_Z=glm-5.1
228
+ ANTHROPIC_AUTH_TOKEN_Y=your_primary_token_here
229
+ ANTHROPIC_AUTH_TOKEN_E=your_fallback_token_here
230
+ \`\`\`
164
231
 
165
- ---
232
+ **Modèles GLM disponibles :** \`glm-5.1\` (flagship), \`glm-5\`, \`glm-4.5-air\`.
166
233
 
167
- ### 1️⃣ SUBSTITUTION $VAR (tous les runners)
234
+ **Fallback automatique :** \`ANTHROPIC_AUTH_TOKEN_Y\` \`ANTHROPIC_AUTH_TOKEN_E\` sur 401/429/5xx.
168
235
 
169
- Les settings de vos agents peuvent référencer des variables d'environnement du \`.env\` avec la syntaxe \`$NOM_VARIABLE\`.
236
+ > **Note :** Si tu utilises le **runner Hermes** (préféré pour les agents
237
+ > Discord/CLI), utilise plutôt \`hermes-zai\`. Le ClaudeRunner ci-dessus est
238
+ > pour les agents qui spawnent directement le binaire Claude Code.
239
+ ${interpolationNotice}`;
240
+ break;
241
+ case 'ilmu':
242
+ text = `🚀 **EXEMPLE DE CONFIGURATION POUR ILMU AI (KILO RUNNER)**
170
243
 
244
+ ### 📂 settings_[nom_agent].json
171
245
  \`\`\`json
172
246
  {
173
247
  "env": {
174
- "ANTHROPIC_AUTH_TOKEN": "$ANTHROPIC_AUTH_TOKEN_1",
175
- "ANTHROPIC_BASE_URL": "$Z_AI_BASE_URL"
176
- }
248
+ "ANTHROPIC_MODEL": "$Z_AI_MODEL",
249
+ "ANTHROPIC_AUTH_TOKEN": "$Z_AI_API_KEY",
250
+ "ANTHROPIC_BASE_URL": "$Z_AI_BASE_URL",
251
+ "API_TIMEOUT_MS": "900000"
252
+ },
253
+ "enableAllProjectMcpServers": false,
254
+ "enabledMcpjsonServers": ["postgresql-server", "memory", "discord-server"],
255
+ "agent": "ilmu_agent",
256
+ "runner": "kilo"
177
257
  }
178
258
  \`\`\`
259
+ ${interpolationNotice}`;
260
+ break;
261
+ case 'openrouter':
262
+ text = `⚠️ **OPENROUTER = EMBEDDINGS UNIQUEMENT** (Overmind convention 2026-06-07)
179
263
 
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\`
264
+ OpenRouter ne doit PAS être utilisé pour l'inférence LLM dans Overmind. Le
265
+ runner Hermes purge activement \`OPENROUTER_API_KEY\` du spawn env, et
266
+ configurer un agent Hermes avec OpenRouter LLM résultera en **HTTP 401
267
+ "Missing Authentication header"** parce que la clé est bloquée.
194
268
 
195
- **Flow :** Token primaire AUTH_FALLBACK_1 AUTH_FALLBACK_2 → AUTH_FALLBACK_3 → ÉCHEC
269
+ **Pour les embeddings Overmind uniquement :** voir \`OVERMIND_EMBEDDING_KEY\`
270
+ dans \`Workflow/.env\` (consommé par les providers d'embedding Overmind internes).
196
271
 
197
- ---
272
+ **Si tu veux router via OpenRouter pour LLM :** utilise le runner
273
+ \`openclaw\` ou \`kilo\` avec un settings qui ne déclenche pas le purge
274
+ Hermes. Mais ce n'est PAS recommandé.
198
275
 
199
- ### 📂 EXEMPLE COMPLET : ClaudeRunner avec 3 fallback tokens
276
+ Voir \`hermes-minimax-cn\` ou \`hermes-anthropic\` pour les providers LLM
277
+ supportés par le runner Hermes.
278
+ ${interpolationNotice}`;
279
+ break;
280
+ case 'anthropic':
281
+ text = `🅰️ **CLAUDE RUNNER + ANTHROPIC OFFICIEL**
200
282
 
283
+ ### 📂 settings_[nom_agent].json
201
284
  \`\`\`json
202
285
  {
203
- "model": "claude-sonnet-4-20250514",
204
286
  "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
- }
287
+ "ANTHROPIC_MODEL": "claude-sonnet-4-6",
288
+ "ANTHROPIC_AUTH_TOKEN": "$ANTHROPIC_AUTH_TOKEN",
289
+ "API_TIMEOUT_MS": "900000"
290
+ },
291
+ "enableAllProjectMcpServers": false,
292
+ "enabledMcpjsonServers": ["memory-server"],
293
+ "agent": "nom_agent",
294
+ "runner": "claude"
210
295
  }
211
296
  \`\`\`
297
+ ${interpolationNotice}`;
298
+ break;
299
+ // ═══════════════════════════════════════════════════════════════════
300
+ // OVERMIND: guide complet (subtilisation, fallbacks, etc.)
301
+ // ═══════════════════════════════════════════════════════════════════
302
+ case 'overmind':
303
+ text = `🎯 **GUIDE COMPLET : SUBSTITUTION $VAR ET FALLBACK TOKENS**
212
304
 
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\`
305
+ Overmind supporte deux mécanismes puissants pour vos agents.
227
306
 
228
307
  ---
229
308
 
230
- ### 📂 EXEMPLE COMPLET : KiloRunner avec fallback
309
+ ### 1️⃣ SUBSTITUTION $VAR (tous les runners)
310
+
311
+ Les settings de vos agents peuvent référencer des variables d'environnement
312
+ du \`.env\` avec la syntaxe \`$NOM_VARIABLE\`.
231
313
 
232
314
  \`\`\`json
233
315
  {
234
- "model": "claude-sonnet-4-20250514",
235
316
  "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
317
+ "ANTHROPIC_AUTH_TOKEN": "$ANTHROPIC_AUTH_TOKEN_1",
318
+ "ANTHROPIC_BASE_URL": "$Z_AI_BASE_URL"
240
319
  }
241
320
  }
242
321
  \`\`\`
243
322
 
244
- > Kilo utilise \`OPENAI_API_KEY\` comme clé primaire (compatible OpenAI / OpenRouter / etc.).
323
+ Au runtime, Overmind remplace automatiquement \`$ANTHROPIC_AUTH_TOKEN_1\` par
324
+ sa valeur réelle depuis le \`.env\`.
245
325
 
246
326
  ---
247
327
 
248
- ### 📂 EXEMPLE : Variable $VAR simple (sans fallback)
328
+ ### 2️⃣ SUBTILISATION AUTO (Hermes runner, 2.8.34+)
249
329
 
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
- \`\`\`
330
+ Pour le **runner Hermes**, le runner détecte le token prefix et seed
331
+ automatiquement les env vars provider-specific dans le settings.json
332
+ canonique :
333
+
334
+ | Token prefix | URL contient \`minimaxi\` | URL contient \`minimax.io\` | 32hex | seed |
335
+ |---|---|---|---|---|
336
+ | \`sk-cp-*\` | ✅ CN | — | — | \`MINIMAX_CN_API_KEY\` + \`MINIMAX_CN_BASE_URL\` |
337
+ | \`sk-cp-*\` | — | ✅ GLOBAL | — | \`MINIMAX_API_KEY\` + \`MINIMAX_BASE_URL\` |
338
+ | 32hex / 32hex.32hex | — | — | ✅ | \`ZAI_ANTHROPIC_FALLBACK_KEY\` + \`GLM_API_KEY\` |
339
+ | autre \`sk-*\` | n/a | n/a | n/a | rien (laisser \`ANTHROPIC_AUTH_TOKEN\` comme fallback) |
260
340
 
261
- Les \`$VAR\` peuvent être sur n'importe quelle valeur de \`env\`.
341
+ L'utilisateur n'a qu'à mettre \`ANTHROPIC_AUTH_TOKEN\` + \`ANTHROPIC_BASE_URL\`
342
+ dans son settings.json — le runner fait le reste.
262
343
 
263
344
  ---
264
345
 
265
- ### ⚠️ RÈGLES IMPORTANTES
346
+ ### 3️⃣ RETRY AUTOMATIQUE SUR ERREUR (ClaudeRunner + KiloRunner)
266
347
 
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.
272
- - Si tous les fallbacks sont épuisés, l'erreur finale est \`RETRYABLE_ERROR_ALL_FALLBACKS_EXHAUSTED\`.`;
273
- break;
274
- case 'hermes':
275
- text = `🤖 **EXEMPLE DE CONFIGURATION POUR HERMES (NOUS AGENT)**
348
+ Quand une erreur se produit, Overmind peut RETENTER automatiquement avec
349
+ des tokens de secours.
276
350
 
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
- \`\`\`
351
+ **Erreurs retryables :** 401, 429, 500, 502, 503.
296
352
 
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
- \`\`\`
353
+ **Flow :** Token primaire → \`AUTH_FALLBACK_1\` → \`AUTH_FALLBACK_2\` → \`AUTH_FALLBACK_3\` → ÉCHEC
304
354
 
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
355
+ ---
312
356
 
313
- **Modèle par défaut :** \`MiniMax-M2.7\` (via \`CONFIG.HERMES.DEFAULT_MODEL\`)
357
+ ### ⚠️ RÈGLES IMPORTANTES
314
358
 
315
- ${interpolationNotice}`;
359
+ - Les clés \`AUTH_FALLBACK_1\`, \`AUTH_FALLBACK_2\`, \`AUTH_FALLBACK_3\` sont réservées
360
+ par Overmind pour le retry automatique.
361
+ - La substitution est à **un seul niveau** : \`$MINIMAXI_API_KEY\` est remplacé,
362
+ mais pas récursivement.
363
+ - Les tokens sont résolus **avant** le spawn de l'agent.
364
+ - Pour Hermes, le token \`ANTHROPIC_AUTH_TOKEN_5\` (sk-cp-*) a été testé OK sur
365
+ \`api.minimaxi.com\` mais le compte a un **HTTP 402 "insufficient balance"**
366
+ au moment de ce guide — utiliser plutôt \`_1\`, \`_2\`, ou \`_7\`.
367
+ - \`_3\` et \`_6\` sont morts (HTTP 401). \`_4\` est rate-limited. \`_E\`, \`_F\`,
368
+ \`_Y\` sont au format Z.AI (32hex).`;
316
369
  break;
317
370
  }
318
371
  return {
@@ -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;;;;;;;;;;;;;;;;;;;;;;;;;;;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"}
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;QACJ,sDAAsD;QACtD,KAAK;QACL,YAAY;QACZ,MAAM;QACN,WAAW;QACX,UAAU;QACV,gDAAgD;QAChD,mBAAmB;QACnB,uBAAuB;QACvB,YAAY;QACZ,kBAAkB;KACnB,CAAC;SACD,QAAQ,CAAC,qEAAqE,CAAC;CACnF,CAAC,CAAC;AAEH;;;;;;;;;;;;;;GAcG;AACH,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;;;;;CAK7B,CAAC;IAEA,QAAQ,QAAQ,EAAE,CAAC;QACjB,sEAAsE;QACtE,8CAA8C;QAC9C,sEAAsE;QACtE,KAAK,mBAAmB;YACtB,IAAI,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAmEX,mBAAmB,EAAE,CAAC;YAClB,MAAM;QAER,KAAK,uBAAuB;YAC1B,IAAI,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;EAyBX,mBAAmB,EAAE,CAAC;YAClB,MAAM;QAER,KAAK,YAAY;YACf,IAAI,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;EA2BX,mBAAmB,EAAE,CAAC;YAClB,MAAM;QAER,KAAK,kBAAkB;YACrB,IAAI,GAAG;;;;;;;;;;;;;;;;;;;;;;;;EAwBX,mBAAmB,EAAE,CAAC;YAClB,MAAM;QAER,sEAAsE;QACtE,uDAAuD;QACvD,sEAAsE;QACtE,KAAK,KAAK;YACR,IAAI,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAiCX,mBAAmB,EAAE,CAAC;YAClB,MAAM;QAER,KAAK,MAAM;YACT,IAAI,GAAG;;;;;;;;;;;;;;;;;EAiBX,mBAAmB,EAAE,CAAC;YAClB,MAAM;QAER,KAAK,YAAY;YACf,IAAI,GAAG;;;;;;;;;;;;;;;;EAgBX,mBAAmB,EAAE,CAAC;YAClB,MAAM;QAER,KAAK,WAAW;YACd,IAAI,GAAG;;;;;;;;;;;;;;;;EAgBX,mBAAmB,EAAE,CAAC;YAClB,MAAM;QAER,sEAAsE;QACtE,2DAA2D;QAC3D,sEAAsE;QACtE,KAAK,UAAU;YACb,IAAI,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;sCAiEyB,CAAC;YACjC,MAAM;IACV,CAAC;IAED,OAAO;QACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,CAAC;KAC3C,CAAC;AACJ,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "overmind-mcp",
3
- "version": "2.8.30",
3
+ "version": "2.8.35",
4
4
  "description": "Orchestrateur universel agents IA multi-modeles via MCP. Inclut le protocole 'Custom-Nickname' pour identifier vos agents avec des surnoms originaux (The Chaos Prophet, Shadow Sniper, etc.), l'isolation mémoire (Private Memory Context) et le support pour QwenCli et Nous Hermes. Installation automatique des dépendances Docker (PostgreSQL, pgvector) inclus.",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",