claudelink 1.0.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/dist/index.js ADDED
@@ -0,0 +1,274 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ const index_js_1 = require("@modelcontextprotocol/sdk/server/index.js");
5
+ const stdio_js_1 = require("@modelcontextprotocol/sdk/server/stdio.js");
6
+ const types_js_1 = require("@modelcontextprotocol/sdk/types.js");
7
+ const db_js_1 = require("./db.js");
8
+ const db = new db_js_1.NexusDB();
9
+ let currentAgentId = null;
10
+ let currentRole = null;
11
+ const server = new index_js_1.Server({ name: "ClaudeLink", version: "1.0.0" }, { capabilities: { tools: {} } });
12
+ function requireRegistration() {
13
+ if (!currentAgentId) {
14
+ throw new Error('You must register first. Use the "register" tool with a role name (e.g., "developer", "reviewer").');
15
+ }
16
+ return currentAgentId;
17
+ }
18
+ // --- List Tools ---
19
+ server.setRequestHandler(types_js_1.ListToolsRequestSchema, async () => ({
20
+ tools: [
21
+ {
22
+ name: "register",
23
+ description: "Register this agent with a role so other agents can find and message you",
24
+ inputSchema: {
25
+ type: "object",
26
+ properties: {
27
+ role: {
28
+ type: "string",
29
+ description: 'Your role, e.g. "developer", "reviewer", "tester", "ops"',
30
+ },
31
+ description: {
32
+ type: "string",
33
+ description: "Brief description of what you are working on",
34
+ },
35
+ },
36
+ required: ["role"],
37
+ },
38
+ },
39
+ {
40
+ name: "send",
41
+ description: "Send a message to a specific agent by their role name",
42
+ inputSchema: {
43
+ type: "object",
44
+ properties: {
45
+ to: {
46
+ type: "string",
47
+ description: 'The role of the agent to send to, e.g. "reviewer"',
48
+ },
49
+ message: { type: "string", description: "The message content" },
50
+ priority: {
51
+ type: "string",
52
+ enum: ["low", "normal", "high"],
53
+ description: "Message priority level (default: normal)",
54
+ },
55
+ },
56
+ required: ["to", "message"],
57
+ },
58
+ },
59
+ {
60
+ name: "broadcast",
61
+ description: "Send a message to ALL connected agents",
62
+ inputSchema: {
63
+ type: "object",
64
+ properties: {
65
+ message: {
66
+ type: "string",
67
+ description: "The message to broadcast to all agents",
68
+ },
69
+ },
70
+ required: ["message"],
71
+ },
72
+ },
73
+ {
74
+ name: "read_inbox",
75
+ description: "Check your inbox for new messages from other agents",
76
+ inputSchema: {
77
+ type: "object",
78
+ properties: {},
79
+ },
80
+ },
81
+ {
82
+ name: "get_agents",
83
+ description: "List all registered agents and their current status",
84
+ inputSchema: {
85
+ type: "object",
86
+ properties: {},
87
+ },
88
+ },
89
+ {
90
+ name: "post_bulletin",
91
+ description: "Post a message to the shared bulletin board visible to all agents",
92
+ inputSchema: {
93
+ type: "object",
94
+ properties: {
95
+ message: {
96
+ type: "string",
97
+ description: "The bulletin message",
98
+ },
99
+ },
100
+ required: ["message"],
101
+ },
102
+ },
103
+ {
104
+ name: "get_bulletin",
105
+ description: "Read the shared bulletin board",
106
+ inputSchema: {
107
+ type: "object",
108
+ properties: {
109
+ limit: {
110
+ type: "number",
111
+ description: "Number of recent entries to fetch (default: 10, max: 50)",
112
+ },
113
+ },
114
+ },
115
+ },
116
+ ],
117
+ }));
118
+ // --- Call Tool ---
119
+ server.setRequestHandler(types_js_1.CallToolRequestSchema, async (request) => {
120
+ const { name, arguments: args } = request.params;
121
+ try {
122
+ switch (name) {
123
+ case "register": {
124
+ const role = args?.role;
125
+ const description = args?.description || null;
126
+ currentAgentId = db.registerAgent(role, description, process.pid);
127
+ currentRole = role;
128
+ // Heartbeat every 30 seconds
129
+ setInterval(() => {
130
+ if (currentAgentId) {
131
+ try {
132
+ db.heartbeat(currentAgentId);
133
+ }
134
+ catch {
135
+ // DB might be closed during shutdown
136
+ }
137
+ }
138
+ }, 30000);
139
+ const agents = db.getAgents();
140
+ const otherAgents = agents.filter((a) => a.id !== currentAgentId);
141
+ let response = `Registered as "${role}" (ID: ${currentAgentId.slice(0, 8)}...)`;
142
+ if (otherAgents.length > 0) {
143
+ response += `\n\nOther active agents:\n`;
144
+ for (const a of otherAgents) {
145
+ response += ` - ${a.role}${a.description ? `: ${a.description}` : ""} [${a.alive ? "online" : "offline"}]\n`;
146
+ }
147
+ }
148
+ else {
149
+ response += `\n\nNo other agents are currently online.`;
150
+ }
151
+ return { content: [{ type: "text", text: response }] };
152
+ }
153
+ case "send": {
154
+ const agentId = requireRegistration();
155
+ const to = args?.to;
156
+ const message = args?.message;
157
+ const priority = args?.priority || "normal";
158
+ const count = db.sendMessage(agentId, to, message, priority);
159
+ return {
160
+ content: [
161
+ {
162
+ type: "text",
163
+ text: `Message sent to ${count} agent(s) with role "${to}" [priority: ${priority}]`,
164
+ },
165
+ ],
166
+ };
167
+ }
168
+ case "broadcast": {
169
+ const agentId = requireRegistration();
170
+ const message = args?.message;
171
+ db.broadcastMessage(agentId, message);
172
+ const agents = db.getAgents().filter((a) => a.id !== agentId);
173
+ return {
174
+ content: [
175
+ {
176
+ type: "text",
177
+ text: `Broadcast sent. ${agents.length} other agent(s) will receive it.`,
178
+ },
179
+ ],
180
+ };
181
+ }
182
+ case "read_inbox": {
183
+ const agentId = requireRegistration();
184
+ const messages = db.readInbox(agentId);
185
+ if (messages.length === 0) {
186
+ return { content: [{ type: "text", text: "No unread messages." }] };
187
+ }
188
+ let response = `${messages.length} unread message(s):\n\n`;
189
+ for (const msg of messages) {
190
+ const priorityTag = msg.priority === "high"
191
+ ? " [HIGH PRIORITY]"
192
+ : msg.priority === "low"
193
+ ? " [low]"
194
+ : "";
195
+ const from = msg.from_role || msg.from_agent.slice(0, 8);
196
+ response += `--- From: ${from}${priorityTag} (${msg.created_at}) ---\n${msg.content}\n\n`;
197
+ }
198
+ return { content: [{ type: "text", text: response }] };
199
+ }
200
+ case "get_agents": {
201
+ const agents = db.getAgents();
202
+ if (agents.length === 0) {
203
+ return {
204
+ content: [
205
+ { type: "text", text: "No agents are currently registered." },
206
+ ],
207
+ };
208
+ }
209
+ let response = `${agents.length} registered agent(s):\n\n`;
210
+ for (const a of agents) {
211
+ const isMe = a.id === currentAgentId ? " (you)" : "";
212
+ const status = a.alive ? "ONLINE" : "OFFLINE";
213
+ response += ` [${status}] ${a.role}${isMe}${a.description ? ` - ${a.description}` : ""}\n`;
214
+ response += ` ID: ${a.id.slice(0, 8)}... | Last seen: ${a.last_seen}\n\n`;
215
+ }
216
+ return { content: [{ type: "text", text: response }] };
217
+ }
218
+ case "post_bulletin": {
219
+ const agentId = requireRegistration();
220
+ const message = args?.message;
221
+ db.postBulletin(agentId, message);
222
+ return {
223
+ content: [{ type: "text", text: "Posted to bulletin board." }],
224
+ };
225
+ }
226
+ case "get_bulletin": {
227
+ const limit = Math.min(Math.max(args?.limit || 10, 1), 50);
228
+ const entries = db.getBulletin(limit);
229
+ if (entries.length === 0) {
230
+ return {
231
+ content: [{ type: "text", text: "Bulletin board is empty." }],
232
+ };
233
+ }
234
+ let response = `Bulletin board (${entries.length} entries):\n\n`;
235
+ for (const e of entries) {
236
+ const from = e.from_role || e.from_agent.slice(0, 8);
237
+ response += `[${e.created_at}] ${from}: ${e.content}\n`;
238
+ }
239
+ return { content: [{ type: "text", text: response }] };
240
+ }
241
+ default:
242
+ return {
243
+ content: [{ type: "text", text: `Unknown tool: ${name}` }],
244
+ isError: true,
245
+ };
246
+ }
247
+ }
248
+ catch (err) {
249
+ return {
250
+ content: [{ type: "text", text: `Error: ${err.message}` }],
251
+ isError: true,
252
+ };
253
+ }
254
+ });
255
+ // --- Start server ---
256
+ async function main() {
257
+ const transport = new stdio_js_1.StdioServerTransport();
258
+ await server.connect(transport);
259
+ console.error("ClaudeLink MCP server started (pid: " + process.pid + ")");
260
+ }
261
+ main().catch((err) => {
262
+ console.error("Failed to start ClaudeLink:", err);
263
+ process.exit(1);
264
+ });
265
+ // Graceful shutdown
266
+ process.on("SIGINT", () => {
267
+ db.close();
268
+ process.exit(0);
269
+ });
270
+ process.on("SIGTERM", () => {
271
+ db.close();
272
+ process.exit(0);
273
+ });
274
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,55 @@
1
+ {
2
+ "name": "claudelink",
3
+ "version": "1.0.0",
4
+ "description": "The hub where your AI agents connect. Multi-terminal Claude Code agent communication via MCP.",
5
+ "main": "./dist/index.js",
6
+ "bin": {
7
+ "claudelink": "./bin/cli.js",
8
+ "claudelink-server": "./bin/server.js"
9
+ },
10
+ "scripts": {
11
+ "build": "tsc",
12
+ "prepare": "npm run build",
13
+ "start": "node dist/index.js"
14
+ },
15
+ "files": [
16
+ "dist",
17
+ "bin"
18
+ ],
19
+ "keywords": [
20
+ "claude",
21
+ "claude-code",
22
+ "claudelink",
23
+ "mcp",
24
+ "ai-agents",
25
+ "multi-agent",
26
+ "agent-communication",
27
+ "model-context-protocol",
28
+ "ipc",
29
+ "terminal",
30
+ "iterm2"
31
+ ],
32
+ "author": "Jay Siddiqi (https://github.com/jaysidd)",
33
+ "license": "MIT",
34
+ "repository": {
35
+ "type": "git",
36
+ "url": "git+https://github.com/jaysidd/claudelink.git"
37
+ },
38
+ "homepage": "https://github.com/jaysidd/claudelink",
39
+ "bugs": {
40
+ "url": "https://github.com/jaysidd/claudelink/issues"
41
+ },
42
+ "engines": {
43
+ "node": ">=18.0.0"
44
+ },
45
+ "dependencies": {
46
+ "@modelcontextprotocol/sdk": "^1.27.0",
47
+ "better-sqlite3": "^12.6.0",
48
+ "zod": "^3.23.0"
49
+ },
50
+ "devDependencies": {
51
+ "@types/better-sqlite3": "^7.6.12",
52
+ "@types/node": "^20.11.0",
53
+ "typescript": "^5.3.0"
54
+ }
55
+ }