@wix/mcp 1.0.7 → 1.0.9

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 (122) hide show
  1. package/README.md +99 -95
  2. package/build/bin-standalone.js +16434 -0
  3. package/build/bin-standalone.js.map +7 -0
  4. package/build/cjs/index.js +24140 -0
  5. package/build/cjs/index.js.map +7 -0
  6. package/build/dts/api-call/index.d.ts +4 -0
  7. package/build/dts/api-call/index.d.ts.map +1 -0
  8. package/build/dts/api-call/index.js +150 -0
  9. package/build/dts/api-call/index.js.map +1 -0
  10. package/build/dts/auth/index.d.ts +6 -0
  11. package/build/dts/auth/index.d.ts.map +1 -0
  12. package/build/dts/auth/index.js +2 -0
  13. package/build/dts/auth/index.js.map +1 -0
  14. package/build/{bin.d.ts → dts/bin.d.ts} +3 -2
  15. package/build/dts/bin.d.ts.map +1 -0
  16. package/build/dts/bin.js +108 -0
  17. package/build/dts/bin.js.map +1 -0
  18. package/build/dts/cli-tools/cli.d.ts +5 -0
  19. package/build/dts/cli-tools/cli.d.ts.map +1 -0
  20. package/build/dts/cli-tools/cli.js +340 -0
  21. package/build/dts/cli-tools/cli.js.map +1 -0
  22. package/build/{cli-tools → dts/cli-tools}/utils.d.ts +1 -0
  23. package/build/dts/cli-tools/utils.d.ts.map +1 -0
  24. package/build/dts/cli-tools/utils.js +26 -0
  25. package/build/dts/cli-tools/utils.js.map +1 -0
  26. package/build/{docs → dts/docs}/docs.d.ts +1 -0
  27. package/build/dts/docs/docs.d.ts.map +1 -0
  28. package/build/dts/docs/docs.js +438 -0
  29. package/build/dts/docs/docs.js.map +1 -0
  30. package/build/dts/docs/fetch-article.d.ts +3 -0
  31. package/build/dts/docs/fetch-article.d.ts.map +1 -0
  32. package/build/dts/docs/fetch-article.js +20 -0
  33. package/build/dts/docs/fetch-article.js.map +1 -0
  34. package/build/dts/docs/get-to-know.d.ts +3 -0
  35. package/build/dts/docs/get-to-know.d.ts.map +1 -0
  36. package/build/dts/docs/get-to-know.js +42 -0
  37. package/build/dts/docs/get-to-know.js.map +1 -0
  38. package/build/{docs → dts/docs}/long-content.d.ts +1 -0
  39. package/build/dts/docs/long-content.d.ts.map +1 -0
  40. package/build/dts/docs/long-content.js +2 -0
  41. package/build/dts/docs/long-content.js.map +1 -0
  42. package/build/{docs → dts/docs}/semanticSearch.d.ts +1 -0
  43. package/build/dts/docs/semanticSearch.d.ts.map +1 -0
  44. package/build/dts/docs/semanticSearch.js +109 -0
  45. package/build/dts/docs/semanticSearch.js.map +1 -0
  46. package/build/dts/docs/semanticSearch.test.d.ts +2 -0
  47. package/build/dts/docs/semanticSearch.test.d.ts.map +1 -0
  48. package/build/dts/docs/semanticSearch.test.js +460 -0
  49. package/build/dts/docs/semanticSearch.test.js.map +1 -0
  50. package/build/{index.d.ts → dts/index.d.ts} +3 -0
  51. package/build/dts/index.d.ts.map +1 -0
  52. package/build/dts/index.js +8 -0
  53. package/build/dts/index.js.map +1 -0
  54. package/build/dts/infra/bi-logger.d.ts +3 -0
  55. package/build/dts/infra/bi-logger.d.ts.map +1 -0
  56. package/build/dts/infra/bi-logger.js +11 -0
  57. package/build/dts/infra/bi-logger.js.map +1 -0
  58. package/build/dts/infra/environment.d.ts +10 -0
  59. package/build/dts/infra/environment.d.ts.map +1 -0
  60. package/build/dts/infra/environment.js +28 -0
  61. package/build/dts/infra/environment.js.map +1 -0
  62. package/build/{logger.d.ts → dts/infra/logger.d.ts} +1 -0
  63. package/build/dts/infra/logger.d.ts.map +1 -0
  64. package/build/dts/infra/logger.js +62 -0
  65. package/build/dts/infra/logger.js.map +1 -0
  66. package/build/dts/infra/panorama.d.ts +8 -0
  67. package/build/dts/infra/panorama.d.ts.map +1 -0
  68. package/build/dts/infra/panorama.js +36 -0
  69. package/build/dts/infra/panorama.js.map +1 -0
  70. package/build/dts/infra/sentry.d.ts +2 -0
  71. package/build/dts/infra/sentry.d.ts.map +1 -0
  72. package/build/dts/infra/sentry.js +11 -0
  73. package/build/dts/infra/sentry.js.map +1 -0
  74. package/build/{interactive-command-tools → dts/interactive-command-tools}/eventually.d.ts +1 -0
  75. package/build/dts/interactive-command-tools/eventually.d.ts.map +1 -0
  76. package/build/dts/interactive-command-tools/eventually.js +16 -0
  77. package/build/dts/interactive-command-tools/eventually.js.map +1 -0
  78. package/build/{interactive-command-tools → dts/interactive-command-tools}/handleStdout.d.ts +1 -0
  79. package/build/dts/interactive-command-tools/handleStdout.d.ts.map +1 -0
  80. package/build/dts/interactive-command-tools/handleStdout.js +76 -0
  81. package/build/dts/interactive-command-tools/handleStdout.js.map +1 -0
  82. package/build/{interactive-command-tools → dts/interactive-command-tools}/interactive-command-utils.d.ts +1 -0
  83. package/build/dts/interactive-command-tools/interactive-command-utils.d.ts.map +1 -0
  84. package/build/dts/interactive-command-tools/interactive-command-utils.js +76 -0
  85. package/build/dts/interactive-command-tools/interactive-command-utils.js.map +1 -0
  86. package/build/{resources → dts/resources}/docs.d.ts +1 -0
  87. package/build/dts/resources/docs.d.ts.map +1 -0
  88. package/build/dts/resources/docs.js +46 -0
  89. package/build/dts/resources/docs.js.map +1 -0
  90. package/build/{support → dts/support}/index.d.ts +1 -0
  91. package/build/dts/support/index.d.ts.map +1 -0
  92. package/build/dts/support/index.js +33 -0
  93. package/build/dts/support/index.js.map +1 -0
  94. package/build/dts/tool-utils.d.ts +3 -0
  95. package/build/dts/tool-utils.d.ts.map +1 -0
  96. package/build/dts/tool-utils.js +31 -0
  97. package/build/dts/tool-utils.js.map +1 -0
  98. package/build/dts/tool-utils.spec.d.ts +2 -0
  99. package/build/dts/tool-utils.spec.d.ts.map +1 -0
  100. package/build/dts/tool-utils.spec.js +100 -0
  101. package/build/dts/tool-utils.spec.js.map +1 -0
  102. package/build/{wix-mcp-server.d.ts → dts/wix-mcp-server.d.ts} +13 -1
  103. package/build/dts/wix-mcp-server.d.ts.map +1 -0
  104. package/build/dts/wix-mcp-server.js +115 -0
  105. package/build/dts/wix-mcp-server.js.map +1 -0
  106. package/build/esm/index.js +18898 -0
  107. package/build/esm/index.js.map +7 -0
  108. package/package.json +19 -11
  109. package/bin.js +0 -2
  110. package/build/api-call/index.d.ts +0 -2
  111. package/build/bin.js +0 -681
  112. package/build/bin.js.map +0 -7
  113. package/build/chunk-QGIZNLF4.js +0 -8179
  114. package/build/chunk-QGIZNLF4.js.map +0 -7
  115. package/build/cli-tools/cli.d.ts +0 -4
  116. package/build/docs/semanticSearch.test.d.ts +0 -1
  117. package/build/index.js +0 -201
  118. package/build/index.js.map +0 -7
  119. package/build/panorama.d.ts +0 -2
  120. package/build/sentry.d.ts +0 -1
  121. package/build/tool-utils.d.ts +0 -1
  122. package/build/tool-utils.spec.d.ts +0 -1
