@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.
Files changed (347) hide show
  1. package/README.md +80 -0
  2. package/data/packages/index.md +42 -0
  3. package/data/packages/platform-authentication/api/Class.AnonymousAuthGuard.md +45 -0
  4. package/data/packages/platform-authentication/api/Class.AuthModule.md +72 -0
  5. package/data/packages/platform-authentication/api/Class.AuthSubjectPort.md +100 -0
  6. package/data/packages/platform-authentication/api/Class.AuthTokenService.md +64 -0
  7. package/data/packages/platform-authentication/api/Class.ChallengeService.md +136 -0
  8. package/data/packages/platform-authentication/api/Class.GithubAuthGuard.md +45 -0
  9. package/data/packages/platform-authentication/api/Class.JwtAuthGuard.md +45 -0
  10. package/data/packages/platform-authentication/api/Class.JwtPayloadBase.md +116 -0
  11. package/data/packages/platform-authentication/api/Class.LastActiveMiddleware.md +76 -0
  12. package/data/packages/platform-authentication/api/Class.LocalAuthGuard.md +45 -0
  13. package/data/packages/platform-authentication/api/Class.MfaService.md +257 -0
  14. package/data/packages/platform-authentication/api/Class.MfaSubjectPort.md +75 -0
  15. package/data/packages/platform-authentication/api/Class.RolesGuard.md +65 -0
  16. package/data/packages/platform-authentication/api/Class.SessionMappingProfile.md +65 -0
  17. package/data/packages/platform-authentication/api/Class.SessionPersistencePort.md +170 -0
  18. package/data/packages/platform-authentication/api/Class.SessionResponse.md +157 -0
  19. package/data/packages/platform-authentication/api/Class.SessionService.md +167 -0
  20. package/data/packages/platform-authentication/api/Class.SocialAuthGuard.md +66 -0
  21. package/data/packages/platform-authentication/api/Class.SocialAuthPort.md +53 -0
  22. package/data/packages/platform-authentication/api/Class.TokenEnricherPort.md +52 -0
  23. package/data/packages/platform-authentication/api/Class.VerificationService.md +159 -0
  24. package/data/packages/platform-authentication/api/Class.VerificationSubjectPort.md +121 -0
  25. package/data/packages/platform-authentication/api/Interface.IAuthModuleOptions.md +89 -0
  26. package/data/packages/platform-authentication/api/Interface.IAuthSubject.md +112 -0
  27. package/data/packages/platform-authentication/api/Interface.IMfaChallengePayload.md +87 -0
  28. package/data/packages/platform-authentication/api/Interface.IMfaChallengeState.md +123 -0
  29. package/data/packages/platform-authentication/api/Interface.IMfaConfirmation.md +27 -0
  30. package/data/packages/platform-authentication/api/Interface.IMfaSetup.md +63 -0
  31. package/data/packages/platform-authentication/api/Interface.IMfaSubject.md +136 -0
  32. package/data/packages/platform-authentication/api/Interface.IMfaSubjectUpdate.md +96 -0
  33. package/data/packages/platform-authentication/api/Interface.ISessionRecord.md +165 -0
  34. package/data/packages/platform-authentication/api/Interface.ISignInResult.md +87 -0
  35. package/data/packages/platform-authentication/api/Interface.ISocialProfile.md +63 -0
  36. package/data/packages/platform-authentication/api/Interface.IStoreSessionArgs.md +75 -0
  37. package/data/packages/platform-authentication/api/Interface.IVerifiableSubject.md +76 -0
  38. package/data/packages/platform-authentication/api/_media/ENVIRONMENT_VARIABLES.md +151 -0
  39. package/data/packages/platform-authentication/api/index.md +508 -0
  40. package/data/packages/platform-authentication/index.md +635 -0
  41. package/data/packages/platform-blob-storage/api/Class.BlobHealthIndicator.md +84 -0
  42. package/data/packages/platform-blob-storage/api/Class.BlobModule.md +54 -0
  43. package/data/packages/platform-blob-storage/api/Class.BlobObjectPersistencePort.md +80 -0
  44. package/data/packages/platform-blob-storage/api/Class.BlobService.md +253 -0
  45. package/data/packages/platform-blob-storage/api/Class.BlobVariantPersistencePort.md +56 -0
  46. package/data/packages/platform-blob-storage/api/Class.VercelBlobProvider.md +202 -0
  47. package/data/packages/platform-blob-storage/api/Interface.IBlobDeleteRequest.md +43 -0
  48. package/data/packages/platform-blob-storage/api/Interface.IBlobDownloadRequest.md +53 -0
  49. package/data/packages/platform-blob-storage/api/Interface.IBlobDownloadResult.md +69 -0
  50. package/data/packages/platform-blob-storage/api/Interface.IBlobModuleOptions.md +53 -0
  51. package/data/packages/platform-blob-storage/api/Interface.IBlobObjectMetadata.md +143 -0
  52. package/data/packages/platform-blob-storage/api/Interface.IBlobProvider.md +119 -0
  53. package/data/packages/platform-blob-storage/api/Interface.IBlobSignedUrlRequest.md +53 -0
  54. package/data/packages/platform-blob-storage/api/Interface.IBlobUploadRequest.md +103 -0
  55. package/data/packages/platform-blob-storage/api/Interface.IBlobUploadResult.md +33 -0
  56. package/data/packages/platform-blob-storage/api/Interface.ICustomBlobProviderRegistration.md +33 -0
  57. package/data/packages/platform-blob-storage/api/Interface.IVercelBlobProviderOptions.md +73 -0
  58. package/data/packages/platform-blob-storage/api/Interface.IVercelBlobProviderRegistration.md +33 -0
  59. package/data/packages/platform-blob-storage/api/TypeAlias.BlobDownloadResponseType.md +17 -0
  60. package/data/packages/platform-blob-storage/api/TypeAlias.BlobUploadBody.md +17 -0
  61. package/data/packages/platform-blob-storage/api/TypeAlias.IBlobProviderRegistration.md +17 -0
  62. package/data/packages/platform-blob-storage/api/index.md +111 -0
  63. package/data/packages/platform-blob-storage/index.md +280 -0
  64. package/data/packages/platform-core/api/Class.AppHealthIndicator.md +51 -0
  65. package/data/packages/platform-core/api/Class.BcryptService.md +69 -0
  66. package/data/packages/platform-core/api/Class.BlobResourceStrategy.md +196 -0
  67. package/data/packages/platform-core/api/Class.BooleanUtils.md +83 -0
  68. package/data/packages/platform-core/api/Class.CUIDGenerator.md +121 -0
  69. package/data/packages/platform-core/api/Class.CasingInterceptor.md +84 -0
  70. package/data/packages/platform-core/api/Class.CatchUtils.md +94 -0
  71. package/data/packages/platform-core/api/Class.ConfigModule.md +70 -0
  72. package/data/packages/platform-core/api/Class.ConfigRegistry.md +116 -0
  73. package/data/packages/platform-core/api/Class.ConfigService.md +139 -0
  74. package/data/packages/platform-core/api/Class.ConfigStrategyBase.md +110 -0
  75. package/data/packages/platform-core/api/Class.ContentTemplateEngine.md +64 -0
  76. package/data/packages/platform-core/api/Class.CryptoService.md +50 -0
  77. package/data/packages/platform-core/api/Class.DateTimeUtils.md +102 -0
  78. package/data/packages/platform-core/api/Class.DeviceParserService.md +53 -0
  79. package/data/packages/platform-core/api/Class.EmbeddedResourceStrategy.md +216 -0
  80. package/data/packages/platform-core/api/Class.EnvironmentConfigStrategy.md +144 -0
  81. package/data/packages/platform-core/api/Class.ErrorTemplateService.md +110 -0
  82. package/data/packages/platform-core/api/Class.EventHub.md +164 -0
  83. package/data/packages/platform-core/api/Class.EventModule.md +23 -0
  84. package/data/packages/platform-core/api/Class.FileConfigStrategy.md +150 -0
  85. package/data/packages/platform-core/api/Class.FileResourceStrategy.md +193 -0
  86. package/data/packages/platform-core/api/Class.GUIDGenerator.md +86 -0
  87. package/data/packages/platform-core/api/Class.GlobalExceptionFilter.md +67 -0
  88. package/data/packages/platform-core/api/Class.HealthModule.md +43 -0
  89. package/data/packages/platform-core/api/Class.HealthOrchestrator.md +65 -0
  90. package/data/packages/platform-core/api/Class.HostModule.md +33 -0
  91. package/data/packages/platform-core/api/Class.HostService.md +150 -0
  92. package/data/packages/platform-core/api/Class.HttpLoggerMiddleware.md +60 -0
  93. package/data/packages/platform-core/api/Class.IdGeneratorBase.md +88 -0
  94. package/data/packages/platform-core/api/Class.IdentifierModule.md +41 -0
  95. package/data/packages/platform-core/api/Class.IntelligenceCapabilityRegistrarBase.md +39 -0
  96. package/data/packages/platform-core/api/Class.IntelligenceCapabilityRegistry.md +103 -0
  97. package/data/packages/platform-core/api/Class.IntelligenceModule.md +23 -0
  98. package/data/packages/platform-core/api/Class.IntelligenceTextGenerator.md +82 -0
  99. package/data/packages/platform-core/api/Class.LimitRequestSizeMiddleware.md +60 -0
  100. package/data/packages/platform-core/api/Class.LocalizedTextRequest.md +43 -0
  101. package/data/packages/platform-core/api/Class.LocalizedTextResponse.md +43 -0
  102. package/data/packages/platform-core/api/Class.MappingBuilder.md +111 -0
  103. package/data/packages/platform-core/api/Class.MappingModule.md +47 -0
  104. package/data/packages/platform-core/api/Class.MappingNotRegisteredError.md +57 -0
  105. package/data/packages/platform-core/api/Class.MappingProfileBase.md +53 -0
  106. package/data/packages/platform-core/api/Class.MappingService.md +285 -0
  107. package/data/packages/platform-core/api/Class.MemoryLayeredCache.md +251 -0
  108. package/data/packages/platform-core/api/Class.NoopCacheMetricsRecorder.md +157 -0
  109. package/data/packages/platform-core/api/Class.NormalizedUtils.md +149 -0
  110. package/data/packages/platform-core/api/Class.OtpService.md +106 -0
  111. package/data/packages/platform-core/api/Class.PageableRequest.md +43 -0
  112. package/data/packages/platform-core/api/Class.PageableResponse.md +63 -0
  113. package/data/packages/platform-core/api/Class.ProblemDetailException.md +62 -0
  114. package/data/packages/platform-core/api/Class.ProblemDetailExceptionFilter.md +85 -0
  115. package/data/packages/platform-core/api/Class.QuantityResponse.md +43 -0
  116. package/data/packages/platform-core/api/Class.RedisLayeredCache.md +275 -0
  117. package/data/packages/platform-core/api/Class.ResourceManager.md +566 -0
  118. package/data/packages/platform-core/api/Class.ResourceModule.md +47 -0
  119. package/data/packages/platform-core/api/Class.ResponseReturn.md +504 -0
  120. package/data/packages/platform-core/api/Class.SseHub.md +184 -0
  121. package/data/packages/platform-core/api/Class.SseModule.md +43 -0
  122. package/data/packages/platform-core/api/Class.TimeStampResponse.md +43 -0
  123. package/data/packages/platform-core/api/Class.TypeMappingNotRegisteredError.md +58 -0
  124. package/data/packages/platform-core/api/Class.UUIDGenerator.md +86 -0
  125. package/data/packages/platform-core/api/Class.UserAvatarGeneratorService.md +48 -0
  126. package/data/packages/platform-core/api/Class.UserNameGeneratorService.md +65 -0
  127. package/data/packages/platform-core/api/Interface.IBlobResourceStrategyConfig.md +29 -0
  128. package/data/packages/platform-core/api/Interface.IBlobServiceAdapter.md +41 -0
  129. package/data/packages/platform-core/api/Interface.ICacheMetricsRecorder.md +121 -0
  130. package/data/packages/platform-core/api/Interface.ICacheStats.md +71 -0
  131. package/data/packages/platform-core/api/Interface.IConfigKey.md +64 -0
  132. package/data/packages/platform-core/api/Interface.IConfigModuleOptions.md +41 -0
  133. package/data/packages/platform-core/api/Interface.IConfigRegistryEntry.md +80 -0
  134. package/data/packages/platform-core/api/Interface.IDeviceInfo.md +81 -0
  135. package/data/packages/platform-core/api/Interface.IErrorPageParams.md +154 -0
  136. package/data/packages/platform-core/api/Interface.IEventKey.md +58 -0
  137. package/data/packages/platform-core/api/Interface.IEventMap.md +17 -0
  138. package/data/packages/platform-core/api/Interface.IFileResourceStrategyConfig.md +73 -0
  139. package/data/packages/platform-core/api/Interface.IHealthCheckResult.md +47 -0
  140. package/data/packages/platform-core/api/Interface.IHealthIndicator.md +42 -0
  141. package/data/packages/platform-core/api/Interface.IHostContentParams.md +233 -0
  142. package/data/packages/platform-core/api/Interface.IIdGenerator.md +58 -0
  143. package/data/packages/platform-core/api/Interface.IIntelligenceArtifact.md +31 -0
  144. package/data/packages/platform-core/api/Interface.IIntelligenceCapability.md +62 -0
  145. package/data/packages/platform-core/api/Interface.IIntelligenceCapabilityMetadata.md +61 -0
  146. package/data/packages/platform-core/api/Interface.IIntelligenceCapabilityPayload.md +41 -0
  147. package/data/packages/platform-core/api/Interface.IIntelligenceCapabilityRegistry.md +69 -0
  148. package/data/packages/platform-core/api/Interface.IIntelligenceCapabilityResult.md +41 -0
  149. package/data/packages/platform-core/api/Interface.IIntelligenceCompletionUsage.md +41 -0
  150. package/data/packages/platform-core/api/Interface.IIntelligenceContext.md +63 -0
  151. package/data/packages/platform-core/api/Interface.IIntelligenceContextBuilder.md +32 -0
  152. package/data/packages/platform-core/api/Interface.IIntelligenceConversationMessageSnapshot.md +61 -0
  153. package/data/packages/platform-core/api/Interface.IIntelligenceConversationSnapshot.md +51 -0
  154. package/data/packages/platform-core/api/Interface.IIntelligenceFollowUpQuestion.md +41 -0
  155. package/data/packages/platform-core/api/Interface.IIntelligenceIntent.md +41 -0
  156. package/data/packages/platform-core/api/Interface.IIntelligenceIntentEntity.md +31 -0
  157. package/data/packages/platform-core/api/Interface.IIntelligenceMessageModel.md +61 -0
  158. package/data/packages/platform-core/api/Interface.IIntelligenceMessagePayload.md +31 -0
  159. package/data/packages/platform-core/api/Interface.IIntelligencePrompt.md +31 -0
  160. package/data/packages/platform-core/api/Interface.IIntelligencePromptMessage.md +31 -0
  161. package/data/packages/platform-core/api/Interface.IIntelligenceProviderConfiguration.md +81 -0
  162. package/data/packages/platform-core/api/Interface.IIntelligenceResponseMessage.md +31 -0
  163. package/data/packages/platform-core/api/Interface.IIntelligenceTextCompletion.md +53 -0
  164. package/data/packages/platform-core/api/Interface.IIntelligenceTextGenerationOptions.md +41 -0
  165. package/data/packages/platform-core/api/Interface.IIntelligenceTextGenerator.md +46 -0
  166. package/data/packages/platform-core/api/Interface.ILayeredCache.md +194 -0
  167. package/data/packages/platform-core/api/Interface.ILayeredCacheOptions.md +71 -0
  168. package/data/packages/platform-core/api/Interface.IMappingBuilder.md +77 -0
  169. package/data/packages/platform-core/api/Interface.IMappingKey.md +59 -0
  170. package/data/packages/platform-core/api/Interface.IMappingProfile.md +33 -0
  171. package/data/packages/platform-core/api/Interface.IOtpService.md +78 -0
  172. package/data/packages/platform-core/api/Interface.IOtpUriOptions.md +47 -0
  173. package/data/packages/platform-core/api/Interface.IRedisLayeredCacheOptions.md +108 -0
  174. package/data/packages/platform-core/api/Interface.IResourceManagerConfig.md +72 -0
  175. package/data/packages/platform-core/api/Interface.IResourceMetadata.md +95 -0
  176. package/data/packages/platform-core/api/Interface.IResourceResult.md +35 -0
  177. package/data/packages/platform-core/api/Interface.IResourceStrategy.md +135 -0
  178. package/data/packages/platform-core/api/Interface.ISseEventData.md +37 -0
  179. package/data/packages/platform-core/api/Interface.ISseHub.md +92 -0
  180. package/data/packages/platform-core/api/Namespace.ISseEventData.md +34 -0
  181. package/data/packages/platform-core/api/TypeAlias.CamelCase.md +19 -0
  182. package/data/packages/platform-core/api/TypeAlias.IntelligenceConversationMessageRole.md +16 -0
  183. package/data/packages/platform-core/api/TypeAlias.IntelligenceProviderName.md +15 -0
  184. package/data/packages/platform-core/api/TypeAlias.ProblemDetail.md +29 -0
  185. package/data/packages/platform-core/api/TypeAlias.ProblemDetailTypeUrlResolver.md +26 -0
  186. package/data/packages/platform-core/api/TypeAlias.SetOptional.md +22 -0
  187. package/data/packages/platform-core/api/TypeAlias.StringValue.md +13 -0
  188. package/data/packages/platform-core/api/index.md +645 -0
  189. package/data/packages/platform-core/index.md +483 -0
  190. package/data/packages/platform-database/api/Class.DatabaseHealthIndicator.md +80 -0
  191. package/data/packages/platform-database/api/Class.DatabaseModule.md +75 -0
  192. package/data/packages/platform-database/api/Class.DatabaseService.md +165 -0
  193. package/data/packages/platform-database/api/Class.PrismaService.md +116 -0
  194. package/data/packages/platform-database/api/Class.RepositoryBase.md +526 -0
  195. package/data/packages/platform-database/api/Class.RepositoryExceptionFilter.md +60 -0
  196. package/data/packages/platform-database/api/Interface.IDatabaseModuleConfig.md +27 -0
  197. package/data/packages/platform-database/api/Interface.IPaginateOptions.md +33 -0
  198. package/data/packages/platform-database/api/Interface.IPaginatedResult.md +82 -0
  199. package/data/packages/platform-database/api/Interface.IRepositoryQuery.md +56 -0
  200. package/data/packages/platform-database/api/Interface.ITransactionalRepositoryQuery.md +55 -0
  201. package/data/packages/platform-database/api/TypeAlias.DelegateArgs.md +23 -0
  202. package/data/packages/platform-database/api/TypeAlias.DelegateReturnTypes.md +23 -0
  203. package/data/packages/platform-database/api/TypeAlias.PaginateFunction.md +36 -0
  204. package/data/packages/platform-database/api/TypeAlias.QueryResultType.md +32 -0
  205. package/data/packages/platform-database/api/TypeAlias.TransactionalQueryResultType.md +31 -0
  206. package/data/packages/platform-database/api/index.md +183 -0
  207. package/data/packages/platform-database/index.md +300 -0
  208. package/data/packages/platform-documents/api/Class.BaseDocumentRenderer.md +103 -0
  209. package/data/packages/platform-documents/api/Class.DocumentEngine.md +85 -0
  210. package/data/packages/platform-documents/api/Class.DocumentModule.md +52 -0
  211. package/data/packages/platform-documents/api/Class.SharpImageProcessor.md +136 -0
  212. package/data/packages/platform-documents/api/Interface.IDocumentModuleOptions.md +100 -0
  213. package/data/packages/platform-documents/api/Interface.IDocumentPlaceholderDetail.md +75 -0
  214. package/data/packages/platform-documents/api/Interface.IDocumentProbeReport.md +123 -0
  215. package/data/packages/platform-documents/api/Interface.IDocumentRenderer.md +52 -0
  216. package/data/packages/platform-documents/api/Interface.IImagePayload.md +63 -0
  217. package/data/packages/platform-documents/api/Interface.IImageProcessor.md +100 -0
  218. package/data/packages/platform-documents/api/Interface.IRenderOptions.md +69 -0
  219. package/data/packages/platform-documents/api/Interface.IRenderResult.md +63 -0
  220. package/data/packages/platform-documents/api/TypeAlias.DocumentFormat.md +19 -0
  221. package/data/packages/platform-documents/api/TypeAlias.EngineType.md +19 -0
  222. package/data/packages/platform-documents/api/TypeAlias.ImageMimeType.md +19 -0
  223. package/data/packages/platform-documents/api/TypeAlias.TemplateFormat.md +19 -0
  224. package/data/packages/platform-documents/api/TypeAlias.TemplateType.md +19 -0
  225. package/data/packages/platform-documents/api/index.md +91 -0
  226. package/data/packages/platform-documents/index.md +219 -0
  227. package/data/packages/platform-logging/api/Class.AnalyticsService.md +113 -0
  228. package/data/packages/platform-logging/api/Class.LoggerModule.md +25 -0
  229. package/data/packages/platform-logging/api/index.md +42 -0
  230. package/data/packages/platform-logging/index.md +92 -0
  231. package/data/packages/platform-mailing/api/Class.BlobTemplateFetchStrategy.md +67 -0
  232. package/data/packages/platform-mailing/api/Class.DeliveryStrategyBase.md +55 -0
  233. package/data/packages/platform-mailing/api/Class.FileTemplateFetchStrategy.md +65 -0
  234. package/data/packages/platform-mailing/api/Class.LogDeliveryStrategy.md +82 -0
  235. package/data/packages/platform-mailing/api/Class.MailHealthIndicator.md +83 -0
  236. package/data/packages/platform-mailing/api/Class.MailModule.md +27 -0
  237. package/data/packages/platform-mailing/api/Class.MailService.md +101 -0
  238. package/data/packages/platform-mailing/api/Class.MailTemplateEngine.md +98 -0
  239. package/data/packages/platform-mailing/api/Class.MailVerificationService.md +90 -0
  240. package/data/packages/platform-mailing/api/Class.MailgunDeliveryStrategy.md +82 -0
  241. package/data/packages/platform-mailing/api/Class.PostmarkDeliveryStrategy.md +82 -0
  242. package/data/packages/platform-mailing/api/Class.ResendDeliveryStrategy.md +82 -0
  243. package/data/packages/platform-mailing/api/Class.SendGridDeliveryStrategy.md +82 -0
  244. package/data/packages/platform-mailing/api/Class.SmtpDeliveryStrategy.md +82 -0
  245. package/data/packages/platform-mailing/api/Class.TemplateFetchStrategyBase.md +42 -0
  246. package/data/packages/platform-mailing/api/Interface.IMailEvents.md +71 -0
  247. package/data/packages/platform-mailing/api/Interface.IMailTemplateVariants.md +35 -0
  248. package/data/packages/platform-mailing/api/TypeAlias.MailTemplateFormat.md +19 -0
  249. package/data/packages/platform-mailing/api/index.md +404 -0
  250. package/data/packages/platform-mailing/index.md +335 -0
  251. package/data/packages/platform-mcp/api/Class.McpDiscoveryService.md +65 -0
  252. package/data/packages/platform-mcp/api/Class.McpModule.md +83 -0
  253. package/data/packages/platform-mcp/api/Class.McpRegistryService.md +147 -0
  254. package/data/packages/platform-mcp/api/Class.McpServerService.md +197 -0
  255. package/data/packages/platform-mcp/api/Interface.IMcpHandlerMetadata.md +47 -0
  256. package/data/packages/platform-mcp/api/Interface.IMcpModuleAsyncOptions.md +76 -0
  257. package/data/packages/platform-mcp/api/Interface.IMcpModuleOptions.md +126 -0
  258. package/data/packages/platform-mcp/api/Interface.IMcpModuleOptionsFactory.md +28 -0
  259. package/data/packages/platform-mcp/api/Interface.IMcpPromptMetadata.md +59 -0
  260. package/data/packages/platform-mcp/api/Interface.IMcpResourceMetadata.md +73 -0
  261. package/data/packages/platform-mcp/api/Interface.IMcpToolMetadata.md +83 -0
  262. package/data/packages/platform-mcp/api/Interface.IRegisteredPrompt.md +41 -0
  263. package/data/packages/platform-mcp/api/Interface.IRegisteredResource.md +41 -0
  264. package/data/packages/platform-mcp/api/Interface.IRegisteredTool.md +41 -0
  265. package/data/packages/platform-mcp/api/Interface.ISseTransportOptions.md +23 -0
  266. package/data/packages/platform-mcp/api/Interface.IStreamableHttpTransportOptions.md +39 -0
  267. package/data/packages/platform-mcp/api/index.md +123 -0
  268. package/data/packages/platform-mcp/index.md +299 -0
  269. package/data/packages/platform-openapi/api/Class.SwaggerFeatureDiscovery.md +71 -0
  270. package/data/packages/platform-openapi/api/Class.SwaggerFeatureRegistry.md +104 -0
  271. package/data/packages/platform-openapi/api/Class.SwaggerMultiDocumentService.md +82 -0
  272. package/data/packages/platform-openapi/api/Class.SwaggerTheme.md +51 -0
  273. package/data/packages/platform-openapi/api/Interface.IFeatureSwaggerConfig.md +73 -0
  274. package/data/packages/platform-openapi/api/Interface.ISwaggerFeatureMetadata.md +73 -0
  275. package/data/packages/platform-openapi/api/index.md +209 -0
  276. package/data/packages/platform-openapi/index.md +170 -0
  277. package/data/packages/platform-payments/api/Class.FeatureAccessPort.md +79 -0
  278. package/data/packages/platform-payments/api/Class.FeatureGuard.md +73 -0
  279. package/data/packages/platform-payments/api/Class.FeatureUsageInterceptor.md +74 -0
  280. package/data/packages/platform-payments/api/Class.LemonSqueezyClient.md +168 -0
  281. package/data/packages/platform-payments/api/Class.MollieClient.md +168 -0
  282. package/data/packages/platform-payments/api/Class.PaddleClient.md +168 -0
  283. package/data/packages/platform-payments/api/Class.PaymentClientPort.md +147 -0
  284. package/data/packages/platform-payments/api/Class.PaymentModule.md +53 -0
  285. package/data/packages/platform-payments/api/Class.StripeClient.md +168 -0
  286. package/data/packages/platform-payments/api/Interface.IFeatureAccessResult.md +75 -0
  287. package/data/packages/platform-payments/api/Interface.INormalizedCheckoutSession.md +75 -0
  288. package/data/packages/platform-payments/api/Interface.INormalizedPrice.md +85 -0
  289. package/data/packages/platform-payments/api/Interface.INormalizedSubscription.md +105 -0
  290. package/data/packages/platform-payments/api/Interface.INormalizedWebhookEvent.md +89 -0
  291. package/data/packages/platform-payments/api/Interface.IPaymentModuleOptions.md +65 -0
  292. package/data/packages/platform-payments/api/TypeAlias.SubscriptionStatus.md +27 -0
  293. package/data/packages/platform-payments/api/index.md +243 -0
  294. package/data/packages/platform-payments/index.md +532 -0
  295. package/data/packages/platform-reporting/api/Class.ReportingContributorRegistry.md +57 -0
  296. package/data/packages/platform-reporting/api/Class.ReportingDatasetNotFoundError.md +41 -0
  297. package/data/packages/platform-reporting/api/Class.ReportingFacade.md +85 -0
  298. package/data/packages/platform-reporting/api/Class.ReportingModule.md +23 -0
  299. package/data/packages/platform-reporting/api/Interface.IReportingContributor.md +62 -0
  300. package/data/packages/platform-reporting/api/Interface.IReportingDataset.md +83 -0
  301. package/data/packages/platform-reporting/api/Interface.IReportingDatasetField.md +71 -0
  302. package/data/packages/platform-reporting/api/Interface.IReportingQuery.md +61 -0
  303. package/data/packages/platform-reporting/api/Interface.IReportingQueryFilter.md +41 -0
  304. package/data/packages/platform-reporting/api/Interface.IReportingQueryResult.md +61 -0
  305. package/data/packages/platform-reporting/api/Interface.IReportingQuerySort.md +31 -0
  306. package/data/packages/platform-reporting/api/TypeAlias.ReportingFieldType.md +13 -0
  307. package/data/packages/platform-reporting/api/TypeAlias.ReportingFilterOperator.md +13 -0
  308. package/data/packages/platform-reporting/api/TypeAlias.ReportingQueryResultRow.md +15 -0
  309. package/data/packages/platform-reporting/api/index.md +90 -0
  310. package/data/packages/platform-reporting/index.md +229 -0
  311. package/data/packages/platform-telemetry/api/Class.NoopTelemetryFacade.md +118 -0
  312. package/data/packages/platform-telemetry/api/Class.TelemetryCacheMetricsRecorder.md +180 -0
  313. package/data/packages/platform-telemetry/api/Class.TelemetryFacade.md +132 -0
  314. package/data/packages/platform-telemetry/api/Class.TelemetryLoggerService.md +231 -0
  315. package/data/packages/platform-telemetry/api/Class.TelemetryModule.md +45 -0
  316. package/data/packages/platform-telemetry/api/Class.TelemetryRuleEngine.md +53 -0
  317. package/data/packages/platform-telemetry/api/Interface.ITelemetryFacade.md +90 -0
  318. package/data/packages/platform-telemetry/api/Interface.ITelemetryMetricsOptions.md +43 -0
  319. package/data/packages/platform-telemetry/api/Interface.ITelemetryOptions.md +141 -0
  320. package/data/packages/platform-telemetry/api/Interface.ITelemetryTracesOptions.md +43 -0
  321. package/data/packages/platform-telemetry/api/index.md +81 -0
  322. package/data/packages/platform-telemetry/index.md +234 -0
  323. package/package.json +39 -0
  324. package/src/DocsLoader.d.ts +14 -0
  325. package/src/DocsLoader.js +103 -0
  326. package/src/knowledge/configPattern.d.ts +5 -0
  327. package/src/knowledge/configPattern.js +211 -0
  328. package/src/knowledge/dtoPattern.d.ts +5 -0
  329. package/src/knowledge/dtoPattern.js +286 -0
  330. package/src/knowledge/errorHandlingPattern.d.ts +5 -0
  331. package/src/knowledge/errorHandlingPattern.js +219 -0
  332. package/src/knowledge/guardPattern.d.ts +5 -0
  333. package/src/knowledge/guardPattern.js +256 -0
  334. package/src/knowledge/mappingPattern.d.ts +6 -0
  335. package/src/knowledge/mappingPattern.js +322 -0
  336. package/src/knowledge/modulePattern.d.ts +6 -0
  337. package/src/knowledge/modulePattern.js +283 -0
  338. package/src/knowledge/queryPattern.d.ts +6 -0
  339. package/src/knowledge/queryPattern.js +215 -0
  340. package/src/knowledge/repositoryPattern.d.ts +6 -0
  341. package/src/knowledge/repositoryPattern.js +367 -0
  342. package/src/knowledge/testingPattern.d.ts +5 -0
  343. package/src/knowledge/testingPattern.js +356 -0
  344. package/src/main.d.ts +2 -0
  345. package/src/main.js +226 -0
  346. package/src/models/IPackageDoc.d.ts +19 -0
  347. package/src/models/IPackageDoc.js +3 -0
