@agent-relay/mcp 0.1.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/LICENSE +190 -0
- package/README.md +214 -0
- package/dist/bin.d.ts +12 -0
- package/dist/bin.d.ts.map +1 -0
- package/dist/bin.js +127 -0
- package/dist/bin.js.map +1 -0
- package/dist/client.d.ts +68 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +115 -0
- package/dist/client.js.map +1 -0
- package/dist/cloud.d.ts +108 -0
- package/dist/cloud.d.ts.map +1 -0
- package/dist/cloud.js +279 -0
- package/dist/cloud.js.map +1 -0
- package/dist/errors.d.ts +27 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +48 -0
- package/dist/errors.js.map +1 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +16 -0
- package/dist/index.js.map +1 -0
- package/dist/install-cli.d.ts +35 -0
- package/dist/install-cli.d.ts.map +1 -0
- package/dist/install-cli.js +157 -0
- package/dist/install-cli.js.map +1 -0
- package/dist/install.d.ts +101 -0
- package/dist/install.d.ts.map +1 -0
- package/dist/install.js +398 -0
- package/dist/install.js.map +1 -0
- package/dist/prompts/index.d.ts +2 -0
- package/dist/prompts/index.d.ts.map +1 -0
- package/dist/prompts/index.js +2 -0
- package/dist/prompts/index.js.map +1 -0
- package/dist/prompts/protocol.d.ts +11 -0
- package/dist/prompts/protocol.d.ts.map +1 -0
- package/dist/prompts/protocol.js +168 -0
- package/dist/prompts/protocol.js.map +1 -0
- package/dist/resources/agents.d.ts +11 -0
- package/dist/resources/agents.d.ts.map +1 -0
- package/dist/resources/agents.js +17 -0
- package/dist/resources/agents.js.map +1 -0
- package/dist/resources/inbox.d.ts +11 -0
- package/dist/resources/inbox.d.ts.map +1 -0
- package/dist/resources/inbox.js +17 -0
- package/dist/resources/inbox.js.map +1 -0
- package/dist/resources/index.d.ts +4 -0
- package/dist/resources/index.d.ts.map +1 -0
- package/dist/resources/index.js +4 -0
- package/dist/resources/index.js.map +1 -0
- package/dist/resources/project.d.ts +11 -0
- package/dist/resources/project.d.ts.map +1 -0
- package/dist/resources/project.js +21 -0
- package/dist/resources/project.js.map +1 -0
- package/dist/server.d.ts +19 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +215 -0
- package/dist/server.js.map +1 -0
- package/dist/simple.d.ts +173 -0
- package/dist/simple.d.ts.map +1 -0
- package/dist/simple.js +120 -0
- package/dist/simple.js.map +1 -0
- package/dist/tools/index.d.ts +10 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +10 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/relay-health.d.ts +23 -0
- package/dist/tools/relay-health.d.ts.map +1 -0
- package/dist/tools/relay-health.js +138 -0
- package/dist/tools/relay-health.js.map +1 -0
- package/dist/tools/relay-inbox.d.ts +26 -0
- package/dist/tools/relay-inbox.d.ts.map +1 -0
- package/dist/tools/relay-inbox.js +58 -0
- package/dist/tools/relay-inbox.js.map +1 -0
- package/dist/tools/relay-logs.d.ts +20 -0
- package/dist/tools/relay-logs.d.ts.map +1 -0
- package/dist/tools/relay-logs.js +88 -0
- package/dist/tools/relay-logs.js.map +1 -0
- package/dist/tools/relay-metrics.d.ts +20 -0
- package/dist/tools/relay-metrics.d.ts.map +1 -0
- package/dist/tools/relay-metrics.js +135 -0
- package/dist/tools/relay-metrics.js.map +1 -0
- package/dist/tools/relay-release.d.ts +20 -0
- package/dist/tools/relay-release.d.ts.map +1 -0
- package/dist/tools/relay-release.js +44 -0
- package/dist/tools/relay-release.js.map +1 -0
- package/dist/tools/relay-send.d.ts +29 -0
- package/dist/tools/relay-send.d.ts.map +1 -0
- package/dist/tools/relay-send.js +71 -0
- package/dist/tools/relay-send.js.map +1 -0
- package/dist/tools/relay-spawn.d.ts +36 -0
- package/dist/tools/relay-spawn.d.ts.map +1 -0
- package/dist/tools/relay-spawn.js +73 -0
- package/dist/tools/relay-spawn.js.map +1 -0
- package/dist/tools/relay-status.d.ts +11 -0
- package/dist/tools/relay-status.d.ts.map +1 -0
- package/dist/tools/relay-status.js +43 -0
- package/dist/tools/relay-status.js.map +1 -0
- package/dist/tools/relay-who.d.ts +20 -0
- package/dist/tools/relay-who.d.ts.map +1 -0
- package/dist/tools/relay-who.js +47 -0
- package/dist/tools/relay-who.js.map +1 -0
- package/package.json +69 -0
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Inbox Resource
|
|
3
|
+
*
|
|
4
|
+
* Provides current inbox contents as an MCP resource.
|
|
5
|
+
* URI: relay://inbox
|
|
6
|
+
*/
|
|
7
|
+
export const inboxResource = {
|
|
8
|
+
uri: 'relay://inbox',
|
|
9
|
+
name: 'Message Inbox',
|
|
10
|
+
description: 'Your pending messages',
|
|
11
|
+
mimeType: 'application/json',
|
|
12
|
+
};
|
|
13
|
+
export async function getInboxResource(client) {
|
|
14
|
+
const messages = await client.getInbox({ unread_only: true, limit: 50 });
|
|
15
|
+
return JSON.stringify(messages, null, 2);
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=inbox.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inbox.js","sourceRoot":"","sources":["../../src/resources/inbox.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,MAAM,CAAC,MAAM,aAAa,GAAa;IACrC,GAAG,EAAE,eAAe;IACpB,IAAI,EAAE,eAAe;IACrB,WAAW,EAAE,uBAAuB;IACpC,QAAQ,EAAE,kBAAkB;CAC7B,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,MAAmB;IACxD,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;IACzE,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AAC3C,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/resources/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/resources/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Project Resource
|
|
3
|
+
*
|
|
4
|
+
* Provides current project configuration as an MCP resource.
|
|
5
|
+
* URI: relay://project
|
|
6
|
+
*/
|
|
7
|
+
import type { Resource } from '@modelcontextprotocol/sdk/types.js';
|
|
8
|
+
import type { RelayClient } from '../client.js';
|
|
9
|
+
export declare const projectResource: Resource;
|
|
10
|
+
export declare function getProjectResource(client: RelayClient): Promise<string>;
|
|
11
|
+
//# sourceMappingURL=project.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project.d.ts","sourceRoot":"","sources":["../../src/resources/project.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oCAAoC,CAAC;AACnE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAEhD,eAAO,MAAM,eAAe,EAAE,QAK7B,CAAC;AAEF,wBAAsB,kBAAkB,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,CAW7E"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Project Resource
|
|
3
|
+
*
|
|
4
|
+
* Provides current project configuration as an MCP resource.
|
|
5
|
+
* URI: relay://project
|
|
6
|
+
*/
|
|
7
|
+
export const projectResource = {
|
|
8
|
+
uri: 'relay://project',
|
|
9
|
+
name: 'Project Info',
|
|
10
|
+
description: 'Current relay project configuration',
|
|
11
|
+
mimeType: 'application/json',
|
|
12
|
+
};
|
|
13
|
+
export async function getProjectResource(client) {
|
|
14
|
+
const status = await client.getStatus();
|
|
15
|
+
return JSON.stringify({
|
|
16
|
+
project: status.project,
|
|
17
|
+
socketPath: status.socketPath,
|
|
18
|
+
daemonVersion: status.daemonVersion,
|
|
19
|
+
}, null, 2);
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=project.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project.js","sourceRoot":"","sources":["../../src/resources/project.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,MAAM,CAAC,MAAM,eAAe,GAAa;IACvC,GAAG,EAAE,iBAAiB;IACtB,IAAI,EAAE,cAAc;IACpB,WAAW,EAAE,qCAAqC;IAClD,QAAQ,EAAE,kBAAkB;CAC7B,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,MAAmB;IAC1D,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,SAAS,EAAE,CAAC;IACxC,OAAO,IAAI,CAAC,SAAS,CACnB;QACE,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,UAAU,EAAE,MAAM,CAAC,UAAU;QAC7B,aAAa,EAAE,MAAM,CAAC,aAAa;KACpC,EACD,IAAI,EACJ,CAAC,CACF,CAAC;AACJ,CAAC"}
|
package/dist/server.d.ts
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { Server } from '@modelcontextprotocol/sdk/server/index.js';
|
|
2
|
+
import type { RelayClient } from './client.js';
|
|
3
|
+
/**
|
|
4
|
+
* MCP Server configuration options
|
|
5
|
+
*/
|
|
6
|
+
export interface MCPServerConfig {
|
|
7
|
+
name?: string;
|
|
8
|
+
version?: string;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Create and configure an MCP server for Agent Relay
|
|
12
|
+
*/
|
|
13
|
+
export declare function createMCPServer(client: RelayClient, config?: MCPServerConfig): Server;
|
|
14
|
+
/**
|
|
15
|
+
* Run the MCP server with stdio transport.
|
|
16
|
+
* This is the main entry point when running as a standalone process.
|
|
17
|
+
*/
|
|
18
|
+
export declare function runMCPServer(client: RelayClient, config?: MCPServerConfig): Promise<void>;
|
|
19
|
+
//# sourceMappingURL=server.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AAUnE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAiE/C;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,WAAW,EAAE,MAAM,CAAC,EAAE,eAAe,GAAG,MAAM,CAgMrF;AAED;;;GAGG;AACH,wBAAsB,YAAY,CAAC,MAAM,EAAE,WAAW,EAAE,MAAM,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAgB/F"}
|
package/dist/server.js
ADDED
|
@@ -0,0 +1,215 @@
|
|
|
1
|
+
import { Server } from '@modelcontextprotocol/sdk/server/index.js';
|
|
2
|
+
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
|
|
3
|
+
import { CallToolRequestSchema, ListToolsRequestSchema, ListPromptsRequestSchema, GetPromptRequestSchema, ListResourcesRequestSchema, ReadResourceRequestSchema, } from '@modelcontextprotocol/sdk/types.js';
|
|
4
|
+
import { relaySendTool, relaySendSchema, handleRelaySend, relayInboxTool, relayInboxSchema, handleRelayInbox, relayWhoTool, relayWhoSchema, handleRelayWho, relaySpawnTool, relaySpawnSchema, handleRelaySpawn, relayReleaseTool, relayReleaseSchema, handleRelayRelease, relayStatusTool, relayStatusSchema, handleRelayStatus, relayLogsTool, relayLogsSchema, handleRelayLogs, relayMetricsTool, relayMetricsSchema, handleRelayMetrics, relayHealthTool, relayHealthSchema, handleRelayHealth, } from './tools/index.js';
|
|
5
|
+
import { protocolPrompt, getProtocolPrompt } from './prompts/index.js';
|
|
6
|
+
import { agentsResource, getAgentsResource, inboxResource, getInboxResource, projectResource, getProjectResource, } from './resources/index.js';
|
|
7
|
+
/**
|
|
8
|
+
* All available relay tools
|
|
9
|
+
*/
|
|
10
|
+
const TOOLS = [
|
|
11
|
+
relaySendTool,
|
|
12
|
+
relayInboxTool,
|
|
13
|
+
relayWhoTool,
|
|
14
|
+
relaySpawnTool,
|
|
15
|
+
relayReleaseTool,
|
|
16
|
+
relayStatusTool,
|
|
17
|
+
relayLogsTool,
|
|
18
|
+
relayMetricsTool,
|
|
19
|
+
relayHealthTool,
|
|
20
|
+
];
|
|
21
|
+
/**
|
|
22
|
+
* All available prompts
|
|
23
|
+
*/
|
|
24
|
+
const PROMPTS = [protocolPrompt];
|
|
25
|
+
/**
|
|
26
|
+
* All available resources
|
|
27
|
+
*/
|
|
28
|
+
const RESOURCES = [agentsResource, inboxResource, projectResource];
|
|
29
|
+
/**
|
|
30
|
+
* Create and configure an MCP server for Agent Relay
|
|
31
|
+
*/
|
|
32
|
+
export function createMCPServer(client, config) {
|
|
33
|
+
const serverName = config?.name ?? 'agent-relay-mcp';
|
|
34
|
+
const serverVersion = config?.version ?? '0.1.0';
|
|
35
|
+
const server = new Server({
|
|
36
|
+
name: serverName,
|
|
37
|
+
version: serverVersion,
|
|
38
|
+
}, {
|
|
39
|
+
capabilities: {
|
|
40
|
+
tools: {},
|
|
41
|
+
prompts: {},
|
|
42
|
+
resources: {},
|
|
43
|
+
},
|
|
44
|
+
});
|
|
45
|
+
// Register tool listing handler
|
|
46
|
+
server.setRequestHandler(ListToolsRequestSchema, async () => ({
|
|
47
|
+
tools: TOOLS,
|
|
48
|
+
}));
|
|
49
|
+
// Register tool call handler
|
|
50
|
+
server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
51
|
+
const { name, arguments: args } = request.params;
|
|
52
|
+
try {
|
|
53
|
+
let result;
|
|
54
|
+
switch (name) {
|
|
55
|
+
case 'relay_send': {
|
|
56
|
+
const input = relaySendSchema.parse(args);
|
|
57
|
+
result = await handleRelaySend(client, input);
|
|
58
|
+
break;
|
|
59
|
+
}
|
|
60
|
+
case 'relay_inbox': {
|
|
61
|
+
const input = relayInboxSchema.parse(args);
|
|
62
|
+
result = await handleRelayInbox(client, input);
|
|
63
|
+
break;
|
|
64
|
+
}
|
|
65
|
+
case 'relay_who': {
|
|
66
|
+
const input = relayWhoSchema.parse(args);
|
|
67
|
+
result = await handleRelayWho(client, input);
|
|
68
|
+
break;
|
|
69
|
+
}
|
|
70
|
+
case 'relay_spawn': {
|
|
71
|
+
const input = relaySpawnSchema.parse(args);
|
|
72
|
+
result = await handleRelaySpawn(client, input);
|
|
73
|
+
break;
|
|
74
|
+
}
|
|
75
|
+
case 'relay_release': {
|
|
76
|
+
const input = relayReleaseSchema.parse(args);
|
|
77
|
+
result = await handleRelayRelease(client, input);
|
|
78
|
+
break;
|
|
79
|
+
}
|
|
80
|
+
case 'relay_status': {
|
|
81
|
+
const input = relayStatusSchema.parse(args);
|
|
82
|
+
result = await handleRelayStatus(client, input);
|
|
83
|
+
break;
|
|
84
|
+
}
|
|
85
|
+
case 'relay_logs': {
|
|
86
|
+
const input = relayLogsSchema.parse(args);
|
|
87
|
+
result = await handleRelayLogs(client, input);
|
|
88
|
+
break;
|
|
89
|
+
}
|
|
90
|
+
case 'relay_metrics': {
|
|
91
|
+
const input = relayMetricsSchema.parse(args);
|
|
92
|
+
result = await handleRelayMetrics(client, input);
|
|
93
|
+
break;
|
|
94
|
+
}
|
|
95
|
+
case 'relay_health': {
|
|
96
|
+
const input = relayHealthSchema.parse(args);
|
|
97
|
+
result = await handleRelayHealth(client, input);
|
|
98
|
+
break;
|
|
99
|
+
}
|
|
100
|
+
default:
|
|
101
|
+
return {
|
|
102
|
+
content: [
|
|
103
|
+
{
|
|
104
|
+
type: 'text',
|
|
105
|
+
text: `Unknown tool: ${name}`,
|
|
106
|
+
},
|
|
107
|
+
],
|
|
108
|
+
isError: true,
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
return {
|
|
112
|
+
content: [
|
|
113
|
+
{
|
|
114
|
+
type: 'text',
|
|
115
|
+
text: result,
|
|
116
|
+
},
|
|
117
|
+
],
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
catch (error) {
|
|
121
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
122
|
+
return {
|
|
123
|
+
content: [
|
|
124
|
+
{
|
|
125
|
+
type: 'text',
|
|
126
|
+
text: `Error executing ${name}: ${message}`,
|
|
127
|
+
},
|
|
128
|
+
],
|
|
129
|
+
isError: true,
|
|
130
|
+
};
|
|
131
|
+
}
|
|
132
|
+
});
|
|
133
|
+
// Register prompt listing handler
|
|
134
|
+
server.setRequestHandler(ListPromptsRequestSchema, async () => ({
|
|
135
|
+
prompts: PROMPTS,
|
|
136
|
+
}));
|
|
137
|
+
// Register prompt get handler
|
|
138
|
+
server.setRequestHandler(GetPromptRequestSchema, async (request) => {
|
|
139
|
+
const { name } = request.params;
|
|
140
|
+
if (name === 'relay_protocol') {
|
|
141
|
+
return {
|
|
142
|
+
description: 'Agent Relay protocol documentation',
|
|
143
|
+
messages: [
|
|
144
|
+
{
|
|
145
|
+
role: 'user',
|
|
146
|
+
content: { type: 'text', text: getProtocolPrompt() },
|
|
147
|
+
},
|
|
148
|
+
],
|
|
149
|
+
};
|
|
150
|
+
}
|
|
151
|
+
throw new Error(`Unknown prompt: ${name}`);
|
|
152
|
+
});
|
|
153
|
+
// Register resource listing handler
|
|
154
|
+
server.setRequestHandler(ListResourcesRequestSchema, async () => ({
|
|
155
|
+
resources: RESOURCES,
|
|
156
|
+
}));
|
|
157
|
+
// Register resource read handler
|
|
158
|
+
server.setRequestHandler(ReadResourceRequestSchema, async (request) => {
|
|
159
|
+
const { uri } = request.params;
|
|
160
|
+
switch (uri) {
|
|
161
|
+
case 'relay://agents':
|
|
162
|
+
return {
|
|
163
|
+
contents: [
|
|
164
|
+
{
|
|
165
|
+
uri,
|
|
166
|
+
mimeType: 'application/json',
|
|
167
|
+
text: await getAgentsResource(client),
|
|
168
|
+
},
|
|
169
|
+
],
|
|
170
|
+
};
|
|
171
|
+
case 'relay://inbox':
|
|
172
|
+
return {
|
|
173
|
+
contents: [
|
|
174
|
+
{
|
|
175
|
+
uri,
|
|
176
|
+
mimeType: 'application/json',
|
|
177
|
+
text: await getInboxResource(client),
|
|
178
|
+
},
|
|
179
|
+
],
|
|
180
|
+
};
|
|
181
|
+
case 'relay://project':
|
|
182
|
+
return {
|
|
183
|
+
contents: [
|
|
184
|
+
{
|
|
185
|
+
uri,
|
|
186
|
+
mimeType: 'application/json',
|
|
187
|
+
text: await getProjectResource(client),
|
|
188
|
+
},
|
|
189
|
+
],
|
|
190
|
+
};
|
|
191
|
+
default:
|
|
192
|
+
throw new Error(`Unknown resource: ${uri}`);
|
|
193
|
+
}
|
|
194
|
+
});
|
|
195
|
+
return server;
|
|
196
|
+
}
|
|
197
|
+
/**
|
|
198
|
+
* Run the MCP server with stdio transport.
|
|
199
|
+
* This is the main entry point when running as a standalone process.
|
|
200
|
+
*/
|
|
201
|
+
export async function runMCPServer(client, config) {
|
|
202
|
+
const server = createMCPServer(client, config);
|
|
203
|
+
const transport = new StdioServerTransport();
|
|
204
|
+
await server.connect(transport);
|
|
205
|
+
// Handle graceful shutdown
|
|
206
|
+
process.on('SIGINT', async () => {
|
|
207
|
+
await server.close();
|
|
208
|
+
process.exit(0);
|
|
209
|
+
});
|
|
210
|
+
process.on('SIGTERM', async () => {
|
|
211
|
+
await server.close();
|
|
212
|
+
process.exit(0);
|
|
213
|
+
});
|
|
214
|
+
}
|
|
215
|
+
//# sourceMappingURL=server.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
|
package/dist/simple.d.ts
ADDED
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Simple Programmatic API for Agent Relay MCP Tools
|
|
3
|
+
*
|
|
4
|
+
* Dead simple access to relay tools without MCP protocol overhead.
|
|
5
|
+
*
|
|
6
|
+
* @example
|
|
7
|
+
* ```typescript
|
|
8
|
+
* import { createTools } from '@agent-relay/mcp/simple';
|
|
9
|
+
*
|
|
10
|
+
* const tools = await createTools('MyAgent');
|
|
11
|
+
*
|
|
12
|
+
* await tools.send('Bob', 'Hello!');
|
|
13
|
+
* const messages = await tools.inbox();
|
|
14
|
+
* const agents = await tools.who();
|
|
15
|
+
* ```
|
|
16
|
+
*/
|
|
17
|
+
import { createRelayClient, type RelayClient, type RelayClientOptions } from './client.js';
|
|
18
|
+
export interface Message {
|
|
19
|
+
id: string;
|
|
20
|
+
from: string;
|
|
21
|
+
content: string;
|
|
22
|
+
channel?: string;
|
|
23
|
+
thread?: string;
|
|
24
|
+
}
|
|
25
|
+
export interface Agent {
|
|
26
|
+
name: string;
|
|
27
|
+
cli: string;
|
|
28
|
+
idle?: boolean;
|
|
29
|
+
parent?: string;
|
|
30
|
+
}
|
|
31
|
+
export interface Status {
|
|
32
|
+
connected: boolean;
|
|
33
|
+
agentName: string;
|
|
34
|
+
project: string;
|
|
35
|
+
socketPath: string;
|
|
36
|
+
daemonVersion?: string;
|
|
37
|
+
uptime?: string;
|
|
38
|
+
}
|
|
39
|
+
export interface SpawnResult {
|
|
40
|
+
success: boolean;
|
|
41
|
+
error?: string;
|
|
42
|
+
}
|
|
43
|
+
export interface RelayTools {
|
|
44
|
+
/** Send a message to an agent, channel, or broadcast */
|
|
45
|
+
send(to: string, message: string, options?: {
|
|
46
|
+
thread?: string;
|
|
47
|
+
}): Promise<void>;
|
|
48
|
+
/** Send a message and wait for acknowledgment */
|
|
49
|
+
sendAndWait(to: string, message: string, options?: {
|
|
50
|
+
thread?: string;
|
|
51
|
+
timeoutMs?: number;
|
|
52
|
+
}): Promise<{
|
|
53
|
+
from: string;
|
|
54
|
+
content: string;
|
|
55
|
+
thread?: string;
|
|
56
|
+
}>;
|
|
57
|
+
/** Check inbox for messages */
|
|
58
|
+
inbox(options?: {
|
|
59
|
+
limit?: number;
|
|
60
|
+
unread_only?: boolean;
|
|
61
|
+
from?: string;
|
|
62
|
+
channel?: string;
|
|
63
|
+
}): Promise<Message[]>;
|
|
64
|
+
/** List online agents */
|
|
65
|
+
who(options?: {
|
|
66
|
+
include_idle?: boolean;
|
|
67
|
+
}): Promise<Agent[]>;
|
|
68
|
+
/** Spawn a worker agent */
|
|
69
|
+
spawn(options: {
|
|
70
|
+
name: string;
|
|
71
|
+
cli: 'claude' | 'codex' | 'gemini' | 'droid' | 'opencode';
|
|
72
|
+
task: string;
|
|
73
|
+
model?: string;
|
|
74
|
+
cwd?: string;
|
|
75
|
+
}): Promise<SpawnResult>;
|
|
76
|
+
/** Release a worker agent */
|
|
77
|
+
release(name: string, reason?: string): Promise<SpawnResult>;
|
|
78
|
+
/** Get connection status */
|
|
79
|
+
status(): Promise<Status>;
|
|
80
|
+
/** The underlying client (for advanced use) */
|
|
81
|
+
readonly client: RelayClient;
|
|
82
|
+
}
|
|
83
|
+
export interface ToolsConfig {
|
|
84
|
+
/** Socket path for daemon connection */
|
|
85
|
+
socketPath?: string;
|
|
86
|
+
/** Project name */
|
|
87
|
+
project?: string;
|
|
88
|
+
/** Request timeout in ms (default: 5000) */
|
|
89
|
+
timeout?: number;
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Create relay tools for programmatic use.
|
|
93
|
+
*
|
|
94
|
+
* @example Basic Usage
|
|
95
|
+
* ```typescript
|
|
96
|
+
* const tools = await createTools('MyAgent');
|
|
97
|
+
*
|
|
98
|
+
* // Send messages
|
|
99
|
+
* await tools.send('OtherAgent', 'Hello!');
|
|
100
|
+
* await tools.send('#general', 'Channel message');
|
|
101
|
+
* await tools.send('*', 'Broadcast to everyone');
|
|
102
|
+
*
|
|
103
|
+
* // Check inbox
|
|
104
|
+
* const messages = await tools.inbox();
|
|
105
|
+
* for (const msg of messages) {
|
|
106
|
+
* console.log(`${msg.from}: ${msg.content}`);
|
|
107
|
+
* }
|
|
108
|
+
*
|
|
109
|
+
* // List agents
|
|
110
|
+
* const agents = await tools.who();
|
|
111
|
+
* console.log('Online:', agents.map(a => a.name).join(', '));
|
|
112
|
+
* ```
|
|
113
|
+
*
|
|
114
|
+
* @example Spawn Workers
|
|
115
|
+
* ```typescript
|
|
116
|
+
* const tools = await createTools('Lead');
|
|
117
|
+
*
|
|
118
|
+
* // Spawn a worker
|
|
119
|
+
* const result = await tools.spawn({
|
|
120
|
+
* name: 'Worker1',
|
|
121
|
+
* cli: 'claude',
|
|
122
|
+
* task: 'Run the test suite',
|
|
123
|
+
* });
|
|
124
|
+
*
|
|
125
|
+
* // Release when done
|
|
126
|
+
* await tools.release('Worker1', 'Tests complete');
|
|
127
|
+
* ```
|
|
128
|
+
*/
|
|
129
|
+
export declare function createTools(agentName: string, config?: ToolsConfig): RelayTools;
|
|
130
|
+
/**
|
|
131
|
+
* Convenience function for one-off messages.
|
|
132
|
+
*
|
|
133
|
+
* @example
|
|
134
|
+
* ```typescript
|
|
135
|
+
* import { send } from '@agent-relay/mcp/simple';
|
|
136
|
+
*
|
|
137
|
+
* await send('MyAgent', 'Bob', 'Hello!');
|
|
138
|
+
* ```
|
|
139
|
+
*/
|
|
140
|
+
export declare function send(fromAgent: string, to: string, message: string, options?: {
|
|
141
|
+
thread?: string;
|
|
142
|
+
} & ToolsConfig): Promise<void>;
|
|
143
|
+
/**
|
|
144
|
+
* Convenience function to check inbox.
|
|
145
|
+
*
|
|
146
|
+
* @example
|
|
147
|
+
* ```typescript
|
|
148
|
+
* import { inbox } from '@agent-relay/mcp/simple';
|
|
149
|
+
*
|
|
150
|
+
* const messages = await inbox('MyAgent');
|
|
151
|
+
* ```
|
|
152
|
+
*/
|
|
153
|
+
export declare function inbox(agentName: string, options?: {
|
|
154
|
+
limit?: number;
|
|
155
|
+
unread_only?: boolean;
|
|
156
|
+
from?: string;
|
|
157
|
+
channel?: string;
|
|
158
|
+
} & ToolsConfig): Promise<Message[]>;
|
|
159
|
+
/**
|
|
160
|
+
* Convenience function to list agents.
|
|
161
|
+
*
|
|
162
|
+
* @example
|
|
163
|
+
* ```typescript
|
|
164
|
+
* import { who } from '@agent-relay/mcp/simple';
|
|
165
|
+
*
|
|
166
|
+
* const agents = await who();
|
|
167
|
+
* ```
|
|
168
|
+
*/
|
|
169
|
+
export declare function who(options?: {
|
|
170
|
+
include_idle?: boolean;
|
|
171
|
+
} & ToolsConfig): Promise<Agent[]>;
|
|
172
|
+
export { createRelayClient, type RelayClient, type RelayClientOptions };
|
|
173
|
+
//# sourceMappingURL=simple.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"simple.d.ts","sourceRoot":"","sources":["../src/simple.ts"],"names":[],"mappings":"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"}
|
package/dist/simple.js
ADDED
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Simple Programmatic API for Agent Relay MCP Tools
|
|
3
|
+
*
|
|
4
|
+
* Dead simple access to relay tools without MCP protocol overhead.
|
|
5
|
+
*
|
|
6
|
+
* @example
|
|
7
|
+
* ```typescript
|
|
8
|
+
* import { createTools } from '@agent-relay/mcp/simple';
|
|
9
|
+
*
|
|
10
|
+
* const tools = await createTools('MyAgent');
|
|
11
|
+
*
|
|
12
|
+
* await tools.send('Bob', 'Hello!');
|
|
13
|
+
* const messages = await tools.inbox();
|
|
14
|
+
* const agents = await tools.who();
|
|
15
|
+
* ```
|
|
16
|
+
*/
|
|
17
|
+
import { createRelayClient } from './client.js';
|
|
18
|
+
/**
|
|
19
|
+
* Create relay tools for programmatic use.
|
|
20
|
+
*
|
|
21
|
+
* @example Basic Usage
|
|
22
|
+
* ```typescript
|
|
23
|
+
* const tools = await createTools('MyAgent');
|
|
24
|
+
*
|
|
25
|
+
* // Send messages
|
|
26
|
+
* await tools.send('OtherAgent', 'Hello!');
|
|
27
|
+
* await tools.send('#general', 'Channel message');
|
|
28
|
+
* await tools.send('*', 'Broadcast to everyone');
|
|
29
|
+
*
|
|
30
|
+
* // Check inbox
|
|
31
|
+
* const messages = await tools.inbox();
|
|
32
|
+
* for (const msg of messages) {
|
|
33
|
+
* console.log(`${msg.from}: ${msg.content}`);
|
|
34
|
+
* }
|
|
35
|
+
*
|
|
36
|
+
* // List agents
|
|
37
|
+
* const agents = await tools.who();
|
|
38
|
+
* console.log('Online:', agents.map(a => a.name).join(', '));
|
|
39
|
+
* ```
|
|
40
|
+
*
|
|
41
|
+
* @example Spawn Workers
|
|
42
|
+
* ```typescript
|
|
43
|
+
* const tools = await createTools('Lead');
|
|
44
|
+
*
|
|
45
|
+
* // Spawn a worker
|
|
46
|
+
* const result = await tools.spawn({
|
|
47
|
+
* name: 'Worker1',
|
|
48
|
+
* cli: 'claude',
|
|
49
|
+
* task: 'Run the test suite',
|
|
50
|
+
* });
|
|
51
|
+
*
|
|
52
|
+
* // Release when done
|
|
53
|
+
* await tools.release('Worker1', 'Tests complete');
|
|
54
|
+
* ```
|
|
55
|
+
*/
|
|
56
|
+
export function createTools(agentName, config = {}) {
|
|
57
|
+
const client = createRelayClient({
|
|
58
|
+
agentName,
|
|
59
|
+
socketPath: config.socketPath,
|
|
60
|
+
project: config.project,
|
|
61
|
+
timeout: config.timeout,
|
|
62
|
+
});
|
|
63
|
+
return {
|
|
64
|
+
send: (to, message, options) => client.send(to, message, options),
|
|
65
|
+
sendAndWait: (to, message, options) => client.sendAndWait(to, message, options),
|
|
66
|
+
inbox: (options) => client.getInbox(options),
|
|
67
|
+
who: (options) => client.listAgents(options),
|
|
68
|
+
spawn: (options) => client.spawn(options),
|
|
69
|
+
release: (name, reason) => client.release(name, reason),
|
|
70
|
+
status: () => client.getStatus(),
|
|
71
|
+
get client() {
|
|
72
|
+
return client;
|
|
73
|
+
},
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Convenience function for one-off messages.
|
|
78
|
+
*
|
|
79
|
+
* @example
|
|
80
|
+
* ```typescript
|
|
81
|
+
* import { send } from '@agent-relay/mcp/simple';
|
|
82
|
+
*
|
|
83
|
+
* await send('MyAgent', 'Bob', 'Hello!');
|
|
84
|
+
* ```
|
|
85
|
+
*/
|
|
86
|
+
export async function send(fromAgent, to, message, options) {
|
|
87
|
+
const tools = createTools(fromAgent, options);
|
|
88
|
+
await tools.send(to, message, { thread: options?.thread });
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Convenience function to check inbox.
|
|
92
|
+
*
|
|
93
|
+
* @example
|
|
94
|
+
* ```typescript
|
|
95
|
+
* import { inbox } from '@agent-relay/mcp/simple';
|
|
96
|
+
*
|
|
97
|
+
* const messages = await inbox('MyAgent');
|
|
98
|
+
* ```
|
|
99
|
+
*/
|
|
100
|
+
export async function inbox(agentName, options) {
|
|
101
|
+
const tools = createTools(agentName, options);
|
|
102
|
+
return tools.inbox(options);
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Convenience function to list agents.
|
|
106
|
+
*
|
|
107
|
+
* @example
|
|
108
|
+
* ```typescript
|
|
109
|
+
* import { who } from '@agent-relay/mcp/simple';
|
|
110
|
+
*
|
|
111
|
+
* const agents = await who();
|
|
112
|
+
* ```
|
|
113
|
+
*/
|
|
114
|
+
export async function who(options) {
|
|
115
|
+
const tools = createTools('_query', options);
|
|
116
|
+
return tools.who(options);
|
|
117
|
+
}
|
|
118
|
+
// Re-export client for advanced use
|
|
119
|
+
export { createRelayClient };
|
|
120
|
+
//# sourceMappingURL=simple.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"simple.js","sourceRoot":"","sources":["../src/simple.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,iBAAiB,EAA6C,MAAM,aAAa,CAAC;AAiF3F;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,MAAM,UAAU,WAAW,CAAC,SAAiB,EAAE,SAAsB,EAAE;IACrE,MAAM,MAAM,GAAG,iBAAiB,CAAC;QAC/B,SAAS;QACT,UAAU,EAAE,MAAM,CAAC,UAAU;QAC7B,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,OAAO,EAAE,MAAM,CAAC,OAAO;KACxB,CAAC,CAAC;IAEH,OAAO;QACL,IAAI,EAAE,CAAC,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC;QACjE,WAAW,EAAE,CAAC,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC;QAC/E,KAAK,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC;QAC5C,GAAG,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC;QAC5C,KAAK,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC;QACzC,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;QACvD,MAAM,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,SAAS,EAAE;QAChC,IAAI,MAAM;YACR,OAAO,MAAM,CAAC;QAChB,CAAC;KACF,CAAC;AACJ,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,IAAI,CACxB,SAAiB,EACjB,EAAU,EACV,OAAe,EACf,OAA2C;IAE3C,MAAM,KAAK,GAAG,WAAW,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IAC9C,MAAM,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;AAC7D,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,KAAK,CACzB,SAAiB,EACjB,OAAkG;IAElG,MAAM,KAAK,GAAG,WAAW,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IAC9C,OAAO,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AAC9B,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,GAAG,CAAC,OAAkD;IAC1E,MAAM,KAAK,GAAG,WAAW,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC7C,OAAO,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AAC5B,CAAC;AAED,oCAAoC;AACpC,OAAO,EAAE,iBAAiB,EAA6C,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export { relaySendTool, relaySendSchema, handleRelaySend, type RelaySendInput, } from './relay-send.js';
|
|
2
|
+
export { relayInboxTool, relayInboxSchema, handleRelayInbox, type RelayInboxInput, } from './relay-inbox.js';
|
|
3
|
+
export { relayWhoTool, relayWhoSchema, handleRelayWho, type RelayWhoInput } from './relay-who.js';
|
|
4
|
+
export { relaySpawnTool, relaySpawnSchema, handleRelaySpawn, type RelaySpawnInput, } from './relay-spawn.js';
|
|
5
|
+
export { relayReleaseTool, relayReleaseSchema, handleRelayRelease, type RelayReleaseInput, } from './relay-release.js';
|
|
6
|
+
export { relayStatusTool, relayStatusSchema, handleRelayStatus, type RelayStatusInput, } from './relay-status.js';
|
|
7
|
+
export { relayLogsTool, relayLogsSchema, handleRelayLogs, type RelayLogsInput, } from './relay-logs.js';
|
|
8
|
+
export { relayMetricsTool, relayMetricsSchema, handleRelayMetrics, type RelayMetricsInput, } from './relay-metrics.js';
|
|
9
|
+
export { relayHealthTool, relayHealthSchema, handleRelayHealth, type RelayHealthInput, } from './relay-health.js';
|
|
10
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,eAAe,EACf,eAAe,EACf,KAAK,cAAc,GACpB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,cAAc,EACd,gBAAgB,EAChB,gBAAgB,EAChB,KAAK,eAAe,GACrB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,cAAc,EAAE,KAAK,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAElG,OAAO,EACL,cAAc,EACd,gBAAgB,EAChB,gBAAgB,EAChB,KAAK,eAAe,GACrB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACL,gBAAgB,EAChB,kBAAkB,EAClB,kBAAkB,EAClB,KAAK,iBAAiB,GACvB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,eAAe,EACf,iBAAiB,EACjB,iBAAiB,EACjB,KAAK,gBAAgB,GACtB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,aAAa,EACb,eAAe,EACf,eAAe,EACf,KAAK,cAAc,GACpB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,gBAAgB,EAChB,kBAAkB,EAClB,kBAAkB,EAClB,KAAK,iBAAiB,GACvB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,eAAe,EACf,iBAAiB,EACjB,iBAAiB,EACjB,KAAK,gBAAgB,GACtB,MAAM,mBAAmB,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export { relaySendTool, relaySendSchema, handleRelaySend, } from './relay-send.js';
|
|
2
|
+
export { relayInboxTool, relayInboxSchema, handleRelayInbox, } from './relay-inbox.js';
|
|
3
|
+
export { relayWhoTool, relayWhoSchema, handleRelayWho } from './relay-who.js';
|
|
4
|
+
export { relaySpawnTool, relaySpawnSchema, handleRelaySpawn, } from './relay-spawn.js';
|
|
5
|
+
export { relayReleaseTool, relayReleaseSchema, handleRelayRelease, } from './relay-release.js';
|
|
6
|
+
export { relayStatusTool, relayStatusSchema, handleRelayStatus, } from './relay-status.js';
|
|
7
|
+
export { relayLogsTool, relayLogsSchema, handleRelayLogs, } from './relay-logs.js';
|
|
8
|
+
export { relayMetricsTool, relayMetricsSchema, handleRelayMetrics, } from './relay-metrics.js';
|
|
9
|
+
export { relayHealthTool, relayHealthSchema, handleRelayHealth, } from './relay-health.js';
|
|
10
|
+
//# sourceMappingURL=index.js.map
|