overmind-mcp 2.7.0 → 2.8.1

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 (104) hide show
  1. package/.mcp.json.example +21 -21
  2. package/README.md +179 -187
  3. package/bin/README.md +44 -34
  4. package/bin/install-overmind-windows.bat +51 -7
  5. package/bin/overmind-pool.mjs +248 -0
  6. package/dist/bin/cli.js +115 -24
  7. package/dist/bin/cli.js.map +1 -1
  8. package/dist/bin/overmind-client.d.ts +77 -0
  9. package/dist/bin/overmind-client.d.ts.map +1 -0
  10. package/dist/bin/overmind-client.js +221 -0
  11. package/dist/bin/overmind-client.js.map +1 -0
  12. package/dist/lib/agent_lifecycle.d.ts +91 -0
  13. package/dist/lib/agent_lifecycle.d.ts.map +1 -0
  14. package/dist/lib/agent_lifecycle.js +155 -0
  15. package/dist/lib/agent_lifecycle.js.map +1 -0
  16. package/dist/lib/config.d.ts +5 -26
  17. package/dist/lib/config.d.ts.map +1 -1
  18. package/dist/lib/config.js +33 -12
  19. package/dist/lib/config.js.map +1 -1
  20. package/dist/lib/envUtils.d.ts +1 -1
  21. package/dist/lib/envUtils.d.ts.map +1 -1
  22. package/dist/lib/envUtils.js +11 -4
  23. package/dist/lib/envUtils.js.map +1 -1
  24. package/dist/lib/loadEnv.d.ts.map +1 -1
  25. package/dist/lib/loadEnv.js +9 -4
  26. package/dist/lib/loadEnv.js.map +1 -1
  27. package/dist/lib/logger.d.ts.map +1 -1
  28. package/dist/lib/logger.js +20 -4
  29. package/dist/lib/logger.js.map +1 -1
  30. package/dist/lib/orchestration/dispatcher.d.ts.map +1 -1
  31. package/dist/lib/orchestration/dispatcher.js +10 -1
  32. package/dist/lib/orchestration/dispatcher.js.map +1 -1
  33. package/dist/lib/orchestration/swarm.d.ts +1 -0
  34. package/dist/lib/orchestration/swarm.d.ts.map +1 -1
  35. package/dist/lib/orchestration/swarm.js +11 -8
  36. package/dist/lib/orchestration/swarm.js.map +1 -1
  37. package/dist/lib/processRegistry.d.ts +2 -40
  38. package/dist/lib/processRegistry.d.ts.map +1 -1
  39. package/dist/lib/processRegistry.js +191 -230
  40. package/dist/lib/processRegistry.js.map +1 -1
  41. package/dist/memory/MemoryFactory.d.ts.map +1 -1
  42. package/dist/memory/MemoryFactory.js +2 -1
  43. package/dist/memory/MemoryFactory.js.map +1 -1
  44. package/dist/memory/PostgresMemoryProvider.d.ts +1 -0
  45. package/dist/memory/PostgresMemoryProvider.d.ts.map +1 -1
  46. package/dist/memory/PostgresMemoryProvider.js +11 -4
  47. package/dist/memory/PostgresMemoryProvider.js.map +1 -1
  48. package/dist/server.d.ts +1 -1
  49. package/dist/server.d.ts.map +1 -1
  50. package/dist/server.js +84 -80
  51. package/dist/server.js.map +1 -1
  52. package/dist/services/AgentManager.d.ts +1 -0
  53. package/dist/services/AgentManager.d.ts.map +1 -1
  54. package/dist/services/AgentManager.js +17 -0
  55. package/dist/services/AgentManager.js.map +1 -1
  56. package/dist/services/ClaudeRunner.d.ts.map +1 -1
  57. package/dist/services/ClaudeRunner.js +25 -6
  58. package/dist/services/ClaudeRunner.js.map +1 -1
  59. package/dist/services/ClineRunner.d.ts.map +1 -1
  60. package/dist/services/ClineRunner.js +16 -7
  61. package/dist/services/ClineRunner.js.map +1 -1
  62. package/dist/services/GeminiRunner.d.ts.map +1 -1
  63. package/dist/services/GeminiRunner.js +13 -6
  64. package/dist/services/GeminiRunner.js.map +1 -1
  65. package/dist/services/KiloRunner.d.ts.map +1 -1
  66. package/dist/services/KiloRunner.js +7 -4
  67. package/dist/services/KiloRunner.js.map +1 -1
  68. package/dist/services/OpenClawRunner.d.ts.map +1 -1
  69. package/dist/services/OpenClawRunner.js +16 -7
  70. package/dist/services/OpenClawRunner.js.map +1 -1
  71. package/dist/services/OpenCodeRunner.d.ts.map +1 -1
  72. package/dist/services/OpenCodeRunner.js +16 -7
  73. package/dist/services/OpenCodeRunner.js.map +1 -1
  74. package/dist/services/PromptManager.d.ts.map +1 -1
  75. package/dist/services/PromptManager.js +4 -0
  76. package/dist/services/PromptManager.js.map +1 -1
  77. package/dist/services/QwenCliRunner.d.ts.map +1 -1
  78. package/dist/services/QwenCliRunner.js +16 -7
  79. package/dist/services/QwenCliRunner.js.map +1 -1
  80. package/dist/tools/agent_control.d.ts +2 -69
  81. package/dist/tools/agent_control.d.ts.map +1 -1
  82. package/dist/tools/agent_control.js +186 -241
  83. package/dist/tools/agent_control.js.map +1 -1
  84. package/dist/tools/config_example.d.ts +2 -2
  85. package/dist/tools/config_example.d.ts.map +1 -1
  86. package/dist/tools/config_example.js +2 -4
  87. package/dist/tools/config_example.js.map +1 -1
  88. package/dist/tools/create_agent.d.ts.map +1 -1
  89. package/dist/tools/create_agent.js +11 -0
  90. package/dist/tools/create_agent.js.map +1 -1
  91. package/dist/tools/manage_agents.d.ts.map +1 -1
  92. package/dist/tools/manage_agents.js +3 -2
  93. package/dist/tools/manage_agents.js.map +1 -1
  94. package/dist/tools/run_agent.d.ts +1 -1
  95. package/dist/tools/run_agent.d.ts.map +1 -1
  96. package/dist/tools/run_agent.js +1 -2
  97. package/dist/tools/run_agent.js.map +1 -1
  98. package/dist/tools/run_agent_cli.d.ts +4 -10
  99. package/dist/tools/run_agent_cli.d.ts.map +1 -1
  100. package/dist/tools/run_agent_cli.js +10 -82
  101. package/dist/tools/run_agent_cli.js.map +1 -1
  102. package/dist/tools/run_agents_parallel.d.ts +1 -1
  103. package/docs/agent-http-tutorial.md +524 -0
  104. package/package.json +3 -3
