agent-relay 3.1.23 → 3.2.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/README.md +2 -0
- package/bin/agent-relay-broker-darwin-arm64 +0 -0
- package/bin/agent-relay-broker-darwin-x64 +0 -0
- package/bin/agent-relay-broker-linux-arm64 +0 -0
- package/bin/agent-relay-broker-linux-x64 +0 -0
- package/dist/index.cjs +2852 -16618
- package/dist/src/cli/commands/setup.js +1 -1
- package/dist/src/cli/commands/setup.js.map +1 -1
- package/dist/src/cli/lib/broker-lifecycle.d.ts.map +1 -1
- package/dist/src/cli/lib/broker-lifecycle.js +11 -0
- package/dist/src/cli/lib/broker-lifecycle.js.map +1 -1
- package/dist/src/cli/lib/relaycast-mcp-command.d.ts +5 -0
- package/dist/src/cli/lib/relaycast-mcp-command.d.ts.map +1 -0
- package/dist/src/cli/lib/relaycast-mcp-command.js +13 -0
- package/dist/src/cli/lib/relaycast-mcp-command.js.map +1 -0
- package/dist/src/cli/relaycast-mcp.d.ts +35 -0
- package/dist/src/cli/relaycast-mcp.d.ts.map +1 -0
- package/dist/src/cli/relaycast-mcp.js +432 -0
- package/dist/src/cli/relaycast-mcp.js.map +1 -0
- package/package.json +9 -8
- package/packages/acp-bridge/package.json +2 -2
- package/packages/config/package.json +1 -1
- package/packages/hooks/package.json +4 -4
- package/packages/memory/package.json +2 -2
- package/packages/openclaw/README.md +7 -7
- package/packages/openclaw/dist/identity/files.js +5 -5
- package/packages/openclaw/dist/identity/files.js.map +1 -1
- package/packages/openclaw/dist/setup.js +4 -4
- package/packages/openclaw/package.json +2 -2
- package/packages/openclaw/skill/SKILL.md +24 -24
- package/packages/openclaw/src/identity/files.ts +5 -5
- package/packages/openclaw/src/setup.ts +4 -4
- package/packages/openclaw/templates/SOUL.md.template +5 -5
- package/packages/policy/package.json +2 -2
- package/packages/sdk/dist/__tests__/unit.test.js +8 -0
- package/packages/sdk/dist/__tests__/unit.test.js.map +1 -1
- package/packages/sdk/dist/client.js +2 -2
- package/packages/sdk/dist/client.js.map +1 -1
- package/packages/sdk/dist/examples/example.js +1 -1
- package/packages/sdk/dist/examples/example.js.map +1 -1
- package/packages/sdk/dist/examples/ralph-loop.js +6 -6
- package/packages/sdk/dist/examples/ralph-loop.js.map +1 -1
- package/packages/sdk/dist/relay-adapter.js +4 -4
- package/packages/sdk/dist/relay-adapter.js.map +1 -1
- package/packages/sdk/dist/relay.d.ts +1 -0
- package/packages/sdk/dist/relay.d.ts.map +1 -1
- package/packages/sdk/dist/relay.js +2 -0
- package/packages/sdk/dist/relay.js.map +1 -1
- package/packages/sdk/dist/workflows/runner.js +8 -8
- package/packages/sdk/dist/workflows/runner.js.map +1 -1
- package/packages/sdk/dist/workflows/validator.js +4 -4
- package/packages/sdk/dist/workflows/validator.js.map +1 -1
- package/packages/sdk/package.json +2 -2
- package/packages/sdk/src/__tests__/unit.test.ts +10 -0
- package/packages/sdk/src/client.ts +2 -2
- package/packages/sdk/src/examples/example.ts +1 -1
- package/packages/sdk/src/examples/ralph-loop.ts +6 -6
- package/packages/sdk/src/relay-adapter.ts +4 -4
- package/packages/sdk/src/relay.ts +2 -0
- package/packages/sdk/src/workflows/runner.ts +8 -8
- package/packages/sdk/src/workflows/validator.ts +4 -4
- package/packages/sdk-py/pyproject.toml +1 -1
- package/packages/sdk-py/src/agent_relay/models.py +11 -0
- package/packages/sdk-py/src/agent_relay/relay.py +9 -6
- package/packages/sdk-py/tests/test_relay_lifecycle_hooks.py +23 -0
- package/packages/telemetry/package.json +1 -1
- package/packages/trajectory/package.json +2 -2
- package/packages/user-directory/package.json +2 -2
- package/packages/utils/package.json +2 -2
- package/relay-snippets/agent-relay-protocol.md +4 -4
- package/relay-snippets/agent-relay-snippet.md +31 -43
|
@@ -0,0 +1,432 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import fs from 'node:fs';
|
|
3
|
+
import path from 'node:path';
|
|
4
|
+
import { fileURLToPath } from 'node:url';
|
|
5
|
+
import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
6
|
+
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
|
|
7
|
+
import { ListToolsRequestSchema } from '@modelcontextprotocol/sdk/types.js';
|
|
8
|
+
import { createInternalRelayCast, createInternalWsClient } from '@relaycast/sdk/internal';
|
|
9
|
+
import { MCP_VERSION } from '@relaycast/mcp';
|
|
10
|
+
import { enablePiggyback } from '@relaycast/mcp/dist/piggyback.js';
|
|
11
|
+
import { registerResourceDefinitions } from '@relaycast/mcp/dist/resources/definitions.js';
|
|
12
|
+
import { SubscriptionManager } from '@relaycast/mcp/dist/resources/subscriptions.js';
|
|
13
|
+
import { registerChannelTools } from '@relaycast/mcp/dist/tools/channels.js';
|
|
14
|
+
import { registerFeatureTools } from '@relaycast/mcp/dist/tools/features.js';
|
|
15
|
+
import { registerMessagingTools } from '@relaycast/mcp/dist/tools/messaging.js';
|
|
16
|
+
import { registerProgrammabilityTools } from '@relaycast/mcp/dist/tools/programmability.js';
|
|
17
|
+
import { createMcpTelemetry } from '@relaycast/mcp/dist/telemetry.js';
|
|
18
|
+
import { createInitialSession } from '@relaycast/mcp/dist/types.js';
|
|
19
|
+
import { WsBridge } from '@relaycast/mcp/dist/resources/ws-bridge.js';
|
|
20
|
+
import { z } from 'zod';
|
|
21
|
+
const DEFAULT_BASE_URL = 'https://api.relaycast.dev';
|
|
22
|
+
const DEFAULT_SYSTEM_PROMPT = `You are an AI agent in a collaborative workspace powered by Agent Relay. You can communicate with other agents using the following tools:
|
|
23
|
+
|
|
24
|
+
## Getting Started
|
|
25
|
+
1. If workspace key is not configured, call "create_workspace" or "set_workspace_key"
|
|
26
|
+
2. Call "register" with your agent name to join the workspace
|
|
27
|
+
3. Use "list_channels" to see available channels
|
|
28
|
+
4. Use "join_channel" to join channels of interest
|
|
29
|
+
5. Use "check_inbox" to see unread messages and mentions
|
|
30
|
+
|
|
31
|
+
## Communication
|
|
32
|
+
- Post messages to channels with "post_message"
|
|
33
|
+
- Send direct messages with "send_dm"
|
|
34
|
+
- Reply to threads with "reply_to_thread"
|
|
35
|
+
- React to messages with "add_reaction"
|
|
36
|
+
|
|
37
|
+
## Best Practices
|
|
38
|
+
- Check your inbox regularly for new messages and mentions
|
|
39
|
+
- Use channels for topic-based discussions
|
|
40
|
+
- Use threads for detailed discussions to keep channels organized
|
|
41
|
+
- React with emoji to acknowledge messages (e.g. thumbsup for agreement)
|
|
42
|
+
- Keep messages concise and actionable`;
|
|
43
|
+
const jsonResult = z.object({}).passthrough();
|
|
44
|
+
function normalizeBaseUrl(baseUrl) {
|
|
45
|
+
return (baseUrl ?? DEFAULT_BASE_URL).replace(/\/+$/, '');
|
|
46
|
+
}
|
|
47
|
+
function isEntrypoint() {
|
|
48
|
+
const invocationPath = process.argv[1];
|
|
49
|
+
if (!invocationPath)
|
|
50
|
+
return false;
|
|
51
|
+
try {
|
|
52
|
+
return fs.realpathSync(invocationPath) === fs.realpathSync(fileURLToPath(import.meta.url));
|
|
53
|
+
}
|
|
54
|
+
catch {
|
|
55
|
+
return path.resolve(invocationPath) === fileURLToPath(import.meta.url);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
function envFlagEnabled(value) {
|
|
59
|
+
if (!value) {
|
|
60
|
+
return false;
|
|
61
|
+
}
|
|
62
|
+
const normalized = value.trim().toLowerCase();
|
|
63
|
+
return normalized === '1' || normalized === 'true' || normalized === 'yes' || normalized === 'on';
|
|
64
|
+
}
|
|
65
|
+
function normalizeAgentType(value) {
|
|
66
|
+
if (value === 'agent' || value === 'human') {
|
|
67
|
+
return value;
|
|
68
|
+
}
|
|
69
|
+
return undefined;
|
|
70
|
+
}
|
|
71
|
+
async function createWorkspace(name, baseUrl) {
|
|
72
|
+
const response = await fetch(`${normalizeBaseUrl(baseUrl)}/v1/workspaces`, {
|
|
73
|
+
method: 'POST',
|
|
74
|
+
headers: { 'Content-Type': 'application/json' },
|
|
75
|
+
body: JSON.stringify({ name }),
|
|
76
|
+
});
|
|
77
|
+
const payload = (await response.json());
|
|
78
|
+
if (!payload || typeof payload !== 'object' || typeof payload.ok !== 'boolean') {
|
|
79
|
+
throw new Error('Invalid response while creating workspace');
|
|
80
|
+
}
|
|
81
|
+
if (!payload.ok) {
|
|
82
|
+
throw new Error(payload.error?.message ?? 'Failed to create workspace');
|
|
83
|
+
}
|
|
84
|
+
return payload.data ?? {};
|
|
85
|
+
}
|
|
86
|
+
function requireWorkspaceKey(session) {
|
|
87
|
+
if (session.workspaceKey) {
|
|
88
|
+
return;
|
|
89
|
+
}
|
|
90
|
+
throw new Error('Workspace key not configured. Call "create_workspace" or "set_workspace_key" first.');
|
|
91
|
+
}
|
|
92
|
+
export async function registerAgentWithRebind({ session, setSession, getRelay, name, type, persona, metadata, strictAgentName, preferredAgentName, forcedAgentType, }) {
|
|
93
|
+
requireWorkspaceKey(session);
|
|
94
|
+
const configuredName = session.agentName ?? preferredAgentName?.trim() ?? null;
|
|
95
|
+
const warnings = [];
|
|
96
|
+
const effectiveName = strictAgentName && configuredName ? configuredName : name;
|
|
97
|
+
if (strictAgentName && configuredName && name.trim() !== configuredName) {
|
|
98
|
+
warnings.push(`Strict worker identity is enabled; ignoring requested name "${name}" and using "${configuredName}".`);
|
|
99
|
+
}
|
|
100
|
+
const effectiveType = forcedAgentType ?? type;
|
|
101
|
+
if (forcedAgentType && type && type !== forcedAgentType) {
|
|
102
|
+
warnings.push(`Forced worker type is enabled; ignoring requested type "${type}" and using "${forcedAgentType}".`);
|
|
103
|
+
}
|
|
104
|
+
if (session.agentToken && effectiveName && strictAgentName) {
|
|
105
|
+
return {
|
|
106
|
+
name: effectiveName,
|
|
107
|
+
token: session.agentToken,
|
|
108
|
+
registered_name: effectiveName,
|
|
109
|
+
warnings,
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
const relay = getRelay();
|
|
113
|
+
const result = await relay.agents.registerOrRotate({
|
|
114
|
+
name: effectiveName,
|
|
115
|
+
type: effectiveType,
|
|
116
|
+
persona,
|
|
117
|
+
metadata,
|
|
118
|
+
});
|
|
119
|
+
const reboundName = result.name?.trim() ? result.name : effectiveName;
|
|
120
|
+
setSession({ agentToken: result.token, agentName: reboundName });
|
|
121
|
+
return {
|
|
122
|
+
...result,
|
|
123
|
+
registered_name: reboundName,
|
|
124
|
+
warnings,
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
function registerPatchedRegistrationTools(server, getRelay, getSession, setSession, baseUrl, strictAgentName, preferredAgentName, forcedAgentType) {
|
|
128
|
+
server.registerTool('create_workspace', {
|
|
129
|
+
title: 'Create Workspace',
|
|
130
|
+
description: 'Create a new Relaycast workspace and automatically store its API key in this MCP session. The workspace serves as an isolated environment where agents can communicate via channels, DMs, and threads. After creation, the workspace key is ready for immediate use with register and other workspace-level tools.',
|
|
131
|
+
inputSchema: {
|
|
132
|
+
name: z
|
|
133
|
+
.string()
|
|
134
|
+
.describe('Human-readable workspace name, used to identify the workspace in dashboards and logs'),
|
|
135
|
+
},
|
|
136
|
+
outputSchema: jsonResult,
|
|
137
|
+
annotations: {
|
|
138
|
+
readOnlyHint: false,
|
|
139
|
+
destructiveHint: false,
|
|
140
|
+
idempotentHint: false,
|
|
141
|
+
openWorldHint: true,
|
|
142
|
+
},
|
|
143
|
+
}, async ({ name }) => {
|
|
144
|
+
const workspace = await createWorkspace(name, baseUrl);
|
|
145
|
+
const workspaceKey = workspace.api_key ?? workspace.apiKey;
|
|
146
|
+
if (!workspaceKey || typeof workspaceKey !== 'string') {
|
|
147
|
+
throw new Error('Workspace created, but the response did not include api_key');
|
|
148
|
+
}
|
|
149
|
+
setSession({ workspaceKey, agentToken: null, agentName: null });
|
|
150
|
+
return {
|
|
151
|
+
content: [{ type: 'text', text: JSON.stringify(workspace, null, 2) }],
|
|
152
|
+
structuredContent: workspace,
|
|
153
|
+
};
|
|
154
|
+
});
|
|
155
|
+
server.registerTool('set_workspace_key', {
|
|
156
|
+
title: 'Set Workspace Key',
|
|
157
|
+
description: 'Authenticate this MCP session by providing an existing workspace API key (rk_live_...). This enables all workspace-level tools including agent registration, channel management, and messaging. If the key belongs to a different workspace than the current session, the previous agent identity is cleared and you must re-register.',
|
|
158
|
+
inputSchema: {
|
|
159
|
+
api_key: z
|
|
160
|
+
.string()
|
|
161
|
+
.describe('Workspace API key starting with "rk_live_", obtained from workspace creation or the Relaycast dashboard'),
|
|
162
|
+
},
|
|
163
|
+
outputSchema: {
|
|
164
|
+
message: z
|
|
165
|
+
.string()
|
|
166
|
+
.describe('Confirmation message indicating whether the workspace key was set successfully'),
|
|
167
|
+
},
|
|
168
|
+
annotations: {
|
|
169
|
+
readOnlyHint: false,
|
|
170
|
+
destructiveHint: false,
|
|
171
|
+
idempotentHint: true,
|
|
172
|
+
openWorldHint: false,
|
|
173
|
+
},
|
|
174
|
+
}, async ({ api_key }) => {
|
|
175
|
+
if (!api_key.startsWith('rk_live_')) {
|
|
176
|
+
throw new Error('Workspace key must start with "rk_live_"');
|
|
177
|
+
}
|
|
178
|
+
const session = getSession();
|
|
179
|
+
const switchingWorkspace = session.workspaceKey !== api_key;
|
|
180
|
+
if (switchingWorkspace) {
|
|
181
|
+
setSession({ workspaceKey: api_key, agentToken: null, agentName: null });
|
|
182
|
+
}
|
|
183
|
+
else {
|
|
184
|
+
setSession({ workspaceKey: api_key });
|
|
185
|
+
}
|
|
186
|
+
const message = switchingWorkspace
|
|
187
|
+
? 'Workspace key set. Previous agent session was cleared; call "register" again.'
|
|
188
|
+
: 'Workspace key set.';
|
|
189
|
+
return {
|
|
190
|
+
content: [{ type: 'text', text: message }],
|
|
191
|
+
structuredContent: { message },
|
|
192
|
+
};
|
|
193
|
+
});
|
|
194
|
+
server.registerTool('register', {
|
|
195
|
+
title: 'Register Agent',
|
|
196
|
+
description: 'Register an agent identity in the current workspace and obtain an agent token for all subsequent operations. The agent name must be unique within the workspace. Re-registering the same name rotates or rebinds a usable token for that agent in the current workspace.',
|
|
197
|
+
inputSchema: {
|
|
198
|
+
name: z
|
|
199
|
+
.string()
|
|
200
|
+
.describe('Unique agent name within the workspace, used as the display name in messages and mentions'),
|
|
201
|
+
type: z
|
|
202
|
+
.enum(['agent', 'human'])
|
|
203
|
+
.optional()
|
|
204
|
+
.describe('Whether this identity represents an AI agent or a human user'),
|
|
205
|
+
persona: z
|
|
206
|
+
.string()
|
|
207
|
+
.optional()
|
|
208
|
+
.describe("Free-text persona description that other agents can read to understand this agent's role and capabilities"),
|
|
209
|
+
metadata: z
|
|
210
|
+
.record(z.string(), z.unknown())
|
|
211
|
+
.optional()
|
|
212
|
+
.describe('Key-value metadata to attach to the agent (e.g. { "cli": "claude", "model": "claude-sonnet-4-6" }). Use "model" to indicate which AI model powers this agent.'),
|
|
213
|
+
},
|
|
214
|
+
outputSchema: jsonResult,
|
|
215
|
+
annotations: { readOnlyHint: false, destructiveHint: false, idempotentHint: true, openWorldHint: true },
|
|
216
|
+
}, async ({ name, type, persona, metadata }) => {
|
|
217
|
+
const payload = await registerAgentWithRebind({
|
|
218
|
+
session: getSession(),
|
|
219
|
+
setSession,
|
|
220
|
+
getRelay,
|
|
221
|
+
name,
|
|
222
|
+
type,
|
|
223
|
+
persona,
|
|
224
|
+
metadata,
|
|
225
|
+
strictAgentName,
|
|
226
|
+
preferredAgentName: preferredAgentName ?? null,
|
|
227
|
+
forcedAgentType,
|
|
228
|
+
});
|
|
229
|
+
return {
|
|
230
|
+
content: [{ type: 'text', text: JSON.stringify(payload, null, 2) }],
|
|
231
|
+
structuredContent: payload,
|
|
232
|
+
};
|
|
233
|
+
});
|
|
234
|
+
}
|
|
235
|
+
export function createPatchedRelayMcpServer(options) {
|
|
236
|
+
const session = createInitialSession({
|
|
237
|
+
workspaceKey: options.apiKey ?? null,
|
|
238
|
+
agentToken: options.agentToken ?? null,
|
|
239
|
+
agentName: options.agentName ?? null,
|
|
240
|
+
});
|
|
241
|
+
const mcpOrigin = {
|
|
242
|
+
surface: 'mcp',
|
|
243
|
+
client: '@agent-relay/relaycast-mcp',
|
|
244
|
+
version: MCP_VERSION,
|
|
245
|
+
};
|
|
246
|
+
const telemetry = createMcpTelemetry(MCP_VERSION, {
|
|
247
|
+
originSurface: mcpOrigin.surface,
|
|
248
|
+
originClient: mcpOrigin.client,
|
|
249
|
+
originVersion: mcpOrigin.version,
|
|
250
|
+
});
|
|
251
|
+
const mcpServer = new McpServer({ name: 'agent-relay', version: MCP_VERSION }, {
|
|
252
|
+
capabilities: {
|
|
253
|
+
resources: { subscribe: true, listChanged: true },
|
|
254
|
+
tools: {},
|
|
255
|
+
prompts: {},
|
|
256
|
+
},
|
|
257
|
+
});
|
|
258
|
+
telemetry.capture('relaycast_mcp_server_started', {
|
|
259
|
+
source_surface: 'mcp',
|
|
260
|
+
transport: options.telemetryTransport ?? 'unknown',
|
|
261
|
+
});
|
|
262
|
+
const getSession = () => session;
|
|
263
|
+
const getRelay = () => {
|
|
264
|
+
const workspaceKey = session.workspaceKey;
|
|
265
|
+
if (!workspaceKey) {
|
|
266
|
+
throw new Error('Workspace key not configured. Set RELAY_API_KEY at startup, or call "create_workspace" or "set_workspace_key" first.');
|
|
267
|
+
}
|
|
268
|
+
return createInternalRelayCast({
|
|
269
|
+
apiKey: workspaceKey,
|
|
270
|
+
baseUrl: options.baseUrl,
|
|
271
|
+
}, mcpOrigin);
|
|
272
|
+
};
|
|
273
|
+
const setSession = (partial) => {
|
|
274
|
+
const nextAgentToken = partial.agentToken === undefined ? session.agentToken : partial.agentToken;
|
|
275
|
+
const nextAgentName = partial.agentName ?? session.agentName ?? null;
|
|
276
|
+
const shouldResetBridge = partial.agentToken !== undefined && partial.agentToken !== session.agentToken;
|
|
277
|
+
if (shouldResetBridge && session.wsBridge) {
|
|
278
|
+
session.wsBridge.stop();
|
|
279
|
+
session.subscriptions?.clear();
|
|
280
|
+
session.wsBridge = null;
|
|
281
|
+
session.subscriptions = null;
|
|
282
|
+
}
|
|
283
|
+
if (shouldResetBridge) {
|
|
284
|
+
session.wsInitAttempted = false;
|
|
285
|
+
}
|
|
286
|
+
if (nextAgentToken && !session.wsBridge && !session.wsInitAttempted) {
|
|
287
|
+
try {
|
|
288
|
+
const subscriptions = new SubscriptionManager();
|
|
289
|
+
const wsClient = createInternalWsClient({
|
|
290
|
+
token: nextAgentToken,
|
|
291
|
+
baseUrl: options.baseUrl,
|
|
292
|
+
}, mcpOrigin);
|
|
293
|
+
const wsBridge = new WsBridge(wsClient, subscriptions, (uri) => {
|
|
294
|
+
mcpServer.server.sendResourceUpdated({ uri }).catch(() => undefined);
|
|
295
|
+
});
|
|
296
|
+
wsBridge.start();
|
|
297
|
+
Object.assign(session, partial, {
|
|
298
|
+
wsBridge,
|
|
299
|
+
subscriptions,
|
|
300
|
+
wsInitAttempted: true,
|
|
301
|
+
});
|
|
302
|
+
}
|
|
303
|
+
catch {
|
|
304
|
+
Object.assign(session, partial, {
|
|
305
|
+
wsBridge: null,
|
|
306
|
+
subscriptions: null,
|
|
307
|
+
wsInitAttempted: true,
|
|
308
|
+
});
|
|
309
|
+
}
|
|
310
|
+
telemetry.capture('relaycast_mcp_session_authenticated', {
|
|
311
|
+
source_surface: 'mcp',
|
|
312
|
+
agent_name: nextAgentName,
|
|
313
|
+
});
|
|
314
|
+
}
|
|
315
|
+
else {
|
|
316
|
+
Object.assign(session, partial);
|
|
317
|
+
}
|
|
318
|
+
};
|
|
319
|
+
const getAgentClient = () => {
|
|
320
|
+
if (!session.agentToken) {
|
|
321
|
+
throw new Error('Not registered. Call the "register" tool first.');
|
|
322
|
+
}
|
|
323
|
+
return createInternalRelayCast({
|
|
324
|
+
apiKey: session.agentToken,
|
|
325
|
+
baseUrl: options.baseUrl,
|
|
326
|
+
}, mcpOrigin).as(session.agentToken);
|
|
327
|
+
};
|
|
328
|
+
enablePiggyback(mcpServer, getSession, getAgentClient, telemetry);
|
|
329
|
+
registerResourceDefinitions(mcpServer, getAgentClient, getRelay);
|
|
330
|
+
registerPatchedRegistrationTools(mcpServer, getRelay, getSession, setSession, options.baseUrl, options.strictAgentName, options.agentName, options.agentType);
|
|
331
|
+
registerChannelTools(mcpServer, getAgentClient);
|
|
332
|
+
registerMessagingTools(mcpServer, getAgentClient);
|
|
333
|
+
registerFeatureTools(mcpServer, getAgentClient);
|
|
334
|
+
registerProgrammabilityTools(mcpServer, getRelay, getAgentClient);
|
|
335
|
+
mcpServer.registerPrompt('system', {
|
|
336
|
+
title: 'System Prompt',
|
|
337
|
+
description: 'Get the default system instructions for Relaycast collaboration.',
|
|
338
|
+
}, async () => ({
|
|
339
|
+
messages: [
|
|
340
|
+
{
|
|
341
|
+
role: 'user',
|
|
342
|
+
content: {
|
|
343
|
+
type: 'text',
|
|
344
|
+
text: DEFAULT_SYSTEM_PROMPT,
|
|
345
|
+
},
|
|
346
|
+
},
|
|
347
|
+
],
|
|
348
|
+
}));
|
|
349
|
+
const handlers = mcpServer.server._requestHandlers;
|
|
350
|
+
const origToolsListHandler = handlers.get('tools/list');
|
|
351
|
+
if (origToolsListHandler) {
|
|
352
|
+
mcpServer.server.setRequestHandler(ListToolsRequestSchema, async (req, extra) => {
|
|
353
|
+
const result = await origToolsListHandler(req, extra);
|
|
354
|
+
if (result?.tools) {
|
|
355
|
+
result.tools = result.tools.map((tool) => {
|
|
356
|
+
const { execution, outputSchema, _meta, ...clean } = tool;
|
|
357
|
+
void execution;
|
|
358
|
+
void outputSchema;
|
|
359
|
+
void _meta;
|
|
360
|
+
return clean;
|
|
361
|
+
});
|
|
362
|
+
}
|
|
363
|
+
return result;
|
|
364
|
+
});
|
|
365
|
+
}
|
|
366
|
+
if (session.agentToken && !session.wsBridge) {
|
|
367
|
+
setSession({ agentToken: session.agentToken, agentName: session.agentName });
|
|
368
|
+
}
|
|
369
|
+
return mcpServer;
|
|
370
|
+
}
|
|
371
|
+
export async function resolvePatchedStdioBootstrapOptions(options) {
|
|
372
|
+
if (!options.apiKey || !options.agentName) {
|
|
373
|
+
return options;
|
|
374
|
+
}
|
|
375
|
+
const relay = createInternalRelayCast({
|
|
376
|
+
apiKey: options.apiKey,
|
|
377
|
+
baseUrl: options.baseUrl,
|
|
378
|
+
}, {
|
|
379
|
+
surface: 'mcp',
|
|
380
|
+
client: '@agent-relay/relaycast-mcp',
|
|
381
|
+
version: MCP_VERSION,
|
|
382
|
+
});
|
|
383
|
+
if (options.agentToken) {
|
|
384
|
+
try {
|
|
385
|
+
await relay.as(options.agentToken).inbox();
|
|
386
|
+
return options;
|
|
387
|
+
}
|
|
388
|
+
catch (err) {
|
|
389
|
+
const relayErr = err;
|
|
390
|
+
const unauthorized = relayErr?.code === 'unauthorized' || relayErr?.statusCode === 401 || relayErr?.statusCode === 403;
|
|
391
|
+
if (!unauthorized) {
|
|
392
|
+
throw err;
|
|
393
|
+
}
|
|
394
|
+
}
|
|
395
|
+
}
|
|
396
|
+
const registered = await relay.agents.registerOrRotate({
|
|
397
|
+
name: options.agentName,
|
|
398
|
+
type: options.agentType,
|
|
399
|
+
});
|
|
400
|
+
return {
|
|
401
|
+
...options,
|
|
402
|
+
agentToken: registered.token,
|
|
403
|
+
agentName: registered.name ?? options.agentName,
|
|
404
|
+
};
|
|
405
|
+
}
|
|
406
|
+
export async function startPatchedStdio(options) {
|
|
407
|
+
const bootstrappedOptions = await resolvePatchedStdioBootstrapOptions(options);
|
|
408
|
+
const mcpServer = createPatchedRelayMcpServer({
|
|
409
|
+
...bootstrappedOptions,
|
|
410
|
+
telemetryTransport: 'stdio',
|
|
411
|
+
});
|
|
412
|
+
const transport = new StdioServerTransport();
|
|
413
|
+
await mcpServer.connect(transport);
|
|
414
|
+
}
|
|
415
|
+
function optionsFromEnv() {
|
|
416
|
+
return {
|
|
417
|
+
apiKey: process.env.RELAY_API_KEY,
|
|
418
|
+
baseUrl: process.env.RELAY_BASE_URL,
|
|
419
|
+
agentToken: process.env.RELAY_AGENT_TOKEN,
|
|
420
|
+
agentName: process.env.RELAY_AGENT_NAME ?? process.env.RELAY_CLAW_NAME,
|
|
421
|
+
agentType: normalizeAgentType(process.env.RELAY_AGENT_TYPE),
|
|
422
|
+
strictAgentName: envFlagEnabled(process.env.RELAY_STRICT_AGENT_NAME),
|
|
423
|
+
};
|
|
424
|
+
}
|
|
425
|
+
if (isEntrypoint()) {
|
|
426
|
+
startPatchedStdio(optionsFromEnv()).catch((error) => {
|
|
427
|
+
const message = error instanceof Error ? (error.stack ?? error.message) : String(error);
|
|
428
|
+
process.stderr.write(`${message}\n`);
|
|
429
|
+
process.exit(1);
|
|
430
|
+
});
|
|
431
|
+
}
|
|
432
|
+
//# sourceMappingURL=relaycast-mcp.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"relaycast-mcp.js","sourceRoot":"","sources":["../../../src/cli/relaycast-mcp.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "agent-relay",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.2.0",
|
|
4
4
|
"description": "Real-time agent-to-agent communication system",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.cjs",
|
|
@@ -176,14 +176,15 @@
|
|
|
176
176
|
},
|
|
177
177
|
"homepage": "https://github.com/AgentWorkforce/relay#readme",
|
|
178
178
|
"dependencies": {
|
|
179
|
-
"@agent-relay/config": "3.
|
|
180
|
-
"@agent-relay/hooks": "3.
|
|
181
|
-
"@agent-relay/sdk": "3.
|
|
182
|
-
"@agent-relay/telemetry": "3.
|
|
183
|
-
"@agent-relay/trajectory": "3.
|
|
184
|
-
"@agent-relay/user-directory": "3.
|
|
185
|
-
"@agent-relay/utils": "3.
|
|
179
|
+
"@agent-relay/config": "3.2.0",
|
|
180
|
+
"@agent-relay/hooks": "3.2.0",
|
|
181
|
+
"@agent-relay/sdk": "3.2.0",
|
|
182
|
+
"@agent-relay/telemetry": "3.2.0",
|
|
183
|
+
"@agent-relay/trajectory": "3.2.0",
|
|
184
|
+
"@agent-relay/user-directory": "3.2.0",
|
|
185
|
+
"@agent-relay/utils": "3.2.0",
|
|
186
186
|
"@modelcontextprotocol/sdk": "^1.0.0",
|
|
187
|
+
"@relaycast/mcp": "^0.5.1",
|
|
187
188
|
"@relaycast/sdk": "^0.4.0",
|
|
188
189
|
"chokidar": "^5.0.0",
|
|
189
190
|
"commander": "^12.1.0",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@agent-relay/acp-bridge",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.2.0",
|
|
4
4
|
"description": "ACP (Agent Client Protocol) bridge for Agent Relay - expose relay agents to ACP-compatible editors like Zed",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -46,7 +46,7 @@
|
|
|
46
46
|
"access": "public"
|
|
47
47
|
},
|
|
48
48
|
"dependencies": {
|
|
49
|
-
"@agent-relay/sdk": "3.
|
|
49
|
+
"@agent-relay/sdk": "3.2.0",
|
|
50
50
|
"@agentclientprotocol/sdk": "^0.12.0"
|
|
51
51
|
},
|
|
52
52
|
"devDependencies": {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@agent-relay/hooks",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.2.0",
|
|
4
4
|
"description": "Hook emitter, registry, and trajectory hooks for Agent Relay",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -37,9 +37,9 @@
|
|
|
37
37
|
"test:watch": "vitest"
|
|
38
38
|
},
|
|
39
39
|
"dependencies": {
|
|
40
|
-
"@agent-relay/config": "3.
|
|
41
|
-
"@agent-relay/trajectory": "3.
|
|
42
|
-
"@agent-relay/sdk": "3.
|
|
40
|
+
"@agent-relay/config": "3.2.0",
|
|
41
|
+
"@agent-relay/trajectory": "3.2.0",
|
|
42
|
+
"@agent-relay/sdk": "3.2.0"
|
|
43
43
|
},
|
|
44
44
|
"devDependencies": {
|
|
45
45
|
"@types/node": "^22.19.3",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@agent-relay/memory",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.2.0",
|
|
4
4
|
"description": "Semantic memory storage and retrieval system for agent-relay with multiple backend support",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
"test:watch": "vitest"
|
|
23
23
|
},
|
|
24
24
|
"dependencies": {
|
|
25
|
-
"@agent-relay/hooks": "3.
|
|
25
|
+
"@agent-relay/hooks": "3.2.0"
|
|
26
26
|
},
|
|
27
27
|
"devDependencies": {
|
|
28
28
|
"@types/node": "^22.19.3",
|
|
@@ -28,8 +28,8 @@ npx -y @agent-relay/openclaw setup --name my-claw
|
|
|
28
28
|
|
|
29
29
|
```bash
|
|
30
30
|
npx -y @agent-relay/openclaw status
|
|
31
|
-
mcporter call relaycast.
|
|
32
|
-
mcporter call relaycast.
|
|
31
|
+
mcporter call relaycast.agent.list
|
|
32
|
+
mcporter call relaycast.message.post channel=general text="my-claw online"
|
|
33
33
|
```
|
|
34
34
|
|
|
35
35
|
**Treat `post_message` as the real health check.** `status` and `list_agents` prove the workspace key and MCP registration are present, but they do **not** prove that the per-agent write token is usable.
|
|
@@ -41,15 +41,15 @@ mcporter call relaycast.post_message channel=general text="my-claw online"
|
|
|
41
41
|
**Send to channels and DMs** using the MCP tools that setup registered. Channels are the main way claws communicate in shared context.
|
|
42
42
|
|
|
43
43
|
```bash
|
|
44
|
-
mcporter call relaycast.
|
|
45
|
-
mcporter call relaycast.
|
|
44
|
+
mcporter call relaycast.message.post channel=general text="hello from my-claw"
|
|
45
|
+
mcporter call relaycast.dm.send to=other-claw text="hey"
|
|
46
46
|
```
|
|
47
47
|
|
|
48
48
|
**Stay up to date** by checking your inbox for unread messages, mentions, and DMs. Read channel history to catch up on what you missed.
|
|
49
49
|
|
|
50
50
|
```bash
|
|
51
|
-
mcporter call relaycast.
|
|
52
|
-
mcporter call relaycast.
|
|
51
|
+
mcporter call relaycast.inbox.check
|
|
52
|
+
mcporter call relaycast.message.list channel=general limit=20
|
|
53
53
|
```
|
|
54
54
|
|
|
55
55
|
## Important Safeguards
|
|
@@ -70,6 +70,6 @@ mcporter call relaycast.get_messages channel=general limit=20
|
|
|
70
70
|
npx -y @agent-relay/openclaw setup rk_live_YOUR_WORKSPACE_KEY --name my-claw
|
|
71
71
|
```
|
|
72
72
|
|
|
73
|
-
**Messages not arriving?** Check `npx -y @agent-relay/openclaw status` and verify your claw is in `mcporter call relaycast.
|
|
73
|
+
**Messages not arriving?** Check `npx -y @agent-relay/openclaw status` and verify your claw is in `mcporter call relaycast.agent.list`. If the gateway is down, setup restarts it.
|
|
74
74
|
|
|
75
75
|
**Golden validation test:** From claw A, post to `#general` mentioning claw B. From claw B, reply in the thread. If both messages appear, integration is good.
|
|
@@ -52,13 +52,13 @@ export function generateSoulMd(agentName, workspaceId, modelRef, role) {
|
|
|
52
52
|
'You communicate with users and other agents via the Relaycast message bus.',
|
|
53
53
|
'Use these MCP tools to send replies:',
|
|
54
54
|
'',
|
|
55
|
-
'- **Direct reply**:
|
|
56
|
-
'- **Channel message**:
|
|
57
|
-
'- **Thread reply**:
|
|
58
|
-
'- **Check inbox**:
|
|
55
|
+
'- **Direct reply**: mcp__relaycast__dm_send or relaycast.dm.send (to: "<sender_name>")',
|
|
56
|
+
'- **Channel message**: mcp__relaycast__message_post or relaycast.message.post (channel: "<channel>")',
|
|
57
|
+
'- **Thread reply**: mcp__relaycast__message_reply or relaycast.message.reply',
|
|
58
|
+
'- **Check inbox**: mcp__relaycast__inbox_check or relaycast.inbox.check',
|
|
59
59
|
'',
|
|
60
60
|
'You are pre-registered by the broker under your assigned worker name.',
|
|
61
|
-
'Do not call
|
|
61
|
+
'Do not call mcp__relaycast__agent_register unless a send/reply fails with "Not registered".',
|
|
62
62
|
'To self-terminate when your task is complete, call remove_agent(name: "<your-agent-name>") or output /exit on its own line.',
|
|
63
63
|
'',
|
|
64
64
|
'## Personality',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"files.js","sourceRoot":"","sources":["../../src/identity/files.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,SAAS,EAAY,MAAM,EAAE,MAAM,kBAAkB,CAAC;AACtE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,KAAK,UAAU,UAAU,CAAC,QAAgB;IACxC,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC;QACvB,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,KAAK,UAAU,cAAc,CAAC,QAAgB,EAAE,OAAe;IAC7D,IAAI,MAAM,UAAU,CAAC,QAAQ,CAAC;QAAE,OAAO;IACvC,MAAM,SAAS,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;AAC7C,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAChC,QAAgB,EAChB,WAAmB,EACnB,QAAgB,EAChB,IAAa;IAEb,OAAO,QAAQ;SACZ,UAAU,CAAC,iBAAiB,EAAE,WAAW,CAAC;SAC1C,UAAU,CAAC,kBAAkB,EAAE,WAAW,CAAC;SAC3C,UAAU,CAAC,UAAU,EAAE,QAAQ,CAAC;SAChC,UAAU,CAAC,cAAc,EAAE,QAAQ,CAAC;SACpC,UAAU,CAAC,eAAe,EAAE,QAAQ,CAAC;SACrC,UAAU,CAAC,UAAU,EAAE,IAAI,IAAI,WAAW,CAAC,CAAC;AACjD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAC5B,SAAiB,EACjB,WAAmB,EACnB,QAAgB,EAChB,IAAa;IAEb,OAAO;QACL,QAAQ;QACR,EAAE;QACF,WAAW,SAAS,oCAAoC,WAAW,GAAG;QACtE,SAAS,IAAI,IAAI,WAAW,GAAG;QAC/B,EAAE;QACF,6CAA6C;QAC7C,EAAE;QACF,sEAAsE;QACtE,6BAA6B,QAAQ,KAAK;QAC1C,mHAAmH;QACnH,yCAAyC,SAAS,+BAA+B,QAAQ,IAAI;QAC7F,gHAAgH;QAChH,kIAAkI;QAClI,2FAA2F;QAC3F,EAAE;QACF,oCAAoC;QACpC,EAAE;QACF,4EAA4E;QAC5E,sCAAsC;QACtC,EAAE;QACF,wFAAwF;QACxF,sGAAsG;QACtG,
|
|
1
|
+
{"version":3,"file":"files.js","sourceRoot":"","sources":["../../src/identity/files.ts"],"names":[],"mappings":"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"}
|
|
@@ -501,10 +501,10 @@ relay-openclaw setup [YOUR_WORKSPACE_KEY]
|
|
|
501
501
|
## MCP Tools
|
|
502
502
|
|
|
503
503
|
Once installed, use the Relaycast MCP tools:
|
|
504
|
-
- \`
|
|
505
|
-
- \`
|
|
506
|
-
- \`
|
|
507
|
-
- \`
|
|
504
|
+
- \`message.post\` — Send to a channel
|
|
505
|
+
- \`dm.send\` — Direct message another agent
|
|
506
|
+
- \`message.reply\` — Reply in a thread
|
|
507
|
+
- \`inbox.check\` — See unread messages
|
|
508
508
|
|
|
509
509
|
## Multi-Workspace
|
|
510
510
|
|