vaiz-mcp 0.1.3 → 0.1.4
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/proxy-server.d.ts +26 -1
- package/dist/proxy-server.d.ts.map +1 -1
- package/dist/proxy-server.js +255 -42
- package/dist/proxy-server.js.map +1 -1
- package/package.json +1 -1
package/dist/proxy-server.d.ts
CHANGED
|
@@ -1,6 +1,12 @@
|
|
|
1
1
|
import type { VaizConfig } from './types.js';
|
|
2
2
|
/**
|
|
3
|
-
* MCP Proxy Server that forwards stdio JSON-RPC messages to Vaiz HTTP MCP API
|
|
3
|
+
* MCP Proxy Server that forwards stdio JSON-RPC messages to Vaiz HTTP MCP API.
|
|
4
|
+
*
|
|
5
|
+
* Resilience strategy:
|
|
6
|
+
* - Retry with exponential backoff on transient errors
|
|
7
|
+
* - Cache tools/list responses; NEVER return an error for tools/list
|
|
8
|
+
* - Background health check when API is down
|
|
9
|
+
* - Re-initialize session + send notifications/tools/list_changed on recovery
|
|
4
10
|
*/
|
|
5
11
|
export declare class VaizMCPProxyServer {
|
|
6
12
|
private apiKey;
|
|
@@ -10,13 +16,32 @@ export declare class VaizMCPProxyServer {
|
|
|
10
16
|
private rl;
|
|
11
17
|
private initialized;
|
|
12
18
|
private debug;
|
|
19
|
+
private responseCache;
|
|
20
|
+
private lastInitParams;
|
|
21
|
+
private apiHealthy;
|
|
22
|
+
private healthCheckTimer;
|
|
13
23
|
constructor(config?: VaizConfig & {
|
|
14
24
|
debug?: boolean;
|
|
15
25
|
});
|
|
16
26
|
private log;
|
|
27
|
+
/** Always logged (not just in debug mode) */
|
|
28
|
+
private logWarn;
|
|
17
29
|
private logError;
|
|
18
30
|
private getHeaders;
|
|
19
31
|
private sendResponse;
|
|
32
|
+
private sleep;
|
|
33
|
+
private isTransientError;
|
|
34
|
+
private isRetryableStatus;
|
|
35
|
+
private markApiDown;
|
|
36
|
+
private startHealthCheck;
|
|
37
|
+
private stopHealthCheck;
|
|
38
|
+
/** Tell Cursor to re-fetch tools/list */
|
|
39
|
+
private notifyToolsChanged;
|
|
40
|
+
/**
|
|
41
|
+
* Establish a fresh session with the remote API.
|
|
42
|
+
* Sends initialize + notifications/initialized.
|
|
43
|
+
*/
|
|
44
|
+
private reinitializeSession;
|
|
20
45
|
private proxyRequest;
|
|
21
46
|
private handleSSEResponse;
|
|
22
47
|
private handleNotification;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"proxy-server.d.ts","sourceRoot":"","sources":["../src/proxy-server.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAA4C,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"proxy-server.d.ts","sourceRoot":"","sources":["../src/proxy-server.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAA4C,MAAM,YAAY,CAAC;AAOvF;;;;;;;;GAQG;AACH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,OAAO,CAAqB;IACpC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,SAAS,CAAuB;IACxC,OAAO,CAAC,EAAE,CAAmC;IAC7C,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,KAAK,CAAU;IAGvB,OAAO,CAAC,aAAa,CAAuC;IAG5D,OAAO,CAAC,cAAc,CAAsC;IAG5D,OAAO,CAAC,UAAU,CAAQ;IAC1B,OAAO,CAAC,gBAAgB,CAA+C;gBAE3D,MAAM,GAAE,UAAU,GAAG;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAO;IAgBzD,OAAO,CAAC,GAAG;IAMX,6CAA6C;IAC7C,OAAO,CAAC,OAAO;IAIf,OAAO,CAAC,QAAQ;IAMhB,OAAO,CAAC,UAAU;IAUlB,OAAO,CAAC,YAAY;IAMpB,OAAO,CAAC,KAAK;IAIb,OAAO,CAAC,gBAAgB;IAYxB,OAAO,CAAC,iBAAiB;IAMzB,OAAO,CAAC,WAAW;IAQnB,OAAO,CAAC,gBAAgB;IAoBxB,OAAO,CAAC,eAAe;IAOvB,yCAAyC;IACzC,OAAO,CAAC,kBAAkB;IAQ1B;;;OAGG;YACW,mBAAmB;YAoDnB,YAAY;YAoJZ,iBAAiB;IAqE/B,OAAO,CAAC,kBAAkB;IAmB1B;;OAEG;IACH,KAAK,IAAI,IAAI;IA8Cb;;OAEG;IACH,IAAI,IAAI,IAAI;CAOb;AAED,wBAAgB,wBAAwB,CACtC,MAAM,CAAC,EAAE,UAAU,GAAG;IAAE,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,GACxC,kBAAkB,CAEpB"}
|
package/dist/proxy-server.js
CHANGED
|
@@ -37,8 +37,17 @@ exports.VaizMCPProxyServer = void 0;
|
|
|
37
37
|
exports.createVaizMCPProxyServer = createVaizMCPProxyServer;
|
|
38
38
|
const readline = __importStar(require("readline"));
|
|
39
39
|
const DEFAULT_API_URL = 'https://api.vaiz.com/mcp';
|
|
40
|
+
const MAX_RETRIES = 3;
|
|
41
|
+
const RETRY_DELAY_MS = 1000;
|
|
42
|
+
const HEALTH_CHECK_INTERVAL_MS = 5000;
|
|
40
43
|
/**
|
|
41
|
-
* MCP Proxy Server that forwards stdio JSON-RPC messages to Vaiz HTTP MCP API
|
|
44
|
+
* MCP Proxy Server that forwards stdio JSON-RPC messages to Vaiz HTTP MCP API.
|
|
45
|
+
*
|
|
46
|
+
* Resilience strategy:
|
|
47
|
+
* - Retry with exponential backoff on transient errors
|
|
48
|
+
* - Cache tools/list responses; NEVER return an error for tools/list
|
|
49
|
+
* - Background health check when API is down
|
|
50
|
+
* - Re-initialize session + send notifications/tools/list_changed on recovery
|
|
42
51
|
*/
|
|
43
52
|
class VaizMCPProxyServer {
|
|
44
53
|
apiKey;
|
|
@@ -48,6 +57,13 @@ class VaizMCPProxyServer {
|
|
|
48
57
|
rl = null;
|
|
49
58
|
initialized = false;
|
|
50
59
|
debug;
|
|
60
|
+
// Response cache for tools/list and initialize
|
|
61
|
+
responseCache = new Map();
|
|
62
|
+
// Store original initialize params for session re-initialization
|
|
63
|
+
lastInitParams;
|
|
64
|
+
// Health check / API state
|
|
65
|
+
apiHealthy = true;
|
|
66
|
+
healthCheckTimer = null;
|
|
51
67
|
constructor(config = {}) {
|
|
52
68
|
this.apiKey = config.apiKey || process.env.VAIZ_API_TOKEN || '';
|
|
53
69
|
this.spaceId = config.spaceId || process.env.VAIZ_SPACE_ID || undefined;
|
|
@@ -58,14 +74,20 @@ class VaizMCPProxyServer {
|
|
|
58
74
|
process.exit(1);
|
|
59
75
|
}
|
|
60
76
|
}
|
|
77
|
+
// ── logging ──────────────────────────────────────────────
|
|
61
78
|
log(message) {
|
|
62
79
|
if (this.debug) {
|
|
63
80
|
process.stderr.write(`[vaiz-mcp] ${message}\n`);
|
|
64
81
|
}
|
|
65
82
|
}
|
|
83
|
+
/** Always logged (not just in debug mode) */
|
|
84
|
+
logWarn(message) {
|
|
85
|
+
process.stderr.write(`[vaiz-mcp] WARN: ${message}\n`);
|
|
86
|
+
}
|
|
66
87
|
logError(message) {
|
|
67
88
|
process.stderr.write(`[vaiz-mcp] ERROR: ${message}\n`);
|
|
68
89
|
}
|
|
90
|
+
// ── helpers ──────────────────────────────────────────────
|
|
69
91
|
getHeaders() {
|
|
70
92
|
return {
|
|
71
93
|
'Authorization': `Bearer ${this.apiKey}`,
|
|
@@ -80,58 +102,243 @@ class VaizMCPProxyServer {
|
|
|
80
102
|
process.stdout.write(json + '\n');
|
|
81
103
|
this.log(`→ ${json}`);
|
|
82
104
|
}
|
|
105
|
+
sleep(ms) {
|
|
106
|
+
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
107
|
+
}
|
|
108
|
+
isTransientError(error) {
|
|
109
|
+
if (error instanceof TypeError)
|
|
110
|
+
return true;
|
|
111
|
+
if (error instanceof Error) {
|
|
112
|
+
const msg = error.message.toLowerCase();
|
|
113
|
+
return msg.includes('fetch') || msg.includes('network') ||
|
|
114
|
+
msg.includes('econnrefused') || msg.includes('econnreset') ||
|
|
115
|
+
msg.includes('etimedout') || msg.includes('socket') ||
|
|
116
|
+
msg.includes('abort');
|
|
117
|
+
}
|
|
118
|
+
return false;
|
|
119
|
+
}
|
|
120
|
+
isRetryableStatus(status) {
|
|
121
|
+
return status >= 500 || status === 429;
|
|
122
|
+
}
|
|
123
|
+
// ── health check & recovery ──────────────────────────────
|
|
124
|
+
markApiDown() {
|
|
125
|
+
if (!this.apiHealthy)
|
|
126
|
+
return;
|
|
127
|
+
this.apiHealthy = false;
|
|
128
|
+
this.sessionId = null;
|
|
129
|
+
this.logWarn('API is DOWN — starting background health check');
|
|
130
|
+
this.startHealthCheck();
|
|
131
|
+
}
|
|
132
|
+
startHealthCheck() {
|
|
133
|
+
if (this.healthCheckTimer)
|
|
134
|
+
return;
|
|
135
|
+
this.healthCheckTimer = setInterval(async () => {
|
|
136
|
+
this.log('Health check: pinging API...');
|
|
137
|
+
try {
|
|
138
|
+
// Try to re-initialize a fresh session
|
|
139
|
+
const ok = await this.reinitializeSession();
|
|
140
|
+
if (ok) {
|
|
141
|
+
this.apiHealthy = true;
|
|
142
|
+
this.stopHealthCheck();
|
|
143
|
+
this.logWarn('API is UP — notifying Cursor to refresh tools');
|
|
144
|
+
this.notifyToolsChanged();
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
catch {
|
|
148
|
+
this.log('Health check: API still unreachable');
|
|
149
|
+
}
|
|
150
|
+
}, HEALTH_CHECK_INTERVAL_MS);
|
|
151
|
+
}
|
|
152
|
+
stopHealthCheck() {
|
|
153
|
+
if (this.healthCheckTimer) {
|
|
154
|
+
clearInterval(this.healthCheckTimer);
|
|
155
|
+
this.healthCheckTimer = null;
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
/** Tell Cursor to re-fetch tools/list */
|
|
159
|
+
notifyToolsChanged() {
|
|
160
|
+
this.log('Sending notifications/tools/list_changed to Cursor');
|
|
161
|
+
this.sendResponse({
|
|
162
|
+
jsonrpc: '2.0',
|
|
163
|
+
method: 'notifications/tools/list_changed',
|
|
164
|
+
});
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* Establish a fresh session with the remote API.
|
|
168
|
+
* Sends initialize + notifications/initialized.
|
|
169
|
+
*/
|
|
170
|
+
async reinitializeSession() {
|
|
171
|
+
this.log('Re-initializing session...');
|
|
172
|
+
this.sessionId = null;
|
|
173
|
+
this.initialized = false;
|
|
174
|
+
const initRequest = {
|
|
175
|
+
jsonrpc: '2.0',
|
|
176
|
+
id: '_reinit_' + Date.now(),
|
|
177
|
+
method: 'initialize',
|
|
178
|
+
params: this.lastInitParams || {
|
|
179
|
+
protocolVersion: '2024-11-05',
|
|
180
|
+
capabilities: {},
|
|
181
|
+
clientInfo: { name: 'vaiz-mcp-proxy', version: '1.0.0' },
|
|
182
|
+
},
|
|
183
|
+
};
|
|
184
|
+
const response = await fetch(this.apiUrl, {
|
|
185
|
+
method: 'POST',
|
|
186
|
+
headers: this.getHeaders(),
|
|
187
|
+
body: JSON.stringify(initRequest),
|
|
188
|
+
});
|
|
189
|
+
if (!response.ok) {
|
|
190
|
+
this.logError(`Re-init HTTP ${response.status}`);
|
|
191
|
+
return false;
|
|
192
|
+
}
|
|
193
|
+
const newSessionId = response.headers.get('Mcp-Session-Id');
|
|
194
|
+
if (newSessionId) {
|
|
195
|
+
this.sessionId = newSessionId;
|
|
196
|
+
this.log(`New session: ${newSessionId}`);
|
|
197
|
+
}
|
|
198
|
+
const result = await response.json();
|
|
199
|
+
if (result.result) {
|
|
200
|
+
this.responseCache.set('initialize', result);
|
|
201
|
+
}
|
|
202
|
+
// Fire notifications/initialized
|
|
203
|
+
await fetch(this.apiUrl, {
|
|
204
|
+
method: 'POST',
|
|
205
|
+
headers: this.getHeaders(),
|
|
206
|
+
body: JSON.stringify({ jsonrpc: '2.0', method: 'notifications/initialized' }),
|
|
207
|
+
}).catch(() => { });
|
|
208
|
+
this.initialized = true;
|
|
209
|
+
this.log('Session re-initialized OK');
|
|
210
|
+
return true;
|
|
211
|
+
}
|
|
212
|
+
// ── main proxy logic ─────────────────────────────────────
|
|
83
213
|
async proxyRequest(request) {
|
|
84
|
-
this.log(`← ${
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
this.
|
|
95
|
-
this.log(`Session ID: ${newSessionId}`);
|
|
214
|
+
this.log(`← ${request.method} (id=${request.id})`);
|
|
215
|
+
// Remember init params for future re-init
|
|
216
|
+
if (request.method === 'initialize' && request.params) {
|
|
217
|
+
this.lastInitParams = request.params;
|
|
218
|
+
}
|
|
219
|
+
let lastError;
|
|
220
|
+
for (let attempt = 0; attempt <= MAX_RETRIES; attempt++) {
|
|
221
|
+
if (attempt > 0) {
|
|
222
|
+
const delay = RETRY_DELAY_MS * Math.pow(2, attempt - 1);
|
|
223
|
+
this.log(` retry ${attempt}/${MAX_RETRIES} after ${delay}ms`);
|
|
224
|
+
await this.sleep(delay);
|
|
96
225
|
}
|
|
97
|
-
|
|
98
|
-
const
|
|
99
|
-
|
|
226
|
+
try {
|
|
227
|
+
const response = await fetch(this.apiUrl, {
|
|
228
|
+
method: 'POST',
|
|
229
|
+
headers: this.getHeaders(),
|
|
230
|
+
body: JSON.stringify(request),
|
|
231
|
+
});
|
|
232
|
+
// Capture session
|
|
233
|
+
const sid = response.headers.get('Mcp-Session-Id');
|
|
234
|
+
if (sid) {
|
|
235
|
+
this.sessionId = sid;
|
|
236
|
+
this.log(` session: ${sid}`);
|
|
237
|
+
}
|
|
238
|
+
// ── HTTP error ──
|
|
239
|
+
if (!response.ok) {
|
|
240
|
+
const body = await response.text();
|
|
241
|
+
this.logError(` HTTP ${response.status}: ${body.slice(0, 200)}`);
|
|
242
|
+
// Retryable server error
|
|
243
|
+
if (this.isRetryableStatus(response.status) && attempt < MAX_RETRIES) {
|
|
244
|
+
lastError = `HTTP ${response.status}`;
|
|
245
|
+
continue;
|
|
246
|
+
}
|
|
247
|
+
// Possibly stale session — re-initialize to get new session ID, then retry
|
|
248
|
+
if ((response.status === 400 || response.status === 404) && attempt < MAX_RETRIES) {
|
|
249
|
+
this.logWarn('Possible stale session — re-initializing');
|
|
250
|
+
try {
|
|
251
|
+
const ok = await this.reinitializeSession();
|
|
252
|
+
if (ok) {
|
|
253
|
+
this.logWarn('Session re-initialized, retrying request');
|
|
254
|
+
lastError = `HTTP ${response.status}`;
|
|
255
|
+
continue;
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
catch { }
|
|
259
|
+
lastError = `HTTP ${response.status}: session re-init failed`;
|
|
260
|
+
break;
|
|
261
|
+
}
|
|
262
|
+
// Non-retryable
|
|
263
|
+
lastError = `HTTP ${response.status}: ${response.statusText}`;
|
|
264
|
+
break;
|
|
265
|
+
}
|
|
266
|
+
// ── Success ──
|
|
267
|
+
// Mark API as healthy if it was down
|
|
268
|
+
if (!this.apiHealthy) {
|
|
269
|
+
this.apiHealthy = true;
|
|
270
|
+
this.stopHealthCheck();
|
|
271
|
+
this.logWarn('API is back (via successful request)');
|
|
272
|
+
if (request.method !== 'tools/list') {
|
|
273
|
+
this.notifyToolsChanged();
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
const contentType = response.headers.get('content-type') || '';
|
|
277
|
+
if (contentType.includes('text/event-stream')) {
|
|
278
|
+
await this.handleSSEResponse(response, request.id, request.method);
|
|
279
|
+
return;
|
|
280
|
+
}
|
|
281
|
+
const result = await response.json();
|
|
282
|
+
// Cache critical methods
|
|
283
|
+
if ((request.method === 'initialize' || request.method === 'tools/list') && result.result) {
|
|
284
|
+
this.responseCache.set(request.method, result);
|
|
285
|
+
this.log(` cached ${request.method}`);
|
|
286
|
+
}
|
|
287
|
+
this.sendResponse(result);
|
|
288
|
+
return;
|
|
289
|
+
}
|
|
290
|
+
catch (error) {
|
|
291
|
+
const msg = error instanceof Error ? error.message : String(error);
|
|
292
|
+
this.logError(` attempt ${attempt + 1} failed: ${msg}`);
|
|
293
|
+
lastError = msg;
|
|
294
|
+
if (this.isTransientError(error) && this.sessionId) {
|
|
295
|
+
this.sessionId = null;
|
|
296
|
+
}
|
|
297
|
+
if (!this.isTransientError(error) || attempt >= MAX_RETRIES) {
|
|
298
|
+
break;
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
// ── All retries failed ──
|
|
303
|
+
this.logWarn(`${request.method} failed after retries: ${lastError}`);
|
|
304
|
+
this.markApiDown();
|
|
305
|
+
// tools/list and initialize: ALWAYS return cached, NEVER return error
|
|
306
|
+
if (request.method === 'tools/list') {
|
|
307
|
+
const cached = this.responseCache.get('tools/list');
|
|
308
|
+
if (cached) {
|
|
309
|
+
this.logWarn('Serving cached tools/list (API unavailable)');
|
|
310
|
+
this.sendResponse({ ...cached, id: request.id });
|
|
311
|
+
}
|
|
312
|
+
else {
|
|
313
|
+
// No cache yet — return empty tools (better than error)
|
|
314
|
+
this.logWarn('No cached tools/list — returning empty tools');
|
|
100
315
|
this.sendResponse({
|
|
101
316
|
jsonrpc: '2.0',
|
|
102
317
|
id: request.id,
|
|
103
|
-
|
|
104
|
-
code: -32000,
|
|
105
|
-
message: `HTTP ${response.status}: ${response.statusText}`,
|
|
106
|
-
data: errorText,
|
|
107
|
-
},
|
|
318
|
+
result: { tools: [] },
|
|
108
319
|
});
|
|
109
|
-
return;
|
|
110
320
|
}
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
321
|
+
return;
|
|
322
|
+
}
|
|
323
|
+
if (request.method === 'initialize') {
|
|
324
|
+
const cached = this.responseCache.get('initialize');
|
|
325
|
+
if (cached) {
|
|
326
|
+
this.logWarn('Serving cached initialize (API unavailable)');
|
|
327
|
+
this.sendResponse({ ...cached, id: request.id });
|
|
115
328
|
return;
|
|
116
329
|
}
|
|
117
|
-
// Handle regular JSON responses
|
|
118
|
-
const result = await response.json();
|
|
119
|
-
this.sendResponse(result);
|
|
120
|
-
}
|
|
121
|
-
catch (error) {
|
|
122
|
-
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
123
|
-
this.logError(`Request failed: ${errorMessage}`);
|
|
124
|
-
this.sendResponse({
|
|
125
|
-
jsonrpc: '2.0',
|
|
126
|
-
id: request.id,
|
|
127
|
-
error: {
|
|
128
|
-
code: -32000,
|
|
129
|
-
message: `Request failed: ${errorMessage}`,
|
|
130
|
-
},
|
|
131
|
-
});
|
|
132
330
|
}
|
|
331
|
+
// Everything else — return error
|
|
332
|
+
this.sendResponse({
|
|
333
|
+
jsonrpc: '2.0',
|
|
334
|
+
id: request.id,
|
|
335
|
+
error: {
|
|
336
|
+
code: -32000,
|
|
337
|
+
message: `API unavailable: ${lastError}`,
|
|
338
|
+
},
|
|
339
|
+
});
|
|
133
340
|
}
|
|
134
|
-
async handleSSEResponse(response, requestId) {
|
|
341
|
+
async handleSSEResponse(response, requestId, method) {
|
|
135
342
|
const reader = response.body?.getReader();
|
|
136
343
|
if (!reader) {
|
|
137
344
|
this.sendResponse({
|
|
@@ -164,6 +371,11 @@ class VaizMCPProxyServer {
|
|
|
164
371
|
this.sendResponse(parsed);
|
|
165
372
|
if ('id' in parsed && parsed.id === requestId) {
|
|
166
373
|
responseSent = true;
|
|
374
|
+
// Cache SSE responses for critical methods
|
|
375
|
+
if ((method === 'tools/list' || method === 'initialize') && parsed.result) {
|
|
376
|
+
this.responseCache.set(method, parsed);
|
|
377
|
+
this.log(` cached ${method} (from SSE)`);
|
|
378
|
+
}
|
|
167
379
|
}
|
|
168
380
|
}
|
|
169
381
|
catch {
|
|
@@ -252,6 +464,7 @@ class VaizMCPProxyServer {
|
|
|
252
464
|
* Stop the proxy server
|
|
253
465
|
*/
|
|
254
466
|
stop() {
|
|
467
|
+
this.stopHealthCheck();
|
|
255
468
|
if (this.rl) {
|
|
256
469
|
this.rl.close();
|
|
257
470
|
this.rl = null;
|
package/dist/proxy-server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"proxy-server.js","sourceRoot":"","sources":["../src/proxy-server.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"proxy-server.js","sourceRoot":"","sources":["../src/proxy-server.ts"],"names":[],"mappings":"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"}
|