@eggjs/controller-decorator
Version:
tegg controller decorator
83 lines • 8.2 kB
JavaScript
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.MCPControllerMetaBuilder = void 0;
const assert_1 = __importDefault(require("assert"));
const core_decorator_1 = require("@eggjs/core-decorator");
const ControllerValidator_1 = require("../../util/validator/ControllerValidator");
const ControllerInfoUtil_1 = __importDefault(require("../../util/ControllerInfoUtil"));
const MCPControllerPromptMetaBuilder_1 = require("./MCPControllerPromptMetaBuilder");
const MCPControllerResourceMetaBuilder_1 = require("./MCPControllerResourceMetaBuilder");
const MCPControllerToolMetaBuilder_1 = require("./MCPControllerToolMetaBuilder");
const MCPInfoUtil_1 = require("../../../src/util/MCPInfoUtil");
const tegg_types_1 = require("@eggjs/tegg-types");
const MCPControllerMeta_1 = require("../../../src/model/MCPControllerMeta");
const ControllerMetaBuilderFactory_1 = require("../../builder/ControllerMetaBuilderFactory");
class MCPControllerMetaBuilder {
constructor(clazz) {
this.clazz = clazz;
}
buildResource() {
const methodNames = MCPInfoUtil_1.MCPInfoUtil.getMCPResource(this.clazz);
const methods = [];
for (const methodName of methodNames) {
const builder = new MCPControllerResourceMetaBuilder_1.MCPControllerResourceMetaBuilder(this.clazz, methodName);
const methodMeta = builder.build();
if (methodMeta) {
methods.push(methodMeta);
}
}
return methods;
}
buildPrompt() {
const methodNames = MCPInfoUtil_1.MCPInfoUtil.getMCPPrompt(this.clazz);
const methods = [];
for (const methodName of methodNames) {
const builder = new MCPControllerPromptMetaBuilder_1.MCPControllerPromptMetaBuilder(this.clazz, methodName);
const methodMeta = builder.build();
if (methodMeta) {
methods.push(methodMeta);
}
}
return methods;
}
buildTool() {
const methodNames = MCPInfoUtil_1.MCPInfoUtil.getMCPTool(this.clazz);
const methods = [];
for (const methodName of methodNames) {
const builder = new MCPControllerToolMetaBuilder_1.MCPControllerToolMetaBuilder(this.clazz, methodName);
const methodMeta = builder.build();
if (methodMeta) {
methods.push(methodMeta);
}
}
return methods;
}
build() {
ControllerValidator_1.ControllerValidator.validate(this.clazz);
const controllerType = ControllerInfoUtil_1.default.getControllerType(this.clazz);
(0, assert_1.default)(controllerType === tegg_types_1.ControllerType.MCP, 'invalidate controller type');
const mcpMiddlewares = ControllerInfoUtil_1.default.getControllerMiddlewares(this.clazz);
const resources = this.buildResource();
const prompts = this.buildPrompt();
const tools = this.buildTool();
const property = core_decorator_1.PrototypeUtil.getProperty(this.clazz);
const protoName = property.name;
const clazzName = this.clazz.name;
const controllerName = ControllerInfoUtil_1.default.getControllerName(this.clazz) || clazzName;
const name = MCPInfoUtil_1.MCPInfoUtil.getMCPName(this.clazz);
const version = MCPInfoUtil_1.MCPInfoUtil.getMCPVersion(this.clazz) || '1.0.0';
const needAcl = ControllerInfoUtil_1.default.hasControllerAcl(this.clazz);
const aclCode = ControllerInfoUtil_1.default.getControllerAcl(this.clazz);
const meta = MCPInfoUtil_1.MCPInfoUtil.getMCPControllerParams(this.clazz);
return new MCPControllerMeta_1.MCPControllerMeta(clazzName, protoName, controllerName, version, tools, resources, prompts, mcpMiddlewares, name, needAcl, aclCode, meta);
}
static create(clazz) {
return new MCPControllerMetaBuilder(clazz);
}
}
exports.MCPControllerMetaBuilder = MCPControllerMetaBuilder;
ControllerMetaBuilderFactory_1.ControllerMetaBuilderFactory.registerControllerMetaBuilder(tegg_types_1.ControllerType.MCP, MCPControllerMetaBuilder.create);
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTUNQQ29udHJvbGxlck1ldGFCdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2ltcGwvbWNwL01DUENvbnRyb2xsZXJNZXRhQnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxvREFBNEI7QUFDNUIsMERBQXNEO0FBRXRELGtGQUErRTtBQUMvRSx1RkFBK0Q7QUFDL0QscUZBQWtGO0FBQ2xGLHlGQUFzRjtBQUN0RixpRkFBOEU7QUFDOUUsK0RBQTREO0FBQzVELGtEQUFzRTtBQUN0RSw0RUFBeUU7QUFDekUsNkZBQTBGO0FBRTFGLE1BQWEsd0JBQXdCO0lBR25DLFlBQVksS0FBd0I7UUFDbEMsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7SUFDckIsQ0FBQztJQUVPLGFBQWE7UUFDbkIsTUFBTSxXQUFXLEdBQUcseUJBQVcsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzNELE1BQU0sT0FBTyxHQUFzQixFQUFFLENBQUM7UUFDdEMsS0FBSyxNQUFNLFVBQVUsSUFBSSxXQUFXLEVBQUUsQ0FBQztZQUNyQyxNQUFNLE9BQU8sR0FBRyxJQUFJLG1FQUFnQyxDQUNsRCxJQUFJLENBQUMsS0FBSyxFQUNWLFVBQVUsQ0FDWCxDQUFDO1lBQ0YsTUFBTSxVQUFVLEdBQUcsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ25DLElBQUksVUFBVSxFQUFFLENBQUM7Z0JBQ2YsT0FBTyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUMzQixDQUFDO1FBQ0gsQ0FBQztRQUNELE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7SUFFTyxXQUFXO1FBQ2pCLE1BQU0sV0FBVyxHQUFHLHlCQUFXLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN6RCxNQUFNLE9BQU8sR0FBb0IsRUFBRSxDQUFDO1FBQ3BDLEtBQUssTUFBTSxVQUFVLElBQUksV0FBVyxFQUFFLENBQUM7WUFDckMsTUFBTSxPQUFPLEdBQUcsSUFBSSwrREFBOEIsQ0FDaEQsSUFBSSxDQUFDLEtBQUssRUFDVixVQUFVLENBQ1gsQ0FBQztZQUNGLE1BQU0sVUFBVSxHQUFHLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNuQyxJQUFJLFVBQVUsRUFBRSxDQUFDO2dCQUNmLE9BQU8sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDM0IsQ0FBQztRQUNILENBQUM7UUFDRCxPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDO0lBRU8sU0FBUztRQUNmLE1BQU0sV0FBVyxHQUFHLHlCQUFXLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN2RCxNQUFNLE9BQU8sR0FBa0IsRUFBRSxDQUFDO1FBQ2xDLEtBQUssTUFBTSxVQUFVLElBQUksV0FBVyxFQUFFLENBQUM7WUFDckMsTUFBTSxPQUFPLEdBQUcsSUFBSSwyREFBNEIsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1lBQ3pFLE1BQU0sVUFBVSxHQUFHLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNuQyxJQUFJLFVBQVUsRUFBRSxDQUFDO2dCQUNmLE9BQU8sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDM0IsQ0FBQztRQUNILENBQUM7UUFDRCxPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDO0lBRUQsS0FBSztRQUNILHlDQUFtQixDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDekMsTUFBTSxjQUFjLEdBQUcsNEJBQWtCLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3hFLElBQUEsZ0JBQU0sRUFBQyxjQUFjLEtBQUssMkJBQWMsQ0FBQyxHQUFHLEVBQUUsNEJBQTRCLENBQUMsQ0FBQztRQUM1RSxNQUFNLGNBQWMsR0FBRyw0QkFBa0IsQ0FBQyx3QkFBd0IsQ0FDaEUsSUFBSSxDQUFDLEtBQUssQ0FDWCxDQUFDO1FBQ0YsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3ZDLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNuQyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDL0IsTUFBTSxRQUFRLEdBQUcsOEJBQWEsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3ZELE1BQU0sU0FBUyxHQUFHLFFBQVMsQ0FBQyxJQUFjLENBQUM7UUFDM0MsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUM7UUFDbEMsTUFBTSxjQUFjLEdBQ2xCLDRCQUFrQixDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxTQUFTLENBQUM7UUFDaEUsTUFBTSxJQUFJLEdBQUcseUJBQVcsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2hELE1BQU0sT0FBTyxHQUFHLHlCQUFXLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxPQUFPLENBQUM7UUFDakUsTUFBTSxPQUFPLEdBQUcsNEJBQWtCLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2hFLE1BQU0sT0FBTyxHQUFHLDRCQUFrQixDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNoRSxNQUFNLElBQUksR0FBRyx5QkFBVyxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM1RCxPQUFPLElBQUkscUNBQWlCLENBQzFCLFNBQVMsRUFDVCxTQUFTLEVBQ1QsY0FBYyxFQUNkLE9BQU8sRUFDUCxLQUFLLEVBQ0wsU0FBUyxFQUNULE9BQU8sRUFDUCxjQUFjLEVBQ2QsSUFBSSxFQUNKLE9BQU8sRUFDUCxPQUFPLEVBQ1AsSUFBSSxDQUNMLENBQUM7SUFDSixDQUFDO0lBRUQsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUF3QjtRQUNwQyxPQUFPLElBQUksd0JBQXdCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDN0MsQ0FBQztDQUNGO0FBM0ZELDREQTJGQztBQUVELDJEQUE0QixDQUFDLDZCQUE2QixDQUN4RCwyQkFBYyxDQUFDLEdBQUcsRUFDbEIsd0JBQXdCLENBQUMsTUFBTSxDQUNoQyxDQUFDIn0=