@@ -0,0 +1,100 @@
1
+ import { handleWixAPIResponse } from './tool-utils.js';
2
+ import { expect, test, vi, describe, beforeEach } from 'vitest';
3
+ // Mock the global fetch function
4
+ global.fetch = vi.fn();
5
+ function mockHttpClientResponse(data, status = 200, statusText = 'OK', requestId = '') {
6
+ return {
7
+ requestId: '',
8
+ data,
9
+ status,
10
+ statusText,
11
+ headers: {
12
+ get: () => {
13
+ return requestId;
14
+ }
15
+ },
16
+ config: {},
17
+ request: {}
18
+ };
19
+ }
20
+ describe('handleWixAPIResponse', () => {
21
+ beforeEach(() => {
22
+ // Reset the mock before each test
23
+ global.fetch.mockClear();
24
+ });
25
+ describe('safeParseJSON', () => {
26
+ test('should parse valid JSON string', async () => {
27
+ const jsonString = '{"key": "value", "number": 123}';
28
+ const result = await handleWixAPIResponse(mockHttpClientResponse(jsonString));
29
+ expect(result).toEqual({ key: 'value', number: 123 });
30
+ });
31
+ test('should return the original string if parsing fails', async () => {
32
+ const invalidJSONString = 'this is not valid json';
33
+ const result = await handleWixAPIResponse(mockHttpClientResponse(invalidJSONString));
34
+ expect(result).toBe(invalidJSONString);
35
+ });
36
+ test('should return an empty string if the response text is empty', async () => {
37
+ global.fetch.mockResolvedValueOnce(new Response('', { status: 200 }));
38
+ const result = await handleWixAPIResponse(mockHttpClientResponse(''));
39
+ expect(result).toBe('');
40
+ });
41
+ });
42
+ test('should return parsed JSON data for a successful response', async () => {
43
+ const mockData = { message: 'Success!' };
44
+ global.fetch.mockResolvedValueOnce(new Response(JSON.stringify(mockData), {
45
+ status: 200,
46
+ statusText: 'OK',
47
+ headers: new Headers({ 'Content-Type': 'application/json' })
48
+ }));
49
+ const result = await handleWixAPIResponse(mockHttpClientResponse(mockData));
50
+ expect(result).toEqual(mockData);
51
+ });
52
+ test('should return the original string if the successful response is not JSON', async () => {
53
+ const mockData = 'This is plain text';
54
+ global.fetch.mockResolvedValueOnce(new Response(mockData, { status: 200, statusText: 'OK' }));
55
+ const result = await handleWixAPIResponse(mockHttpClientResponse(mockData));
56
+ expect(result).toBe(mockData);
57
+ });
58
+ test('should throw an error for a failed response with JSON error details', async () => {
59
+ const mockError = { error: 'Something went wrong', code: 500 };
60
+ const mockRequestId = 'some-request-id';
61
+ await expect(handleWixAPIResponse(mockHttpClientResponse(mockError, 500, 'Internal Server Error', mockRequestId))).rejects.toThrowError([
62
+ 'Failed to call Wix API: 500 Internal Server Error.',
63
+ `request id: ${mockRequestId}`,
64
+ '{"error":"Something went wrong","code":500}'
65
+ ].join('\n'));
66
+ });
67
+ test('should throw an error for a failed response with non-JSON error details', async () => {
68
+ const mockError = 'Internal server error occurred.';
69
+ global.fetch.mockResolvedValueOnce(new Response(mockError, {
70
+ status: 503,
71
+ statusText: 'Service Unavailable'
72
+ }));
73
+ await expect(handleWixAPIResponse(mockHttpClientResponse(mockError, 503, 'Service Unavailable'))).rejects.toThrowError(['Failed to call Wix API: 503 Service Unavailable.', mockError].join('\n'));
74
+ });
75
+ test('should include the request ID in the error message if present', async () => {
76
+ const mockError = { message: 'Unauthorized' };
77
+ const mockRequestId = 'another-id';
78
+ global.fetch.mockResolvedValueOnce(new Response(JSON.stringify(mockError), {
79
+ status: 401,
80
+ statusText: 'Unauthorized',
81
+ headers: new Headers({ 'x-wix-request-id': mockRequestId })
82
+ }));
83
+ await expect(handleWixAPIResponse(mockHttpClientResponse(mockError, 401, 'Unauthorized', mockRequestId))).rejects.toThrowError([
84
+ 'Failed to call Wix API: 401 Unauthorized.',
85
+ `request id: ${mockRequestId}`,
86
+ '{"message":"Unauthorized"}'
87
+ ].join('\n'));
88
+ });
89
+ test('should return "Not found" in the error message for a 404 with HTML content', async () => {
90
+ const mockHtmlError = '<html><body><h1>404 Not Found</h1></body></html>';
91
+ global.fetch.mockResolvedValueOnce(new Response(mockHtmlError, { status: 404, statusText: 'Not Found' }));
92
+ await expect(handleWixAPIResponse(mockHttpClientResponse(mockHtmlError, 404, 'Not Found'))).rejects.toThrowError(['Failed to call Wix API: 404 Not Found.', 'Not found'].join('\n'));
93
+ });
94
+ test('should include the HTML content in the error message for a 404 without typical HTML structure', async () => {
95
+ const mockNonHtmlError = 'Resource not found on the server.';
96
+ global.fetch.mockResolvedValueOnce(new Response(mockNonHtmlError, { status: 404, statusText: 'Not Found' }));
97
+ await expect(handleWixAPIResponse(mockHttpClientResponse(mockNonHtmlError, 404, 'Not Found'))).rejects.toThrowError(['Failed to call Wix API: 404 Not Found.', mockNonHtmlError].join('\n'));
98
+ });
99
+ });
100
+ //# sourceMappingURL=tool-utils.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-utils.spec.js","sourceRoot":"","sources":["../../src/tool-utils.spec.ts"],"names":[],"mappings":"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"}
@@ -1,16 +1,28 @@
1
1
  import type { z, ZodRawShape, ZodTypeAny } from 'zod';
