@cyanheads/mcp-ts-core 0.12.4 → 0.12.6

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 (153) hide show
  1. package/AGENTS.md +26 -15
  2. package/CLAUDE.md +26 -15
  3. package/README.md +1 -1
  4. package/biome.json +1 -1
  5. package/changelog/0.12.x/0.12.5.md +18 -0
  6. package/changelog/0.12.x/0.12.6.md +44 -0
  7. package/dist/config/appRoot.d.ts +28 -0
  8. package/dist/config/appRoot.d.ts.map +1 -0
  9. package/dist/config/appRoot.js +141 -0
  10. package/dist/config/appRoot.js.map +1 -0
  11. package/dist/config/index.d.ts.map +1 -1
  12. package/dist/config/index.js +11 -39
  13. package/dist/config/index.js.map +1 -1
  14. package/dist/core/app.d.ts +2 -2
  15. package/dist/core/app.d.ts.map +1 -1
  16. package/dist/core/app.js +6 -2
  17. package/dist/core/app.js.map +1 -1
  18. package/dist/core/index.d.ts +5 -5
  19. package/dist/core/index.js +2 -2
  20. package/dist/core/worker.d.ts +1 -1
  21. package/dist/core/worker.js +1 -1
  22. package/dist/mcp-server/apps/appBuilders.d.ts +2 -2
  23. package/dist/mcp-server/apps/appBuilders.js +2 -2
  24. package/dist/mcp-server/cacheHints.d.ts +1 -1
  25. package/dist/mcp-server/prompts/prompt-registration.d.ts +1 -1
  26. package/dist/mcp-server/prompts/prompt-registration.js +1 -1
  27. package/dist/mcp-server/resources/resource-registration.d.ts +3 -3
  28. package/dist/mcp-server/resources/resource-registration.js +1 -1
  29. package/dist/mcp-server/resources/resourceSubscriptions.d.ts +1 -1
  30. package/dist/mcp-server/resources/utils/resourceHandlerFactory.d.ts +2 -2
  31. package/dist/mcp-server/resources/utils/resourceHandlerFactory.js +4 -4
  32. package/dist/mcp-server/server.d.ts +4 -4
  33. package/dist/mcp-server/server.js +1 -1
  34. package/dist/mcp-server/tools/tool-registration.d.ts +3 -3
  35. package/dist/mcp-server/tools/tool-registration.js +2 -2
  36. package/dist/mcp-server/tools/utils/disabled-tool.d.ts +1 -1
  37. package/dist/mcp-server/tools/utils/toolHandlerFactory.d.ts +1 -1
  38. package/dist/mcp-server/tools/utils/toolHandlerFactory.js +4 -4
  39. package/dist/mcp-server/transports/auth/authFactory.d.ts +1 -1
  40. package/dist/mcp-server/transports/auth/authFactory.js +2 -2
  41. package/dist/mcp-server/transports/auth/authMiddleware.d.ts +1 -1
  42. package/dist/mcp-server/transports/auth/authMiddleware.js +1 -1
  43. package/dist/mcp-server/transports/auth/lib/authUtils.js +1 -1
  44. package/dist/mcp-server/transports/auth/lib/claimParser.d.ts +1 -1
  45. package/dist/mcp-server/transports/auth/strategies/authStrategy.d.ts +1 -1
  46. package/dist/mcp-server/transports/auth/strategies/jwtStrategy.d.ts +2 -2
  47. package/dist/mcp-server/transports/auth/strategies/jwtStrategy.js +1 -1
  48. package/dist/mcp-server/transports/auth/strategies/oauthStrategy.d.ts +2 -2
  49. package/dist/mcp-server/transports/auth/strategies/oauthStrategy.js +1 -1
  50. package/dist/mcp-server/transports/http/httpErrorHandler.d.ts +1 -1
  51. package/dist/mcp-server/transports/http/httpServer.d.ts +1 -1
  52. package/dist/mcp-server/transports/http/httpServer.js +1 -1
  53. package/dist/mcp-server/transports/http/httpTransport.d.ts +3 -3
  54. package/dist/mcp-server/transports/http/httpTransport.js +12 -12
  55. package/dist/mcp-server/transports/http/landing-page/handler.d.ts +1 -1
  56. package/dist/mcp-server/transports/http/sessionStore.js +1 -1
  57. package/dist/mcp-server/transports/manager.d.ts +2 -2
  58. package/dist/mcp-server/transports/manager.js +3 -3
  59. package/dist/services/llm/providers/openrouter.provider.d.ts +1 -1
  60. package/dist/storage/core/StorageService.d.ts +1 -1
  61. package/dist/storage/core/StorageService.js +1 -1
  62. package/dist/storage/core/storageFactory.d.ts +2 -2
  63. package/dist/storage/core/storageFactory.js +6 -6
  64. package/dist/storage/core/storageValidation.d.ts.map +1 -1
  65. package/dist/storage/core/storageValidation.js +5 -3
  66. package/dist/storage/core/storageValidation.js.map +1 -1
  67. package/dist/storage/providers/cloudflare/d1Provider.d.ts +1 -1
  68. package/dist/storage/providers/cloudflare/d1Provider.js +1 -1
  69. package/dist/storage/providers/cloudflare/kvProvider.d.ts +1 -1
  70. package/dist/storage/providers/cloudflare/kvProvider.js +1 -1
  71. package/dist/storage/providers/cloudflare/r2Provider.d.ts +1 -1
  72. package/dist/storage/providers/cloudflare/r2Provider.js +1 -1
  73. package/dist/storage/providers/fileSystem/fileSystemProvider.d.ts +1 -1
  74. package/dist/storage/providers/fileSystem/fileSystemProvider.js +1 -1
  75. package/dist/storage/providers/inMemory/inMemoryProvider.d.ts +3 -1
  76. package/dist/storage/providers/inMemory/inMemoryProvider.d.ts.map +1 -1
  77. package/dist/storage/providers/inMemory/inMemoryProvider.js +11 -7
  78. package/dist/storage/providers/inMemory/inMemoryProvider.js.map +1 -1
  79. package/dist/storage/providers/supabase/supabaseProvider.d.ts +2 -2
  80. package/dist/storage/providers/supabase/supabaseProvider.js +1 -1
  81. package/dist/testing/fuzz.d.ts.map +1 -1
  82. package/dist/testing/fuzz.js +92 -53
  83. package/dist/testing/fuzz.js.map +1 -1
  84. package/dist/utils/formatting/diffFormatter.d.ts +2 -2
  85. package/dist/utils/formatting/diffFormatter.js +4 -4
  86. package/dist/utils/formatting/markdownBuilder.d.ts +8 -0
  87. package/dist/utils/formatting/markdownBuilder.d.ts.map +1 -1
  88. package/dist/utils/formatting/markdownBuilder.js +16 -1
  89. package/dist/utils/formatting/markdownBuilder.js.map +1 -1
  90. package/dist/utils/formatting/tableFormatter.d.ts +2 -2
  91. package/dist/utils/formatting/tableFormatter.js +3 -3
  92. package/dist/utils/formatting/treeFormatter.d.ts +3 -3
  93. package/dist/utils/formatting/treeFormatter.js +4 -4
  94. package/dist/utils/internal/error-handler/errorHandler.js +6 -6
  95. package/dist/utils/internal/error-handler/helpers.js +1 -1
  96. package/dist/utils/internal/error-handler/types.d.ts +1 -1
  97. package/dist/utils/internal/health.js +2 -2
  98. package/dist/utils/internal/lazyImport.js +1 -1
  99. package/dist/utils/internal/logger.d.ts +34 -3
  100. package/dist/utils/internal/logger.d.ts.map +1 -1
  101. package/dist/utils/internal/logger.js +87 -5
  102. package/dist/utils/internal/logger.js.map +1 -1
  103. package/dist/utils/internal/performance.d.ts +1 -1
  104. package/dist/utils/internal/performance.js +6 -6
  105. package/dist/utils/internal/requestContext.d.ts +1 -1
  106. package/dist/utils/internal/requestContext.js +2 -2
  107. package/dist/utils/metrics/tokenCounter.d.ts +1 -1
  108. package/dist/utils/metrics/tokenCounter.js +2 -2
  109. package/dist/utils/network/fetchWithTimeout.d.ts +1 -1
  110. package/dist/utils/network/fetchWithTimeout.js +6 -6
  111. package/dist/utils/network/httpError.js +1 -1
  112. package/dist/utils/network/retry.d.ts +1 -1
  113. package/dist/utils/network/retry.js +1 -1
  114. package/dist/utils/pagination/pagination.d.ts +2 -2
  115. package/dist/utils/pagination/pagination.js +4 -4
  116. package/dist/utils/parsing/csvParser.d.ts +4 -4
  117. package/dist/utils/parsing/csvParser.js +6 -6
  118. package/dist/utils/parsing/dateParser.d.ts +3 -3
  119. package/dist/utils/parsing/dateParser.js +6 -6
  120. package/dist/utils/parsing/frontmatterParser.d.ts +2 -2
  121. package/dist/utils/parsing/frontmatterParser.js +3 -3
  122. package/dist/utils/parsing/htmlExtractor.d.ts +3 -3
  123. package/dist/utils/parsing/htmlExtractor.js +5 -5
  124. package/dist/utils/parsing/jsonParser.d.ts +4 -4
  125. package/dist/utils/parsing/jsonParser.js +6 -6
  126. package/dist/utils/parsing/pdfParser.d.ts +2 -2
  127. package/dist/utils/parsing/pdfParser.js +4 -4
  128. package/dist/utils/parsing/xmlParser.d.ts +4 -4
  129. package/dist/utils/parsing/xmlParser.js +5 -5
  130. package/dist/utils/parsing/yamlParser.d.ts +4 -4
  131. package/dist/utils/parsing/yamlParser.js +6 -6
  132. package/dist/utils/scheduling/scheduler.d.ts +3 -3
  133. package/dist/utils/scheduling/scheduler.js +5 -5
  134. package/dist/utils/security/rateLimiter.d.ts +2 -2
  135. package/dist/utils/security/rateLimiter.js +3 -3
  136. package/dist/utils/security/rateLimiter.js.map +1 -1
  137. package/dist/utils/security/sanitization.d.ts +3 -3
  138. package/dist/utils/security/sanitization.js +7 -7
  139. package/dist/utils/telemetry/instrumentation.d.ts.map +1 -1
  140. package/dist/utils/telemetry/instrumentation.js +7 -8
  141. package/dist/utils/telemetry/instrumentation.js.map +1 -1
  142. package/dist/utils/telemetry/trace.d.ts +1 -1
  143. package/dist/utils/telemetry/trace.js +1 -1
  144. package/package.json +13 -7
  145. package/scripts/devcheck.ts +6 -4
  146. package/skills/api-config/SKILL.md +4 -2
  147. package/skills/api-utils/SKILL.md +2 -2
  148. package/skills/api-utils/references/formatting.md +1 -1
  149. package/skills/api-workers/SKILL.md +3 -3
  150. package/skills/setup/SKILL.md +14 -2
  151. package/templates/AGENTS.md +2 -2
  152. package/templates/CLAUDE.md +2 -2
  153. package/templates/_bunfig.toml +15 -0
