@frontmcp/testing 0.12.2 → 1.0.0-beta.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 (42) hide show
  1. package/assertions/mcp-assertions.d.ts +1 -1
  2. package/assertions/mcp-assertions.d.ts.map +1 -1
  3. package/client/mcp-test-client.builder.d.ts +1 -1
  4. package/client/mcp-test-client.d.ts.map +1 -1
  5. package/client/mcp-test-client.types.d.ts +3 -3
  6. package/client/mcp-test-client.types.d.ts.map +1 -1
  7. package/errors/index.d.ts.map +1 -1
  8. package/esm/fixtures/index.mjs +239 -36
  9. package/esm/index.mjs +267 -112
  10. package/esm/matchers/index.mjs +8 -32
  11. package/esm/package.json +5 -5
  12. package/esm/perf/index.mjs +239 -36
  13. package/esm/setup.mjs +8 -32
  14. package/example-tools/index.d.ts +1 -1
  15. package/example-tools/index.d.ts.map +1 -1
  16. package/example-tools/tool-configs.d.ts +4 -10
  17. package/example-tools/tool-configs.d.ts.map +1 -1
  18. package/fixtures/index.js +232 -36
  19. package/index.d.ts +2 -1
  20. package/index.d.ts.map +1 -1
  21. package/index.js +264 -114
  22. package/matchers/index.js +8 -32
  23. package/package.json +5 -5
  24. package/perf/index.js +232 -36
  25. package/platform/platform-client-info.d.ts +2 -1
  26. package/platform/platform-client-info.d.ts.map +1 -1
  27. package/platform/platform-types.d.ts +11 -16
  28. package/platform/platform-types.d.ts.map +1 -1
  29. package/playwright/index.d.ts +1 -1
  30. package/raw-client/index.d.ts +7 -0
  31. package/raw-client/index.d.ts.map +1 -0
  32. package/server/index.d.ts +1 -1
  33. package/server/index.d.ts.map +1 -1
  34. package/server/port-registry.d.ts +24 -6
  35. package/server/port-registry.d.ts.map +1 -1
  36. package/server/test-server.d.ts +1 -1
  37. package/server/test-server.d.ts.map +1 -1
  38. package/setup.js +8 -32
  39. package/ui/ui-assertions.d.ts +3 -4
  40. package/ui/ui-assertions.d.ts.map +1 -1
  41. package/ui/ui-matchers.d.ts +1 -2
  42. package/ui/ui-matchers.d.ts.map +1 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@frontmcp/testing",
3
- "version": "0.12.2",
3
+ "version": "1.0.0-beta.1",
4
4
  "description": "E2E testing framework for FrontMCP servers - MCP client, auth mocks, Playwright integration",
5
5
  "author": "AgentFront <info@agentfront.dev>",
6
6
  "homepage": "https://docs.agentfront.dev",
@@ -87,8 +87,8 @@
87
87
  "./esm": null
88
88
  },
89
89
  "peerDependencies": {
90
- "@frontmcp/sdk": "0.12.2",
91
- "@frontmcp/ui": "0.12.2",
90
+ "@frontmcp/sdk": "1.0.0-beta.1",
91
+ "@frontmcp/ui": "1.0.0-beta.1",
92
92
  "@playwright/test": "^1.40.0",
93
93
  "jest": "^29.0.0",
94
94
  "@jest/globals": "^29.0.0"
@@ -111,8 +111,8 @@
111
111
  "node": ">=22.0.0"
112
112
  },
113
113
  "dependencies": {
114
- "@frontmcp/utils": "0.12.2",
115
- "@modelcontextprotocol/sdk": "1.26.0",
114
+ "@frontmcp/utils": "1.0.0-beta.1",
115
+ "@frontmcp/protocol": "1.0.0-beta.1",
116
116
  "jose": "^6.0.11",
117
117
  "tslib": "^2.3.0"
118
118
  },
package/perf/index.js CHANGED
@@ -898,7 +898,7 @@ function getPlatformCapabilities(platform) {
898
898
  ...baseCapabilities,
899
899
  experimental: {
900
900
  [MCP_APPS_EXTENSION_KEY]: {
901
- mimeTypes: ["text/html+mcp"]
901
+ mimeTypes: ["text/html;profile=mcp-app"]
902
902
  }
903
903
  }
904
904
  };
