@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.
Files changed (103) hide show
  1. package/LICENSE +190 -0
  2. package/README.md +214 -0
  3. package/dist/bin.d.ts +12 -0
  4. package/dist/bin.d.ts.map +1 -0
  5. package/dist/bin.js +127 -0
  6. package/dist/bin.js.map +1 -0
  7. package/dist/client.d.ts +68 -0
  8. package/dist/client.d.ts.map +1 -0
  9. package/dist/client.js +115 -0
  10. package/dist/client.js.map +1 -0
  11. package/dist/cloud.d.ts +108 -0
  12. package/dist/cloud.d.ts.map +1 -0
  13. package/dist/cloud.js +279 -0
  14. package/dist/cloud.js.map +1 -0
  15. package/dist/errors.d.ts +27 -0
  16. package/dist/errors.d.ts.map +1 -0
  17. package/dist/errors.js +48 -0
  18. package/dist/errors.js.map +1 -0
  19. package/dist/index.d.ts +10 -0
  20. package/dist/index.d.ts.map +1 -0
  21. package/dist/index.js +16 -0
  22. package/dist/index.js.map +1 -0
  23. package/dist/install-cli.d.ts +35 -0
  24. package/dist/install-cli.d.ts.map +1 -0
  25. package/dist/install-cli.js +157 -0
  26. package/dist/install-cli.js.map +1 -0
  27. package/dist/install.d.ts +101 -0
  28. package/dist/install.d.ts.map +1 -0
  29. package/dist/install.js +398 -0
  30. package/dist/install.js.map +1 -0
  31. package/dist/prompts/index.d.ts +2 -0
  32. package/dist/prompts/index.d.ts.map +1 -0
  33. package/dist/prompts/index.js +2 -0
  34. package/dist/prompts/index.js.map +1 -0
  35. package/dist/prompts/protocol.d.ts +11 -0
  36. package/dist/prompts/protocol.d.ts.map +1 -0
  37. package/dist/prompts/protocol.js +168 -0
  38. package/dist/prompts/protocol.js.map +1 -0
  39. package/dist/resources/agents.d.ts +11 -0
  40. package/dist/resources/agents.d.ts.map +1 -0
  41. package/dist/resources/agents.js +17 -0
  42. package/dist/resources/agents.js.map +1 -0
  43. package/dist/resources/inbox.d.ts +11 -0
  44. package/dist/resources/inbox.d.ts.map +1 -0
  45. package/dist/resources/inbox.js +17 -0
  46. package/dist/resources/inbox.js.map +1 -0
  47. package/dist/resources/index.d.ts +4 -0
  48. package/dist/resources/index.d.ts.map +1 -0
  49. package/dist/resources/index.js +4 -0
  50. package/dist/resources/index.js.map +1 -0
  51. package/dist/resources/project.d.ts +11 -0
  52. package/dist/resources/project.d.ts.map +1 -0
  53. package/dist/resources/project.js +21 -0
  54. package/dist/resources/project.js.map +1 -0
  55. package/dist/server.d.ts +19 -0
  56. package/dist/server.d.ts.map +1 -0
  57. package/dist/server.js +215 -0
  58. package/dist/server.js.map +1 -0
  59. package/dist/simple.d.ts +173 -0
  60. package/dist/simple.d.ts.map +1 -0
  61. package/dist/simple.js +120 -0
  62. package/dist/simple.js.map +1 -0
  63. package/dist/tools/index.d.ts +10 -0
  64. package/dist/tools/index.d.ts.map +1 -0
  65. package/dist/tools/index.js +10 -0
  66. package/dist/tools/index.js.map +1 -0
  67. package/dist/tools/relay-health.d.ts +23 -0
  68. package/dist/tools/relay-health.d.ts.map +1 -0
  69. package/dist/tools/relay-health.js +138 -0
  70. package/dist/tools/relay-health.js.map +1 -0
  71. package/dist/tools/relay-inbox.d.ts +26 -0
  72. package/dist/tools/relay-inbox.d.ts.map +1 -0
  73. package/dist/tools/relay-inbox.js +58 -0
  74. package/dist/tools/relay-inbox.js.map +1 -0
  75. package/dist/tools/relay-logs.d.ts +20 -0
  76. package/dist/tools/relay-logs.d.ts.map +1 -0
  77. package/dist/tools/relay-logs.js +88 -0
  78. package/dist/tools/relay-logs.js.map +1 -0
  79. package/dist/tools/relay-metrics.d.ts +20 -0
  80. package/dist/tools/relay-metrics.d.ts.map +1 -0
  81. package/dist/tools/relay-metrics.js +135 -0
  82. package/dist/tools/relay-metrics.js.map +1 -0
  83. package/dist/tools/relay-release.d.ts +20 -0
  84. package/dist/tools/relay-release.d.ts.map +1 -0
  85. package/dist/tools/relay-release.js +44 -0
  86. package/dist/tools/relay-release.js.map +1 -0
  87. package/dist/tools/relay-send.d.ts +29 -0
  88. package/dist/tools/relay-send.d.ts.map +1 -0
  89. package/dist/tools/relay-send.js +71 -0
  90. package/dist/tools/relay-send.js.map +1 -0
  91. package/dist/tools/relay-spawn.d.ts +36 -0
  92. package/dist/tools/relay-spawn.d.ts.map +1 -0
  93. package/dist/tools/relay-spawn.js +73 -0
  94. package/dist/tools/relay-spawn.js.map +1 -0
  95. package/dist/tools/relay-status.d.ts +11 -0
  96. package/dist/tools/relay-status.d.ts.map +1 -0
  97. package/dist/tools/relay-status.js +43 -0
  98. package/dist/tools/relay-status.js.map +1 -0
  99. package/dist/tools/relay-who.d.ts +20 -0
  100. package/dist/tools/relay-who.d.ts.map +1 -0
  101. package/dist/tools/relay-who.js +47 -0
  102. package/dist/tools/relay-who.js.map +1 -0
  103. 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,4 @@
