@cyanheads/mcp-ts-core 0.12.5 → 0.12.7
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 -14
- package/CLAUDE.md +26 -14
- package/README.md +124 -76
- package/biome.json +1 -1
- package/changelog/0.12.x/0.12.6.md +44 -0
- package/changelog/0.12.x/0.12.7.md +39 -0
- package/dist/core/app.d.ts +2 -2
- package/dist/core/app.js +2 -2
- package/dist/core/index.d.ts +5 -5
- package/dist/core/index.js +2 -2
- package/dist/core/worker.d.ts +2 -2
- package/dist/core/worker.d.ts.map +1 -1
- package/dist/core/worker.js +1 -1
- package/dist/core/worker.js.map +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.d.ts.map +1 -1
- package/dist/mcp-server/tools/tool-registration.js +9 -3
- package/dist/mcp-server/tools/tool-registration.js.map +1 -1
- package/dist/mcp-server/tools/utils/deferredInputSchema.d.ts +39 -0
- package/dist/mcp-server/tools/utils/deferredInputSchema.d.ts.map +1 -0
- package/dist/mcp-server/tools/utils/deferredInputSchema.js +33 -0
- package/dist/mcp-server/tools/utils/deferredInputSchema.js.map +1 -0
- package/dist/mcp-server/tools/utils/disabled-tool.d.ts +1 -1
- package/dist/mcp-server/tools/utils/toolHandlerFactory.d.ts +11 -3
- package/dist/mcp-server/tools/utils/toolHandlerFactory.d.ts.map +1 -1
- package/dist/mcp-server/tools/utils/toolHandlerFactory.js +29 -7
- package/dist/mcp-server/tools/utils/toolHandlerFactory.js.map +1 -1
- 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/services/speech/providers/whisper.provider.d.ts.map +1 -1
- package/dist/services/speech/providers/whisper.provider.js +4 -2
- package/dist/services/speech/providers/whisper.provider.js.map +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/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 +3 -3
- package/dist/utils/internal/logger.js +4 -4
- 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 +33 -26
- package/scripts/check-framework-antipatterns.ts +4 -1
- package/scripts/devcheck.ts +309 -37
- package/scripts/lint-packaging.ts +28 -6
- package/skills/add-tool/SKILL.md +33 -1
- package/skills/api-errors/SKILL.md +2 -1
- package/skills/api-workers/SKILL.md +3 -3
- package/skills/design-mcp-server/SKILL.md +6 -1
- package/skills/field-test/SKILL.md +70 -30
- package/skills/git-wrapup/SKILL.md +4 -3
- package/templates/AGENTS.md +2 -2
- package/templates/CLAUDE.md +2 -2
- package/templates/package.json +6 -6
|
@@ -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":"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"}
|
|
@@ -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;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"instrumentation.js","sourceRoot":"","sources":["../../../src/utils/telemetry/instrumentation.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"instrumentation.js","sourceRoot":"","sources":["../../../src/utils/telemetry/instrumentation.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* @module src/utils/telemetry/trace
|
|
6
6
|
*/
|
|
7
7
|
import { type Span } from '@opentelemetry/api';
|
|
8
|
-
import type { RequestContext } from '
|
|
8
|
+
import type { RequestContext } from '../internal/requestContext.js';
|
|
9
9
|
/**
|
|
10
10
|
* Parsed fields from a W3C `traceparent` header (`00-<traceId>-<spanId>-<flags>`).
|
|
11
11
|
* Used to propagate distributed trace context across service boundaries.
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
*/
|
|
7
7
|
import { context as otContext, propagation, ROOT_CONTEXT, SpanStatusCode, trace, } from '@opentelemetry/api';
|
|
8
8
|
import { config } from '../../config/index.js';
|
|
9
|
-
import { requestContextService } from '
|
|
9
|
+
import { requestContextService } from '../internal/requestContext.js';
|
|
10
10
|
/**
|
|
11
11
|
* Builds a W3C `traceparent` header value from a `RequestContext` or the currently active span.
|
|
12
12
|
* Uses `ctx.traceId`/`ctx.spanId` when provided; falls back to the active OTel span context.
|
package/package.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cyanheads/mcp-ts-core",
|
|
3
|
-
"version": "0.12.
|
|
3
|
+
"version": "0.12.7",
|
|
4
4
|
"mcpName": "io.github.cyanheads/mcp-ts-core",
|
|
5
|
-
"description": "Agent-native TypeScript framework for
|
|
5
|
+
"description": "Agent-native TypeScript framework for MCP servers. Includes runtime infrastructure and agent skills for building, testing, and shipping servers.",
|
|
6
6
|
"files": [
|
|
7
7
|
"changelog/",
|
|
8
8
|
"dist/",
|
|
@@ -164,21 +164,28 @@
|
|
|
164
164
|
"format:unsafe": "biome check --write --unsafe .",
|
|
165
165
|
"typecheck": "bunx tsc --noEmit",
|
|
166
166
|
"typecheck:scripts": "bunx tsc --project tsconfig.scripts.json --noEmit",
|
|
167
|
+
"typecheck:worker": "bunx tsc --project tsconfig.worker.json --noEmit",
|
|
168
|
+
"list-skills": "bun run scripts/list-skills.ts",
|
|
167
169
|
"tree": "bun run scripts/tree.ts",
|
|
168
170
|
"fetch-spec": "bun run scripts/fetch-openapi-spec.ts",
|
|
171
|
+
"bench": "bunx vitest bench --run --config tests/config/vitest.benchmark.ts",
|
|
172
|
+
"bench:node": "bun run scripts/with-node.ts ./node_modules/vitest/vitest.mjs bench --run --config tests/config/vitest.benchmark.ts",
|
|
173
|
+
"bench:io": "bun run scripts/with-node.ts ./node_modules/vitest/vitest.mjs run --config tests/config/vitest.performance.ts",
|
|
174
|
+
"bench:io:bun": "bunx vitest run --config tests/config/vitest.performance.ts --project http --project native",
|
|
169
175
|
"test": "bunx vitest run",
|
|
170
176
|
"test:all": "bun run rebuild && bun run test:coverage && bun run test:node && bun run test:worker && bun run test:integration",
|
|
171
|
-
"test:integration": "bunx vitest run --config vitest.integration.ts",
|
|
172
|
-
"test:leaks": "
|
|
173
|
-
"test:node": "
|
|
174
|
-
"test:order": "
|
|
175
|
-
"test:package": "bun run rebuild && bunx vitest run --config vitest.package.ts",
|
|
177
|
+
"test:integration": "bunx vitest run --config tests/config/vitest.integration.ts",
|
|
178
|
+
"test:leaks": "bun run tests/leaks/run.ts",
|
|
179
|
+
"test:node": "bun run scripts/with-node.ts ./node_modules/vitest/vitest.mjs run && bun run scripts/with-node.ts ./node_modules/vitest/vitest.mjs run --config tests/config/vitest.integration.ts",
|
|
180
|
+
"test:order": "bun run scripts/with-node.ts ./node_modules/vitest/vitest.mjs run --sequence.shuffle --sequence.seed=20260809 --expect.requireAssertions",
|
|
181
|
+
"test:package": "bun run rebuild && bunx vitest run --config tests/config/vitest.package.ts",
|
|
176
182
|
"test:unit": "bunx vitest run --project unit",
|
|
177
183
|
"test:smoke": "bunx vitest run --project smoke",
|
|
178
184
|
"test:fuzz": "bunx vitest run --project fuzz",
|
|
179
185
|
"test:typecheck": "bunx vitest run --project typecheck",
|
|
180
186
|
"test:compliance": "bunx vitest run --project compliance",
|
|
181
|
-
"test:
|
|
187
|
+
"test:leak-gate": "bunx vitest run --project leak-gate",
|
|
188
|
+
"test:worker": "bun run scripts/with-node.ts ./node_modules/vitest/vitest.mjs run --config tests/config/vitest.worker.ts && bun run scripts/with-node.ts ./node_modules/vitest/vitest.mjs run --config tests/config/vitest.worker-bundle.ts",
|
|
182
189
|
"test:ui": "bunx vitest --ui",
|
|
183
190
|
"test:coverage": "bunx vitest run --coverage",
|
|
184
191
|
"audit": "bun audit",
|
|
@@ -190,23 +197,23 @@
|
|
|
190
197
|
"publish-mcp": "mcp-publisher login github -token \"$(security find-generic-password -a \"$USER\" -s mcp-publisher-github-pat -w)\" && mcp-publisher publish"
|
|
191
198
|
},
|
|
192
199
|
"devDependencies": {
|
|
193
|
-
"@biomejs/biome": "2.5.
|
|
200
|
+
"@biomejs/biome": "2.5.12",
|
|
194
201
|
"@cloudflare/vitest-pool-workers": "^0.22.0",
|
|
195
|
-
"@cloudflare/workers-types": "5.
|
|
202
|
+
"@cloudflare/workers-types": "5.20260905.1",
|
|
196
203
|
"@duckdb/node-api": "^1.5.5-r.4",
|
|
197
204
|
"@hono/otel": "^1.1.2",
|
|
198
|
-
"@opentelemetry/exporter-metrics-otlp-http": "^0.
|
|
199
|
-
"@opentelemetry/exporter-trace-otlp-http": "^0.
|
|
200
|
-
"@opentelemetry/instrumentation-http": "^0.
|
|
201
|
-
"@opentelemetry/instrumentation-pino": "^0.
|
|
205
|
+
"@opentelemetry/exporter-metrics-otlp-http": "^0.222.0",
|
|
206
|
+
"@opentelemetry/exporter-trace-otlp-http": "^0.222.0",
|
|
207
|
+
"@opentelemetry/instrumentation-http": "^0.222.0",
|
|
208
|
+
"@opentelemetry/instrumentation-pino": "^0.68.0",
|
|
202
209
|
"@opentelemetry/resources": "^2.10.0",
|
|
203
210
|
"@opentelemetry/sdk-metrics": "^2.10.0",
|
|
204
|
-
"@opentelemetry/sdk-node": "^0.
|
|
211
|
+
"@opentelemetry/sdk-node": "^0.222.0",
|
|
205
212
|
"@opentelemetry/sdk-trace-node": "^2.10.0",
|
|
206
213
|
"@opentelemetry/semantic-conventions": "^1.43.0",
|
|
207
214
|
"@socketsecurity/bun-security-scanner": "^1.1.2",
|
|
208
|
-
"@supabase/supabase-js": "^2.
|
|
209
|
-
"@types/bun": "^1.4.
|
|
215
|
+
"@supabase/supabase-js": "^2.115.0",
|
|
216
|
+
"@types/bun": "^1.4.1",
|
|
210
217
|
"@types/node": "26.4.0",
|
|
211
218
|
"@types/papaparse": "^5.5.2",
|
|
212
219
|
"@types/sanitize-html": "^2.16.1",
|
|
@@ -214,7 +221,7 @@
|
|
|
214
221
|
"@vitest/coverage-istanbul": "4.1.11",
|
|
215
222
|
"@vitest/ui": "4.1.11",
|
|
216
223
|
"better-sqlite3": "^13.0.3",
|
|
217
|
-
"bun-types": "^1.4.
|
|
224
|
+
"bun-types": "^1.4.2",
|
|
218
225
|
"chrono-node": "^2.10.1",
|
|
219
226
|
"clipboardy": "^5.3.2",
|
|
220
227
|
"defuddle": "^0.19.3",
|
|
@@ -227,7 +234,7 @@
|
|
|
227
234
|
"js-yaml": "^5.4.1",
|
|
228
235
|
"linkedom": "^0.18.13",
|
|
229
236
|
"node-cron": "^4.6.0",
|
|
230
|
-
"openai": "^7.
|
|
237
|
+
"openai": "^7.10.0",
|
|
231
238
|
"papaparse": "^5.7.0",
|
|
232
239
|
"partial-json": "^0.1.7",
|
|
233
240
|
"pdf-lib": "^1.17.1",
|
|
@@ -299,21 +306,21 @@
|
|
|
299
306
|
"@modelcontextprotocol/server": "^2.0.0",
|
|
300
307
|
"@opentelemetry/api": "^1.9.1",
|
|
301
308
|
"dotenv": "^17.4.2",
|
|
302
|
-
"hono": "^4.13.
|
|
303
|
-
"jose": "^6.2.
|
|
309
|
+
"hono": "^4.13.7",
|
|
310
|
+
"jose": "^6.2.12",
|
|
304
311
|
"pino": "^10.3.1",
|
|
305
312
|
"zod": "^4.5.4"
|
|
306
313
|
},
|
|
307
314
|
"peerDependencies": {
|
|
308
315
|
"@duckdb/node-api": "^1.5.5-r.1",
|
|
309
316
|
"@hono/otel": "^1.1.2",
|
|
310
|
-
"@opentelemetry/instrumentation-http": "^0.
|
|
311
|
-
"@opentelemetry/exporter-metrics-otlp-http": "^0.
|
|
312
|
-
"@opentelemetry/exporter-trace-otlp-http": "^0.
|
|
313
|
-
"@opentelemetry/instrumentation-pino": "^0.
|
|
317
|
+
"@opentelemetry/instrumentation-http": "^0.222.0",
|
|
318
|
+
"@opentelemetry/exporter-metrics-otlp-http": "^0.222.0",
|
|
319
|
+
"@opentelemetry/exporter-trace-otlp-http": "^0.222.0",
|
|
320
|
+
"@opentelemetry/instrumentation-pino": "^0.68.0",
|
|
314
321
|
"@opentelemetry/resources": "^2.10.0",
|
|
315
322
|
"@opentelemetry/sdk-metrics": "^2.10.0",
|
|
316
|
-
"@opentelemetry/sdk-node": "^0.
|
|
323
|
+
"@opentelemetry/sdk-node": "^0.222.0",
|
|
317
324
|
"@opentelemetry/sdk-trace-node": "^2.10.0",
|
|
318
325
|
"@opentelemetry/semantic-conventions": "^1.43.0",
|
|
319
326
|
"@supabase/supabase-js": "^2.110.8",
|