@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,532 @@
1
+ ---
2
+ title: platform-payments
3
+ description: Provider-agnostic payment infrastructure with support for Stripe, Paddle, LemonSqueezy, and Mollie.
4
+ order: 4
5
+ tags: [payments, stripe, paddle, lemonsqueezy, mollie, feature-gating, quotas, guards, interceptors, ports-and-adapters]
6
+ package: '@breadstone/archipel-platform-payments'
7
+ ---
8
+
9
+ # platform-payments
10
+
11
+ Provider-agnostic payment infrastructure for NestJS. Exposes a unified `PaymentClientPort` abstraction with four ready-made implementations (Stripe, Paddle, LemonSqueezy, Mollie), a feature-gating guard, and a usage-tracking interceptor. Feature access checks are fully decoupled via the `FeatureAccessPort`.
12
+
13
+ **Package:** `@breadstone/archipel-platform-payments`
14
+
15
+ ## Architecture
16
+
17
+ ```mermaid
18
+ graph TD
19
+ Core["@breadstone/archipel-platform-payments<br/><i>Port, models, guard, interceptor, module</i>"]
20
+ Stripe["@breadstone/archipel-platform-payments/stripe<br/><i>StripeClient</i>"]
21
+ Paddle["@breadstone/archipel-platform-payments/paddle<br/><i>PaddleClient</i>"]
22
+ Lemon["@breadstone/archipel-platform-payments/lemonsqueezy<br/><i>LemonSqueezyClient</i>"]
23
+ Mollie["@breadstone/archipel-platform-payments/mollie<br/><i>MollieClient</i>"]
24
+
25
+ Stripe -->|implements| Core
26
+ Paddle -->|implements| Core
27
+ Lemon -->|implements| Core
28
+ Mollie -->|implements| Core
29
+
30
+ Stripe -.-|requires| S["stripe"]
31
+ Paddle -.-|requires| P["@paddle/paddle-node-sdk"]
32
+ Lemon -.-|requires| L["@lemonsqueezy/lemonsqueezy.js"]
33
+ Mollie -.-|requires| M["@mollie/api-client"]
34
+ ```
35
+
36
+ Each provider SDK is an **optional peer dependency**. Install only the one you need.
37
+
38
+ ---
39
+
40
+ ## Quick Start
41
+
42
+ ### 1. Install the provider SDK
43
+
44
+ ```bash
45
+ # Pick one:
46
+ yarn add stripe
47
+ yarn add @paddle/paddle-node-sdk
48
+ yarn add @lemonsqueezy/lemonsqueezy.js
49
+ yarn add @mollie/api-client
50
+ ```
51
+
52
+ ### 2. Register the module
53
+
54
+ ```typescript
55
+ import { Module } from '@nestjs/common';
56
+ import { PaymentModule } from '@breadstone/archipel-platform-payments';
57
+ import { StripeClient, STRIPE_CONFIG_ENTRIES } from '@breadstone/archipel-platform-payments/stripe';
58
+
59
+ @Module({
60
+ imports: [
61
+ PaymentModule.register({
62
+ paymentClient: StripeClient,
63
+ configEntries: STRIPE_CONFIG_ENTRIES,
64
+ featureAccess: PrismaFeatureAccessAdapter, // optional
65
+ isGlobal: false,
66
+ }),
67
+ ],
68
+ })
69
+ export class AppModule {}
70
+ ```
71
+
72
+ ### Switching providers
73
+
74
+ Replace the imports — no other code change needed:
75
+
76
+ ```typescript
77
+ import { PaddleClient, PADDLE_CONFIG_ENTRIES } from '@breadstone/archipel-platform-payments/paddle';
78
+
79
+ PaymentModule.register({
80
+ paymentClient: PaddleClient,
81
+ configEntries: PADDLE_CONFIG_ENTRIES,
82
+ });
83
+ ```
84
+
85
+ ---
86
+
87
+ ## Module Configuration
88
+
89
+ ### IPaymentModuleOptions
90
+
91
+ | Property | Type | Required | Default | Description |
92
+ | --------------- | ----------------------------------------------------- | -------- | ------- | --------------------------------------------- |
93
+ | `paymentClient` | `Type<PaymentClientPort>` | **Yes** | — | Provider implementation (e.g. `StripeClient`) |
94
+ | `configEntries` | `ReadonlyArray<Omit<IConfigRegistryEntry, 'module'>>` | No | `[]` | Provider-specific config entries |
95
+ | `featureAccess` | `Type<FeatureAccessPort>` | No | — | Feature quota checking and usage recording |
96
+ | `isGlobal` | `boolean` | No | `false` | Register as a global module |
97
+
98
+ ---
99
+
100
+ ## Payment Providers
101
+
102
+ ### Stripe
103
+
104
+ **Subpath:** `@breadstone/archipel-platform-payments/stripe`
105
+ **SDK:** `stripe` ≥ 22.0.0
106
+
107
+ | Variable | Description | Required |
108
+ | ----------------------- | ----------------------------- | -------- |
109
+ | `STRIPE_API_KEY` | Stripe secret API key | Yes |
110
+ | `STRIPE_WEBHOOK_SECRET` | Stripe webhook signing secret | Yes |
111
+
112
+ ```typescript
113
+ import { StripeClient, STRIPE_CONFIG_ENTRIES } from '@breadstone/archipel-platform-payments/stripe';
114
+ ```
115
+
116
+ ### Paddle
117
+
118
+ **Subpath:** `@breadstone/archipel-platform-payments/paddle`
119
+ **SDK:** `@paddle/paddle-node-sdk` ≥ 3.0.0
120
+
121
+ | Variable | Description | Required | Default |
122
+ | ----------------------- | ------------------------- | -------- | ------------ |
123
+ | `PADDLE_API_KEY` | Paddle API key | Yes | — |
124
+ | `PADDLE_WEBHOOK_SECRET` | Paddle webhook secret key | Yes | — |
125
+ | `PADDLE_ENVIRONMENT` | `production` or `sandbox` | No | `production` |
126
+
127
+ ```typescript
128
+ import { PaddleClient, PADDLE_CONFIG_ENTRIES } from '@breadstone/archipel-platform-payments/paddle';
129
+ ```
130
+
131
+ ### LemonSqueezy
132
+
133
+ **Subpath:** `@breadstone/archipel-platform-payments/lemonsqueezy`
134
+ **SDK:** `@lemonsqueezy/lemonsqueezy.js` ≥ 4.0.0
135
+
136
+ | Variable | Description | Required |
137
+ | ----------------------------- | ----------------------------------- | -------- |
138
+ | `LEMONSQUEEZY_API_KEY` | LemonSqueezy API key | Yes |
139
+ | `LEMONSQUEEZY_WEBHOOK_SECRET` | LemonSqueezy webhook signing secret | Yes |
140
+ | `LEMONSQUEEZY_STORE_ID` | LemonSqueezy store ID | Yes |
141
+
142
+ ```typescript
143
+ import { LemonSqueezyClient, LEMONSQUEEZY_CONFIG_ENTRIES } from '@breadstone/archipel-platform-payments/lemonsqueezy';
144
+ ```
145
+
146
+ ### Mollie
147
+
148
+ **Subpath:** `@breadstone/archipel-platform-payments/mollie`
149
+ **SDK:** `@mollie/api-client` ≥ 4.0.0
150
+
151
+ | Variable | Description | Required |
152
+ | ----------------------- | -------------------------------------- | -------- |
153
+ | `MOLLIE_API_KEY` | Mollie API key | Yes |
154
+ | `MOLLIE_WEBHOOK_SECRET` | Mollie webhook secret for verification | No |
155
+
156
+ ```typescript
157
+ import { MollieClient, MOLLIE_CONFIG_ENTRIES } from '@breadstone/archipel-platform-payments/mollie';
158
+ ```
159
+
160
+ ::: info Mollie Limitations
161
+ Mollie does not have a native price catalog API. `fetchPrices()` returns an empty array — maintain prices in your local database. `fetchSubscription()` expects the format `"customerId:subscriptionId"`.
162
+ :::
163
+
164
+ ---
165
+
166
+ ## PaymentClientPort
167
+
168
+ All providers implement this abstract contract. Inject `PaymentClientPort` in services to stay provider-agnostic:
169
+
170
+ ```typescript
171
+ abstract class PaymentClientPort {
172
+ abstract fetchPrices(productId: string): Promise<INormalizedPrice[]>;
173
+ abstract createCheckoutSession(
174
+ priceId: string,
175
+ successUrl: string,
176
+ cancelUrl: string,
177
+ userId?: string,
178
+ ): Promise<INormalizedCheckoutSession>;
179
+ abstract fetchSubscription(subscriptionId: string): Promise<INormalizedSubscription | null>;
180
+ abstract constructWebhookEvent(
181
+ payload: string | Buffer,
182
+ signature: string,
183
+ ): Promise<INormalizedWebhookEvent> | INormalizedWebhookEvent;
184
+ }
185
+ ```
186
+
187
+ ### Usage in services
188
+
189
+ ```typescript
190
+ import { PaymentClientPort } from '@breadstone/archipel-platform-payments';
191
+
192
+ @Injectable()
193
+ export class CheckoutService {
194
+ constructor(private readonly _paymentClient: PaymentClientPort) {}
195
+
196
+ public async createCheckout(priceId: string, userId: string): Promise<string | null> {
197
+ const session = await this._paymentClient.createCheckoutSession(
198
+ priceId,
199
+ 'https://app.example.com/success',
200
+ 'https://app.example.com/cancel',
201
+ userId,
202
+ );
203
+ return session.url;
204
+ }
205
+ }
206
+ ```
207
+
208
+ ### Prices
209
+
210
+ ```typescript
211
+ const prices = await this._paymentClient.fetchPrices('prod_ABC123');
212
+ // → INormalizedPrice[]
213
+ ```
214
+
215
+ ### Subscriptions
216
+
217
+ ```typescript
218
+ const subscription = await this._paymentClient.fetchSubscription('sub_ABC123');
219
+ // → INormalizedSubscription | null
220
+ ```
221
+
222
+ ### Webhook Events
223
+
224
+ ```typescript
225
+ const event = await this._paymentClient.constructWebhookEvent(rawBody, signature);
226
+ // → INormalizedWebhookEvent
227
+ ```
228
+
229
+ ---
230
+
231
+ ## Normalized Types
232
+
233
+ All providers map their native API responses into these shared interfaces.
234
+
235
+ ### INormalizedPrice
236
+
237
+ | Field | Type | Description |
238
+ | --------------- | -------------------------------------------------- | ------------------------------- |
239
+ | `id` | `string` | Price identifier |
240
+ | `productId` | `string` | Associated product identifier |
241
+ | `amount` | `number` | Price amount (in smallest unit) |
242
+ | `currency` | `string` | ISO 4217 currency code |
243
+ | `interval` | `'week' \| 'month' \| 'quarter' \| 'year' \| null` | Billing interval |
244
+ | `intervalCount` | `number` | Number of intervals per cycle |
245
+ | `active` | `boolean` | Whether the price is active |
246
+
247
+ ### INormalizedCheckoutSession
248
+
249
+ | Field | Type | Description |
250
+ | ------------------- | --------------------------------------------- | ------------------------ |
251
+ | `id` | `string` | Session identifier |
252
+ | `url` | `string \| null` | Checkout URL to redirect |
253
+ | `subscriptionId` | `string \| null` | Created subscription ID |
254
+ | `customerId` | `string \| null` | Customer identifier |
255
+ | `clientReferenceId` | `string \| null` | Client-supplied ref |
256
+ | `paymentStatus` | `'paid' \| 'unpaid' \| 'no_payment_required'` | Payment status |
257
+
258
+ ### INormalizedSubscription
259
+
260
+ | Field | Type | Description |
261
+ | -------------------- | -------------------- | --------------------------------- |
262
+ | `id` | `string` | Subscription identifier |
263
+ | `customerId` | `string` | Customer identifier |
264
+ | `status` | `SubscriptionStatus` | Current status |
265
+ | `priceId` | `string` | Associated price identifier |
266
+ | `currentPeriodStart` | `Date` | Start of current billing period |
267
+ | `currentPeriodEnd` | `Date` | End of current billing period |
268
+ | `cancelAtPeriodEnd` | `boolean` | Whether cancellation is scheduled |
269
+ | `trialStart` | `Date \| null` | Trial start date |
270
+ | `trialEnd` | `Date \| null` | Trial end date |
271
+
272
+ ### SubscriptionStatus
273
+
274
+ ```typescript
275
+ type SubscriptionStatus =
276
+ | 'active'
277
+ | 'canceled'
278
+ | 'incomplete'
279
+ | 'incompleteExpired'
280
+ | 'pastDue'
281
+ | 'trialing'
282
+ | 'unpaid'
283
+ | 'paused';
284
+ ```
285
+
286
+ ### INormalizedWebhookEvent
287
+
288
+ | Field | Type | Description |
289
+ | ------ | --------------------------- | ------------------------------- |
290
+ | `type` | `string` (see values below) | Normalized event type |
291
+ | `data` | `object` | Event payload (see shape below) |
292
+
293
+ **Event types:** `checkout.session.completed`, `subscription.updated`, `subscription.deleted`, `invoice.payment_failed`, `invoice.payment_succeeded`, `unknown`
294
+
295
+ **Data shape:**
296
+
297
+ ```typescript
298
+ {
299
+ checkoutSession?: INormalizedCheckoutSession;
300
+ subscription?: INormalizedSubscription;
301
+ invoice?: {
302
+ id: string;
303
+ subscriptionId: string | null;
304
+ status: 'draft' | 'open' | 'paid' | 'uncollectible' | 'void';
305
+ };
306
+ }
307
+ ```
308
+
309
+ ---
310
+
311
+ ## FeatureAccessPort
312
+
313
+ Abstract port for checking feature quotas and recording usage. This enables feature-gating with any billing system.
314
+
315
+ ```typescript
316
+ abstract class FeatureAccessPort {
317
+ abstract checkAccess(userId: string, featureKey: string): Promise<IFeatureAccessResult>;
318
+ abstract recordUsage(userId: string, featureKey: string): Promise<void>;
319
+ }
320
+ ```
321
+
322
+ ### IFeatureAccessResult
323
+
324
+ | Field | Type | Description |
325
+ | ----------- | --------- | ---------------------------------------- |
326
+ | `allowed` | `boolean` | Whether the user can use the feature |
327
+ | `used` | `number` | Current usage count in the active period |
328
+ | `limit` | `number` | Maximum allowed (`-1` = unlimited) |
329
+ | `remaining` | `number` | Remaining quota (`-1` = unlimited) |
330
+ | `resetAt` | `Date` | When the usage period resets |
331
+
332
+ ### Real-World Adapter: Prisma + Subscription
333
+
334
+ ```typescript
335
+ @Injectable()
336
+ export class PrismaFeatureAccessAdapter extends FeatureAccessPort {
337
+ private readonly _prisma: PrismaService;
338
+
339
+ constructor(prisma: PrismaService) {
340
+ super();
341
+ this._prisma = prisma;
342
+ }
343
+
344
+ public async checkAccess(userId: string, featureKey: string): Promise<IFeatureAccessResult> {
345
+ const subscription = await this._prisma.subscription.findFirst({
346
+ where: { userId, status: 'active' },
347
+ include: { plan: { include: { features: true } } },
348
+ });
349
+
350
+ const feature = subscription?.plan.features.find((f) => f.key === featureKey);
351
+ if (!feature) {
352
+ return { allowed: false, used: 0, limit: 0, remaining: 0, resetAt: new Date() };
353
+ }
354
+
355
+ const periodStart = this.getCurrentPeriodStart(subscription.currentPeriodStart);
356
+ const usage = await this._prisma.featureUsage.count({
357
+ where: {
358
+ userId,
359
+ featureKey,
360
+ createdAt: { gte: periodStart },
361
+ },
362
+ });
363
+
364
+ const limit = feature.limit;
365
+ const remaining = limit === -1 ? -1 : Math.max(0, limit - usage);
366
+
367
+ return {
368
+ allowed: limit === -1 || usage < limit,
369
+ used: usage,
370
+ limit,
371
+ remaining,
372
+ resetAt: subscription.currentPeriodEnd,
373
+ };
374
+ }
375
+
376
+ public async recordUsage(userId: string, featureKey: string): Promise<void> {
377
+ const access = await this.checkAccess(userId, featureKey);
378
+ if (!access.allowed) {
379
+ throw new Error(`Feature quota exceeded for ${featureKey}`);
380
+ }
381
+
382
+ await this._prisma.featureUsage.create({
383
+ data: { userId, featureKey },
384
+ });
385
+ }
386
+
387
+ private getCurrentPeriodStart(periodStart: Date): Date {
388
+ return periodStart;
389
+ }
390
+ }
391
+ ```
392
+
393
+ ---
394
+
395
+ ## Feature Gating
396
+
397
+ ### @RequiresFeature Decorator
398
+
399
+ Mark controller endpoints with a feature key:
400
+
401
+ ```typescript
402
+ import { RequiresFeature } from '@breadstone/archipel-platform-payments';
403
+
404
+ @Controller('recipes')
405
+ export class RecipeController {
406
+ @Post()
407
+ @RequiresFeature('RECIPE_CREATION')
408
+ public async createRecipe(@Body() body: CreateRecipeDto): Promise<RecipeResponse> {
409
+ // Only executed if user has quota for RECIPE_CREATION
410
+ }
411
+ }
412
+ ```
413
+
414
+ ### FeatureGuard
415
+
416
+ Checks the `@RequiresFeature` metadata against `FeatureAccessPort.checkAccess()`. Apply it globally or per-controller:
417
+
418
+ ```typescript
419
+ // Global registration
420
+ app.useGlobalGuards(app.get(FeatureGuard));
421
+
422
+ // Per-controller
423
+ @Controller('recipes')
424
+ @UseGuards(JwtAuthGuard, FeatureGuard)
425
+ export class RecipeController {
426
+ /* ... */
427
+ }
428
+ ```
429
+
430
+ The guard attaches the `IFeatureAccessResult` to the request as `request.featureAccess`, enabling downstream access to quota information.
431
+
432
+ ### FeatureUsageInterceptor
433
+
434
+ Records feature usage after successful request completion:
435
+
436
+ ```typescript
437
+ @Controller('recipes')
438
+ @UseGuards(JwtAuthGuard, FeatureGuard)
439
+ @UseInterceptors(FeatureUsageInterceptor)
440
+ export class RecipeController {
441
+ @Post()
442
+ @RequiresFeature('RECIPE_CREATION')
443
+ public async createRecipe(@Body() body: CreateRecipeDto): Promise<RecipeResponse> {
444
+ // After successful response, FeatureUsageInterceptor calls
445
+ // FeatureAccessPort.recordUsage(userId, 'RECIPE_CREATION')
446
+ }
447
+ }
448
+ ```
449
+
450
+ ---
451
+
452
+ ## End-to-End Example: Feature-Gated API with Stripe
453
+
454
+ ```typescript
455
+ // 1. Define feature keys
456
+ export const FEATURES = {
457
+ RECIPE_CREATION: 'RECIPE_CREATION',
458
+ AI_SUGGESTIONS: 'AI_SUGGESTIONS',
459
+ EXPORT_PDF: 'EXPORT_PDF',
460
+ } as const;
461
+
462
+ // 2. Implement the adapter
463
+ @Injectable()
464
+ export class AppFeatureAccessAdapter extends FeatureAccessPort {
465
+ // ... (see Real-World Adapter above)
466
+ }
467
+
468
+ // 3. Register with Stripe
469
+ import { StripeClient, STRIPE_CONFIG_ENTRIES } from '@breadstone/archipel-platform-payments/stripe';
470
+
471
+ @Module({
472
+ imports: [
473
+ PaymentModule.register({
474
+ paymentClient: StripeClient,
475
+ configEntries: STRIPE_CONFIG_ENTRIES,
476
+ featureAccess: AppFeatureAccessAdapter,
477
+ }),
478
+ ],
479
+ })
480
+ export class AppModule {}
481
+
482
+ // 4. Use in controllers
483
+ @Controller('recipes')
484
+ @UseGuards(JwtAuthGuard, FeatureGuard)
485
+ @UseInterceptors(FeatureUsageInterceptor)
486
+ export class RecipeController {
487
+ constructor(private readonly _paymentClient: PaymentClientPort) {}
488
+
489
+ @Post()
490
+ @RequiresFeature(FEATURES.RECIPE_CREATION)
491
+ public async create(@Body() body: CreateRecipeDto): Promise<RecipeResponse> {
492
+ return this._recipeService.create(body);
493
+ }
494
+
495
+ @Post(':id/ai-suggestions')
496
+ @RequiresFeature(FEATURES.AI_SUGGESTIONS)
497
+ public async suggest(@Param('id') id: string): Promise<SuggestionResponse> {
498
+ return this._aiService.suggest(id);
499
+ }
500
+ }
501
+ ```
502
+
503
+ ---
504
+
505
+ ## Exports Summary
506
+
507
+ ### Core (`@breadstone/archipel-platform-payments`)
508
+
509
+ | Export | Type | Description |
510
+ | ---------------------------- | ------------- | ----------------------------------- |
511
+ | `PaymentModule` | NestJS Module | Main module with `register()` |
512
+ | `PaymentClientPort` | Abstract Port | Provider-agnostic payment contract |
513
+ | `FeatureAccessPort` | Abstract Port | Feature quota checking |
514
+ | `IFeatureAccessResult` | Interface | Quota check result |
515
+ | `FeatureGuard` | Guard | Enforces `@RequiresFeature` |
516
+ | `FeatureUsageInterceptor` | Interceptor | Records feature usage |
517
+ | `RequiresFeature` | Decorator | Marks feature-gated endpoints |
518
+ | `FEATURE_KEY_METADATA` | Constant | Metadata key for feature decorators |
519
+ | `INormalizedPrice` | Interface | Normalized price |
520
+ | `INormalizedCheckoutSession` | Interface | Normalized checkout session |
521
+ | `INormalizedSubscription` | Interface | Normalized subscription |
522
+ | `INormalizedWebhookEvent` | Interface | Normalized webhook event |
523
+ | `SubscriptionStatus` | Type Alias | Subscription status union |
524
+
525
+ ### Provider subpaths
526
+
527
+ | Subpath | Exports |
528
+ | --------------- | ----------------------------------------------------------------------------------------------------------------------------------- |
529
+ | `/stripe` | `StripeClient`, `STRIPE_API_KEY`, `STRIPE_WEBHOOK_SECRET`, `STRIPE_CONFIG_ENTRIES` |
530
+ | `/paddle` | `PaddleClient`, `PADDLE_API_KEY`, `PADDLE_WEBHOOK_SECRET`, `PADDLE_ENVIRONMENT`, `PADDLE_CONFIG_ENTRIES` |
531
+ | `/lemonsqueezy` | `LemonSqueezyClient`, `LEMONSQUEEZY_API_KEY`, `LEMONSQUEEZY_WEBHOOK_SECRET`, `LEMONSQUEEZY_STORE_ID`, `LEMONSQUEEZY_CONFIG_ENTRIES` |
532
+ | `/mollie` | `MollieClient`, `MOLLIE_API_KEY`, `MOLLIE_WEBHOOK_SECRET`, `MOLLIE_CONFIG_ENTRIES` |
@@ -0,0 +1,57 @@
1
+ ---
2
+ title: 'Class: ReportingContributorRegistry'
3
+ generated: true
4
+ editUrl: false
5
+ ---
6
+
7
+ # Class: ReportingContributorRegistry
8
+
9
+ Defined in: [core/ReportingContributorRegistry.ts:12](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-reporting/src/core/ReportingContributorRegistry.ts#L12)
10
+
11
+ Registry responsible for tracking feature-provided reporting contributors.
12
+
13
+ ## Constructors
14
+
15
+ ### Constructor
16
+
17
+ ```ts
18
+ new ReportingContributorRegistry(): ReportingContributorRegistry;
19
+ ```
20
+
21
+ #### Returns
22
+
23
+ `ReportingContributorRegistry`
24
+
25
+ ## Methods
26
+
27
+ ### getContributors()
28
+
29
+ ```ts
30
+ getContributors(): readonly IReportingContributor[];
31
+ ```
32
+
33
+ Defined in: [core/ReportingContributorRegistry.ts:31](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-reporting/src/core/ReportingContributorRegistry.ts#L31)
34
+
35
+ #### Returns
36
+
37
+ readonly [`IReportingContributor`](Interface.IReportingContributor)[]
38
+
39
+ ---
40
+
41
+ ### register()
42
+
43
+ ```ts
44
+ register(contributor): void;
45
+ ```
46
+
47
+ Defined in: [core/ReportingContributorRegistry.ts:23](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-reporting/src/core/ReportingContributorRegistry.ts#L23)
48
+
49
+ #### Parameters
50
+
51
+ | Parameter | Type |
52
+ | ------------- | ---------------------------------------------------------- |
53
+ | `contributor` | [`IReportingContributor`](Interface.IReportingContributor) |
54
+
55
+ #### Returns
56
+
57
+ `void`
@@ -0,0 +1,41 @@
1
+ ---
2
+ title: 'Class: ReportingDatasetNotFoundError'
3
+ generated: true
4
+ editUrl: false
5
+ ---
6
+
7
+ # Class: ReportingDatasetNotFoundError
8
+
9
+ Defined in: [models/errors/ReportingDatasetNotFoundError.ts:6](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-reporting/src/models/errors/ReportingDatasetNotFoundError.ts#L6)
10
+
11
+ Error thrown when a dataset definition could not be resolved.
12
+
13
+ ## Extends
14
+
15
+ - `Error`
16
+
17
+ ## Constructors
18
+
19
+ ### Constructor
20
+
21
+ ```ts
22
+ new ReportingDatasetNotFoundError(datasetId): ReportingDatasetNotFoundError;
23
+ ```
24
+
25
+ Defined in: [models/errors/ReportingDatasetNotFoundError.ts:10](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-reporting/src/models/errors/ReportingDatasetNotFoundError.ts#L10)
26
+
27
+ #### Parameters
28
+
29
+ | Parameter | Type |
30
+ | ----------- | -------- |
31
+ | `datasetId` | `string` |
32
+
33
+ #### Returns
34
+
35
+ `ReportingDatasetNotFoundError`
36
+
37
+ #### Overrides
38
+
39
+ ```ts
40
+ Error.constructor;
41
+ ```