@wildo-ai/platform-infra-providers 1.1.2

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 (62) hide show
  1. package/LICENSE +34 -0
  2. package/dist/esm/aws-s3/aws-s3.infra.module.d.ts +63 -0
  3. package/dist/esm/aws-s3/aws-s3.infra.module.d.ts.map +1 -0
  4. package/dist/esm/aws-s3/aws-s3.infra.module.js +110 -0
  5. package/dist/esm/aws-s3/aws-s3.infra.module.js.map +1 -0
  6. package/dist/esm/clamav-self/clamav-self.infra.module.d.ts +30 -0
  7. package/dist/esm/clamav-self/clamav-self.infra.module.d.ts.map +1 -0
  8. package/dist/esm/clamav-self/clamav-self.infra.module.js +61 -0
  9. package/dist/esm/clamav-self/clamav-self.infra.module.js.map +1 -0
  10. package/dist/esm/gotenberg-self/gotenberg-self.infra.module.d.ts +26 -0
  11. package/dist/esm/gotenberg-self/gotenberg-self.infra.module.d.ts.map +1 -0
  12. package/dist/esm/gotenberg-self/gotenberg-self.infra.module.js +54 -0
  13. package/dist/esm/gotenberg-self/gotenberg-self.infra.module.js.map +1 -0
  14. package/dist/esm/index.d.ts +88 -0
  15. package/dist/esm/index.d.ts.map +1 -0
  16. package/dist/esm/index.js +125 -0
  17. package/dist/esm/index.js.map +1 -0
  18. package/dist/esm/minio-self/minio-self.infra.module.d.ts +64 -0
  19. package/dist/esm/minio-self/minio-self.infra.module.d.ts.map +1 -0
  20. package/dist/esm/minio-self/minio-self.infra.module.js +105 -0
  21. package/dist/esm/minio-self/minio-self.infra.module.js.map +1 -0
  22. package/dist/esm/mongodb-atlas/mongodb-atlas.infra.module.d.ts +52 -0
  23. package/dist/esm/mongodb-atlas/mongodb-atlas.infra.module.d.ts.map +1 -0
  24. package/dist/esm/mongodb-atlas/mongodb-atlas.infra.module.js +201 -0
  25. package/dist/esm/mongodb-atlas/mongodb-atlas.infra.module.js.map +1 -0
  26. package/dist/esm/mongodb-self/mongodb-self.infra.module.d.ts +81 -0
  27. package/dist/esm/mongodb-self/mongodb-self.infra.module.d.ts.map +1 -0
  28. package/dist/esm/mongodb-self/mongodb-self.infra.module.js +311 -0
  29. package/dist/esm/mongodb-self/mongodb-self.infra.module.js.map +1 -0
  30. package/dist/esm/postgres-self/postgres-self.infra.module.d.ts +70 -0
  31. package/dist/esm/postgres-self/postgres-self.infra.module.d.ts.map +1 -0
  32. package/dist/esm/postgres-self/postgres-self.infra.module.js +328 -0
  33. package/dist/esm/postgres-self/postgres-self.infra.module.js.map +1 -0
  34. package/dist/esm/rabbitmq-self/rabbitmq-self.infra.module.d.ts +88 -0
  35. package/dist/esm/rabbitmq-self/rabbitmq-self.infra.module.d.ts.map +1 -0
  36. package/dist/esm/rabbitmq-self/rabbitmq-self.infra.module.js +473 -0
  37. package/dist/esm/rabbitmq-self/rabbitmq-self.infra.module.js.map +1 -0
  38. package/dist/esm/redis-self/redis-self.infra.module.d.ts +89 -0
  39. package/dist/esm/redis-self/redis-self.infra.module.d.ts.map +1 -0
  40. package/dist/esm/redis-self/redis-self.infra.module.js +331 -0
  41. package/dist/esm/redis-self/redis-self.infra.module.js.map +1 -0
  42. package/dist/tsconfig.build.tsbuildinfo +1 -0
  43. package/package.json +52 -0
  44. package/src/aws-s3/__tests__/aws-s3.infra.module.test.ts +67 -0
  45. package/src/aws-s3/aws-s3.infra.module.ts +120 -0
  46. package/src/clamav-self/__tests__/clamav-self.infra.module.test.ts +65 -0
  47. package/src/clamav-self/clamav-self.infra.module.ts +72 -0
  48. package/src/gotenberg-self/__tests__/gotenberg-self.infra.module.test.ts +65 -0
  49. package/src/gotenberg-self/gotenberg-self.infra.module.ts +65 -0
  50. package/src/index.ts +133 -0
  51. package/src/minio-self/__tests__/minio-self.infra.module.test.ts +70 -0
  52. package/src/minio-self/minio-self.infra.module.ts +116 -0
  53. package/src/mongodb-atlas/__tests__/mongodb-atlas.infra.module.test.ts +198 -0
  54. package/src/mongodb-atlas/mongodb-atlas.infra.module.ts +236 -0
  55. package/src/mongodb-self/__tests__/mongodb-self.infra.module.test.ts +419 -0
  56. package/src/mongodb-self/mongodb-self.infra.module.ts +384 -0
  57. package/src/postgres-self/__tests__/postgres-self.infra.module.test.ts +344 -0
  58. package/src/postgres-self/postgres-self.infra.module.ts +377 -0
  59. package/src/rabbitmq-self/__tests__/rabbitmq-self.infra.module.test.ts +499 -0
  60. package/src/rabbitmq-self/rabbitmq-self.infra.module.ts +531 -0
  61. package/src/redis-self/__tests__/redis-self.infra.module.test.ts +341 -0
  62. package/src/redis-self/redis-self.infra.module.ts +372 -0
