@relaycast/mcp 0.5.1 → 0.5.3

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 (58) hide show
  1. package/dist/index.d.ts +2 -0
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +1 -0
  4. package/dist/index.js.map +1 -1
  5. package/dist/piggyback.d.ts +12 -1
  6. package/dist/piggyback.d.ts.map +1 -1
  7. package/dist/piggyback.js +39 -16
  8. package/dist/piggyback.js.map +1 -1
  9. package/dist/prompts.d.ts +1 -1
  10. package/dist/prompts.d.ts.map +1 -1
  11. package/dist/prompts.js +9 -9
  12. package/dist/resources/definitions.d.ts +6 -1
  13. package/dist/resources/definitions.d.ts.map +1 -1
  14. package/dist/resources/definitions.js +38 -12
  15. package/dist/resources/definitions.js.map +1 -1
  16. package/dist/server.d.ts +5 -0
  17. package/dist/server.d.ts.map +1 -1
  18. package/dist/server.js +177 -38
  19. package/dist/server.js.map +1 -1
  20. package/dist/stdio.js +12 -7
  21. package/dist/stdio.js.map +1 -1
  22. package/dist/tool-aliases.d.ts +67 -0
  23. package/dist/tool-aliases.d.ts.map +1 -0
  24. package/dist/tool-aliases.js +71 -0
  25. package/dist/tool-aliases.js.map +1 -0
  26. package/dist/tools/channels.d.ts +5 -2
  27. package/dist/tools/channels.d.ts.map +1 -1
  28. package/dist/tools/channels.js +32 -21
  29. package/dist/tools/channels.js.map +1 -1
  30. package/dist/tools/features.d.ts +4 -1
  31. package/dist/tools/features.d.ts.map +1 -1
  32. package/dist/tools/features.js +28 -20
  33. package/dist/tools/features.js.map +1 -1
  34. package/dist/tools/messaging.d.ts +7 -1
  35. package/dist/tools/messaging.d.ts.map +1 -1
  36. package/dist/tools/messaging.js +34 -21
  37. package/dist/tools/messaging.js.map +1 -1
  38. package/dist/tools/programmability.d.ts +7 -1
  39. package/dist/tools/programmability.d.ts.map +1 -1
  40. package/dist/tools/programmability.js +22 -18
  41. package/dist/tools/programmability.js.map +1 -1
  42. package/dist/tools/registration.d.ts +4 -1
  43. package/dist/tools/registration.d.ts.map +1 -1
  44. package/dist/tools/registration.js +317 -21
  45. package/dist/tools/registration.js.map +1 -1
  46. package/dist/transports.d.ts +1 -1
  47. package/dist/transports.d.ts.map +1 -1
  48. package/dist/transports.js +128 -48
  49. package/dist/transports.js.map +1 -1
  50. package/dist/types.d.ts +23 -0
  51. package/dist/types.d.ts.map +1 -1
  52. package/dist/types.js +4 -0
  53. package/dist/types.js.map +1 -1
  54. package/dist/workspaces.d.ts +69 -0
  55. package/dist/workspaces.d.ts.map +1 -0
  56. package/dist/workspaces.js +134 -0
  57. package/dist/workspaces.js.map +1 -0
  58. package/package.json +3 -3
@@ -1,7 +1,16 @@
1
+ import { createHash } from 'node:crypto';
1
2
  import { z } from 'zod';
2
3
  const DEFAULT_BASE_URL = 'https://api.relaycast.dev';
3
4
  /** Passthrough object schema for dynamic API responses. */
4
5
  const jsonResult = z.object({}).passthrough();
