@rudderhq/agent-runtime-utils 0.4.6-canary.9 → 0.5.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 (48) hide show
  1. package/dist/index.d.ts +2 -2
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +1 -1
  4. package/dist/index.js.map +1 -1
  5. package/dist/rudder-mcp-contract.d.ts +1028 -0
  6. package/dist/rudder-mcp-contract.d.ts.map +1 -0
  7. package/dist/rudder-mcp-contract.js +257 -0
  8. package/dist/rudder-mcp-contract.js.map +1 -0
  9. package/dist/rudder-mcp-fingerprint.d.ts +4 -0
  10. package/dist/rudder-mcp-fingerprint.d.ts.map +1 -0
  11. package/dist/rudder-mcp-fingerprint.js +23 -0
  12. package/dist/rudder-mcp-fingerprint.js.map +1 -0
  13. package/dist/rudder-mcp-preflight.d.ts +12 -0
  14. package/dist/rudder-mcp-preflight.d.ts.map +1 -0
  15. package/dist/rudder-mcp-preflight.js +324 -0
  16. package/dist/rudder-mcp-preflight.js.map +1 -0
  17. package/dist/rudder-mcp-preflight.test.d.ts +2 -0
  18. package/dist/rudder-mcp-preflight.test.d.ts.map +1 -0
  19. package/dist/rudder-mcp-preflight.test.js +315 -0
  20. package/dist/rudder-mcp-preflight.test.js.map +1 -0
  21. package/dist/rudder-mcp-server.d.ts.map +1 -1
  22. package/dist/rudder-mcp-server.js +3 -0
  23. package/dist/rudder-mcp-server.js.map +1 -1
  24. package/dist/rudder-mcp-tool-descriptors.generated.d.ts +620 -0
  25. package/dist/rudder-mcp-tool-descriptors.generated.d.ts.map +1 -0
  26. package/dist/rudder-mcp-tool-descriptors.generated.js +699 -0
  27. package/dist/rudder-mcp-tool-descriptors.generated.js.map +1 -0
  28. package/dist/rudder-mcp.d.ts +32 -2
  29. package/dist/rudder-mcp.d.ts.map +1 -1
  30. package/dist/rudder-mcp.js +28 -9
  31. package/dist/rudder-mcp.js.map +1 -1
  32. package/dist/rudder-mcp.test.js +38 -2
  33. package/dist/rudder-mcp.test.js.map +1 -1
  34. package/dist/server-utils.cli.d.ts +41 -3
  35. package/dist/server-utils.cli.d.ts.map +1 -1
  36. package/dist/server-utils.cli.js +307 -23
  37. package/dist/server-utils.cli.js.map +1 -1
  38. package/dist/server-utils.prompts.d.ts +8 -6
  39. package/dist/server-utils.prompts.d.ts.map +1 -1
  40. package/dist/server-utils.prompts.js +77 -24
  41. package/dist/server-utils.prompts.js.map +1 -1
  42. package/dist/server-utils.prompts.test.js +97 -1
  43. package/dist/server-utils.prompts.test.js.map +1 -1
  44. package/dist/server-utils.test.js +582 -5
  45. package/dist/server-utils.test.js.map +1 -1
  46. package/dist/types.d.ts +58 -0
  47. package/dist/types.d.ts.map +1 -1
  48. package/package.json +1 -1
