@nirvana-labs/nirvana-mcp 1.52.0 → 1.53.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.
Files changed (76) hide show
  1. package/code-tool-worker.js +2 -2
  2. package/code-tool-worker.js.map +1 -1
  3. package/code-tool-worker.mjs +2 -2
  4. package/code-tool-worker.mjs.map +1 -1
  5. package/code-tool.d.mts.map +1 -1
  6. package/code-tool.d.ts.map +1 -1
  7. package/code-tool.js +19 -3
  8. package/code-tool.js.map +1 -1
  9. package/code-tool.mjs +19 -3
  10. package/code-tool.mjs.map +1 -1
  11. package/docs-search-tool.d.mts +1 -1
  12. package/docs-search-tool.d.mts.map +1 -1
  13. package/docs-search-tool.d.ts +1 -1
  14. package/docs-search-tool.d.ts.map +1 -1
  15. package/docs-search-tool.js +21 -2
  16. package/docs-search-tool.js.map +1 -1
  17. package/docs-search-tool.mjs +21 -2
  18. package/docs-search-tool.mjs.map +1 -1
  19. package/http.d.mts +2 -4
  20. package/http.d.mts.map +1 -1
  21. package/http.d.ts +2 -4
  22. package/http.d.ts.map +1 -1
  23. package/http.js +52 -19
  24. package/http.js.map +1 -1
  25. package/http.mjs +52 -19
  26. package/http.mjs.map +1 -1
  27. package/index.js +12 -11
  28. package/index.js.map +1 -1
  29. package/index.mjs +12 -11
  30. package/index.mjs.map +1 -1
  31. package/instructions.d.mts.map +1 -1
  32. package/instructions.d.ts.map +1 -1
  33. package/instructions.js +2 -1
  34. package/instructions.js.map +1 -1
  35. package/instructions.mjs +2 -1
  36. package/instructions.mjs.map +1 -1
  37. package/logger.d.mts +7 -0
  38. package/logger.d.mts.map +1 -0
  39. package/logger.d.ts +7 -0
  40. package/logger.d.ts.map +1 -0
  41. package/logger.js +29 -0
  42. package/logger.js.map +1 -0
  43. package/logger.mjs +22 -0
  44. package/logger.mjs.map +1 -0
  45. package/methods.js +6 -6
  46. package/methods.js.map +1 -1
  47. package/methods.mjs +6 -6
  48. package/methods.mjs.map +1 -1
  49. package/options.d.mts +1 -0
  50. package/options.d.mts.map +1 -1
  51. package/options.d.ts +1 -0
  52. package/options.d.ts.map +1 -1
  53. package/options.js +9 -0
  54. package/options.js.map +1 -1
  55. package/options.mjs +9 -0
  56. package/options.mjs.map +1 -1
  57. package/package.json +15 -4
  58. package/server.js +1 -1
  59. package/server.mjs +1 -1
  60. package/src/code-tool-worker.ts +2 -2
  61. package/src/code-tool.ts +27 -3
  62. package/src/docs-search-tool.ts +34 -3
  63. package/src/http.ts +53 -21
  64. package/src/index.ts +14 -12
  65. package/src/instructions.ts +2 -1
  66. package/src/logger.ts +28 -0
  67. package/src/methods.ts +6 -6
  68. package/src/options.ts +11 -0
  69. package/src/server.ts +1 -1
  70. package/src/stdio.ts +2 -1
  71. package/stdio.d.mts.map +1 -1
  72. package/stdio.d.ts.map +1 -1
  73. package/stdio.js +2 -1
  74. package/stdio.js.map +1 -1
  75. package/stdio.mjs +2 -1
  76. package/stdio.mjs.map +1 -1
package/http.js CHANGED
@@ -7,9 +7,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
7
7
  exports.launchStreamableHTTPServer = exports.streamableHTTPApp = void 0;
8
8
  const streamableHttp_js_1 = require("@modelcontextprotocol/sdk/server/streamableHttp.js");
9
9
  const express_1 = __importDefault(require("express"));
10
- const morgan_1 = __importDefault(require("morgan"));
11
- const morgan_body_1 = __importDefault(require("morgan-body"));
10
+ const pino_1 = __importDefault(require("pino"));
11
+ const pino_http_1 = __importDefault(require("pino-http"));
12
12
  const auth_1 = require("./auth.js");
13
+ const logger_1 = require("./logger.js");
13
14
  const server_1 = require("./server.js");
14
15
  const newServer = async ({ clientOptions, mcpOptions, req, res, }) => {
15
16
  const stainlessApiKey = (0, auth_1.getStainlessApiKey)(req, mcpOptions);
@@ -53,21 +54,52 @@ const del = async (req, res) => {
53
54
  },
54
55
  });
55
56
  };
