@breadstone/archipel-mcp 0.0.9 → 0.0.11

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 (619) hide show
  1. package/data/guides/ai-text-generation.md +361 -0
  2. package/data/guides/analytics-and-error-tracking.md +189 -0
  3. package/data/guides/authentication-and-authorization.md +657 -0
  4. package/data/guides/blob-storage.md +242 -0
  5. package/data/guides/caching.md +255 -0
  6. package/data/guides/cryptography-and-otp.md +240 -0
  7. package/data/guides/document-generation.md +174 -0
  8. package/data/guides/email-delivery.md +196 -0
  9. package/data/guides/esigning-integration.md +231 -0
  10. package/data/guides/getting-started.md +351 -0
  11. package/data/guides/implementing-ports.md +317 -0
  12. package/data/guides/index.md +61 -0
  13. package/data/guides/mcp-server.md +222 -0
  14. package/data/guides/openapi-and-feature-discovery.md +266 -0
  15. package/data/guides/payments-and-feature-gating.md +244 -0
  16. package/data/guides/resource-management.md +352 -0
  17. package/data/guides/telemetry-and-observability.md +190 -0
  18. package/data/guides/testing.md +319 -0
  19. package/data/guides/tsdoc-guidelines.md +45 -0
  20. package/data/packages/platform-analytics/api/Class.AnalyticsClientPort.md +19 -20
  21. package/data/packages/platform-analytics/api/Class.AnalyticsModule.md +2 -3
  22. package/data/packages/platform-analytics/api/Class.AppInsightsAnalyticsClient.md +21 -22
  23. package/data/packages/platform-analytics/api/Class.DatadogAnalyticsClient.md +21 -22
  24. package/data/packages/platform-analytics/api/Class.NoopAnalyticsClient.md +19 -20
  25. package/data/packages/platform-analytics/api/Class.SentryAnalyticsClient.md +21 -22
  26. package/data/packages/platform-analytics/api/Interface.IAnalyticsBreadcrumb.md +3 -4
  27. package/data/packages/platform-analytics/api/Interface.IAnalyticsModuleOptions.md +2 -3
  28. package/data/packages/platform-analytics/api/Interface.IAnalyticsUser.md +3 -4
  29. package/data/packages/platform-analytics/api/TypeAlias.AnalyticsLevel.md +1 -2
  30. package/data/packages/platform-analytics/api/Variable.APPINSIGHTS_CONFIG_ENTRIES.md +2 -3
  31. package/data/packages/platform-analytics/api/Variable.APPLICATIONINSIGHTS_CONNECTION_STRING.md +1 -2
  32. package/data/packages/platform-analytics/api/Variable.DATADOG_CONFIG_ENTRIES.md +2 -3
  33. package/data/packages/platform-analytics/api/Variable.DD_ENV.md +1 -2
  34. package/data/packages/platform-analytics/api/Variable.DD_SERVICE.md +1 -2
  35. package/data/packages/platform-analytics/api/Variable.SENTRY_CONFIG_ENTRIES.md +2 -3
  36. package/data/packages/platform-analytics/api/Variable.SENTRY_DSN.md +1 -2
  37. package/data/packages/platform-analytics/api/Variable.SENTRY_ENVIRONMENT.md +1 -2
  38. package/data/packages/platform-analytics/api/index.md +25 -26
  39. package/data/packages/platform-authentication/api/Class.AnonymousAuthGuard.md +4 -5
  40. package/data/packages/platform-authentication/api/Class.AppleConnector.md +19 -20
  41. package/data/packages/platform-authentication/api/Class.AuthModule.md +8 -9
  42. package/data/packages/platform-authentication/api/Class.AuthSubjectPort.md +10 -11
  43. package/data/packages/platform-authentication/api/Class.AuthTokenService.md +5 -6
  44. package/data/packages/platform-authentication/api/Class.ChallengeService.md +26 -27
  45. package/data/packages/platform-authentication/api/Class.GithubAuthGuard.md +4 -5
  46. package/data/packages/platform-authentication/api/Class.GithubConnector.md +14 -15
  47. package/data/packages/platform-authentication/api/Class.GoogleConnector.md +14 -15
  48. package/data/packages/platform-authentication/api/Class.JwtAuthGuard.md +4 -5
  49. package/data/packages/platform-authentication/api/Class.JwtPayloadBase.md +15 -16
  50. package/data/packages/platform-authentication/api/Class.LastActiveMiddleware.md +10 -11
  51. package/data/packages/platform-authentication/api/Class.LocalAuthGuard.md +4 -5
  52. package/data/packages/platform-authentication/api/Class.MfaService.md +54 -55
  53. package/data/packages/platform-authentication/api/Class.MfaSubjectPort.md +8 -9
  54. package/data/packages/platform-authentication/api/Class.MicrosoftConnector.md +17 -18
  55. package/data/packages/platform-authentication/api/Class.RolesGuard.md +5 -6
  56. package/data/packages/platform-authentication/api/Class.SessionMappingProfile.md +4 -5
  57. package/data/packages/platform-authentication/api/Class.SessionPersistencePort.md +25 -26
  58. package/data/packages/platform-authentication/api/Class.SessionResponse.md +12 -13
  59. package/data/packages/platform-authentication/api/Class.SessionService.md +33 -34
  60. package/data/packages/platform-authentication/api/Class.SocialAuthGuard.md +5 -6
  61. package/data/packages/platform-authentication/api/Class.SocialAuthPort.md +2 -3
  62. package/data/packages/platform-authentication/api/Class.TokenEnricherPort.md +2 -3
  63. package/data/packages/platform-authentication/api/Class.TotpMfaChannel.md +27 -28
  64. package/data/packages/platform-authentication/api/Class.VerificationService.md +29 -30
  65. package/data/packages/platform-authentication/api/Class.VerificationSubjectPort.md +16 -17
  66. package/data/packages/platform-authentication/api/Function.Token.md +0 -1
  67. package/data/packages/platform-authentication/api/Function.UseRoles.md +2 -3
  68. package/data/packages/platform-authentication/api/Function.socialAuthGuardFactory.md +2 -3
  69. package/data/packages/platform-authentication/api/Interface.IAuthModuleOptions.md +20 -21
  70. package/data/packages/platform-authentication/api/Interface.IAuthSubject.md +7 -8
  71. package/data/packages/platform-authentication/api/Interface.IMfaChallengePayload.md +5 -6
  72. package/data/packages/platform-authentication/api/Interface.IMfaChallengeState.md +10 -11
  73. package/data/packages/platform-authentication/api/Interface.IMfaConfirmation.md +0 -1
  74. package/data/packages/platform-authentication/api/Interface.IMfaSetup.md +3 -4
  75. package/data/packages/platform-authentication/api/Interface.IMfaSubject.md +9 -10
  76. package/data/packages/platform-authentication/api/Interface.IMfaSubjectUpdate.md +7 -8
  77. package/data/packages/platform-authentication/api/Interface.ISessionRecord.md +14 -15
  78. package/data/packages/platform-authentication/api/Interface.ISignInResult.md +5 -6
  79. package/data/packages/platform-authentication/api/Interface.ISocialProfile.md +3 -4
  80. package/data/packages/platform-authentication/api/Interface.IStoreSessionArgs.md +5 -6
  81. package/data/packages/platform-authentication/api/Interface.IVerifiableSubject.md +4 -5
  82. package/data/packages/platform-authentication/api/Variable.APPLE_AUTH_CONFIG_ENTRIES.md +2 -3
  83. package/data/packages/platform-authentication/api/Variable.AUTH_APPLE_CALLBACK_URL.md +2 -3
  84. package/data/packages/platform-authentication/api/Variable.AUTH_APPLE_CLIENT_ID.md +2 -3
  85. package/data/packages/platform-authentication/api/Variable.AUTH_APPLE_KEY_ID.md +2 -3
  86. package/data/packages/platform-authentication/api/Variable.AUTH_APPLE_PRIVATE_KEY.md +2 -3
  87. package/data/packages/platform-authentication/api/Variable.AUTH_APPLE_SCOPE.md +2 -3
  88. package/data/packages/platform-authentication/api/Variable.AUTH_APPLE_TEAM_ID.md +2 -3
  89. package/data/packages/platform-authentication/api/Variable.AUTH_GITHUB_CALLBACK_URL.md +2 -3
  90. package/data/packages/platform-authentication/api/Variable.AUTH_GITHUB_CLIENT_ID.md +2 -3
  91. package/data/packages/platform-authentication/api/Variable.AUTH_GITHUB_CLIENT_SECRET.md +2 -3
  92. package/data/packages/platform-authentication/api/Variable.AUTH_GITHUB_SCOPE.md +2 -3
  93. package/data/packages/platform-authentication/api/Variable.AUTH_GOOGLE_CALLBACK_URL.md +2 -3
  94. package/data/packages/platform-authentication/api/Variable.AUTH_GOOGLE_CLIENT_ID.md +2 -3
  95. package/data/packages/platform-authentication/api/Variable.AUTH_GOOGLE_CLIENT_SECRET.md +2 -3
  96. package/data/packages/platform-authentication/api/Variable.AUTH_GOOGLE_SCOPE.md +2 -3
  97. package/data/packages/platform-authentication/api/Variable.AUTH_JWT_EXPIRES_IN.md +2 -3
  98. package/data/packages/platform-authentication/api/Variable.AUTH_JWT_SECRET.md +2 -3
  99. package/data/packages/platform-authentication/api/Variable.AUTH_MFA_CHALLENGE_EXPIRES_IN.md +2 -3
  100. package/data/packages/platform-authentication/api/Variable.AUTH_MFA_EMAIL_CODE_TTL.md +2 -3
  101. package/data/packages/platform-authentication/api/Variable.AUTH_MFA_EMAIL_MIN_RESEND.md +2 -3
  102. package/data/packages/platform-authentication/api/Variable.AUTH_MFA_ENCRYPTION_KEY.md +2 -3
  103. package/data/packages/platform-authentication/api/Variable.AUTH_MFA_ISSUER.md +2 -3
  104. package/data/packages/platform-authentication/api/Variable.AUTH_MFA_MAX_ATTEMPTS.md +2 -3
  105. package/data/packages/platform-authentication/api/Variable.AUTH_MFA_PUSH_CODE_TTL.md +2 -3
  106. package/data/packages/platform-authentication/api/Variable.AUTH_MFA_PUSH_MIN_RESEND.md +2 -3
  107. package/data/packages/platform-authentication/api/Variable.AUTH_MFA_SMS_CODE_TTL.md +2 -3
  108. package/data/packages/platform-authentication/api/Variable.AUTH_MFA_SMS_MIN_RESEND.md +2 -3
  109. package/data/packages/platform-authentication/api/Variable.AUTH_MICROSOFT_CALLBACK_URL.md +2 -3
  110. package/data/packages/platform-authentication/api/Variable.AUTH_MICROSOFT_CLIENT_ID.md +2 -3
  111. package/data/packages/platform-authentication/api/Variable.AUTH_MICROSOFT_CLIENT_SECRET.md +2 -3
  112. package/data/packages/platform-authentication/api/Variable.AUTH_MICROSOFT_SCOPE.md +2 -3
  113. package/data/packages/platform-authentication/api/Variable.AUTH_MICROSOFT_TENANT.md +2 -3
  114. package/data/packages/platform-authentication/api/Variable.AUTH_VERIFY_JWT_EXPIRES_IN.md +2 -3
  115. package/data/packages/platform-authentication/api/Variable.GITHUB_AUTH_CONFIG_ENTRIES.md +3 -4
  116. package/data/packages/platform-authentication/api/Variable.GOOGLE_AUTH_CONFIG_ENTRIES.md +3 -4
  117. package/data/packages/platform-authentication/api/Variable.MICROSOFT_AUTH_CONFIG_ENTRIES.md +2 -3
  118. package/data/packages/platform-authentication/api/Variable.PLATFORM_AUTHENTICATION_CONFIG_ENTRIES.md +3 -4
  119. package/data/packages/platform-authentication/api/Variable.ROLES_KEY.md +2 -3
  120. package/data/packages/platform-authentication/api/Variable.SEED_ANONYMOUS_USERNAME.md +2 -3
  121. package/data/packages/platform-authentication/api/Variable.SESSION_LIST_MAPPING_KEY.md +1 -2
  122. package/data/packages/platform-authentication/api/Variable.SESSION_MAPPING_KEY.md +1 -2
  123. package/data/packages/platform-authentication/api/Variable.TOTP_MFA_PROVIDERS.md +1 -2
  124. package/data/packages/platform-authentication/api/Variable.User.md +2 -3
  125. package/data/packages/platform-authentication/api/index.md +94 -95
  126. package/data/packages/platform-blob-storage/api/Class.AwsS3BlobProvider.md +16 -17
  127. package/data/packages/platform-blob-storage/api/Class.AzureBlobProvider.md +16 -17
  128. package/data/packages/platform-blob-storage/api/Class.BlobHealthIndicator.md +5 -6
  129. package/data/packages/platform-blob-storage/api/Class.BlobModule.md +2 -3
  130. package/data/packages/platform-blob-storage/api/Class.BlobObjectPersistencePort.md +12 -13
  131. package/data/packages/platform-blob-storage/api/Class.BlobService.md +45 -46
  132. package/data/packages/platform-blob-storage/api/Class.BlobVariantPersistencePort.md +7 -8
  133. package/data/packages/platform-blob-storage/api/Class.VercelBlobProvider.md +18 -19
  134. package/data/packages/platform-blob-storage/api/Interface.IAwsS3BlobProviderRegistration.md +2 -3
  135. package/data/packages/platform-blob-storage/api/Interface.IAwsS3ProviderOptions.md +5 -6
  136. package/data/packages/platform-blob-storage/api/Interface.IAzureBlobProviderOptions.md +2 -3
  137. package/data/packages/platform-blob-storage/api/Interface.IAzureBlobProviderRegistration.md +2 -3
  138. package/data/packages/platform-blob-storage/api/Interface.IBlobDeleteRequest.md +2 -3
  139. package/data/packages/platform-blob-storage/api/Interface.IBlobDownloadRequest.md +3 -4
  140. package/data/packages/platform-blob-storage/api/Interface.IBlobDownloadResult.md +6 -7
  141. package/data/packages/platform-blob-storage/api/Interface.IBlobModuleOptions.md +3 -4
  142. package/data/packages/platform-blob-storage/api/Interface.IBlobObjectMetadata.md +12 -13
  143. package/data/packages/platform-blob-storage/api/Interface.IBlobProvider.md +14 -15
  144. package/data/packages/platform-blob-storage/api/Interface.IBlobSignedUrlRequest.md +3 -4
  145. package/data/packages/platform-blob-storage/api/Interface.IBlobUploadRequest.md +8 -9
  146. package/data/packages/platform-blob-storage/api/Interface.IBlobUploadResult.md +1 -2
  147. package/data/packages/platform-blob-storage/api/Interface.ICustomBlobProviderRegistration.md +2 -3
  148. package/data/packages/platform-blob-storage/api/Interface.IVercelBlobProviderOptions.md +5 -6
  149. package/data/packages/platform-blob-storage/api/Interface.IVercelBlobProviderRegistration.md +2 -3
  150. package/data/packages/platform-blob-storage/api/TypeAlias.BlobDownloadResponseType.md +1 -2
  151. package/data/packages/platform-blob-storage/api/TypeAlias.BlobUploadBody.md +0 -1
  152. package/data/packages/platform-blob-storage/api/TypeAlias.IBlobProviderRegistration.md +1 -2
  153. package/data/packages/platform-blob-storage/api/Variable.AWS_S3_PROVIDER_OPTIONS.md +1 -2
  154. package/data/packages/platform-blob-storage/api/Variable.AZURE_BLOB_PROVIDER_OPTIONS.md +1 -2
  155. package/data/packages/platform-blob-storage/api/Variable.BLOB_PROVIDER.md +1 -2
  156. package/data/packages/platform-blob-storage/api/Variable.BlobDownloadResponseTypes.md +9 -10
  157. package/data/packages/platform-blob-storage/api/Variable.BlobProviderKinds.md +10 -11
  158. package/data/packages/platform-blob-storage/api/Variable.VERCEL_BLOB_PROVIDER_OPTIONS.md +1 -2
  159. package/data/packages/platform-blob-storage/api/index.md +41 -42
  160. package/data/packages/platform-caching/api/Class.MemoryLayeredCache.md +37 -38
  161. package/data/packages/platform-caching/api/Class.NoopCacheMetricsRecorder.md +19 -20
  162. package/data/packages/platform-caching/api/Class.RedisLayeredCache.md +39 -40
  163. package/data/packages/platform-caching/api/Interface.ICacheMetricsRecorder.md +19 -20
  164. package/data/packages/platform-caching/api/Interface.ICacheStats.md +4 -5
  165. package/data/packages/platform-caching/api/Interface.ILayeredCache.md +34 -35
  166. package/data/packages/platform-caching/api/Interface.ILayeredCacheOptions.md +4 -5
  167. package/data/packages/platform-caching/api/Interface.IRedisLayeredCacheOptions.md +15 -16
  168. package/data/packages/platform-caching/api/index.md +12 -13
  169. package/data/packages/platform-core/api/Class.AppHealthIndicator.md +4 -5
  170. package/data/packages/platform-core/api/Class.BlobResourceStrategy.md +20 -21
  171. package/data/packages/platform-core/api/Class.BooleanUtils.md +12 -13
  172. package/data/packages/platform-core/api/Class.CUIDGenerator.md +17 -18
  173. package/data/packages/platform-core/api/Class.CasingInterceptor.md +10 -11
  174. package/data/packages/platform-core/api/Class.CatchUtils.md +15 -16
  175. package/data/packages/platform-core/api/Class.ConfigKeyNotFoundError.md +89 -0
  176. package/data/packages/platform-core/api/Class.ConfigModule.md +7 -8
  177. package/data/packages/platform-core/api/Class.ConfigRegistry.md +8 -9
  178. package/data/packages/platform-core/api/Class.ConfigService.md +30 -32
  179. package/data/packages/platform-core/api/Class.ConfigStrategyBase.md +17 -18
  180. package/data/packages/platform-core/api/Class.ContentTemplateEngine.md +4 -5
  181. package/data/packages/platform-core/api/Class.DateTimeUtils.md +12 -13
  182. package/data/packages/platform-core/api/Class.DeviceParserService.md +2 -3
  183. package/data/packages/platform-core/api/Class.EmbeddedResourceStrategy.md +22 -23
  184. package/data/packages/platform-core/api/Class.EnvironmentConfigStrategy.md +19 -20
  185. package/data/packages/platform-core/api/Class.ErrorTemplateService.md +18 -19
  186. package/data/packages/platform-core/api/Class.EventHub.md +25 -26
  187. package/data/packages/platform-core/api/Class.EventModule.md +0 -1
  188. package/data/packages/platform-core/api/Class.FileConfigStrategy.md +21 -22
  189. package/data/packages/platform-core/api/Class.FileResourceStrategy.md +19 -20
  190. package/data/packages/platform-core/api/Class.GUIDGenerator.md +7 -8
  191. package/data/packages/platform-core/api/Class.GlobalExceptionFilter.md +7 -8
  192. package/data/packages/platform-core/api/Class.HealthModule.md +2 -3
  193. package/data/packages/platform-core/api/Class.HealthOrchestrator.md +3 -4
  194. package/data/packages/platform-core/api/Class.HostModule.md +0 -2
  195. package/data/packages/platform-core/api/Class.HostService.md +21 -22
  196. package/data/packages/platform-core/api/Class.HttpLoggerMiddleware.md +8 -9
  197. package/data/packages/platform-core/api/Class.IdGeneratorBase.md +7 -8
  198. package/data/packages/platform-core/api/Class.IdentifierModule.md +3 -4
  199. package/data/packages/platform-core/api/Class.LimitRequestSizeMiddleware.md +8 -9
  200. package/data/packages/platform-core/api/Class.LocalizedTextRequest.md +1 -2
  201. package/data/packages/platform-core/api/Class.LocalizedTextResponse.md +1 -2
  202. package/data/packages/platform-core/api/Class.MappingBuilder.md +18 -19
  203. package/data/packages/platform-core/api/Class.MappingModule.md +2 -3
  204. package/data/packages/platform-core/api/Class.MappingNotRegisteredError.md +5 -6
  205. package/data/packages/platform-core/api/Class.MappingProfileBase.md +2 -3
  206. package/data/packages/platform-core/api/Class.MappingService.md +52 -53
  207. package/data/packages/platform-core/api/Class.NormalizedUtils.md +20 -21
  208. package/data/packages/platform-core/api/Class.PageableRequest.md +1 -2
  209. package/data/packages/platform-core/api/Class.PageableResponse.md +3 -4
  210. package/data/packages/platform-core/api/Class.ProblemDetailException.md +6 -7
  211. package/data/packages/platform-core/api/Class.ProblemDetailExceptionFilter.md +11 -12
  212. package/data/packages/platform-core/api/Class.QuantityResponse.md +1 -2
  213. package/data/packages/platform-core/api/Class.ResourceManager.md +88 -89
  214. package/data/packages/platform-core/api/Class.ResourceModule.md +3 -4
  215. package/data/packages/platform-core/api/Class.ResponseReturn.md +102 -104
  216. package/data/packages/platform-core/api/Class.SseHub.md +23 -24
  217. package/data/packages/platform-core/api/Class.SseModule.md +3 -4
  218. package/data/packages/platform-core/api/Class.TimeStampResponse.md +1 -2
  219. package/data/packages/platform-core/api/Class.TypeMappingNotRegisteredError.md +5 -6
  220. package/data/packages/platform-core/api/Class.UUIDGenerator.md +7 -8
  221. package/data/packages/platform-core/api/Class.UserAvatarGeneratorService.md +4 -5
  222. package/data/packages/platform-core/api/Class.UserNameGeneratorService.md +4 -5
  223. package/data/packages/platform-core/api/Function.Public.md +0 -1
  224. package/data/packages/platform-core/api/Function.createConfigKey.md +7 -9
  225. package/data/packages/platform-core/api/Function.createEventKey.md +6 -7
  226. package/data/packages/platform-core/api/Function.createMappingKey.md +6 -7
  227. package/data/packages/platform-core/api/Function.env.md +4 -5
  228. package/data/packages/platform-core/api/Function.getMimeTypeByFileNameOrExtension.md +2 -3
  229. package/data/packages/platform-core/api/ISseEventData.Function.isActionId.md +4 -5
  230. package/data/packages/platform-core/api/Interface.IBlobResourceStrategyConfig.md +1 -2
  231. package/data/packages/platform-core/api/Interface.IBlobServiceAdapter.md +5 -6
  232. package/data/packages/platform-core/api/Interface.IConfigKey.md +16 -17
  233. package/data/packages/platform-core/api/Interface.IConfigModuleOptions.md +3 -4
  234. package/data/packages/platform-core/api/Interface.IConfigRegistryEntry.md +6 -7
  235. package/data/packages/platform-core/api/Interface.IDeviceInfo.md +6 -7
  236. package/data/packages/platform-core/api/Interface.IErrorPageParams.md +19 -20
  237. package/data/packages/platform-core/api/Interface.IEventKey.md +7 -8
  238. package/data/packages/platform-core/api/Interface.IEventMap.md +0 -1
  239. package/data/packages/platform-core/api/Interface.IFileResourceStrategyConfig.md +5 -6
  240. package/data/packages/platform-core/api/Interface.IHealthCheckResult.md +3 -4
  241. package/data/packages/platform-core/api/Interface.IHealthIndicator.md +3 -4
  242. package/data/packages/platform-core/api/Interface.IHostContentParams.md +17 -18
  243. package/data/packages/platform-core/api/Interface.IIdGenerator.md +7 -8
  244. package/data/packages/platform-core/api/Interface.IMappingBuilder.md +17 -18
  245. package/data/packages/platform-core/api/Interface.IMappingKey.md +7 -8
  246. package/data/packages/platform-core/api/Interface.IMappingProfile.md +2 -3
  247. package/data/packages/platform-core/api/Interface.IResourceManagerConfig.md +4 -5
  248. package/data/packages/platform-core/api/Interface.IResourceMetadata.md +6 -7
  249. package/data/packages/platform-core/api/Interface.IResourceResult.md +1 -2
  250. package/data/packages/platform-core/api/Interface.IResourceStrategy.md +16 -17
  251. package/data/packages/platform-core/api/Interface.ISseEventData.md +3 -4
  252. package/data/packages/platform-core/api/Interface.ISseHub.md +16 -17
  253. package/data/packages/platform-core/api/Namespace.ISseEventData.md +2 -3
  254. package/data/packages/platform-core/api/TypeAlias.CamelCase.md +2 -3
  255. package/data/packages/platform-core/api/TypeAlias.ProblemDetail.md +5 -6
  256. package/data/packages/platform-core/api/TypeAlias.ProblemDetailTypeUrlResolver.md +4 -5
  257. package/data/packages/platform-core/api/TypeAlias.SetOptional.md +4 -5
  258. package/data/packages/platform-core/api/TypeAlias.StringValue.md +4 -2
  259. package/data/packages/platform-core/api/Variable.APP_NAME.md +1 -2
  260. package/data/packages/platform-core/api/Variable.APP_PORT.md +1 -2
  261. package/data/packages/platform-core/api/Variable.APP_URL.md +1 -2
  262. package/data/packages/platform-core/api/Variable.APP_VERSION.md +1 -2
  263. package/data/packages/platform-core/api/Variable.GIT_COMMIT.md +1 -2
  264. package/data/packages/platform-core/api/Variable.HEALTH_INDICATORS_TOKEN.md +1 -2
  265. package/data/packages/platform-core/api/Variable.ID_GENERATOR_TOKEN.md +1 -2
  266. package/data/packages/platform-core/api/Variable.INTELLIGENCE_MAX_OUTPUT_TOKENS.md +1 -2
  267. package/data/packages/platform-core/api/Variable.INTELLIGENCE_MODEL.md +1 -2
  268. package/data/packages/platform-core/api/Variable.INTELLIGENCE_TEMPERATURE.md +1 -2
  269. package/data/packages/platform-core/api/Variable.INTELLIGENCE_TOP_P.md +1 -2
  270. package/data/packages/platform-core/api/Variable.IS_PUBLIC_KEY.md +2 -3
  271. package/data/packages/platform-core/api/Variable.IpAddress.md +6 -7
  272. package/data/packages/platform-core/api/Variable.Lang.md +5 -6
  273. package/data/packages/platform-core/api/Variable.NODE_ENV.md +1 -2
  274. package/data/packages/platform-core/api/Variable.PLATFORM_CORE_CONFIG_ENTRIES.md +2 -3
  275. package/data/packages/platform-core/api/Variable.UserAgent.md +2 -3
  276. package/data/packages/platform-core/api/index.md +116 -116
  277. package/data/packages/platform-cryptography/api/Class.BcryptService.md +7 -8
  278. package/data/packages/platform-cryptography/api/Class.CryptoService.md +3 -4
  279. package/data/packages/platform-cryptography/api/Class.OtpService.md +8 -9
  280. package/data/packages/platform-cryptography/api/Interface.IOtpService.md +8 -9
  281. package/data/packages/platform-cryptography/api/Interface.IOtpUriOptions.md +2 -3
  282. package/data/packages/platform-cryptography/api/Variable.OTP_SERVICE_TOKEN.md +1 -2
  283. package/data/packages/platform-cryptography/api/Variable.TOTP_EPOCH_TOLERANCE.md +7 -8
  284. package/data/packages/platform-cryptography/api/index.md +11 -12
  285. package/data/packages/platform-database/api/Class.DatabaseHealthIndicator.md +6 -7
  286. package/data/packages/platform-database/api/Class.DatabaseModule.md +5 -6
  287. package/data/packages/platform-database/api/Class.DatabaseService.md +19 -20
  288. package/data/packages/platform-database/api/Class.PrismaService.md +7 -8
  289. package/data/packages/platform-database/api/Class.RepositoryBase.md +126 -127
  290. package/data/packages/platform-database/api/Class.RepositoryExceptionFilter.md +5 -6
  291. package/data/packages/platform-database/api/Function.pageable.md +13 -10
  292. package/data/packages/platform-database/api/Function.paginator.md +2 -3
  293. package/data/packages/platform-database/api/Function.query.md +7 -8
  294. package/data/packages/platform-database/api/Function.skip.md +5 -6
  295. package/data/packages/platform-database/api/Function.transactionalQuery.md +6 -7
  296. package/data/packages/platform-database/api/Interface.IDatabaseModuleConfig.md +0 -1
  297. package/data/packages/platform-database/api/Interface.IPaginateOptions.md +1 -2
  298. package/data/packages/platform-database/api/Interface.IPaginatedResult.md +4 -5
  299. package/data/packages/platform-database/api/Interface.IRepositoryQuery.md +7 -8
  300. package/data/packages/platform-database/api/Interface.ITransactionalRepositoryQuery.md +5 -6
  301. package/data/packages/platform-database/api/TypeAlias.DelegateArgs.md +2 -3
  302. package/data/packages/platform-database/api/TypeAlias.DelegateReturnTypes.md +2 -3
  303. package/data/packages/platform-database/api/TypeAlias.PaginateFunction.md +7 -8
  304. package/data/packages/platform-database/api/TypeAlias.QueryResultType.md +3 -4
  305. package/data/packages/platform-database/api/TypeAlias.TransactionalQueryResultType.md +3 -4
  306. package/data/packages/platform-database/api/index.md +27 -28
  307. package/data/packages/platform-documents/api/Class.BaseDocumentRenderer.md +31 -33
  308. package/data/packages/platform-documents/api/Class.DocumentEngine.md +7 -8
  309. package/data/packages/platform-documents/api/Class.DocumentModule.md +2 -3
  310. package/data/packages/platform-documents/api/Class.SharpImageProcessor.md +21 -22
  311. package/data/packages/platform-documents/api/Interface.IDocumentModuleOptions.md +5 -7
  312. package/data/packages/platform-documents/api/Interface.IDocumentPlaceholderDetail.md +5 -6
  313. package/data/packages/platform-documents/api/Interface.IDocumentProbeReport.md +8 -9
  314. package/data/packages/platform-documents/api/Interface.IDocumentRenderer.md +2 -3
  315. package/data/packages/platform-documents/api/Interface.IImagePayload.md +3 -4
  316. package/data/packages/platform-documents/api/Interface.IImageProcessor.md +18 -19
  317. package/data/packages/platform-documents/api/Interface.IRenderOptions.md +3 -4
  318. package/data/packages/platform-documents/api/Interface.IRenderResult.md +3 -4
  319. package/data/packages/platform-documents/api/TypeAlias.DocumentFormat.md +1 -2
  320. package/data/packages/platform-documents/api/TypeAlias.EngineType.md +1 -2
  321. package/data/packages/platform-documents/api/TypeAlias.ImageMimeType.md +1 -2
  322. package/data/packages/platform-documents/api/TypeAlias.TemplateFormat.md +1 -2
  323. package/data/packages/platform-documents/api/TypeAlias.TemplateType.md +1 -2
  324. package/data/packages/platform-documents/api/Variable.DOCUMENT_MODULE_OPTIONS.md +1 -2
  325. package/data/packages/platform-documents/api/Variable.DOCUMENT_PARSER_TOKEN.md +1 -2
  326. package/data/packages/platform-documents/api/Variable.DOCUMENT_RENDERER_TOKEN.md +1 -2
  327. package/data/packages/platform-documents/api/Variable.IMAGE_PROCESSOR_TOKEN.md +1 -2
  328. package/data/packages/platform-documents/api/index.md +28 -29
  329. package/data/packages/platform-esigning/api/Class.EsigningClientPort.md +20 -21
  330. package/data/packages/platform-esigning/api/Class.EsigningError.md +4 -5
  331. package/data/packages/platform-esigning/api/Class.EsigningModule.md +2 -3
  332. package/data/packages/platform-esigning/api/Class.EsigningPersistencePort.md +9 -10
  333. package/data/packages/platform-esigning/api/Class.EsigningService.md +24 -25
  334. package/data/packages/platform-esigning/api/Class.InternalEsigningProvider.md +24 -25
  335. package/data/packages/platform-esigning/api/Class.SigningProviderError.md +9 -10
  336. package/data/packages/platform-esigning/api/Class.SigningRequestNotFoundError.md +3 -4
  337. package/data/packages/platform-esigning/api/Class.WebhookVerificationError.md +2 -3
  338. package/data/packages/platform-esigning/api/Interface.ICreateSigningRequest.md +6 -7
  339. package/data/packages/platform-esigning/api/Interface.ICreateSigningRequestDocument.md +3 -4
  340. package/data/packages/platform-esigning/api/Interface.ICreateSigningRequestSigner.md +3 -4
  341. package/data/packages/platform-esigning/api/Interface.ICreateSigningSessionRequest.md +2 -3
  342. package/data/packages/platform-esigning/api/Interface.IEsigningModuleOptions.md +3 -4
  343. package/data/packages/platform-esigning/api/Interface.IEsigningWebhookEvent.md +5 -6
  344. package/data/packages/platform-esigning/api/Interface.ISignedDocument.md +5 -6
  345. package/data/packages/platform-esigning/api/Interface.ISigner.md +5 -6
  346. package/data/packages/platform-esigning/api/Interface.ISigningDocument.md +5 -6
  347. package/data/packages/platform-esigning/api/Interface.ISigningField.md +10 -11
  348. package/data/packages/platform-esigning/api/Interface.ISigningRequest.md +10 -11
  349. package/data/packages/platform-esigning/api/Interface.ISigningSession.md +4 -5
  350. package/data/packages/platform-esigning/api/TypeAlias.SignerRole.md +1 -2
  351. package/data/packages/platform-esigning/api/TypeAlias.SignerStatus.md +1 -2
  352. package/data/packages/platform-esigning/api/TypeAlias.SigningFieldType.md +1 -2
  353. package/data/packages/platform-esigning/api/TypeAlias.SigningRequestStatus.md +1 -2
  354. package/data/packages/platform-esigning/api/TypeAlias.WebhookEventType.md +1 -2
  355. package/data/packages/platform-esigning/api/Variable.ADOBE_SIGN_BASE_URL.md +1 -2
  356. package/data/packages/platform-esigning/api/Variable.ADOBE_SIGN_CLIENT_SECRET.md +1 -2
  357. package/data/packages/platform-esigning/api/Variable.ADOBE_SIGN_CONFIG_ENTRIES.md +2 -3
  358. package/data/packages/platform-esigning/api/Variable.ADOBE_SIGN_INTEGRATION_KEY.md +1 -2
  359. package/data/packages/platform-esigning/api/Variable.ADOBE_SIGN_WEBHOOK_CLIENT_ID.md +1 -2
  360. package/data/packages/platform-esigning/api/Variable.DOCUSIGN_ACCOUNT_ID.md +1 -2
  361. package/data/packages/platform-esigning/api/Variable.DOCUSIGN_BASE_URL.md +1 -2
  362. package/data/packages/platform-esigning/api/Variable.DOCUSIGN_CONFIG_ENTRIES.md +2 -3
  363. package/data/packages/platform-esigning/api/Variable.DOCUSIGN_INTEGRATION_KEY.md +1 -2
  364. package/data/packages/platform-esigning/api/Variable.DOCUSIGN_SECRET_KEY.md +1 -2
  365. package/data/packages/platform-esigning/api/Variable.DOCUSIGN_WEBHOOK_HMAC_KEY.md +1 -2
  366. package/data/packages/platform-esigning/api/Variable.DROPBOX_SIGN_API_KEY.md +1 -2
  367. package/data/packages/platform-esigning/api/Variable.DROPBOX_SIGN_CLIENT_ID.md +1 -2
  368. package/data/packages/platform-esigning/api/Variable.DROPBOX_SIGN_CONFIG_ENTRIES.md +2 -3
  369. package/data/packages/platform-esigning/api/Variable.DROPBOX_SIGN_WEBHOOK_SECRET.md +1 -2
  370. package/data/packages/platform-esigning/api/Variable.ESIGNING_API_BASE_URL.md +1 -2
  371. package/data/packages/platform-esigning/api/Variable.ESIGNING_API_KEY.md +1 -2
  372. package/data/packages/platform-esigning/api/Variable.ESIGNING_PROVIDER.md +1 -2
  373. package/data/packages/platform-esigning/api/Variable.ESIGNING_PROVIDER_OPTIONS.md +1 -2
  374. package/data/packages/platform-esigning/api/Variable.ESIGNING_WEBHOOK_SECRET.md +1 -2
  375. package/data/packages/platform-esigning/api/Variable.PLATFORM_ESIGNING_CONFIG_ENTRIES.md +2 -3
  376. package/data/packages/platform-esigning/api/Variable.SIGNNOW_API_KEY.md +1 -2
  377. package/data/packages/platform-esigning/api/Variable.SIGNNOW_BASE_URL.md +1 -2
  378. package/data/packages/platform-esigning/api/Variable.SIGNNOW_CLIENT_ID.md +1 -2
  379. package/data/packages/platform-esigning/api/Variable.SIGNNOW_CLIENT_SECRET.md +1 -2
  380. package/data/packages/platform-esigning/api/Variable.SIGNNOW_CONFIG_ENTRIES.md +2 -3
  381. package/data/packages/platform-esigning/api/Variable.SIGNNOW_WEBHOOK_SECRET.md +1 -2
  382. package/data/packages/platform-esigning/api/Variable.SignerRoles.md +12 -13
  383. package/data/packages/platform-esigning/api/Variable.SignerStatuses.md +14 -15
  384. package/data/packages/platform-esigning/api/Variable.SigningFieldTypes.md +20 -21
  385. package/data/packages/platform-esigning/api/Variable.SigningRequestStatuses.md +18 -19
  386. package/data/packages/platform-esigning/api/Variable.WebhookEventTypes.md +20 -21
  387. package/data/packages/platform-esigning/api/index.md +65 -66
  388. package/data/packages/platform-intelligence/api/Class.IntelligenceCapabilityRegistrarBase.md +4 -5
  389. package/data/packages/platform-intelligence/api/Class.IntelligenceCapabilityRegistry.md +10 -11
  390. package/data/packages/platform-intelligence/api/Class.IntelligenceModule.md +0 -1
  391. package/data/packages/platform-intelligence/api/Class.IntelligenceTextGenerator.md +10 -11
  392. package/data/packages/platform-intelligence/api/Function.createProviderOptions.md +2 -3
  393. package/data/packages/platform-intelligence/api/Function.loadAnthropicLanguageModel.md +2 -3
  394. package/data/packages/platform-intelligence/api/Function.loadGoogleLanguageModel.md +2 -3
  395. package/data/packages/platform-intelligence/api/Function.loadGrokLanguageModel.md +2 -3
  396. package/data/packages/platform-intelligence/api/Function.loadOpenAILanguageModel.md +2 -3
  397. package/data/packages/platform-intelligence/api/Function.loadProviderFactory.md +3 -4
  398. package/data/packages/platform-intelligence/api/Interface.IIntelligenceArtifact.md +1 -2
  399. package/data/packages/platform-intelligence/api/Interface.IIntelligenceCapability.md +6 -7
  400. package/data/packages/platform-intelligence/api/Interface.IIntelligenceCapabilityMetadata.md +4 -5
  401. package/data/packages/platform-intelligence/api/Interface.IIntelligenceCapabilityPayload.md +2 -3
  402. package/data/packages/platform-intelligence/api/Interface.IIntelligenceCapabilityRegistry.md +10 -11
  403. package/data/packages/platform-intelligence/api/Interface.IIntelligenceCapabilityResult.md +2 -3
  404. package/data/packages/platform-intelligence/api/Interface.IIntelligenceCompletionUsage.md +2 -3
  405. package/data/packages/platform-intelligence/api/Interface.IIntelligenceContext.md +5 -6
  406. package/data/packages/platform-intelligence/api/Interface.IIntelligenceContextBuilder.md +3 -4
  407. package/data/packages/platform-intelligence/api/Interface.IIntelligenceConversationMessageSnapshot.md +4 -5
  408. package/data/packages/platform-intelligence/api/Interface.IIntelligenceConversationSnapshot.md +3 -4
  409. package/data/packages/platform-intelligence/api/Interface.IIntelligenceFollowUpQuestion.md +2 -3
  410. package/data/packages/platform-intelligence/api/Interface.IIntelligenceIntent.md +2 -3
  411. package/data/packages/platform-intelligence/api/Interface.IIntelligenceIntentEntity.md +1 -2
  412. package/data/packages/platform-intelligence/api/Interface.IIntelligenceMessageModel.md +4 -5
  413. package/data/packages/platform-intelligence/api/Interface.IIntelligenceMessagePayload.md +1 -2
  414. package/data/packages/platform-intelligence/api/Interface.IIntelligencePrompt.md +1 -2
  415. package/data/packages/platform-intelligence/api/Interface.IIntelligencePromptMessage.md +1 -2
  416. package/data/packages/platform-intelligence/api/Interface.IIntelligenceProviderConfiguration.md +6 -7
  417. package/data/packages/platform-intelligence/api/Interface.IIntelligenceResponseMessage.md +1 -2
  418. package/data/packages/platform-intelligence/api/Interface.IIntelligenceTextCompletion.md +4 -5
  419. package/data/packages/platform-intelligence/api/Interface.IIntelligenceTextGenerationOptions.md +2 -3
  420. package/data/packages/platform-intelligence/api/Interface.IIntelligenceTextGenerator.md +4 -5
  421. package/data/packages/platform-intelligence/api/TypeAlias.IntelligenceConversationMessageRole.md +1 -3
  422. package/data/packages/platform-intelligence/api/TypeAlias.IntelligenceLanguageModelLoader.md +2 -3
  423. package/data/packages/platform-intelligence/api/TypeAlias.IntelligenceProviderName.md +1 -2
  424. package/data/packages/platform-intelligence/api/Variable.IntelligenceConversationMessageRoles.md +7 -8
  425. package/data/packages/platform-intelligence/api/Variable.IntelligenceProviderNames.md +10 -11
  426. package/data/packages/platform-intelligence/api/index.md +46 -47
  427. package/data/packages/platform-logging/api/Class.LoggerModule.md +0 -1
  428. package/data/packages/platform-logging/api/Variable.APP_LOG_LEVEL.md +1 -2
  429. package/data/packages/platform-logging/api/Variable.PLATFORM_LOGGING_CONFIG_ENTRIES.md +2 -3
  430. package/data/packages/platform-logging/api/index.md +7 -8
  431. package/data/packages/platform-mailing/api/Class.BlobTemplateFetchStrategy.md +2 -3
  432. package/data/packages/platform-mailing/api/Class.DeliveryStrategyBase.md +11 -12
  433. package/data/packages/platform-mailing/api/Class.FileTemplateFetchStrategy.md +2 -3
  434. package/data/packages/platform-mailing/api/Class.LogDeliveryStrategy.md +13 -14
  435. package/data/packages/platform-mailing/api/Class.MailHealthIndicator.md +4 -5
  436. package/data/packages/platform-mailing/api/Class.MailModule.md +0 -1
  437. package/data/packages/platform-mailing/api/Class.MailService.md +27 -28
  438. package/data/packages/platform-mailing/api/Class.MailTemplateEngine.md +12 -13
  439. package/data/packages/platform-mailing/api/Class.MailVerificationService.md +14 -15
  440. package/data/packages/platform-mailing/api/Class.MailgunDeliveryStrategy.md +13 -14
  441. package/data/packages/platform-mailing/api/Class.PostmarkDeliveryStrategy.md +13 -14
  442. package/data/packages/platform-mailing/api/Class.ResendDeliveryStrategy.md +13 -14
  443. package/data/packages/platform-mailing/api/Class.SendGridDeliveryStrategy.md +13 -14
  444. package/data/packages/platform-mailing/api/Class.SmtpDeliveryStrategy.md +13 -14
  445. package/data/packages/platform-mailing/api/Class.TemplateFetchStrategyBase.md +2 -3
  446. package/data/packages/platform-mailing/api/Interface.IMailEvents.md +0 -1
  447. package/data/packages/platform-mailing/api/Interface.IMailTemplateVariants.md +1 -2
  448. package/data/packages/platform-mailing/api/TypeAlias.MailTemplateFormat.md +1 -2
  449. package/data/packages/platform-mailing/api/Variable.MAILGUN_API_KEY.md +1 -2
  450. package/data/packages/platform-mailing/api/Variable.MAILGUN_CONFIG_ENTRIES.md +2 -3
  451. package/data/packages/platform-mailing/api/Variable.MAILGUN_DOMAIN.md +1 -2
  452. package/data/packages/platform-mailing/api/Variable.MAIL_DELIVERY_STRATEGY.md +1 -2
  453. package/data/packages/platform-mailing/api/Variable.MAIL_DELIVERY_STRATEGY_TOKEN.md +1 -2
  454. package/data/packages/platform-mailing/api/Variable.MAIL_HOST.md +1 -2
  455. package/data/packages/platform-mailing/api/Variable.MAIL_MAILGUN_API_KEY.md +1 -2
  456. package/data/packages/platform-mailing/api/Variable.MAIL_MAILGUN_DOMAIN.md +1 -2
  457. package/data/packages/platform-mailing/api/Variable.MAIL_PORT.md +1 -2
  458. package/data/packages/platform-mailing/api/Variable.MAIL_POSTMARK_API_KEY.md +1 -2
  459. package/data/packages/platform-mailing/api/Variable.MAIL_RESEND_API_KEY.md +1 -2
  460. package/data/packages/platform-mailing/api/Variable.MAIL_SENDER_EMAIL.md +1 -2
  461. package/data/packages/platform-mailing/api/Variable.MAIL_SENDGRID_API_KEY.md +1 -2
  462. package/data/packages/platform-mailing/api/Variable.MAIL_SMTP_HOST.md +1 -2
  463. package/data/packages/platform-mailing/api/Variable.MAIL_SMTP_PASSWORD.md +1 -2
  464. package/data/packages/platform-mailing/api/Variable.MAIL_SMTP_PORT.md +1 -2
  465. package/data/packages/platform-mailing/api/Variable.MAIL_SMTP_SECURE.md +1 -2
  466. package/data/packages/platform-mailing/api/Variable.MAIL_SMTP_USER.md +1 -2
  467. package/data/packages/platform-mailing/api/Variable.MAIL_TEMPLATE_ENGINE_FORMAT.md +1 -2
  468. package/data/packages/platform-mailing/api/Variable.MAIL_TEMPLATE_FETCH_STRATEGY_TOKEN.md +1 -2
  469. package/data/packages/platform-mailing/api/Variable.MAIL_TEMPLATE_STRATEGY.md +1 -2
  470. package/data/packages/platform-mailing/api/Variable.MAIL_USER.md +1 -2
  471. package/data/packages/platform-mailing/api/Variable.PLATFORM_MAILING_CONFIG_ENTRIES.md +2 -3
  472. package/data/packages/platform-mailing/api/Variable.POSTMARK_API_KEY.md +1 -2
  473. package/data/packages/platform-mailing/api/Variable.POSTMARK_CONFIG_ENTRIES.md +2 -3
  474. package/data/packages/platform-mailing/api/Variable.RESEND_API_KEY.md +1 -2
  475. package/data/packages/platform-mailing/api/Variable.RESEND_CONFIG_ENTRIES.md +2 -3
  476. package/data/packages/platform-mailing/api/Variable.SENDGRID_API_KEY.md +1 -2
  477. package/data/packages/platform-mailing/api/Variable.SENDGRID_CONFIG_ENTRIES.md +2 -3
  478. package/data/packages/platform-mailing/api/Variable.SEND_MAIL_EVENT_KEY.md +2 -3
  479. package/data/packages/platform-mailing/api/index.md +54 -55
  480. package/data/packages/platform-mcp/api/Class.McpDiscoveryService.md +8 -9
  481. package/data/packages/platform-mcp/api/Class.McpModule.md +8 -9
  482. package/data/packages/platform-mcp/api/Class.McpRegistryService.md +16 -17
  483. package/data/packages/platform-mcp/api/Class.McpServerService.md +19 -20
  484. package/data/packages/platform-mcp/api/Function.McpPrompt.md +2 -3
  485. package/data/packages/platform-mcp/api/Function.McpResource.md +2 -3
  486. package/data/packages/platform-mcp/api/Function.McpTool.md +2 -3
  487. package/data/packages/platform-mcp/api/Interface.IMcpHandlerMetadata.md +2 -3
  488. package/data/packages/platform-mcp/api/Interface.IMcpModuleAsyncOptions.md +8 -9
  489. package/data/packages/platform-mcp/api/Interface.IMcpModuleOptions.md +3 -4
  490. package/data/packages/platform-mcp/api/Interface.IMcpModuleOptionsFactory.md +3 -4
  491. package/data/packages/platform-mcp/api/Interface.IMcpPromptMetadata.md +3 -4
  492. package/data/packages/platform-mcp/api/Interface.IMcpResourceMetadata.md +4 -5
  493. package/data/packages/platform-mcp/api/Interface.IMcpToolMetadata.md +5 -6
  494. package/data/packages/platform-mcp/api/Interface.IRegisteredPrompt.md +3 -4
  495. package/data/packages/platform-mcp/api/Interface.IRegisteredResource.md +3 -4
  496. package/data/packages/platform-mcp/api/Interface.IRegisteredTool.md +3 -4
  497. package/data/packages/platform-mcp/api/Interface.ISseTransportOptions.md +0 -1
  498. package/data/packages/platform-mcp/api/Interface.IStreamableHttpTransportOptions.md +1 -2
  499. package/data/packages/platform-mcp/api/Variable.MCP_MODULE_OPTIONS.md +1 -2
  500. package/data/packages/platform-mcp/api/index.md +26 -27
  501. package/data/packages/platform-openapi/api/Class.SwaggerFeatureDiscovery.md +15 -12
  502. package/data/packages/platform-openapi/api/Class.SwaggerFeatureRegistry.md +5 -6
  503. package/data/packages/platform-openapi/api/Class.SwaggerMultiDocumentService.md +20 -21
  504. package/data/packages/platform-openapi/api/Class.SwaggerTheme.md +2 -3
  505. package/data/packages/platform-openapi/api/Function.Api.md +13 -14
  506. package/data/packages/platform-openapi/api/Function.SwaggerFeature.md +4 -5
  507. package/data/packages/platform-openapi/api/Function.getRegisteredSwaggerFeatures.md +0 -1
  508. package/data/packages/platform-openapi/api/Function.getSwaggerFeatureMetadata.md +8 -7
  509. package/data/packages/platform-openapi/api/Interface.IFeatureSwaggerConfig.md +5 -6
  510. package/data/packages/platform-openapi/api/Interface.ISwaggerFeatureMetadata.md +5 -6
  511. package/data/packages/platform-openapi/api/Variable.APP_VERSION.md +1 -2
  512. package/data/packages/platform-openapi/api/Variable.PLATFORM_OPENAPI_CONFIG_ENTRIES.md +2 -3
  513. package/data/packages/platform-openapi/api/Variable.SWAGGER_CONTACT_EMAIL.md +1 -2
  514. package/data/packages/platform-openapi/api/Variable.SWAGGER_CONTACT_NAME.md +1 -2
  515. package/data/packages/platform-openapi/api/Variable.SWAGGER_CONTACT_URL.md +1 -2
  516. package/data/packages/platform-openapi/api/Variable.SWAGGER_FEATURE_METADATA_KEY.md +2 -3
  517. package/data/packages/platform-openapi/api/index.md +24 -25
  518. package/data/packages/platform-payments/api/Class.FeatureAccessPort.md +7 -8
  519. package/data/packages/platform-payments/api/Class.FeatureGuard.md +6 -7
  520. package/data/packages/platform-payments/api/Class.FeatureUsageInterceptor.md +7 -8
  521. package/data/packages/platform-payments/api/Class.LemonSqueezyClient.md +24 -25
  522. package/data/packages/platform-payments/api/Class.MollieClient.md +24 -25
  523. package/data/packages/platform-payments/api/Class.PaddleClient.md +24 -25
  524. package/data/packages/platform-payments/api/Class.PaymentClientPort.md +25 -26
  525. package/data/packages/platform-payments/api/Class.PaymentModule.md +2 -3
  526. package/data/packages/platform-payments/api/Class.StripeClient.md +28 -29
  527. package/data/packages/platform-payments/api/Function.RequiresFeature.md +2 -3
  528. package/data/packages/platform-payments/api/Interface.IFeatureAccessResult.md +4 -5
  529. package/data/packages/platform-payments/api/Interface.INormalizedCheckoutSession.md +5 -6
  530. package/data/packages/platform-payments/api/Interface.INormalizedPrice.md +6 -7
  531. package/data/packages/platform-payments/api/Interface.INormalizedSubscription.md +8 -9
  532. package/data/packages/platform-payments/api/Interface.INormalizedWebhookEvent.md +2 -3
  533. package/data/packages/platform-payments/api/Interface.IPaymentModuleOptions.md +3 -4
  534. package/data/packages/platform-payments/api/TypeAlias.SubscriptionStatus.md +9 -10
  535. package/data/packages/platform-payments/api/Variable.FEATURE_KEY_METADATA.md +2 -3
  536. package/data/packages/platform-payments/api/Variable.LEMONSQUEEZY_API_KEY.md +1 -2
  537. package/data/packages/platform-payments/api/Variable.LEMONSQUEEZY_CONFIG_ENTRIES.md +2 -3
  538. package/data/packages/platform-payments/api/Variable.LEMONSQUEEZY_STORE_ID.md +1 -2
  539. package/data/packages/platform-payments/api/Variable.LEMONSQUEEZY_WEBHOOK_SECRET.md +1 -2
  540. package/data/packages/platform-payments/api/Variable.MOLLIE_API_KEY.md +1 -2
  541. package/data/packages/platform-payments/api/Variable.MOLLIE_CONFIG_ENTRIES.md +2 -3
  542. package/data/packages/platform-payments/api/Variable.MOLLIE_WEBHOOK_SECRET.md +1 -2
  543. package/data/packages/platform-payments/api/Variable.PADDLE_API_KEY.md +1 -2
  544. package/data/packages/platform-payments/api/Variable.PADDLE_CONFIG_ENTRIES.md +2 -3
  545. package/data/packages/platform-payments/api/Variable.PADDLE_ENVIRONMENT.md +1 -2
  546. package/data/packages/platform-payments/api/Variable.PADDLE_WEBHOOK_SECRET.md +1 -2
  547. package/data/packages/platform-payments/api/Variable.STRIPE_API_KEY.md +1 -2
  548. package/data/packages/platform-payments/api/Variable.STRIPE_CONFIG_ENTRIES.md +2 -3
  549. package/data/packages/platform-payments/api/Variable.STRIPE_WEBHOOK_SECRET.md +1 -2
  550. package/data/packages/platform-payments/api/index.md +40 -41
  551. package/data/packages/platform-reporting/api/Class.ReportingContributorRegistry.md +3 -4
  552. package/data/packages/platform-reporting/api/Class.ReportingDatasetNotFoundError.md +3 -4
  553. package/data/packages/platform-reporting/api/Class.ReportingFacade.md +8 -9
  554. package/data/packages/platform-reporting/api/Class.ReportingModule.md +0 -1
  555. package/data/packages/platform-reporting/api/Interface.IReportingContributor.md +4 -5
  556. package/data/packages/platform-reporting/api/Interface.IReportingDataset.md +5 -6
  557. package/data/packages/platform-reporting/api/Interface.IReportingDatasetField.md +4 -5
  558. package/data/packages/platform-reporting/api/Interface.IReportingQuery.md +4 -5
  559. package/data/packages/platform-reporting/api/Interface.IReportingQueryFilter.md +2 -3
  560. package/data/packages/platform-reporting/api/Interface.IReportingQueryResult.md +4 -5
  561. package/data/packages/platform-reporting/api/Interface.IReportingQuerySort.md +1 -2
  562. package/data/packages/platform-reporting/api/TypeAlias.ReportingFieldType.md +1 -2
  563. package/data/packages/platform-reporting/api/TypeAlias.ReportingFilterOperator.md +1 -2
  564. package/data/packages/platform-reporting/api/TypeAlias.ReportingQueryResultRow.md +0 -1
  565. package/data/packages/platform-reporting/api/Variable.ReportingFieldTypes.md +12 -13
  566. package/data/packages/platform-reporting/api/Variable.ReportingFilterOperators.md +10 -11
  567. package/data/packages/platform-reporting/api/index.md +23 -24
  568. package/data/packages/platform-telemetry/api/Class.NoopTelemetryFacade.md +22 -23
  569. package/data/packages/platform-telemetry/api/Class.TelemetryCacheMetricsRecorder.md +26 -27
  570. package/data/packages/platform-telemetry/api/Class.TelemetryFacade.md +23 -24
  571. package/data/packages/platform-telemetry/api/Class.TelemetryLoggerService.md +35 -36
  572. package/data/packages/platform-telemetry/api/Class.TelemetryModule.md +2 -3
  573. package/data/packages/platform-telemetry/api/Class.TelemetryRuleEngine.md +4 -5
  574. package/data/packages/platform-telemetry/api/Interface.ITelemetryFacade.md +22 -23
  575. package/data/packages/platform-telemetry/api/Interface.ITelemetryMetricsOptions.md +2 -3
  576. package/data/packages/platform-telemetry/api/Interface.ITelemetryOptions.md +8 -9
  577. package/data/packages/platform-telemetry/api/Interface.ITelemetryTracesOptions.md +2 -3
  578. package/data/packages/platform-telemetry/api/Variable.TELEMETRY_ENABLED.md +1 -2
  579. package/data/packages/platform-telemetry/api/Variable.TELEMETRY_FACADE.md +1 -2
  580. package/data/packages/platform-telemetry/api/Variable.TELEMETRY_OPTIONS.md +1 -2
  581. package/data/packages/platform-telemetry/api/Variable.TELEMETRY_SHUTDOWN.md +1 -2
  582. package/data/packages/platform-telemetry/api/Variable.defaultTelemetryOptions.md +0 -1
  583. package/data/packages/platform-telemetry/api/index.md +20 -21
  584. package/package.json +1 -1
  585. package/src/GuidesLoader.d.ts +13 -0
  586. package/src/GuidesLoader.js +81 -0
  587. package/src/main.js +36 -198
  588. package/src/models/IGuideDoc.d.ts +15 -0
  589. package/src/models/IGuideDoc.js +3 -0
  590. package/src/tools/registerGetConfigPatternTool.d.ts +5 -0
  591. package/src/tools/registerGetConfigPatternTool.js +15 -0
  592. package/src/tools/registerGetDtoPatternTool.d.ts +5 -0
  593. package/src/tools/registerGetDtoPatternTool.js +15 -0
  594. package/src/tools/registerGetErrorHandlingPatternTool.d.ts +5 -0
  595. package/src/tools/registerGetErrorHandlingPatternTool.js +15 -0
  596. package/src/tools/registerGetGuardPatternTool.d.ts +5 -0
  597. package/src/tools/registerGetGuardPatternTool.js +15 -0
  598. package/src/tools/registerGetGuideTool.d.ts +6 -0
  599. package/src/tools/registerGetGuideTool.js +32 -0
  600. package/src/tools/registerGetMappingPatternTool.d.ts +5 -0
  601. package/src/tools/registerGetMappingPatternTool.js +34 -0
  602. package/src/tools/registerGetModulePatternTool.d.ts +5 -0
  603. package/src/tools/registerGetModulePatternTool.js +29 -0
  604. package/src/tools/registerGetPackageDocTool.d.ts +6 -0
  605. package/src/tools/registerGetPackageDocTool.js +43 -0
  606. package/src/tools/registerGetQueryPatternTool.d.ts +5 -0
  607. package/src/tools/registerGetQueryPatternTool.js +29 -0
  608. package/src/tools/registerGetRepositoryPatternTool.d.ts +5 -0
  609. package/src/tools/registerGetRepositoryPatternTool.js +29 -0
  610. package/src/tools/registerGetTestingPatternTool.d.ts +5 -0
  611. package/src/tools/registerGetTestingPatternTool.js +15 -0
  612. package/src/tools/registerListGuidesTool.d.ts +6 -0
  613. package/src/tools/registerListGuidesTool.js +22 -0
  614. package/src/tools/registerListPackagesTool.d.ts +6 -0
  615. package/src/tools/registerListPackagesTool.js +20 -0
  616. package/src/tools/registerSearchDocsTool.d.ts +6 -0
  617. package/src/tools/registerSearchDocsTool.js +35 -0
  618. package/src/tools/registerSearchGuidesTool.d.ts +6 -0
  619. package/src/tools/registerSearchGuidesTool.js +28 -0
