accessflow-mcp-server 2.0.4-beta.4 → 2.1.1-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 (54) hide show
  1. package/dist/http-server.js +8 -3
  2. package/dist/http-server.js.map +1 -1
  3. package/dist/index.js +8 -45
  4. package/dist/index.js.map +1 -1
  5. package/dist/server.d.ts +5 -1
  6. package/dist/server.d.ts.map +1 -1
  7. package/dist/server.js +40 -14
  8. package/dist/server.js.map +1 -1
  9. package/dist/services/apiSchemas.d.ts +768 -1176
  10. package/dist/services/apiSchemas.d.ts.map +1 -1
  11. package/dist/services/apiSchemas.js +20 -1
  12. package/dist/services/apiSchemas.js.map +1 -1
  13. package/dist/services/apiService.d.ts +3 -3
  14. package/dist/services/apiService.d.ts.map +1 -1
  15. package/dist/services/apiService.js +15 -5
  16. package/dist/services/apiService.js.map +1 -1
  17. package/dist/services/loggerService.d.ts.map +1 -1
  18. package/dist/services/loggerService.js +31 -8
  19. package/dist/services/loggerService.js.map +1 -1
  20. package/dist/services/rulesService.d.ts +10 -0
  21. package/dist/services/rulesService.d.ts.map +1 -0
  22. package/dist/services/rulesService.js +70 -0
  23. package/dist/services/rulesService.js.map +1 -0
  24. package/dist/tools/getIssueRemediation.d.ts +6 -5
  25. package/dist/tools/getIssueRemediation.d.ts.map +1 -1
  26. package/dist/tools/getIssueRemediation.js +36 -18
  27. package/dist/tools/getIssueRemediation.js.map +1 -1
  28. package/dist/tools/getMostUrgentIssues.d.ts +11 -1
  29. package/dist/tools/getMostUrgentIssues.d.ts.map +1 -1
  30. package/dist/tools/getMostUrgentIssues.js +39 -19
  31. package/dist/tools/getMostUrgentIssues.js.map +1 -1
  32. package/dist/tools/index.d.ts +10 -1
  33. package/dist/tools/index.d.ts.map +1 -1
  34. package/dist/tools/index.js +85 -12
  35. package/dist/tools/index.js.map +1 -1
  36. package/dist/tools/resolveIssue.d.ts +1 -5
  37. package/dist/tools/resolveIssue.d.ts.map +1 -1
  38. package/dist/tools/resolveIssue.js +12 -0
  39. package/dist/tools/resolveIssue.js.map +1 -1
  40. package/dist/tools/submitFeedback.d.ts +17 -0
  41. package/dist/tools/submitFeedback.d.ts.map +1 -0
  42. package/dist/tools/submitFeedback.js +73 -0
  43. package/dist/tools/submitFeedback.js.map +1 -0
  44. package/dist/tools/toolRegistry.d.ts +16 -11
  45. package/dist/tools/toolRegistry.d.ts.map +1 -1
  46. package/dist/types/issues.d.ts +7 -1
  47. package/dist/types/issues.d.ts.map +1 -1
  48. package/dist/types/remediation.d.ts +1 -1
  49. package/dist/types/remediation.d.ts.map +1 -1
  50. package/dist/utils/remediation.d.ts +5 -3
  51. package/dist/utils/remediation.d.ts.map +1 -1
  52. package/dist/utils/remediation.js +22 -8
  53. package/dist/utils/remediation.js.map +1 -1
  54. package/package.json +8 -4
@@ -11,24 +11,29 @@ async function startServer() {
11
11
  const transportConfig = {
12
12
  type: 'httpStream',
13
13
  port,
14
+ host: '0.0.0.0', // Listen on all network interfaces
14
15
  stateless,
15
16
  };
16
17
  console.log('Creating server instance...');
17
18
  const server = new FlowMcpServer(transportConfig);
18
19
  // Handle graceful shutdown
19
20
  process.on('SIGINT', async () => {
21
+ logger.info('Received SIGINT, shutting down gracefully...');
20
22
  await server.stop();
23
+ logger.info('Server stopped successfully');
21
24
  process.exit(0);
22
25
  });
23
26
  process.on('SIGTERM', async () => {
27
+ logger.info('Received SIGTERM, shutting down gracefully...');
24
28
  await server.stop();
29
+ logger.info('Server stopped successfully');
25
30
  process.exit(0);
26
31
  });
27
32
  console.log('Initializing server...');
28
33
  // Start server with HTTP transport
29
- await server.init(transportConfig);
30
- logger.info(`HTTP server is running at http://localhost:${port}/mcp`);
31
- console.log(`HTTP server is running at http://localhost:${port}/mcp`);
34
+ await server.init();
35
+ logger.info(`HTTP server is running at http://${transportConfig.host}:${port}/mcp`);
36
+ console.log(`HTTP server is running at http://${transportConfig.host}:${port}/mcp`);
32
37
  }
