@frontmcp/sdk 0.5.0 → 0.6.0
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/README.md +3 -3
- package/package.json +8 -19
- package/src/adapter/adapter.instance.js +5 -0
- package/src/adapter/adapter.instance.js.map +1 -1
- package/src/auth/authorization/authorization.class.d.ts +1 -4
- package/src/auth/authorization/authorization.class.js +6 -13
- package/src/auth/authorization/authorization.class.js.map +1 -1
- package/src/auth/flows/session.verify.flow.d.ts +1 -0
- package/src/auth/flows/session.verify.flow.js +11 -1
- package/src/auth/flows/session.verify.flow.js.map +1 -1
- package/src/auth/flows/well-known.jwks.flow.js +2 -2
- package/src/auth/flows/well-known.jwks.flow.js.map +1 -1
- package/src/auth/jwks/dev-key-persistence.d.ts +63 -0
- package/src/auth/jwks/dev-key-persistence.js +219 -0
- package/src/auth/jwks/dev-key-persistence.js.map +1 -0
- package/src/auth/jwks/index.d.ts +1 -0
- package/src/auth/jwks/index.js +1 -0
- package/src/auth/jwks/index.js.map +1 -1
- package/src/auth/jwks/jwks.service.d.ts +7 -4
- package/src/auth/jwks/jwks.service.js +81 -12
- package/src/auth/jwks/jwks.service.js.map +1 -1
- package/src/auth/jwks/jwks.types.d.ts +7 -0
- package/src/auth/jwks/jwks.types.js.map +1 -1
- package/src/auth/machine-id.d.ts +5 -0
- package/src/auth/machine-id.js +32 -0
- package/src/auth/machine-id.js.map +1 -0
- package/src/auth/session/index.d.ts +1 -0
- package/src/auth/session/index.js +3 -1
- package/src/auth/session/index.js.map +1 -1
- package/src/auth/session/record/session.base.js +5 -3
- package/src/auth/session/record/session.base.js.map +1 -1
- package/src/auth/session/record/session.stateless.d.ts +2 -2
- package/src/auth/session/record/session.stateless.js +5 -3
- package/src/auth/session/record/session.stateless.js.map +1 -1
- package/src/auth/session/redis-session.store.d.ts +64 -0
- package/src/auth/session/redis-session.store.js +204 -0
- package/src/auth/session/redis-session.store.js.map +1 -0
- package/src/auth/session/session.service.d.ts +0 -2
- package/src/auth/session/session.service.js +1 -7
- package/src/auth/session/session.service.js.map +1 -1
- package/src/auth/session/transport-session.manager.js +3 -5
- package/src/auth/session/transport-session.manager.js.map +1 -1
- package/src/auth/session/transport-session.types.d.ts +4 -0
- package/src/auth/session/transport-session.types.js +4 -3
- package/src/auth/session/transport-session.types.js.map +1 -1
- package/src/auth/session/utils/session-id.utils.d.ts +12 -1
- package/src/auth/session/utils/session-id.utils.js +48 -9
- package/src/auth/session/utils/session-id.utils.js.map +1 -1
- package/src/auth/ui/base-layout.d.ts +0 -8
- package/src/auth/ui/base-layout.js +1 -14
- package/src/auth/ui/base-layout.js.map +1 -1
- package/src/auth/ui/index.d.ts +3 -4
- package/src/auth/ui/index.js +10 -11
- package/src/auth/ui/index.js.map +1 -1
- package/src/auth/ui/{htmx-templates.d.ts → templates.d.ts} +5 -6
- package/src/auth/ui/{htmx-templates.js → templates.js} +8 -15
- package/src/auth/ui/templates.js.map +1 -0
- package/src/common/decorators/decorator-utils.js.map +1 -1
- package/src/common/decorators/front-mcp.decorator.js +28 -2
- package/src/common/decorators/front-mcp.decorator.js.map +1 -1
- package/src/common/index.d.ts +0 -1
- package/src/common/index.js +0 -1
- package/src/common/index.js.map +1 -1
- package/src/common/interfaces/adapter.interface.d.ts +6 -0
- package/src/common/interfaces/adapter.interface.js.map +1 -1
- package/src/common/interfaces/execution-context.interface.d.ts +52 -3
- package/src/common/interfaces/execution-context.interface.js +88 -3
- package/src/common/interfaces/execution-context.interface.js.map +1 -1
- package/src/common/interfaces/flow.interface.d.ts +13 -0
- package/src/common/interfaces/flow.interface.js +24 -0
- package/src/common/interfaces/flow.interface.js.map +1 -1
- package/src/common/interfaces/server.interface.d.ts +9 -0
- package/src/common/interfaces/server.interface.js.map +1 -1
- package/src/common/metadata/app.metadata.d.ts +108 -0
- package/src/common/metadata/front-mcp.metadata.d.ts +659 -2
- package/src/common/metadata/front-mcp.metadata.js +3 -1
- package/src/common/metadata/front-mcp.metadata.js.map +1 -1
- package/src/common/metadata/provider.metadata.d.ts +14 -0
- package/src/common/metadata/provider.metadata.js +18 -2
- package/src/common/metadata/provider.metadata.js.map +1 -1
- package/src/common/metadata/tool.metadata.d.ts +33 -1
- package/src/common/metadata/tool.metadata.js.map +1 -1
- package/src/common/migrate/auth-transport.migrate.d.ts +62 -0
- package/src/common/migrate/auth-transport.migrate.js +140 -0
- package/src/common/migrate/auth-transport.migrate.js.map +1 -0
- package/src/common/migrate/index.d.ts +1 -0
- package/src/common/migrate/index.js +6 -0
- package/src/common/migrate/index.js.map +1 -0
- package/src/common/schemas/http-output.schema.d.ts +10 -2
- package/src/common/schemas/index.d.ts +1 -0
- package/src/common/schemas/index.js +1 -0
- package/src/common/schemas/index.js.map +1 -1
- package/src/common/schemas/session-header.schema.d.ts +16 -0
- package/src/common/schemas/session-header.schema.js +42 -0
- package/src/common/schemas/session-header.schema.js.map +1 -0
- package/src/common/tokens/front-mcp.tokens.js +3 -1
- package/src/common/tokens/front-mcp.tokens.js.map +1 -1
- package/src/common/types/options/auth.options.d.ts +233 -3
- package/src/common/types/options/auth.options.js +29 -40
- package/src/common/types/options/auth.options.js.map +1 -1
- package/src/common/types/options/index.d.ts +2 -0
- package/src/common/types/options/index.js +2 -0
- package/src/common/types/options/index.js.map +1 -1
- package/src/common/types/options/redis.options.d.ts +22 -0
- package/src/common/types/options/redis.options.js +45 -0
- package/src/common/types/options/redis.options.js.map +1 -0
- package/src/common/types/options/transport.options.d.ts +84 -0
- package/src/common/types/options/transport.options.js +121 -0
- package/src/common/types/options/transport.options.js.map +1 -0
- package/src/completion/flows/complete.flow.d.ts +17 -2
- package/src/context/frontmcp-context-storage.d.ts +94 -0
- package/src/context/frontmcp-context-storage.js +183 -0
- package/src/context/frontmcp-context-storage.js.map +1 -0
- package/src/context/frontmcp-context.d.ts +269 -0
- package/src/context/frontmcp-context.js +360 -0
- package/src/context/frontmcp-context.js.map +1 -0
- package/src/context/frontmcp-context.provider.d.ts +43 -0
- package/src/context/frontmcp-context.provider.js +61 -0
- package/src/context/frontmcp-context.provider.js.map +1 -0
- package/src/context/index.d.ts +34 -0
- package/src/context/index.js +64 -0
- package/src/context/index.js.map +1 -0
- package/src/context/request-context-storage.d.ts +89 -0
- package/src/context/request-context-storage.js +183 -0
- package/src/context/request-context-storage.js.map +1 -0
- package/src/context/request-context.d.ts +184 -0
- package/src/context/request-context.js +209 -0
- package/src/context/request-context.js.map +1 -0
- package/src/context/request-context.provider.d.ts +37 -0
- package/src/context/request-context.provider.js +51 -0
- package/src/context/request-context.provider.js.map +1 -0
- package/src/context/session-key.provider.d.ts +45 -0
- package/src/context/session-key.provider.js +65 -0
- package/src/context/session-key.provider.js.map +1 -0
- package/src/context/trace-context.d.ts +43 -0
- package/src/context/trace-context.js +142 -0
- package/src/context/trace-context.js.map +1 -0
- package/src/errors/index.d.ts +1 -1
- package/src/errors/index.js +3 -1
- package/src/errors/index.js.map +1 -1
- package/src/errors/mcp.error.d.ts +7 -0
- package/src/errors/mcp.error.js +11 -1
- package/src/errors/mcp.error.js.map +1 -1
- package/src/flows/flow.instance.d.ts +16 -0
- package/src/flows/flow.instance.js +166 -80
- package/src/flows/flow.instance.js.map +1 -1
- package/src/flows/flow.registry.d.ts +5 -0
- package/src/flows/flow.registry.js +45 -3
- package/src/flows/flow.registry.js.map +1 -1
- package/src/front-mcp/front-mcp.d.ts +12 -0
- package/src/front-mcp/front-mcp.js +22 -3
- package/src/front-mcp/front-mcp.js.map +1 -1
- package/src/front-mcp/front-mcp.providers.d.ts +266 -1
- package/src/front-mcp/front-mcp.providers.js +2 -1
- package/src/front-mcp/front-mcp.providers.js.map +1 -1
- package/src/front-mcp/serverless-handler.d.ts +28 -0
- package/src/front-mcp/serverless-handler.js +61 -0
- package/src/front-mcp/serverless-handler.js.map +1 -0
- package/src/hooks/hooks.utils.d.ts +1 -1
- package/src/hooks/hooks.utils.js +10 -3
- package/src/hooks/hooks.utils.js.map +1 -1
- package/src/index.d.ts +8 -4
- package/src/index.js +20 -1
- package/src/index.js.map +1 -1
- package/src/logger/instances/instance.logger.js +0 -1
- package/src/logger/instances/instance.logger.js.map +1 -1
- package/src/logging/flows/set-level.flow.d.ts +17 -2
- package/src/notification/notification.service.js +5 -1
- package/src/notification/notification.service.js.map +1 -1
- package/src/prompt/flows/get-prompt.flow.d.ts +97 -2
- package/src/prompt/flows/prompts-list.flow.d.ts +12 -1
- package/src/provider/provider.registry.d.ts +97 -5
- package/src/provider/provider.registry.js +306 -9
- package/src/provider/provider.registry.js.map +1 -1
- package/src/provider/provider.types.d.ts +21 -3
- package/src/provider/provider.types.js.map +1 -1
- package/src/resource/flows/read-resource.flow.d.ts +22 -3
- package/src/resource/flows/resource-templates-list.flow.d.ts +20 -1
- package/src/resource/flows/resources-list.flow.d.ts +20 -1
- package/src/resource/flows/subscribe-resource.flow.d.ts +17 -2
- package/src/resource/flows/unsubscribe-resource.flow.d.ts +17 -2
- package/src/scope/flows/http.request.flow.js +43 -7
- package/src/scope/flows/http.request.flow.js.map +1 -1
- package/src/scope/scope.instance.js +12 -5
- package/src/scope/scope.instance.js.map +1 -1
- package/src/server/adapters/base.host.adapter.d.ts +9 -0
- package/src/server/adapters/base.host.adapter.js.map +1 -1
- package/src/server/adapters/express.host.adapter.d.ts +12 -0
- package/src/server/adapters/express.host.adapter.js +21 -1
- package/src/server/adapters/express.host.adapter.js.map +1 -1
- package/src/server/server.instance.d.ts +3 -0
- package/src/server/server.instance.js +14 -7
- package/src/server/server.instance.js.map +1 -1
- package/src/tool/flows/call-tool.flow.d.ts +118 -13
- package/src/tool/flows/call-tool.flow.js +240 -194
- package/src/tool/flows/call-tool.flow.js.map +1 -1
- package/src/tool/flows/tools-list.flow.d.ts +25 -11
- package/src/tool/flows/tools-list.flow.js +82 -31
- package/src/tool/flows/tools-list.flow.js.map +1 -1
- package/src/tool/tool.instance.d.ts +1 -4
- package/src/transport/adapters/transport.streamable-http.adapter.js +1 -0
- package/src/transport/adapters/transport.streamable-http.adapter.js.map +1 -1
- package/src/transport/flows/handle.sse.flow.js +9 -2
- package/src/transport/flows/handle.sse.flow.js.map +1 -1
- package/src/transport/flows/handle.streamable-http.flow.js +63 -6
- package/src/transport/flows/handle.streamable-http.flow.js.map +1 -1
- package/src/transport/mcp-handlers/complete-request.handler.d.ts +27 -1
- package/src/transport/mcp-handlers/get-prompt-request.handler.d.ts +52 -1
- package/src/transport/mcp-handlers/index.d.ts +413 -7
- package/src/transport/mcp-handlers/initialize-request.handler.js +12 -2
- package/src/transport/mcp-handlers/initialize-request.handler.js.map +1 -1
- package/src/transport/mcp-handlers/list-prompts-request.handler.d.ts +27 -1
- package/src/transport/mcp-handlers/list-resource-templates-request.handler.d.ts +32 -1
- package/src/transport/mcp-handlers/list-resources-request.handler.d.ts +32 -1
- package/src/transport/mcp-handlers/list-tools-request.handler.d.ts +30 -1
- package/src/transport/mcp-handlers/logging-set-level-request.handler.d.ts +20 -0
- package/src/transport/mcp-handlers/read-resource-request.handler.d.ts +27 -1
- package/src/transport/mcp-handlers/subscribe-request.handler.d.ts +20 -0
- package/src/transport/mcp-handlers/unsubscribe-request.handler.d.ts +20 -0
- package/src/transport/transport.registry.d.ts +68 -4
- package/src/transport/transport.registry.js +313 -11
- package/src/transport/transport.registry.js.map +1 -1
- package/src/auth/ui/htmx-templates.js.map +0 -1
- package/src/common/providers/session.provider.d.ts +0 -13
- package/src/common/providers/session.provider.js +0 -27
- package/src/common/providers/session.provider.js.map +0 -1
|
@@ -9,4 +9,16 @@ export declare class FrontMcpInstance implements FrontMcpInterface {
|
|
|
9
9
|
initialize(): Promise<void>;
|
|
10
10
|
start(): void;
|
|
11
11
|
static bootstrap(options: FrontMcpConfigType): Promise<void>;
|
|
12
|
+
/**
|
|
13
|
+
* Creates and initializes a FrontMCP instance without starting the HTTP server.
|
|
14
|
+
* Returns the underlying HTTP handler for serverless deployments (Vercel, Lambda).
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* // In index.ts for Vercel
|
|
18
|
+
* import { FrontMcpInstance } from '@frontmcp/sdk';
|
|
19
|
+
* import config from '../src/main';
|
|
20
|
+
*
|
|
21
|
+
* export default FrontMcpInstance.createHandler(config);
|
|
22
|
+
*/
|
|
23
|
+
static createHandler(options: FrontMcpConfigType): Promise<unknown>;
|
|
12
24
|
}
|
|
@@ -18,9 +18,7 @@ class FrontMcpInstance {
|
|
|
18
18
|
this.ready = this.initialize();
|
|
19
19
|
}
|
|
20
20
|
async initialize() {
|
|
21
|
-
this.providers = new provider_registry_1.default([
|
|
22
|
-
...(0, front_mcp_providers_1.createMcpGlobalProviders)(this.config),
|
|
23
|
-
]);
|
|
21
|
+
this.providers = new provider_registry_1.default([...(0, front_mcp_providers_1.createMcpGlobalProviders)(this.config)]);
|
|
24
22
|
await this.providers.ready;
|
|
25
23
|
this.logger = new logger_registry_1.default(this.providers);
|
|
26
24
|
await this.logger.ready;
|
|
@@ -39,6 +37,27 @@ class FrontMcpInstance {
|
|
|
39
37
|
await frontMcp.ready;
|
|
40
38
|
frontMcp.start();
|
|
41
39
|
}
|
|
40
|
+
/**
|
|
41
|
+
* Creates and initializes a FrontMCP instance without starting the HTTP server.
|
|
42
|
+
* Returns the underlying HTTP handler for serverless deployments (Vercel, Lambda).
|
|
43
|
+
*
|
|
44
|
+
* @example
|
|
45
|
+
* // In index.ts for Vercel
|
|
46
|
+
* import { FrontMcpInstance } from '@frontmcp/sdk';
|
|
47
|
+
* import config from '../src/main';
|
|
48
|
+
*
|
|
49
|
+
* export default FrontMcpInstance.createHandler(config);
|
|
50
|
+
*/
|
|
51
|
+
static async createHandler(options) {
|
|
52
|
+
const frontMcp = new FrontMcpInstance(options);
|
|
53
|
+
await frontMcp.ready;
|
|
54
|
+
const server = frontMcp.providers.get(common_1.FrontMcpServer);
|
|
55
|
+
if (!server) {
|
|
56
|
+
throw new Error('Server not found');
|
|
57
|
+
}
|
|
58
|
+
server.prepare();
|
|
59
|
+
return server.getHandler();
|
|
60
|
+
}
|
|
42
61
|
}
|
|
43
62
|
exports.FrontMcpInstance = FrontMcpInstance;
|
|
44
63
|
//# sourceMappingURL=front-mcp.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"front-mcp.js","sourceRoot":"","sources":["../../../src/front-mcp/front-mcp.ts"],"names":[],"mappings":";;;;AAAA,
|
|
1
|
+
{"version":3,"file":"front-mcp.js","sourceRoot":"","sources":["../../../src/front-mcp/front-mcp.ts"],"names":[],"mappings":";;;;AAAA,sCAAkF;AAClF,4DAAwD;AACxD,8FAA6D;AAC7D,+DAAiE;AACjE,wFAAuD;AAEvD,MAAa,gBAAgB;IAC3B,MAAM,CAAqB;IAClB,KAAK,CAAgB;IAEtB,MAAM,CAAiB;IACvB,SAAS,CAAmB;IAC5B,MAAM,CAAgB;IAE9B,YAAY,MAA0B;QACpC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;IACjC,CAAC;IAED,KAAK,CAAC,UAAU;QACd,IAAI,CAAC,SAAS,GAAG,IAAI,2BAAgB,CAAC,CAAC,GAAG,IAAA,8CAAwB,EAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAClF,MAAM,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;QAE3B,IAAI,CAAC,MAAM,GAAG,IAAI,yBAAc,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACjD,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;QAExB,IAAI,CAAC,MAAM,GAAG,IAAI,8BAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAChD,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;IAC1B,CAAC;IAED,KAAK;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,uBAAc,CAAC,CAAC;QAClD,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC;QACtC,CAAC;QACD,MAAM,CAAC,KAAK,EAAE,CAAC;IACjB,CAAC;IAEM,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,OAA2B;QACvD,MAAM,QAAQ,GAAG,IAAI,gBAAgB,CAAC,OAAO,CAAC,CAAC;QAC/C,MAAM,QAAQ,CAAC,KAAK,CAAC;QAErB,QAAQ,CAAC,KAAK,EAAE,CAAC;IACnB,CAAC;IAED;;;;;;;;;;OAUG;IACI,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,OAA2B;QAC3D,MAAM,QAAQ,GAAG,IAAI,gBAAgB,CAAC,OAAO,CAAC,CAAC;QAC/C,MAAM,QAAQ,CAAC,KAAK,CAAC;QAErB,MAAM,MAAM,GAAG,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,uBAAc,CAAC,CAAC;QACtD,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC;QACtC,CAAC;QAED,MAAM,CAAC,OAAO,EAAE,CAAC;QACjB,OAAO,MAAM,CAAC,UAAU,EAAE,CAAC;IAC7B,CAAC;CACF;AA9DD,4CA8DC","sourcesContent":["import { FrontMcpConfigType, FrontMcpInterface, FrontMcpServer } from '../common';\nimport { ScopeRegistry } from '../scope/scope.registry';\nimport ProviderRegistry from '../provider/provider.registry';\nimport { createMcpGlobalProviders } from './front-mcp.providers';\nimport LoggerRegistry from '../logger/logger.registry';\n\nexport class FrontMcpInstance implements FrontMcpInterface {\n config: FrontMcpConfigType;\n readonly ready: Promise<void>;\n\n private logger: LoggerRegistry;\n private providers: ProviderRegistry;\n private scopes: ScopeRegistry;\n\n constructor(config: FrontMcpConfigType) {\n this.config = config;\n this.ready = this.initialize();\n }\n\n async initialize(): Promise<void> {\n this.providers = new ProviderRegistry([...createMcpGlobalProviders(this.config)]);\n await this.providers.ready;\n\n this.logger = new LoggerRegistry(this.providers);\n await this.logger.ready;\n\n this.scopes = new ScopeRegistry(this.providers);\n await this.scopes.ready;\n }\n\n start() {\n const server = this.providers.get(FrontMcpServer);\n if (!server) {\n throw new Error('Server not found');\n }\n server.start();\n }\n\n public static async bootstrap(options: FrontMcpConfigType) {\n const frontMcp = new FrontMcpInstance(options);\n await frontMcp.ready;\n\n frontMcp.start();\n }\n\n /**\n * Creates and initializes a FrontMCP instance without starting the HTTP server.\n * Returns the underlying HTTP handler for serverless deployments (Vercel, Lambda).\n *\n * @example\n * // In index.ts for Vercel\n * import { FrontMcpInstance } from '@frontmcp/sdk';\n * import config from '../src/main';\n *\n * export default FrontMcpInstance.createHandler(config);\n */\n public static async createHandler(options: FrontMcpConfigType): Promise<unknown> {\n const frontMcp = new FrontMcpInstance(options);\n await frontMcp.ready;\n\n const server = frontMcp.providers.get(FrontMcpServer);\n if (!server) {\n throw new Error('Server not found');\n }\n\n server.prepare();\n return server.getHandler();\n }\n}\n"]}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { FrontMcpConfigType, FrontMcpServer, ProviderValueType } from '../common';
|
|
2
|
-
|
|
2
|
+
import { FrontMcpContextStorage } from '../context';
|
|
3
|
+
export declare function createMcpGlobalProviders(metadata: FrontMcpConfigType): (typeof FrontMcpContextStorage | ProviderValueType<{
|
|
3
4
|
info: {
|
|
4
5
|
name: string;
|
|
5
6
|
version: string;
|
|
@@ -16,12 +17,51 @@ export declare function createMcpGlobalProviders(metadata: FrontMcpConfigType):
|
|
|
16
17
|
resources: import("../common").Type<unknown>[];
|
|
17
18
|
apps: import("../common").Type<unknown>[];
|
|
18
19
|
serve: boolean;
|
|
20
|
+
transport: {
|
|
21
|
+
sessionMode: "stateful" | "stateless" | import("zod/v4/core").$InferOuterFunctionType<import("zod/v4/core").$ZodFunctionArgs, import("zod/v4/core").$ZodFunctionOut>;
|
|
22
|
+
transportIdMode: "uuid" | "jwt" | import("zod/v4/core").$InferOuterFunctionType<import("zod/v4/core").$ZodFunctionArgs, import("zod/v4/core").$ZodFunctionOut>;
|
|
23
|
+
enableLegacySSE: boolean;
|
|
24
|
+
enableSseListener: boolean;
|
|
25
|
+
enableStreamableHttp: boolean;
|
|
26
|
+
enableStatelessHttp: boolean;
|
|
27
|
+
enableStatefulHttp: boolean;
|
|
28
|
+
requireSessionForStreamable: boolean;
|
|
29
|
+
platformDetection?: {
|
|
30
|
+
customOnly: boolean;
|
|
31
|
+
mappings?: {
|
|
32
|
+
pattern: string | RegExp;
|
|
33
|
+
platform: "unknown" | "continue" | "openai" | "claude" | "gemini" | "cursor" | "cody" | "generic-mcp" | "ext-apps";
|
|
34
|
+
}[] | undefined;
|
|
35
|
+
} | undefined;
|
|
36
|
+
persistence?: {
|
|
37
|
+
enabled: boolean;
|
|
38
|
+
defaultTtlMs: number;
|
|
39
|
+
redis?: {
|
|
40
|
+
host: string;
|
|
41
|
+
port: number;
|
|
42
|
+
db: number;
|
|
43
|
+
tls: boolean;
|
|
44
|
+
keyPrefix: string;
|
|
45
|
+
defaultTtlMs: number;
|
|
46
|
+
password?: string | undefined;
|
|
47
|
+
} | undefined;
|
|
48
|
+
} | undefined;
|
|
49
|
+
};
|
|
19
50
|
splitByApp: false;
|
|
20
51
|
http?: {
|
|
21
52
|
port: number;
|
|
22
53
|
entryPath: string;
|
|
23
54
|
hostFactory?: any;
|
|
24
55
|
} | undefined;
|
|
56
|
+
redis?: {
|
|
57
|
+
host: string;
|
|
58
|
+
port: number;
|
|
59
|
+
db: number;
|
|
60
|
+
tls: boolean;
|
|
61
|
+
keyPrefix: string;
|
|
62
|
+
defaultTtlMs: number;
|
|
63
|
+
password?: string | undefined;
|
|
64
|
+
} | undefined;
|
|
25
65
|
session?: {
|
|
26
66
|
sessionMode: "stateful" | "stateless" | import("zod/v4/core").$InferOuterFunctionType<import("zod/v4/core").$ZodFunctionArgs, import("zod/v4/core").$ZodFunctionOut>;
|
|
27
67
|
transportIdMode: "uuid" | "jwt" | import("zod/v4/core").$InferOuterFunctionType<import("zod/v4/core").$ZodFunctionArgs, import("zod/v4/core").$ZodFunctionOut>;
|
|
@@ -60,6 +100,19 @@ export declare function createMcpGlobalProviders(metadata: FrontMcpConfigType):
|
|
|
60
100
|
enableStatelessHttp: boolean;
|
|
61
101
|
enableStatefulHttp: boolean;
|
|
62
102
|
requireSessionForStreamable: boolean;
|
|
103
|
+
recreation?: {
|
|
104
|
+
enabled: boolean;
|
|
105
|
+
defaultTtlMs: number;
|
|
106
|
+
redis?: {
|
|
107
|
+
host: string;
|
|
108
|
+
port: number;
|
|
109
|
+
db: number;
|
|
110
|
+
tls: boolean;
|
|
111
|
+
keyPrefix: string;
|
|
112
|
+
defaultTtlMs: number;
|
|
113
|
+
password?: string | undefined;
|
|
114
|
+
} | undefined;
|
|
115
|
+
} | undefined;
|
|
63
116
|
} | undefined;
|
|
64
117
|
} | {
|
|
65
118
|
mode: "transparent";
|
|
@@ -96,6 +149,19 @@ export declare function createMcpGlobalProviders(metadata: FrontMcpConfigType):
|
|
|
96
149
|
enableStatelessHttp: boolean;
|
|
97
150
|
enableStatefulHttp: boolean;
|
|
98
151
|
requireSessionForStreamable: boolean;
|
|
152
|
+
recreation?: {
|
|
153
|
+
enabled: boolean;
|
|
154
|
+
defaultTtlMs: number;
|
|
155
|
+
redis?: {
|
|
156
|
+
host: string;
|
|
157
|
+
port: number;
|
|
158
|
+
db: number;
|
|
159
|
+
tls: boolean;
|
|
160
|
+
keyPrefix: string;
|
|
161
|
+
defaultTtlMs: number;
|
|
162
|
+
password?: string | undefined;
|
|
163
|
+
} | undefined;
|
|
164
|
+
} | undefined;
|
|
99
165
|
} | undefined;
|
|
100
166
|
} | {
|
|
101
167
|
mode: "orchestrated";
|
|
@@ -110,6 +176,7 @@ export declare function createMcpGlobalProviders(metadata: FrontMcpConfigType):
|
|
|
110
176
|
db: number;
|
|
111
177
|
tls: boolean;
|
|
112
178
|
keyPrefix: string;
|
|
179
|
+
defaultTtlMs: number;
|
|
113
180
|
password?: string | undefined;
|
|
114
181
|
};
|
|
115
182
|
};
|
|
@@ -157,6 +224,19 @@ export declare function createMcpGlobalProviders(metadata: FrontMcpConfigType):
|
|
|
157
224
|
enableStatelessHttp: boolean;
|
|
158
225
|
enableStatefulHttp: boolean;
|
|
159
226
|
requireSessionForStreamable: boolean;
|
|
227
|
+
recreation?: {
|
|
228
|
+
enabled: boolean;
|
|
229
|
+
defaultTtlMs: number;
|
|
230
|
+
redis?: {
|
|
231
|
+
host: string;
|
|
232
|
+
port: number;
|
|
233
|
+
db: number;
|
|
234
|
+
tls: boolean;
|
|
235
|
+
keyPrefix: string;
|
|
236
|
+
defaultTtlMs: number;
|
|
237
|
+
password?: string | undefined;
|
|
238
|
+
} | undefined;
|
|
239
|
+
} | undefined;
|
|
160
240
|
} | undefined;
|
|
161
241
|
} | {
|
|
162
242
|
mode: "orchestrated";
|
|
@@ -188,6 +268,7 @@ export declare function createMcpGlobalProviders(metadata: FrontMcpConfigType):
|
|
|
188
268
|
db: number;
|
|
189
269
|
tls: boolean;
|
|
190
270
|
keyPrefix: string;
|
|
271
|
+
defaultTtlMs: number;
|
|
191
272
|
password?: string | undefined;
|
|
192
273
|
};
|
|
193
274
|
};
|
|
@@ -235,6 +316,19 @@ export declare function createMcpGlobalProviders(metadata: FrontMcpConfigType):
|
|
|
235
316
|
enableStatelessHttp: boolean;
|
|
236
317
|
enableStatefulHttp: boolean;
|
|
237
318
|
requireSessionForStreamable: boolean;
|
|
319
|
+
recreation?: {
|
|
320
|
+
enabled: boolean;
|
|
321
|
+
defaultTtlMs: number;
|
|
322
|
+
redis?: {
|
|
323
|
+
host: string;
|
|
324
|
+
port: number;
|
|
325
|
+
db: number;
|
|
326
|
+
tls: boolean;
|
|
327
|
+
keyPrefix: string;
|
|
328
|
+
defaultTtlMs: number;
|
|
329
|
+
password?: string | undefined;
|
|
330
|
+
} | undefined;
|
|
331
|
+
} | undefined;
|
|
238
332
|
} | undefined;
|
|
239
333
|
} | undefined;
|
|
240
334
|
} | {
|
|
@@ -254,12 +348,51 @@ export declare function createMcpGlobalProviders(metadata: FrontMcpConfigType):
|
|
|
254
348
|
resources: import("../common").Type<unknown>[];
|
|
255
349
|
apps: import("../common").Type<unknown>[];
|
|
256
350
|
serve: boolean;
|
|
351
|
+
transport: {
|
|
352
|
+
sessionMode: "stateful" | "stateless" | import("zod/v4/core").$InferOuterFunctionType<import("zod/v4/core").$ZodFunctionArgs, import("zod/v4/core").$ZodFunctionOut>;
|
|
353
|
+
transportIdMode: "uuid" | "jwt" | import("zod/v4/core").$InferOuterFunctionType<import("zod/v4/core").$ZodFunctionArgs, import("zod/v4/core").$ZodFunctionOut>;
|
|
354
|
+
enableLegacySSE: boolean;
|
|
355
|
+
enableSseListener: boolean;
|
|
356
|
+
enableStreamableHttp: boolean;
|
|
357
|
+
enableStatelessHttp: boolean;
|
|
358
|
+
enableStatefulHttp: boolean;
|
|
359
|
+
requireSessionForStreamable: boolean;
|
|
360
|
+
platformDetection?: {
|
|
361
|
+
customOnly: boolean;
|
|
362
|
+
mappings?: {
|
|
363
|
+
pattern: string | RegExp;
|
|
364
|
+
platform: "unknown" | "continue" | "openai" | "claude" | "gemini" | "cursor" | "cody" | "generic-mcp" | "ext-apps";
|
|
365
|
+
}[] | undefined;
|
|
366
|
+
} | undefined;
|
|
367
|
+
persistence?: {
|
|
368
|
+
enabled: boolean;
|
|
369
|
+
defaultTtlMs: number;
|
|
370
|
+
redis?: {
|
|
371
|
+
host: string;
|
|
372
|
+
port: number;
|
|
373
|
+
db: number;
|
|
374
|
+
tls: boolean;
|
|
375
|
+
keyPrefix: string;
|
|
376
|
+
defaultTtlMs: number;
|
|
377
|
+
password?: string | undefined;
|
|
378
|
+
} | undefined;
|
|
379
|
+
} | undefined;
|
|
380
|
+
};
|
|
257
381
|
splitByApp: true;
|
|
258
382
|
http?: {
|
|
259
383
|
port: number;
|
|
260
384
|
entryPath: string;
|
|
261
385
|
hostFactory?: any;
|
|
262
386
|
} | undefined;
|
|
387
|
+
redis?: {
|
|
388
|
+
host: string;
|
|
389
|
+
port: number;
|
|
390
|
+
db: number;
|
|
391
|
+
tls: boolean;
|
|
392
|
+
keyPrefix: string;
|
|
393
|
+
defaultTtlMs: number;
|
|
394
|
+
password?: string | undefined;
|
|
395
|
+
} | undefined;
|
|
263
396
|
session?: {
|
|
264
397
|
sessionMode: "stateful" | "stateless" | import("zod/v4/core").$InferOuterFunctionType<import("zod/v4/core").$ZodFunctionArgs, import("zod/v4/core").$ZodFunctionOut>;
|
|
265
398
|
transportIdMode: "uuid" | "jwt" | import("zod/v4/core").$InferOuterFunctionType<import("zod/v4/core").$ZodFunctionArgs, import("zod/v4/core").$ZodFunctionOut>;
|
|
@@ -295,12 +428,51 @@ export declare function createMcpGlobalProviders(metadata: FrontMcpConfigType):
|
|
|
295
428
|
resources: import("../common").Type<unknown>[];
|
|
296
429
|
apps: import("../common").Type<unknown>[];
|
|
297
430
|
serve: boolean;
|
|
431
|
+
transport: {
|
|
432
|
+
sessionMode: "stateful" | "stateless" | import("zod/v4/core").$InferOuterFunctionType<import("zod/v4/core").$ZodFunctionArgs, import("zod/v4/core").$ZodFunctionOut>;
|
|
433
|
+
transportIdMode: "uuid" | "jwt" | import("zod/v4/core").$InferOuterFunctionType<import("zod/v4/core").$ZodFunctionArgs, import("zod/v4/core").$ZodFunctionOut>;
|
|
434
|
+
enableLegacySSE: boolean;
|
|
435
|
+
enableSseListener: boolean;
|
|
436
|
+
enableStreamableHttp: boolean;
|
|
437
|
+
enableStatelessHttp: boolean;
|
|
438
|
+
enableStatefulHttp: boolean;
|
|
439
|
+
requireSessionForStreamable: boolean;
|
|
440
|
+
platformDetection?: {
|
|
441
|
+
customOnly: boolean;
|
|
442
|
+
mappings?: {
|
|
443
|
+
pattern: string | RegExp;
|
|
444
|
+
platform: "unknown" | "continue" | "openai" | "claude" | "gemini" | "cursor" | "cody" | "generic-mcp" | "ext-apps";
|
|
445
|
+
}[] | undefined;
|
|
446
|
+
} | undefined;
|
|
447
|
+
persistence?: {
|
|
448
|
+
enabled: boolean;
|
|
449
|
+
defaultTtlMs: number;
|
|
450
|
+
redis?: {
|
|
451
|
+
host: string;
|
|
452
|
+
port: number;
|
|
453
|
+
db: number;
|
|
454
|
+
tls: boolean;
|
|
455
|
+
keyPrefix: string;
|
|
456
|
+
defaultTtlMs: number;
|
|
457
|
+
password?: string | undefined;
|
|
458
|
+
} | undefined;
|
|
459
|
+
} | undefined;
|
|
460
|
+
};
|
|
298
461
|
splitByApp: false;
|
|
299
462
|
http?: {
|
|
300
463
|
port: number;
|
|
301
464
|
entryPath: string;
|
|
302
465
|
hostFactory?: any;
|
|
303
466
|
} | undefined;
|
|
467
|
+
redis?: {
|
|
468
|
+
host: string;
|
|
469
|
+
port: number;
|
|
470
|
+
db: number;
|
|
471
|
+
tls: boolean;
|
|
472
|
+
keyPrefix: string;
|
|
473
|
+
defaultTtlMs: number;
|
|
474
|
+
password?: string | undefined;
|
|
475
|
+
} | undefined;
|
|
304
476
|
session?: {
|
|
305
477
|
sessionMode: "stateful" | "stateless" | import("zod/v4/core").$InferOuterFunctionType<import("zod/v4/core").$ZodFunctionArgs, import("zod/v4/core").$ZodFunctionOut>;
|
|
306
478
|
transportIdMode: "uuid" | "jwt" | import("zod/v4/core").$InferOuterFunctionType<import("zod/v4/core").$ZodFunctionArgs, import("zod/v4/core").$ZodFunctionOut>;
|
|
@@ -339,6 +511,19 @@ export declare function createMcpGlobalProviders(metadata: FrontMcpConfigType):
|
|
|
339
511
|
enableStatelessHttp: boolean;
|
|
340
512
|
enableStatefulHttp: boolean;
|
|
341
513
|
requireSessionForStreamable: boolean;
|
|
514
|
+
recreation?: {
|
|
515
|
+
enabled: boolean;
|
|
516
|
+
defaultTtlMs: number;
|
|
517
|
+
redis?: {
|
|
518
|
+
host: string;
|
|
519
|
+
port: number;
|
|
520
|
+
db: number;
|
|
521
|
+
tls: boolean;
|
|
522
|
+
keyPrefix: string;
|
|
523
|
+
defaultTtlMs: number;
|
|
524
|
+
password?: string | undefined;
|
|
525
|
+
} | undefined;
|
|
526
|
+
} | undefined;
|
|
342
527
|
} | undefined;
|
|
343
528
|
} | {
|
|
344
529
|
mode: "transparent";
|
|
@@ -375,6 +560,19 @@ export declare function createMcpGlobalProviders(metadata: FrontMcpConfigType):
|
|
|
375
560
|
enableStatelessHttp: boolean;
|
|
376
561
|
enableStatefulHttp: boolean;
|
|
377
562
|
requireSessionForStreamable: boolean;
|
|
563
|
+
recreation?: {
|
|
564
|
+
enabled: boolean;
|
|
565
|
+
defaultTtlMs: number;
|
|
566
|
+
redis?: {
|
|
567
|
+
host: string;
|
|
568
|
+
port: number;
|
|
569
|
+
db: number;
|
|
570
|
+
tls: boolean;
|
|
571
|
+
keyPrefix: string;
|
|
572
|
+
defaultTtlMs: number;
|
|
573
|
+
password?: string | undefined;
|
|
574
|
+
} | undefined;
|
|
575
|
+
} | undefined;
|
|
378
576
|
} | undefined;
|
|
379
577
|
} | {
|
|
380
578
|
mode: "orchestrated";
|
|
@@ -389,6 +587,7 @@ export declare function createMcpGlobalProviders(metadata: FrontMcpConfigType):
|
|
|
389
587
|
db: number;
|
|
390
588
|
tls: boolean;
|
|
391
589
|
keyPrefix: string;
|
|
590
|
+
defaultTtlMs: number;
|
|
392
591
|
password?: string | undefined;
|
|
393
592
|
};
|
|
394
593
|
};
|
|
@@ -436,6 +635,19 @@ export declare function createMcpGlobalProviders(metadata: FrontMcpConfigType):
|
|
|
436
635
|
enableStatelessHttp: boolean;
|
|
437
636
|
enableStatefulHttp: boolean;
|
|
438
637
|
requireSessionForStreamable: boolean;
|
|
638
|
+
recreation?: {
|
|
639
|
+
enabled: boolean;
|
|
640
|
+
defaultTtlMs: number;
|
|
641
|
+
redis?: {
|
|
642
|
+
host: string;
|
|
643
|
+
port: number;
|
|
644
|
+
db: number;
|
|
645
|
+
tls: boolean;
|
|
646
|
+
keyPrefix: string;
|
|
647
|
+
defaultTtlMs: number;
|
|
648
|
+
password?: string | undefined;
|
|
649
|
+
} | undefined;
|
|
650
|
+
} | undefined;
|
|
439
651
|
} | undefined;
|
|
440
652
|
} | {
|
|
441
653
|
mode: "orchestrated";
|
|
@@ -467,6 +679,7 @@ export declare function createMcpGlobalProviders(metadata: FrontMcpConfigType):
|
|
|
467
679
|
db: number;
|
|
468
680
|
tls: boolean;
|
|
469
681
|
keyPrefix: string;
|
|
682
|
+
defaultTtlMs: number;
|
|
470
683
|
password?: string | undefined;
|
|
471
684
|
};
|
|
472
685
|
};
|
|
@@ -514,6 +727,19 @@ export declare function createMcpGlobalProviders(metadata: FrontMcpConfigType):
|
|
|
514
727
|
enableStatelessHttp: boolean;
|
|
515
728
|
enableStatefulHttp: boolean;
|
|
516
729
|
requireSessionForStreamable: boolean;
|
|
730
|
+
recreation?: {
|
|
731
|
+
enabled: boolean;
|
|
732
|
+
defaultTtlMs: number;
|
|
733
|
+
redis?: {
|
|
734
|
+
host: string;
|
|
735
|
+
port: number;
|
|
736
|
+
db: number;
|
|
737
|
+
tls: boolean;
|
|
738
|
+
keyPrefix: string;
|
|
739
|
+
defaultTtlMs: number;
|
|
740
|
+
password?: string | undefined;
|
|
741
|
+
} | undefined;
|
|
742
|
+
} | undefined;
|
|
517
743
|
} | undefined;
|
|
518
744
|
} | undefined;
|
|
519
745
|
} | {
|
|
@@ -533,12 +759,51 @@ export declare function createMcpGlobalProviders(metadata: FrontMcpConfigType):
|
|
|
533
759
|
resources: import("../common").Type<unknown>[];
|
|
534
760
|
apps: import("../common").Type<unknown>[];
|
|
535
761
|
serve: boolean;
|
|
762
|
+
transport: {
|
|
763
|
+
sessionMode: "stateful" | "stateless" | import("zod/v4/core").$InferOuterFunctionType<import("zod/v4/core").$ZodFunctionArgs, import("zod/v4/core").$ZodFunctionOut>;
|
|
764
|
+
transportIdMode: "uuid" | "jwt" | import("zod/v4/core").$InferOuterFunctionType<import("zod/v4/core").$ZodFunctionArgs, import("zod/v4/core").$ZodFunctionOut>;
|
|
765
|
+
enableLegacySSE: boolean;
|
|
766
|
+
enableSseListener: boolean;
|
|
767
|
+
enableStreamableHttp: boolean;
|
|
768
|
+
enableStatelessHttp: boolean;
|
|
769
|
+
enableStatefulHttp: boolean;
|
|
770
|
+
requireSessionForStreamable: boolean;
|
|
771
|
+
platformDetection?: {
|
|
772
|
+
customOnly: boolean;
|
|
773
|
+
mappings?: {
|
|
774
|
+
pattern: string | RegExp;
|
|
775
|
+
platform: "unknown" | "continue" | "openai" | "claude" | "gemini" | "cursor" | "cody" | "generic-mcp" | "ext-apps";
|
|
776
|
+
}[] | undefined;
|
|
777
|
+
} | undefined;
|
|
778
|
+
persistence?: {
|
|
779
|
+
enabled: boolean;
|
|
780
|
+
defaultTtlMs: number;
|
|
781
|
+
redis?: {
|
|
782
|
+
host: string;
|
|
783
|
+
port: number;
|
|
784
|
+
db: number;
|
|
785
|
+
tls: boolean;
|
|
786
|
+
keyPrefix: string;
|
|
787
|
+
defaultTtlMs: number;
|
|
788
|
+
password?: string | undefined;
|
|
789
|
+
} | undefined;
|
|
790
|
+
} | undefined;
|
|
791
|
+
};
|
|
536
792
|
splitByApp: true;
|
|
537
793
|
http?: {
|
|
538
794
|
port: number;
|
|
539
795
|
entryPath: string;
|
|
540
796
|
hostFactory?: any;
|
|
541
797
|
} | undefined;
|
|
798
|
+
redis?: {
|
|
799
|
+
host: string;
|
|
800
|
+
port: number;
|
|
801
|
+
db: number;
|
|
802
|
+
tls: boolean;
|
|
803
|
+
keyPrefix: string;
|
|
804
|
+
defaultTtlMs: number;
|
|
805
|
+
password?: string | undefined;
|
|
806
|
+
} | undefined;
|
|
542
807
|
session?: {
|
|
543
808
|
sessionMode: "stateful" | "stateless" | import("zod/v4/core").$InferOuterFunctionType<import("zod/v4/core").$ZodFunctionArgs, import("zod/v4/core").$ZodFunctionOut>;
|
|
544
809
|
transportIdMode: "uuid" | "jwt" | import("zod/v4/core").$InferOuterFunctionType<import("zod/v4/core").$ZodFunctionArgs, import("zod/v4/core").$ZodFunctionOut>;
|
|
@@ -4,6 +4,7 @@ exports.createMcpGlobalProviders = createMcpGlobalProviders;
|
|
|
4
4
|
const common_1 = require("../common");
|
|
5
5
|
const server_instance_1 = require("../server/server.instance");
|
|
6
6
|
const front_mcp_tokens_1 = require("./front-mcp.tokens");
|
|
7
|
+
const context_1 = require("../context");
|
|
7
8
|
const frontMcpConfig = {
|
|
8
9
|
with: (metadata) => ({
|
|
9
10
|
name: 'frontmcp:config',
|
|
@@ -23,6 +24,6 @@ const frontMcpServer = (0, common_1.AsyncProvider)({
|
|
|
23
24
|
},
|
|
24
25
|
});
|
|
25
26
|
function createMcpGlobalProviders(metadata) {
|
|
26
|
-
return [frontMcpConfig.with(metadata), frontMcpServer];
|
|
27
|
+
return [frontMcpConfig.with(metadata), frontMcpServer, context_1.FrontMcpContextStorage];
|
|
27
28
|
}
|
|
28
29
|
//# sourceMappingURL=front-mcp.providers.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"front-mcp.providers.js","sourceRoot":"","sources":["../../../src/front-mcp/front-mcp.providers.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"front-mcp.providers.js","sourceRoot":"","sources":["../../../src/front-mcp/front-mcp.providers.ts"],"names":[],"mappings":";;AA0BA,4DAEC;AA5BD,sCAAgH;AAChH,+DAAmE;AACnE,yDAAoD;AACpD,wCAAoD;AAEpD,MAAM,cAAc,GAAG;IACrB,IAAI,EAAE,CAAC,QAA4B,EAAyC,EAAE,CAAC,CAAC;QAC9E,IAAI,EAAE,iBAAiB;QACvB,OAAO,EAAE,iCAAc;QACvB,KAAK,EAAE,sBAAa,CAAC,MAAM;QAC3B,QAAQ,EAAE,QAAQ;KACnB,CAAC;CACH,CAAC;AAEF,MAAM,oBAAoB,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC;AAE/D,MAAM,cAAc,GAAG,IAAA,sBAAa,EAAC;IACnC,IAAI,EAAE,iBAAiB;IACvB,KAAK,EAAE,sBAAa,CAAC,MAAM;IAC3B,OAAO,EAAE,uBAAc;IACvB,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,iCAAc,CAAC;IAC9B,UAAU,EAAE,CAAC,MAAM,EAAE,EAAE;QACrB,OAAO,IAAI,wCAAsB,CAAC,MAAM,CAAC,IAAI,IAAI,oBAAoB,CAAC,CAAC;IACzE,CAAC;CACF,CAAC,CAAC;AAEH,SAAgB,wBAAwB,CAAC,QAA4B;IACnE,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,cAAc,EAAE,gCAAsB,CAAC,CAAC;AACjF,CAAC","sourcesContent":["import { FrontMcpConfigType, ProviderScope, FrontMcpServer, ProviderValueType, AsyncProvider } from '../common';\nimport { FrontMcpServerInstance } from '../server/server.instance';\nimport { FrontMcpConfig } from './front-mcp.tokens';\nimport { FrontMcpContextStorage } from '../context';\n\nconst frontMcpConfig = {\n with: (metadata: FrontMcpConfigType): ProviderValueType<FrontMcpConfigType> => ({\n name: 'frontmcp:config',\n provide: FrontMcpConfig,\n scope: ProviderScope.GLOBAL,\n useValue: metadata,\n }),\n};\n\nconst DEFAULT_HTTP_OPTIONS = { port: 3000, entryPath: '/mcp' };\n\nconst frontMcpServer = AsyncProvider({\n name: 'frontmcp:server',\n scope: ProviderScope.GLOBAL,\n provide: FrontMcpServer,\n inject: () => [FrontMcpConfig],\n useFactory: (config) => {\n return new FrontMcpServerInstance(config.http ?? DEFAULT_HTTP_OPTIONS);\n },\n});\n\nexport function createMcpGlobalProviders(metadata: FrontMcpConfigType) {\n return [frontMcpConfig.with(metadata), frontMcpServer, FrontMcpContextStorage];\n}\n"]}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Global handler registry for serverless deployments.
|
|
3
|
+
* The @FrontMcp decorator stores the handler here when running in serverless mode.
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Store the serverless handler (called by decorator after handler is ready)
|
|
7
|
+
*/
|
|
8
|
+
export declare function setServerlessHandler(handler: unknown): void;
|
|
9
|
+
/**
|
|
10
|
+
* Store the promise that resolves to the handler (called by decorator immediately)
|
|
11
|
+
*/
|
|
12
|
+
export declare function setServerlessHandlerPromise(promise: Promise<unknown>): void;
|
|
13
|
+
/**
|
|
14
|
+
* Store an error that occurred during handler initialization
|
|
15
|
+
*/
|
|
16
|
+
export declare function setServerlessHandlerError(error: Error): void;
|
|
17
|
+
/**
|
|
18
|
+
* Get the serverless handler synchronously.
|
|
19
|
+
* Returns null if handler is not ready yet.
|
|
20
|
+
* @throws Error if handler initialization failed
|
|
21
|
+
*/
|
|
22
|
+
export declare function getServerlessHandler(): unknown;
|
|
23
|
+
/**
|
|
24
|
+
* Get the serverless handler asynchronously.
|
|
25
|
+
* Waits for the handler to be ready if needed.
|
|
26
|
+
* @throws Error if handler initialization failed or not initialized
|
|
27
|
+
*/
|
|
28
|
+
export declare function getServerlessHandlerAsync(): Promise<unknown>;
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Global handler registry for serverless deployments.
|
|
4
|
+
* The @FrontMcp decorator stores the handler here when running in serverless mode.
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.setServerlessHandler = setServerlessHandler;
|
|
8
|
+
exports.setServerlessHandlerPromise = setServerlessHandlerPromise;
|
|
9
|
+
exports.setServerlessHandlerError = setServerlessHandlerError;
|
|
10
|
+
exports.getServerlessHandler = getServerlessHandler;
|
|
11
|
+
exports.getServerlessHandlerAsync = getServerlessHandlerAsync;
|
|
12
|
+
let globalHandler = null;
|
|
13
|
+
let globalHandlerPromise = null;
|
|
14
|
+
let globalHandlerError = null;
|
|
15
|
+
/**
|
|
16
|
+
* Store the serverless handler (called by decorator after handler is ready)
|
|
17
|
+
*/
|
|
18
|
+
function setServerlessHandler(handler) {
|
|
19
|
+
globalHandler = handler;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Store the promise that resolves to the handler (called by decorator immediately)
|
|
23
|
+
*/
|
|
24
|
+
function setServerlessHandlerPromise(promise) {
|
|
25
|
+
globalHandlerPromise = promise;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Store an error that occurred during handler initialization
|
|
29
|
+
*/
|
|
30
|
+
function setServerlessHandlerError(error) {
|
|
31
|
+
globalHandlerError = error;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Get the serverless handler synchronously.
|
|
35
|
+
* Returns null if handler is not ready yet.
|
|
36
|
+
* @throws Error if handler initialization failed
|
|
37
|
+
*/
|
|
38
|
+
function getServerlessHandler() {
|
|
39
|
+
if (globalHandlerError) {
|
|
40
|
+
throw globalHandlerError;
|
|
41
|
+
}
|
|
42
|
+
return globalHandler;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Get the serverless handler asynchronously.
|
|
46
|
+
* Waits for the handler to be ready if needed.
|
|
47
|
+
* @throws Error if handler initialization failed or not initialized
|
|
48
|
+
*/
|
|
49
|
+
async function getServerlessHandlerAsync() {
|
|
50
|
+
if (globalHandlerError) {
|
|
51
|
+
throw globalHandlerError;
|
|
52
|
+
}
|
|
53
|
+
if (globalHandlerPromise) {
|
|
54
|
+
return globalHandlerPromise;
|
|
55
|
+
}
|
|
56
|
+
if (!globalHandler) {
|
|
57
|
+
throw new Error('Serverless handler not initialized. Ensure @FrontMcp decorator ran and FRONTMCP_SERVERLESS=1 is set.');
|
|
58
|
+
}
|
|
59
|
+
return globalHandler;
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=serverless-handler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"serverless-handler.js","sourceRoot":"","sources":["../../../src/front-mcp/serverless-handler.ts"],"names":[],"mappings":";AAAA;;;GAGG;;AASH,oDAEC;AAKD,kEAEC;AAKD,8DAEC;AAOD,oDAKC;AAOD,8DAaC;AAvDD,IAAI,aAAa,GAAY,IAAI,CAAC;AAClC,IAAI,oBAAoB,GAA4B,IAAI,CAAC;AACzD,IAAI,kBAAkB,GAAiB,IAAI,CAAC;AAE5C;;GAEG;AACH,SAAgB,oBAAoB,CAAC,OAAgB;IACnD,aAAa,GAAG,OAAO,CAAC;AAC1B,CAAC;AAED;;GAEG;AACH,SAAgB,2BAA2B,CAAC,OAAyB;IACnE,oBAAoB,GAAG,OAAO,CAAC;AACjC,CAAC;AAED;;GAEG;AACH,SAAgB,yBAAyB,CAAC,KAAY;IACpD,kBAAkB,GAAG,KAAK,CAAC;AAC7B,CAAC;AAED;;;;GAIG;AACH,SAAgB,oBAAoB;IAClC,IAAI,kBAAkB,EAAE,CAAC;QACvB,MAAM,kBAAkB,CAAC;IAC3B,CAAC;IACD,OAAO,aAAa,CAAC;AACvB,CAAC;AAED;;;;GAIG;AACI,KAAK,UAAU,yBAAyB;IAC7C,IAAI,kBAAkB,EAAE,CAAC;QACvB,MAAM,kBAAkB,CAAC;IAC3B,CAAC;IACD,IAAI,oBAAoB,EAAE,CAAC;QACzB,OAAO,oBAAoB,CAAC;IAC9B,CAAC;IACD,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,MAAM,IAAI,KAAK,CACb,sGAAsG,CACvG,CAAC;IACJ,CAAC;IACD,OAAO,aAAa,CAAC;AACvB,CAAC","sourcesContent":["/**\n * Global handler registry for serverless deployments.\n * The @FrontMcp decorator stores the handler here when running in serverless mode.\n */\n\nlet globalHandler: unknown = null;\nlet globalHandlerPromise: Promise<unknown> | null = null;\nlet globalHandlerError: Error | null = null;\n\n/**\n * Store the serverless handler (called by decorator after handler is ready)\n */\nexport function setServerlessHandler(handler: unknown): void {\n globalHandler = handler;\n}\n\n/**\n * Store the promise that resolves to the handler (called by decorator immediately)\n */\nexport function setServerlessHandlerPromise(promise: Promise<unknown>): void {\n globalHandlerPromise = promise;\n}\n\n/**\n * Store an error that occurred during handler initialization\n */\nexport function setServerlessHandlerError(error: Error): void {\n globalHandlerError = error;\n}\n\n/**\n * Get the serverless handler synchronously.\n * Returns null if handler is not ready yet.\n * @throws Error if handler initialization failed\n */\nexport function getServerlessHandler(): unknown {\n if (globalHandlerError) {\n throw globalHandlerError;\n }\n return globalHandler;\n}\n\n/**\n * Get the serverless handler asynchronously.\n * Waits for the handler to be ready if needed.\n * @throws Error if handler initialization failed or not initialized\n */\nexport async function getServerlessHandlerAsync(): Promise<unknown> {\n if (globalHandlerError) {\n throw globalHandlerError;\n }\n if (globalHandlerPromise) {\n return globalHandlerPromise;\n }\n if (!globalHandler) {\n throw new Error(\n 'Serverless handler not initialized. Ensure @FrontMcp decorator ran and FRONTMCP_SERVERLESS=1 is set.',\n );\n }\n return globalHandler;\n}\n"]}
|
package/src/hooks/hooks.utils.js
CHANGED
|
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.collectHook = collectHook;
|
|
4
4
|
exports.normalizeHooksFromCls = normalizeHooksFromCls;
|
|
5
5
|
const common_1 = require("../common");
|
|
6
|
+
const hook_decorator_1 = require("../common/decorators/hook.decorator");
|
|
6
7
|
const metadata_utils_1 = require("../utils/metadata.utils");
|
|
7
8
|
const token_utils_1 = require("../utils/token.utils");
|
|
8
9
|
function collectHook(cls) {
|
|
@@ -11,14 +12,20 @@ function collectHook(cls) {
|
|
|
11
12
|
function normalizeHooksFromCls(instance) {
|
|
12
13
|
const item = instance.constructor;
|
|
13
14
|
if ((0, token_utils_1.isClass)(item)) {
|
|
14
|
-
|
|
15
|
-
|
|
15
|
+
// Get hooks from legacy decorators (Reflect.metadata)
|
|
16
|
+
const legacyHooks = collectHook(item);
|
|
17
|
+
// Get hooks from TC39 decorators (pending registry)
|
|
18
|
+
// This is needed when running with tsx/esbuild which uses TC39 decorators
|
|
19
|
+
const tc39Hooks = (0, hook_decorator_1.resolvePendingTC39HooksForClass)(item);
|
|
20
|
+
// Combine both sources
|
|
21
|
+
const allHooks = [...legacyHooks, ...tc39Hooks];
|
|
22
|
+
return allHooks.map((hook) => ({
|
|
16
23
|
kind: common_1.HookKind.METHOD_TOKEN,
|
|
17
24
|
provide: hook.static ? item[hook.method] : instance[hook.method],
|
|
18
25
|
metadata: {
|
|
19
26
|
...hook,
|
|
20
27
|
target: hook.static ? item : instance,
|
|
21
|
-
}
|
|
28
|
+
},
|
|
22
29
|
}));
|
|
23
30
|
}
|
|
24
31
|
// ignore hooks from non-class items
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hooks.utils.js","sourceRoot":"","sources":["../../../src/hooks/hooks.utils.ts"],"names":[],"mappings":";;AAKA,kCAEC;
|
|
1
|
+
{"version":3,"file":"hooks.utils.js","sourceRoot":"","sources":["../../../src/hooks/hooks.utils.ts"],"names":[],"mappings":";;AAKA,kCAEC;AAED,sDAwBC;AAjCD,sCAA8F;AAC9F,wEAAsF;AACtF,4DAAsD;AACtD,sDAA+C;AAE/C,SAAgB,WAAW,CAAC,GAAU;IACpC,OAAO,CAAC,IAAA,4BAAW,EAAC,+BAAsB,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,EAAE,CAAmB,CAAC;AAClF,CAAC;AAED,SAAgB,qBAAqB,CAAC,QAAa;IACjD,MAAM,IAAI,GAAG,QAAQ,CAAC,WAAW,CAAC;IAClC,IAAI,IAAA,qBAAO,EAAC,IAAI,CAAC,EAAE,CAAC;QAClB,sDAAsD;QACtD,MAAM,WAAW,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;QAEtC,oDAAoD;QACpD,0EAA0E;QAC1E,MAAM,SAAS,GAAG,IAAA,gDAA+B,EAAC,IAAI,CAAC,CAAC;QAExD,uBAAuB;QACvB,MAAM,QAAQ,GAAG,CAAC,GAAG,WAAW,EAAE,GAAG,SAAS,CAAC,CAAC;QAEhD,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YAC7B,IAAI,EAAE,iBAAQ,CAAC,YAAY;YAC3B,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC;YAChE,QAAQ,EAAE;gBACR,GAAG,IAAI;gBACP,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ;aACtC;SACF,CAAC,CAAC,CAAC;IACN,CAAC;IACD,oCAAoC;IACpC,OAAO,EAAE,CAAC;AACZ,CAAC","sourcesContent":["import { FrontMcpFlowHookTokens, HookKind, HookMetadata, HookRecord, Token } from '../common';\nimport { resolvePendingTC39HooksForClass } from '../common/decorators/hook.decorator';\nimport { getMetadata } from '../utils/metadata.utils';\nimport { isClass } from '../utils/token.utils';\n\nexport function collectHook(cls: Token): HookMetadata[] {\n return (getMetadata(FrontMcpFlowHookTokens.hooks, cls) ?? []) as HookMetadata[];\n}\n\nexport function normalizeHooksFromCls(instance: any): HookRecord[] {\n const item = instance.constructor;\n if (isClass(item)) {\n // Get hooks from legacy decorators (Reflect.metadata)\n const legacyHooks = collectHook(item);\n\n // Get hooks from TC39 decorators (pending registry)\n // This is needed when running with tsx/esbuild which uses TC39 decorators\n const tc39Hooks = resolvePendingTC39HooksForClass(item);\n\n // Combine both sources\n const allHooks = [...legacyHooks, ...tc39Hooks];\n\n return allHooks.map((hook) => ({\n kind: HookKind.METHOD_TOKEN,\n provide: hook.static ? item[hook.method] : instance[hook.method],\n metadata: {\n ...hook,\n target: hook.static ? item : instance,\n },\n }));\n }\n // ignore hooks from non-class items\n return [];\n}\n"]}
|