@dxheroes/local-mcp-backend 0.3.2 → 0.4.0

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.
@@ -1,9 +1,9 @@
1
1
 
2
- > @dxheroes/local-mcp-backend@0.3.2 build /home/runner/work/local-mcp-gateway/local-mcp-gateway/apps/backend
2
+ > @dxheroes/local-mcp-backend@0.4.0 build /home/runner/work/local-mcp-gateway/local-mcp-gateway/apps/backend
3
3
  > nest build
4
4
 
5
5
  -  TSC  Initializing type checker...
6
6
  ✔  TSC  Initializing type checker...
7
7
  >  TSC  Found 0 issues.
8
8
  >  SWC  Running...
9
- Successfully compiled: 32 files with swc (73.65ms)
9
+ Successfully compiled: 32 files with swc (72.5ms)
package/CHANGELOG.md CHANGED
@@ -1,5 +1,23 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.4.0](https://github.com/DXHeroes/local-mcp-gateway/compare/backend-v0.3.2...backend-v0.4.0) (2026-01-14)
4
+
5
+
6
+ ### Features
7
+
8
+ * add logging configuration and NGINX settings ([2efd142](https://github.com/DXHeroes/local-mcp-gateway/commit/2efd1427135948ccb62daecee29547a6e8982490))
9
+
10
+
11
+ ### Dependencies
12
+
13
+ * The following workspace dependencies were updated
14
+ * dependencies
15
+ * @dxheroes/local-mcp-core bumped to 0.3.3
16
+ * @dxheroes/local-mcp-database bumped to 0.3.3
17
+ * @dxheroes/mcp-gemini-deep-research bumped to 0.3.3
18
+ * devDependencies
19
+ * @dxheroes/local-mcp-config bumped to 0.3.3
20
+
3
21
  ## [0.3.2](https://github.com/DXHeroes/local-mcp-gateway/compare/backend-v0.3.1...backend-v0.3.2) (2026-01-13)
4
22
 
5
23
 
package/dist/main.js CHANGED
@@ -12,15 +12,30 @@ import { AppModule } from "./app.module.js";
12
12
  import { AllExceptionsFilter } from "./common/filters/all-exceptions.filter.js";
13
13
  import { LoggingInterceptor } from "./common/interceptors/logging.interceptor.js";
14
14
  async function bootstrap() {
15
+ // Determine log levels from environment
16
+ const logLevel = process.env.LOG_LEVEL || 'log';
17
+ const logLevels = [
18
+ 'error'
19
+ ];
20
+ if ([
21
+ 'warn',
22
+ 'log',
23
+ 'debug',
24
+ 'verbose'
25
+ ].includes(logLevel)) logLevels.push('warn');
26
+ if ([
27
+ 'log',
28
+ 'debug',
29
+ 'verbose'
30
+ ].includes(logLevel)) logLevels.push('log');
31
+ if ([
32
+ 'debug',
33
+ 'verbose'
34
+ ].includes(logLevel)) logLevels.push('debug');
35
+ if (logLevel === 'verbose') logLevels.push('verbose');
15
36
  const logger = new Logger('Bootstrap');
16
37
  const app = await NestFactory.create(AppModule, {
17
- logger: [
18
- 'error',
19
- 'warn',
20
- 'log',
21
- 'debug',
22
- 'verbose'
23
- ]
38
+ logger: logLevels
24
39
  });
25
40
  const configService = app.get(ConfigService);
26
41
  // Security
package/dist/main.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/main.ts"],"sourcesContent":["/**\n * NestJS Application Bootstrap\n *\n * Entry point for the Local MCP Gateway backend.\n * No authentication required - immediate access to all features.\n */\n\nimport { Logger, ValidationPipe } from '@nestjs/common';\nimport { ConfigService } from '@nestjs/config';\nimport { NestFactory } from '@nestjs/core';\nimport compression from 'compression';\nimport helmet from 'helmet';\nimport { AppModule } from './app.module.js';\nimport { AllExceptionsFilter } from './common/filters/all-exceptions.filter.js';\nimport { LoggingInterceptor } from './common/interceptors/logging.interceptor.js';\n\nasync function bootstrap() {\n const logger = new Logger('Bootstrap');\n const app = await NestFactory.create(AppModule, {\n logger: ['error', 'warn', 'log', 'debug', 'verbose'],\n });\n\n const configService = app.get(ConfigService);\n\n // Security\n app.use(helmet());\n app.use(compression());\n\n // CORS\n const corsOrigins = configService.get<string>('CORS_ORIGINS')?.split(',') || [\n 'http://localhost:5173',\n 'http://localhost:3000',\n ];\n app.enableCors({\n origin: corsOrigins,\n credentials: true,\n methods: ['GET', 'POST', 'PUT', 'DELETE', 'PATCH', 'OPTIONS'],\n });\n\n // Global prefix\n app.setGlobalPrefix('api');\n\n // Global pipes\n app.useGlobalPipes(\n new ValidationPipe({\n whitelist: true,\n forbidNonWhitelisted: true,\n transform: true,\n transformOptions: { enableImplicitConversion: true },\n })\n );\n\n // Global filters\n app.useGlobalFilters(new AllExceptionsFilter());\n\n // Global interceptors\n app.useGlobalInterceptors(new LoggingInterceptor());\n\n const port = configService.get<number>('PORT') || 3001;\n await app.listen(port);\n\n logger.log(`Application is running on: http://localhost:${port}`);\n logger.log(`API available at: http://localhost:${port}/api`);\n}\n\nbootstrap();\n"],"names":["Logger","ValidationPipe","ConfigService","NestFactory","compression","helmet","AppModule","AllExceptionsFilter","LoggingInterceptor","bootstrap","logger","app","create","configService","get","use","corsOrigins","split","enableCors","origin","credentials","methods","setGlobalPrefix","useGlobalPipes","whitelist","forbidNonWhitelisted","transform","transformOptions","enableImplicitConversion","useGlobalFilters","useGlobalInterceptors","port","listen","log"],"mappings":"AAAA;;;;;CAKC,GAED,SAASA,MAAM,EAAEC,cAAc,QAAQ,iBAAiB;AACxD,SAASC,aAAa,QAAQ,iBAAiB;AAC/C,SAASC,WAAW,QAAQ,eAAe;AAC3C,OAAOC,iBAAiB,cAAc;AACtC,OAAOC,YAAY,SAAS;AAC5B,SAASC,SAAS,QAAQ,kBAAkB;AAC5C,SAASC,mBAAmB,QAAQ,4CAA4C;AAChF,SAASC,kBAAkB,QAAQ,+CAA+C;AAElF,eAAeC;IACb,MAAMC,SAAS,IAAIV,OAAO;IAC1B,MAAMW,MAAM,MAAMR,YAAYS,MAAM,CAACN,WAAW;QAC9CI,QAAQ;YAAC;YAAS;YAAQ;YAAO;YAAS;SAAU;IACtD;IAEA,MAAMG,gBAAgBF,IAAIG,GAAG,CAACZ;IAE9B,WAAW;IACXS,IAAII,GAAG,CAACV;IACRM,IAAII,GAAG,CAACX;IAER,OAAO;IACP,MAAMY,cAAcH,cAAcC,GAAG,CAAS,iBAAiBG,MAAM,QAAQ;QAC3E;QACA;KACD;IACDN,IAAIO,UAAU,CAAC;QACbC,QAAQH;QACRI,aAAa;QACbC,SAAS;YAAC;YAAO;YAAQ;YAAO;YAAU;YAAS;SAAU;IAC/D;IAEA,gBAAgB;IAChBV,IAAIW,eAAe,CAAC;IAEpB,eAAe;IACfX,IAAIY,cAAc,CAChB,IAAItB,eAAe;QACjBuB,WAAW;QACXC,sBAAsB;QACtBC,WAAW;QACXC,kBAAkB;YAAEC,0BAA0B;QAAK;IACrD;IAGF,iBAAiB;IACjBjB,IAAIkB,gBAAgB,CAAC,IAAItB;IAEzB,sBAAsB;IACtBI,IAAImB,qBAAqB,CAAC,IAAItB;IAE9B,MAAMuB,OAAOlB,cAAcC,GAAG,CAAS,WAAW;IAClD,MAAMH,IAAIqB,MAAM,CAACD;IAEjBrB,OAAOuB,GAAG,CAAC,CAAC,4CAA4C,EAAEF,MAAM;IAChErB,OAAOuB,GAAG,CAAC,CAAC,mCAAmC,EAAEF,KAAK,IAAI,CAAC;AAC7D;AAEAtB"}
1
+ {"version":3,"sources":["../src/main.ts"],"sourcesContent":["/**\n * NestJS Application Bootstrap\n *\n * Entry point for the Local MCP Gateway backend.\n * No authentication required - immediate access to all features.\n */\n\nimport { Logger, ValidationPipe } from '@nestjs/common';\nimport { ConfigService } from '@nestjs/config';\nimport { NestFactory } from '@nestjs/core';\nimport compression from 'compression';\nimport helmet from 'helmet';\nimport { AppModule } from './app.module.js';\nimport { AllExceptionsFilter } from './common/filters/all-exceptions.filter.js';\nimport { LoggingInterceptor } from './common/interceptors/logging.interceptor.js';\n\nasync function bootstrap() {\n // Determine log levels from environment\n const logLevel = process.env.LOG_LEVEL || 'log';\n const logLevels: ('error' | 'warn' | 'log' | 'debug' | 'verbose')[] = ['error'];\n if (['warn', 'log', 'debug', 'verbose'].includes(logLevel)) logLevels.push('warn');\n if (['log', 'debug', 'verbose'].includes(logLevel)) logLevels.push('log');\n if (['debug', 'verbose'].includes(logLevel)) logLevels.push('debug');\n if (logLevel === 'verbose') logLevels.push('verbose');\n\n const logger = new Logger('Bootstrap');\n const app = await NestFactory.create(AppModule, {\n logger: logLevels,\n });\n\n const configService = app.get(ConfigService);\n\n // Security\n app.use(helmet());\n app.use(compression());\n\n // CORS\n const corsOrigins = configService.get<string>('CORS_ORIGINS')?.split(',') || [\n 'http://localhost:5173',\n 'http://localhost:3000',\n ];\n app.enableCors({\n origin: corsOrigins,\n credentials: true,\n methods: ['GET', 'POST', 'PUT', 'DELETE', 'PATCH', 'OPTIONS'],\n });\n\n // Global prefix\n app.setGlobalPrefix('api');\n\n // Global pipes\n app.useGlobalPipes(\n new ValidationPipe({\n whitelist: true,\n forbidNonWhitelisted: true,\n transform: true,\n transformOptions: { enableImplicitConversion: true },\n })\n );\n\n // Global filters\n app.useGlobalFilters(new AllExceptionsFilter());\n\n // Global interceptors\n app.useGlobalInterceptors(new LoggingInterceptor());\n\n const port = configService.get<number>('PORT') || 3001;\n await app.listen(port);\n\n logger.log(`Application is running on: http://localhost:${port}`);\n logger.log(`API available at: http://localhost:${port}/api`);\n}\n\nbootstrap();\n"],"names":["Logger","ValidationPipe","ConfigService","NestFactory","compression","helmet","AppModule","AllExceptionsFilter","LoggingInterceptor","bootstrap","logLevel","process","env","LOG_LEVEL","logLevels","includes","push","logger","app","create","configService","get","use","corsOrigins","split","enableCors","origin","credentials","methods","setGlobalPrefix","useGlobalPipes","whitelist","forbidNonWhitelisted","transform","transformOptions","enableImplicitConversion","useGlobalFilters","useGlobalInterceptors","port","listen","log"],"mappings":"AAAA;;;;;CAKC,GAED,SAASA,MAAM,EAAEC,cAAc,QAAQ,iBAAiB;AACxD,SAASC,aAAa,QAAQ,iBAAiB;AAC/C,SAASC,WAAW,QAAQ,eAAe;AAC3C,OAAOC,iBAAiB,cAAc;AACtC,OAAOC,YAAY,SAAS;AAC5B,SAASC,SAAS,QAAQ,kBAAkB;AAC5C,SAASC,mBAAmB,QAAQ,4CAA4C;AAChF,SAASC,kBAAkB,QAAQ,+CAA+C;AAElF,eAAeC;IACb,wCAAwC;IACxC,MAAMC,WAAWC,QAAQC,GAAG,CAACC,SAAS,IAAI;IAC1C,MAAMC,YAAgE;QAAC;KAAQ;IAC/E,IAAI;QAAC;QAAQ;QAAO;QAAS;KAAU,CAACC,QAAQ,CAACL,WAAWI,UAAUE,IAAI,CAAC;IAC3E,IAAI;QAAC;QAAO;QAAS;KAAU,CAACD,QAAQ,CAACL,WAAWI,UAAUE,IAAI,CAAC;IACnE,IAAI;QAAC;QAAS;KAAU,CAACD,QAAQ,CAACL,WAAWI,UAAUE,IAAI,CAAC;IAC5D,IAAIN,aAAa,WAAWI,UAAUE,IAAI,CAAC;IAE3C,MAAMC,SAAS,IAAIjB,OAAO;IAC1B,MAAMkB,MAAM,MAAMf,YAAYgB,MAAM,CAACb,WAAW;QAC9CW,QAAQH;IACV;IAEA,MAAMM,gBAAgBF,IAAIG,GAAG,CAACnB;IAE9B,WAAW;IACXgB,IAAII,GAAG,CAACjB;IACRa,IAAII,GAAG,CAAClB;IAER,OAAO;IACP,MAAMmB,cAAcH,cAAcC,GAAG,CAAS,iBAAiBG,MAAM,QAAQ;QAC3E;QACA;KACD;IACDN,IAAIO,UAAU,CAAC;QACbC,QAAQH;QACRI,aAAa;QACbC,SAAS;YAAC;YAAO;YAAQ;YAAO;YAAU;YAAS;SAAU;IAC/D;IAEA,gBAAgB;IAChBV,IAAIW,eAAe,CAAC;IAEpB,eAAe;IACfX,IAAIY,cAAc,CAChB,IAAI7B,eAAe;QACjB8B,WAAW;QACXC,sBAAsB;QACtBC,WAAW;QACXC,kBAAkB;YAAEC,0BAA0B;QAAK;IACrD;IAGF,iBAAiB;IACjBjB,IAAIkB,gBAAgB,CAAC,IAAI7B;IAEzB,sBAAsB;IACtBW,IAAImB,qBAAqB,CAAC,IAAI7B;IAE9B,MAAM8B,OAAOlB,cAAcC,GAAG,CAAS,WAAW;IAClD,MAAMH,IAAIqB,MAAM,CAACD;IAEjBrB,OAAOuB,GAAG,CAAC,CAAC,4CAA4C,EAAEF,MAAM;IAChErB,OAAOuB,GAAG,CAAC,CAAC,mCAAmC,EAAEF,KAAK,IAAI,CAAC;AAC7D;AAEA7B"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dxheroes/local-mcp-backend",
3
- "version": "0.3.2",
3
+ "version": "0.4.0",
4
4
  "description": "NestJS API server providing MCP proxy, server aggregation, OAuth 2.1, and profile management",
5
5
  "license": "Elastic-2.0",
6
6
  "type": "module",
@@ -19,9 +19,9 @@
19
19
  "reflect-metadata": "^0.2.2",
20
20
  "rxjs": "^7.8.2",
21
21
  "zod": "^4.3.5",
22
- "@dxheroes/local-mcp-database": "0.3.2",
23
- "@dxheroes/mcp-gemini-deep-research": "0.3.2",
24
- "@dxheroes/local-mcp-core": "0.3.2"
22
+ "@dxheroes/local-mcp-core": "0.3.3",
23
+ "@dxheroes/mcp-gemini-deep-research": "0.3.3",
24
+ "@dxheroes/local-mcp-database": "0.3.3"
25
25
  },
26
26
  "devDependencies": {
27
27
  "@nestjs/cli": "^11.0.14",
@@ -34,7 +34,7 @@
34
34
  "@types/node": "^25.0.6",
35
35
  "typescript": "^5.9.3",
36
36
  "vitest": "^4.0.17",
37
- "@dxheroes/local-mcp-config": "0.3.2"
37
+ "@dxheroes/local-mcp-config": "0.3.3"
38
38
  },
39
39
  "scripts": {
40
40
  "build": "nest build",
package/src/main.ts CHANGED
@@ -15,9 +15,17 @@ import { AllExceptionsFilter } from './common/filters/all-exceptions.filter.js';
15
15
  import { LoggingInterceptor } from './common/interceptors/logging.interceptor.js';
16
16
 
17
17
  async function bootstrap() {
18
+ // Determine log levels from environment
19
+ const logLevel = process.env.LOG_LEVEL || 'log';
20
+ const logLevels: ('error' | 'warn' | 'log' | 'debug' | 'verbose')[] = ['error'];
21
+ if (['warn', 'log', 'debug', 'verbose'].includes(logLevel)) logLevels.push('warn');
22
+ if (['log', 'debug', 'verbose'].includes(logLevel)) logLevels.push('log');
23
+ if (['debug', 'verbose'].includes(logLevel)) logLevels.push('debug');
24
+ if (logLevel === 'verbose') logLevels.push('verbose');
25
+
18
26
  const logger = new Logger('Bootstrap');
19
27
  const app = await NestFactory.create(AppModule, {
20
- logger: ['error', 'warn', 'log', 'debug', 'verbose'],
28
+ logger: logLevels,
21
29
  });
22
30
 
23
31
  const configService = app.get(ConfigService);