@frontmcp/sdk 0.1.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 +11 -0
- package/package.json +29 -0
- package/src/constants.d.ts +30 -0
- package/src/constants.js +36 -0
- package/src/constants.js.map +1 -0
- package/src/decorators/adapter.decorator.d.ts +7 -0
- package/src/decorators/adapter.decorator.js +20 -0
- package/src/decorators/adapter.decorator.js.map +1 -0
- package/src/decorators/app.decorator.d.ts +7 -0
- package/src/decorators/app.decorator.js +44 -0
- package/src/decorators/app.decorator.js.map +1 -0
- package/src/decorators/auth-provider.decorator.d.ts +7 -0
- package/src/decorators/auth-provider.decorator.js +20 -0
- package/src/decorators/auth-provider.decorator.js.map +1 -0
- package/src/decorators/flow-hooks.decorator.d.ts +12 -0
- package/src/decorators/flow-hooks.decorator.js +63 -0
- package/src/decorators/flow-hooks.decorator.js.map +1 -0
- package/src/decorators/flow.decorator.d.ts +6 -0
- package/src/decorators/flow.decorator.js +19 -0
- package/src/decorators/flow.decorator.js.map +1 -0
- package/src/decorators/front-mcp.decorator.d.ts +6 -0
- package/src/decorators/front-mcp.decorator.js +40 -0
- package/src/decorators/front-mcp.decorator.js.map +1 -0
- package/src/decorators/index.d.ts +12 -0
- package/src/decorators/index.js +16 -0
- package/src/decorators/index.js.map +1 -0
- package/src/decorators/logger.decorator.d.ts +7 -0
- package/src/decorators/logger.decorator.js +20 -0
- package/src/decorators/logger.decorator.js.map +1 -0
- package/src/decorators/plugin.decorator.d.ts +7 -0
- package/src/decorators/plugin.decorator.js +38 -0
- package/src/decorators/plugin.decorator.js.map +1 -0
- package/src/decorators/prompt.decorator.d.ts +13 -0
- package/src/decorators/prompt.decorator.js +38 -0
- package/src/decorators/prompt.decorator.js.map +1 -0
- package/src/decorators/provider.decorator.d.ts +7 -0
- package/src/decorators/provider.decorator.js +20 -0
- package/src/decorators/provider.decorator.js.map +1 -0
- package/src/decorators/resource.decorator.d.ts +17 -0
- package/src/decorators/resource.decorator.js +52 -0
- package/src/decorators/resource.decorator.js.map +1 -0
- package/src/decorators/tool.decorator.d.ts +14 -0
- package/src/decorators/tool.decorator.js +38 -0
- package/src/decorators/tool.decorator.js.map +1 -0
- package/src/decorators-old/async-with.decorator.d.ts +9 -0
- package/src/decorators-old/async-with.decorator.js +23 -0
- package/src/decorators-old/async-with.decorator.js.map +1 -0
- package/src/decorators-old/auth-hook.decorator.d.ts +14 -0
- package/src/decorators-old/auth-hook.decorator.js +27 -0
- package/src/decorators-old/auth-hook.decorator.js.map +1 -0
- package/src/decorators-old/session-hook.decorator.d.ts +14 -0
- package/src/decorators-old/session-hook.decorator.js +27 -0
- package/src/decorators-old/session-hook.decorator.js.map +1 -0
- package/src/decorators-old/tool-hook.decorator.d.ts +14 -0
- package/src/decorators-old/tool-hook.decorator.js +27 -0
- package/src/decorators-old/tool-hook.decorator.js.map +1 -0
- package/src/dynamic/dynamic.adapter.d.ts +42 -0
- package/src/dynamic/dynamic.adapter.js +28 -0
- package/src/dynamic/dynamic.adapter.js.map +1 -0
- package/src/dynamic/dynamic.plugin.d.ts +52 -0
- package/src/dynamic/dynamic.plugin.js +33 -0
- package/src/dynamic/dynamic.plugin.js.map +1 -0
- package/src/dynamic/dynamic.utils.d.ts +3 -0
- package/src/dynamic/dynamic.utils.js +27 -0
- package/src/dynamic/dynamic.utils.js.map +1 -0
- package/src/dynamic/index.d.ts +2 -0
- package/src/dynamic/index.js +6 -0
- package/src/dynamic/index.js.map +1 -0
- package/src/entries/adapter.entry.d.ts +6 -0
- package/src/entries/adapter.entry.js +8 -0
- package/src/entries/adapter.entry.js.map +1 -0
- package/src/entries/app.entry.d.ts +13 -0
- package/src/entries/app.entry.js +9 -0
- package/src/entries/app.entry.js.map +1 -0
- package/src/entries/auth-provider.entry.d.ts +6 -0
- package/src/entries/auth-provider.entry.js +8 -0
- package/src/entries/auth-provider.entry.js.map +1 -0
- package/src/entries/base.entry.d.ts +20 -0
- package/src/entries/base.entry.js +17 -0
- package/src/entries/base.entry.js.map +1 -0
- package/src/entries/flow.entry.d.ts +15 -0
- package/src/entries/flow.entry.js +21 -0
- package/src/entries/flow.entry.js.map +1 -0
- package/src/entries/index.d.ts +12 -0
- package/src/entries/index.js +16 -0
- package/src/entries/index.js.map +1 -0
- package/src/entries/logger.entry.d.ts +6 -0
- package/src/entries/logger.entry.js +8 -0
- package/src/entries/logger.entry.js.map +1 -0
- package/src/entries/plugin.entry.d.ts +6 -0
- package/src/entries/plugin.entry.js +8 -0
- package/src/entries/plugin.entry.js.map +1 -0
- package/src/entries/prompt.entry.d.ts +6 -0
- package/src/entries/prompt.entry.js +8 -0
- package/src/entries/prompt.entry.js.map +1 -0
- package/src/entries/provider.entry.d.ts +7 -0
- package/src/entries/provider.entry.js +8 -0
- package/src/entries/provider.entry.js.map +1 -0
- package/src/entries/resource.entry.d.ts +7 -0
- package/src/entries/resource.entry.js +11 -0
- package/src/entries/resource.entry.js.map +1 -0
- package/src/entries/scope.entry.d.ts +17 -0
- package/src/entries/scope.entry.js +8 -0
- package/src/entries/scope.entry.js.map +1 -0
- package/src/entries/tool.entry.d.ts +15 -0
- package/src/entries/tool.entry.js +11 -0
- package/src/entries/tool.entry.js.map +1 -0
- package/src/index.d.ts +18 -0
- package/src/index.js +22 -0
- package/src/index.js.map +1 -0
- package/src/interfaces/adapter.interface.d.ts +20 -0
- package/src/interfaces/adapter.interface.js +3 -0
- package/src/interfaces/adapter.interface.js.map +1 -0
- package/src/interfaces/app.interface.d.ts +6 -0
- package/src/interfaces/app.interface.js +3 -0
- package/src/interfaces/app.interface.js.map +1 -0
- package/src/interfaces/auth-hook.interface.d.ts +126 -0
- package/src/interfaces/auth-hook.interface.js +135 -0
- package/src/interfaces/auth-hook.interface.js.map +1 -0
- package/src/interfaces/auth-provider.interface.d.ts +22 -0
- package/src/interfaces/auth-provider.interface.js +18 -0
- package/src/interfaces/auth-provider.interface.js.map +1 -0
- package/src/interfaces/base.interface.d.ts +77 -0
- package/src/interfaces/base.interface.js +3 -0
- package/src/interfaces/base.interface.js.map +1 -0
- package/src/interfaces/flow.interface.d.ts +38 -0
- package/src/interfaces/flow.interface.js +69 -0
- package/src/interfaces/flow.interface.js.map +1 -0
- package/src/interfaces/front-mcp.interface.d.ts +5 -0
- package/src/interfaces/front-mcp.interface.js +3 -0
- package/src/interfaces/front-mcp.interface.js.map +1 -0
- package/src/interfaces/index.d.ts +15 -0
- package/src/interfaces/index.js +19 -0
- package/src/interfaces/index.js.map +1 -0
- package/src/interfaces/internal/flow.utils.d.ts +24 -0
- package/src/interfaces/internal/flow.utils.js +83 -0
- package/src/interfaces/internal/flow.utils.js.map +1 -0
- package/src/interfaces/internal/index.d.ts +2 -0
- package/src/interfaces/internal/index.js +7 -0
- package/src/interfaces/internal/index.js.map +1 -0
- package/src/interfaces/internal/primary-auth-provider.interface.d.ts +24 -0
- package/src/interfaces/internal/primary-auth-provider.interface.js +33 -0
- package/src/interfaces/internal/primary-auth-provider.interface.js.map +1 -0
- package/src/interfaces/internal/registry.interface.d.ts +71 -0
- package/src/interfaces/internal/registry.interface.js +3 -0
- package/src/interfaces/internal/registry.interface.js.map +1 -0
- package/src/interfaces/logger.interface.d.ts +42 -0
- package/src/interfaces/logger.interface.js +10 -0
- package/src/interfaces/logger.interface.js.map +1 -0
- package/src/interfaces/plugin.interface.d.ts +8 -0
- package/src/interfaces/plugin.interface.js +3 -0
- package/src/interfaces/plugin.interface.js.map +1 -0
- package/src/interfaces/prompt.interface.d.ts +5 -0
- package/src/interfaces/prompt.interface.js +3 -0
- package/src/interfaces/prompt.interface.js.map +1 -0
- package/src/interfaces/provider.interface.d.ts +20 -0
- package/src/interfaces/provider.interface.js +18 -0
- package/src/interfaces/provider.interface.js.map +1 -0
- package/src/interfaces/resource.interface.d.ts +21 -0
- package/src/interfaces/resource.interface.js +3 -0
- package/src/interfaces/resource.interface.js.map +1 -0
- package/src/interfaces/scope.interface.d.ts +5 -0
- package/src/interfaces/scope.interface.js +3 -0
- package/src/interfaces/scope.interface.js.map +1 -0
- package/src/interfaces/server.interface.d.ts +46 -0
- package/src/interfaces/server.interface.js +18 -0
- package/src/interfaces/server.interface.js.map +1 -0
- package/src/interfaces/session-hook.interface.d.ts +131 -0
- package/src/interfaces/session-hook.interface.js +140 -0
- package/src/interfaces/session-hook.interface.js.map +1 -0
- package/src/interfaces/tool-hook.interface.d.ts +80 -0
- package/src/interfaces/tool-hook.interface.js +92 -0
- package/src/interfaces/tool-hook.interface.js.map +1 -0
- package/src/interfaces/tool.interface.d.ts +45 -0
- package/src/interfaces/tool.interface.js +89 -0
- package/src/interfaces/tool.interface.js.map +1 -0
- package/src/metadata/adapter.metadata.d.ts +22 -0
- package/src/metadata/adapter.metadata.js +10 -0
- package/src/metadata/adapter.metadata.js.map +1 -0
- package/src/metadata/app.metadata.d.ts +872 -0
- package/src/metadata/app.metadata.js +30 -0
- package/src/metadata/app.metadata.js.map +1 -0
- package/src/metadata/auth-provider.metadata.d.ts +33 -0
- package/src/metadata/auth-provider.metadata.js +19 -0
- package/src/metadata/auth-provider.metadata.js.map +1 -0
- package/src/metadata/flow-hooks.metadata.d.ts +20 -0
- package/src/metadata/flow-hooks.metadata.js +3 -0
- package/src/metadata/flow-hooks.metadata.js.map +1 -0
- package/src/metadata/flow.metadata.d.ts +75 -0
- package/src/metadata/flow.metadata.js +15 -0
- package/src/metadata/flow.metadata.js.map +1 -0
- package/src/metadata/front-mcp.metadata.d.ts +1144 -0
- package/src/metadata/front-mcp.metadata.js +25 -0
- package/src/metadata/front-mcp.metadata.js.map +1 -0
- package/src/metadata/index.d.ts +12 -0
- package/src/metadata/index.js +16 -0
- package/src/metadata/index.js.map +1 -0
- package/src/metadata/logger.metadata.d.ts +39 -0
- package/src/metadata/logger.metadata.js +10 -0
- package/src/metadata/logger.metadata.js.map +1 -0
- package/src/metadata/plugin.metadata.d.ts +93 -0
- package/src/metadata/plugin.metadata.js +18 -0
- package/src/metadata/plugin.metadata.js.map +1 -0
- package/src/metadata/prompt.metadata.d.ts +226 -0
- package/src/metadata/prompt.metadata.js +27 -0
- package/src/metadata/prompt.metadata.js.map +1 -0
- package/src/metadata/provider.metadata.d.ts +34 -0
- package/src/metadata/provider.metadata.js +20 -0
- package/src/metadata/provider.metadata.js.map +1 -0
- package/src/metadata/resource.metadata.d.ts +199 -0
- package/src/metadata/resource.metadata.js +22 -0
- package/src/metadata/resource.metadata.js.map +1 -0
- package/src/metadata/tool.metadata.d.ts +278 -0
- package/src/metadata/tool.metadata.js +28 -0
- package/src/metadata/tool.metadata.js.map +1 -0
- package/src/providers/session.provider.d.ts +13 -0
- package/src/providers/session.provider.js +27 -0
- package/src/providers/session.provider.js.map +1 -0
- package/src/records/adapter.record.d.ts +26 -0
- package/src/records/adapter.record.js +11 -0
- package/src/records/adapter.record.js.map +1 -0
- package/src/records/app.record.d.ts +19 -0
- package/src/records/app.record.js +9 -0
- package/src/records/app.record.js.map +1 -0
- package/src/records/auth-provider.record.d.ts +37 -0
- package/src/records/auth-provider.record.js +12 -0
- package/src/records/auth-provider.record.js.map +1 -0
- package/src/records/flow.record.d.ts +11 -0
- package/src/records/flow.record.js +8 -0
- package/src/records/flow.record.js.map +1 -0
- package/src/records/index.d.ts +11 -0
- package/src/records/index.js +15 -0
- package/src/records/index.js.map +1 -0
- package/src/records/logger.record.d.ts +11 -0
- package/src/records/logger.record.js +8 -0
- package/src/records/logger.record.js.map +1 -0
- package/src/records/plugin.record.d.ts +21 -0
- package/src/records/plugin.record.js +11 -0
- package/src/records/plugin.record.js.map +1 -0
- package/src/records/prompt.record.d.ts +18 -0
- package/src/records/prompt.record.js +9 -0
- package/src/records/prompt.record.js.map +1 -0
- package/src/records/provider.record.d.ts +36 -0
- package/src/records/provider.record.js +14 -0
- package/src/records/provider.record.js.map +1 -0
- package/src/records/resource.record.d.ts +18 -0
- package/src/records/resource.record.js +14 -0
- package/src/records/resource.record.js.map +1 -0
- package/src/records/scope.record.d.ts +18 -0
- package/src/records/scope.record.js +9 -0
- package/src/records/scope.record.js.map +1 -0
- package/src/records/tool.record.d.ts +17 -0
- package/src/records/tool.record.js +9 -0
- package/src/records/tool.record.js.map +1 -0
- package/src/schemas/annotated-class.schema.d.ts +11 -0
- package/src/schemas/annotated-class.schema.js +40 -0
- package/src/schemas/annotated-class.schema.js.map +1 -0
- package/src/schemas/http-input.schema.d.ts +33 -0
- package/src/schemas/http-input.schema.js +13 -0
- package/src/schemas/http-input.schema.js.map +1 -0
- package/src/schemas/http-output.schema.d.ts +2011 -0
- package/src/schemas/http-output.schema.js +283 -0
- package/src/schemas/http-output.schema.js.map +1 -0
- package/src/schemas/index.d.ts +3 -0
- package/src/schemas/index.js +7 -0
- package/src/schemas/index.js.map +1 -0
- package/src/tokens/adapter.tokens.d.ts +3 -0
- package/src/tokens/adapter.tokens.js +11 -0
- package/src/tokens/adapter.tokens.js.map +1 -0
- package/src/tokens/app.tokens.d.ts +4 -0
- package/src/tokens/app.tokens.js +30 -0
- package/src/tokens/app.tokens.js.map +1 -0
- package/src/tokens/auth-provider.tokens.d.ts +3 -0
- package/src/tokens/auth-provider.tokens.js +12 -0
- package/src/tokens/auth-provider.tokens.js.map +1 -0
- package/src/tokens/base.tokens.d.ts +5 -0
- package/src/tokens/base.tokens.js +9 -0
- package/src/tokens/base.tokens.js.map +1 -0
- package/src/tokens/flow-hook.tokens.d.ts +4 -0
- package/src/tokens/flow-hook.tokens.js +9 -0
- package/src/tokens/flow-hook.tokens.js.map +1 -0
- package/src/tokens/flow.tokens.d.ts +11 -0
- package/src/tokens/flow.tokens.js +16 -0
- package/src/tokens/flow.tokens.js.map +1 -0
- package/src/tokens/front-mcp.tokens.d.ts +3 -0
- package/src/tokens/front-mcp.tokens.js +19 -0
- package/src/tokens/front-mcp.tokens.js.map +1 -0
- package/src/tokens/index.d.ts +13 -0
- package/src/tokens/index.js +17 -0
- package/src/tokens/index.js.map +1 -0
- package/src/tokens/logger.tokens.d.ts +3 -0
- package/src/tokens/logger.tokens.js +11 -0
- package/src/tokens/logger.tokens.js.map +1 -0
- package/src/tokens/plugin.tokens.d.ts +13 -0
- package/src/tokens/plugin.tokens.js +18 -0
- package/src/tokens/plugin.tokens.js.map +1 -0
- package/src/tokens/prompt.tokens.d.ts +9 -0
- package/src/tokens/prompt.tokens.js +14 -0
- package/src/tokens/prompt.tokens.js.map +1 -0
- package/src/tokens/provider.tokens.d.ts +3 -0
- package/src/tokens/provider.tokens.js +12 -0
- package/src/tokens/provider.tokens.js.map +1 -0
- package/src/tokens/resource.tokens.d.ts +20 -0
- package/src/tokens/resource.tokens.js +25 -0
- package/src/tokens/resource.tokens.js.map +1 -0
- package/src/tokens/server.tokens.d.ts +6 -0
- package/src/tokens/server.tokens.js +11 -0
- package/src/tokens/server.tokens.js.map +1 -0
- package/src/tokens/tool.tokens.d.ts +13 -0
- package/src/tokens/tool.tokens.js +18 -0
- package/src/tokens/tool.tokens.js.map +1 -0
- package/src/types/auth/index.d.ts +2 -0
- package/src/types/auth/index.js +6 -0
- package/src/types/auth/index.js.map +1 -0
- package/src/types/auth/jwt.types.d.ts +112 -0
- package/src/types/auth/jwt.types.js +36 -0
- package/src/types/auth/jwt.types.js.map +1 -0
- package/src/types/auth/session.types.d.ts +263 -0
- package/src/types/auth/session.types.js +40 -0
- package/src/types/auth/session.types.js.map +1 -0
- package/src/types/common.types.d.ts +11 -0
- package/src/types/common.types.js +3 -0
- package/src/types/common.types.js.map +1 -0
- package/src/types/index.d.ts +3 -0
- package/src/types/index.js +7 -0
- package/src/types/index.js.map +1 -0
- package/src/types/options/auth.options.d.ts +513 -0
- package/src/types/options/auth.options.js +53 -0
- package/src/types/options/auth.options.js.map +1 -0
- package/src/types/options/http.options.d.ts +22 -0
- package/src/types/options/http.options.js +10 -0
- package/src/types/options/http.options.js.map +1 -0
- package/src/types/options/index.d.ts +5 -0
- package/src/types/options/index.js +9 -0
- package/src/types/options/index.js.map +1 -0
- package/src/types/options/logging.options.d.ts +39 -0
- package/src/types/options/logging.options.js +37 -0
- package/src/types/options/logging.options.js.map +1 -0
- package/src/types/options/server-info.options.d.ts +48 -0
- package/src/types/options/server-info.options.js +13 -0
- package/src/types/options/server-info.options.js.map +1 -0
- package/src/types/options/session.options.d.ts +67 -0
- package/src/types/options/session.options.js +9 -0
- package/src/types/options/session.options.js.map +1 -0
- package/src/utils/decide-request-intent.utils.d.ts +79 -0
- package/src/utils/decide-request-intent.utils.js +326 -0
- package/src/utils/decide-request-intent.utils.js.map +1 -0
- package/src/utils/index.d.ts +2 -0
- package/src/utils/index.js +6 -0
- package/src/utils/index.js.map +1 -0
- package/src/utils/path.utils.d.ts +20 -0
- package/src/utils/path.utils.js +66 -0
- package/src/utils/path.utils.js.map +1 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompt.decorator.js","sourceRoot":"","sources":["../../../src/decorators/prompt.decorator.ts"],"names":[],"mappings":";;AAkDE,wCAAc;AACI,gCAAM;AAExB,wCAAc;AACI,gCAAM;AAtD1B,4BAA0B;AAC1B,sCAEmB;AACnB,0CAGqB;AAIrB;;GAEG;AACH,SAAS,cAAc,CAAC,gBAAgC;IACtD,OAAO,CAAC,MAAgB,EAAE,EAAE;QAC1B,MAAM,QAAQ,GAAG,uCAA4B,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;QAEtE,OAAO,CAAC,cAAc,CAAC,6BAAoB,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;QAEhE,KAAK,MAAM,QAAQ,IAAI,QAAQ,EAAE,CAAC;YAChC,OAAO,CAAC,cAAc,CAAC,6BAAoB,CAAC,QAAQ,CAAC,IAAI,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,CAAC;QACjG,CAAC;IACH,CAAC,CAAC;AACJ,CAAC;AAQD;;GAEG;AACH,SAAS,cAAc,CAA2B,gBAAmB;IACnE,OAAO,CAAC,OAAO,EAAE,EAAE;QACjB,MAAM,QAAQ,GAAG,uCAA4B,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;QACtE,MAAM,YAAY,GAAG;YACnB,OAAO,OAAO,CAAC;QACjB,CAAC,CAAC;QACF,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE;YAC1B,CAAC,6BAAoB,CAAC,IAAI,CAAC,EAAE,iBAAiB;YAC9C,CAAC,6BAAoB,CAAC,QAAQ,CAAC,EAAE,QAAQ;SAC1C,CAAC,CAAC;QACH,OAAO,YAAY,CAAC;IACtB,CAAC,CAAC;AACJ,CAAC","sourcesContent":["import 'reflect-metadata';\nimport {\n FrontMcpPromptTokens,\n} from '../tokens';\nimport {\n PromptMetadata,\n frontMcpPromptMetadataSchema,\n} from '../metadata';\nimport { GetPromptResult, GetPromptRequest } from '@modelcontextprotocol/sdk/types.js';\n\n\n/**\n * Decorator that marks a class as a McpPrompt module and provides metadata\n */\nfunction FrontMcpPrompt(providedMetadata: PromptMetadata): ClassDecorator {\n return (target: Function) => {\n const metadata = frontMcpPromptMetadataSchema.parse(providedMetadata);\n\n Reflect.defineMetadata(FrontMcpPromptTokens.type, true, target);\n\n for (const property in metadata) {\n Reflect.defineMetadata(FrontMcpPromptTokens[property] ?? property, metadata[property], target);\n }\n };\n}\n\n\nexport type FrontMcpPromptExecuteHandler = (\n args: GetPromptRequest['params']['arguments'],\n ...tokens: any[]\n) => GetPromptResult | Promise<GetPromptResult>;\n\n/**\n * Decorator that marks a class as a McpTool module and provides metadata\n */\nfunction frontMcpPrompt<T extends PromptMetadata>(providedMetadata: T): (handler: FrontMcpPromptExecuteHandler) => (() => void) {\n return (execute) => {\n const metadata = frontMcpPromptMetadataSchema.parse(providedMetadata);\n const toolFunction = function() {\n return execute;\n };\n Object.assign(toolFunction, {\n [FrontMcpPromptTokens.type]: 'function-prompt',\n [FrontMcpPromptTokens.metadata]: metadata,\n });\n return toolFunction;\n };\n}\n\nexport {\n FrontMcpPrompt,\n FrontMcpPrompt as Prompt,\n\n frontMcpPrompt,\n frontMcpPrompt as prompt,\n};"]}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import 'reflect-metadata';
|
|
2
|
+
import { ProviderMetadata } from '../metadata';
|
|
3
|
+
/**
|
|
4
|
+
* Decorator that marks a class as a McpProvider module and provides metadata
|
|
5
|
+
*/
|
|
6
|
+
declare function FrontMcpProvider(providedMetadata: ProviderMetadata): ClassDecorator;
|
|
7
|
+
export { FrontMcpProvider, FrontMcpProvider as Provider, };
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.FrontMcpProvider = FrontMcpProvider;
|
|
4
|
+
exports.Provider = FrontMcpProvider;
|
|
5
|
+
require("reflect-metadata");
|
|
6
|
+
const tokens_1 = require("../tokens");
|
|
7
|
+
const metadata_1 = require("../metadata");
|
|
8
|
+
/**
|
|
9
|
+
* Decorator that marks a class as a McpProvider module and provides metadata
|
|
10
|
+
*/
|
|
11
|
+
function FrontMcpProvider(providedMetadata) {
|
|
12
|
+
return (target) => {
|
|
13
|
+
const metadata = metadata_1.frontMcpProviderMetadataSchema.parse(providedMetadata);
|
|
14
|
+
Reflect.defineMetadata(tokens_1.FrontMcpProviderTokens.type, true, target);
|
|
15
|
+
for (const property in metadata) {
|
|
16
|
+
Reflect.defineMetadata(tokens_1.FrontMcpProviderTokens[property] ?? property, metadata[property], target);
|
|
17
|
+
}
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=provider.decorator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provider.decorator.js","sourceRoot":"","sources":["../../../src/decorators/provider.decorator.ts"],"names":[],"mappings":";;AAoBE,4CAAgB;AACI,oCAAQ;AArB9B,4BAA0B;AAC1B,sCAAmD;AACnD,0CAA+E;AAE/E;;GAEG;AACH,SAAS,gBAAgB,CAAC,gBAAkC;IAC1D,OAAO,CAAC,MAAgB,EAAE,EAAE;QAC1B,MAAM,QAAQ,GAAG,yCAA8B,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;QAExE,OAAO,CAAC,cAAc,CAAC,+BAAsB,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;QAElE,KAAK,MAAM,QAAQ,IAAI,QAAQ,EAAE,CAAC;YAChC,OAAO,CAAC,cAAc,CAAC,+BAAsB,CAAC,QAAQ,CAAC,IAAI,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,CAAC;QACnG,CAAC;IACH,CAAC,CAAC;AACJ,CAAC","sourcesContent":["import 'reflect-metadata';\nimport { FrontMcpProviderTokens } from '../tokens';\nimport { frontMcpProviderMetadataSchema, ProviderMetadata } from '../metadata';\n\n/**\n * Decorator that marks a class as a McpProvider module and provides metadata\n */\nfunction FrontMcpProvider(providedMetadata: ProviderMetadata): ClassDecorator {\n return (target: Function) => {\n const metadata = frontMcpProviderMetadataSchema.parse(providedMetadata);\n\n Reflect.defineMetadata(FrontMcpProviderTokens.type, true, target);\n\n for (const property in metadata) {\n Reflect.defineMetadata(FrontMcpProviderTokens[property] ?? property, metadata[property], target);\n }\n };\n}\n\nexport {\n FrontMcpProvider,\n FrontMcpProvider as Provider,\n};"]}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import 'reflect-metadata';
|
|
2
|
+
import { ResourceMetadata, ResourceTemplateMetadata } from '../metadata';
|
|
3
|
+
import { ReadResourceRequest, ReadResourceResult } from '@modelcontextprotocol/sdk/types.js';
|
|
4
|
+
/**
|
|
5
|
+
* Decorator that marks a class as a McpResource module and provides metadata
|
|
6
|
+
*/
|
|
7
|
+
declare function FrontMcpResource(providedMetadata: ResourceMetadata): ClassDecorator;
|
|
8
|
+
/**
|
|
9
|
+
* Decorator that marks a class as a McpResourceTemplate module and provides metadata
|
|
10
|
+
*/
|
|
11
|
+
declare function FrontMcpResourceTemplate(providedMetadata: ResourceTemplateMetadata): ClassDecorator;
|
|
12
|
+
export type FrontMcpResourceExecuteHandler = (uri: ReadResourceRequest['params']['uri'], ...tokens: any[]) => ReadResourceResult | Promise<ReadResourceResult>;
|
|
13
|
+
/**
|
|
14
|
+
* Decorator that marks a class as a McpResource module and provides metadata
|
|
15
|
+
*/
|
|
16
|
+
declare function frontMcpResource<T extends ResourceMetadata>(providedMetadata: T): (handler: FrontMcpResourceExecuteHandler) => (() => void);
|
|
17
|
+
export { FrontMcpResource, FrontMcpResource as Resource, FrontMcpResourceTemplate, FrontMcpResourceTemplate as ResourceTemplate, frontMcpResource, frontMcpResource as resource, };
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.FrontMcpResource = FrontMcpResource;
|
|
4
|
+
exports.Resource = FrontMcpResource;
|
|
5
|
+
exports.FrontMcpResourceTemplate = FrontMcpResourceTemplate;
|
|
6
|
+
exports.ResourceTemplate = FrontMcpResourceTemplate;
|
|
7
|
+
exports.frontMcpResource = frontMcpResource;
|
|
8
|
+
exports.resource = frontMcpResource;
|
|
9
|
+
require("reflect-metadata");
|
|
10
|
+
const tokens_1 = require("../tokens");
|
|
11
|
+
const metadata_1 = require("../metadata");
|
|
12
|
+
/**
|
|
13
|
+
* Decorator that marks a class as a McpResource module and provides metadata
|
|
14
|
+
*/
|
|
15
|
+
function FrontMcpResource(providedMetadata) {
|
|
16
|
+
return (target) => {
|
|
17
|
+
const metadata = metadata_1.frontMcpResourceMetadataSchema.parse(providedMetadata);
|
|
18
|
+
Reflect.defineMetadata(tokens_1.FrontMcpResourceTokens.type, true, target);
|
|
19
|
+
for (const property in metadata) {
|
|
20
|
+
Reflect.defineMetadata(tokens_1.FrontMcpResourceTokens[property] ?? property, metadata[property], target);
|
|
21
|
+
}
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Decorator that marks a class as a McpResourceTemplate module and provides metadata
|
|
26
|
+
*/
|
|
27
|
+
function FrontMcpResourceTemplate(providedMetadata) {
|
|
28
|
+
return (target) => {
|
|
29
|
+
const metadata = metadata_1.frontMcpResourceTemplateMetadataSchema.parse(providedMetadata);
|
|
30
|
+
Reflect.defineMetadata(tokens_1.FrontMcpResourceTemplateTokens.type, true, target);
|
|
31
|
+
for (const property in metadata) {
|
|
32
|
+
Reflect.defineMetadata(tokens_1.FrontMcpResourceTemplateTokens[property] ?? property, metadata[property], target);
|
|
33
|
+
}
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Decorator that marks a class as a McpResource module and provides metadata
|
|
38
|
+
*/
|
|
39
|
+
function frontMcpResource(providedMetadata) {
|
|
40
|
+
return (execute) => {
|
|
41
|
+
const metadata = metadata_1.frontMcpResourceMetadataSchema.parse(providedMetadata);
|
|
42
|
+
const toolFunction = function () {
|
|
43
|
+
return execute;
|
|
44
|
+
};
|
|
45
|
+
Object.assign(toolFunction, {
|
|
46
|
+
[tokens_1.FrontMcpResourceTokens.type]: 'function-resource',
|
|
47
|
+
[tokens_1.FrontMcpResourceTokens.metadata]: metadata,
|
|
48
|
+
});
|
|
49
|
+
return toolFunction;
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=resource.decorator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resource.decorator.js","sourceRoot":"","sources":["../../../src/decorators/resource.decorator.ts"],"names":[],"mappings":";;AA2FE,4CAAgB;AACI,oCAAQ;AAC5B,4DAAwB;AACI,oDAAgB;AAC5C,4CAAgB;AACI,oCAAQ;AAhG9B,4BAA0B;AAC1B,sCAGmB;AACnB,0CAKqB;AAOrB;;GAEG;AACH,SAAS,gBAAgB,CAAC,gBAAkC;IAC1D,OAAO,CAAC,MAAgB,EAAE,EAAE;QAC1B,MAAM,QAAQ,GAAG,yCAA8B,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;QAExE,OAAO,CAAC,cAAc,CAAC,+BAAsB,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;QAElE,KAAK,MAAM,QAAQ,IAAI,QAAQ,EAAE,CAAC;YAChC,OAAO,CAAC,cAAc,CAAC,+BAAsB,CAAC,QAAQ,CAAC,IAAI,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,CAAC;QACnG,CAAC;IACH,CAAC,CAAC;AACJ,CAAC;AAGD;;GAEG;AACH,SAAS,wBAAwB,CAAC,gBAA0C;IAC1E,OAAO,CAAC,MAAgB,EAAE,EAAE;QAC1B,MAAM,QAAQ,GAAG,iDAAsC,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;QAEhF,OAAO,CAAC,cAAc,CAAC,uCAA8B,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;QAE1E,KAAK,MAAM,QAAQ,IAAI,QAAQ,EAAE,CAAC;YAChC,OAAO,CAAC,cAAc,CAAC,uCAA8B,CAAC,QAAQ,CAAC,IAAI,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,CAAC;QAC3G,CAAC;IACH,CAAC,CAAC;AACJ,CAAC;AAQD;;GAEG;AACH,SAAS,gBAAgB,CAA6B,gBAAmB;IACvE,OAAO,CAAC,OAAO,EAAE,EAAE;QACjB,MAAM,QAAQ,GAAG,yCAA8B,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;QACxE,MAAM,YAAY,GAAG;YACnB,OAAO,OAAO,CAAC;QACjB,CAAC,CAAC;QACF,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE;YAC1B,CAAC,+BAAsB,CAAC,IAAI,CAAC,EAAE,mBAAmB;YAClD,CAAC,+BAAsB,CAAC,QAAQ,CAAC,EAAE,QAAQ;SAC5C,CAAC,CAAC;QACH,OAAO,YAAY,CAAC;IACtB,CAAC,CAAC;AACJ,CAAC","sourcesContent":["import 'reflect-metadata';\nimport {\n FrontMcpResourceTokens,\n FrontMcpResourceTemplateTokens,\n} from '../tokens';\nimport {\n frontMcpResourceMetadataSchema,\n frontMcpResourceTemplateMetadataSchema,\n ResourceMetadata,\n ResourceTemplateMetadata,\n} from '../metadata';\n\nimport {\n ReadResourceRequest,\n ReadResourceResult,\n} from '@modelcontextprotocol/sdk/types.js';\n\n/**\n * Decorator that marks a class as a McpResource module and provides metadata\n */\nfunction FrontMcpResource(providedMetadata: ResourceMetadata): ClassDecorator {\n return (target: Function) => {\n const metadata = frontMcpResourceMetadataSchema.parse(providedMetadata);\n\n Reflect.defineMetadata(FrontMcpResourceTokens.type, true, target);\n\n for (const property in metadata) {\n Reflect.defineMetadata(FrontMcpResourceTokens[property] ?? property, metadata[property], target);\n }\n };\n}\n\n\n/**\n * Decorator that marks a class as a McpResourceTemplate module and provides metadata\n */\nfunction FrontMcpResourceTemplate(providedMetadata: ResourceTemplateMetadata): ClassDecorator {\n return (target: Function) => {\n const metadata = frontMcpResourceTemplateMetadataSchema.parse(providedMetadata);\n\n Reflect.defineMetadata(FrontMcpResourceTemplateTokens.type, true, target);\n\n for (const property in metadata) {\n Reflect.defineMetadata(FrontMcpResourceTemplateTokens[property] ?? property, metadata[property], target);\n }\n };\n}\n\n\nexport type FrontMcpResourceExecuteHandler = (\n uri: ReadResourceRequest['params']['uri'],\n ...tokens: any[]\n) => ReadResourceResult | Promise<ReadResourceResult>;\n\n/**\n * Decorator that marks a class as a McpResource module and provides metadata\n */\nfunction frontMcpResource<T extends ResourceMetadata>(providedMetadata: T): (handler: FrontMcpResourceExecuteHandler) => (() => void) {\n return (execute) => {\n const metadata = frontMcpResourceMetadataSchema.parse(providedMetadata);\n const toolFunction = function () {\n return execute;\n };\n Object.assign(toolFunction, {\n [FrontMcpResourceTokens.type]: 'function-resource',\n [FrontMcpResourceTokens.metadata]: metadata,\n });\n return toolFunction;\n };\n}\n\n//\n// /**\n// * Decorator that marks a class as a McpResource module and provides metadata\n// */\n// function frontMcpResourceTemplate<T extends ResourceMetadata>(providedMetadata: T): (handler: FrontMcpResourceExecuteHandler) => (() => void) {\n// return (execute) => {\n// const metadata = frontMcpResourceMetadataSchema.parse(providedMetadata);\n// const toolFunction = function() {\n// return execute;\n// };\n// Object.assign(toolFunction, {\n// [FrontMcpResourceTokens.type]: 'function-resource',\n// [FrontMcpResourceTokens.metadata]: metadata,\n// });\n// return toolFunction;\n// };\n// }\n\n\nexport {\n FrontMcpResource,\n FrontMcpResource as Resource,\n FrontMcpResourceTemplate,\n FrontMcpResourceTemplate as ResourceTemplate,\n frontMcpResource,\n frontMcpResource as resource,\n};"]}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import 'reflect-metadata';
|
|
2
|
+
import { ToolMetadata } from '../metadata';
|
|
3
|
+
import z from 'zod';
|
|
4
|
+
import { ToolContext } from "../interfaces";
|
|
5
|
+
/**
|
|
6
|
+
* Decorator that marks a class as a McpTool module and provides metadata
|
|
7
|
+
*/
|
|
8
|
+
declare function FrontMcpTool(providedMetadata: ToolMetadata): ClassDecorator;
|
|
9
|
+
export type FrontMcpToolExecuteHandler<In, Out> = (input: In, ctx: ToolContext<In, Out>) => Out | Promise<Out>;
|
|
10
|
+
/**
|
|
11
|
+
* Decorator that marks a class as a McpTool module and provides metadata
|
|
12
|
+
*/
|
|
13
|
+
declare function frontMcpTool<T extends ToolMetadata, In = z.baseObjectInputType<T['inputSchema']>, Out = T['outputSchema'] extends z.ZodRawShape ? z.baseObjectInputType<T['outputSchema']> : unknown>(providedMetadata: T): (handler: FrontMcpToolExecuteHandler<In, Out>) => (() => void);
|
|
14
|
+
export { FrontMcpTool, FrontMcpTool as Tool, frontMcpTool, frontMcpTool as tool, };
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.FrontMcpTool = FrontMcpTool;
|
|
4
|
+
exports.Tool = FrontMcpTool;
|
|
5
|
+
exports.frontMcpTool = frontMcpTool;
|
|
6
|
+
exports.tool = frontMcpTool;
|
|
7
|
+
require("reflect-metadata");
|
|
8
|
+
const tokens_1 = require("../tokens");
|
|
9
|
+
const metadata_1 = require("../metadata");
|
|
10
|
+
/**
|
|
11
|
+
* Decorator that marks a class as a McpTool module and provides metadata
|
|
12
|
+
*/
|
|
13
|
+
function FrontMcpTool(providedMetadata) {
|
|
14
|
+
return (target) => {
|
|
15
|
+
const metadata = metadata_1.frontMcpToolMetadataSchema.parse(providedMetadata);
|
|
16
|
+
Reflect.defineMetadata(tokens_1.FrontMcpToolTokens.type, true, target);
|
|
17
|
+
for (const property in metadata) {
|
|
18
|
+
Reflect.defineMetadata(tokens_1.FrontMcpToolTokens[property] ?? property, metadata[property], target);
|
|
19
|
+
}
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Decorator that marks a class as a McpTool module and provides metadata
|
|
24
|
+
*/
|
|
25
|
+
function frontMcpTool(providedMetadata) {
|
|
26
|
+
return (execute) => {
|
|
27
|
+
const metadata = metadata_1.frontMcpToolMetadataSchema.parse(providedMetadata);
|
|
28
|
+
const toolFunction = function () {
|
|
29
|
+
return execute;
|
|
30
|
+
};
|
|
31
|
+
Object.assign(toolFunction, {
|
|
32
|
+
[tokens_1.FrontMcpToolTokens.type]: 'function-tool',
|
|
33
|
+
[tokens_1.FrontMcpToolTokens.metadata]: metadata,
|
|
34
|
+
});
|
|
35
|
+
return toolFunction;
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=tool.decorator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool.decorator.js","sourceRoot":"","sources":["../../../src/decorators/tool.decorator.ts"],"names":[],"mappings":";;AA8CE,oCAAY;AACI,4BAAI;AACpB,oCAAY;AACI,4BAAI;AAjDtB,4BAA0B;AAC1B,sCAA+C;AAC/C,0CAAuE;AAIvE;;GAEG;AACH,SAAS,YAAY,CAAC,gBAA8B;IAElD,OAAO,CAAC,MAAW,EAAE,EAAE;QACrB,MAAM,QAAQ,GAAG,qCAA0B,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;QAEpE,OAAO,CAAC,cAAc,CAAC,2BAAkB,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;QAE9D,KAAK,MAAM,QAAQ,IAAI,QAAQ,EAAE,CAAC;YAChC,OAAO,CAAC,cAAc,CAAC,2BAAkB,CAAC,QAAQ,CAAC,IAAI,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,CAAC;QAC/F,CAAC;IACH,CAAC,CAAC;AACJ,CAAC;AAKD;;GAEG;AACH,SAAS,YAAY,CAGnB,gBAAmB;IACnB,OAAO,CAAC,OAAO,EAAE,EAAE;QACjB,MAAM,QAAQ,GAAG,qCAA0B,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;QACpE,MAAM,YAAY,GAAG;YACnB,OAAO,OAAO,CAAC;QACjB,CAAC,CAAC;QACF,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE;YAC1B,CAAC,2BAAkB,CAAC,IAAI,CAAC,EAAE,eAAe;YAC1C,CAAC,2BAAkB,CAAC,QAAQ,CAAC,EAAE,QAAQ;SACxC,CAAC,CAAC;QACH,OAAO,YAAY,CAAC;IACtB,CAAC,CAAC;AACJ,CAAC","sourcesContent":["import 'reflect-metadata';\nimport { FrontMcpToolTokens } from '../tokens';\nimport { ToolMetadata, frontMcpToolMetadataSchema } from '../metadata';\nimport z from 'zod';\nimport {ToolContext} from \"../interfaces\";\n\n/**\n * Decorator that marks a class as a McpTool module and provides metadata\n */\nfunction FrontMcpTool(providedMetadata: ToolMetadata): ClassDecorator {\n\n return (target: any) => {\n const metadata = frontMcpToolMetadataSchema.parse(providedMetadata);\n\n Reflect.defineMetadata(FrontMcpToolTokens.type, true, target);\n\n for (const property in metadata) {\n Reflect.defineMetadata(FrontMcpToolTokens[property] ?? property, metadata[property], target);\n }\n };\n}\n\n\nexport type FrontMcpToolExecuteHandler<In, Out> = (input: In, ctx: ToolContext<In, Out>) => Out | Promise<Out>;\n\n/**\n * Decorator that marks a class as a McpTool module and provides metadata\n */\nfunction frontMcpTool<T extends ToolMetadata,\n In = z.baseObjectInputType<T['inputSchema']>,\n Out = T['outputSchema'] extends z.ZodRawShape ? z.baseObjectInputType<T['outputSchema']> : unknown\n>(providedMetadata: T): (handler: FrontMcpToolExecuteHandler<In, Out>) => (() => void) {\n return (execute) => {\n const metadata = frontMcpToolMetadataSchema.parse(providedMetadata);\n const toolFunction = function() {\n return execute;\n };\n Object.assign(toolFunction, {\n [FrontMcpToolTokens.type]: 'function-tool',\n [FrontMcpToolTokens.metadata]: metadata,\n });\n return toolFunction;\n };\n}\n\nexport {\n FrontMcpTool,\n FrontMcpTool as Tool,\n frontMcpTool,\n frontMcpTool as tool,\n};"]}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import 'reflect-metadata';
|
|
2
|
+
export declare const META_ASYNC_WITH = "mcp:asyncWith";
|
|
3
|
+
export declare const META_ASYNC_WITH_TOKENS = "mcp:asyncWith:tokens";
|
|
4
|
+
/**
|
|
5
|
+
* @AsyncWith(optionalLazyTokens)
|
|
6
|
+
* - Marks a static with(...) as the factory for this provider.
|
|
7
|
+
* - If you pass a lazy resolver, we won't read design:paramtypes (ESM-TDZ safe).
|
|
8
|
+
*/
|
|
9
|
+
export declare function AsyncWith(tokens?: () => any[]): MethodDecorator;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.META_ASYNC_WITH_TOKENS = exports.META_ASYNC_WITH = void 0;
|
|
4
|
+
exports.AsyncWith = AsyncWith;
|
|
5
|
+
require("reflect-metadata");
|
|
6
|
+
exports.META_ASYNC_WITH = 'mcp:asyncWith';
|
|
7
|
+
exports.META_ASYNC_WITH_TOKENS = 'mcp:asyncWith:tokens';
|
|
8
|
+
/**
|
|
9
|
+
* @AsyncWith(optionalLazyTokens)
|
|
10
|
+
* - Marks a static with(...) as the factory for this provider.
|
|
11
|
+
* - If you pass a lazy resolver, we won't read design:paramtypes (ESM-TDZ safe).
|
|
12
|
+
*/
|
|
13
|
+
function AsyncWith(tokens) {
|
|
14
|
+
return (target, propertyKey, descriptor) => {
|
|
15
|
+
const ctor = target.constructor ?? target; // static method => target is ctor
|
|
16
|
+
Reflect.defineMetadata(exports.META_ASYNC_WITH, true, ctor);
|
|
17
|
+
if (typeof tokens === 'function') {
|
|
18
|
+
Reflect.defineMetadata(exports.META_ASYNC_WITH_TOKENS, tokens, ctor);
|
|
19
|
+
}
|
|
20
|
+
return descriptor;
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=async-with.decorator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"async-with.decorator.js","sourceRoot":"","sources":["../../../src/decorators-old/async-with.decorator.ts"],"names":[],"mappings":";;;AASA,8BASC;AAlBD,4BAA0B;AACb,QAAA,eAAe,GAAG,eAAe,CAAC;AAClC,QAAA,sBAAsB,GAAG,sBAAsB,CAAC;AAE7D;;;;GAIG;AACH,SAAgB,SAAS,CAAC,MAAoB;IAC5C,OAAO,CAAC,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,EAAE;QACzC,MAAM,IAAI,GAAI,MAAc,CAAC,WAAW,IAAI,MAAM,CAAC,CAAC,kCAAkC;QACtF,OAAO,CAAC,cAAc,CAAC,uBAAe,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QACpD,IAAI,OAAO,MAAM,KAAK,UAAU,EAAE,CAAC;YACjC,OAAO,CAAC,cAAc,CAAC,8BAAsB,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;QAC/D,CAAC;QACD,OAAO,UAAW,CAAC;IACrB,CAAC,CAAC;AACJ,CAAC","sourcesContent":["import 'reflect-metadata';\nexport const META_ASYNC_WITH = 'mcp:asyncWith';\nexport const META_ASYNC_WITH_TOKENS = 'mcp:asyncWith:tokens';\n\n/**\n * @AsyncWith(optionalLazyTokens)\n * - Marks a static with(...) as the factory for this provider.\n * - If you pass a lazy resolver, we won't read design:paramtypes (ESM-TDZ safe).\n */\nexport function AsyncWith(tokens?: () => any[]): MethodDecorator {\n return (target, propertyKey, descriptor) => {\n const ctor = (target as any).constructor ?? target; // static method => target is ctor\n Reflect.defineMetadata(META_ASYNC_WITH, true, ctor);\n if (typeof tokens === 'function') {\n Reflect.defineMetadata(META_ASYNC_WITH_TOKENS, tokens, ctor);\n }\n return descriptor!;\n };\n}"]}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import 'reflect-metadata';
|
|
2
|
+
import { AuthHookStage } from '../interfaces/auth-hook.interface';
|
|
3
|
+
export type AuthHookOptions = {
|
|
4
|
+
priority?: number;
|
|
5
|
+
/** Name of a filter method on same class (static or instance) */
|
|
6
|
+
filter?: string;
|
|
7
|
+
};
|
|
8
|
+
/**
|
|
9
|
+
* Decorator for declaring global Tool hooks on plugin classes.
|
|
10
|
+
* Usage:
|
|
11
|
+
* @AuthHook('willExchangeToken')
|
|
12
|
+
* static willExchangeToken(ctx: AuthInvokeContext) { ... }
|
|
13
|
+
*/
|
|
14
|
+
export declare function AuthHook(stage: AuthHookStage, opts?: AuthHookOptions): (target: any, propertyKey: string, _desc: PropertyDescriptor) => void;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AuthHook = AuthHook;
|
|
4
|
+
require("reflect-metadata");
|
|
5
|
+
const constants_1 = require("../constants");
|
|
6
|
+
/**
|
|
7
|
+
* Decorator for declaring global Tool hooks on plugin classes.
|
|
8
|
+
* Usage:
|
|
9
|
+
* @AuthHook('willExchangeToken')
|
|
10
|
+
* static willExchangeToken(ctx: AuthInvokeContext) { ... }
|
|
11
|
+
*/
|
|
12
|
+
function AuthHook(stage, opts) {
|
|
13
|
+
return function (target, propertyKey, _desc) {
|
|
14
|
+
const isStatic = typeof target === 'function'; // static methods receive constructor as target
|
|
15
|
+
const clazz = isStatic ? target : target.constructor;
|
|
16
|
+
const arr = Reflect.getOwnMetadata(constants_1.MCP_AUTH_HOOKS, clazz) ?? [];
|
|
17
|
+
arr.push({
|
|
18
|
+
stage,
|
|
19
|
+
methodName: propertyKey,
|
|
20
|
+
isStatic,
|
|
21
|
+
priority: opts?.priority,
|
|
22
|
+
filterKey: opts?.filter,
|
|
23
|
+
});
|
|
24
|
+
Reflect.defineMetadata(constants_1.MCP_AUTH_HOOKS, arr, clazz);
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=auth-hook.decorator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth-hook.decorator.js","sourceRoot":"","sources":["../../../src/decorators-old/auth-hook.decorator.ts"],"names":[],"mappings":";;AAgBA,4BAcC;AA9BD,4BAA0B;AAC1B,4CAA8C;AAS9C;;;;;GAKG;AACH,SAAgB,QAAQ,CAAC,KAAoB,EAAE,IAAsB;IACnE,OAAO,UAAU,MAAW,EAAE,WAAmB,EAAE,KAAyB;QAC1E,MAAM,QAAQ,GAAG,OAAO,MAAM,KAAK,UAAU,CAAC,CAAC,+CAA+C;QAC9F,MAAM,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC;QACrD,MAAM,GAAG,GAAU,OAAO,CAAC,cAAc,CAAC,0BAAc,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC;QACvE,GAAG,CAAC,IAAI,CAAC;YACP,KAAK;YACL,UAAU,EAAE,WAAW;YACvB,QAAQ;YACR,QAAQ,EAAE,IAAI,EAAE,QAAQ;YACxB,SAAS,EAAE,IAAI,EAAE,MAAM;SACxB,CAAC,CAAC;QACH,OAAO,CAAC,cAAc,CAAC,0BAAc,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;IACrD,CAAC,CAAC;AACJ,CAAC","sourcesContent":["import 'reflect-metadata';\nimport { MCP_AUTH_HOOKS } from '../constants';\nimport { AuthHookStage } from '../interfaces/auth-hook.interface';\n\nexport type AuthHookOptions = {\n priority?: number;\n /** Name of a filter method on same class (static or instance) */\n filter?: string;\n};\n\n/**\n * Decorator for declaring global Tool hooks on plugin classes.\n * Usage:\n * @AuthHook('willExchangeToken')\n * static willExchangeToken(ctx: AuthInvokeContext) { ... }\n */\nexport function AuthHook(stage: AuthHookStage, opts?: AuthHookOptions) {\n return function (target: any, propertyKey: string, _desc: PropertyDescriptor) {\n const isStatic = typeof target === 'function'; // static methods receive constructor as target\n const clazz = isStatic ? target : target.constructor;\n const arr: any[] = Reflect.getOwnMetadata(MCP_AUTH_HOOKS, clazz) ?? [];\n arr.push({\n stage,\n methodName: propertyKey,\n isStatic,\n priority: opts?.priority,\n filterKey: opts?.filter,\n });\n Reflect.defineMetadata(MCP_AUTH_HOOKS, arr, clazz);\n };\n}\n"]}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import 'reflect-metadata';
|
|
2
|
+
import { SessionHookStage } from '../interfaces/session-hook.interface';
|
|
3
|
+
export type SessionHookOptions = {
|
|
4
|
+
priority?: number;
|
|
5
|
+
/** Name of a filter method on same class (static or instance) */
|
|
6
|
+
filter?: string;
|
|
7
|
+
};
|
|
8
|
+
/**
|
|
9
|
+
* Decorator for declaring global Tool hooks on plugin classes.
|
|
10
|
+
* Usage:
|
|
11
|
+
* @SessionHook('willCreateSession')
|
|
12
|
+
* static willCreateSession(ctx: SessionInvokeContext) { ... }
|
|
13
|
+
*/
|
|
14
|
+
export declare function SessionHook(stage: SessionHookStage, opts?: SessionHookOptions): (target: any, propertyKey: string, _desc: PropertyDescriptor) => void;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SessionHook = SessionHook;
|
|
4
|
+
require("reflect-metadata");
|
|
5
|
+
const constants_1 = require("../constants");
|
|
6
|
+
/**
|
|
7
|
+
* Decorator for declaring global Tool hooks on plugin classes.
|
|
8
|
+
* Usage:
|
|
9
|
+
* @SessionHook('willCreateSession')
|
|
10
|
+
* static willCreateSession(ctx: SessionInvokeContext) { ... }
|
|
11
|
+
*/
|
|
12
|
+
function SessionHook(stage, opts) {
|
|
13
|
+
return function (target, propertyKey, _desc) {
|
|
14
|
+
const isStatic = typeof target === 'function'; // static methods receive constructor as target
|
|
15
|
+
const clazz = isStatic ? target : target.constructor;
|
|
16
|
+
const arr = Reflect.getOwnMetadata(constants_1.MCP_SESSION_HOOKS, clazz) ?? [];
|
|
17
|
+
arr.push({
|
|
18
|
+
stage,
|
|
19
|
+
methodName: propertyKey,
|
|
20
|
+
isStatic,
|
|
21
|
+
priority: opts?.priority,
|
|
22
|
+
filterKey: opts?.filter,
|
|
23
|
+
});
|
|
24
|
+
Reflect.defineMetadata(constants_1.MCP_SESSION_HOOKS, arr, clazz);
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=session-hook.decorator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-hook.decorator.js","sourceRoot":"","sources":["../../../src/decorators-old/session-hook.decorator.ts"],"names":[],"mappings":";;AAgBA,kCAcC;AA9BD,4BAA0B;AAC1B,4CAAiD;AASjD;;;;;GAKG;AACH,SAAgB,WAAW,CAAC,KAAuB,EAAE,IAAyB;IAC5E,OAAO,UAAU,MAAW,EAAE,WAAmB,EAAE,KAAyB;QAC1E,MAAM,QAAQ,GAAG,OAAO,MAAM,KAAK,UAAU,CAAC,CAAC,+CAA+C;QAC9F,MAAM,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC;QACrD,MAAM,GAAG,GAAU,OAAO,CAAC,cAAc,CAAC,6BAAiB,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC;QAC1E,GAAG,CAAC,IAAI,CAAC;YACP,KAAK;YACL,UAAU,EAAE,WAAW;YACvB,QAAQ;YACR,QAAQ,EAAE,IAAI,EAAE,QAAQ;YACxB,SAAS,EAAE,IAAI,EAAE,MAAM;SACxB,CAAC,CAAC;QACH,OAAO,CAAC,cAAc,CAAC,6BAAiB,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;IACxD,CAAC,CAAC;AACJ,CAAC","sourcesContent":["import 'reflect-metadata';\nimport { MCP_SESSION_HOOKS } from '../constants';\nimport { SessionHookStage } from '../interfaces/session-hook.interface';\n\nexport type SessionHookOptions = {\n priority?: number;\n /** Name of a filter method on same class (static or instance) */\n filter?: string;\n};\n\n/**\n * Decorator for declaring global Tool hooks on plugin classes.\n * Usage:\n * @SessionHook('willCreateSession')\n * static willCreateSession(ctx: SessionInvokeContext) { ... }\n */\nexport function SessionHook(stage: SessionHookStage, opts?: SessionHookOptions) {\n return function (target: any, propertyKey: string, _desc: PropertyDescriptor) {\n const isStatic = typeof target === 'function'; // static methods receive constructor as target\n const clazz = isStatic ? target : target.constructor;\n const arr: any[] = Reflect.getOwnMetadata(MCP_SESSION_HOOKS, clazz) ?? [];\n arr.push({\n stage,\n methodName: propertyKey,\n isStatic,\n priority: opts?.priority,\n filterKey: opts?.filter,\n });\n Reflect.defineMetadata(MCP_SESSION_HOOKS, arr, clazz);\n };\n}\n"]}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import 'reflect-metadata';
|
|
2
|
+
import { ToolHookStage } from '../interfaces/tool-hook.interface';
|
|
3
|
+
export type ToolHookOptions = {
|
|
4
|
+
priority?: number;
|
|
5
|
+
/** Name of a filter method on same class (static or instance) */
|
|
6
|
+
filter?: string;
|
|
7
|
+
};
|
|
8
|
+
/**
|
|
9
|
+
* Decorator for declaring global Tool hooks on plugin classes.
|
|
10
|
+
* Usage:
|
|
11
|
+
* @ToolHook('willReadCache')
|
|
12
|
+
* static willReadCache(ctx: ToolInvokeContext) { ... }
|
|
13
|
+
*/
|
|
14
|
+
export declare function ToolHook(stage: ToolHookStage, opts?: ToolHookOptions): (target: any, propertyKey: string, _desc: PropertyDescriptor) => void;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ToolHook = ToolHook;
|
|
4
|
+
require("reflect-metadata");
|
|
5
|
+
const constants_1 = require("../constants");
|
|
6
|
+
/**
|
|
7
|
+
* Decorator for declaring global Tool hooks on plugin classes.
|
|
8
|
+
* Usage:
|
|
9
|
+
* @ToolHook('willReadCache')
|
|
10
|
+
* static willReadCache(ctx: ToolInvokeContext) { ... }
|
|
11
|
+
*/
|
|
12
|
+
function ToolHook(stage, opts) {
|
|
13
|
+
return function (target, propertyKey, _desc) {
|
|
14
|
+
const isStatic = typeof target === 'function'; // static methods receive constructor as target
|
|
15
|
+
const clazz = isStatic ? target : target.constructor;
|
|
16
|
+
const arr = Reflect.getOwnMetadata(constants_1.MCP_TOOL_HOOKS, clazz) ?? [];
|
|
17
|
+
arr.push({
|
|
18
|
+
stage,
|
|
19
|
+
methodName: propertyKey,
|
|
20
|
+
isStatic,
|
|
21
|
+
priority: opts?.priority,
|
|
22
|
+
filterKey: opts?.filter,
|
|
23
|
+
});
|
|
24
|
+
Reflect.defineMetadata(constants_1.MCP_TOOL_HOOKS, arr, clazz);
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=tool-hook.decorator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-hook.decorator.js","sourceRoot":"","sources":["../../../src/decorators-old/tool-hook.decorator.ts"],"names":[],"mappings":";;AAgBA,4BAcC;AA9BD,4BAA0B;AAC1B,4CAA8C;AAS9C;;;;;GAKG;AACH,SAAgB,QAAQ,CAAC,KAAoB,EAAE,IAAsB;IACnE,OAAO,UAAU,MAAW,EAAE,WAAmB,EAAE,KAAyB;QAC1E,MAAM,QAAQ,GAAG,OAAO,MAAM,KAAK,UAAU,CAAC,CAAC,+CAA+C;QAC9F,MAAM,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC;QACrD,MAAM,GAAG,GAAU,OAAO,CAAC,cAAc,CAAC,0BAAc,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC;QACvE,GAAG,CAAC,IAAI,CAAC;YACP,KAAK;YACL,UAAU,EAAE,WAAW;YACvB,QAAQ;YACR,QAAQ,EAAE,IAAI,EAAE,QAAQ;YACxB,SAAS,EAAE,IAAI,EAAE,MAAM;SACxB,CAAC,CAAC;QACH,OAAO,CAAC,cAAc,CAAC,0BAAc,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;IACrD,CAAC,CAAC;AACJ,CAAC","sourcesContent":["import 'reflect-metadata';\nimport { MCP_TOOL_HOOKS } from '../constants';\nimport { ToolHookStage } from '../interfaces/tool-hook.interface';\n\nexport type ToolHookOptions = {\n priority?: number;\n /** Name of a filter method on same class (static or instance) */\n filter?: string;\n};\n\n/**\n * Decorator for declaring global Tool hooks on plugin classes.\n * Usage:\n * @ToolHook('willReadCache')\n * static willReadCache(ctx: ToolInvokeContext) { ... }\n */\nexport function ToolHook(stage: ToolHookStage, opts?: ToolHookOptions) {\n return function (target: any, propertyKey: string, _desc: PropertyDescriptor) {\n const isStatic = typeof target === 'function'; // static methods receive constructor as target\n const clazz = isStatic ? target : target.constructor;\n const arr: any[] = Reflect.getOwnMetadata(MCP_TOOL_HOOKS, clazz) ?? [];\n arr.push({\n stage,\n methodName: propertyKey,\n isStatic,\n priority: opts?.priority,\n filterKey: opts?.filter,\n });\n Reflect.defineMetadata(MCP_TOOL_HOOKS, arr, clazz);\n };\n}\n"]}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { Reference, FrontMcpAdapterResponse, AdapterType, AdapterInterface } from '../interfaces';
|
|
2
|
+
type InitOptions<T> = ((T & {
|
|
3
|
+
useFactory?: never;
|
|
4
|
+
inject?: never;
|
|
5
|
+
name: string;
|
|
6
|
+
})) | {
|
|
7
|
+
inject: () => readonly Reference<any>[];
|
|
8
|
+
useFactory: (...args: any[]) => T;
|
|
9
|
+
name: string;
|
|
10
|
+
};
|
|
11
|
+
type AdapterClassWithOptions<T> = {
|
|
12
|
+
new (...args: any[]): any;
|
|
13
|
+
prototype: {
|
|
14
|
+
__options_brand?: T;
|
|
15
|
+
};
|
|
16
|
+
};
|
|
17
|
+
type AdapterReturn<T> = AdapterType;
|
|
18
|
+
export declare abstract class DynamicAdapter<TOptions extends object> implements AdapterInterface {
|
|
19
|
+
abstract options: {
|
|
20
|
+
name: string;
|
|
21
|
+
} & TOptions;
|
|
22
|
+
/**
|
|
23
|
+
* Private property to ensure options are typed correctly.
|
|
24
|
+
*/
|
|
25
|
+
__options_brand: TOptions;
|
|
26
|
+
/**
|
|
27
|
+
* Static init() method to create a plugin provider.
|
|
28
|
+
* @param options
|
|
29
|
+
*/
|
|
30
|
+
static init<TThis extends AdapterClassWithOptions<any>>(this: TThis, options: InitOptions<TThis['prototype'] extends {
|
|
31
|
+
__options_brand?: infer O;
|
|
32
|
+
} ? O : never>): AdapterReturn<TThis['prototype'] extends {
|
|
33
|
+
__options_brand?: infer O;
|
|
34
|
+
} ? O : never>;
|
|
35
|
+
/**
|
|
36
|
+
* Abstract fetch method to be implemented by subclasses.
|
|
37
|
+
* @returns A promise resolving to any type the will be used
|
|
38
|
+
* to trnasform into tools, resources, prompts, etc.
|
|
39
|
+
*/
|
|
40
|
+
abstract fetch(): Promise<FrontMcpAdapterResponse> | FrontMcpAdapterResponse;
|
|
41
|
+
}
|
|
42
|
+
export {};
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DynamicAdapter = void 0;
|
|
4
|
+
class DynamicAdapter {
|
|
5
|
+
/**
|
|
6
|
+
* Static init() method to create a plugin provider.
|
|
7
|
+
* @param options
|
|
8
|
+
*/
|
|
9
|
+
static init(options) {
|
|
10
|
+
const typedOptions = options;
|
|
11
|
+
if ('useFactory' in options) {
|
|
12
|
+
const { inject, useFactory, ...rest } = typedOptions;
|
|
13
|
+
return {
|
|
14
|
+
provide: this,
|
|
15
|
+
inject: options.inject,
|
|
16
|
+
useFactory: options.useFactory,
|
|
17
|
+
...rest,
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
return {
|
|
21
|
+
...typedOptions,
|
|
22
|
+
provide: this,
|
|
23
|
+
useValue: new this(options),
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
exports.DynamicAdapter = DynamicAdapter;
|
|
28
|
+
//# sourceMappingURL=dynamic.adapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dynamic.adapter.js","sourceRoot":"","sources":["../../../src/dynamic/dynamic.adapter.ts"],"names":[],"mappings":";;;AA4BA,MAAsB,cAAc;IAOlC;;;OAGG;IACH,MAAM,CAAC,IAAI,CAET,OAA0F;QAE1F,MAAM,YAAY,GAAG,OAAc,CAAC;QAEpC,IAAI,YAAY,IAAI,OAAO,EAAE,CAAC;YAC5B,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,IAAI,EAAE,GAAG,YAAY,CAAC;YACrD,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,MAAM,EAAE,OAAO,CAAC,MAAgC;gBAChD,UAAU,EAAE,OAAO,CAAC,UAAiB;gBACrC,GAAG,IAAI;aACR,CAAC;QACJ,CAAC;QACD,OAAO;YACL,GAAG,YAAY;YACf,OAAO,EAAE,IAAI;YACb,QAAQ,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC;SAC5B,CAAC;IACJ,CAAC;CAQF;AAvCD,wCAuCC","sourcesContent":["// dynamic-adapter.ts\nimport {\n Reference,\n FrontMcpAdapterResponse,\n AdapterType,\n AdapterInterface,\n} from '../interfaces';\n\n// keep your original options union; just add optional `providers`\ntype InitOptions<T> =\n | ((T & {\n useFactory?: never;\n inject?: never;\n name: string;\n }))\n | {\n inject: () => readonly Reference<any>[];\n useFactory: (...args: any[]) => T;\n name: string;\n};\n\ntype AdapterClassWithOptions<T> = {\n new(...args: any[]): any;\n prototype: { __options_brand?: T };\n};\n\ntype AdapterReturn<T> = AdapterType\n\nexport abstract class DynamicAdapter<TOptions extends object> implements AdapterInterface {\n abstract options: {name:string} & TOptions\n /**\n * Private property to ensure options are typed correctly.\n */\n declare __options_brand: TOptions;\n\n /**\n * Static init() method to create a plugin provider.\n * @param options\n */\n static init<TThis extends AdapterClassWithOptions<any>>(\n this: TThis,\n options: InitOptions<TThis['prototype'] extends { __options_brand?: infer O } ? O : never>,\n ): AdapterReturn<TThis['prototype'] extends { __options_brand?: infer O } ? O : never> {\n const typedOptions = options as any;\n\n if ('useFactory' in options) {\n const { inject, useFactory, ...rest } = typedOptions;\n return {\n provide: this,\n inject: options.inject as () => Reference<any>[],\n useFactory: options.useFactory as any,\n ...rest,\n };\n }\n return {\n ...typedOptions,\n provide: this,\n useValue: new this(options),\n };\n }\n\n /**\n * Abstract fetch method to be implemented by subclasses.\n * @returns A promise resolving to any type the will be used\n * to trnasform into tools, resources, prompts, etc.\n */\n abstract fetch(): Promise<FrontMcpAdapterResponse> | FrontMcpAdapterResponse;\n}\n\n"]}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { Reference, PluginType, ProviderType } from '../interfaces';
|
|
2
|
+
type InitOptions<T> = ((T & {
|
|
3
|
+
useFactory?: never;
|
|
4
|
+
inject?: never;
|
|
5
|
+
}) & {
|
|
6
|
+
providers?: readonly ProviderType[];
|
|
7
|
+
}) | {
|
|
8
|
+
inject: () => readonly Reference<any>[];
|
|
9
|
+
useFactory: (...args: any[]) => T;
|
|
10
|
+
providers?: readonly ProviderType[];
|
|
11
|
+
};
|
|
12
|
+
type PluginClassWithOptions<T> = {
|
|
13
|
+
new (...args: any[]): any;
|
|
14
|
+
prototype: {
|
|
15
|
+
__options_brand?: T;
|
|
16
|
+
};
|
|
17
|
+
dynamicProviders?: (options: T) => readonly ProviderType[];
|
|
18
|
+
};
|
|
19
|
+
type ValueMcpPlugin<T> = {
|
|
20
|
+
provide: any;
|
|
21
|
+
useValue: T;
|
|
22
|
+
providers?: ProviderType[];
|
|
23
|
+
};
|
|
24
|
+
type FactoryMcpPlugin<T> = {
|
|
25
|
+
provide: any;
|
|
26
|
+
inject: () => readonly Reference<any>[];
|
|
27
|
+
useFactory: (...args: any[]) => T;
|
|
28
|
+
};
|
|
29
|
+
type PluginReturn<T> = (ValueMcpPlugin<T> | FactoryMcpPlugin<T>) & PluginType & {
|
|
30
|
+
providers?: readonly ProviderType[];
|
|
31
|
+
};
|
|
32
|
+
export declare abstract class DynamicPlugin<TOptions extends object> {
|
|
33
|
+
/**
|
|
34
|
+
* Private property to ensure options are typed correctly.
|
|
35
|
+
*/
|
|
36
|
+
__options_brand: TOptions;
|
|
37
|
+
/**
|
|
38
|
+
* Optional hook to contribute providers to the plugin.
|
|
39
|
+
* @param options
|
|
40
|
+
*/
|
|
41
|
+
static dynamicProviders?(options: any): readonly ProviderType[];
|
|
42
|
+
/**
|
|
43
|
+
* Static init() method to create a plugin provider.
|
|
44
|
+
* @param options
|
|
45
|
+
*/
|
|
46
|
+
static init<TThis extends PluginClassWithOptions<any>>(this: TThis, options: InitOptions<TThis['prototype'] extends {
|
|
47
|
+
__options_brand?: infer O;
|
|
48
|
+
} ? O : never>): PluginReturn<TThis['prototype'] extends {
|
|
49
|
+
__options_brand?: infer O;
|
|
50
|
+
} ? O : never>;
|
|
51
|
+
}
|
|
52
|
+
export {};
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DynamicPlugin = void 0;
|
|
4
|
+
const dynamic_utils_1 = require("./dynamic.utils");
|
|
5
|
+
class DynamicPlugin {
|
|
6
|
+
/**
|
|
7
|
+
* Static init() method to create a plugin provider.
|
|
8
|
+
* @param options
|
|
9
|
+
*/
|
|
10
|
+
static init(options) {
|
|
11
|
+
const extraProviders = options.providers;
|
|
12
|
+
const typedOptions = options;
|
|
13
|
+
if ('useFactory' in options) {
|
|
14
|
+
return {
|
|
15
|
+
...typedOptions,
|
|
16
|
+
provide: this,
|
|
17
|
+
inject: options.inject,
|
|
18
|
+
useFactory: options.useFactory,
|
|
19
|
+
providers: (0, dynamic_utils_1.dedupePluginProviders)(extraProviders ?? []),
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
const dyn = (0, dynamic_utils_1.collectDynamicProviders)(this, typedOptions);
|
|
23
|
+
const mergedProviders = (0, dynamic_utils_1.dedupePluginProviders)([...(dyn ?? []), ...(extraProviders ?? [])]);
|
|
24
|
+
return {
|
|
25
|
+
...typedOptions,
|
|
26
|
+
provide: this,
|
|
27
|
+
useValue: new this(options),
|
|
28
|
+
providers: mergedProviders,
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
exports.DynamicPlugin = DynamicPlugin;
|
|
33
|
+
//# sourceMappingURL=dynamic.plugin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dynamic.plugin.js","sourceRoot":"","sources":["../../../src/dynamic/dynamic.plugin.ts"],"names":[],"mappings":";;;AAEA,mDAAiF;AA0BjF,MAAsB,aAAa;IAYjC;;;OAGG;IACH,MAAM,CAAC,IAAI,CAET,OAA0F;QAE1F,MAAM,cAAc,GAAI,OAAe,CAAC,SAAgD,CAAC;QACzF,MAAM,YAAY,GAAG,OAAc,CAAC;QAEpC,IAAI,YAAY,IAAI,OAAO,EAAE,CAAC;YAC5B,OAAO;gBACL,GAAG,YAAY;gBACf,OAAO,EAAE,IAAI;gBACb,MAAM,EAAE,OAAO,CAAC,MAAgC;gBAChD,UAAU,EAAE,OAAO,CAAC,UAAiB;gBACrC,SAAS,EAAE,IAAA,qCAAqB,EAAC,cAAc,IAAI,EAAE,CAAC;aAEvD,CAAC;QACJ,CAAC;QAED,MAAM,GAAG,GAAG,IAAA,uCAAuB,EAAC,IAAI,EAAE,YAAY,CAAC,CAAC;QACxD,MAAM,eAAe,GAAG,IAAA,qCAAqB,EAAC,CAAC,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,cAAc,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC3F,OAAO;YACL,GAAG,YAAY;YACf,OAAO,EAAE,IAAI;YACb,QAAQ,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC;YAC3B,SAAS,EAAE,eAAe;SAC3B,CAAC;IACJ,CAAC;CACF;AA3CD,sCA2CC","sourcesContent":["// dynamic-plugin.ts\nimport { Reference, PluginType, ProviderType } from '../interfaces';\nimport { collectDynamicProviders, dedupePluginProviders } from './dynamic.utils';\n\n// keep your original options union; just add optional `providers`\ntype InitOptions<T> =\n | ((T & { useFactory?: never; inject?: never }) & { providers?: readonly ProviderType[] })\n | {\n inject: () => readonly Reference<any>[];\n useFactory: (...args: any[]) => T;\n providers?: readonly ProviderType[];\n};\n\ntype PluginClassWithOptions<T> = {\n new(...args: any[]): any;\n prototype: { __options_brand?: T };\n // optional hook contributed by plugin authors\n dynamicProviders?: (options: T) => readonly ProviderType[];\n};\n\ntype ValueMcpPlugin<T> = { provide: any; useValue: T; providers?: ProviderType[] };\ntype FactoryMcpPlugin<T> = { provide: any; inject: () => readonly Reference<any>[]; useFactory: (...args: any[]) => T };\n\ntype PluginReturn<T> = (ValueMcpPlugin<T> | FactoryMcpPlugin<T>) &\n PluginType & {\n providers?: readonly ProviderType[];\n};\n\nexport abstract class DynamicPlugin<TOptions extends object> {\n /**\n * Private property to ensure options are typed correctly.\n */\n declare __options_brand: TOptions;\n\n /**\n * Optional hook to contribute providers to the plugin.\n * @param options\n */\n static dynamicProviders?(options: any): readonly ProviderType[];\n\n /**\n * Static init() method to create a plugin provider.\n * @param options\n */\n static init<TThis extends PluginClassWithOptions<any>>(\n this: TThis,\n options: InitOptions<TThis['prototype'] extends { __options_brand?: infer O } ? O : never>,\n ): PluginReturn<TThis['prototype'] extends { __options_brand?: infer O } ? O : never> {\n const extraProviders = (options as any).providers as readonly ProviderType[] | undefined;\n const typedOptions = options as any;\n\n if ('useFactory' in options) {\n return {\n ...typedOptions,\n provide: this,\n inject: options.inject as () => Reference<any>[],\n useFactory: options.useFactory as any,\n providers: dedupePluginProviders(extraProviders ?? []),\n\n };\n }\n\n const dyn = collectDynamicProviders(this, typedOptions);\n const mergedProviders = dedupePluginProviders([...(dyn ?? []), ...(extraProviders ?? [])]);\n return {\n ...typedOptions,\n provide: this,\n useValue: new this(options),\n providers: mergedProviders,\n };\n }\n}"]}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.collectDynamicProviders = collectDynamicProviders;
|
|
4
|
+
exports.dedupePluginProviders = dedupePluginProviders;
|
|
5
|
+
function collectDynamicProviders(klass, options) {
|
|
6
|
+
// walk the prototype chain so parent plugins can contribute
|
|
7
|
+
const chain = [];
|
|
8
|
+
for (let k = klass; k && k !== Function.prototype; k = Object.getPrototypeOf(k)) {
|
|
9
|
+
chain.push(k);
|
|
10
|
+
}
|
|
11
|
+
// parent-first; child can override tokens later
|
|
12
|
+
const out = [];
|
|
13
|
+
for (let i = chain.length - 1; i >= 0; i--) {
|
|
14
|
+
const k = chain[i];
|
|
15
|
+
if (typeof k.dynamicProviders === 'function') {
|
|
16
|
+
out.push(...(k.dynamicProviders(options) ?? []));
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
return out;
|
|
20
|
+
}
|
|
21
|
+
function dedupePluginProviders(providers) {
|
|
22
|
+
const map = new Map();
|
|
23
|
+
for (const p of providers)
|
|
24
|
+
map.set(p['provide'] ?? p, p); // class-as-token fallback
|
|
25
|
+
return [...map.values()];
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=dynamic.utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dynamic.utils.js","sourceRoot":"","sources":["../../../src/dynamic/dynamic.utils.ts"],"names":[],"mappings":";;AAEA,0DAeC;AAED,sDAIC;AArBD,SAAgB,uBAAuB,CAAI,KAAU,EAAE,OAAU;IAC/D,4DAA4D;IAC5D,MAAM,KAAK,GAAU,EAAE,CAAC;IACxB,KAAK,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,QAAQ,CAAC,SAAS,EAAE,CAAC,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC;QAChF,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAChB,CAAC;IACD,gDAAgD;IAChD,MAAM,GAAG,GAAmB,EAAE,CAAC;IAC/B,KAAK,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3C,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACnB,IAAI,OAAO,CAAC,CAAC,gBAAgB,KAAK,UAAU,EAAE,CAAC;YAC7C,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,gBAAgB,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QACnD,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAgB,qBAAqB,CAAC,SAAkC;IACtE,MAAM,GAAG,GAAG,IAAI,GAAG,EAAqB,CAAC;IACzC,KAAK,MAAM,CAAC,IAAI,SAAS;QAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAQ,CAAC,CAAC,CAAC,0BAA0B;IAC3F,OAAO,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;AAC3B,CAAC","sourcesContent":["import { ProviderType } from '@frontmcp/sdk';\n\nexport function collectDynamicProviders<T>(klass: any, options: T): ProviderType[] {\n // walk the prototype chain so parent plugins can contribute\n const chain: any[] = [];\n for (let k = klass; k && k !== Function.prototype; k = Object.getPrototypeOf(k)) {\n chain.push(k);\n }\n // parent-first; child can override tokens later\n const out: ProviderType[] = [];\n for (let i = chain.length - 1; i >= 0; i--) {\n const k = chain[i];\n if (typeof k.dynamicProviders === 'function') {\n out.push(...(k.dynamicProviders(options) ?? []));\n }\n }\n return out;\n}\n\nexport function dedupePluginProviders(providers: readonly ProviderType[]): ProviderType[] {\n const map = new Map<any, ProviderType>();\n for (const p of providers) map.set(p['provide'] ?? p, p as any); // class-as-token fallback\n return [...map.values()];\n}\n"]}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const tslib_1 = require("tslib");
|
|
4
|
+
tslib_1.__exportStar(require("./dynamic.adapter"), exports);
|
|
5
|
+
tslib_1.__exportStar(require("./dynamic.plugin"), exports);
|
|
6
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/dynamic/index.ts"],"names":[],"mappings":";;;AAAA,4DAAkC;AAClC,2DAAiC","sourcesContent":["export * from './dynamic.adapter';\nexport * from './dynamic.plugin';"]}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { BaseEntry } from './base.entry';
|
|
2
|
+
import { AdapterRecord } from '../records';
|
|
3
|
+
import { AdapterInterface } from '../interfaces';
|
|
4
|
+
import { AdapterMetadata } from '../metadata';
|
|
5
|
+
export declare abstract class AdapterEntry extends BaseEntry<AdapterRecord, AdapterInterface, AdapterMetadata> {
|
|
6
|
+
}
|