@rudderhq/agent-runtime-utils 0.4.6-canary.8 → 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,315 @@
1
+ import { promises as fs } from "node:fs";
2
+ import os from "node:os";
3
+ import path from "node:path";
4
+ import { afterEach, describe, expect, it } from "vitest";
5
+ import { assertRudderMcpCoreAvailable, preflightRudderMcpServer, } from "./rudder-mcp-preflight.js";
6
+ import { RUDDER_BROWSER_MCP_CONTRACT_HASH, RUDDER_BROWSER_MCP_TOOL_NAMES, RUDDER_CORE_MCP_CONTRACT_HASH, RUDDER_MCP_CANONICAL_TOOL_CONTRACTS, RUDDER_MCP_CONTRACT_VERSION, } from "./rudder-mcp.js";
7
+ const roots = [];
8
+ afterEach(async () => {
9
+ await Promise.all(roots.splice(0).map((root) => fs.rm(root, { recursive: true, force: true })));
10
+ });
11
+ async function fixtureCommand(mode, expectedVersion = "0.4.6") {
12
+ const root = await fs.mkdtemp(path.join(os.tmpdir(), "rudder-mcp-preflight-"));
13
+ roots.push(root);
14
+ const script = path.join(root, "server.mjs");
15
+ await fs.writeFile(script, `
16
+ import readline from "node:readline";
17
+ const mode = process.env.RUDDER_PREFLIGHT_FIXTURE_MODE;
18
+ const canonicalTools = ${JSON.stringify(RUDDER_MCP_CANONICAL_TOOL_CONTRACTS)};
19
+ const canonicalByName = new Map(canonicalTools.map((tool) => [tool.name, tool]));
20
+ const browserTools = canonicalTools.filter((tool) => tool.name.startsWith("rudder_browser_")).map((tool) => tool.name);
21
+ const coreTools = canonicalTools.filter((tool) => !tool.name.startsWith("rudder_browser_")).map((tool) => tool.name);
22
+ const desktopCliEntryLeaked = Boolean(process.env.RUDDER_DESKTOP_CLI_ENTRY);
23
+ const canonicalSchema = () => ({ type: "object", additionalProperties: false, properties: {} });
24
+ function advertisedName(name) {
25
+ if (mode === "whitespace-core-name" && name === coreTools[0]) return " " + name + " ";
26
+ if (mode === "whitespace-browser-name" && name === browserTools[0]) return " " + name + " ";
27
+ return name;
28
+ }
29
+ function advertisedDescription(name) {
30
+ const description = canonicalByName.get(name)?.description ?? "Forged Rudder MCP tool.";
31
+ if (mode === "semantic-core-description" && name === coreTools[0]) return description + " changed";
32
+ if (mode === "semantic-browser-description" && name === "rudder_browser_open") return description + " changed";
33
+ return description;
34
+ }
35
+ function inputSchema(name) {
36
+ const canonical = structuredClone(canonicalByName.get(name)?.inputSchema ?? canonicalSchema());
37
+ if (mode === "forged-core-malformed-schema") return { type: "string" };
38
+ if (mode === "malformed-core-keyword" && name === coreTools[0]) {
39
+ return { ...canonicalSchema(), oneOf: "not-an-array" };
40
+ }
41
+ if (mode === "malformed-browser-keyword" && name === browserTools[0]) {
42
+ return { ...canonicalSchema(), enum: "not-an-array" };
43
+ }
44
+ if (mode === "unsupported-core-schema-draft" && name === coreTools[0]) {
45
+ return { ...canonicalSchema(), $schema: "https://json-schema.org/draft/2020-12/schema" };
46
+ }
47
+ if (mode === "unsupported-browser-schema-draft" && name === browserTools[0]) {
48
+ return { ...canonicalSchema(), $schema: "https://example.invalid/unknown-schema" };
49
+ }
50
+ if (mode === "malformed-nested-keyword" && name === coreTools[0]) {
51
+ return { ...canonicalSchema(), properties: { value: { type: "string", oneOf: [] } } };
52
+ }
53
+ if (mode === "malformed-core-schema" && name === coreTools[0]) return { type: "string" };
54
+ if (mode === "malformed-browser-schema" && name === browserTools[0]) {
55
+ return { type: "object", additionalProperties: false, properties: [] };
56
+ }
57
+ if (mode === "semantic-core-required" && name === coreTools[0]) {
58
+ canonical.properties = { ...canonical.properties, bogus: { type: "string" } };
59
+ canonical.required = ["bogus"];
60
+ }
61
+ if (mode === "semantic-browser-required" && name === "rudder_browser_open") {
62
+ canonical.properties = { ...canonical.properties, bogus: { type: "string" } };
63
+ canonical.required = ["bogus"];
64
+ }
65
+ return canonical;
66
+ }
67
+ const lines = readline.createInterface({ input: process.stdin });
68
+ for await (const line of lines) {
69
+ const request = JSON.parse(line);
70
+ if (request.id == null) continue;
71
+ if (mode === "exit") process.exit(2);
72
+ if (mode === "exit-stderr") {
73
+ console.error("ignorable warning");
74
+ console.error("actionable root cause");
75
+ process.exit(3);
76
+ }
77
+ if (request.method === "initialize") {
78
+ const version = mode.startsWith("version") ? "0.4.5" : "0.4.6";
79
+ const hash = mode === "contract" ? "stale-contract" : ${JSON.stringify(RUDDER_BROWSER_MCP_CONTRACT_HASH)};
80
+ console.log(JSON.stringify({ jsonrpc: "2.0", id: request.id, result: {
81
+ protocolVersion: "2024-11-05",
82
+ capabilities: { tools: {}, experimental: { rudder: {
83
+ contractVersion: ${JSON.stringify(RUDDER_MCP_CONTRACT_VERSION)},
84
+ coreContractHash: ${JSON.stringify(RUDDER_CORE_MCP_CONTRACT_HASH)},
85
+ browserContractHash: hash,
86
+ } } },
87
+ serverInfo: { name: mode === "server" || desktopCliEntryLeaked ? "not-rudder" : "rudder-control-plane", version },
88
+ } }));
89
+ }
90
+ if (request.method === "tools/list") {
91
+ if (mode === "malformed") {
92
+ console.log(JSON.stringify({ jsonrpc: "2.0", id: request.id, result: {} }));
93
+ continue;
94
+ }
95
+ const selectedCoreTools = mode === "forged-core" || mode === "forged-core-malformed-schema"
96
+ ? ["rudder_forged_core"]
97
+ : mode === "partial-core"
98
+ ? coreTools.slice(0, -1)
99
+ : mode === "duplicate-core"
100
+ ? [...coreTools, coreTools[0]]
101
+ : mode === "reordered-core"
102
+ ? [coreTools[1], coreTools[0], ...coreTools.slice(2)]
103
+ : mode === "unknown-core"
104
+ ? [...coreTools, "rudder_unknown_core"]
105
+ : mode === "no-core"
106
+ ? []
107
+ : coreTools;
108
+ const selectedBrowserTools = process.env.RUDDER_BROWSER_ENABLED === "true" || mode === "version-ignore-browser-env"
109
+ ? (mode === "tools" ? browserTools.slice(0, -1) : browserTools)
110
+ : [];
111
+ const tools = [...selectedCoreTools, ...selectedBrowserTools];
112
+ console.log(JSON.stringify({ jsonrpc: "2.0", id: request.id, result: {
113
+ tools: tools.map((name) => ({
114
+ name: advertisedName(name),
115
+ description: advertisedDescription(name),
116
+ inputSchema: inputSchema(name),
117
+ })),
118
+ } }));
119
+ }
120
+ }
121
+ `, "utf8");
122
+ return {
123
+ command: process.execPath,
124
+ args: [script],
125
+ env: { RUDDER_PREFLIGHT_FIXTURE_MODE: mode },
126
+ provenance: "repo",
127
+ expectedVersion,
128
+ };
129
+ }
130
+ describe("preflightRudderMcpServer", () => {
131
+ it("accepts the exact version, contract hash, and eight Browser tools", async () => {
132
+ const result = await preflightRudderMcpServer({
133
+ command: await fixtureCommand("ok"),
134
+ runtimeEnv: {},
135
+ browserEnabled: true,
136
+ });
137
+ expect(result).toMatchObject({
138
+ available: true,
139
+ browserAvailable: true,
140
+ provenance: "repo",
141
+ version: "0.4.6",
142
+ contractVersion: RUDDER_MCP_CONTRACT_VERSION,
143
+ coreContractHash: RUDDER_CORE_MCP_CONTRACT_HASH,
144
+ contractHash: RUDDER_BROWSER_MCP_CONTRACT_HASH,
145
+ diagnosticCode: null,
146
+ });
147
+ expect(result.tools.map((tool) => tool.name).filter((name) => name.startsWith("rudder_browser_")))
148
+ .toEqual([...RUDDER_BROWSER_MCP_TOOL_NAMES]);
149
+ });
150
+ it("accepts the recursive schema dialect emitted by the canonical registry", async () => {
151
+ const result = await preflightRudderMcpServer({
152
+ command: await fixtureCommand("canonical-nested-schema"),
153
+ runtimeEnv: {},
154
+ browserEnabled: true,
155
+ });
156
+ expect(result).toMatchObject({ available: true, browserAvailable: true, diagnosticCode: null });
157
+ });
158
+ it.each([
159
+ ["server", "browser_bundle_server_mismatch"],
160
+ ["version", "browser_bundle_version_mismatch"],
161
+ ["contract", "browser_bundle_contract_mismatch"],
162
+ ["tools", "browser_bundle_tools_mismatch"],
163
+ ["exit", "browser_bundle_handshake_failed"],
164
+ ])("degrades Browser with a stable diagnostic for %s mismatch", async (mode, diagnosticCode) => {
165
+ const result = await preflightRudderMcpServer({
166
+ command: await fixtureCommand(mode),
167
+ runtimeEnv: {},
168
+ browserEnabled: true,
169
+ });
170
+ expect(result.browserAvailable).toBe(false);
171
+ expect(result.diagnosticCode).toBe(diagnosticCode);
172
+ });
173
+ it("fails closed when Browser downgrade cannot establish an exact core-only provider surface", async () => {
174
+ const result = await preflightRudderMcpServer({
175
+ command: await fixtureCommand("version-ignore-browser-env"),
176
+ runtimeEnv: {},
177
+ browserEnabled: true,
178
+ });
179
+ expect(result).toMatchObject({
180
+ available: false,
181
+ browserAvailable: false,
182
+ diagnosticCode: "browser_bundle_handshake_failed",
183
+ });
184
+ expect(result.diagnostic).toContain("exact core-only provider surface");
185
+ expect(() => assertRudderMcpCoreAvailable(result)).toThrow(/Rudder MCP/u);
186
+ });
187
+ it("does not expose the private Desktop CLI entry to the preflight child", async () => {
188
+ const result = await preflightRudderMcpServer({
189
+ command: await fixtureCommand("ok"),
190
+ runtimeEnv: { RUDDER_DESKTOP_CLI_ENTRY: "/private/Desktop.app/desktop-cli.js" },
191
+ browserEnabled: true,
192
+ });
193
+ expect(result).toMatchObject({ available: true, browserAvailable: true, diagnosticCode: null });
194
+ });
195
+ it.each(["server", "exit"])("fails core MCP fast for %s failure", async (mode) => {
196
+ const result = await preflightRudderMcpServer({
197
+ command: await fixtureCommand(mode),
198
+ runtimeEnv: {},
199
+ browserEnabled: true,
200
+ });
201
+ expect(result.available).toBe(false);
202
+ expect(() => assertRudderMcpCoreAvailable(result)).toThrow(/Rudder MCP/u);
203
+ });
204
+ it("reports the exit context and trailing stderr detail", async () => {
205
+ const result = await preflightRudderMcpServer({
206
+ command: await fixtureCommand("exit-stderr"),
207
+ runtimeEnv: {},
208
+ browserEnabled: true,
209
+ });
210
+ expect(result.diagnostic).toContain("code=3");
211
+ expect(result.diagnostic).toContain("ignorable warning | actionable root cause");
212
+ });
213
+ it.each([
214
+ "malformed",
215
+ "no-core",
216
+ "forged-core",
217
+ "partial-core",
218
+ "duplicate-core",
219
+ "reordered-core",
220
+ "unknown-core",
221
+ "whitespace-core-name",
222
+ "malformed-core-schema",
223
+ "malformed-core-keyword",
224
+ "unsupported-core-schema-draft",
225
+ "malformed-nested-keyword",
226
+ ])("fails core MCP fast for %s tools/list", async (mode) => {
227
+ const result = await preflightRudderMcpServer({
228
+ command: await fixtureCommand(mode),
229
+ runtimeEnv: { RUDDER_DESKTOP_CLI_ENTRY: "/private/Desktop.app/desktop-cli.js" },
230
+ browserEnabled: false,
231
+ });
232
+ expect(result).toMatchObject({
233
+ available: false,
234
+ browserAvailable: false,
235
+ diagnosticCode: "browser_bundle_handshake_failed",
236
+ });
237
+ expect(() => assertRudderMcpCoreAvailable(result)).toThrow(/Rudder MCP/u);
238
+ });
239
+ it.each(["semantic-core-required", "semantic-core-description"])("fails core MCP fast for legal semantic forgery %s despite matching advertised hashes", async (mode) => {
240
+ const result = await preflightRudderMcpServer({
241
+ command: await fixtureCommand(mode),
242
+ runtimeEnv: {},
243
+ browserEnabled: false,
244
+ });
245
+ expect(result).toMatchObject({
246
+ available: false,
247
+ coreContractHash: RUDDER_CORE_MCP_CONTRACT_HASH,
248
+ contractHash: RUDDER_BROWSER_MCP_CONTRACT_HASH,
249
+ diagnosticCode: "browser_bundle_handshake_failed",
250
+ });
251
+ expect(() => assertRudderMcpCoreAvailable(result)).toThrow(/Rudder MCP/u);
252
+ });
253
+ it("keeps canonical core MCP while degrading Browser for a malformed Browser schema", async () => {
254
+ const result = await preflightRudderMcpServer({
255
+ command: await fixtureCommand("malformed-browser-schema"),
256
+ runtimeEnv: {},
257
+ browserEnabled: true,
258
+ });
259
+ expect(result).toMatchObject({
260
+ available: true,
261
+ browserAvailable: false,
262
+ diagnosticCode: "browser_bundle_tools_mismatch",
263
+ });
264
+ expect(() => assertRudderMcpCoreAvailable(result)).not.toThrow();
265
+ });
266
+ it.each([
267
+ "whitespace-browser-name",
268
+ "malformed-browser-keyword",
269
+ "unsupported-browser-schema-draft",
270
+ ])("keeps canonical core MCP while degrading Browser for %s", async (mode) => {
271
+ const result = await preflightRudderMcpServer({
272
+ command: await fixtureCommand(mode),
273
+ runtimeEnv: {},
274
+ browserEnabled: true,
275
+ });
276
+ expect(result).toMatchObject({
277
+ available: true,
278
+ browserAvailable: false,
279
+ diagnosticCode: "browser_bundle_tools_mismatch",
280
+ });
281
+ expect(() => assertRudderMcpCoreAvailable(result)).not.toThrow();
282
+ });
283
+ it.each(["semantic-browser-required", "semantic-browser-description"])("degrades Browser for legal semantic forgery %s despite matching advertised hashes", async (mode) => {
284
+ const result = await preflightRudderMcpServer({
285
+ command: await fixtureCommand(mode),
286
+ runtimeEnv: {},
287
+ browserEnabled: true,
288
+ });
289
+ expect(result).toMatchObject({
290
+ available: true,
291
+ browserAvailable: false,
292
+ coreContractHash: RUDDER_CORE_MCP_CONTRACT_HASH,
293
+ contractHash: RUDDER_BROWSER_MCP_CONTRACT_HASH,
294
+ diagnosticCode: "browser_bundle_tools_mismatch",
295
+ });
296
+ expect(() => assertRudderMcpCoreAvailable(result)).not.toThrow();
297
+ });
298
+ it("rejects a forged core name even alongside all eight Browser names and malformed schemas", async () => {
299
+ const result = await preflightRudderMcpServer({
300
+ command: await fixtureCommand("forged-core-malformed-schema"),
301
+ runtimeEnv: {},
302
+ browserEnabled: true,
303
+ });
304
+ expect(result).toMatchObject({
305
+ available: false,
306
+ browserAvailable: false,
307
+ diagnosticCode: "browser_bundle_handshake_failed",
308
+ });
309
+ expect(result.tools.map((tool) => tool.name)).toEqual([
310
+ "rudder_forged_core",
311
+ ...RUDDER_BROWSER_MCP_TOOL_NAMES,
312
+ ]);
313
+ });
314
+ });
315
+ //# sourceMappingURL=rudder-mcp-preflight.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rudder-mcp-preflight.test.js","sourceRoot":"","sources":["../src/rudder-mcp-preflight.test.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"rudder-mcp-server.d.ts","sourceRoot":"","sources":["../src/rudder-mcp-server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,KAAK,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAGhF,wBAAsB,0BAA0B,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAYhG"}
1
+ {"version":3,"file":"rudder-mcp-server.d.ts","sourceRoot":"","sources":["../src/rudder-mcp-server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,KAAK,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAGhF,wBAAsB,0BAA0B,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAehG"}
@@ -9,8 +9,11 @@ export async function resolveRudderMcpCliCommand(moduleDir) {
9
9
  command: target.command,
10
10
  args: [...target.args, "mcp-server"],
11
11
  env: {
12
+ ...(target.env ?? {}),
12
13
  RUDDER_MCP_RUDDER_BIN: cliShim,
13
14
  },
15
+ provenance: target.provenance,
16
+ expectedVersion: target.version,
14
17
  };
15
18
  }
