overmind-mcp 2.8.50 → 2.8.52

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.
Files changed (45) hide show
  1. package/dist/bin/cli.js +30 -4
  2. package/dist/bin/cli.js.map +1 -1
  3. package/dist/lib/orchestration/swarm.js +2 -2
  4. package/dist/lib/orchestration/swarm.js.map +1 -1
  5. package/dist/lib/processRegistry.js +2 -2
  6. package/dist/lib/processRegistry.js.map +1 -1
  7. package/dist/lib/sessions.js +2 -2
  8. package/dist/lib/sessions.js.map +1 -1
  9. package/dist/memory/MemoryFactory.js +2 -2
  10. package/dist/memory/MemoryFactory.js.map +1 -1
  11. package/dist/memory/PostgresMemoryProvider.d.ts.map +1 -1
  12. package/dist/memory/PostgresMemoryProvider.js +2 -2
  13. package/dist/memory/PostgresMemoryProvider.js.map +1 -1
  14. package/dist/services/ClaudeRunner.d.ts.map +1 -1
  15. package/dist/services/ClaudeRunner.js +38 -0
  16. package/dist/services/ClaudeRunner.js.map +1 -1
  17. package/dist/services/ClineRunner.js +2 -2
  18. package/dist/services/ClineRunner.js.map +1 -1
  19. package/dist/services/GeminiRunner.js +2 -2
  20. package/dist/services/GeminiRunner.js.map +1 -1
  21. package/dist/services/NousHermesRunner.js +2 -2
  22. package/dist/services/NousHermesRunner.js.map +1 -1
  23. package/dist/services/OpenClawRunner.js +2 -2
  24. package/dist/services/OpenClawRunner.js.map +1 -1
  25. package/dist/services/OpenCodeRunner.js +2 -2
  26. package/dist/services/OpenCodeRunner.js.map +1 -1
  27. package/dist/services/QwenCliRunner.js +2 -2
  28. package/dist/services/QwenCliRunner.js.map +1 -1
  29. package/dist/services/hermes/binaryFinder.js +2 -2
  30. package/dist/services/hermes/binaryFinder.js.map +1 -1
  31. package/dist/services/hermes/configYamlFilter.js +2 -2
  32. package/dist/services/hermes/configYamlFilter.js.map +1 -1
  33. package/dist/services/hermes/processUtils.js +2 -2
  34. package/dist/services/hermes/processUtils.js.map +1 -1
  35. package/docs/OVERMIND_HERMES_SNIPERBOT_FLOW.md +1 -1
  36. package/docs/SETUP_HERMES_AGENT_FROM_SCRATCH.md +18 -18
  37. package/docs/SUBTILISATION_EXPLAINED.md +2 -2
  38. package/docs/agent-http-tutorial.md +524 -524
  39. package/docs/doc_guide_agent_hermes_permanent.md +1 -1
  40. package/docs/doc_hermes_gateway.md +2 -2
  41. package/docs/guide_agent_hermes_overmind.md +1 -1
  42. package/docs/provider-config-map.md +556 -556
  43. package/package.json +1 -1
  44. package/docs/PLAN_REFACTORING_OVERMIND_V2.md +0 -414
  45. package/docs/PLAN_REFACTOR_OVERMIND_AGI.md +0 -606
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "overmind-mcp",
3
- "version": "2.8.50",
3
+ "version": "2.8.52",
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",
@@ -1,414 +0,0 @@
1
- # 🔥 OVERMIND v2 — Plan de Refactorisation Distribuée
2
-
3
- > **Objectif** : Transformer Overmind d'un orchestrateur mono-machine en un **réseau d'agents distribué**, capable de devenir un noeud d'un réseau blockchain agentique RCP.
4
-
5
- > **Ambition** : L'AGI émergera de la coopération d'agents sur un réseau décentralisé. Overmind doit devenir un noeud de ce réseau.
6
-
7
- ---
8
-
9
- ## 📊 ÉTAT ACTUEL — Audit des Fondations
10
-
11
- ### Ce qu'on a (positif)
12
-
13
- | Composant | Fichier | Status | Note |
14
- |---|---|---|---|
15
- | Transport JSON-RPC 2.0 | `bridge/BridgeProxy.ts` | ✅ Existe | Localhost seulement |
16
- | Circuit Breaker | `bridge/types.ts` | ✅ Existe | Closed→Open→Half-Open |
17
- | Mémoire PostgreSQL | `memory/PostgresMemoryProvider.ts` | ✅ Existe | 1 DB par agent + DB core |
18
- | Embeddings Vectoriels | `embedText()` | ✅ Existe | Qwen 8B, 4096D |
19
- | MCP Server (14 outils) | `server.ts` | ✅ Existe | FastMCP, local |
20
- | Process Registry | `lib/processRegistry.ts` | ✅ Existe | Locaux seulement |
21
- | Orchestration parallèle | `run_agents_parallel` | ✅ Existe | Local seulement |
22
- | Swarm | `lib/orchestration/swarm.ts` | ⚠️ Existe | À vérifier |
23
-
24
- ### Ce qui manque (blockers)
25
-
26
- | Problème | Impact | Priorité |
27
- |---|---|---|
28
- | **Pas de RPC distant** | Impossible de connecter 2 machines | 🔴 CRITIQUE |
29
- | **Pas de discovery/pairing** | Les noeuds ne se trouvent pas | 🔴 CRITIQUE |
30
- | **Mémoire non synchronisée** | Chaque machine a sa propre DB isolée | 🔴 CRITIQUE |
31
- | **Pas d'authentification inter-noeuds** | Sécurité inexistante en distributed | 🟡 HIGH |
32
- | **Pas de consensus** | Pas de résolution de conflits | 🟡 HIGH |
33
- | **Pas de tokenomics** | Pas d'incitation économique | 🟢 MEDIUM |
34
-
35
- ---
36
-
37
- ## 🧠 MÉMOIRE — Diagnostic Précis
38
-
39
- ### Architecture Actuelle (vérifiée dans le code)
40
-
41
- ```
42
- ┌─────────────────────────────────────────────────┐
43
- │ POSTGRESQL LOCAL │
44
- │ │
45
- │ ┌──────────────┐ ┌──────────────────────┐ │
46
- │ │ overmind_core │ │ agent_sniperbot │ │
47
- │ │ (partagé) │ │ (DB propre/agent) │ │
48
- │ │ │ ├──────────────────────┤ │
49
- │ │ knowledge_ │ │ agent_minimax_1 │ │
50
- │ │ chunks │ │ (DB propre/agent) │ │
51
- │ │ agent_runs │ ├──────────────────────┤ │
52
- │ │ │ │ agent_minimax_2 │ │
53
- │ └──────────────┘ └──────────────────────┘ │
54
- │ │
55
- │ + Fichiers plats Hermes (MEMORY.md, USER.md) │
56
- └─────────────────────────────────────────────────┘
57
- ```
58
-
59
- ### La réalité du "partagé"
60
-
61
- En lisant `PostgresMemoryProvider.ts` (lignes 458-521) :
62
-
63
- 1. **`storeKnowledge()`** → Stocke dans la DB de l'agent (`agent_<name>`)
64
- 2. **`searchMemory()`** → Cherche dans **DEUX** DBs :
65
- - `agent_<name>` (DB locale agent)
66
- - `overmind_core` (DB "partagée")
67
- 3. **Mais** → `overmind_core` n'est JAMAIS écrite directement par les agents !
68
-
69
- **BUG** : La DB "partagée" (`overmind_core`) existe mais n'est peuplée que si `agentName` est `undefined`. Les agents avec nom écrivent UNIQUEMENT dans leur DB locale.
70
-
71
- ### Correction nécessaire
72
-
73
- ```typescript
74
- // storeKnowledge() actuel (ligne 431)
75
- const dbName = this.getDbName(params.agentName); // → toujours agent_<name>
76
-
77
- // CORRECTION : écrire dans les DEUX
78
- // 1. DB locale agent (toujours)
79
- // 2. DB core si flagged "shared=true"
80
- ```
81
-
82
- ---
83
-
84
- ## 🌐 RPC DISTRIBUÉ — Comment ça va marcher en vrai
85
-
86
- ### Scénario : 2 ordinateurs distants
87
-
88
- ```
89
- MACHINE A (Paris) MACHINE B (Lyon)
90
- ┌────────────────────┐ ┌────────────────────┐
91
- │ Overmind Node A │◄──WebSocket──►│ Overmind Node B │
92
- │ │ (encrypted) │ │
93
- │ ┌──────────────┐ │ │ ┌──────────────┐ │
94
- │ │ PostgreSQL A │ │ │ │ PostgreSQL B │ │
95
- │ │ (agent_sniper│ │ │ │ (agent_minim │ │
96
- │ │ + core) │ │ │ │ + core) │ │
97
- │ └──────────────┘ │ │ └──────────────┘ │
98
- │ │ │ │
99
- │ MCP Server :3099 │ │ MCP Server :3099 │
100
- │ RPC Relay :3100 │ │ RPC Relay :3100 │
101
- └────────────────────┘ └────────────────────┘
102
- │ │
103
- └──────── Internet (TLS) ────────────┘
104
- ```
105
-
106
- ### Phase de connexion (handshake)
107
-
108
- ```
109
- 1. Node A → Node B : POST /rpc/handshake
110
- { nodeId: "overmind_paris", version: "2.0", capabilities: [...] }
111
-
112
- 2. Node B → Node A : POST /rpc/handshake-response
113
- { nodeId: "overmind_lyon", accepted: true, authToken: "xxx" }
114
-
115
- 3. WebSocket établi → keep-alive bi-directionnel
116
-
117
- 4. Sync initiale :
118
- - Node A envoie son catalogue d'agents
119
- - Node B envoie son catalogue d'agents
120
- - Échange des schemas de DB
121
- ```
122
-
123
- ### Protocole RPC inter-noeuds
124
-
125
- ```typescript
126
- interface OvermindRpcMessage {
127
- jsonrpc: '2.0';
128
- id: string;
129
- method: string;
130
- params: {
131
- sourceNode: string; // ID du noeud émetteur
132
- targetAgent?: string; // Agent cible (optionnel)
133
- authToken: string; // Token de session
134
- payload: unknown; // Données spécifiques
135
- };
136
- }
137
-
138
- // Méthodes supportées :
139
- // - "agent.run" → Lancer un agent distant
140
- // - "memory.search" → Chercher dans la mémoire d'un noeud distant
141
- // - "memory.store" → Écrire dans la mémoire partagée distante
142
- // - "agent.stream" → Stream output d'un agent distant
143
- // - "discovery.ping" → Vérifier la présence d'un noeud
144
- // - "sync.knowledge" → Synchroniser knowledge_chunks
145
- // - "consensus.propose" → Proposer une décision collective
146
- ```
147
-
148
- ### Résolution du problème mémoire
149
-
150
- ```
151
- AVANT (v1 - actuel) :
152
- Chaque PostgreSQL est ISOLÉ. Aucune synchronisation.
153
-
154
- APRÈS (v2 - distribué) :
155
-
156
- COUCHE 1 : Mémoire locale (déjà là)
157
- → agent_<name> DB → rapide, privé, pas de sync
158
-
159
- COUCHE 2 : Mémoire partagée (correction + sync)
160
- → overmind_core DB → sync entre noeuds via RPC
161
- → Flag "shared=true" sur storeKnowledge()
162
- → Réplication eventuelle ou sync périodique
163
-
164
- COUCHE 3 : Mémoire globale réseau (nouveau)
165
- → Table "network_knowledge" dans overmind_core
166
- → Source = nodeId + agentName
167
- → Vector search cross-noeuds via RPC relay
168
- → Chaque noeud maintient un index des embeddings distants
169
- ```
170
-
171
- ---
172
-
173
- ## 🏗️ PHASES DE REFACTORISATION
174
-
175
- ### Phase 1 — Fondations Distribuées (2-3 semaines)
176
-
177
- **Objectif** : 2 machines Overmind qui communiquent
178
-
179
- | Tâche | Fichier | Description |
180
- |---|---|---|
181
- | 1.1 | `src/rpc/RpcServer.ts` | Serveur WebSocket + HTTP pour RPC inter-noeuds |
182
- | 1.2 | `src/rpc/RpcClient.ts` | Client pour appeler des méthodes sur un noeud distant |
183
- | 1.3 | `src/rpc/NodeIdentity.ts` | Identité crypto du noeud (keypair, nodeId, signature) |
184
- | 1.4 | `src/rpc/Handshake.ts` | Protocole de handshake sécurisé (challenge-response) |
185
- | 1.5 | `src/rpc/config.ts` | Config distributed : peers, ports, TLS |
186
- | 1.6 | `.env` | Variables `OVERMIND_NODE_ID`, `OVERMIND_PEERS`, `OVERMIND_RPC_PORT` |
187
-
188
- **Livrable** : `node A` peut ping `node B` via RPC.
189
-
190
- ### Phase 2 — Mémoire Distribuée (2 semaines)
191
-
192
- **Objectif** : La mémoire partagée sync entre 2 machines
193
-
194
- | Tâche | Fichier | Description |
195
- |---|---|---|
196
- | 2.1 | `src/memory/PostgresMemoryProvider.ts` | **PATCH** : storeKnowledge() écrit aussi dans core si `shared=true` |
197
- | 2.2 | `src/memory/DistributedMemoryProvider.ts` | Nouveau provider qui wrap PostgresMemory + RPC relay |
198
- | 2.3 | `src/rpc/methods/memory_search.ts` | RPC method : chercher dans la mémoire d'un noeud distant |
199
- | 2.4 | `src/rpc/methods/memory_store.ts` | RPC method : écrire dans la mémoire partagée distante |
200
- | 2.5 | `src/memory/SyncEngine.ts` | Moteur de sync incrémental (last_sync_timestamp) |
201
- | 2.6 | `src/memory/VectorIndexCache.ts` | Cache local des embeddings distants pour search rapide |
202
-
203
- **Livrable** : Agent sur Machine A peut chercher dans la mémoire de Machine B.
204
-
205
- ### Phase 3 — Exécution Distribuée (2-3 semaines)
206
-
207
- **Objectif** : Lancer un agent sur une machine distante
208
-
209
- | Tâche | Fichier | Description |
210
- |---|---|---|
211
- | 3.1 | `src/rpc/methods/agent_run.ts` | RPC method : lancer un agent distant |
212
- | 3.2 | `src/rpc/methods/agent_stream.ts` | Stream output d'un agent distant via WebSocket |
213
- | 3.3 | `src/tools/run_agent.ts` | **PATCH** : ajout du paramètre `targetNode?` |
214
- | 3.4 | `src/tools/run_agents_parallel.ts` | **PATCH** : dispatch sur plusieurs noeuds |
215
- | 3.5 | `src/lib/NodeSelector.ts` | Sélection intelligente du noeud (latence, charge, capabilities) |
216
- | 3.6 | `src/lib/TaskQueue.ts` | File d'attente distribuée (priority, retry, failover) |
217
-
218
- **Livrable** : `run_agents_parallel` distribue les tâches sur Machine A et Machine B.
219
-
220
- ### Phase 4 — Résilience & Consensus (2 semaines)
221
-
222
- **Objectif** : Le réseau survit à la perte d'un noeud
223
-
224
- | Tâche | Fichier | Description |
225
- |---|---|---|
226
- | 4.1 | `src/rpc/HealthMonitor.ts` | Heartbeat entre noeuds, détection de panne |
227
- | 4.2 | `src/rpc/Failover.ts` | Bascule automatique si un noeud meurt |
228
- | 4.3 | `src/memory/ConflictResolver.ts` | Résolution de conflits (last-write-wins ou vector clocks) |
229
- | 4.4 | `src/rpc/methods/consensus.ts` | Consensus simple (majorité) pour décisions collectives |
230
- | 4.5 | `src/lib/ProcessMigration.ts` | Migration d'un agent d'un noeud à l'autre |
231
-
232
- **Livrable** : Si Machine B meurt, Machine A prend le relais.
233
-
234
- ### Phase 5 — Couche Blockchain RCP (3-4 semaines)
235
-
236
- **Objectif** : Overmind devient un noeud d'un réseau agentique décentralisé
237
-
238
- | Tâche | Description |
239
- |---|---|
240
- | 5.1 | Smart contract de registration d'agent (Solidity → Base/Arbitrum) |
241
- | 5.2 | Agent Commerce Protocol : agents qui paient des agents |
242
- | 5.3 | Token de récompense pour contribution intellectuelle |
243
- | 5.4 | Discovery on-chain : trouver des agents sur le réseau mondial |
244
- | 5.5 | Vérifiable execution : preuve cryptographique qu'un agent a touré (TEE) |
245
- | 5.6 | Agent Wallet : chaque agent a son propre wallet on-chain |
246
-
247
- **Livrable** : Overmind est un noeud du réseau blockchain agentique RCP.
248
-
249
- ---
250
-
251
- ## 🔐 SÉCURITÉ — Modèle de Confiance
252
-
253
- ```
254
- NIVEAU 1 : Pair-à-pair privé (Phase 1-4)
255
- → 2 machines qu'on contrôle
256
- → Auth par keypair Ed25519
257
- → TLS obligatoire
258
- → Pas de tokenomics nécessaire
259
-
260
- NIVEAU 2 : Réseau ouvert (Phase 5)
261
- → N'importe qui peut rejoindre
262
- → Staking + slashing pour mauvais comportement
263
- → Réputation on-chain
264
- → Audit trail immuable
265
- ```
266
-
267
- ---
268
-
269
- ## 📐 ARCHITECTURE CIBLE
270
-
271
- ```
272
- ┌─────────────────────────┐
273
- │ BLOCKCHAIN LAYER │
274
- │ (Base / Arbitrum) │
275
- │ │
276
- │ • Agent Registry │
277
- │ • Commerce Protocol │
278
- │ • Token Rewards │
279
- │ • Discovery │
280
- └──────────┬───────────────┘
281
-
282
- ┌──────────┴───────────────┐
283
- │ OVERMIND NODE │
284
- │ │
285
- │ ┌─────────────────────┐ │
286
- │ │ RPC Relay :3100 │ │
287
- │ │ (WebSocket + HTTP) │ │
288
- │ └────────┬────────────┘ │
289
- │ │ │
290
- │ ┌────────┴────────────┐ │
291
- │ │ MCP Server :3099 │ │
292
- │ │ (14 outils + RPC) │ │
293
- │ └────────┬────────────┘ │
294
- │ │ │
295
- │ ┌────────┴────────────┐ │
296
- │ │ Memory Layer │ │
297
- │ │ • Local (agent_*) │ │
298
- │ │ • Shared (core) │ │
299
- │ │ • Network (RPC) │ │
300
- │ └────────┬────────────┘ │
301
- │ │ │
302
- │ ┌────────┴────────────┐ │
303
- │ │ Agent Runners │ │
304
- │ │ claude/hermes/kilo │ │
305
- │ └─────────────────────┘ │
306
- └──────────────────────────┘
307
- ```
308
-
309
- ---
310
-
311
- ## 🚀 QUICK WINS — Ce qu'on peut faire MAINTENANT
312
-
313
- ### 1. Patch mémoire partagée (30 min)
314
-
315
- ```typescript
316
- // Dans PostgresMemoryProvider.ts, modifier storeKnowledge()
317
- async storeKnowledge(params: {
318
- text: string;
319
- source?: string;
320
- agentName?: string;
321
- shared?: boolean; // ← NOUVEAU
322
- }): Promise<string> {
323
- // Écrire dans DB agent (local, toujours)
324
- const agentDbName = this.getDbName(params.agentName);
325
- const agentPool = await this.getPoolFor(agentDbName);
326
- await this.initializeDb(agentDbName, agentPool);
327
-
328
- const id = `k_${sha256(params.text)}_${randomId()}`;
329
- const source = params.agentName ? `agent|${params.agentName}` : (params.source || 'user');
330
- const { embedding, model } = await embedText(params.text);
331
- const embStr = embedding.length > 0 ? `[${embedding.join(',')}]` : null;
332
-
333
- await agentPool.query(
334
- `INSERT INTO knowledge_chunks (id, source, text, embedding, model)
335
- VALUES ($1, $2, $3, $4, $5)
336
- ON CONFLICT (id) DO UPDATE SET text = EXCLUDED.text, embedding = EXCLUDED.embedding,
337
- updated_at = extract(epoch from now()) * 1000`,
338
- [id, source, params.text, embStr, model]
339
- );
340
-
341
- // Si partagé → écrire AUSSI dans overmind_core
342
- if (params.shared && params.agentName) {
343
- const corePool = await this.getPoolFor(this.coreDbName);
344
- await this.initializeDb(this.coreDbName, corePool);
345
- const coreId = `k_shared_${sha256(params.text)}_${randomId()}`;
346
- await corePool.query(
347
- `INSERT INTO knowledge_chunks (id, source, text, embedding, model)
348
- VALUES ($1, $2, $3, $4, $5)
349
- ON CONFLICT (id) DO UPDATE SET text = EXCLUDED.text, embedding = EXCLUDED.embedding,
350
- updated_at = extract(epoch from now()) * 1000`,
351
- [coreId, `shared|${params.agentName}`, params.text, embStr, model]
352
- );
353
- }
354
-
355
- return id;
356
- }
357
- ```
358
-
359
- ### 2. Config .env pour distributed
360
-
361
- ```env
362
- # Overmind Distributed Config
363
- OVERMIND_NODE_ID=overmind_paris
364
- OVERMIND_RPC_PORT=3100
365
- OVERMIND_RPC_ENABLED=true
366
-
367
- # Peers (format: nodeId:host:port)
368
- OVERMIND_PEERS=overmind_lyon:192.168.1.50:3100
369
-
370
- # Security
371
- OVERMIND_NODE_PRIVATE_KEY=<ed25519_key>
372
- OVERMIND_TLS_ENABLED=true
373
- ```
374
-
375
- ### 3. Tunnel entre 2 machines (immédiat, sans code)
376
-
377
- ```bash
378
- # Machine A (Paris) — tunnel SSH vers Machine B
379
- ssh -R 3100:localhost:3100 user@machine-b-ip
380
-
381
- # Ou avec WireGuard (meilleur pour prod)
382
- wg-quick up overmind-vpn
383
- ```
384
-
385
- ---
386
-
387
- ## 📊 TIMELINE
388
-
389
- ```
390
- Semaine 1-3 : Phase 1 — RPC Foundations
391
- Semaine 4-5 : Phase 2 — Distributed Memory
392
- Semaine 6-8 : Phase 3 — Distributed Execution
393
- Semaine 9-10 : Phase 4 — Resilience & Consensus
394
- Semaine 11-14 : Phase 5 — Blockchain RCP Layer
395
-
396
- Total estimé : ~14 semaines (3.5 mois)
397
- ```
398
-
399
- ---
400
-
401
- ## 🎯 INDICATEURS DE SUCCÈS
402
-
403
- | Phase | KPI | Target |
404
- |---|---|---|
405
- | Phase 1 | Latence RPC inter-noeuds | < 100ms |
406
- | Phase 2 | Search mémoire distante | < 500ms |
407
- | Phase 3 | Dispatch multi-noeuds | Transparent pour l'utilisateur |
408
- | Phase 4 | Uptime avec 1 noeud down | 99.9% |
409
- | Phase 5 | Agents on-chain | 10+ agents enregistrés |
410
-
411
- ---
412
-
413
- *Plan généré par Sniperbot Analyst — 2 Juin 2026*
414
- *Basé sur l'audit du code source Overmind actuel*