nitrostack 1.0.72 → 1.0.74
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/dist/auth/__tests__/api-key.test.d.ts +2 -0
- package/dist/auth/__tests__/api-key.test.d.ts.map +1 -0
- package/dist/auth/__tests__/api-key.test.js +136 -0
- package/dist/auth/__tests__/api-key.test.js.map +1 -0
- package/dist/auth/__tests__/middleware.test.d.ts +2 -0
- package/dist/auth/__tests__/middleware.test.d.ts.map +1 -0
- package/dist/auth/__tests__/middleware.test.js +186 -0
- package/dist/auth/__tests__/middleware.test.js.map +1 -0
- package/dist/auth/__tests__/pkce.test.d.ts +2 -0
- package/dist/auth/__tests__/pkce.test.d.ts.map +1 -0
- package/dist/auth/__tests__/pkce.test.js +61 -0
- package/dist/auth/__tests__/pkce.test.js.map +1 -0
- package/dist/auth/__tests__/secure-secret.test.d.ts +2 -0
- package/dist/auth/__tests__/secure-secret.test.d.ts.map +1 -0
- package/dist/auth/__tests__/secure-secret.test.js +42 -0
- package/dist/auth/__tests__/secure-secret.test.js.map +1 -0
- package/dist/auth/__tests__/simple-jwt.test.d.ts +2 -0
- package/dist/auth/__tests__/simple-jwt.test.d.ts.map +1 -0
- package/dist/auth/__tests__/simple-jwt.test.js +68 -0
- package/dist/auth/__tests__/simple-jwt.test.js.map +1 -0
- package/dist/auth/__tests__/token-store.test.d.ts +2 -0
- package/dist/auth/__tests__/token-store.test.d.ts.map +1 -0
- package/dist/auth/__tests__/token-store.test.js +79 -0
- package/dist/auth/__tests__/token-store.test.js.map +1 -0
- package/dist/auth/__tests__/token-validation.test.d.ts +2 -0
- package/dist/auth/__tests__/token-validation.test.d.ts.map +1 -0
- package/dist/auth/__tests__/token-validation.test.js +23 -0
- package/dist/auth/__tests__/token-validation.test.js.map +1 -0
- package/dist/auth/api-key.js.map +1 -1
- package/dist/auth/client.js.map +1 -1
- package/dist/auth/index.d.ts +2 -1
- package/dist/auth/index.d.ts.map +1 -1
- package/dist/auth/index.js +3 -0
- package/dist/auth/index.js.map +1 -1
- package/dist/auth/middleware.d.ts +1 -1
- package/dist/auth/middleware.d.ts.map +1 -1
- package/dist/auth/middleware.js.map +1 -1
- package/dist/auth/secure-secret.d.ts +136 -0
- package/dist/auth/secure-secret.d.ts.map +1 -0
- package/dist/auth/secure-secret.js +182 -0
- package/dist/auth/secure-secret.js.map +1 -0
- package/dist/auth/server-metadata.d.ts.map +1 -1
- package/dist/auth/server-metadata.js.map +1 -1
- package/dist/auth/simple-jwt.d.ts +100 -14
- package/dist/auth/simple-jwt.d.ts.map +1 -1
- package/dist/auth/simple-jwt.js +19 -9
- package/dist/auth/simple-jwt.js.map +1 -1
- package/dist/auth/token-store.js +1 -1
- package/dist/auth/token-store.js.map +1 -1
- package/dist/auth/token-validation.js +1 -1
- package/dist/auth/token-validation.js.map +1 -1
- package/dist/cli/__tests__/cli-dev.test.d.ts +2 -0
- package/dist/cli/__tests__/cli-dev.test.d.ts.map +1 -0
- package/dist/cli/__tests__/cli-dev.test.js +83 -0
- package/dist/cli/__tests__/cli-dev.test.js.map +1 -0
- package/dist/cli/__tests__/cli-start.test.d.ts +2 -0
- package/dist/cli/__tests__/cli-start.test.d.ts.map +1 -0
- package/dist/cli/__tests__/cli-start.test.js +61 -0
- package/dist/cli/__tests__/cli-start.test.js.map +1 -0
- package/dist/cli/__tests__/cli.test.d.ts +2 -0
- package/dist/cli/__tests__/cli.test.d.ts.map +1 -0
- package/dist/cli/__tests__/cli.test.js +73 -0
- package/dist/cli/__tests__/cli.test.js.map +1 -0
- package/dist/cli/__tests__/commands.test.d.ts +2 -0
- package/dist/cli/__tests__/commands.test.d.ts.map +1 -0
- package/dist/cli/__tests__/commands.test.js +64 -0
- package/dist/cli/__tests__/commands.test.js.map +1 -0
- package/dist/cli/commands/build.js +1 -1
- package/dist/cli/commands/build.js.map +1 -1
- package/dist/cli/commands/generate-types.js +12 -12
- package/dist/cli/commands/generate-types.js.map +1 -1
- package/dist/cli/commands/generate.d.ts +8 -1
- package/dist/cli/commands/generate.d.ts.map +1 -1
- package/dist/cli/commands/generate.js +13 -12
- package/dist/cli/commands/generate.js.map +1 -1
- package/dist/cli/commands/init.js +1 -1
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/upgrade.d.ts +10 -0
- package/dist/cli/commands/upgrade.d.ts.map +1 -0
- package/dist/cli/commands/upgrade.js +221 -0
- package/dist/cli/commands/upgrade.js.map +1 -0
- package/dist/cli/index.d.ts +2 -1
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +69 -39
- package/dist/cli/index.js.map +1 -1
- package/dist/core/__tests__/core-modules.test.d.ts +2 -0
- package/dist/core/__tests__/core-modules.test.d.ts.map +1 -0
- package/dist/core/__tests__/core-modules.test.js +36 -0
- package/dist/core/__tests__/core-modules.test.js.map +1 -0
- package/dist/core/__tests__/models.test.d.ts +2 -0
- package/dist/core/__tests__/models.test.d.ts.map +1 -0
- package/dist/core/__tests__/models.test.js +142 -0
- package/dist/core/__tests__/models.test.js.map +1 -0
- package/dist/core/__tests__/module.test.d.ts +2 -0
- package/dist/core/__tests__/module.test.d.ts.map +1 -0
- package/dist/core/__tests__/module.test.js +60 -0
- package/dist/core/__tests__/module.test.js.map +1 -0
- package/dist/core/__tests__/server.test.d.ts +2 -0
- package/dist/core/__tests__/server.test.d.ts.map +1 -0
- package/dist/core/__tests__/server.test.js +120 -0
- package/dist/core/__tests__/server.test.js.map +1 -0
- package/dist/core/__tests__/transports.test.d.ts +2 -0
- package/dist/core/__tests__/transports.test.d.ts.map +1 -0
- package/dist/core/__tests__/transports.test.js +12 -0
- package/dist/core/__tests__/transports.test.js.map +1 -0
- package/dist/core/app-decorator.d.ts +4 -3
- package/dist/core/app-decorator.d.ts.map +1 -1
- package/dist/core/app-decorator.js +67 -28
- package/dist/core/app-decorator.js.map +1 -1
- package/dist/core/builders.d.ts +19 -7
- package/dist/core/builders.d.ts.map +1 -1
- package/dist/core/builders.js +15 -8
- package/dist/core/builders.js.map +1 -1
- package/dist/core/component.d.ts +8 -8
- package/dist/core/component.d.ts.map +1 -1
- package/dist/core/component.js +3 -2
- package/dist/core/component.js.map +1 -1
- package/dist/core/config-module.d.ts +11 -4
- package/dist/core/config-module.d.ts.map +1 -1
- package/dist/core/config-module.js +1 -1
- package/dist/core/config-module.js.map +1 -1
- package/dist/core/decorators/__tests__/decorators.test.d.ts +2 -0
- package/dist/core/decorators/__tests__/decorators.test.d.ts.map +1 -0
- package/dist/core/decorators/__tests__/decorators.test.js +103 -0
- package/dist/core/decorators/__tests__/decorators.test.js.map +1 -0
- package/dist/core/decorators/__tests__/extended-decorators.test.d.ts +2 -0
- package/dist/core/decorators/__tests__/extended-decorators.test.d.ts.map +1 -0
- package/dist/core/decorators/__tests__/extended-decorators.test.js +194 -0
- package/dist/core/decorators/__tests__/extended-decorators.test.js.map +1 -0
- package/dist/core/decorators/cache.decorator.d.ts +9 -9
- package/dist/core/decorators/cache.decorator.d.ts.map +1 -1
- package/dist/core/decorators/cache.decorator.js +3 -3
- package/dist/core/decorators/cache.decorator.js.map +1 -1
- package/dist/core/decorators/health-check.decorator.d.ts +3 -3
- package/dist/core/decorators/health-check.decorator.d.ts.map +1 -1
- package/dist/core/decorators/health-check.decorator.js +2 -2
- package/dist/core/decorators/health-check.decorator.js.map +1 -1
- package/dist/core/decorators/rate-limit.decorator.d.ts +5 -4
- package/dist/core/decorators/rate-limit.decorator.d.ts.map +1 -1
- package/dist/core/decorators/rate-limit.decorator.js +3 -3
- package/dist/core/decorators/rate-limit.decorator.js.map +1 -1
- package/dist/core/decorators.d.ts +47 -29
- package/dist/core/decorators.d.ts.map +1 -1
- package/dist/core/decorators.js +9 -9
- package/dist/core/decorators.js.map +1 -1
- package/dist/core/di/__tests__/container.test.d.ts +2 -0
- package/dist/core/di/__tests__/container.test.d.ts.map +1 -0
- package/dist/core/di/__tests__/container.test.js +88 -0
- package/dist/core/di/__tests__/container.test.js.map +1 -0
- package/dist/core/di/container.d.ts +21 -4
- package/dist/core/di/container.d.ts.map +1 -1
- package/dist/core/di/container.js +11 -7
- package/dist/core/di/container.js.map +1 -1
- package/dist/core/di/injectable.decorator.d.ts +5 -3
- package/dist/core/di/injectable.decorator.d.ts.map +1 -1
- package/dist/core/di/injectable.decorator.js.map +1 -1
- package/dist/core/errors.d.ts +4 -4
- package/dist/core/errors.d.ts.map +1 -1
- package/dist/core/errors.js.map +1 -1
- package/dist/core/events/__tests__/events.test.d.ts +2 -0
- package/dist/core/events/__tests__/events.test.d.ts.map +1 -0
- package/dist/core/events/__tests__/events.test.js +177 -0
- package/dist/core/events/__tests__/events.test.js.map +1 -0
- package/dist/core/events/event-emitter.d.ts +3 -3
- package/dist/core/events/event-emitter.d.ts.map +1 -1
- package/dist/core/events/event-emitter.js.map +1 -1
- package/dist/core/events/event.decorator.d.ts +5 -5
- package/dist/core/events/event.decorator.d.ts.map +1 -1
- package/dist/core/events/event.decorator.js +10 -6
- package/dist/core/events/event.decorator.js.map +1 -1
- package/dist/core/events/log-emitter.d.ts +7 -1
- package/dist/core/events/log-emitter.d.ts.map +1 -1
- package/dist/core/events/log-emitter.js.map +1 -1
- package/dist/core/filters/__tests__/filters.test.d.ts +2 -0
- package/dist/core/filters/__tests__/filters.test.d.ts.map +1 -0
- package/dist/core/filters/__tests__/filters.test.js +72 -0
- package/dist/core/filters/__tests__/filters.test.js.map +1 -0
- package/dist/core/filters/exception-filter.decorator.d.ts +5 -5
- package/dist/core/filters/exception-filter.decorator.d.ts.map +1 -1
- package/dist/core/filters/exception-filter.decorator.js +3 -3
- package/dist/core/filters/exception-filter.decorator.js.map +1 -1
- package/dist/core/filters/exception-filter.interface.d.ts +14 -5
- package/dist/core/filters/exception-filter.interface.d.ts.map +1 -1
- package/dist/core/guards/__tests__/guards.test.d.ts +2 -0
- package/dist/core/guards/__tests__/guards.test.d.ts.map +1 -0
- package/dist/core/guards/__tests__/guards.test.js +55 -0
- package/dist/core/guards/__tests__/guards.test.js.map +1 -0
- package/dist/core/guards/apikey.guard.d.ts +1 -1
- package/dist/core/guards/apikey.guard.d.ts.map +1 -1
- package/dist/core/guards/guard.interface.d.ts +1 -1
- package/dist/core/guards/guard.interface.d.ts.map +1 -1
- package/dist/core/guards/jwt.guard.d.ts +1 -1
- package/dist/core/guards/jwt.guard.d.ts.map +1 -1
- package/dist/core/guards/oauth.guard.d.ts +1 -1
- package/dist/core/guards/oauth.guard.d.ts.map +1 -1
- package/dist/core/guards/use-guards.decorator.d.ts +3 -3
- package/dist/core/guards/use-guards.decorator.d.ts.map +1 -1
- package/dist/core/guards/use-guards.decorator.js +1 -1
- package/dist/core/guards/use-guards.decorator.js.map +1 -1
- package/dist/core/health/__tests__/health.test.d.ts +2 -0
- package/dist/core/health/__tests__/health.test.d.ts.map +1 -0
- package/dist/core/health/__tests__/health.test.js +31 -0
- package/dist/core/health/__tests__/health.test.js.map +1 -0
- package/dist/core/index.d.ts +2 -2
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js.map +1 -1
- package/dist/core/interceptors/__tests__/interceptors.test.d.ts +2 -0
- package/dist/core/interceptors/__tests__/interceptors.test.d.ts.map +1 -0
- package/dist/core/interceptors/__tests__/interceptors.test.js +52 -0
- package/dist/core/interceptors/__tests__/interceptors.test.js.map +1 -0
- package/dist/core/interceptors/interceptor.decorator.d.ts +4 -4
- package/dist/core/interceptors/interceptor.decorator.d.ts.map +1 -1
- package/dist/core/interceptors/interceptor.decorator.js +2 -2
- package/dist/core/interceptors/interceptor.decorator.js.map +1 -1
- package/dist/core/interceptors/interceptor.interface.d.ts +3 -3
- package/dist/core/interceptors/interceptor.interface.d.ts.map +1 -1
- package/dist/core/logger.d.ts.map +1 -1
- package/dist/core/logger.js.map +1 -1
- package/dist/core/middleware/__tests__/middleware.test.d.ts +2 -0
- package/dist/core/middleware/__tests__/middleware.test.d.ts.map +1 -0
- package/dist/core/middleware/__tests__/middleware.test.js +105 -0
- package/dist/core/middleware/__tests__/middleware.test.js.map +1 -0
- package/dist/core/middleware/middleware.decorator.d.ts +4 -4
- package/dist/core/middleware/middleware.decorator.d.ts.map +1 -1
- package/dist/core/middleware/middleware.decorator.js +2 -2
- package/dist/core/middleware/middleware.decorator.js.map +1 -1
- package/dist/core/middleware/middleware.interface.d.ts +3 -3
- package/dist/core/middleware/middleware.interface.d.ts.map +1 -1
- package/dist/core/module.d.ts +33 -14
- package/dist/core/module.d.ts.map +1 -1
- package/dist/core/module.js +11 -6
- package/dist/core/module.js.map +1 -1
- package/dist/core/oauth-module.d.ts +9 -3
- package/dist/core/oauth-module.d.ts.map +1 -1
- package/dist/core/oauth-module.js +4 -3
- package/dist/core/oauth-module.js.map +1 -1
- package/dist/core/pipes/__tests__/pipes.test.d.ts +2 -0
- package/dist/core/pipes/__tests__/pipes.test.d.ts.map +1 -0
- package/dist/core/pipes/__tests__/pipes.test.js +52 -0
- package/dist/core/pipes/__tests__/pipes.test.js.map +1 -0
- package/dist/core/pipes/pipe.decorator.d.ts +14 -5
- package/dist/core/pipes/pipe.decorator.d.ts.map +1 -1
- package/dist/core/pipes/pipe.decorator.js +2 -2
- package/dist/core/pipes/pipe.decorator.js.map +1 -1
- package/dist/core/pipes/pipe.interface.d.ts +9 -4
- package/dist/core/pipes/pipe.interface.d.ts.map +1 -1
- package/dist/core/prompt.d.ts +13 -4
- package/dist/core/prompt.d.ts.map +1 -1
- package/dist/core/prompt.js +2 -2
- package/dist/core/prompt.js.map +1 -1
- package/dist/core/resource.d.ts +7 -2
- package/dist/core/resource.d.ts.map +1 -1
- package/dist/core/resource.js +2 -2
- package/dist/core/resource.js.map +1 -1
- package/dist/core/server.d.ts +49 -3
- package/dist/core/server.d.ts.map +1 -1
- package/dist/core/server.js +61 -34
- package/dist/core/server.js.map +1 -1
- package/dist/core/tool.d.ts +44 -16
- package/dist/core/tool.d.ts.map +1 -1
- package/dist/core/tool.js +19 -6
- package/dist/core/tool.js.map +1 -1
- package/dist/core/transports/__tests__/transports.test.d.ts +2 -0
- package/dist/core/transports/__tests__/transports.test.d.ts.map +1 -0
- package/dist/core/transports/__tests__/transports.test.js +249 -0
- package/dist/core/transports/__tests__/transports.test.js.map +1 -0
- package/dist/core/transports/discovery-http-server.d.ts +7 -1
- package/dist/core/transports/discovery-http-server.d.ts.map +1 -1
- package/dist/core/transports/discovery-http-server.js.map +1 -1
- package/dist/core/transports/http-server.d.ts +2 -2
- package/dist/core/transports/http-server.d.ts.map +1 -1
- package/dist/core/transports/http-server.js +1 -1
- package/dist/core/transports/http-server.js.map +1 -1
- package/dist/core/transports/streamable-http.d.ts +4 -4
- package/dist/core/transports/streamable-http.d.ts.map +1 -1
- package/dist/core/transports/streamable-http.js +1 -1
- package/dist/core/transports/streamable-http.js.map +1 -1
- package/dist/core/types.d.ts +87 -15
- package/dist/core/types.d.ts.map +1 -1
- package/dist/core/widgets/__tests__/registry.test.d.ts +2 -0
- package/dist/core/widgets/__tests__/registry.test.d.ts.map +1 -0
- package/dist/core/widgets/__tests__/registry.test.js +69 -0
- package/dist/core/widgets/__tests__/registry.test.js.map +1 -0
- package/dist/core/widgets/widget-registry.d.ts +2 -2
- package/dist/core/widgets/widget-registry.d.ts.map +1 -1
- package/dist/core/widgets/widget-registry.js +1 -1
- package/dist/core/widgets/widget-registry.js.map +1 -1
- package/dist/testing/__tests__/testing.test.d.ts +2 -0
- package/dist/testing/__tests__/testing.test.d.ts.map +1 -0
- package/dist/testing/__tests__/testing.test.js +167 -0
- package/dist/testing/__tests__/testing.test.js.map +1 -0
- package/dist/testing/index.d.ts +40 -19
- package/dist/testing/index.d.ts.map +1 -1
- package/dist/testing/index.js +5 -8
- package/dist/testing/index.js.map +1 -1
- package/dist/ui-next/__tests__/ui-next.test.d.ts +2 -0
- package/dist/ui-next/__tests__/ui-next.test.d.ts.map +1 -0
- package/dist/ui-next/__tests__/ui-next.test.js +74 -0
- package/dist/ui-next/__tests__/ui-next.test.js.map +1 -0
- package/dist/ui-next/index.d.ts +1 -1
- package/dist/ui-next/index.d.ts.map +1 -1
- package/dist/ui-next/index.js.map +1 -1
- package/dist/widgets/__tests__/utils.test.d.ts +2 -0
- package/dist/widgets/__tests__/utils.test.d.ts.map +1 -0
- package/dist/widgets/__tests__/utils.test.js +80 -0
- package/dist/widgets/__tests__/utils.test.js.map +1 -0
- package/dist/widgets/__tests__/widgets.test.d.ts +2 -0
- package/dist/widgets/__tests__/widgets.test.d.ts.map +1 -0
- package/dist/widgets/__tests__/widgets.test.js +245 -0
- package/dist/widgets/__tests__/widgets.test.js.map +1 -0
- package/dist/widgets/hooks/useWidgetSDK.d.ts +5 -5
- package/dist/widgets/runtime/WidgetLayout.js.map +1 -1
- package/dist/widgets/sdk.d.ts +5 -5
- package/dist/widgets/sdk.d.ts.map +1 -1
- package/dist/widgets/sdk.js.map +1 -1
- package/package.json +1 -1
- package/src/studio/app/api/auth/fetch-metadata/route.ts +3 -2
- package/src/studio/app/api/auth/register-client/route.ts +3 -2
- package/src/studio/app/api/chat/route.ts +31 -17
- package/src/studio/app/api/health/checks/route.ts +5 -4
- package/src/studio/app/api/init/route.ts +3 -2
- package/src/studio/app/api/ping/route.ts +3 -2
- package/src/studio/app/api/prompts/[name]/route.ts +4 -3
- package/src/studio/app/api/prompts/route.ts +3 -2
- package/src/studio/app/api/resources/[...uri]/route.ts +3 -2
- package/src/studio/app/api/resources/route.ts +3 -2
- package/src/studio/app/api/roots/route.ts +3 -2
- package/src/studio/app/api/sampling/route.ts +3 -2
- package/src/studio/app/api/tools/[name]/call/route.ts +3 -2
- package/src/studio/app/api/tools/route.ts +4 -3
- package/src/studio/app/api/widget-examples/route.ts +5 -4
- package/src/studio/app/auth/callback/page.tsx +3 -2
- package/src/studio/app/chat/page.tsx +481 -105
- package/src/studio/app/health/page.tsx +1 -1
- package/src/studio/app/logs/page.tsx +2 -2
- package/src/studio/app/page.tsx +5 -5
- package/src/studio/app/prompts/page.tsx +2 -2
- package/src/studio/app/settings/page.tsx +3 -2
- package/src/studio/app/tools/page.tsx +3 -3
- package/src/studio/components/LogMessage.tsx +1 -1
- package/src/studio/components/MarkdownRenderer.tsx +245 -348
- package/src/studio/components/Sidebar.tsx +18 -3
- package/src/studio/components/VoiceOrbOverlay.tsx +12 -6
- package/src/studio/components/WidgetErrorBoundary.tsx +49 -0
- package/src/studio/components/WidgetRenderer.tsx +168 -215
- package/src/studio/components/ops/OpsCanvas.tsx +748 -0
- package/src/studio/components/ops/OpsNodeDetailPanel.tsx +150 -0
- package/src/studio/components/ops/OpsSummaryBar.tsx +90 -0
- package/src/studio/components/ops/index.ts +6 -0
- package/src/studio/components/ops/nodes/BaseNode.tsx +65 -0
- package/src/studio/components/ops/nodes/LLMCallNode.tsx +34 -0
- package/src/studio/components/ops/nodes/LLMResponseNode.tsx +33 -0
- package/src/studio/components/ops/nodes/ToolCallNode.tsx +30 -0
- package/src/studio/components/ops/nodes/ToolResultNode.tsx +43 -0
- package/src/studio/components/ops/nodes/UserPromptNode.tsx +34 -0
- package/src/studio/components/ops/nodes/WidgetRenderNode.tsx +23 -0
- package/src/studio/components/ops/nodes/index.ts +9 -0
- package/src/studio/components/tools/ToolsCanvas.tsx +2 -2
- package/src/studio/lib/api.ts +61 -42
- package/src/studio/lib/http-client-transport.ts +2 -2
- package/src/studio/lib/llm-service.ts +126 -47
- package/src/studio/lib/mcp-client.ts +9 -6
- package/src/studio/lib/ops-store.ts +427 -0
- package/src/studio/lib/ops-tracker.ts +416 -0
- package/src/studio/lib/ops-types.ts +164 -0
- package/src/studio/lib/store.ts +8 -11
- package/src/studio/lib/types.ts +228 -38
- package/src/studio/lib/widget-loader.ts +2 -2
- package/templates/typescript-oauth/src/modules/flights/flights.prompts.ts +19 -22
- package/dist/cli/build-widgets.mjs +0 -165
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
import { describe, it, expect } from '@jest/globals';
|
|
8
|
+
import 'reflect-metadata';
|
|
9
|
+
import { Module, getModuleMetadata, createModule, isModule } from '../module';
|
|
10
|
+
describe('Module Decorator', () => {
|
|
11
|
+
it('should define metadata on the class', () => {
|
|
12
|
+
let TestModule = class TestModule {
|
|
13
|
+
};
|
|
14
|
+
TestModule = __decorate([
|
|
15
|
+
Module({
|
|
16
|
+
name: 'test-module',
|
|
17
|
+
controllers: [],
|
|
18
|
+
providers: []
|
|
19
|
+
})
|
|
20
|
+
], TestModule);
|
|
21
|
+
const metadata = getModuleMetadata(TestModule);
|
|
22
|
+
expect(metadata).toBeDefined();
|
|
23
|
+
expect(metadata?.name).toBe('test-module');
|
|
24
|
+
expect(metadata?.controllers).toEqual([]);
|
|
25
|
+
expect(metadata?.providers).toEqual([]);
|
|
26
|
+
});
|
|
27
|
+
it('should identify a module class', () => {
|
|
28
|
+
let TestModule = class TestModule {
|
|
29
|
+
};
|
|
30
|
+
TestModule = __decorate([
|
|
31
|
+
Module({ name: 'test' })
|
|
32
|
+
], TestModule);
|
|
33
|
+
class NonModule {
|
|
34
|
+
}
|
|
35
|
+
expect(isModule(TestModule)).toBe(true);
|
|
36
|
+
expect(isModule(NonModule)).toBe(false);
|
|
37
|
+
});
|
|
38
|
+
it('should create a module instance', () => {
|
|
39
|
+
let TestModule = class TestModule {
|
|
40
|
+
};
|
|
41
|
+
TestModule = __decorate([
|
|
42
|
+
Module({ name: 'test' })
|
|
43
|
+
], TestModule);
|
|
44
|
+
const moduleInstance = createModule(TestModule);
|
|
45
|
+
expect(moduleInstance).toBeDefined();
|
|
46
|
+
expect(moduleInstance.getName()).toBe('test');
|
|
47
|
+
});
|
|
48
|
+
it('should add getMetadata static method', () => {
|
|
49
|
+
let TestModule = class TestModule {
|
|
50
|
+
static getMetadata;
|
|
51
|
+
};
|
|
52
|
+
TestModule = __decorate([
|
|
53
|
+
Module({ name: 'test' })
|
|
54
|
+
], TestModule);
|
|
55
|
+
// Typescript might complain about static method that is dynamically added
|
|
56
|
+
// but at runtime it should be there.
|
|
57
|
+
expect(TestModule.getMetadata()).toEqual(expect.objectContaining({ name: 'test' }));
|
|
58
|
+
});
|
|
59
|
+
});
|
|
60
|
+
//# sourceMappingURL=module.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"module.test.js","sourceRoot":"","sources":["../../../src/core/__tests__/module.test.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAQ,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAC3D,OAAO,kBAAkB,CAAC;AAC1B,OAAO,EAAE,MAAM,EAAE,iBAAiB,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAE9E,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;IAC9B,EAAE,CAAC,qCAAqC,EAAE,GAAG,EAAE;QAM3C,IAAM,UAAU,GAAhB,MAAM,UAAU;SAAI,CAAA;QAAd,UAAU;YALf,MAAM,CAAC;gBACJ,IAAI,EAAE,aAAa;gBACnB,WAAW,EAAE,EAAE;gBACf,SAAS,EAAE,EAAE;aAChB,CAAC;WACI,UAAU,CAAI;QAEpB,MAAM,QAAQ,GAAG,iBAAiB,CAAC,UAAU,CAAC,CAAC;QAC/C,MAAM,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAC;QAC/B,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAC3C,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAC1C,MAAM,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gCAAgC,EAAE,GAAG,EAAE;QAEtC,IAAM,UAAU,GAAhB,MAAM,UAAU;SAAI,CAAA;QAAd,UAAU;YADf,MAAM,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;WACnB,UAAU,CAAI;QAEpB,MAAM,SAAS;SAAI;QAEnB,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACxC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iCAAiC,EAAE,GAAG,EAAE;QAEvC,IAAM,UAAU,GAAhB,MAAM,UAAU;SAAI,CAAA;QAAd,UAAU;YADf,MAAM,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;WACnB,UAAU,CAAI;QAEpB,MAAM,cAAc,GAAG,YAAY,CAAC,UAAU,CAAC,CAAC;QAChD,MAAM,CAAC,cAAc,CAAC,CAAC,WAAW,EAAE,CAAC;QACrC,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAClD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;QAE5C,IAAM,UAAU,GAAhB,MAAM,UAAU;YACZ,MAAM,CAAC,WAAW,CAAM;SAC3B,CAAA;QAFK,UAAU;YADf,MAAM,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;WACnB,UAAU,CAEf;QAED,0EAA0E;QAC1E,qCAAqC;QACrC,MAAM,CAAE,UAAkB,CAAC,WAAW,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;IACjG,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.test.d.ts","sourceRoot":"","sources":["../../../src/core/__tests__/server.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
8
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
|
+
};
|
|
10
|
+
import { jest, describe, it, expect, beforeEach } from '@jest/globals';
|
|
11
|
+
// Static imports for types
|
|
12
|
+
import { z } from 'zod';
|
|
13
|
+
// Mock dependencies
|
|
14
|
+
jest.unstable_mockModule('@modelcontextprotocol/sdk/server/index.js', () => ({
|
|
15
|
+
Server: jest.fn().mockImplementation(() => ({
|
|
16
|
+
connect: jest.fn(),
|
|
17
|
+
addTool: jest.fn(),
|
|
18
|
+
addResource: jest.fn(),
|
|
19
|
+
addPrompt: jest.fn(),
|
|
20
|
+
setRequestHandler: jest.fn(),
|
|
21
|
+
onerror: jest.fn()
|
|
22
|
+
}))
|
|
23
|
+
}));
|
|
24
|
+
jest.unstable_mockModule('@modelcontextprotocol/sdk/server/stdio.js', () => ({
|
|
25
|
+
SSEServerTransport: jest.fn(),
|
|
26
|
+
StdioServerTransport: jest.fn()
|
|
27
|
+
}));
|
|
28
|
+
jest.unstable_mockModule('../logger', () => ({
|
|
29
|
+
createLogger: () => ({
|
|
30
|
+
info: jest.fn(),
|
|
31
|
+
error: jest.fn(),
|
|
32
|
+
warn: jest.fn(),
|
|
33
|
+
debug: jest.fn()
|
|
34
|
+
})
|
|
35
|
+
}));
|
|
36
|
+
// core/transports/streamable-http.ts likely needs mocking because it imports express/http
|
|
37
|
+
// But server.ts imports it.
|
|
38
|
+
// If server.ts imports '../transports/streamable-http.js', we might need to mock that too if it has side effects
|
|
39
|
+
// or mock the whole module to avoid its dependencies.
|
|
40
|
+
// Let's try mocking it.
|
|
41
|
+
jest.unstable_mockModule('../transports/streamable-http.js', () => ({
|
|
42
|
+
StreamableHttpTransport: jest.fn().mockImplementation(() => ({
|
|
43
|
+
start: jest.fn().mockResolvedValue(undefined),
|
|
44
|
+
close: jest.fn(),
|
|
45
|
+
setToolsCallback: jest.fn(),
|
|
46
|
+
setServerConfig: jest.fn()
|
|
47
|
+
}))
|
|
48
|
+
}));
|
|
49
|
+
// Dynamic imports for values
|
|
50
|
+
const { Server: McpServer } = await import('@modelcontextprotocol/sdk/server/index.js');
|
|
51
|
+
const { NitroStackServer } = await import('../server');
|
|
52
|
+
const { Tool } = await import('../decorators');
|
|
53
|
+
const { Module } = await import('../module');
|
|
54
|
+
// Define classes here
|
|
55
|
+
class TestTool {
|
|
56
|
+
execute() { return 'result'; }
|
|
57
|
+
}
|
|
58
|
+
__decorate([
|
|
59
|
+
Tool({ name: 'test-tool', description: 'test', inputSchema: z.object({}) }),
|
|
60
|
+
__metadata("design:type", Function),
|
|
61
|
+
__metadata("design:paramtypes", []),
|
|
62
|
+
__metadata("design:returntype", void 0)
|
|
63
|
+
], TestTool.prototype, "execute", null);
|
|
64
|
+
class TestController {
|
|
65
|
+
run() { }
|
|
66
|
+
}
|
|
67
|
+
__decorate([
|
|
68
|
+
Tool({ name: 'ctrl-tool', description: 'desc', inputSchema: z.object({}) }),
|
|
69
|
+
__metadata("design:type", Function),
|
|
70
|
+
__metadata("design:paramtypes", []),
|
|
71
|
+
__metadata("design:returntype", void 0)
|
|
72
|
+
], TestController.prototype, "run", null);
|
|
73
|
+
let TestModule = class TestModule {
|
|
74
|
+
};
|
|
75
|
+
TestModule = __decorate([
|
|
76
|
+
Module({
|
|
77
|
+
name: 'test-module',
|
|
78
|
+
controllers: [TestController]
|
|
79
|
+
})
|
|
80
|
+
], TestModule);
|
|
81
|
+
class NotAModule {
|
|
82
|
+
}
|
|
83
|
+
describe('NitroStackServer', () => {
|
|
84
|
+
let server;
|
|
85
|
+
beforeEach(() => {
|
|
86
|
+
jest.clearAllMocks();
|
|
87
|
+
server = new NitroStackServer();
|
|
88
|
+
});
|
|
89
|
+
it('should initialize McpServer', () => {
|
|
90
|
+
expect(McpServer).toHaveBeenCalled();
|
|
91
|
+
});
|
|
92
|
+
it('should register a tool', () => {
|
|
93
|
+
const tool = {
|
|
94
|
+
name: 'test-tool',
|
|
95
|
+
description: 'test',
|
|
96
|
+
inputSchema: z.object({}),
|
|
97
|
+
execute: jest.fn(),
|
|
98
|
+
toMcpTool: () => ({ name: 'test-tool', inputSchema: {} }),
|
|
99
|
+
hasComponent: () => false,
|
|
100
|
+
getComponent: () => undefined
|
|
101
|
+
};
|
|
102
|
+
server.tool(tool);
|
|
103
|
+
// Verify tool stored in private map
|
|
104
|
+
expect(server.tools.has('test-tool')).toBe(true);
|
|
105
|
+
});
|
|
106
|
+
it('should register a module with controllers', () => {
|
|
107
|
+
server.module(TestModule);
|
|
108
|
+
// Verify tool from controller stored in private map
|
|
109
|
+
expect(server.tools.has('ctrl-tool')).toBe(true);
|
|
110
|
+
});
|
|
111
|
+
it('should throw if class is not a module', () => {
|
|
112
|
+
expect(() => server.module(NotAModule)).toThrow();
|
|
113
|
+
});
|
|
114
|
+
it('should start the server', async () => {
|
|
115
|
+
await server.start();
|
|
116
|
+
const mcpInstance = McpServer.mock.results[0].value;
|
|
117
|
+
expect(mcpInstance.connect).toHaveBeenCalled();
|
|
118
|
+
});
|
|
119
|
+
});
|
|
120
|
+
//# sourceMappingURL=server.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.test.js","sourceRoot":"","sources":["../../../src/core/__tests__/server.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transports.test.d.ts","sourceRoot":"","sources":["../../../src/core/__tests__/transports.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { describe, it, expect } from '@jest/globals';
|
|
2
|
+
import { StreamableHttpTransport } from '../transports/streamable-http';
|
|
3
|
+
describe('Transports', () => {
|
|
4
|
+
describe('StreamableHttpTransport', () => {
|
|
5
|
+
it('should instantiate', () => {
|
|
6
|
+
const app = {};
|
|
7
|
+
const transport = new StreamableHttpTransport(app);
|
|
8
|
+
expect(transport).toBeDefined();
|
|
9
|
+
});
|
|
10
|
+
});
|
|
11
|
+
});
|
|
12
|
+
//# sourceMappingURL=transports.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transports.test.js","sourceRoot":"","sources":["../../../src/core/__tests__/transports.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAC3D,OAAO,EAAE,uBAAuB,EAAE,MAAM,+BAA+B,CAAC;AAGxE,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;IACxB,QAAQ,CAAC,yBAAyB,EAAE,GAAG,EAAE;QACrC,EAAE,CAAC,oBAAoB,EAAE,GAAG,EAAE;YAC1B,MAAM,GAAG,GAAG,EAAS,CAAC;YACtB,MAAM,SAAS,GAAG,IAAI,uBAAuB,CAAC,GAAG,CAAC,CAAC;YACnD,MAAM,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,CAAC;QACpC,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import 'reflect-metadata';
|
|
2
2
|
import { NitroStackServer } from './server.js';
|
|
3
|
+
import type { ClassConstructor } from './types.js';
|
|
3
4
|
/**
|
|
4
5
|
* MCP Application Options
|
|
5
6
|
*/
|
|
@@ -7,7 +8,7 @@ export interface McpAppOptions {
|
|
|
7
8
|
/**
|
|
8
9
|
* Root module of the application
|
|
9
10
|
*/
|
|
10
|
-
module:
|
|
11
|
+
module: ClassConstructor;
|
|
11
12
|
/**
|
|
12
13
|
* Server configuration
|
|
13
14
|
*/
|
|
@@ -44,7 +45,7 @@ export declare function McpApp(options: McpAppOptions): ClassDecorator;
|
|
|
44
45
|
/**
|
|
45
46
|
* Get MCP App metadata
|
|
46
47
|
*/
|
|
47
|
-
export declare function getMcpAppMetadata(target:
|
|
48
|
+
export declare function getMcpAppMetadata(target: ClassConstructor): McpAppOptions | undefined;
|
|
48
49
|
/**
|
|
49
50
|
* MCP Application Factory
|
|
50
51
|
* Creates and bootstraps an MCP application
|
|
@@ -53,6 +54,6 @@ export declare class McpApplicationFactory {
|
|
|
53
54
|
/**
|
|
54
55
|
* Create an MCP application from an app module
|
|
55
56
|
*/
|
|
56
|
-
static create(AppModule:
|
|
57
|
+
static create(AppModule: ClassConstructor): Promise<NitroStackServer>;
|
|
57
58
|
}
|
|
58
59
|
//# sourceMappingURL=app-decorator.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app-decorator.d.ts","sourceRoot":"","sources":["../../src/core/app-decorator.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAC1B,OAAO,EAAgB,gBAAgB,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"app-decorator.d.ts","sourceRoot":"","sources":["../../src/core/app-decorator.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAC1B,OAAO,EAAgB,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAO7D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAiDnD;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B;;OAEG;IACH,MAAM,EAAE,gBAAgB,CAAC;IAEzB;;OAEG;IACH,MAAM,CAAC,EAAE;QACP,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC;IAEF;;OAEG;IACH,OAAO,CAAC,EAAE;QACR,KAAK,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;KAC7C,CAAC;IAEF;;;;;OAKG;IACH,SAAS,CAAC,EAAE;QACV,IAAI,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC;QAChC,IAAI,CAAC,EAAE;YACL,IAAI,CAAC,EAAE,MAAM,CAAC;YACd,IAAI,CAAC,EAAE,MAAM,CAAC;YACd,QAAQ,CAAC,EAAE,MAAM,CAAC;SACnB,CAAC;KACH,CAAC;CACH;AAOD;;;GAGG;AACH,wBAAgB,MAAM,CAAC,OAAO,EAAE,aAAa,GAAG,cAAc,CAM7D;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,gBAAgB,GAAG,aAAa,GAAG,SAAS,CAErF;AAED;;;GAGG;AACH,qBAAa,qBAAqB;IAChC;;OAEG;WACU,MAAM,CAAC,SAAS,EAAE,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC;CAmT5E"}
|
|
@@ -1,11 +1,36 @@
|
|
|
1
1
|
import 'reflect-metadata';
|
|
2
|
-
import { createServer
|
|
2
|
+
import { createServer } from './server.js';
|
|
3
3
|
import { createLogger } from './logger.js';
|
|
4
4
|
import { DIContainer } from './di/container.js';
|
|
5
5
|
import { registerHealthCheck } from './decorators/health-check.decorator.js';
|
|
6
6
|
import { createResource } from './resource.js';
|
|
7
7
|
import { getModuleMetadata } from './module.js';
|
|
8
8
|
import { buildTools, buildResources, buildPrompts } from './builders.js';
|
|
9
|
+
/**
|
|
10
|
+
* Helper to check if a provider is a ClassConstructor
|
|
11
|
+
*/
|
|
12
|
+
function isClassConstructor(provider) {
|
|
13
|
+
return typeof provider === 'function';
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Register a provider (either class or object-style provider)
|
|
17
|
+
*/
|
|
18
|
+
function registerProvider(container, provider) {
|
|
19
|
+
if (isClassConstructor(provider)) {
|
|
20
|
+
container.register(provider);
|
|
21
|
+
}
|
|
22
|
+
else {
|
|
23
|
+
// Object-style provider: { provide: ..., useValue/useClass/useFactory: ... }
|
|
24
|
+
const token = provider.provide;
|
|
25
|
+
if (provider.useValue !== undefined) {
|
|
26
|
+
container.registerValue(token, provider.useValue);
|
|
27
|
+
}
|
|
28
|
+
else if (provider.useClass) {
|
|
29
|
+
container.register(token, provider.useClass);
|
|
30
|
+
}
|
|
31
|
+
// useFactory could be added later if needed
|
|
32
|
+
}
|
|
33
|
+
}
|
|
9
34
|
/**
|
|
10
35
|
* MCP Application Metadata Key
|
|
11
36
|
*/
|
|
@@ -15,6 +40,7 @@ const MCP_APP_METADATA = Symbol('mcp:app');
|
|
|
15
40
|
* Marks a class as the root application module
|
|
16
41
|
*/
|
|
17
42
|
export function McpApp(options) {
|
|
43
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
18
44
|
return (target) => {
|
|
19
45
|
Reflect.defineMetadata(MCP_APP_METADATA, options, target);
|
|
20
46
|
return target;
|
|
@@ -58,14 +84,17 @@ export class McpApplicationFactory {
|
|
|
58
84
|
// Register all providers
|
|
59
85
|
if (moduleMetadata.providers) {
|
|
60
86
|
for (const provider of moduleMetadata.providers) {
|
|
61
|
-
container
|
|
62
|
-
// Check if provider is a health check
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
87
|
+
registerProvider(container, provider);
|
|
88
|
+
// Check if provider is a health check (only for class constructors)
|
|
89
|
+
if (isClassConstructor(provider)) {
|
|
90
|
+
const healthCheckMetadata = Reflect.getMetadata('nitrostack:health_check', provider);
|
|
91
|
+
if (healthCheckMetadata) {
|
|
92
|
+
// Resolve and register health check
|
|
93
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
94
|
+
const healthCheckInstance = container.resolve(provider);
|
|
95
|
+
registerHealthCheck(healthCheckInstance, healthCheckMetadata);
|
|
96
|
+
logger.info(` ✓ Health Check: ${healthCheckMetadata.name}`);
|
|
97
|
+
}
|
|
69
98
|
}
|
|
70
99
|
}
|
|
71
100
|
}
|
|
@@ -86,14 +115,17 @@ export class McpApplicationFactory {
|
|
|
86
115
|
// Register providers from imported module
|
|
87
116
|
if (importedMetadata.providers) {
|
|
88
117
|
for (const provider of importedMetadata.providers) {
|
|
89
|
-
container
|
|
90
|
-
// Check if provider is a health check
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
118
|
+
registerProvider(container, provider);
|
|
119
|
+
// Check if provider is a health check (only for class constructors)
|
|
120
|
+
if (isClassConstructor(provider)) {
|
|
121
|
+
const healthCheckMetadata = Reflect.getMetadata('nitrostack:health_check', provider);
|
|
122
|
+
if (healthCheckMetadata) {
|
|
123
|
+
// Resolve and register health check
|
|
124
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
125
|
+
const healthCheckInstance = container.resolve(provider);
|
|
126
|
+
registerHealthCheck(healthCheckInstance, healthCheckMetadata);
|
|
127
|
+
logger.info(` ✓ Health Check: ${healthCheckMetadata.name}`);
|
|
128
|
+
}
|
|
97
129
|
}
|
|
98
130
|
}
|
|
99
131
|
}
|
|
@@ -105,13 +137,15 @@ export class McpApplicationFactory {
|
|
|
105
137
|
}
|
|
106
138
|
}
|
|
107
139
|
}
|
|
108
|
-
else if (importedModule && typeof importedModule === 'object'
|
|
140
|
+
else if (importedModule && typeof importedModule === 'object') {
|
|
109
141
|
// Handle ConfigModule.forRoot() style dynamic modules
|
|
110
|
-
|
|
111
|
-
|
|
142
|
+
const dynamicMod = importedModule;
|
|
143
|
+
if (dynamicMod.providers) {
|
|
144
|
+
for (const provider of dynamicMod.providers) {
|
|
112
145
|
// Check if provider has {provide, useValue} format
|
|
113
146
|
if (provider && typeof provider === 'object' && 'provide' in provider && 'useValue' in provider) {
|
|
114
|
-
|
|
147
|
+
const valueProvider = provider;
|
|
148
|
+
container.registerValue(valueProvider.provide, valueProvider.useValue);
|
|
115
149
|
}
|
|
116
150
|
else {
|
|
117
151
|
container.register(provider);
|
|
@@ -120,8 +154,8 @@ export class McpApplicationFactory {
|
|
|
120
154
|
}
|
|
121
155
|
// If the dynamic module has a module class, we'll add it to the server after creation
|
|
122
156
|
// Don't register it in DI yet to avoid circular dependency issues
|
|
123
|
-
if (
|
|
124
|
-
dynamicModulesToAdd.push(
|
|
157
|
+
if (dynamicMod.module) {
|
|
158
|
+
dynamicModulesToAdd.push(dynamicMod.module);
|
|
125
159
|
}
|
|
126
160
|
}
|
|
127
161
|
}
|
|
@@ -132,11 +166,14 @@ export class McpApplicationFactory {
|
|
|
132
166
|
version: options.server?.version || '1.0.0',
|
|
133
167
|
});
|
|
134
168
|
// Register the server itself in DI so dynamic modules can inject it
|
|
135
|
-
|
|
169
|
+
// Use string token since NitroStackServer has specific constructor signature
|
|
170
|
+
container.registerValue('NitroStackServer', server);
|
|
136
171
|
// Now register and add dynamic modules (from forRoot() calls) to server
|
|
137
172
|
for (const dynamicModule of dynamicModulesToAdd) {
|
|
138
173
|
container.register(dynamicModule);
|
|
139
|
-
|
|
174
|
+
// Access internal modules array
|
|
175
|
+
const serverInternal = server;
|
|
176
|
+
serverInternal.modules.push(dynamicModule);
|
|
140
177
|
}
|
|
141
178
|
// Build and register tools, resources, and prompts from all controllers
|
|
142
179
|
let totalTools = 0;
|
|
@@ -220,7 +257,8 @@ export class McpApplicationFactory {
|
|
|
220
257
|
logger.info(`Widget examples resource registered`);
|
|
221
258
|
}
|
|
222
259
|
catch (error) {
|
|
223
|
-
|
|
260
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
261
|
+
logger.warn(`Widget examples not available: ${errorMessage}`);
|
|
224
262
|
}
|
|
225
263
|
logger.info(`✅ Application initialized with ${totalTools} tools, ${totalResources} resources, ${totalPrompts} prompts`);
|
|
226
264
|
// Auto-detect transport type based on configuration
|
|
@@ -275,8 +313,9 @@ export class McpApplicationFactory {
|
|
|
275
313
|
};
|
|
276
314
|
}
|
|
277
315
|
// Store transport configuration on server for later use
|
|
278
|
-
|
|
279
|
-
|
|
316
|
+
const serverInternal = server;
|
|
317
|
+
serverInternal._transportType = transportType;
|
|
318
|
+
serverInternal._transportOptions = transportOptions;
|
|
280
319
|
return server;
|
|
281
320
|
}
|
|
282
321
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app-decorator.js","sourceRoot":"","sources":["../../src/core/app-decorator.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAC1B,OAAO,EAAE,YAAY,
|
|
1
|
+
{"version":3,"file":"app-decorator.js","sourceRoot":"","sources":["../../src/core/app-decorator.ts"],"names":[],"mappings":"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"}
|
package/dist/core/builders.d.ts
CHANGED
|
@@ -1,38 +1,50 @@
|
|
|
1
1
|
import { Tool } from './tool.js';
|
|
2
2
|
import { Resource } from './resource.js';
|
|
3
3
|
import { Prompt } from './prompt.js';
|
|
4
|
+
import { ClassConstructor } from './types.js';
|
|
4
5
|
import { ToolOptions, ResourceOptions, PromptOptions } from './decorators.js';
|
|
6
|
+
/**
|
|
7
|
+
* Controller instance type
|
|
8
|
+
*/
|
|
9
|
+
interface ControllerInstance {
|
|
10
|
+
[key: string]: unknown;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Controller class type (using ClassConstructor for compatibility)
|
|
14
|
+
*/
|
|
15
|
+
type ControllerClass = ClassConstructor<ControllerInstance>;
|
|
5
16
|
/**
|
|
6
17
|
* Build a Tool instance from a decorated method
|
|
7
18
|
*/
|
|
8
|
-
export declare function buildTool(controllerInstance:
|
|
19
|
+
export declare function buildTool(controllerInstance: ControllerInstance, methodName: string, options: ToolOptions, widgetRoute?: string, isInitial?: boolean): Tool;
|
|
9
20
|
/**
|
|
10
21
|
* Build all tools from a controller
|
|
11
22
|
*/
|
|
12
|
-
export declare function buildTools(controllerInstance:
|
|
23
|
+
export declare function buildTools(controllerInstance: ControllerInstance): Tool[];
|
|
13
24
|
/**
|
|
14
25
|
* Build a Resource instance from a decorated method
|
|
15
26
|
*/
|
|
16
|
-
export declare function buildResource(controllerInstance:
|
|
27
|
+
export declare function buildResource(controllerInstance: ControllerInstance, methodName: string, options: ResourceOptions): Resource;
|
|
17
28
|
/**
|
|
18
29
|
* Build all resources from a controller
|
|
19
30
|
*/
|
|
20
|
-
export declare function buildResources(controllerInstance:
|
|
31
|
+
export declare function buildResources(controllerInstance: ControllerInstance): Resource[];
|
|
21
32
|
/**
|
|
22
33
|
* Build a Prompt instance from a decorated method
|
|
23
34
|
*/
|
|
24
|
-
export declare function buildPrompt(controllerInstance:
|
|
35
|
+
export declare function buildPrompt(controllerInstance: ControllerInstance, methodName: string, options: PromptOptions): Prompt;
|
|
25
36
|
/**
|
|
26
37
|
* Build all prompts from a controller
|
|
27
38
|
*/
|
|
28
|
-
export declare function buildPrompts(controllerInstance:
|
|
39
|
+
export declare function buildPrompts(controllerInstance: ControllerInstance): Prompt[];
|
|
29
40
|
/**
|
|
30
41
|
* Build all tools, resources, and prompts from a controller
|
|
31
42
|
* Supports dependency injection
|
|
32
43
|
*/
|
|
33
|
-
export declare function buildController(controller:
|
|
44
|
+
export declare function buildController(controller: ControllerClass): {
|
|
34
45
|
tools: Tool[];
|
|
35
46
|
resources: Resource[];
|
|
36
47
|
prompts: Prompt[];
|
|
37
48
|
};
|
|
49
|
+
export {};
|
|
38
50
|
//# sourceMappingURL=builders.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"builders.d.ts","sourceRoot":"","sources":["../../src/core/builders.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,QAAQ,EAAkB,MAAM,eAAe,CAAC;AACzD,OAAO,EAAE,MAAM,EAAgB,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"builders.d.ts","sourceRoot":"","sources":["../../src/core/builders.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,QAAQ,EAAkB,MAAM,eAAe,CAAC;AACzD,OAAO,EAAE,MAAM,EAAgB,MAAM,aAAa,CAAC;AAEnD,OAAO,EAA+G,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAC3J,OAAO,EAA6F,WAAW,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AASzK;;GAEG;AACH,UAAU,kBAAkB;IAC1B,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED;;GAEG;AACH,KAAK,eAAe,GAAG,gBAAgB,CAAC,kBAAkB,CAAC,CAAC;AAE5D;;GAEG;AACH,wBAAgB,SAAS,CACvB,kBAAkB,EAAE,kBAAkB,EACtC,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,WAAW,EACpB,WAAW,CAAC,EAAE,MAAM,EACpB,SAAS,CAAC,EAAE,OAAO,GAClB,IAAI,CAsCN;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,kBAAkB,EAAE,kBAAkB,GAAG,IAAI,EAAE,CAczE;AAED;;GAEG;AACH,wBAAgB,aAAa,CAC3B,kBAAkB,EAAE,kBAAkB,EACtC,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,eAAe,GACvB,QAAQ,CAgBV;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,kBAAkB,EAAE,kBAAkB,GAAG,QAAQ,EAAE,CAOjF;AAED;;GAEG;AACH,wBAAgB,WAAW,CACzB,kBAAkB,EAAE,kBAAkB,EACtC,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,aAAa,GACrB,MAAM,CAcR;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,kBAAkB,EAAE,kBAAkB,GAAG,MAAM,EAAE,CAO7E;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,UAAU,EAAE,eAAe,GAAG;IAC5D,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,SAAS,EAAE,QAAQ,EAAE,CAAC;IACtB,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB,CAgBA"}
|
package/dist/core/builders.js
CHANGED
|
@@ -16,7 +16,8 @@ import { isInjectable } from './di/injectable.decorator.js';
|
|
|
16
16
|
export function buildTool(controllerInstance, methodName, options, widgetRoute, isInitial) {
|
|
17
17
|
const prototype = Object.getPrototypeOf(controllerInstance);
|
|
18
18
|
// Get the original method
|
|
19
|
-
const
|
|
19
|
+
const method = controllerInstance[methodName];
|
|
20
|
+
const originalMethod = method.bind(controllerInstance);
|
|
20
21
|
// Extract all decorator metadata
|
|
21
22
|
const guards = getGuardsMetadata(prototype, methodName);
|
|
22
23
|
const middlewares = getMiddlewareMetadata(prototype, methodName);
|
|
@@ -50,12 +51,14 @@ export function buildTool(controllerInstance, methodName, options, widgetRoute,
|
|
|
50
51
|
* Build all tools from a controller
|
|
51
52
|
*/
|
|
52
53
|
export function buildTools(controllerInstance) {
|
|
53
|
-
const
|
|
54
|
+
const constructor = Object.getPrototypeOf(controllerInstance).constructor;
|
|
55
|
+
const toolMetadata = extractTools(constructor);
|
|
54
56
|
return toolMetadata.map(({ methodName, options }) => {
|
|
57
|
+
const prototype = Object.getPrototypeOf(controllerInstance);
|
|
55
58
|
// Check if this method has a widget
|
|
56
|
-
const widgetRoute = getWidgetMetadata(
|
|
59
|
+
const widgetRoute = getWidgetMetadata(prototype, methodName);
|
|
57
60
|
// Check for initial tool decorator
|
|
58
|
-
const isInitial = getInitialToolMetadata(
|
|
61
|
+
const isInitial = getInitialToolMetadata(prototype, methodName);
|
|
59
62
|
return buildTool(controllerInstance, methodName, options, widgetRoute, isInitial);
|
|
60
63
|
});
|
|
61
64
|
}
|
|
@@ -63,7 +66,8 @@ export function buildTools(controllerInstance) {
|
|
|
63
66
|
* Build a Resource instance from a decorated method
|
|
64
67
|
*/
|
|
65
68
|
export function buildResource(controllerInstance, methodName, options) {
|
|
66
|
-
const
|
|
69
|
+
const method = controllerInstance[methodName];
|
|
70
|
+
const originalMethod = method.bind(controllerInstance);
|
|
67
71
|
const resourceDefinition = {
|
|
68
72
|
uri: options.uri,
|
|
69
73
|
name: options.name,
|
|
@@ -80,7 +84,8 @@ export function buildResource(controllerInstance, methodName, options) {
|
|
|
80
84
|
* Build all resources from a controller
|
|
81
85
|
*/
|
|
82
86
|
export function buildResources(controllerInstance) {
|
|
83
|
-
const
|
|
87
|
+
const constructor = Object.getPrototypeOf(controllerInstance).constructor;
|
|
88
|
+
const resourceMetadata = extractResources(constructor);
|
|
84
89
|
return resourceMetadata.map(({ methodName, options }) => {
|
|
85
90
|
return buildResource(controllerInstance, methodName, options);
|
|
86
91
|
});
|
|
@@ -89,7 +94,8 @@ export function buildResources(controllerInstance) {
|
|
|
89
94
|
* Build a Prompt instance from a decorated method
|
|
90
95
|
*/
|
|
91
96
|
export function buildPrompt(controllerInstance, methodName, options) {
|
|
92
|
-
const
|
|
97
|
+
const method = controllerInstance[methodName];
|
|
98
|
+
const originalMethod = method.bind(controllerInstance);
|
|
93
99
|
const promptDefinition = {
|
|
94
100
|
name: options.name,
|
|
95
101
|
description: options.description,
|
|
@@ -104,7 +110,8 @@ export function buildPrompt(controllerInstance, methodName, options) {
|
|
|
104
110
|
* Build all prompts from a controller
|
|
105
111
|
*/
|
|
106
112
|
export function buildPrompts(controllerInstance) {
|
|
107
|
-
const
|
|
113
|
+
const constructor = Object.getPrototypeOf(controllerInstance).constructor;
|
|
114
|
+
const promptMetadata = extractPrompts(constructor);
|
|
108
115
|
return promptMetadata.map(({ methodName, options }) => {
|
|
109
116
|
return buildPrompt(controllerInstance, methodName, options);
|
|
110
117
|
});
|