mcp-use 1.6.3-canary.0 → 1.7.0-canary.1

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 (74) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/chunk-JQKKMUCT.js +0 -0
  3. package/dist/chunk-PE7UMCVO.js +377 -0
  4. package/dist/{chunk-BWOTID2D.js → chunk-QSLJXXMG.js} +3 -346
  5. package/dist/chunk-R5DJJ4IV.js +942 -0
  6. package/dist/{chunk-SJEHVCPM.js → chunk-XN2PU4PS.js} +100 -23
  7. package/dist/index.cjs +132 -29
  8. package/dist/index.js +8 -5
  9. package/dist/oauth-CNGBFOZW.js +29 -0
  10. package/dist/src/agents/index.js +1 -1
  11. package/dist/src/auth/browser-provider.d.ts +2 -0
  12. package/dist/src/auth/browser-provider.d.ts.map +1 -1
  13. package/dist/src/auth/callback.d.ts.map +1 -1
  14. package/dist/src/auth/index.cjs +396 -0
  15. package/dist/src/auth/index.js +10 -0
  16. package/dist/src/auth/types.d.ts +3 -1
  17. package/dist/src/auth/types.d.ts.map +1 -1
  18. package/dist/src/browser.cjs +36 -8
  19. package/dist/src/browser.js +6 -4
  20. package/dist/src/connectors/http.d.ts.map +1 -1
  21. package/dist/src/react/index.cjs +132 -29
  22. package/dist/src/react/index.js +3 -2
  23. package/dist/src/react/types.d.ts +12 -1
  24. package/dist/src/react/types.d.ts.map +1 -1
  25. package/dist/src/react/useMcp.d.ts.map +1 -1
  26. package/dist/src/server/context-storage.d.ts +54 -0
  27. package/dist/src/server/context-storage.d.ts.map +1 -0
  28. package/dist/src/server/index.cjs +1409 -410
  29. package/dist/src/server/index.d.ts +4 -1
  30. package/dist/src/server/index.d.ts.map +1 -1
  31. package/dist/src/server/index.js +420 -412
  32. package/dist/src/server/mcp-server.d.ts +50 -81
  33. package/dist/src/server/mcp-server.d.ts.map +1 -1
  34. package/dist/src/server/oauth/index.d.ts +13 -0
  35. package/dist/src/server/oauth/index.d.ts.map +1 -0
  36. package/dist/src/server/oauth/middleware.d.ts +19 -0
  37. package/dist/src/server/oauth/middleware.d.ts.map +1 -0
  38. package/dist/src/server/oauth/providers/auth0.d.ts +22 -0
  39. package/dist/src/server/oauth/providers/auth0.d.ts.map +1 -0
  40. package/dist/src/server/oauth/providers/custom.d.ts +19 -0
  41. package/dist/src/server/oauth/providers/custom.d.ts.map +1 -0
  42. package/dist/src/server/oauth/providers/keycloak.d.ts +22 -0
  43. package/dist/src/server/oauth/providers/keycloak.d.ts.map +1 -0
  44. package/dist/src/server/oauth/providers/supabase.d.ts +24 -0
  45. package/dist/src/server/oauth/providers/supabase.d.ts.map +1 -0
  46. package/dist/src/server/oauth/providers/types.d.ts +138 -0
  47. package/dist/src/server/oauth/providers/types.d.ts.map +1 -0
  48. package/dist/src/server/oauth/providers/workos.d.ts +30 -0
  49. package/dist/src/server/oauth/providers/workos.d.ts.map +1 -0
  50. package/dist/src/server/oauth/providers.d.ts +208 -0
  51. package/dist/src/server/oauth/providers.d.ts.map +1 -0
  52. package/dist/src/server/oauth/routes.d.ts +33 -0
  53. package/dist/src/server/oauth/routes.d.ts.map +1 -0
  54. package/dist/src/server/oauth/utils.d.ts +155 -0
  55. package/dist/src/server/oauth/utils.d.ts.map +1 -0
  56. package/dist/src/server/types/common.d.ts +47 -0
  57. package/dist/src/server/types/common.d.ts.map +1 -1
  58. package/dist/src/server/types/context.d.ts +34 -0
  59. package/dist/src/server/types/context.d.ts.map +1 -0
  60. package/dist/src/server/types/index.d.ts +2 -1
  61. package/dist/src/server/types/index.d.ts.map +1 -1
  62. package/dist/src/server/types/tool.d.ts +82 -9
  63. package/dist/src/server/types/tool.d.ts.map +1 -1
  64. package/dist/src/server/utils/index.d.ts +6 -0
  65. package/dist/src/server/utils/index.d.ts.map +1 -0
  66. package/dist/src/server/utils/response-helpers.d.ts +151 -0
  67. package/dist/src/server/utils/response-helpers.d.ts.map +1 -0
  68. package/dist/src/server/utils/runtime.d.ts +25 -0
  69. package/dist/src/server/utils/runtime.d.ts.map +1 -0
  70. package/dist/src/task_managers/streamable_http.d.ts +1 -0
  71. package/dist/src/task_managers/streamable_http.d.ts.map +1 -1
  72. package/dist/tsup.config.d.ts.map +1 -1
  73. package/package.json +14 -5
  74. /package/dist/{chunk-MCF5P6GJ.js → chunk-GVVPUU5K.js} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/server/utils/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,uBAAuB,CAAC;AACtC,cAAc,cAAc,CAAC"}