@@ -0,0 +1,657 @@
1
+ ---
2
+ title: Authentication & Authorization
3
+ description: Secure your NestJS application with JWT tokens, role-based access control, custom scopes, MFA, sessions, and OAuth social login.
4
+ order: 6
5
+ ---
6
+
7
+ # Authentication & Authorization
8
+
9
+ This guide covers everything you need to secure an Archipel-powered NestJS application: JWT-based authentication, role-based authorization, custom token claims (scopes), multi-factor authentication, session management, and social login via OAuth providers.
10
+
11
+ If you haven't registered `AuthModule` yet, read the [Getting Started](/guides/getting-started) guide first.
12
+
13
+ ---
14
+
15
+ ## Overview
16
+
17
+ `platform-authentication` provides:
18
+
19
+ | Capability | What it does |
20
+ | ------------------------ | --------------------------------------------------------------------------- |
21
+ | **JWT Authentication** | Issues and validates signed access tokens via Passport |
22
+ | **Role-Based Guards** | Restrict endpoints to specific roles using `@UseRoles()` |
23
+ | **Token Enrichment** | Add custom claims (subscription tier, org ID, scopes) to every JWT |
24
+ | **MFA** | TOTP, SMS, Email, and Push channels with backup codes |
25
+ | **Session Management** | Track active sessions per user, with device info and last-active timestamps |
26
+ | **Email Verification** | Issue and redeem time-limited verification tokens |
27
+ | **OAuth / Social Login** | GitHub, Google, Microsoft, and Apple strategies with account linking |
28
+ | **Anonymous Auth** | Allow guest access with limited capabilities |
29
+
30
+ ---
31
+
32
+ ## Protecting Routes with Guards
33
+
34
+ ### JWT Guard
35
+
36
+ The `JwtAuthGuard` is the primary guard. It validates the `Authorization: Bearer <token>` header, decodes the JWT, looks up the user via `AuthSubjectPort.findById()`, and attaches the subject to `request.user`.
37
+
38
+ ```typescript
39
+ import { Controller, Get, UseGuards } from '@nestjs/common';
40
+ import { JwtAuthGuard, User, type IAuthSubject } from '@breadstone/archipel-platform-authentication';
41
+
42
+ @Controller('profile')
43
+ export class ProfileController {
44
+ @Get()
45
+ @UseGuards(JwtAuthGuard)
46
+ public getProfile(@User() user: IAuthSubject): IAuthSubject {
47
+ return user;
48
+ }
49
+ }
50
+ ```
51
+
52
+ The `@User()` decorator extracts the authenticated subject from the request. It returns the full `IAuthSubject` interface:
53
+
54
+ ```typescript
55
+ interface IAuthSubject {
56
+ readonly id: string;
57
+ readonly userName: string | null;
58
+ readonly email: string | null;
59
+ readonly password: string | null;
60
+ readonly isVerified: boolean;
61
+ readonly isAnonymous: boolean;
62
+ readonly roles: ReadonlyArray<string>;
63
+ readonly mfaEnabled: boolean;
64
+ }
65
+ ```
66
+
67
+ ### Role-Based Access Control
68
+
69
+ Use `@UseRoles()` together with `RolesGuard` to restrict endpoints to users with specific roles. Roles are string-based, so you can define them as constants in your application.
70
+
71
+ ```typescript
72
+ import { Controller, Get, UseGuards } from '@nestjs/common';
73
+ import { JwtAuthGuard, RolesGuard, UseRoles } from '@breadstone/archipel-platform-authentication';
74
+
75
+ @Controller('admin')
76
+ @UseGuards(JwtAuthGuard, RolesGuard)
77
+ export class AdminController {
78
+ @Get('dashboard')
79
+ @UseRoles('admin')
80
+ public getDashboard(): string {
81
+ return 'admin-only content';
82
+ }
83
+
84
+ @Get('reports')
85
+ @UseRoles('admin', 'moderator')
86
+ public getReports(): string {
87
+ return 'admin or moderator content';
88
+ }
89
+ }
90
+ ```
91
+
92
+ `RolesGuard` reads the required roles from the `@UseRoles()` metadata and checks them against `request.user.roles`. If no roles are specified on a handler, the guard allows access (only JWT validity is enforced).
93
+
94
+ **Best practice:** Define role constants in a shared file rather than using string literals:
95
+
96
+ ```typescript
97
+ // src/constants/roles.ts
98
+ export const ROLE_ADMIN = 'admin';
99
+ export const ROLE_MODERATOR = 'moderator';
100
+ export const ROLE_USER = 'user';
101
+ ```
102
+
103
+ ```typescript
104
+ import { ROLE_ADMIN, ROLE_MODERATOR } from '../constants/roles';
105
+
106
+ @UseRoles(ROLE_ADMIN, ROLE_MODERATOR)
107
+ public getReports(): string { ... }
108
+ ```
109
+
110
+ ### Anonymous Guard
111
+
112
+ For routes that should accept unauthenticated users (e.g. guest checkout), use `AnonymousAuthGuard`. It creates or resolves an anonymous subject via `AuthSubjectPort.findAnonymous()`.
113
+
114
+ ```typescript
115
+ import { Controller, Post, UseGuards } from '@nestjs/common';
116
+ import { AnonymousAuthGuard, User, type IAuthSubject } from '@breadstone/archipel-platform-authentication';
117
+
118
+ @Controller('cart')
119
+ export class CartController {
120
+ @Post()
121
+ @UseGuards(AnonymousAuthGuard)
122
+ public addToCart(@User() user: IAuthSubject): void {
123
+ // user.isAnonymous === true for guest users
124
+ }
125
+ }
126
+ ```
127
+
128
+ ---
129
+
130
+ ## Accessing the Raw Token
131
+
132
+ When you need the raw JWT string (e.g. to forward it to a downstream service), use the `@Token()` decorator:
133
+
134
+ ```typescript
135
+ import { Controller, Get, UseGuards } from '@nestjs/common';
136
+ import { JwtAuthGuard, Token } from '@breadstone/archipel-platform-authentication';
137
+
138
+ @Controller('proxy')
139
+ export class ProxyController {
140
+ @Get('downstream')
141
+ @UseGuards(JwtAuthGuard)
142
+ public forward(@Token() token: string): void {
143
+ // token = the raw Bearer token string
144
+ }
145
+ }
146
+ ```
147
+
148
+ ---
149
+
150
+ ## Custom Token Claims (Scopes)
151
+
152
+ By default, JWTs contain base claims: `id`, `email`, and `roles`. To add application-specific claims — subscription tier, organization ID, feature scopes, permissions — implement the `TokenEnricherPort`.
153
+
154
+ ### Step 1: Create the Enricher Adapter
155
+
156
+ ```typescript
157
+ // src/adapters/AppTokenEnricherAdapter.ts
158
+ import { Injectable } from '@nestjs/common';
159
+ import { TokenEnricherPort, type IAuthSubject } from '@breadstone/archipel-platform-authentication';
160
+ import { SubscriptionRepository } from '../subscriptions/SubscriptionRepository';
161
+
162
+ @Injectable()
163
+ export class AppTokenEnricherAdapter extends TokenEnricherPort {
164
+ private readonly _subscriptionRepository: SubscriptionRepository;
165
+
166
+ constructor(subscriptionRepository: SubscriptionRepository) {
167
+ super();
168
+ this._subscriptionRepository = subscriptionRepository;
169
+ }
170
+
171
+ public async enrichClaims(subject: IAuthSubject): Promise<Record<string, unknown>> {
172
+ const subscription = await this._subscriptionRepository.findByUserId(subject.id);
173
+
174
+ return {
175
+ subscriptionTier: subscription?.tier ?? 'free',
176
+ organizationId: subscription?.organizationId ?? null,
177
+ scopes: this.resolveScopes(subject.roles, subscription?.tier),
178
+ };
179
+ }
180
+
181
+ private resolveScopes(roles: ReadonlyArray<string>, tier?: string): ReadonlyArray<string> {
182
+ const scopes: Array<string> = ['read:profile'];
183
+
184
+ if (roles.includes('admin')) {
185
+ scopes.push('write:users', 'read:analytics', 'manage:settings');
186
+ }
187
+
188
+ if (tier === 'pro' || tier === 'enterprise') {
189
+ scopes.push('export:reports', 'use:advanced-features');
190
+ }
191
+
192
+ return scopes;
193
+ }
194
+ }
195
+ ```
196
+
197
+ ### Step 2: Register the Enricher
198
+
199
+ ```typescript
200
+ AuthModule.register({
201
+ authSubject: PrismaAuthSubjectAdapter,
202
+ mfaSubject: PrismaMfaSubjectAdapter,
203
+ sessionPersistence: PrismaSessionAdapter,
204
+ verificationSubject: PrismaVerificationAdapter,
205
+ tokenEnricher: AppTokenEnricherAdapter, // <-- register here
206
+ }),
207
+ ```
208
+
209
+ ### Step 3: Read Custom Claims in Guards or Services
210
+
211
+ The enriched claims are part of the decoded JWT. Create a custom guard to enforce scopes:
212
+
213
+ ```typescript
214
+ // src/guards/ScopesGuard.ts
215
+ import { CanActivate, ExecutionContext, Injectable, ForbiddenException } from '@nestjs/common';
216
+ import { Reflector } from '@nestjs/core';
217
+ import { Request } from 'express';
218
+
219
+ export const SCOPES_KEY = 'required_scopes';
220
+
221
+ export function RequireScopes(...scopes: Array<string>): MethodDecorator & ClassDecorator {
222
+ return SetMetadata(SCOPES_KEY, scopes);
223
+ }
224
+
225
+ @Injectable()
226
+ export class ScopesGuard implements CanActivate {
227
+ private readonly _reflector: Reflector;
228
+
229
+ constructor(reflector: Reflector) {
230
+ this._reflector = reflector;
231
+ }
232
+
233
+ public canActivate(context: ExecutionContext): boolean {
234
+ const requiredScopes = this._reflector.getAllAndOverride<Array<string>>(SCOPES_KEY, [
235
+ context.getHandler(),
236
+ context.getClass(),
237
+ ]);
238
+
239
+ if (!requiredScopes || requiredScopes.length === 0) {
240
+ return true;
241
+ }
242
+
243
+ const request = context.switchToHttp().getRequest<Request>();
244
+ const user = request.user as Record<string, unknown>;
245
+ const userScopes = (user['scopes'] as Array<string>) ?? [];
246
+
247
+ const hasAllScopes = requiredScopes.every((scope) => userScopes.includes(scope));
248
+
249
+ if (!hasAllScopes) {
250
+ throw new ForbiddenException('Insufficient scopes');
251
+ }
252
+
253
+ return true;
254
+ }
255
+ }
256
+ ```
257
+
258
+ Use it on your endpoints:
259
+
260
+ ```typescript
261
+ import { Controller, Get, UseGuards } from '@nestjs/common';
262
+ import { JwtAuthGuard } from '@breadstone/archipel-platform-authentication';
263
+ import { ScopesGuard, RequireScopes } from '../guards/ScopesGuard';
264
+
265
+ @Controller('reports')
266
+ @UseGuards(JwtAuthGuard, ScopesGuard)
267
+ export class ReportController {
268
+ @Get()
269
+ @RequireScopes('export:reports')
270
+ public exportReport(): string {
271
+ return 'report data';
272
+ }
273
+ }
274
+ ```
275
+
276
+ ---
277
+
278
+ ## Extending the JWT Payload
279
+
280
+ For type-safe access to custom claims, extend `JwtPayloadBase`:
281
+
282
+ ```typescript
283
+ // src/models/AppJwtPayload.ts
284
+ import { JwtPayloadBase } from '@breadstone/archipel-platform-authentication';
285
+
286
+ export class AppJwtPayload extends JwtPayloadBase {
287
+ public readonly subscriptionTier: string;
288
+ public readonly organizationId: string | null;
289
+ public readonly scopes: ReadonlyArray<string>;
290
+
291
+ constructor(
292
+ id: string,
293
+ email: string | null,
294
+ roles: ReadonlyArray<string>,
295
+ subscriptionTier: string,
296
+ organizationId: string | null,
297
+ scopes: ReadonlyArray<string>,
298
+ ) {
299
+ super(id, email, roles);
300
+ this.subscriptionTier = subscriptionTier;
301
+ this.organizationId = organizationId;
302
+ this.scopes = scopes;
303
+ }
304
+
305
+ public override toJSON(): Record<string, unknown> {
306
+ return {
307
+ ...super.toJSON(),
308
+ subscriptionTier: this.subscriptionTier,
309
+ organizationId: this.organizationId,
310
+ scopes: [...this.scopes],
311
+ };
312
+ }
313
+
314
+ public static override fromJSON(raw: Record<string, unknown>): AppJwtPayload {
315
+ return new AppJwtPayload(
316
+ raw['id'] as string,
317
+ (raw['email'] as string) ?? null,
318
+ (raw['roles'] as string[]) ?? [],
319
+ (raw['subscriptionTier'] as string) ?? 'free',
320
+ (raw['organizationId'] as string) ?? null,
321
+ (raw['scopes'] as string[]) ?? [],
322
+ );
323
+ }
324
+ }
325
+ ```
326
+
327
+ ---
328
+
329
+ ## Session Management
330
+
331
+ `SessionService` tracks active sessions per user. Combined with `LastActiveMiddleware`, it automatically updates timestamps on every authenticated request.
332
+
333
+ ### Storing a Session After Login
334
+
335
+ Sessions are stored automatically when you use the built-in authentication flow. If you implement a custom login controller:
336
+
337
+ ```typescript
338
+ import { Controller, Post, UseGuards, Req, Ip } from '@nestjs/common';
339
+ import {
340
+ LocalAuthGuard,
341
+ AuthTokenService,
342
+ SessionService,
343
+ User,
344
+ type IAuthSubject,
345
+ } from '@breadstone/archipel-platform-authentication';
346
+ import { Request } from 'express';
347
+
348
+ @Controller('auth')
349
+ export class AuthController {
350
+ private readonly _tokenService: AuthTokenService;
351
+ private readonly _sessionService: SessionService;
352
+
353
+ constructor(tokenService: AuthTokenService, sessionService: SessionService) {
354
+ this._tokenService = tokenService;
355
+ this._sessionService = sessionService;
356
+ }
357
+
358
+ @Post('login')
359
+ @UseGuards(LocalAuthGuard)
360
+ public async login(
361
+ @User() user: IAuthSubject,
362
+ @Req() req: Request,
363
+ @Ip() ip: string,
364
+ ): Promise<{ accessToken: string }> {
365
+ const accessToken = await this._tokenService.createAccessToken(user);
366
+
367
+ await this._sessionService.store(accessToken, user.id, ip);
368
+
369
+ return { accessToken };
370
+ }
371
+ }
372
+ ```
373
+
374
+ ### Listing & Revoking Sessions
375
+
376
+ ```typescript
377
+ @Get('sessions')
378
+ @UseGuards(JwtAuthGuard)
379
+ public async listSessions(@User() user: IAuthSubject, @Token() token: string): Promise<Array<SessionResponse>> {
380
+ return this._sessionService.listSessions(user.id, token);
381
+ }
382
+
383
+ @Delete('sessions/:token')
384
+ @UseGuards(JwtAuthGuard)
385
+ public async revokeSession(@Param('token') sessionToken: string): Promise<void> {
386
+ await this._sessionService.revoke(sessionToken);
387
+ }
388
+ ```
389
+
390
+ ### Last-Active Middleware
391
+
392
+ `AuthModule` automatically registers `LastActiveMiddleware` on all routes. It extracts the Bearer token and updates the session's `lastActive` timestamp asynchronously — no blocking, no failure propagation.
393
+
394
+ ---
395
+
396
+ ## Multi-Factor Authentication (MFA)
397
+
398
+ Archipel supports four MFA channels out of the box:
399
+
400
+ | Channel | Method Key | How it works |
401
+ | --------- | ---------- | ----------------------------------------------------------- |
402
+ | **TOTP** | `totp` | Time-based one-time passwords (Google Authenticator, Authy) |
403
+ | **SMS** | `sms` | OTP sent via SMS |
404
+ | **Email** | `email` | OTP sent via email |
405
+ | **Push** | `push` | Push notification approval |
406
+
407
+ ### MFA Setup Flow
408
+
409
+ 1. **Initiate setup** — Call `MfaService.initSetup(userId, method)` to get setup data (QR code URI for TOTP, etc.)
410
+ 2. **Verify setup** — Call `MfaService.verifySetup(userId, method, code)` with the initial verification code
411
+ 3. **Receive backup codes** — On successful verification, backup codes are generated and returned
412
+
413
+ ```typescript
414
+ import { Controller, Post, Body, UseGuards } from '@nestjs/common';
415
+ import { JwtAuthGuard, MfaService, User, type IAuthSubject } from '@breadstone/archipel-platform-authentication';
416
+
417
+ @Controller('mfa')
418
+ @UseGuards(JwtAuthGuard)
419
+ export class MfaController {
420
+ private readonly _mfaService: MfaService;
421
+
422
+ constructor(mfaService: MfaService) {
423
+ this._mfaService = mfaService;
424
+ }
425
+
426
+ @Post('setup')
427
+ public async initSetup(@User() user: IAuthSubject, @Body('method') method: string) {
428
+ return this._mfaService.initSetup(user.id, method);
429
+ }
430
+
431
+ @Post('setup/verify')
432
+ public async verifySetup(@User() user: IAuthSubject, @Body() body: { method: string; code: string }) {
433
+ return this._mfaService.verifySetup(user.id, body.method, body.code);
434
+ }
435
+ }
436
+ ```
437
+
438
+ ### MFA Login Flow
439
+
440
+ When a user with MFA enabled signs in, the `ISignInResult` indicates that a challenge is required:
441
+
442
+ ```typescript
443
+ interface ISignInResult {
444
+ readonly mfaRequired: boolean;
445
+ readonly verificationRequired?: boolean;
446
+ readonly accessToken?: string;
447
+ readonly challengeId?: string;
448
+ }
449
+ ```
450
+
451
+ If `mfaRequired` is `true`, the client receives a `challengeId` instead of an `accessToken`. The client must:
452
+
453
+ 1. Call the MFA verification endpoint with the `challengeId` and the code from their authenticator app (or SMS/email).
454
+ 2. On success, the server issues the actual `accessToken`.
455
+
456
+ ### MFA Configuration
457
+
458
+ ```env
459
+ AUTH_MFA_ENCRYPTION_KEY=<32-byte-hex-key>
460
+ AUTH_MFA_CHALLENGE_EXPIRES_IN=5m
461
+ AUTH_MFA_MAX_ATTEMPTS=5
462
+ AUTH_MFA_SMS_CODE_TTL=10m
463
+ AUTH_MFA_SMS_MIN_RESEND=30s
464
+ AUTH_MFA_EMAIL_CODE_TTL=10m
465
+ AUTH_MFA_EMAIL_MIN_RESEND=30s
466
+ AUTH_MFA_PUSH_CODE_TTL=10m
467
+ AUTH_MFA_PUSH_MIN_RESEND=30s
468
+ ```
469
+
470
+ ---
471
+
472
+ ## Email Verification
473
+
474
+ `VerificationService` handles token-based email verification:
475
+
476
+ ```typescript
477
+ import { VerificationService } from '@breadstone/archipel-platform-authentication';
478
+
479
+ // Issue a verification token (e.g., after registration)
480
+ const token = await verificationService.exhibitToken({ userId: user.id, email: user.email });
481
+ // Send this token in a verification email link
482
+
483
+ // Later, when the user clicks the link:
484
+ const isValid = await verificationService.verifyToken(token);
485
+ ```
486
+
487
+ The token lifetime is controlled by `AUTH_VERIFY_JWT_EXPIRES_IN`.
488
+
489
+ ---
490
+
491
+ ## Social Login (OAuth)
492
+
493
+ ### Step 1: Install Provider Strategies
494
+
495
+ Import strategies from their sub-paths:
496
+
497
+ ```typescript
498
+ import { GoogleStrategy, GOOGLE_AUTH_CONFIG_ENTRIES } from '@breadstone/archipel-platform-authentication/google';
499
+ import { GithubStrategy, GITHUB_AUTH_CONFIG_ENTRIES } from '@breadstone/archipel-platform-authentication/github';
500
+ import {
501
+ MicrosoftStrategy,
502
+ MICROSOFT_AUTH_CONFIG_ENTRIES,
503
+ } from '@breadstone/archipel-platform-authentication/microsoft';
504
+ import { AppleStrategy, APPLE_AUTH_CONFIG_ENTRIES } from '@breadstone/archipel-platform-authentication/apple';
505
+ ```
506
+
507
+ ### Step 2: Implement the Social Auth Port
508
+
509
+ ```typescript
510
+ // src/adapters/PrismaSocialAuthAdapter.ts
511
+ import { Injectable } from '@nestjs/common';
512
+ import { SocialAuthPort, type IAuthSubject, type ISocialProfile } from '@breadstone/archipel-platform-authentication';
513
+ import { PrismaService } from '@breadstone/archipel-platform-database';
514
+
515
+ @Injectable()
516
+ export class PrismaSocialAuthAdapter extends SocialAuthPort {
517
+ private readonly _prisma: PrismaService;
518
+
519
+ constructor(prisma: PrismaService) {
520
+ super();
521
+ this._prisma = prisma;
522
+ }
523
+
524
+ public async findOrCreateByProfile(profile: ISocialProfile): Promise<IAuthSubject> {
525
+ // Look up by provider + email
526
+ let user = await this._prisma.user.findFirst({
527
+ where: { email: profile.email },
528
+ });
529
+
530
+ if (!user) {
531
+ user = await this._prisma.user.create({
532
+ data: {
533
+ email: profile.email,
534
+ userName: profile.userName ?? profile.displayName,
535
+ isVerified: true, // OAuth emails are pre-verified
536
+ isAnonymous: false,
537
+ roles: ['user'],
538
+ mfaEnabled: false,
539
+ },
540
+ });
541
+ }
542
+
543
+ return user as unknown as IAuthSubject;
544
+ }
545
+ }
546
+ ```
547
+
548
+ ### Step 3: Register with Additional Config
549
+
550
+ ```typescript
551
+ AuthModule.register({
552
+ authSubject: PrismaAuthSubjectAdapter,
553
+ mfaSubject: PrismaMfaSubjectAdapter,
554
+ sessionPersistence: PrismaSessionAdapter,
555
+ verificationSubject: PrismaVerificationAdapter,
556
+ socialAuth: PrismaSocialAuthAdapter,
557
+ socialStrategies: [GoogleStrategy, GithubStrategy],
558
+ additionalConfigEntries: [
559
+ ...GOOGLE_AUTH_CONFIG_ENTRIES,
560
+ ...GITHUB_AUTH_CONFIG_ENTRIES,
561
+ ],
562
+ }),
563
+ ```
564
+
565
+ ### Step 4: Set Environment Variables
566
+
567
+ ```env
568
+ # Google
569
+ AUTH_GOOGLE_CLIENT_ID=your-client-id
570
+ AUTH_GOOGLE_CLIENT_SECRET=your-client-secret
571
+ AUTH_GOOGLE_CALLBACK_URL=https://yourapp.com/auth/google/callback
572
+ AUTH_GOOGLE_SCOPE=email,profile
573
+
574
+ # GitHub
575
+ AUTH_GITHUB_CLIENT_ID=your-client-id
576
+ AUTH_GITHUB_CLIENT_SECRET=your-client-secret
577
+ AUTH_GITHUB_CALLBACK_URL=https://yourapp.com/auth/github/callback
578
+ AUTH_GITHUB_SCOPE=user:email
579
+ ```
580
+
581
+ ### Using the Social Auth Guard
582
+
583
+ The `SocialAuthGuard` is a dynamic guard that routes to the correct Passport strategy based on a URL parameter:
584
+
585
+ ```typescript
586
+ import { Controller, Get, UseGuards, Req, Param } from '@nestjs/common';
587
+ import { socialAuthGuardFactory, User, type IAuthSubject } from '@breadstone/archipel-platform-authentication';
588
+
589
+ @Controller('auth')
590
+ export class OAuthController {
591
+ @Get(':provider')
592
+ @UseGuards(socialAuthGuardFactory(':provider'))
593
+ public initOAuth(): void {
594
+ // Passport redirects to the provider
595
+ }
596
+
597
+ @Get(':provider/callback')
598
+ @UseGuards(socialAuthGuardFactory(':provider'))
599
+ public async handleCallback(@User() user: IAuthSubject): Promise<{ accessToken: string }> {
600
+ const accessToken = await this._tokenService.createAccessToken(user);
601
+ return { accessToken };
602
+ }
603
+ }
604
+ ```
605
+
606
+ Supported providers: `github`, `google`, `microsoft`, `apple`.
607
+
608
+ ---
609
+
610
+ ## Environment Variables Reference
611
+
612
+ | Variable | Required | Default | Description |
613
+ | ------------------------------- | -------- | ------- | ---------------------------------------- |
614
+ | `AUTH_JWT_SECRET` | Yes | — | Secret for signing JWTs |
615
+ | `AUTH_JWT_EXPIRES_IN` | Yes | — | Access token lifetime (e.g. `15m`, `1h`) |
616
+ | `AUTH_VERIFY_JWT_EXPIRES_IN` | No | — | Verification token lifetime |
617
+ | `AUTH_MFA_ENCRYPTION_KEY` | No\* | — | AES key for encrypting MFA secrets |
618
+ | `AUTH_MFA_CHALLENGE_EXPIRES_IN` | No | `5m` | MFA challenge TTL |
619
+ | `AUTH_MFA_MAX_ATTEMPTS` | No | `5` | Max failed MFA attempts before lockout |
620
+ | `AUTH_GOOGLE_CLIENT_ID` | No\* | — | Google OAuth client ID |
621
+ | `AUTH_GOOGLE_CLIENT_SECRET` | No\* | — | Google OAuth client secret |
622
+ | `AUTH_GOOGLE_CALLBACK_URL` | No\* | — | Google OAuth callback URL |
623
+ | `AUTH_GOOGLE_SCOPE` | No | — | Google OAuth scopes (comma-separated) |
624
+ | `AUTH_GITHUB_CLIENT_ID` | No\* | — | GitHub OAuth client ID |
625
+ | `AUTH_GITHUB_CLIENT_SECRET` | No\* | — | GitHub OAuth client secret |
626
+ | `AUTH_GITHUB_CALLBACK_URL` | No\* | — | GitHub OAuth callback URL |
627
+ | `AUTH_MICROSOFT_CLIENT_ID` | No\* | — | Microsoft OAuth client ID |
628
+ | `AUTH_MICROSOFT_CLIENT_SECRET` | No\* | — | Microsoft OAuth client secret |
629
+ | `AUTH_MICROSOFT_CALLBACK_URL` | No\* | — | Microsoft OAuth callback URL |
630
+ | `AUTH_MICROSOFT_TENANT` | No | — | Microsoft tenant ID or `common` |
631
+ | `AUTH_APPLE_CLIENT_ID` | No\* | — | Apple Sign-In service ID |
632
+ | `AUTH_APPLE_PRIVATE_KEY` | No\* | — | Apple Sign-In private key (PEM) |
633
+ | `AUTH_APPLE_TEAM_ID` | No\* | — | Apple developer team ID |
634
+ | `AUTH_APPLE_KEY_ID` | No\* | — | Apple Sign-In key ID |
635
+ | `AUTH_APPLE_CALLBACK_URL` | No\* | — | Apple Sign-In callback URL |
636
+
637
+ \*Required only when the corresponding feature (MFA or specific OAuth provider) is enabled.
638
+
639
+ ---
640
+
641
+ ## Security Best Practices
642
+
643
+ 1. **Keep `AUTH_JWT_SECRET` strong and rotated.** Use at least 256 bits of entropy. Never commit it to source control.
644
+ 2. **Set short token lifetimes.** Use `15m` for access tokens and combine with session-based refresh logic.
645
+ 3. **Always combine guards.** Use `JwtAuthGuard` + `RolesGuard` together. JWT alone only proves identity, not authorization.
646
+ 4. **Validate at the boundary.** Use DTOs with `class-validator` decorators on all input. Never trust claims blindly.
647
+ 5. **Use the `TokenEnricherPort` for scopes.** Don't hardcode authorization logic in guards. Derive scopes at token creation time and verify them declaratively.
648
+ 6. **Enable MFA for sensitive operations.** Even if MFA isn't globally required, protect high-value actions (password change, payment) with step-up authentication.
649
+ 7. **Monitor sessions.** Expose session listing to users so they can revoke unfamiliar sessions.
650
+
651
+ ---
652
+
653
+ ## Next Steps
654
+
655
+ - Read the [Implementing Ports](/guides/implementing-ports) guide for details on writing all four required port adapters
656
+ - Browse the [platform-authentication API reference](/packages/platform-authentication/api/) for complete method signatures
657
+ - See the [Testing](/guides/testing) guide for patterns to mock auth in unit and integration tests