@@ -1019,7 +1019,7 @@ var McpTestClientBuilder = class {
1019
1019
  * .withCapabilities({
1020
1020
  * sampling: {},
1021
1021
  * experimental: {
1022
- * 'io.modelcontextprotocol/ui': { mimeTypes: ['text/html+mcp'] }
1022
+ * 'io.modelcontextprotocol/ui': { mimeTypes: ['text/html;profile=mcp-app'] }
1023
1023
  * }
1024
1024
  * })
1025
1025
  * .buildAndConnect();
@@ -2001,11 +2001,24 @@ var McpTestClient = class {
2001
2001
  this.log("debug", `Connecting to ${this.config.baseUrl}...`);
2002
2002
  this.transport = this.createTransport();
2003
2003
  await this.transport.connect();
2004
- const initResponse = await this.initialize();
2005
- if (!initResponse.success || !initResponse.data) {
2006
- throw new Error(`Failed to initialize MCP connection: ${initResponse.error?.message ?? "Unknown error"}`);
2004
+ const maxRetries = 3;
2005
+ const retryDelayMs = 500;
2006
+ let lastError;
2007
+ for (let attempt = 1; attempt <= maxRetries; attempt++) {
2008
+ const initResponse = await this.initialize();
2009
+ if (initResponse.success && initResponse.data) {
2010
+ this.initResult = initResponse.data;
2011
+ break;
2012
+ }
2013
+ lastError = initResponse.error?.message ?? "Unknown error";
2014
+ if (attempt < maxRetries) {
2015
+ this.log("debug", `MCP init attempt ${attempt} failed (${lastError}), retrying in ${retryDelayMs}ms...`);
2016
+ await new Promise((resolve) => setTimeout(resolve, retryDelayMs));
2017
+ }
2018
+ }
2019
+ if (!this.initResult) {
2020
+ throw new Error(`Failed to initialize MCP connection after ${maxRetries} attempts: ${lastError}`);
2007
2021
  }
2008
- this.initResult = initResponse.data;
2009
2022
  this._sessionId = this.transport.getSessionId();
2010
2023
  this._sessionInfo = {
2011
2024
  id: this._sessionId ?? `session-${Date.now()}`,
@@ -2696,7 +2709,7 @@ var McpTestClient = class {
2696
2709
  const raw = response.data ?? { content: [] };
2697
2710
  const isError = !response.success || raw.isError === true;
2698
2711
  const meta = raw._meta;
2699
- const hasUI = meta?.["ui/html"] !== void 0 || meta?.["ui/component"] !== void 0 || meta?.["openai/html"] !== void 0 || meta?.["frontmcp/html"] !== void 0;
2712
+ const hasUI = meta?.["ui/html"] !== void 0 || meta?.["ui/component"] !== void 0;
2700
2713
  const structuredContent = raw["structuredContent"];
2701
2714
  return {
2702
2715
  raw,
@@ -3048,6 +3061,7 @@ var TestTokenFactory = class {
3048
3061
 
3049
3062
  // libs/testing/src/server/test-server.ts
3050
3063
  var import_child_process = require("child_process");
3064
+ var import_utils = require("@frontmcp/utils");
3051
3065
 
3052
3066
  // libs/testing/src/errors/index.ts
3053
3067
  var TestClientError = class extends Error {
@@ -3095,9 +3109,16 @@ var E2E_PORT_RANGES = {
3095
3109
  "demo-e2e-agents": { start: 50270, size: 10 },
3096
3110
  "demo-e2e-transport-recreation": { start: 50280, size: 10 },
3097
3111
  "demo-e2e-jobs": { start: 50290, size: 10 },
3098
- // Infrastructure E2E tests (50300-50399)
3112
+ // Infrastructure E2E tests (50300-50409)
3099
3113
  "demo-e2e-redis": { start: 50300, size: 10 },
3100
3114
  "demo-e2e-serverless": { start: 50310, size: 10 },
3115
+ "demo-e2e-uipack": { start: 50320, size: 10 },
3116
+ "demo-e2e-agent-adapters": { start: 50330, size: 10 },
3117
+ "demo-e2e-guard": { start: 50340, size: 10 },
3118
+ // ESM E2E tests (50400-50449)
3119
+ "esm-package-server": { start: 50400, size: 10 },
3120
+ "esm-package-server-hot-reload": { start: 50410, size: 10 },
3121
+ "esm-package-server-cli": { start: 50420, size: 10 },
3101
3122
  // Mock servers and utilities (50900-50999)
3102
3123
  "mock-oauth": { start: 50900, size: 10 },
3103
3124
  "mock-api": { start: 50910, size: 10 },
@@ -3169,7 +3190,7 @@ async function tryReservePort(port, project) {
3169
3190
  server.once("error", () => {
3170
3191
  resolve(false);
3171
3192
  });
3172
- server.listen(port, "::", () => {
3193
+ server.listen(port, () => {
3173
3194
  reservedPorts.set(port, {
3174
3195
  port,
3175
3196
  project,
@@ -3210,7 +3231,7 @@ async function isPortAvailable(port) {
3210
3231
  server.once("error", () => {
3211
3232
  resolve(false);
3212
3233
  });
3213
- server.listen(port, "::", () => {
3234
+ server.listen(port, () => {
3214
3235
  server.close(() => {
3215
3236
  resolve(true);
3216
3237
  });
@@ -3248,15 +3269,37 @@ var TestServer = class _TestServer {
3248
3269
  */
3249
3270
  static async start(options) {
3250
3271
  const project = options.project ?? "default";
3251
- const { port, release } = await reservePort(project, options.port);
3252
- const server = new _TestServer(options, port, release);
3253
- try {
3254
- await server.startProcess();
3255
- } catch (error) {
3256
- await server.stop();
3257
- throw error;
3272
+ const maxAttempts = 3;
3273
+ for (let attempt = 1; attempt <= maxAttempts; attempt++) {
3274
+ const { port, release } = await reservePort(project, options.port);
3275
+ const server = new _TestServer(options, port, release);
3276
+ try {
3277
+ await server.startProcess();
3278
+ return server;
3279
+ } catch (error) {
3280
+ try {
3281
+ await server.stop();
3282
+ } catch (cleanupError) {
3283
+ if (options.debug || DEBUG_SERVER) {
3284
+ const msg = cleanupError instanceof Error ? cleanupError.message : String(cleanupError);
3285
+ console.warn(`[TestServer] Cleanup failed after startup error: ${msg}`);
3286
+ }
3287
+ }
3288
+ const isEADDRINUSE = error instanceof Error && (error.message.includes("EADDRINUSE") || server.getLogs().some((l) => l.includes("EADDRINUSE")));
3289
+ if (isEADDRINUSE && attempt < maxAttempts) {
3290
+ const delayMs = attempt * 500;
3291
+ if (options.debug || DEBUG_SERVER) {
3292
+ console.warn(
3293
+ `[TestServer] EADDRINUSE on port ${port}, retrying in ${delayMs}ms (attempt ${attempt}/${maxAttempts})`
3294
+ );
3295
+ }
3296
+ await sleep4(delayMs);
3297
+ continue;
3298
+ }
3299
+ throw error;
3300
+ }
3258
3301
  }
3259
- return server;
3302
+ throw new Error(`[TestServer] Failed to start after ${maxAttempts} attempts`);
3260
3303
  }
3261
3304
  /**
3262
3305
  * Start an Nx project as test server
@@ -3267,22 +3310,44 @@ var TestServer = class _TestServer {
3267
3310
  `Invalid project name: ${project}. Must contain only alphanumeric, underscore, and hyphen characters.`
3268
3311
  );
3269
3312
  }
3270
- const { port, release } = await reservePort(project, options.port);
3271
- const serverOptions = {
3272
- ...options,
3273
- port,
3274
- project,
3275
- command: `npx nx serve ${project} --port ${port}`,
3276
- cwd: options.cwd ?? process.cwd()
3277
- };
3278
- const server = new _TestServer(serverOptions, port, release);
3279
- try {
3280
- await server.startProcess();
3281
- } catch (error) {
3282
- await server.stop();
3283
- throw error;
3313
+ const maxAttempts = 3;
3314
+ for (let attempt = 1; attempt <= maxAttempts; attempt++) {
3315
+ const { port, release } = await reservePort(project, options.port);
3316
+ const serverOptions = {
3317
+ ...options,
3318
+ port,
3319
+ project,
3320
+ command: `npx nx serve ${project} --port ${port}`,
3321
+ cwd: options.cwd ?? process.cwd()
3322
+ };
3323
+ const server = new _TestServer(serverOptions, port, release);
3324
+ try {
3325
+ await server.startProcess();
3326
+ return server;
3327
+ } catch (error) {
3328
+ try {
3329
+ await server.stop();
3330
+ } catch (cleanupError) {
3331
+ if (options.debug || DEBUG_SERVER) {
3332
+ const msg = cleanupError instanceof Error ? cleanupError.message : String(cleanupError);
3333
+ console.warn(`[TestServer] Cleanup failed after startup error: ${msg}`);
3334
+ }
3335
+ }
3336
+ const isEADDRINUSE = error instanceof Error && (error.message.includes("EADDRINUSE") || server.getLogs().some((l) => l.includes("EADDRINUSE")));
3337
+ if (isEADDRINUSE && attempt < maxAttempts) {
3338
+ const delayMs = attempt * 500;
3339
+ if (options.debug || DEBUG_SERVER) {
3340
+ console.warn(
3341
+ `[TestServer] EADDRINUSE on port ${port}, retrying in ${delayMs}ms (attempt ${attempt}/${maxAttempts})`
3342
+ );
3343
+ }
3344
+ await sleep4(delayMs);
3345
+ continue;
3346
+ }
3347
+ throw error;
3348
+ }
3284
3349
  }
3285
- return server;
3350
+ throw new Error(`[TestServer] Failed to start after ${maxAttempts} attempts`);
3286
3351
  }
3287
3352
  /**
3288
3353
  * Create a test server connected to an already running server
@@ -3319,7 +3384,21 @@ var TestServer = class _TestServer {
3319
3384
  }
3320
3385
  if (this.process) {
3321
3386
  this.log("Stopping server...");
3322
- this.process.kill("SIGTERM");
3387
+ if (this.process.exitCode !== null || this.process.signalCode !== null) {
3388
+ this.log(`Server already exited (code: ${this.process.exitCode}, signal: ${this.process.signalCode})`);
3389
+ this.process = null;
3390
+ return;
3391
+ }
3392
+ const pid = this.process.pid;
3393
+ try {
3394
+ if (pid !== void 0) {
3395
+ process.kill(-pid, "SIGTERM");
3396
+ } else {
3397
+ this.process.kill("SIGTERM");
3398
+ }
3399
+ } catch {
3400
+ this.process.kill("SIGTERM");
3401
+ }
3323
3402
  const exitPromise = new Promise((resolve) => {
3324
3403
  if (this.process) {
3325
3404
  this.process.once("exit", () => resolve());
@@ -3330,7 +3409,16 @@ var TestServer = class _TestServer {
3330
3409
  const killTimeout = setTimeout(() => {
3331
3410
  if (this.process) {
3332
3411
  this.log("Force killing server after timeout...");
3333
- this.process.kill("SIGKILL");
3412
+ const killPid = this.process.pid;
3413
+ try {
3414
+ if (killPid !== void 0) {
3415
+ process.kill(-killPid, "SIGKILL");
3416
+ } else {
3417
+ this.process.kill("SIGKILL");
3418
+ }
3419
+ } catch {
3420
+ this.process.kill("SIGKILL");
3421
+ }
3334
3422
  }
3335
3423
  }, 5e3);
3336
3424
  await exitPromise;
@@ -3395,14 +3483,17 @@ var TestServer = class _TestServer {
3395
3483
  ...this.options.env,
3396
3484
  PORT: String(this.options.port)
3397
3485
  };
3486
+ const runtimeEnv = withWorkspaceProtocolFallback(env, this.options.cwd);
3398
3487
  if (this.portRelease) {
3399
3488
  await this.portRelease();
3400
3489
  this.portRelease = null;
3490
+ await sleep4(300);
3401
3491
  }
3402
3492
  this.process = (0, import_child_process.spawn)(this.options.command, [], {
3403
3493
  cwd: this.options.cwd,
3404
- env,
3494
+ env: runtimeEnv,
3405
3495
  shell: true,
3496
+ detached: true,
3406
3497
  stdio: ["pipe", "pipe", "pipe"]
3407
3498
  });
3408
3499
  if (this.process.pid !== void 0) {
@@ -3554,6 +3645,111 @@ TIP: Set DEBUG_SERVER=1 or DEBUG=1 environment variable for verbose output`
3554
3645
  function sleep4(ms) {
3555
3646
  return new Promise((resolve) => setTimeout(resolve, ms));
3556
3647
  }
3648
+ function withWorkspaceProtocolFallback(env, cwd) {
3649
+ if (findInstalledProtocolPackageDir(cwd)) {
3650
+ return env;
3651
+ }
3652
+ try {
3653
+ const workspacePackageDir = findWorkspaceProtocolDir(cwd);
3654
+ if (!workspacePackageDir) {
3655
+ return env;
3656
+ }
3657
+ ensureWorkspaceProtocolLink(cwd, workspacePackageDir);
3658
+ if (findInstalledProtocolPackageDir(cwd)) {
3659
+ return env;
3660
+ }
3661
+ return withProtocolNodePathAlias(env, cwd, workspacePackageDir);
3662
+ } catch (err) {
3663
+ if (DEBUG_SERVER) {
3664
+ console.error(
3665
+ `[TestServer] Workspace protocol fallback failed: ${err instanceof Error ? err.message : String(err)}`
3666
+ );
3667
+ }
3668
+ return env;
3669
+ }
3670
+ }
3671
+ function ensureWorkspaceProtocolLink(cwd, workspacePackageDir) {
3672
+ const fs = require("node:fs");
3673
+ const path = require("node:path");
3674
+ const nodeModulesDir = findWorkspaceNodeModulesDir(cwd);
3675
+ if (!nodeModulesDir) {
3676
+ return;
3677
+ }
3678
+ const scopeDir = path.join(nodeModulesDir, "@frontmcp");
3679
+ const aliasPackageDir = path.join(scopeDir, "protocol");
3680
+ if (fs.existsSync(aliasPackageDir)) {
3681
+ return;
3682
+ }
3683
+ fs.mkdirSync(scopeDir, { recursive: true });
3684
+ try {
3685
+ fs.symlinkSync(workspacePackageDir, aliasPackageDir, process.platform === "win32" ? "junction" : "dir");
3686
+ } catch (error) {
3687
+ const err = error;
3688
+ if (err.code !== "EEXIST") {
3689
+ throw error;
3690
+ }
3691
+ }
3692
+ }
3693
+ function withProtocolNodePathAlias(env, cwd, workspacePackageDir) {
3694
+ const fs = require("node:fs");
3695
+ const os = require("node:os");
3696
+ const path = require("node:path");
3697
+ const aliasRoot = path.join(os.tmpdir(), "frontmcp-test-node-path", (0, import_utils.sha256Hex)(cwd).slice(0, 12));
3698
+ const scopeDir = path.join(aliasRoot, "@frontmcp");
3699
+ const aliasPackageDir = path.join(scopeDir, "protocol");
3700
+ fs.mkdirSync(scopeDir, { recursive: true });
3701
+ try {
3702
+ if (!fs.existsSync(aliasPackageDir)) {
3703
+ fs.symlinkSync(workspacePackageDir, aliasPackageDir, process.platform === "win32" ? "junction" : "dir");
3704
+ }
3705
+ } catch (error) {
3706
+ const err = error;
3707
+ if (err.code !== "EEXIST") throw error;
3708
+ }
3709
+ const existingNodePath = env["NODE_PATH"];
3710
+ const nodePathEntries = [aliasRoot, ...existingNodePath ? existingNodePath.split(path.delimiter) : []].filter(
3711
+ Boolean
3712
+ );
3713
+ return {
3714
+ ...env,
3715
+ NODE_PATH: [...new Set(nodePathEntries)].join(path.delimiter)
3716
+ };
3717
+ }
3718
+ function findUp(startDir, testFn) {
3719
+ const path = require("node:path");
3720
+ let currentDir = startDir;
3721
+ while (true) {
3722
+ const result = testFn(currentDir);
3723
+ if (result !== void 0) return result;
3724
+ const parentDir = path.dirname(currentDir);
3725
+ if (parentDir === currentDir) return void 0;
3726
+ currentDir = parentDir;
3727
+ }
3728
+ }
3729
+ function findWorkspaceProtocolDir(startDir) {
3730
+ const fs = require("node:fs");
3731
+ const path = require("node:path");
3732
+ return findUp(startDir, (dir) => {
3733
+ const candidate = path.join(dir, "libs", "protocol");
3734
+ return fs.existsSync(path.join(candidate, "dist", "index.js")) ? candidate : void 0;
3735
+ });
3736
+ }
3737
+ function findInstalledProtocolPackageDir(startDir) {
3738
+ const fs = require("node:fs");
3739
+ const path = require("node:path");
3740
+ return findUp(startDir, (dir) => {
3741
+ const candidate = path.join(dir, "node_modules", "@frontmcp", "protocol");
3742
+ return fs.existsSync(path.join(candidate, "package.json")) ? candidate : void 0;
3743
+ });
3744
+ }
3745
+ function findWorkspaceNodeModulesDir(startDir) {
3746
+ const fs = require("node:fs");
3747
+ const path = require("node:path");
3748
+ return findUp(startDir, (dir) => {
3749
+ const candidate = path.join(dir, "node_modules");
3750
+ return fs.existsSync(candidate) ? candidate : void 0;
3751
+ });
3752
+ }
3557
3753
 
3558
3754
  // libs/testing/src/perf/perf-test.ts
3559
3755
  var currentConfig = {};
@@ -22,7 +22,8 @@ import type { TestPlatformType } from './platform-types';
22
22
  export declare const MCP_APPS_EXTENSION_KEY: "io.modelcontextprotocol/ui";
23
23
  /**
24
24
  * Client info for MCP initialization.
25
- * Matches the Implementation type from @modelcontextprotocol/sdk.
25
+ * Contains the required fields (name, version) of the Implementation type
26
+ * from @frontmcp/protocol, used for testing and platform detection.
26
27
  */
27
28
  export interface TestClientInfo {
28
29
  /** Client name (used for User-Agent header) */
@@ -1 +1 @@
1
- {"version":3,"file":"platform-client-info.d.ts","sourceRoot":"","sources":["../../src/platform/platform-client-info.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEzD;;GAEG;AACH,eAAO,MAAM,sBAAsB,EAAG,4BAAqC,CAAC;AAE5E;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B,+CAA+C;IAC/C,IAAI,EAAE,MAAM,CAAC;IACb,qBAAqB;IACrB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,gBAAgB,GAAG,cAAc,CAiDhF;AAED;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAAC,UAAU,EAAE,cAAc,GAAG,MAAM,CAEjE;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,gBAAgB,GAAG,MAAM,CAEvE;AAED;;;;;GAKG;AACH,eAAO,MAAM,2BAA2B,EAAE,MAAM,CAAC,gBAAgB,EAAE,MAAM,CAUxE,CAAC;AAMF;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,2BAA2B;IAC3B,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,CAAC,sBAAsB,CAAC,CAAC,EAAE,gBAAgB,CAAC;IAC5C,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,yBAAyB;IACxC,sDAAsD;IACtD,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED;;;GAGG;AACH,MAAM,WAAW,uBAAuB;IACtC,yEAAyE;IACzE,IAAI,CAAC,EAAE,yBAAyB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC3D,wEAAwE;IACxE,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC/B;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,WAAW,CAAC,EAAE,uBAAuB,CAAC;IACtC,YAAY,CAAC,EAAE,wBAAwB,CAAC;CACzC;AAED;;;;;;;;GAQG;AACH,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,gBAAgB,GAAG,sBAAsB,CAuB1F;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CAAC,QAAQ,EAAE,gBAAgB,GAAG,OAAO,CAE/E"}
1
+ {"version":3,"file":"platform-client-info.d.ts","sourceRoot":"","sources":["../../src/platform/platform-client-info.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEzD;;GAEG;AACH,eAAO,MAAM,sBAAsB,EAAG,4BAAqC,CAAC;AAE5E;;;;GAIG;AACH,MAAM,WAAW,cAAc;IAC7B,+CAA+C;IAC/C,IAAI,EAAE,MAAM,CAAC;IACb,qBAAqB;IACrB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,gBAAgB,GAAG,cAAc,CAiDhF;AAED;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAAC,UAAU,EAAE,cAAc,GAAG,MAAM,CAEjE;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,gBAAgB,GAAG,MAAM,CAEvE;AAED;;;;;GAKG;AACH,eAAO,MAAM,2BAA2B,EAAE,MAAM,CAAC,gBAAgB,EAAE,MAAM,CAUxE,CAAC;AAMF;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,2BAA2B;IAC3B,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,CAAC,sBAAsB,CAAC,CAAC,EAAE,gBAAgB,CAAC;IAC5C,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,yBAAyB;IACxC,sDAAsD;IACtD,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED;;;GAGG;AACH,MAAM,WAAW,uBAAuB;IACtC,yEAAyE;IACzE,IAAI,CAAC,EAAE,yBAAyB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC3D,wEAAwE;IACxE,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC/B;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,WAAW,CAAC,EAAE,uBAAuB,CAAC;IACtC,YAAY,CAAC,EAAE,wBAAwB,CAAC;CACzC;AAED;;;;;;;;GAQG;AACH,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,gBAAgB,GAAG,sBAAsB,CAuB1F;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CAAC,QAAQ,EAAE,gBAAgB,GAAG,OAAO,CAE/E"}
@@ -15,37 +15,29 @@
15
15
  /**
16
16
  * Supported AI platform types for testing.
17
17
  *
18
- * - `openai`: OpenAI ChatGPT (uses openai/* meta keys)
19
- * - `ext-apps`: MCP Apps per SEP-1865 (uses ui/* meta keys)
20
- * - `claude`: Claude Desktop (uses ui/* keys only)
21
- * - `cursor`: Cursor IDE (uses ui/* keys only)
22
- * - `continue`: Continue Dev (uses ui/* keys only)
23
- * - `cody`: Sourcegraph Cody (uses ui/* keys only)
24
- * - `gemini`: Google Gemini (uses ui/* keys only)
25
- * - `generic-mcp`: Generic MCP client (uses ui/* keys only)
26
- * - `unknown`: Unknown platform (uses ui/* keys only)
18
+ * All platforms use `ui/*` meta keys per the MCP Apps specification.
27
19
  */
28
20
  export type TestPlatformType = 'openai' | 'ext-apps' | 'claude' | 'cursor' | 'continue' | 'cody' | 'gemini' | 'generic-mcp' | 'unknown';
29
21
  /**
30
22
  * Platform meta namespace used for tool responses.
31
- *
32
- * - `openai`: Uses `openai/*` keys only
33
- * - `ui`: Uses `ui/*` keys only (all non-OpenAI platforms)
23
+ * All platforms now use `ui/*` keys per the MCP Apps specification.
34
24
  */
35
- export type PlatformMetaNamespace = 'openai' | 'ui';
25
+ export type PlatformMetaNamespace = 'ui';
36
26
  /**
37
27
  * Get the meta namespace for a platform type.
28
+ * All platforms use the `ui` namespace.
38
29
  */
39
30
  export declare function getPlatformMetaNamespace(platform: TestPlatformType): PlatformMetaNamespace;
40
31
  /**
41
32
  * Get the expected MIME type for a platform.
42
33
  *
43
- * - OpenAI uses `text/html+skybridge`
44
- * - All other platforms use `text/html+mcp`
34
+ * - OpenAI uses `text/html;profile=mcp-app`
35
+ * - All other platforms use `text/html;profile=mcp-app`
45
36
  */
46
37
  export declare function getPlatformMimeType(platform: TestPlatformType): string;
47
38
  /**
48
39
  * Check if a platform uses OpenAI-specific meta keys.
40
+ * Note: OpenAI now uses the standard ui/* namespace like all other platforms.
49
41
  */
50
42
  export declare function isOpenAIPlatform(platform: TestPlatformType): boolean;
51
43
  /**
@@ -53,15 +45,18 @@ export declare function isOpenAIPlatform(platform: TestPlatformType): boolean;
53
45
  */
54
46
  export declare function isExtAppsPlatform(platform: TestPlatformType): boolean;
55
47
  /**
56
- * Check if a platform uses ui/* meta keys (non-OpenAI).
48
+ * Check if a platform uses ui/* meta keys.
49
+ * All platforms now use ui/* keys.
57
50
  */
58
51
  export declare function isUiPlatform(platform: TestPlatformType): boolean;
59
52
  /**
60
53
  * Get all expected meta key prefixes for a platform's tools/list response.
54
+ * All platforms use ui/* namespace.
61
55
  */
62
56
  export declare function getToolsListMetaPrefixes(platform: TestPlatformType): string[];
63
57
  /**
64
58
  * Get all expected meta key prefixes for a platform's tool/call response.
59
+ * All platforms use ui/* namespace.
65
60
  */
66
61
  export declare function getToolCallMetaPrefixes(platform: TestPlatformType): string[];
67
62
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"platform-types.d.ts","sourceRoot":"","sources":["../../src/platform/platform-types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH;;;;;;;;;;;;GAYG;AACH,MAAM,MAAM,gBAAgB,GACxB,QAAQ,GACR,UAAU,GACV,QAAQ,GACR,QAAQ,GACR,UAAU,GACV,MAAM,GACN,QAAQ,GACR,aAAa,GACb,SAAS,CAAC;AAEd;;;;;GAKG;AACH,MAAM,MAAM,qBAAqB,GAAG,QAAQ,GAAG,IAAI,CAAC;AAEpD;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,gBAAgB,GAAG,qBAAqB,CAQ1F;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,gBAAgB,GAAG,MAAM,CAEtE;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,gBAAgB,GAAG,OAAO,CAEpE;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,gBAAgB,GAAG,OAAO,CAErE;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,gBAAgB,GAAG,OAAO,CAEhE;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,gBAAgB,GAAG,MAAM,EAAE,CAQ7E;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,gBAAgB,GAAG,MAAM,EAAE,CAQ5E;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,gBAAgB,GAAG,MAAM,EAAE,CAS7E"}
1
+ {"version":3,"file":"platform-types.d.ts","sourceRoot":"","sources":["../../src/platform/platform-types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH;;;;GAIG;AACH,MAAM,MAAM,gBAAgB,GACxB,QAAQ,GACR,UAAU,GACV,QAAQ,GACR,QAAQ,GACR,UAAU,GACV,MAAM,GACN,QAAQ,GACR,aAAa,GACb,SAAS,CAAC;AAEd;;;GAGG;AACH,MAAM,MAAM,qBAAqB,GAAG,IAAI,CAAC;AAEzC;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,gBAAgB,GAAG,qBAAqB,CAE1F;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,gBAAgB,GAAG,MAAM,CAEtE;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,gBAAgB,GAAG,OAAO,CAEpE;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,gBAAgB,GAAG,OAAO,CAErE;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,gBAAgB,GAAG,OAAO,CAEhE;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,gBAAgB,GAAG,MAAM,EAAE,CAE7E;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,gBAAgB,GAAG,MAAM,EAAE,CAE5E;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,gBAAgB,GAAG,MAAM,EAAE,CAG7E"}
@@ -15,7 +15,7 @@
15
15
  * test.describe('OAuth Flow', () => {
16
16
  * test.use({
17
17
  * server: MyServer,
18
- * auth: { mode: 'orchestrated' }
18
+ * auth: { mode: 'local' }
19
19
  * });
20
20
  *
21
21
  * test('completes OAuth flow', async ({ page, oauth }) => {
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Raw MCP protocol client re-exports for low-level e2e testing.
3
+ * For programmatic access, prefer connect()/connectOpenAI() from @frontmcp/sdk.
4
+ */
5
+ export { Client as McpClient } from '@frontmcp/protocol';
6
+ export { StdioClientTransport as McpStdioClientTransport } from '@frontmcp/protocol';
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/raw-client/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,MAAM,IAAI,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,oBAAoB,IAAI,uBAAuB,EAAE,MAAM,oBAAoB,CAAC"}
package/server/index.d.ts CHANGED
@@ -4,6 +4,6 @@
4
4
  */
5
5
  export { TestServer } from './test-server';
6
6
  export type { TestServerOptions, TestServerInfo } from './test-server';
7
- export { reservePort, getProjectPort, getProjectPorts, getPortRange, releaseAllPorts, getReservedPorts, findAvailablePort, E2E_PORT_RANGES, } from './port-registry';
7
+ export { reservePort, getProjectPort, getProjectPorts, getPortRange, releaseAllPorts, getReservedPorts, E2E_PORT_RANGES, } from './port-registry';
8
8
  export type { E2EProject } from './port-registry';
9
9
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,YAAY,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAGvE,OAAO,EACL,WAAW,EACX,cAAc,EACd,eAAe,EACf,YAAY,EACZ,eAAe,EACf,gBAAgB,EAChB,iBAAiB,EACjB,eAAe,GAChB,MAAM,iBAAiB,CAAC;AACzB,YAAY,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,YAAY,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAGvE,OAAO,EACL,WAAW,EACX,cAAc,EACd,eAAe,EACf,YAAY,EACZ,eAAe,EACf,gBAAgB,EAChB,eAAe,GAChB,MAAM,iBAAiB,CAAC;AACzB,YAAY,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC"}
@@ -115,6 +115,30 @@ export declare const E2E_PORT_RANGES: {
115
115
  readonly start: 50310;
116
116
  readonly size: 10;
117
117
  };
118
+ readonly 'demo-e2e-uipack': {
119
+ readonly start: 50320;
120
+ readonly size: 10;
121
+ };
122
+ readonly 'demo-e2e-agent-adapters': {
123
+ readonly start: 50330;
124
+ readonly size: 10;
125
+ };
126
+ readonly 'demo-e2e-guard': {
127
+ readonly start: 50340;
128
+ readonly size: 10;
129
+ };
130
+ readonly 'esm-package-server': {
131
+ readonly start: 50400;
132
+ readonly size: 10;
133
+ };
134
+ readonly 'esm-package-server-hot-reload': {
135
+ readonly start: 50410;
136
+ readonly size: 10;
137
+ };
138
+ readonly 'esm-package-server-cli': {
139
+ readonly start: 50420;
140
+ readonly size: 10;
141
+ };
118
142
  readonly 'mock-oauth': {
119
143
  readonly start: 50900;
120
144
  readonly size: 10;
@@ -174,10 +198,4 @@ export declare function getReservedPorts(): Array<{
174
198
  project: string;
175
199
  reservedAt: number;
176
200
  }>;
177
- /**
178
- * Find an available port (legacy compatibility function)
179
- *
180
- * @deprecated Use reservePort() for better port management
181
- */
182
- export declare function findAvailablePort(): Promise<number>;
183
201
  //# sourceMappingURL=port-registry.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"port-registry.d.ts","sourceRoot":"","sources":["../../src/server/port-registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAQH;;;;;;GAMG;AACH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyClB,CAAC;AAEX,MAAM,MAAM,UAAU,GAAG,MAAM,OAAO,eAAe,CAAC;AAuBtD;;GAEG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAM7E;AAED;;;;;;;;;GASG;AACH,wBAAsB,WAAW,CAC/B,OAAO,EAAE,MAAM,EACf,aAAa,CAAC,EAAE,MAAM,GACrB,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CAAE,CAAC,CAiEzD;AAgFD;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAGtD;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAWxE;AAED;;GAEG;AACH,wBAAsB,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC,CAGrD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CAAC,CAM/F;AAMD;;;;GAIG;AACH,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,MAAM,CAAC,CAKzD"}
1
+ {"version":3,"file":"port-registry.d.ts","sourceRoot":"","sources":["../../src/server/port-registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAQH;;;;;;GAMG;AACH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiDlB,CAAC;AAEX,MAAM,MAAM,UAAU,GAAG,MAAM,OAAO,eAAe,CAAC;AAuBtD;;GAEG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAM7E;AAED;;;;;;;;;GASG;AACH,wBAAsB,WAAW,CAC/B,OAAO,EAAE,MAAM,EACf,aAAa,CAAC,EAAE,MAAM,GACrB,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CAAE,CAAC,CAiEzD;AAkFD;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAGtD;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAWxE;AAED;;GAEG;AACH,wBAAsB,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC,CAGrD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CAAC,CAM/F"}
@@ -104,5 +104,5 @@ export declare class TestServer {
104
104
  private waitForReadyWithExitDetection;
105
105
  private log;
106
106
  }
107
- export { reservePort, getProjectPort, getProjectPorts, getPortRange, releaseAllPorts, getReservedPorts, findAvailablePort, E2E_PORT_RANGES, type E2EProject, } from './port-registry';
107
+ export { reservePort, getProjectPort, getProjectPorts, getPortRange, releaseAllPorts, getReservedPorts, E2E_PORT_RANGES, type E2EProject, } from './port-registry';
108
108
  //# sourceMappingURL=test-server.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"test-server.d.ts","sourceRoot":"","sources":["../../src/server/test-server.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAaH,MAAM,WAAW,iBAAiB;IAChC,wEAAwE;IACxE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,iDAAiD;IACjD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,kCAAkC;IAClC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,wBAAwB;IACxB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,4BAA4B;IAC5B,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,kEAAkE;IAClE,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,4DAA4D;IAC5D,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,2BAA2B;IAC3B,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,cAAc;IAC7B,6BAA6B;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,oCAAoC;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,gCAAgC;IAChC,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAMD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,qBAAa,UAAU;IACrB,OAAO,CAAC,OAAO,CAA6B;IAC5C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAsE;IAC9F,OAAO,CAAC,KAAK,CAAiB;IAC9B,OAAO,CAAC,IAAI,CAAgB;IAC5B,OAAO,CAAC,WAAW,CAAsC;IAEzD,OAAO;IAmBP;;OAEG;WACU,KAAK,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,UAAU,CAAC;IAenE;;OAEG;WACU,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,OAAO,CAAC,iBAAiB,CAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IA6BpG;;OAEG;IACH,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU;IAoB3C;;OAEG;IACH,IAAI,IAAI,IAAI,cAAc,CAEzB;IAED;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAoC3B;;OAEG;IACG,YAAY,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA2BnD;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAK9B;;OAEG;IACH,OAAO,IAAI,MAAM,EAAE;IAInB;;OAEG;IACH,SAAS,IAAI,IAAI;YAQH,YAAY;IA0G1B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAY1B;;OAEG;YACW,6BAA6B;IAmE3C,OAAO,CAAC,GAAG;CAKZ;AAcD,OAAO,EACL,WAAW,EACX,cAAc,EACd,eAAe,EACf,YAAY,EACZ,eAAe,EACf,gBAAgB,EAChB,iBAAiB,EACjB,eAAe,EACf,KAAK,UAAU,GAChB,MAAM,iBAAiB,CAAC"}
1
+ {"version":3,"file":"test-server.d.ts","sourceRoot":"","sources":["../../src/server/test-server.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAcH,MAAM,WAAW,iBAAiB;IAChC,wEAAwE;IACxE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,iDAAiD;IACjD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,kCAAkC;IAClC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,wBAAwB;IACxB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,4BAA4B;IAC5B,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,kEAAkE;IAClE,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,4DAA4D;IAC5D,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,2BAA2B;IAC3B,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,cAAc;IAC7B,6BAA6B;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,oCAAoC;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,gCAAgC;IAChC,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAMD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,qBAAa,UAAU;IACrB,OAAO,CAAC,OAAO,CAA6B;IAC5C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAsE;IAC9F,OAAO,CAAC,KAAK,CAAiB;IAC9B,OAAO,CAAC,IAAI,CAAgB;IAC5B,OAAO,CAAC,WAAW,CAAsC;IAEzD,OAAO;IAmBP;;OAEG;WACU,KAAK,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,UAAU,CAAC;IA4CnE;;OAEG;WACU,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,OAAO,CAAC,iBAAiB,CAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IA0DpG;;OAEG;IACH,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU;IAoB3C;;OAEG;IACH,IAAI,IAAI,IAAI,cAAc,CAEzB;IAED;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IA6D3B;;OAEG;IACG,YAAY,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA2BnD;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAK9B;;OAEG;IACH,OAAO,IAAI,MAAM,EAAE;IAInB;;OAEG;IACH,SAAS,IAAI,IAAI;YAQH,YAAY;IA8G1B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAY1B;;OAEG;YACW,6BAA6B;IAmE3C,OAAO,CAAC,GAAG;CAKZ;AA6JD,OAAO,EACL,WAAW,EACX,cAAc,EACd,eAAe,EACf,YAAY,EACZ,eAAe,EACf,gBAAgB,EAChB,eAAe,EACf,KAAK,UAAU,GAChB,MAAM,iBAAiB,CAAC"}