2
2
  import type { RequestHandlerExtra } from '@modelcontextprotocol/sdk/shared/protocol.js';
3
- import type { CallToolResult } from '@modelcontextprotocol/sdk/types.js';
3
+ import type { CallToolResult, Implementation } from '@modelcontextprotocol/sdk/types.js';
4
+ import type { BiLogger } from '@wix/wix-bi-logger-client';
4
5
  import type { PanoramaClientForComponent } from '@wix/panorama-client-node';
5
6
  import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
7
+ import { HttpClient } from '@wix/http-client';
8
+ import { ServerOptions } from '@modelcontextprotocol/sdk/server/index.js';
6
9
  type WixRequestHandlerExtra = RequestHandlerExtra & {
10
+ biLogger: BiLogger;
7
11
  panorama: PanoramaClientForComponent;
12
+ httpClient: HttpClient;
8
13
  };
9
14
  type WixToolCallback<Args extends undefined | ZodRawShape = undefined> = Args extends ZodRawShape ? (args: z.objectOutputType<Args, ZodTypeAny>, extra: WixRequestHandlerExtra) => CallToolResult | Promise<CallToolResult> : (extra: WixRequestHandlerExtra) => CallToolResult | Promise<CallToolResult>;
10
15
  export declare class WixMcpServer extends McpServer {
16
+ private biLogger;
17
+ private nodeEnv;
18
+ private sessionId;
19
+ private getUserId?;
20
+ constructor(serverInfo: Implementation, options?: ServerOptions, nodeEnv?: string);
21
+ setUserIdGetter(getUserId: () => string): void;
11
22
  tool(name: string, cb: WixToolCallback): void;
12
23
  tool(name: string, description: string, cb: WixToolCallback): void;
13
24
  tool<Args extends ZodRawShape>(name: string, paramsSchema: Args, cb: WixToolCallback<Args>): void;
14
25
  tool<Args extends ZodRawShape>(name: string, description: string, paramsSchema: Args, cb: WixToolCallback<Args>): void;
15
26
  }
