agenthub-multiagent-mcp 1.10.7 → 1.10.8

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/worker.js CHANGED
@@ -207,6 +207,54 @@ function releasePidLock() {
207
207
  catch { /* ignore */ }
208
208
  }
209
209
  // =============================================================================
210
+ // Settings file with capture hook (for session event tracking)
211
+ // =============================================================================
212
+ let captureSettingsFile = null;
213
+ function ensureCaptureSettingsFile() {
214
+ if (captureSettingsFile)
215
+ return captureSettingsFile;
216
+ // Find the rich capture hook from the project or npm package
217
+ const thisDir = path.dirname(fileURLToPath(import.meta.url)).replace(/\\/g, "/");
218
+ const hookCandidates = [
219
+ path.join(thisDir, "..", "..", ".claude", "hooks", "session-capture.sh"), // Project repo
220
+ path.join(thisDir, "..", "session-capture.sh"), // npm package dist/
221
+ ];
222
+ let hookPath = "";
223
+ for (const candidate of hookCandidates) {
224
+ if (fs.existsSync(candidate)) {
225
+ hookPath = candidate.replace(/\\/g, "/");
226
+ break;
227
+ }
228
+ }
229
+ // If hook not found, create a minimal inline version
230
+ if (!hookPath) {
231
+ hookPath = path.join(os.tmpdir(), `agenthub-capture-${process.pid}.sh`).replace(/\\/g, "/");
232
+ fs.writeFileSync(hookPath, `#!/bin/bash
233
+ INPUT=$(cat)
234
+ [ -z "$AGENTHUB_SESSION_ID" ] && exit 0
235
+ [ -z "$AGENTHUB_API_KEY" ] && exit 0
236
+ TOOL=$(echo "$INPUT" | python -c "import sys,json; d=json.load(sys.stdin); print(d.get('tool_name',''))" 2>/dev/null)
237
+ [ -z "$TOOL" ] && exit 0
238
+ curl -s --max-time 2 -X POST -H "Content-Type: application/json" -H "X-API-Key: $AGENTHUB_API_KEY" \\
239
+ -d "{\\"events\\":[{\\"event_type\\":\\"tool_call\\",\\"payload\\":\\"{\\\\\\"tool_name\\\\\\":\\\\\\"$TOOL\\\\\\"}\\",\\"token_count\\":0}]}" \\
240
+ "\${AGENTHUB_URL:-https://agenthub.contetial.com}/api/sessions/$AGENTHUB_SESSION_ID/events" >/dev/null 2>&1 &
241
+ exit 0
242
+ `, { mode: 0o755 });
243
+ }
244
+ // Create settings file pointing to the capture hook
245
+ const settings = {
246
+ hooks: {
247
+ PostToolUse: [{
248
+ matcher: "",
249
+ hooks: [{ type: "command", command: `bash "${hookPath}"`, timeout: 5 }],
250
+ }],
251
+ },
252
+ };
253
+ captureSettingsFile = path.join(os.tmpdir(), `agenthub-worker-settings-${process.pid}.json`);
254
+ fs.writeFileSync(captureSettingsFile, JSON.stringify(settings));
255
+ return captureSettingsFile;
256
+ }
257
+ // =============================================================================
210
258
  // MCP Config files (cached, created once)
211
259
  // =============================================================================
212
260
  let emptyMcpConfigFile = null;
