@cyanheads/mcp-ts-core 0.12.6 → 0.12.8
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 +9 -3
- package/CLAUDE.md +9 -3
- package/README.md +132 -77
- package/biome.json +1 -1
- package/changelog/0.12.x/0.12.6.md +2 -2
- package/changelog/0.12.x/0.12.7.md +39 -0
- package/changelog/0.12.x/0.12.8.md +55 -0
- package/dist/config/index.d.ts +3 -34
- package/dist/config/index.d.ts.map +1 -1
- package/dist/config/index.js +4 -26
- package/dist/config/index.js.map +1 -1
- package/dist/core/app.d.ts +0 -8
- package/dist/core/app.d.ts.map +1 -1
- package/dist/core/app.js +0 -7
- package/dist/core/app.js.map +1 -1
- package/dist/core/serverManifest.d.ts +0 -7
- package/dist/core/serverManifest.d.ts.map +1 -1
- package/dist/core/serverManifest.js +1 -13
- package/dist/core/serverManifest.js.map +1 -1
- package/dist/core/worker.d.ts +1 -1
- package/dist/core/worker.d.ts.map +1 -1
- package/dist/core/worker.js.map +1 -1
- package/dist/linter/rules/enrichment-rules.js +2 -2
- package/dist/linter/rules/enrichment-rules.js.map +1 -1
- package/dist/linter/rules/format-parity-rules.d.ts.map +1 -1
- package/dist/linter/rules/format-parity-rules.js +14 -36
- package/dist/linter/rules/format-parity-rules.js.map +1 -1
- package/dist/linter/rules/prompt-rules.d.ts +1 -1
- package/dist/linter/rules/prompt-rules.d.ts.map +1 -1
- package/dist/linter/rules/prompt-rules.js +2 -19
- package/dist/linter/rules/prompt-rules.js.map +1 -1
- package/dist/linter/rules/resource-rules.d.ts +1 -1
- package/dist/linter/rules/resource-rules.d.ts.map +1 -1
- package/dist/linter/rules/resource-rules.js +9 -39
- package/dist/linter/rules/resource-rules.js.map +1 -1
- package/dist/linter/rules/schema-rules.d.ts +22 -2
- package/dist/linter/rules/schema-rules.d.ts.map +1 -1
- package/dist/linter/rules/schema-rules.js +28 -5
- package/dist/linter/rules/schema-rules.js.map +1 -1
- package/dist/linter/rules/tool-rules.d.ts +1 -1
- package/dist/linter/rules/tool-rules.d.ts.map +1 -1
- package/dist/linter/rules/tool-rules.js +13 -41
- package/dist/linter/rules/tool-rules.js.map +1 -1
- package/dist/linter/validate.d.ts.map +1 -1
- package/dist/linter/validate.js +22 -42
- package/dist/linter/validate.js.map +1 -1
- package/dist/mcp-server/apps/appBuilders.d.ts.map +1 -1
- package/dist/mcp-server/apps/appBuilders.js +2 -16
- package/dist/mcp-server/apps/appBuilders.js.map +1 -1
- package/dist/mcp-server/handlerContext.d.ts +66 -0
- package/dist/mcp-server/handlerContext.d.ts.map +1 -0
- package/dist/mcp-server/handlerContext.js +71 -0
- package/dist/mcp-server/handlerContext.js.map +1 -0
- package/dist/mcp-server/inputRequired.d.ts +7 -1
- package/dist/mcp-server/inputRequired.d.ts.map +1 -1
- package/dist/mcp-server/inputRequired.js +10 -3
- package/dist/mcp-server/inputRequired.js.map +1 -1
- package/dist/mcp-server/resources/resource-registration.d.ts +2 -2
- package/dist/mcp-server/resources/resource-registration.d.ts.map +1 -1
- package/dist/mcp-server/resources/resource-registration.js.map +1 -1
- package/dist/mcp-server/resources/utils/resourceHandlerFactory.d.ts +14 -43
- package/dist/mcp-server/resources/utils/resourceHandlerFactory.d.ts.map +1 -1
- package/dist/mcp-server/resources/utils/resourceHandlerFactory.js +11 -50
- package/dist/mcp-server/resources/utils/resourceHandlerFactory.js.map +1 -1
- package/dist/mcp-server/tools/tool-registration.d.ts +5 -9
- package/dist/mcp-server/tools/tool-registration.d.ts.map +1 -1
- package/dist/mcp-server/tools/tool-registration.js +16 -12
- 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/schemaShape.d.ts +21 -0
- package/dist/mcp-server/tools/utils/schemaShape.d.ts.map +1 -1
- package/dist/mcp-server/tools/utils/schemaShape.js +8 -6
- package/dist/mcp-server/tools/utils/schemaShape.js.map +1 -1
- package/dist/mcp-server/tools/utils/toolHandlerFactory.d.ts +25 -45
- package/dist/mcp-server/tools/utils/toolHandlerFactory.d.ts.map +1 -1
- package/dist/mcp-server/tools/utils/toolHandlerFactory.js +55 -74
- package/dist/mcp-server/tools/utils/toolHandlerFactory.js.map +1 -1
- package/dist/mcp-server/transports/http/httpErrorHandler.d.ts.map +1 -1
- package/dist/mcp-server/transports/http/httpErrorHandler.js +2 -1
- package/dist/mcp-server/transports/http/httpErrorHandler.js.map +1 -1
- package/dist/mcp-server/transports/http/landing-page/handler.d.ts.map +1 -1
- package/dist/mcp-server/transports/http/landing-page/handler.js +2 -1
- package/dist/mcp-server/transports/http/landing-page/handler.js.map +1 -1
- package/dist/mcp-server/transports/http/protectedResourceMetadata.d.ts.map +1 -1
- package/dist/mcp-server/transports/http/protectedResourceMetadata.js +2 -1
- package/dist/mcp-server/transports/http/protectedResourceMetadata.js.map +1 -1
- package/dist/mcp-server/transports/http/publicOrigin.d.ts +11 -0
- package/dist/mcp-server/transports/http/publicOrigin.d.ts.map +1 -0
- package/dist/mcp-server/transports/http/publicOrigin.js +13 -0
- package/dist/mcp-server/transports/http/publicOrigin.js.map +1 -0
- package/dist/mcp-server/transports/http/serverCard.d.ts.map +1 -1
- package/dist/mcp-server/transports/http/serverCard.js +2 -1
- package/dist/mcp-server/transports/http/serverCard.js.map +1 -1
- package/dist/mcp-server/transports/http/sessionIdUtils.d.ts +4 -0
- package/dist/mcp-server/transports/http/sessionIdUtils.d.ts.map +1 -1
- package/dist/mcp-server/transports/http/sessionIdUtils.js +3 -13
- package/dist/mcp-server/transports/http/sessionIdUtils.js.map +1 -1
- package/dist/mcp-server/transports/manager.d.ts +0 -3
- package/dist/mcp-server/transports/manager.d.ts.map +1 -1
- package/dist/mcp-server/transports/manager.js +0 -7
- package/dist/mcp-server/transports/manager.js.map +1 -1
- package/dist/services/canvas/core/CanvasRegistry.d.ts +14 -0
- package/dist/services/canvas/core/CanvasRegistry.d.ts.map +1 -1
- package/dist/services/canvas/core/CanvasRegistry.js +3 -2
- package/dist/services/canvas/core/CanvasRegistry.js.map +1 -1
- package/dist/services/canvas/providers/duckdb/DuckdbProvider.d.ts +16 -0
- package/dist/services/canvas/providers/duckdb/DuckdbProvider.d.ts.map +1 -1
- package/dist/services/canvas/providers/duckdb/DuckdbProvider.js +78 -103
- package/dist/services/canvas/providers/duckdb/DuckdbProvider.js.map +1 -1
- package/dist/services/graph/core/GraphService.d.ts +3 -3
- package/dist/services/graph/core/GraphService.js +3 -3
- package/dist/services/graph/types.d.ts +2 -79
- package/dist/services/graph/types.d.ts.map +1 -1
- package/dist/services/graph/types.js +2 -2
- package/dist/services/index.d.ts +1 -2
- package/dist/services/index.d.ts.map +1 -1
- package/dist/services/index.js +0 -1
- package/dist/services/index.js.map +1 -1
- package/dist/services/mirror/sqlite/handle.d.ts.map +1 -1
- package/dist/services/mirror/sqlite/handle.js +22 -36
- package/dist/services/mirror/sqlite/handle.js.map +1 -1
- package/dist/services/speech/core/ISpeechProvider.d.ts +0 -24
- package/dist/services/speech/core/ISpeechProvider.d.ts.map +1 -1
- package/dist/services/speech/core/ISpeechProvider.js +1 -28
- package/dist/services/speech/core/ISpeechProvider.js.map +1 -1
- package/dist/services/speech/core/SpeechService.d.ts.map +1 -1
- package/dist/services/speech/core/SpeechService.js +5 -8
- package/dist/services/speech/core/SpeechService.js.map +1 -1
- package/dist/services/speech/providers/elevenlabs.provider.d.ts.map +1 -1
- package/dist/services/speech/providers/elevenlabs.provider.js +1 -0
- package/dist/services/speech/providers/elevenlabs.provider.js.map +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/services/speech/types.d.ts +2 -19
- package/dist/services/speech/types.d.ts.map +1 -1
- package/dist/storage/core/providerHelpers.d.ts +52 -0
- package/dist/storage/core/providerHelpers.d.ts.map +1 -0
- package/dist/storage/core/providerHelpers.js +96 -0
- package/dist/storage/core/providerHelpers.js.map +1 -0
- package/dist/storage/providers/cloudflare/d1Provider.d.ts.map +1 -1
- package/dist/storage/providers/cloudflare/d1Provider.js +1 -4
- package/dist/storage/providers/cloudflare/d1Provider.js.map +1 -1
- package/dist/storage/providers/cloudflare/kvProvider.d.ts.map +1 -1
- package/dist/storage/providers/cloudflare/kvProvider.js +4 -31
- package/dist/storage/providers/cloudflare/kvProvider.js.map +1 -1
- package/dist/storage/providers/cloudflare/r2Provider.d.ts +1 -1
- package/dist/storage/providers/cloudflare/r2Provider.d.ts.map +1 -1
- package/dist/storage/providers/cloudflare/r2Provider.js +8 -48
- package/dist/storage/providers/cloudflare/r2Provider.js.map +1 -1
- package/dist/storage/providers/fileSystem/fileSystemProvider.d.ts +1 -1
- package/dist/storage/providers/fileSystem/fileSystemProvider.d.ts.map +1 -1
- package/dist/storage/providers/fileSystem/fileSystemProvider.js +17 -86
- package/dist/storage/providers/fileSystem/fileSystemProvider.js.map +1 -1
- package/dist/storage/providers/inMemory/inMemoryProvider.d.ts.map +1 -1
- package/dist/storage/providers/inMemory/inMemoryProvider.js +5 -38
- package/dist/storage/providers/inMemory/inMemoryProvider.js.map +1 -1
- package/dist/storage/providers/supabase/supabaseProvider.d.ts.map +1 -1
- package/dist/storage/providers/supabase/supabaseProvider.js +1 -4
- package/dist/storage/providers/supabase/supabaseProvider.js.map +1 -1
- package/dist/testing/fuzz.d.ts.map +1 -1
- package/dist/testing/fuzz.js +17 -31
- package/dist/testing/fuzz.js.map +1 -1
- package/dist/testing/index.d.ts.map +1 -1
- package/dist/testing/index.js +4 -26
- package/dist/testing/index.js.map +1 -1
- package/dist/utils/internal/error-handler/types.d.ts +0 -4
- package/dist/utils/internal/error-handler/types.d.ts.map +1 -1
- package/dist/utils/internal/logger.d.ts.map +1 -1
- package/dist/utils/internal/logger.js +2 -16
- package/dist/utils/internal/logger.js.map +1 -1
- package/dist/utils/internal/performance.d.ts +8 -31
- package/dist/utils/internal/performance.d.ts.map +1 -1
- package/dist/utils/internal/performance.js +173 -295
- package/dist/utils/internal/performance.js.map +1 -1
- package/dist/utils/security/idGenerator.d.ts.map +1 -1
- package/dist/utils/security/idGenerator.js +24 -43
- package/dist/utils/security/idGenerator.js.map +1 -1
- package/dist/utils/security/sanitization.d.ts +0 -7
- package/dist/utils/security/sanitization.d.ts.map +1 -1
- package/dist/utils/security/sanitization.js +4 -31
- package/dist/utils/security/sanitization.js.map +1 -1
- package/dist/utils/security/sensitiveFields.d.ts +14 -0
- package/dist/utils/security/sensitiveFields.d.ts.map +1 -0
- package/dist/utils/security/sensitiveFields.js +31 -0
- package/dist/utils/security/sensitiveFields.js.map +1 -0
- package/dist/utils/telemetry/trace.d.ts +8 -10
- package/dist/utils/telemetry/trace.d.ts.map +1 -1
- package/dist/utils/telemetry/trace.js +19 -18
- package/dist/utils/telemetry/trace.js.map +1 -1
- package/dist/utils/types/guards.d.ts +0 -102
- package/dist/utils/types/guards.d.ts.map +1 -1
- package/dist/utils/types/guards.js +0 -114
- package/dist/utils/types/guards.js.map +1 -1
- package/package.json +26 -25
- package/scripts/check-framework-antipatterns.ts +4 -1
- package/scripts/devcheck.ts +303 -33
- package/scripts/lint-packaging.ts +28 -6
- package/skills/add-provider/SKILL.md +18 -4
- package/skills/add-tool/SKILL.md +33 -1
- package/skills/api-config/SKILL.md +4 -18
- package/skills/api-errors/SKILL.md +2 -1
- package/skills/api-services/SKILL.md +1 -1
- package/skills/api-services/references/speech.md +1 -2
- package/skills/api-telemetry/SKILL.md +2 -2
- package/skills/api-utils/SKILL.md +2 -2
- package/skills/code-simplifier/SKILL.md +47 -20
- package/skills/design-mcp-server/SKILL.md +6 -1
- package/skills/field-test/SKILL.md +158 -39
- package/skills/git-wrapup/SKILL.md +67 -29
- package/skills/orchestrations/SKILL.md +17 -6
- package/skills/orchestrations/workflows/field-test-fix.md +6 -4
- package/skills/orchestrations/workflows/fix-wrapup-release.md +6 -4
- package/skills/orchestrations/workflows/greenfield-build.md +2 -2
- package/skills/orchestrations/workflows/maintenance-release.md +4 -2
- package/skills/release-and-publish/SKILL.md +101 -23
- package/skills/release-pr-review/SKILL.md +147 -0
- package/templates/AGENTS.md +4 -2
- package/templates/CLAUDE.md +4 -2
- package/templates/package.json +6 -6
- package/dist/mcp-server/transports/ITransport.d.ts +0 -15
- package/dist/mcp-server/transports/ITransport.d.ts.map +0 -1
- package/dist/mcp-server/transports/ITransport.js +0 -2
- package/dist/mcp-server/transports/ITransport.js.map +0 -1
- package/dist/services/llm/types.d.ts +0 -16
- package/dist/services/llm/types.d.ts.map +0 -1
- package/dist/services/llm/types.js +0 -9
- package/dist/services/llm/types.js.map +0 -1
- package/dist/utils/internal/health.d.ts +0 -60
- package/dist/utils/internal/health.d.ts.map +0 -1
- package/dist/utils/internal/health.js +0 -46
- package/dist/utils/internal/health.js.map +0 -1
|
@@ -54,56 +54,6 @@ export declare function isRecord(value: unknown): value is Record<string, unknow
|
|
|
54
54
|
* ```
|
|
55
55
|
*/
|
|
56
56
|
export declare function hasProperty<K extends PropertyKey>(obj: unknown, key: K): obj is Record<K, unknown>;
|
|
57
|
-
/**
|
|
58
|
-
* Type guard to check if an object has a property of a specific type.
|
|
59
|
-
*
|
|
60
|
-
* @param obj - Object to check
|
|
61
|
-
* @param key - Property key to look for
|
|
62
|
-
* @param typeGuard - Type guard function for the property value
|
|
63
|
-
* @returns True if object has the property and it matches the type
|
|
64
|
-
*
|
|
65
|
-
* @example
|
|
66
|
-
* ```typescript
|
|
67
|
-
* if (hasPropertyOfType(obj, 'count', (v): v is number => typeof v === 'number')) {
|
|
68
|
-
* // obj.count is now typed as number
|
|
69
|
-
* console.log(obj.count + 1);
|
|
70
|
-
* }
|
|
71
|
-
* ```
|
|
72
|
-
*/
|
|
73
|
-
export declare function hasPropertyOfType<K extends PropertyKey, T>(obj: unknown, key: K, typeGuard: (value: unknown) => value is T): obj is Record<K, T>;
|
|
74
|
-
/**
|
|
75
|
-
* Type guard to check if a value is a string.
|
|
76
|
-
*
|
|
77
|
-
* @param value - Value to check
|
|
78
|
-
* @returns True if value is a string
|
|
79
|
-
*
|
|
80
|
-
* @example
|
|
81
|
-
* ```typescript
|
|
82
|
-
* if (isString(value)) {
|
|
83
|
-
* // value is now typed as string
|
|
84
|
-
* console.log(value.toUpperCase());
|
|
85
|
-
* }
|
|
86
|
-
* ```
|
|
87
|
-
*/
|
|
88
|
-
export declare function isString(value: unknown): value is string;
|
|
89
|
-
/**
|
|
90
|
-
* Type guard to check if a value is a number.
|
|
91
|
-
*
|
|
92
|
-
* `NaN` is explicitly excluded — `typeof NaN === 'number'` is true in JavaScript,
|
|
93
|
-
* but `NaN` is almost never a valid value in the contexts where this guard is used.
|
|
94
|
-
*
|
|
95
|
-
* @param value - Value to check
|
|
96
|
-
* @returns True if value is a finite or infinite number (excluding NaN)
|
|
97
|
-
*
|
|
98
|
-
* @example
|
|
99
|
-
* ```typescript
|
|
100
|
-
* if (isNumber(value)) {
|
|
101
|
-
* // value is now typed as number (NaN excluded)
|
|
102
|
-
* console.log(value.toFixed(2));
|
|
103
|
-
* }
|
|
104
|
-
* ```
|
|
105
|
-
*/
|
|
106
|
-
export declare function isNumber(value: unknown): value is number;
|
|
107
57
|
/**
|
|
108
58
|
* Type guard to check if an error is an AggregateError.
|
|
109
59
|
*
|
|
@@ -140,22 +90,6 @@ export declare function isAggregateError(error: unknown): error is Error & {
|
|
|
140
90
|
export declare function isErrorWithCode(error: unknown): error is Error & {
|
|
141
91
|
code: unknown;
|
|
142
92
|
};
|
|
143
|
-
/**
|
|
144
|
-
* Type guard to check if an error has a status property.
|
|
145
|
-
*
|
|
146
|
-
* @param error - Error to check
|
|
147
|
-
* @returns True if error has a status property
|
|
148
|
-
*
|
|
149
|
-
* @example
|
|
150
|
-
* ```typescript
|
|
151
|
-
* if (isErrorWithStatus(error)) {
|
|
152
|
-
* console.log(`HTTP status: ${error.status}`);
|
|
153
|
-
* }
|
|
154
|
-
* ```
|
|
155
|
-
*/
|
|
156
|
-
export declare function isErrorWithStatus(error: unknown): error is Error & {
|
|
157
|
-
status: unknown;
|
|
158
|
-
};
|
|
159
93
|
/**
|
|
160
94
|
* Safely get a property from an object if it exists.
|
|
161
95
|
*
|
|
@@ -170,40 +104,4 @@ export declare function isErrorWithStatus(error: unknown): error is Error & {
|
|
|
170
104
|
* ```
|
|
171
105
|
*/
|
|
172
106
|
export declare function getProperty<K extends PropertyKey>(obj: unknown, key: K): unknown;
|
|
173
|
-
/**
|
|
174
|
-
* Safely get a string property from an object.
|
|
175
|
-
*
|
|
176
|
-
* @param obj - Object to get property from
|
|
177
|
-
* @param key - Property key
|
|
178
|
-
* @returns String value or undefined if property doesn't exist or is not a string
|
|
179
|
-
*
|
|
180
|
-
* @example
|
|
181
|
-
* ```typescript
|
|
182
|
-
* const traceId = getStringProperty(context, 'traceId');
|
|
183
|
-
* if (traceId) {
|
|
184
|
-
* // traceId is typed as string
|
|
185
|
-
* console.log(traceId.toUpperCase());
|
|
186
|
-
* }
|
|
187
|
-
* ```
|
|
188
|
-
*/
|
|
189
|
-
export declare function getStringProperty<K extends PropertyKey>(obj: unknown, key: K): string | undefined;
|
|
190
|
-
/**
|
|
191
|
-
* Safely get a number property from an object.
|
|
192
|
-
*
|
|
193
|
-
* Returns `undefined` if the property is absent, not a number, or is `NaN`.
|
|
194
|
-
*
|
|
195
|
-
* @param obj - Object to get property from
|
|
196
|
-
* @param key - Property key
|
|
197
|
-
* @returns Number value or undefined if property doesn't exist, is not a number, or is NaN
|
|
198
|
-
*
|
|
199
|
-
* @example
|
|
200
|
-
* ```typescript
|
|
201
|
-
* const retries = getNumberProperty(config, 'maxRetries');
|
|
202
|
-
* if (retries !== undefined) {
|
|
203
|
-
* // retries is typed as number
|
|
204
|
-
* console.log(`Max retries: ${retries}`);
|
|
205
|
-
* }
|
|
206
|
-
* ```
|
|
207
|
-
*/
|
|
208
|
-
export declare function getNumberProperty<K extends PropertyKey>(obj: unknown, key: K): number | undefined;
|
|
209
107
|
//# sourceMappingURL=guards.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"guards.d.ts","sourceRoot":"","sources":["../../../src/utils/types/guards.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;;;;;;;;;;;GAaG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAExD;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAEzE;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,WAAW,CAAC,CAAC,SAAS,WAAW,EAC/C,GAAG,EAAE,OAAO,EACZ,GAAG,EAAE,CAAC,GACL,GAAG,IAAI,MAAM,CAAC,CAAC,EAAE,OAAO,CAAC,CAE3B;AAED
|
|
1
|
+
{"version":3,"file":"guards.d.ts","sourceRoot":"","sources":["../../../src/utils/types/guards.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;;;;;;;;;;;GAaG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAExD;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAEzE;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,WAAW,CAAC,CAAC,SAAS,WAAW,EAC/C,GAAG,EAAE,OAAO,EACZ,GAAG,EAAE,CAAC,GACL,GAAG,IAAI,MAAM,CAAC,CAAC,EAAE,OAAO,CAAC,CAE3B;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,KAAK,GAAG;IAAE,MAAM,EAAE,OAAO,EAAE,CAAA;CAAE,CAEvF;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,KAAK,GAAG;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,CAElF;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,WAAW,CAAC,CAAC,SAAS,WAAW,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,GAAG,OAAO,CAEhF"}
|
|
@@ -60,62 +60,6 @@ export function isRecord(value) {
|
|
|
60
60
|
export function hasProperty(obj, key) {
|
|
61
61
|
return isObject(obj) && key in obj;
|
|
62
62
|
}
|
|
63
|
-
/**
|
|
64
|
-
* Type guard to check if an object has a property of a specific type.
|
|
65
|
-
*
|
|
66
|
-
* @param obj - Object to check
|
|
67
|
-
* @param key - Property key to look for
|
|
68
|
-
* @param typeGuard - Type guard function for the property value
|
|
69
|
-
* @returns True if object has the property and it matches the type
|
|
70
|
-
*
|
|
71
|
-
* @example
|
|
72
|
-
* ```typescript
|
|
73
|
-
* if (hasPropertyOfType(obj, 'count', (v): v is number => typeof v === 'number')) {
|
|
74
|
-
* // obj.count is now typed as number
|
|
75
|
-
* console.log(obj.count + 1);
|
|
76
|
-
* }
|
|
77
|
-
* ```
|
|
78
|
-
*/
|
|
79
|
-
export function hasPropertyOfType(obj, key, typeGuard) {
|
|
80
|
-
return hasProperty(obj, key) && typeGuard(obj[key]);
|
|
81
|
-
}
|
|
82
|
-
/**
|
|
83
|
-
* Type guard to check if a value is a string.
|
|
84
|
-
*
|
|
85
|
-
* @param value - Value to check
|
|
86
|
-
* @returns True if value is a string
|
|
87
|
-
*
|
|
88
|
-
* @example
|
|
89
|
-
* ```typescript
|
|
90
|
-
* if (isString(value)) {
|
|
91
|
-
* // value is now typed as string
|
|
92
|
-
* console.log(value.toUpperCase());
|
|
93
|
-
* }
|
|
94
|
-
* ```
|
|
95
|
-
*/
|
|
96
|
-
export function isString(value) {
|
|
97
|
-
return typeof value === 'string';
|
|
98
|
-
}
|
|
99
|
-
/**
|
|
100
|
-
* Type guard to check if a value is a number.
|
|
101
|
-
*
|
|
102
|
-
* `NaN` is explicitly excluded — `typeof NaN === 'number'` is true in JavaScript,
|
|
103
|
-
* but `NaN` is almost never a valid value in the contexts where this guard is used.
|
|
104
|
-
*
|
|
105
|
-
* @param value - Value to check
|
|
106
|
-
* @returns True if value is a finite or infinite number (excluding NaN)
|
|
107
|
-
*
|
|
108
|
-
* @example
|
|
109
|
-
* ```typescript
|
|
110
|
-
* if (isNumber(value)) {
|
|
111
|
-
* // value is now typed as number (NaN excluded)
|
|
112
|
-
* console.log(value.toFixed(2));
|
|
113
|
-
* }
|
|
114
|
-
* ```
|
|
115
|
-
*/
|
|
116
|
-
export function isNumber(value) {
|
|
117
|
-
return typeof value === 'number' && !Number.isNaN(value);
|
|
118
|
-
}
|
|
119
63
|
/**
|
|
120
64
|
* Type guard to check if an error is an AggregateError.
|
|
121
65
|
*
|
|
@@ -152,22 +96,6 @@ export function isAggregateError(error) {
|
|
|
152
96
|
export function isErrorWithCode(error) {
|
|
153
97
|
return error instanceof Error && hasProperty(error, 'code');
|
|
154
98
|
}
|
|
155
|
-
/**
|
|
156
|
-
* Type guard to check if an error has a status property.
|
|
157
|
-
*
|
|
158
|
-
* @param error - Error to check
|
|
159
|
-
* @returns True if error has a status property
|
|
160
|
-
*
|
|
161
|
-
* @example
|
|
162
|
-
* ```typescript
|
|
163
|
-
* if (isErrorWithStatus(error)) {
|
|
164
|
-
* console.log(`HTTP status: ${error.status}`);
|
|
165
|
-
* }
|
|
166
|
-
* ```
|
|
167
|
-
*/
|
|
168
|
-
export function isErrorWithStatus(error) {
|
|
169
|
-
return error instanceof Error && hasProperty(error, 'status');
|
|
170
|
-
}
|
|
171
99
|
/**
|
|
172
100
|
* Safely get a property from an object if it exists.
|
|
173
101
|
*
|
|
@@ -184,46 +112,4 @@ export function isErrorWithStatus(error) {
|
|
|
184
112
|
export function getProperty(obj, key) {
|
|
185
113
|
return hasProperty(obj, key) ? obj[key] : undefined;
|
|
186
114
|
}
|
|
187
|
-
/**
|
|
188
|
-
* Safely get a string property from an object.
|
|
189
|
-
*
|
|
190
|
-
* @param obj - Object to get property from
|
|
191
|
-
* @param key - Property key
|
|
192
|
-
* @returns String value or undefined if property doesn't exist or is not a string
|
|
193
|
-
*
|
|
194
|
-
* @example
|
|
195
|
-
* ```typescript
|
|
196
|
-
* const traceId = getStringProperty(context, 'traceId');
|
|
197
|
-
* if (traceId) {
|
|
198
|
-
* // traceId is typed as string
|
|
199
|
-
* console.log(traceId.toUpperCase());
|
|
200
|
-
* }
|
|
201
|
-
* ```
|
|
202
|
-
*/
|
|
203
|
-
export function getStringProperty(obj, key) {
|
|
204
|
-
const value = getProperty(obj, key);
|
|
205
|
-
return isString(value) ? value : undefined;
|
|
206
|
-
}
|
|
207
|
-
/**
|
|
208
|
-
* Safely get a number property from an object.
|
|
209
|
-
*
|
|
210
|
-
* Returns `undefined` if the property is absent, not a number, or is `NaN`.
|
|
211
|
-
*
|
|
212
|
-
* @param obj - Object to get property from
|
|
213
|
-
* @param key - Property key
|
|
214
|
-
* @returns Number value or undefined if property doesn't exist, is not a number, or is NaN
|
|
215
|
-
*
|
|
216
|
-
* @example
|
|
217
|
-
* ```typescript
|
|
218
|
-
* const retries = getNumberProperty(config, 'maxRetries');
|
|
219
|
-
* if (retries !== undefined) {
|
|
220
|
-
* // retries is typed as number
|
|
221
|
-
* console.log(`Max retries: ${retries}`);
|
|
222
|
-
* }
|
|
223
|
-
* ```
|
|
224
|
-
*/
|
|
225
|
-
export function getNumberProperty(obj, key) {
|
|
226
|
-
const value = getProperty(obj, key);
|
|
227
|
-
return isNumber(value) ? value : undefined;
|
|
228
|
-
}
|
|
229
115
|
//# sourceMappingURL=guards.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"guards.js","sourceRoot":"","sources":["../../../src/utils/types/guards.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,QAAQ,CAAC,KAAc;IACrC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9E,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,QAAQ,CAAC,KAAc;IACrC,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC;AACzB,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,WAAW,CACzB,GAAY,EACZ,GAAM;IAEN,OAAO,QAAQ,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,GAAG,CAAC;AACrC,CAAC;AAED
|
|
1
|
+
{"version":3,"file":"guards.js","sourceRoot":"","sources":["../../../src/utils/types/guards.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,QAAQ,CAAC,KAAc;IACrC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9E,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,QAAQ,CAAC,KAAc;IACrC,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC;AACzB,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,WAAW,CACzB,GAAY,EACZ,GAAM;IAEN,OAAO,QAAQ,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,GAAG,CAAC;AACrC,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAAc;IAC7C,OAAO,KAAK,YAAY,KAAK,IAAI,WAAW,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;AAC/F,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,eAAe,CAAC,KAAc;IAC5C,OAAO,KAAK,YAAY,KAAK,IAAI,WAAW,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AAC9D,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,WAAW,CAAwB,GAAY,EAAE,GAAM;IACrE,OAAO,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AACtD,CAAC"}
|
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.8",
|
|
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,6 +164,7 @@
|
|
|
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",
|
|
167
168
|
"list-skills": "bun run scripts/list-skills.ts",
|
|
168
169
|
"tree": "bun run scripts/tree.ts",
|
|
169
170
|
"fetch-spec": "bun run scripts/fetch-openapi-spec.ts",
|
|
@@ -196,23 +197,23 @@
|
|
|
196
197
|
"publish-mcp": "mcp-publisher login github -token \"$(security find-generic-password -a \"$USER\" -s mcp-publisher-github-pat -w)\" && mcp-publisher publish"
|
|
197
198
|
},
|
|
198
199
|
"devDependencies": {
|
|
199
|
-
"@biomejs/biome": "2.5.
|
|
200
|
+
"@biomejs/biome": "2.5.12",
|
|
200
201
|
"@cloudflare/vitest-pool-workers": "^0.22.0",
|
|
201
|
-
"@cloudflare/workers-types": "5.
|
|
202
|
+
"@cloudflare/workers-types": "5.20260905.1",
|
|
202
203
|
"@duckdb/node-api": "^1.5.5-r.4",
|
|
203
204
|
"@hono/otel": "^1.1.2",
|
|
204
|
-
"@opentelemetry/exporter-metrics-otlp-http": "^0.
|
|
205
|
-
"@opentelemetry/exporter-trace-otlp-http": "^0.
|
|
206
|
-
"@opentelemetry/instrumentation-http": "^0.
|
|
207
|
-
"@opentelemetry/instrumentation-pino": "^0.
|
|
208
|
-
"@opentelemetry/resources": "^2.
|
|
209
|
-
"@opentelemetry/sdk-metrics": "^2.
|
|
210
|
-
"@opentelemetry/sdk-node": "^0.
|
|
211
|
-
"@opentelemetry/sdk-trace-node": "^2.
|
|
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",
|
|
209
|
+
"@opentelemetry/resources": "^2.11.0",
|
|
210
|
+
"@opentelemetry/sdk-metrics": "^2.11.0",
|
|
211
|
+
"@opentelemetry/sdk-node": "^0.222.0",
|
|
212
|
+
"@opentelemetry/sdk-trace-node": "^2.11.0",
|
|
212
213
|
"@opentelemetry/semantic-conventions": "^1.43.0",
|
|
213
214
|
"@socketsecurity/bun-security-scanner": "^1.1.2",
|
|
214
|
-
"@supabase/supabase-js": "^2.
|
|
215
|
-
"@types/bun": "^1.4.
|
|
215
|
+
"@supabase/supabase-js": "^2.115.0",
|
|
216
|
+
"@types/bun": "^1.4.1",
|
|
216
217
|
"@types/node": "26.4.0",
|
|
217
218
|
"@types/papaparse": "^5.5.2",
|
|
218
219
|
"@types/sanitize-html": "^2.16.1",
|
|
@@ -220,7 +221,7 @@
|
|
|
220
221
|
"@vitest/coverage-istanbul": "4.1.11",
|
|
221
222
|
"@vitest/ui": "4.1.11",
|
|
222
223
|
"better-sqlite3": "^13.0.3",
|
|
223
|
-
"bun-types": "^1.4.
|
|
224
|
+
"bun-types": "^1.4.2",
|
|
224
225
|
"chrono-node": "^2.10.1",
|
|
225
226
|
"clipboardy": "^5.3.2",
|
|
226
227
|
"defuddle": "^0.19.3",
|
|
@@ -229,18 +230,18 @@
|
|
|
229
230
|
"execa": "^10.0.1",
|
|
230
231
|
"fast-check": "^4.9.0",
|
|
231
232
|
"fast-xml-parser": "^5.11.1",
|
|
232
|
-
"ignore": "^7.0.
|
|
233
|
+
"ignore": "^7.0.8",
|
|
233
234
|
"js-yaml": "^5.4.1",
|
|
234
235
|
"linkedom": "^0.18.13",
|
|
235
236
|
"node-cron": "^4.6.0",
|
|
236
|
-
"openai": "^7.
|
|
237
|
+
"openai": "^7.10.0",
|
|
237
238
|
"papaparse": "^5.7.0",
|
|
238
239
|
"partial-json": "^0.1.7",
|
|
239
240
|
"pdf-lib": "^1.17.1",
|
|
240
241
|
"pino-pretty": "^13.1.3",
|
|
241
242
|
"repomix": "^1.18.0",
|
|
242
243
|
"sanitize-html": "^2.17.7",
|
|
243
|
-
"tsc-alias": "^1.9.
|
|
244
|
+
"tsc-alias": "^1.9.4",
|
|
244
245
|
"typedoc": "^0.28.20",
|
|
245
246
|
"typescript": "^7.0.2",
|
|
246
247
|
"typescript-v6": "npm:typescript@^6.0.3",
|
|
@@ -305,21 +306,21 @@
|
|
|
305
306
|
"@modelcontextprotocol/server": "^2.0.0",
|
|
306
307
|
"@opentelemetry/api": "^1.9.1",
|
|
307
308
|
"dotenv": "^17.4.2",
|
|
308
|
-
"hono": "^4.13.
|
|
309
|
-
"jose": "^6.2.
|
|
309
|
+
"hono": "^4.13.7",
|
|
310
|
+
"jose": "^6.2.12",
|
|
310
311
|
"pino": "^10.3.1",
|
|
311
312
|
"zod": "^4.5.4"
|
|
312
313
|
},
|
|
313
314
|
"peerDependencies": {
|
|
314
315
|
"@duckdb/node-api": "^1.5.5-r.1",
|
|
315
316
|
"@hono/otel": "^1.1.2",
|
|
316
|
-
"@opentelemetry/instrumentation-http": "^0.
|
|
317
|
-
"@opentelemetry/exporter-metrics-otlp-http": "^0.
|
|
318
|
-
"@opentelemetry/exporter-trace-otlp-http": "^0.
|
|
319
|
-
"@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",
|
|
320
321
|
"@opentelemetry/resources": "^2.10.0",
|
|
321
322
|
"@opentelemetry/sdk-metrics": "^2.10.0",
|
|
322
|
-
"@opentelemetry/sdk-node": "^0.
|
|
323
|
+
"@opentelemetry/sdk-node": "^0.222.0",
|
|
323
324
|
"@opentelemetry/sdk-trace-node": "^2.10.0",
|
|
324
325
|
"@opentelemetry/semantic-conventions": "^1.43.0",
|
|
325
326
|
"@supabase/supabase-js": "^2.110.8",
|
|
@@ -15,7 +15,10 @@
|
|
|
15
15
|
* `tools/list`, so `z.unknown()` / `z.any()` / `.passthrough()` breaks
|
|
16
16
|
* schema advertising. Consumer-side `.passthrough()` on output schemas
|
|
17
17
|
* is a documented escape hatch and stays legal (rule is scoped to
|
|
18
|
-
* `src/mcp-server/tools/`).
|
|
18
|
+
* `src/mcp-server/tools/`). The one sanctioned substitution is
|
|
19
|
+
* `deferInputValidation()` (#377): it projects the same JSON Schema and
|
|
20
|
+
* moves only *where* a rejection is reported. Anything that widens what
|
|
21
|
+
* is advertised is still a violation.
|
|
19
22
|
* 2. Mutating `RegisteredTool.inputSchema` after register breaks
|
|
20
23
|
* `tools/list` the same way — the SDK reads the stored Zod object at list
|
|
21
24
|
* time.
|