33
38
  catch (error) {
34
39
  console.error('Error starting HTTP server:', error);
@@ -1 +1 @@
1
- {"version":3,"file":"http-server.js","sourceRoot":"","sources":["../src/http-server.ts"],"names":[],"mappings":";AACA,OAAO,eAAe,CAAC;AACvB,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,MAAM,EAAE,MAAM,6BAA6B,CAAC;AAErD,KAAK,UAAU,WAAW;IACxB,IAAI,CAAC;QACH,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;QAEvC,oDAAoD;QACpD,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QACtE,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,SAAS,KAAK,MAAM,CAAC;QAEnD,MAAM,eAAe,GAAG;YACtB,IAAI,EAAE,YAAqB;YAC3B,IAAI;YACJ,SAAS;SACV,CAAC;QAEF,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;QAC3C,MAAM,MAAM,GAAG,IAAI,aAAa,CAAC,eAAe,CAAC,CAAC;QAElD,2BAA2B;QAC3B,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE;YAC9B,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;YACpB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC,CAAC,CAAC;QAEH,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,KAAK,IAAI,EAAE;YAC/B,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;YACpB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC,CAAC,CAAC;QAEH,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;QACtC,mCAAmC;QACnC,MAAM,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QACnC,MAAM,CAAC,IAAI,CAAC,8CAA8C,IAAI,MAAM,CAAC,CAAC;QACtE,OAAO,CAAC,GAAG,CAAC,8CAA8C,IAAI,MAAM,CAAC,CAAC;IACxE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,6BAA6B,EAAE,KAAK,CAAC,CAAC;QACpD,MAAM,CAAC,KAAK,CACV;YACE,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe;YAC/D,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS;SACxD,EACD,sCAAsC,CACvC,CAAC;QAEF,0DAA0D;QAC1D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,+BAA+B;AAC/B,OAAO,CAAC,EAAE,CAAC,mBAAmB,EAAE,CAAC,KAAK,EAAE,EAAE;IACxC,OAAO,CAAC,KAAK,CAAC,qBAAqB,EAAE,KAAK,CAAC,CAAC;IAC5C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC;AAEH,OAAO,CAAC,EAAE,CAAC,oBAAoB,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE;IACnD,OAAO,CAAC,KAAK,CAAC,yBAAyB,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;IACrE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC;AAEH,WAAW,EAAE,CAAC"}
1
+ {"version":3,"file":"http-server.js","sourceRoot":"","sources":["../src/http-server.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -1,62 +1,25 @@
1
1
  #!/usr/bin/env node
2
2
  import 'dotenv/config';
3
- import { FastMCP } from 'fastmcp';
4
- import packageJson from '../package.json' with { type: 'json' };
5
- import { registerTools } from './tools/index.js';
6
- import { sanitizeDomain } from './utils/domains.js';
7
- import { ApiService } from './services/apiService.js';
3
+ import { FlowMcpServer } from './server.js';
8
4
  import { logger } from './services/loggerService.js';
9
- class FlowMcpServer {
10
- options;
11
- server;
12
- domain;
13
- environment;
14
- apiKey;
15
- apiService;
16
- constructor() {
17
- this.options = {
18
- name: 'accessFlow MCP Server',
19
- version: packageJson.version,
20
- };
21
- this.server = new FastMCP(this.options);
22
- this.domain = sanitizeDomain(process.env.DOMAIN || '');
23
- this.environment =
24
- process.env.ENVIRONMENT || 'https://accessflow.accessibe.com'; // Default to production environment
25
- this.apiKey = process.env.API_KEY || '';
26
- const nonProdUserName = process.env.NON_PROD_USER_NAME;
27
- const nonProdPassword = process.env.NON_PROD_PASSWORD;
28
- this.apiService = new ApiService(this.environment, this.domain, this.apiKey, nonProdUserName, nonProdPassword);
29
- }
30
- async init() {
31
- logger.info('Initializing Flow MCP Server...');
32
- registerTools(this.server, this.apiService);
33
- // Start the FastMCP server
34
- await this.server.start({
35
- transportType: 'stdio',
36
- });
37
- logger.info({
38
- domain: this.domain,
39
- environment: this.environment,
40
- }, 'Flow MCP Server started successfully');
41
- return this;
42
- }
43
- async stop() {
44
- if (this.server)
45
- await this.server.stop();
46
- }
47
- }
48
5
  async function startServer() {
49
- const server = new FlowMcpServer();
6
+ const transportConfig = { type: 'stdio' };
7
+ const server = new FlowMcpServer(transportConfig);
50
8
  // Handle graceful shutdown
51
9
  process.on('SIGINT', async () => {
10
+ logger.info('Received SIGINT, shutting down gracefully...');
52
11
  await server.stop();
12
+ logger.info('Server stopped successfully');
53
13
  process.exit(0);
54
14
  });
55
15
  process.on('SIGTERM', async () => {
16
+ logger.info('Received SIGTERM, shutting down gracefully...');
56
17
  await server.stop();
18
+ logger.info('Server stopped successfully');
57
19
  process.exit(0);
58
20
  });
59
21
  try {
22
+ // Start server with stdio transport (default for MCP clients)
60
23
  await server.init();
61
24
  }
62
25
  catch (error) {
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,eAAe,CAAC;AACvB,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,MAAM,EAAE,MAAM,6BAA6B,CAAC;AAErD,KAAK,UAAU,WAAW;IACxB,MAAM,eAAe,GAAG,EAAE,IAAI,EAAE,OAAgB,EAAE,CAAC;IACnD,MAAM,MAAM,GAAG,IAAI,aAAa,CAAC,eAAe,CAAC,CAAC;IAElD,2BAA2B;IAC3B,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE;QAC9B,MAAM,CAAC,IAAI,CAAC,8CAA8C,CAAC,CAAC;QAC5D,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;QACpB,MAAM,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;QAC3C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,KAAK,IAAI,EAAE;QAC/B,MAAM,CAAC,IAAI,CAAC,+CAA+C,CAAC,CAAC;QAC7D,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;QACpB,MAAM,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;QAC3C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC;QACH,8DAA8D;QAC9D,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;IACtB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,KAAK,CACV;YACE,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe;YAC/D,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS;SACxD,EACD,iCAAiC,CAClC,CAAC;QAEF,0DAA0D;QAC1D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,WAAW,EAAE,CAAC"}
package/dist/server.d.ts CHANGED
@@ -4,21 +4,25 @@ export type TransportConfig = {
4
4
  } | {
5
5
  type: 'httpStream';
6
6
  port: number;
7
+ host?: string;
7
8
  stateless?: boolean;
8
9
  };
9
10
  export interface SessionData {
10
11
  apiKey: string;
11
12
  domain: string;
12
13
  environment?: string;
14
+ nonProdUsername?: string;
15
+ nonProdPassword?: string;
13
16
  [key: string]: unknown;
14
17
  }
15
18
  export declare class FlowMcpServer {
16
19
  private readonly options;
17
20
  private readonly server;
18
21
  private readonly environment;
22
+ private readonly transportConfig;
19
23
  private stdioApiService?;
20
24
  constructor(transportConfig: TransportConfig);
21
- init(transportConfig: TransportConfig): Promise<this>;
25
+ init(): Promise<this>;
22
26
  stop(): Promise<void>;
23
27
  }
24
28
  //# sourceMappingURL=server.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,eAAe,CAAC;AAQvB,MAAM,MAAM,eAAe,GACvB;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,GACjB;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC;AAE9D,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA6B;IACrD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAU;IACjC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IAGrC,OAAO,CAAC,eAAe,CAAC,CAAa;gBAEzB,eAAe,EAAE,eAAe;IA2GtC,IAAI,CAAC,eAAe,EAAE,eAAe;IAwErC,IAAI;CAGX"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,eAAe,CAAC;AAQvB,MAAM,MAAM,eAAe,GACvB;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,GACjB;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC;AAE7E,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA6B;IACrD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAU;IACjC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IACrC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAkB;IAGlD,OAAO,CAAC,eAAe,CAAC,CAAa;gBAEzB,eAAe,EAAE,eAAe;IAoItC,IAAI;IAqFJ,IAAI;CAGX"}
package/dist/server.js CHANGED
@@ -9,9 +9,11 @@ export class FlowMcpServer {
9
9
  options;
10
10
  server;
11
11
  environment;
12
+ transportConfig;
12
13
  // For stdio mode only
13
14
  stdioApiService;
14
15
  constructor(transportConfig) {
16
+ this.transportConfig = transportConfig;
15
17
  this.environment =
16
18
  process.env.ENVIRONMENT || 'https://accessflow.accessibe.com';
17
19
  const nonProdUserName = process.env.NON_PROD_USER_NAME;
@@ -53,6 +55,15 @@ export class FlowMcpServer {
53
55
  // Extract optional X-Environment header (defaults to production)
54
56
  const environmentHeader = getHeader('x-environment');
55
57
  const environment = environmentHeader || 'https://accessflow.accessibe.com';
58
+ // Extract optional non-prod basic auth credentials (for staging environments)
59
+ const nonProdUsername = getHeader('x-nonprod-username');
60
+ const nonProdPassword = getHeader('x-nonprod-password');
61
+ if (nonProdUsername && nonProdPassword) {
62
+ logger.debug({
63
+ domain,
64
+ hasNonProdCreds: true,
65
+ }, 'Using non-prod credentials for API calls');
66
+ }
56
67
  if (!apiKey || !domain) {
57
68
  logger.warn({
58
69
  hasAuthHeader: !!authHeader,
@@ -69,11 +80,19 @@ export class FlowMcpServer {
69
80
  environment,
70
81
  apiKeyPrefix: apiKey.substring(0, 10) + '...',
71
82
  }, 'HTTP request authenticated');
72
- return {
83
+ const sessionData = {
73
84
  apiKey,
74
85
  domain,
75
86
  environment,
76
87
  };
88
+ // Only include nonProd credentials if they are defined
89
+ if (nonProdUsername !== undefined) {
90
+ sessionData.nonProdUsername = nonProdUsername;
91
+ }
92
+ if (nonProdPassword !== undefined) {
93
+ sessionData.nonProdPassword = nonProdPassword;
94
+ }
95
+ return sessionData;
77
96
  },
78
97
  };
79
98
  }
@@ -89,13 +108,14 @@ export class FlowMcpServer {
89
108
  }
90
109
  this.server = new FastMCP(this.options);
91
110
  }
92
- async init(transportConfig) {
93
- const transportType = transportConfig.type === 'stdio' ? 'stdio' : 'HTTP';
94
- logger.info(`Initializing Flow MCP Server (${transportType} mode)...`);
111
+ async init() {
112
+ const transportType = this.transportConfig.type;
113
+ const transportMode = transportType === 'stdio' ? 'stdio' : 'HTTP';
114
+ logger.info(`Initializing Flow MCP Server (${transportMode} mode)...`);
95
115
  const nonProdUserName = process.env.NON_PROD_USER_NAME;
96
116
  const nonProdPassword = process.env.NON_PROD_PASSWORD;
97
117
  // Register tools with appropriate configuration
98
- if (transportConfig.type === 'stdio') {
118
+ if (transportType === 'stdio') {
99
119
  // stdio mode: Use pre-created ApiService
100
120
  if (!this.stdioApiService) {
101
121
  throw new Error('ApiService not initialized for stdio mode');
@@ -112,22 +132,28 @@ export class FlowMcpServer {
112
132
  createApiService: (session) => {
113
133
  // Use environment from session (X-Environment header) or fall back to default
114
134
  const environment = session.environment || 'https://accessflow.accessibe.com';
115
- return new ApiService(environment, session.domain, session.apiKey, nonProdUserName, nonProdPassword);
135
+ // Use credentials from session headers, or fall back to environment variables
136
+ const username = session.nonProdUsername || nonProdUserName;
137
+ const password = session.nonProdPassword || nonProdPassword;
138
+ return new ApiService(environment, session.domain, session.apiKey, username, password);
116
139
  },
117
140
  });
118
141
  }
119
142
  // Start the FastMCP server with the specified transport
120
- if (transportConfig.type === 'stdio') {
143
+ if (transportType === 'stdio') {
121
144
  await this.server.start({
122
145
  transportType: 'stdio',
123
146
  });
124
147
  }
125
148
  else {
126
149
  const httpStreamConfig = {
127
- port: transportConfig.port,
150
+ port: this.transportConfig.port,
151
+ ...(this.transportConfig.host !== undefined && {
152
+ host: this.transportConfig.host,
153
+ }),
128
154
  };
129
- if (transportConfig.stateless !== undefined) {
130
- httpStreamConfig.stateless = transportConfig.stateless;
155
+ if (this.transportConfig.stateless !== undefined) {
156
+ httpStreamConfig.stateless = this.transportConfig.stateless;
131
157
  }
132
158
  await this.server.start({
133
159
  transportType: 'httpStream',
@@ -136,11 +162,11 @@ export class FlowMcpServer {
136
162
  }
137
163
  logger.info({
138
164
  environment: this.environment,
139
- transport: transportType,
140
- ...(transportConfig.type === 'httpStream' && {
141
- port: transportConfig.port,
165
+ transport: transportMode,
166
+ ...(transportType === 'httpStream' && {
167
+ port: this.transportConfig.port,
142
168
  }),
143
- ...(transportConfig.type === 'stdio' &&
169
+ ...(transportType === 'stdio' &&
144
170
  this.stdioApiService && {
145
171
  domain: this.stdioApiService.domain,
146
172
  }),
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}