@@ -0,0 +1,524 @@
1
+ # Tutoriel : Créer et piloter des agents via HTTP (Overmind MCP)
2
+
3
+ > **Note** : `runner` est **obligatoire** dans `run_agent` (pas déduit du registry). Doit correspondre au runner utilisé lors du `create_agent`.
4
+ >
5
+ > `claude` et `kilo` nécessitent une auth (EXIT_CODE_1 = token manquant). `gemini` fonctionne avec le token libre. `hermes` fonctionne avec les tokens ZAI.
6
+ > Auth : `Authorization: Bearer $OVERMIND_AUTH`
7
+ > Tous les appels retournent du SSE (`Accept: application/json, text/event-stream`)
8
+
9
+ ---
10
+
11
+ ## Prérequis
12
+
13
+ ```bash
14
+ # Le serveur Overmind doit tourner (via start-all-mcp-servers.bat ou manuellement)
15
+ curl http://localhost:3099/health
16
+ # → ✓ Ok
17
+ ```
18
+
19
+ ---
20
+
21
+ ## Méthode 1 — Via l'API HTTP MCP (externe, n'importe quel client)
22
+
23
+ Toutes les opérations passent par `tools/call` avec le bon `name` d'outil.
24
+
25
+ ### Headers obligatoires
26
+
27
+ ```
28
+ Content-Type: application/json
29
+ Accept: application/json, text/event-stream
30
+ Authorization: Bearer $OVERMIND_AUTH
31
+ ```
32
+
33
+ ---
34
+
35
+ ### 1.1 Créer 5 agents (Claude, Kilo, Hermes × 2, Gemini)
36
+
37
+ Chaque `create_agent` enregistre l'agent dans le registry. `run_agent` lancera le bon runner selon le champ `runner`.
38
+
39
+ ```bash
40
+ # Agent 1 — ClaudeRunner
41
+ curl -s -X POST http://localhost:3099/mcp \
42
+ -H "Content-Type: application/json" \
43
+ -H "Accept: application/json, text/event-stream" \
44
+ -H "Authorization: Bearer $OVERMIND_AUTH" \
45
+ -d '{
46
+ "jsonrpc": "2.0", "id": 1, "method": "tools/call",
47
+ "params": {
48
+ "name": "create_agent",
49
+ "arguments": {
50
+ "name": "dev_assistant",
51
+ "runner": "claude",
52
+ "prompt": "Tu es un assistant développement. Réponds en moins de 3 phrases."
53
+ }
54
+ }
55
+ }' | grep -o '"text":"[^"]*"' | python3 -c "import sys,json; print(json.loads(sys.stdin.read())['text'])" 2>/dev/null || curl -s -X POST http://localhost:3099/mcp \
56
+ -H "Content-Type: application/json" \
57
+ -H "Accept: application/json, text/event-stream" \
58
+ -H "Authorization: Bearer $OVERMIND_AUTH" \
59
+ -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"create_agent","arguments":{"name":"dev_assistant","runner":"claude","prompt":"Tu es un assistant développement."}}}'
60
+ ```
61
+
62
+ **En JSON (copier-coller dans Postman/Insomnia) :**
63
+
64
+ ```json
65
+ {
66
+ "jsonrpc": "2.0", "id": 1, "method": "tools/call",
67
+ "params": {
68
+ "name": "create_agent",
69
+ "arguments": {
70
+ "name": "dev_assistant",
71
+ "runner": "claude",
72
+ "prompt": "Tu es un assistant développement."
73
+ }
74
+ }
75
+ }
76
+ ```
77
+
78
+ ```json
79
+ // Agent 2 — KiloRunner
80
+ {
81
+ "jsonrpc": "2.0", "id": 2, "method": "tools/call",
82
+ "params": {
83
+ "name": "create_agent",
84
+ "arguments": {
85
+ "name": "archi_bot",
86
+ "runner": "kilo",
87
+ "prompt": "Tu es un expert architecture système."
88
+ }
89
+ }
90
+ }
91
+ ```
92
+
93
+ ```json
94
+ // Agent 3 — HermesRunner #1
95
+ {
96
+ "jsonrpc": "2.0", "id": 3, "method": "tools/call",
97
+ "params": {
98
+ "name": "create_agent",
99
+ "arguments": {
100
+ "name": "nexus_guard",
101
+ "runner": "hermes",
102
+ "prompt": "Tu es un garde système. Rapporte tout incident."
103
+ }
104
+ }
105
+ }
106
+ ```
107
+
108
+ ```json
109
+ // Agent 4 — HermesRunner #2
110
+ {
111
+ "jsonrpc": "2.0", "id": 4, "method": "tools/call",
112
+ "params": {
113
+ "name": "create_agent",
114
+ "arguments": {
115
+ "name": "nexus_sentinel",
116
+ "runner": "hermes",
117
+ "prompt": "Tu surveilles les métriques système."
118
+ }
119
+ }
120
+ }
121
+ ```
122
+
123
+ ```json
124
+ // Agent 5 — GeminiRunner
125
+ {
126
+ "jsonrpc": "2.0", "id": 5, "method": "tools/call",
127
+ "params": {
128
+ "name": "create_agent",
129
+ "arguments": {
130
+ "name": "fast_probe",
131
+ "runner": "gemini",
132
+ "prompt": "Réponds en une phrase concise."
133
+ }
134
+ }
135
+ }
136
+ ```
137
+
138
+ **Runners disponibles** : `claude` | `gemini` | `kilo` | `qwencli` | `openclaw` | `cline` | `opencode` | `hermes`
139
+
140
+ ---
141
+
142
+ ### 1.2 Lister les agents
143
+
144
+ ```json
145
+ {
146
+ "jsonrpc": "2.0", "id": 10, "method": "tools/call",
147
+ "params": { "name": "list_agents", "arguments": {} }
148
+ }
149
+ ```
150
+
151
+ ---
152
+
153
+ ### 1.3 Lancer un agent (run_agent)
154
+
155
+ ```json
156
+ {
157
+ "jsonrpc": "2.0", "id": 11, "method": "tools/call",
158
+ "params": {
159
+ "name": "run_agent",
160
+ "arguments": {
161
+ "agentName": "dev_assistant",
162
+ "prompt": "Explique ce qu'est un mutex en 2 phrases.",
163
+ "timeoutMs": 60000
164
+ }
165
+ }
166
+ }
167
+ ```
168
+
169
+ Le runner correspondant (`claude`) est automatiquement choisi d'après le registry.
170
+ Le PID du child process est inscrit dans `agent_lifecycle` (RAM, pas de disk I/O).
171
+
172
+ ---
173
+
174
+ ### 1.4 Surveiller en temps réel (stream)
175
+
176
+ ```json
177
+ // Lire l'output sans bloquer (polling)
178
+ {
179
+ "jsonrpc": "2.0", "id": 12, "method": "tools/call",
180
+ "params": {
181
+ "name": "agent_control",
182
+ "arguments": {
183
+ "agentName": "dev_assistant",
184
+ "action": "stream"
185
+ }
186
+ }
187
+ }
188
+ ```
189
+
190
+ ```json
191
+ // Statut complet (pid, status, sessionId, buffer)
192
+ {
193
+ "jsonrpc": "2.0", "id": 13, "method": "tools/call",
194
+ "params": {
195
+ "name": "agent_control",
196
+ "arguments": {
197
+ "agentName": "dev_assistant",
198
+ "action": "status"
199
+ }
200
+ }
201
+ }
202
+ ```
203
+
204
+ ---
205
+
206
+ ### 1.5 Lancer 5 agents en parallèle
207
+
208
+ ```bash
209
+ # Lancer les 5 en arrière-plan avec '&'
210
+ curl -s -X POST http://localhost:3099/mcp \
211
+ -H "Content-Type: application/json" \
212
+ -H "Accept: application/json, text/event-stream" \
213
+ -H "Authorization: Bearer $OVERMIND_AUTH" \
214
+ -d '{"jsonrpc":"2.0","id":20,"method":"tools/call","params":{"name":"run_agent","arguments":{"agentName":"dev_assistant","prompt":"Question rapide","timeoutMs":30000}}}' &
215
+
216
+ curl -s -X POST http://localhost:3099/mcp \
217
+ -H "Content-Type: application/json" \
218
+ -H "Accept: application/json, text/event-stream" \
219
+ -H "Authorization: Bearer $OVERMIND_AUTH" \
220
+ -d '{"jsonrpc":"2.0","id":21,"method":"tools/call","params":{"name":"run_agent","arguments":{"agentName":"archi_bot","prompt":"Question rapide","timeoutMs":30000}}}' &
221
+
222
+ curl -s -X POST http://localhost:3099/mcp \
223
+ -H "Content-Type: application/json" \
224
+ -H "Accept: application/json, text/event-stream" \
225
+ -H "Authorization: Bearer $OVERMIND_AUTH" \
226
+ -d '{"jsonrpc":"2.0","id":22,"method":"tools/call","params":{"name":"run_agent","arguments":{"agentName":"nexus_guard","prompt":"Rapporte létat du système","timeoutMs":30000}}}' &
227
+
228
+ curl -s -X POST http://localhost:3099/mcp \
229
+ -H "Content-Type: application/json" \
230
+ -H "Accept: application/json, text/event-stream" \
231
+ -H "Authorization: Bearer $OVERMIND_AUTH" \
232
+ -d '{"jsonrpc":"2.0","id":23,"method":"tools/call","params":{"name":"run_agent","arguments":{"agentName":"nexus_sentinel","prompt":"Liste les processus actifs","timeoutMs":30000}}}' &
233
+
234
+ curl -s -X POST http://localhost:3099/mcp \
235
+ -H "Content-Type: application/json" \
236
+ -H "Accept: application/json, text/event-stream" \
237
+ -H "Authorization: Bearer $OVERMIND_AUTH" \
238
+ -d '{"jsonrpc":"2.0","id":24,"method":"tools/call","params":{"name":"run_agent","arguments":{"agentName":"fast_probe","prompt":"Ping","timeoutMs":30000}}}' &
239
+
240
+ wait
241
+ echo "Tous les agents ont répondu (ou expiré)"
242
+ ```
243
+
244
+ Chaque agent s'exécute dans son propre child process (PID distinct).
245
+ Les outputs sont collectés dans `agent_lifecycle` (RAM, ring buffer 256KB/agent).
246
+
247
+ ---
248
+
249
+ ### 1.6 Attendre qu'un agent finisse (wait)
250
+
251
+ ```json
252
+ {
253
+ "jsonrpc": "2.0", "id": 30, "method": "tools/call",
254
+ "params": {
255
+ "name": "agent_control",
256
+ "arguments": {
257
+ "agentName": "dev_assistant",
258
+ "action": "wait",
259
+ "timeoutMs": 900000
260
+ }
261
+ }
262
+ }
263
+ ```
264
+
265
+ Blocage jusqu'à terminaison (max 15 min par défaut). Retourne l'output complet.
266
+
267
+ ---
268
+
269
+ ### 1.7 Tuer un agent
270
+
271
+ ```json
272
+ {
273
+ "jsonrpc": "2.0", "id": 31, "method": "tools/call",
274
+ "params": {
275
+ "name": "agent_control",
276
+ "arguments": {
277
+ "agentName": "dev_assistant",
278
+ "action": "kill"
279
+ }
280
+ }
281
+ }
282
+ ```
283
+
284
+ Envoie `taskkill /F /T /PID <pid>` (Windows) ou `kill -9` (Unix).
285
+
286
+ ---
287
+
288
+ ### 1.8 Supprimer un agent du registry
289
+
290
+ ```json
291
+ {
292
+ "jsonrpc": "2.0", "id": 32, "method": "tools/call",
293
+ "params": {
294
+ "name": "delete_agent",
295
+ "arguments": { "agentName": "dev_assistant" }
296
+ }
297
+ }
298
+ ```
299
+
300
+ ---
301
+
302
+ ## Méthode 2 — Via le SDK Node.js (import direct des runners)
303
+
304
+ Importe les classes directement dans ton script Node pour un contrôle programme par programme.
305
+
306
+ ### Installation / Setup
307
+
308
+ ```bash
309
+ cd /votre/projet/Workflow
310
+ npm run build # compile le TypeScript
311
+ ```
312
+
313
+ ### 2.1 Lancer un agent avec ClaudeRunner
314
+
315
+ ```javascript
316
+ // run_claude_direct.mjs
317
+ import { ClaudeRunner } from './dist/services/ClaudeRunner.js';
318
+ import { loadEnvQuietly } from './dist/lib/loadEnv.js';
319
+
320
+ const runner = new ClaudeRunner();
321
+
322
+ // Lancer l'agent
323
+ const result = await runner.runAgent({
324
+ agentName: 'mon_agent',
325
+ prompt: 'Explique les channels Go en 2 phrases.',
326
+ timeoutMs: 60_000,
327
+ silent: false, // false = logs dans stderr
328
+ configPath: undefined,
329
+ });
330
+
331
+ console.log('Status:', result.error ?? 'OK');
332
+ console.log('Output:', result.result);
333
+ console.log('Session:', result.sessionId);
334
+ ```
335
+
336
+ ```bash
337
+ node run_claude_direct.mjs
338
+ ```
339
+
340
+ ---
341
+
342
+ ### 2.2 Lancer avec KiloRunner
343
+
344
+ ```javascript
345
+ // run_kilo_direct.mjs
346
+ import { KiloRunner } from './dist/services/KiloRunner.js';
347
+
348
+ const runner = new KiloRunner();
349
+
350
+ const result = await runner.runAgent({
351
+ agentName: 'archi_kilo',
352
+ prompt: 'Décris larchitecture microservices en 3 points.',
353
+ timeoutMs: 90_000,
354
+ silent: false,
355
+ configPath: undefined,
356
+ });
357
+
358
+ console.log(result.result ?? result.error);
359
+ ```
360
+
361
+ ---
362
+
363
+ ### 2.3 Lancer 2 HermesRunner en parallèle
364
+
365
+ ```javascript
366
+ // run_hermes_pool.mjs
367
+ import { HermesRunner } from './dist/services/HermesRunner.js';
368
+
369
+ const runners = [
370
+ new HermesRunner({ model: 'glm-5.1' }),
371
+ new HermesRunner({ model: 'glm-4' }),
372
+ ];
373
+
374
+ const [res1, res2] = await Promise.all([
375
+ runners[0].runAgent({
376
+ agentName: 'hermes_guard',
377
+ prompt: 'Rapporte les 3 dernières alertes.',
378
+ timeoutMs: 60_000,
379
+ silent: false,
380
+ }),
381
+ runners[1].runAgent({
382
+ agentName: 'hermes_sentinel',
383
+ prompt: 'Affiche les métriques CPU/mémoire.',
384
+ timeoutMs: 60_000,
385
+ silent: false,
386
+ }),
387
+ ]);
388
+
389
+ console.log('Guard:', res1.result ?? res1.error);
390
+ console.log('Sentinel:', res2.result ?? res2.error);
391
+ ```
392
+
393
+ ---
394
+
395
+ ### 2.4 Lancer 5 agents mixed pool
396
+
397
+ ```javascript
398
+ // run_pool_5.mjs
399
+ import { ClaudeRunner } from './dist/services/ClaudeRunner.js';
400
+ import { KiloRunner } from './dist/services/KiloRunner.js';
401
+ import { HermesRunner } from './dist/services/HermesRunner.js';
402
+ import { GeminiRunner } from './dist/services/GeminiRunner.js';
403
+
404
+ const agents = [
405
+ // 1× ClaudeRunner
406
+ { runner: new ClaudeRunner(), name: 'dev', prompt: 'Réponds en 1 phrase.', model: null },
407
+ // 1× KiloRunner
408
+ { runner: new KiloRunner(), name: 'archi', prompt: 'Décris un pattern.', model: null },
409
+ // 2× HermesRunner
410
+ { runner: new HermesRunner({ model: 'glm-5.1' }), name: 'nexus_g', prompt: 'Ping système.', model: 'glm-5.1' },
411
+ { runner: new HermesRunner({ model: 'glm-4' }), name: 'nexus_s', prompt: 'Rapport RAM.', model: 'glm-4' },
412
+ // 1× GeminiRunner
413
+ { runner: new GeminiRunner(), name: 'probe', prompt: 'Combien de cores CPU ?', model: null },
414
+ ];
415
+
416
+ const runs = agents.map(({ runner, name, prompt, model }) =>
417
+ runner.runAgent({ agentName: name, prompt, timeoutMs: 45_000, silent: false })
418
+ .then(r => ({ name, result: r.result ?? r.error, model }))
419
+ );
420
+
421
+ const results = await Promise.all(runs);
422
+
423
+ for (const { name, result, model } of results) {
424
+ console.log(`[${model ?? 'default'}] ${name}: ${String(result).slice(0, 80)}`);
425
+ }
426
+ ```
427
+
428
+ ```bash
429
+ node run_pool_5.mjs
430
+ ```
431
+
432
+ ---
433
+
434
+ ### 2.5 Cycle de vie complet avec abort
435
+
436
+ ```javascript
437
+ import { ClaudeRunner } from './dist/services/ClaudeRunner.js';
438
+ import { AgentController } from './dist/lib/agent_lifecycle.js'; // wait helpers
439
+
440
+ const runner = new ClaudeRunner();
441
+ const controller = new AbortController();
442
+
443
+ const agent = runner.runAgent({
444
+ agentName: 'stoppable',
445
+ prompt: 'Décris lUnivers en détail (va prendre longtemps).',
446
+ timeoutMs: 300_000,
447
+ signal: controller.signal, // AbortController = kill externe
448
+ });
449
+
450
+ // Kill après 5 secondes
451
+ setTimeout(() => {
452
+ console.log('→ Abort envoyé');
453
+ controller.abort();
454
+ }, 5_000);
455
+
456
+ const result = await agent;
457
+ console.log('Résultat:', result.error ?? result.result);
458
+ ```
459
+
460
+ ---
461
+
462
+ ## Outil : bin/install-overmind-windows.bat
463
+
464
+ ```batch
465
+ :: Lancer le serveur Overmind MCP (via le script d'installation)
466
+ bin\install-overmind-windows.bat Start (ou restart si déjà lancé)
467
+ bin\install-overmind-windows.bat stop Arrêt propre
468
+ bin\install-overmind-windows.bat restart Restart
469
+ bin\install-overmind-windows.bat status Voir si ça tourne
470
+ bin\install-overmind-windows.bat tail 20 dernières lignes du log
471
+ bin\install-overmind-windows.bat kill Kill forcé
472
+ ```
473
+
474
+ Log : `Workflow/logs/overmind.log`
475
+ PID file : `Workflow/overmind.pid`
476
+ Health : `curl http://localhost:3099/health`
477
+
478
+ ## Outil : overmind-pool.mjs (client CLI)
479
+
480
+ ```bash
481
+ node bin/overmind-pool.mjs --status # health check
482
+ node bin/overmind-pool.mjs --agents # lister agents
483
+ node bin/overmind-pool.mjs --pool # demo 5 agents
484
+ node bin/overmind-pool.mjs --run <n> <r> <p> # run un agent
485
+ node bin/overmind-pool.mjs --create <n> <r> <p> # créer un agent
486
+ node bin/overmind-pool.mjs --kill <name> # tuer un agent
487
+ ```
488
+
489
+ ## Comparatif rapide
490
+
491
+ | | HTTP MCP (Méthode 1) | SDK Node (Méthode 2) |
492
+ |---|---|---|
493
+ | **Usage** | Scripts, CI, autre machine | Code programme |
494
+ | **Auth** | Bearer token HTTP | Aucun (process local) |
495
+ | **Paralélisme** | curl × N ou HTTP client async | `Promise.all([...])` |
496
+ | **Output streaming** | `agent_control stream` (SSE) | Callback `stdout.on('data')` |
497
+ | **Lifecycle management** | Via `agent_control` tool | Via `agent_lifecycle` + AbortController |
498
+ | **Déploiement** | HTTP ouvert, remote-ready | Même host que le serveur |
499
+
500
+ ---
501
+
502
+ ## Commandes utilitaires
503
+
504
+ ```bash
505
+ # Health check
506
+ curl http://localhost:3099/health
507
+
508
+ # Lister tous les outils disponibles
509
+ curl -s -X POST http://localhost:3099/mcp \
510
+ -H "Content-Type: application/json" \
511
+ -H "Accept: application/json, text/event-stream" \
512
+ -H "Authorization: Bearer $OVERMIND_AUTH" \
513
+ -d '{"jsonrpc":"2.0","id":0,"method":"tools/list","params":{}}'
514
+
515
+ # Lister les agents
516
+ curl -s -X POST http://localhost:3099/mcp \
517
+ -H "Content-Type: application/json" \
518
+ -H "Accept: application/json, text/event-stream" \
519
+ -H "Authorization: Bearer $OVERMIND_AUTH" \
520
+ -d '{"jsonrpc":"2.0","id":0,"method":"tools/call","params":{"name":"list_agents","arguments":{}}}'
521
+
522
+ # Voir le contenu du registry disk
523
+ cat .claude/process-registry.json
524
+ ```
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "overmind-mcp",
3
- "version": "2.7.0",
3
+ "version": "2.8.1",
4
4
  "preferGlobal": true,
5
5
  "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.",
6
6
  "type": "module",
@@ -32,8 +32,8 @@
32
32
  "build": "tsc",
33
33
  "rebuild": "rimraf dist && tsc",
34
34
  "clean": "rimraf dist",
35
- "start": "node --no-warnings --env-file=.env dist/bin/cli.js",
36
- "dev": "node --no-warnings --watch --env-file=.env dist/bin/cli.js",
35
+ "start": "node --max-old-space-size=256 --no-warnings --env-file=.env dist/bin/cli.js",
36
+ "dev": "node --max-old-space-size=256 --no-warnings --watch --env-file=.env dist/bin/cli.js",
37
37
  "build:fix": "pnpm run clean && pnpm install && pnpm run build",
38
38
  "lint": "eslint .",
39
39
  "lint:fix": "eslint . --fix",