overmind-mcp 3.4.0 → 3.4.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAiClC,wBAAgB,YAAY,CAC1B,IAAI,GAAE,MAAuB,EAC7B,UAAU,UAAQ,EAClB,eAAe,UAAQ,iDA8NxB"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAkClC,wBAAgB,YAAY,CAC1B,IAAI,GAAE,MAAuB,EAC7B,UAAU,UAAQ,EAClB,eAAe,UAAQ,iDAsQxB"}
package/dist/server.js CHANGED
@@ -53,6 +53,7 @@ import { listAgents, listAgentsSchema, deleteAgent, deleteAgentSchema, updateAge
53
53
  import { getAgentConfigs, getAgentConfigsSchema } from './tools/get_agent_configs.js';
54
54
  import { configExample, configExampleSchema } from './tools/config_example.js';
55
55
  import { agentControl, agentControlSchema } from './tools/agent_control.js';
56
+ import { a2aHub, a2aHubSchema } from './tools/a2a_hub.js';
56
57
  function wrapExecute(toolName, fn) {
57
58
  return (...args) => withSpan(`tool.${toolName}`, () => fn(...args));
58
59
  }
@@ -252,7 +253,46 @@ agent_control({ agentName: "sniper_analyst", runner: "kilo", action: "stream" })
252
253
  agent_control({ agentName: "sniper_analyst", runner: "kilo", action: "kill" })
253
254
  agent_control({ agentName: "sniper_analyst", runner: "kilo", action: "wait", timeoutMs: 300000 })`,
254
255
  parameters: agentControlSchema,
255
- execute: agentControl,
256
+ execute: wrapExecute('agent_control', agentControl),
257
+ });
258
+ // ─── 15. a2a_hub ──────────────────────────────────────────────────────────
259
+ server.addTool({
260
+ name: 'a2a_hub',
261
+ description: `🌐 **A2A Hub — Communication Agent-to-Agent unifiée**
262
+
263
+ Découvre automatiquement tous les agents persistants du système et permet de communiquer avec eux.
264
+
265
+ **Actions disponibles:**
266
+
267
+ discover — Liste TOUS les agents avec leur status temps réel, modèle, skills, description
268
+ → a2a_hub(action: "discover")
269
+
270
+ status — État détaillé d'un agent (runs, erreurs, A2A count, session)
271
+ → a2a_hub(action: "status", target: "sniperbot_analyst")
272
+
273
+ send — Message synchrone A→B (attend la réponse)
274
+ → a2a_hub(action: "send", target: "tradingview_analyst", message: "Analyse BTCUSDT")
275
+
276
+ delegate — Tâche async (retourne immédiatement avec taskId + callback optionnel)
277
+ → a2a_hub(action: "delegate", target: "sniperbot_analyst", message: "Prépare un plan", callbackUrl: "http://...")
278
+
279
+ pipeline — Chaîne séquentielle A→B→C (output de l'un = input du suivant)
280
+ → a2a_hub(action: "pipeline", message: "Analyse le marché", steps: [{agentName: "tradingview_analyst"}, {agentName: "sniperbot_analyst"}])
281
+
282
+ fanout — 1→N parallèle + merge (concat|best|vote|first_success)
283
+ → a2a_hub(action: "fanout", targets: ["agent_a", "agent_b"], message: "Quelle stratégie?", mergeStrategy: "best")
284
+
285
+ query — Question rapide multi-agents (tous répondent en parallèle)
286
+ → a2a_hub(action: "query", targets: ["agent_a", "agent_b"], message: "Prix actuel BTC?")
287
+
288
+ broadcast — Message global à tous les agents online
289
+ → a2a_hub(action: "broadcast", message: "Alerte marché!")
290
+ → a2a_hub(action: "broadcast", message: "Premier qui répond!", race: true)
291
+
292
+ **Auto-discovery:** L'outil scanne ~/.overmind/hermes/profiles/ automatiquement.
293
+ Aucune configuration manuelle nécessaire — il connaît tous les agents du système.`,
294
+ parameters: a2aHubSchema,
295
+ execute: wrapExecute('a2a_hub', a2aHub),
256
296
  });
257
297
  }
258
298
  return server;
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,65 @@
1
+ /**
2
+ * ═══════════════════════════════════════════════════════════════════════════
3
+ * A2A Hub — Outil MCP pour la communication Agent-to-Agent
4
+ * ═══════════════════════════════════════════════════════════════════════════
5
+ *
6
+ * Architecture distribuee — chaque worker est un serveur HTTP independant:
7
+ *
8
+ * discord-master (:discord) → routes !trade → TV Analyst :3002
9
+ * → routes !sniper → Sniperbot :3001
10
+ *
11
+ * a2a_hub parle DIRECTEMENT aux workers HTTP:
12
+ * POST :300X/send → message synchrone
13
+ * GET :300X/health → status live
14
+ *
15
+ * Decouverte automatique:
16
+ * 1. Scan ports 3001-3020 (workers connus)
17
+ * 2. Scan ~/.overmind/hermes/profiles/ (agents Hermes)
18
+ * 3. Cross-reference: profile ↔ worker port
19
+ * 4. Lit ~/.overmind/bridge/workers.json si present
20
+ */
21
+ import { z } from 'zod';
22
+ export declare const a2aHubSchema: z.ZodObject<{
23
+ action: z.ZodEnum<{
24
+ pipeline: "pipeline";
25
+ send: "send";
26
+ status: "status";
27
+ query: "query";
28
+ discover: "discover";
29
+ delegate: "delegate";
30
+ fanout: "fanout";
31
+ broadcast: "broadcast";
32
+ }>;
33
+ target: z.ZodOptional<z.ZodString>;
34
+ message: z.ZodOptional<z.ZodString>;
35
+ targets: z.ZodOptional<z.ZodArray<z.ZodString>>;
36
+ steps: z.ZodOptional<z.ZodArray<z.ZodObject<{
37
+ agentName: z.ZodString;
38
+ promptPrefix: z.ZodOptional<z.ZodString>;
39
+ }, z.core.$strip>>>;
40
+ mergeStrategy: z.ZodDefault<z.ZodOptional<z.ZodEnum<{
41
+ concat: "concat";
42
+ best: "best";
43
+ vote: "vote";
44
+ first_success: "first_success";
45
+ }>>>;
46
+ race: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
47
+ async: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
48
+ accumulateContext: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
49
+ timeoutMs: z.ZodOptional<z.ZodNumber>;
50
+ model: z.ZodOptional<z.ZodString>;
51
+ }, z.core.$strip>;
52
+ export declare function a2aHub(args: z.infer<typeof a2aHubSchema>): Promise<{
53
+ content: {
54
+ type: "text";
55
+ text: string;
56
+ }[];
57
+ isError?: undefined;
58
+ } | {
59
+ content: {
60
+ type: "text";
61
+ text: string;
62
+ }[];
63
+ isError: boolean;
64
+ }>;
65
+ //# sourceMappingURL=a2a_hub.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"a2a_hub.d.ts","sourceRoot":"","sources":["../../src/tools/a2a_hub.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAmSxB,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAgEvB,CAAC;AAiCH,wBAAsB,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC;;;;;;;;;;;;GAse9D"}
@@ -0,0 +1,740 @@
1
+ /**
2
+ * ═══════════════════════════════════════════════════════════════════════════
3
+ * A2A Hub — Outil MCP pour la communication Agent-to-Agent
4
+ * ═══════════════════════════════════════════════════════════════════════════
5
+ *
6
+ * Architecture distribuee — chaque worker est un serveur HTTP independant:
7
+ *
8
+ * discord-master (:discord) → routes !trade → TV Analyst :3002
9
+ * → routes !sniper → Sniperbot :3001
10
+ *
11
+ * a2a_hub parle DIRECTEMENT aux workers HTTP:
12
+ * POST :300X/send → message synchrone
13
+ * GET :300X/health → status live
14
+ *
15
+ * Decouverte automatique:
16
+ * 1. Scan ports 3001-3020 (workers connus)
17
+ * 2. Scan ~/.overmind/hermes/profiles/ (agents Hermes)
18
+ * 3. Cross-reference: profile ↔ worker port
19
+ * 4. Lit ~/.overmind/bridge/workers.json si present
20
+ */
21
+ import { z } from 'zod';
22
+ import { execSync } from 'child_process';
23
+ import fs from 'fs';
24
+ import path from 'path';
25
+ import os from 'os';
26
+ // ─── HTTP Helper (curl synchrone) ──────────────────────────────────────────
27
+ function httpGet(url, timeoutMs = 5000) {
28
+ try {
29
+ const result = execSync(`curl -s -m ${Math.floor(timeoutMs / 1000)} "${url}" 2>/dev/null`, {
30
+ encoding: 'utf8',
31
+ timeout: timeoutMs + 1000,
32
+ });
33
+ return JSON.parse(result);
34
+ }
35
+ catch {
36
+ return null;
37
+ }
38
+ }
39
+ function httpPost(url, body, timeoutMs = 300000) {
40
+ const payload = JSON.stringify(body);
41
+ try {
42
+ const escapedPayload = payload.replace(/'/g, "'\\''");
43
+ const result = execSync(`curl -s -m ${Math.floor(timeoutMs / 1000)} -X POST "${url}" -H "Content-Type: application/json" -d '${escapedPayload}' 2>/dev/null`, { encoding: 'utf8', timeout: timeoutMs + 1000, maxBuffer: 50 * 1024 * 1024 });
44
+ return JSON.parse(result);
45
+ }
46
+ catch {
47
+ return null;
48
+ }
49
+ }
50
+ // ─── Worker Discovery ──────────────────────────────────────────────────────
51
+ function discoverWorkers() {
52
+ const workers = [];
53
+ const workersJsonPath = path.join(os.homedir(), '.overmind', 'bridge', 'workers.json');
54
+ // 1. Try reading workers registry
55
+ let knownPorts = [];
56
+ if (fs.existsSync(workersJsonPath)) {
57
+ try {
58
+ const data = JSON.parse(fs.readFileSync(workersJsonPath, 'utf8'));
59
+ if (Array.isArray(data.workers)) {
60
+ knownPorts = data.workers.map((w) => ({
61
+ port: w.port,
62
+ agentName: w.agentName || 'unknown',
63
+ }));
64
+ }
65
+ }
66
+ catch {
67
+ // ignore
68
+ }
69
+ }
70
+ // 2. Fallback: scan ports 3001-3020
71
+ if (knownPorts.length === 0) {
72
+ knownPorts = [];
73
+ for (let port = 3001; port <= 3020; port++) {
74
+ knownPorts.push({ port, agentName: '' });
75
+ }
76
+ }
77
+ // 3. Probe each port
78
+ for (const { port, agentName } of knownPorts) {
79
+ const url = `http://localhost:${port}`;
80
+ const health = httpGet(`${url}/health`, 3000);
81
+ if (health) {
82
+ // Worker is online — extract agent name from health
83
+ const detectedAgent = agentName ||
84
+ health.agent ||
85
+ health.agentName ||
86
+ health.service ||
87
+ 'unknown';
88
+ workers.push({
89
+ port,
90
+ url,
91
+ online: true,
92
+ agentName: detectedAgent,
93
+ health,
94
+ });
95
+ }
96
+ else {
97
+ // Check if port is listening at all
98
+ workers.push({
99
+ port,
100
+ url,
101
+ online: false,
102
+ agentName: agentName || '',
103
+ });
104
+ }
105
+ }
106
+ return workers;
107
+ }
108
+ // ─── Agent Discovery ───────────────────────────────────────────────────────
109
+ function discoverAgents() {
110
+ const home = os.homedir();
111
+ const profilesDir = path.join(home, '.overmind', 'hermes', 'profiles');
112
+ const selfAgent = process.env.OVERMIND_AGENT_NAME || null;
113
+ const agents = [];
114
+ const workers = discoverWorkers();
115
+ // Build worker lookup: agentName → worker
116
+ const workerByAgent = new Map();
117
+ for (const w of workers) {
118
+ if (w.online && w.agentName && w.agentName !== 'unknown') {
119
+ workerByAgent.set(w.agentName, w);
120
+ }
121
+ }
122
+ // Scan Hermes profiles
123
+ if (fs.existsSync(profilesDir)) {
124
+ const entries = fs.readdirSync(profilesDir, { withFileTypes: true });
125
+ for (const entry of entries) {
126
+ if (!entry.isDirectory())
127
+ continue;
128
+ const profilePath = path.join(profilesDir, entry.name);
129
+ // Read config.yaml
130
+ const configPath = path.join(profilePath, 'config.yaml');
131
+ let model = 'unknown';
132
+ let provider = 'unknown';
133
+ if (fs.existsSync(configPath)) {
134
+ const config = fs.readFileSync(configPath, 'utf8');
135
+ const modelMatch = config.match(/^\s*model:\s*(?!provider)(.+)/m);
136
+ const providerMatch = config.match(/^\s*provider:\s*(.+)/m);
137
+ if (modelMatch)
138
+ model = modelMatch[1].trim().replace(/['"]/g, '');
139
+ if (providerMatch)
140
+ provider = providerMatch[1].trim().replace(/['"]/g, '');
141
+ }
142
+ // Read profile.yaml for description
143
+ const profileYamlPath = path.join(profilePath, 'profile.yaml');
144
+ let description = '';
145
+ if (fs.existsSync(profileYamlPath)) {
146
+ const py = fs.readFileSync(profileYamlPath, 'utf8');
147
+ const descMatch = py.match(/description:\s*"?([^"\n]+)"?/);
148
+ if (descMatch)
149
+ description = descMatch[1].trim();
150
+ }
151
+ // Count skills
152
+ let skillsCount = 0;
153
+ const skillsDir = path.join(profilePath, 'skills');
154
+ if (fs.existsSync(skillsDir)) {
155
+ try {
156
+ const walk = (dir) => {
157
+ let count = 0;
158
+ for (const f of fs.readdirSync(dir, { withFileTypes: true })) {
159
+ if (f.isDirectory()) {
160
+ count += walk(path.join(dir, f.name));
161
+ }
162
+ else if (f.name === 'SKILL.md') {
163
+ count++;
164
+ }
165
+ }
166
+ return count;
167
+ };
168
+ skillsCount = walk(skillsDir);
169
+ }
170
+ catch {
171
+ // ignore
172
+ }
173
+ }
174
+ // Check memory
175
+ const hasMemory = fs.existsSync(path.join(profilePath, 'memories', 'MEMORY.md'));
176
+ // Last activity
177
+ let lastActivity = null;
178
+ const stateDb = path.join(profilePath, 'state.db');
179
+ if (fs.existsSync(stateDb)) {
180
+ try {
181
+ lastActivity = fs.statSync(stateDb).mtime.toISOString();
182
+ }
183
+ catch {
184
+ // ignore
185
+ }
186
+ }
187
+ // Cross-reference with workers
188
+ const worker = workerByAgent.get(entry.name);
189
+ agents.push({
190
+ name: entry.name,
191
+ model,
192
+ provider,
193
+ status: worker ? 'online' : 'offline',
194
+ workerPort: worker?.port ?? null,
195
+ workerUrl: worker?.url ?? null,
196
+ description,
197
+ skillsCount,
198
+ hasMemory,
199
+ lastActivity,
200
+ });
201
+ }
202
+ }
203
+ return {
204
+ totalAgents: agents.length,
205
+ onlineWorkers: workers.filter((w) => w.online).length,
206
+ agents,
207
+ workers,
208
+ selfAgent,
209
+ };
210
+ }
211
+ // ─── Send message to a worker ──────────────────────────────────────────────
212
+ function sendToWorker(port, message, opts = {}) {
213
+ const url = `http://localhost:${port}/send`;
214
+ const body = {
215
+ message,
216
+ userId: `a2a_${process.env.OVERMIND_AGENT_NAME || 'system'}`,
217
+ username: process.env.OVERMIND_AGENT_NAME || 'A2A Hub',
218
+ channelId: 'a2a',
219
+ };
220
+ if (opts.model)
221
+ body.model = opts.model;
222
+ const response = httpPost(url, body, opts.timeoutMs ?? 300000);
223
+ if (response === null) {
224
+ return { success: false, text: `Worker :${port} injoignable`, raw: null };
225
+ }
226
+ if (response.error) {
227
+ return {
228
+ success: false,
229
+ text: `Erreur :${port}: ${response.error}`,
230
+ raw: response,
231
+ };
232
+ }
233
+ // Workers may return { result, content, response, output }
234
+ const text = response.result ||
235
+ response.response ||
236
+ response.output ||
237
+ (Array.isArray(response.content)
238
+ ? response.content.map((c) => c.text || '').join('\n')
239
+ : '') ||
240
+ JSON.stringify(response);
241
+ return { success: true, text, raw: response };
242
+ }
243
+ // ─── Schema ────────────────────────────────────────────────────────────────
244
+ export const a2aHubSchema = z.object({
245
+ action: z
246
+ .enum(['discover', 'status', 'send', 'delegate', 'pipeline', 'fanout', 'query', 'broadcast'])
247
+ .describe("Action: discover=liste tous les agents+workers, status=état d'un worker, send=message synchrone, delegate=async, pipeline=chaîne A→B→C, fanout=1→N+merge, query=multi-agents, broadcast=global"),
248
+ target: z
249
+ .string()
250
+ .optional()
251
+ .describe("Nom de l'agent cible (ex: 'sniperbot_analyst') OU port du worker (ex: '3001')"),
252
+ message: z.string().optional().describe('Le message/prompt à envoyer aux agents'),
253
+ targets: z
254
+ .array(z.string())
255
+ .optional()
256
+ .describe('Liste des agents cibles (noms ou ports) pour fanout/query/broadcast'),
257
+ steps: z
258
+ .array(z.object({
259
+ agentName: z
260
+ .string()
261
+ .describe("Nom de l'agent ou port (ex: 'sniperbot_analyst' ou '3001')"),
262
+ promptPrefix: z.string().optional(),
263
+ }))
264
+ .optional()
265
+ .describe('Étapes de la pipeline (pour action=pipeline)'),
266
+ mergeStrategy: z
267
+ .enum(['concat', 'best', 'vote', 'first_success'])
268
+ .optional()
269
+ .default('concat')
270
+ .describe('Stratégie de merge pour fanout (default: concat)'),
271
+ race: z
272
+ .boolean()
273
+ .optional()
274
+ .default(false)
275
+ .describe('Pour broadcast: si true, premier qui répond gagne'),
276
+ async: z
277
+ .boolean()
278
+ .optional()
279
+ .default(true)
280
+ .describe('Pour delegate: si true (default), retourne immédiatement'),
281
+ accumulateContext: z
282
+ .boolean()
283
+ .optional()
284
+ .default(false)
285
+ .describe('Pour pipeline: chaque step reçoit tous les outputs précédents'),
286
+ timeoutMs: z
287
+ .number()
288
+ .int()
289
+ .min(5000)
290
+ .max(600000)
291
+ .optional()
292
+ .describe('Timeout par agent en ms (default: 300000 = 5min)'),
293
+ model: z.string().optional().describe('Modèle LLM override'),
294
+ });
295
+ // ─── Resolve agent name to worker port ─────────────────────────────────────
296
+ function resolveTarget(target, discovery) {
297
+ // If target is a port number
298
+ const portMatch = target.match(/^(\d{4,5})$/);
299
+ if (portMatch) {
300
+ const port = parseInt(portMatch[1], 10);
301
+ const worker = discovery.workers.find((w) => w.port === port);
302
+ return { port, agentName: worker?.agentName || target };
303
+ }
304
+ // If target is an agent name, find its worker
305
+ const agent = discovery.agents.find((a) => a.name === target);
306
+ if (agent?.workerPort) {
307
+ return { port: agent.workerPort, agentName: target };
308
+ }
309
+ // Try online workers
310
+ const worker = discovery.workers.find((w) => w.online && w.agentName === target);
311
+ if (worker) {
312
+ return { port: worker.port, agentName: target };
313
+ }
314
+ return { port: null, agentName: target };
315
+ }
316
+ // ─── Execute ───────────────────────────────────────────────────────────────
317
+ export async function a2aHub(args) {
318
+ const selfAgent = process.env.OVERMIND_AGENT_NAME || 'unknown';
319
+ const timeout = args.timeoutMs ?? 300000;
320
+ try {
321
+ switch (args.action) {
322
+ // ═══════════════════════════════════════════════════════════════════════
323
+ // DISCOVER
324
+ // ═══════════════════════════════════════════════════════════════════════
325
+ case 'discover': {
326
+ const d = discoverAgents();
327
+ const lines = [
328
+ `🌐 **A2A Hub — Découverte du système multi-agents**`,
329
+ ``,
330
+ `**Self:** ${d.selfAgent || '(inconnu)'}`,
331
+ `**Workers online:** ${d.onlineWorkers}`,
332
+ `**Total agents:** ${d.totalAgents}`,
333
+ ``,
334
+ `### Workers HTTP`,
335
+ ``,
336
+ ];
337
+ const onlineWorkers = d.workers.filter((w) => w.online);
338
+ if (onlineWorkers.length === 0) {
339
+ lines.push('Aucun worker HTTP en ligne.');
340
+ }
341
+ else {
342
+ lines.push('| Port | Agent | Status | URL |');
343
+ lines.push('|------|-------|--------|-----|');
344
+ for (const w of onlineWorkers) {
345
+ lines.push(`| :${w.port} | ${w.agentName} | 🟢 online | ${w.url} |`);
346
+ }
347
+ }
348
+ lines.push('');
349
+ lines.push('### Agents Hermes');
350
+ lines.push('');
351
+ if (d.agents.length === 0) {
352
+ lines.push('Aucun agent trouvé dans ~/.overmind/hermes/profiles/');
353
+ }
354
+ else {
355
+ lines.push('| Agent | Status | Worker | Model | Provider | Skills | Description |');
356
+ lines.push('|-------|--------|--------|-------|----------|--------|-------------|');
357
+ for (const a of d.agents) {
358
+ const statusIcon = a.status === 'online' ? '🟢' : '🔴';
359
+ const workerInfo = a.workerPort ? `:${a.workerPort}` : '—';
360
+ const nameDisplay = a.name === selfAgent ? `**${a.name} (self)**` : a.name;
361
+ lines.push(`| ${nameDisplay} | ${statusIcon} ${a.status} | ${workerInfo} | ${a.model} | ${a.provider} | ${a.skillsCount} | ${a.description.slice(0, 40)} |`);
362
+ }
363
+ }
364
+ lines.push('');
365
+ lines.push('**Actions disponibles:** send, delegate, pipeline, fanout, query, broadcast');
366
+ lines.push('**Exemple:** a2a_hub(action: "send", target: "sniperbot_analyst", message: "Analyse BTC")');
367
+ return { content: [{ type: 'text', text: lines.join('\n') }] };
368
+ }
369
+ // ═══════════════════════════════════════════════════════════════════════
370
+ // STATUS
371
+ // ═══════════════════════════════════════════════════════════════════════
372
+ case 'status': {
373
+ if (!args.target) {
374
+ return {
375
+ content: [{ type: 'text', text: '❌ `target` requis (nom ou port)' }],
376
+ isError: true,
377
+ };
378
+ }
379
+ const d = discoverAgents();
380
+ const { port, agentName } = resolveTarget(args.target, d);
381
+ if (!port) {
382
+ return {
383
+ content: [
384
+ { type: 'text', text: `❌ Worker pour "${args.target}" introuvable` },
385
+ ],
386
+ isError: true,
387
+ };
388
+ }
389
+ const health = httpGet(`http://localhost:${port}/health`);
390
+ if (!health) {
391
+ return {
392
+ content: [{ type: 'text', text: `❌ Worker :${port} injoignable` }],
393
+ isError: true,
394
+ };
395
+ }
396
+ const lines = [`📊 **Status: ${agentName} (:${port})**`, ``];
397
+ for (const [key, value] of Object.entries(health)) {
398
+ lines.push(`**${key}:** ${typeof value === 'object' ? JSON.stringify(value).slice(0, 100) : value}`);
399
+ }
400
+ return { content: [{ type: 'text', text: lines.join('\n') }] };
401
+ }
402
+ // ═══════════════════════════════════════════════════════════════════════
403
+ // SEND
404
+ // ═══════════════════════════════════════════════════════════════════════
405
+ case 'send': {
406
+ if (!args.target || !args.message) {
407
+ return {
408
+ content: [{ type: 'text', text: '❌ `target` et `message` requis' }],
409
+ isError: true,
410
+ };
411
+ }
412
+ const d = discoverAgents();
413
+ const { port, agentName } = resolveTarget(args.target, d);
414
+ if (!port) {
415
+ return {
416
+ content: [
417
+ {
418
+ type: 'text',
419
+ text: `❌ Worker pour "${args.target}" introuvable. Utilisez action=discover pour lister les agents.`,
420
+ },
421
+ ],
422
+ isError: true,
423
+ };
424
+ }
425
+ const enrichedMessage = `[A2A — Message from ${selfAgent}]\n${args.message}`;
426
+ const result = sendToWorker(port, enrichedMessage, {
427
+ model: args.model,
428
+ timeoutMs: timeout,
429
+ });
430
+ if (!result.success) {
431
+ return {
432
+ content: [{ type: 'text', text: `❌ ${result.text}` }],
433
+ isError: true,
434
+ };
435
+ }
436
+ return {
437
+ content: [
438
+ {
439
+ type: 'text',
440
+ text: `📤 **Message envoyé à ${agentName} (:${port})**\n\n${result.text}`,
441
+ },
442
+ ],
443
+ };
444
+ }
445
+ // ═══════════════════════════════════════════════════════════════════════
446
+ // DELEGATE (async — fire and forget)
447
+ // ═══════════════════════════════════════════════════════════════════════
448
+ case 'delegate': {
449
+ if (!args.target || !args.message) {
450
+ return {
451
+ content: [{ type: 'text', text: '❌ `target` et `message` requis' }],
452
+ isError: true,
453
+ };
454
+ }
455
+ const d = discoverAgents();
456
+ const { port, agentName } = resolveTarget(args.target, d);
457
+ if (!port) {
458
+ return {
459
+ content: [
460
+ { type: 'text', text: `❌ Worker pour "${args.target}" introuvable` },
461
+ ],
462
+ isError: true,
463
+ };
464
+ }
465
+ // Fire and forget — don't wait for response
466
+ const enrichedMessage = `[A2A — Delegate from ${selfAgent}]\n${args.message}`;
467
+ const url = `http://localhost:${port}/send`;
468
+ const body = {
469
+ message: enrichedMessage,
470
+ userId: `a2a_${selfAgent}`,
471
+ username: selfAgent,
472
+ channelId: 'a2a_delegate',
473
+ ...(args.model ? { model: args.model } : {}),
474
+ };
475
+ // Spawn curl in background (fire-and-forget)
476
+ try {
477
+ const payload = JSON.stringify(body).replace(/'/g, "'\\''");
478
+ execSync(`nohup curl -s -m ${Math.floor(timeout / 1000)} -X POST "${url}" -H "Content-Type: application/json" -d '${payload}' > /dev/null 2>&1 &`, { timeout: 2000 });
479
+ }
480
+ catch {
481
+ // ignore — fire and forget
482
+ }
483
+ return {
484
+ content: [
485
+ {
486
+ type: 'text',
487
+ text: `🤝 **Tâche déléguée à ${agentName} (:${port})**\n\nLe worker traite la requête en arrière-plan. Le résultat sera disponible dans sa session.`,
488
+ },
489
+ ],
490
+ };
491
+ }
492
+ // ═══════════════════════════════════════════════════════════════════════
493
+ // PIPELINE
494
+ // ═══════════════════════════════════════════════════════════════════════
495
+ case 'pipeline': {
496
+ if (!args.message || !args.steps || args.steps.length === 0) {
497
+ return {
498
+ content: [
499
+ {
500
+ type: 'text',
501
+ text: '❌ `message` (prompt initial) et `steps` requis pour pipeline',
502
+ },
503
+ ],
504
+ isError: true,
505
+ };
506
+ }
507
+ const d = discoverAgents();
508
+ const outputs = [];
509
+ let currentPrompt = args.message;
510
+ for (let i = 0; i < args.steps.length; i++) {
511
+ const step = args.steps[i];
512
+ const { port, agentName } = resolveTarget(step.agentName, d);
513
+ if (!port) {
514
+ outputs.push({ agent: step.agentName, output: 'Worker introuvable', success: false });
515
+ break;
516
+ }
517
+ const stepPrompt = (step.promptPrefix ? step.promptPrefix + '\n\n' : '') +
518
+ `[Pipeline Step ${i + 1}/${args.steps.length}]\n${currentPrompt}`;
519
+ const result = sendToWorker(port, stepPrompt, { timeoutMs: timeout });
520
+ outputs.push({
521
+ agent: `${agentName} (:${port})`,
522
+ output: result.text,
523
+ success: result.success,
524
+ });
525
+ if (!result.success)
526
+ break;
527
+ currentPrompt = args.accumulateContext
528
+ ? outputs.map((o) => `[${o.agent}]: ${o.output}`).join('\n\n---\n\n')
529
+ : result.text;
530
+ }
531
+ const lines = [
532
+ `🔗 **Pipeline terminé** (${outputs.length}/${args.steps.length} steps)`,
533
+ ``,
534
+ ];
535
+ for (const o of outputs) {
536
+ lines.push(`**${o.success ? '✅' : '❌'} ${o.agent}:**`);
537
+ lines.push(o.output.slice(0, 800) + (o.output.length > 800 ? '...' : ''));
538
+ lines.push('');
539
+ }
540
+ return { content: [{ type: 'text', text: lines.join('\n') }] };
541
+ }
542
+ // ═══════════════════════════════════════════════════════════════════════
543
+ // FANOUT
544
+ // ═══════════════════════════════════════════════════════════════════════
545
+ case 'fanout': {
546
+ if (!args.message || !args.targets || args.targets.length === 0) {
547
+ return {
548
+ content: [{ type: 'text', text: '❌ `message` et `targets` requis' }],
549
+ isError: true,
550
+ };
551
+ }
552
+ const d = discoverAgents();
553
+ const enrichedMessage = `[A2A — Fanout from ${selfAgent}]\n${args.message}`;
554
+ // Run all in parallel
555
+ const results = args.targets
556
+ .map((target) => {
557
+ const { port } = resolveTarget(target, d);
558
+ if (!port) {
559
+ return { agent: target, success: false, text: 'Worker introuvable' };
560
+ }
561
+ return sendToWorker(port, enrichedMessage, { model: args.model, timeoutMs: timeout });
562
+ })
563
+ .map((r, i) => ({
564
+ agent: args.targets[i],
565
+ success: r.success,
566
+ text: r.text,
567
+ }));
568
+ // Merge
569
+ let merged;
570
+ let winner;
571
+ switch (args.mergeStrategy) {
572
+ case 'first_success': {
573
+ const first = results.find((r) => r.success);
574
+ merged = first ? first.text : 'Tous ont échoué';
575
+ winner = first?.agent;
576
+ break;
577
+ }
578
+ case 'best': {
579
+ const sorted = results
580
+ .filter((r) => r.success)
581
+ .sort((a, b) => b.text.length - a.text.length);
582
+ merged = sorted.length > 0 ? sorted[0].text : 'Tous ont échoué';
583
+ winner = sorted[0]?.agent;
584
+ break;
585
+ }
586
+ case 'concat':
587
+ default: {
588
+ merged = results
589
+ .map((r) => `### ${r.agent}${r.success ? '' : ' (ÉCHEC)'}\n${r.text}`)
590
+ .join('\n\n---\n\n');
591
+ break;
592
+ }
593
+ }
594
+ const successCount = results.filter((r) => r.success).length;
595
+ const lines = [
596
+ `🌐 **Fanout** (${successCount}/${results.length} succès, merge=${args.mergeStrategy})`,
597
+ ...(winner ? [`**Gagnant:** ${winner}`] : []),
598
+ ``,
599
+ merged.slice(0, 3000),
600
+ ];
601
+ return { content: [{ type: 'text', text: lines.join('\n') }] };
602
+ }
603
+ // ═══════════════════════════════════════════════════════════════════════
604
+ // QUERY
605
+ // ═══════════════════════════════════════════════════════════════════════
606
+ case 'query': {
607
+ if (!args.message || !args.targets || args.targets.length === 0) {
608
+ return {
609
+ content: [{ type: 'text', text: '❌ `message` et `targets` requis' }],
610
+ isError: true,
611
+ };
612
+ }
613
+ const d = discoverAgents();
614
+ const enrichedMessage = `[A2A — Query from ${selfAgent}]\n${args.message}`;
615
+ const queryTimeout = Math.min(timeout, 60000);
616
+ const results = args.targets
617
+ .map((target) => {
618
+ const { port } = resolveTarget(target, d);
619
+ if (!port) {
620
+ return { agent: target, success: false, text: 'Worker introuvable' };
621
+ }
622
+ return sendToWorker(port, enrichedMessage, {
623
+ model: args.model,
624
+ timeoutMs: queryTimeout,
625
+ });
626
+ })
627
+ .map((r, i) => ({
628
+ agent: args.targets[i],
629
+ success: r.success,
630
+ text: r.text,
631
+ }));
632
+ const lines = [
633
+ `❓ **Query multi-agents** (${results.filter((r) => r.success).length}/${results.length} réponses)`,
634
+ ``,
635
+ ];
636
+ for (const r of results) {
637
+ lines.push(`**${r.success ? '✅' : '❌'} ${r.agent}:**`);
638
+ lines.push(r.text.slice(0, 500) + (r.text.length > 500 ? '...' : ''));
639
+ lines.push('');
640
+ }
641
+ return { content: [{ type: 'text', text: lines.join('\n') }] };
642
+ }
643
+ // ═══════════════════════════════════════════════════════════════════════
644
+ // BROADCAST
645
+ // ═══════════════════════════════════════════════════════════════════════
646
+ case 'broadcast': {
647
+ if (!args.message) {
648
+ return {
649
+ content: [{ type: 'text', text: '❌ `message` requis' }],
650
+ isError: true,
651
+ };
652
+ }
653
+ const d = discoverAgents();
654
+ // Determine targets
655
+ let targetWorkers;
656
+ if (args.targets && args.targets.length > 0) {
657
+ // Resolve each target to a worker
658
+ targetWorkers = args.targets
659
+ .map((t) => {
660
+ const { port } = resolveTarget(t, d);
661
+ return d.workers.find((w) => w.port === port);
662
+ })
663
+ .filter((w) => w !== undefined);
664
+ }
665
+ else {
666
+ // All online workers
667
+ targetWorkers = d.workers.filter((w) => w.online);
668
+ }
669
+ if (targetWorkers.length === 0) {
670
+ return {
671
+ content: [{ type: 'text', text: '❌ Aucun worker online pour broadcast' }],
672
+ isError: true,
673
+ };
674
+ }
675
+ const enrichedMessage = `[A2A — Broadcast from ${selfAgent}]\n${args.message}`;
676
+ if (args.race) {
677
+ // First to respond wins
678
+ for (const w of targetWorkers) {
679
+ const result = sendToWorker(w.port, enrichedMessage, {
680
+ model: args.model,
681
+ timeoutMs: timeout,
682
+ });
683
+ if (result.success) {
684
+ return {
685
+ content: [
686
+ {
687
+ type: 'text',
688
+ text: `📡 **Broadcast race — ${w.agentName} (:${w.port}) a gagné!**\n\n${result.text}`,
689
+ },
690
+ ],
691
+ };
692
+ }
693
+ }
694
+ return {
695
+ content: [{ type: 'text', text: '❌ Tous les workers ont échoué' }],
696
+ isError: true,
697
+ };
698
+ }
699
+ // Send to all in parallel
700
+ const results = targetWorkers.map((w) => {
701
+ const r = sendToWorker(w.port, enrichedMessage, {
702
+ model: args.model,
703
+ timeoutMs: timeout,
704
+ });
705
+ return { agent: `${w.agentName} (:${w.port})`, success: r.success, text: r.text };
706
+ });
707
+ const successCount = results.filter((r) => r.success).length;
708
+ const lines = [`📡 **Broadcast** — ${successCount}/${results.length} succès`, ``];
709
+ for (const r of results) {
710
+ lines.push(`**${r.success ? '✅' : '❌'} ${r.agent}:**`);
711
+ lines.push(r.text.slice(0, 300) + (r.text.length > 300 ? '...' : ''));
712
+ lines.push('');
713
+ }
714
+ return { content: [{ type: 'text', text: lines.join('\n') }] };
715
+ }
716
+ default:
717
+ return {
718
+ content: [
719
+ {
720
+ type: 'text',
721
+ text: `❌ Action inconnue: ${args.action}`,
722
+ },
723
+ ],
724
+ isError: true,
725
+ };
726
+ }
727
+ }
728
+ catch (error) {
729
+ return {
730
+ content: [
731
+ {
732
+ type: 'text',
733
+ text: `❌ Erreur A2A Hub: ${error instanceof Error ? error.message : String(error)}`,
734
+ },
735
+ ],
736
+ isError: true,
737
+ };
738
+ }
739
+ }
740
+ //# sourceMappingURL=a2a_hub.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"a2a_hub.js","sourceRoot":"","sources":["../../src/tools/a2a_hub.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "overmind-mcp",
3
- "version": "3.4.0",
3
+ "version": "3.4.2",
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",