agent-recorder 0.0.8 → 0.0.10

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 (101) hide show
  1. package/package.json +1 -1
  2. package/vendor/node_modules/@agent-recorder/cli/analytics/session-analytics.test.js +1 -0
  3. package/vendor/node_modules/@agent-recorder/cli/analytics/session-analytics.test.js.map +1 -1
  4. package/vendor/node_modules/@agent-recorder/cli/commands/configure-wrap.d.ts +15 -0
  5. package/vendor/node_modules/@agent-recorder/cli/commands/configure-wrap.d.ts.map +1 -0
  6. package/vendor/node_modules/@agent-recorder/cli/commands/configure-wrap.js +207 -0
  7. package/vendor/node_modules/@agent-recorder/cli/commands/configure-wrap.js.map +1 -0
  8. package/vendor/node_modules/@agent-recorder/cli/commands/configure.d.ts +2 -0
  9. package/vendor/node_modules/@agent-recorder/cli/commands/configure.d.ts.map +1 -1
  10. package/vendor/node_modules/@agent-recorder/cli/commands/configure.js +117 -1
  11. package/vendor/node_modules/@agent-recorder/cli/commands/configure.js.map +1 -1
  12. package/vendor/node_modules/@agent-recorder/cli/commands/doctor.d.ts.map +1 -1
  13. package/vendor/node_modules/@agent-recorder/cli/commands/doctor.js +113 -19
  14. package/vendor/node_modules/@agent-recorder/cli/commands/doctor.js.map +1 -1
  15. package/vendor/node_modules/@agent-recorder/cli/commands/doctor.test.d.ts +5 -0
  16. package/vendor/node_modules/@agent-recorder/cli/commands/doctor.test.d.ts.map +1 -0
  17. package/vendor/node_modules/@agent-recorder/cli/commands/doctor.test.js +152 -0
  18. package/vendor/node_modules/@agent-recorder/cli/commands/doctor.test.js.map +1 -0
  19. package/vendor/node_modules/@agent-recorder/cli/commands/install.d.ts +7 -1
  20. package/vendor/node_modules/@agent-recorder/cli/commands/install.d.ts.map +1 -1
  21. package/vendor/node_modules/@agent-recorder/cli/commands/install.js +98 -14
  22. package/vendor/node_modules/@agent-recorder/cli/commands/install.js.map +1 -1
  23. package/vendor/node_modules/@agent-recorder/cli/commands/install.test.d.ts +5 -0
  24. package/vendor/node_modules/@agent-recorder/cli/commands/install.test.d.ts.map +1 -0
  25. package/vendor/node_modules/@agent-recorder/cli/commands/install.test.js +173 -0
  26. package/vendor/node_modules/@agent-recorder/cli/commands/install.test.js.map +1 -0
  27. package/vendor/node_modules/@agent-recorder/cli/config/hubify.d.ts +51 -0
  28. package/vendor/node_modules/@agent-recorder/cli/config/hubify.d.ts.map +1 -0
  29. package/vendor/node_modules/@agent-recorder/cli/config/hubify.js +125 -0
  30. package/vendor/node_modules/@agent-recorder/cli/config/hubify.js.map +1 -0
  31. package/vendor/node_modules/@agent-recorder/cli/config/hubify.test.d.ts +5 -0
  32. package/vendor/node_modules/@agent-recorder/cli/config/hubify.test.d.ts.map +1 -0
  33. package/vendor/node_modules/@agent-recorder/cli/config/hubify.test.js +329 -0
  34. package/vendor/node_modules/@agent-recorder/cli/config/hubify.test.js.map +1 -0
  35. package/vendor/node_modules/@agent-recorder/cli/index.js +18 -3
  36. package/vendor/node_modules/@agent-recorder/cli/index.js.map +1 -1
  37. package/vendor/node_modules/@agent-recorder/core/claude-config.d.ts +32 -0
  38. package/vendor/node_modules/@agent-recorder/core/claude-config.d.ts.map +1 -0
  39. package/vendor/node_modules/@agent-recorder/core/claude-config.js +65 -0
  40. package/vendor/node_modules/@agent-recorder/core/claude-config.js.map +1 -0
  41. package/vendor/node_modules/@agent-recorder/core/config.d.ts +4 -0
  42. package/vendor/node_modules/@agent-recorder/core/config.d.ts.map +1 -1
  43. package/vendor/node_modules/@agent-recorder/core/config.js +6 -0
  44. package/vendor/node_modules/@agent-recorder/core/config.js.map +1 -1
  45. package/vendor/node_modules/@agent-recorder/core/db/events.d.ts +3 -0
  46. package/vendor/node_modules/@agent-recorder/core/db/events.d.ts.map +1 -1
  47. package/vendor/node_modules/@agent-recorder/core/db/events.js +8 -3
  48. package/vendor/node_modules/@agent-recorder/core/db/events.js.map +1 -1
  49. package/vendor/node_modules/@agent-recorder/core/db/events.test.js +34 -0
  50. package/vendor/node_modules/@agent-recorder/core/db/events.test.js.map +1 -1
  51. package/vendor/node_modules/@agent-recorder/core/index.d.ts +4 -1
  52. package/vendor/node_modules/@agent-recorder/core/index.d.ts.map +1 -1
  53. package/vendor/node_modules/@agent-recorder/core/index.js +4 -1
  54. package/vendor/node_modules/@agent-recorder/core/index.js.map +1 -1
  55. package/vendor/node_modules/@agent-recorder/core/migrations/006_add_upstream_key.sql +7 -0
  56. package/vendor/node_modules/@agent-recorder/core/providers/index.d.ts +9 -0
  57. package/vendor/node_modules/@agent-recorder/core/providers/index.d.ts.map +1 -0
  58. package/vendor/node_modules/@agent-recorder/core/providers/index.js +9 -0
  59. package/vendor/node_modules/@agent-recorder/core/providers/index.js.map +1 -0
  60. package/vendor/node_modules/@agent-recorder/core/providers/io.d.ts +36 -0
  61. package/vendor/node_modules/@agent-recorder/core/providers/io.d.ts.map +1 -0
  62. package/vendor/node_modules/@agent-recorder/core/providers/io.js +88 -0
  63. package/vendor/node_modules/@agent-recorder/core/providers/io.js.map +1 -0
  64. package/vendor/node_modules/@agent-recorder/core/providers/io.test.d.ts +5 -0
  65. package/vendor/node_modules/@agent-recorder/core/providers/io.test.d.ts.map +1 -0
  66. package/vendor/node_modules/@agent-recorder/core/providers/io.test.js +248 -0
  67. package/vendor/node_modules/@agent-recorder/core/providers/io.test.js.map +1 -0
  68. package/vendor/node_modules/@agent-recorder/core/providers/types.d.ts +36 -0
  69. package/vendor/node_modules/@agent-recorder/core/providers/types.d.ts.map +1 -0
  70. package/vendor/node_modules/@agent-recorder/core/providers/types.js +6 -0
  71. package/vendor/node_modules/@agent-recorder/core/providers/types.js.map +1 -0
  72. package/vendor/node_modules/@agent-recorder/core/types/events.d.ts +2 -0
  73. package/vendor/node_modules/@agent-recorder/core/types/events.d.ts.map +1 -1
  74. package/vendor/node_modules/@agent-recorder/core/wrap-utils.d.ts +42 -0
  75. package/vendor/node_modules/@agent-recorder/core/wrap-utils.d.ts.map +1 -0
  76. package/vendor/node_modules/@agent-recorder/core/wrap-utils.js +80 -0
  77. package/vendor/node_modules/@agent-recorder/core/wrap-utils.js.map +1 -0
  78. package/vendor/node_modules/@agent-recorder/service/index.d.ts.map +1 -1
  79. package/vendor/node_modules/@agent-recorder/service/index.js +19 -0
  80. package/vendor/node_modules/@agent-recorder/service/index.js.map +1 -1
  81. package/vendor/node_modules/@agent-recorder/service/mcp/auto-wrap-manager.d.ts +43 -0
  82. package/vendor/node_modules/@agent-recorder/service/mcp/auto-wrap-manager.d.ts.map +1 -0
  83. package/vendor/node_modules/@agent-recorder/service/mcp/auto-wrap-manager.js +221 -0
  84. package/vendor/node_modules/@agent-recorder/service/mcp/auto-wrap-manager.js.map +1 -0
  85. package/vendor/node_modules/@agent-recorder/service/mcp/hub.test.d.ts +6 -0
  86. package/vendor/node_modules/@agent-recorder/service/mcp/hub.test.d.ts.map +1 -0
  87. package/vendor/node_modules/@agent-recorder/service/mcp/hub.test.js +319 -0
  88. package/vendor/node_modules/@agent-recorder/service/mcp/hub.test.js.map +1 -0
  89. package/vendor/node_modules/@agent-recorder/service/mcp/proxy.d.ts +1 -0
  90. package/vendor/node_modules/@agent-recorder/service/mcp/proxy.d.ts.map +1 -1
  91. package/vendor/node_modules/@agent-recorder/service/mcp/proxy.js +267 -17
  92. package/vendor/node_modules/@agent-recorder/service/mcp/proxy.js.map +1 -1
  93. package/vendor/node_modules/@agent-recorder/service/mcp/proxy.test.js +165 -0
  94. package/vendor/node_modules/@agent-recorder/service/mcp/proxy.test.js.map +1 -1
  95. package/vendor/node_modules/@agent-recorder/service/mcp/recorder.d.ts +1 -0
  96. package/vendor/node_modules/@agent-recorder/service/mcp/recorder.d.ts.map +1 -1
  97. package/vendor/node_modules/@agent-recorder/service/mcp/recorder.js +5 -2
  98. package/vendor/node_modules/@agent-recorder/service/mcp/recorder.js.map +1 -1
  99. package/vendor/node_modules/@agent-recorder/service/routes/events.d.ts.map +1 -1
  100. package/vendor/node_modules/@agent-recorder/service/routes/events.js +1 -0
  101. package/vendor/node_modules/@agent-recorder/service/routes/events.js.map +1 -1