@@ -0,0 +1,151 @@
1
+ import type { CallToolResult } from "@modelcontextprotocol/sdk/types.js";
2
+ /**
3
+ * Typed CallToolResult that constrains the structuredContent property
4
+ * to match a specific type T. Used for output schema validation.
5
+ * T must be a record type (object) to match the SDK's CallToolResult interface.
6
+ */
7
+ export interface TypedCallToolResult<T extends Record<string, unknown> = Record<string, unknown>> extends Omit<CallToolResult, "structuredContent"> {
8
+ structuredContent?: T;
9
+ }
10
+ /**
11
+ * Create a text content response for MCP tools
12
+ *
13
+ * @param content - The text content to return
14
+ * @returns CallToolResult with text content
15
+ *
16
+ * @example
17
+ * ```typescript
18
+ * server.tool({
19
+ * name: 'greet',
20
+ * schema: z.object({ name: z.string() }),
21
+ * cb: async ({ name }) => text(`Hello, ${name}!`)
22
+ * })
23
+ * ```
24
+ */
25
+ export declare function text(content: string): CallToolResult;
26
+ /**
27
+ * Create an image content response for MCP tools
28
+ *
29
+ * @param data - The image data (data URL or base64)
30
+ * @param mimeType - MIME type (e.g., 'image/png', defaults to 'image/png')
31
+ * @returns CallToolResult with image content
32
+ *
33
+ * @example
34
+ * ```typescript
35
+ * server.tool({
36
+ * name: 'generate-image',
37
+ * cb: async () => image('data:image/png;base64,...', 'image/png')
38
+ * })
39
+ * ```
40
+ */
41
+ export declare function image(data: string, mimeType?: string): CallToolResult;
42
+ /**
43
+ * Create a resource content response for MCP tools
44
+ *
45
+ * @param uri - The resource URI
46
+ * @param mimeType - Optional MIME type
47
+ * @param text - Optional text content for the resource
48
+ * @returns CallToolResult with resource content
49
+ *
50
+ * @example
51
+ * ```typescript
52
+ * server.tool({
53
+ * name: 'get-config',
54
+ * cb: async () => resource('file:///config.json', 'application/json')
55
+ * })
56
+ * ```
57
+ */
58
+ export declare function resource(uri: string, mimeType?: string, text?: string): CallToolResult;
59
+ /**
60
+ * Create an error response for MCP tools
61
+ *
62
+ * @param message - The error message
63
+ * @returns CallToolResult marked as error
64
+ *
65
+ * @example
66
+ * ```typescript
67
+ * server.tool({
68
+ * name: 'risky-operation',
69
+ * cb: async () => {
70
+ * if (somethingWrong) {
71
+ * return error('Operation failed: invalid input')
72
+ * }
73
+ * return text('Success!')
74
+ * }
75
+ * })
76
+ * ```
77
+ */
78
+ export declare function error(message: string): CallToolResult;
79
+ /**
80
+ * Create a JSON object response for MCP tools
81
+ *
82
+ * @param data - The object to return as JSON
83
+ * @returns TypedCallToolResult with JSON text content and typed structuredContent
84
+ *
85
+ * @example
86
+ * ```typescript
87
+ * server.tool({
88
+ * name: 'get-user-info',
89
+ * cb: async (_args, _ctx, { auth }) => object({
90
+ * userId: auth.user.userId,
91
+ * email: auth.user.email
92
+ * })
93
+ * })
94
+ * ```
95
+ */
96
+ export declare function object<T extends Record<string, any>>(data: T): TypedCallToolResult<T>;
97
+ export declare function array<T extends any[]>(data: T): TypedCallToolResult<{
98
+ data: T;
99
+ }>;
100
+ /**
101
+ * Configuration for widget response utility
102
+ */
103
+ export interface WidgetResponseConfig {
104
+ /** Widget name from resources folder */
105
+ name: string;
106
+ /** Structured data to pass to the widget */
107
+ data: Record<string, any>;
108
+ /** Optional text message (defaults to "Displaying {name}") */
109
+ message?: string;
110
+ /** Status text while tool is invoking */
111
+ invoking?: string;
112
+ /** Status text after tool has invoked */
113
+ invoked?: string;
114
+ /** Whether the widget can initiate tool calls (defaults to true) */
115
+ widgetAccessible?: boolean;
116
+ /** Whether this tool result can produce a widget (defaults to true) */
117
+ resultCanProduceWidget?: boolean;
118
+ /** Optional build ID for cache busting (usually auto-set by server) */
119
+ buildId?: string;
120
+ }
121
+ /**
122
+ * Create a widget response for MCP tools
123
+ *
124
+ * Returns a complete tool result configured to display an OpenAI Apps SDK widget.
125
+ * This allows any tool to return a widget, not just auto-registered widget tools.
126
+ *
127
+ * The widget must exist in your resources folder and be registered with the server
128
+ * using `server.uiResource()`.
129
+ *
130
+ * @param config - Widget response configuration
131
+ * @returns CallToolResult with widget metadata and structured content
132
+ *
133
+ * @example
134
+ * ```typescript
135
+ * server.tool({
136
+ * name: 'get-weather',
137
+ * schema: z.object({ city: z.string() }),
138
+ * cb: async ({ city }) => {
139
+ * const weatherData = await fetchWeather(city);
140
+ * return widget({
141
+ * name: 'weather-display',
142
+ * data: weatherData,
143
+ * message: `Showing weather for ${city}`
144
+ * });
145
+ * }
146
+ * })
147
+ * ```
148
+ */
149
+ export declare function widget(config: WidgetResponseConfig): CallToolResult;
150
+ export declare function mix(...results: CallToolResult[]): CallToolResult;
151
+ //# sourceMappingURL=response-helpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"response-helpers.d.ts","sourceRoot":"","sources":["../../../../src/server/utils/response-helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAEzE;;;;GAIG;AACH,MAAM,WAAW,mBAAmB,CAClC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAC3D,SAAQ,IAAI,CAAC,cAAc,EAAE,mBAAmB,CAAC;IACjD,iBAAiB,CAAC,EAAE,CAAC,CAAC;CACvB;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,cAAc,CASpD;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,KAAK,CACnB,IAAI,EAAE,MAAM,EACZ,QAAQ,GAAE,MAAoB,GAC7B,cAAc,CAUhB;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,QAAQ,CACtB,GAAG,EAAE,MAAM,EACX,QAAQ,CAAC,EAAE,MAAM,EACjB,IAAI,CAAC,EAAE,MAAM,GACZ,cAAc,CAahB;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,cAAc,CAUrD;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,MAAM,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAClD,IAAI,EAAE,CAAC,GACN,mBAAmB,CAAC,CAAC,CAAC,CAYxB;AAED,wBAAgB,KAAK,CAAC,CAAC,SAAS,GAAG,EAAE,EACnC,IAAI,EAAE,CAAC,GACN,mBAAmB,CAAC;IAAE,IAAI,EAAE,CAAC,CAAA;CAAE,CAAC,CAUlC;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,wCAAwC;IACxC,IAAI,EAAE,MAAM,CAAC;IACb,4CAA4C;IAC5C,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC1B,8DAA8D;IAC9D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,yCAAyC;IACzC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,yCAAyC;IACzC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,oEAAoE;IACpE,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,uEAAuE;IACvE,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC,uEAAuE;IACvE,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAgB,MAAM,CAAC,MAAM,EAAE,oBAAoB,GAAG,cAAc,CA+CnE;AAED,wBAAgB,GAAG,CAAC,GAAG,OAAO,EAAE,cAAc,EAAE,GAAG,cAAc,CA4BhE"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Cross-runtime utilities for Node.js and Deno compatibility
3
+ */
4
+ export declare const isDeno: boolean;
5
+ /**
6
+ * Get an environment variable in a cross-runtime compatible way
7
+ * Works in both Node.js and Deno environments
8
+ *
9
+ * @param key - The environment variable key
10
+ * @returns The value of the environment variable, or undefined if not set
11
+ */
12
+ export declare function getEnv(key: string): string | undefined;
13
+ export declare function getCwd(): string;
14
+ export declare const fsHelpers: {
15
+ readFileSync(path: string, encoding?: string): Promise<string>;
16
+ readFile(path: string): Promise<ArrayBuffer>;
17
+ existsSync(path: string): Promise<boolean>;
18
+ readdirSync(path: string): Promise<string[]>;
19
+ };
20
+ export declare const pathHelpers: {
21
+ join(...paths: string[]): string;
22
+ relative(from: string, to: string): string;
23
+ };
24
+ export declare function generateUUID(): string;
25
+ //# sourceMappingURL=runtime.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../../../src/server/utils/runtime.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,eAAO,MAAM,MAAM,SAAkD,CAAC;AAEtE;;;;;;GAMG;AACH,wBAAgB,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAKtD;AAGD,wBAAgB,MAAM,IAAI,MAAM,CAK/B;AAGD,eAAO,MAAM,SAAS;uBACK,MAAM,aAAY,MAAM,GAAY,OAAO,CAAC,MAAM,CAAC;mBAWvD,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;qBAa3B,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;sBAaxB,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;CAWnD,CAAC;AAGF,eAAO,MAAM,WAAW;mBACP,MAAM,EAAE,GAAG,MAAM;mBAUjB,MAAM,MAAM,MAAM,GAAG,MAAM;CAkB3C,CAAC;AAIF,wBAAgB,YAAY,IAAI,MAAM,CAErC"}
@@ -19,6 +19,7 @@ export declare class StreamableHttpConnectionManager extends ConnectionManager<S
19
19
  protected establishConnection(): Promise<StreamableHTTPClientTransport>;
