@breadstone/archipel-mcp 0.0.1
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 +80 -0
- package/data/packages/index.md +42 -0
- package/data/packages/platform-authentication/api/Class.AnonymousAuthGuard.md +45 -0
- package/data/packages/platform-authentication/api/Class.AuthModule.md +72 -0
- package/data/packages/platform-authentication/api/Class.AuthSubjectPort.md +100 -0
- package/data/packages/platform-authentication/api/Class.AuthTokenService.md +64 -0
- package/data/packages/platform-authentication/api/Class.ChallengeService.md +136 -0
- package/data/packages/platform-authentication/api/Class.GithubAuthGuard.md +45 -0
- package/data/packages/platform-authentication/api/Class.JwtAuthGuard.md +45 -0
- package/data/packages/platform-authentication/api/Class.JwtPayloadBase.md +116 -0
- package/data/packages/platform-authentication/api/Class.LastActiveMiddleware.md +76 -0
- package/data/packages/platform-authentication/api/Class.LocalAuthGuard.md +45 -0
- package/data/packages/platform-authentication/api/Class.MfaService.md +257 -0
- package/data/packages/platform-authentication/api/Class.MfaSubjectPort.md +75 -0
- package/data/packages/platform-authentication/api/Class.RolesGuard.md +65 -0
- package/data/packages/platform-authentication/api/Class.SessionMappingProfile.md +65 -0
- package/data/packages/platform-authentication/api/Class.SessionPersistencePort.md +170 -0
- package/data/packages/platform-authentication/api/Class.SessionResponse.md +157 -0
- package/data/packages/platform-authentication/api/Class.SessionService.md +167 -0
- package/data/packages/platform-authentication/api/Class.SocialAuthGuard.md +66 -0
- package/data/packages/platform-authentication/api/Class.SocialAuthPort.md +53 -0
- package/data/packages/platform-authentication/api/Class.TokenEnricherPort.md +52 -0
- package/data/packages/platform-authentication/api/Class.VerificationService.md +159 -0
- package/data/packages/platform-authentication/api/Class.VerificationSubjectPort.md +121 -0
- package/data/packages/platform-authentication/api/Interface.IAuthModuleOptions.md +89 -0
- package/data/packages/platform-authentication/api/Interface.IAuthSubject.md +112 -0
- package/data/packages/platform-authentication/api/Interface.IMfaChallengePayload.md +87 -0
- package/data/packages/platform-authentication/api/Interface.IMfaChallengeState.md +123 -0
- package/data/packages/platform-authentication/api/Interface.IMfaConfirmation.md +27 -0
- package/data/packages/platform-authentication/api/Interface.IMfaSetup.md +63 -0
- package/data/packages/platform-authentication/api/Interface.IMfaSubject.md +136 -0
- package/data/packages/platform-authentication/api/Interface.IMfaSubjectUpdate.md +96 -0
- package/data/packages/platform-authentication/api/Interface.ISessionRecord.md +165 -0
- package/data/packages/platform-authentication/api/Interface.ISignInResult.md +87 -0
- package/data/packages/platform-authentication/api/Interface.ISocialProfile.md +63 -0
- package/data/packages/platform-authentication/api/Interface.IStoreSessionArgs.md +75 -0
- package/data/packages/platform-authentication/api/Interface.IVerifiableSubject.md +76 -0
- package/data/packages/platform-authentication/api/_media/ENVIRONMENT_VARIABLES.md +151 -0
- package/data/packages/platform-authentication/api/index.md +508 -0
- package/data/packages/platform-authentication/index.md +635 -0
- package/data/packages/platform-blob-storage/api/Class.BlobHealthIndicator.md +84 -0
- package/data/packages/platform-blob-storage/api/Class.BlobModule.md +54 -0
- package/data/packages/platform-blob-storage/api/Class.BlobObjectPersistencePort.md +80 -0
- package/data/packages/platform-blob-storage/api/Class.BlobService.md +253 -0
- package/data/packages/platform-blob-storage/api/Class.BlobVariantPersistencePort.md +56 -0
- package/data/packages/platform-blob-storage/api/Class.VercelBlobProvider.md +202 -0
- package/data/packages/platform-blob-storage/api/Interface.IBlobDeleteRequest.md +43 -0
- package/data/packages/platform-blob-storage/api/Interface.IBlobDownloadRequest.md +53 -0
- package/data/packages/platform-blob-storage/api/Interface.IBlobDownloadResult.md +69 -0
- package/data/packages/platform-blob-storage/api/Interface.IBlobModuleOptions.md +53 -0
- package/data/packages/platform-blob-storage/api/Interface.IBlobObjectMetadata.md +143 -0
- package/data/packages/platform-blob-storage/api/Interface.IBlobProvider.md +119 -0
- package/data/packages/platform-blob-storage/api/Interface.IBlobSignedUrlRequest.md +53 -0
- package/data/packages/platform-blob-storage/api/Interface.IBlobUploadRequest.md +103 -0
- package/data/packages/platform-blob-storage/api/Interface.IBlobUploadResult.md +33 -0
- package/data/packages/platform-blob-storage/api/Interface.ICustomBlobProviderRegistration.md +33 -0
- package/data/packages/platform-blob-storage/api/Interface.IVercelBlobProviderOptions.md +73 -0
- package/data/packages/platform-blob-storage/api/Interface.IVercelBlobProviderRegistration.md +33 -0
- package/data/packages/platform-blob-storage/api/TypeAlias.BlobDownloadResponseType.md +17 -0
- package/data/packages/platform-blob-storage/api/TypeAlias.BlobUploadBody.md +17 -0
- package/data/packages/platform-blob-storage/api/TypeAlias.IBlobProviderRegistration.md +17 -0
- package/data/packages/platform-blob-storage/api/index.md +111 -0
- package/data/packages/platform-blob-storage/index.md +280 -0
- package/data/packages/platform-core/api/Class.AppHealthIndicator.md +51 -0
- package/data/packages/platform-core/api/Class.BcryptService.md +69 -0
- package/data/packages/platform-core/api/Class.BlobResourceStrategy.md +196 -0
- package/data/packages/platform-core/api/Class.BooleanUtils.md +83 -0
- package/data/packages/platform-core/api/Class.CUIDGenerator.md +121 -0
- package/data/packages/platform-core/api/Class.CasingInterceptor.md +84 -0
- package/data/packages/platform-core/api/Class.CatchUtils.md +94 -0
- package/data/packages/platform-core/api/Class.ConfigModule.md +70 -0
- package/data/packages/platform-core/api/Class.ConfigRegistry.md +116 -0
- package/data/packages/platform-core/api/Class.ConfigService.md +139 -0
- package/data/packages/platform-core/api/Class.ConfigStrategyBase.md +110 -0
- package/data/packages/platform-core/api/Class.ContentTemplateEngine.md +64 -0
- package/data/packages/platform-core/api/Class.CryptoService.md +50 -0
- package/data/packages/platform-core/api/Class.DateTimeUtils.md +102 -0
- package/data/packages/platform-core/api/Class.DeviceParserService.md +53 -0
- package/data/packages/platform-core/api/Class.EmbeddedResourceStrategy.md +216 -0
- package/data/packages/platform-core/api/Class.EnvironmentConfigStrategy.md +144 -0
- package/data/packages/platform-core/api/Class.ErrorTemplateService.md +110 -0
- package/data/packages/platform-core/api/Class.EventHub.md +164 -0
- package/data/packages/platform-core/api/Class.EventModule.md +23 -0
- package/data/packages/platform-core/api/Class.FileConfigStrategy.md +150 -0
- package/data/packages/platform-core/api/Class.FileResourceStrategy.md +193 -0
- package/data/packages/platform-core/api/Class.GUIDGenerator.md +86 -0
- package/data/packages/platform-core/api/Class.GlobalExceptionFilter.md +67 -0
- package/data/packages/platform-core/api/Class.HealthModule.md +43 -0
- package/data/packages/platform-core/api/Class.HealthOrchestrator.md +65 -0
- package/data/packages/platform-core/api/Class.HostModule.md +33 -0
- package/data/packages/platform-core/api/Class.HostService.md +150 -0
- package/data/packages/platform-core/api/Class.HttpLoggerMiddleware.md +60 -0
- package/data/packages/platform-core/api/Class.IdGeneratorBase.md +88 -0
- package/data/packages/platform-core/api/Class.IdentifierModule.md +41 -0
- package/data/packages/platform-core/api/Class.IntelligenceCapabilityRegistrarBase.md +39 -0
- package/data/packages/platform-core/api/Class.IntelligenceCapabilityRegistry.md +103 -0
- package/data/packages/platform-core/api/Class.IntelligenceModule.md +23 -0
- package/data/packages/platform-core/api/Class.IntelligenceTextGenerator.md +82 -0
- package/data/packages/platform-core/api/Class.LimitRequestSizeMiddleware.md +60 -0
- package/data/packages/platform-core/api/Class.LocalizedTextRequest.md +43 -0
- package/data/packages/platform-core/api/Class.LocalizedTextResponse.md +43 -0
- package/data/packages/platform-core/api/Class.MappingBuilder.md +111 -0
- package/data/packages/platform-core/api/Class.MappingModule.md +47 -0
- package/data/packages/platform-core/api/Class.MappingNotRegisteredError.md +57 -0
- package/data/packages/platform-core/api/Class.MappingProfileBase.md +53 -0
- package/data/packages/platform-core/api/Class.MappingService.md +285 -0
- package/data/packages/platform-core/api/Class.MemoryLayeredCache.md +251 -0
- package/data/packages/platform-core/api/Class.NoopCacheMetricsRecorder.md +157 -0
- package/data/packages/platform-core/api/Class.NormalizedUtils.md +149 -0
- package/data/packages/platform-core/api/Class.OtpService.md +106 -0
- package/data/packages/platform-core/api/Class.PageableRequest.md +43 -0
- package/data/packages/platform-core/api/Class.PageableResponse.md +63 -0
- package/data/packages/platform-core/api/Class.ProblemDetailException.md +62 -0
- package/data/packages/platform-core/api/Class.ProblemDetailExceptionFilter.md +85 -0
- package/data/packages/platform-core/api/Class.QuantityResponse.md +43 -0
- package/data/packages/platform-core/api/Class.RedisLayeredCache.md +275 -0
- package/data/packages/platform-core/api/Class.ResourceManager.md +566 -0
- package/data/packages/platform-core/api/Class.ResourceModule.md +47 -0
- package/data/packages/platform-core/api/Class.ResponseReturn.md +504 -0
- package/data/packages/platform-core/api/Class.SseHub.md +184 -0
- package/data/packages/platform-core/api/Class.SseModule.md +43 -0
- package/data/packages/platform-core/api/Class.TimeStampResponse.md +43 -0
- package/data/packages/platform-core/api/Class.TypeMappingNotRegisteredError.md +58 -0
- package/data/packages/platform-core/api/Class.UUIDGenerator.md +86 -0
- package/data/packages/platform-core/api/Class.UserAvatarGeneratorService.md +48 -0
- package/data/packages/platform-core/api/Class.UserNameGeneratorService.md +65 -0
- package/data/packages/platform-core/api/Interface.IBlobResourceStrategyConfig.md +29 -0
- package/data/packages/platform-core/api/Interface.IBlobServiceAdapter.md +41 -0
- package/data/packages/platform-core/api/Interface.ICacheMetricsRecorder.md +121 -0
- package/data/packages/platform-core/api/Interface.ICacheStats.md +71 -0
- package/data/packages/platform-core/api/Interface.IConfigKey.md +64 -0
- package/data/packages/platform-core/api/Interface.IConfigModuleOptions.md +41 -0
- package/data/packages/platform-core/api/Interface.IConfigRegistryEntry.md +80 -0
- package/data/packages/platform-core/api/Interface.IDeviceInfo.md +81 -0
- package/data/packages/platform-core/api/Interface.IErrorPageParams.md +154 -0
- package/data/packages/platform-core/api/Interface.IEventKey.md +58 -0
- package/data/packages/platform-core/api/Interface.IEventMap.md +17 -0
- package/data/packages/platform-core/api/Interface.IFileResourceStrategyConfig.md +73 -0
- package/data/packages/platform-core/api/Interface.IHealthCheckResult.md +47 -0
- package/data/packages/platform-core/api/Interface.IHealthIndicator.md +42 -0
- package/data/packages/platform-core/api/Interface.IHostContentParams.md +233 -0
- package/data/packages/platform-core/api/Interface.IIdGenerator.md +58 -0
- package/data/packages/platform-core/api/Interface.IIntelligenceArtifact.md +31 -0
- package/data/packages/platform-core/api/Interface.IIntelligenceCapability.md +62 -0
- package/data/packages/platform-core/api/Interface.IIntelligenceCapabilityMetadata.md +61 -0
- package/data/packages/platform-core/api/Interface.IIntelligenceCapabilityPayload.md +41 -0
- package/data/packages/platform-core/api/Interface.IIntelligenceCapabilityRegistry.md +69 -0
- package/data/packages/platform-core/api/Interface.IIntelligenceCapabilityResult.md +41 -0
- package/data/packages/platform-core/api/Interface.IIntelligenceCompletionUsage.md +41 -0
- package/data/packages/platform-core/api/Interface.IIntelligenceContext.md +63 -0
- package/data/packages/platform-core/api/Interface.IIntelligenceContextBuilder.md +32 -0
- package/data/packages/platform-core/api/Interface.IIntelligenceConversationMessageSnapshot.md +61 -0
- package/data/packages/platform-core/api/Interface.IIntelligenceConversationSnapshot.md +51 -0
- package/data/packages/platform-core/api/Interface.IIntelligenceFollowUpQuestion.md +41 -0
- package/data/packages/platform-core/api/Interface.IIntelligenceIntent.md +41 -0
- package/data/packages/platform-core/api/Interface.IIntelligenceIntentEntity.md +31 -0
- package/data/packages/platform-core/api/Interface.IIntelligenceMessageModel.md +61 -0
- package/data/packages/platform-core/api/Interface.IIntelligenceMessagePayload.md +31 -0
- package/data/packages/platform-core/api/Interface.IIntelligencePrompt.md +31 -0
- package/data/packages/platform-core/api/Interface.IIntelligencePromptMessage.md +31 -0
- package/data/packages/platform-core/api/Interface.IIntelligenceProviderConfiguration.md +81 -0
- package/data/packages/platform-core/api/Interface.IIntelligenceResponseMessage.md +31 -0
- package/data/packages/platform-core/api/Interface.IIntelligenceTextCompletion.md +53 -0
- package/data/packages/platform-core/api/Interface.IIntelligenceTextGenerationOptions.md +41 -0
- package/data/packages/platform-core/api/Interface.IIntelligenceTextGenerator.md +46 -0
- package/data/packages/platform-core/api/Interface.ILayeredCache.md +194 -0
- package/data/packages/platform-core/api/Interface.ILayeredCacheOptions.md +71 -0
- package/data/packages/platform-core/api/Interface.IMappingBuilder.md +77 -0
- package/data/packages/platform-core/api/Interface.IMappingKey.md +59 -0
- package/data/packages/platform-core/api/Interface.IMappingProfile.md +33 -0
- package/data/packages/platform-core/api/Interface.IOtpService.md +78 -0
- package/data/packages/platform-core/api/Interface.IOtpUriOptions.md +47 -0
- package/data/packages/platform-core/api/Interface.IRedisLayeredCacheOptions.md +108 -0
- package/data/packages/platform-core/api/Interface.IResourceManagerConfig.md +72 -0
- package/data/packages/platform-core/api/Interface.IResourceMetadata.md +95 -0
- package/data/packages/platform-core/api/Interface.IResourceResult.md +35 -0
- package/data/packages/platform-core/api/Interface.IResourceStrategy.md +135 -0
- package/data/packages/platform-core/api/Interface.ISseEventData.md +37 -0
- package/data/packages/platform-core/api/Interface.ISseHub.md +92 -0
- package/data/packages/platform-core/api/Namespace.ISseEventData.md +34 -0
- package/data/packages/platform-core/api/TypeAlias.CamelCase.md +19 -0
- package/data/packages/platform-core/api/TypeAlias.IntelligenceConversationMessageRole.md +16 -0
- package/data/packages/platform-core/api/TypeAlias.IntelligenceProviderName.md +15 -0
- package/data/packages/platform-core/api/TypeAlias.ProblemDetail.md +29 -0
- package/data/packages/platform-core/api/TypeAlias.ProblemDetailTypeUrlResolver.md +26 -0
- package/data/packages/platform-core/api/TypeAlias.SetOptional.md +22 -0
- package/data/packages/platform-core/api/TypeAlias.StringValue.md +13 -0
- package/data/packages/platform-core/api/index.md +645 -0
- package/data/packages/platform-core/index.md +483 -0
- package/data/packages/platform-database/api/Class.DatabaseHealthIndicator.md +80 -0
- package/data/packages/platform-database/api/Class.DatabaseModule.md +75 -0
- package/data/packages/platform-database/api/Class.DatabaseService.md +165 -0
- package/data/packages/platform-database/api/Class.PrismaService.md +116 -0
- package/data/packages/platform-database/api/Class.RepositoryBase.md +526 -0
- package/data/packages/platform-database/api/Class.RepositoryExceptionFilter.md +60 -0
- package/data/packages/platform-database/api/Interface.IDatabaseModuleConfig.md +27 -0
- package/data/packages/platform-database/api/Interface.IPaginateOptions.md +33 -0
- package/data/packages/platform-database/api/Interface.IPaginatedResult.md +82 -0
- package/data/packages/platform-database/api/Interface.IRepositoryQuery.md +56 -0
- package/data/packages/platform-database/api/Interface.ITransactionalRepositoryQuery.md +55 -0
- package/data/packages/platform-database/api/TypeAlias.DelegateArgs.md +23 -0
- package/data/packages/platform-database/api/TypeAlias.DelegateReturnTypes.md +23 -0
- package/data/packages/platform-database/api/TypeAlias.PaginateFunction.md +36 -0
- package/data/packages/platform-database/api/TypeAlias.QueryResultType.md +32 -0
- package/data/packages/platform-database/api/TypeAlias.TransactionalQueryResultType.md +31 -0
- package/data/packages/platform-database/api/index.md +183 -0
- package/data/packages/platform-database/index.md +300 -0
- package/data/packages/platform-documents/api/Class.BaseDocumentRenderer.md +103 -0
- package/data/packages/platform-documents/api/Class.DocumentEngine.md +85 -0
- package/data/packages/platform-documents/api/Class.DocumentModule.md +52 -0
- package/data/packages/platform-documents/api/Class.SharpImageProcessor.md +136 -0
- package/data/packages/platform-documents/api/Interface.IDocumentModuleOptions.md +100 -0
- package/data/packages/platform-documents/api/Interface.IDocumentPlaceholderDetail.md +75 -0
- package/data/packages/platform-documents/api/Interface.IDocumentProbeReport.md +123 -0
- package/data/packages/platform-documents/api/Interface.IDocumentRenderer.md +52 -0
- package/data/packages/platform-documents/api/Interface.IImagePayload.md +63 -0
- package/data/packages/platform-documents/api/Interface.IImageProcessor.md +100 -0
- package/data/packages/platform-documents/api/Interface.IRenderOptions.md +69 -0
- package/data/packages/platform-documents/api/Interface.IRenderResult.md +63 -0
- package/data/packages/platform-documents/api/TypeAlias.DocumentFormat.md +19 -0
- package/data/packages/platform-documents/api/TypeAlias.EngineType.md +19 -0
- package/data/packages/platform-documents/api/TypeAlias.ImageMimeType.md +19 -0
- package/data/packages/platform-documents/api/TypeAlias.TemplateFormat.md +19 -0
- package/data/packages/platform-documents/api/TypeAlias.TemplateType.md +19 -0
- package/data/packages/platform-documents/api/index.md +91 -0
- package/data/packages/platform-documents/index.md +219 -0
- package/data/packages/platform-logging/api/Class.AnalyticsService.md +113 -0
- package/data/packages/platform-logging/api/Class.LoggerModule.md +25 -0
- package/data/packages/platform-logging/api/index.md +42 -0
- package/data/packages/platform-logging/index.md +92 -0
- package/data/packages/platform-mailing/api/Class.BlobTemplateFetchStrategy.md +67 -0
- package/data/packages/platform-mailing/api/Class.DeliveryStrategyBase.md +55 -0
- package/data/packages/platform-mailing/api/Class.FileTemplateFetchStrategy.md +65 -0
- package/data/packages/platform-mailing/api/Class.LogDeliveryStrategy.md +82 -0
- package/data/packages/platform-mailing/api/Class.MailHealthIndicator.md +83 -0
- package/data/packages/platform-mailing/api/Class.MailModule.md +27 -0
- package/data/packages/platform-mailing/api/Class.MailService.md +101 -0
- package/data/packages/platform-mailing/api/Class.MailTemplateEngine.md +98 -0
- package/data/packages/platform-mailing/api/Class.MailVerificationService.md +90 -0
- package/data/packages/platform-mailing/api/Class.MailgunDeliveryStrategy.md +82 -0
- package/data/packages/platform-mailing/api/Class.PostmarkDeliveryStrategy.md +82 -0
- package/data/packages/platform-mailing/api/Class.ResendDeliveryStrategy.md +82 -0
- package/data/packages/platform-mailing/api/Class.SendGridDeliveryStrategy.md +82 -0
- package/data/packages/platform-mailing/api/Class.SmtpDeliveryStrategy.md +82 -0
- package/data/packages/platform-mailing/api/Class.TemplateFetchStrategyBase.md +42 -0
- package/data/packages/platform-mailing/api/Interface.IMailEvents.md +71 -0
- package/data/packages/platform-mailing/api/Interface.IMailTemplateVariants.md +35 -0
- package/data/packages/platform-mailing/api/TypeAlias.MailTemplateFormat.md +19 -0
- package/data/packages/platform-mailing/api/index.md +404 -0
- package/data/packages/platform-mailing/index.md +335 -0
- package/data/packages/platform-mcp/api/Class.McpDiscoveryService.md +65 -0
- package/data/packages/platform-mcp/api/Class.McpModule.md +83 -0
- package/data/packages/platform-mcp/api/Class.McpRegistryService.md +147 -0
- package/data/packages/platform-mcp/api/Class.McpServerService.md +197 -0
- package/data/packages/platform-mcp/api/Interface.IMcpHandlerMetadata.md +47 -0
- package/data/packages/platform-mcp/api/Interface.IMcpModuleAsyncOptions.md +76 -0
- package/data/packages/platform-mcp/api/Interface.IMcpModuleOptions.md +126 -0
- package/data/packages/platform-mcp/api/Interface.IMcpModuleOptionsFactory.md +28 -0
- package/data/packages/platform-mcp/api/Interface.IMcpPromptMetadata.md +59 -0
- package/data/packages/platform-mcp/api/Interface.IMcpResourceMetadata.md +73 -0
- package/data/packages/platform-mcp/api/Interface.IMcpToolMetadata.md +83 -0
- package/data/packages/platform-mcp/api/Interface.IRegisteredPrompt.md +41 -0
- package/data/packages/platform-mcp/api/Interface.IRegisteredResource.md +41 -0
- package/data/packages/platform-mcp/api/Interface.IRegisteredTool.md +41 -0
- package/data/packages/platform-mcp/api/Interface.ISseTransportOptions.md +23 -0
- package/data/packages/platform-mcp/api/Interface.IStreamableHttpTransportOptions.md +39 -0
- package/data/packages/platform-mcp/api/index.md +123 -0
- package/data/packages/platform-mcp/index.md +299 -0
- package/data/packages/platform-openapi/api/Class.SwaggerFeatureDiscovery.md +71 -0
- package/data/packages/platform-openapi/api/Class.SwaggerFeatureRegistry.md +104 -0
- package/data/packages/platform-openapi/api/Class.SwaggerMultiDocumentService.md +82 -0
- package/data/packages/platform-openapi/api/Class.SwaggerTheme.md +51 -0
- package/data/packages/platform-openapi/api/Interface.IFeatureSwaggerConfig.md +73 -0
- package/data/packages/platform-openapi/api/Interface.ISwaggerFeatureMetadata.md +73 -0
- package/data/packages/platform-openapi/api/index.md +209 -0
- package/data/packages/platform-openapi/index.md +170 -0
- package/data/packages/platform-payments/api/Class.FeatureAccessPort.md +79 -0
- package/data/packages/platform-payments/api/Class.FeatureGuard.md +73 -0
- package/data/packages/platform-payments/api/Class.FeatureUsageInterceptor.md +74 -0
- package/data/packages/platform-payments/api/Class.LemonSqueezyClient.md +168 -0
- package/data/packages/platform-payments/api/Class.MollieClient.md +168 -0
- package/data/packages/platform-payments/api/Class.PaddleClient.md +168 -0
- package/data/packages/platform-payments/api/Class.PaymentClientPort.md +147 -0
- package/data/packages/platform-payments/api/Class.PaymentModule.md +53 -0
- package/data/packages/platform-payments/api/Class.StripeClient.md +168 -0
- package/data/packages/platform-payments/api/Interface.IFeatureAccessResult.md +75 -0
- package/data/packages/platform-payments/api/Interface.INormalizedCheckoutSession.md +75 -0
- package/data/packages/platform-payments/api/Interface.INormalizedPrice.md +85 -0
- package/data/packages/platform-payments/api/Interface.INormalizedSubscription.md +105 -0
- package/data/packages/platform-payments/api/Interface.INormalizedWebhookEvent.md +89 -0
- package/data/packages/platform-payments/api/Interface.IPaymentModuleOptions.md +65 -0
- package/data/packages/platform-payments/api/TypeAlias.SubscriptionStatus.md +27 -0
- package/data/packages/platform-payments/api/index.md +243 -0
- package/data/packages/platform-payments/index.md +532 -0
- package/data/packages/platform-reporting/api/Class.ReportingContributorRegistry.md +57 -0
- package/data/packages/platform-reporting/api/Class.ReportingDatasetNotFoundError.md +41 -0
- package/data/packages/platform-reporting/api/Class.ReportingFacade.md +85 -0
- package/data/packages/platform-reporting/api/Class.ReportingModule.md +23 -0
- package/data/packages/platform-reporting/api/Interface.IReportingContributor.md +62 -0
- package/data/packages/platform-reporting/api/Interface.IReportingDataset.md +83 -0
- package/data/packages/platform-reporting/api/Interface.IReportingDatasetField.md +71 -0
- package/data/packages/platform-reporting/api/Interface.IReportingQuery.md +61 -0
- package/data/packages/platform-reporting/api/Interface.IReportingQueryFilter.md +41 -0
- package/data/packages/platform-reporting/api/Interface.IReportingQueryResult.md +61 -0
- package/data/packages/platform-reporting/api/Interface.IReportingQuerySort.md +31 -0
- package/data/packages/platform-reporting/api/TypeAlias.ReportingFieldType.md +13 -0
- package/data/packages/platform-reporting/api/TypeAlias.ReportingFilterOperator.md +13 -0
- package/data/packages/platform-reporting/api/TypeAlias.ReportingQueryResultRow.md +15 -0
- package/data/packages/platform-reporting/api/index.md +90 -0
- package/data/packages/platform-reporting/index.md +229 -0
- package/data/packages/platform-telemetry/api/Class.NoopTelemetryFacade.md +118 -0
- package/data/packages/platform-telemetry/api/Class.TelemetryCacheMetricsRecorder.md +180 -0
- package/data/packages/platform-telemetry/api/Class.TelemetryFacade.md +132 -0
- package/data/packages/platform-telemetry/api/Class.TelemetryLoggerService.md +231 -0
- package/data/packages/platform-telemetry/api/Class.TelemetryModule.md +45 -0
- package/data/packages/platform-telemetry/api/Class.TelemetryRuleEngine.md +53 -0
- package/data/packages/platform-telemetry/api/Interface.ITelemetryFacade.md +90 -0
- package/data/packages/platform-telemetry/api/Interface.ITelemetryMetricsOptions.md +43 -0
- package/data/packages/platform-telemetry/api/Interface.ITelemetryOptions.md +141 -0
- package/data/packages/platform-telemetry/api/Interface.ITelemetryTracesOptions.md +43 -0
- package/data/packages/platform-telemetry/api/index.md +81 -0
- package/data/packages/platform-telemetry/index.md +234 -0
- package/package.json +39 -0
- package/src/DocsLoader.d.ts +14 -0
- package/src/DocsLoader.js +103 -0
- package/src/knowledge/configPattern.d.ts +5 -0
- package/src/knowledge/configPattern.js +211 -0
- package/src/knowledge/dtoPattern.d.ts +5 -0
- package/src/knowledge/dtoPattern.js +286 -0
- package/src/knowledge/errorHandlingPattern.d.ts +5 -0
- package/src/knowledge/errorHandlingPattern.js +219 -0
- package/src/knowledge/guardPattern.d.ts +5 -0
- package/src/knowledge/guardPattern.js +256 -0
- package/src/knowledge/mappingPattern.d.ts +6 -0
- package/src/knowledge/mappingPattern.js +322 -0
- package/src/knowledge/modulePattern.d.ts +6 -0
- package/src/knowledge/modulePattern.js +283 -0
- package/src/knowledge/queryPattern.d.ts +6 -0
- package/src/knowledge/queryPattern.js +215 -0
- package/src/knowledge/repositoryPattern.d.ts +6 -0
- package/src/knowledge/repositoryPattern.js +367 -0
- package/src/knowledge/testingPattern.d.ts +5 -0
- package/src/knowledge/testingPattern.js +356 -0
- package/src/main.d.ts +2 -0
- package/src/main.js +226 -0
- package/src/models/IPackageDoc.d.ts +19 -0
- package/src/models/IPackageDoc.js +3 -0
|
@@ -0,0 +1,356 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Static knowledge content for the Archipel testing pattern.
|
|
4
|
+
* Returned by the get-testing-pattern tool.
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.TESTING_PATTERN_KNOWLEDGE = void 0;
|
|
8
|
+
exports.TESTING_PATTERN_KNOWLEDGE = `# Archipel Testing Pattern
|
|
9
|
+
|
|
10
|
+
## Overview
|
|
11
|
+
|
|
12
|
+
Archipel uses **Vitest** for unit and integration tests with **vi mocking**. Tests follow
|
|
13
|
+
the Arrange-Act-Assert (AAA) pattern with descriptive \`describe\`/\`it\` blocks. Each test
|
|
14
|
+
file covers a single class or module.
|
|
15
|
+
|
|
16
|
+
## Test Framework
|
|
17
|
+
|
|
18
|
+
- **Runner:** Vitest
|
|
19
|
+
- **Mocking:** \`vi.fn()\`, \`vi.mock()\`, \`vi.spyOn()\`
|
|
20
|
+
- **Assertions:** Vitest built-in (\`expect\`)
|
|
21
|
+
- **E2E:** Supertest against a bootstrapped NestJS app
|
|
22
|
+
|
|
23
|
+
## File Naming & Location
|
|
24
|
+
|
|
25
|
+
| Test Type | File Pattern | Location |
|
|
26
|
+
|-----------|-------------|----------|
|
|
27
|
+
| Unit test | \`*.spec.ts\` | Next to the source file |
|
|
28
|
+
| E2E test | \`*.e2e-spec.ts\` | \`test/\` directory |
|
|
29
|
+
|
|
30
|
+
## Basic Test Structure
|
|
31
|
+
|
|
32
|
+
\`\`\`typescript
|
|
33
|
+
import { beforeEach, describe, expect, it, vi } from 'vitest';
|
|
34
|
+
|
|
35
|
+
describe('UserService', () => {
|
|
36
|
+
|
|
37
|
+
// #region Fields
|
|
38
|
+
|
|
39
|
+
let service: UserService;
|
|
40
|
+
let mockRepository: { execute: ReturnType<typeof vi.fn> };
|
|
41
|
+
let mockMappingService: { map: ReturnType<typeof vi.fn> };
|
|
42
|
+
|
|
43
|
+
// #endregion
|
|
44
|
+
|
|
45
|
+
// #region Methods
|
|
46
|
+
|
|
47
|
+
beforeEach(() => {
|
|
48
|
+
vi.restoreAllMocks();
|
|
49
|
+
|
|
50
|
+
mockRepository = {
|
|
51
|
+
execute: vi.fn(),
|
|
52
|
+
};
|
|
53
|
+
|
|
54
|
+
mockMappingService = {
|
|
55
|
+
map: vi.fn(),
|
|
56
|
+
};
|
|
57
|
+
|
|
58
|
+
service = new UserService(
|
|
59
|
+
mockRepository as unknown as UserRepository,
|
|
60
|
+
mockMappingService as unknown as MappingService,
|
|
61
|
+
);
|
|
62
|
+
});
|
|
63
|
+
|
|
64
|
+
describe('findById', () => {
|
|
65
|
+
it('should return entity when user exists', async () => {
|
|
66
|
+
// arrange
|
|
67
|
+
const mockUser = { id: '1', email: 'test@example.com', name: 'Test' };
|
|
68
|
+
mockRepository.execute.mockResolvedValue(mockUser);
|
|
69
|
+
|
|
70
|
+
// act
|
|
71
|
+
const result = await service.findById('1');
|
|
72
|
+
|
|
73
|
+
// assert
|
|
74
|
+
expect(result).toEqual(mockUser);
|
|
75
|
+
expect(mockRepository.execute).toHaveBeenCalledOnce();
|
|
76
|
+
});
|
|
77
|
+
|
|
78
|
+
it('should throw UserNotFoundError when user does not exist', async () => {
|
|
79
|
+
// arrange
|
|
80
|
+
mockRepository.execute.mockResolvedValue(null);
|
|
81
|
+
|
|
82
|
+
// act & assert
|
|
83
|
+
await expect(() => service.findById('nonexistent'))
|
|
84
|
+
.rejects.toThrow(UserNotFoundError);
|
|
85
|
+
});
|
|
86
|
+
});
|
|
87
|
+
|
|
88
|
+
// #endregion
|
|
89
|
+
|
|
90
|
+
});
|
|
91
|
+
\`\`\`
|
|
92
|
+
|
|
93
|
+
## Mocking Patterns
|
|
94
|
+
|
|
95
|
+
### Mocking Prisma Delegates (for Repository Tests)
|
|
96
|
+
|
|
97
|
+
\`\`\`typescript
|
|
98
|
+
vi.mock('@prisma/client/runtime/client', () => ({
|
|
99
|
+
PrismaClientKnownRequestError: class PrismaClientKnownRequestError extends Error {
|
|
100
|
+
public code: string;
|
|
101
|
+
public meta?: Record<string, unknown>;
|
|
102
|
+
public clientVersion: string;
|
|
103
|
+
public constructor(message: string, opts: { code: string; clientVersion: string; meta?: Record<string, unknown> }) {
|
|
104
|
+
super(message);
|
|
105
|
+
this.name = 'PrismaClientKnownRequestError';
|
|
106
|
+
this.code = opts.code;
|
|
107
|
+
this.clientVersion = opts.clientVersion;
|
|
108
|
+
this.meta = opts.meta;
|
|
109
|
+
}
|
|
110
|
+
},
|
|
111
|
+
PrismaClientUnknownRequestError: class PrismaClientUnknownRequestError extends Error {
|
|
112
|
+
public clientVersion: string;
|
|
113
|
+
public constructor(message: string, opts: { clientVersion: string }) {
|
|
114
|
+
super(message);
|
|
115
|
+
this.name = 'PrismaClientUnknownRequestError';
|
|
116
|
+
this.clientVersion = opts.clientVersion;
|
|
117
|
+
}
|
|
118
|
+
},
|
|
119
|
+
}));
|
|
120
|
+
\`\`\`
|
|
121
|
+
|
|
122
|
+
### Creating a Mock Delegate
|
|
123
|
+
|
|
124
|
+
\`\`\`typescript
|
|
125
|
+
type MockDelegate = Record<
|
|
126
|
+
| 'aggregate' | 'count' | 'create' | 'createMany' | 'createManyAndReturn'
|
|
127
|
+
| 'delete' | 'deleteMany' | 'findFirst' | 'findFirstOrThrow'
|
|
128
|
+
| 'findMany' | 'findUnique' | 'findUniqueOrThrow'
|
|
129
|
+
| 'groupBy' | 'update' | 'updateMany' | 'upsert',
|
|
130
|
+
ReturnType<typeof vi.fn>
|
|
131
|
+
>;
|
|
132
|
+
|
|
133
|
+
function createMockDelegate(): MockDelegate {
|
|
134
|
+
return {
|
|
135
|
+
findUnique: vi.fn(),
|
|
136
|
+
findFirst: vi.fn(),
|
|
137
|
+
findMany: vi.fn(),
|
|
138
|
+
create: vi.fn(),
|
|
139
|
+
createMany: vi.fn(),
|
|
140
|
+
createManyAndReturn: vi.fn(),
|
|
141
|
+
update: vi.fn(),
|
|
142
|
+
updateMany: vi.fn(),
|
|
143
|
+
upsert: vi.fn(),
|
|
144
|
+
delete: vi.fn(),
|
|
145
|
+
deleteMany: vi.fn(),
|
|
146
|
+
aggregate: vi.fn(),
|
|
147
|
+
count: vi.fn(),
|
|
148
|
+
groupBy: vi.fn(),
|
|
149
|
+
findFirstOrThrow: vi.fn(),
|
|
150
|
+
findUniqueOrThrow: vi.fn(),
|
|
151
|
+
};
|
|
152
|
+
}
|
|
153
|
+
\`\`\`
|
|
154
|
+
|
|
155
|
+
### Mocking DatabaseService
|
|
156
|
+
|
|
157
|
+
\`\`\`typescript
|
|
158
|
+
const mockDb = {
|
|
159
|
+
transactionCallback: vi.fn(),
|
|
160
|
+
client: {
|
|
161
|
+
user: createMockDelegate(),
|
|
162
|
+
},
|
|
163
|
+
} as unknown as DatabaseService;
|
|
164
|
+
\`\`\`
|
|
165
|
+
|
|
166
|
+
### Mocking a Query
|
|
167
|
+
|
|
168
|
+
\`\`\`typescript
|
|
169
|
+
const mockQuery = {
|
|
170
|
+
name: 'findUserById',
|
|
171
|
+
run: vi.fn().mockResolvedValue({ id: '1', email: 'test@example.com' }),
|
|
172
|
+
};
|
|
173
|
+
\`\`\`
|
|
174
|
+
|
|
175
|
+
## Repository Test Pattern
|
|
176
|
+
|
|
177
|
+
\`\`\`typescript
|
|
178
|
+
import { beforeEach, describe, expect, it, vi } from 'vitest';
|
|
179
|
+
|
|
180
|
+
// Mock Prisma runtime errors BEFORE importing test subject
|
|
181
|
+
vi.mock('@prisma/client/runtime/client', () => ({ /* ... */ }));
|
|
182
|
+
import { PrismaClientKnownRequestError } from '@prisma/client/runtime/client';
|
|
183
|
+
|
|
184
|
+
describe('UserRepository', () => {
|
|
185
|
+
|
|
186
|
+
let repository: TestRepository;
|
|
187
|
+
let mockModel: MockDelegate;
|
|
188
|
+
let mockDb: DatabaseService;
|
|
189
|
+
|
|
190
|
+
beforeEach(() => {
|
|
191
|
+
vi.restoreAllMocks();
|
|
192
|
+
mockModel = createMockDelegate();
|
|
193
|
+
mockDb = { transactionCallback: vi.fn() } as unknown as DatabaseService;
|
|
194
|
+
repository = new TestRepository(mockDb, mockModel);
|
|
195
|
+
});
|
|
196
|
+
|
|
197
|
+
describe('execute', () => {
|
|
198
|
+
it('should execute a query against the model', async () => {
|
|
199
|
+
// arrange
|
|
200
|
+
const mockQuery = {
|
|
201
|
+
name: 'testQuery',
|
|
202
|
+
run: vi.fn().mockResolvedValue({ id: '1' }),
|
|
203
|
+
};
|
|
204
|
+
|
|
205
|
+
// act
|
|
206
|
+
const result = await repository.execute(mockQuery);
|
|
207
|
+
|
|
208
|
+
// assert
|
|
209
|
+
expect(mockQuery.run).toHaveBeenCalledWith(mockModel);
|
|
210
|
+
expect(result).toEqual({ id: '1' });
|
|
211
|
+
});
|
|
212
|
+
|
|
213
|
+
it('should wrap PrismaClientKnownRequestError as RepositoryError', async () => {
|
|
214
|
+
// arrange
|
|
215
|
+
const prismaError = new PrismaClientKnownRequestError('Not found', {
|
|
216
|
+
code: 'P2025',
|
|
217
|
+
clientVersion: '6.0.0',
|
|
218
|
+
});
|
|
219
|
+
const mockQuery = {
|
|
220
|
+
name: 'failingQuery',
|
|
221
|
+
run: vi.fn().mockRejectedValue(prismaError),
|
|
222
|
+
};
|
|
223
|
+
|
|
224
|
+
// act & assert
|
|
225
|
+
await expect(() => repository.execute(mockQuery))
|
|
226
|
+
.rejects.toThrow(RepositoryError);
|
|
227
|
+
});
|
|
228
|
+
});
|
|
229
|
+
|
|
230
|
+
});
|
|
231
|
+
\`\`\`
|
|
232
|
+
|
|
233
|
+
## Service Test Pattern
|
|
234
|
+
|
|
235
|
+
\`\`\`typescript
|
|
236
|
+
describe('ProductService', () => {
|
|
237
|
+
|
|
238
|
+
let service: ProductService;
|
|
239
|
+
let mockRepo: { execute: ReturnType<typeof vi.fn> };
|
|
240
|
+
|
|
241
|
+
beforeEach(() => {
|
|
242
|
+
vi.restoreAllMocks();
|
|
243
|
+
mockRepo = { execute: vi.fn() };
|
|
244
|
+
service = new ProductService(mockRepo as unknown as ProductRepository);
|
|
245
|
+
});
|
|
246
|
+
|
|
247
|
+
describe('findById', () => {
|
|
248
|
+
it('should return entity when found', async () => {
|
|
249
|
+
// arrange
|
|
250
|
+
const expected = { id: '1', name: 'Product A', barcode: '123' };
|
|
251
|
+
mockRepo.execute.mockResolvedValue(expected);
|
|
252
|
+
|
|
253
|
+
// act
|
|
254
|
+
const result = await service.findById('1');
|
|
255
|
+
|
|
256
|
+
// assert
|
|
257
|
+
expect(result).toEqual(expected);
|
|
258
|
+
});
|
|
259
|
+
|
|
260
|
+
it('should throw domain error when not found', async () => {
|
|
261
|
+
// arrange
|
|
262
|
+
mockRepo.execute.mockResolvedValue(null);
|
|
263
|
+
|
|
264
|
+
// act & assert
|
|
265
|
+
await expect(() => service.findById('unknown'))
|
|
266
|
+
.rejects.toThrow(ProductNotFoundError);
|
|
267
|
+
});
|
|
268
|
+
});
|
|
269
|
+
|
|
270
|
+
});
|
|
271
|
+
\`\`\`
|
|
272
|
+
|
|
273
|
+
## Mapping Profile Test Pattern
|
|
274
|
+
|
|
275
|
+
\`\`\`typescript
|
|
276
|
+
describe('ProductMappingProfile', () => {
|
|
277
|
+
|
|
278
|
+
let mappingService: MappingService;
|
|
279
|
+
|
|
280
|
+
beforeEach(() => {
|
|
281
|
+
mappingService = new MappingService();
|
|
282
|
+
const profile = new ProductMappingProfile();
|
|
283
|
+
mappingService.registerProfile(profile);
|
|
284
|
+
});
|
|
285
|
+
|
|
286
|
+
it('should map input to response correctly', () => {
|
|
287
|
+
// arrange
|
|
288
|
+
const input: IProductMappingInput = {
|
|
289
|
+
id: '1',
|
|
290
|
+
barcode: '123',
|
|
291
|
+
name: 'Product A',
|
|
292
|
+
categoryId: 'cat-1',
|
|
293
|
+
createdAt: new Date('2026-01-01'),
|
|
294
|
+
};
|
|
295
|
+
|
|
296
|
+
// act
|
|
297
|
+
const result = mappingService.map(PRODUCT_MAPPING_KEY, input);
|
|
298
|
+
|
|
299
|
+
// assert
|
|
300
|
+
expect(result).toBeInstanceOf(ProductResponse);
|
|
301
|
+
expect(result.id).toBe('1');
|
|
302
|
+
expect(result.barcode).toBe('123');
|
|
303
|
+
expect(result.name).toBe('Product A');
|
|
304
|
+
});
|
|
305
|
+
|
|
306
|
+
});
|
|
307
|
+
\`\`\`
|
|
308
|
+
|
|
309
|
+
## Test Conventions
|
|
310
|
+
|
|
311
|
+
### Comments
|
|
312
|
+
|
|
313
|
+
\`\`\`typescript
|
|
314
|
+
// Use AAA comments:
|
|
315
|
+
// arrange — set up test data and mocks
|
|
316
|
+
// act — call the method under test
|
|
317
|
+
// act & assert — when the assertion is on the thrown error
|
|
318
|
+
// assert — verify the outcome
|
|
319
|
+
\`\`\`
|
|
320
|
+
|
|
321
|
+
### Regions
|
|
322
|
+
|
|
323
|
+
\`\`\`typescript
|
|
324
|
+
describe('MyClass', () => {
|
|
325
|
+
|
|
326
|
+
// #region Fields
|
|
327
|
+
let service: MyService;
|
|
328
|
+
// #endregion
|
|
329
|
+
|
|
330
|
+
// #region Methods
|
|
331
|
+
beforeEach(() => { ... });
|
|
332
|
+
|
|
333
|
+
describe('methodName', () => { ... });
|
|
334
|
+
// #endregion
|
|
335
|
+
|
|
336
|
+
});
|
|
337
|
+
\`\`\`
|
|
338
|
+
|
|
339
|
+
### Naming
|
|
340
|
+
|
|
341
|
+
- \`describe\` blocks: Class name or method name
|
|
342
|
+
- \`it\` blocks: \`'should <expected behavior> when <condition>'\`
|
|
343
|
+
|
|
344
|
+
## Rules
|
|
345
|
+
|
|
346
|
+
1. **Every public service method needs at least one happy-path and one failure-path test.**
|
|
347
|
+
2. **Use \`vi.restoreAllMocks()\` in \`beforeEach\`** — prevent mock leakage between tests.
|
|
348
|
+
3. **Mock at the boundary** — mock repositories in service tests, mock delegates in repository tests.
|
|
349
|
+
4. **AAA pattern** — clearly separate arrange, act, assert with comments.
|
|
350
|
+
5. **\`vi.mock()\` for modules must appear before imports** of the mocked module.
|
|
351
|
+
6. **No real database in unit tests** — use mocks. Use Testcontainers for integration tests.
|
|
352
|
+
7. **Assert on behavior, not implementation** — verify return values and thrown errors, not internal calls
|
|
353
|
+
(unless the call IS the behavior, e.g., verifying a repository was called).
|
|
354
|
+
8. **Use \`mockResolvedValue\` / \`mockRejectedValue\`** for async mocks.
|
|
355
|
+
`;
|
|
356
|
+
//# sourceMappingURL=testingPattern.js.map
|
package/src/main.d.ts
ADDED
package/src/main.js
ADDED
|
@@ -0,0 +1,226 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
"use strict";
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
const mcp_js_1 = require("@modelcontextprotocol/sdk/server/mcp.js");
|
|
5
|
+
const stdio_js_1 = require("@modelcontextprotocol/sdk/server/stdio.js");
|
|
6
|
+
const zod_1 = require("zod");
|
|
7
|
+
const DocsLoader_1 = require("./DocsLoader");
|
|
8
|
+
const configPattern_1 = require("./knowledge/configPattern");
|
|
9
|
+
const dtoPattern_1 = require("./knowledge/dtoPattern");
|
|
10
|
+
const errorHandlingPattern_1 = require("./knowledge/errorHandlingPattern");
|
|
11
|
+
const guardPattern_1 = require("./knowledge/guardPattern");
|
|
12
|
+
const mappingPattern_1 = require("./knowledge/mappingPattern");
|
|
13
|
+
const modulePattern_1 = require("./knowledge/modulePattern");
|
|
14
|
+
const queryPattern_1 = require("./knowledge/queryPattern");
|
|
15
|
+
const repositoryPattern_1 = require("./knowledge/repositoryPattern");
|
|
16
|
+
const testingPattern_1 = require("./knowledge/testingPattern");
|
|
17
|
+
// #region Fields
|
|
18
|
+
const SERVER_NAME = 'archipel-mcp';
|
|
19
|
+
const SERVER_VERSION = '0.0.1';
|
|
20
|
+
// #endregion
|
|
21
|
+
// #region Bootstrap
|
|
22
|
+
async function main() {
|
|
23
|
+
const docsLoader = new DocsLoader_1.DocsLoader();
|
|
24
|
+
docsLoader.load();
|
|
25
|
+
const server = new mcp_js_1.McpServer({
|
|
26
|
+
name: SERVER_NAME,
|
|
27
|
+
version: SERVER_VERSION,
|
|
28
|
+
});
|
|
29
|
+
registerTools(server, docsLoader);
|
|
30
|
+
const transport = new stdio_js_1.StdioServerTransport();
|
|
31
|
+
await server.connect(transport);
|
|
32
|
+
process.stderr.write(`[${SERVER_NAME}] Server running on stdio\n`);
|
|
33
|
+
}
|
|
34
|
+
// #endregion
|
|
35
|
+
// #region Tool Registration
|
|
36
|
+
function registerTools(server, docsLoader) {
|
|
37
|
+
// --- list-packages ---
|
|
38
|
+
server.tool('list-packages', 'Lists all available Archipel platform packages with their descriptions and tags.', {}, async () => {
|
|
39
|
+
const packages = Array.from(docsLoader.packages.values()).map((packageDoc) => ({
|
|
40
|
+
name: packageDoc.name,
|
|
41
|
+
package: packageDoc.packageScope,
|
|
42
|
+
description: packageDoc.description,
|
|
43
|
+
tags: packageDoc.tags,
|
|
44
|
+
}));
|
|
45
|
+
return {
|
|
46
|
+
content: [{ type: 'text', text: JSON.stringify(packages, null, 2) }],
|
|
47
|
+
};
|
|
48
|
+
});
|
|
49
|
+
// --- get-package-doc ---
|
|
50
|
+
server.tool('get-package-doc', 'Gets the full documentation (overview + API reference) for a specific Archipel platform package.', {
|
|
51
|
+
packageName: zod_1.z.string().describe('The package directory name (e.g. "platform-core", "platform-database").'),
|
|
52
|
+
}, async (params) => {
|
|
53
|
+
const packageDoc = docsLoader.packages.get(params.packageName);
|
|
54
|
+
if (!packageDoc) {
|
|
55
|
+
return {
|
|
56
|
+
content: [
|
|
57
|
+
{
|
|
58
|
+
type: 'text',
|
|
59
|
+
text: `Package "${params.packageName}" not found. Use the list-packages tool to see available packages.`,
|
|
60
|
+
},
|
|
61
|
+
],
|
|
62
|
+
isError: true,
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
const sections = [
|
|
66
|
+
`# ${packageDoc.title}`,
|
|
67
|
+
'',
|
|
68
|
+
`> ${packageDoc.description}`,
|
|
69
|
+
'',
|
|
70
|
+
`**Package:** \`${packageDoc.packageScope}\``,
|
|
71
|
+
];
|
|
72
|
+
if (packageDoc.tags.length > 0) {
|
|
73
|
+
sections.push(`**Tags:** ${packageDoc.tags.join(', ')}`);
|
|
74
|
+
}
|
|
75
|
+
sections.push('', packageDoc.content);
|
|
76
|
+
if (packageDoc.apiContent) {
|
|
77
|
+
sections.push('', '---', '', '## API Reference', '', packageDoc.apiContent);
|
|
78
|
+
}
|
|
79
|
+
return {
|
|
80
|
+
content: [{ type: 'text', text: sections.join('\n') }],
|
|
81
|
+
};
|
|
82
|
+
});
|
|
83
|
+
// --- search-docs ---
|
|
84
|
+
server.tool('search-docs', 'Searches across all Archipel platform documentation by keyword or phrase.', {
|
|
85
|
+
query: zod_1.z.string().describe('The search query to match against package names, descriptions, tags, and content.'),
|
|
86
|
+
}, async (params) => {
|
|
87
|
+
const results = docsLoader.search(params.query);
|
|
88
|
+
if (results.length === 0) {
|
|
89
|
+
return {
|
|
90
|
+
content: [{ type: 'text', text: `No documentation found matching: "${params.query}"` }],
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
const summary = results
|
|
94
|
+
.map((packageDoc) => [
|
|
95
|
+
`## ${packageDoc.title}`,
|
|
96
|
+
`**Package:** \`${packageDoc.packageScope}\``,
|
|
97
|
+
'',
|
|
98
|
+
packageDoc.description,
|
|
99
|
+
'',
|
|
100
|
+
packageDoc.content,
|
|
101
|
+
].join('\n'))
|
|
102
|
+
.join('\n\n---\n\n');
|
|
103
|
+
return {
|
|
104
|
+
content: [
|
|
105
|
+
{ type: 'text', text: `Found ${results.length} result(s) for "${params.query}":\n\n${summary}` },
|
|
106
|
+
],
|
|
107
|
+
};
|
|
108
|
+
});
|
|
109
|
+
// --- get-query-pattern ---
|
|
110
|
+
server.tool('get-query-pattern', 'Returns the Archipel query pattern documentation — interfaces, factories, rules, and examples. Optionally tailored to a specific Prisma model.', {
|
|
111
|
+
modelName: zod_1.z
|
|
112
|
+
.string()
|
|
113
|
+
.optional()
|
|
114
|
+
.describe('Prisma model name (e.g. "User", "Order"). If provided, generates model-specific examples.'),
|
|
115
|
+
fields: zod_1.z
|
|
116
|
+
.array(zod_1.z.string())
|
|
117
|
+
.optional()
|
|
118
|
+
.describe('Field names of the model (e.g. ["id", "email", "name", "createdAt"]). Used with modelName for tailored examples.'),
|
|
119
|
+
}, async (params) => {
|
|
120
|
+
let content = queryPattern_1.QUERY_PATTERN_KNOWLEDGE;
|
|
121
|
+
if (params.modelName && params.fields && params.fields.length > 0) {
|
|
122
|
+
content += '\n\n' + (0, queryPattern_1.QUERY_PATTERN_WITH_MODEL)(params.modelName, params.fields);
|
|
123
|
+
}
|
|
124
|
+
return {
|
|
125
|
+
content: [{ type: 'text', text: content }],
|
|
126
|
+
};
|
|
127
|
+
});
|
|
128
|
+
// --- get-repository-pattern ---
|
|
129
|
+
server.tool('get-repository-pattern', 'Returns the Archipel repository class pattern — how to create a RepositoryBase subclass with correct generics, module registration, and service injection. Optionally tailored to a specific Prisma model.', {
|
|
130
|
+
modelName: zod_1.z
|
|
131
|
+
.string()
|
|
132
|
+
.optional()
|
|
133
|
+
.describe('Prisma model name (e.g. "User", "Order"). If provided, generates a complete repository scaffold.'),
|
|
134
|
+
fields: zod_1.z
|
|
135
|
+
.array(zod_1.z.string())
|
|
136
|
+
.optional()
|
|
137
|
+
.describe('Field names of the model (e.g. ["id", "email", "name", "createdAt"]). Used with modelName for tailored examples.'),
|
|
138
|
+
}, async (params) => {
|
|
139
|
+
let content = repositoryPattern_1.REPOSITORY_PATTERN_KNOWLEDGE;
|
|
140
|
+
if (params.modelName && params.fields && params.fields.length > 0) {
|
|
141
|
+
content += '\n\n' + (0, repositoryPattern_1.REPOSITORY_PATTERN_WITH_MODEL)(params.modelName, params.fields);
|
|
142
|
+
}
|
|
143
|
+
return {
|
|
144
|
+
content: [{ type: 'text', text: content }],
|
|
145
|
+
};
|
|
146
|
+
});
|
|
147
|
+
// --- get-mapping-pattern ---
|
|
148
|
+
server.tool('get-mapping-pattern', 'Returns the Archipel mapping pattern — branded type-safe mapping keys, MappingProfileBase, MappingService, and MappingModule registration. Optionally tailored to a specific entity and response class.', {
|
|
149
|
+
entityName: zod_1.z
|
|
150
|
+
.string()
|
|
151
|
+
.optional()
|
|
152
|
+
.describe('Entity name (e.g. "Product", "User"). If provided, generates tailored mapping scaffold.'),
|
|
153
|
+
fields: zod_1.z
|
|
154
|
+
.array(zod_1.z.string())
|
|
155
|
+
.optional()
|
|
156
|
+
.describe('Field names of the entity (e.g. ["id", "name", "barcode", "createdAt"]).'),
|
|
157
|
+
responseName: zod_1.z
|
|
158
|
+
.string()
|
|
159
|
+
.optional()
|
|
160
|
+
.describe('Response class name (e.g. "ProductResponse"). Defaults to "{entityName}Response".'),
|
|
161
|
+
}, async (params) => {
|
|
162
|
+
let content = mappingPattern_1.MAPPING_PATTERN_KNOWLEDGE;
|
|
163
|
+
if (params.entityName && params.fields && params.fields.length > 0) {
|
|
164
|
+
const responseName = params.responseName || `${params.entityName}Response`;
|
|
165
|
+
content += '\n\n' + (0, mappingPattern_1.MAPPING_PATTERN_WITH_CONTEXT)(params.entityName, params.fields, responseName);
|
|
166
|
+
}
|
|
167
|
+
return {
|
|
168
|
+
content: [{ type: 'text', text: content }],
|
|
169
|
+
};
|
|
170
|
+
});
|
|
171
|
+
// --- get-module-pattern ---
|
|
172
|
+
server.tool('get-module-pattern', 'Returns the Archipel NestJS dynamic module pattern — register(), port/adapter injection, ConfigModule integration. Optionally tailored with module name and port definitions.', {
|
|
173
|
+
moduleName: zod_1.z
|
|
174
|
+
.string()
|
|
175
|
+
.optional()
|
|
176
|
+
.describe('Module name (e.g. "NotificationModule"). If provided, generates a complete module scaffold.'),
|
|
177
|
+
ports: zod_1.z
|
|
178
|
+
.array(zod_1.z.string())
|
|
179
|
+
.optional()
|
|
180
|
+
.describe('Port class names (e.g. ["NotificationPort", "TemplatePort"]). Abstract port classes for dependency inversion.'),
|
|
181
|
+
}, async (params) => {
|
|
182
|
+
let content = modulePattern_1.MODULE_PATTERN_KNOWLEDGE;
|
|
183
|
+
if (params.moduleName && params.ports && params.ports.length > 0) {
|
|
184
|
+
content += '\n\n' + (0, modulePattern_1.MODULE_PATTERN_WITH_CONTEXT)(params.moduleName, params.ports);
|
|
185
|
+
}
|
|
186
|
+
return {
|
|
187
|
+
content: [{ type: 'text', text: content }],
|
|
188
|
+
};
|
|
189
|
+
});
|
|
190
|
+
// --- get-error-handling-pattern ---
|
|
191
|
+
server.tool('get-error-handling-pattern', 'Returns the Archipel error handling pattern — domain errors, RepositoryError, exception filters, and structured error response envelopes.', {}, async () => {
|
|
192
|
+
return {
|
|
193
|
+
content: [{ type: 'text', text: errorHandlingPattern_1.ERROR_HANDLING_PATTERN_KNOWLEDGE }],
|
|
194
|
+
};
|
|
195
|
+
});
|
|
196
|
+
// --- get-config-pattern ---
|
|
197
|
+
server.tool('get-config-pattern', 'Returns the Archipel configuration pattern — typed config keys (createConfigKey), ConfigRegistry, ConfigService, env.ts conventions, and ConfigModule integration.', {}, async () => {
|
|
198
|
+
return {
|
|
199
|
+
content: [{ type: 'text', text: configPattern_1.CONFIG_PATTERN_KNOWLEDGE }],
|
|
200
|
+
};
|
|
201
|
+
});
|
|
202
|
+
// --- get-guard-pattern ---
|
|
203
|
+
server.tool('get-guard-pattern', 'Returns the Archipel guard & interceptor pattern — metadata decorators, FeatureGuard, RolesGuard, FeatureUsageInterceptor, and the full decorator-guard-interceptor trio.', {}, async () => {
|
|
204
|
+
return {
|
|
205
|
+
content: [{ type: 'text', text: guardPattern_1.GUARD_PATTERN_KNOWLEDGE }],
|
|
206
|
+
};
|
|
207
|
+
});
|
|
208
|
+
// --- get-dto-pattern ---
|
|
209
|
+
server.tool('get-dto-pattern', 'Returns the Archipel DTO & validation pattern — Request/Response DTOs, class-validator decorators, cross-field validation, query parameter DTOs, OpenAPI integration, and naming conventions.', {}, async () => {
|
|
210
|
+
return {
|
|
211
|
+
content: [{ type: 'text', text: dtoPattern_1.DTO_PATTERN_KNOWLEDGE }],
|
|
212
|
+
};
|
|
213
|
+
});
|
|
214
|
+
// --- get-testing-pattern ---
|
|
215
|
+
server.tool('get-testing-pattern', 'Returns the Archipel testing pattern — Vitest conventions, mocking patterns for repositories/services/delegates, AAA structure, and test naming conventions.', {}, async () => {
|
|
216
|
+
return {
|
|
217
|
+
content: [{ type: 'text', text: testingPattern_1.TESTING_PATTERN_KNOWLEDGE }],
|
|
218
|
+
};
|
|
219
|
+
});
|
|
220
|
+
}
|
|
221
|
+
// #endregion
|
|
222
|
+
main().catch((error) => {
|
|
223
|
+
process.stderr.write(`[${SERVER_NAME}] Fatal error: ${String(error)}\n`);
|
|
224
|
+
process.exit(1);
|
|
225
|
+
});
|
|
226
|
+
//# sourceMappingURL=main.js.map
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Describes a loaded package documentation entry.
|
|
3
|
+
*/
|
|
4
|
+
export interface IPackageDoc {
|
|
5
|
+
/** Directory name (e.g. "platform-core"). */
|
|
6
|
+
readonly name: string;
|
|
7
|
+
/** Human-readable title from frontmatter. */
|
|
8
|
+
readonly title: string;
|
|
9
|
+
/** Short description from frontmatter. */
|
|
10
|
+
readonly description: string;
|
|
11
|
+
/** Tags from frontmatter. */
|
|
12
|
+
readonly tags: readonly string[];
|
|
13
|
+
/** Scoped npm package name (e.g. "@breadstone/archipel-platform-core"). */
|
|
14
|
+
readonly packageScope: string;
|
|
15
|
+
/** Markdown body of the hand-written docs (without frontmatter). */
|
|
16
|
+
readonly content: string;
|
|
17
|
+
/** Concatenated API reference markdown (from api/ subfolder). */
|
|
18
|
+
readonly apiContent: string;
|
|
19
|
+
}
|