agenthub-multiagent-mcp 1.10.0 → 1.10.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.
package/dist/daemon.js CHANGED
@@ -118,21 +118,21 @@ function handleWSMessage(msg) {
118
118
  // Acknowledge receipt
119
119
  ws?.send(JSON.stringify({ type: "ack", message_id: m.id, timestamp: new Date().toISOString() }));
120
120
  // Process with Claude
121
- processWithClaude(`You received a message on AgentHub.\n\nFrom: ${m.from_agent}\nSubject: ${m.subject}\nType: ${m.type}\nPriority: ${m.priority}\n\nBody:\n${m.body}\n\nPlease review and respond using the reply tool with message_id="${m.id}".`, m.id);
121
+ processWithClaude(`You received a message on AgentHub.\n\nFrom: ${m.from_agent}\nSubject: ${m.subject}\nType: ${m.type}\nPriority: ${m.priority}\n\nBody:\n${m.body}\n\nPlease review and respond using the reply tool with message_id="${m.id}".`, m.id, m.from_agent);
122
122
  return;
123
123
  }
124
124
  // Handle incoming task
125
125
  if (msg.type === "task" && msg.task) {
126
126
  const t = msg.task;
127
127
  log(`Task from ${t.assigned_by}: ${t.task}`);
128
- processWithClaude(`You have been assigned a new task on AgentHub.\n\nTask: ${t.task}\nAssigned by: ${t.assigned_by}\nPriority: ${t.priority}\nTask ID: ${t.id}\n\nPlease accept this task using accept_task with task_id="${t.id}", then start working on it.`, undefined);
128
+ processWithClaude(`You have been assigned a new task on AgentHub.\n\nTask: ${t.task}\nAssigned by: ${t.assigned_by}\nPriority: ${t.priority}\nTask ID: ${t.id}\n\nPlease accept this task using accept_task with task_id="${t.id}", then start working on it.`, undefined, t.assigned_by);
129
129
  return;
130
130
  }
131
131
  }
132
132
  /**
133
133
  * Spawn Claude Code CLI to process a message
134
134
  */