56
- const streamableHTTPApp = ({ clientOptions = {}, mcpOptions, debug, }) => {
57
+ const redactHeaders = (headers) => {
58
+ const hiddenHeaders = /auth|cookie|key|token/i;
59
+ const filtered = { ...headers };
60
+ Object.keys(filtered).forEach((key) => {
61
+ if (hiddenHeaders.test(key)) {
62
+ filtered[key] = '[REDACTED]';
63
+ }
64
+ });
65
+ return filtered;
66
+ };
67
+ const streamableHTTPApp = ({ clientOptions = {}, mcpOptions, }) => {
57
68
  const app = (0, express_1.default)();
58
69
  app.set('query parser', 'extended');
59
70
  app.use(express_1.default.json());
60
- if (debug) {
61
- (0, morgan_body_1.default)(app, {
62
- logAllReqHeader: true,
63
- logAllResHeader: true,
64
- logRequestBody: true,
65
- logResponseBody: true,
66
- });
67
- }
68
- else {
69
- app.use((0, morgan_1.default)('combined'));
70
- }
71
+ app.use((0, pino_http_1.default)({
72
+ logger: (0, logger_1.getLogger)(),
73
+ customLogLevel: (req, res) => {
74
+ if (res.statusCode >= 500) {
75
+ return 'error';
76
+ }
77
+ else if (res.statusCode >= 400) {
78
+ return 'warn';
79
+ }
80
+ return 'info';
81
+ },
82
+ customSuccessMessage: function (req, res) {
83
+ return `Request ${req.method} to ${req.url} completed with status ${res.statusCode}`;
84
+ },
85
+ customErrorMessage: function (req, res, err) {
86
+ return `Request ${req.method} to ${req.url} errored with status ${res.statusCode}`;
87
+ },
88
+ serializers: {
89
+ req: pino_1.default.stdSerializers.wrapRequestSerializer((req) => {
90
+ return {
91
+ ...req,
92
+ headers: redactHeaders(req.raw.headers),
93
+ };
94
+ }),
95
+ res: pino_1.default.stdSerializers.wrapResponseSerializer((res) => {
96
+ return {
97
+ ...res,
98
+ headers: redactHeaders(res.headers),
99
+ };
100
+ }),
101
+ },
102
+ }));
71
103
  app.get('/health', async (req, res) => {
72
104
  res.status(200).send('OK');
73
105
  });
@@ -77,18 +109,19 @@ const streamableHTTPApp = ({ clientOptions = {}, mcpOptions, debug, }) => {
77
109
  return app;
78
110
  };
79
111
  exports.streamableHTTPApp = streamableHTTPApp;
80
- const launchStreamableHTTPServer = async ({ mcpOptions, debug, port, }) => {
81
- const app = (0, exports.streamableHTTPApp)({ mcpOptions, debug });
112
+ const launchStreamableHTTPServer = async ({ mcpOptions, port, }) => {
113
+ const app = (0, exports.streamableHTTPApp)({ mcpOptions });
82
114
  const server = app.listen(port);
83
115
  const address = server.address();
116
+ const logger = (0, logger_1.getLogger)();
84
117
  if (typeof address === 'string') {
85
- console.error(`MCP Server running on streamable HTTP at ${address}`);
118
+ logger.info(`MCP Server running on streamable HTTP at ${address}`);
86
119
  }
87
120
  else if (address !== null) {
88
- console.error(`MCP Server running on streamable HTTP on port ${address.port}`);
121
+ logger.info(`MCP Server running on streamable HTTP on port ${address.port}`);
89
122
  }
90
123
  else {
91
- console.error(`MCP Server running on streamable HTTP on port ${port}`);
124
+ logger.info(`MCP Server running on streamable HTTP on port ${port}`);
92
125
  }
93
126
  };
94
127
  exports.launchStreamableHTTPServer = launchStreamableHTTPServer;
package/http.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"http.js","sourceRoot":"","sources":["src/http.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"http.js","sourceRoot":"","sources":["src/http.ts"],"names":[],"mappings":"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"}
package/http.mjs CHANGED
@@ -1,9 +1,10 @@
1
1
  // File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
2
  import { StreamableHTTPServerTransport } from '@modelcontextprotocol/sdk/server/streamableHttp.js';
3
3
  import express from 'express';
4
- import morgan from 'morgan';
5
- import morganBody from 'morgan-body';
4
+ import pino from 'pino';
5
+ import pinoHttp from 'pino-http';
6
6
  import { getStainlessApiKey, parseClientAuthHeaders } from "./auth.mjs";
7
+ import { getLogger } from "./logger.mjs";
7
8
  import { initMcpServer, newMcpServer } from "./server.mjs";
8
9
  const newServer = async ({ clientOptions, mcpOptions, req, res, }) => {
9
10
  const stainlessApiKey = getStainlessApiKey(req, mcpOptions);
@@ -47,21 +48,52 @@ const del = async (req, res) => {
47
48
  },
48
49
  });
49
50
  };
50
- export const streamableHTTPApp = ({ clientOptions = {}, mcpOptions, debug, }) => {
51
+ const redactHeaders = (headers) => {
52
+ const hiddenHeaders = /auth|cookie|key|token/i;
53
+ const filtered = { ...headers };
54
+ Object.keys(filtered).forEach((key) => {
55
+ if (hiddenHeaders.test(key)) {
56
+ filtered[key] = '[REDACTED]';
57
+ }
58
+ });
59
+ return filtered;
60
+ };
61
+ export const streamableHTTPApp = ({ clientOptions = {}, mcpOptions, }) => {
51
62
  const app = express();
52
63
  app.set('query parser', 'extended');
53
64
  app.use(express.json());
54
- if (debug) {
55
- morganBody(app, {
56
- logAllReqHeader: true,
57
- logAllResHeader: true,
58
- logRequestBody: true,
59
- logResponseBody: true,
60
- });
61
- }
62
- else {
63
- app.use(morgan('combined'));
64
- }
65
+ app.use(pinoHttp({
66
+ logger: getLogger(),
67
+ customLogLevel: (req, res) => {
68
+ if (res.statusCode >= 500) {
69
+ return 'error';
70
+ }
71
+ else if (res.statusCode >= 400) {
72
+ return 'warn';
73
+ }
74
+ return 'info';
75
+ },
76
+ customSuccessMessage: function (req, res) {
77
+ return `Request ${req.method} to ${req.url} completed with status ${res.statusCode}`;
78
+ },
79
+ customErrorMessage: function (req, res, err) {
80
+ return `Request ${req.method} to ${req.url} errored with status ${res.statusCode}`;
81
+ },
82
+ serializers: {
83
+ req: pino.stdSerializers.wrapRequestSerializer((req) => {
84
+ return {
85
+ ...req,
86
+ headers: redactHeaders(req.raw.headers),
87
+ };
88
+ }),
89
+ res: pino.stdSerializers.wrapResponseSerializer((res) => {
90
+ return {
91
+ ...res,
92
+ headers: redactHeaders(res.headers),
93
+ };
94
+ }),
95
+ },
96
+ }));
65
97
  app.get('/health', async (req, res) => {
66
98
  res.status(200).send('OK');
67
99
  });
@@ -70,18 +102,19 @@ export const streamableHTTPApp = ({ clientOptions = {}, mcpOptions, debug, }) =>
70
102
  app.delete('/', del);
71
103
  return app;
72
104
  };
73
- export const launchStreamableHTTPServer = async ({ mcpOptions, debug, port, }) => {
74
- const app = streamableHTTPApp({ mcpOptions, debug });
105
+ export const launchStreamableHTTPServer = async ({ mcpOptions, port, }) => {
106
+ const app = streamableHTTPApp({ mcpOptions });
75
107
  const server = app.listen(port);
76
108
  const address = server.address();
109
+ const logger = getLogger();
77
110
  if (typeof address === 'string') {
78
- console.error(`MCP Server running on streamable HTTP at ${address}`);
111
+ logger.info(`MCP Server running on streamable HTTP at ${address}`);
79
112
  }
80
113
  else if (address !== null) {
81
- console.error(`MCP Server running on streamable HTTP on port ${address.port}`);
114
+ logger.info(`MCP Server running on streamable HTTP on port ${address.port}`);
82
115
  }
83
116
  else {
84
- console.error(`MCP Server running on streamable HTTP on port ${port}`);
117
+ logger.info(`MCP Server running on streamable HTTP on port ${port}`);
85
118
  }
86
119
  };
87
120
  //# sourceMappingURL=http.mjs.map
package/http.mjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"http.mjs","sourceRoot":"","sources":["src/http.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"http.mjs","sourceRoot":"","sources":["src/http.ts"],"names":[],"mappings":"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"}
package/index.js CHANGED
@@ -5,10 +5,15 @@ const server_1 = require("./server.js");
5
5
  const options_1 = require("./options.js");
6
6
  const stdio_1 = require("./stdio.js");
7
7
  const http_1 = require("./http.js");
8
+ const logger_1 = require("./logger.js");
8
9
  async function main() {
9
10
  const options = parseOptionsOrError();
11
+ (0, logger_1.configureLogger)({
12
+ level: options.debug ? 'debug' : 'info',
13
+ pretty: options.logFormat === 'pretty',
14
+ });
10
15
  const selectedTools = await selectToolsOrError(options);
11
- console.error(`MCP Server starting with ${selectedTools.length} tools:`, selectedTools.map((e) => e.tool.name));
16
+ (0, logger_1.getLogger)().info({ tools: selectedTools.map((e) => e.tool.name) }, `MCP Server starting with ${selectedTools.length} tools`);
12
17
  switch (options.transport) {
13
18
  case 'stdio':
14
19
  await (0, stdio_1.launchStdioServer)(options);
@@ -16,7 +21,6 @@ async function main() {
16
21
  case 'http':
17
22
  await (0, http_1.launchStreamableHTTPServer)({
18
23
  mcpOptions: options,
19
- debug: options.debug,
20
24
  port: options.socket ?? options.port,
21
25
  });
22
26
  break;
@@ -24,7 +28,8 @@ async function main() {
24
28
  }
25
29
  if (require.main === module) {
26
30
  main().catch((error) => {
27
- console.error('Fatal error in main():', error);
31
+ // Logger might not be initialized yet
32
+ console.error('Fatal error in main()', error);
28
33
  process.exit(1);
29
34
  });
30
35
  }
@@ -33,7 +38,8 @@ function parseOptionsOrError() {
33
38
  return (0, options_1.parseCLIOptions)();
34
39
  }
35
40
  catch (error) {
36
- console.error('Error parsing options:', error);
41
+ // Logger is initialized after options, so use console.error here
42
+ console.error('Error parsing options', error);
37
43
  process.exit(1);
38
44
  }
39
45
  }
@@ -41,18 +47,13 @@ async function selectToolsOrError(options) {
41
47
  try {
42
48
  const includedTools = (0, server_1.selectTools)(options);
43
49
  if (includedTools.length === 0) {
44
- console.error('No tools match the provided filters.');
50
+ (0, logger_1.getLogger)().error('No tools match the provided filters');
45
51
  process.exit(1);
46
52
  }
47
53
  return includedTools;
48
54
  }
49
55
  catch (error) {
50
- if (error instanceof Error) {
51
- console.error('Error filtering tools:', error.message);
52
- }
53
- else {
54
- console.error('Error filtering tools:', error);
55
- }
56
+ (0, logger_1.getLogger)().error({ error }, 'Error filtering tools');
56
57
  process.exit(1);
57
58
  }
58
59
  }
package/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["src/index.ts"],"names":[],"mappings":";;;AAEA,wCAAuC;AACvC,0CAAwD;AACxD,sCAA4C;AAC5C,oCAAoD;AAGpD,KAAK,UAAU,IAAI;IACjB,MAAM,OAAO,GAAG,mBAAmB,EAAE,CAAC;IAEtC,MAAM,aAAa,GAAG,MAAM,kBAAkB,CAAC,OAAO,CAAC,CAAC;IAExD,OAAO,CAAC,KAAK,CACX,4BAA4B,aAAa,CAAC,MAAM,SAAS,EACzD,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CACtC,CAAC;IAEF,QAAQ,OAAO,CAAC,SAAS,EAAE,CAAC;QAC1B,KAAK,OAAO;YACV,MAAM,IAAA,yBAAiB,EAAC,OAAO,CAAC,CAAC;YACjC,MAAM;QACR,KAAK,MAAM;YACT,MAAM,IAAA,iCAA0B,EAAC;gBAC/B,UAAU,EAAE,OAAO;gBACnB,KAAK,EAAE,OAAO,CAAC,KAAK;gBACpB,IAAI,EAAE,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,IAAI;aACrC,CAAC,CAAC;YACH,MAAM;IACV,CAAC;AACH,CAAC;AAED,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;IAC5B,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;QACrB,OAAO,CAAC,KAAK,CAAC,wBAAwB,EAAE,KAAK,CAAC,CAAC;QAC/C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,mBAAmB;IAC1B,IAAI,CAAC;QACH,OAAO,IAAA,yBAAe,GAAE,CAAC;IAC3B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,wBAAwB,EAAE,KAAK,CAAC,CAAC;QAC/C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,KAAK,UAAU,kBAAkB,CAAC,OAAmB;IACnD,IAAI,CAAC;QACH,MAAM,aAAa,GAAG,IAAA,oBAAW,EAAC,OAAO,CAAC,CAAC;QAC3C,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC/B,OAAO,CAAC,KAAK,CAAC,sCAAsC,CAAC,CAAC;YACtD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,OAAO,aAAa,CAAC;IACvB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;YAC3B,OAAO,CAAC,KAAK,CAAC,wBAAwB,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;QACzD,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,KAAK,CAAC,wBAAwB,EAAE,KAAK,CAAC,CAAC;QACjD,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["src/index.ts"],"names":[],"mappings":";;;AAEA,wCAAuC;AACvC,0CAAwD;AACxD,sCAA4C;AAC5C,oCAAoD;AAEpD,wCAAsD;AAEtD,KAAK,UAAU,IAAI;IACjB,MAAM,OAAO,GAAG,mBAAmB,EAAE,CAAC;IACtC,IAAA,wBAAe,EAAC;QACd,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM;QACvC,MAAM,EAAE,OAAO,CAAC,SAAS,KAAK,QAAQ;KACvC,CAAC,CAAC;IAEH,MAAM,aAAa,GAAG,MAAM,kBAAkB,CAAC,OAAO,CAAC,CAAC;IAExD,IAAA,kBAAS,GAAE,CAAC,IAAI,CACd,EAAE,KAAK,EAAE,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAChD,4BAA4B,aAAa,CAAC,MAAM,QAAQ,CACzD,CAAC;IAEF,QAAQ,OAAO,CAAC,SAAS,EAAE,CAAC;QAC1B,KAAK,OAAO;YACV,MAAM,IAAA,yBAAiB,EAAC,OAAO,CAAC,CAAC;YACjC,MAAM;QACR,KAAK,MAAM;YACT,MAAM,IAAA,iCAA0B,EAAC;gBAC/B,UAAU,EAAE,OAAO;gBACnB,IAAI,EAAE,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,IAAI;aACrC,CAAC,CAAC;YACH,MAAM;IACV,CAAC;AACH,CAAC;AAED,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;IAC5B,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;QACrB,sCAAsC;QACtC,OAAO,CAAC,KAAK,CAAC,uBAAuB,EAAE,KAAK,CAAC,CAAC;QAC9C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,mBAAmB;IAC1B,IAAI,CAAC;QACH,OAAO,IAAA,yBAAe,GAAE,CAAC;IAC3B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,iEAAiE;QACjE,OAAO,CAAC,KAAK,CAAC,uBAAuB,EAAE,KAAK,CAAC,CAAC;QAC9C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,KAAK,UAAU,kBAAkB,CAAC,OAAmB;IACnD,IAAI,CAAC;QACH,MAAM,aAAa,GAAG,IAAA,oBAAW,EAAC,OAAO,CAAC,CAAC;QAC3C,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC/B,IAAA,kBAAS,GAAE,CAAC,KAAK,CAAC,qCAAqC,CAAC,CAAC;YACzD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,OAAO,aAAa,CAAC;IACvB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAA,kBAAS,GAAE,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,EAAE,uBAAuB,CAAC,CAAC;QACtD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
package/index.mjs CHANGED
@@ -3,10 +3,15 @@ import { selectTools } from "./server.mjs";
3
3
  import { parseCLIOptions } from "./options.mjs";
4
4
  import { launchStdioServer } from "./stdio.mjs";
5
5
  import { launchStreamableHTTPServer } from "./http.mjs";
6
+ import { configureLogger, getLogger } from "./logger.mjs";
6
7
  async function main() {
7
8
  const options = parseOptionsOrError();
9
+ configureLogger({
10
+ level: options.debug ? 'debug' : 'info',
11
+ pretty: options.logFormat === 'pretty',
12
+ });
8
13
  const selectedTools = await selectToolsOrError(options);
9
- console.error(`MCP Server starting with ${selectedTools.length} tools:`, selectedTools.map((e) => e.tool.name));
14
+ getLogger().info({ tools: selectedTools.map((e) => e.tool.name) }, `MCP Server starting with ${selectedTools.length} tools`);
10
15
  switch (options.transport) {
11
16
  case 'stdio':
12
17
  await launchStdioServer(options);
@@ -14,7 +19,6 @@ async function main() {
14
19
  case 'http':
15
20
  await launchStreamableHTTPServer({
16
21
  mcpOptions: options,
17
- debug: options.debug,
18
22
  port: options.socket ?? options.port,
19
23
  });
20
24
  break;
@@ -22,7 +26,8 @@ async function main() {
22
26
  }
23
27
  if (require.main === module) {
24
28
  main().catch((error) => {
25
- console.error('Fatal error in main():', error);
29
+ // Logger might not be initialized yet
30
+ console.error('Fatal error in main()', error);
26
31
  process.exit(1);
27
32
  });
28
33
  }
@@ -31,7 +36,8 @@ function parseOptionsOrError() {
31
36
  return parseCLIOptions();
32
37
  }
33
38
  catch (error) {
34
- console.error('Error parsing options:', error);
39
+ // Logger is initialized after options, so use console.error here
40
+ console.error('Error parsing options', error);
35
41
  process.exit(1);
36
42
  }
37
43
  }
@@ -39,18 +45,13 @@ async function selectToolsOrError(options) {
39
45
  try {
40
46
  const includedTools = selectTools(options);
41
47
  if (includedTools.length === 0) {
42
- console.error('No tools match the provided filters.');
48
+ getLogger().error('No tools match the provided filters');
43
49
  process.exit(1);
44
50
  }
45
51
  return includedTools;
46
52
  }
47
53
  catch (error) {
48
- if (error instanceof Error) {
49
- console.error('Error filtering tools:', error.message);
50
- }
51
- else {
52
- console.error('Error filtering tools:', error);
53
- }
54
+ getLogger().error({ error }, 'Error filtering tools');
54
55
  process.exit(1);
55
56
  }
56
57
  }
package/index.mjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sourceRoot":"","sources":["src/index.ts"],"names":[],"mappings":";OAEO,EAAE,WAAW,EAAE;OACf,EAAc,eAAe,EAAE;OAC/B,EAAE,iBAAiB,EAAE;OACrB,EAAE,0BAA0B,EAAE;AAGrC,KAAK,UAAU,IAAI;IACjB,MAAM,OAAO,GAAG,mBAAmB,EAAE,CAAC;IAEtC,MAAM,aAAa,GAAG,MAAM,kBAAkB,CAAC,OAAO,CAAC,CAAC;IAExD,OAAO,CAAC,KAAK,CACX,4BAA4B,aAAa,CAAC,MAAM,SAAS,EACzD,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CACtC,CAAC;IAEF,QAAQ,OAAO,CAAC,SAAS,EAAE,CAAC;QAC1B,KAAK,OAAO;YACV,MAAM,iBAAiB,CAAC,OAAO,CAAC,CAAC;YACjC,MAAM;QACR,KAAK,MAAM;YACT,MAAM,0BAA0B,CAAC;gBAC/B,UAAU,EAAE,OAAO;gBACnB,KAAK,EAAE,OAAO,CAAC,KAAK;gBACpB,IAAI,EAAE,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,IAAI;aACrC,CAAC,CAAC;YACH,MAAM;IACV,CAAC;AACH,CAAC;AAED,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;IAC5B,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;QACrB,OAAO,CAAC,KAAK,CAAC,wBAAwB,EAAE,KAAK,CAAC,CAAC;QAC/C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,mBAAmB;IAC1B,IAAI,CAAC;QACH,OAAO,eAAe,EAAE,CAAC;IAC3B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,wBAAwB,EAAE,KAAK,CAAC,CAAC;QAC/C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,KAAK,UAAU,kBAAkB,CAAC,OAAmB;IACnD,IAAI,CAAC;QACH,MAAM,aAAa,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;QAC3C,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC/B,OAAO,CAAC,KAAK,CAAC,sCAAsC,CAAC,CAAC;YACtD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,OAAO,aAAa,CAAC;IACvB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;YAC3B,OAAO,CAAC,KAAK,CAAC,wBAAwB,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;QACzD,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,KAAK,CAAC,wBAAwB,EAAE,KAAK,CAAC,CAAC;QACjD,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"index.mjs","sourceRoot":"","sources":["src/index.ts"],"names":[],"mappings":";OAEO,EAAE,WAAW,EAAE;OACf,EAAc,eAAe,EAAE;OAC/B,EAAE,iBAAiB,EAAE;OACrB,EAAE,0BAA0B,EAAE;OAE9B,EAAE,eAAe,EAAE,SAAS,EAAE;AAErC,KAAK,UAAU,IAAI;IACjB,MAAM,OAAO,GAAG,mBAAmB,EAAE,CAAC;IACtC,eAAe,CAAC;QACd,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM;QACvC,MAAM,EAAE,OAAO,CAAC,SAAS,KAAK,QAAQ;KACvC,CAAC,CAAC;IAEH,MAAM,aAAa,GAAG,MAAM,kBAAkB,CAAC,OAAO,CAAC,CAAC;IAExD,SAAS,EAAE,CAAC,IAAI,CACd,EAAE,KAAK,EAAE,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAChD,4BAA4B,aAAa,CAAC,MAAM,QAAQ,CACzD,CAAC;IAEF,QAAQ,OAAO,CAAC,SAAS,EAAE,CAAC;QAC1B,KAAK,OAAO;YACV,MAAM,iBAAiB,CAAC,OAAO,CAAC,CAAC;YACjC,MAAM;QACR,KAAK,MAAM;YACT,MAAM,0BAA0B,CAAC;gBAC/B,UAAU,EAAE,OAAO;gBACnB,IAAI,EAAE,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,IAAI;aACrC,CAAC,CAAC;YACH,MAAM;IACV,CAAC;AACH,CAAC;AAED,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;IAC5B,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;QACrB,sCAAsC;QACtC,OAAO,CAAC,KAAK,CAAC,uBAAuB,EAAE,KAAK,CAAC,CAAC;QAC9C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,mBAAmB;IAC1B,IAAI,CAAC;QACH,OAAO,eAAe,EAAE,CAAC;IAC3B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,iEAAiE;QACjE,OAAO,CAAC,KAAK,CAAC,uBAAuB,EAAE,KAAK,CAAC,CAAC;QAC9C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,KAAK,UAAU,kBAAkB,CAAC,OAAmB;IACnD,IAAI,CAAC;QACH,MAAM,aAAa,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;QAC3C,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC/B,SAAS,EAAE,CAAC,KAAK,CAAC,qCAAqC,CAAC,CAAC;YACzD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,OAAO,aAAa,CAAC;IACvB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,SAAS,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,EAAE,uBAAuB,CAAC,CAAC;QACtD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"instructions.d.mts","sourceRoot":"","sources":["src/instructions.ts"],"names":[],"mappings":"AA0BA,wBAAsB,eAAe,CAAC,eAAe,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,CAW1F"}
1
+ {"version":3,"file":"instructions.d.mts","sourceRoot":"","sources":["src/instructions.ts"],"names":[],"mappings":"AA2BA,wBAAsB,eAAe,CAAC,eAAe,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,CAW1F"}
@@ -1 +1 @@
1
- {"version":3,"file":"instructions.d.ts","sourceRoot":"","sources":["src/instructions.ts"],"names":[],"mappings":"AA0BA,wBAAsB,eAAe,CAAC,eAAe,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,CAW1F"}
1
+ {"version":3,"file":"instructions.d.ts","sourceRoot":"","sources":["src/instructions.ts"],"names":[],"mappings":"AA2BA,wBAAsB,eAAe,CAAC,eAAe,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,CAW1F"}
package/instructions.js CHANGED
@@ -3,6 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
4
  exports.getInstructions = getInstructions;
5
5
  const util_1 = require("./util.js");
6
+ const logger_1 = require("./logger.js");
6
7
  const INSTRUCTIONS_CACHE_TTL_MS = 15 * 60 * 1000; // 15 minutes
7
8
  const instructionsCache = new Map();
8
9
  // Periodically evict stale entries so the cache doesn't grow unboundedly.
@@ -35,7 +36,7 @@ async function fetchLatestInstructions(stainlessApiKey) {
35
36
  });
36
37
  let instructions;
37
38
  if (!response.ok) {
38
- console.warn('Warning: failed to retrieve MCP server instructions. Proceeding with default instructions...');
39
+ (0, logger_1.getLogger)().warn('Warning: failed to retrieve MCP server instructions. Proceeding with default instructions...');
39
40
  instructions = `
40
41
  This is the nirvana MCP server. You will use Code Mode to help the user perform
41
42
  actions. You can use search_docs tool to learn about how to take action with this server. Then,
@@ -1 +1 @@
1
- {"version":3,"file":"instructions.js","sourceRoot":"","sources":["src/instructions.ts"],"names":[],"mappings":";AAAA,sFAAsF;;AA0BtF,0CAWC;AAnCD,oCAAiC;AAEjC,MAAM,yBAAyB,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,aAAa;AAO/D,MAAM,iBAAiB,GAAG,IAAI,GAAG,EAAkC,CAAC;AAEpE,0EAA0E;AAC1E,MAAM,qBAAqB,GAAG,WAAW,CAAC,GAAG,EAAE;IAC7C,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACvB,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,iBAAiB,EAAE,CAAC;QAC7C,IAAI,GAAG,GAAG,KAAK,CAAC,SAAS,GAAG,yBAAyB,EAAE,CAAC;YACtD,iBAAiB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAChC,CAAC;IACH,CAAC;AACH,CAAC,EAAE,yBAAyB,CAAC,CAAC;AAE9B,iDAAiD;AACjD,qBAAqB,CAAC,KAAK,EAAE,CAAC;AAEvB,KAAK,UAAU,eAAe,CAAC,eAAmC;IACvE,MAAM,QAAQ,GAAG,eAAe,IAAI,EAAE,CAAC;IACvC,MAAM,MAAM,GAAG,iBAAiB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAE/C,IAAI,MAAM,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC,SAAS,IAAI,yBAAyB,EAAE,CAAC;QACzE,OAAO,MAAM,CAAC,mBAAmB,CAAC;IACpC,CAAC;IAED,MAAM,mBAAmB,GAAG,MAAM,uBAAuB,CAAC,eAAe,CAAC,CAAC;IAC3E,iBAAiB,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,mBAAmB,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IAChF,OAAO,mBAAmB,CAAC;AAC7B,CAAC;AAED,KAAK,UAAU,uBAAuB,CAAC,eAAmC;IACxE,iEAAiE;IACjE,iDAAiD;IACjD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAC1B,IAAA,cAAO,EAAC,4BAA4B,CAAC,IAAI,uDAAuD,EAChG;QACE,MAAM,EAAE,KAAK;QACb,OAAO,EAAE,EAAE,GAAG,CAAC,eAAe,IAAI,EAAE,aAAa,EAAE,eAAe,EAAE,CAAC,EAAE;KACxE,CACF,CAAC;IAEF,IAAI,YAAgC,CAAC;IACrC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,OAAO,CAAC,IAAI,CACV,8FAA8F,CAC/F,CAAC;QAEF,YAAY,GAAG;;;;;;KAMd,CAAC;IACJ,CAAC;IAED,YAAY,KAAM,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAA8B,CAAC,YAAY,CAAC;IACpF,YAAY,GAAG;;;MAGX,YAAY;GACf,CAAC;IAEF,OAAO,YAAY,CAAC;AACtB,CAAC"}
1
+ {"version":3,"file":"instructions.js","sourceRoot":"","sources":["src/instructions.ts"],"names":[],"mappings":";AAAA,sFAAsF;;AA2BtF,0CAWC;AApCD,oCAAiC;AACjC,wCAAqC;AAErC,MAAM,yBAAyB,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,aAAa;AAO/D,MAAM,iBAAiB,GAAG,IAAI,GAAG,EAAkC,CAAC;AAEpE,0EAA0E;AAC1E,MAAM,qBAAqB,GAAG,WAAW,CAAC,GAAG,EAAE;IAC7C,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACvB,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,iBAAiB,EAAE,CAAC;QAC7C,IAAI,GAAG,GAAG,KAAK,CAAC,SAAS,GAAG,yBAAyB,EAAE,CAAC;YACtD,iBAAiB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAChC,CAAC;IACH,CAAC;AACH,CAAC,EAAE,yBAAyB,CAAC,CAAC;AAE9B,iDAAiD;AACjD,qBAAqB,CAAC,KAAK,EAAE,CAAC;AAEvB,KAAK,UAAU,eAAe,CAAC,eAAmC;IACvE,MAAM,QAAQ,GAAG,eAAe,IAAI,EAAE,CAAC;IACvC,MAAM,MAAM,GAAG,iBAAiB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAE/C,IAAI,MAAM,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC,SAAS,IAAI,yBAAyB,EAAE,CAAC;QACzE,OAAO,MAAM,CAAC,mBAAmB,CAAC;IACpC,CAAC;IAED,MAAM,mBAAmB,GAAG,MAAM,uBAAuB,CAAC,eAAe,CAAC,CAAC;IAC3E,iBAAiB,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,mBAAmB,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IAChF,OAAO,mBAAmB,CAAC;AAC7B,CAAC;AAED,KAAK,UAAU,uBAAuB,CAAC,eAAmC;IACxE,iEAAiE;IACjE,iDAAiD;IACjD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAC1B,IAAA,cAAO,EAAC,4BAA4B,CAAC,IAAI,uDAAuD,EAChG;QACE,MAAM,EAAE,KAAK;QACb,OAAO,EAAE,EAAE,GAAG,CAAC,eAAe,IAAI,EAAE,aAAa,EAAE,eAAe,EAAE,CAAC,EAAE;KACxE,CACF,CAAC;IAEF,IAAI,YAAgC,CAAC;IACrC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,IAAA,kBAAS,GAAE,CAAC,IAAI,CACd,8FAA8F,CAC/F,CAAC;QAEF,YAAY,GAAG;;;;;;KAMd,CAAC;IACJ,CAAC;IAED,YAAY,KAAM,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAA8B,CAAC,YAAY,CAAC;IACpF,YAAY,GAAG;;;MAGX,YAAY;GACf,CAAC;IAEF,OAAO,YAAY,CAAC;AACtB,CAAC"}
package/instructions.mjs CHANGED
@@ -1,5 +1,6 @@
1
1
  // File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
2
  import { readEnv } from "./util.mjs";
3
+ import { getLogger } from "./logger.mjs";
3
4
  const INSTRUCTIONS_CACHE_TTL_MS = 15 * 60 * 1000; // 15 minutes
4
5
  const instructionsCache = new Map();
5
6
  // Periodically evict stale entries so the cache doesn't grow unboundedly.
@@ -32,7 +33,7 @@ async function fetchLatestInstructions(stainlessApiKey) {
32
33
  });
33
34
  let instructions;
34
35
  if (!response.ok) {
35
- console.warn('Warning: failed to retrieve MCP server instructions. Proceeding with default instructions...');
36
+ getLogger().warn('Warning: failed to retrieve MCP server instructions. Proceeding with default instructions...');
36
37
  instructions = `
37
38
  This is the nirvana MCP server. You will use Code Mode to help the user perform
38
39
  actions. You can use search_docs tool to learn about how to take action with this server. Then,
@@ -1 +1 @@
1
- {"version":3,"file":"instructions.mjs","sourceRoot":"","sources":["src/instructions.ts"],"names":[],"mappings":"AAAA,sFAAsF;OAE/E,EAAE,OAAO,EAAE;AAElB,MAAM,yBAAyB,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,aAAa;AAO/D,MAAM,iBAAiB,GAAG,IAAI,GAAG,EAAkC,CAAC;AAEpE,0EAA0E;AAC1E,MAAM,qBAAqB,GAAG,WAAW,CAAC,GAAG,EAAE;IAC7C,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACvB,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,iBAAiB,EAAE,CAAC;QAC7C,IAAI,GAAG,GAAG,KAAK,CAAC,SAAS,GAAG,yBAAyB,EAAE,CAAC;YACtD,iBAAiB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAChC,CAAC;IACH,CAAC;AACH,CAAC,EAAE,yBAAyB,CAAC,CAAC;AAE9B,iDAAiD;AACjD,qBAAqB,CAAC,KAAK,EAAE,CAAC;AAE9B,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,eAAmC;IACvE,MAAM,QAAQ,GAAG,eAAe,IAAI,EAAE,CAAC;IACvC,MAAM,MAAM,GAAG,iBAAiB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAE/C,IAAI,MAAM,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC,SAAS,IAAI,yBAAyB,EAAE,CAAC;QACzE,OAAO,MAAM,CAAC,mBAAmB,CAAC;IACpC,CAAC;IAED,MAAM,mBAAmB,GAAG,MAAM,uBAAuB,CAAC,eAAe,CAAC,CAAC;IAC3E,iBAAiB,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,mBAAmB,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IAChF,OAAO,mBAAmB,CAAC;AAC7B,CAAC;AAED,KAAK,UAAU,uBAAuB,CAAC,eAAmC;IACxE,iEAAiE;IACjE,iDAAiD;IACjD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAC1B,OAAO,CAAC,4BAA4B,CAAC,IAAI,uDAAuD,EAChG;QACE,MAAM,EAAE,KAAK;QACb,OAAO,EAAE,EAAE,GAAG,CAAC,eAAe,IAAI,EAAE,aAAa,EAAE,eAAe,EAAE,CAAC,EAAE;KACxE,CACF,CAAC;IAEF,IAAI,YAAgC,CAAC;IACrC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,OAAO,CAAC,IAAI,CACV,8FAA8F,CAC/F,CAAC;QAEF,YAAY,GAAG;;;;;;KAMd,CAAC;IACJ,CAAC;IAED,YAAY,KAAM,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAA8B,CAAC,YAAY,CAAC;IACpF,YAAY,GAAG;;;MAGX,YAAY;GACf,CAAC;IAEF,OAAO,YAAY,CAAC;AACtB,CAAC"}
1
+ {"version":3,"file":"instructions.mjs","sourceRoot":"","sources":["src/instructions.ts"],"names":[],"mappings":"AAAA,sFAAsF;OAE/E,EAAE,OAAO,EAAE;OACX,EAAE,SAAS,EAAE;AAEpB,MAAM,yBAAyB,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,aAAa;AAO/D,MAAM,iBAAiB,GAAG,IAAI,GAAG,EAAkC,CAAC;AAEpE,0EAA0E;AAC1E,MAAM,qBAAqB,GAAG,WAAW,CAAC,GAAG,EAAE;IAC7C,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACvB,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,iBAAiB,EAAE,CAAC;QAC7C,IAAI,GAAG,GAAG,KAAK,CAAC,SAAS,GAAG,yBAAyB,EAAE,CAAC;YACtD,iBAAiB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAChC,CAAC;IACH,CAAC;AACH,CAAC,EAAE,yBAAyB,CAAC,CAAC;AAE9B,iDAAiD;AACjD,qBAAqB,CAAC,KAAK,EAAE,CAAC;AAE9B,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,eAAmC;IACvE,MAAM,QAAQ,GAAG,eAAe,IAAI,EAAE,CAAC;IACvC,MAAM,MAAM,GAAG,iBAAiB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAE/C,IAAI,MAAM,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC,SAAS,IAAI,yBAAyB,EAAE,CAAC;QACzE,OAAO,MAAM,CAAC,mBAAmB,CAAC;IACpC,CAAC;IAED,MAAM,mBAAmB,GAAG,MAAM,uBAAuB,CAAC,eAAe,CAAC,CAAC;IAC3E,iBAAiB,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,mBAAmB,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IAChF,OAAO,mBAAmB,CAAC;AAC7B,CAAC;AAED,KAAK,UAAU,uBAAuB,CAAC,eAAmC;IACxE,iEAAiE;IACjE,iDAAiD;IACjD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAC1B,OAAO,CAAC,4BAA4B,CAAC,IAAI,uDAAuD,EAChG;QACE,MAAM,EAAE,KAAK;QACb,OAAO,EAAE,EAAE,GAAG,CAAC,eAAe,IAAI,EAAE,aAAa,EAAE,eAAe,EAAE,CAAC,EAAE;KACxE,CACF,CAAC;IAEF,IAAI,YAAgC,CAAC;IACrC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,SAAS,EAAE,CAAC,IAAI,CACd,8FAA8F,CAC/F,CAAC;QAEF,YAAY,GAAG;;;;;;KAMd,CAAC;IACJ,CAAC;IAED,YAAY,KAAM,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAA8B,CAAC,YAAY,CAAC;IACpF,YAAY,GAAG;;;MAGX,YAAY;GACf,CAAC;IAEF,OAAO,YAAY,CAAC;AACtB,CAAC"}
package/logger.d.mts ADDED
@@ -0,0 +1,7 @@
1
+ import { type Level, type Logger } from 'pino';
2
+ export declare function configureLogger({ level, pretty: usePretty }: {
3
+ level: Level;
4
+ pretty: boolean;
5
+ }): void;
6
+ export declare function getLogger(): Logger;
7
+ //# sourceMappingURL=logger.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.d.mts","sourceRoot":"","sources":["src/logger.ts"],"names":[],"mappings":"OAEO,EAAQ,KAAK,KAAK,EAAE,KAAK,MAAM,EAAE,MAAM,MAAM;AAKpD,wBAAgB,eAAe,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE;IAAE,KAAK,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,OAAO,CAAA;CAAE,GAAG,IAAI,CAarG;AAED,wBAAgB,SAAS,IAAI,MAAM,CAKlC"}
package/logger.d.ts ADDED
@@ -0,0 +1,7 @@
1
+ import { type Level, type Logger } from 'pino';
2
+ export declare function configureLogger({ level, pretty: usePretty }: {
3
+ level: Level;
4
+ pretty: boolean;
5
+ }): void;
6
+ export declare function getLogger(): Logger;
7
+ //# sourceMappingURL=logger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["src/logger.ts"],"names":[],"mappings":"OAEO,EAAQ,KAAK,KAAK,EAAE,KAAK,MAAM,EAAE,MAAM,MAAM;AAKpD,wBAAgB,eAAe,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE;IAAE,KAAK,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,OAAO,CAAA;CAAE,GAAG,IAAI,CAarG;AAED,wBAAgB,SAAS,IAAI,MAAM,CAKlC"}
package/logger.js ADDED
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ // File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
3
+ var __importDefault = (this && this.__importDefault) || function (mod) {
4
+ return (mod && mod.__esModule) ? mod : { "default": mod };
5
+ };
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.configureLogger = configureLogger;
8
+ exports.getLogger = getLogger;
9
+ const pino_1 = require("pino");
10
+ const pino_pretty_1 = __importDefault(require("pino-pretty"));
11
+ let _logger;
12
+ function configureLogger({ level, pretty: usePretty }) {
13
+ _logger = (0, pino_1.pino)({
14
+ level,
15
+ timestamp: pino_1.pino.stdTimeFunctions.isoTime,
16
+ formatters: {
17
+ level(label) {
18
+ return { level: label };
19
+ },
20
+ },
21
+ }, usePretty ? (0, pino_pretty_1.default)({ colorize: true, levelFirst: true, destination: 2 }) : process.stderr);
22
+ }
23
+ function getLogger() {
24
+ if (!_logger) {
25
+ throw new Error('Logger has not been configured. Call configureLogger() before using the logger.');
26
+ }
27
+ return _logger;
28
+ }
29
+ //# sourceMappingURL=logger.js.map
package/logger.js.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["src/logger.ts"],"names":[],"mappings":";AAAA,sFAAsF;;;;;AAOtF,0CAaC;AAED,8BAKC;AAzBD,+BAAqD;AACrD,8DAAiC;AAEjC,IAAI,OAA2B,CAAC;AAEhC,SAAgB,eAAe,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAqC;IAC7F,OAAO,GAAG,IAAA,WAAI,EACZ;QACE,KAAK;QACL,SAAS,EAAE,WAAI,CAAC,gBAAgB,CAAC,OAAO;QACxC,UAAU,EAAE;YACV,KAAK,CAAC,KAAK;gBACT,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;YAC1B,CAAC;SACF;KACF,EACD,SAAS,CAAC,CAAC,CAAC,IAAA,qBAAM,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAC1F,CAAC;AACJ,CAAC;AAED,SAAgB,SAAS;IACvB,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,iFAAiF,CAAC,CAAC;IACrG,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC"}
package/logger.mjs ADDED
@@ -0,0 +1,22 @@
1
+ // File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+ import { pino } from 'pino';
3
+ import pretty from 'pino-pretty';
4
+ let _logger;
5
+ export function configureLogger({ level, pretty: usePretty }) {
6
+ _logger = pino({
7
+ level,
8
+ timestamp: pino.stdTimeFunctions.isoTime,
9
+ formatters: {
10
+ level(label) {
11
+ return { level: label };
12
+ },
13
+ },
14
+ }, usePretty ? pretty({ colorize: true, levelFirst: true, destination: 2 }) : process.stderr);
15
+ }
16
+ export function getLogger() {
17
+ if (!_logger) {
18
+ throw new Error('Logger has not been configured. Call configureLogger() before using the logger.');
19
+ }
20
+ return _logger;
21
+ }
22
+ //# sourceMappingURL=logger.mjs.map
package/logger.mjs.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.mjs","sourceRoot":"","sources":["src/logger.ts"],"names":[],"mappings":"AAAA,sFAAsF;OAE/E,EAAE,IAAI,EAA2B,MAAM,MAAM;OAC7C,MAAM,MAAM,aAAa;AAEhC,IAAI,OAA2B,CAAC;AAEhC,MAAM,UAAU,eAAe,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAqC;IAC7F,OAAO,GAAG,IAAI,CACZ;QACE,KAAK;QACL,SAAS,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO;QACxC,UAAU,EAAE;YACV,KAAK,CAAC,KAAK;gBACT,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;YAC1B,CAAC;SACF;KACF,EACD,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAC1F,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,SAAS;IACvB,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,iFAAiF,CAAC,CAAC;IACrG,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC"}
package/methods.js CHANGED
@@ -89,16 +89,16 @@ exports.sdkMethods = [
89
89
  httpPath: '/v1/organizations/{organization_id}',
90
90
  },
91
91
  {
92
- clientCallName: 'client.organizations.auditLogs.list',
93
- fullyQualifiedName: 'organizations.auditLogs.list',
92
+ clientCallName: 'client.auditLogs.list',
93
+ fullyQualifiedName: 'auditLogs.list',
94
94
  httpMethod: 'get',
95
- httpPath: '/v1/organizations/{organization_id}/audit_logs',
95
+ httpPath: '/v1/audit_logs',
96
96
  },
97
97
  {
98
- clientCallName: 'client.organizations.auditLogs.get',
99
- fullyQualifiedName: 'organizations.auditLogs.get',
98
+ clientCallName: 'client.auditLogs.get',
99
+ fullyQualifiedName: 'auditLogs.get',
100
100
  httpMethod: 'get',
101
- httpPath: '/v1/organizations/{organization_id}/audit_logs/{audit_log_id}',
101
+ httpPath: '/v1/audit_logs/{audit_log_id}',
102
102
  },
103
103
  {
104
104
  clientCallName: 'client.projects.create',