@@ -0,0 +1,319 @@
1
+ /**
2
+ * Tests for MCP Hub mode.
3
+ * Verifies tools/list aggregation and tools/call routing with multiple providers.
4
+ */
5
+ import { describe, it, expect, beforeEach, afterEach } from "vitest";
6
+ import Fastify, {} from "fastify";
7
+ import { loadConfig, openMemoryDatabase, runMigrations, writeProvidersFile, getDefaultProvidersPath, } from "@agent-recorder/core";
8
+ import { createMcpProxy } from "./proxy.js";
9
+ import * as fs from "node:fs";
10
+ import { join, dirname } from "node:path";
11
+ import { fileURLToPath } from "node:url";
12
+ const __filename = fileURLToPath(import.meta.url);
13
+ const __dirname = dirname(__filename);
14
+ /**
15
+ * Create a mock MCP server that responds to tools/list and tools/call.
16
+ */
17
+ async function createMockMcpServer(port, tools) {
18
+ const app = Fastify({ logger: false });
19
+ // Mock tools/list endpoint
20
+ app.post("/", async (request, reply) => {
21
+ const body = request.body;
22
+ if (body.method === "tools/list") {
23
+ return reply.code(200).send({
24
+ jsonrpc: "2.0",
25
+ result: {
26
+ tools: tools.map((t) => ({
27
+ name: t.name,
28
+ description: t.description,
29
+ inputSchema: { type: "object", properties: {} },
30
+ })),
31
+ },
32
+ id: body.id ?? null,
33
+ });
34
+ }
35
+ if (body.method === "tools/call") {
36
+ const params = body.params;
37
+ const tool = tools.find((t) => t.name === params.name);
38
+ if (!tool) {
39
+ return reply.code(200).send({
40
+ jsonrpc: "2.0",
41
+ error: {
42
+ code: -32602,
43
+ message: `Unknown tool: ${params.name}`,
44
+ },
45
+ id: body.id ?? null,
46
+ });
47
+ }
48
+ return reply.code(200).send({
49
+ jsonrpc: "2.0",
50
+ result: { success: true, tool: params.name },
51
+ id: body.id ?? null,
52
+ });
53
+ }
54
+ return reply.code(400).send({
55
+ jsonrpc: "2.0",
56
+ error: { code: -32601, message: "Method not found" },
57
+ id: body.id ?? null,
58
+ });
59
+ });
60
+ await app.listen({ port, host: "127.0.0.1" });
61
+ return {
62
+ app,
63
+ close: async () => {
64
+ await app.close();
65
+ },
66
+ };
67
+ }
68
+ describe("MCP Hub Mode", () => {
69
+ let db;
70
+ let sessionId;
71
+ let mockServer1;
72
+ let mockServer2;
73
+ beforeEach(async () => {
74
+ // Create in-memory database with migrations
75
+ db = openMemoryDatabase();
76
+ const migrationsDir = join(__dirname, "..", "..", "..", "core", "migrations");
77
+ runMigrations(db, migrationsDir);
78
+ // Create session
79
+ sessionId = "test-session-hub";
80
+ db.prepare("INSERT INTO sessions (id, started_at, status, created_at) VALUES (?, datetime('now'), ?, datetime('now'))").run(sessionId, "active");
81
+ // Start mock MCP servers
82
+ mockServer1 = await createMockMcpServer(9991, [
83
+ { name: "echo", description: "Echo tool" },
84
+ { name: "uppercase", description: "Uppercase tool" },
85
+ ]);
86
+ mockServer2 = await createMockMcpServer(9992, [
87
+ { name: "reverse", description: "Reverse tool" },
88
+ { name: "lowercase", description: "Lowercase tool" },
89
+ ]);
90
+ });
91
+ afterEach(async () => {
92
+ if (mockServer1)
93
+ await mockServer1.close();
94
+ if (mockServer2)
95
+ await mockServer2.close();
96
+ if (db)
97
+ db.close();
98
+ });
99
+ it("aggregates tools/list from multiple providers with namespacing", async () => {
100
+ // Write providers BEFORE creating proxy so it loads them during init
101
+ writeProvidersFile({
102
+ version: 1,
103
+ providers: [
104
+ { id: "server1", type: "http", url: "http://127.0.0.1:9991/" },
105
+ { id: "server2", type: "http", url: "http://127.0.0.1:9992/" },
106
+ ],
107
+ }, getDefaultProvidersPath());
108
+ const config = loadConfig();
109
+ const { app, close } = await createMcpProxy({
110
+ db,
111
+ config: {
112
+ ...config,
113
+ // Override providers path for test
114
+ mcpProxyPort: 19991,
115
+ },
116
+ sessionId,
117
+ });
118
+ try {
119
+ await app.listen({ port: 19991, host: "127.0.0.1" });
120
+ // Call tools/list
121
+ const response = await fetch("http://127.0.0.1:19991/", {
122
+ method: "POST",
123
+ headers: { "Content-Type": "application/json" },
124
+ body: JSON.stringify({
125
+ jsonrpc: "2.0",
126
+ method: "tools/list",
127
+ id: 1,
128
+ }),
129
+ });
130
+ expect(response.status).toBe(200);
131
+ const data = (await response.json());
132
+ const tools = data.result.tools;
133
+ // Verify namespaced tool names from both providers
134
+ expect(tools).toHaveLength(4);
135
+ const toolNames = tools.map((t) => t.name).sort();
136
+ expect(toolNames).toEqual([
137
+ "server1.echo",
138
+ "server1.uppercase",
139
+ "server2.lowercase",
140
+ "server2.reverse",
141
+ ]);
142
+ }
143
+ finally {
144
+ await close();
145
+ // Cleanup providers file
146
+ if (fs.existsSync(getDefaultProvidersPath())) {
147
+ fs.unlinkSync(getDefaultProvidersPath());
148
+ }
149
+ }
150
+ });
151
+ it("routes tools/call to correct provider and records with upstreamKey", async () => {
152
+ // Write providers BEFORE creating proxy so it loads them during init
153
+ writeProvidersFile({
154
+ version: 1,
155
+ providers: [
156
+ { id: "server1", type: "http", url: "http://127.0.0.1:9991/" },
157
+ { id: "server2", type: "http", url: "http://127.0.0.1:9992/" },
158
+ ],
159
+ }, getDefaultProvidersPath());
160
+ const config = loadConfig();
161
+ const { app, close } = await createMcpProxy({
162
+ db,
163
+ config: {
164
+ ...config,
165
+ mcpProxyPort: 19992,
166
+ },
167
+ sessionId,
168
+ });
169
+ try {
170
+ await app.listen({ port: 19992, host: "127.0.0.1" });
171
+ // Call namespaced tool from server1
172
+ const response1 = await fetch("http://127.0.0.1:19992/", {
173
+ method: "POST",
174
+ headers: { "Content-Type": "application/json" },
175
+ body: JSON.stringify({
176
+ jsonrpc: "2.0",
177
+ method: "tools/call",
178
+ params: { name: "server1.echo", arguments: { text: "hello" } },
179
+ id: 2,
180
+ }),
181
+ });
182
+ expect(response1.status).toBe(200);
183
+ const data1 = (await response1.json());
184
+ expect(data1.result.tool).toBe("echo"); // Tool name without namespace
185
+ // Call namespaced tool from server2
186
+ const response2 = await fetch("http://127.0.0.1:19992/", {
187
+ method: "POST",
188
+ headers: { "Content-Type": "application/json" },
189
+ body: JSON.stringify({
190
+ jsonrpc: "2.0",
191
+ method: "tools/call",
192
+ params: { name: "server2.reverse", arguments: { text: "world" } },
193
+ id: 3,
194
+ }),
195
+ });
196
+ expect(response2.status).toBe(200);
197
+ const data2 = (await response2.json());
198
+ expect(data2.result.tool).toBe("reverse");
199
+ // Verify events recorded with correct upstreamKey
200
+ const events = db
201
+ .prepare("SELECT * FROM events WHERE session_id = ? ORDER BY sequence ASC")
202
+ .all(sessionId);
203
+ expect(events).toHaveLength(2);
204
+ // First event: server1.echo -> routed to server1
205
+ expect(events[0].tool_name).toBe("echo");
206
+ expect(events[0].upstream_key).toBe("server1");
207
+ expect(events[0].status).toBe("success");
208
+ // Second event: server2.reverse -> routed to server2
209
+ expect(events[1].tool_name).toBe("reverse");
210
+ expect(events[1].upstream_key).toBe("server2");
211
+ expect(events[1].status).toBe("success");
212
+ }
213
+ finally {
214
+ await close();
215
+ if (fs.existsSync(getDefaultProvidersPath())) {
216
+ fs.unlinkSync(getDefaultProvidersPath());
217
+ }
218
+ }
219
+ });
220
+ it("handles unknown provider gracefully", async () => {
221
+ // Write providers BEFORE creating proxy so it loads them during init
222
+ writeProvidersFile({
223
+ version: 1,
224
+ providers: [
225
+ { id: "server1", type: "http", url: "http://127.0.0.1:9991/" },
226
+ ],
227
+ }, getDefaultProvidersPath());
228
+ const config = loadConfig();
229
+ const { app, close } = await createMcpProxy({
230
+ db,
231
+ config: {
232
+ ...config,
233
+ mcpProxyPort: 19993,
234
+ },
235
+ sessionId,
236
+ });
237
+ try {
238
+ await app.listen({ port: 19993, host: "127.0.0.1" });
239
+ // Call tool with unknown provider ID
240
+ const response = await fetch("http://127.0.0.1:19993/", {
241
+ method: "POST",
242
+ headers: { "Content-Type": "application/json" },
243
+ body: JSON.stringify({
244
+ jsonrpc: "2.0",
245
+ method: "tools/call",
246
+ params: { name: "unknown.tool", arguments: {} },
247
+ id: 4,
248
+ }),
249
+ });
250
+ expect(response.status).toBe(404);
251
+ const data = (await response.json());
252
+ expect(data.error.message).toContain("Unknown provider");
253
+ expect(data.error.data.category).toBe("downstream_unreachable");
254
+ // Verify error event recorded
255
+ const events = db
256
+ .prepare("SELECT * FROM events WHERE session_id = ?")
257
+ .all(sessionId);
258
+ expect(events).toHaveLength(1);
259
+ expect(events[0].tool_name).toBe("tool");
260
+ expect(events[0].upstream_key).toBe("unknown");
261
+ expect(events[0].status).toBe("error");
262
+ expect(events[0].error_category).toBe("downstream_unreachable");
263
+ }
264
+ finally {
265
+ await close();
266
+ if (fs.existsSync(getDefaultProvidersPath())) {
267
+ fs.unlinkSync(getDefaultProvidersPath());
268
+ }
269
+ }
270
+ });
271
+ it("handles provider failure during tools/list gracefully", async () => {
272
+ // Write providers BEFORE creating proxy so it loads them during init
273
+ // Include one unreachable provider
274
+ writeProvidersFile({
275
+ version: 1,
276
+ providers: [
277
+ { id: "server1", type: "http", url: "http://127.0.0.1:9991/" },
278
+ { id: "unreachable", type: "http", url: "http://127.0.0.1:19999/" },
279
+ ],
280
+ }, getDefaultProvidersPath());
281
+ const config = loadConfig();
282
+ const { app, close } = await createMcpProxy({
283
+ db,
284
+ config: {
285
+ ...config,
286
+ mcpProxyPort: 19994,
287
+ debugProxy: true, // Enable debug logging for failure test
288
+ },
289
+ sessionId,
290
+ });
291
+ try {
292
+ await app.listen({ port: 19994, host: "127.0.0.1" });
293
+ // Call tools/list - should return tools from server1 only
294
+ const response = await fetch("http://127.0.0.1:19994/", {
295
+ method: "POST",
296
+ headers: { "Content-Type": "application/json" },
297
+ body: JSON.stringify({
298
+ jsonrpc: "2.0",
299
+ method: "tools/list",
300
+ id: 5,
301
+ }),
302
+ });
303
+ expect(response.status).toBe(200);
304
+ const data = (await response.json());
305
+ const tools = data.result.tools;
306
+ // Should only have tools from server1 (unreachable provider omitted)
307
+ expect(tools).toHaveLength(2);
308
+ const toolNames = tools.map((t) => t.name).sort();
309
+ expect(toolNames).toEqual(["server1.echo", "server1.uppercase"]);
310
+ }
311
+ finally {
312
+ await close();
313
+ if (fs.existsSync(getDefaultProvidersPath())) {
314
+ fs.unlinkSync(getDefaultProvidersPath());
315
+ }
316
+ }
317
+ });
318
+ });
319
+ //# sourceMappingURL=hub.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hub.test.js","sourceRoot":"","sources":["../../src/mcp/hub.test.ts"],"names":[],"mappings":"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"}
@@ -2,6 +2,7 @@
2
2
  * MCP Proxy using Streamable HTTP transport.