1
+ export { agentsResource, getAgentsResource } from './agents.js';
2
+ export { inboxResource, getInboxResource } from './inbox.js';
3
+ export { projectResource, getProjectResource } from './project.js';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -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,4 @@
1
+ export { agentsResource, getAgentsResource } from './agents.js';
2
+ export { inboxResource, getInboxResource } from './inbox.js';
3
+ export { projectResource, getProjectResource } from './project.js';
4
+ //# sourceMappingURL=index.js.map
@@ -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"}
@@ -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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"}
@@ -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":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,iBAAiB,EAAE,KAAK,WAAW,EAAE,KAAK,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAE3F,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,KAAK;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,MAAM;IACrB,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,UAAU;IACzB,wDAAwD;IACxD,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEhF,iDAAiD;IACjD,WAAW,CACT,EAAE,EAAE,MAAM,EACV,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,GAChD,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAE/D,+BAA+B;IAC/B,KAAK,CAAC,OAAO,CAAC,EAAE;QACd,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,WAAW,CAAC,EAAE,OAAO,CAAC;QACtB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;IAEvB,yBAAyB;IACzB,GAAG,CAAC,OAAO,CAAC,EAAE;QAAE,YAAY,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;IAE5D,2BAA2B;IAC3B,KAAK,CAAC,OAAO,EAAE;QACb,IAAI,EAAE,MAAM,CAAC;QACb,GAAG,EAAE,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,GAAG,UAAU,CAAC;QAC1D,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,GAAG,CAAC,EAAE,MAAM,CAAC;KACd,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IAEzB,6BAA6B;IAC7B,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IAE7D,4BAA4B;IAC5B,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAE1B,+CAA+C;IAC/C,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;CAC9B;AAED,MAAM,WAAW,WAAW;IAC1B,wCAAwC;IACxC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,mBAAmB;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,4CAA4C;IAC5C,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,wBAAgB,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,GAAE,WAAgB,GAAG,UAAU,CAoBnF;AAED;;;;;;;;;GASG;AACH,wBAAsB,IAAI,CACxB,SAAS,EAAE,MAAM,EACjB,EAAE,EAAE,MAAM,EACV,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,WAAW,GAC1C,OAAO,CAAC,IAAI,CAAC,CAGf;AAED;;;;;;;;;GASG;AACH,wBAAsB,KAAK,CACzB,SAAS,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,OAAO,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,WAAW,GACjG,OAAO,CAAC,OAAO,EAAE,CAAC,CAGpB;AAED;;;;;;;;;GASG;AACH,wBAAsB,GAAG,CAAC,OAAO,CAAC,EAAE;IAAE,YAAY,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,WAAW,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC,CAG9F;AAGD,OAAO,EAAE,iBAAiB,EAAE,KAAK,WAAW,EAAE,KAAK,kBAAkB,EAAE,CAAC"}
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