let-them-talk 5.2.5 → 5.3.0
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/cli.js +1 -1
- package/package.json +1 -1
- package/server.js +17 -15
package/cli.js
CHANGED
|
@@ -9,7 +9,7 @@ const command = process.argv[2];
|
|
|
9
9
|
|
|
10
10
|
function printUsage() {
|
|
11
11
|
console.log(`
|
|
12
|
-
Let Them Talk — Agent Bridge v5.
|
|
12
|
+
Let Them Talk — Agent Bridge v5.3.0
|
|
13
13
|
MCP message broker for inter-agent communication
|
|
14
14
|
Supports: Claude Code, Gemini CLI, Codex CLI, Ollama
|
|
15
15
|
|
package/package.json
CHANGED
package/server.js
CHANGED
|
@@ -1082,15 +1082,17 @@ function buildGuide(level = 'standard') {
|
|
|
1082
1082
|
const managed = getManagedConfig();
|
|
1083
1083
|
const isManager = managed.manager === registeredName;
|
|
1084
1084
|
if (isManager) {
|
|
1085
|
-
rules.push('YOU ARE THE MANAGER. You control the conversation
|
|
1086
|
-
rules.push('
|
|
1087
|
-
rules.push('Use
|
|
1088
|
-
rules.push('
|
|
1085
|
+
rules.push('YOU ARE THE MANAGER. You control the conversation flow, assign work, and track progress.');
|
|
1086
|
+
rules.push('TASK MANAGEMENT: Use create_task(title, description, assignee) to assign work to agents. Use create_workflow(name, steps) to create multi-step plans. These show up in the Tasks and Plan tabs of the dashboard.');
|
|
1087
|
+
rules.push('YOUR MANAGER LOOP: 1) Plan the work — create tasks and workflows for the team. 2) Use yield_floor(agent) to give each agent their turn to speak. 3) Call listen() to wait for responses. 4) When agents report completion, use update_task(id, status="done") to mark tasks done and advance_workflow() to move the plan forward. 5) Assign next tasks and repeat.');
|
|
1088
|
+
rules.push('PHASES: Use set_phase("discussion") for brainstorming, set_phase("planning") to assign tasks, set_phase("execution") for agents to work, set_phase("review") to collect results.');
|
|
1089
|
+
rules.push('Use send_message() to give instructions. Use broadcast() for team announcements.');
|
|
1090
|
+
rules.push('STRICT RULE: After EVERY action, call listen() to wait for responses. NEVER use sleep(). Your loop is: act → listen() → act → listen(). This loop NEVER ends.');
|
|
1089
1091
|
} else {
|
|
1090
|
-
rules.push('YOU ARE IN MANAGED MODE. The manager controls who speaks. Call listen() to wait for your turn.
|
|
1091
|
-
rules.push('
|
|
1092
|
-
rules.push('
|
|
1093
|
-
rules.push('STRICT RULES: NEVER use sleep(). NEVER use check_messages() in a
|
|
1092
|
+
rules.push('YOU ARE IN MANAGED MODE. The manager controls who speaks. Call listen() to wait for your turn.');
|
|
1093
|
+
rules.push('TASK TRACKING: When the manager assigns you a task, call update_task(id, status="in_progress") to claim it. When you finish, call update_task(id, status="done") and report back to the manager. If your task is a workflow step, call advance_workflow() after completing it.');
|
|
1094
|
+
rules.push('YOUR LOOP: 1) Call listen() — wait for messages and floor assignments. 2) When you receive work, update the task to "in_progress", do the work, update to "done", respond to the manager. 3) Call listen() again immediately. This loop NEVER ends.');
|
|
1095
|
+
rules.push('STRICT RULES: NEVER use sleep(). NEVER use check_messages() in a loop. NEVER call get_work() in managed mode. Your ONLY loop is: listen() → work → update task → respond → listen(). If listen() times out, call listen() again immediately.');
|
|
1094
1096
|
}
|
|
1095
1097
|
rules.push('Keep messages to 2-3 paragraphs max.');
|
|
1096
1098
|
rules.push('When you finish work, report what you did and what files you changed.');
|
|
@@ -2181,12 +2183,12 @@ async function toolListen(from = null) {
|
|
|
2181
2183
|
// Heartbeat every 15s
|
|
2182
2184
|
const heartbeatTimer = setInterval(() => { touchHeartbeat(registeredName); }, 15000);
|
|
2183
2185
|
|
|
2184
|
-
//
|
|
2186
|
+
// 5 min timeout — MCP has no tool timeout, heartbeat keeps agent alive
|
|
2185
2187
|
const timer = setTimeout(() => {
|
|
2186
2188
|
setListening(false);
|
|
2187
2189
|
touchActivity();
|
|
2188
|
-
done({ retry: true, message: 'No direct messages in
|
|
2189
|
-
},
|
|
2190
|
+
done({ retry: true, message: 'No direct messages in 5 minutes. Call listen() again to keep waiting.' });
|
|
2191
|
+
}, 300000);
|
|
2190
2192
|
});
|
|
2191
2193
|
}
|
|
2192
2194
|
|
|
@@ -2485,7 +2487,7 @@ async function toolListenGroup() {
|
|
|
2485
2487
|
|
|
2486
2488
|
// Autonomous mode: cap listen at 30s — agents should use get_work() instead
|
|
2487
2489
|
const autonomousTimeout = isAutonomousMode() ? 30000 : null;
|
|
2488
|
-
const MAX_LISTEN_MS =
|
|
2490
|
+
const MAX_LISTEN_MS = 300000; // 5 minutes — MCP has no tool timeout, heartbeat keeps agent alive
|
|
2489
2491
|
const listenStart = Date.now();
|
|
2490
2492
|
|
|
2491
2493
|
// Helper: collect unconsumed messages from all sources (general + channels)
|
|
@@ -2497,7 +2499,7 @@ async function toolListenGroup() {
|
|
|
2497
2499
|
|
|
2498
2500
|
// Read new messages from main file using byte offset (efficient)
|
|
2499
2501
|
if (fs.existsSync(mainFile)) {
|
|
2500
|
-
const { messages: newMsgs, newOffset } =
|
|
2502
|
+
const { messages: newMsgs, newOffset } = readNewMessagesFromFile(lastReadOffset, mainFile);
|
|
2501
2503
|
messages = newMsgs;
|
|
2502
2504
|
lastReadOffset = newOffset;
|
|
2503
2505
|
}
|
|
@@ -6112,7 +6114,7 @@ function toolToggleRule(ruleId) {
|
|
|
6112
6114
|
// --- MCP Server setup ---
|
|
6113
6115
|
|
|
6114
6116
|
const server = new Server(
|
|
6115
|
-
{ name: 'agent-bridge', version: '5.
|
|
6117
|
+
{ name: 'agent-bridge', version: '5.3.0' },
|
|
6116
6118
|
{ capabilities: { tools: {} } }
|
|
6117
6119
|
);
|
|
6118
6120
|
|
|
@@ -7199,7 +7201,7 @@ async function main() {
|
|
|
7199
7201
|
try {
|
|
7200
7202
|
const transport = new StdioServerTransport();
|
|
7201
7203
|
await server.connect(transport);
|
|
7202
|
-
console.error('Agent Bridge MCP server v5.
|
|
7204
|
+
console.error('Agent Bridge MCP server v5.3.0 running (66 tools)');
|
|
7203
7205
|
} catch (e) {
|
|
7204
7206
|
console.error('ERROR: MCP server failed to start: ' + e.message);
|
|
7205
7207
|
console.error('Fix: Run "npx let-them-talk doctor" to check your setup.');
|