package/LICENSE ADDED
@@ -0,0 +1,34 @@
1
+ Copyright (c) 2026 P2C Consulting, s.à r.l.-S
2
+ RCS Luxembourg B307591
3
+ 6C, Porte de France, L-4360 Esch-sur-Alzette, Luxembourg
4
+
5
+ All rights reserved.
6
+
7
+ This software and its accompanying materials (the "Software") are the
8
+ confidential and proprietary property of P2C Consulting, s.à r.l.-S (the
9
+ "Licensor"). The Software is made available for viewing only. No licence,
10
+ right, or permission of any kind is granted by its publication or by its
11
+ availability on any package registry or source repository.
12
+
13
+ Without the Licensor's prior written permission, you may not use, copy,
14
+ reproduce, modify, adapt, translate, merge, publish, distribute, sublicense,
15
+ sell, host, or create derivative works of the Software, in whole or in part,
16
+ nor use it to provide a service to any third party.
17
+
18
+ Publication of the Software in any public registry is for distribution to
19
+ authorised recipients and for technical evaluation of its packaging only. It
20
+ does not place the Software in the public domain, does not constitute an open
21
+ source release, and does not waive any right of the Licensor.
22
+
23
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
24
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
25
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
26
+ LICENSOR BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
27
+ ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
28
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
29
+
30
+ Third-party components distributed with the Software remain governed by their
31
+ own licences.
32
+
33
+ Contact: P2C Consulting, s.à r.l.-S, 6C, Porte de France, L-4360
34
+ Esch-sur-Alzette, Luxembourg.
@@ -0,0 +1,63 @@
1
+ /**
2
+ * `AwsS3InfraProviderModule` — seventh concrete `InfraProviderModule`
3
+ * (Slice 5.1 of `infra-provider-planner.md`).
4
+ *
5
+ * Implements the `AWS_S3` `InfraProvider`. Shares the one-bucket,
6
+ * prefix-namespaced object layout of `MinioSelfInfraProviderModule` —
7
+ * the only differences are (a) no compose / K8s contribution (S3 is
8
+ * managed), and (b) the bucket endpoint is the regional AWS hostname
9
+ * instead of the in-cluster `minio` service.
10
+ *
11
+ * ## ⚠️ NOT USABLE TODAY — selecting this provider leaves apps with no
12
+ * storage credential (2026-08-10)
13
+ *
14
+ * The application-tier `STORAGE_ACCESS_KEY` / `STORAGE_SECRET_KEY` env
15
+ * vars were removed **for every provider**: they were the object store's
16
+ * ROOT pair, handed to every app, minion and worker. Applications now
17
+ * obtain short-lived, prefix-confined credentials from apps-manager.
18
+ *
19
+ * That replacement is implemented for **MinIO only**. apps-manager's
20
+ * `ObjectStorageStsBrokerService` speaks MinIO's STS `AssumeRole` with an
21
+ * inline session policy; AWS STS requires a role ARN the broker does not
22
+ * supply, so an `AWS_S3` deployment would fail at storage initialisation
23
+ * with no credential and no path to one.
24
+ *
25
+ * No environment selects this provider today (every example uses
26
+ * `BackingServiceSource.SELF` → MinIO), which is why this is recorded as
27
+ * a gap rather than an outage. But it IS reachable — `s3: { source:
28
+ * MANAGED }` or `provider: 'aws'` resolves here — so **do not select
29
+ * `AWS_S3` until the AWS STS path exists.** Tracked in
30
+ * `.claude/plans/object-storage-root-credential-distribution.md`.
31
+ *
32
+ * The module still reuses the `STORAGE_*` env contract for the
33
+ * NON-secret values (endpoint, region, bucket, provider); it is only the
34
+ * credential half that is gone.
35
+ *
36
+ * **Why this module exists despite "no compose / no mint"**: it
37
+ * gives the lockfile a stable digest entry (so a switch from
38
+ * `minio-self` to `aws-s3` shows up as a `wildo lock check` drift)
39
+ * AND it formalizes which env vars the operator must set for AWS
40
+ * (`STORAGE_REGION` is mandatory; `STORAGE_ENDPOINT` is optional —
41
+ * defaults to the AWS regional endpoint when unset).
42
+ *
43
+ * **No mint methods here** — and the reason is no longer the one this
44
+ * block used to give. It said per-app credentials were out of scope
45
+ * "because the engine adapter uses a single shared SDK client", which
46
+ * stopped being true when the adapter moved to a credential provider that
47
+ * rebuilds its client whenever the credential changes. Per-application
48
+ * isolation exists; what is missing for AWS is only the broker's ability
49
+ * to speak AWS STS.
50
+ *
51
+ * Nor should the missing piece be per-app IAM users or roles, which is
52
+ * what this block previously anticipated. The MinIO path deliberately
53
+ * rejected long-lived per-principal accounts in favour of `AssumeRole`
54
+ * with an inline session policy — nothing long-lived exists to leak, and
55
+ * credential-rotation safety dissolves instead of needing a design. The
56
+ * AWS equivalent is the same shape: `AssumeRole` against a role ARN the
57
+ * operator supplies, with a session policy confining the principal to
58
+ * `applications/<applicationId>/`. That role ARN is the one input the
59
+ * broker does not have today, and is the whole of the gap.
60
+ */
61
+ import { InfraProviderModule } from '@wildo-ai/platform-config-lib';
62
+ export declare const AwsS3InfraProviderModule: InfraProviderModule;
63
+ //# sourceMappingURL=aws-s3.infra.module.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aws-s3.infra.module.d.ts","sourceRoot":"","sources":["../../../../src/aws-s3/aws-s3.infra.module.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2DG;AAEH,OAAO,EAIL,mBAAmB,EAEpB,MAAM,+BAA+B,CAAC;AAEvC,eAAO,MAAM,wBAAwB,EAAE,mBAkDtC,CAAC"}
@@ -0,0 +1,110 @@
1
+ /**
2
+ * `AwsS3InfraProviderModule` — seventh concrete `InfraProviderModule`
3
+ * (Slice 5.1 of `infra-provider-planner.md`).
4
+ *
5
+ * Implements the `AWS_S3` `InfraProvider`. Shares the one-bucket,
6
+ * prefix-namespaced object layout of `MinioSelfInfraProviderModule` —
7
+ * the only differences are (a) no compose / K8s contribution (S3 is
8
+ * managed), and (b) the bucket endpoint is the regional AWS hostname
9
+ * instead of the in-cluster `minio` service.
10
+ *
11
+ * ## ⚠️ NOT USABLE TODAY — selecting this provider leaves apps with no
12
+ * storage credential (2026-08-10)
13
+ *
14
+ * The application-tier `STORAGE_ACCESS_KEY` / `STORAGE_SECRET_KEY` env
15
+ * vars were removed **for every provider**: they were the object store's
16
+ * ROOT pair, handed to every app, minion and worker. Applications now
17
+ * obtain short-lived, prefix-confined credentials from apps-manager.
18
+ *
19
+ * That replacement is implemented for **MinIO only**. apps-manager's
20
+ * `ObjectStorageStsBrokerService` speaks MinIO's STS `AssumeRole` with an
21
+ * inline session policy; AWS STS requires a role ARN the broker does not
22
+ * supply, so an `AWS_S3` deployment would fail at storage initialisation
23
+ * with no credential and no path to one.
24
+ *
25
+ * No environment selects this provider today (every example uses
26
+ * `BackingServiceSource.SELF` → MinIO), which is why this is recorded as
27
+ * a gap rather than an outage. But it IS reachable — `s3: { source:
28
+ * MANAGED }` or `provider: 'aws'` resolves here — so **do not select
29
+ * `AWS_S3` until the AWS STS path exists.** Tracked in
30
+ * `.claude/plans/object-storage-root-credential-distribution.md`.
31
+ *
32
+ * The module still reuses the `STORAGE_*` env contract for the
33
+ * NON-secret values (endpoint, region, bucket, provider); it is only the
34
+ * credential half that is gone.
35
+ *
36
+ * **Why this module exists despite "no compose / no mint"**: it
37
+ * gives the lockfile a stable digest entry (so a switch from
38
+ * `minio-self` to `aws-s3` shows up as a `wildo lock check` drift)
39
+ * AND it formalizes which env vars the operator must set for AWS
40
+ * (`STORAGE_REGION` is mandatory; `STORAGE_ENDPOINT` is optional —
41
+ * defaults to the AWS regional endpoint when unset).
42
+ *
43
+ * **No mint methods here** — and the reason is no longer the one this
44
+ * block used to give. It said per-app credentials were out of scope
45
+ * "because the engine adapter uses a single shared SDK client", which
46
+ * stopped being true when the adapter moved to a credential provider that
47
+ * rebuilds its client whenever the credential changes. Per-application
48
+ * isolation exists; what is missing for AWS is only the broker's ability
49
+ * to speak AWS STS.
50
+ *
51
+ * Nor should the missing piece be per-app IAM users or roles, which is
52
+ * what this block previously anticipated. The MinIO path deliberately
53
+ * rejected long-lived per-principal accounts in favour of `AssumeRole`
54
+ * with an inline session policy — nothing long-lived exists to leak, and
55
+ * credential-rotation safety dissolves instead of needing a design. The
56
+ * AWS equivalent is the same shape: `AssumeRole` against a role ARN the
57
+ * operator supplies, with a session policy confining the principal to
58
+ * `applications/<applicationId>/`. That role ARN is the one input the
59
+ * broker does not have today, and is the whole of the gap.
60
+ */
61
+ import { InfraCapability, InfraPlatformAdminConsumer, InfraProvider, } from '@wildo-ai/platform-config-lib';
62
+ export const AwsS3InfraProviderModule = {
63
+ provider: InfraProvider.AWS_S3,
64
+ supportedCapabilities: [InfraCapability.OBJECT_STORAGE],
65
+ /**
66
+ * Shared bucket, shared access key — no per-app credential is minted, so there is nothing
67
+ * per-principal to confine. Confinement for object storage is done by STS session policy at
68
+ * request time, not by a secret in the application blob.
69
+ */
70
+ perPrincipalSecretBlobPaths: [],
71
+ plan() {
72
+ return {
73
+ // No compose service — S3 is fully managed.
74
+ // No K8s manifest — same reason.
75
+ platformAdmin: {
76
+ envVars: {
77
+ STORAGE_PROVIDER: 's3',
78
+ // Endpoint and port have AWS defaults; operator may override
79
+ // for region-specific or VPC-endpoint topologies via the
80
+ // env's authored `backingServices.s3` config.
81
+ STORAGE_USE_SSL: 'true',
82
+ },
83
+ secretEnvVars: [
84
+ 'STORAGE_ACCESS_KEY',
85
+ 'STORAGE_SECRET_KEY',
86
+ // Region is sensitive-ish (deployment topology) and is
87
+ // delivered via the secret env channel for symmetry with
88
+ // the access keys, even though it's not strictly secret.
89
+ // The legacy treatment was env-var, not secret-env-var; if
90
+ // operators object, this can flip to `envVars` later
91
+ // without breaking the contract.
92
+ 'STORAGE_REGION',
93
+ ],
94
+ consumers: [
95
+ InfraPlatformAdminConsumer.APPS_MANAGER,
96
+ InfraPlatformAdminConsumer.COMPANION,
97
+ ],
98
+ },
99
+ // Same shared bucket as MinIO_Self. Apps receive the NON-secret
100
+ // `STORAGE_*` values via the bootstrap env contract; the credential
101
+ // half is no longer emitted for any provider — see the ⚠️ block in
102
+ // this module's JSDoc for why that makes AWS_S3 currently unusable.
103
+ };
104
+ },
105
+ // No `mintAppCredentials` / `revokeAppCredentials` — not because the model
106
+ // is shared-bucket (it is, but that is not the reason), but because
107
+ // per-application isolation is delivered by BROKERED STS SESSIONS rather than
108
+ // by minted long-lived accounts. See this module's JSDoc.
109
+ };
110
+ //# sourceMappingURL=aws-s3.infra.module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aws-s3.infra.module.js","sourceRoot":"","sources":["../../../../src/aws-s3/aws-s3.infra.module.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2DG;AAEH,OAAO,EACL,eAAe,EACf,0BAA0B,EAC1B,aAAa,GAGd,MAAM,+BAA+B,CAAC;AAEvC,MAAM,CAAC,MAAM,wBAAwB,GAAwB;IAC3D,QAAQ,EAAE,aAAa,CAAC,MAAM;IAC9B,qBAAqB,EAAE,CAAC,eAAe,CAAC,cAAc,CAAC;IAEvD;;;;OAIG;IACH,2BAA2B,EAAE,EAAE;IAE/B,IAAI;QACF,OAAO;YACL,4CAA4C;YAC5C,iCAAiC;YACjC,aAAa,EAAE;gBACb,OAAO,EAAE;oBACP,gBAAgB,EAAE,IAAI;oBACtB,6DAA6D;oBAC7D,yDAAyD;oBACzD,8CAA8C;oBAC9C,eAAe,EAAE,MAAM;iBACxB;gBACD,aAAa,EAAE;oBACb,oBAAoB;oBACpB,oBAAoB;oBACpB,uDAAuD;oBACvD,yDAAyD;oBACzD,yDAAyD;oBACzD,2DAA2D;oBAC3D,qDAAqD;oBACrD,iCAAiC;oBACjC,gBAAgB;iBACjB;gBACD,SAAS,EAAE;oBACT,0BAA0B,CAAC,YAAY;oBACvC,0BAA0B,CAAC,SAAS;iBACrC;aACF;YACD,gEAAgE;YAChE,oEAAoE;YACpE,mEAAmE;YACnE,oEAAoE;SACrE,CAAC;IACJ,CAAC;IAED,2EAA2E;IAC3E,oEAAoE;IACpE,8EAA8E;IAC9E,0DAA0D;CAC3D,CAAC","sourcesContent":["/**\n * `AwsS3InfraProviderModule` — seventh concrete `InfraProviderModule`\n * (Slice 5.1 of `infra-provider-planner.md`).\n *\n * Implements the `AWS_S3` `InfraProvider`. Shares the one-bucket,\n * prefix-namespaced object layout of `MinioSelfInfraProviderModule` —\n * the only differences are (a) no compose / K8s contribution (S3 is\n * managed), and (b) the bucket endpoint is the regional AWS hostname\n * instead of the in-cluster `minio` service.\n *\n * ## ⚠️ NOT USABLE TODAY — selecting this provider leaves apps with no\n * storage credential (2026-08-10)\n *\n * The application-tier `STORAGE_ACCESS_KEY` / `STORAGE_SECRET_KEY` env\n * vars were removed **for every provider**: they were the object store's\n * ROOT pair, handed to every app, minion and worker. Applications now\n * obtain short-lived, prefix-confined credentials from apps-manager.\n *\n * That replacement is implemented for **MinIO only**. apps-manager's\n * `ObjectStorageStsBrokerService` speaks MinIO's STS `AssumeRole` with an\n * inline session policy; AWS STS requires a role ARN the broker does not\n * supply, so an `AWS_S3` deployment would fail at storage initialisation\n * with no credential and no path to one.\n *\n * No environment selects this provider today (every example uses\n * `BackingServiceSource.SELF` → MinIO), which is why this is recorded as\n * a gap rather than an outage. But it IS reachable — `s3: { source:\n * MANAGED }` or `provider: 'aws'` resolves here — so **do not select\n * `AWS_S3` until the AWS STS path exists.** Tracked in\n * `.claude/plans/object-storage-root-credential-distribution.md`.\n *\n * The module still reuses the `STORAGE_*` env contract for the\n * NON-secret values (endpoint, region, bucket, provider); it is only the\n * credential half that is gone.\n *\n * **Why this module exists despite \"no compose / no mint\"**: it\n * gives the lockfile a stable digest entry (so a switch from\n * `minio-self` to `aws-s3` shows up as a `wildo lock check` drift)\n * AND it formalizes which env vars the operator must set for AWS\n * (`STORAGE_REGION` is mandatory; `STORAGE_ENDPOINT` is optional —\n * defaults to the AWS regional endpoint when unset).\n *\n * **No mint methods here** — and the reason is no longer the one this\n * block used to give. It said per-app credentials were out of scope\n * \"because the engine adapter uses a single shared SDK client\", which\n * stopped being true when the adapter moved to a credential provider that\n * rebuilds its client whenever the credential changes. Per-application\n * isolation exists; what is missing for AWS is only the broker's ability\n * to speak AWS STS.\n *\n * Nor should the missing piece be per-app IAM users or roles, which is\n * what this block previously anticipated. The MinIO path deliberately\n * rejected long-lived per-principal accounts in favour of `AssumeRole`\n * with an inline session policy — nothing long-lived exists to leak, and\n * credential-rotation safety dissolves instead of needing a design. The\n * AWS equivalent is the same shape: `AssumeRole` against a role ARN the\n * operator supplies, with a session policy confining the principal to\n * `applications/<applicationId>/`. That role ARN is the one input the\n * broker does not have today, and is the whole of the gap.\n */\n\nimport {\n InfraCapability,\n InfraPlatformAdminConsumer,\n InfraProvider,\n InfraProviderModule,\n InfraProviderPlanContribution,\n} from '@wildo-ai/platform-config-lib';\n\nexport const AwsS3InfraProviderModule: InfraProviderModule = {\n provider: InfraProvider.AWS_S3,\n supportedCapabilities: [InfraCapability.OBJECT_STORAGE],\n\n /**\n * Shared bucket, shared access key — no per-app credential is minted, so there is nothing\n * per-principal to confine. Confinement for object storage is done by STS session policy at\n * request time, not by a secret in the application blob.\n */\n perPrincipalSecretBlobPaths: [],\n\n plan(): InfraProviderPlanContribution {\n return {\n // No compose service — S3 is fully managed.\n // No K8s manifest — same reason.\n platformAdmin: {\n envVars: {\n STORAGE_PROVIDER: 's3',\n // Endpoint and port have AWS defaults; operator may override\n // for region-specific or VPC-endpoint topologies via the\n // env's authored `backingServices.s3` config.\n STORAGE_USE_SSL: 'true',\n },\n secretEnvVars: [\n 'STORAGE_ACCESS_KEY',\n 'STORAGE_SECRET_KEY',\n // Region is sensitive-ish (deployment topology) and is\n // delivered via the secret env channel for symmetry with\n // the access keys, even though it's not strictly secret.\n // The legacy treatment was env-var, not secret-env-var; if\n // operators object, this can flip to `envVars` later\n // without breaking the contract.\n 'STORAGE_REGION',\n ],\n consumers: [\n InfraPlatformAdminConsumer.APPS_MANAGER,\n InfraPlatformAdminConsumer.COMPANION,\n ],\n },\n // Same shared bucket as MinIO_Self. Apps receive the NON-secret\n // `STORAGE_*` values via the bootstrap env contract; the credential\n // half is no longer emitted for any provider — see the ⚠️ block in\n // this module's JSDoc for why that makes AWS_S3 currently unusable.\n };\n },\n\n // No `mintAppCredentials` / `revokeAppCredentials` — not because the model\n // is shared-bucket (it is, but that is not the reason), but because\n // per-application isolation is delivered by BROKERED STS SESSIONS rather than\n // by minted long-lived accounts. See this module's JSDoc.\n};\n"]}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * `ClamavSelfInfraProviderModule` — eighth concrete `InfraProviderModule`
3
+ * (Slice 5.2 of `infra-provider-planner.md`).
4
+ *
5
+ * Implements the `CLAMAV_SELF` `InfraProvider`. **Stateless**: ClamAV
6
+ * is a network virus-scanning service with no auth and no per-tenant
7
+ * state. Apps connect to the shared host:port and submit files for
8
+ * scanning over the ClamAV protocol; nothing is persisted, nothing
9
+ * is per-app. The module's only job is to declare the resource +
10
+ * env vars in `plan()`; there are no `mintAppCredentials`,
11
+ * `revokeAppCredentials`, or `mintPlatformServiceCredentials`
12
+ * methods because there are no credentials.
13
+ *
14
+ * **Apps consume**: `CLAMAV_HOST`, `CLAMAV_PORT` env vars (delivered
15
+ * via the bootstrap env contract). The engine's antivirus-scanning
16
+ * adapter (`saas-backend-lib/.../antivirus/...`) opens a TCP
17
+ * connection per scan request.
18
+ *
19
+ * **Why declare it as a module at all (vs. inline compose service)?**
20
+ * The module gives the lockfile a stable `planContributionDigest`
21
+ * for `ANTIVIRUS_SCANNING` so `wildo lock check` catches drift in
22
+ * the ClamAV resource shape (port change, env-var rename, K8s
23
+ * manifest move). Without a module, the digest would be the
24
+ * authored-entry digest (which is empty — ClamAV has no configurable
25
+ * `BackingService` shape today, just the `BackingServiceKind`
26
+ * enum value).
27
+ */
28
+ import { InfraProviderModule } from '@wildo-ai/platform-config-lib';
29
+ export declare const ClamavSelfInfraProviderModule: InfraProviderModule;
30
+ //# sourceMappingURL=clamav-self.infra.module.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clamav-self.infra.module.d.ts","sourceRoot":"","sources":["../../../../src/clamav-self/clamav-self.infra.module.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,OAAO,EAIL,mBAAmB,EAEpB,MAAM,+BAA+B,CAAC;AAIvC,eAAO,MAAM,6BAA6B,EAAE,mBAiC3C,CAAC"}
@@ -0,0 +1,61 @@
1
+ /**
2
+ * `ClamavSelfInfraProviderModule` — eighth concrete `InfraProviderModule`
3
+ * (Slice 5.2 of `infra-provider-planner.md`).
4
+ *
5
+ * Implements the `CLAMAV_SELF` `InfraProvider`. **Stateless**: ClamAV
6
+ * is a network virus-scanning service with no auth and no per-tenant
7
+ * state. Apps connect to the shared host:port and submit files for
8
+ * scanning over the ClamAV protocol; nothing is persisted, nothing
9
+ * is per-app. The module's only job is to declare the resource +
10
+ * env vars in `plan()`; there are no `mintAppCredentials`,
11
+ * `revokeAppCredentials`, or `mintPlatformServiceCredentials`
12
+ * methods because there are no credentials.
13
+ *
14
+ * **Apps consume**: `CLAMAV_HOST`, `CLAMAV_PORT` env vars (delivered
15
+ * via the bootstrap env contract). The engine's antivirus-scanning
16
+ * adapter (`saas-backend-lib/.../antivirus/...`) opens a TCP
17
+ * connection per scan request.
18
+ *
19
+ * **Why declare it as a module at all (vs. inline compose service)?**
20
+ * The module gives the lockfile a stable `planContributionDigest`
21
+ * for `ANTIVIRUS_SCANNING` so `wildo lock check` catches drift in
22
+ * the ClamAV resource shape (port change, env-var rename, K8s
23
+ * manifest move). Without a module, the digest would be the
24
+ * authored-entry digest (which is empty — ClamAV has no configurable
25
+ * `BackingService` shape today, just the `BackingServiceKind`
26
+ * enum value).
27
+ */
28
+ import { InfraCapability, InfraPlatformAdminConsumer, InfraProvider, } from '@wildo-ai/platform-config-lib';
29
+ const DEFAULT_CLAMAV_PORT = 3310;
30
+ export const ClamavSelfInfraProviderModule = {
31
+ provider: InfraProvider.CLAMAV_SELF,
32
+ supportedCapabilities: [InfraCapability.ANTIVIRUS_SCANNING],
33
+ /**
34
+ * Stateless infra with no authentication and no per-app state — `plan()` only.
35
+ */
36
+ perPrincipalSecretBlobPaths: [],
37
+ plan() {
38
+ return {
39
+ dockerComposeServices: ['clamav'],
40
+ k8sResources: ['templates/infra/k8s/internal/clamav/deployment.yaml.hbs'],
41
+ platformAdmin: {
42
+ envVars: {
43
+ CLAMAV_HOST: 'clamav',
44
+ CLAMAV_PORT: String(DEFAULT_CLAMAV_PORT),
45
+ },
46
+ // No secret env vars — ClamAV has no auth.
47
+ // Audience-1 declared so the planner emits the env vars to
48
+ // both apps-manager and companion (companion runs scans
49
+ // locally during dev for parity with prod behavior).
50
+ consumers: [
51
+ InfraPlatformAdminConsumer.APPS_MANAGER,
52
+ InfraPlatformAdminConsumer.COMPANION,
53
+ ],
54
+ },
55
+ // No `appRuntime` blob paths — apps connect via the same
56
+ // `CLAMAV_HOST:CLAMAV_PORT` regardless of app identity.
57
+ };
58
+ },
59
+ // No mint methods — ClamAV is stateless.
60
+ };
61
+ //# sourceMappingURL=clamav-self.infra.module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clamav-self.infra.module.js","sourceRoot":"","sources":["../../../../src/clamav-self/clamav-self.infra.module.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,OAAO,EACL,eAAe,EACf,0BAA0B,EAC1B,aAAa,GAGd,MAAM,+BAA+B,CAAC;AAEvC,MAAM,mBAAmB,GAAG,IAAI,CAAC;AAEjC,MAAM,CAAC,MAAM,6BAA6B,GAAwB;IAChE,QAAQ,EAAE,aAAa,CAAC,WAAW;IACnC,qBAAqB,EAAE,CAAC,eAAe,CAAC,kBAAkB,CAAC;IAE3D;;OAEG;IACH,2BAA2B,EAAE,EAAE;IAE/B,IAAI;QACF,OAAO;YACL,qBAAqB,EAAE,CAAC,QAAQ,CAAC;YACjC,YAAY,EAAE,CAAC,yDAAyD,CAAC;YACzE,aAAa,EAAE;gBACb,OAAO,EAAE;oBACP,WAAW,EAAE,QAAQ;oBACrB,WAAW,EAAE,MAAM,CAAC,mBAAmB,CAAC;iBACzC;gBACD,2CAA2C;gBAC3C,2DAA2D;gBAC3D,wDAAwD;gBACxD,qDAAqD;gBACrD,SAAS,EAAE;oBACT,0BAA0B,CAAC,YAAY;oBACvC,0BAA0B,CAAC,SAAS;iBACrC;aACF;YACD,yDAAyD;YACzD,wDAAwD;SACzD,CAAC;IACJ,CAAC;IAED,yCAAyC;CAC1C,CAAC","sourcesContent":["/**\n * `ClamavSelfInfraProviderModule` — eighth concrete `InfraProviderModule`\n * (Slice 5.2 of `infra-provider-planner.md`).\n *\n * Implements the `CLAMAV_SELF` `InfraProvider`. **Stateless**: ClamAV\n * is a network virus-scanning service with no auth and no per-tenant\n * state. Apps connect to the shared host:port and submit files for\n * scanning over the ClamAV protocol; nothing is persisted, nothing\n * is per-app. The module's only job is to declare the resource +\n * env vars in `plan()`; there are no `mintAppCredentials`,\n * `revokeAppCredentials`, or `mintPlatformServiceCredentials`\n * methods because there are no credentials.\n *\n * **Apps consume**: `CLAMAV_HOST`, `CLAMAV_PORT` env vars (delivered\n * via the bootstrap env contract). The engine's antivirus-scanning\n * adapter (`saas-backend-lib/.../antivirus/...`) opens a TCP\n * connection per scan request.\n *\n * **Why declare it as a module at all (vs. inline compose service)?**\n * The module gives the lockfile a stable `planContributionDigest`\n * for `ANTIVIRUS_SCANNING` so `wildo lock check` catches drift in\n * the ClamAV resource shape (port change, env-var rename, K8s\n * manifest move). Without a module, the digest would be the\n * authored-entry digest (which is empty — ClamAV has no configurable\n * `BackingService` shape today, just the `BackingServiceKind`\n * enum value).\n */\n\nimport {\n InfraCapability,\n InfraPlatformAdminConsumer,\n InfraProvider,\n InfraProviderModule,\n InfraProviderPlanContribution,\n} from '@wildo-ai/platform-config-lib';\n\nconst DEFAULT_CLAMAV_PORT = 3310;\n\nexport const ClamavSelfInfraProviderModule: InfraProviderModule = {\n provider: InfraProvider.CLAMAV_SELF,\n supportedCapabilities: [InfraCapability.ANTIVIRUS_SCANNING],\n\n /**\n * Stateless infra with no authentication and no per-app state — `plan()` only.\n */\n perPrincipalSecretBlobPaths: [],\n\n plan(): InfraProviderPlanContribution {\n return {\n dockerComposeServices: ['clamav'],\n k8sResources: ['templates/infra/k8s/internal/clamav/deployment.yaml.hbs'],\n platformAdmin: {\n envVars: {\n CLAMAV_HOST: 'clamav',\n CLAMAV_PORT: String(DEFAULT_CLAMAV_PORT),\n },\n // No secret env vars — ClamAV has no auth.\n // Audience-1 declared so the planner emits the env vars to\n // both apps-manager and companion (companion runs scans\n // locally during dev for parity with prod behavior).\n consumers: [\n InfraPlatformAdminConsumer.APPS_MANAGER,\n InfraPlatformAdminConsumer.COMPANION,\n ],\n },\n // No `appRuntime` blob paths — apps connect via the same\n // `CLAMAV_HOST:CLAMAV_PORT` regardless of app identity.\n };\n },\n\n // No mint methods — ClamAV is stateless.\n};\n"]}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * `GotenbergSelfInfraProviderModule` — ninth concrete
3
+ * `InfraProviderModule` (Slice 5.3 of `infra-provider-planner.md`).
4
+ *
5
+ * Implements the `GOTENBERG_SELF` `InfraProvider`. **Stateless**:
6
+ * Gotenberg is a network HTML-to-PDF rendering service with no auth
7
+ * and no per-tenant state. Apps POST HTML/Office docs and receive
8
+ * rendered PDFs; nothing is persisted server-side. Same shape as
9
+ * `ClamavSelfInfraProviderModule` — `plan()` only, no mint methods.
10
+ *
11
+ * **Apps consume**: `GOTENBERG_HOST`, `GOTENBERG_PORT` env vars (TBD
12
+ * naming — current engine adapter reads these from
13
+ * `BackingServicesEnvConfig` via the catalog at
14
+ * `wildo-cli/.../service-catalog.schemas.ts:78`). The plan emits
15
+ * the env vars under those names.
16
+ *
17
+ * **Two ports** (Slice 5.3 design note): Gotenberg exposes both a
18
+ * public port (3000 by default) for HTTP API access and an internal
19
+ * port (3001) for health-check/metrics. The CLI's docker-compose
20
+ * generator already wires both. The module's `plan()` only emits
21
+ * the public port — the internal port is a docker-compose-only
22
+ * concern and isn't part of the customer-app env-var surface.
23
+ */
24
+ import { InfraProviderModule } from '@wildo-ai/platform-config-lib';
25
+ export declare const GotenbergSelfInfraProviderModule: InfraProviderModule;
26
+ //# sourceMappingURL=gotenberg-self.infra.module.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gotenberg-self.infra.module.d.ts","sourceRoot":"","sources":["../../../../src/gotenberg-self/gotenberg-self.infra.module.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,EAIL,mBAAmB,EAEpB,MAAM,+BAA+B,CAAC;AAIvC,eAAO,MAAM,gCAAgC,EAAE,mBA8B9C,CAAC"}
@@ -0,0 +1,54 @@
1
+ /**
2
+ * `GotenbergSelfInfraProviderModule` — ninth concrete
3
+ * `InfraProviderModule` (Slice 5.3 of `infra-provider-planner.md`).
4
+ *
5
+ * Implements the `GOTENBERG_SELF` `InfraProvider`. **Stateless**:
6
+ * Gotenberg is a network HTML-to-PDF rendering service with no auth
7
+ * and no per-tenant state. Apps POST HTML/Office docs and receive
8
+ * rendered PDFs; nothing is persisted server-side. Same shape as
9
+ * `ClamavSelfInfraProviderModule` — `plan()` only, no mint methods.
10
+ *
11
+ * **Apps consume**: `GOTENBERG_HOST`, `GOTENBERG_PORT` env vars (TBD
12
+ * naming — current engine adapter reads these from
13
+ * `BackingServicesEnvConfig` via the catalog at
14
+ * `wildo-cli/.../service-catalog.schemas.ts:78`). The plan emits
15
+ * the env vars under those names.
16
+ *
17
+ * **Two ports** (Slice 5.3 design note): Gotenberg exposes both a
18
+ * public port (3000 by default) for HTTP API access and an internal
19
+ * port (3001) for health-check/metrics. The CLI's docker-compose
20
+ * generator already wires both. The module's `plan()` only emits
21
+ * the public port — the internal port is a docker-compose-only
22
+ * concern and isn't part of the customer-app env-var surface.
23
+ */
24
+ import { InfraCapability, InfraPlatformAdminConsumer, InfraProvider, } from '@wildo-ai/platform-config-lib';
25
+ const DEFAULT_GOTENBERG_PORT = 3000;
26
+ export const GotenbergSelfInfraProviderModule = {
27
+ provider: InfraProvider.GOTENBERG_SELF,
28
+ supportedCapabilities: [InfraCapability.DOCUMENT_RENDERING],
29
+ /**
30
+ * Stateless infra with no authentication and no per-app state — `plan()` only.
31
+ */
32
+ perPrincipalSecretBlobPaths: [],
33
+ plan() {
34
+ return {
35
+ dockerComposeServices: ['gotenberg'],
36
+ k8sResources: ['templates/infra/k8s/internal/gotenberg/deployment.yaml.hbs'],
37
+ platformAdmin: {
38
+ envVars: {
39
+ GOTENBERG_HOST: 'gotenberg',
40
+ GOTENBERG_PORT: String(DEFAULT_GOTENBERG_PORT),
41
+ },
42
+ // No secret env vars — Gotenberg has no auth.
43
+ consumers: [
44
+ InfraPlatformAdminConsumer.APPS_MANAGER,
45
+ InfraPlatformAdminConsumer.COMPANION,
46
+ ],
47
+ },
48
+ // No `appRuntime` blob paths — apps connect via the same
49
+ // `GOTENBERG_HOST:GOTENBERG_PORT` regardless of app identity.
50
+ };
51
+ },
52
+ // No mint methods — Gotenberg is stateless.
53
+ };
54
+ //# sourceMappingURL=gotenberg-self.infra.module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gotenberg-self.infra.module.js","sourceRoot":"","sources":["../../../../src/gotenberg-self/gotenberg-self.infra.module.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,EACL,eAAe,EACf,0BAA0B,EAC1B,aAAa,GAGd,MAAM,+BAA+B,CAAC;AAEvC,MAAM,sBAAsB,GAAG,IAAI,CAAC;AAEpC,MAAM,CAAC,MAAM,gCAAgC,GAAwB;IACnE,QAAQ,EAAE,aAAa,CAAC,cAAc;IACtC,qBAAqB,EAAE,CAAC,eAAe,CAAC,kBAAkB,CAAC;IAE3D;;OAEG;IACH,2BAA2B,EAAE,EAAE;IAE/B,IAAI;QACF,OAAO;YACL,qBAAqB,EAAE,CAAC,WAAW,CAAC;YACpC,YAAY,EAAE,CAAC,4DAA4D,CAAC;YAC5E,aAAa,EAAE;gBACb,OAAO,EAAE;oBACP,cAAc,EAAE,WAAW;oBAC3B,cAAc,EAAE,MAAM,CAAC,sBAAsB,CAAC;iBAC/C;gBACD,8CAA8C;gBAC9C,SAAS,EAAE;oBACT,0BAA0B,CAAC,YAAY;oBACvC,0BAA0B,CAAC,SAAS;iBACrC;aACF;YACD,yDAAyD;YACzD,8DAA8D;SAC/D,CAAC;IACJ,CAAC;IAED,4CAA4C;CAC7C,CAAC","sourcesContent":["/**\n * `GotenbergSelfInfraProviderModule` — ninth concrete\n * `InfraProviderModule` (Slice 5.3 of `infra-provider-planner.md`).\n *\n * Implements the `GOTENBERG_SELF` `InfraProvider`. **Stateless**:\n * Gotenberg is a network HTML-to-PDF rendering service with no auth\n * and no per-tenant state. Apps POST HTML/Office docs and receive\n * rendered PDFs; nothing is persisted server-side. Same shape as\n * `ClamavSelfInfraProviderModule` — `plan()` only, no mint methods.\n *\n * **Apps consume**: `GOTENBERG_HOST`, `GOTENBERG_PORT` env vars (TBD\n * naming — current engine adapter reads these from\n * `BackingServicesEnvConfig` via the catalog at\n * `wildo-cli/.../service-catalog.schemas.ts:78`). The plan emits\n * the env vars under those names.\n *\n * **Two ports** (Slice 5.3 design note): Gotenberg exposes both a\n * public port (3000 by default) for HTTP API access and an internal\n * port (3001) for health-check/metrics. The CLI's docker-compose\n * generator already wires both. The module's `plan()` only emits\n * the public port — the internal port is a docker-compose-only\n * concern and isn't part of the customer-app env-var surface.\n */\n\nimport {\n InfraCapability,\n InfraPlatformAdminConsumer,\n InfraProvider,\n InfraProviderModule,\n InfraProviderPlanContribution,\n} from '@wildo-ai/platform-config-lib';\n\nconst DEFAULT_GOTENBERG_PORT = 3000;\n\nexport const GotenbergSelfInfraProviderModule: InfraProviderModule = {\n provider: InfraProvider.GOTENBERG_SELF,\n supportedCapabilities: [InfraCapability.DOCUMENT_RENDERING],\n\n /**\n * Stateless infra with no authentication and no per-app state — `plan()` only.\n */\n perPrincipalSecretBlobPaths: [],\n\n plan(): InfraProviderPlanContribution {\n return {\n dockerComposeServices: ['gotenberg'],\n k8sResources: ['templates/infra/k8s/internal/gotenberg/deployment.yaml.hbs'],\n platformAdmin: {\n envVars: {\n GOTENBERG_HOST: 'gotenberg',\n GOTENBERG_PORT: String(DEFAULT_GOTENBERG_PORT),\n },\n // No secret env vars — Gotenberg has no auth.\n consumers: [\n InfraPlatformAdminConsumer.APPS_MANAGER,\n InfraPlatformAdminConsumer.COMPANION,\n ],\n },\n // No `appRuntime` blob paths — apps connect via the same\n // `GOTENBERG_HOST:GOTENBERG_PORT` regardless of app identity.\n };\n },\n\n // No mint methods — Gotenberg is stateless.\n};\n"]}
@@ -0,0 +1,88 @@
1
+ /**
2
+ * `@wildo-ai/platform-infra-providers` — concrete `InfraProviderModule`
3
+ * catalog (Slice 2.5c-1 of `infra-provider-planner.md`).
4
+ *
5
+ * Tier-portable: the modules import only `@wildo-ai/platform-config-lib`
6
+ * (contracts) and have no DI / mongoose / axios runtime dependencies.
7
+ * This lets both `platform-apps-manager` (orchestrator) and
8
+ * `wildo-cli` (lockfile materializer) consume the same module
9
+ * objects — apps-manager passes a real admin-client implementation
10
+ * via `AppCredentialMintingContext.adminClient`; wildo-cli only
11
+ * needs `module.plan()` for the lockfile digest.
12
+ *
13
+ * Each module is exported by name (no intermediary barrels per
14
+ * platform/CLAUDE.md "no intermediary index.ts barrels"). The
15
+ * `INFRA_PROVIDER_MODULES` map below is the canonical catalog —
16
+ * consumers iterate it (or look up by `InfraProvider` value) instead
17
+ * of importing modules one by one.
18
+ */
19
+ import type { InfraProvider, InfraProviderModule } from '@wildo-ai/platform-config-lib';
20
+ export { RabbitmqSelfInfraProviderModule } from './rabbitmq-self/rabbitmq-self.infra.module';
21
+ export { RedisSelfInfraProviderModule } from './redis-self/redis-self.infra.module';
22
+ export { PostgresSelfInfraProviderModule } from './postgres-self/postgres-self.infra.module';
23
+ export { MongodbAtlasInfraProviderModule } from './mongodb-atlas/mongodb-atlas.infra.module';
24
+ export { MongodbSelfInfraProviderModule } from './mongodb-self/mongodb-self.infra.module';
25
+ export { MinioSelfInfraProviderModule } from './minio-self/minio-self.infra.module';
26
+ export { AwsS3InfraProviderModule } from './aws-s3/aws-s3.infra.module';
27
+ export { ClamavSelfInfraProviderModule } from './clamav-self/clamav-self.infra.module';
28
+ export { GotenbergSelfInfraProviderModule } from './gotenberg-self/gotenberg-self.infra.module';
29
+ /**
30
+ * Canonical `InfraProvider` → `InfraProviderModule` catalog. Caller
31
+ * (CLI, apps-manager) builds a `Map<InfraProvider, InfraProviderModule>`
32
+ * from this constant when threading modules into
33
+ * `materializeInfraSection`.
34
+ *
35
+ * **Why a const array instead of a `Map` literal**: arrays serialize
36
+ * stably under tsc and roll up to a deterministic order. The
37
+ * downstream `Map` is built once at program start; the catalog
38
+ * itself is a value-level fixture.
39
+ *
40
+ * **Coverage** (Slice 5 baseline, 2026-05-10):
41
+ * - `RABBITMQ_SELF`, `REDIS_SELF`, `POSTGRES_SELF`, `MONGODB_SELF`,
42
+ * `MONGODB_ATLAS` — five stateful modules with mint/revoke
43
+ * methods.
44
+ * - `MINIO_SELF`, `AWS_S3` — object storage (shared-bucket model;
45
+ * no per-app credentials).
46
+ * - `CLAMAV_SELF`, `GOTENBERG_SELF` — stateless infra (no auth, no
47
+ * per-app state; `plan()` only).
48
+ *
49
+ * **NOT covered** (catalog entries without modules):
50
+ * - `POSTGRES_MANAGED`, `POSTGRES_AWS_RDS`, `POSTGRES_GCP_CLOUD_SQL`,
51
+ * `POSTGRES_AZURE_DATABASE`, `POSTGRES_SUPABASE`, `POSTGRES_NEON`,
52
+ * `POSTGRES_RENDER` — managed-Postgres brand catalog entries
53
+ * (Slice 4.B.0). No module yet; trigger = real customer.
54
+ *
55
+ * `materializeInfraSection` falls back to the authored-entry digest
56
+ * when a selected `InfraProvider` is not in the map (preserves the
57
+ * Slice 2.5b behavior for uncovered providers).
58
+ */
59
+ export declare const INFRA_PROVIDER_MODULES: ReadonlyArray<InfraProviderModule>;
60
+ /**
61
+ * Every `Wildo_Application_Secrets` JSON path that ANY provider module can mint per runtime
62
+ * principal — the union of the catalog's own static declarations.
63
+ *
64
+ * ## Why this is derived rather than written down
65
+ *
66
+ * The consumer is the secret-DELIVERY path in apps-manager: it strips exactly this set from the
67
+ * application blob before overlaying a principal's own material, so a principal receives a
68
+ * credential only where one was minted FOR IT. A hand-maintained copy at that consumer would be a
69
+ * second source — add a provider that mints a new credential path and delivery keeps shipping the
70
+ * APPLICATION's value for it, silently. That is the defect class this repo has paid for twice: the
71
+ * party that CONSTRAINS is not the party that DECLARES.
72
+ *
73
+ * Derived from `INFRA_PROVIDER_MODULES`, so a new module is covered the day it enters the catalog.
74
+ *
75
+ * Deliberately the union across ALL modules, not the ones a given application selected: a principal
76
+ * must not receive an application-wide credential for a provider it does not use either, and the
77
+ * selected set is not knowable at the delivery call site without threading app config through it.
78
+ * Stripping a path no module minted for this app is harmless — it is absent from the blob anyway.
79
+ */
80
+ export declare function collectPerPrincipalSecretBlobPaths(): ReadonlySet<string>;
81
+ /**
82
+ * Build a `Map<InfraProvider, InfraProviderModule>` for the
83
+ * canonical catalog. Callers store the result once at startup and
84
+ * pass it to `materializeInfraSection` (digest derivation) or to
85
+ * orchestrator paths that look up modules by `InfraProvider`.
86
+ */
87
+ export declare function buildInfraProviderModuleMap(): ReadonlyMap<InfraProvider, InfraProviderModule>;
88
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AAaxF,OAAO,EAAE,+BAA+B,EAAE,MAAM,4CAA4C,CAAC;AAC7F,OAAO,EAAE,4BAA4B,EAAE,MAAM,sCAAsC,CAAC;AACpF,OAAO,EAAE,+BAA+B,EAAE,MAAM,4CAA4C,CAAC;AAC7F,OAAO,EAAE,+BAA+B,EAAE,MAAM,4CAA4C,CAAC;AAC7F,OAAO,EAAE,8BAA8B,EAAE,MAAM,0CAA0C,CAAC;AAC1F,OAAO,EAAE,4BAA4B,EAAE,MAAM,sCAAsC,CAAC;AACpF,OAAO,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAC;AACxE,OAAO,EAAE,6BAA6B,EAAE,MAAM,wCAAwC,CAAC;AACvF,OAAO,EAAE,gCAAgC,EAAE,MAAM,8CAA8C,CAAC;AAEhG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,eAAO,MAAM,sBAAsB,EAAE,aAAa,CAAC,mBAAmB,CAUrE,CAAC;AAEF;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,kCAAkC,IAAI,WAAW,CAAC,MAAM,CAAC,CAQxE;AAED;;;;;GAKG;AACH,wBAAgB,2BAA2B,IAAI,WAAW,CAAC,aAAa,EAAE,mBAAmB,CAAC,CAY7F"}