20
20
  /**
21
21
  * Close the underlying transport and clean up resources.
22
+ * Per MCP specification, terminates the session with DELETE request before closing.
22
23
  */
23
24
  protected closeConnection(_connection: StreamableHTTPClientTransport): Promise<void>;
24
25
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"streamable_http.d.ts","sourceRoot":"","sources":["../../../src/task_managers/streamable_http.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oCAAoC,EAAE,MAAM,oDAAoD,CAAC;AAC/G,OAAO,EAAE,6BAA6B,EAAE,MAAM,oDAAoD,CAAC;AAEnG,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAE9C,qBAAa,+BAAgC,SAAQ,iBAAiB,CAAC,6BAA6B,CAAC;IACnG,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAM;IAC1B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAuC;IAC7D,OAAO,CAAC,UAAU,CAA8C;IAEhE;;;;;OAKG;gBACS,GAAG,EAAE,MAAM,GAAG,GAAG,EAAE,IAAI,CAAC,EAAE,oCAAoC;IAM1E;;;OAGG;cACa,mBAAmB,IAAI,OAAO,CAAC,6BAA6B,CAAC;IAO7E;;OAEG;cACa,eAAe,CAC7B,WAAW,EAAE,6BAA6B,GACzC,OAAO,CAAC,IAAI,CAAC;IAYhB;;OAEG;IACH,IAAI,SAAS,IAAI,MAAM,GAAG,SAAS,CAElC;CACF"}
1
+ {"version":3,"file":"streamable_http.d.ts","sourceRoot":"","sources":["../../../src/task_managers/streamable_http.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oCAAoC,EAAE,MAAM,oDAAoD,CAAC;AAC/G,OAAO,EAAE,6BAA6B,EAAE,MAAM,oDAAoD,CAAC;AAEnG,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAE9C,qBAAa,+BAAgC,SAAQ,iBAAiB,CAAC,6BAA6B,CAAC;IACnG,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAM;IAC1B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAuC;IAC7D,OAAO,CAAC,UAAU,CAA8C;IAEhE;;;;;OAKG;gBACS,GAAG,EAAE,MAAM,GAAG,GAAG,EAAE,IAAI,CAAC,EAAE,oCAAoC;IAM1E;;;OAGG;cACa,mBAAmB,IAAI,OAAO,CAAC,6BAA6B,CAAC;IAO7E;;;OAGG;cACa,eAAe,CAC7B,WAAW,EAAE,6BAA6B,GACzC,OAAO,CAAC,IAAI,CAAC;IAehB;;OAEG;IACH,IAAI,SAAS,IAAI,MAAM,GAAG,SAAS,CAElC;CACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"tsup.config.d.ts","sourceRoot":"","sources":["../tsup.config.ts"],"names":[],"mappings":";AAEA,wBAsCG"}
1
+ {"version":3,"file":"tsup.config.d.ts","sourceRoot":"","sources":["../tsup.config.ts"],"names":[],"mappings":";AAEA,wBAuCG"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "mcp-use",
3
3
  "type": "module",
4
- "version": "1.6.3-canary.0",
4
+ "version": "1.7.0-canary.1",
5
5
  "description": "Opinionated MCP Framework for TypeScript (@modelcontextprotocol/sdk compatible) - Build MCP Agents and Clients + MCP Servers with support for MCP-UI.",
6
6
  "author": "mcp-use, Inc.",
7
7
  "license": "MIT",
@@ -33,6 +33,10 @@
33
33
  "types": "./dist/src/agents/index.d.ts",
34
34
  "import": "./dist/src/agents/index.js"
35
35
  },
36
+ "./auth": {
37
+ "types": "./dist/src/auth/index.d.ts",
38
+ "import": "./dist/src/auth/index.js"
39
+ },
36
40
  "./browser": {
37
41
  "types": "./dist/src/browser.d.ts",
38
42
  "import": "./dist/src/browser.js"
@@ -102,6 +106,7 @@
102
106
  "dotenv": "^16.5.0",
103
107
  "esbuild": ">=0.25.0",
104
108
  "hono": "^4.6.0",
109
+ "jose": "^6.1.2",
105
110
  "langchain": "^1.0.1",
106
111
  "lodash-es": "^4.17.21",
107
112
  "posthog-node": "^5.1.1",
@@ -115,8 +120,8 @@
115
120
  "ws": "^8.18.2",
116
121
  "zod": "^3.25.48",
117
122
  "zod-to-json-schema": "^3.24.6",
118
- "@mcp-use/cli": "2.4.3-canary.0",
119
- "@mcp-use/inspector": "0.8.3-canary.0"
123
+ "@mcp-use/cli": "2.4.3-canary.1",
124
+ "@mcp-use/inspector": "0.9.0-canary.1"
120
125
  },
121
126
  "optionalDependencies": {
122
127
  "@tailwindcss/vite": "^4.1.15",
@@ -196,9 +201,13 @@
196
201
  "example:code_mode_e2b": "source .env 2>/dev/null || true && tsx examples/client/code_mode_e2b_example.ts",
197
202
  "example:server:notification": "tsx examples/server/notification-example/src/server.ts",
198
203
  "example:client:notification": "tsx examples/client/notification-client.ts",
199
- "example:notifications": "lsof -ti:3000 | xargs kill -9 2>/dev/null; tsx examples/server/notification-example/src/server.ts & sleep 3 && tsx examples/client/notification-client.ts",
204
+ "example:notifications": "lsof -ti:3000 | xargs kill -9 2>/dev/null; tsx examples/server/notifications/src/server.ts & sleep 3 && tsx examples/client/notification-client.ts",
200
205
  "example:server:sampling": "tsx examples/server/sampling/src/server.ts",
201
206
  "example:client:sampling": "tsx examples/client/sampling-client.ts",
202
- "example:sampling": "lsof -ti:3001 | xargs kill -9 2>/dev/null; tsx examples/server/sampling/src/server.ts & sleep 3 && tsx examples/client/sampling-client.ts"
207
+ "example:sampling": "lsof -ti:3001 | xargs kill -9 2>/dev/null; tsx examples/server/sampling/src/server.ts & sleep 3 && tsx examples/client/sampling-client.ts",
208
+ "example:server:oauth:supabase": "tsx examples/server/oauth/supabase/src/server.ts",
209
+ "example:client:oauth:auth0": "tsx examples/server/oauth/auth0/src/server.ts",
210
+ "example:client:oauth:workos": "tsx examples/server/oauth/workos/src/server.ts",
211
+ "example:client:oauth:keycloak": "tsx examples/server/oauth/keycloak/src/server.ts"
203
212
  }
204
213
  }
File without changes