@@ -4,7 +4,7 @@
4
4
  * @module src/utils/parsing/dateParser
5
5
  */
6
6
  import type * as chrono from 'chrono-node';
7
- import { type RequestContext } from '../../utils/internal/requestContext.js';
7
+ import { type RequestContext } from '../internal/requestContext.js';
8
8
  /**
9
9
  * Parses a natural language date string into a JavaScript `Date` object.
10
10
  *
@@ -57,8 +57,8 @@ export declare function parseDateStringDetailed(text: string, context: RequestCo
57
57
  *
58
58
  * @example
59
59
  * ```typescript
60
- * import { dateParser } from '../../utils/parsing/dateParser.js';
61
- * import { requestContextService } from '../../utils/internal/requestContext.js';
60
+ * import { dateParser } from './dateParser.js';
61
+ * import { requestContextService } from '../internal/requestContext.js';
62
62
  *
63
63
  * const ctx = requestContextService.createRequestContext({ operation: 'myOp' });
64
64
  *
@@ -1,8 +1,8 @@
1
1
  import { JsonRpcErrorCode } from '../../types-global/errors.js';
2
- import { ErrorHandler } from '../../utils/internal/error-handler/errorHandler.js';
3
- import { lazyImport } from '../../utils/internal/lazyImport.js';
4
- import { logger } from '../../utils/internal/logger.js';
5
- import { withExtra } from '../../utils/internal/requestContext.js';
2
+ import { ErrorHandler } from '../internal/error-handler/errorHandler.js';
3
+ import { lazyImport } from '../internal/lazyImport.js';
4
+ import { logger } from '../internal/logger.js';
5
+ import { withExtra } from '../internal/requestContext.js';
6
6
  const getChrono = lazyImport(() => import('chrono-node'), 'Install "chrono-node" to use date parsing: bun add chrono-node');
7
7
  /**
8
8
  * Parses a natural language date string into a JavaScript `Date` object.
@@ -95,8 +95,8 @@ export async function parseDateStringDetailed(text, context, refDate) {
95
95
  *
96
96
  * @example
97
97
  * ```typescript
98
- * import { dateParser } from '../../utils/parsing/dateParser.js';
99
- * import { requestContextService } from '../../utils/internal/requestContext.js';
98
+ * import { dateParser } from './dateParser.js';
99
+ * import { requestContextService } from '../internal/requestContext.js';
100
100
  *
101
101
  * const ctx = requestContextService.createRequestContext({ operation: 'myOp' });
102
102
  *
@@ -1,4 +1,4 @@
1
- import { type RequestContext } from '../../utils/internal/requestContext.js';
1
+ import { type RequestContext } from '../internal/requestContext.js';
2
2
  import { type ParserInputBudgetOptions } from './inputBudget.js';
3
3
  /**
4
4
  * Result of parsing markdown with frontmatter.
@@ -63,7 +63,7 @@ export declare class FrontmatterParser {
63
63
  * @example
64
64
  * ```typescript
65
65
  * import { frontmatterParser } from './frontmatterParser.js';
66
- * import { requestContextService } from '../../utils/internal/requestContext.js';
66
+ * import { requestContextService } from '../internal/requestContext.js';
67
67
  *
68
68
  * const context = requestContextService.createRequestContext({ operation: 'ParseObsidianNote' });
69
69
  *
@@ -5,8 +5,8 @@
5
5
  * @module src/utils/parsing/frontmatterParser
6
6
  */