@@ -372,39 +420,55 @@ async function executeDispatch(dispatch) {
372
420
  // Determine project directory
373
421
  const projectDir = dispatch.project_dir || PROJECTS[agentId] || os.tmpdir();
374
422
  // Create session record via API
375
- let sessionId = "";
376
- try {
377
- const resp = await fetch(`${API_URL}/api/sessions`, {
378
- method: "POST",
379
- headers: { "Content-Type": "application/json", "X-API-Key": API_KEY },
380
- body: JSON.stringify({
381
- agent_id: agentId,
382
- title: m.subject || "Auto-response",
383
- dispatch_id: dispatch.dispatch_id,
384
- working_directory: projectDir,
385
- }),
386
- });
387
- if (resp.ok) {
388
- const data = await resp.json();
389
- sessionId = data.id;
423
+ // Use pre-created session ID if provided (from /sessions/start), otherwise create one
424
+ let sessionId = dispatch.session_id || "";
425
+ if (!sessionId) {
426
+ try {
427
+ const resp = await fetch(`${API_URL}/api/sessions`, {
428
+ method: "POST",
429
+ headers: { "Content-Type": "application/json", "X-API-Key": API_KEY },
430
+ body: JSON.stringify({
431
+ agent_id: agentId,
432
+ title: m.subject || "Auto-response",
433
+ dispatch_id: dispatch.dispatch_id,
434
+ working_directory: projectDir,
435
+ }),
436
+ });
437
+ if (resp.ok) {
438
+ const data = await resp.json();
439
+ sessionId = data.id;
440
+ }
390
441
  }
442
+ catch { /* session tracking is best-effort */ }
391
443
  }
392
- catch { /* session tracking is best-effort */ }
393
- // Build prompt
444
+ // Determine mode: session (long-running + channels) vs task vs fast message
445
+ const isSession = dispatch.is_session || false;
394
446
  const isTask = dispatch.is_task;
395
- const prompt = isTask
396
- ? `You are ${agentId}, an autonomous agent on AgentHub.\n\nFrom: ${m.from_agent}\nSubject: ${m.subject}\nType: ${m.type}\nPriority: ${m.priority}\n\nBody:\n${m.body}\n\nUse AgentHub MCP tools to reply with message_id="${m.id}".`
397
- : `You are ${agentId}, an autonomous agent on AgentHub. You answer messages directly and concisely. Output only your answer text, nothing else.\n\n${m.from_agent} asks: ${m.body}`;
447
+ // Build prompt
448
+ let prompt;
449
+ if (isSession) {
450
+ prompt = `You are ${agentId}, an autonomous coding agent on AgentHub. You are starting a coding session.\n\nYou have access to AgentHub tools for messaging other agents. You also receive real-time messages via the AgentHub channel — respond to them using the agenthub_reply tool.\n\nTask:\n${m.body}\n\nWork autonomously. Read the codebase, make changes, run tests, and commit when done. If you need help from another agent, use send_message.`;
451
+ }
452
+ else if (isTask) {
453
+ prompt = `You are ${agentId}, an autonomous agent on AgentHub.\n\nFrom: ${m.from_agent}\nSubject: ${m.subject}\nType: ${m.type}\nPriority: ${m.priority}\n\nBody:\n${m.body}\n\nUse AgentHub MCP tools to reply with message_id="${m.id}".`;
454
+ }
455
+ else {
456
+ prompt = `You are ${agentId}, an autonomous agent on AgentHub. You answer messages directly and concisely. Output only your answer text, nothing else.\n\n${m.from_agent} asks: ${m.body}`;
457
+ }
398
458
  // Write prompt to temp file
399
459
  const promptFile = path.join(os.tmpdir(), `agenthub-worker-prompt-${Date.now()}.txt`).replace(/\\/g, "/");
400
460
  fs.writeFileSync(promptFile, prompt);
401
- const mcpConfig = isTask
461
+ // Sessions and tasks get AgentHub MCP tools; fast messages get empty config
462
+ const mcpConfig = (isSession || isTask)
402
463
  ? createMcpConfigForAgent(agentId).replace(/\\/g, "/")
403
464
  : ensureEmptyMcpConfigFile().replace(/\\/g, "/");
404
- const maxTurns = isTask ? "30" : "3";
465
+ const maxTurns = dispatch.max_turns
466
+ ? String(dispatch.max_turns)
467
+ : isSession ? "50" : isTask ? "30" : "3";
405
468
  const thisDir = path.dirname(fileURLToPath(import.meta.url)).replace(/\\/g, "/");
406
469
  const wrapperScript = path.join(thisDir, "..", "run-claude.sh").replace(/\\/g, "/");
407
- log(`${isTask ? "🚀" : "⚡"} Executing for ${agentId} (slots: ${activeSlots}/${SLOTS})`);
470
+ const mode = isSession ? "📡 session" : isTask ? "🚀 task" : "⚡ fast";
471
+ log(`${mode} for ${agentId} (slots: ${activeSlots}/${SLOTS}, turns: ${maxTurns})`);
408
472
  // Clean env
409
473
  const cleanEnv = {};
410
474
  for (const [k, v] of Object.entries(process.env)) {
@@ -417,7 +481,38 @@ async function executeDispatch(dispatch) {
417
481
  if (sessionId) {
418
482
  cleanEnv.AGENTHUB_SESSION_ID = sessionId;
419
483
  }
420
- const child = spawn("bash", [wrapperScript, promptFile, mcpConfig, maxTurns], {
484
+ // Create settings file with capture hook for session tracking
485
+ const settingsFile = sessionId ? ensureCaptureSettingsFile().replace(/\\/g, "/") : "";
486
+ // For session mode, create channel MCP config so the session can receive real-time messages
487
+ let channelsArg = "";
488
+ if (isSession) {
489
+ const channelMcpFile = path.join(os.tmpdir(), `agenthub-channel-mcp-${agentId}-${Date.now()}.json`).replace(/\\/g, "/");
490
+ const thisDir2 = path.dirname(fileURLToPath(import.meta.url)).replace(/\\/g, "/");
491
+ const channelJs = path.join(thisDir2, "channel.js").replace(/\\/g, "/");
492
+ const channelConfig = {
493
+ mcpServers: {
494
+ "agenthub-channel": {
495
+ command: "node",
496
+ args: [channelJs],
497
+ env: {
498
+ AGENTHUB_URL: API_URL,
499
+ AGENTHUB_API_KEY: API_KEY,
500
+ AGENTHUB_AGENT_ID: agentId,
501
+ },
502
+ },
503
+ },
504
+ };
505
+ fs.writeFileSync(channelMcpFile, JSON.stringify(channelConfig));
506
+ // Merge channel MCP with existing MCP config
507
+ try {
508
+ const existingMcp = JSON.parse(fs.readFileSync(mcpConfig, "utf-8"));
509
+ existingMcp.mcpServers["agenthub-channel"] = channelConfig.mcpServers["agenthub-channel"];
510
+ fs.writeFileSync(mcpConfig, JSON.stringify(existingMcp, null, 2));
511
+ }
512
+ catch { /* keep original */ }
513
+ channelsArg = "server:agenthub-channel";
514
+ }
515
+ const child = spawn("bash", [wrapperScript, promptFile, mcpConfig, maxTurns, settingsFile, channelsArg], {
421
516
  cwd: projectDir,
422
517
  env: cleanEnv,
423
518
  stdio: ["ignore", "pipe", "pipe"],
@@ -1 +1 @@
1
- {"version":3,"file":"worker.js","sourceRoot":"","sources":["../src/worker.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"worker.js","sourceRoot":"","sources":["../src/worker.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.7",
3
+ "version": "1.10.8",
4
4
  "description": "MCP server for AgentHub multi-agent communication",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
package/run-claude.sh CHANGED
@@ -1,10 +1,12 @@
1
1
  #!/bin/bash
2
2
  # Wrapper script for daemon/worker to invoke claude -p with prompt from file
3
- # Usage: run-claude.sh <prompt-file> <mcp-config-file> <max-turns>
3
+ # Usage: run-claude.sh <prompt-file> <mcp-config-file> <max-turns> [settings-file] [channels]
4
4
 
5
5
  PROMPT_FILE="$1"
6
6
  MCP_CONFIG="$2"
7
7
  MAX_TURNS="${3:-3}"
8
+ SETTINGS_FILE="$4"
9
+ CHANNELS="$5"
8
10
 
9
11
  if [ ! -f "$PROMPT_FILE" ]; then
10
12
  echo "Error: prompt file not found: $PROMPT_FILE" >&2
@@ -13,13 +15,22 @@ fi
13
15
 
14
16
  PROMPT="$(cat "$PROMPT_FILE")"
15
17
 
18
+ # Build optional flags
19
+ EXTRA_FLAGS=""
20
+ if [ -n "$SETTINGS_FILE" ] && [ -f "$SETTINGS_FILE" ]; then
21
+ EXTRA_FLAGS="$EXTRA_FLAGS --settings $SETTINGS_FILE"
22
+ fi
23
+ if [ -n "$CHANNELS" ]; then
24
+ EXTRA_FLAGS="$EXTRA_FLAGS --dangerously-load-development-channels $CHANNELS"
25
+ fi
26
+
16
27
  # Run claude, filter out "Reached max turns" error from stdout
17
28
  OUTPUT=$(claude -p "$PROMPT" \
18
29
  --dangerously-skip-permissions \
19
30
  --max-turns "$MAX_TURNS" \
20
31
  --output-format text \
21
32
  --mcp-config "$MCP_CONFIG" \
22
- --strict-mcp-config 2>/dev/null)
33
+ $EXTRA_FLAGS 2>/dev/null)
23
34
 
24
35
  # Strip "Error: Reached max turns" line if present
25
36
  echo "$OUTPUT" | grep -v "^Error: Reached max turns"
@@ -0,0 +1,192 @@
1
+ #!/bin/bash
2
+ # AgentHub Rich Session Capture Hook
3
+ #
4
+ # Captures full tool_input + tool_response from PostToolUse hook,
5
+ # plus assistant/user messages from the transcript file.
6
+ # Posts structured events to /api/sessions/{id}/events.
7
+
8
+ INPUT=$(cat)
9
+
10
+ # Skip if no session tracking
11
+ SESSION_ID="${AGENTHUB_SESSION_ID:-}"
12
+ API_KEY="${AGENTHUB_API_KEY:-}"
13
+ API_URL="${AGENTHUB_URL:-https://agenthub.contetial.com}"
14
+ [ -z "$SESSION_ID" ] || [ -z "$API_KEY" ] && exit 0
15
+
16
+ # Use python to parse JSON and build rich event payload
17
+ EVENTS_JSON=$(echo "$INPUT" | python -c "
18
+ import sys, json, os, re
19
+
20
+ TRUNC = 2000 # 2KB max per field
21
+ TRUNC_SHORT = 500
22
+
23
+ # Secret patterns to redact
24
+ SECRET_RE = re.compile(r'(api[_-]?key|token|password|secret|authorization|credential)[=:\s]*[^\s,}\"]{8,}', re.IGNORECASE)
25
+
26
+ def redact(s):
27
+ if not s: return s
28
+ return SECRET_RE.sub(lambda m: m.group().split('=')[0] + '=[REDACTED]' if '=' in m.group() else m.group().split(':')[0] + ':[REDACTED]', str(s))
29
+
30
+ def trunc(s, limit=TRUNC):
31
+ s = str(s) if s else ''
32
+ return s[:limit] + '...' if len(s) > limit else s
33
+
34
+ try:
35
+ data = json.load(sys.stdin)
36
+ except:
37
+ sys.exit(0)
38
+
39
+ tool_name = data.get('tool_name', '')
40
+ tool_input = data.get('tool_input', {})
41
+ tool_response = data.get('tool_response', {})
42
+ transcript_path = data.get('transcript_path', '')
43
+ session_id = data.get('session_id', '')
44
+
45
+ if not tool_name:
46
+ sys.exit(0)
47
+
48
+ events = []
49
+
50
+ # --- Read transcript for new assistant/user messages ---
51
+ offset_file = '/tmp/agenthub-transcript-offset-' + os.environ.get('AGENTHUB_SESSION_ID', 'none')
52
+ last_offset = 0
53
+ try:
54
+ with open(offset_file, 'r') as f:
55
+ last_offset = int(f.read().strip())
56
+ except:
57
+ pass
58
+
59
+ if transcript_path and os.path.exists(transcript_path):
60
+ try:
61
+ with open(transcript_path, 'r') as f:
62
+ f.seek(last_offset)
63
+ new_lines = f.readlines()
64
+ new_offset = f.tell()
65
+
66
+ for line in new_lines:
67
+ line = line.strip()
68
+ if not line:
69
+ continue
70
+ try:
71
+ entry = json.loads(line)
72
+ entry_type = entry.get('type', '')
73
+
74
+ # Skip non-message entries (progress, queue-operation, etc.)
75
+ if entry_type not in ('user', 'assistant'):
76
+ continue
77
+
78
+ # Content is nested: entry.message.role and entry.message.content
79
+ msg = entry.get('message', {})
80
+ role = msg.get('role', entry_type)
81
+ raw_content = msg.get('content', entry.get('content', ''))
82
+ content = ''
83
+
84
+ # Extract text content from various formats
85
+ if isinstance(raw_content, str):
86
+ content = raw_content
87
+ elif isinstance(raw_content, list):
88
+ parts = []
89
+ for block in raw_content:
90
+ if isinstance(block, dict) and block.get('type') == 'text':
91
+ parts.append(block.get('text', ''))
92
+ content = '\n'.join(parts)
93
+
94
+ if not content or len(content.strip()) < 2:
95
+ continue
96
+
97
+ if role == 'assistant':
98
+ events.append({
99
+ 'event_type': 'assistant_message',
100
+ 'payload': json.dumps({'content': redact(trunc(content))}),
101
+ 'token_count': 0
102
+ })
103
+ elif role == 'user':
104
+ events.append({
105
+ 'event_type': 'user_message',
106
+ 'payload': json.dumps({'content': redact(trunc(content)), 'source': 'prompt'}),
107
+ 'token_count': 0
108
+ })
109
+ except:
110
+ continue
111
+
112
+ # Save offset
113
+ with open(offset_file, 'w') as f:
114
+ f.write(str(new_offset))
115
+ except:
116
+ pass
117
+
118
+ # --- Build tool-specific event ---
119
+ tn = tool_name.lower()
120
+ ti = tool_input if isinstance(tool_input, dict) else {}
121
+ tr = tool_response if isinstance(tool_response, dict) else {}
122
+
123
+ if tn == 'bash':
124
+ payload = {
125
+ 'tool_name': 'Bash',
126
+ 'command': redact(trunc(ti.get('command', ''), TRUNC_SHORT)),
127
+ 'exit_code': tr.get('exit_code', tr.get('exitCode')),
128
+ 'stdout': redact(trunc(tr.get('stdout', tr.get('output', str(tr)[:TRUNC])))),
129
+ }
130
+ events.append({'event_type': 'command_exec', 'payload': json.dumps(payload), 'token_count': 0})
131
+
132
+ elif tn == 'read':
133
+ payload = {
134
+ 'tool_name': 'Read',
135
+ 'file_path': ti.get('file_path', ''),
136
+ 'lines_read': ti.get('limit', 0),
137
+ 'content_preview': redact(trunc(str(tr)[:TRUNC_SHORT], TRUNC_SHORT)),
138
+ }
139
+ events.append({'event_type': 'file_read', 'payload': json.dumps(payload), 'token_count': 0})
140
+
141
+ elif tn == 'edit':
142
+ payload = {
143
+ 'tool_name': 'Edit',
144
+ 'file_path': ti.get('file_path', ''),
145
+ 'old_string': redact(trunc(ti.get('old_string', ''), TRUNC_SHORT)),
146
+ 'new_string': redact(trunc(ti.get('new_string', ''), TRUNC_SHORT)),
147
+ }
148
+ events.append({'event_type': 'file_edit', 'payload': json.dumps(payload), 'token_count': 0})
149
+
150
+ elif tn == 'write':
151
+ content = ti.get('content', '')
152
+ payload = {
153
+ 'tool_name': 'Write',
154
+ 'file_path': ti.get('file_path', ''),
155
+ 'content_preview': redact(trunc(content, TRUNC_SHORT)),
156
+ }
157
+ events.append({'event_type': 'file_write', 'payload': json.dumps(payload), 'token_count': 0})
158
+
159
+ elif tn in ('glob', 'grep'):
160
+ payload = {
161
+ 'tool_name': tool_name,
162
+ 'pattern': ti.get('pattern', ''),
163
+ 'path': ti.get('path', ''),
164
+ 'result_summary': redact(trunc(str(tr), TRUNC_SHORT)),
165
+ }
166
+ events.append({'event_type': 'tool_call', 'payload': json.dumps(payload), 'token_count': 0})
167
+
168
+ else:
169
+ # Generic tool call
170
+ payload = {
171
+ 'tool_name': tool_name,
172
+ 'input_summary': redact(trunc(json.dumps(ti), TRUNC_SHORT)),
173
+ 'result_summary': redact(trunc(str(tr), TRUNC_SHORT)),
174
+ }
175
+ events.append({'event_type': 'tool_call', 'payload': json.dumps(payload), 'token_count': 0})
176
+
177
+ # Output JSON for curl
178
+ if events:
179
+ print(json.dumps({'events': events}))
180
+ " 2>/dev/null)
181
+
182
+ # POST events if any
183
+ if [ -n "$EVENTS_JSON" ] && [ "$EVENTS_JSON" != "null" ]; then
184
+ curl -s --max-time 3 \
185
+ -X POST \
186
+ -H "Content-Type: application/json" \
187
+ -H "X-API-Key: $API_KEY" \
188
+ -d "$EVENTS_JSON" \
189
+ "${API_URL}/api/sessions/${SESSION_ID}/events" > /dev/null 2>&1 &
190
+ fi
191
+
192
+ exit 0
package/src/worker.ts CHANGED
@@ -75,6 +75,9 @@ interface DispatchMsg {
75
75
  };
76
76
  project_dir?: string;
77
77
  is_task: boolean;
78
+ is_session?: boolean; // Long-running session with channels enabled
79
+ max_turns?: number; // Override max turns (default 3 for messages, 50 for sessions)
80
+ session_id?: string; // Pre-created session ID from server
78
81
  }
79
82
 
80
83
  /** Server → Worker: ping */
@@ -274,6 +277,61 @@ function releasePidLock(): void {
274
277
  } catch { /* ignore */ }
275
278
  }
276
279
 
280
+ // =============================================================================
281
+ // Settings file with capture hook (for session event tracking)
282
+ // =============================================================================
283
+
284
+ let captureSettingsFile: string | null = null;
285
+
286
+ function ensureCaptureSettingsFile(): string {
287
+ if (captureSettingsFile) return captureSettingsFile;
288
+
289
+ // Find the rich capture hook from the project or npm package
290
+ const thisDir = path.dirname(fileURLToPath(import.meta.url)).replace(/\\/g, "/");
291
+ const hookCandidates = [
292
+ path.join(thisDir, "..", "..", ".claude", "hooks", "session-capture.sh"), // Project repo
293
+ path.join(thisDir, "..", "session-capture.sh"), // npm package dist/
294
+ ];
295
+
296
+ let hookPath = "";
297
+ for (const candidate of hookCandidates) {
298
+ if (fs.existsSync(candidate)) {
299
+ hookPath = candidate.replace(/\\/g, "/");
300
+ break;
301
+ }
302
+ }
303
+
304
+ // If hook not found, create a minimal inline version
305
+ if (!hookPath) {
306
+ hookPath = path.join(os.tmpdir(), `agenthub-capture-${process.pid}.sh`).replace(/\\/g, "/");
307
+ fs.writeFileSync(hookPath, `#!/bin/bash
308
+ INPUT=$(cat)
309
+ [ -z "$AGENTHUB_SESSION_ID" ] && exit 0
310
+ [ -z "$AGENTHUB_API_KEY" ] && exit 0
311
+ TOOL=$(echo "$INPUT" | python -c "import sys,json; d=json.load(sys.stdin); print(d.get('tool_name',''))" 2>/dev/null)
312
+ [ -z "$TOOL" ] && exit 0
313
+ curl -s --max-time 2 -X POST -H "Content-Type: application/json" -H "X-API-Key: $AGENTHUB_API_KEY" \\
314
+ -d "{\\"events\\":[{\\"event_type\\":\\"tool_call\\",\\"payload\\":\\"{\\\\\\"tool_name\\\\\\":\\\\\\"$TOOL\\\\\\"}\\",\\"token_count\\":0}]}" \\
315
+ "\${AGENTHUB_URL:-https://agenthub.contetial.com}/api/sessions/$AGENTHUB_SESSION_ID/events" >/dev/null 2>&1 &
316
+ exit 0
317
+ `, { mode: 0o755 });
318
+ }
319
+
320
+ // Create settings file pointing to the capture hook
321
+ const settings = {
322
+ hooks: {
323
+ PostToolUse: [{
324
+ matcher: "",
325
+ hooks: [{ type: "command", command: `bash "${hookPath}"`, timeout: 5 }],
326
+ }],
327
+ },
328
+ };
329
+
330
+ captureSettingsFile = path.join(os.tmpdir(), `agenthub-worker-settings-${process.pid}.json`);
331
+ fs.writeFileSync(captureSettingsFile, JSON.stringify(settings));
332
+ return captureSettingsFile;
333
+ }
334
+
277
335
  // =============================================================================
278
336
  // MCP Config files (cached, created once)
279
337
  // =============================================================================
@@ -466,43 +524,58 @@ async function executeDispatch(dispatch: DispatchMsg): Promise<void> {
466
524
  const projectDir = dispatch.project_dir || PROJECTS[agentId] || os.tmpdir();
467
525
 
468
526
  // Create session record via API
469
- let sessionId = "";
470
- try {
471
- const resp = await fetch(`${API_URL}/api/sessions`, {
472
- method: "POST",
473
- headers: { "Content-Type": "application/json", "X-API-Key": API_KEY },
474
- body: JSON.stringify({
475
- agent_id: agentId,
476
- title: m.subject || "Auto-response",
477
- dispatch_id: dispatch.dispatch_id,
478
- working_directory: projectDir,
479
- }),
480
- });
481
- if (resp.ok) {
482
- const data = await resp.json() as { id: string };
483
- sessionId = data.id;
484
- }
485
- } catch { /* session tracking is best-effort */ }
527
+ // Use pre-created session ID if provided (from /sessions/start), otherwise create one
528
+ let sessionId = dispatch.session_id || "";
529
+ if (!sessionId) {
530
+ try {
531
+ const resp = await fetch(`${API_URL}/api/sessions`, {
532
+ method: "POST",
533
+ headers: { "Content-Type": "application/json", "X-API-Key": API_KEY },
534
+ body: JSON.stringify({
535
+ agent_id: agentId,
536
+ title: m.subject || "Auto-response",
537
+ dispatch_id: dispatch.dispatch_id,
538
+ working_directory: projectDir,
539
+ }),
540
+ });
541
+ if (resp.ok) {
542
+ const data = await resp.json() as { id: string };
543
+ sessionId = data.id;
544
+ }
545
+ } catch { /* session tracking is best-effort */ }
546
+ }
486
547
 
487
- // Build prompt
548
+ // Determine mode: session (long-running + channels) vs task vs fast message
549
+ const isSession = dispatch.is_session || false;
488
550
  const isTask = dispatch.is_task;
489
- const prompt = isTask
490
- ? `You are ${agentId}, an autonomous agent on AgentHub.\n\nFrom: ${m.from_agent}\nSubject: ${m.subject}\nType: ${m.type}\nPriority: ${m.priority}\n\nBody:\n${m.body}\n\nUse AgentHub MCP tools to reply with message_id="${m.id}".`
491
- : `You are ${agentId}, an autonomous agent on AgentHub. You answer messages directly and concisely. Output only your answer text, nothing else.\n\n${m.from_agent} asks: ${m.body}`;
551
+
552
+ // Build prompt
553
+ let prompt: string;
554
+ if (isSession) {
555
+ prompt = `You are ${agentId}, an autonomous coding agent on AgentHub. You are starting a coding session.\n\nYou have access to AgentHub tools for messaging other agents. You also receive real-time messages via the AgentHub channel — respond to them using the agenthub_reply tool.\n\nTask:\n${m.body}\n\nWork autonomously. Read the codebase, make changes, run tests, and commit when done. If you need help from another agent, use send_message.`;
556
+ } else if (isTask) {
557
+ prompt = `You are ${agentId}, an autonomous agent on AgentHub.\n\nFrom: ${m.from_agent}\nSubject: ${m.subject}\nType: ${m.type}\nPriority: ${m.priority}\n\nBody:\n${m.body}\n\nUse AgentHub MCP tools to reply with message_id="${m.id}".`;
558
+ } else {
559
+ prompt = `You are ${agentId}, an autonomous agent on AgentHub. You answer messages directly and concisely. Output only your answer text, nothing else.\n\n${m.from_agent} asks: ${m.body}`;
560
+ }
492
561
 
493
562
  // Write prompt to temp file
494
563
  const promptFile = path.join(os.tmpdir(), `agenthub-worker-prompt-${Date.now()}.txt`).replace(/\\/g, "/");
495
564
  fs.writeFileSync(promptFile, prompt);
496
565
 
497
- const mcpConfig = isTask
566
+ // Sessions and tasks get AgentHub MCP tools; fast messages get empty config
567
+ const mcpConfig = (isSession || isTask)
498
568
  ? createMcpConfigForAgent(agentId).replace(/\\/g, "/")
499
569
  : ensureEmptyMcpConfigFile().replace(/\\/g, "/");
500
- const maxTurns = isTask ? "30" : "3";
570
+ const maxTurns = dispatch.max_turns
571
+ ? String(dispatch.max_turns)
572
+ : isSession ? "50" : isTask ? "30" : "3";
501
573
 
502
574
  const thisDir = path.dirname(fileURLToPath(import.meta.url)).replace(/\\/g, "/");
503
575
  const wrapperScript = path.join(thisDir, "..", "run-claude.sh").replace(/\\/g, "/");
504
576
 
505
- log(`${isTask ? "🚀" : "⚡"} Executing for ${agentId} (slots: ${activeSlots}/${SLOTS})`);
577
+ const mode = isSession ? "📡 session" : isTask ? "🚀 task" : "⚡ fast";
578
+ log(`${mode} for ${agentId} (slots: ${activeSlots}/${SLOTS}, turns: ${maxTurns})`);
506
579
 
507
580
  // Clean env
508
581
  const cleanEnv: Record<string, string> = {};
@@ -517,7 +590,39 @@ async function executeDispatch(dispatch: DispatchMsg): Promise<void> {
517
590
  cleanEnv.AGENTHUB_SESSION_ID = sessionId;
518
591
  }
519
592
 
520
- const child = spawn("bash", [wrapperScript, promptFile, mcpConfig, maxTurns], {
593
+ // Create settings file with capture hook for session tracking
594
+ const settingsFile = sessionId ? ensureCaptureSettingsFile().replace(/\\/g, "/") : "";
595
+
596
+ // For session mode, create channel MCP config so the session can receive real-time messages
597
+ let channelsArg = "";
598
+ if (isSession) {
599
+ const channelMcpFile = path.join(os.tmpdir(), `agenthub-channel-mcp-${agentId}-${Date.now()}.json`).replace(/\\/g, "/");
600
+ const thisDir2 = path.dirname(fileURLToPath(import.meta.url)).replace(/\\/g, "/");
601
+ const channelJs = path.join(thisDir2, "channel.js").replace(/\\/g, "/");
602
+ const channelConfig = {
603
+ mcpServers: {
604
+ "agenthub-channel": {
605
+ command: "node",
606
+ args: [channelJs],
607
+ env: {
608
+ AGENTHUB_URL: API_URL,
609
+ AGENTHUB_API_KEY: API_KEY,
610
+ AGENTHUB_AGENT_ID: agentId,
611
+ },
612
+ },
613
+ },
614
+ };
615
+ fs.writeFileSync(channelMcpFile, JSON.stringify(channelConfig));
616
+ // Merge channel MCP with existing MCP config
617
+ try {
618
+ const existingMcp = JSON.parse(fs.readFileSync(mcpConfig, "utf-8"));
619
+ existingMcp.mcpServers["agenthub-channel"] = channelConfig.mcpServers["agenthub-channel"];
620
+ fs.writeFileSync(mcpConfig, JSON.stringify(existingMcp, null, 2));
621
+ } catch { /* keep original */ }
622
+ channelsArg = "server:agenthub-channel";
623
+ }
624
+
625
+ const child = spawn("bash", [wrapperScript, promptFile, mcpConfig, maxTurns, settingsFile, channelsArg], {
521
626
  cwd: projectDir,
522
627
  env: cleanEnv,
523
628
  stdio: ["ignore", "pipe", "pipe"],