6
+ const workspaceEntrySchema = z.object({
7
+ workspace_ref: z.string().describe('Stable workspace reference accepted by "workspace.switch"'),
8
+ workspace_key: z.string().describe('Masked workspace API key for display'),
9
+ workspace_name: z.string().nullable().describe('Canonical workspace name from the Relaycast API'),
10
+ workspace_label: z.string().nullable().describe('Optional custom label saved during "workspace.join"'),
11
+ agent_name: z.string().describe('Saved agent name for this workspace'),
12
+ is_active: z.boolean().describe('True if this workspace is currently active in the session'),
13
+ });
5
14
  function normalizeBaseUrl(baseUrl) {
6
15
  return (baseUrl ?? DEFAULT_BASE_URL).replace(/\/+$/, '');
7
16
  }
@@ -20,14 +29,53 @@ async function createWorkspace(name, baseUrl) {
20
29
  }
21
30
  return payload.data;
22
31
  }
32
+ async function fetchWorkspaceName(apiKey, baseUrl) {
33
+ try {
34
+ const response = await fetch(`${normalizeBaseUrl(baseUrl)}/v1/workspace`, {
35
+ headers: {
36
+ Authorization: `Bearer ${apiKey}`,
37
+ },
38
+ });
39
+ if (!response.ok)
40
+ return undefined;
41
+ const payload = (await response.json());
42
+ if (!payload || typeof payload !== 'object' || !('ok' in payload) || !payload.ok) {
43
+ return undefined;
44
+ }
45
+ const name = payload.data?.name;
46
+ return typeof name === 'string' ? name : undefined;
47
+ }
48
+ catch {
49
+ return undefined;
50
+ }
51
+ }
23
52
  function requireWorkspaceKey(session) {
24
53
  if (session.workspaceKey)
25
54
  return;
26
- throw new Error('Workspace key not configured. Call "create_workspace" or "set_workspace_key" first.');
55
+ throw new Error('Workspace key not configured. Call "workspace.create" or "workspace.set_key" first.');
56
+ }
57
+ function saveWorkspaceContext(session, workspaceKey, agentToken, agentName, metadata = {}) {
58
+ const existing = session.workspaces.get(workspaceKey);
59
+ session.workspaces.set(workspaceKey, {
60
+ workspaceKey,
61
+ agentToken,
62
+ agentName,
63
+ agents: new Map(session.agents),
64
+ // Preserve existing workspace metadata if not explicitly provided.
65
+ workspaceName: metadata.workspaceName ?? existing?.workspaceName,
66
+ workspaceLabel: metadata.workspaceLabel ?? existing?.workspaceLabel,
67
+ // Force bridge re-init when this workspace is restored.
68
+ wsBridge: null,
69
+ subscriptions: null,
70
+ wsInitAttempted: false,
71
+ });
72
+ }
73
+ function createRegisteredAgent(agentName, agentToken) {
74
+ return { agentName, agentToken };
27
75
  }