7
7
  import { McpError, validationError } from '../../types-global/errors.js';
8
- import { logger } from '../../utils/internal/logger.js';
9
- import { requestContextService, withExtra, } from '../../utils/internal/requestContext.js';
8
+ import { logger } from '../internal/logger.js';
9
+ import { requestContextService, withExtra, } from '../internal/requestContext.js';
10
10
  import { assertTextInputBudget } from './inputBudget.js';
11
11
  import { yamlParser } from './yamlParser.js';
12
12
  /**
@@ -129,7 +129,7 @@ export class FrontmatterParser {
129
129
  * @example
130
130
  * ```typescript
131
131
  * import { frontmatterParser } from './frontmatterParser.js';
132
- * import { requestContextService } from '../../utils/internal/requestContext.js';
132
+ * import { requestContextService } from '../internal/requestContext.js';
133
133
  *
134
134
  * const context = requestContextService.createRequestContext({ operation: 'ParseObsidianNote' });
135
135
  *
@@ -1,4 +1,4 @@
1
- import { type RequestContext } from '../../utils/internal/requestContext.js';
1
+ import { type RequestContext } from '../internal/requestContext.js';
2
2
  /**
3
3
  * Options for HTML article extraction.
4
4
  */
@@ -113,7 +113,7 @@ export declare class HtmlExtractor {
113
113
  *
114
114
  * @example
115
115
  * ```typescript
116
- * import { htmlExtractor } from '../../utils/parsing/htmlExtractor.js';
116
+ * import { htmlExtractor } from './htmlExtractor.js';
117
117
  *
118
118
  * const html = await fetch('https://example.com/article').then((r) => r.text());
119
119
  * const result = await htmlExtractor.extract(html, {
@@ -136,7 +136,7 @@ export declare class HtmlExtractor {
136
136
  *
137
137
  * @example
138
138
  * ```typescript
139
- * import { htmlExtractor } from '../../utils/parsing/htmlExtractor.js';
139
+ * import { htmlExtractor } from './htmlExtractor.js';
140
140
  *
141
141
  * const article = await htmlExtractor.extract(rawHtml, {
142
142
  * url: 'https://example.com/post',
@@ -1,7 +1,7 @@
1
1
  import { McpError, validationError } from '../../types-global/errors.js';
2
- import { lazyImport } from '../../utils/internal/lazyImport.js';
3
- import { logger } from '../../utils/internal/logger.js';
4
- import { requestContextService, withExtra, } from '../../utils/internal/requestContext.js';
2
+ import { lazyImport } from '../internal/lazyImport.js';
3
+ import { logger } from '../internal/logger.js';
4
+ import { requestContextService, withExtra, } from '../internal/requestContext.js';
5
5
  import { assertTextInputBudget } from './inputBudget.js';
6
6
  const getDefuddle = lazyImport(() => import('defuddle/node'), 'Install "defuddle" to use HTML article extraction: bun add defuddle linkedom');
7
7
  const getLinkedom = lazyImport(() => import('linkedom'), 'Install "linkedom" to use HTML article extraction: bun add defuddle linkedom');
@@ -53,7 +53,7 @@ export class HtmlExtractor {
53
53
  *
54
54
  * @example
55
55
  * ```typescript
56
- * import { htmlExtractor } from '../../utils/parsing/htmlExtractor.js';
56
+ * import { htmlExtractor } from './htmlExtractor.js';
57
57
  *
58
58
  * const html = await fetch('https://example.com/article').then((r) => r.text());
59
59
  * const result = await htmlExtractor.extract(html, {
@@ -151,7 +151,7 @@ export class HtmlExtractor {
151
151
  *
152
152
  * @example
153
153
  * ```typescript
154
- * import { htmlExtractor } from '../../utils/parsing/htmlExtractor.js';
154
+ * import { htmlExtractor } from './htmlExtractor.js';
155
155
  *
156
156
  * const article = await htmlExtractor.extract(rawHtml, {
157
157
  * url: 'https://example.com/post',
@@ -1,4 +1,4 @@
1
- import { type RequestContext } from '../../utils/internal/requestContext.js';
1
+ import { type RequestContext } from '../internal/requestContext.js';
2
2
  import { type ParserInputBudgetOptions } from './inputBudget.js';
3
3
  /**
4
4
  * Bit flags specifying which partial JSON types are permissible during parsing.
@@ -77,7 +77,7 @@ export declare class JsonParser {
77
77
  * @throws {McpError} With `ConfigurationError` if the `partial-json` package is not installed.
78
78
  * @example
79
79
  * ```typescript
80
- * import { jsonParser, Allow } from '../../utils/parsing/jsonParser.js';
80
+ * import { jsonParser, Allow } from './jsonParser.js';
81
81
  *
82
82
  * // Parse complete JSON
83
83
  * const obj = await jsonParser.parse<{ key: string }>('{"key": "value"}');
@@ -99,8 +99,8 @@ export declare class JsonParser {
99
99
  *
100
100
  * @example
101
101
  * ```typescript
102
- * import { jsonParser, Allow } from '../../utils/parsing/jsonParser.js';
103
- * import { requestContextService } from '../../utils/internal/requestContext.js';
102
+ * import { jsonParser, Allow } from './jsonParser.js';
103
+ * import { requestContextService } from '../internal/requestContext.js';
104
104
  *
105
105
  * const ctx = requestContextService.createRequestContext({ operation: 'myOp' });
106
106
  *
@@ -5,9 +5,9 @@
5
5
  * @module src/utils/parsing/jsonParser
6
6
  */
7
7
  import { validationError } from '../../types-global/errors.js';
8
- import { lazyImport } from '../../utils/internal/lazyImport.js';
9
- import { logger } from '../../utils/internal/logger.js';
10
- import { requestContextService, withExtra, } from '../../utils/internal/requestContext.js';
8
+ import { lazyImport } from '../internal/lazyImport.js';
9
+ import { logger } from '../internal/logger.js';
10
+ import { requestContextService, withExtra, } from '../internal/requestContext.js';
11
11
  import { assertTextInputBudget } from './inputBudget.js';
12
12
  import { thinkBlockRegex } from './thinkBlock.js';
13
13
  const getPartialJson = lazyImport(() => import('partial-json'), 'Install "partial-json" to use partial JSON parsing: bun add partial-json');
@@ -88,7 +88,7 @@ export class JsonParser {
88
88
  * @throws {McpError} With `ConfigurationError` if the `partial-json` package is not installed.
89
89
  * @example
90
90
  * ```typescript
91
- * import { jsonParser, Allow } from '../../utils/parsing/jsonParser.js';
91
+ * import { jsonParser, Allow } from './jsonParser.js';
92
92
  *
93
93
  * // Parse complete JSON
94
94
  * const obj = await jsonParser.parse<{ key: string }>('{"key": "value"}');
@@ -149,8 +149,8 @@ export class JsonParser {
149
149
  *
150
150
  * @example
151
151
  * ```typescript
152
- * import { jsonParser, Allow } from '../../utils/parsing/jsonParser.js';
153
- * import { requestContextService } from '../../utils/internal/requestContext.js';
152
+ * import { jsonParser, Allow } from './jsonParser.js';
153
+ * import { requestContextService } from '../internal/requestContext.js';
154
154
  *
155
155
  * const ctx = requestContextService.createRequestContext({ operation: 'myOp' });
156
156
  *
@@ -5,7 +5,7 @@
5
5
  * @module src/utils/parsing/pdfParser
6
6
  */
7
7
  import type { PDFDocument, PDFFont, PDFImage, PDFPage, RGB } from 'pdf-lib';
8
- import { type RequestContext } from '../../utils/internal/requestContext.js';
8
+ import { type RequestContext } from '../internal/requestContext.js';
9
9
  import { type ParserInputBudgetOptions } from './inputBudget.js';
10
10
  /**
11
11
  * Options for adding a new page to a PDF document.
@@ -564,7 +564,7 @@ export declare class PdfParser {
564
564
  *
565
565
  * @example
566
566
  * ```typescript
567
- * import { pdfParser } from '../../utils/parsing/pdfParser.js';
567
+ * import { pdfParser } from './pdfParser.js';
568
568
  * import { writeFile } from 'node:fs/promises';
569
569
  *
570
570
  * const doc = await pdfParser.createDocument();
@@ -1,7 +1,7 @@
1
1
  import { JsonRpcErrorCode, McpError } from '../../types-global/errors.js';
2
- import { lazyImport } from '../../utils/internal/lazyImport.js';
3
- import { logger } from '../../utils/internal/logger.js';
4
- import { requestContextService, withExtra, } from '../../utils/internal/requestContext.js';
2
+ import { lazyImport } from '../internal/lazyImport.js';
3
+ import { logger } from '../internal/logger.js';
4
+ import { requestContextService, withExtra, } from '../internal/requestContext.js';
5
5
  import { assertBinaryInputBudget, assertBinaryInputsBudget, } from './inputBudget.js';
6
6
  const getPdfLib = lazyImport(() => import('pdf-lib'), 'Install "pdf-lib" to use PDF operations: bun add pdf-lib');
7
7
  const getUnpdf = lazyImport(() => import('unpdf'), 'Install "unpdf" to use PDF text extraction: bun add unpdf');
@@ -694,7 +694,7 @@ export class PdfParser {
694
694
  *
695
695
  * @example
696
696
  * ```typescript
697
- * import { pdfParser } from '../../utils/parsing/pdfParser.js';
697
+ * import { pdfParser } from './pdfParser.js';
698
698
  * import { writeFile } from 'node:fs/promises';
699
699
  *
700
700
  * const doc = await pdfParser.createDocument();
@@ -1,4 +1,4 @@
1
- import { type RequestContext } from '../../utils/internal/requestContext.js';
1
+ import { type RequestContext } from '../internal/requestContext.js';
2
2
  import { type ParserInputBudgetOptions } from './inputBudget.js';
3
3
  /**
4
4
  * Utility class for parsing XML strings.
@@ -30,7 +30,7 @@ export declare class XmlParser {
30
30
  * the `<think>` block, or if `fast-xml-parser` throws during parsing.
31
31
  * @example
32
32
  * ```typescript
33
- * import { xmlParser } from '../../utils/parsing/xmlParser.js';
33
+ * import { xmlParser } from './xmlParser.js';
34
34
  *
35
35
  * const result = await xmlParser.parse<{ root: { key: string } }>('<root><key>value</key></root>');
36
36
  * console.log(result.root.key); // 'value'
@@ -51,14 +51,14 @@ export declare class XmlParser {
51
51
  *
52
52
  * @example
53
53
  * ```typescript
54
- * import { xmlParser } from '../../utils/parsing/xmlParser.js';
54
+ * import { xmlParser } from './xmlParser.js';
55
55
  *
56
56
  * // Basic parse
57
57
  * const result = await xmlParser.parse<{ root: { id: string } }>('<root><id>42</id></root>');
58
58
  * console.log(result.root.id); // '42'
59
59
  *
60
60
  * // With request context for correlated logging
61
- * import { requestContextService } from '../../utils/internal/requestContext.js';
61
+ * import { requestContextService } from '../internal/requestContext.js';
62
62
  * const ctx = requestContextService.createRequestContext({ operation: 'parseResponse' });
63
63
  * const data = await xmlParser.parse<ApiResponse>(rawXml, ctx);
64
64
  *
@@ -9,8 +9,8 @@
9
9
  * @module src/utils/parsing/xmlParser
10
10
  */
11
11
  import { configurationError, validationError } from '../../types-global/errors.js';
12
- import { logger } from '../../utils/internal/logger.js';
13
- import { requestContextService, withExtra, } from '../../utils/internal/requestContext.js';
12
+ import { logger } from '../internal/logger.js';
13
+ import { requestContextService, withExtra, } from '../internal/requestContext.js';
14
14
  import { assertTextInputBudget } from './inputBudget.js';
15
15
  import { thinkBlockRegex } from './thinkBlock.js';
16
16
  let _fxp;
@@ -54,7 +54,7 @@ export class XmlParser {
54
54
  * the `<think>` block, or if `fast-xml-parser` throws during parsing.
55
55
  * @example
56
56
  * ```typescript
57
- * import { xmlParser } from '../../utils/parsing/xmlParser.js';
57
+ * import { xmlParser } from './xmlParser.js';
58
58
  *
59
59
  * const result = await xmlParser.parse<{ root: { key: string } }>('<root><key>value</key></root>');
60
60
  * console.log(result.root.key); // 'value'
@@ -118,14 +118,14 @@ export class XmlParser {
118
118
  *
119
119
  * @example
120
120
  * ```typescript
121
- * import { xmlParser } from '../../utils/parsing/xmlParser.js';
121
+ * import { xmlParser } from './xmlParser.js';
122
122
  *
123
123
  * // Basic parse
124
124
  * const result = await xmlParser.parse<{ root: { id: string } }>('<root><id>42</id></root>');
125
125
  * console.log(result.root.id); // '42'
126
126
  *
127
127
  * // With request context for correlated logging
128
- * import { requestContextService } from '../../utils/internal/requestContext.js';
128
+ * import { requestContextService } from '../internal/requestContext.js';
129
129
  * const ctx = requestContextService.createRequestContext({ operation: 'parseResponse' });
130
130
  * const data = await xmlParser.parse<ApiResponse>(rawXml, ctx);
131
131
  *
@@ -1,4 +1,4 @@
1
- import { type RequestContext } from '../../utils/internal/requestContext.js';
1
+ import { type RequestContext } from '../internal/requestContext.js';
2
2
  import { type ParserInputBudgetOptions } from './inputBudget.js';
3
3
  /**
4
4
  * Utility class for parsing YAML strings.
@@ -26,7 +26,7 @@ export declare class YamlParser {
26
26
  * the `<think>` block, or if `js-yaml` fails to parse the content.
27
27
  * @example
28
28
  * ```typescript
29
- * import { yamlParser } from '../../utils/parsing/yamlParser.js';
29
+ * import { yamlParser } from './yamlParser.js';
30
30
  *
31
31
  * const result = await yamlParser.parse<{ key: string }>('key: value');
32
32
  * console.log(result.key); // 'value'
@@ -46,14 +46,14 @@ export declare class YamlParser {
46
46
  *
47
47
  * @example
48
48
  * ```typescript
49
- * import { yamlParser } from '../../utils/parsing/yamlParser.js';
49
+ * import { yamlParser } from './yamlParser.js';
50
50
  *
51
51
  * // Basic parse
52
52
  * const result = await yamlParser.parse<{ name: string }>('name: Claude');
53
53
  * console.log(result.name); // 'Claude'
54
54
  *
55
55
  * // With request context for correlated logging
56
- * import { requestContextService } from '../../utils/internal/requestContext.js';
56
+ * import { requestContextService } from '../internal/requestContext.js';
57
57
  * const ctx = requestContextService.createRequestContext({ operation: 'parseConfig' });
58
58
  * const config = await yamlParser.parse<AppConfig>(rawYaml, ctx);
59
59
  *
@@ -8,9 +8,9 @@
8
8
  * @module src/utils/parsing/yamlParser
9
9
  */
10
10
  import { validationError } from '../../types-global/errors.js';
11
- import { lazyImport } from '../../utils/internal/lazyImport.js';
12
- import { logger } from '../../utils/internal/logger.js';
13
- import { requestContextService, withExtra, } from '../../utils/internal/requestContext.js';
11
+ import { lazyImport } from '../internal/lazyImport.js';
12
+ import { logger } from '../internal/logger.js';
13
+ import { requestContextService, withExtra, } from '../internal/requestContext.js';
14
14
  import { assertTextInputBudget } from './inputBudget.js';
15
15
  import { thinkBlockRegex } from './thinkBlock.js';
16
16
  const getYaml = lazyImport(() => import('js-yaml'), 'Install "js-yaml" to use YAML parsing: bun add js-yaml');
@@ -40,7 +40,7 @@ export class YamlParser {
40
40
  * the `<think>` block, or if `js-yaml` fails to parse the content.
41
41
  * @example
42
42
  * ```typescript
43
- * import { yamlParser } from '../../utils/parsing/yamlParser.js';
43
+ * import { yamlParser } from './yamlParser.js';
44
44
  *
45
45
  * const result = await yamlParser.parse<{ key: string }>('key: value');
46
46
  * console.log(result.key); // 'value'
@@ -102,14 +102,14 @@ export class YamlParser {
102
102
  *
103
103
  * @example
104
104
  * ```typescript
105
- * import { yamlParser } from '../../utils/parsing/yamlParser.js';
105
+ * import { yamlParser } from './yamlParser.js';
106
106
  *
107
107
  * // Basic parse
108
108
  * const result = await yamlParser.parse<{ name: string }>('name: Claude');
109
109
  * console.log(result.name); // 'Claude'
110
110
  *
111
111
  * // With request context for correlated logging
112
- * import { requestContextService } from '../../utils/internal/requestContext.js';
112
+ * import { requestContextService } from '../internal/requestContext.js';
113
113
  * const ctx = requestContextService.createRequestContext({ operation: 'parseConfig' });
114
114
  * const config = await yamlParser.parse<AppConfig>(rawYaml, ctx);
115
115
  *
@@ -13,7 +13,7 @@
13
13
  * @module src/utils/scheduling/scheduler
14
14
  */
15
15
  import type { ScheduledTask } from 'node-cron';
16
- import type { RequestContext } from '../../utils/internal/requestContext.js';
16
+ import type { RequestContext } from '../internal/requestContext.js';
17
17
  /**
18
18
  * Represents a scheduled job managed by the {@link SchedulerService}.
19
19
  *
@@ -51,7 +51,7 @@ export interface Job {
51
51
  * instantiating this class directly.
52
52
  *
53
53
  * @example
54
- * import { schedulerService } from '../../utils/scheduling/scheduler.js';
54
+ * import { schedulerService } from './scheduler.js';
55
55
  *
56
56
  * await schedulerService.schedule(
57
57
  * 'cleanup',
@@ -182,7 +182,7 @@ export declare class SchedulerService {
182
182
  * `SchedulerService.getInstance()` directly.
183
183
  *
184
184
  * @example
185
- * import { schedulerService } from '../../utils/scheduling/scheduler.js';
185
+ * import { schedulerService } from './scheduler.js';
186
186
  *
187
187
  * await schedulerService.schedule('heartbeat', '* * * * *', heartbeatFn, 'Heartbeat');
188
188
  * schedulerService.start('heartbeat');
@@ -1,7 +1,7 @@
1
1
  import { configurationError, conflict, invalidParams, notFound } from '../../types-global/errors.js';
2
- import { logger } from '../../utils/internal/logger.js';
3
- import { requestContextService } from '../../utils/internal/requestContext.js';
4
- import { runtimeCaps } from '../../utils/internal/runtime.js';
2
+ import { logger } from '../internal/logger.js';
3
+ import { requestContextService } from '../internal/requestContext.js';
4
+ import { runtimeCaps } from '../internal/runtime.js';
5
5
  /**
6
6
  * Lazily loads the `node-cron` module on first call and caches the resulting
7
7
  * promise so subsequent calls resolve from the same import. Throws
@@ -35,7 +35,7 @@ async function loadCron() {
35
35
  * instantiating this class directly.
36
36
  *
37
37
  * @example
38
- * import { schedulerService } from '../../utils/scheduling/scheduler.js';
38
+ * import { schedulerService } from './scheduler.js';
39
39
  *
40
40
  * await schedulerService.schedule(
41
41
  * 'cleanup',
@@ -268,7 +268,7 @@ export class SchedulerService {
268
268
  * `SchedulerService.getInstance()` directly.
269
269
  *
270
270
  * @example
271
- * import { schedulerService } from '../../utils/scheduling/scheduler.js';
271
+ * import { schedulerService } from './scheduler.js';
272
272
  *
273
273
  * await schedulerService.schedule('heartbeat', '* * * * *', heartbeatFn, 'Heartbeat');
274
274
  * schedulerService.start('heartbeat');
@@ -1,6 +1,6 @@
1
1
  import type { config as ConfigType } from '../../config/index.js';
2
- import type { logger as LoggerType } from '../../utils/internal/logger.js';
3
- import { type RequestContext } from '../../utils/internal/requestContext.js';
2
+ import type { logger as LoggerType } from '../internal/logger.js';
3
+ import { type RequestContext } from '../internal/requestContext.js';
4
4
  /** Eagerly creates the rate limit rejection counter so the series exists from startup. */
5
5
  export declare function initRateLimitMetrics(): void;
6
6
  /**
@@ -5,8 +5,8 @@
5
5
  */
6
6
  import { trace } from '@opentelemetry/api';
7
7
  import { rateLimited } from '../../types-global/errors.js';
8
- import { requestContextService } from '../../utils/internal/requestContext.js';
9
- import { createCounter } from '../../utils/telemetry/metrics.js';
8
+ import { requestContextService } from '../internal/requestContext.js';
9
+ import { createCounter } from '../telemetry/metrics.js';
10
10
  let rejectionCounter;
11
11
  function getRateLimitMetrics() {
12
12
  rejectionCounter ??= createCounter('mcp.ratelimit.rejections', 'Rate limit rejections', '{rejections}');
@@ -82,7 +82,7 @@ export class RateLimiter {
82
82
  oldestKey = key;
83
83
  }
84
84
  }
85
- if (oldestKey) {
85
+ if (oldestKey !== null) {
86
86
  this.limits.delete(oldestKey);
87
87
  const logContext = requestContextService.createRequestContext({
88
88
  operation: 'RateLimiter.evictLRUEntry',
@@ -1 +1 @@
1
- {"version":3,"file":"rateLimiter.js","sourceRoot":"","sources":["../../../src/utils/security/rateLimiter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"rateLimiter.js","sourceRoot":"","sources":["../../../src/utils/security/rateLimiter.ts"],"names":[],"mappings":"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"}
@@ -104,7 +104,7 @@ export interface HtmlSanitizeConfig {
104
104
  *
105
105
  * @example
106
106
  * ```ts
107
- * import { sanitization } from '../../utils/security/sanitization.js';
107
+ * import { sanitization } from './sanitization.js';
108
108
  *
109
109
  * const clean = await sanitization.sanitizeHtml('<script>alert(1)</script><b>hi</b>');
110
110
  * // => '<b>hi</b>'
@@ -407,7 +407,7 @@ export declare class Sanitization {
407
407
  *
408
408
  * @example
409
409
  * ```ts
410
- * import { sanitization } from '../../utils/security/sanitization.js';
410
+ * import { sanitization } from './sanitization.js';
411
411
  * const safe = await sanitization.sanitizeHtml(userHtml);
412
412
  * ```
413
413
  */
@@ -421,7 +421,7 @@ export declare const sanitization: Sanitization;
421
421
  * or `'[Log Sanitization Failed]'` on clone error.
422
422
  * @example
423
423
  * ```ts
424
- * import { sanitizeInputForLogging } from '../../utils/security/sanitization.js';
424
+ * import { sanitizeInputForLogging } from './sanitization.js';
425
425
  * logger.info('Request', sanitizeInputForLogging({ user: 'alice', token: 'secret' }));
426
426
  * // logs: { user: 'alice', token: '[REDACTED]' }
427
427
  * ```
@@ -1,8 +1,8 @@
1
1
  import { configurationError, JsonRpcErrorCode, McpError, validationError, } from '../../types-global/errors.js';
2
- import { logger } from '../../utils/internal/logger.js';
3
- import { requestContextService } from '../../utils/internal/requestContext.js';
4
- import { runtimeCaps } from '../../utils/internal/runtime.js';
5
- import { isRecord } from '../../utils/types/guards.js';
2
+ import { logger } from '../internal/logger.js';
3
+ import { requestContextService } from '../internal/requestContext.js';
4
+ import { runtimeCaps } from '../internal/runtime.js';
5
+ import { isRecord } from '../types/guards.js';
6
6
  let _sanitizeHtmlFn;
7
7
  async function loadSanitizeHtml() {
8
8
  _sanitizeHtmlFn ??= (await import('sanitize-html').catch(() => {
@@ -38,7 +38,7 @@ if (runtimeCaps.isNode) {
38
38
  *
39
39
  * @example
40
40
  * ```ts
41
- * import { sanitization } from '../../utils/security/sanitization.js';
41
+ * import { sanitization } from './sanitization.js';
42
42
  *
43
43
  * const clean = await sanitization.sanitizeHtml('<script>alert(1)</script><b>hi</b>');
44
44
  * // => '<b>hi</b>'
@@ -741,7 +741,7 @@ export class Sanitization {
741
741
  *
742
742
  * @example
743
743
  * ```ts
744
- * import { sanitization } from '../../utils/security/sanitization.js';
744
+ * import { sanitization } from './sanitization.js';
745
745
  * const safe = await sanitization.sanitizeHtml(userHtml);
746
746
  * ```
747
747
  */
@@ -755,7 +755,7 @@ export const sanitization = Sanitization.getInstance();
755
755
  * or `'[Log Sanitization Failed]'` on clone error.
756
756
  * @example
757
757
  * ```ts
758
- * import { sanitizeInputForLogging } from '../../utils/security/sanitization.js';
758
+ * import { sanitizeInputForLogging } from './sanitization.js';
759
759
  * logger.info('Request', sanitizeInputForLogging({ user: 'alice', token: 'secret' }));
760
760
  * // logs: { user: 'alice', token: '[REDACTED]' }
761
761
  * ```
@@ -1 +1 @@
1
- {"version":3,"file":"instrumentation.d.ts","sourceRoot":"","sources":["../../../src/utils/telemetry/instrumentation.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAKvD;;;;;GAKG;AACH,eAAO,IAAI,GAAG,EAAE,OAAO,GAAG,IAAW,CAAC;AAmEtC;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAsB,uBAAuB,IAAI,OAAO,CAAC,IAAI,CAAC,CAsH7D;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAsB,qBAAqB,CAAC,SAAS,SAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CA2B3E"}
1
+ {"version":3,"file":"instrumentation.d.ts","sourceRoot":"","sources":["../../../src/utils/telemetry/instrumentation.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAKvD;;;;;GAKG;AACH,eAAO,IAAI,GAAG,EAAE,OAAO,GAAG,IAAW,CAAC;AAmEtC;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAsB,uBAAuB,IAAI,OAAO,CAAC,IAAI,CAAC,CAsH7D;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAsB,qBAAqB,CAAC,SAAS,SAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAsB3E"}
@@ -6,7 +6,7 @@
6
6
  */
7
7
  import { DiagConsoleLogger, DiagLogLevel, diag } from '@opentelemetry/api';
8
8
  import { config } from '../../config/index.js';
9
- import { runtimeCaps } from '../../utils/internal/runtime.js';
9
+ import { runtimeCaps } from '../internal/runtime.js';
10
10
  /**
11
11
  * The active OpenTelemetry `NodeSDK` instance, or `null` when telemetry is disabled,
12
12
  * the runtime is not Node/Bun, or the SDK has been shut down.
@@ -211,15 +211,13 @@ export async function shutdownOpenTelemetry(timeoutMs = 5000) {
211
211
  if (!sdk) {
212
212
  return;
213
213
  }
214
+ let timer;
214
215
  try {
215
216
  const shutdownPromise = sdk.shutdown();
216
- // Attach a no-op catch so the promise doesn't become an unhandled rejection
217
- // if the timeout wins the race and sdk.shutdown() later rejects.
218
- shutdownPromise.catch(() => { });
219
- const { promise: timeoutPromise, reject } = Promise.withResolvers();
220
- const timer = setTimeout(() => reject(new Error('OpenTelemetry SDK shutdown timeout')), timeoutMs);
221
- await Promise.race([shutdownPromise, timeoutPromise]);
222
- clearTimeout(timer);
217
+ await new Promise((resolve, reject) => {
218
+ timer = setTimeout(() => reject(new Error('OpenTelemetry SDK shutdown timeout')), timeoutMs);
219
+ shutdownPromise.then(resolve, reject);
220
+ });
223
221
  diag.info('OpenTelemetry SDK terminated successfully.');
224
222
  }
225
223
  catch (error) {
@@ -227,6 +225,7 @@ export async function shutdownOpenTelemetry(timeoutMs = 5000) {
227
225
  throw error; // Propagate for caller handling
228
226
  }
229
227
  finally {
228
+ clearTimeout(timer);
230
229
  sdk = null;
231
230
  isOtelInitialized = false;
232
231
  initializationPromise = null;