@breadstone/archipel-mcp 0.0.20 → 0.0.22

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 (196) hide show
  1. package/data/guides/ai-text-generation.md +10 -0
  2. package/data/guides/analytics-and-error-tracking.md +6 -0
  3. package/data/guides/cryptography-and-otp.md +20 -2
  4. package/data/guides/database-setup.md +4 -3
  5. package/data/guides/document-generation.md +26 -0
  6. package/data/guides/email-delivery.md +23 -0
  7. package/data/guides/email-templates.md +298 -0
  8. package/data/guides/esigning-integration.md +1 -1
  9. package/data/guides/getting-started.md +6 -6
  10. package/data/guides/index.md +1 -0
  11. package/data/guides/mcp-server.md +9 -0
  12. package/data/guides/payments-and-feature-gating.md +18 -0
  13. package/data/guides/resource-management.md +9 -9
  14. package/data/guides/telemetry-and-observability.md +7 -1
  15. package/data/packages/platform-analytics/api/Class.AppInsightsAnalyticsClient.md +55 -6
  16. package/data/packages/platform-analytics/api/Class.DatadogAnalyticsClient.md +32 -6
  17. package/data/packages/platform-analytics/api/Class.SentryAnalyticsClient.md +55 -6
  18. package/data/packages/platform-analytics/index.md +13 -0
  19. package/data/packages/platform-blob-storage/api/Variable.AWS_S3_PROVIDER_OPTIONS.md +1 -1
  20. package/data/packages/platform-blob-storage/api/Variable.AZURE_BLOB_PROVIDER_OPTIONS.md +1 -1
  21. package/data/packages/platform-blob-storage/api/Variable.BLOB_PROVIDER.md +1 -1
  22. package/data/packages/platform-blob-storage/api/Variable.VERCEL_BLOB_PROVIDER_OPTIONS.md +1 -1
  23. package/data/packages/platform-core/api/Class.ErrorTemplateService.md +1 -1
  24. package/data/packages/platform-core/api/Class.EventHub.md +7 -7
  25. package/data/packages/platform-core/api/Class.HostService.md +1 -1
  26. package/data/packages/platform-core/api/Class.SseHub.md +29 -6
  27. package/data/packages/platform-core/api/Variable.ID_GENERATOR_TOKEN.md +1 -1
  28. package/data/packages/platform-core/api/index.md +0 -27
  29. package/data/packages/platform-core/index.md +8 -4
  30. package/data/packages/platform-cryptography/api/Class.BcryptService.md +4 -4
  31. package/data/packages/platform-cryptography/api/Class.CryptoService.md +3 -3
  32. package/data/packages/platform-cryptography/api/Class.OtpService.md +6 -6
  33. package/data/packages/platform-cryptography/api/Variable.BCRYPT_OPTIONS.md +2 -2
  34. package/data/packages/platform-cryptography/api/Variable.MAX_BCRYPT_PASSWORD_BYTES.md +1 -1
  35. package/data/packages/platform-cryptography/api/Variable.MIN_BCRYPT_ROUNDS.md +1 -1
  36. package/data/packages/platform-cryptography/api/Variable.OTP_OPTIONS.md +2 -2
  37. package/data/packages/platform-cryptography/api/Variable.OTP_SERVICE_TOKEN.md +2 -2
  38. package/data/packages/platform-cryptography/api/Variable.TOTP_EPOCH_TOLERANCE.md +1 -1
  39. package/data/packages/platform-cryptography/api/index.md +3 -3
  40. package/data/packages/platform-cryptography/index.md +10 -0
  41. package/data/packages/platform-documents/api/Class.BaseDocumentRenderer.md +32 -1
  42. package/data/packages/platform-documents/api/Class.DocumentEngine.md +4 -4
  43. package/data/packages/platform-documents/api/Class.DocumentError.md +61 -0
  44. package/data/packages/platform-documents/api/Class.DocumentModule.md +2 -2
  45. package/data/packages/platform-documents/api/Class.DocumentRenderError.md +53 -0
  46. package/data/packages/platform-documents/api/Class.DocumentValidationError.md +52 -0
  47. package/data/packages/platform-documents/api/Class.DocxDocumentRenderer2.md +333 -0
  48. package/data/packages/platform-documents/api/Class.ImageProcessingError.md +53 -0
  49. package/data/packages/platform-documents/api/Class.PdfDocumentRenderer.md +355 -0
  50. package/data/packages/platform-documents/api/Class.SharpImageProcessor.md +5 -5
  51. package/data/packages/platform-documents/api/Interface.IDocumentModuleOptions.md +31 -5
  52. package/data/packages/platform-documents/api/Variable.DOCUMENT_MODULE_OPTIONS.md +1 -1
  53. package/data/packages/platform-documents/api/Variable.DOCUMENT_PARSER_TOKEN.md +1 -1
  54. package/data/packages/platform-documents/api/Variable.DOCUMENT_RENDERER_TOKEN.md +1 -1
  55. package/data/packages/platform-documents/api/Variable.IMAGE_PROCESSOR_TOKEN.md +1 -1
  56. package/data/packages/platform-documents/api/index.md +6 -0
  57. package/data/packages/platform-documents/index.md +27 -0
  58. package/data/packages/platform-esigning/api/Class.EsigningClientPort.md +2 -2
  59. package/data/packages/platform-esigning/api/Class.InternalEsigningProvider.md +8 -8
  60. package/data/packages/platform-esigning/index.md +2 -0
  61. package/data/packages/platform-health/index.md +128 -0
  62. package/data/packages/platform-intelligence/api/Class.IntelligenceCapabilityRegistry.md +3 -3
  63. package/data/packages/platform-intelligence/api/Class.IntelligenceConfigurationError.md +50 -0
  64. package/data/packages/platform-intelligence/api/Class.IntelligenceTextGenerator.md +27 -4
  65. package/data/packages/platform-intelligence/api/Class.IntelligenceValidationError.md +50 -0
  66. package/data/packages/platform-intelligence/api/Function.loadProviderFactory.md +1 -1
  67. package/data/packages/platform-intelligence/api/index.md +2 -0
  68. package/data/packages/platform-intelligence/index.md +32 -0
  69. package/data/packages/platform-logging/api/Class.LoggerModule.md +1 -1
  70. package/data/packages/platform-logging/index.md +2 -0
  71. package/data/packages/platform-mailing/api/Class.DeliveryStrategyBase.md +0 -1
  72. package/data/packages/platform-mailing/api/Class.MailDeliveryError.md +65 -0
  73. package/data/packages/platform-mailing/api/Class.MailModule.md +1 -1
  74. package/data/packages/platform-mailing/api/Class.MailgunDeliveryStrategy.md +3 -3
  75. package/data/packages/platform-mailing/api/Class.PostmarkDeliveryStrategy.md +3 -3
  76. package/data/packages/platform-mailing/api/Class.ResendDeliveryStrategy.md +3 -3
  77. package/data/packages/platform-mailing/api/Class.SendGridDeliveryStrategy.md +3 -3
  78. package/data/packages/platform-mailing/api/Class.SmtpDeliveryStrategy.md +3 -3
  79. package/data/packages/platform-mailing/api/Class.TemplateFetchStrategyBase.md +0 -5
  80. package/data/packages/platform-mailing/api/Variable.SMTP_CONFIG_ENTRIES.md +14 -0
  81. package/data/packages/platform-mailing/api/Variable.SMTP_HOST.md +14 -0
  82. package/data/packages/platform-mailing/api/Variable.SMTP_PASSWORD.md +14 -0
  83. package/data/packages/platform-mailing/api/Variable.SMTP_PORT.md +14 -0
  84. package/data/packages/platform-mailing/api/Variable.SMTP_SECURE.md +14 -0
  85. package/data/packages/platform-mailing/api/Variable.SMTP_USER.md +14 -0
  86. package/data/packages/platform-mailing/api/index.md +7 -3
  87. package/data/packages/platform-mailing/index.md +29 -0
  88. package/data/packages/platform-mapping/index.md +121 -0
  89. package/data/packages/platform-mcp/api/Class.McpServerService.md +8 -8
  90. package/data/packages/platform-mcp/api/Variable.MCP_MODULE_OPTIONS.md +1 -1
  91. package/data/packages/platform-mcp/index.md +11 -0
  92. package/data/packages/platform-openapi/api/Class.SwaggerMultiDocumentService.md +4 -4
  93. package/data/packages/platform-openapi/api/Class.SwaggerTheme.md +2 -2
  94. package/data/packages/platform-openapi/index.md +1 -1
  95. package/data/packages/platform-payments/api/Class.LemonSqueezyClient.md +6 -6
  96. package/data/packages/platform-payments/api/Class.MollieClient.md +6 -6
  97. package/data/packages/platform-payments/api/Class.PaddleClient.md +6 -6
  98. package/data/packages/platform-payments/api/Class.PaymentError.md +65 -0
  99. package/data/packages/platform-payments/api/Class.StripeClient.md +6 -6
  100. package/data/packages/platform-payments/api/index.md +1 -0
  101. package/data/packages/platform-payments/index.md +29 -0
  102. package/data/packages/platform-reporting/api/Class.ReportingContributorRegistry.md +1 -1
  103. package/data/packages/platform-reporting/index.md +3 -1
  104. package/data/packages/platform-resources/index.md +135 -0
  105. package/data/packages/platform-telemetry/api/Class.MetricsService.md +29 -3
  106. package/data/packages/platform-telemetry/api/Class.OtelSdkHolder.md +3 -2
  107. package/data/packages/platform-telemetry/api/Class.TelemetryLoggerService.md +6 -6
  108. package/data/packages/platform-telemetry/api/Class.TelemetryRuleEngine.md +3 -3
  109. package/data/packages/platform-telemetry/api/Variable.TELEMETRY_ENABLED.md +1 -1
  110. package/data/packages/platform-telemetry/api/Variable.TELEMETRY_FACADE.md +1 -1
  111. package/data/packages/platform-telemetry/api/Variable.TELEMETRY_OPTIONS.md +1 -1
  112. package/data/packages/platform-telemetry/api/index.md +1 -1
  113. package/data/packages/platform-telemetry/index.md +3 -1
  114. package/{src/knowledge/configPattern.js → data/patterns/config-pattern.md} +44 -47
  115. package/{src/knowledge/dtoPattern.js → data/patterns/dto-pattern.md} +58 -61
  116. package/{src/knowledge/errorHandlingPattern.js → data/patterns/error-handling-pattern.md} +35 -38
  117. package/{src/knowledge/guardPattern.js → data/patterns/guard-pattern.md} +35 -38
  118. package/{src/knowledge/mappingPattern.js → data/patterns/mapping-pattern.md} +43 -144
  119. package/data/patterns/module-pattern.md +182 -0
  120. package/data/patterns/query-pattern.md +137 -0
  121. package/data/patterns/repository-pattern.md +208 -0
  122. package/{src/knowledge/testingPattern.js → data/patterns/testing-pattern.md} +37 -40
  123. package/package.json +1 -1
  124. package/src/PatternsLoader.d.ts +12 -0
  125. package/src/PatternsLoader.js +65 -0
  126. package/src/generators/mappingPatternGenerator.d.ts +5 -0
  127. package/src/generators/mappingPatternGenerator.js +107 -0
  128. package/src/generators/modulePatternGenerator.d.ts +5 -0
  129. package/src/generators/modulePatternGenerator.js +107 -0
  130. package/src/generators/queryPatternGenerator.d.ts +4 -0
  131. package/src/generators/queryPatternGenerator.js +83 -0
  132. package/src/generators/repositoryPatternGenerator.d.ts +5 -0
  133. package/src/generators/repositoryPatternGenerator.js +165 -0
  134. package/src/main.js +15 -9
  135. package/src/models/IPatternDoc.d.ts +15 -0
  136. package/src/models/IPatternDoc.js +3 -0
  137. package/src/tools/registerGetConfigPatternTool.d.ts +2 -1
  138. package/src/tools/registerGetConfigPatternTool.js +4 -3
  139. package/src/tools/registerGetDtoPatternTool.d.ts +2 -1
  140. package/src/tools/registerGetDtoPatternTool.js +4 -3
  141. package/src/tools/registerGetErrorHandlingPatternTool.d.ts +2 -1
  142. package/src/tools/registerGetErrorHandlingPatternTool.js +4 -3
  143. package/src/tools/registerGetGuardPatternTool.d.ts +2 -1
  144. package/src/tools/registerGetGuardPatternTool.js +4 -3
  145. package/src/tools/registerGetMappingPatternTool.d.ts +2 -1
  146. package/src/tools/registerGetMappingPatternTool.js +5 -4
  147. package/src/tools/registerGetModulePatternTool.d.ts +2 -1
  148. package/src/tools/registerGetModulePatternTool.js +5 -4
  149. package/src/tools/registerGetQueryPatternTool.d.ts +2 -1
  150. package/src/tools/registerGetQueryPatternTool.js +5 -4
  151. package/src/tools/registerGetRepositoryPatternTool.d.ts +2 -1
  152. package/src/tools/registerGetRepositoryPatternTool.js +5 -4
  153. package/src/tools/registerGetTestingPatternTool.d.ts +2 -1
  154. package/src/tools/registerGetTestingPatternTool.js +4 -3
  155. package/data/packages/platform-core/api/Class.BlobResourceStrategy.md +0 -195
  156. package/data/packages/platform-core/api/Class.EmbeddedResourceStrategy.md +0 -215
  157. package/data/packages/platform-core/api/Class.FileResourceStrategy.md +0 -192
  158. package/data/packages/platform-core/api/Class.HealthModule.md +0 -42
  159. package/data/packages/platform-core/api/Class.HealthOrchestrator.md +0 -64
  160. package/data/packages/platform-core/api/Class.MappingBuilder.md +0 -110
  161. package/data/packages/platform-core/api/Class.MappingModule.md +0 -46
  162. package/data/packages/platform-core/api/Class.MappingNotRegisteredError.md +0 -56
  163. package/data/packages/platform-core/api/Class.MappingProfileBase.md +0 -52
  164. package/data/packages/platform-core/api/Class.MappingService.md +0 -284
  165. package/data/packages/platform-core/api/Class.ResourceManager.md +0 -565
  166. package/data/packages/platform-core/api/Class.ResourceModule.md +0 -46
  167. package/data/packages/platform-core/api/Class.TypeMappingNotRegisteredError.md +0 -57
  168. package/data/packages/platform-core/api/Function.createMappingKey.md +0 -39
  169. package/data/packages/platform-core/api/Interface.IBlobResourceStrategyConfig.md +0 -28
  170. package/data/packages/platform-core/api/Interface.IBlobServiceAdapter.md +0 -40
  171. package/data/packages/platform-core/api/Interface.IFileResourceStrategyConfig.md +0 -72
  172. package/data/packages/platform-core/api/Interface.IHealthCheckResult.md +0 -46
  173. package/data/packages/platform-core/api/Interface.IHealthIndicator.md +0 -41
  174. package/data/packages/platform-core/api/Interface.IMappingBuilder.md +0 -76
  175. package/data/packages/platform-core/api/Interface.IMappingKey.md +0 -58
  176. package/data/packages/platform-core/api/Interface.IMappingProfile.md +0 -32
  177. package/data/packages/platform-core/api/Interface.IResourceManagerConfig.md +0 -89
  178. package/data/packages/platform-core/api/Interface.IResourceMetadata.md +0 -94
  179. package/data/packages/platform-core/api/Interface.IResourceResult.md +0 -34
  180. package/data/packages/platform-core/api/Interface.IResourceStrategy.md +0 -134
  181. package/data/packages/platform-core/api/Variable.HEALTH_INDICATORS_TOKEN.md +0 -14
  182. package/data/packages/platform-mailing/api/Class.BlobTemplateFetchStrategy.md +0 -60
  183. package/data/packages/platform-mailing/api/Class.FileTemplateFetchStrategy.md +0 -58
  184. package/data/packages/platform-mailing/api/Class.LogDeliveryStrategy.md +0 -71
  185. package/src/knowledge/configPattern.d.ts +0 -5
  186. package/src/knowledge/dtoPattern.d.ts +0 -5
  187. package/src/knowledge/errorHandlingPattern.d.ts +0 -5
  188. package/src/knowledge/guardPattern.d.ts +0 -5
  189. package/src/knowledge/mappingPattern.d.ts +0 -6
  190. package/src/knowledge/modulePattern.d.ts +0 -6
  191. package/src/knowledge/modulePattern.js +0 -283
  192. package/src/knowledge/queryPattern.d.ts +0 -6
  193. package/src/knowledge/queryPattern.js +0 -215
  194. package/src/knowledge/repositoryPattern.d.ts +0 -6
  195. package/src/knowledge/repositoryPattern.js +0 -367
  196. package/src/knowledge/testingPattern.d.ts +0 -5
