@relaycast/mcp 0.3.1 → 0.3.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +21 -6
- package/dist/server.js.map +1 -1
- package/dist/stdio.js +32 -2
- package/dist/stdio.js.map +1 -1
- package/dist/telemetry.d.ts +10 -2
- package/dist/telemetry.d.ts.map +1 -1
- package/dist/telemetry.js +55 -32
- package/dist/telemetry.js.map +1 -1
- package/dist/transports.d.ts.map +1 -1
- package/dist/transports.js +5 -1
- package/dist/transports.js.map +1 -1
- package/package.json +3 -3
package/dist/server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAepE,OAAO,EAAsB,KAAK,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAEvE,eAAO,MAAM,WAAW,UAAU,CAAC;AAEnC,MAAM,WAAW,gBAAgB;IAC/B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,kBAAkB,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IACtC,SAAS,CAAC,EAAE,YAAY,CAAC;CAC1B;AAED,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,gBAAgB,GAAG,SAAS,CA6JzE"}
|
package/dist/server.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
2
2
|
import { ListToolsRequestSchema } from '@modelcontextprotocol/sdk/types.js';
|
|
3
|
-
import {
|
|
3
|
+
import { createInternalRelayCast, createInternalWsClient } from '@relaycast/sdk/internal';
|
|
4
4
|
import { registerRegistrationTools } from './tools/registration.js';
|
|
5
5
|
import { registerChannelTools } from './tools/channels.js';
|
|
6
6
|
import { registerMessagingTools } from './tools/messaging.js';
|
|
@@ -16,7 +16,16 @@ import { createMcpTelemetry } from './telemetry.js';
|
|
|
16
16
|
export const MCP_VERSION = '0.1.2';
|
|
17
17
|
export function createRelayMcpServer(options) {
|
|
18
18
|
const session = createInitialSession(options.apiKey ?? null);
|
|
19
|
-
const
|
|
19
|
+
const mcpOrigin = {
|
|
20
|
+
surface: 'mcp',
|
|
21
|
+
client: '@relaycast/mcp',
|
|
22
|
+
version: MCP_VERSION,
|
|
23
|
+
};
|
|
24
|
+
const telemetry = options.telemetry ?? createMcpTelemetry(MCP_VERSION, {
|
|
25
|
+
originSurface: mcpOrigin.surface,
|
|
26
|
+
originClient: mcpOrigin.client,
|
|
27
|
+
originVersion: mcpOrigin.version,
|
|
28
|
+
});
|
|
20
29
|
const mcpServer = new McpServer({ name: 'agent-relay', version: MCP_VERSION }, {
|
|
21
30
|
capabilities: {
|
|
22
31
|
resources: { subscribe: true, listChanged: true },
|
|
@@ -34,7 +43,10 @@ export function createRelayMcpServer(options) {
|
|
|
34
43
|
if (!workspaceKey) {
|
|
35
44
|
throw new Error('Workspace key not configured. Set RELAY_API_KEY at startup, or call "create_workspace" or "set_workspace_key" first.');
|
|
36
45
|
}
|
|
37
|
-
return
|
|
46
|
+
return createInternalRelayCast({
|
|
47
|
+
apiKey: workspaceKey,
|
|
48
|
+
baseUrl: options.baseUrl,
|
|
49
|
+
}, mcpOrigin);
|
|
38
50
|
};
|
|
39
51
|
const setSession = (partial) => {
|
|
40
52
|
const nextAgentToken = partial.agentToken === undefined ? session.agentToken : partial.agentToken;
|
|
@@ -53,10 +65,10 @@ export function createRelayMcpServer(options) {
|
|
|
53
65
|
if (nextAgentToken && !session.wsBridge && !session.wsInitAttempted) {
|
|
54
66
|
try {
|
|
55
67
|
const subscriptions = new SubscriptionManager();
|
|
56
|
-
const wsClient =
|
|
68
|
+
const wsClient = createInternalWsClient({
|
|
57
69
|
token: nextAgentToken,
|
|
58
70
|
baseUrl: options.baseUrl,
|
|
59
|
-
});
|
|
71
|
+
}, mcpOrigin);
|
|
60
72
|
const wsBridge = new WsBridge(wsClient, subscriptions, (uri) => {
|
|
61
73
|
mcpServer.server.sendResourceUpdated({ uri }).catch(() => {
|
|
62
74
|
// Silently ignore notification failures
|
|
@@ -91,7 +103,10 @@ export function createRelayMcpServer(options) {
|
|
|
91
103
|
if (!session.agentToken) {
|
|
92
104
|
throw new Error('Not registered. Call the "register" tool first.');
|
|
93
105
|
}
|
|
94
|
-
return
|
|
106
|
+
return createInternalRelayCast({
|
|
107
|
+
apiKey: session.agentToken,
|
|
108
|
+
baseUrl: options.baseUrl,
|
|
109
|
+
}, mcpOrigin).as(session.agentToken);
|
|
95
110
|
};
|
|
96
111
|
// Enable piggybacking of unread messages on all tool responses
|
|
97
112
|
enablePiggyback(mcpServer, getSession, getAgentClient, telemetry);
|
package/dist/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,sBAAsB,EAAE,MAAM,oCAAoC,CAAC;
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
|
package/dist/stdio.js
CHANGED
|
@@ -1,8 +1,38 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
+
import { readFileSync } from 'node:fs';
|
|
3
|
+
import { join } from 'node:path';
|
|
4
|
+
import { homedir } from 'node:os';
|
|
2
5
|
import { startStdio } from './transports.js';
|
|
3
|
-
|
|
6
|
+
/**
|
|
7
|
+
* Resolve the Relaycast API key from (in order):
|
|
8
|
+
* 1. RELAY_API_KEY env var
|
|
9
|
+
* 2. {cwd}/.agent-relay/relaycast.json (per-project credentials)
|
|
10
|
+
* 3. ~/.agent-relay/relaycast.json (global credentials)
|
|
11
|
+
*/
|
|
12
|
+
function resolveApiKey() {
|
|
13
|
+
if (process.env.RELAY_API_KEY) {
|
|
14
|
+
return process.env.RELAY_API_KEY;
|
|
15
|
+
}
|
|
16
|
+
const candidates = [
|
|
17
|
+
join(process.cwd(), '.agent-relay', 'relaycast.json'),
|
|
18
|
+
join(homedir(), '.agent-relay', 'relaycast.json'),
|
|
19
|
+
];
|
|
20
|
+
for (const path of candidates) {
|
|
21
|
+
try {
|
|
22
|
+
const raw = readFileSync(path, 'utf-8');
|
|
23
|
+
const data = JSON.parse(raw);
|
|
24
|
+
if (data.api_key) {
|
|
25
|
+
return data.api_key;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
catch {
|
|
29
|
+
// File not found or invalid — try next candidate
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
return undefined;
|
|
33
|
+
}
|
|
4
34
|
startStdio({
|
|
5
|
-
apiKey,
|
|
35
|
+
apiKey: resolveApiKey(),
|
|
6
36
|
baseUrl: process.env.RELAY_BASE_URL,
|
|
7
37
|
});
|
|
8
38
|
//# sourceMappingURL=stdio.js.map
|
package/dist/stdio.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stdio.js","sourceRoot":"","sources":["../src/stdio.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,
|
|
1
|
+
{"version":3,"file":"stdio.js","sourceRoot":"","sources":["../src/stdio.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C;;;;;GAKG;AACH,SAAS,aAAa;IACpB,IAAI,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;QAC9B,OAAO,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC;IACnC,CAAC;IAED,MAAM,UAAU,GAAG;QACjB,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,gBAAgB,CAAC;QACrD,IAAI,CAAC,OAAO,EAAE,EAAE,cAAc,EAAE,gBAAgB,CAAC;KAClD,CAAC;IAEF,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;QAC9B,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YACxC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAC7B,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;gBACjB,OAAO,IAAI,CAAC,OAAO,CAAC;YACtB,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,iDAAiD;QACnD,CAAC;IACH,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,UAAU,CAAC;IACT,MAAM,EAAE,aAAa,EAAE;IACvB,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,cAAc;CACpC,CAAC,CAAC"}
|
package/dist/telemetry.d.ts
CHANGED
|
@@ -1,6 +1,14 @@
|
|
|
1
|
+
import { type ClientTelemetryEventName } from '@relaycast/types';
|
|
2
|
+
export interface McpTelemetryOptions {
|
|
3
|
+
posthogHost?: string;
|
|
4
|
+
posthogApiKey?: string;
|
|
5
|
+
originSurface?: 'mcp';
|
|
6
|
+
originClient?: string;
|
|
7
|
+
originVersion?: string;
|
|
8
|
+
}
|
|
1
9
|
export interface McpTelemetry {
|
|
2
|
-
capture: (event:
|
|
10
|
+
capture: (event: ClientTelemetryEventName, properties?: Record<string, unknown>) => void;
|
|
3
11
|
flush: (timeoutMs?: number) => Promise<void>;
|
|
4
12
|
}
|
|
5
|
-
export declare function createMcpTelemetry(version?: string): McpTelemetry;
|
|
13
|
+
export declare function createMcpTelemetry(version?: string, options?: McpTelemetryOptions): McpTelemetry;
|
|
6
14
|
//# sourceMappingURL=telemetry.d.ts.map
|
package/dist/telemetry.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"telemetry.d.ts","sourceRoot":"","sources":["../src/telemetry.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"telemetry.d.ts","sourceRoot":"","sources":["../src/telemetry.ts"],"names":[],"mappings":"AAMA,OAAO,EAGL,KAAK,wBAAwB,EAC9B,MAAM,kBAAkB,CAAC;AAO1B,MAAM,WAAW,mBAAmB;IAClC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,KAAK,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,CAAC,KAAK,EAAE,wBAAwB,EAAE,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;IACzF,KAAK,EAAE,CAAC,SAAS,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC9C;AA6KD,wBAAgB,kBAAkB,CAAC,OAAO,SAAY,EAAE,OAAO,GAAE,mBAAwB,GAAG,YAAY,CA+DvG"}
|
package/dist/telemetry.js
CHANGED
|
@@ -4,15 +4,41 @@ import https from 'node:https';
|
|
|
4
4
|
import os from 'node:os';
|
|
5
5
|
import path from 'node:path';
|
|
6
6
|
import { randomUUID } from 'node:crypto';
|
|
7
|
+
import { parseTelemetryIngestionEvent, sanitizeTelemetryProperties, } from '@relaycast/types';
|
|
7
8
|
const TELEMETRY_PATH = path.join(os.homedir(), '.relay', 'telemetry.json');
|
|
8
9
|
const DEFAULT_POSTHOG_HOST = 'https://us.i.posthog.com';
|
|
9
|
-
const
|
|
10
|
+
const DEFAULT_POSTHOG_PUBLIC_KEY = 'phc_OAqBdey9pESZCcwaen9Fpyz6Ez8QKiMmLOnvFknXzg4';
|
|
10
11
|
function isTruthy(value) {
|
|
11
12
|
if (!value)
|
|
12
13
|
return false;
|
|
13
14
|
const normalized = value.trim().toLowerCase();
|
|
14
15
|
return normalized === '1' || normalized === 'true' || normalized === 'yes' || normalized === 'on';
|
|
15
16
|
}
|
|
17
|
+
function telemetryEnabled(state) {
|
|
18
|
+
if (isTruthy(process.env.DO_NOT_TRACK) || isTruthy(process.env.RELAYCAST_TELEMETRY_DISABLED)) {
|
|
19
|
+
return false;
|
|
20
|
+
}
|
|
21
|
+
if (state.telemetryDisabled === true)
|
|
22
|
+
return false;
|
|
23
|
+
return true;
|
|
24
|
+
}
|
|
25
|
+
function normalizeHost(host) {
|
|
26
|
+
const value = host?.trim();
|
|
27
|
+
if (!value)
|
|
28
|
+
return DEFAULT_POSTHOG_HOST;
|
|
29
|
+
return value.endsWith('/') ? value.slice(0, -1) : value;
|
|
30
|
+
}
|
|
31
|
+
function getPosthogHost(options) {
|
|
32
|
+
return normalizeHost(process.env.RELAYCAST_POSTHOG_HOST
|
|
33
|
+
?? process.env.POSTHOG_HOST
|
|
34
|
+
?? options.posthogHost);
|
|
35
|
+
}
|
|
36
|
+
function getPosthogApiKey(options) {
|
|
37
|
+
return (process.env.RELAYCAST_POSTHOG_API_KEY
|
|
38
|
+
?? process.env.POSTHOG_API_KEY
|
|
39
|
+
?? options.posthogApiKey
|
|
40
|
+
?? DEFAULT_POSTHOG_PUBLIC_KEY);
|
|
41
|
+
}
|
|
16
42
|
function loadState() {
|
|
17
43
|
try {
|
|
18
44
|
const raw = fs.readFileSync(TELEMETRY_PATH, 'utf8');
|
|
@@ -42,30 +68,10 @@ function loadState() {
|
|
|
42
68
|
}
|
|
43
69
|
return state;
|
|
44
70
|
}
|
|
45
|
-
function telemetryEnabled(state) {
|
|
46
|
-
if (isTruthy(process.env.DO_NOT_TRACK) || isTruthy(process.env.RELAYCAST_TELEMETRY_DISABLED)) {
|
|
47
|
-
return false;
|
|
48
|
-
}
|
|
49
|
-
if (state.telemetryDisabled === true)
|
|
50
|
-
return false;
|
|
51
|
-
return true;
|
|
52
|
-
}
|
|
53
|
-
function getPostHogHost() {
|
|
54
|
-
const configured = process.env.POSTHOG_HOST ??
|
|
55
|
-
process.env.RELAYCAST_POSTHOG_HOST ??
|
|
56
|
-
DEFAULT_POSTHOG_HOST;
|
|
57
|
-
return configured.endsWith('/') ? configured.slice(0, -1) : configured;
|
|
58
|
-
}
|
|
59
|
-
function getPostHogKey() {
|
|
60
|
-
return process.env.POSTHOG_API_KEY ??
|
|
61
|
-
process.env.RELAYCAST_POSTHOG_KEY ??
|
|
62
|
-
process.env.POSTHOG_KEY ??
|
|
63
|
-
DEFAULT_POSTHOG_KEY;
|
|
64
|
-
}
|
|
65
71
|
function runtimePrefersFetch() {
|
|
66
72
|
return typeof globalThis.WebSocketPair !== 'undefined';
|
|
67
73
|
}
|
|
68
|
-
async function postJsonWithFetch(urlString, payload) {
|
|
74
|
+
async function postJsonWithFetch(urlString, payload, headers) {
|
|
69
75
|
if (typeof fetch !== 'function')
|
|
70
76
|
return;
|
|
71
77
|
const controller = typeof AbortController !== 'undefined' ? new AbortController() : undefined;
|
|
@@ -76,6 +82,7 @@ async function postJsonWithFetch(urlString, payload) {
|
|
|
76
82
|
method: 'POST',
|
|
77
83
|
headers: {
|
|
78
84
|
'content-type': 'application/json',
|
|
85
|
+
...headers,
|
|
79
86
|
},
|
|
80
87
|
body: JSON.stringify(payload),
|
|
81
88
|
signal: controller?.signal,
|
|
@@ -88,7 +95,7 @@ async function postJsonWithFetch(urlString, payload) {
|
|
|
88
95
|
clearTimeout(timer);
|
|
89
96
|
}
|
|
90
97
|
}
|
|
91
|
-
function postJsonWithNodeRequest(urlString, payload) {
|
|
98
|
+
function postJsonWithNodeRequest(urlString, payload, headers) {
|
|
92
99
|
return new Promise((resolve) => {
|
|
93
100
|
let resolved = false;
|
|
94
101
|
const finish = () => {
|
|
@@ -109,6 +116,7 @@ function postJsonWithNodeRequest(urlString, payload) {
|
|
|
109
116
|
headers: {
|
|
110
117
|
'content-type': 'application/json',
|
|
111
118
|
'content-length': Buffer.byteLength(body),
|
|
119
|
+
...headers,
|
|
112
120
|
},
|
|
113
121
|
}, (res) => {
|
|
114
122
|
res.resume();
|
|
@@ -128,29 +136,33 @@ function postJsonWithNodeRequest(urlString, payload) {
|
|
|
128
136
|
}
|
|
129
137
|
});
|
|
130
138
|
}
|
|
131
|
-
async function postJson(urlString, payload) {
|
|
139
|
+
async function postJson(urlString, payload, headers) {
|
|
132
140
|
if (runtimePrefersFetch()) {
|
|
133
|
-
await postJsonWithFetch(urlString, payload);
|
|
141
|
+
await postJsonWithFetch(urlString, payload, headers);
|
|
134
142
|
return;
|
|
135
143
|
}
|
|
136
|
-
const sentWithNodeRequest = await postJsonWithNodeRequest(urlString, payload);
|
|
144
|
+
const sentWithNodeRequest = await postJsonWithNodeRequest(urlString, payload, headers);
|
|
137
145
|
if (!sentWithNodeRequest) {
|
|
138
|
-
await postJsonWithFetch(urlString, payload);
|
|
146
|
+
await postJsonWithFetch(urlString, payload, headers);
|
|
139
147
|
}
|
|
140
148
|
}
|
|
141
|
-
export function createMcpTelemetry(version = 'unknown') {
|
|
149
|
+
export function createMcpTelemetry(version = 'unknown', options = {}) {
|
|
142
150
|
const state = loadState();
|
|
143
151
|
const sessionId = randomUUID();
|
|
144
152
|
const pending = new Set();
|
|
145
153
|
const distinctId = process.env.RELAYCAST_TELEMETRY_DISTINCT_ID || state.anonymousId;
|
|
154
|
+
const posthogHost = getPosthogHost(options);
|
|
155
|
+
const posthogApiKey = getPosthogApiKey(options);
|
|
156
|
+
const originSurface = options.originSurface ?? 'mcp';
|
|
157
|
+
const originClient = options.originClient ?? '@relaycast/mcp';
|
|
158
|
+
const originVersion = options.originVersion ?? version;
|
|
146
159
|
const capture = (event, properties = {}) => {
|
|
147
160
|
if (!telemetryEnabled(state))
|
|
148
161
|
return;
|
|
149
|
-
const
|
|
150
|
-
api_key: getPostHogKey(),
|
|
162
|
+
const parsed = parseTelemetryIngestionEvent({
|
|
151
163
|
event,
|
|
152
164
|
distinct_id: distinctId,
|
|
153
|
-
properties: {
|
|
165
|
+
properties: sanitizeTelemetryProperties({
|
|
154
166
|
surface: 'mcp',
|
|
155
167
|
mcp_version: version,
|
|
156
168
|
session_id: sessionId,
|
|
@@ -158,9 +170,20 @@ export function createMcpTelemetry(version = 'unknown') {
|
|
|
158
170
|
platform: process.platform,
|
|
159
171
|
arch: process.arch,
|
|
160
172
|
...properties,
|
|
173
|
+
}),
|
|
174
|
+
});
|
|
175
|
+
const payload = {
|
|
176
|
+
api_key: posthogApiKey,
|
|
177
|
+
event: parsed.event,
|
|
178
|
+
distinct_id: parsed.distinct_id,
|
|
179
|
+
properties: {
|
|
180
|
+
...parsed.properties,
|
|
181
|
+
origin_surface: originSurface,
|
|
182
|
+
origin_client: originClient,
|
|
183
|
+
origin_version: originVersion,
|
|
161
184
|
},
|
|
162
185
|
};
|
|
163
|
-
const promise = postJson(`${
|
|
186
|
+
const promise = postJson(`${posthogHost}/capture/`, payload, {});
|
|
164
187
|
pending.add(promise);
|
|
165
188
|
void promise.finally(() => pending.delete(promise));
|
|
166
189
|
};
|
package/dist/telemetry.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"telemetry.js","sourceRoot":"","sources":["../src/telemetry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,KAAK,MAAM,YAAY,CAAC;AAC/B,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"telemetry.js","sourceRoot":"","sources":["../src/telemetry.ts"],"names":[],"mappings":"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"}
|
package/dist/transports.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transports.d.ts","sourceRoot":"","sources":["../src/transports.ts"],"names":[],"mappings":"AAEA,OAAO,EAAqC,KAAK,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAIvF;;;GAGG;AACH,wBAAsB,UAAU,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAIzE;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;
|
|
1
|
+
{"version":3,"file":"transports.d.ts","sourceRoot":"","sources":["../src/transports.ts"],"names":[],"mappings":"AAEA,OAAO,EAAqC,KAAK,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAIvF;;;GAGG;AACH,wBAAsB,UAAU,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAIzE;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"}
|
package/dist/transports.js
CHANGED
|
@@ -34,7 +34,11 @@ export function createHttpHandler(baseOptions, lifecycle) {
|
|
|
34
34
|
return;
|
|
35
35
|
}
|
|
36
36
|
// New session — create fresh MCP server + transport + telemetry
|
|
37
|
-
const telemetry = createMcpTelemetry(MCP_VERSION
|
|
37
|
+
const telemetry = createMcpTelemetry(MCP_VERSION, {
|
|
38
|
+
originSurface: 'mcp',
|
|
39
|
+
originClient: '@relaycast/mcp',
|
|
40
|
+
originVersion: MCP_VERSION,
|
|
41
|
+
});
|
|
38
42
|
const transport = new StreamableHTTPServerTransport({
|
|
39
43
|
sessionIdGenerator: () => randomUUID(),
|
|
40
44
|
});
|
package/dist/transports.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transports.js","sourceRoot":"","sources":["../src/transports.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,6BAA6B,EAAE,MAAM,oDAAoD,CAAC;AACnG,OAAO,EAAE,oBAAoB,EAAE,WAAW,EAAyB,MAAM,aAAa,CAAC;AACvF,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAEpD;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,OAAyB;IACxD,MAAM,SAAS,GAAG,oBAAoB,CAAC,EAAE,GAAG,OAAO,EAAE,kBAAkB,EAAE,OAAO,EAAE,CAAC,CAAC;IACpF,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAC7C,MAAM,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;AACrC,CAAC;AAWD;;;GAGG;AACH,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAwD,CAAC;AAEjF;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAAC,WAA6B,EAAE,SAA4B;IAC3F,OAAO;QACL,2DAA2D;QAC3D,UAAU,EAAE,CAAC,SAAiB,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC;QAE1D,aAAa,EAAE,KAAK,EAClB,GAAwC,EACxC,GAAuC,EACvC,EAAE;YACF,6BAA6B;YAC7B,MAAM,SAAS,GAAG,GAAG,CAAC,OAAO,CAAC,gBAAgB,CAAuB,CAAC;YAEtE,IAAI,SAAS,IAAI,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;gBACzC,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAE,CAAC;gBACzC,MAAM,OAAO,CAAC,SAAS,CAAC,aAAa,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;gBAChD,OAAO;YACT,CAAC;YAED,gEAAgE;YAChE,MAAM,SAAS,GAAG,kBAAkB,CAAC,WAAW,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"transports.js","sourceRoot":"","sources":["../src/transports.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@relaycast/mcp",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.2",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -13,8 +13,8 @@
|
|
|
13
13
|
"lint": "eslint src/"
|
|
14
14
|
},
|
|
15
15
|
"dependencies": {
|
|
16
|
-
"@relaycast/sdk": "0.3.
|
|
17
|
-
"@relaycast/types": "0.3.
|
|
16
|
+
"@relaycast/sdk": "0.3.2",
|
|
17
|
+
"@relaycast/types": "0.3.2",
|
|
18
18
|
"@modelcontextprotocol/sdk": "^1.26.0",
|
|
19
19
|
"express": "^5.2.1",
|
|
20
20
|
"zod": "^4.3.6"
|