28
76
  export function registerRegistrationTools(server, getRelay, getSession, setSession, baseUrl, strictAgentName, preferredAgentName, forcedAgentType) {
29
77
  // Tool 1: create_workspace
30
- server.registerTool('create_workspace', {
78
+ server.registerTool('workspace.create', {
31
79
  title: 'Create Workspace',
32
80
  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.',
33
81
  inputSchema: {
@@ -41,15 +89,19 @@ export function registerRegistrationTools(server, getRelay, getSession, setSessi
41
89
  if (!workspaceKey || typeof workspaceKey !== 'string') {
42
90
  throw new Error('Workspace created, but the response did not include api_key');
43
91
  }
44
- // Switching workspace context invalidates prior agent identity.
45
- setSession({ workspaceKey, agentToken: null, agentName: null });
92
+ // Save current workspace context before switching (if registered).
93
+ const session = getSession();
94
+ if (session.workspaceKey && session.agentToken && session.agentName) {
95
+ saveWorkspaceContext(session, session.workspaceKey, session.agentToken, session.agentName);
96
+ }
97
+ setSession({ workspaceKey, agentToken: null, agentName: null, agents: new Map() });
46
98
  return {
47
99
  content: [{ type: 'text', text: JSON.stringify(workspace, null, 2) }],
48
100
  structuredContent: workspace,
49
101
  };
50
102
  });
51
103
  // Tool 2: set_workspace_key
52
- server.registerTool('set_workspace_key', {
104
+ server.registerTool('workspace.set_key', {
53
105
  title: 'Set Workspace Key',
54
106
  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.',
55
107
  inputSchema: {
@@ -66,22 +118,40 @@ export function registerRegistrationTools(server, getRelay, getSession, setSessi
66
118
  const session = getSession();
67
119
  const switchingWorkspace = session.workspaceKey !== api_key;
68
120
  if (switchingWorkspace) {
69
- // Switching workspace context invalidates prior agent identity.
70
- setSession({ workspaceKey: api_key, agentToken: null, agentName: null });
121
+ // Save current workspace context before switching (if registered).
122
+ if (session.workspaceKey && session.agentToken && session.agentName) {
123
+ saveWorkspaceContext(session, session.workspaceKey, session.agentToken, session.agentName);
124
+ }
125
+ // Restore previously joined workspace context, or start fresh.
126
+ const saved = session.workspaces.get(api_key);
127
+ if (saved) {
128
+ setSession({
129
+ workspaceKey: api_key,
130
+ agentToken: saved.agentToken,
131
+ agentName: saved.agentName,
132
+ agents: new Map(saved.agents),
133
+ });
134
+ }
135
+ else {
136
+ setSession({ workspaceKey: api_key, agentToken: null, agentName: null, agents: new Map() });
137
+ }
71
138
  }
72
139
  else {
73
140
  setSession({ workspaceKey: api_key });
74
141
  }
75
- const message = switchingWorkspace
76
- ? 'Workspace key set. Previous agent session was cleared; call "register" again.'
77
- : 'Workspace key set.';
142
+ const saved = session.workspaces.get(api_key);
143
+ const message = !switchingWorkspace
144
+ ? 'Workspace key set.'
145
+ : saved
146
+ ? `Switched to workspace. Restored agent identity "${saved.agentName}".`
147
+ : 'Workspace key set. Call "agent.register" to join this workspace.';
78
148
  return {
79
149
  content: [{ type: 'text', text: message }],
80
150
  structuredContent: { message },
81
151
  };
82
152
  });
83
- // Tool 3: register
84
- server.registerTool('register', {
153
+ // Tool 3: agent.register
154
+ server.registerTool('agent.register', {
85
155
  title: 'Register Agent',
86
156
  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. Once registered, the agent can send messages, join channels, react to messages, and perform all other agent-level actions. Re-registering with the same name returns the existing token.',
87
157
  inputSchema: {
@@ -95,10 +165,18 @@ export function registerRegistrationTools(server, getRelay, getSession, setSessi
95
165
  }, async ({ name, type, persona, metadata }) => {
96
166
  const session = getSession();
97
167
  requireWorkspaceKey(session);
98
- const configuredName = session.agentName
99
- ?? preferredAgentName?.trim()
100
- ?? null;
168
+ const configuredName = strictAgentName
169
+ ? preferredAgentName?.trim()
170
+ ?? session.agentName
171
+ ?? null
172
+ : session.agentName
173
+ ?? preferredAgentName?.trim()
174
+ ?? null;
101
175
  const warnings = [];
176
+ const registeredConfiguredToken = configuredName
177
+ ? session.agents.get(configuredName)?.agentToken
178
+ ?? (session.agentName === configuredName ? session.agentToken : null)
179
+ : null;
102
180
  // In strict mode, enforce the pre-registered name from the broker.
103
181
  // This prevents spawned agents from re-registering under a different name.
104
182
  const effectiveName = strictAgentName && configuredName ? configuredName : name;
@@ -111,10 +189,21 @@ export function registerRegistrationTools(server, getRelay, getSession, setSessi
111
189
  }
112
190
  // If already pre-registered with a token, skip the API call and return
113
191
  // the existing registration to avoid overwriting the pre-registered identity.
114
- if (session.agentToken && effectiveName && strictAgentName) {
192
+ if (registeredConfiguredToken && effectiveName && strictAgentName) {
193
+ const workspaceName = session.workspaceKey
194
+ ? await fetchWorkspaceName(session.workspaceKey, baseUrl)
195
+ : undefined;
196
+ setSession({
197
+ agentToken: registeredConfiguredToken,
198
+ agentName: effectiveName,
199
+ agents: new Map(session.agents).set(effectiveName, createRegisteredAgent(effectiveName, registeredConfiguredToken)),
200
+ });
201
+ if (session.workspaceKey) {
202
+ saveWorkspaceContext(session, session.workspaceKey, registeredConfiguredToken, effectiveName, { workspaceName });
203
+ }
115
204
  const existing = {
116
205
  name: effectiveName,
117
- token: session.agentToken,
206
+ token: registeredConfiguredToken,
118
207
  registered_name: effectiveName,
119
208
  warnings,
120
209
  };
@@ -124,14 +213,22 @@ export function registerRegistrationTools(server, getRelay, getSession, setSessi
124
213
  };
125
214
  }
126
215
  const relay = getRelay();
127
- const result = await relay.agents.register({
216
+ const result = await relay.agents.registerOrRotate({
128
217
  name: effectiveName,
129
218
  type: effectiveType,
130
219
  persona,
131
220
  metadata,
132
221
  });
222
+ const nextAgents = new Map(session.agents);
223
+ nextAgents.set(effectiveName, createRegisteredAgent(effectiveName, result.token));
133
224
  // Store the agent token in session state
134
- setSession({ agentToken: result.token, agentName: effectiveName });
225
+ setSession({ agentToken: result.token, agentName: effectiveName, agents: nextAgents });
226
+ // Update multi-workspace context map.
227
+ const updatedSession = getSession();
228
+ if (updatedSession.workspaceKey) {
229
+ const workspaceName = await fetchWorkspaceName(updatedSession.workspaceKey, baseUrl);
230
+ saveWorkspaceContext(updatedSession, updatedSession.workspaceKey, result.token, effectiveName, { workspaceName });
231
+ }
135
232
  const payload = {
136
233
  ...result,
137
234
  registered_name: effectiveName,
@@ -142,8 +239,8 @@ export function registerRegistrationTools(server, getRelay, getSession, setSessi
142
239
  structuredContent: payload,
143
240
  };
144
241
  });
145
- // Tool 4: list_agents
146
- server.registerTool('list_agents', {
242
+ // Tool 4: agent.list
243
+ server.registerTool('agent.list', {
147
244
  title: 'List Agents',
148
245
  description: 'Retrieve all agents registered in the current workspace. Returns each agent\'s name, type, persona, and online/offline status. Use the optional status filter to find only agents that are currently connected or disconnected.',
149
246
  inputSchema: {
@@ -165,5 +262,204 @@ export function registerRegistrationTools(server, getRelay, getSession, setSessi
165
262
  structuredContent: { agents: agents },
166
263
  };
167
264
  });
265
+ // Tool 5: list_workspaces
266
+ server.registerTool('workspace.list', {
267
+ title: 'List Joined Workspaces',
268
+ description: 'List all workspaces this agent has joined in the current MCP session. Returns a stable workspace_ref for switching, the masked workspace key for display, the canonical workspace name, any saved label, the saved agent name, and whether the workspace is currently active.',
269
+ inputSchema: {
270
+ status: z.enum(['active', 'all']).optional().describe('Filter workspaces by status: "active" for only the current workspace, "all" (default) for every joined workspace'),
271
+ },
272
+ outputSchema: {
273
+ workspaces: z.array(workspaceEntrySchema).describe('Array of joined workspace entries'),
274
+ active_workspace: z.string().nullable().describe('The masked workspace key that is currently active'),
275
+ active_workspace_ref: z.string().nullable().describe('Stable reference for the currently active workspace'),
276
+ },
277
+ annotations: { readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: false },
278
+ }, async ({ status }) => {
279
+ const session = getSession();
280
+ const all = Array.from(session.workspaces.values()).map((ctx) => ({
281
+ workspace_ref: createWorkspaceRef(ctx.workspaceKey),
282
+ workspace_key: maskKey(ctx.workspaceKey),
283
+ workspace_name: ctx.workspaceName ?? null,
284
+ workspace_label: ctx.workspaceLabel ?? null,
285
+ agent_name: ctx.agentName,
286
+ is_active: ctx.workspaceKey === session.workspaceKey,
287
+ }));
288
+ const entries = status === 'active'
289
+ ? all.filter((e) => e.is_active)
290
+ : all;
291
+ const result = {
292
+ workspaces: entries,
293
+ active_workspace: session.workspaceKey ? maskKey(session.workspaceKey) : null,
294
+ active_workspace_ref: session.workspaceKey ? createWorkspaceRef(session.workspaceKey) : null,
295
+ };
296
+ return {
297
+ content: [{ type: 'text', text: JSON.stringify(result, null, 2) }],
298
+ structuredContent: result,
299
+ };
300
+ });
301
+ // Tool 6: join_workspace
302
+ server.registerTool('workspace.join', {
303
+ title: 'Join Workspace',
304
+ description: 'Join an additional workspace by providing its API key and registering an agent identity. The agent will be registered in the target workspace and the session context will be saved, allowing you to switch between workspaces without re-registering. After joining, the new workspace becomes the active workspace.',
305
+ inputSchema: {
306
+ api_key: z.string().describe('Workspace API key starting with "rk_live_"'),
307
+ name: z.string().describe('Agent name to register in the target workspace'),
308
+ workspace_name: z.string().optional().describe('Optional custom label to save for easier switching. The canonical workspace name is fetched automatically from the API.'),
309
+ type: z.enum(['agent', 'human']).optional().describe('Whether this identity represents an AI agent or a human user'),
310
+ persona: z.string().optional().describe('Free-text persona description'),
311
+ },
312
+ outputSchema: jsonResult,
313
+ annotations: { readOnlyHint: false, destructiveHint: false, idempotentHint: true, openWorldHint: true },
314
+ }, async ({ api_key, name, workspace_name, type, persona }) => {
315
+ if (!api_key.startsWith('rk_live_')) {
316
+ throw new Error('Workspace key must start with "rk_live_"');
317
+ }
318
+ const session = getSession();
319
+ const canonicalWorkspaceName = await fetchWorkspaceName(api_key, baseUrl);
320
+ // Save current workspace context before switching.
321
+ if (session.workspaceKey && session.agentToken && session.agentName) {
322
+ saveWorkspaceContext(session, session.workspaceKey, session.agentToken, session.agentName);
323
+ }
324
+ // Check if already joined this workspace.
325
+ const existing = session.workspaces.get(api_key);
326
+ if (existing) {
327
+ if (canonicalWorkspaceName && existing.workspaceName !== canonicalWorkspaceName) {
328
+ existing.workspaceName = canonicalWorkspaceName;
329
+ }
330
+ if (workspace_name && existing.workspaceLabel !== workspace_name) {
331
+ existing.workspaceLabel = workspace_name;
332
+ }
333
+ setSession({
334
+ workspaceKey: api_key,
335
+ agentToken: existing.agentToken,
336
+ agentName: existing.agentName,
337
+ agents: new Map(existing.agents),
338
+ });
339
+ const result = {
340
+ message: `Already joined workspace as "${existing.agentName}". Switched to it.`,
341
+ agent_name: existing.agentName,
342
+ };
343
+ return {
344
+ content: [{ type: 'text', text: JSON.stringify(result, null, 2) }],
345
+ structuredContent: result,
346
+ };
347
+ }
348
+ // Switch to new workspace and register.
349
+ setSession({ workspaceKey: api_key, agentToken: null, agentName: null, agents: new Map() });
350
+ const relay = getRelay();
351
+ const regResult = await relay.agents.registerOrRotate({ name, type, persona });
352
+ setSession({
353
+ agentToken: regResult.token,
354
+ agentName: name,
355
+ agents: new Map([[name, createRegisteredAgent(name, regResult.token)]]),
356
+ });
357
+ // Save the new workspace context.
358
+ const updatedSession = getSession();
359
+ saveWorkspaceContext(updatedSession, api_key, regResult.token, name, {
360
+ workspaceName: canonicalWorkspaceName,
361
+ workspaceLabel: workspace_name,
362
+ });
363
+ const result = {
364
+ message: `Joined workspace and registered as "${name}".`,
365
+ ...regResult,
366
+ agent_name: name,
367
+ };
368
+ return {
369
+ content: [{ type: 'text', text: JSON.stringify(result, null, 2) }],
370
+ structuredContent: result,
371
+ };
372
+ });
373
+ // Tool 7: switch_workspace
374
+ server.registerTool('workspace.switch', {
375
+ title: 'Switch Workspace',
376
+ description: 'Switch the active workspace to a previously joined workspace. Provide either a full api_key, workspace_ref from "workspace.list", or workspace_name matching either the canonical workspace record name or a saved custom label. The agent identity and WebSocket connection for the target workspace are restored from the saved session context.',
377
+ inputSchema: {
378
+ api_key: z.string().optional().describe('Full workspace API key to switch to (must have been previously joined)'),
379
+ workspace_ref: z.string().optional().describe('Stable workspace reference from "workspace.list"'),
380
+ workspace_name: z.string().optional().describe('Canonical workspace name from the API, or a saved custom label from "workspace.join"'),
381
+ },
382
+ outputSchema: {
383
+ message: z.string().describe('Confirmation message'),
384
+ agent_name: z.string().describe('The restored agent name in the target workspace'),
385
+ },
386
+ annotations: { readOnlyHint: false, destructiveHint: false, idempotentHint: true, openWorldHint: false },
387
+ }, async ({ api_key, workspace_ref, workspace_name }) => {
388
+ if (!api_key && !workspace_ref && !workspace_name) {
389
+ throw new Error('Provide "api_key", "workspace_ref", or "workspace_name".');
390
+ }
391
+ if (api_key && !api_key.startsWith('rk_live_')) {
392
+ throw new Error('Workspace key must start with "rk_live_"');
393
+ }
394
+ const session = getSession();
395
+ const resolved = resolveSavedWorkspace(session, api_key, workspace_ref, workspace_name);
396
+ if (!resolved) {
397
+ throw new Error('Workspace not found in session. Use "workspace.join" to join it first, or "workspace.set_key" to connect without a saved context.');
398
+ }
399
+ const { workspaceKey: targetWorkspaceKey, context: saved } = resolved;
400
+ // Save current workspace context.
401
+ if (session.workspaceKey && session.agentToken && session.agentName) {
402
+ saveWorkspaceContext(session, session.workspaceKey, session.agentToken, session.agentName);
403
+ }
404
+ // Restore the target workspace context.
405
+ setSession({
406
+ workspaceKey: targetWorkspaceKey,
407
+ agentToken: saved.agentToken,
408
+ agentName: saved.agentName,
409
+ agents: new Map(saved.agents),
410
+ });
411
+ const result = {
412
+ message: `Switched to workspace. Restored agent identity "${saved.agentName}".`,
413
+ agent_name: saved.agentName,
414
+ };
415
+ return {
416
+ content: [{ type: 'text', text: JSON.stringify(result, null, 2) }],
417
+ structuredContent: result,
418
+ };
419
+ });
420
+ }
421
+ function createWorkspaceRef(workspaceKey) {
422
+ return `ws_${createHash('sha256').update(workspaceKey).digest('hex').slice(0, 12)}`;
423
+ }
424
+ function resolveSavedWorkspace(session, apiKey, workspaceRef, workspaceName) {
425
+ if (apiKey) {
426
+ const exact = session.workspaces.get(apiKey);
427
+ if (exact) {
428
+ return { workspaceKey: apiKey, context: exact };
429
+ }
430
+ const maskedMatches = Array.from(session.workspaces.entries()).filter(([workspaceKey]) => maskKey(workspaceKey) === apiKey);
431
+ if (maskedMatches.length > 1) {
432
+ throw new Error('Masked workspace key is ambiguous. Use "workspace_ref" from "workspace.list" or the full api_key.');
433
+ }
434
+ if (maskedMatches.length === 1) {
435
+ const [workspaceKey, context] = maskedMatches[0];
436
+ return { workspaceKey, context };
437
+ }
438
+ }
439
+ if (workspaceRef) {
440
+ for (const [workspaceKey, context] of session.workspaces.entries()) {
441
+ if (createWorkspaceRef(workspaceKey) === workspaceRef) {
442
+ return { workspaceKey, context };
443
+ }
444
+ }
445
+ }
446
+ if (workspaceName) {
447
+ const nameMatches = Array.from(session.workspaces.entries()).filter(([, ctx]) => ctx.workspaceName?.toLowerCase() === workspaceName.toLowerCase()
448
+ || ctx.workspaceLabel?.toLowerCase() === workspaceName.toLowerCase());
449
+ if (nameMatches.length > 1) {
450
+ throw new Error(`Multiple workspaces match name "${workspaceName}". Use "workspace_ref" or "api_key" instead.`);
451
+ }
452
+ if (nameMatches.length === 1) {
453
+ const [workspaceKey, context] = nameMatches[0];
454
+ return { workspaceKey, context };
455
+ }
456
+ }
457
+ return null;
458
+ }
459
+ /** Mask a workspace key for display, showing only first 12 and last 4 chars. */
460
+ function maskKey(key) {
461
+ if (key.length <= 16)
462
+ return key;
463
+ return `${key.slice(0, 12)}...${key.slice(-4)}`;
168
464
  }
169
465
  //# sourceMappingURL=registration.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"registration.js","sourceRoot":"","sources":["../../src/tools/registration.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"registration.js","sourceRoot":"","sources":["../../src/tools/registration.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { type McpServerOptions } from "./server.js";
1
+ import { type McpServerOptions } from './server.js';
2
2
  /**
3
3
  * Start MCP server with stdio transport (single agent).
4
4
  * Reads from stdin, writes to stdout.
@@ -1 +1 @@
1
- {"version":3,"file":"transports.d.ts","sourceRoot":"","sources":["../src/transports.ts"],"names":[],"mappings":"AAIA,OAAO,EAGL,KAAK,gBAAgB,EACtB,MAAM,aAAa,CAAC;AAmDrB;;;GAGG;AACH,wBAAsB,UAAU,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAQzE;AAED;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B,SAAS,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,QAAQ,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;CACxC;AAWD;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,WAAW,EAAE,gBAAgB,EAC7B,SAAS,CAAC,EAAE,gBAAgB;IAG1B,2DAA2D;4BACnC,MAAM;yBAGvB,OAAO,WAAW,EAAE,eAAe,OACnC,OAAO,WAAW,EAAE,cAAc;EAoD5C"}
1
+ {"version":3,"file":"transports.d.ts","sourceRoot":"","sources":["../src/transports.ts"],"names":[],"mappings":"AAEA,OAAO,EAAqC,KAAK,gBAAgB,EAAE,MAAM,aAAa,CAAC;AA6GvF;;;GAGG;AACH,wBAAsB,UAAU,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAgDzE;AAED;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B,SAAS,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,QAAQ,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;CACxC;AAQD;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,gBAAgB,EAAE,SAAS,CAAC,EAAE,gBAAgB;IAEzF,2DAA2D;4BACnC,MAAM;yBAGvB,OAAO,WAAW,EAAE,eAAe,OACnC,OAAO,WAAW,EAAE,cAAc;EAoD5C"}