@@ -5,7 +5,7 @@ editUrl: false
5
5
  ---
6
6
  # Class: StripeClient
7
7
 
8
- Defined in: [stripe/StripeClient.ts:28](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-payments/src/stripe/StripeClient.ts#L28)
8
+ Defined in: [stripe/StripeClient.ts:29](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-payments/src/stripe/StripeClient.ts#L29)
9
9
 
10
10
  Stripe implementation of the [PaymentClientPort](Class.PaymentClientPort).
11
11
  All Stripe-specific types and logic are encapsulated here.
@@ -22,7 +22,7 @@ All Stripe-specific types and logic are encapsulated here.
22
22
  new StripeClient(configService): StripeClient;
23
23
  ```
24
24
 
25
- Defined in: [stripe/StripeClient.ts:39](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-payments/src/stripe/StripeClient.ts#L39)
25
+ Defined in: [stripe/StripeClient.ts:40](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-payments/src/stripe/StripeClient.ts#L40)
26
26
 
27
27
  #### Parameters
28
28
 
@@ -46,7 +46,7 @@ Defined in: [stripe/StripeClient.ts:39](https://github.com/RueDeRennes/archipel/
46
46
  constructWebhookEvent(payload, signature): INormalizedWebhookEvent;
47
47
  ```
48
48
 
49
- Defined in: [stripe/StripeClient.ts:152](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-payments/src/stripe/StripeClient.ts#L152)
49
+ Defined in: [stripe/StripeClient.ts:153](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-payments/src/stripe/StripeClient.ts#L153)
50
50
 
51
51
  Construct and normalize a webhook event.
52
52
 
@@ -79,7 +79,7 @@ createCheckoutSession(
79
79
  userId?): Promise<INormalizedCheckoutSession>;
80
80
  ```
81
81
 
82
- Defined in: [stripe/StripeClient.ts:87](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-payments/src/stripe/StripeClient.ts#L87)
82
+ Defined in: [stripe/StripeClient.ts:88](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-payments/src/stripe/StripeClient.ts#L88)
83
83
 
84
84
  Create a checkout session.
85
85
 
@@ -110,7 +110,7 @@ Normalized checkout session
110
110
  fetchPrices(productId): Promise<INormalizedPrice[]>;
111
111
  ```
112
112
 
113
- Defined in: [stripe/StripeClient.ts:58](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-payments/src/stripe/StripeClient.ts#L58)
113
+ Defined in: [stripe/StripeClient.ts:59](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-payments/src/stripe/StripeClient.ts#L59)
114
114
 
115
115
  Fetch all active prices for a product.
116
116
 
@@ -140,7 +140,7 @@ fetchSubscription(subscriptionId): Promise<
140
140
  | null>;
141
141
  ```
142
142
 
143
- Defined in: [stripe/StripeClient.ts:127](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-payments/src/stripe/StripeClient.ts#L127)
143
+ Defined in: [stripe/StripeClient.ts:128](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-payments/src/stripe/StripeClient.ts#L128)
144
144
 
145
145
  Retrieve subscription details.
146
146
 
@@ -16,6 +16,7 @@ editUrl: false
16
16
  | [MollieClient](Class.MollieClient) | Mollie implementation of the [PaymentClientPort](Class.PaymentClientPort). Uses the official `@mollie/api-client` to interact with the Mollie API. |
17
17
  | [PaddleClient](Class.PaddleClient) | Paddle implementation of the [PaymentClientPort](Class.PaymentClientPort). Uses the official `@paddle/paddle-node-sdk` to interact with the Paddle Billing API. |
18
18
  | [PaymentClientPort](Class.PaymentClientPort) | Abstract port for payment provider clients. Each provider (Stripe, Paddle, LemonSqueezy, Mollie) must implement this contract so that the consuming application can switch providers without changing business logic. |
19
+ | [PaymentError](Class.PaymentError) | Domain error thrown when a payment operation fails. |
19
20
  | [PaymentModule](Class.PaymentModule) | NestJS module providing generic payment infrastructure. Exposes a configurable payment client, a feature-gating guard, and a usage-tracking interceptor. The specific payment provider (Stripe, Paddle, LemonSqueezy, Mollie) is selected via the options. |
20
21
  | [StripeClient](Class.StripeClient) | Stripe implementation of the [PaymentClientPort](Class.PaymentClientPort). All Stripe-specific types and logic are encapsulated here. |
21
22
 
@@ -504,6 +504,34 @@ export class RecipeController {
504
504
 
505
505
  ---
506
506
 
507
+ ## Error Handling
508
+
509
+ All payment clients throw a `PaymentError` when provider operations fail (checkout session creation, webhook signature verification, price fetching, etc.). This domain error wraps the underlying SDK error and exposes structured metadata:
510
+
511
+ ```typescript
512
+ import { PaymentError } from '@breadstone/archipel-platform-payments';
513
+
514
+ try {
515
+ await this._paymentClient.createCheckoutSession(params);
516
+ } catch (error) {
517
+ if (error instanceof PaymentError) {
518
+ logger.error('Payment operation failed', {
519
+ provider: error.provider, // 'stripe', 'paddle', 'mollie', 'lemonsqueezy'
520
+ code: error.code, // 'PAYMENT'
521
+ cause: error.cause, // Original provider SDK error
522
+ });
523
+ }
524
+ }
525
+ ```
526
+
527
+ | Property | Type | Description |
528
+ | ---------- | -------- | -------------------------------------------------- |
529
+ | `code` | `string` | Always `'PAYMENT'` |
530
+ | `provider` | `string` | Provider that failed (`stripe`, `paddle`, etc.) |
531
+ | `cause` | `unknown`| Original error from the provider SDK |
532
+
533
+ ---
534
+
507
535
  ## Exports Summary
508
536
 
509
537
  ### Core (`@breadstone/archipel-platform-payments`)
@@ -523,6 +551,7 @@ export class RecipeController {
523
551
  | `INormalizedSubscription` | Interface | Normalized subscription |
524
552
  | `INormalizedWebhookEvent` | Interface | Normalized webhook event |
525
553
  | `SubscriptionStatus` | Type Alias | Subscription status union |
554
+ | `PaymentError` | Error class | Domain error for payment failures |
526
555
 
527
556
  ### Provider subpaths
528
557
 
@@ -29,7 +29,7 @@ new ReportingContributorRegistry(): ReportingContributorRegistry;
29
29
  getContributors(): readonly IReportingContributor[];
30
30
  ```
31
31
 
32
- Defined in: [core/ReportingContributorRegistry.ts:31](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-reporting/src/core/ReportingContributorRegistry.ts#L31)
32
+ Defined in: [core/ReportingContributorRegistry.ts:37](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-reporting/src/core/ReportingContributorRegistry.ts#L37)
33
33
 
34
34
  #### Returns
35
35
 
@@ -30,6 +30,8 @@ export class AppModule {}
30
30
 
31
31
  Each feature module provides an `IReportingContributor` that exposes the datasets it can report on. Contributors are registered with the `ReportingContributorRegistry` and discovered by the `ReportingFacade`.
32
32
 
33
+ > **Capacity limit:** The registry enforces a maximum of **200** registered contributors. Attempts to exceed this limit are logged as warnings and silently ignored.
34
+
33
35
  ### IReportingContributor
34
36
 
35
37
  ```typescript
@@ -128,7 +130,7 @@ export class OrderModule implements OnModuleInit {
128
130
 
129
131
  ## ReportingFacade
130
132
 
131
- Central API for catalog browsing and query execution.
133
+ Central API for catalog browsing and query execution. Each `executeQuery()` call is subject to a **30-second timeout** — queries that exceed this limit throw a `ReportingExecutionError`.
132
134
 
133
135
  ### Browse Catalog
134
136
 
@@ -0,0 +1,135 @@
1
+ ---
2
+ title: platform-resources
3
+ description: Multi-strategy resource management with MIME type detection and optional caching.
4
+ order: 3
5
+ tags: [resources, files, blob, mime, caching]
6
+ package: '@breadstone/archipel-platform-resources'
7
+ ---
8
+
9
+ # platform-resources
10
+
11
+ Multi-strategy resource management for NestJS applications. Loads files from the file system, embedded buffers, or blob storage with MIME type detection and optional caching. Extracted from `platform-core` to provide a focused, independently versionable resource module.
12
+
13
+ **Package:** `@breadstone/archipel-platform-resources`
14
+
15
+ ## Installation
16
+
17
+ ```typescript
18
+ import {
19
+ ResourceModule,
20
+ ResourceManager,
21
+ FileResourceStrategy,
22
+ BlobResourceStrategy,
23
+ EmbeddedResourceStrategy,
24
+ ResourceNotFoundError,
25
+ } from '@breadstone/archipel-platform-resources';
26
+ ```
27
+
28
+ ---
29
+
30
+ ## Module Registration
31
+
32
+ Register the module with one or more resource strategies:
33
+
34
+ ```typescript
35
+ import { Module } from '@nestjs/common';
36
+ import { ResourceModule, FileResourceStrategy, EmbeddedResourceStrategy } from '@breadstone/archipel-platform-resources';
37
+ import { join } from 'node:path';
38
+
39
+ @Module({
40
+ imports: [
41
+ ResourceModule.forRoot({
42
+ strategies: [
43
+ new FileResourceStrategy({
44
+ basePath: join(__dirname, '..', 'assets'),
45
+ }),
46
+ new EmbeddedResourceStrategy([
47
+ { name: 'fallback.html', buffer: Buffer.from('<html>Fallback</html>') },
48
+ ]),
49
+ ],
50
+ }),
51
+ ],
52
+ })
53
+ export class AppModule {}
54
+ ```
55
+
56
+ ## Using ResourceManager
57
+
58
+ Inject and use `ResourceManager` to load resources at runtime:
59
+
60
+ ```typescript
61
+ import { Injectable } from '@nestjs/common';
62
+ import { ResourceManager } from '@breadstone/archipel-platform-resources';
63
+
64
+ @Injectable()
65
+ export class TemplateService {
66
+ constructor(private readonly _resourceManager: ResourceManager) {}
67
+
68
+ public async loadTemplate(name: string): Promise<string> {
69
+ const result = await this._resourceManager.get(name);
70
+ return result.buffer.toString('utf-8');
71
+ }
72
+ }
73
+ ```
74
+
75
+ ---
76
+
77
+ ## Strategies
78
+
79
+ | Strategy | Description |
80
+ | --------------------------- | ----------------------------------------------------------------- |
81
+ | `FileResourceStrategy` | Loads resources from the local file system with glob support |
82
+ | `BlobResourceStrategy` | Loads resources from a blob storage adapter (Vercel, Azure, S3) |
83
+ | `EmbeddedResourceStrategy` | Serves pre-loaded in-memory buffers |
84
+
85
+ ### BlobResourceStrategy
86
+
87
+ For loading resources from cloud blob storage, provide an adapter that implements `IBlobServiceAdapter`:
88
+
89
+ ```typescript
90
+ import { BlobResourceStrategy, type IBlobServiceAdapter } from '@breadstone/archipel-platform-resources';
91
+
92
+ const blobStrategy = new BlobResourceStrategy({
93
+ adapter: myBlobAdapter,
94
+ containerName: 'templates',
95
+ });
96
+ ```
97
+
98
+ ### Custom Strategies
99
+
100
+ Implement `IResourceStrategy` to create your own resource loading strategy:
101
+
102
+ ```typescript
103
+ import type { IResourceStrategy, IResourceResult } from '@breadstone/archipel-platform-resources';
104
+
105
+ export class CustomStrategy implements IResourceStrategy {
106
+ public async get(name: string): Promise<IResourceResult | undefined> {
107
+ // Custom loading logic
108
+ }
109
+ }
110
+ ```
111
+
112
+ ---
113
+
114
+ ## Interfaces
115
+
116
+ | Interface | Description |
117
+ | ---------------------- | ---------------------------------------- |
118
+ | `IResourceResult` | Result object with `buffer` and `metadata` |
119
+ | `IResourceMetadata` | Metadata including `mimeType` and `size` |
120
+ | `IResourceStrategy` | Strategy contract for resource loading |
121
+ | `IBlobServiceAdapter` | Adapter contract for blob storage access |
122
+
123
+ ---
124
+
125
+ ## Error Classes
126
+
127
+ | Error | Description |
128
+ | ------------------------ | --------------------------------------------- |
129
+ | `ResourceNotFoundError` | Thrown when a requested resource is not found |
130
+
131
+ ---
132
+
133
+ ## API Reference
134
+
135
+ See the auto-generated [API Reference](./api/) for full details on all exported classes, interfaces, and types.
@@ -7,10 +7,14 @@ editUrl: false
7
7
 
8
8
  Defined in: [metrics/MetricsService.ts:25](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-telemetry/src/metrics/MetricsService.ts#L25)
9
9
 
10
- Provides lazily-initialized OpenTelemetry metric instruments.
10
+ Provides eagerly-initialized OpenTelemetry metric instruments.
11
11
 
12
12
  Replaces the former module-level `let instruments` closure (TEL-4).
13
13
 
14
+ ## Implements
15
+
16
+ - `OnModuleInit`
17
+
14
18
  ## Constructors
15
19
 
16
20
  ### Constructor
@@ -31,10 +35,32 @@ new MetricsService(): MetricsService;
31
35
  getInstruments(): IMetricInstruments | undefined;
32
36
  ```
33
37
 
34
- Defined in: [metrics/MetricsService.ts:38](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-telemetry/src/metrics/MetricsService.ts#L38)
38
+ Defined in: [metrics/MetricsService.ts:61](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-telemetry/src/metrics/MetricsService.ts#L61)
35
39
 
36
- Returns the cached metric instruments, creating them on first access.
40
+ Returns the cached metric instruments.
37
41
 
38
42
  #### Returns
39
43
 
40
44
  [`IMetricInstruments`](Interface.IMetricInstruments) \| `undefined`
45
+
46
+ ***
47
+
48
+ ### onModuleInit()
49
+
50
+ ```ts
51
+ onModuleInit(): void;
52
+ ```
53
+
54
+ Defined in: [metrics/MetricsService.ts:40](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-telemetry/src/metrics/MetricsService.ts#L40)
55
+
56
+ Eagerly initializes metric instruments at module startup.
57
+
58
+ #### Returns
59
+
60
+ `void`
61
+
62
+ #### Implementation of
63
+
64
+ ```ts
65
+ OnModuleInit.onModuleInit
66
+ ```
@@ -36,7 +36,7 @@ new OtelSdkHolder(): OtelSdkHolder;
36
36
  onApplicationShutdown(): Promise<void>;
37
37
  ```
38
38
 
39
- Defined in: [OtelSdkHolder.ts:34](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-telemetry/src/OtelSdkHolder.ts#L34)
39
+ Defined in: [OtelSdkHolder.ts:39](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-telemetry/src/OtelSdkHolder.ts#L39)
40
40
 
41
41
  #### Returns
42
42
 
@@ -58,9 +58,10 @@ OnApplicationShutdown.onApplicationShutdown
58
58
  setSdk(sdk): void;
59
59
  ```
60
60
 
61
- Defined in: [OtelSdkHolder.ts:29](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-telemetry/src/OtelSdkHolder.ts#L29)
61
+ Defined in: [OtelSdkHolder.ts:30](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-telemetry/src/OtelSdkHolder.ts#L30)
62
62
 
63
63
  Stores the SDK reference so it can be shut down later.
64
+ Can only be called once — subsequent calls are ignored.
64
65
 
65
66
  #### Parameters
66
67
 
@@ -23,7 +23,7 @@ Defined in: [logger/TelemetryLoggerService.ts:5](https://github.com/RueDeRennes/
23
23
  new TelemetryLoggerService(ruleEngine?): TelemetryLoggerService;
24
24
  ```
25
25
 
26
- Defined in: [logger/TelemetryLoggerService.ts:12](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-telemetry/src/logger/TelemetryLoggerService.ts#L12)
26
+ Defined in: [logger/TelemetryLoggerService.ts:11](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-telemetry/src/logger/TelemetryLoggerService.ts#L11)
27
27
 
28
28
  #### Parameters
29
29
 
@@ -49,7 +49,7 @@ ConsoleLogger.constructor
49
49
  debug(message, context?): void;
50
50
  ```
51
51
 
52
- Defined in: [logger/TelemetryLoggerService.ts:19](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-telemetry/src/logger/TelemetryLoggerService.ts#L19)
52
+ Defined in: [logger/TelemetryLoggerService.ts:30](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-telemetry/src/logger/TelemetryLoggerService.ts#L30)
53
53
 
54
54
  Write a 'debug' level log, if the configured level allows for it.
55
55
  Prints to `stdout` with newline.
@@ -88,7 +88,7 @@ error(
88
88
  context?): void;
89
89
  ```
90
90
 
91
- Defined in: [logger/TelemetryLoggerService.ts:17](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-telemetry/src/logger/TelemetryLoggerService.ts#L17)
91
+ Defined in: [logger/TelemetryLoggerService.ts:22](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-telemetry/src/logger/TelemetryLoggerService.ts#L22)
92
92
 
93
93
  Write an 'error' level log, if the configured level allows for it.
94
94
  Prints to `stderr` with newline.
@@ -125,7 +125,7 @@ ConsoleLogger.error
125
125
  log(message, context?): void;
126
126
  ```
127
127
 
128
- Defined in: [logger/TelemetryLoggerService.ts:16](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-telemetry/src/logger/TelemetryLoggerService.ts#L16)
128
+ Defined in: [logger/TelemetryLoggerService.ts:18](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-telemetry/src/logger/TelemetryLoggerService.ts#L18)
129
129
 
130
130
  Write a 'log' level log, if the configured level allows for it.
131
131
  Prints to `stdout` with newline.
@@ -161,7 +161,7 @@ ConsoleLogger.log
161
161
  verbose(message, context?): void;
162
162
  ```
163
163
 
164
- Defined in: [logger/TelemetryLoggerService.ts:20](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-telemetry/src/logger/TelemetryLoggerService.ts#L20)
164
+ Defined in: [logger/TelemetryLoggerService.ts:34](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-telemetry/src/logger/TelemetryLoggerService.ts#L34)
165
165
 
166
166
  Write a 'verbose' level log, if the configured level allows for it.
167
167
  Prints to `stdout` with newline.
@@ -197,7 +197,7 @@ ConsoleLogger.verbose
197
197
  warn(message, context?): void;
198
198
  ```
199
199
 
200
- Defined in: [logger/TelemetryLoggerService.ts:18](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-telemetry/src/logger/TelemetryLoggerService.ts#L18)
200
+ Defined in: [logger/TelemetryLoggerService.ts:26](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-telemetry/src/logger/TelemetryLoggerService.ts#L26)
201
201
 
202
202
  Write a 'warn' level log, if the configured level allows for it.
203
203
  Prints to `stdout` with newline.
@@ -5,7 +5,7 @@ editUrl: false
5
5
  ---
6
6
  # Class: TelemetryRuleEngine
7
7
 
8
- Defined in: [rules/TelemetryRuleEngine.ts:11](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-telemetry/src/rules/TelemetryRuleEngine.ts#L11)
8
+ Defined in: [rules/TelemetryRuleEngine.ts:12](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-telemetry/src/rules/TelemetryRuleEngine.ts#L12)
9
9
 
10
10
  ## Constructors
11
11
 
@@ -15,7 +15,7 @@ Defined in: [rules/TelemetryRuleEngine.ts:11](https://github.com/RueDeRennes/arc
15
15
  new TelemetryRuleEngine(options, metricsService): TelemetryRuleEngine;
16
16
  ```
17
17
 
18
- Defined in: [rules/TelemetryRuleEngine.ts:18](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-telemetry/src/rules/TelemetryRuleEngine.ts#L18)
18
+ Defined in: [rules/TelemetryRuleEngine.ts:20](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-telemetry/src/rules/TelemetryRuleEngine.ts#L20)
19
19
 
20
20
  #### Parameters
21
21
 
@@ -36,7 +36,7 @@ Defined in: [rules/TelemetryRuleEngine.ts:18](https://github.com/RueDeRennes/arc
36
36
  process(message): void;
37
37
  ```
38
38
 
39
- Defined in: [rules/TelemetryRuleEngine.ts:25](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-telemetry/src/rules/TelemetryRuleEngine.ts#L25)
39
+ Defined in: [rules/TelemetryRuleEngine.ts:27](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-telemetry/src/rules/TelemetryRuleEngine.ts#L27)
40
40
 
41
41
  #### Parameters
42
42
 
@@ -9,4 +9,4 @@ editUrl: false
9
9
  const TELEMETRY_ENABLED: typeof TELEMETRY_ENABLED;
10
10
  ```
11
11
 
12
- Defined in: [tokens.ts:4](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-telemetry/src/tokens.ts#L4)
12
+ Defined in: [tokens/TelemetryTokens.ts:4](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-telemetry/src/tokens/TelemetryTokens.ts#L4)
@@ -9,4 +9,4 @@ editUrl: false
9
9
  const TELEMETRY_FACADE: typeof TELEMETRY_FACADE;
10
10
  ```
11
11
 
12
- Defined in: [tokens.ts:3](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-telemetry/src/tokens.ts#L3)
12
+ Defined in: [tokens/TelemetryTokens.ts:3](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-telemetry/src/tokens/TelemetryTokens.ts#L3)
@@ -9,4 +9,4 @@ editUrl: false
9
9
  const TELEMETRY_OPTIONS: typeof TELEMETRY_OPTIONS;
10
10
  ```
11
11
 
12
- Defined in: [tokens.ts:2](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-telemetry/src/tokens.ts#L2)
12
+ Defined in: [tokens/TelemetryTokens.ts:2](https://github.com/RueDeRennes/archipel/blob/main/libs/platform-telemetry/src/tokens/TelemetryTokens.ts#L2)
@@ -9,7 +9,7 @@ editUrl: false
9
9
 
10
10
  | Class | Description |
11
11
  | ------ | ------ |
12
- | [MetricsService](Class.MetricsService) | Provides lazily-initialized OpenTelemetry metric instruments. |
12
+ | [MetricsService](Class.MetricsService) | Provides eagerly-initialized OpenTelemetry metric instruments. |
13
13
  | [NoopTelemetryFacade](Class.NoopTelemetryFacade) | - |
14
14
  | [OtelSdkHolder](Class.OtelSdkHolder) | Holds a reference to the OpenTelemetry NodeSDK instance and performs a graceful shutdown when the application terminates. |
15
15
  | [TelemetryCacheMetricsRecorder](Class.TelemetryCacheMetricsRecorder) | Generic cache metrics recorder that forwards cache lifecycle events into the telemetry facade (which may be a noop when disabled). |
@@ -164,7 +164,9 @@ The module initializes these OTEL components:
164
164
  | Metrics exporter | OTLP/HTTP |
165
165
  | Express instrumentation | `@opentelemetry/instrumentation-express` |
166
166
  | HTTP instrumentation | `@opentelemetry/instrumentation-http` |
167
- | SDK shutdown hook | Graceful on `OnModuleDestroy` |
167
+ | SDK shutdown hook | Graceful on `OnModuleDestroy` (5-second timeout) |
168
+ | SDK init guard | `OtelSdkHolder` write-once — prevents double-init |
169
+ | Metric instruments | Eager init via `MetricsService.onModuleInit()` |
168
170
 
169
171
  ---
170
172