@@ -0,0 +1,324 @@
1
+ import { spawn } from "node:child_process";
2
+ import { fingerprintRudderMcpToolManifest } from "./rudder-mcp-fingerprint.js";
3
+ import { RUDDER_BROWSER_MCP_CONTRACT_HASH, RUDDER_BROWSER_MCP_TOOL_NAMES, RUDDER_CORE_MCP_CONTRACT_HASH, RUDDER_CORE_MCP_TOOL_NAMES, RUDDER_MCP_CONTRACT_VERSION, RUDDER_MCP_SERVER_NAME, isRudderBrowserMcpToolCandidate, } from "./rudder-mcp.js";
4
+ const PREFLIGHT_TIMEOUT_MS = 10_000;
5
+ const RUDDER_SCHEMA_KEYS = new Set([
6
+ "type",
7
+ "description",
8
+ "properties",
9
+ "items",
10
+ "additionalProperties",
11
+ "required",
12
+ ]);
13
+ const JSON_SCHEMA_TYPES = new Set([
14
+ "array",
15
+ "boolean",
16
+ "integer",
17
+ "null",
18
+ "number",
19
+ "object",
20
+ "string",
21
+ ]);
22
+ function boundedStderrDetail(stderr) {
23
+ const lines = stderr.split(/\r?\n/u).map((line) => line.trim()).filter(Boolean);
24
+ if (lines.length === 0)
25
+ return null;
26
+ const detail = lines.slice(-5).join(" | ");
27
+ return detail.length <= 2_000 ? detail : `…${detail.slice(-1_999)}`;
28
+ }
29
+ function asRecord(value) {
30
+ return typeof value === "object" && value !== null && !Array.isArray(value)
31
+ ? value
32
+ : {};
33
+ }
34
+ function asExactString(value) {
35
+ return typeof value === "string" && value.length > 0 ? value : null;
36
+ }
37
+ function schemaTypes(value) {
38
+ if (typeof value === "string") {
39
+ return JSON_SCHEMA_TYPES.has(value) ? [value] : null;
40
+ }
41
+ if (!Array.isArray(value)
42
+ || value.length === 0
43
+ || value.some((entry) => typeof entry !== "string" || !JSON_SCHEMA_TYPES.has(entry))) {
44
+ return null;
45
+ }
46
+ const types = value;
47
+ return new Set(types).size === types.length ? types : null;
48
+ }
49
+ function isValidRudderSchemaNode(value) {
50
+ if (typeof value !== "object" || value === null || Array.isArray(value))
51
+ return false;
52
+ const schema = value;
53
+ if (Object.keys(schema).some((key) => !RUDDER_SCHEMA_KEYS.has(key)))
54
+ return false;
55
+ const types = schemaTypes(schema.type);
56
+ if (!types)
57
+ return false;
58
+ if (schema.description !== undefined && typeof schema.description !== "string")
59
+ return false;
60
+ const supportsObject = types.includes("object");
61
+ const supportsArray = types.includes("array");
62
+ if (schema.additionalProperties !== undefined) {
63
+ if (!supportsObject || typeof schema.additionalProperties !== "boolean")
64
+ return false;
65
+ }
66
+ if (schema.properties !== undefined) {
67
+ if (!supportsObject || typeof schema.properties !== "object" || schema.properties === null || Array.isArray(schema.properties)) {
68
+ return false;
69
+ }
70
+ if (!Object.values(schema.properties).every(isValidRudderSchemaNode))
71
+ return false;
72
+ }
73
+ if (schema.items !== undefined && (!supportsArray || !isValidRudderSchemaNode(schema.items)))
74
+ return false;
75
+ if (schema.required !== undefined) {
76
+ if (!supportsObject || !Array.isArray(schema.required))
77
+ return false;
78
+ const required = schema.required;
79
+ if (required.some((key) => typeof key !== "string") || new Set(required).size !== required.length)
80
+ return false;
81
+ if (typeof schema.properties !== "object"
82
+ || schema.properties === null
83
+ || Array.isArray(schema.properties)
84
+ || required.some((key) => !Object.hasOwn(schema.properties, key))) {
85
+ return false;
86
+ }
87
+ }
88
+ return true;
89
+ }
90
+ function hasCanonicalInputSchema(value) {
91
+ if (typeof value !== "object"
92
+ || value === null
93
+ || Array.isArray(value)) {
94
+ return false;
95
+ }
96
+ const schema = value;
97
+ if (!isValidRudderSchemaNode(schema))
98
+ return false;
99
+ const properties = schema.properties;
100
+ return schema.type === "object"
101
+ && schema.additionalProperties === false
102
+ && typeof properties === "object"
103
+ && properties !== null
104
+ && !Array.isArray(properties)
105
+ && Object.values(properties).every(isValidRudderSchemaNode);
106
+ }
107
+ function hasExactNames(actual, expected) {
108
+ return actual.length === expected.length
109
+ && actual.every((name, index) => name === expected[index]);
110
+ }
111
+ function semanticManifestHash(tools) {
112
+ if (tools.some((tool) => tool.description === undefined || tool.inputSchema === undefined))
113
+ return null;
114
+ return fingerprintRudderMcpToolManifest(tools);
115
+ }
116
+ function failed(command, code, message, partial = {}) {
117
+ const coreUnavailable = code === "browser_bundle_handshake_failed"
118
+ || code === "browser_bundle_server_mismatch";
119
+ return {
120
+ available: partial.available ?? !coreUnavailable,
121
+ browserAvailable: false,
122
+ provenance: command.provenance,
123
+ version: partial.version ?? null,
124
+ contractVersion: partial.contractVersion ?? null,
125
+ coreContractHash: partial.coreContractHash ?? null,
126
+ contractHash: partial.contractHash ?? null,
127
+ diagnosticCode: code,
128
+ diagnostic: message,
129
+ tools: partial.tools ?? [],
130
+ };
131
+ }
132
+ export function assertRudderMcpCoreAvailable(result) {
133
+ if (result.available)
134
+ return;
135
+ throw new Error(result.diagnostic ?? "Rudder MCP initialize/tools-list handshake failed.");
136
+ }
137
+ async function exchange(command, env, timeoutMs) {
138
+ return await new Promise((resolve, reject) => {
139
+ const child = spawn(command.command, command.args, {
140
+ env,
141
+ stdio: ["pipe", "pipe", "pipe"],
142
+ windowsHide: true,
143
+ });
144
+ const responses = new Map();
145
+ let stdout = "";
146
+ let stderr = "";
147
+ let settled = false;
148
+ const finish = (error) => {
149
+ if (settled)
150
+ return;
151
+ settled = true;
152
+ clearTimeout(timer);
153
+ child.kill("SIGTERM");
154
+ if (error)
155
+ reject(error);
156
+ else
157
+ resolve(responses);
158
+ };
159
+ const parseLines = () => {
160
+ const lines = stdout.split(/\r?\n/u);
161
+ stdout = lines.pop() ?? "";
162
+ for (const line of lines) {
163
+ if (!line.trim())
164
+ continue;
165
+ try {
166
+ const parsed = JSON.parse(line);
167
+ if (typeof parsed.id === "string" || typeof parsed.id === "number")
168
+ responses.set(parsed.id, parsed);
169
+ }
170
+ catch {
171
+ // A bounded timeout turns non-protocol stdout into a stable diagnostic.
172
+ }
173
+ }
174
+ if (responses.has("initialize") && responses.has("tools-list"))
175
+ finish();
176
+ };
177
+ const timer = setTimeout(() => {
178
+ const detail = boundedStderrDetail(stderr);
179
+ finish(new Error(detail ? `MCP handshake timed out: ${detail}` : "MCP handshake timed out"));
180
+ }, timeoutMs);
181
+ child.on("error", (error) => finish(error));
182
+ child.on("close", (code, signal) => {
183
+ if (settled)
184
+ return;
185
+ const exitDetail = `MCP server exited before handshake completed (code=${code ?? "null"}, signal=${signal ?? "none"})`;
186
+ const detail = boundedStderrDetail(stderr);
187
+ finish(new Error(detail ? `${exitDetail}: ${detail}` : exitDetail));
188
+ });
189
+ child.stderr.on("data", (chunk) => {
190
+ stderr += chunk.toString();
191
+ });
192
+ child.stdout.on("data", (chunk) => {
193
+ stdout += chunk.toString();
194
+ parseLines();
195
+ });
196
+ child.stdin.write(`${JSON.stringify({
197
+ jsonrpc: "2.0",
198
+ id: "initialize",
199
+ method: "initialize",
200
+ params: {
201
+ protocolVersion: "2024-11-05",
202
+ capabilities: {},
203
+ clientInfo: { name: "rudder-browser-bundle-preflight", version: "1" },
204
+ },
205
+ })}\n`);
206
+ child.stdin.write(`${JSON.stringify({ jsonrpc: "2.0", method: "notifications/initialized", params: {} })}\n`);
207
+ child.stdin.write(`${JSON.stringify({ jsonrpc: "2.0", id: "tools-list", method: "tools/list", params: {} })}\n`);
208
+ });
209
+ }
210
+ function hasExactProviderSurface(result, browserEnabled) {
211
+ const expectedNames = [
212
+ ...RUDDER_CORE_MCP_TOOL_NAMES,
213
+ ...(browserEnabled ? RUDDER_BROWSER_MCP_TOOL_NAMES : []),
214
+ ];
215
+ return result.available && hasExactNames(result.tools.map((tool) => tool.name), expectedNames);
216
+ }
217
+ async function preflightRudderMcpServerOnce(input) {
218
+ const env = Object.fromEntries(Object.entries({ ...input.runtimeEnv, ...(input.command.env ?? {}), ...(input.managedEnv ?? {}) })
219
+ .filter((entry) => typeof entry[1] === "string"));
220
+ delete env.RUDDER_DESKTOP_CLI_ENTRY;
221
+ env.RUDDER_BROWSER_ENABLED = input.browserEnabled ? "true" : "false";
222
+ let responses;
223
+ try {
224
+ responses = await exchange(input.command, env, input.timeoutMs ?? PREFLIGHT_TIMEOUT_MS);
225
+ }
226
+ catch (error) {
227
+ const detail = error instanceof Error ? error.message : String(error);
228
+ return failed(input.command, "browser_bundle_handshake_failed", `Rudder MCP initialize/tools-list handshake failed: ${detail}; core control-plane tools are unavailable.`);
229
+ }
230
+ const initialize = responses.get("initialize");
231
+ const toolsList = responses.get("tools-list");
232
+ if (initialize?.error || toolsList?.error) {
233
+ return failed(input.command, "browser_bundle_handshake_failed", "Rudder MCP initialize/tools-list returned a protocol error; core control-plane tools are unavailable.");
234
+ }
235
+ const initializeResult = asRecord(initialize?.result);
236
+ const serverInfo = asRecord(initializeResult.serverInfo);
237
+ const capabilities = asRecord(initializeResult.capabilities);
238
+ const rudder = asRecord(asRecord(capabilities.experimental).rudder);
239
+ const version = asExactString(serverInfo.version);
240
+ const contractVersion = asExactString(rudder.contractVersion);
241
+ const coreContractHash = asExactString(rudder.coreContractHash);
242
+ const contractHash = asExactString(rudder.browserContractHash);
243
+ const listed = asRecord(toolsList?.result).tools;
244
+ if (!Array.isArray(listed)) {
245
+ return failed(input.command, "browser_bundle_handshake_failed", "Rudder MCP tools/list returned an invalid manifest; core control-plane tools are unavailable.", { version, contractVersion, coreContractHash, contractHash });
246
+ }
247
+ const parsedTools = listed.map((entry) => {
248
+ const tool = asRecord(entry);
249
+ const name = asExactString(tool.name);
250
+ if (!name)
251
+ return null;
252
+ const description = asExactString(tool.description);
253
+ const inputSchema = asRecord(tool.inputSchema);
254
+ return {
255
+ name,
256
+ hasCanonicalInputSchema: hasCanonicalInputSchema(tool.inputSchema),
257
+ ...(description ? { description } : {}),
258
+ ...(Object.keys(inputSchema).length > 0 ? { inputSchema } : {}),
259
+ };
260
+ });
261
+ const tools = parsedTools
262
+ .filter((entry) => entry !== null)
263
+ .map(({ hasCanonicalInputSchema: _hasCanonicalInputSchema, ...tool }) => tool);
264
+ const partial = { version, contractVersion, coreContractHash, contractHash, tools };
265
+ if (asExactString(serverInfo.name) !== RUDDER_MCP_SERVER_NAME) {
266
+ return failed(input.command, "browser_bundle_server_mismatch", "Rudder MCP server identity did not match the managed bundle; core control-plane tools are unavailable.", partial);
267
+ }
268
+ const coreTools = parsedTools.filter((tool) => tool && !isRudderBrowserMcpToolCandidate(tool.name));
269
+ const coreToolNames = coreTools.map((tool) => tool.name);
270
+ const observedCoreContractHash = semanticManifestHash(coreTools.filter((tool) => tool !== null));
271
+ if (parsedTools.some((tool) => tool === null)
272
+ || !hasExactNames(coreToolNames, RUDDER_CORE_MCP_TOOL_NAMES)
273
+ || coreTools.some((tool) => !tool.hasCanonicalInputSchema)
274
+ || coreContractHash !== RUDDER_CORE_MCP_CONTRACT_HASH
275
+ || observedCoreContractHash !== RUDDER_CORE_MCP_CONTRACT_HASH) {
276
+ return failed(input.command, "browser_bundle_handshake_failed", "Rudder MCP tools/list did not match the canonical core control-plane manifest; core MCP is unavailable.", partial);
277
+ }
278
+ if (input.command.expectedVersion && version !== input.command.expectedVersion) {
279
+ return failed(input.command, "browser_bundle_version_mismatch", `Rudder MCP bundle version mismatch (expected ${input.command.expectedVersion}, received ${version ?? "unknown"}); optional Browser capability was disabled.`, partial);
280
+ }
281
+ if (contractVersion !== RUDDER_MCP_CONTRACT_VERSION || contractHash !== RUDDER_BROWSER_MCP_CONTRACT_HASH) {
282
+ return failed(input.command, "browser_bundle_contract_mismatch", "Rudder MCP Browser contract hash did not match the runtime bundle; optional Browser capability was disabled.", partial);
283
+ }
284
+ const browserTools = parsedTools.filter((tool) => tool && isRudderBrowserMcpToolCandidate(tool.name));
285
+ const browserToolNames = browserTools.map((tool) => tool.name);
286
+ const expectedBrowserTools = input.browserEnabled ? [...RUDDER_BROWSER_MCP_TOOL_NAMES] : [];
287
+ const observedBrowserContractHash = semanticManifestHash(browserTools.filter((tool) => tool !== null));
288
+ if (!hasExactNames(browserToolNames, expectedBrowserTools)
289
+ || browserTools.some((tool) => !tool.hasCanonicalInputSchema)
290
+ || (input.browserEnabled && observedBrowserContractHash !== RUDDER_BROWSER_MCP_CONTRACT_HASH)) {
291
+ return failed(input.command, "browser_bundle_tools_mismatch", "Rudder MCP Browser tool manifest did not expose the exact managed tool set; optional Browser capability was disabled.", partial);
292
+ }
293
+ return {
294
+ available: true,
295
+ browserAvailable: input.browserEnabled,
296
+ provenance: input.command.provenance,
297
+ version,
298
+ contractVersion,
299
+ coreContractHash,
300
+ contractHash,
301
+ diagnosticCode: null,
302
+ diagnostic: null,
303
+ tools,
304
+ };
305
+ }
306
+ export async function preflightRudderMcpServer(input) {
307
+ const requested = await preflightRudderMcpServerOnce(input);
308
+ if (!requested.available || (input.browserEnabled && requested.browserAvailable))
309
+ return requested;
310
+ if (!input.browserEnabled) {
311
+ if (hasExactProviderSurface(requested, false))
312
+ return requested;
313
+ return failed(input.command, "browser_bundle_handshake_failed", "Rudder MCP core-only tools/list did not expose the exact canonical core manifest; core MCP is unavailable.", { ...requested, available: false });
314
+ }
315
+ const coreOnly = await preflightRudderMcpServerOnce({ ...input, browserEnabled: false });
316
+ if (!hasExactProviderSurface(coreOnly, false)) {
317
+ return failed(input.command, "browser_bundle_handshake_failed", "Rudder MCP Browser downgrade did not produce an exact core-only provider surface; core MCP is unavailable.", { ...coreOnly, available: false });
318
+ }
319
+ return {
320
+ ...requested,
321
+ tools: coreOnly.tools,
322
+ };
323
+ }
324
+ //# sourceMappingURL=rudder-mcp-preflight.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rudder-mcp-preflight.js","sourceRoot":"","sources":["../src/rudder-mcp-preflight.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=rudder-mcp-preflight.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rudder-mcp-preflight.test.d.ts","sourceRoot":"","sources":["../src/rudder-mcp-preflight.test.ts"],"names":[],"mappings":""}