@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.
- package/AGENTS.md +26 -15
- package/CLAUDE.md +26 -15
- package/README.md +1 -1
- package/biome.json +1 -1
- package/changelog/0.12.x/0.12.5.md +18 -0
- package/changelog/0.12.x/0.12.6.md +44 -0
- package/dist/config/appRoot.d.ts +28 -0
- package/dist/config/appRoot.d.ts.map +1 -0
- package/dist/config/appRoot.js +141 -0
- package/dist/config/appRoot.js.map +1 -0
- package/dist/config/index.d.ts.map +1 -1
- package/dist/config/index.js +11 -39
- package/dist/config/index.js.map +1 -1
- package/dist/core/app.d.ts +2 -2
- package/dist/core/app.d.ts.map +1 -1
- package/dist/core/app.js +6 -2
- package/dist/core/app.js.map +1 -1
- package/dist/core/index.d.ts +5 -5
- package/dist/core/index.js +2 -2
- package/dist/core/worker.d.ts +1 -1
- package/dist/core/worker.js +1 -1
- package/dist/mcp-server/apps/appBuilders.d.ts +2 -2
- package/dist/mcp-server/apps/appBuilders.js +2 -2
- package/dist/mcp-server/cacheHints.d.ts +1 -1
- package/dist/mcp-server/prompts/prompt-registration.d.ts +1 -1
- package/dist/mcp-server/prompts/prompt-registration.js +1 -1
- package/dist/mcp-server/resources/resource-registration.d.ts +3 -3
- package/dist/mcp-server/resources/resource-registration.js +1 -1
- package/dist/mcp-server/resources/resourceSubscriptions.d.ts +1 -1
- package/dist/mcp-server/resources/utils/resourceHandlerFactory.d.ts +2 -2
- package/dist/mcp-server/resources/utils/resourceHandlerFactory.js +4 -4
- package/dist/mcp-server/server.d.ts +4 -4
- package/dist/mcp-server/server.js +1 -1
- package/dist/mcp-server/tools/tool-registration.d.ts +3 -3
- package/dist/mcp-server/tools/tool-registration.js +2 -2
- package/dist/mcp-server/tools/utils/disabled-tool.d.ts +1 -1
- package/dist/mcp-server/tools/utils/toolHandlerFactory.d.ts +1 -1
- package/dist/mcp-server/tools/utils/toolHandlerFactory.js +4 -4
- package/dist/mcp-server/transports/auth/authFactory.d.ts +1 -1
- package/dist/mcp-server/transports/auth/authFactory.js +2 -2
- package/dist/mcp-server/transports/auth/authMiddleware.d.ts +1 -1
- package/dist/mcp-server/transports/auth/authMiddleware.js +1 -1
- package/dist/mcp-server/transports/auth/lib/authUtils.js +1 -1
- package/dist/mcp-server/transports/auth/lib/claimParser.d.ts +1 -1
- package/dist/mcp-server/transports/auth/strategies/authStrategy.d.ts +1 -1
- package/dist/mcp-server/transports/auth/strategies/jwtStrategy.d.ts +2 -2
- package/dist/mcp-server/transports/auth/strategies/jwtStrategy.js +1 -1
- package/dist/mcp-server/transports/auth/strategies/oauthStrategy.d.ts +2 -2
- package/dist/mcp-server/transports/auth/strategies/oauthStrategy.js +1 -1
- package/dist/mcp-server/transports/http/httpErrorHandler.d.ts +1 -1
- package/dist/mcp-server/transports/http/httpServer.d.ts +1 -1
- package/dist/mcp-server/transports/http/httpServer.js +1 -1
- package/dist/mcp-server/transports/http/httpTransport.d.ts +3 -3
- package/dist/mcp-server/transports/http/httpTransport.js +12 -12
- package/dist/mcp-server/transports/http/landing-page/handler.d.ts +1 -1
- package/dist/mcp-server/transports/http/sessionStore.js +1 -1
- package/dist/mcp-server/transports/manager.d.ts +2 -2
- package/dist/mcp-server/transports/manager.js +3 -3
- package/dist/services/llm/providers/openrouter.provider.d.ts +1 -1
- package/dist/storage/core/StorageService.d.ts +1 -1
- package/dist/storage/core/StorageService.js +1 -1
- package/dist/storage/core/storageFactory.d.ts +2 -2
- package/dist/storage/core/storageFactory.js +6 -6
- package/dist/storage/core/storageValidation.d.ts.map +1 -1
- package/dist/storage/core/storageValidation.js +5 -3
- package/dist/storage/core/storageValidation.js.map +1 -1
- package/dist/storage/providers/cloudflare/d1Provider.d.ts +1 -1
- package/dist/storage/providers/cloudflare/d1Provider.js +1 -1
- package/dist/storage/providers/cloudflare/kvProvider.d.ts +1 -1
- package/dist/storage/providers/cloudflare/kvProvider.js +1 -1
- package/dist/storage/providers/cloudflare/r2Provider.d.ts +1 -1
- package/dist/storage/providers/cloudflare/r2Provider.js +1 -1
- package/dist/storage/providers/fileSystem/fileSystemProvider.d.ts +1 -1
- package/dist/storage/providers/fileSystem/fileSystemProvider.js +1 -1
- package/dist/storage/providers/inMemory/inMemoryProvider.d.ts +3 -1
- package/dist/storage/providers/inMemory/inMemoryProvider.d.ts.map +1 -1
- package/dist/storage/providers/inMemory/inMemoryProvider.js +11 -7
- package/dist/storage/providers/inMemory/inMemoryProvider.js.map +1 -1
- package/dist/storage/providers/supabase/supabaseProvider.d.ts +2 -2
- package/dist/storage/providers/supabase/supabaseProvider.js +1 -1
- package/dist/testing/fuzz.d.ts.map +1 -1
- package/dist/testing/fuzz.js +92 -53
- package/dist/testing/fuzz.js.map +1 -1
- package/dist/utils/formatting/diffFormatter.d.ts +2 -2
- package/dist/utils/formatting/diffFormatter.js +4 -4
- package/dist/utils/formatting/markdownBuilder.d.ts +8 -0
- package/dist/utils/formatting/markdownBuilder.d.ts.map +1 -1
- package/dist/utils/formatting/markdownBuilder.js +16 -1
- package/dist/utils/formatting/markdownBuilder.js.map +1 -1
- package/dist/utils/formatting/tableFormatter.d.ts +2 -2
- package/dist/utils/formatting/tableFormatter.js +3 -3
- package/dist/utils/formatting/treeFormatter.d.ts +3 -3
- package/dist/utils/formatting/treeFormatter.js +4 -4
- package/dist/utils/internal/error-handler/errorHandler.js +6 -6
- package/dist/utils/internal/error-handler/helpers.js +1 -1
- package/dist/utils/internal/error-handler/types.d.ts +1 -1
- package/dist/utils/internal/health.js +2 -2
- package/dist/utils/internal/lazyImport.js +1 -1
- package/dist/utils/internal/logger.d.ts +34 -3
- package/dist/utils/internal/logger.d.ts.map +1 -1
- package/dist/utils/internal/logger.js +87 -5
- package/dist/utils/internal/logger.js.map +1 -1
- package/dist/utils/internal/performance.d.ts +1 -1
- package/dist/utils/internal/performance.js +6 -6
- package/dist/utils/internal/requestContext.d.ts +1 -1
- package/dist/utils/internal/requestContext.js +2 -2
- package/dist/utils/metrics/tokenCounter.d.ts +1 -1
- package/dist/utils/metrics/tokenCounter.js +2 -2
- package/dist/utils/network/fetchWithTimeout.d.ts +1 -1
- package/dist/utils/network/fetchWithTimeout.js +6 -6
- package/dist/utils/network/httpError.js +1 -1
- package/dist/utils/network/retry.d.ts +1 -1
- package/dist/utils/network/retry.js +1 -1
- package/dist/utils/pagination/pagination.d.ts +2 -2
- package/dist/utils/pagination/pagination.js +4 -4
- package/dist/utils/parsing/csvParser.d.ts +4 -4
- package/dist/utils/parsing/csvParser.js +6 -6
- package/dist/utils/parsing/dateParser.d.ts +3 -3
- package/dist/utils/parsing/dateParser.js +6 -6
- package/dist/utils/parsing/frontmatterParser.d.ts +2 -2
- package/dist/utils/parsing/frontmatterParser.js +3 -3
- package/dist/utils/parsing/htmlExtractor.d.ts +3 -3
- package/dist/utils/parsing/htmlExtractor.js +5 -5
- package/dist/utils/parsing/jsonParser.d.ts +4 -4
- package/dist/utils/parsing/jsonParser.js +6 -6
- package/dist/utils/parsing/pdfParser.d.ts +2 -2
- package/dist/utils/parsing/pdfParser.js +4 -4
- package/dist/utils/parsing/xmlParser.d.ts +4 -4
- package/dist/utils/parsing/xmlParser.js +5 -5
- package/dist/utils/parsing/yamlParser.d.ts +4 -4
- package/dist/utils/parsing/yamlParser.js +6 -6
- package/dist/utils/scheduling/scheduler.d.ts +3 -3
- package/dist/utils/scheduling/scheduler.js +5 -5
- package/dist/utils/security/rateLimiter.d.ts +2 -2
- package/dist/utils/security/rateLimiter.js +3 -3
- package/dist/utils/security/rateLimiter.js.map +1 -1
- package/dist/utils/security/sanitization.d.ts +3 -3
- package/dist/utils/security/sanitization.js +7 -7
- package/dist/utils/telemetry/instrumentation.d.ts.map +1 -1
- package/dist/utils/telemetry/instrumentation.js +7 -8
- package/dist/utils/telemetry/instrumentation.js.map +1 -1
- package/dist/utils/telemetry/trace.d.ts +1 -1
- package/dist/utils/telemetry/trace.js +1 -1
- package/package.json +13 -7
- package/scripts/devcheck.ts +6 -4
- package/skills/api-config/SKILL.md +4 -2
- package/skills/api-utils/SKILL.md +2 -2
- package/skills/api-utils/references/formatting.md +1 -1
- package/skills/api-workers/SKILL.md +3 -3
- package/skills/setup/SKILL.md +14 -2
- package/templates/AGENTS.md +2 -2
- package/templates/CLAUDE.md +2 -2
- 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 '
|
|
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 '
|
|
61
|
-
* import { requestContextService } from '
|
|
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 '
|
|
3
|
-
import { lazyImport } from '
|
|
4
|
-
import { logger } from '
|
|
5
|
-
import { withExtra } from '
|
|
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 '
|
|
99
|
-
* import { requestContextService } from '
|
|
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 '
|
|
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 '
|
|
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 '
|
|
9
|
-
import { requestContextService, withExtra, } from '
|
|
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 '
|
|
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 '
|
|
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 '
|
|
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 '
|
|
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 '
|
|
3
|
-
import { logger } from '
|
|
4
|
-
import { requestContextService, withExtra, } from '
|
|
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 '
|
|
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 '
|
|
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 '
|
|
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 '
|
|
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 '
|
|
103
|
-
* import { requestContextService } from '
|
|
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 '
|
|
9
|
-
import { logger } from '
|
|
10
|
-
import { requestContextService, withExtra, } from '
|
|
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 '
|
|
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 '
|
|
153
|
-
* import { requestContextService } from '
|
|
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 '
|
|
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 '
|
|
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 '
|
|
3
|
-
import { logger } from '
|
|
4
|
-
import { requestContextService, withExtra, } from '
|
|
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 '
|
|
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 '
|
|
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 '
|
|
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 '
|
|
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 '
|
|
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 '
|
|
13
|
-
import { requestContextService, withExtra, } from '
|
|
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 '
|
|
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 '
|
|
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 '
|
|
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 '
|
|
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 '
|
|
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 '
|
|
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 '
|
|
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 '
|
|
12
|
-
import { logger } from '
|
|
13
|
-
import { requestContextService, withExtra, } from '
|
|
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 '
|
|
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 '
|
|
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 '
|
|
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 '
|
|
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 '
|
|
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 '
|
|
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 '
|
|
3
|
-
import { requestContextService } from '
|
|
4
|
-
import { runtimeCaps } from '
|
|
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 '
|
|
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 '
|
|
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 '
|
|
3
|
-
import { type RequestContext } from '
|
|
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 '
|
|
9
|
-
import { createCounter } from '
|
|
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":"AAAA;;;;GAIG;AACH,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAE3C,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAEvD,OAAO,EAAuB,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAChG,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAE7D,IAAI,gBAA8D,CAAC;AAEnE,SAAS,mBAAmB;IAC1B,gBAAgB,KAAK,aAAa,CAChC,0BAA0B,EAC1B,uBAAuB,EACvB,cAAc,CACf,CAAC;IACF,OAAO,EAAE,gBAAgB,EAAE,CAAC;AAC9B,CAAC;AAED,0FAA0F;AAC1F,MAAM,UAAU,oBAAoB;IAClC,mBAAmB,EAAE,CAAC;AACxB,CAAC;AAkCD;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,OAAO,WAAW;IAiBZ,MAAM;IACN,MAAM;IAjBC,MAAM,CAA8B;IAC7C,YAAY,GAA0B,IAAI,CAAC;IAClC,eAAe,CAAkB;IAElD;;;;;;;;;;OAUG;IACH,YACU,MAAyB,EACzB,MAAyB;sBADzB,MAAM;sBACN,MAAM;QAEd,MAAM,aAAa,GAAoB;YACrC,QAAQ,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI;YACxB,WAAW,EAAE,GAAG;YAChB,YAAY,EAAE,8DAA8D;YAC5E,iBAAiB,EAAE,KAAK;YACxB,eAAe,EAAE,CAAC,GAAG,EAAE,GAAG,IAAI;YAC9B,cAAc,EAAE,KAAK;SACtB,CAAC;QACF,IAAI,CAAC,eAAe,GAAG,EAAE,GAAG,aAAa,EAAE,CAAC;QAC5C,IAAI,CAAC,MAAM,GAAG,IAAI,GAAG,EAAE,CAAC;QACxB,IAAI,CAAC,iBAAiB,EAAE,CAAC;IAC3B,CAAC;IAED;;;;OAIG;IACK,aAAa;QACnB,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC;YAAE,OAAO;QAEnC,IAAI,SAAS,GAAkB,IAAI,CAAC;QACpC,IAAI,UAAU,GAAG,QAAQ,CAAC;QAE1B,iDAAiD;QACjD,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,CAAC;YACjD,IAAI,KAAK,CAAC,UAAU,GAAG,UAAU,EAAE,CAAC;gBAClC,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC;gBAC9B,SAAS,GAAG,GAAG,CAAC;YAClB,CAAC;QACH,CAAC;QAED,IAAI,SAAS,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"rateLimiter.js","sourceRoot":"","sources":["../../../src/utils/security/rateLimiter.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAE3C,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAEvD,OAAO,EAAuB,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAChG,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAE7D,IAAI,gBAA8D,CAAC;AAEnE,SAAS,mBAAmB;IAC1B,gBAAgB,KAAK,aAAa,CAChC,0BAA0B,EAC1B,uBAAuB,EACvB,cAAc,CACf,CAAC;IACF,OAAO,EAAE,gBAAgB,EAAE,CAAC;AAC9B,CAAC;AAED,0FAA0F;AAC1F,MAAM,UAAU,oBAAoB;IAClC,mBAAmB,EAAE,CAAC;AACxB,CAAC;AAkCD;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,OAAO,WAAW;IAiBZ,MAAM;IACN,MAAM;IAjBC,MAAM,CAA8B;IAC7C,YAAY,GAA0B,IAAI,CAAC;IAClC,eAAe,CAAkB;IAElD;;;;;;;;;;OAUG;IACH,YACU,MAAyB,EACzB,MAAyB;sBADzB,MAAM;sBACN,MAAM;QAEd,MAAM,aAAa,GAAoB;YACrC,QAAQ,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI;YACxB,WAAW,EAAE,GAAG;YAChB,YAAY,EAAE,8DAA8D;YAC5E,iBAAiB,EAAE,KAAK;YACxB,eAAe,EAAE,CAAC,GAAG,EAAE,GAAG,IAAI;YAC9B,cAAc,EAAE,KAAK;SACtB,CAAC;QACF,IAAI,CAAC,eAAe,GAAG,EAAE,GAAG,aAAa,EAAE,CAAC;QAC5C,IAAI,CAAC,MAAM,GAAG,IAAI,GAAG,EAAE,CAAC;QACxB,IAAI,CAAC,iBAAiB,EAAE,CAAC;IAC3B,CAAC;IAED;;;;OAIG;IACK,aAAa;QACnB,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC;YAAE,OAAO;QAEnC,IAAI,SAAS,GAAkB,IAAI,CAAC;QACpC,IAAI,UAAU,GAAG,QAAQ,CAAC;QAE1B,iDAAiD;QACjD,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,CAAC;YACjD,IAAI,KAAK,CAAC,UAAU,GAAG,UAAU,EAAE,CAAC;gBAClC,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC;gBAC9B,SAAS,GAAG,GAAG,CAAC;YAClB,CAAC;QACH,CAAC;QAED,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;YACvB,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YAC9B,MAAM,UAAU,GAAG,qBAAqB,CAAC,oBAAoB,CAAC;gBAC5D,SAAS,EAAE,2BAA2B;gBACtC,iBAAiB,EAAE;oBACjB,UAAU,EAAE,SAAS;oBACrB,gBAAgB,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI;iBACnC;aACF,CAAC,CAAC;YACH,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,qCAAqC,EAAE,UAAU,CAAC,CAAC;QACvE,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACK,iBAAiB;QACvB,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACtB,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACnC,CAAC;QACD,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,eAAe,CAAC;QACtD,IAAI,QAAQ,IAAI,QAAQ,GAAG,CAAC,EAAE,CAAC;YAC7B,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC,GAAG,EAAE;gBACnC,IAAI,CAAC,qBAAqB,EAAE,CAAC;YAC/B,CAAC,EAAE,QAAQ,CAAC,CAAC;YACb,IAAI,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;gBAC5B,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;YAC5B,CAAC;QACH,CAAC;IACH,CAAC;IAED;;;;OAIG;IACK,qBAAqB;QAC3B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,IAAI,YAAY,GAAG,CAAC,CAAC;QACrB,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,CAAC;YACjD,IAAI,GAAG,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;gBAC3B,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBACxB,YAAY,EAAE,CAAC;YACjB,CAAC;QACH,CAAC;QACD,IAAI,YAAY,GAAG,CAAC,EAAE,CAAC;YACrB,MAAM,UAAU,GAAG,qBAAqB,CAAC,oBAAoB,CAAC;gBAC5D,SAAS,EAAE,mCAAmC;gBAC9C,iBAAiB,EAAE;oBACjB,YAAY,EAAE,YAAY;oBAC1B,wBAAwB,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI;iBAC3C;aACF,CAAC,CAAC;YACH,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,cAAc,YAAY,6BAA6B,EAAE,UAAU,CAAC,CAAC;QACzF,CAAC;IACH,CAAC;IAED;;;;;;;;;;OAUG;IACI,SAAS,CAAC,MAAgC;QAC/C,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;QAC5C,IAAI,MAAM,CAAC,eAAe,KAAK,SAAS,EAAE,CAAC;YACzC,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAC3B,CAAC;IACH,CAAC;IAED;;;;OAIG;IACI,SAAS;QACd,OAAO,EAAE,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;IACrC,CAAC;IAED;;;OAGG;IACI,KAAK;QACV,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QACpB,MAAM,UAAU,GAAG,qBAAqB,CAAC,oBAAoB,CAAC;YAC5D,SAAS,EAAE,mBAAmB;SAC/B,CAAC,CAAC;QACH,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,wCAAwC,EAAE,UAAU,CAAC,CAAC;IAC1E,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;OA0BG;IACI,KAAK,CAAC,GAAW,EAAE,OAAwB;QAChD,MAAM,UAAU,GAAG,KAAK,CAAC,aAAa,EAAE,CAAC;QACzC,UAAU,EAAE,YAAY,CAAC,wBAAwB,EAAE,IAAI,CAAC,CAAC;QAEzD,IAAI,IAAI,CAAC,eAAe,CAAC,iBAAiB,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,KAAK,aAAa,EAAE,CAAC;YACxF,UAAU,EAAE,YAAY,CAAC,wBAAwB,EAAE,aAAa,CAAC,CAAC;YAClE,OAAO;QACT,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,YAAY;YAChD,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,GAAG,EAAE,OAAO,CAAC;YACjD,CAAC,CAAC,GAAG,CAAC;QACR,UAAU,EAAE,YAAY,CAAC,oBAAoB,EAAE,QAAQ,CAAC,CAAC;QAEzD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,IAAI,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAEtC,IAAI,CAAC,KAAK,IAAI,GAAG,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;YACrC,6DAA6D;YAC7D,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,cAAc,IAAI,KAAK,CAAC;YAC7D,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,OAAO,EAAE,CAAC;gBAC1C,IAAI,CAAC,aAAa,EAAE,CAAC;gBACrB,UAAU,EAAE,QAAQ,CAAC,yBAAyB,EAAE;oBAC9C,qCAAqC,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC;oBAC3D,yBAAyB,EAAE,OAAO;iBACnC,CAAC,CAAC;YACL,CAAC;YAED,KAAK,GAAG;gBACN,KAAK,EAAE,CAAC;gBACR,SAAS,EAAE,GAAG,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ;gBAC9C,UAAU,EAAE,GAAG;aAChB,CAAC;YACF,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QACnC,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,KAAK,EAAE,CAAC;YACd,KAAK,CAAC,UAAU,GAAG,GAAG,CAAC,CAAC,uBAAuB;QACjD,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,eAAe,CAAC,WAAW,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;QAC9E,UAAU,EAAE,aAAa,CAAC;YACxB,sBAAsB,EAAE,IAAI,CAAC,eAAe,CAAC,WAAW;YACxD,sBAAsB,EAAE,KAAK,CAAC,KAAK;YACnC,0BAA0B,EAAE,SAAS;YACrC,6BAA6B,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI;SAChD,CAAC,CAAC;QAEH,IAAI,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,WAAW,EAAE,CAAC;YACnD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,SAAS,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC;YAC3D,MAAM,YAAY,GAAG,CACnB,IAAI,CAAC,eAAe,CAAC,YAAY;gBACjC,8DAA8D,CAC/D,CAAC,OAAO,CAAC,YAAY,EAAE,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC;YAE7C,UAAU,EAAE,QAAQ,CAAC,qBAAqB,EAAE;gBAC1C,kCAAkC,EAAE,QAAQ;aAC7C,CAAC,CAAC;YAEH,wEAAwE;YACxE,uEAAuE;YACvE,oEAAoE;YACpE,mBAAmB,EAAE,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAE9C,MAAM,WAAW,CAAC,YAAY,EAAE;gBAC9B,eAAe,EAAE,QAAQ;gBACzB,GAAG,EAAE,QAAQ;gBACb,KAAK,EAAE,IAAI,CAAC,eAAe,CAAC,WAAW;gBACvC,QAAQ,EAAE,IAAI,CAAC,eAAe,CAAC,QAAQ;aACxC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED;;;;;;;;;;;;;;;;;;OAkBG;IACI,SAAS,CAAC,GAAW;QAM1B,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACnC,IAAI,CAAC,KAAK;YAAE,OAAO,IAAI,CAAC;QACxB,OAAO;YACL,OAAO,EAAE,KAAK,CAAC,KAAK;YACpB,KAAK,EAAE,IAAI,CAAC,eAAe,CAAC,WAAW;YACvC,SAAS,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,eAAe,CAAC,WAAW,GAAG,KAAK,CAAC,KAAK,CAAC;YACtE,SAAS,EAAE,KAAK,CAAC,SAAS;SAC3B,CAAC;IACJ,CAAC;IAED;;;;OAIG;IACI,OAAO;QACZ,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACtB,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YACjC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QAC3B,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;IACtB,CAAC;IAED;;;OAGG;IACH,CAAC,MAAM,CAAC,OAAO,CAAC;QACd,IAAI,CAAC,OAAO,EAAE,CAAC;IACjB,CAAC;CACF"}
|
|
@@ -104,7 +104,7 @@ export interface HtmlSanitizeConfig {
|
|
|
104
104
|
*
|
|
105
105
|
* @example
|
|
106
106
|
* ```ts
|
|
107
|
-
* import { sanitization } from '
|
|
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 '
|
|
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 '
|
|
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 '
|
|
3
|
-
import { requestContextService } from '
|
|
4
|
-
import { runtimeCaps } from '
|
|
5
|
-
import { isRecord } from '
|
|
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 '
|
|
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 '
|
|
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 '
|
|
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,
|
|
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 '
|
|
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
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
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;
|