Autonomous message routing between Agent Teams via MCP with cascade protection. Inbox-first canonical delivery with cross-process file lock (O_CREAT|O_EXCL) and best-effort relay for online teams. - CascadeGuard: rate limit (10/min), chain depth (max 5), pair cooldown (3s) - FileLock: cross-process safe via kernel-level atomic lock files - CrossTeamService: validate → cascade → file-lock → inbox write → relay → outbox - Unified lead resolver with members.meta.json normalization (trim+dedup) - 3 MCP tools: cross_team_send, cross_team_list_targets, cross_team_get_outbox - Controller module with sync file lock, same protocol as main - IPC adapter with 3 Electron handlers - 64 new tests across 8 test files
44 lines
1.2 KiB
JavaScript
44 lines
1.2 KiB
JavaScript
const { createControllerContext } = require('./internal/context.js');
|
|
const tasks = require('./internal/tasks.js');
|
|
const kanban = require('./internal/kanban.js');
|
|
const review = require('./internal/review.js');
|
|
const messages = require('./internal/messages.js');
|
|
const processes = require('./internal/processes.js');
|
|
const maintenance = require('./internal/maintenance.js');
|
|
const crossTeam = require('./internal/crossTeam.js');
|
|
|
|
function bindModule(context, moduleApi) {
|
|
return Object.fromEntries(
|
|
Object.entries(moduleApi).map(([name, fn]) => [
|
|
name,
|
|
(...args) => fn(context, ...args),
|
|
])
|
|
);
|
|
}
|
|
|
|
function createController(options) {
|
|
const context = createControllerContext(options);
|
|
|
|
return {
|
|
context,
|
|
tasks: bindModule(context, tasks),
|
|
kanban: bindModule(context, kanban),
|
|
review: bindModule(context, review),
|
|
messages: bindModule(context, messages),
|
|
processes: bindModule(context, processes),
|
|
maintenance: bindModule(context, maintenance),
|
|
crossTeam: bindModule(context, crossTeam),
|
|
};
|
|
}
|
|
|
|
module.exports = {
|
|
createController,
|
|
createControllerContext,
|
|
tasks,
|
|
kanban,
|
|
review,
|
|
messages,
|
|
processes,
|
|
maintenance,
|
|
crossTeam,
|
|
};
|