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 +119 -24
- package/dist/worker.js.map +1 -1
- package/package.json +1 -1
- package/run-claude.sh +13 -2
- package/session-capture.sh +192 -0
- package/src/worker.ts +130 -25
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
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
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
|
-
|
|
393
|
-
|
|
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
|
-
|
|
396
|
-
|
|
397
|
-
|
|
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
|
-
|
|
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 =
|
|
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
|
-
|
|
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
|
-
|
|
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"],
|
package/dist/worker.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"worker.js","sourceRoot":"","sources":["../src/worker.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,SAAS,MAAM,IAAI,CAAC;AAC3B,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AAiEpC,gFAAgF;AAChF,+DAA+D;AAC/D,gFAAgF;AAEhF,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,WAAW,CAAC,CAAC;AACxD,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;AACzD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;AAWrD,SAAS,UAAU;IACjB,WAAW;IACX,MAAM,MAAM,GAAiB;QAC3B,OAAO,EAAE,EAAE;QACX,MAAM,EAAE,gCAAgC;QACxC,KAAK,EAAE,CAAC;QACR,QAAQ,EAAE,EAAE;KACb,CAAC;IAEF,uBAAuB;IACvB,IAAI,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;QAC/B,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC;YAC/D,IAAI,IAAI,CAAC,OAAO;gBAAE,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;YAChD,IAAI,IAAI,CAAC,MAAM;gBAAE,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;YAC7C,IAAI,IAAI,CAAC,KAAK;gBAAE,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;YAC1C,IAAI,IAAI,CAAC,QAAQ;gBAAE,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;YACnD,IAAI,IAAI,CAAC,SAAS;gBAAE,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;YACtD,IAAI,IAAI,CAAC,UAAU;gBAAE,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;QAC3D,CAAC;QAAC,MAAM,CAAC,CAAC,uBAAuB,CAAC,CAAC;IACrC,CAAC;IAED,wDAAwD;IACxD,IAAI,OAAO,CAAC,GAAG,CAAC,gBAAgB;QAAE,MAAM,CAAC,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC;IAChF,IAAI,OAAO,CAAC,GAAG,CAAC,YAAY;QAAE,MAAM,CAAC,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC;IAEvE,0CAA0C;IAC1C,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACnC,SAAS,MAAM,CAAC,IAAY;QAC1B,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;QACtC,OAAO,GAAG,KAAK,CAAC,CAAC,IAAI,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACzE,CAAC;IAED,IAAI,MAAM,CAAC,OAAO,CAAC;QAAE,MAAM,CAAC,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAE,EAAE,EAAE,CAAC,CAAC;IACnE,IAAI,MAAM,CAAC,WAAW,CAAC;QAAE,MAAM,CAAC,SAAS,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;IAChE,IAAI,MAAM,CAAC,YAAY,CAAC;QAAE,MAAM,CAAC,UAAU,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC;IAEnE,MAAM,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;IAC7C,IAAI,WAAW,EAAE,CAAC;QAChB,KAAK,MAAM,KAAK,IAAI,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;YAC3C,MAAM,CAAC,OAAO,EAAE,GAAG,QAAQ,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAChD,IAAI,OAAO,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACnC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;YAC9D,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,gFAAgF;AAChF,kCAAkC;AAClC,gFAAgF;AAEhF,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAEnC,IAAI,UAAU,KAAK,QAAQ,IAAI,UAAU,KAAK,MAAM,IAAI,UAAU,KAAK,MAAM,EAAE,CAAC;IAC9E,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,kBAAkB,CAAC,CAAC;IAC3D,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;IAElD,IAAI,UAAU,KAAK,QAAQ,EAAE,CAAC;QAC5B,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC7B,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;YACnC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,MAAM,GAAG,GAAG,QAAQ,CAAC,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;QACpE,IAAI,CAAC;YACH,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;YACrB,OAAO,CAAC,GAAG,CAAC,wBAAwB,GAAG,GAAG,CAAC,CAAC;YAC5C,IAAI,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;gBAC/B,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC;gBAC9D,OAAO,CAAC,GAAG,CAAC,YAAY,GAAG,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC;gBAC1C,OAAO,CAAC,GAAG,CAAC,eAAe,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,QAAQ,EAAE,CAAC,CAAC;gBACrF,OAAO,CAAC,GAAG,CAAC,aAAa,GAAG,CAAC,MAAM,IAAI,SAAS,EAAE,CAAC,CAAC;YACtD,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,CAAC,GAAG,CAAC,kCAAkC,GAAG,GAAG,CAAC,CAAC;YACtD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,UAAU,KAAK,MAAM,EAAE,CAAC;QAC1B,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC7B,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;YACnC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,MAAM,GAAG,GAAG,QAAQ,CAAC,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;QACpE,IAAI,CAAC;YACH,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;YAC7B,OAAO,CAAC,GAAG,CAAC,uBAAuB,GAAG,GAAG,CAAC,CAAC;QAC7C,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;QACrC,CAAC;QACD,IAAI,CAAC;YAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;QACvD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,UAAU,KAAK,MAAM,EAAE,CAAC;QAC1B,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC7B,OAAO,CAAC,GAAG,CAAC,sBAAsB,EAAE,QAAQ,CAAC,CAAC;YAC9C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,sBAAsB;QACtB,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACnD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAClC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACzC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,gFAAgF;AAChF,2BAA2B;AAC3B,gFAAgF;AAEhF,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;AAC5B,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;AAC3B,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,IAAI,GAAG,EAAE,CAAC,QAAQ,EAAE,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;AACxE,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;AAC/B,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC;AAC9B,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;AAC3E,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,IAAI,QAAQ,CAAC;AACjD,MAAM,QAAQ,GAA2B,MAAM,CAAC,QAAQ,CAAC;AAEzD,IAAI,CAAC,OAAO,EAAE,CAAC;IACb,OAAO,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC;IAC1C,OAAO,CAAC,KAAK,CAAC,wDAAwD,CAAC,CAAC;IACxE,OAAO,CAAC,KAAK,CAAC,iBAAiB,GAAG,WAAW,CAAC,CAAC;IAC/C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,gFAAgF;AAChF,iDAAiD;AACjD,gFAAgF;AAEhF,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,kBAAkB,CAAC,CAAC;AAC3D,8EAA8E;AAC9E,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;AAElD,SAAS,cAAc;IACrB,IAAI,CAAC;QAAC,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAAC,CAAC;IAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;IAE1E,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC5B,MAAM,MAAM,GAAG,QAAQ,CAAC,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;QACvE,IAAI,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;YAC7B,IAAI,CAAC;gBACH,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;gBACxB,GAAG,CAAC,iCAAiC,MAAM,MAAM,CAAC,CAAC;gBACnD,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;gBAChC,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;gBACnC,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,EAAE,CAAC;oBAC7B,IAAI,CAAC;wBAAC,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;oBAAC,CAAC;oBAAC,MAAM,CAAC;wBAAC,MAAM;oBAAC,CAAC;oBACjD,MAAM,IAAI,GAAG,CAAC,EAAU,EAAE,EAAE,GAAG,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;oBAC3G,IAAI,CAAC,GAAG,CAAC,CAAC;gBACZ,CAAC;gBACD,IAAI,CAAC;oBAAC,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;gBAAC,CAAC;gBAAC,MAAM,CAAC,CAAC,UAAU,CAAC,CAAC;YAC/D,CAAC;YAAC,MAAM,CAAC,CAAC,WAAW,CAAC,CAAC;QACzB,CAAC;IACH,CAAC;IAED,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;IAChD,GAAG,CAAC,sBAAsB,OAAO,CAAC,GAAG,GAAG,CAAC,CAAC;AAC5C,CAAC;AAED,SAAS,cAAc;IACrB,IAAI,CAAC;QACH,IAAI,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;YACtE,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC;IAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;AAC1B,CAAC;AAED,gFAAgF;AAChF,0CAA0C;AAC1C,gFAAgF;AAEhF,IAAI,kBAAkB,GAAkB,IAAI,CAAC;AAE7C,SAAS,wBAAwB;IAC/B,IAAI,kBAAkB;QAAE,OAAO,kBAAkB,CAAC;IAClD,kBAAkB,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,6BAA6B,OAAO,CAAC,GAAG,OAAO,CAAC,CAAC;IAC7F,EAAE,CAAC,aAAa,CAAC,kBAAkB,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;IACzE,OAAO,kBAAkB,CAAC;AAC5B,CAAC;AAED,SAAS,uBAAuB,CAAC,OAAe;IAC9C,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IAC7D,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IACrE,MAAM,MAAM,GAAG;QACb,UAAU,EAAE;YACV,QAAQ,EAAE;gBACR,IAAI,EAAE,OAAO;gBACb,OAAO,EAAE,MAAM;gBACf,IAAI,EAAE,CAAC,SAAS,CAAC;gBACjB,GAAG,EAAE;oBACH,YAAY,EAAE,OAAO;oBACrB,gBAAgB,EAAE,OAAO;oBACzB,iBAAiB,EAAE,OAAO;oBAC1B,0BAA0B,EAAE,MAAM;iBACnC;aACF;SACF;KACF,CAAC;IACF,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,uBAAuB,OAAO,IAAI,OAAO,CAAC,GAAG,OAAO,CAAC,CAAC;IAC1F,EAAE,CAAC,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IACxD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,gFAAgF;AAChF,QAAQ;AACR,gFAAgF;AAEhF,IAAI,EAAE,GAAqB,IAAI,CAAC;AAChC,IAAI,iBAAiB,GAAG,CAAC,CAAC;AAC1B,IAAI,WAAW,GAAG,CAAC,CAAC;AACpB,IAAI,cAAc,GAAG,KAAK,CAAC;AAE3B,+BAA+B;AAC/B,IAAI,SAAS,GAA0B,IAAI,CAAC;AAC5C,IAAI,CAAC;IACH,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9C,SAAS,GAAG,EAAE,CAAC,iBAAiB,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;AAC7D,CAAC;AAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;AAExB,SAAS,GAAG,CAAC,GAAW,EAAE,GAAG,KAAgB;IAC3C,MAAM,IAAI,GAAG,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,cAAc,GAAG,EAAE,CAAC;IAC7D,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,KAAK,CAAC,CAAC;IAC5B,SAAS,EAAE,KAAK,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;AAC1F,CAAC;AAED,SAAS,QAAQ,CAAC,GAAW,EAAE,GAAG,KAAgB;IAChD,MAAM,IAAI,GAAG,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,cAAc,GAAG,EAAE,CAAC;IAC7D,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,KAAK,CAAC,CAAC;IAC9B,SAAS,EAAE,KAAK,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;AAC1F,CAAC;AAED,gFAAgF;AAChF,iCAAiC;AACjC,gFAAgF;AAEhF,SAAS,OAAO;IACd,IAAI,cAAc;QAAE,OAAO;IAE3B,MAAM,GAAG,GAAG,GAAG,MAAM,eAAe,SAAS,YAAY,OAAO,EAAE,CAAC;IACnE,GAAG,CAAC,qCAAqC,SAAS,MAAM,CAAC,CAAC;IAE1D,EAAE,GAAG,IAAI,SAAS,CAAC,GAAG,CAAC,CAAC;IAExB,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE;QACjB,GAAG,CAAC,WAAW,CAAC,CAAC;QACjB,iBAAiB,GAAG,CAAC,CAAC;QAEtB,2BAA2B;QAC3B,MAAM,WAAW,GAAsB;YACrC,IAAI,EAAE,iBAAiB;YACvB,SAAS,EAAE,SAAS;YACpB,KAAK,EAAE,KAAK;YACZ,QAAQ,EAAE,QAAQ;SACnB,CAAC;QACF,EAAG,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC;QACtC,GAAG,CAAC,eAAe,KAAK,WAAW,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,mBAAmB,CAAC,CAAC;QAEpF,kBAAkB;QAClB,cAAc,EAAE,CAAC;IACnB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,IAAoB,EAAE,EAAE;QACxC,IAAI,CAAC;YACH,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;QACnD,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,QAAQ,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC;QAChC,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAY,EAAE,EAAE;QAC9B,GAAG,CAAC,iBAAiB,IAAI,GAAG,CAAC,CAAC;QAC9B,EAAE,GAAG,IAAI,CAAC;QACV,aAAa,EAAE,CAAC;QAChB,iBAAiB,EAAE,CAAC;IACtB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAU,EAAE,EAAE;QAC5B,QAAQ,CAAC,WAAW,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,iBAAiB;IACxB,IAAI,cAAc;QAAE,OAAO;IAC3B,iBAAiB,EAAE,CAAC;IACpB,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,iBAAiB,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IACzE,GAAG,CAAC,mBAAmB,KAAK,OAAO,CAAC,CAAC;IACrC,UAAU,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,cAAc;QAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;AAC/D,CAAC;AAED,gFAAgF;AAChF,YAAY;AACZ,gFAAgF;AAEhF,IAAI,cAAc,GAA0C,IAAI,CAAC;AAEjE,SAAS,cAAc;IACrB,aAAa,EAAE,CAAC;IAChB,cAAc,GAAG,WAAW,CAAC,GAAG,EAAE;QAChC,IAAI,EAAE,EAAE,UAAU,KAAK,SAAS,CAAC,IAAI,EAAE,CAAC;YACtC,MAAM,GAAG,GAAuB;gBAC9B,IAAI,EAAE,kBAAkB;gBACxB,YAAY,EAAE,WAAW;gBACzB,WAAW,EAAE,CAAC;aACf,CAAC;YACF,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;QAC/B,CAAC;IACH,CAAC,EAAE,MAAM,CAAC,CAAC;AACb,CAAC;AAED,SAAS,aAAa;IACpB,IAAI,cAAc,EAAE,CAAC;QACnB,aAAa,CAAC,cAAc,CAAC,CAAC;QAC9B,cAAc,GAAG,IAAI,CAAC;IACxB,CAAC;AACH,CAAC;AAED,gFAAgF;AAChF,oDAAoD;AACpD,gFAAgF;AAEhF,SAAS,mBAAmB,CAAC,GAAmB;IAC9C,IAAI,GAAG,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;QACxB,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,CAAC;QAChF,OAAO;IACT,CAAC;IAED,IAAI,GAAG,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;QAC5B,MAAM,CAAC,GAAG,GAAkB,CAAC;QAC7B,GAAG,CAAC,eAAe,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,QAAQ,MAAM,CAAC,CAAC,OAAO,CAAC,UAAU,KAAK,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;QAE/G,IAAI,WAAW,IAAI,KAAK,EAAE,CAAC;YACzB,GAAG,CAAC,oBAAoB,WAAW,IAAI,KAAK,cAAc,CAAC,CAAC;YAC5D,MAAM,MAAM,GAAwB;gBAClC,IAAI,EAAE,mBAAmB;gBACzB,WAAW,EAAE,CAAC,CAAC,WAAW;gBAC1B,MAAM,EAAE,eAAe;aACxB,CAAC;YACF,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;YACjC,OAAO;QACT,CAAC;QAED,eAAe,CAAC,CAAC,CAAC,CAAC;IACrB,CAAC;AACH,CAAC;AAED,gFAAgF;AAChF,8DAA8D;AAC9D,gFAAgF;AAEhF,KAAK,UAAU,eAAe,CAAC,QAAqB;IAClD,WAAW,EAAE,CAAC;IACd,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC7B,MAAM,CAAC,GAAG,QAAQ,CAAC,OAAO,CAAC;IAC3B,MAAM,OAAO,GAAG,QAAQ,CAAC,QAAQ,CAAC;IAElC,8BAA8B;IAC9B,MAAM,UAAU,GAAG,QAAQ,CAAC,WAAW,IAAI,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE,CAAC;IAE5E,gCAAgC;IAChC,IAAI,SAAS,GAAG,EAAE,CAAC;IACnB,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,GAAG,OAAO,eAAe,EAAE;YAClD,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,WAAW,EAAE,OAAO,EAAE;YACrE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gBACnB,QAAQ,EAAE,OAAO;gBACjB,KAAK,EAAE,CAAC,CAAC,OAAO,IAAI,eAAe;gBACnC,WAAW,EAAE,QAAQ,CAAC,WAAW;gBACjC,iBAAiB,EAAE,UAAU;aAC9B,CAAC;SACH,CAAC,CAAC;QACH,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC;YACZ,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,EAAoB,CAAC;YACjD,SAAS,GAAG,IAAI,CAAC,EAAE,CAAC;QACtB,CAAC;IACH,CAAC;IAAC,MAAM,CAAC,CAAC,qCAAqC,CAAC,CAAC;IAEjD,eAAe;IACf,MAAM,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAC;IAChC,MAAM,MAAM,GAAG,MAAM;QACnB,CAAC,CAAC,WAAW,OAAO,+CAA+C,CAAC,CAAC,UAAU,cAAc,CAAC,CAAC,OAAO,WAAW,CAAC,CAAC,IAAI,eAAe,CAAC,CAAC,QAAQ,cAAc,CAAC,CAAC,IAAI,wDAAwD,CAAC,CAAC,EAAE,IAAI;QACpO,CAAC,CAAC,WAAW,OAAO,iIAAiI,CAAC,CAAC,UAAU,UAAU,CAAC,CAAC,IAAI,EAAE,CAAC;IAEtL,4BAA4B;IAC5B,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,0BAA0B,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAC1G,EAAE,CAAC,aAAa,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IAErC,MAAM,SAAS,GAAG,MAAM;QACtB,CAAC,CAAC,uBAAuB,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;QACtD,CAAC,CAAC,wBAAwB,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IACnD,MAAM,QAAQ,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC;IAErC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IACjF,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,eAAe,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAEpF,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,kBAAkB,OAAO,YAAY,WAAW,IAAI,KAAK,GAAG,CAAC,CAAC;IAExF,YAAY;IACZ,MAAM,QAAQ,GAA2B,EAAE,CAAC;IAC5C,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QACjD,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC/C,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;IACD,QAAQ,CAAC,iBAAiB,GAAG,OAAO,CAAC;IACrC,QAAQ,CAAC,0BAA0B,GAAG,MAAM,CAAC;IAC7C,IAAI,SAAS,EAAE,CAAC;QACd,QAAQ,CAAC,mBAAmB,GAAG,SAAS,CAAC;IAC3C,CAAC;IAED,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,aAAa,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,CAAC,EAAE;QAC5E,GAAG,EAAE,UAAU;QACf,GAAG,EAAE,QAAQ;QACb,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC;QACjC,QAAQ,EAAE,IAAI;KACf,CAAC,CAAC;IAEH,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,KAAK,CAAC,MAAO,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,CAAS,EAAE,EAAE,GAAG,MAAM,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACrE,KAAK,CAAC,MAAO,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,CAAS,EAAE,EAAE,GAAG,MAAM,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAErE,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAmB,EAAE,EAAE;QACvC,UAAU,CAAC,GAAG,EAAE;YACd,WAAW,EAAE,CAAC;YACd,MAAM,OAAO,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC,GAAG,IAAI,CAAC;YAChD,MAAM,MAAM,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,IAAI,EAAE,CAAC;YACnD,GAAG,CAAC,GAAG,MAAM,IAAI,OAAO,YAAY,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,MAAM,SAAS,CAAC,CAAC;YAEpF,IAAI,CAAC;gBAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;YACzD,oCAAoC;YACpC,IAAI,MAAM,EAAE,CAAC;gBACX,IAAI,CAAC;oBAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;gBAAC,CAAC;gBAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;YAC1D,CAAC;YAED,4DAA4D;YAC5D,MAAM,SAAS,GAAG,MAAM,GAAG,IAAI,GAAG,MAAM,CAAC;YACzC,IAAI,iBAAiB,GAAG,WAAW,CAAC;YACpC,IAAI,WAA+B,CAAC;YAEpC,IAAI,SAAS,CAAC,QAAQ,CAAC,gBAAgB,CAAC,IAAI,SAAS,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;gBAC7E,iBAAiB,GAAG,YAAY,CAAC;gBACjC,2EAA2E;gBAC3E,MAAM,UAAU,GAAG,SAAS,CAAC,KAAK,CAAC,wCAAwC,CAAC,CAAC;gBAC7E,IAAI,UAAU,EAAE,CAAC;oBACf,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;oBACvB,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;oBACnD,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;oBAC9C,IAAI,IAAI,GAAG,CAAC,CAAC;oBACb,IAAI,IAAI,EAAE,WAAW,EAAE,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE;wBAAE,IAAI,IAAI,EAAE,CAAC;oBAC1D,IAAI,IAAI,EAAE,WAAW,EAAE,KAAK,IAAI,IAAI,IAAI,KAAK,EAAE;wBAAE,IAAI,GAAG,CAAC,CAAC;oBAC1D,MAAM,UAAU,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC;oBACjC,UAAU,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;oBACnC,IAAI,UAAU,IAAI,GAAG;wBAAE,UAAU,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW;oBAChF,WAAW,GAAG,UAAU,CAAC,WAAW,EAAE,CAAC;oBACvC,GAAG,CAAC,+CAA+C,WAAW,EAAE,CAAC,CAAC;gBACpE,CAAC;YACH,CAAC;iBAAM,IAAI,SAAS,CAAC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,CAAC;gBACnD,iBAAiB,GAAG,WAAW,CAAC;YAClC,CAAC;iBAAM,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;gBACzB,iBAAiB,GAAG,SAAS,CAAC;YAChC,CAAC;iBAAM,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;gBACxC,iBAAiB,GAAG,OAAO,CAAC;YAC9B,CAAC;YAED,uCAAuC;YACvC,IAAI,SAAS,EAAE,CAAC;gBACd,MAAM,IAAI,GAA4B,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,CAAC;gBAChF,IAAI,WAAW;oBAAE,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC;gBAEjD,KAAK,CAAC,GAAG,OAAO,iBAAiB,SAAS,YAAY,EAAE;oBACtD,MAAM,EAAE,MAAM;oBACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,WAAW,EAAE,OAAO,EAAE;oBACrE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;iBAC3B,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAqB,CAAC,CAAC,CAAC;YACxC,CAAC;YAED,MAAM,MAAM,GAAsB;gBAChC,IAAI,EAAE,iBAAiB;gBACvB,WAAW,EAAE,QAAQ,CAAC,WAAW;gBACjC,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE;gBACxB,QAAQ,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,SAAS;gBACnD,KAAK,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,aAAa,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS;gBACxF,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;gBAC9B,kBAAkB,EAAE,iBAAiB;gBACrC,YAAY,EAAE,WAAW;aAC1B,CAAC;YACF,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;QACnC,CAAC,EAAE,GAAG,CAAC,CAAC;IACV,CAAC,CAAC,CAAC;IAEH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAU,EAAE,EAAE;QAC/B,WAAW,EAAE,CAAC;QACd,QAAQ,CAAC,oBAAoB,OAAO,KAAK,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;QACxD,MAAM,MAAM,GAAsB;YAChC,IAAI,EAAE,iBAAiB;YACvB,WAAW,EAAE,QAAQ,CAAC,WAAW;YACjC,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,GAAG,CAAC,OAAO;YAClB,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC,GAAG,IAAI,CAAC;SACvD,CAAC;QACF,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;IACnC,CAAC,CAAC,CAAC;IAEH,UAAU;IACV,UAAU,CAAC,GAAG,EAAE;QACd,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;YAClB,GAAG,CAAC,kBAAkB,OAAO,WAAW,CAAC,CAAC;YAC1C,IAAI,CAAC;gBAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAI,EAAE,SAAS,CAAC,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC;gBAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAAC,CAAC;QAChF,CAAC;IACH,CAAC,EAAE,OAAO,CAAC,CAAC;AACd,CAAC;AAED,gFAAgF;AAChF,WAAW;AACX,gFAAgF;AAEhF,SAAS,QAAQ;IACf,GAAG,CAAC,kBAAkB,CAAC,CAAC;IACxB,cAAc,GAAG,IAAI,CAAC;IACtB,aAAa,EAAE,CAAC;IAChB,EAAE,EAAE,KAAK,EAAE,CAAC;IACZ,cAAc,EAAE,CAAC;IACjB,IAAI,kBAAkB,IAAI,EAAE,CAAC,UAAU,CAAC,kBAAkB,CAAC,EAAE,CAAC;QAC5D,IAAI,CAAC;YAAC,EAAE,CAAC,UAAU,CAAC,kBAAkB,CAAC,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;IACnE,CAAC;IACD,IAAI,WAAW,GAAG,CAAC,EAAE,CAAC;QACpB,GAAG,CAAC,eAAe,WAAW,oBAAoB,CAAC,CAAC;QACpD,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE;YAC7B,IAAI,WAAW,KAAK,CAAC,EAAE,CAAC;gBAAC,aAAa,CAAC,KAAK,CAAC,CAAC;gBAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAAC,CAAC;QACnE,CAAC,EAAE,IAAI,CAAC,CAAC;QACT,UAAU,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IAC3C,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;AAC/B,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;AAEhC,gFAAgF;AAChF,QAAQ;AACR,gFAAgF;AAEhF,GAAG,CAAC,0BAA0B,CAAC,CAAC;AAChC,GAAG,CAAC,gBAAgB,SAAS,EAAE,CAAC,CAAC;AACjC,GAAG,CAAC,gBAAgB,KAAK,EAAE,CAAC,CAAC;AAC7B,GAAG,CAAC,gBAAgB,OAAO,EAAE,CAAC,CAAC;AAC/B,GAAG,CAAC,gBAAgB,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,mBAAmB,EAAE,CAAC,CAAC;AACjJ,cAAc,EAAE,CAAC;AACjB,OAAO,EAAE,CAAC"}
|
|
1
|
+
{"version":3,"file":"worker.js","sourceRoot":"","sources":["../src/worker.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
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
|
-
|
|
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
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
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
|
-
//
|
|
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
|
-
|
|
490
|
-
|
|
491
|
-
|
|
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
|
-
|
|
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 =
|
|
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
|
-
|
|
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
|
-
|
|
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"],
|