@@ -0,0 +1,211 @@
1
+ "use strict";
2
+ /**
3
+ * Static knowledge content for the Archipel configuration pattern.
4
+ * Returned by the get-config-pattern tool.
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.CONFIG_PATTERN_KNOWLEDGE = void 0;
8
+ exports.CONFIG_PATTERN_KNOWLEDGE = `# Archipel Configuration Pattern
9
+
10
+ ## Overview
11
+
12
+ Archipel uses a **typed configuration key** system with a **central registry**.
13
+ Each platform library declares its required and optional config keys in an \`env.ts\`
14
+ file, which are registered into the global \`ConfigRegistry\`. At runtime, the
15
+ \`ConfigService\` resolves values through a pluggable strategy (environment variables,
16
+ Azure App Configuration, etc.).
17
+
18
+ **Rule:** No direct \`process.env\` access outside of config strategy implementations.
19
+
20
+ ## Core Types
21
+
22
+ ### IConfigKey<TType>
23
+
24
+ \`\`\`typescript
25
+ export interface IConfigKey<TType = unknown> {
26
+ readonly _type?: TType; // Phantom type for compile-time safety
27
+ readonly key: string; // The actual config key string
28
+ }
29
+ \`\`\`
30
+
31
+ ### createConfigKey<TType>
32
+
33
+ \`\`\`typescript
34
+ import { createConfigKey } from '@breadstone/archipel-platform-core';
35
+
36
+ export const APP_URL = createConfigKey<string>('APP_URL');
37
+ export const APP_PORT = createConfigKey<number>('APP_PORT');
38
+ export const FEATURE_ENABLED = createConfigKey<boolean>('FEATURE_ENABLED');
39
+ \`\`\`
40
+
41
+ ## ConfigService API
42
+
43
+ \`\`\`typescript
44
+ @Injectable()
45
+ export class ConfigService {
46
+
47
+ // Throws if key not found
48
+ public get<T>(key: string): T;
49
+
50
+ // Returns fallback if key not found
51
+ public tryGet<T>(key: string, fallback: T): T;
52
+
53
+ // Compares a key's value to an expected value
54
+ public compare<T>(key: string, value: T): boolean;
55
+
56
+ }
57
+ \`\`\`
58
+
59
+ **Auto-parsing:** String values are automatically converted:
60
+ - \`'true'\` / \`'false'\` → \`boolean\`
61
+ - Numeric strings → \`number\`
62
+ - Empty strings → \`null\`
63
+
64
+ ## ConfigRegistry
65
+
66
+ A static global registry that collects all declared config keys at module initialization.
67
+
68
+ \`\`\`typescript
69
+ export class ConfigRegistry {
70
+
71
+ // Register keys for a module
72
+ public static register(module: string, entries: ReadonlyArray<Omit<IConfigRegistryEntry, 'module'>>): void;
73
+
74
+ // Query all registered entries
75
+ public static getAll(): ReadonlyArray<IConfigRegistryEntry>;
76
+ public static getByModule(): ReadonlyMap<string, ReadonlyArray<IConfigRegistryEntry>>;
77
+ public static getRequired(): ReadonlyArray<IConfigRegistryEntry>;
78
+ public static getModules(): ReadonlyArray<string>;
79
+
80
+ }
81
+ \`\`\`
82
+
83
+ ### IConfigRegistryEntry
84
+
85
+ \`\`\`typescript
86
+ export interface IConfigRegistryEntry<TType = unknown> {
87
+ readonly key: IConfigKey<TType>;
88
+ readonly module: string;
89
+ readonly required: boolean;
90
+ readonly defaultValue?: TType;
91
+ readonly description?: string;
92
+ }
93
+ \`\`\`
94
+
95
+ ## How to Add Configuration to a Library
96
+
97
+ ### Step 1: Define typed config keys in env.ts
98
+
99
+ \`\`\`typescript
100
+ // src/env.ts
101
+ import { createConfigKey } from '@breadstone/archipel-platform-core';
102
+ import { ConfigRegistry, IConfigRegistryEntry } from '@breadstone/archipel-platform-core';
103
+
104
+ // ──────────────────────────────────────────────────────────────
105
+ // Keys
106
+ // ──────────────────────────────────────────────────────────────
107
+
108
+ export const STRIPE_SECRET_KEY = createConfigKey<string>('STRIPE_SECRET_KEY');
109
+ export const STRIPE_WEBHOOK_SECRET = createConfigKey<string>('STRIPE_WEBHOOK_SECRET');
110
+ export const PAYMENT_CURRENCY = createConfigKey<string>('PAYMENT_CURRENCY');
111
+
112
+ // ──────────────────────────────────────────────────────────────
113
+ // Registry entries
114
+ // ──────────────────────────────────────────────────────────────
115
+
116
+ export const PLATFORM_PAYMENTS_CONFIG_ENTRIES: ReadonlyArray<Omit<IConfigRegistryEntry, 'module'>> = [
117
+ { key: STRIPE_SECRET_KEY, required: true, description: 'Stripe API secret key.' },
118
+ { key: STRIPE_WEBHOOK_SECRET, required: true, description: 'Stripe webhook signing secret.' },
119
+ { key: PAYMENT_CURRENCY, required: false, defaultValue: 'EUR', description: 'Default payment currency.' },
120
+ ];
121
+ \`\`\`
122
+
123
+ ### Step 2: Register in ConfigModule
124
+
125
+ \`\`\`typescript
126
+ // In the module's register() method:
127
+ imports: [ConfigModule.register('platform-payments', PLATFORM_PAYMENTS_CONFIG_ENTRIES)]
128
+ \`\`\`
129
+
130
+ Or for libraries without a dedicated module (self-registration):
131
+
132
+ \`\`\`typescript
133
+ // At the bottom of env.ts:
134
+ ConfigRegistry.register('platform-payments', PLATFORM_PAYMENTS_CONFIG_ENTRIES);
135
+ \`\`\`
136
+
137
+ ### Step 3: Use in services
138
+
139
+ \`\`\`typescript
140
+ @Injectable()
141
+ export class StripeClient {
142
+
143
+ private readonly _configService: ConfigService;
144
+
145
+ public constructor(configService: ConfigService) {
146
+ this._configService = configService;
147
+ }
148
+
149
+ private getApiKey(): string {
150
+ return this._configService.get<string>('STRIPE_SECRET_KEY');
151
+ }
152
+
153
+ }
154
+ \`\`\`
155
+
156
+ ## ConfigModule
157
+
158
+ ### register() — Per-library config registration
159
+
160
+ Declares which config keys a library needs. Used in \`imports\` of feature modules.
161
+
162
+ \`\`\`typescript
163
+ ConfigModule.register('platform-authentication', PLATFORM_AUTHENTICATION_CONFIG_ENTRIES)
164
+ \`\`\`
165
+
166
+ ### forRoot() — Application bootstrap
167
+
168
+ Configures the global strategy and static overrides. Used once in the root module.
169
+
170
+ \`\`\`typescript
171
+ ConfigModule.forRoot({
172
+ strategyFactory: () => new EnvironmentConfigStrategy(),
173
+ statics: { APP_VERSION: '1.0.0' },
174
+ })
175
+ \`\`\`
176
+
177
+ ## ConfigStrategyBase
178
+
179
+ Pluggable strategy for resolving config values:
180
+
181
+ \`\`\`typescript
182
+ export abstract class ConfigStrategyBase {
183
+ public abstract initialize(): void;
184
+ public abstract resolve<T>(key: string): T;
185
+ public abstract tryResolve<T>(key: string, fallback: T): T;
186
+ public abstract has(key: string): boolean;
187
+ }
188
+ \`\`\`
189
+
190
+ Implementations can read from environment variables, Azure App Configuration, Consul, etc.
191
+
192
+ ## Existing Config Modules
193
+
194
+ | Module | Prefix | Example Keys |
195
+ |--------|--------|-------------|
196
+ | platform-core | APP_, NODE_ENV, INTELLIGENCE_ | APP_URL, APP_PORT, APP_VERSION, INTELLIGENCE_MODEL |
197
+ | platform-authentication | AUTH_ | AUTH_JWT_SECRET, AUTH_JWT_EXPIRES_IN |
198
+ | platform-payments | STRIPE_ | STRIPE_SECRET_KEY, STRIPE_WEBHOOK_SECRET |
199
+ | platform-openapi | SWAGGER_ | SWAGGER_CONTACT_NAME, SWAGGER_CONTACT_URL |
200
+
201
+ ## Rules
202
+
203
+ 1. **All config keys defined via \`createConfigKey<T>()\`** — never raw \`process.env\` access.
204
+ 2. **Each library declares entries in \`env.ts\`** with required flag, default value, and description.
205
+ 3. **Registration via \`ConfigModule.register()\`** in the module, or self-registration for libraries without modules.
206
+ 4. **\`ConfigService.get()\` throws on missing required keys** — fail-fast at startup.
207
+ 5. **Use \`tryGet()\` with fallback** for optional keys.
208
+ 6. **Config key names use UPPER_SNAKE_CASE** matching environment variable conventions.
209
+ 7. **Group related keys** with comment separators in env.ts.
210
+ `;
211
+ //# sourceMappingURL=configPattern.js.map
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Static knowledge content for the Archipel DTO & validation pattern.
3
+ * Returned by the get-dto-pattern tool.
4
+ */
5
+ export declare const DTO_PATTERN_KNOWLEDGE = "# Archipel DTO & Validation Pattern\n\n## Overview\n\nArchipel uses **class-based DTOs** with **class-validator** decorators for input validation\nand **class-transformer** decorators for serialization control. A global `ValidationPipe`\nenforces validation on all incoming requests automatically.\n\nRequest DTOs validate input; Response classes define the output shape with\n`@ApiProperty` decorators for OpenAPI documentation.\n\n## Global Validation Pipe\n\n```typescript\n// In main.ts bootstrap:\napp.useGlobalPipes(\n new ValidationPipe({\n whitelist: true, // Strip unknown properties\n forbidNonWhitelisted: true, // Throw on unknown properties\n transform: true, // Auto-transform payloads to DTO instances\n }),\n);\n```\n\n## Request DTO (Input Validation)\n\n```typescript\n// dtos/CreateUserRequest.ts\nimport { Expose } from 'class-transformer';\nimport { IsEmail, IsString, MinLength, MaxLength } from 'class-validator';\nimport { ApiProperty } from '@nestjs/swagger';\n\nexport class CreateUserRequest {\n\n @Expose()\n @IsEmail()\n @ApiProperty({ example: 'user@example.com', description: 'User email address' })\n public email!: string;\n\n @Expose()\n @IsString()\n @MinLength(3)\n @MaxLength(50)\n @ApiProperty({ description: 'Display name' })\n public name!: string;\n\n @Expose()\n @IsString()\n @MinLength(8)\n @ApiProperty({ description: 'Password (min 8 characters)' })\n public password!: string;\n\n}\n```\n\n## Response DTO (Output Shape)\n\n```typescript\n// dtos/UserResponse.ts\nimport { Expose } from 'class-transformer';\nimport { ApiProperty } from '@nestjs/swagger';\n\nexport class UserResponse {\n\n @Expose()\n @ApiProperty({ description: 'Unique identifier' })\n public id!: string;\n\n @Expose()\n @ApiProperty({ description: 'User email address' })\n public email!: string;\n\n @Expose()\n @ApiProperty({ description: 'Display name' })\n public name!: string;\n\n @Expose()\n @ApiProperty({ description: 'Account creation date' })\n public createdAt!: Date;\n\n // Note: password is intentionally NOT exposed\n\n}\n```\n\n## Common Validators\n\n### Basic Types\n\n| Decorator | Purpose |\n|-----------|---------|\n| `@IsString()` | Must be a string |\n| `@IsNumber()` | Must be a number |\n| `@IsBoolean()` | Must be a boolean |\n| `@IsEmail()` | Must be a valid email |\n| `@IsUUID()` | Must be a valid UUID |\n| `@IsDate()` | Must be a Date instance |\n| `@IsEnum(MyEnum)` | Must be a value from the enum |\n| `@IsOptional()` | Field is optional (skip validation if undefined) |\n\n### String Constraints\n\n| Decorator | Purpose |\n|-----------|---------|\n| `@MinLength(n)` | Minimum string length |\n| `@MaxLength(n)` | Maximum string length |\n| `@Matches(regex)` | Must match a regex pattern |\n| `@IsNotEmpty()` | Must not be empty string |\n\n### Number Constraints\n\n| Decorator | Purpose |\n|-----------|---------|\n| `@Min(n)` | Minimum value |\n| `@Max(n)` | Maximum value |\n| `@IsPositive()` | Must be > 0 |\n| `@IsInt()` | Must be integer |\n\n### Nested & Array\n\n| Decorator | Purpose |\n|-----------|---------|\n| `@ValidateNested()` | Validate nested objects |\n| `@Type(() => Cls)` | Transform to class instance (class-transformer) |\n| `@IsArray()` | Must be an array |\n| `@ArrayMinSize(n)` | Minimum array length |\n| `@ArrayMaxSize(n)` | Maximum array length |\n\n## Cross-Field Validation\n\nFor fields that depend on each other, use custom class-level validators:\n\n```typescript\nimport { ValidatorConstraint, ValidatorConstraintInterface, ValidationArguments, Validate } from 'class-validator';\n\n@ValidatorConstraint({ name: 'Match', async: false })\nexport class MatchConstraint implements ValidatorConstraintInterface {\n\n public validate(value: unknown, args: ValidationArguments): boolean {\n const [relatedPropertyName] = args.constraints;\n const relatedValue = (args.object as Record<string, unknown>)[relatedPropertyName];\n\n return value === relatedValue;\n }\n\n public defaultMessage(args: ValidationArguments): string {\n const [relatedPropertyName] = args.constraints;\n\n return \\`\\${args.property} must match \\${relatedPropertyName}\\`;\n }\n\n}\n\n// Usage in DTO:\nexport class ResetPasswordRequest {\n\n @Expose()\n @IsString()\n @MinLength(8)\n public password!: string;\n\n @Expose()\n @IsString()\n @Validate(MatchConstraint, ['password'])\n public confirmPassword!: string;\n\n}\n```\n\n## Query Parameter DTOs\n\nFor GET request query parameters, use `@Transform()` and `@Type()` for type coercion:\n\n```typescript\nimport { Type } from 'class-transformer';\nimport { IsOptional, IsInt, Min, Max, IsString } from 'class-validator';\nimport { ApiPropertyOptional } from '@nestjs/swagger';\n\nexport class PaginationQuery {\n\n @IsOptional()\n @Type(() => Number)\n @IsInt()\n @Min(1)\n @ApiPropertyOptional({ default: 1 })\n public page?: number = 1;\n\n @IsOptional()\n @Type(() => Number)\n @IsInt()\n @Min(1)\n @Max(100)\n @ApiPropertyOptional({ default: 20 })\n public perPage?: number = 20;\n\n @IsOptional()\n @IsString()\n @ApiPropertyOptional()\n public search?: string;\n\n}\n```\n\n## OpenAPI / Swagger Integration\n\n### @ApiProperty Decorators\n\n```typescript\n@ApiProperty({\n description: 'User email address',\n example: 'user@example.com',\n required: true,\n})\npublic email!: string;\n\n@ApiPropertyOptional({\n description: 'Profile bio',\n maxLength: 500,\n})\npublic bio?: string;\n```\n\n### Controller Response Decorators\n\n```typescript\n@Controller('/users')\n@ApiTags('Users')\nexport class UsersController {\n\n @Post()\n @HttpCode(HttpStatus.CREATED)\n @ApiOperation({ summary: 'Create a new user' })\n @ApiResponse({ status: 201, description: 'User created', type: UserResponse })\n @ApiResponse({ status: 400, description: 'Validation error' })\n public async createUser(@Body() body: CreateUserRequest): Promise<UserResponse> {\n // ...\n }\n\n}\n```\n\n## Naming Conventions\n\n| Type | Naming Pattern | Example |\n|------|---------------|---------|\n| Create input | `Create{Entity}Request` | `CreateUserRequest` |\n| Update input | `Update{Entity}Request` | `UpdateUserRequest` |\n| Query params | `{Entity}Query` or `Pagination{Entity}Query` | `UserQuery` |\n| Response | `{Entity}Response` | `UserResponse` |\n| List response | `{Entity}ListResponse` | `UserListResponse` |\n\n## Constants for Bounds\n\nDefine and reuse constants for upper limits:\n\n```typescript\n// constants/ValidationConstants.ts\nexport const MAX_PAGE_SIZE = 100;\nexport const MAX_SEARCH_LIMIT = 50;\nexport const MAX_NAME_LENGTH = 100;\nexport const MAX_BIO_LENGTH = 500;\n\n// In DTO:\n@Max(MAX_PAGE_SIZE)\npublic perPage?: number;\n```\n\n## Rules\n\n1. **Every field has `@Expose()`** for serialization control.\n2. **Every field has `@ApiProperty()`** for OpenAPI documentation.\n3. **Request DTOs use class-validator decorators** \u2014 validation is automatic via global pipe.\n4. **Response DTOs have no validation decorators** \u2014 they're output-only shapes.\n5. **Cross-field validation uses custom class-level validators** \u2014 never imperative checks in services.\n6. **Query parameters use `@Type(() => Number)`** for type coercion from strings.\n7. **Upper bounds (`@Max`, `@MaxLength`) defined as exported constants** \u2014 never inline magic numbers.\n8. **`whitelist: true` + `forbidNonWhitelisted: true`** strips and rejects unknown properties.\n";
@@ -0,0 +1,286 @@
1
+ "use strict";
2
+ /**
3
+ * Static knowledge content for the Archipel DTO & validation pattern.
4
+ * Returned by the get-dto-pattern tool.
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.DTO_PATTERN_KNOWLEDGE = void 0;
8
+ exports.DTO_PATTERN_KNOWLEDGE = `# Archipel DTO & Validation Pattern
9
+
10
+ ## Overview
11
+
12
+ Archipel uses **class-based DTOs** with **class-validator** decorators for input validation
13
+ and **class-transformer** decorators for serialization control. A global \`ValidationPipe\`
14
+ enforces validation on all incoming requests automatically.
15
+
16
+ Request DTOs validate input; Response classes define the output shape with
17
+ \`@ApiProperty\` decorators for OpenAPI documentation.
18
+
19
+ ## Global Validation Pipe
20
+
21
+ \`\`\`typescript
22
+ // In main.ts bootstrap:
23
+ app.useGlobalPipes(
24
+ new ValidationPipe({
25
+ whitelist: true, // Strip unknown properties
26
+ forbidNonWhitelisted: true, // Throw on unknown properties
27
+ transform: true, // Auto-transform payloads to DTO instances
28
+ }),
29
+ );
30
+ \`\`\`
31
+
32
+ ## Request DTO (Input Validation)
33
+
34
+ \`\`\`typescript
35
+ // dtos/CreateUserRequest.ts
36
+ import { Expose } from 'class-transformer';
37
+ import { IsEmail, IsString, MinLength, MaxLength } from 'class-validator';
38
+ import { ApiProperty } from '@nestjs/swagger';
39
+
40
+ export class CreateUserRequest {
41
+
42
+ @Expose()
43
+ @IsEmail()
44
+ @ApiProperty({ example: 'user@example.com', description: 'User email address' })
45
+ public email!: string;
46
+
47
+ @Expose()
48
+ @IsString()
49
+ @MinLength(3)
50
+ @MaxLength(50)
51
+ @ApiProperty({ description: 'Display name' })
52
+ public name!: string;
53
+
54
+ @Expose()
55
+ @IsString()
56
+ @MinLength(8)
57
+ @ApiProperty({ description: 'Password (min 8 characters)' })
58
+ public password!: string;
59
+
60
+ }
61
+ \`\`\`
62
+
63
+ ## Response DTO (Output Shape)
64
+
65
+ \`\`\`typescript
66
+ // dtos/UserResponse.ts
67
+ import { Expose } from 'class-transformer';
68
+ import { ApiProperty } from '@nestjs/swagger';
69
+
70
+ export class UserResponse {
71
+
72
+ @Expose()
73
+ @ApiProperty({ description: 'Unique identifier' })
74
+ public id!: string;
75
+
76
+ @Expose()
77
+ @ApiProperty({ description: 'User email address' })
78
+ public email!: string;
79
+
80
+ @Expose()
81
+ @ApiProperty({ description: 'Display name' })
82
+ public name!: string;
83
+
84
+ @Expose()
85
+ @ApiProperty({ description: 'Account creation date' })
86
+ public createdAt!: Date;
87
+
88
+ // Note: password is intentionally NOT exposed
89
+
90
+ }
91
+ \`\`\`
92
+
93
+ ## Common Validators
94
+
95
+ ### Basic Types
96
+
97
+ | Decorator | Purpose |
98
+ |-----------|---------|
99
+ | \`@IsString()\` | Must be a string |
100
+ | \`@IsNumber()\` | Must be a number |
101
+ | \`@IsBoolean()\` | Must be a boolean |
102
+ | \`@IsEmail()\` | Must be a valid email |
103
+ | \`@IsUUID()\` | Must be a valid UUID |
104
+ | \`@IsDate()\` | Must be a Date instance |
105
+ | \`@IsEnum(MyEnum)\` | Must be a value from the enum |
106
+ | \`@IsOptional()\` | Field is optional (skip validation if undefined) |
107
+
108
+ ### String Constraints
109
+
110
+ | Decorator | Purpose |
111
+ |-----------|---------|
112
+ | \`@MinLength(n)\` | Minimum string length |
113
+ | \`@MaxLength(n)\` | Maximum string length |
114
+ | \`@Matches(regex)\` | Must match a regex pattern |
115
+ | \`@IsNotEmpty()\` | Must not be empty string |
116
+
117
+ ### Number Constraints
118
+
119
+ | Decorator | Purpose |
120
+ |-----------|---------|
121
+ | \`@Min(n)\` | Minimum value |
122
+ | \`@Max(n)\` | Maximum value |
123
+ | \`@IsPositive()\` | Must be > 0 |
124
+ | \`@IsInt()\` | Must be integer |
125
+
126
+ ### Nested & Array
127
+
128
+ | Decorator | Purpose |
129
+ |-----------|---------|
130
+ | \`@ValidateNested()\` | Validate nested objects |
131
+ | \`@Type(() => Cls)\` | Transform to class instance (class-transformer) |
132
+ | \`@IsArray()\` | Must be an array |
133
+ | \`@ArrayMinSize(n)\` | Minimum array length |
134
+ | \`@ArrayMaxSize(n)\` | Maximum array length |
135
+
136
+ ## Cross-Field Validation
137
+
138
+ For fields that depend on each other, use custom class-level validators:
139
+
140
+ \`\`\`typescript
141
+ import { ValidatorConstraint, ValidatorConstraintInterface, ValidationArguments, Validate } from 'class-validator';
142
+
143
+ @ValidatorConstraint({ name: 'Match', async: false })
144
+ export class MatchConstraint implements ValidatorConstraintInterface {
145
+
146
+ public validate(value: unknown, args: ValidationArguments): boolean {
147
+ const [relatedPropertyName] = args.constraints;
148
+ const relatedValue = (args.object as Record<string, unknown>)[relatedPropertyName];
149
+
150
+ return value === relatedValue;
151
+ }
152
+
153
+ public defaultMessage(args: ValidationArguments): string {
154
+ const [relatedPropertyName] = args.constraints;
155
+
156
+ return \\\`\\\${args.property} must match \\\${relatedPropertyName}\\\`;
157
+ }
158
+
159
+ }
160
+
161
+ // Usage in DTO:
162
+ export class ResetPasswordRequest {
163
+
164
+ @Expose()
165
+ @IsString()
166
+ @MinLength(8)
167
+ public password!: string;
168
+
169
+ @Expose()
170
+ @IsString()
171
+ @Validate(MatchConstraint, ['password'])
172
+ public confirmPassword!: string;
173
+
174
+ }
175
+ \`\`\`
176
+
177
+ ## Query Parameter DTOs
178
+
179
+ For GET request query parameters, use \`@Transform()\` and \`@Type()\` for type coercion:
180
+
181
+ \`\`\`typescript
182
+ import { Type } from 'class-transformer';
183
+ import { IsOptional, IsInt, Min, Max, IsString } from 'class-validator';
184
+ import { ApiPropertyOptional } from '@nestjs/swagger';
185
+
186
+ export class PaginationQuery {
187
+
188
+ @IsOptional()
189
+ @Type(() => Number)
190
+ @IsInt()
191
+ @Min(1)
192
+ @ApiPropertyOptional({ default: 1 })
193
+ public page?: number = 1;
194
+
195
+ @IsOptional()
196
+ @Type(() => Number)
197
+ @IsInt()
198
+ @Min(1)
199
+ @Max(100)
200
+ @ApiPropertyOptional({ default: 20 })
201
+ public perPage?: number = 20;
202
+
203
+ @IsOptional()
204
+ @IsString()
205
+ @ApiPropertyOptional()
206
+ public search?: string;
207
+
208
+ }
209
+ \`\`\`
210
+
211
+ ## OpenAPI / Swagger Integration
212
+
213
+ ### @ApiProperty Decorators
214
+
215
+ \`\`\`typescript
216
+ @ApiProperty({
217
+ description: 'User email address',
218
+ example: 'user@example.com',
219
+ required: true,
220
+ })
221
+ public email!: string;
222
+
223
+ @ApiPropertyOptional({
224
+ description: 'Profile bio',
225
+ maxLength: 500,
226
+ })
227
+ public bio?: string;
228
+ \`\`\`
229
+
230
+ ### Controller Response Decorators
231
+
232
+ \`\`\`typescript
233
+ @Controller('/users')
234
+ @ApiTags('Users')
235
+ export class UsersController {
236
+
237
+ @Post()
238
+ @HttpCode(HttpStatus.CREATED)
239
+ @ApiOperation({ summary: 'Create a new user' })
240
+ @ApiResponse({ status: 201, description: 'User created', type: UserResponse })
241
+ @ApiResponse({ status: 400, description: 'Validation error' })
242
+ public async createUser(@Body() body: CreateUserRequest): Promise<UserResponse> {
243
+ // ...
244
+ }
245
+
246
+ }
247
+ \`\`\`
248
+
249
+ ## Naming Conventions
250
+
251
+ | Type | Naming Pattern | Example |
252
+ |------|---------------|---------|
253
+ | Create input | \`Create{Entity}Request\` | \`CreateUserRequest\` |
254
+ | Update input | \`Update{Entity}Request\` | \`UpdateUserRequest\` |
255
+ | Query params | \`{Entity}Query\` or \`Pagination{Entity}Query\` | \`UserQuery\` |
256
+ | Response | \`{Entity}Response\` | \`UserResponse\` |
257
+ | List response | \`{Entity}ListResponse\` | \`UserListResponse\` |
258
+
259
+ ## Constants for Bounds
260
+
261
+ Define and reuse constants for upper limits:
262
+
263
+ \`\`\`typescript
264
+ // constants/ValidationConstants.ts
265
+ export const MAX_PAGE_SIZE = 100;
266
+ export const MAX_SEARCH_LIMIT = 50;
267
+ export const MAX_NAME_LENGTH = 100;
268
+ export const MAX_BIO_LENGTH = 500;
269
+
270
+ // In DTO:
271
+ @Max(MAX_PAGE_SIZE)
272
+ public perPage?: number;
273
+ \`\`\`
274
+
275
+ ## Rules
276
+
277
+ 1. **Every field has \`@Expose()\`** for serialization control.
278
+ 2. **Every field has \`@ApiProperty()\`** for OpenAPI documentation.
279
+ 3. **Request DTOs use class-validator decorators** — validation is automatic via global pipe.
280
+ 4. **Response DTOs have no validation decorators** — they're output-only shapes.
281
+ 5. **Cross-field validation uses custom class-level validators** — never imperative checks in services.
282
+ 6. **Query parameters use \`@Type(() => Number)\`** for type coercion from strings.
283
+ 7. **Upper bounds (\`@Max\`, \`@MaxLength\`) defined as exported constants** — never inline magic numbers.
284
+ 8. **\`whitelist: true\` + \`forbidNonWhitelisted: true\`** strips and rejects unknown properties.
285
+ `;
286
+ //# sourceMappingURL=dtoPattern.js.map
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Static knowledge content for the Archipel error handling pattern.
3
+ * Returned by the get-error-handling-pattern tool.
4
+ */
5
+ export declare const ERROR_HANDLING_PATTERN_KNOWLEDGE = "# Archipel Error Handling Pattern\n\n## Overview\n\nArchipel uses **domain-specific error classes** that are caught by **global exception filters**\nand mapped to structured HTTP responses. Services throw domain errors; the framework handles\nthe HTTP translation. This keeps business logic clean and error responses consistent.\n\n## Layer Architecture\n\n```\nService \u2192 throws DomainError \u2192 ExceptionFilter \u2192 HTTP Response Envelope\n```\n\n## Base Error Classes\n\n### RepositoryError\n\nThrown when any Prisma operation fails. Automatically wrapped by `RepositoryBase.tryCatch()`.\n\n```typescript\n// models/errors/RepositoryError.ts\nexport class RepositoryError extends Error {\n\n public readonly code = 'REPOSITORY_ERROR';\n public readonly originalCode?: string;\n public readonly meta?: Record<string, unknown>;\n\n public constructor(message: string, originalCode?: string, meta?: Record<string, unknown>) {\n super(message);\n Object.setPrototypeOf(this, RepositoryError.prototype);\n this.name = 'RepositoryError';\n this.originalCode = originalCode;\n this.meta = meta;\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, RepositoryError);\n }\n }\n\n}\n```\n\n### MappingError (abstract)\n\nBase for mapping-related errors.\n\n```typescript\nexport abstract class MappingError extends Error {\n public readonly code: string;\n\n protected constructor(message: string, code: string) {\n super(message);\n this.code = code;\n }\n}\n```\n\nConcrete variants:\n- `MappingNotRegisteredError` \u2014 code: `'MAPPING_NOT_REGISTERED'`\n- `TypeMappingNotRegisteredError` \u2014 code: `'TYPE_MAPPING_NOT_REGISTERED'`\n\n## Exception Filters\n\n### RepositoryExceptionFilter\n\n```typescript\nimport { ArgumentsHost, Catch, ExceptionFilter, HttpStatus } from '@nestjs/common';\nimport { Request, Response } from 'express';\nimport { RepositoryError } from '../models/errors/RepositoryError';\n\n@Catch(RepositoryError)\nexport class RepositoryExceptionFilter implements ExceptionFilter<RepositoryError> {\n\n public catch(_exception: RepositoryError, host: ArgumentsHost): void {\n const ctx = host.switchToHttp();\n const response = ctx.getResponse<Response>();\n const request = ctx.getRequest<Request>();\n\n response.status(HttpStatus.INTERNAL_SERVER_ERROR).json({\n statusCode: HttpStatus.INTERNAL_SERVER_ERROR,\n timestamp: new Date().toISOString(),\n error: 'Repository Error',\n path: request.url,\n });\n }\n\n}\n```\n\n### Registration (in main.ts or AppModule)\n\n```typescript\napp.useGlobalFilters(new RepositoryExceptionFilter());\n```\n\n## How to Create a Domain Error\n\n### Step 1: Define the error class\n\n```typescript\n// models/errors/UserNotFoundError.ts\nexport class UserNotFoundError extends Error {\n\n public readonly code = 'USER_NOT_FOUND';\n public readonly userId: string;\n\n public constructor(userId: string) {\n super(\\`User not found: \\${userId}\\`);\n Object.setPrototypeOf(this, UserNotFoundError.prototype);\n this.name = 'UserNotFoundError';\n this.userId = userId;\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, UserNotFoundError);\n }\n }\n\n}\n```\n\n### Step 2: Create an exception filter\n\n```typescript\n// filters/UserNotFoundExceptionFilter.ts\nimport { ArgumentsHost, Catch, ExceptionFilter, HttpStatus } from '@nestjs/common';\nimport { Request, Response } from 'express';\nimport { UserNotFoundError } from '../models/errors/UserNotFoundError';\n\n@Catch(UserNotFoundError)\nexport class UserNotFoundExceptionFilter implements ExceptionFilter<UserNotFoundError> {\n\n public catch(exception: UserNotFoundError, host: ArgumentsHost): void {\n const ctx = host.switchToHttp();\n const response = ctx.getResponse<Response>();\n const request = ctx.getRequest<Request>();\n\n response.status(HttpStatus.NOT_FOUND).json({\n statusCode: HttpStatus.NOT_FOUND,\n timestamp: new Date().toISOString(),\n error: exception.code,\n message: exception.message,\n path: request.url,\n });\n }\n\n}\n```\n\n### Step 3: Register the filter globally\n\n```typescript\napp.useGlobalFilters(\n new RepositoryExceptionFilter(),\n new UserNotFoundExceptionFilter(),\n);\n```\n\n### Step 4: Throw from a service\n\n```typescript\n@Injectable()\nexport class UserService {\n\n public async findById(id: string): Promise<IUserEntity> {\n const user = await this._userRepository.execute(findUserByIdQuery(id));\n\n if (!user) {\n throw new UserNotFoundError(id);\n }\n\n return user;\n }\n\n}\n```\n\n## Response Envelope Convention\n\nAll error responses follow the same shape:\n\n```json\n{\n \"statusCode\": 404,\n \"timestamp\": \"2026-04-05T12:00:00.000Z\",\n \"error\": \"USER_NOT_FOUND\",\n \"message\": \"User not found: abc-123\",\n \"path\": \"/api/v1/users/abc-123\"\n}\n```\n\n## Prisma Error Code Reference\n\nCommon Prisma error codes wrapped by `RepositoryError`:\n\n| Code | Meaning |\n|------|---------|\n| P2000 | Value too long |\n| P2002 | Unique constraint violation |\n| P2003 | Foreign key constraint violation |\n| P2025 | Record not found |\n\n## Rules\n\n1. **Services throw domain errors** \u2014 never raw NestJS HttpException in service layer.\n2. **Exception filters map to HTTP** \u2014 one filter per domain error type.\n3. **Error classes include a machine-readable `code`** \u2014 used for client-side error handling.\n4. **Use `Object.setPrototypeOf`** and `Error.captureStackTrace` in custom Error subclasses.\n5. **Don't leak internal details** \u2014 the filter should not expose Prisma error codes or stack traces.\n6. **Register filters globally** in the bootstrap function or via `APP_FILTER` provider.\n";