135
- function processWithClaude(prompt, messageId) {
135
+ function processWithClaude(prompt, messageId, fromAgent) {
136
136
  if (activeProcesses >= MAX_CONCURRENT) {
137
137
  log(`Skipping — already processing ${activeProcesses} message(s) (max: ${MAX_CONCURRENT})`);
138
138
  // Still mark as read if possible
@@ -143,9 +143,9 @@ function processWithClaude(prompt, messageId) {
143
143
  activeProcesses++;
144
144
  log(`Spawning Claude Code (active: ${activeProcesses}/${MAX_CONCURRENT})...`);
145
145
  const child = spawn(CLAUDE_CMD, [
146
- "--print",
146
+ "-p",
147
+ prompt,
147
148
  "--dangerously-skip-permissions",
148
- "--message", prompt,
149
149
  ], {
150
150
  cwd: PROJECT_DIR,
151
151
  env: {
@@ -153,7 +153,8 @@ function processWithClaude(prompt, messageId) {
153
153
  AGENTHUB_AGENT_ID: AGENT_ID,
154
154
  },
155
155
  stdio: ["pipe", "pipe", "pipe"],
156
- timeout: 300_000, // 5 minute timeout
156
+ timeout: 600_000, // 10 minute timeout
157
+ shell: true, // Required on Windows where claude is a shell script wrapper
157
158
  });
158
159
  let stdout = "";
159
160
  let stderr = "";
@@ -165,17 +166,22 @@ function processWithClaude(prompt, messageId) {
165
166
  });
166
167
  child.on("close", (code) => {
167
168
  activeProcesses--;
168
- if (code === 0) {
169
- log(`Claude completed successfully (output: ${stdout.length} chars)`);
170
- // If this was a message, send a reply with Claude's response
171
- if (messageId && stdout.trim()) {
172
- sendReply(messageId, stdout.trim());
173
- }
169
+ const status = code === 0 ? "completed" : code === null ? "timed out" : `failed (code ${code})`;
170
+ log(`Claude ${status} stdout: ${stdout.length} chars, stderr: ${stderr.length} chars`);
171
+ if (stderr && code !== 0) {
172
+ logError(`stderr: ${stderr.slice(0, 1000)}`);
174
173
  }
175
- else {
176
- logError(`Claude exited with code ${code}`);
177
- if (stderr)
178
- logError(`stderr: ${stderr.slice(0, 500)}`);
174
+ // Send reply with whatever output we got
175
+ if (messageId) {
176
+ if (stdout.trim()) {
177
+ sendReply(messageId, fromAgent, stdout.trim());
178
+ }
179
+ else if (code === null) {
180
+ sendReply(messageId, fromAgent, "(Auto-response timed out. The agent received your message but couldn't generate a response in time.)");
181
+ }
182
+ else if (code !== 0) {
183
+ sendReply(messageId, fromAgent, `(Auto-response failed with exit code ${code})`);
184
+ }
179
185
  }
180
186
  });
181
187
  child.on("error", (err) => {
@@ -186,28 +192,31 @@ function processWithClaude(prompt, messageId) {
186
192
  /**
187
193
  * Send a reply back to AgentHub
188
194
  */
189
- async function sendReply(messageId, body) {
195
+ async function sendReply(messageId, toAgent, body) {
190
196
  try {
197
+ const payload = {
198
+ from_agent: AGENT_ID,
199
+ to_agent: toAgent,
200
+ type: "response",
201
+ subject: "Re: (auto-response via daemon)",
202
+ body: body.slice(0, 5000),
203
+ reply_to: messageId,
204
+ };
205
+ log(`Sending reply to ${toAgent} (${body.length} chars)...`);
191
206
  const response = await fetch(`${API_URL}/api/messages`, {
192
207
  method: "POST",
193
208
  headers: {
194
209
  "Content-Type": "application/json",
195
210
  "X-API-Key": API_KEY,
196
211
  },
197
- body: JSON.stringify({
198
- from_agent: AGENT_ID,
199
- to_agent: "", // Will be resolved from reply_to
200
- type: "response",
201
- subject: "Re: (auto-response)",
202
- body: body.slice(0, 5000), // Limit response length
203
- reply_to: messageId,
204
- }),
212
+ body: JSON.stringify(payload),
205
213
  });
206
214
  if (response.ok) {
207
215
  log(`Reply sent for message ${messageId}`);
208
216
  }
209
217
  else {
210
- logError(`Reply failed: HTTP ${response.status}`);
218
+ const text = await response.text();
219
+ logError(`Reply failed: HTTP ${response.status} — ${text}`);
211
220
  }
212
221
  }
213
222
  catch (err) {
@@ -1 +1 @@
1
- {"version":3,"file":"daemon.js","sourceRoot":"","sources":["../src/daemon.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"daemon.js","sourceRoot":"","sources":["../src/daemon.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "agenthub-multiagent-mcp",
3
- "version": "1.10.0",
3
+ "version": "1.10.2",
4
4
  "description": "MCP server for AgentHub multi-agent communication",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
package/src/daemon.ts CHANGED
@@ -153,7 +153,8 @@ function handleWSMessage(msg: {
153
153
  // Process with Claude
154
154
  processWithClaude(
155
155
  `You received a message on AgentHub.\n\nFrom: ${m.from_agent}\nSubject: ${m.subject}\nType: ${m.type}\nPriority: ${m.priority}\n\nBody:\n${m.body}\n\nPlease review and respond using the reply tool with message_id="${m.id}".`,
156
- m.id
156
+ m.id,
157
+ m.from_agent
157
158
  );
158
159
  return;
159
160
  }
@@ -165,7 +166,8 @@ function handleWSMessage(msg: {
165
166
 
166
167
  processWithClaude(
167
168
  `You have been assigned a new task on AgentHub.\n\nTask: ${t.task}\nAssigned by: ${t.assigned_by}\nPriority: ${t.priority}\nTask ID: ${t.id}\n\nPlease accept this task using accept_task with task_id="${t.id}", then start working on it.`,
168
- undefined
169
+ undefined,
170
+ t.assigned_by
169
171
  );
170
172
  return;
171
173
  }
@@ -174,7 +176,7 @@ function handleWSMessage(msg: {
174
176
  /**
175
177
  * Spawn Claude Code CLI to process a message
176
178
  */
177
- function processWithClaude(prompt: string, messageId: string | undefined): void {
179
+ function processWithClaude(prompt: string, messageId: string | undefined, fromAgent: string): void {
178
180
  if (activeProcesses >= MAX_CONCURRENT) {
179
181
  log(`Skipping — already processing ${activeProcesses} message(s) (max: ${MAX_CONCURRENT})`);
180
182
  // Still mark as read if possible
@@ -186,9 +188,9 @@ function processWithClaude(prompt: string, messageId: string | undefined): void
186
188
  log(`Spawning Claude Code (active: ${activeProcesses}/${MAX_CONCURRENT})...`);
187
189
 
188
190
  const child = spawn(CLAUDE_CMD, [
189
- "--print",
191
+ "-p",
192
+ prompt,
190
193
  "--dangerously-skip-permissions",
191
- "--message", prompt,
192
194
  ], {
193
195
  cwd: PROJECT_DIR,
194
196
  env: {
@@ -196,7 +198,8 @@ function processWithClaude(prompt: string, messageId: string | undefined): void
196
198
  AGENTHUB_AGENT_ID: AGENT_ID,
197
199
  },
198
200
  stdio: ["pipe", "pipe", "pipe"],
199
- timeout: 300_000, // 5 minute timeout
201
+ timeout: 600_000, // 10 minute timeout
202
+ shell: true, // Required on Windows where claude is a shell script wrapper
200
203
  });
201
204
 
202
205
  let stdout = "";
@@ -213,16 +216,22 @@ function processWithClaude(prompt: string, messageId: string | undefined): void
213
216
  child.on("close", (code: number | null) => {
214
217
  activeProcesses--;
215
218
 
216
- if (code === 0) {
217
- log(`Claude completed successfully (output: ${stdout.length} chars)`);
219
+ const status = code === 0 ? "completed" : code === null ? "timed out" : `failed (code ${code})`;
220
+ log(`Claude ${status} stdout: ${stdout.length} chars, stderr: ${stderr.length} chars`);
218
221
 
219
- // If this was a message, send a reply with Claude's response
220
- if (messageId && stdout.trim()) {
221
- sendReply(messageId, stdout.trim());
222
+ if (stderr && code !== 0) {
223
+ logError(`stderr: ${stderr.slice(0, 1000)}`);
224
+ }
225
+
226
+ // Send reply with whatever output we got
227
+ if (messageId) {
228
+ if (stdout.trim()) {
229
+ sendReply(messageId, fromAgent, stdout.trim());
230
+ } else if (code === null) {
231
+ sendReply(messageId, fromAgent, "(Auto-response timed out. The agent received your message but couldn't generate a response in time.)");
232
+ } else if (code !== 0) {
233
+ sendReply(messageId, fromAgent, `(Auto-response failed with exit code ${code})`);
222
234
  }
223
- } else {
224
- logError(`Claude exited with code ${code}`);
225
- if (stderr) logError(`stderr: ${stderr.slice(0, 500)}`);
226
235
  }
227
236
  });
228
237
 
@@ -235,28 +244,32 @@ function processWithClaude(prompt: string, messageId: string | undefined): void
235
244
  /**
236
245
  * Send a reply back to AgentHub
237
246
  */
238
- async function sendReply(messageId: string, body: string): Promise<void> {
247
+ async function sendReply(messageId: string, toAgent: string, body: string): Promise<void> {
239
248
  try {
249
+ const payload = {
250
+ from_agent: AGENT_ID,
251
+ to_agent: toAgent,
252
+ type: "response",
253
+ subject: "Re: (auto-response via daemon)",
254
+ body: body.slice(0, 5000),
255
+ reply_to: messageId,
256
+ };
257
+ log(`Sending reply to ${toAgent} (${body.length} chars)...`);
258
+
240
259
  const response = await fetch(`${API_URL}/api/messages`, {
241
260
  method: "POST",
242
261
  headers: {
243
262
  "Content-Type": "application/json",
244
263
  "X-API-Key": API_KEY,
245
264
  },
246
- body: JSON.stringify({
247
- from_agent: AGENT_ID,
248
- to_agent: "", // Will be resolved from reply_to
249
- type: "response",
250
- subject: "Re: (auto-response)",
251
- body: body.slice(0, 5000), // Limit response length
252
- reply_to: messageId,
253
- }),
265
+ body: JSON.stringify(payload),
254
266
  });
255
267
 
256
268
  if (response.ok) {
257
269
  log(`Reply sent for message ${messageId}`);
258
270
  } else {
259
- logError(`Reply failed: HTTP ${response.status}`);
271
+ const text = await response.text();
272
+ logError(`Reply failed: HTTP ${response.status} — ${text}`);
260
273
  }
261
274
  } catch (err) {
262
275
  logError(`Reply failed:`, err);