16
19
  //# sourceMappingURL=rudder-mcp-server.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"rudder-mcp-server.js","sourceRoot":"","sources":["../src/rudder-mcp-server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAA4B,MAAM,iBAAiB,CAAC;AAChF,OAAO,EAAE,wBAAwB,EAAE,0BAA0B,EAAE,MAAM,uBAAuB,CAAC;AAE7F,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAAC,SAAiB;IAChE,MAAM,MAAM,GAAG,MAAM,0BAA0B,CAAC,SAAS,CAAC,CAAC;IAC3D,IAAI,CAAC,MAAM;QAAE,OAAO,mBAAmB,EAAE,CAAC;IAC1C,MAAM,OAAO,GAAG,MAAM,wBAAwB,CAAC,MAAM,CAAC,CAAC;IAEvD,OAAO;QACL,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,IAAI,EAAE,CAAC,GAAG,MAAM,CAAC,IAAI,EAAE,YAAY,CAAC;QACpC,GAAG,EAAE;YACH,qBAAqB,EAAE,OAAO;SAC/B;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"rudder-mcp-server.js","sourceRoot":"","sources":["../src/rudder-mcp-server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAA4B,MAAM,iBAAiB,CAAC;AAChF,OAAO,EAAE,wBAAwB,EAAE,0BAA0B,EAAE,MAAM,uBAAuB,CAAC;AAE7F,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAAC,SAAiB;IAChE,MAAM,MAAM,GAAG,MAAM,0BAA0B,CAAC,SAAS,CAAC,CAAC;IAC3D,IAAI,CAAC,MAAM;QAAE,OAAO,mBAAmB,EAAE,CAAC;IAC1C,MAAM,OAAO,GAAG,MAAM,wBAAwB,CAAC,MAAM,CAAC,CAAC;IAEvD,OAAO;QACL,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,IAAI,EAAE,CAAC,GAAG,MAAM,CAAC,IAAI,EAAE,YAAY,CAAC;QACpC,GAAG,EAAE;YACH,GAAG,CAAC,MAAM,CAAC,GAAG,IAAI,EAAE,CAAC;YACrB,qBAAqB,EAAE,OAAO;SAC/B;QACD,UAAU,EAAE,MAAM,CAAC,UAAU;QAC7B,eAAe,EAAE,MAAM,CAAC,OAAO;KAChC,CAAC;AACJ,CAAC"}