3
3
  * Handles POST requests only, returns application/json responses.
4
4
  * Records tools/call events to the database.
5
+ * Supports hub mode: aggregates multiple HTTP providers.
5
6
  */
6
7
  import { type FastifyInstance } from "fastify";
7
8
  import type Database from "better-sqlite3";
@@ -1 +1 @@
1
- {"version":3,"file":"proxy.d.ts","sourceRoot":"","sources":["../../src/mcp/proxy.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAgB,EAAE,KAAK,eAAe,EAAE,MAAM,SAAS,CAAC;AACxD,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAC3C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AA2BnD,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,QAAQ,CAAC,QAAQ,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,iFAAiF;IACjF,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,uDAAuD;IACvD,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,oBAAoB;IACnC,GAAG,EAAE,eAAe,CAAC;IACrB,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3B,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5B;AAyDD;;GAEG;AACH,wBAAsB,cAAc,CAClC,OAAO,EAAE,eAAe,GACvB,OAAO,CAAC,oBAAoB,CAAC,CA+K/B"}
1
+ {"version":3,"file":"proxy.d.ts","sourceRoot":"","sources":["../../src/mcp/proxy.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAgB,EAAE,KAAK,eAAe,EAAE,MAAM,SAAS,CAAC;AACxD,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAC3C,OAAO,KAAK,EAAE,MAAM,EAAgB,MAAM,sBAAsB,CAAC;AAsDjE,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,QAAQ,CAAC,QAAQ,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,iFAAiF;IACjF,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,uDAAuD;IACvD,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,oBAAoB;IACnC,GAAG,EAAE,eAAe,CAAC;IACrB,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3B,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5B;AAmPD;;GAEG;AACH,wBAAsB,cAAc,CAClC,OAAO,EAAE,eAAe,GACvB,OAAO,CAAC,oBAAoB,CAAC,CAkT/B"}