16
27
  export {};
28
+ //# sourceMappingURL=wix-mcp-server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wix-mcp-server.d.ts","sourceRoot":"","sources":["../../src/wix-mcp-server.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,CAAC,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,KAAK,CAAC;AACtD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,8CAA8C,CAAC;AACxF,OAAO,KAAK,EACV,cAAc,EACd,cAAc,EACf,MAAM,oCAAoC,CAAC;AAC5C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,2BAA2B,CAAC;AAG5E,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAKpE,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,2CAA2C,CAAC;AAE1E,KAAK,sBAAsB,GAAG,mBAAmB,GAAG;IAClD,QAAQ,EAAE,QAAQ,CAAC;IACnB,QAAQ,EAAE,0BAA0B,CAAC;IACrC,UAAU,EAAE,UAAU,CAAC;CACxB,CAAC;AAEF,KAAK,eAAe,CAAC,IAAI,SAAS,SAAS,GAAG,WAAW,GAAG,SAAS,IACnE,IAAI,SAAS,WAAW,GACpB,CACE,IAAI,EAAE,CAAC,CAAC,gBAAgB,CAAC,IAAI,EAAE,UAAU,CAAC,EAC1C,KAAK,EAAE,sBAAsB,KAC1B,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC,GAC7C,CACE,KAAK,EAAE,sBAAsB,KAC1B,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;AAEpD,qBAAa,YAAa,SAAQ,SAAS;IACzC,OAAO,CAAC,QAAQ,CAAW;IAC3B,OAAO,CAAC,OAAO,CAAM;IACrB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,SAAS,CAAC,CAAe;gBAE/B,UAAU,EAAE,cAAc,EAC1B,OAAO,CAAC,EAAE,aAAa,EACvB,OAAO,CAAC,EAAE,MAAM;IASlB,eAAe,CAAC,SAAS,EAAE,MAAM,MAAM;IAG9B,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,eAAe,GAAG,IAAI;IAC7C,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,EAAE,EAAE,eAAe,GAAG,IAAI;IAClE,IAAI,CAAC,IAAI,SAAS,WAAW,EACpC,IAAI,EAAE,MAAM,EACZ,YAAY,EAAE,IAAI,EAClB,EAAE,EAAE,eAAe,CAAC,IAAI,CAAC,GACxB,IAAI;IACE,IAAI,CAAC,IAAI,SAAS,WAAW,EACpC,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,IAAI,EAClB,EAAE,EAAE,eAAe,CAAC,IAAI,CAAC,GACxB,IAAI;CAwGR"}
@@ -0,0 +1,115 @@
1
+ import { v4 as uuidv4 } from 'uuid';
2
+ import { captureException, setTags } from '@sentry/node';
3
+ import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
4
+ import { wixMcpRequestSrc39Evid1607 } from '@wix/bi-logger-api-infra-data/v2';
5
+ import { createPanoramaClient } from './infra/panorama.js';
6
+ import { createBiLogger } from './infra/bi-logger.js';
7
+ import { DEV_ENVIRONMENTS, getEnvironment } from './infra/environment.js';
8
+ import { HttpClient } from '@wix/http-client';
9
+ export class WixMcpServer extends McpServer {
10
+ biLogger;
11
+ nodeEnv;
12
+ sessionId;
13
+ getUserId;
14
+ constructor(serverInfo, options, nodeEnv) {
15
+ super(serverInfo, options);
16
+ this.sessionId = uuidv4();
17
+ this.nodeEnv = getEnvironment(nodeEnv);
18
+ this.biLogger = createBiLogger({
19
+ _client_id: this.sessionId
20
+ });
21
+ }
22
+ setUserIdGetter(getUserId) {
23
+ this.getUserId = getUserId;
24
+ }
25
+ tool(...args) {
26
+ const cbIndex = args.findIndex((arg) => typeof arg === 'function');
27
+ if (cbIndex !== -1) {
28
+ const originalCb = args[cbIndex];
29
+ const toolName = args[0];
30
+ const isDevEnvironment = DEV_ENVIRONMENTS.includes(this.nodeEnv);
31
+ const wrappedCb = async (...cbArgs) => {
32
+ setTags({
33
+ panoramaSessionId: this.sessionId
34
+ });
35
+ const panorama = createPanoramaClient({
36
+ environment: this.nodeEnv,
37
+ sessionId: this.sessionId,
38
+ componentId: toolName,
39
+ uuid: this.getUserId?.()
40
+ });
41
+ const toolInvocationId = uuidv4();
42
+ const httpClient = new HttpClient({
43
+ headers: {
44
+ 'x-wix-mcp': `execution-id=${toolInvocationId}`
45
+ }
46
+ });
47
+ const argsBeforeExtra = cbArgs.slice(0, cbArgs.length - 1);
48
+ const extra = cbArgs[cbArgs.length - 1];
49
+ const wrappedExtra = {
50
+ ...extra,
51
+ panorama: panorama.createClientForComponent(),
52
+ httpClient
53
+ };
54
+ if (!isDevEnvironment) {
55
+ panorama.transaction(toolName).start({
56
+ toolInvocationId,
57
+ params: JSON.stringify(argsBeforeExtra)
58
+ });
59
+ }
60
+ const startTime = performance.now();
61
+ let toolSucceeded, errorBody;
62
+ try {
63
+ const cbResult = await originalCb(...argsBeforeExtra, wrappedExtra);
64
+ if (!isDevEnvironment) {
65
+ panorama.transaction(toolName).finish({ toolInvocationId });
66
+ }
67
+ toolSucceeded = true;
68
+ return cbResult;
69
+ }
70
+ catch (e) {
71
+ toolSucceeded = false;
72
+ errorBody = e.message;
73
+ if (!isDevEnvironment) {
74
+ panorama.errorMonitor().reportError(e);
75
+ captureException(e, {
76
+ tags: {
77
+ componentId: toolName,
78
+ toolName
79
+ }
80
+ });
81
+ }
82
+ return {
83
+ isError: true,
84
+ content: [{ type: 'text', text: e.message }]
85
+ };
86
+ }
87
+ finally {
88
+ const endTime = performance.now();
89
+ const duration = Math.round(endTime - startTime);
90
+ if (!isDevEnvironment) {
91
+ if (this.getUserId) {
92
+ const userId = this.getUserId();
93
+ this.biLogger.updateDefaults({
94
+ _uuid: userId
95
+ });
96
+ }
97
+ this.biLogger.report(wixMcpRequestSrc39Evid1607({
98
+ toolInvocationId,
99
+ toolName,
100
+ params: JSON.stringify(argsBeforeExtra),
101
+ origin: this.nodeEnv,
102
+ duration,
103
+ sessionId: this.sessionId,
104
+ executionResult: toolSucceeded ? 'Success' : 'Error',
105
+ errorBody: errorBody
106
+ }));
107
+ }
108
+ }
109
+ };
110
+ args[cbIndex] = wrappedCb;
111
+ }
112
+ return super.tool.apply(this, args);
113
+ }
114
+ }
115
+ //# sourceMappingURL=wix-mcp-server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wix-mcp-server.js","sourceRoot":"","sources":["../../src/wix-mcp-server.ts"],"names":[],"mappings":"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"}