@nestia/core 14.0.0 → 14.0.2
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/MIGRATION.md +20 -0
- package/README.md +1 -1
- package/lib/adaptors/McpAdaptor.d.ts +29 -3
- package/lib/adaptors/McpAdaptor.js +150 -24
- package/lib/adaptors/McpAdaptor.js.map +1 -1
- package/lib/adaptors/WebSocketAdaptor.d.ts +37 -0
- package/lib/adaptors/WebSocketAdaptor.js +184 -48
- package/lib/adaptors/WebSocketAdaptor.js.map +1 -1
- package/lib/adaptors/internal/RoutePathMatcher.d.ts +1 -0
- package/lib/adaptors/internal/RoutePathMatcher.js +88 -0
- package/lib/adaptors/internal/RoutePathMatcher.js.map +1 -0
- package/lib/adaptors/internal/external_context.d.ts +1 -0
- package/lib/adaptors/internal/external_context.js +56 -0
- package/lib/adaptors/internal/external_context.js.map +1 -0
- package/lib/decorators/DynamicModule.d.ts +12 -0
- package/lib/decorators/DynamicModule.js +12 -0
- package/lib/decorators/DynamicModule.js.map +1 -1
- package/lib/decorators/EncryptedBody.d.ts +14 -6
- package/lib/decorators/EncryptedBody.js +39 -16
- package/lib/decorators/EncryptedBody.js.map +1 -1
- package/lib/decorators/EncryptedController.d.ts +6 -1
- package/lib/decorators/EncryptedController.js +7 -2
- package/lib/decorators/EncryptedController.js.map +1 -1
- package/lib/decorators/EncryptedModule.d.ts +25 -6
- package/lib/decorators/EncryptedModule.js +87 -18
- package/lib/decorators/EncryptedModule.js.map +1 -1
- package/lib/decorators/EncryptedRoute.d.ts +20 -11
- package/lib/decorators/EncryptedRoute.js +27 -13
- package/lib/decorators/EncryptedRoute.js.map +1 -1
- package/lib/decorators/HumanRoute.d.ts +5 -0
- package/lib/decorators/HumanRoute.js +5 -0
- package/lib/decorators/HumanRoute.js.map +1 -1
- package/lib/decorators/McpRoute.d.ts +31 -19
- package/lib/decorators/McpRoute.js +12 -1
- package/lib/decorators/McpRoute.js.map +1 -1
- package/lib/decorators/PlainBody.d.ts +7 -1
- package/lib/decorators/PlainBody.js +16 -8
- package/lib/decorators/PlainBody.js.map +1 -1
- package/lib/decorators/SwaggerCustomizer.d.ts +15 -0
- package/lib/decorators/SwaggerCustomizer.js +5 -0
- package/lib/decorators/SwaggerCustomizer.js.map +1 -1
- package/lib/decorators/SwaggerExample.d.ts +51 -22
- package/lib/decorators/SwaggerExample.js +35 -22
- package/lib/decorators/SwaggerExample.js.map +1 -1
- package/lib/decorators/TypedBody.d.ts +10 -3
- package/lib/decorators/TypedBody.js +20 -10
- package/lib/decorators/TypedBody.js.map +1 -1
- package/lib/decorators/TypedException.d.ts +10 -0
- package/lib/decorators/TypedFormData.d.ts +81 -9
- package/lib/decorators/TypedFormData.js +121 -31
- package/lib/decorators/TypedFormData.js.map +1 -1
- package/lib/decorators/TypedHeaders.d.ts +5 -0
- package/lib/decorators/TypedHeaders.js +5 -0
- package/lib/decorators/TypedHeaders.js.map +1 -1
- package/lib/decorators/TypedParam.d.ts +12 -3
- package/lib/decorators/TypedParam.js +12 -3
- package/lib/decorators/TypedParam.js.map +1 -1
- package/lib/decorators/TypedQuery.d.ts +17 -1
- package/lib/decorators/TypedQuery.js +25 -4
- package/lib/decorators/TypedQuery.js.map +1 -1
- package/lib/decorators/TypedRoute.d.ts +25 -10
- package/lib/decorators/TypedRoute.js +19 -10
- package/lib/decorators/TypedRoute.js.map +1 -1
- package/lib/decorators/WebSocketRoute.d.ts +18 -1
- package/lib/decorators/WebSocketRoute.js +18 -1
- package/lib/decorators/WebSocketRoute.js.map +1 -1
- package/lib/decorators/doNotThrowTransformError.d.ts +14 -0
- package/lib/decorators/doNotThrowTransformError.js +14 -0
- package/lib/decorators/doNotThrowTransformError.js.map +1 -1
- package/lib/decorators/internal/EncryptedConstant.js +13 -2
- package/lib/decorators/internal/EncryptedConstant.js.map +1 -1
- package/lib/decorators/internal/IRequestBodyValidation.d.ts +66 -0
- package/lib/decorators/internal/IRequestBodyValidation.js +3 -0
- package/lib/decorators/internal/IRequestBodyValidation.js.map +1 -0
- package/lib/decorators/internal/IWebSocketRouteReflect.d.ts +93 -1
- package/lib/decorators/internal/get_encryption_password.d.ts +1 -0
- package/lib/decorators/internal/get_encryption_password.js +14 -0
- package/lib/decorators/internal/get_encryption_password.js.map +1 -0
- package/lib/decorators/internal/get_path_and_querify.js +23 -9
- package/lib/decorators/internal/get_path_and_querify.js.map +1 -1
- package/lib/decorators/internal/get_path_and_stringify.js +3 -7
- package/lib/decorators/internal/get_path_and_stringify.js.map +1 -1
- package/lib/decorators/internal/get_text_body.js +9 -3
- package/lib/decorators/internal/get_text_body.js.map +1 -1
- package/lib/decorators/internal/group_entries.d.ts +1 -0
- package/lib/decorators/internal/group_entries.js +19 -0
- package/lib/decorators/internal/group_entries.js.map +1 -0
- package/lib/decorators/internal/load_controller.d.ts +14 -0
- package/lib/decorators/internal/load_controller.js +14 -0
- package/lib/decorators/internal/load_controller.js.map +1 -1
- package/lib/decorators/internal/split_route_arguments.d.ts +1 -0
- package/lib/decorators/internal/split_route_arguments.js +22 -0
- package/lib/decorators/internal/split_route_arguments.js.map +1 -0
- package/lib/decorators/internal/validate_request_body.js +68 -25
- package/lib/decorators/internal/validate_request_body.js.map +1 -1
- package/lib/decorators/internal/validate_request_form_data.js +3 -1
- package/lib/decorators/internal/validate_request_form_data.js.map +1 -1
- package/lib/decorators/internal/validate_request_headers.js +2 -1
- package/lib/decorators/internal/validate_request_headers.js.map +1 -1
- package/lib/decorators/internal/validate_request_query.js +3 -1
- package/lib/decorators/internal/validate_request_query.js.map +1 -1
- package/lib/options/IRequestBodyValidator.d.ts +71 -0
- package/lib/options/IRequestFormDataProps.d.ts +80 -0
- package/lib/options/IRequestHeadersValidator.d.ts +67 -0
- package/lib/options/IRequestQueryValidator.d.ts +68 -0
- package/lib/options/IResponseBodyQuerifier.d.ts +125 -1
- package/lib/options/IResponseBodyStringifier.d.ts +107 -0
- package/lib/typings/Creator.d.ts +10 -0
- package/lib/utils/ArrayUtil.d.ts +21 -0
- package/lib/utils/ArrayUtil.js +22 -1
- package/lib/utils/ArrayUtil.js.map +1 -1
- package/lib/utils/ExceptionManager.d.ts +43 -4
- package/lib/utils/ExceptionManager.js +44 -6
- package/lib/utils/ExceptionManager.js.map +1 -1
- package/lib/utils/SourceFinder.d.ts +22 -0
- package/lib/utils/SourceFinder.js +60 -10
- package/lib/utils/SourceFinder.js.map +1 -1
- package/lib/utils/VersioningStrategy.d.ts +45 -2
- package/lib/utils/VersioningStrategy.js +40 -7
- package/lib/utils/VersioningStrategy.js.map +1 -1
- package/native/go.mod +1 -1
- package/native/go.sum +2 -2
- package/native/plugin/plan.go +68 -2
- package/native/transform/ast.go +23 -3
- package/native/transform/build.go +51 -57
- package/native/transform/buildoutput/output.go +147 -0
- package/native/transform/contributor.go +9 -0
- package/native/transform/core_querify.go +63 -9
- package/native/transform/core_transform.go +180 -98
- package/native/transform/core_websocket.go +111 -14
- package/native/transform/node_transform.go +17 -8
- package/native/transform/package.go +55 -0
- package/native/transform/printer.go +1 -3
- package/native/transform/run.go +18 -0
- package/native/transform/schemaprojection/project.go +213 -0
- package/native/transform/transform.go +29 -18
- package/native/transform/typia_fast.go +6 -0
- package/native/transform.cjs +49 -0
- package/package.json +13 -15
- package/src/adaptors/McpAdaptor.ts +215 -33
- package/src/adaptors/WebSocketAdaptor.ts +202 -52
- package/src/adaptors/internal/RoutePathMatcher.ts +91 -0
- package/src/adaptors/internal/external_context.ts +81 -0
- package/src/decorators/DynamicModule.ts +12 -0
- package/src/decorators/EncryptedBody.ts +39 -15
- package/src/decorators/EncryptedController.ts +12 -3
- package/src/decorators/EncryptedModule.ts +89 -18
- package/src/decorators/EncryptedRoute.ts +27 -16
- package/src/decorators/HumanRoute.ts +5 -0
- package/src/decorators/McpRoute.ts +31 -19
- package/src/decorators/PlainBody.ts +20 -10
- package/src/decorators/SwaggerCustomizer.ts +15 -0
- package/src/decorators/SwaggerExample.ts +51 -22
- package/src/decorators/TypedBody.ts +18 -9
- package/src/decorators/TypedException.ts +10 -0
- package/src/decorators/TypedFormData.ts +207 -45
- package/src/decorators/TypedHeaders.ts +5 -0
- package/src/decorators/TypedParam.ts +12 -3
- package/src/decorators/TypedQuery.ts +35 -7
- package/src/decorators/TypedRoute.ts +25 -10
- package/src/decorators/WebSocketRoute.ts +18 -1
- package/src/decorators/doNotThrowTransformError.ts +14 -0
- package/src/decorators/internal/EncryptedConstant.ts +14 -1
- package/src/decorators/internal/IMcpRouteReflect.ts +7 -1
- package/src/decorators/internal/IRequestBodyValidation.ts +65 -0
- package/src/decorators/internal/IWebSocketRouteReflect.ts +95 -1
- package/src/decorators/internal/get_encryption_password.ts +19 -0
- package/src/decorators/internal/get_path_and_querify.ts +31 -10
- package/src/decorators/internal/get_path_and_stringify.ts +3 -9
- package/src/decorators/internal/get_text_body.ts +8 -4
- package/src/decorators/internal/group_entries.ts +17 -0
- package/src/decorators/internal/load_controller.ts +14 -0
- package/src/decorators/internal/split_route_arguments.ts +20 -0
- package/src/decorators/internal/validate_request_body.ts +87 -34
- package/src/decorators/internal/validate_request_form_data.ts +3 -1
- package/src/decorators/internal/validate_request_headers.ts +2 -2
- package/src/decorators/internal/validate_request_query.ts +3 -2
- package/src/options/IRequestBodyValidator.ts +71 -0
- package/src/options/IRequestFormDataProps.ts +80 -0
- package/src/options/IRequestHeadersValidator.ts +67 -0
- package/src/options/IRequestQueryValidator.ts +68 -0
- package/src/options/IResponseBodyQuerifier.ts +126 -1
- package/src/options/IResponseBodyStringifier.ts +107 -0
- package/src/typings/Creator.ts +10 -0
- package/src/utils/ArrayUtil.ts +22 -3
- package/src/utils/ExceptionManager.ts +50 -6
- package/src/utils/SourceFinder.ts +62 -10
- package/src/utils/VersioningStrategy.ts +55 -11
- package/lib/transform.d.ts +0 -10
- package/lib/transform.js +0 -25
- package/lib/transform.js.map +0 -1
- package/src/transform.ts +0 -26
package/MIGRATION.md
CHANGED
|
@@ -93,6 +93,26 @@ Add `compilerOptions.plugins` only when you want to override those options:
|
|
|
93
93
|
The `typia` entry is a host tombstone for tools that inspect plugin arrays.
|
|
94
94
|
The actual typia transform is composed by the native Nestia binary.
|
|
95
95
|
|
|
96
|
+
### A plugin list kept from nestia v11
|
|
97
|
+
|
|
98
|
+
A project upgraded from nestia v11 may still list the plugins that version documented:
|
|
99
|
+
|
|
100
|
+
```jsonc
|
|
101
|
+
{
|
|
102
|
+
"compilerOptions": {
|
|
103
|
+
"plugins": [
|
|
104
|
+
{ "transform": "typia/lib/transform" },
|
|
105
|
+
{ "transform": "@nestia/core/lib/transform", "validate": "assert", "stringify": "assert" },
|
|
106
|
+
{ "transform": "@nestia/sdk/lib/transform" }
|
|
107
|
+
]
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
It builds unchanged. `@nestia/core/lib/transform` resolves to the same descriptor as `@nestia/core/native/transform.cjs`, which composes the `typia` entry and applies the `validate` and `stringify` options. The `@nestia/sdk/lib/transform` entry attaches SDK metadata in every build, as it did in v11, so `@nestia/sdk` must stay installed at runtime. Replace the list with the override above, or remove it for the defaults.
|
|
113
|
+
|
|
114
|
+
Releases before this change gave `@nestia/core/lib/transform` a host of its own, and ttsc stopped with `multiple compiler native backends cannot share one emit pass`. On such a release, replace the list as above.
|
|
115
|
+
|
|
96
116
|
## CLI setup flow
|
|
97
117
|
|
|
98
118
|
The CLI no longer provides an interactive setup command. Install packages and
|
package/README.md
CHANGED
|
@@ -60,7 +60,7 @@ Check out the document in the [website](https://nestia.io/docs/):
|
|
|
60
60
|
### 🏠 Home
|
|
61
61
|
- [Introduction](https://nestia.io/docs/)
|
|
62
62
|
- [Setup](https://nestia.io/docs/setup/)
|
|
63
|
-
- [Pure TypeScript](https://nestia.io/docs/
|
|
63
|
+
- [Pure TypeScript](https://nestia.io/docs/core/TypedBody/)
|
|
64
64
|
|
|
65
65
|
### 📖 Features
|
|
66
66
|
- Core Library
|
|
@@ -15,6 +15,11 @@ import { INestApplication } from "@nestjs/common";
|
|
|
15
15
|
* registration API of `McpServer` is bypassed by accessing the low-level
|
|
16
16
|
* `.server` handler.
|
|
17
17
|
*
|
|
18
|
+
* A tool call passes the guards, interceptors, pipes, and exception filters
|
|
19
|
+
* NestJS applies to an HTTP route on the same method, with the MCP HTTP request
|
|
20
|
+
* as the execution context. The endpoint is mounted at `path` as given, outside
|
|
21
|
+
* the application's global prefix.
|
|
22
|
+
*
|
|
18
23
|
* Error mapping follows the MCP specification:
|
|
19
24
|
*
|
|
20
25
|
* - Unknown tool name: JSON-RPC `-32601`.
|
|
@@ -25,14 +30,12 @@ import { INestApplication } from "@nestjs/common";
|
|
|
25
30
|
*
|
|
26
31
|
* @author wildduck - https://github.com/wildduck2
|
|
27
32
|
* @example
|
|
28
|
-
* ```typescript
|
|
29
33
|
* import core from "@nestia/core";
|
|
30
34
|
* import { NestFactory } from "@nestjs/core";
|
|
31
35
|
*
|
|
32
36
|
* const app = await NestFactory.create(AppModule);
|
|
33
37
|
* await core.McpAdaptor.upgrade(app, { path: "/mcp" });
|
|
34
38
|
* await app.listen(3000);
|
|
35
|
-
* ```;
|
|
36
39
|
*/
|
|
37
40
|
export declare class McpAdaptor {
|
|
38
41
|
/**
|
|
@@ -49,11 +52,34 @@ export declare class McpAdaptor {
|
|
|
49
52
|
*
|
|
50
53
|
* @param app Running Nest application instance.
|
|
51
54
|
* @param options Transport and identity overrides.
|
|
55
|
+
* @evidence contracts/common.md#principled-implementation Tools are collected once from the prototype chain of every controller instance by the `nestia/McpRoute` metadata, with the first definition of a property name winning and accessors skipped without execution, duplicates by tool name refused before serving, and each call runs through NestJS's `ExternalContextCreator` so guards, interceptors, pipes, and exception filters apply as for an HTTP route; every request gets a fresh MCP server and Streamable HTTP transport, which stateless mode requires, and both are closed in a `finally`.
|
|
56
|
+
* @evidence contracts/common.md#clear-and-simple-design One entry point does discovery and registration; the per-tool call (`createHandler`), the duplicate check, the SDK loader, and the per-request response facade are separate module-private functions.
|
|
57
|
+
* @evidence contracts/common.md#prohibited-implementation-shortcuts Reading the module graph goes through the internal `app.container`, because `INestApplication` exposes no public accessor for it, `create_external_context_creator` constructs an owned subclass through the Nest constructor and overrides module selection on that type, because the default looks for provider classes while controllers belong to the controller collection, and `get_request_context_id` registers the request provider on the request object as NestJS's router does for an HTTP route, and a per-request response facade forwards native state, events and method receivers without replacing raw methods. After a tool or its exception filter has sent headers, only the facade suppresses subsequent transport writes and preserves callbacks and chaining. Native transport writes do not themselves activate takeover. The remaining foreign-internal reads are the application container and Nest request context registration; the MCP SDK uses its public Node response injection boundary.
|
|
58
|
+
* @evidence contracts/common.md#meaningful-documentation The comment states the stateless mode, what is discovered, and that the SDK is an optional dependency; the options documentation states the path and server information.
|
|
59
|
+
* @evidenceExclude contracts/portability.md#os-neutral-implementation MCP tool discovery and HTTP transport callbacks carry protocol values; optional SDK imports use Node module resolution and no native file identity or child process is defined here.
|
|
52
60
|
*/
|
|
53
61
|
static upgrade(app: INestApplication, options?: McpAdaptor.IOptions): Promise<void>;
|
|
54
62
|
}
|
|
63
|
+
/**
|
|
64
|
+
* Types of {@link McpAdaptor}: the options of `upgrade` and the record of a
|
|
65
|
+
* registered tool.
|
|
66
|
+
*
|
|
67
|
+
* @evidence contracts/common.md#principled-implementation The class exposes one static entry point, so the adapter has no instance state: the tool list is closed over by the registered route handler.
|
|
68
|
+
* @evidence contracts/common.md#clear-and-simple-design One static method and two nested types.
|
|
69
|
+
* @evidence contracts/common.md#prohibited-implementation-shortcuts It has no fixture or tool name, and the MCP SDK is loaded lazily so an application that never enables MCP does not need it.
|
|
70
|
+
* @evidence contracts/common.md#meaningful-documentation The class comment explains what an MCP route is and how to enable it.
|
|
71
|
+
* @evidenceExclude contracts/portability.md#os-neutral-implementation MCP tool discovery and HTTP transport callbacks carry protocol values; optional SDK imports use Node module resolution and no native file identity or child process is defined here.
|
|
72
|
+
*/
|
|
55
73
|
export declare namespace McpAdaptor {
|
|
56
|
-
/**
|
|
74
|
+
/**
|
|
75
|
+
* Configuration options for {@link McpAdaptor.upgrade}.
|
|
76
|
+
*
|
|
77
|
+
* @evidence contracts/common.md#principled-implementation The two options are the route path, with `/mcp` as the default, and the server information reported to clients, with a default name and version.
|
|
78
|
+
* @evidence contracts/common.md#clear-and-simple-design A flat record of two optional values.
|
|
79
|
+
* @evidence contracts/common.md#prohibited-implementation-shortcuts It is a type; the defaults are stated in the code that reads them.
|
|
80
|
+
* @evidence contracts/common.md#meaningful-documentation Each option documents its meaning.
|
|
81
|
+
* @evidenceExclude contracts/portability.md#os-neutral-implementation MCP tool discovery and HTTP transport callbacks carry protocol values; optional SDK imports use Node module resolution and no native file identity or child process is defined here.
|
|
82
|
+
*/
|
|
57
83
|
interface IOptions {
|
|
58
84
|
/**
|
|
59
85
|
* HTTP path where the MCP endpoint will be mounted.
|
|
@@ -44,6 +44,10 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
44
44
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
45
45
|
exports.McpAdaptor = void 0;
|
|
46
46
|
const common_1 = require("@nestjs/common");
|
|
47
|
+
const route_paramtypes_enum_1 = require("@nestjs/common/enums/route-paramtypes.enum");
|
|
48
|
+
const injector_1 = require("@nestjs/core/injector/injector");
|
|
49
|
+
const validate_request_body_1 = require("../decorators/internal/validate_request_body");
|
|
50
|
+
const external_context_1 = require("./internal/external_context");
|
|
47
51
|
/**
|
|
48
52
|
* MCP (Model Context Protocol) adaptor.
|
|
49
53
|
*
|
|
@@ -60,6 +64,11 @@ const common_1 = require("@nestjs/common");
|
|
|
60
64
|
* registration API of `McpServer` is bypassed by accessing the low-level
|
|
61
65
|
* `.server` handler.
|
|
62
66
|
*
|
|
67
|
+
* A tool call passes the guards, interceptors, pipes, and exception filters
|
|
68
|
+
* NestJS applies to an HTTP route on the same method, with the MCP HTTP request
|
|
69
|
+
* as the execution context. The endpoint is mounted at `path` as given, outside
|
|
70
|
+
* the application's global prefix.
|
|
71
|
+
*
|
|
63
72
|
* Error mapping follows the MCP specification:
|
|
64
73
|
*
|
|
65
74
|
* - Unknown tool name: JSON-RPC `-32601`.
|
|
@@ -70,14 +79,12 @@ const common_1 = require("@nestjs/common");
|
|
|
70
79
|
*
|
|
71
80
|
* @author wildduck - https://github.com/wildduck2
|
|
72
81
|
* @example
|
|
73
|
-
* ```typescript
|
|
74
82
|
* import core from "@nestia/core";
|
|
75
83
|
* import { NestFactory } from "@nestjs/core";
|
|
76
84
|
*
|
|
77
85
|
* const app = await NestFactory.create(AppModule);
|
|
78
86
|
* await core.McpAdaptor.upgrade(app, { path: "/mcp" });
|
|
79
87
|
* await app.listen(3000);
|
|
80
|
-
* ```;
|
|
81
88
|
*/
|
|
82
89
|
class McpAdaptor {
|
|
83
90
|
/**
|
|
@@ -94,6 +101,11 @@ class McpAdaptor {
|
|
|
94
101
|
*
|
|
95
102
|
* @param app Running Nest application instance.
|
|
96
103
|
* @param options Transport and identity overrides.
|
|
104
|
+
* @evidence contracts/common.md#principled-implementation Tools are collected once from the prototype chain of every controller instance by the `nestia/McpRoute` metadata, with the first definition of a property name winning and accessors skipped without execution, duplicates by tool name refused before serving, and each call runs through NestJS's `ExternalContextCreator` so guards, interceptors, pipes, and exception filters apply as for an HTTP route; every request gets a fresh MCP server and Streamable HTTP transport, which stateless mode requires, and both are closed in a `finally`.
|
|
105
|
+
* @evidence contracts/common.md#clear-and-simple-design One entry point does discovery and registration; the per-tool call (`createHandler`), the duplicate check, the SDK loader, and the per-request response facade are separate module-private functions.
|
|
106
|
+
* @evidence contracts/common.md#prohibited-implementation-shortcuts Reading the module graph goes through the internal `app.container`, because `INestApplication` exposes no public accessor for it, `create_external_context_creator` constructs an owned subclass through the Nest constructor and overrides module selection on that type, because the default looks for provider classes while controllers belong to the controller collection, and `get_request_context_id` registers the request provider on the request object as NestJS's router does for an HTTP route, and a per-request response facade forwards native state, events and method receivers without replacing raw methods. After a tool or its exception filter has sent headers, only the facade suppresses subsequent transport writes and preserves callbacks and chaining. Native transport writes do not themselves activate takeover. The remaining foreign-internal reads are the application container and Nest request context registration; the MCP SDK uses its public Node response injection boundary.
|
|
107
|
+
* @evidence contracts/common.md#meaningful-documentation The comment states the stateless mode, what is discovered, and that the SDK is an optional dependency; the options documentation states the path and server information.
|
|
108
|
+
* @evidenceExclude contracts/portability.md#os-neutral-implementation MCP tool discovery and HTTP transport callbacks carry protocol values; optional SDK imports use Node module resolution and no native file identity or child process is defined here.
|
|
97
109
|
*/
|
|
98
110
|
static upgrade(app_1) {
|
|
99
111
|
return __awaiter(this, arguments, void 0, function* (app, options = {}) {
|
|
@@ -103,7 +115,9 @@ class McpAdaptor {
|
|
|
103
115
|
throw new Error("McpAdaptor.upgrade() supports stateless Streamable HTTP only; sessioned mode is not implemented.");
|
|
104
116
|
const tools = [];
|
|
105
117
|
const container = app.container;
|
|
106
|
-
|
|
118
|
+
const injector = new injector_1.Injector();
|
|
119
|
+
for (const [moduleKey, module] of container.getModules()) {
|
|
120
|
+
const creator = (0, external_context_1.create_external_context_creator)(container, moduleKey);
|
|
107
121
|
for (const wrapper of module.controllers.values()) {
|
|
108
122
|
const instance = wrapper.instance;
|
|
109
123
|
if (!instance)
|
|
@@ -114,19 +128,26 @@ class McpAdaptor {
|
|
|
114
128
|
if (key === "constructor" || visited.has(key))
|
|
115
129
|
continue;
|
|
116
130
|
visited.add(key);
|
|
117
|
-
|
|
131
|
+
// Route discovery inspects data descriptors without invoking accessors.
|
|
132
|
+
const method = (_a = Object.getOwnPropertyDescriptor(proto, key)) === null || _a === void 0 ? void 0 : _a.value;
|
|
118
133
|
if (typeof method !== "function")
|
|
119
134
|
continue;
|
|
120
135
|
const meta = Reflect.getMetadata("nestia/McpRoute", method);
|
|
121
136
|
if (!meta)
|
|
122
137
|
continue;
|
|
123
138
|
const params = (_d = Reflect.getMetadata("nestia/McpRoute/Parameters", proto, key)) !== null && _d !== void 0 ? _d : [];
|
|
124
|
-
const paramValidator = (_a = params.find((p) => p.category === "params")) === null || _a === void 0 ? void 0 : _a.validate;
|
|
125
139
|
tools.push({
|
|
126
140
|
meta,
|
|
127
141
|
source: `${(_f = (_e = (_b = wrapper.metatype) === null || _b === void 0 ? void 0 : _b.name) !== null && _e !== void 0 ? _e : (_c = proto.constructor) === null || _c === void 0 ? void 0 : _c.name) !== null && _f !== void 0 ? _f : "UnknownController"}.${String(key)}`,
|
|
128
|
-
|
|
129
|
-
|
|
142
|
+
handler: createHandler({
|
|
143
|
+
container,
|
|
144
|
+
injector,
|
|
145
|
+
creator,
|
|
146
|
+
module,
|
|
147
|
+
wrapper,
|
|
148
|
+
key,
|
|
149
|
+
argument: params.find((p) => p.category === "params"),
|
|
150
|
+
}),
|
|
130
151
|
});
|
|
131
152
|
}
|
|
132
153
|
}
|
|
@@ -148,6 +169,7 @@ class McpAdaptor {
|
|
|
148
169
|
capabilities: { tools: {} },
|
|
149
170
|
});
|
|
150
171
|
const server = mcp.server;
|
|
172
|
+
const relay = transportResponse((_a = res.raw) !== null && _a !== void 0 ? _a : res);
|
|
151
173
|
server.setRequestHandler(ListToolsRequestSchema, () => __awaiter(this, void 0, void 0, function* () {
|
|
152
174
|
return ({
|
|
153
175
|
tools: tools.map((t) => ({
|
|
@@ -166,23 +188,16 @@ class McpAdaptor {
|
|
|
166
188
|
if (!tool)
|
|
167
189
|
throw new McpError(ErrorCode.MethodNotFound, `Tool not found: ${reqMsg.params.name}`);
|
|
168
190
|
const args = (_a = reqMsg.params.arguments) !== null && _a !== void 0 ? _a : {};
|
|
169
|
-
if (tool.validateArgs) {
|
|
170
|
-
const err = tool.validateArgs(args);
|
|
171
|
-
if (err !== null) {
|
|
172
|
-
const body = err instanceof common_1.BadRequestException
|
|
173
|
-
? err.getResponse()
|
|
174
|
-
: undefined;
|
|
175
|
-
throw new McpError(ErrorCode.InvalidParams, err.message, {
|
|
176
|
-
errors: body === null || body === void 0 ? void 0 : body.errors,
|
|
177
|
-
path: body === null || body === void 0 ? void 0 : body.path,
|
|
178
|
-
expected: body === null || body === void 0 ? void 0 : body.expected,
|
|
179
|
-
value: body === null || body === void 0 ? void 0 : body.value,
|
|
180
|
-
reason: body === null || body === void 0 ? void 0 : body.reason,
|
|
181
|
-
});
|
|
182
|
-
}
|
|
183
|
-
}
|
|
184
191
|
try {
|
|
185
|
-
const result = yield tool.handler(
|
|
192
|
+
const result = yield tool.handler({
|
|
193
|
+
request: req,
|
|
194
|
+
response: res,
|
|
195
|
+
args,
|
|
196
|
+
});
|
|
197
|
+
if (relay.takeOver())
|
|
198
|
+
return { content: [] };
|
|
199
|
+
if (result instanceof Error)
|
|
200
|
+
throw result;
|
|
186
201
|
if (result === undefined)
|
|
187
202
|
return { content: [] };
|
|
188
203
|
return {
|
|
@@ -195,6 +210,18 @@ class McpAdaptor {
|
|
|
195
210
|
};
|
|
196
211
|
}
|
|
197
212
|
catch (e) {
|
|
213
|
+
if (relay.takeOver())
|
|
214
|
+
return { content: [] };
|
|
215
|
+
if (INVALID_ARGUMENTS.has(e)) {
|
|
216
|
+
const body = e.getResponse();
|
|
217
|
+
throw new McpError(ErrorCode.InvalidParams, e.message, {
|
|
218
|
+
errors: body === null || body === void 0 ? void 0 : body.errors,
|
|
219
|
+
path: body === null || body === void 0 ? void 0 : body.path,
|
|
220
|
+
expected: body === null || body === void 0 ? void 0 : body.expected,
|
|
221
|
+
value: body === null || body === void 0 ? void 0 : body.value,
|
|
222
|
+
reason: body === null || body === void 0 ? void 0 : body.reason,
|
|
223
|
+
});
|
|
224
|
+
}
|
|
198
225
|
if (e instanceof common_1.HttpException) {
|
|
199
226
|
return {
|
|
200
227
|
content: [{ type: "text", text: e.message }],
|
|
@@ -210,7 +237,7 @@ class McpAdaptor {
|
|
|
210
237
|
});
|
|
211
238
|
try {
|
|
212
239
|
yield mcp.connect(transport);
|
|
213
|
-
yield transport.handleRequest((
|
|
240
|
+
yield transport.handleRequest((_b = req.raw) !== null && _b !== void 0 ? _b : req, relay.response, req.body);
|
|
214
241
|
}
|
|
215
242
|
finally {
|
|
216
243
|
yield transport.close().catch(() => { });
|
|
@@ -221,6 +248,105 @@ class McpAdaptor {
|
|
|
221
248
|
}
|
|
222
249
|
}
|
|
223
250
|
exports.McpAdaptor = McpAdaptor;
|
|
251
|
+
/**
|
|
252
|
+
* The tool's call through the enhancers NestJS applies to a route of the same
|
|
253
|
+
* method: guards, interceptors, pipes, and exception filters, bound to the
|
|
254
|
+
* method, its controller, or globally. The MCP HTTP request is the execution
|
|
255
|
+
* context, so a guard reading `switchToHttp().getRequest()` works unchanged.
|
|
256
|
+
*
|
|
257
|
+
* The arguments reach the method through the pipes as its body would, validated
|
|
258
|
+
* by typia at that stage: after the guards, as `@TypedBody()` is. An invalid
|
|
259
|
+
* argument is thrown as the validator's `BadRequestException`, which an
|
|
260
|
+
* exception filter may map; unmapped, it becomes JSON-RPC `-32602`. Successful
|
|
261
|
+
* resolver data becomes the argument before pipes execute. Legacy error-only
|
|
262
|
+
* metadata callbacks retain raw input on null success.
|
|
263
|
+
*
|
|
264
|
+
* A controller that is request-scoped, itself or through an enhancer or a
|
|
265
|
+
* dependency, is built per request with its enhancers, as NestJS builds it for
|
|
266
|
+
* an HTTP route; the static instance is only a placeholder without them.
|
|
267
|
+
*/
|
|
268
|
+
const createHandler = (props) => {
|
|
269
|
+
var _a, _b;
|
|
270
|
+
var _c;
|
|
271
|
+
// the arguments stand at the params' position, or first when undecorated
|
|
272
|
+
const index = (_c = (_a = props.argument) === null || _a === void 0 ? void 0 : _a.index) !== null && _c !== void 0 ? _c : 0;
|
|
273
|
+
Reflect.defineMetadata(PARAMS_METADATA, { [`${route_paramtypes_enum_1.RouteParamtypes.BODY}:${index}`]: { index, data: undefined } }, props.wrapper.instance.constructor, props.key);
|
|
274
|
+
const validate = (_b = props.argument) === null || _b === void 0 ? void 0 : _b.validate;
|
|
275
|
+
const create = (instance, contextId) => props.creator.create(instance, instance[props.key], props.key, PARAMS_METADATA, {
|
|
276
|
+
// [request, response, next] as an HTTP route has, then the arguments
|
|
277
|
+
exchangeKeyForValue: (_type, _data, [, , , args]) => {
|
|
278
|
+
if (!validate)
|
|
279
|
+
return args;
|
|
280
|
+
const result = (0, validate_request_body_1.resolve_request_body)(validate, args);
|
|
281
|
+
if (result.success)
|
|
282
|
+
return result.data;
|
|
283
|
+
INVALID_ARGUMENTS.add(result.error);
|
|
284
|
+
throw result.error;
|
|
285
|
+
},
|
|
286
|
+
}, contextId, contextId && props.wrapper.id);
|
|
287
|
+
let target;
|
|
288
|
+
return (input) => __awaiter(void 0, void 0, void 0, function* () {
|
|
289
|
+
const call = (fn) => fn(input.request, input.response, undefined, input.args);
|
|
290
|
+
// resolved at the first call, so global enhancers init() registers count
|
|
291
|
+
if (props.wrapper.isDependencyTreeStatic())
|
|
292
|
+
return call((target !== null && target !== void 0 ? target : (target = create(props.wrapper.instance))));
|
|
293
|
+
const contextId = (0, external_context_1.get_request_context_id)(props.container, input.request, props.wrapper.isDependencyTreeDurable());
|
|
294
|
+
const instance = yield props.injector.loadPerContext(props.wrapper.instance, props.module, props.module.controllers, contextId);
|
|
295
|
+
return call(create(instance, contextId));
|
|
296
|
+
});
|
|
297
|
+
};
|
|
298
|
+
/**
|
|
299
|
+
* The transport's response view. Native state, events and method receivers stay
|
|
300
|
+
* on the real response; only this view's writes stop after a tool's exception
|
|
301
|
+
* filter has already answered. Normal transport writes never activate
|
|
302
|
+
* takeover.
|
|
303
|
+
*/
|
|
304
|
+
const transportResponse = (raw) => {
|
|
305
|
+
let takenOver = false;
|
|
306
|
+
const respond = (key, args) => {
|
|
307
|
+
if (takenOver) {
|
|
308
|
+
const callback = args.find((arg) => typeof arg === "function");
|
|
309
|
+
if ((key === "write" || key === "end") && typeof callback === "function")
|
|
310
|
+
queueMicrotask(() => callback());
|
|
311
|
+
return key === "write"
|
|
312
|
+
? true
|
|
313
|
+
: key === "flushHeaders"
|
|
314
|
+
? undefined
|
|
315
|
+
: response;
|
|
316
|
+
}
|
|
317
|
+
const result = Reflect.apply(raw[key], raw, args);
|
|
318
|
+
return result === raw ? response : result;
|
|
319
|
+
};
|
|
320
|
+
const writes = new Map(["writeHead", "flushHeaders", "write", "end"].map((key) => [
|
|
321
|
+
key,
|
|
322
|
+
(...args) => respond(key, args),
|
|
323
|
+
]));
|
|
324
|
+
const response = new Proxy(raw, {
|
|
325
|
+
get: (target, key) => {
|
|
326
|
+
const write = writes.get(key);
|
|
327
|
+
if (write !== undefined)
|
|
328
|
+
return write;
|
|
329
|
+
const value = Reflect.get(target, key, target);
|
|
330
|
+
if (typeof value !== "function")
|
|
331
|
+
return value;
|
|
332
|
+
return (...args) => {
|
|
333
|
+
const result = Reflect.apply(value, target, args);
|
|
334
|
+
return result === target ? response : result;
|
|
335
|
+
};
|
|
336
|
+
},
|
|
337
|
+
set: (target, key, value) => Reflect.set(target, key, value, target),
|
|
338
|
+
});
|
|
339
|
+
return {
|
|
340
|
+
response,
|
|
341
|
+
takeOver: () => {
|
|
342
|
+
takenOver || (takenOver = raw.headersSent === true);
|
|
343
|
+
return takenOver;
|
|
344
|
+
},
|
|
345
|
+
};
|
|
346
|
+
};
|
|
347
|
+
const PARAMS_METADATA = "nestia/McpRoute/ExternalParameters";
|
|
348
|
+
/** The validators' exceptions, told apart from a handler's own. */
|
|
349
|
+
const INVALID_ARGUMENTS = new WeakSet();
|
|
224
350
|
const assertUniqueTools = (tools) => {
|
|
225
351
|
var _a;
|
|
226
352
|
const dict = new Map();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"McpAdaptor.js","sourceRoot":"","sources":["../../src/adaptors/McpAdaptor.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"McpAdaptor.js","sourceRoot":"","sources":["../../src/adaptors/McpAdaptor.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,43 @@
|
|
|
1
1
|
import { INestApplication } from "@nestjs/common";
|
|
2
|
+
/**
|
|
3
|
+
* Serves the `@WebSocketRoute()` methods of a NestJS application over
|
|
4
|
+
* WebSocket.
|
|
5
|
+
*
|
|
6
|
+
* Call {@link upgrade} after the application has been created. It finds the
|
|
7
|
+
* routes, checks them, and takes over the HTTP server's `upgrade` events. A
|
|
8
|
+
* handshake whose path matches no route is rejected with close code 1002.
|
|
9
|
+
*
|
|
10
|
+
* @evidence contracts/common.md#principled-implementation Routes are matched by paths built from the global prefix, the version, the module prefix, the controller path, and the method path, joined and normalized the same way for every combination; the adapter answers upgrade events itself through a `ws` server in no-server mode and removes its listeners when the HTTP server closes.
|
|
11
|
+
* @evidence contracts/common.md#clear-and-simple-design A class with one static factory, one `close` property, and the private handler; discovery, method checks, termination, and close reasons are module-private functions.
|
|
12
|
+
* @evidence contracts/common.md#prohibited-implementation-shortcuts The global prefix, versioning options, and module graph are read from `app.config` and `app.container`, which NestJS keeps internal because `INestApplication` has no public accessor for them; this is the limitation of the adapter, not a fixture-specific branch.
|
|
13
|
+
* @evidence contracts/common.md#meaningful-documentation The comment states when to call it and what happens to an unmatched handshake.
|
|
14
|
+
* @evidence contracts/portability.md#os-neutral-implementation Diagnostic source URLs are converted by fileURLToPath before path.relative uses native paths; route matching uses HTTP path segments separately from filesystem paths. No filesystem case policy is inferred from the OS.
|
|
15
|
+
*/
|
|
2
16
|
export declare class WebSocketAdaptor {
|
|
17
|
+
/**
|
|
18
|
+
* Creates the adapter for the application: it visits every controller,
|
|
19
|
+
* validates the WebSocket routes, and starts listening for upgrade events.
|
|
20
|
+
*
|
|
21
|
+
* All route errors of the application are collected and thrown together, with
|
|
22
|
+
* the controller, method, source location, and reasons of each.
|
|
23
|
+
*
|
|
24
|
+
* @evidence contracts/common.md#principled-implementation Controller data-method descriptors are checked before any handshake is served, with child properties shadowing inherited methods and accessors never executed, and all defects are reported in one error, so a misconfigured route fails at start and not at the first client; source locations come from `get-function-location`, converted with `fileURLToPath` so a `file:` URL becomes the path on every platform.
|
|
25
|
+
* @evidence contracts/common.md#clear-and-simple-design One asynchronous factory that awaits the visitor and hands the operator list to the private constructor.
|
|
26
|
+
* @evidence contracts/common.md#prohibited-implementation-shortcuts The visitor reports through the same error path for every controller; no controller or route name is special-cased.
|
|
27
|
+
* @evidence contracts/common.md#meaningful-documentation The comment states the collected error report and the effect on the server.
|
|
28
|
+
* @evidence contracts/portability.md#os-neutral-implementation Diagnostic source URLs are converted by fileURLToPath before path.relative uses native paths; route matching uses HTTP path segments separately from filesystem paths. No filesystem case policy is inferred from the OS.
|
|
29
|
+
*/
|
|
3
30
|
static upgrade(app: INestApplication): Promise<WebSocketAdaptor>;
|
|
31
|
+
/**
|
|
32
|
+
* Stops the adapter: removes its listeners from the HTTP server and closes
|
|
33
|
+
* the WebSocket server.
|
|
34
|
+
*
|
|
35
|
+
* @evidence contracts/common.md#principled-implementation The listeners are removed before the `ws` server closes, so no upgrade event reaches a closing server, and the returned promise resolves when the server has closed.
|
|
36
|
+
* @evidence contracts/common.md#clear-and-simple-design An arrow property so the same function value can be registered and unregistered as the HTTP server's close listener.
|
|
37
|
+
* @evidence contracts/common.md#prohibited-implementation-shortcuts It releases exactly what the adapter registered.
|
|
38
|
+
* @evidence contracts/common.md#meaningful-documentation The comment states what is released.
|
|
39
|
+
* @evidence contracts/portability.md#os-neutral-implementation Diagnostic source URLs are converted by fileURLToPath before path.relative uses native paths; route matching uses HTTP path segments separately from filesystem paths. No filesystem case policy is inferred from the OS.
|
|
40
|
+
*/
|
|
4
41
|
readonly close: () => Promise<void>;
|
|
5
42
|
private constructor();
|
|
6
43
|
private readonly handleUpgrade;
|