@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,322 @@
1
+ "use strict";
2
+ /**
3
+ * Static knowledge content for the Archipel mapping pattern.
4
+ * Returned by the get-mapping-pattern tool.
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.MAPPING_PATTERN_WITH_CONTEXT = exports.MAPPING_PATTERN_KNOWLEDGE = void 0;
8
+ exports.MAPPING_PATTERN_KNOWLEDGE = `# Archipel Mapping Pattern
9
+
10
+ ## Overview
11
+
12
+ In Archipel, all object-to-object mapping goes through a central **MappingService** with
13
+ **branded, type-safe mapping keys**. This guarantees compile-time type safety: the key
14
+ encodes both the input and output type, so calling \`mappingService.map(KEY, input)\` is
15
+ statically checked — the compiler verifies that \`input\` matches the key's input type and
16
+ infers the return type automatically.
17
+
18
+ **Rule:** Services MUST NOT inline-create response objects. They return entities.
19
+ Controllers use the MappingService to convert entities to response DTOs.
20
+
21
+ ## Core Types
22
+
23
+ ### IMappingKey<TInput, TOutput>
24
+
25
+ \`\`\`typescript
26
+ export interface IMappingKey<TInput, TOutput> {
27
+ readonly _brand: 'MappingKey';
28
+ readonly _input: TInput;
29
+ readonly _output: TOutput;
30
+ readonly key: string;
31
+ }
32
+ \`\`\`
33
+
34
+ The \`_input\` and \`_output\` fields are phantom types — they exist only for compile-time
35
+ type encoding and are never accessed at runtime.
36
+
37
+ ### createMappingKey<TInput, TOutput>
38
+
39
+ \`\`\`typescript
40
+ import { createMappingKey } from '@breadstone/archipel-platform-core';
41
+
42
+ export const PRODUCT_MAPPING_KEY = createMappingKey<IProductMappingInput, ProductResponse>('food.product');
43
+ \`\`\`
44
+
45
+ The string argument \`'food.product'\` is the unique registry key. Convention:
46
+ \`<domain>.<entity>\` in lowercase dot-notation.
47
+
48
+ ## MappingService API
49
+
50
+ \`\`\`typescript
51
+ // Key-based mapping (preferred)
52
+ const response = mappingService.map(PRODUCT_MAPPING_KEY, input);
53
+ // → TOutput is inferred from the key, TInput is validated
54
+
55
+ // Safe variant (returns undefined if not registered)
56
+ const maybeResponse = mappingService.tryMap(PRODUCT_MAPPING_KEY, input);
57
+
58
+ // Type-based mapping (alternative)
59
+ const response = mappingService.mapTypes(sourceInstance, DestinationClass);
60
+ const responses = mappingService.mapTypesArray(sourceArray, DestinationClass);
61
+ \`\`\`
62
+
63
+ ## How to Create a Mapping
64
+
65
+ ### Step 1: Define the input interface
66
+
67
+ The input interface represents the shape of data coming from the repository query.
68
+ Property names MUST match the Prisma select shape exactly.
69
+
70
+ \`\`\`typescript
71
+ // models/mapping-inputs/IProductMappingInput.ts
72
+ export interface IProductMappingInput {
73
+ readonly id: string;
74
+ readonly barcode: string;
75
+ readonly name: string;
76
+ readonly categoryId: string;
77
+ readonly createdAt: Date;
78
+ }
79
+ \`\`\`
80
+
81
+ ### Step 2: Create a branded mapping key
82
+
83
+ Each key is an **exported constant** — never inline magic strings.
84
+
85
+ \`\`\`typescript
86
+ // constants/MappingKeys.ts
87
+ import { createMappingKey } from '@breadstone/archipel-platform-core';
88
+ import { IProductMappingInput } from '../models/mapping-inputs/IProductMappingInput';
89
+ import { ProductResponse } from '../dtos/ProductResponse';
90
+
91
+ export const PRODUCT_MAPPING_KEY = createMappingKey<IProductMappingInput, ProductResponse>('food.product');
92
+ \`\`\`
93
+
94
+ ### Step 3: Create a mapping profile
95
+
96
+ A profile extends \`MappingProfileBase\` and registers one or more mappings via the builder.
97
+
98
+ \`\`\`typescript
99
+ // mappers/ProductMappingProfile.ts
100
+ import { MappingProfileBase, IMappingBuilder } from '@breadstone/archipel-platform-core';
101
+ import { PRODUCT_MAPPING_KEY } from '../constants/MappingKeys';
102
+ import { IProductMappingInput } from '../models/mapping-inputs/IProductMappingInput';
103
+ import { ProductResponse } from '../dtos/ProductResponse';
104
+
105
+ export class ProductMappingProfile extends MappingProfileBase {
106
+
107
+ // #region Methods
108
+
109
+ public configure(builder: IMappingBuilder): void {
110
+ builder.createKeyedMap(PRODUCT_MAPPING_KEY, (input: IProductMappingInput) => {
111
+ const response = new ProductResponse();
112
+ response.id = input.id;
113
+ response.barcode = input.barcode;
114
+ response.name = input.name;
115
+ response.categoryId = input.categoryId;
116
+ response.createdAt = input.createdAt;
117
+
118
+ return response;
119
+ });
120
+ }
121
+
122
+ // #endregion
123
+
124
+ }
125
+ \`\`\`
126
+
127
+ ### Step 4: Register the profile in the module
128
+
129
+ \`\`\`typescript
130
+ import { MappingModule } from '@breadstone/archipel-platform-core';
131
+ import { ProductMappingProfile } from './mappers/ProductMappingProfile';
132
+
133
+ @Module({
134
+ imports: [
135
+ MappingModule.withProfiles([ProductMappingProfile]),
136
+ ],
137
+ })
138
+ export class ProductModule {}
139
+ \`\`\`
140
+
141
+ ### Step 5: Use in controller (NOT in service)
142
+
143
+ \`\`\`typescript
144
+ @Controller('/products')
145
+ export class ProductController {
146
+
147
+ // #region Fields
148
+
149
+ private readonly _productService: ProductService;
150
+ private readonly _mappingService: MappingService;
151
+
152
+ // #endregion
153
+
154
+ // #region Ctor
155
+
156
+ public constructor(productService: ProductService, mappingService: MappingService) {
157
+ this._productService = productService;
158
+ this._mappingService = mappingService;
159
+ }
160
+
161
+ // #endregion
162
+
163
+ // #region Methods
164
+
165
+ @Get(':id')
166
+ public async getProduct(@Param('id') id: string): Promise<ProductResponse> {
167
+ const entity = await this._productService.findById(id);
168
+
169
+ return this._mappingService.map(PRODUCT_MAPPING_KEY, entity);
170
+ }
171
+
172
+ @Get()
173
+ public async listProducts(): Promise<ProductResponse[]> {
174
+ const entities = await this._productService.findAll();
175
+
176
+ return entities.map((e) => this._mappingService.map(PRODUCT_MAPPING_KEY, e));
177
+ }
178
+
179
+ // #endregion
180
+
181
+ }
182
+ \`\`\`
183
+
184
+ ## MappingBuilder Methods
185
+
186
+ The builder supports two registration flavors:
187
+
188
+ ### createKeyedMap (preferred)
189
+
190
+ \`\`\`typescript
191
+ builder.createKeyedMap(SOME_MAPPING_KEY, (input: TInput) => {
192
+ const output = new TOutput();
193
+ // ... map fields
194
+ return output;
195
+ });
196
+ \`\`\`
197
+
198
+ ### createMap (type-based)
199
+
200
+ \`\`\`typescript
201
+ builder.createMap(SourceClass, DestinationClass, (source: SourceClass) => {
202
+ const dest = new DestinationClass();
203
+ // ... map fields
204
+ return dest;
205
+ });
206
+ \`\`\`
207
+
208
+ ## Error Handling
209
+
210
+ - \`MappingNotRegisteredError\` — thrown when a keyed mapping is not found
211
+ - \`TypeMappingNotRegisteredError\` — thrown when a type-based mapping is not found
212
+ - Both extend \`MappingError\` with a machine-readable \`code\` field
213
+
214
+ ## Rules
215
+
216
+ 1. **Mapping keys MUST be exported constants** — never inline magic strings in services or controllers.
217
+ 2. **Services return entities, controllers map to responses** — services MUST NOT create response objects.
218
+ 3. **One mapping key per entity→response pair** — use descriptive dot notation for the key string.
219
+ 4. **Input interfaces match Prisma select shape** — property names must align exactly.
220
+ 5. **Profiles extend MappingProfileBase** and are registered via \`MappingModule.withProfiles()\`.
221
+ 6. **Use \`createKeyedMap\` over \`createMap\`** — branded keys provide better type safety.
222
+ 7. **Mapping functions instantiate response classes** — use \`new ResponseClass()\` and assign fields.
223
+ `;
224
+ const MAPPING_PATTERN_WITH_CONTEXT = (entityName, fields, responseName) => `
225
+ ## Example: Mapping for "${entityName}" → "${responseName}"
226
+
227
+ Given an entity \`${entityName}\` with fields: ${fields.map((f) => `\`${f}\``).join(', ')}
228
+
229
+ ### 1. Input Interface
230
+
231
+ \`\`\`typescript
232
+ // models/mapping-inputs/I${entityName}MappingInput.ts
233
+
234
+ export interface I${entityName}MappingInput {
235
+ ${fields.map((f) => ` readonly ${f}: ${inferMappingFieldType(f)};`).join('\n')}
236
+ }
237
+ \`\`\`
238
+
239
+ ### 2. Mapping Key
240
+
241
+ \`\`\`typescript
242
+ // constants/MappingKeys.ts
243
+ import { createMappingKey } from '@breadstone/archipel-platform-core';
244
+ import { I${entityName}MappingInput } from '../models/mapping-inputs/I${entityName}MappingInput';
245
+ import { ${responseName} } from '../dtos/${responseName}';
246
+
247
+ export const ${toConstantCase(entityName)}_MAPPING_KEY = createMappingKey<I${entityName}MappingInput, ${responseName}>('${toDotNotation(entityName)}');
248
+ \`\`\`
249
+
250
+ ### 3. Mapping Profile
251
+
252
+ \`\`\`typescript
253
+ // mappers/${entityName}MappingProfile.ts
254
+ import { MappingProfileBase, IMappingBuilder } from '@breadstone/archipel-platform-core';
255
+ import { ${toConstantCase(entityName)}_MAPPING_KEY } from '../constants/MappingKeys';
256
+ import { I${entityName}MappingInput } from '../models/mapping-inputs/I${entityName}MappingInput';
257
+ import { ${responseName} } from '../dtos/${responseName}';
258
+
259
+ export class ${entityName}MappingProfile extends MappingProfileBase {
260
+
261
+ // #region Methods
262
+
263
+ public configure(builder: IMappingBuilder): void {
264
+ builder.createKeyedMap(${toConstantCase(entityName)}_MAPPING_KEY, (input: I${entityName}MappingInput) => {
265
+ const response = new ${responseName}();
266
+ ${fields.map((f) => ` response.${f} = input.${f};`).join('\n')}
267
+
268
+ return response;
269
+ });
270
+ }
271
+
272
+ // #endregion
273
+
274
+ }
275
+ \`\`\`
276
+
277
+ ### 4. Module Registration
278
+
279
+ \`\`\`typescript
280
+ import { MappingModule } from '@breadstone/archipel-platform-core';
281
+ import { ${entityName}MappingProfile } from './mappers/${entityName}MappingProfile';
282
+
283
+ @Module({
284
+ imports: [
285
+ MappingModule.withProfiles([${entityName}MappingProfile]),
286
+ ],
287
+ })
288
+ export class ${entityName}Module {}
289
+ \`\`\`
290
+
291
+ ### 5. Controller Usage
292
+
293
+ \`\`\`typescript
294
+ // In a controller method:
295
+ const entity = await this._${lowerFirst(entityName)}Service.findById(id);
296
+ const response = this._mappingService.map(${toConstantCase(entityName)}_MAPPING_KEY, entity);
297
+ \`\`\`
298
+ `;
299
+ exports.MAPPING_PATTERN_WITH_CONTEXT = MAPPING_PATTERN_WITH_CONTEXT;
300
+ function inferMappingFieldType(fieldName) {
301
+ if (fieldName === 'id')
302
+ return 'string';
303
+ if (fieldName.endsWith('Id'))
304
+ return 'string';
305
+ if (fieldName.endsWith('At') || fieldName === 'createdAt' || fieldName === 'updatedAt')
306
+ return 'Date';
307
+ if (fieldName.startsWith('is') || fieldName.startsWith('has'))
308
+ return 'boolean';
309
+ if (fieldName === 'count' || fieldName === 'quantity' || fieldName === 'amount' || fieldName === 'price')
310
+ return 'number';
311
+ return 'string';
312
+ }
313
+ function toConstantCase(name) {
314
+ return name.replace(/([a-z])([A-Z])/g, '$1_$2').toUpperCase();
315
+ }
316
+ function toDotNotation(name) {
317
+ return name.replace(/([a-z])([A-Z])/g, '$1.$2').toLowerCase();
318
+ }
319
+ function lowerFirst(str) {
320
+ return str.charAt(0).toLowerCase() + str.slice(1);
321
+ }
322
+ //# sourceMappingURL=mappingPattern.js.map
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Static knowledge content for the Archipel dynamic module pattern.
3
+ * Returned by the get-module-pattern tool.
4
+ */
5
+ export declare const MODULE_PATTERN_KNOWLEDGE = "# Archipel Dynamic Module Pattern\n\n## Overview\n\nArchipel platform libraries use **NestJS dynamic modules** with a `register()` factory\nmethod and **port/adapter dependency inversion**. Each library defines abstract port\nclasses. The consuming application provides concrete implementations at registration time.\n\nThis pattern keeps platform libraries free of product-specific logic while allowing\nfull customization through dependency injection.\n\n## Pattern Structure\n\n### 1. Abstract Port (Contract)\n\n```typescript\n// contracts/FeatureAccessPort.ts\n\nexport abstract class FeatureAccessPort {\n\n public abstract checkAccess(userId: string, featureKey: string): Promise<IFeatureAccessResult>;\n\n public abstract recordUsage(userId: string, featureKey: string): Promise<void>;\n\n}\n```\n\nPorts are **abstract classes** (not interfaces) so they can serve as NestJS injection tokens.\n\n### 2. Options Interface\n\n```typescript\n// interfaces/IPaymentModuleOptions.ts\n\nexport interface IPaymentModuleOptions {\n /**\n * Concrete implementation of the FeatureAccessPort.\n */\n featureAccess?: Type<FeatureAccessPort>;\n\n /**\n * When true the module is registered globally.\n */\n isGlobal?: boolean;\n}\n```\n\n### 3. Dynamic Module with register()\n\n```typescript\n// PaymentModule.ts\nimport { ConfigModule } from '@breadstone/archipel-platform-core';\nimport { type DynamicModule, Module, type Type } from '@nestjs/common';\n\n@Module({})\nexport class PaymentModule {\n\n public static register(options?: IPaymentModuleOptions): DynamicModule {\n const providers = [StripeClient, FeatureGuard, FeatureUsageInterceptor];\n\n if (options?.featureAccess) {\n providers.push({\n provide: FeatureAccessPort,\n useClass: options.featureAccess,\n } as never);\n }\n\n return {\n global: options?.isGlobal ?? false,\n module: PaymentModule,\n imports: [ConfigModule.register('platform-payments', PLATFORM_PAYMENTS_CONFIG_ENTRIES)],\n providers: providers,\n exports: [StripeClient, FeatureGuard, FeatureUsageInterceptor],\n };\n }\n\n}\n```\n\n### 4. Consumer Registration\n\n```typescript\n// In the consuming application:\n@Module({\n imports: [\n PaymentModule.register({\n featureAccess: MyFeatureAccessAdapter,\n isGlobal: true,\n }),\n ],\n})\nexport class AppModule {}\n```\n\n## Variants in the Codebase\n\n### Simple: PaymentModule\n\n- 1 optional port (`featureAccess`)\n- Optional `isGlobal` flag\n- Config via `ConfigModule.register()`\n\n### Complex: AuthModule\n\n- 4 required ports (`authSubject`, `mfaSubject`, `sessionPersistence`, `verificationSubject`)\n- 2 optional ports (`socialAuth`, `tokenEnricher`)\n- Conditional strategy registration (social OAuth only when `socialAuth` provided)\n- Imports: PassportModule, JwtModule, MappingModule, EventModule, IdentifierModule\n- Middleware configuration via `configure(consumer)`\n\n### Provider-based: BlobModule\n\n- Uses `forRoot()` instead of `register()` (global by default)\n- Discriminated union for provider selection: `{ kind: 'Vercel' }` or `{ kind: 'Custom', useClass: ... }`\n- Optional persistence ports (`objectPersistence`, `variantPersistence`)\n\n### Infrastructure: DatabaseModule\n\n- Both `forRoot()` (global) and `register()` (scoped) variants\n- Factory provider for PrismaService with extensions\n- Health indicator bootstrapping\n\n### Async: McpModule\n\n- `register(options)` for synchronous configuration\n- `registerAsync({ useFactory, inject })` for async (e.g., reading config at runtime)\n- `registerAsync({ useClass })` for factory class pattern\n- `registerAsync({ useExisting })` for reusing an existing factory\n\n## ConfigModule Integration\n\nEvery library module imports `ConfigModule.register()` to declare its configuration\ndependencies:\n\n```typescript\nimports: [ConfigModule.register('platform-payments', PLATFORM_PAYMENTS_CONFIG_ENTRIES)]\n```\n\nThis registers typed config keys into the global `ConfigRegistry` for validation\nand discovery.\n\n## MappingModule Integration\n\nModules that need object mapping import `MappingModule.withProfiles()`:\n\n```typescript\nimports: [MappingModule.withProfiles([SessionMappingProfile])]\n```\n\n## Health Indicator Pattern\n\nInfrastructure modules (Database, Blob) register health indicators:\n\n```typescript\nproviders: [\n BlobHealthIndicator,\n {\n provide: 'BLOB_HEALTH_INDICATOR_BOOTSTRAP',\n useFactory: (orchestrator: HealthOrchestrator, indicator: BlobHealthIndicator) => {\n orchestrator.registerIndicator(indicator);\n return true;\n },\n inject: [HealthOrchestrator, BlobHealthIndicator],\n },\n]\n```\n\n## Rules\n\n1. **Ports are abstract classes** \u2014 not interfaces \u2014 so they work as DI tokens.\n2. **`register()` for stateless config**, `registerAsync()` when config depends on runtime values.\n3. **`forRoot()` for global singletons** (database, blob storage), `register()` for scoped modules.\n4. **Always import ConfigModule.register()** to declare environment dependencies.\n5. **Optional ports use conditional provider registration** (`if (options?.port)`).\n6. **Required ports are listed in the options interface** without optional markers.\n7. **Exports should list concrete services, guards, interceptors** \u2014 not internal implementation details.\n";
6
+ export declare const MODULE_PATTERN_WITH_CONTEXT: (moduleName: string, ports: string[]) => string;
@@ -0,0 +1,283 @@
1
+ "use strict";
2
+ /**
3
+ * Static knowledge content for the Archipel dynamic module pattern.
4
+ * Returned by the get-module-pattern tool.
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.MODULE_PATTERN_WITH_CONTEXT = exports.MODULE_PATTERN_KNOWLEDGE = void 0;
8
+ exports.MODULE_PATTERN_KNOWLEDGE = `# Archipel Dynamic Module Pattern
9
+
10
+ ## Overview
11
+
12
+ Archipel platform libraries use **NestJS dynamic modules** with a \`register()\` factory
13
+ method and **port/adapter dependency inversion**. Each library defines abstract port
14
+ classes. The consuming application provides concrete implementations at registration time.
15
+
16
+ This pattern keeps platform libraries free of product-specific logic while allowing
17
+ full customization through dependency injection.
18
+
19
+ ## Pattern Structure
20
+
21
+ ### 1. Abstract Port (Contract)
22
+
23
+ \`\`\`typescript
24
+ // contracts/FeatureAccessPort.ts
25
+
26
+ export abstract class FeatureAccessPort {
27
+
28
+ public abstract checkAccess(userId: string, featureKey: string): Promise<IFeatureAccessResult>;
29
+
30
+ public abstract recordUsage(userId: string, featureKey: string): Promise<void>;
31
+
32
+ }
33
+ \`\`\`
34
+
35
+ Ports are **abstract classes** (not interfaces) so they can serve as NestJS injection tokens.
36
+
37
+ ### 2. Options Interface
38
+
39
+ \`\`\`typescript
40
+ // interfaces/IPaymentModuleOptions.ts
41
+
42
+ export interface IPaymentModuleOptions {
43
+ /**
44
+ * Concrete implementation of the FeatureAccessPort.
45
+ */
46
+ featureAccess?: Type<FeatureAccessPort>;
47
+
48
+ /**
49
+ * When true the module is registered globally.
50
+ */
51
+ isGlobal?: boolean;
52
+ }
53
+ \`\`\`
54
+
55
+ ### 3. Dynamic Module with register()
56
+
57
+ \`\`\`typescript
58
+ // PaymentModule.ts
59
+ import { ConfigModule } from '@breadstone/archipel-platform-core';
60
+ import { type DynamicModule, Module, type Type } from '@nestjs/common';
61
+
62
+ @Module({})
63
+ export class PaymentModule {
64
+
65
+ public static register(options?: IPaymentModuleOptions): DynamicModule {
66
+ const providers = [StripeClient, FeatureGuard, FeatureUsageInterceptor];
67
+
68
+ if (options?.featureAccess) {
69
+ providers.push({
70
+ provide: FeatureAccessPort,
71
+ useClass: options.featureAccess,
72
+ } as never);
73
+ }
74
+
75
+ return {
76
+ global: options?.isGlobal ?? false,
77
+ module: PaymentModule,
78
+ imports: [ConfigModule.register('platform-payments', PLATFORM_PAYMENTS_CONFIG_ENTRIES)],
79
+ providers: providers,
80
+ exports: [StripeClient, FeatureGuard, FeatureUsageInterceptor],
81
+ };
82
+ }
83
+
84
+ }
85
+ \`\`\`
86
+
87
+ ### 4. Consumer Registration
88
+
89
+ \`\`\`typescript
90
+ // In the consuming application:
91
+ @Module({
92
+ imports: [
93
+ PaymentModule.register({
94
+ featureAccess: MyFeatureAccessAdapter,
95
+ isGlobal: true,
96
+ }),
97
+ ],
98
+ })
99
+ export class AppModule {}
100
+ \`\`\`
101
+
102
+ ## Variants in the Codebase
103
+
104
+ ### Simple: PaymentModule
105
+
106
+ - 1 optional port (\`featureAccess\`)
107
+ - Optional \`isGlobal\` flag
108
+ - Config via \`ConfigModule.register()\`
109
+
110
+ ### Complex: AuthModule
111
+
112
+ - 4 required ports (\`authSubject\`, \`mfaSubject\`, \`sessionPersistence\`, \`verificationSubject\`)
113
+ - 2 optional ports (\`socialAuth\`, \`tokenEnricher\`)
114
+ - Conditional strategy registration (social OAuth only when \`socialAuth\` provided)
115
+ - Imports: PassportModule, JwtModule, MappingModule, EventModule, IdentifierModule
116
+ - Middleware configuration via \`configure(consumer)\`
117
+
118
+ ### Provider-based: BlobModule
119
+
120
+ - Uses \`forRoot()\` instead of \`register()\` (global by default)
121
+ - Discriminated union for provider selection: \`{ kind: 'Vercel' }\` or \`{ kind: 'Custom', useClass: ... }\`
122
+ - Optional persistence ports (\`objectPersistence\`, \`variantPersistence\`)
123
+
124
+ ### Infrastructure: DatabaseModule
125
+
126
+ - Both \`forRoot()\` (global) and \`register()\` (scoped) variants
127
+ - Factory provider for PrismaService with extensions
128
+ - Health indicator bootstrapping
129
+
130
+ ### Async: McpModule
131
+
132
+ - \`register(options)\` for synchronous configuration
133
+ - \`registerAsync({ useFactory, inject })\` for async (e.g., reading config at runtime)
134
+ - \`registerAsync({ useClass })\` for factory class pattern
135
+ - \`registerAsync({ useExisting })\` for reusing an existing factory
136
+
137
+ ## ConfigModule Integration
138
+
139
+ Every library module imports \`ConfigModule.register()\` to declare its configuration
140
+ dependencies:
141
+
142
+ \`\`\`typescript
143
+ imports: [ConfigModule.register('platform-payments', PLATFORM_PAYMENTS_CONFIG_ENTRIES)]
144
+ \`\`\`
145
+
146
+ This registers typed config keys into the global \`ConfigRegistry\` for validation
147
+ and discovery.
148
+
149
+ ## MappingModule Integration
150
+
151
+ Modules that need object mapping import \`MappingModule.withProfiles()\`:
152
+
153
+ \`\`\`typescript
154
+ imports: [MappingModule.withProfiles([SessionMappingProfile])]
155
+ \`\`\`
156
+
157
+ ## Health Indicator Pattern
158
+
159
+ Infrastructure modules (Database, Blob) register health indicators:
160
+
161
+ \`\`\`typescript
162
+ providers: [
163
+ BlobHealthIndicator,
164
+ {
165
+ provide: 'BLOB_HEALTH_INDICATOR_BOOTSTRAP',
166
+ useFactory: (orchestrator: HealthOrchestrator, indicator: BlobHealthIndicator) => {
167
+ orchestrator.registerIndicator(indicator);
168
+ return true;
169
+ },
170
+ inject: [HealthOrchestrator, BlobHealthIndicator],
171
+ },
172
+ ]
173
+ \`\`\`
174
+
175
+ ## Rules
176
+
177
+ 1. **Ports are abstract classes** — not interfaces — so they work as DI tokens.
178
+ 2. **\`register()\` for stateless config**, \`registerAsync()\` when config depends on runtime values.
179
+ 3. **\`forRoot()\` for global singletons** (database, blob storage), \`register()\` for scoped modules.
180
+ 4. **Always import ConfigModule.register()** to declare environment dependencies.
181
+ 5. **Optional ports use conditional provider registration** (\`if (options?.port)\`).
182
+ 6. **Required ports are listed in the options interface** without optional markers.
183
+ 7. **Exports should list concrete services, guards, interceptors** — not internal implementation details.
184
+ `;
185
+ const MODULE_PATTERN_WITH_CONTEXT = (moduleName, ports) => `
186
+ ## Example: Dynamic Module "${moduleName}"
187
+
188
+ With ports: ${ports.map((p) => `\`${p}\``).join(', ')}
189
+
190
+ ### Port Definitions
191
+
192
+ ${ports
193
+ .map((port) => `\`\`\`typescript
194
+ // contracts/${port}.ts
195
+
196
+ export abstract class ${port} {
197
+
198
+ // Define abstract methods for the port contract
199
+ public abstract execute(/* args */): Promise<void>;
200
+
201
+ }
202
+ \`\`\``)
203
+ .join('\n\n')}
204
+
205
+ ### Options Interface
206
+
207
+ \`\`\`typescript
208
+ // interfaces/I${moduleName}Options.ts
209
+ import { Type } from '@nestjs/common';
210
+ ${ports.map((port) => `import { ${port} } from '../contracts/${port}';`).join('\n')}
211
+
212
+ export interface I${moduleName}Options {
213
+ ${ports.map((port) => ` ${lowerFirstChar(port)}: Type<${port}>;`).join('\n')}
214
+ isGlobal?: boolean;
215
+ }
216
+ \`\`\`
217
+
218
+ ### Module Class
219
+
220
+ \`\`\`typescript
221
+ // ${moduleName}.ts
222
+ import { ConfigModule } from '@breadstone/archipel-platform-core';
223
+ import { type DynamicModule, Module, type Type } from '@nestjs/common';
224
+ import { I${moduleName}Options } from './interfaces/I${moduleName}Options';
225
+ ${ports.map((port) => `import { ${port} } from './contracts/${port}';`).join('\n')}
226
+
227
+ @Module({})
228
+ export class ${moduleName} {
229
+
230
+ public static register(options: I${moduleName}Options): DynamicModule {
231
+ const portProviders = [
232
+ ${ports.map((port) => ` { provide: ${port}, useClass: options.${lowerFirstChar(port)} },`).join('\n')}
233
+ ];
234
+
235
+ return {
236
+ global: options.isGlobal ?? false,
237
+ module: ${moduleName},
238
+ imports: [
239
+ ConfigModule.register('${toKebabCase(moduleName)}', PLATFORM_${toUpperSnakeCase(moduleName)}_CONFIG_ENTRIES),
240
+ ],
241
+ providers: [
242
+ ...portProviders,
243
+ // Add services, guards, interceptors here
244
+ ],
245
+ exports: [
246
+ // Export public services, guards, interceptors
247
+ ],
248
+ };
249
+ }
250
+
251
+ }
252
+ \`\`\`
253
+
254
+ ### Consumer Usage
255
+
256
+ \`\`\`typescript
257
+ @Module({
258
+ imports: [
259
+ ${moduleName}.register({
260
+ ${ports.map((port) => ` ${lowerFirstChar(port)}: My${port}Adapter,`).join('\n')}
261
+ }),
262
+ ],
263
+ })
264
+ export class AppModule {}
265
+ \`\`\`
266
+ `;
267
+ exports.MODULE_PATTERN_WITH_CONTEXT = MODULE_PATTERN_WITH_CONTEXT;
268
+ function lowerFirstChar(str) {
269
+ return str.charAt(0).toLowerCase() + str.slice(1);
270
+ }
271
+ function toKebabCase(name) {
272
+ return name
273
+ .replace(/([a-z])([A-Z])/g, '$1-$2')
274
+ .toLowerCase()
275
+ .replace(/module$/, '');
276
+ }
277
+ function toUpperSnakeCase(name) {
278
+ return name
279
+ .replace(/([a-z])([A-Z])/g, '$1_$2')
280
+ .toUpperCase()
281
+ .replace(/MODULE$/, '');
282
+ }
283
+ //# sourceMappingURL=modulePattern.js.map
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Static knowledge content for the Archipel query pattern.
3
+ * Returned by the get-query-pattern tool.
4
+ */
5
+ export declare const QUERY_PATTERN_KNOWLEDGE = "# Archipel Query Pattern (v1)\n\n## Overview\n\nIn Archipel, data access follows the **Repository + Query** pattern. Repositories never expose\nraw Prisma delegate methods to services. Instead, every data operation is wrapped in a\n**query factory function** that returns an `IRepositoryQuery` object. Services call\n`repository.execute(someQuery(...))` \u2014 never `repository.findFirst(...)` directly.\n\n## Core Interface\n\n```typescript\nexport interface IRepositoryQuery<TDelegate, TResult> {\n readonly name: string;\n run(model: TDelegate): Promise<TResult>;\n}\n```\n\n- `TDelegate` \u2014 the Prisma delegate type (e.g. `Prisma.UserDelegate`)\n- `TResult` \u2014 the query's return type\n- `name` \u2014 identifier used for logging and debugging\n\n## Factory Function\n\n```typescript\nimport { IRepositoryQuery } from '@breadstone/archipel-platform-database';\n\nexport function query<TDelegate, TResult>(\n name: string,\n run: (model: TDelegate) => Promise<TResult>,\n): IRepositoryQuery<TDelegate, TResult> {\n return { name, run };\n}\n```\n\n## Type Extraction\n\n```typescript\nexport type QueryResultType<T> = T extends IRepositoryQuery<unknown, infer R> ? R : never;\n```\n\nUse this to derive the result type from a query factory without duplicating types:\n```typescript\ntype UserProfileResult = QueryResultType<ReturnType<typeof findUserProfileQuery>>;\n```\n\n## How to Write a Query\n\n### Step 1: Define the query factory function\n\nEach query is a **named function** that returns an `IRepositoryQuery`. The function may accept\nparameters \u2014 these become the query's runtime arguments.\n\n```typescript\nimport { Prisma } from '@prisma/client';\nimport { query } from '@breadstone/archipel-platform-database';\n\nexport function findUserByEmailQuery(email: string) {\n return query<Prisma.UserDelegate, { id: string; email: string; name: string } | null>(\n 'findUserByEmail',\n (model) =>\n model.findFirst({\n where: { email },\n select: { id: true, email: true, name: true },\n }),\n );\n}\n```\n\n### Step 2: Call from a service via repository.execute()\n\n```typescript\n// In the service:\nconst user = await this._userRepository.execute(findUserByEmailQuery(email));\n```\n\n### Step 3: Extract result type if needed for mapping\n\n```typescript\ntype FindUserByEmailResult = QueryResultType<ReturnType<typeof findUserByEmailQuery>>;\n```\n\n## Transactional Queries\n\nFor operations that span multiple models, use `transactionalQuery`:\n\n```typescript\nimport { Prisma } from '@prisma/client';\nimport { transactionalQuery } from '@breadstone/archipel-platform-database';\n\nexport function createOrderWithItemsQuery(data: { userId: string; items: Array<{ productId: string; quantity: number }> }) {\n return transactionalQuery<{ orderId: string }>(\n 'createOrderWithItems',\n async (tx: Prisma.TransactionClient) => {\n const order = await tx.order.create({\n data: { userId: data.userId },\n select: { id: true },\n });\n\n await tx.orderItem.createMany({\n data: data.items.map((item) => ({\n orderId: order.id,\n productId: item.productId,\n quantity: item.quantity,\n })),\n });\n\n return { orderId: order.id };\n },\n );\n}\n```\n\nCalled via:\n```typescript\nconst result = await this._orderRepository.executeTransactional(\n createOrderWithItemsQuery({ userId, items }),\n);\n```\n\n## Rules\n\n1. **Never call Prisma delegate methods directly from services.** Always go through `execute(query)`.\n2. **Always select only the fields you need.** Use `select` \u2014 never return full records.\n3. **Query names must be descriptive.** Use the pattern: `verbModelByConditionQuery`\n (e.g. `findUserByEmailQuery`, `countOrdersByStatusQuery`, `updateUserNameQuery`).\n4. **One query per file** for non-trivial queries. Small related queries may share a file.\n5. **Type the result explicitly.** The second generic parameter of `query()` should be an inline\n object type or a dedicated interface matching the `select` shape.\n6. **Each query factory is a standalone function** (not a class method). Import `query` from\n `@breadstone/archipel-platform-database`.\n";
6
+ export declare const QUERY_PATTERN_WITH_MODEL: (modelName: string, fields: string[]) => string;