@servicelabsco/slabs-access-manager 1.0.38 → 1.0.39

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.
@@ -3,7 +3,7 @@ import { McpRequestHandler } from './mcp.request.handler';
3
3
  export declare class AdminMcpController {
4
4
  private readonly handler;
5
5
  constructor(handler: McpRequestHandler);
6
- post(req: Request, res: Response): Promise<void>;
7
- get(req: Request, res: Response): Promise<void>;
6
+ post(req: Request, res: Response): void | Promise<void>;
7
+ get(req: Request, res: Response): void | Promise<void>;
8
8
  private dispatch;
9
9
  }
@@ -17,6 +17,7 @@ const common_1 = require("@nestjs/common");
17
17
  const development_key_auth_1 = require("../client/development.key.auth");
18
18
  const admin_tool_registry_1 = require("../admin/tools/admin.tool.registry");
19
19
  const mcp_request_handler_1 = require("./mcp.request.handler");
20
+ const unauthorized_mcp_response_1 = require("./unauthorized.mcp.response");
20
21
  let AdminMcpController = class AdminMcpController {
21
22
  constructor(handler) {
22
23
  this.handler = handler;
@@ -28,7 +29,11 @@ let AdminMcpController = class AdminMcpController {
28
29
  return this.dispatch(req, res);
29
30
  }
30
31
  dispatch(req, res) {
31
- const auth = new development_key_auth_1.DevelopmentKeyAuth(String(req.headers['x-development-key'] ?? ''));
32
+ const key = String(req.headers['x-development-key'] ?? '');
33
+ if (!key) {
34
+ return (0, unauthorized_mcp_response_1.unauthorizedMcpResponse)(res, 'Missing x-development-key header.');
35
+ }
36
+ const auth = new development_key_auth_1.DevelopmentKeyAuth(key);
32
37
  return this.handler.handle(req, res, {
33
38
  name: 'slabs-access-manager-admin',
34
39
  auth,
@@ -1 +1 @@
1
- {"version":3,"file":"admin.mcp.controller.js","sourceRoot":"","sources":["../../../src/mcp/http/admin.mcp.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAAiE;AAEjE,yEAAoE;AAEpE,4EAAuE;AACvE,+DAA0D;AAQnD,IAAM,kBAAkB,GAAxB,MAAM,kBAAkB;IAC3B,YAA6B,OAA0B;QAA1B,YAAO,GAAP,OAAO,CAAmB;IAAG,CAAC;IAG3D,IAAI,CAAQ,GAAY,EAAS,GAAa;QAC1C,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACnC,CAAC;IAGD,GAAG,CAAQ,GAAY,EAAS,GAAa;QACzC,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACnC,CAAC;IAEO,QAAQ,CAAC,GAAY,EAAE,GAAa;QACxC,MAAM,IAAI,GAAG,IAAI,yCAAkB,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,mBAAmB,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QAEpF,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE;YACjC,IAAI,EAAE,4BAA4B;YAClC,IAAI;YACJ,KAAK,EAAE,CAAC,MAAsB,EAAE,EAAE,CAAC,IAAI,uCAAiB,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE;SAC3E,CAAC,CAAC;IACP,CAAC;CACJ,CAAA;AAtBY,gDAAkB;AAI3B;IADC,IAAA,aAAI,GAAE;IACD,WAAA,IAAA,YAAG,GAAE,CAAA;IAAgB,WAAA,IAAA,YAAG,GAAE,CAAA;;;;8CAE/B;AAGD;IADC,IAAA,YAAG,GAAE;IACD,WAAA,IAAA,YAAG,GAAE,CAAA;IAAgB,WAAA,IAAA,YAAG,GAAE,CAAA;;;;6CAE9B;6BAXQ,kBAAkB;IAD9B,IAAA,mBAAU,EAAC,WAAW,CAAC;qCAEkB,uCAAiB;GAD9C,kBAAkB,CAsB9B"}
1
+ {"version":3,"file":"admin.mcp.controller.js","sourceRoot":"","sources":["../../../src/mcp/http/admin.mcp.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAAiE;AAEjE,yEAAoE;AAEpE,4EAAuE;AACvE,+DAA0D;AAC1D,2EAAsE;AAQ/D,IAAM,kBAAkB,GAAxB,MAAM,kBAAkB;IAC3B,YAA6B,OAA0B;QAA1B,YAAO,GAAP,OAAO,CAAmB;IAAG,CAAC;IAG3D,IAAI,CAAQ,GAAY,EAAS,GAAa;QAC1C,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACnC,CAAC;IAGD,GAAG,CAAQ,GAAY,EAAS,GAAa;QACzC,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACnC,CAAC;IAEO,QAAQ,CAAC,GAAY,EAAE,GAAa;QACxC,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,mBAAmB,CAAC,IAAI,EAAE,CAAC,CAAC;QAE3D,IAAI,CAAC,GAAG,EAAE,CAAC;YACP,OAAO,IAAA,mDAAuB,EAAC,GAAG,EAAE,mCAAmC,CAAC,CAAC;QAC7E,CAAC;QAED,MAAM,IAAI,GAAG,IAAI,yCAAkB,CAAC,GAAG,CAAC,CAAC;QAEzC,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE;YACjC,IAAI,EAAE,4BAA4B;YAClC,IAAI;YACJ,KAAK,EAAE,CAAC,MAAsB,EAAE,EAAE,CAAC,IAAI,uCAAiB,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE;SAC3E,CAAC,CAAC;IACP,CAAC;CACJ,CAAA;AA5BY,gDAAkB;AAI3B;IADC,IAAA,aAAI,GAAE;IACD,WAAA,IAAA,YAAG,GAAE,CAAA;IAAgB,WAAA,IAAA,YAAG,GAAE,CAAA;;;;8CAE/B;AAGD;IADC,IAAA,YAAG,GAAE;IACD,WAAA,IAAA,YAAG,GAAE,CAAA;IAAgB,WAAA,IAAA,YAAG,GAAE,CAAA;;;;6CAE9B;6BAXQ,kBAAkB;IAD9B,IAAA,mBAAU,EAAC,WAAW,CAAC;qCAEkB,uCAAiB;GAD9C,kBAAkB,CA4B9B"}
@@ -3,7 +3,7 @@ import { McpRequestHandler } from './mcp.request.handler';
3
3
  export declare class BusinessMcpController {
4
4
  private readonly handler;
5
5
  constructor(handler: McpRequestHandler);
6
- post(req: Request, res: Response): Promise<void>;
7
- get(req: Request, res: Response): Promise<void>;
6
+ post(req: Request, res: Response): void | Promise<void>;
7
+ get(req: Request, res: Response): void | Promise<void>;
8
8
  private dispatch;
9
9
  }
@@ -17,6 +17,7 @@ const common_1 = require("@nestjs/common");
17
17
  const client_credential_auth_1 = require("../client/client.credential.auth");
18
18
  const tool_registry_1 = require("../tools/tool.registry");
19
19
  const mcp_request_handler_1 = require("./mcp.request.handler");
20
+ const unauthorized_mcp_response_1 = require("./unauthorized.mcp.response");
20
21
  let BusinessMcpController = class BusinessMcpController {
21
22
  constructor(handler) {
22
23
  this.handler = handler;
@@ -28,7 +29,12 @@ let BusinessMcpController = class BusinessMcpController {
28
29
  return this.dispatch(req, res);
29
30
  }
30
31
  dispatch(req, res) {
31
- const auth = new client_credential_auth_1.ClientCredentialAuth(String(req.headers['x-client-id'] ?? ''), String(req.headers['x-client-secret'] ?? ''));
32
+ const clientId = String(req.headers['x-client-id'] ?? '');
33
+ const clientSecret = String(req.headers['x-client-secret'] ?? '');
34
+ if (!clientId || !clientSecret) {
35
+ return (0, unauthorized_mcp_response_1.unauthorizedMcpResponse)(res, 'Missing x-client-id / x-client-secret headers.');
36
+ }
37
+ const auth = new client_credential_auth_1.ClientCredentialAuth(clientId, clientSecret);
32
38
  return this.handler.handle(req, res, {
33
39
  name: 'slabs-access-manager',
34
40
  auth,
@@ -1 +1 @@
1
- {"version":3,"file":"business.mcp.controller.js","sourceRoot":"","sources":["../../../src/mcp/http/business.mcp.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAAiE;AAEjE,6EAAwE;AAExE,0DAAsD;AACtD,+DAA0D;AAQnD,IAAM,qBAAqB,GAA3B,MAAM,qBAAqB;IAC9B,YAA6B,OAA0B;QAA1B,YAAO,GAAP,OAAO,CAAmB;IAAG,CAAC;IAG3D,IAAI,CAAQ,GAAY,EAAS,GAAa;QAC1C,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACnC,CAAC;IAGD,GAAG,CAAQ,GAAY,EAAS,GAAa;QACzC,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACnC,CAAC;IAEO,QAAQ,CAAC,GAAY,EAAE,GAAa;QACxC,MAAM,IAAI,GAAG,IAAI,6CAAoB,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QAE9H,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE;YACjC,IAAI,EAAE,sBAAsB;YAC5B,IAAI;YACJ,KAAK,EAAE,CAAC,MAAsB,EAAE,EAAE,CAAC,IAAI,4BAAY,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE;SACtE,CAAC,CAAC;IACP,CAAC;CACJ,CAAA;AAtBY,sDAAqB;AAI9B;IADC,IAAA,aAAI,GAAE;IACD,WAAA,IAAA,YAAG,GAAE,CAAA;IAAgB,WAAA,IAAA,YAAG,GAAE,CAAA;;;;iDAE/B;AAGD;IADC,IAAA,YAAG,GAAE;IACD,WAAA,IAAA,YAAG,GAAE,CAAA;IAAgB,WAAA,IAAA,YAAG,GAAE,CAAA;;;;gDAE9B;gCAXQ,qBAAqB;IADjC,IAAA,mBAAU,EAAC,KAAK,CAAC;qCAEwB,uCAAiB;GAD9C,qBAAqB,CAsBjC"}
1
+ {"version":3,"file":"business.mcp.controller.js","sourceRoot":"","sources":["../../../src/mcp/http/business.mcp.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAAiE;AAEjE,6EAAwE;AAExE,0DAAsD;AACtD,+DAA0D;AAC1D,2EAAsE;AAQ/D,IAAM,qBAAqB,GAA3B,MAAM,qBAAqB;IAC9B,YAA6B,OAA0B;QAA1B,YAAO,GAAP,OAAO,CAAmB;IAAG,CAAC;IAG3D,IAAI,CAAQ,GAAY,EAAS,GAAa;QAC1C,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACnC,CAAC;IAGD,GAAG,CAAQ,GAAY,EAAS,GAAa;QACzC,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACnC,CAAC;IAEO,QAAQ,CAAC,GAAY,EAAE,GAAa;QACxC,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC,CAAC;QAC1D,MAAM,YAAY,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC,CAAC;QAElE,IAAI,CAAC,QAAQ,IAAI,CAAC,YAAY,EAAE,CAAC;YAC7B,OAAO,IAAA,mDAAuB,EAAC,GAAG,EAAE,gDAAgD,CAAC,CAAC;QAC1F,CAAC;QAED,MAAM,IAAI,GAAG,IAAI,6CAAoB,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;QAE9D,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE;YACjC,IAAI,EAAE,sBAAsB;YAC5B,IAAI;YACJ,KAAK,EAAE,CAAC,MAAsB,EAAE,EAAE,CAAC,IAAI,4BAAY,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE;SACtE,CAAC,CAAC;IACP,CAAC;CACJ,CAAA;AA7BY,sDAAqB;AAI9B;IADC,IAAA,aAAI,GAAE;IACD,WAAA,IAAA,YAAG,GAAE,CAAA;IAAgB,WAAA,IAAA,YAAG,GAAE,CAAA;;;;iDAE/B;AAGD;IADC,IAAA,YAAG,GAAE;IACD,WAAA,IAAA,YAAG,GAAE,CAAA;IAAgB,WAAA,IAAA,YAAG,GAAE,CAAA;;;;gDAE9B;gCAXQ,qBAAqB;IADjC,IAAA,mBAAU,EAAC,KAAK,CAAC;qCAEwB,uCAAiB;GAD9C,qBAAqB,CA6BjC"}
@@ -2,3 +2,4 @@ export * from './admin.mcp.controller';
2
2
  export * from './business.mcp.controller';
3
3
  export * from './mcp.http.module';
4
4
  export * from './mcp.request.handler';
5
+ export * from './unauthorized.mcp.response';
@@ -18,4 +18,5 @@ __exportStar(require("./admin.mcp.controller"), exports);
18
18
  __exportStar(require("./business.mcp.controller"), exports);
19
19
  __exportStar(require("./mcp.http.module"), exports);
20
20
  __exportStar(require("./mcp.request.handler"), exports);
21
+ __exportStar(require("./unauthorized.mcp.response"), exports);
21
22
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/mcp/http/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,yDAAuC;AAAA,4DAA0C;AAAA,oDAAkC;AAAA,wDAAqC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/mcp/http/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,yDAAuC;AAAA,4DAA0C;AAAA,oDAAkC;AAAA,wDAAsC;AAAA,8DAA2C"}
@@ -7,7 +7,9 @@ interface McpHandleOptions {
7
7
  tools: (client: SlabsApiClient) => McpToolInterface[];
8
8
  }
9
9
  export declare class McpRequestHandler {
10
+ private readonly logger;
10
11
  handle(req: any, res: any, options: McpHandleOptions): Promise<void>;
12
+ private safeClose;
11
13
  private loopbackBaseUrl;
12
14
  }
13
15
  export {};
@@ -5,30 +5,49 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
5
5
  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
6
  return c > 3 && r && Object.defineProperty(target, key, r), r;
7
7
  };
8
+ var McpRequestHandler_1;
8
9
  Object.defineProperty(exports, "__esModule", { value: true });
9
10
  exports.McpRequestHandler = void 0;
10
11
  const common_1 = require("@nestjs/common");
11
12
  const streamableHttp_js_1 = require("@modelcontextprotocol/sdk/server/streamableHttp.js");
12
13
  const slabs_api_client_1 = require("../client/slabs.api.client");
13
14
  const slabs_mcp_server_1 = require("../slabs.mcp.server");
14
- let McpRequestHandler = class McpRequestHandler {
15
+ const unauthorized_mcp_response_1 = require("./unauthorized.mcp.response");
16
+ let McpRequestHandler = McpRequestHandler_1 = class McpRequestHandler {
17
+ constructor() {
18
+ this.logger = new common_1.Logger(McpRequestHandler_1.name);
19
+ }
15
20
  async handle(req, res, options) {
16
- const client = new slabs_api_client_1.SlabsApiClient(this.loopbackBaseUrl(), options.auth);
17
- const server = new slabs_mcp_server_1.SlabsMcpServer(options.name, options.tools(client)).instance();
18
- const transport = new streamableHttp_js_1.StreamableHTTPServerTransport({ sessionIdGenerator: undefined, enableJsonResponse: true });
19
- res.on('close', () => {
20
- transport.close();
21
- server.close();
22
- });
23
- await server.connect(transport);
24
- await transport.handleRequest(req, res, req.body);
21
+ try {
22
+ const client = new slabs_api_client_1.SlabsApiClient(this.loopbackBaseUrl(), options.auth);
23
+ const server = new slabs_mcp_server_1.SlabsMcpServer(options.name, options.tools(client)).instance();
24
+ const transport = new streamableHttp_js_1.StreamableHTTPServerTransport({ sessionIdGenerator: undefined, enableJsonResponse: true });
25
+ res.on('close', () => {
26
+ this.safeClose(() => transport.close());
27
+ this.safeClose(() => server.close());
28
+ });
29
+ await server.connect(transport);
30
+ await transport.handleRequest(req, res, req.body);
31
+ }
32
+ catch (error) {
33
+ this.logger.error(`MCP request failed: ${error?.message ?? error}`, error?.stack);
34
+ (0, unauthorized_mcp_response_1.internalMcpErrorResponse)(res, 'MCP request handling failed.');
35
+ }
36
+ }
37
+ safeClose(fn) {
38
+ try {
39
+ fn();
40
+ }
41
+ catch (error) {
42
+ this.logger.warn(`MCP cleanup failed: ${error?.message ?? error}`);
43
+ }
25
44
  }
26
45
  loopbackBaseUrl() {
27
46
  return `http://127.0.0.1:${process.env.SERVER_PORT || 4000}`;
28
47
  }
29
48
  };
30
49
  exports.McpRequestHandler = McpRequestHandler;
31
- exports.McpRequestHandler = McpRequestHandler = __decorate([
50
+ exports.McpRequestHandler = McpRequestHandler = McpRequestHandler_1 = __decorate([
32
51
  (0, common_1.Injectable)()
33
52
  ], McpRequestHandler);
34
53
  //# sourceMappingURL=mcp.request.handler.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"mcp.request.handler.js","sourceRoot":"","sources":["../../../src/mcp/http/mcp.request.handler.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAA4C;AAC5C,0FAAmG;AACnG,iEAA4D;AAG5D,0DAAqD;AAgB9C,IAAM,iBAAiB,GAAvB,MAAM,iBAAiB;IAC1B,KAAK,CAAC,MAAM,CAAC,GAAQ,EAAE,GAAQ,EAAE,OAAyB;QACtD,MAAM,MAAM,GAAG,IAAI,iCAAc,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;QACxE,MAAM,MAAM,GAAG,IAAI,iCAAc,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;QAClF,MAAM,SAAS,GAAG,IAAI,iDAA6B,CAAC,EAAE,kBAAkB,EAAE,SAAS,EAAE,kBAAkB,EAAE,IAAI,EAAE,CAAC,CAAC;QAEjH,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;YACjB,SAAS,CAAC,KAAK,EAAE,CAAC;YAClB,MAAM,CAAC,KAAK,EAAE,CAAC;QACnB,CAAC,CAAC,CAAC;QAEH,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAChC,MAAM,SAAS,CAAC,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IACtD,CAAC;IAEO,eAAe;QACnB,OAAO,oBAAoB,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,IAAI,EAAE,CAAC;IACjE,CAAC;CACJ,CAAA;AAlBY,8CAAiB;4BAAjB,iBAAiB;IAD7B,IAAA,mBAAU,GAAE;GACA,iBAAiB,CAkB7B"}
1
+ {"version":3,"file":"mcp.request.handler.js","sourceRoot":"","sources":["../../../src/mcp/http/mcp.request.handler.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,2CAAoD;AACpD,0FAAmG;AACnG,iEAA4D;AAG5D,0DAAqD;AACrD,2EAAuE;AAgBhE,IAAM,iBAAiB,yBAAvB,MAAM,iBAAiB;IAAvB;QACc,WAAM,GAAG,IAAI,eAAM,CAAC,mBAAiB,CAAC,IAAI,CAAC,CAAC;IAqCjE,CAAC;IA9BG,KAAK,CAAC,MAAM,CAAC,GAAQ,EAAE,GAAQ,EAAE,OAAyB;QACtD,IAAI,CAAC;YACD,MAAM,MAAM,GAAG,IAAI,iCAAc,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;YACxE,MAAM,MAAM,GAAG,IAAI,iCAAc,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;YAClF,MAAM,SAAS,GAAG,IAAI,iDAA6B,CAAC,EAAE,kBAAkB,EAAE,SAAS,EAAE,kBAAkB,EAAE,IAAI,EAAE,CAAC,CAAC;YAEjH,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;gBACjB,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,CAAC;gBACxC,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;YACzC,CAAC,CAAC,CAAC;YAEH,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;YAChC,MAAM,SAAS,CAAC,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;QACtD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,uBAAuB,KAAK,EAAE,OAAO,IAAI,KAAK,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;YAClF,IAAA,oDAAwB,EAAC,GAAG,EAAE,8BAA8B,CAAC,CAAC;QAClE,CAAC;IACL,CAAC;IAEO,SAAS,CAAC,EAAc;QAC5B,IAAI,CAAC;YACD,EAAE,EAAE,CAAC;QACT,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,uBAAuB,KAAK,EAAE,OAAO,IAAI,KAAK,EAAE,CAAC,CAAC;QACvE,CAAC;IACL,CAAC;IAEO,eAAe;QACnB,OAAO,oBAAoB,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,IAAI,EAAE,CAAC;IACjE,CAAC;CACJ,CAAA;AAtCY,8CAAiB;4BAAjB,iBAAiB;IAD7B,IAAA,mBAAU,GAAE;GACA,iBAAiB,CAsC7B"}
@@ -0,0 +1,4 @@
1
+ import { Response } from 'express';
2
+ export declare function mcpErrorResponse(res: Response, status: number, code: number, message: string): void;
3
+ export declare function unauthorizedMcpResponse(res: Response, message: string): void;
4
+ export declare function internalMcpErrorResponse(res: Response, message: string): void;
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.mcpErrorResponse = mcpErrorResponse;
4
+ exports.unauthorizedMcpResponse = unauthorizedMcpResponse;
5
+ exports.internalMcpErrorResponse = internalMcpErrorResponse;
6
+ const JSONRPC_UNAUTHORIZED = -32001;
7
+ const JSONRPC_INTERNAL_ERROR = -32603;
8
+ function mcpErrorResponse(res, status, code, message) {
9
+ if (res.headersSent)
10
+ return;
11
+ res.status(status).json({
12
+ jsonrpc: '2.0',
13
+ error: { code, message },
14
+ id: null,
15
+ });
16
+ }
17
+ function unauthorizedMcpResponse(res, message) {
18
+ mcpErrorResponse(res, 401, JSONRPC_UNAUTHORIZED, message);
19
+ }
20
+ function internalMcpErrorResponse(res, message) {
21
+ mcpErrorResponse(res, 500, JSONRPC_INTERNAL_ERROR, message);
22
+ }
23
+ //# sourceMappingURL=unauthorized.mcp.response.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unauthorized.mcp.response.js","sourceRoot":"","sources":["../../../src/mcp/http/unauthorized.mcp.response.ts"],"names":[],"mappings":";;AAaA,4CAQC;AASD,0DAEC;AAOD,4DAEC;AAtCD,MAAM,oBAAoB,GAAG,CAAC,KAAK,CAAC;AAGpC,MAAM,sBAAsB,GAAG,CAAC,KAAK,CAAC;AAOtC,SAAgB,gBAAgB,CAAC,GAAa,EAAE,MAAc,EAAE,IAAY,EAAE,OAAe;IACzF,IAAI,GAAG,CAAC,WAAW;QAAE,OAAO;IAE5B,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC;QACpB,OAAO,EAAE,KAAK;QACd,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE;QACxB,EAAE,EAAE,IAAI;KACX,CAAC,CAAC;AACP,CAAC;AASD,SAAgB,uBAAuB,CAAC,GAAa,EAAE,OAAe;IAClE,gBAAgB,CAAC,GAAG,EAAE,GAAG,EAAE,oBAAoB,EAAE,OAAO,CAAC,CAAC;AAC9D,CAAC;AAOD,SAAgB,wBAAwB,CAAC,GAAa,EAAE,OAAe;IACnE,gBAAgB,CAAC,GAAG,EAAE,GAAG,EAAE,sBAAsB,EAAE,OAAO,CAAC,CAAC;AAChE,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@servicelabsco/slabs-access-manager",
3
- "version": "1.0.38",
3
+ "version": "1.0.39",
4
4
  "description": "Support for application level menus and dashboards",
5
5
  "author": "Hemant Kumar Sah <hemantanshu@gmail.com>",
6
6
  "license": "MIT",