@vibesdotdev/infra-core 0.0.2 → 1.0.0-rc.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.
- package/LICENSE +18 -0
- package/README.md +28 -1
- package/dist/bootstrap/seed.descriptor.d.ts +1 -1
- package/dist/bootstrap/seed.descriptor.d.ts.map +1 -1
- package/dist/bootstrap/seed.descriptor.js +1 -1
- package/dist/bootstrap/seed.descriptor.js.map +1 -1
- package/dist/bootstrap/seed.impl-shape.d.ts +1 -1
- package/dist/bootstrap/seed.impl-shape.d.ts.map +1 -1
- package/dist/bootstrap/seed.kind.d.ts +1 -3
- package/dist/bootstrap/seed.kind.d.ts.map +1 -1
- package/dist/bootstrap/seed.kind.js +17 -4
- package/dist/bootstrap/seed.kind.js.map +1 -1
- package/dist/bootstrap/seed.runner.d.ts +9 -2
- package/dist/bootstrap/seed.runner.d.ts.map +1 -1
- package/dist/bootstrap/seed.runner.js +37 -18
- package/dist/bootstrap/seed.runner.js.map +1 -1
- package/dist/capped-id.d.ts +19 -0
- package/dist/capped-id.d.ts.map +1 -0
- package/dist/capped-id.js +64 -0
- package/dist/capped-id.js.map +1 -0
- package/dist/cli/generate/artifact/artifact.cli-command.descriptor.d.ts +23 -0
- package/dist/cli/generate/artifact/artifact.cli-command.descriptor.d.ts.map +1 -0
- package/dist/cli/generate/artifact/artifact.cli-command.descriptor.js +33 -0
- package/dist/cli/generate/artifact/artifact.cli-command.descriptor.js.map +1 -0
- package/dist/cli/generate/artifact/artifact.cli-command.impl.d.ts +24 -0
- package/dist/cli/generate/artifact/artifact.cli-command.impl.d.ts.map +1 -0
- package/dist/cli/generate/artifact/artifact.cli-command.impl.js +73 -0
- package/dist/cli/generate/artifact/artifact.cli-command.impl.js.map +1 -0
- package/dist/cli/generate/context.d.ts +17 -0
- package/dist/cli/generate/context.d.ts.map +1 -0
- package/dist/cli/generate/context.js +24 -0
- package/dist/cli/generate/context.js.map +1 -0
- package/dist/cli/generate/generate/generate.cli-command.descriptor.d.ts +30 -0
- package/dist/cli/generate/generate/generate.cli-command.descriptor.d.ts.map +1 -0
- package/dist/cli/generate/generate/generate.cli-command.descriptor.js +25 -0
- package/dist/cli/generate/generate/generate.cli-command.descriptor.js.map +1 -0
- package/dist/cli/generate/generate/generate.cli-command.impl.d.ts +25 -0
- package/dist/cli/generate/generate/generate.cli-command.impl.d.ts.map +1 -0
- package/dist/cli/generate/generate/generate.cli-command.impl.js +64 -0
- package/dist/cli/generate/generate/generate.cli-command.impl.js.map +1 -0
- package/dist/cli/generate/generate-core.d.ts +51 -0
- package/dist/cli/generate/generate-core.d.ts.map +1 -0
- package/dist/cli/generate/generate-core.js +172 -0
- package/dist/cli/generate/generate-core.js.map +1 -0
- package/dist/cli/generate/index.d.ts +5 -0
- package/dist/cli/generate/index.d.ts.map +1 -0
- package/dist/cli/generate/index.js +5 -0
- package/dist/cli/generate/index.js.map +1 -0
- package/dist/credentials/resolve.d.ts +82 -22
- package/dist/credentials/resolve.d.ts.map +1 -1
- package/dist/credentials/resolve.js +251 -77
- package/dist/credentials/resolve.js.map +1 -1
- package/dist/deployment-budget.d.ts +319 -0
- package/dist/deployment-budget.d.ts.map +1 -0
- package/dist/deployment-budget.js +660 -0
- package/dist/deployment-budget.js.map +1 -0
- package/dist/deployment-environment.d.ts +30 -0
- package/dist/deployment-environment.d.ts.map +1 -0
- package/dist/deployment-environment.js +53 -0
- package/dist/deployment-environment.js.map +1 -0
- package/dist/deployment-graph.d.ts +185 -0
- package/dist/deployment-graph.d.ts.map +1 -0
- package/dist/deployment-graph.js +705 -0
- package/dist/deployment-graph.js.map +1 -0
- package/dist/deployment.d.ts +25 -4
- package/dist/deployment.d.ts.map +1 -1
- package/dist/deployment.js +105 -0
- package/dist/deployment.js.map +1 -1
- package/dist/doks/cloud/base.d.ts +49 -0
- package/dist/doks/cloud/base.d.ts.map +1 -0
- package/dist/doks/cloud/base.js +138 -0
- package/dist/doks/cloud/base.js.map +1 -0
- package/dist/doks/cloud/factory.d.ts +18 -0
- package/dist/doks/cloud/factory.d.ts.map +1 -0
- package/dist/doks/cloud/factory.js +22 -0
- package/dist/doks/cloud/factory.js.map +1 -0
- package/dist/doks/cloud/index.d.ts +5 -0
- package/dist/doks/cloud/index.d.ts.map +1 -0
- package/dist/doks/cloud/index.js +4 -0
- package/dist/doks/cloud/index.js.map +1 -0
- package/dist/doks/types.d.ts +95 -0
- package/dist/doks/types.d.ts.map +1 -0
- package/dist/doks/types.js +14 -0
- package/dist/doks/types.js.map +1 -0
- package/dist/generate/index.d.ts +29 -0
- package/dist/generate/index.d.ts.map +1 -0
- package/dist/generate/index.js +28 -0
- package/dist/generate/index.js.map +1 -0
- package/dist/generate/infra-generate.plugin.d.ts +3 -0
- package/dist/generate/infra-generate.plugin.d.ts.map +1 -0
- package/dist/generate/infra-generate.plugin.js +23 -0
- package/dist/generate/infra-generate.plugin.js.map +1 -0
- package/dist/generate/plugin.d.ts +2 -0
- package/dist/generate/plugin.d.ts.map +1 -0
- package/dist/generate/plugin.js +2 -0
- package/dist/generate/plugin.js.map +1 -0
- package/dist/heartbeat/cron-heartbeat.d.ts +97 -0
- package/dist/heartbeat/cron-heartbeat.d.ts.map +1 -0
- package/dist/heartbeat/cron-heartbeat.js +200 -0
- package/dist/heartbeat/cron-heartbeat.js.map +1 -0
- package/dist/index.d.ts +37 -22
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +29 -14
- package/dist/index.js.map +1 -1
- package/dist/infra.plugin.d.ts +1 -1
- package/dist/infra.plugin.d.ts.map +1 -1
- package/dist/infra.plugin.js +64 -12
- package/dist/infra.plugin.js.map +1 -1
- package/dist/kinds/alerts.kind.d.ts +64 -25
- package/dist/kinds/alerts.kind.d.ts.map +1 -1
- package/dist/kinds/alerts.kind.js +43 -16
- package/dist/kinds/alerts.kind.js.map +1 -1
- package/dist/kinds/artifact.kind.d.ts +58 -10
- package/dist/kinds/artifact.kind.d.ts.map +1 -1
- package/dist/kinds/artifact.kind.js +26 -9
- package/dist/kinds/artifact.kind.js.map +1 -1
- package/dist/kinds/billing.kind.d.ts +88 -0
- package/dist/kinds/billing.kind.d.ts.map +1 -0
- package/dist/kinds/billing.kind.js +48 -0
- package/dist/kinds/billing.kind.js.map +1 -0
- package/dist/kinds/build-job.kind.d.ts +383 -0
- package/dist/kinds/build-job.kind.d.ts.map +1 -0
- package/dist/kinds/build-job.kind.js +218 -0
- package/dist/kinds/build-job.kind.js.map +1 -0
- package/dist/kinds/cache-byte-store.d.ts +23 -0
- package/dist/kinds/cache-byte-store.d.ts.map +1 -0
- package/dist/kinds/cache-byte-store.js +9 -0
- package/dist/kinds/cache-byte-store.js.map +1 -0
- package/dist/kinds/cache.kind.d.ts +38 -94
- package/dist/kinds/cache.kind.d.ts.map +1 -1
- package/dist/kinds/cache.kind.js +39 -50
- package/dist/kinds/cache.kind.js.map +1 -1
- package/dist/kinds/cluster.kind.d.ts +154 -0
- package/dist/kinds/cluster.kind.d.ts.map +1 -0
- package/dist/kinds/cluster.kind.js +99 -0
- package/dist/kinds/cluster.kind.js.map +1 -0
- package/dist/kinds/compute-source.kind.d.ts +155 -0
- package/dist/kinds/compute-source.kind.d.ts.map +1 -0
- package/dist/kinds/compute-source.kind.js +158 -0
- package/dist/kinds/compute-source.kind.js.map +1 -0
- package/dist/kinds/container-registry.kind.d.ts +62 -0
- package/dist/kinds/container-registry.kind.d.ts.map +1 -0
- package/dist/kinds/container-registry.kind.js +47 -0
- package/dist/kinds/container-registry.kind.js.map +1 -0
- package/dist/kinds/database-migrator.kind.d.ts +6 -0
- package/dist/kinds/database-migrator.kind.d.ts.map +1 -0
- package/dist/kinds/database-migrator.kind.js +28 -0
- package/dist/kinds/database-migrator.kind.js.map +1 -0
- package/dist/kinds/database.kind.d.ts +114 -93
- package/dist/kinds/database.kind.d.ts.map +1 -1
- package/dist/kinds/database.kind.js +93 -54
- package/dist/kinds/database.kind.js.map +1 -1
- package/dist/kinds/deployment-provider.kind.d.ts +5 -0
- package/dist/kinds/deployment-provider.kind.d.ts.map +1 -0
- package/dist/kinds/deployment-provider.kind.js +11 -0
- package/dist/kinds/deployment-provider.kind.js.map +1 -0
- package/dist/kinds/discovery.d.ts +5 -12
- package/dist/kinds/discovery.d.ts.map +1 -1
- package/dist/kinds/discovery.js +5 -17
- package/dist/kinds/discovery.js.map +1 -1
- package/dist/kinds/dns.kind.d.ts +162 -0
- package/dist/kinds/dns.kind.d.ts.map +1 -0
- package/dist/kinds/dns.kind.js +54 -0
- package/dist/kinds/dns.kind.js.map +1 -0
- package/dist/kinds/drift.kind.d.ts +115 -0
- package/dist/kinds/drift.kind.d.ts.map +1 -0
- package/dist/kinds/drift.kind.js +60 -0
- package/dist/kinds/drift.kind.js.map +1 -0
- package/dist/kinds/edge-hostname.kind.d.ts +124 -0
- package/dist/kinds/edge-hostname.kind.d.ts.map +1 -0
- package/dist/kinds/edge-hostname.kind.js +87 -0
- package/dist/kinds/edge-hostname.kind.js.map +1 -0
- package/dist/kinds/edge-tls.kind.d.ts +194 -0
- package/dist/kinds/edge-tls.kind.d.ts.map +1 -0
- package/dist/kinds/edge-tls.kind.js +58 -0
- package/dist/kinds/edge-tls.kind.js.map +1 -0
- package/dist/kinds/firewall.kind.d.ts +92 -0
- package/dist/kinds/firewall.kind.d.ts.map +1 -0
- package/dist/kinds/firewall.kind.js +59 -0
- package/dist/kinds/firewall.kind.js.map +1 -0
- package/dist/kinds/git-hosting.kind.d.ts +36 -38
- package/dist/kinds/git-hosting.kind.d.ts.map +1 -1
- package/dist/kinds/git-hosting.kind.js +21 -32
- package/dist/kinds/git-hosting.kind.js.map +1 -1
- package/dist/kinds/index.d.ts +41 -15
- package/dist/kinds/index.d.ts.map +1 -1
- package/dist/kinds/index.js +40 -14
- package/dist/kinds/index.js.map +1 -1
- package/dist/kinds/inventory.kind.d.ts +245 -0
- package/dist/kinds/inventory.kind.d.ts.map +1 -0
- package/dist/kinds/inventory.kind.js +243 -0
- package/dist/kinds/inventory.kind.js.map +1 -0
- package/dist/kinds/load-balancer.kind.d.ts +135 -0
- package/dist/kinds/load-balancer.kind.d.ts.map +1 -0
- package/dist/kinds/load-balancer.kind.js +71 -0
- package/dist/kinds/load-balancer.kind.js.map +1 -0
- package/dist/kinds/logs.kind.d.ts +74 -3
- package/dist/kinds/logs.kind.d.ts.map +1 -1
- package/dist/kinds/logs.kind.js +26 -17
- package/dist/kinds/logs.kind.js.map +1 -1
- package/dist/kinds/nfs.kind.d.ts +67 -0
- package/dist/kinds/nfs.kind.d.ts.map +1 -0
- package/dist/kinds/nfs.kind.js +45 -0
- package/dist/kinds/nfs.kind.js.map +1 -0
- package/dist/kinds/node-pool.kind.d.ts +134 -0
- package/dist/kinds/node-pool.kind.d.ts.map +1 -0
- package/dist/kinds/node-pool.kind.js +88 -0
- package/dist/kinds/node-pool.kind.js.map +1 -0
- package/dist/kinds/object-storage.kind.d.ts +50 -24
- package/dist/kinds/object-storage.kind.d.ts.map +1 -1
- package/dist/kinds/object-storage.kind.js +40 -23
- package/dist/kinds/object-storage.kind.js.map +1 -1
- package/dist/kinds/observability.kind.d.ts +104 -6
- package/dist/kinds/observability.kind.d.ts.map +1 -1
- package/dist/kinds/observability.kind.js +67 -9
- package/dist/kinds/observability.kind.js.map +1 -1
- package/dist/kinds/package-registry.kind.d.ts +139 -33
- package/dist/kinds/package-registry.kind.d.ts.map +1 -1
- package/dist/kinds/package-registry.kind.js +55 -25
- package/dist/kinds/package-registry.kind.js.map +1 -1
- package/dist/kinds/queue.kind.d.ts +67 -63
- package/dist/kinds/queue.kind.d.ts.map +1 -1
- package/dist/kinds/queue.kind.js +55 -33
- package/dist/kinds/queue.kind.js.map +1 -1
- package/dist/kinds/read-descriptor.d.ts +15 -0
- package/dist/kinds/read-descriptor.d.ts.map +1 -0
- package/dist/kinds/read-descriptor.js +11 -0
- package/dist/kinds/read-descriptor.js.map +1 -0
- package/dist/kinds/rum.kind.d.ts +36 -6
- package/dist/kinds/rum.kind.d.ts.map +1 -1
- package/dist/kinds/rum.kind.js +6 -7
- package/dist/kinds/rum.kind.js.map +1 -1
- package/dist/kinds/sandbox.kind.d.ts +136 -40
- package/dist/kinds/sandbox.kind.d.ts.map +1 -1
- package/dist/kinds/sandbox.kind.js +82 -43
- package/dist/kinds/sandbox.kind.js.map +1 -1
- package/dist/kinds/select-compute-source.d.ts +72 -0
- package/dist/kinds/select-compute-source.d.ts.map +1 -0
- package/dist/kinds/select-compute-source.js +170 -0
- package/dist/kinds/select-compute-source.js.map +1 -0
- package/dist/kinds/service-release.kind.d.ts +771 -0
- package/dist/kinds/service-release.kind.d.ts.map +1 -0
- package/dist/kinds/service-release.kind.js +676 -0
- package/dist/kinds/service-release.kind.js.map +1 -0
- package/dist/kinds/spend-guard.kind.d.ts +41 -0
- package/dist/kinds/spend-guard.kind.d.ts.map +1 -0
- package/dist/kinds/spend-guard.kind.js +140 -0
- package/dist/kinds/spend-guard.kind.js.map +1 -0
- package/dist/kinds/utilization.kind.d.ts +88 -0
- package/dist/kinds/utilization.kind.d.ts.map +1 -0
- package/dist/kinds/utilization.kind.js +62 -0
- package/dist/kinds/utilization.kind.js.map +1 -0
- package/dist/kinds/volume.kind.d.ts +54 -0
- package/dist/kinds/volume.kind.d.ts.map +1 -0
- package/dist/kinds/volume.kind.js +39 -0
- package/dist/kinds/volume.kind.js.map +1 -0
- package/dist/kinds/vpc.kind.d.ts +61 -0
- package/dist/kinds/vpc.kind.d.ts.map +1 -0
- package/dist/kinds/vpc.kind.js +51 -0
- package/dist/kinds/vpc.kind.js.map +1 -0
- package/dist/kinds/web-app.kind.d.ts +118 -45
- package/dist/kinds/web-app.kind.d.ts.map +1 -1
- package/dist/kinds/web-app.kind.js +69 -42
- package/dist/kinds/web-app.kind.js.map +1 -1
- package/dist/kinds/worker.kind.d.ts +129 -188
- package/dist/kinds/worker.kind.d.ts.map +1 -1
- package/dist/kinds/worker.kind.js +45 -123
- package/dist/kinds/worker.kind.js.map +1 -1
- package/dist/schemas/database-migration.d.ts +173 -0
- package/dist/schemas/database-migration.d.ts.map +1 -0
- package/dist/schemas/database-migration.js +88 -0
- package/dist/schemas/database-migration.js.map +1 -0
- package/dist/schemas/deployment-environment.d.ts +11 -0
- package/dist/schemas/deployment-environment.d.ts.map +1 -0
- package/dist/schemas/deployment-environment.js +9 -0
- package/dist/schemas/deployment-environment.js.map +1 -0
- package/dist/schemas/deployment-provider.d.ts +383 -0
- package/dist/schemas/deployment-provider.d.ts.map +1 -0
- package/dist/schemas/deployment-provider.js +211 -0
- package/dist/schemas/deployment-provider.js.map +1 -0
- package/dist/schemas/log-stream.d.ts +27 -0
- package/dist/schemas/log-stream.d.ts.map +1 -0
- package/dist/schemas/log-stream.js +31 -0
- package/dist/schemas/log-stream.js.map +1 -0
- package/dist/schemas/spend-guard.d.ts +155 -0
- package/dist/schemas/spend-guard.d.ts.map +1 -0
- package/dist/schemas/spend-guard.js +61 -0
- package/dist/schemas/spend-guard.js.map +1 -0
- package/dist/schemas.d.ts +195 -20
- package/dist/schemas.d.ts.map +1 -1
- package/dist/schemas.js +151 -31
- package/dist/schemas.js.map +1 -1
- package/dist/service.d.ts +87 -0
- package/dist/service.d.ts.map +1 -0
- package/dist/service.js +199 -0
- package/dist/service.js.map +1 -0
- package/dist/settle-work.d.ts +20 -0
- package/dist/settle-work.d.ts.map +1 -0
- package/dist/settle-work.js +22 -0
- package/dist/settle-work.js.map +1 -0
- package/dist/web-app-projection.d.ts +208 -0
- package/dist/web-app-projection.d.ts.map +1 -0
- package/dist/web-app-projection.js +95 -0
- package/dist/web-app-projection.js.map +1 -0
- package/package.json +121 -37
- package/src/bootstrap/index.ts +0 -15
- package/src/bootstrap/seed.descriptor.ts +0 -24
- package/src/bootstrap/seed.impl-shape.ts +0 -5
- package/src/bootstrap/seed.kind.ts +0 -26
- package/src/bootstrap/seed.runner.ts +0 -87
- package/src/credentials/resolve.ts +0 -205
- package/src/deployment.ts +0 -57
- package/src/index.ts +0 -149
- package/src/infra.plugin.ts +0 -54
- package/src/kinds/alerts.kind.ts +0 -164
- package/src/kinds/artifact.kind.ts +0 -96
- package/src/kinds/cache.kind.ts +0 -104
- package/src/kinds/database.kind.ts +0 -120
- package/src/kinds/discovery.ts +0 -26
- package/src/kinds/git-hosting.kind.ts +0 -100
- package/src/kinds/index.ts +0 -139
- package/src/kinds/logs.kind.ts +0 -104
- package/src/kinds/object-storage.kind.ts +0 -101
- package/src/kinds/observability.kind.ts +0 -178
- package/src/kinds/package-registry.kind.ts +0 -95
- package/src/kinds/queue.kind.ts +0 -102
- package/src/kinds/rum.kind.ts +0 -135
- package/src/kinds/sandbox.kind.ts +0 -115
- package/src/kinds/web-app.kind.ts +0 -103
- package/src/kinds/worker.kind.ts +0 -203
- package/src/schemas.ts +0 -127
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Infra Edge TLS Kind
|
|
3
|
+
*
|
|
4
|
+
* Provider-agnostic schema for the TLS policy an edge/CDN uses when it
|
|
5
|
+
* connects to an origin. This governs the edge→origin leg only; the
|
|
6
|
+
* browser→edge leg is certificate and hostname configuration, not this kind.
|
|
7
|
+
*
|
|
8
|
+
* The policy is modeled per hostname rather than per zone because a zone
|
|
9
|
+
* routinely fronts origins with different certificate maturity: a hardened
|
|
10
|
+
* origin needs `verified`, while a legacy origin with a self-signed or
|
|
11
|
+
* expired certificate still answers only under `opportunistic`. A zone-wide
|
|
12
|
+
* value forces the weakest origin's policy onto every hostname.
|
|
13
|
+
*
|
|
14
|
+
* `opportunistic` is a loop hazard, not merely weak: when the edge speaks
|
|
15
|
+
* plaintext to an origin that redirects to HTTPS, a same-zone subrequest
|
|
16
|
+
* bounces between edge and origin until the edge gives up. Any hostname whose
|
|
17
|
+
* origin redirects HTTP to HTTPS must be `verified` or `encrypted`.
|
|
18
|
+
*/
|
|
19
|
+
import * as z from 'zod/v4';
|
|
20
|
+
import type { InfraAuthorityFingerprint } from './inventory.kind.ts';
|
|
21
|
+
/**
|
|
22
|
+
* - `verified`: encrypt and require a valid certificate for the origin hostname.
|
|
23
|
+
* - `encrypted`: encrypt without validating the origin certificate.
|
|
24
|
+
* - `opportunistic`: connect in plaintext when the origin allows it.
|
|
25
|
+
* - `off`: never encrypt the edge→origin leg.
|
|
26
|
+
*/
|
|
27
|
+
declare const OriginTlsPolicySchema: z.ZodEnum<{
|
|
28
|
+
off: "off";
|
|
29
|
+
verified: "verified";
|
|
30
|
+
encrypted: "encrypted";
|
|
31
|
+
opportunistic: "opportunistic";
|
|
32
|
+
}>;
|
|
33
|
+
export type OriginTlsPolicy = z.infer<typeof OriginTlsPolicySchema>;
|
|
34
|
+
declare const EdgeTlsPolicySchema: z.ZodObject<{
|
|
35
|
+
hostnames: z.ZodArray<z.ZodString>;
|
|
36
|
+
policy: z.ZodEnum<{
|
|
37
|
+
off: "off";
|
|
38
|
+
verified: "verified";
|
|
39
|
+
encrypted: "encrypted";
|
|
40
|
+
opportunistic: "opportunistic";
|
|
41
|
+
}>;
|
|
42
|
+
description: z.ZodOptional<z.ZodString>;
|
|
43
|
+
}, z.core.$strip>;
|
|
44
|
+
export type EdgeTlsPolicy = z.infer<typeof EdgeTlsPolicySchema>;
|
|
45
|
+
export type EdgeTlsPolicyInput = z.input<typeof EdgeTlsPolicySchema>;
|
|
46
|
+
declare const EdgeTlsBaseSchema: z.ZodObject<{
|
|
47
|
+
id: z.ZodString;
|
|
48
|
+
name: z.ZodOptional<z.ZodString>;
|
|
49
|
+
description: z.ZodOptional<z.ZodString>;
|
|
50
|
+
tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
51
|
+
hardware: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
52
|
+
enabled: z.ZodOptional<z.ZodBoolean>;
|
|
53
|
+
priority: z.ZodOptional<z.ZodNumber>;
|
|
54
|
+
capabilityId: z.ZodOptional<z.ZodString>;
|
|
55
|
+
requiredContext: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
56
|
+
optionalContext: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
57
|
+
config: z.ZodOptional<z.ZodUnknown>;
|
|
58
|
+
retention: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
|
|
59
|
+
maxAgeDays: z.ZodOptional<z.ZodNumber>;
|
|
60
|
+
maxEntries: z.ZodOptional<z.ZodNumber>;
|
|
61
|
+
maxBytes: z.ZodOptional<z.ZodNumber>;
|
|
62
|
+
cascadeFrom: z.ZodOptional<z.ZodString>;
|
|
63
|
+
ageField: z.ZodOptional<z.ZodString>;
|
|
64
|
+
reason: z.ZodString;
|
|
65
|
+
enforcedBy: z.ZodOptional<z.ZodString>;
|
|
66
|
+
}, z.core.$strip>]>>;
|
|
67
|
+
kind: z.ZodLiteral<"infra/edge-tls">;
|
|
68
|
+
adapter: z.ZodString;
|
|
69
|
+
adapterConfig: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
70
|
+
zone: z.ZodOptional<z.ZodString>;
|
|
71
|
+
environment: z.ZodDefault<z.ZodString>;
|
|
72
|
+
policies: z.ZodDefault<z.ZodArray<z.ZodObject<{
|
|
73
|
+
hostnames: z.ZodArray<z.ZodString>;
|
|
74
|
+
policy: z.ZodEnum<{
|
|
75
|
+
off: "off";
|
|
76
|
+
verified: "verified";
|
|
77
|
+
encrypted: "encrypted";
|
|
78
|
+
opportunistic: "opportunistic";
|
|
79
|
+
}>;
|
|
80
|
+
description: z.ZodOptional<z.ZodString>;
|
|
81
|
+
}, z.core.$strip>>>;
|
|
82
|
+
}, z.core.$strip>;
|
|
83
|
+
export type InfraEdgeTlsDescriptor = z.infer<typeof EdgeTlsBaseSchema>;
|
|
84
|
+
export type InfraEdgeTlsDescriptorInput = z.input<typeof EdgeTlsBaseSchema>;
|
|
85
|
+
/** A policy as it exists on the provider, carrying provider-assigned identity. */
|
|
86
|
+
export interface LiveEdgeTlsPolicy {
|
|
87
|
+
providerId: string;
|
|
88
|
+
zone: string;
|
|
89
|
+
hostnames: string[];
|
|
90
|
+
/** Null when the provider reports a value outside this kind's enum. */
|
|
91
|
+
policy: OriginTlsPolicy | null;
|
|
92
|
+
/** Raw provider value, kept so unmapped policies stay visible as evidence. */
|
|
93
|
+
providerValue: string;
|
|
94
|
+
/** Provider-native match condition, kept as evidence of what really matches. */
|
|
95
|
+
expression: string;
|
|
96
|
+
enabled: boolean;
|
|
97
|
+
description?: string;
|
|
98
|
+
/**
|
|
99
|
+
* False when the live shape is outside what this kind writes — a compound
|
|
100
|
+
* rule, or a condition that is not a plain hostname set. Unmanaged policies
|
|
101
|
+
* are reported but never rewritten.
|
|
102
|
+
*/
|
|
103
|
+
managed: boolean;
|
|
104
|
+
}
|
|
105
|
+
export interface EdgeTlsZoneDefault {
|
|
106
|
+
zone: string;
|
|
107
|
+
/** Null when the provider reports a value outside this kind's enum. */
|
|
108
|
+
policy: OriginTlsPolicy | null;
|
|
109
|
+
providerValue: string;
|
|
110
|
+
/** False when the provider forbids changing the default on this plan. */
|
|
111
|
+
editable: boolean;
|
|
112
|
+
}
|
|
113
|
+
export interface EdgeTlsSnapshot {
|
|
114
|
+
zone: string;
|
|
115
|
+
default: EdgeTlsZoneDefault;
|
|
116
|
+
policies: LiveEdgeTlsPolicy[];
|
|
117
|
+
/**
|
|
118
|
+
* Configuration a co-tenant owns in the same provider container, which a
|
|
119
|
+
* write must carry forward untouched. Non-zero here means this kind is not
|
|
120
|
+
* the only author, so a full-replacement write would destroy work.
|
|
121
|
+
*/
|
|
122
|
+
coTenantRules: number;
|
|
123
|
+
}
|
|
124
|
+
export interface EdgeTlsWriteResult {
|
|
125
|
+
providerId: string;
|
|
126
|
+
created: boolean;
|
|
127
|
+
/** Co-tenant configuration re-sent verbatim by this write. */
|
|
128
|
+
preservedRules: number;
|
|
129
|
+
/** Total entries in the provider container after the write. */
|
|
130
|
+
totalRules: number;
|
|
131
|
+
}
|
|
132
|
+
export interface EdgeTlsDeleteResult {
|
|
133
|
+
/** Policies removed outright because the hostname was their only member. */
|
|
134
|
+
removed: string[];
|
|
135
|
+
/** Policies kept but narrowed because they also covered other hostnames. */
|
|
136
|
+
narrowed: string[];
|
|
137
|
+
preservedRules: number;
|
|
138
|
+
totalRules: number;
|
|
139
|
+
}
|
|
140
|
+
export interface EdgeTlsZoneDefaultChange {
|
|
141
|
+
zone: string;
|
|
142
|
+
from: OriginTlsPolicy | null;
|
|
143
|
+
to: OriginTlsPolicy;
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Implementation contract every provider implements.
|
|
147
|
+
*
|
|
148
|
+
* `setPolicy` is idempotent on the hostname set: it updates the live policy
|
|
149
|
+
* for exactly those hostnames rather than adding a second policy that would
|
|
150
|
+
* race it. Providers that store policies in a shared, wholesale-replaced
|
|
151
|
+
* container must merge co-tenant entries forward; the reported
|
|
152
|
+
* `preservedRules` is the evidence that they did.
|
|
153
|
+
*/
|
|
154
|
+
export interface EdgeTlsImplementation {
|
|
155
|
+
/** Redacted authority used by the latest provider request. */
|
|
156
|
+
getAuthority?(): Promise<InfraAuthorityFingerprint>;
|
|
157
|
+
/** Live per-hostname policies plus the zone default, optionally narrowed. */
|
|
158
|
+
read(filter?: {
|
|
159
|
+
hostname?: string;
|
|
160
|
+
}): Promise<EdgeTlsSnapshot>;
|
|
161
|
+
setPolicy(policy: EdgeTlsPolicyInput): Promise<EdgeTlsWriteResult>;
|
|
162
|
+
/** Drop one hostname's policy. Absence is not an error. */
|
|
163
|
+
deletePolicy(filter: {
|
|
164
|
+
hostname: string;
|
|
165
|
+
}): Promise<EdgeTlsDeleteResult>;
|
|
166
|
+
/**
|
|
167
|
+
* Change the zone-wide default. `verified` breaks every hostname whose
|
|
168
|
+
* origin does not serve a valid certificate for its own name, including
|
|
169
|
+
* hostnames with no per-hostname policy of their own, so implementations
|
|
170
|
+
* refuse the call until the caller acknowledges that blast radius.
|
|
171
|
+
*/
|
|
172
|
+
setZoneDefault(policy: OriginTlsPolicy, options: {
|
|
173
|
+
acknowledgeOriginBreakage: boolean;
|
|
174
|
+
}): Promise<EdgeTlsZoneDefaultChange>;
|
|
175
|
+
/**
|
|
176
|
+
* Diff desired against live for the hostname sets in `desired`. Policies
|
|
177
|
+
* outside those sets are never reported for deletion — this kind is
|
|
178
|
+
* additive by default so it can coexist with co-tenant policies.
|
|
179
|
+
*/
|
|
180
|
+
diff(desired: EdgeTlsPolicyInput[]): Promise<{
|
|
181
|
+
create: EdgeTlsPolicy[];
|
|
182
|
+
update: Array<{
|
|
183
|
+
providerId: string;
|
|
184
|
+
from: LiveEdgeTlsPolicy;
|
|
185
|
+
to: EdgeTlsPolicy;
|
|
186
|
+
}>;
|
|
187
|
+
unchanged: LiveEdgeTlsPolicy[];
|
|
188
|
+
}>;
|
|
189
|
+
}
|
|
190
|
+
export declare const edgeTlsKind: import("@vibesdotdev/kernel").RuntimeKindDescriptorRecord<EdgeTlsImplementation>;
|
|
191
|
+
export type InfraEdgeTlsKind = InfraEdgeTlsDescriptor;
|
|
192
|
+
export type InfraEdgeTlsKindInput = InfraEdgeTlsDescriptorInput;
|
|
193
|
+
export { EdgeTlsBaseSchema as InfraEdgeTlsDescriptorSchema, EdgeTlsPolicySchema, OriginTlsPolicySchema };
|
|
194
|
+
//# sourceMappingURL=edge-tls.kind.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"edge-tls.kind.d.ts","sourceRoot":"","sources":["../../src/kinds/edge-tls.kind.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Infra Edge TLS Kind
|
|
3
|
+
*
|
|
4
|
+
* Provider-agnostic schema for the TLS policy an edge/CDN uses when it
|
|
5
|
+
* connects to an origin. This governs the edge→origin leg only; the
|
|
6
|
+
* browser→edge leg is certificate and hostname configuration, not this kind.
|
|
7
|
+
*
|
|
8
|
+
* The policy is modeled per hostname rather than per zone because a zone
|
|
9
|
+
* routinely fronts origins with different certificate maturity: a hardened
|
|
10
|
+
* origin needs `verified`, while a legacy origin with a self-signed or
|
|
11
|
+
* expired certificate still answers only under `opportunistic`. A zone-wide
|
|
12
|
+
* value forces the weakest origin's policy onto every hostname.
|
|
13
|
+
*
|
|
14
|
+
* `opportunistic` is a loop hazard, not merely weak: when the edge speaks
|
|
15
|
+
* plaintext to an origin that redirects to HTTPS, a same-zone subrequest
|
|
16
|
+
* bounces between edge and origin until the edge gives up. Any hostname whose
|
|
17
|
+
* origin redirects HTTP to HTTPS must be `verified` or `encrypted`.
|
|
18
|
+
*/
|
|
19
|
+
import * as z from 'zod/v4';
|
|
20
|
+
import { createRuntimeKind } from '@vibesdotdev/kernel/factory/kind';
|
|
21
|
+
import { RuntimeDescriptorSchema } from '@vibesdotdev/kernel/schemas/descriptor';
|
|
22
|
+
import { INFRA_DISCOVERY_PATTERNS } from "./discovery.js";
|
|
23
|
+
/**
|
|
24
|
+
* - `verified`: encrypt and require a valid certificate for the origin hostname.
|
|
25
|
+
* - `encrypted`: encrypt without validating the origin certificate.
|
|
26
|
+
* - `opportunistic`: connect in plaintext when the origin allows it.
|
|
27
|
+
* - `off`: never encrypt the edge→origin leg.
|
|
28
|
+
*/
|
|
29
|
+
const OriginTlsPolicySchema = z.enum(['verified', 'encrypted', 'opportunistic', 'off']);
|
|
30
|
+
const EdgeTlsPolicySchema = z.object({
|
|
31
|
+
/**
|
|
32
|
+
* Hostnames this policy applies to. Treated as a set: order and case do
|
|
33
|
+
* not change identity, so an equivalent declaration resolves to the same
|
|
34
|
+
* live policy instead of adding a second one.
|
|
35
|
+
*/
|
|
36
|
+
hostnames: z.array(z.string().min(1)).min(1),
|
|
37
|
+
policy: OriginTlsPolicySchema,
|
|
38
|
+
/** Operator note stored with the policy where the provider supports it. */
|
|
39
|
+
description: z.string().optional()
|
|
40
|
+
});
|
|
41
|
+
const EdgeTlsBaseSchema = RuntimeDescriptorSchema.extend({
|
|
42
|
+
kind: z.literal('infra/edge-tls'),
|
|
43
|
+
/** Adapter id (e.g. 'cloudflare-edge-tls'). */
|
|
44
|
+
adapter: z.string().min(1),
|
|
45
|
+
adapterConfig: z.record(z.string(), z.unknown()).optional(),
|
|
46
|
+
/** Apex zone this descriptor is authoritative for (e.g. `vibes.dev`). */
|
|
47
|
+
zone: z.string().min(1).optional(),
|
|
48
|
+
/** Environment name for credential resolution via `vibes secrets`. */
|
|
49
|
+
environment: z.string().default('local'),
|
|
50
|
+
policies: z.array(EdgeTlsPolicySchema).default([])
|
|
51
|
+
});
|
|
52
|
+
export const edgeTlsKind = createRuntimeKind({
|
|
53
|
+
id: 'infra/edge-tls',
|
|
54
|
+
descriptorSchema: EdgeTlsBaseSchema,
|
|
55
|
+
discoveryPatterns: INFRA_DISCOVERY_PATTERNS
|
|
56
|
+
});
|
|
57
|
+
export { EdgeTlsBaseSchema as InfraEdgeTlsDescriptorSchema, EdgeTlsPolicySchema, OriginTlsPolicySchema };
|
|
58
|
+
//# sourceMappingURL=edge-tls.kind.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"edge-tls.kind.js","sourceRoot":"","sources":["../../src/kinds/edge-tls.kind.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,KAAK,CAAC,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AACrE,OAAO,EAAE,uBAAuB,EAAE,MAAM,wCAAwC,CAAC;AACjF,OAAO,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAC;AAG1D;;;;;GAKG;AACH,MAAM,qBAAqB,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,WAAW,EAAE,eAAe,EAAE,KAAK,CAAC,CAAC,CAAC;AAIxF,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IACpC;;;;OAIG;IACH,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAC5C,MAAM,EAAE,qBAAqB;IAC7B,2EAA2E;IAC3E,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAClC,CAAC,CAAC;AAKH,MAAM,iBAAiB,GAAG,uBAAuB,CAAC,MAAM,CAAC;IACxD,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC;IACjC,+CAA+C;IAC/C,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1B,aAAa,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE;IAC3D,yEAAyE;IACzE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IAClC,sEAAsE;IACtE,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC;IACxC,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;CAClD,CAAC,CAAC;AA8GH,MAAM,CAAC,MAAM,WAAW,GAAG,iBAAiB,CAAgD;IAC3F,EAAE,EAAE,gBAAgB;IACpB,gBAAgB,EAAE,iBAAiB;IACnC,iBAAiB,EAAE,wBAAwB;CAC3C,CAAC,CAAC;AAKH,OAAO,EACN,iBAAiB,IAAI,4BAA4B,EACjD,mBAAmB,EACnB,qBAAqB,EACrB,CAAC"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Kind: infra/firewall
|
|
3
|
+
*
|
|
4
|
+
* Provider-neutral firewall descriptor. Used both for compute-level firewalls
|
|
5
|
+
* (e.g., DigitalOcean cloud firewall, attached to droplets) and the DOKS
|
|
6
|
+
* control-plane firewall.
|
|
7
|
+
*
|
|
8
|
+
* `config` is an open, adapter-keyed shape (DigitalOcean's firewall config
|
|
9
|
+
* lives in `@vibesdotdev/integrations-digitalocean`); this kind names no
|
|
10
|
+
* provider, so a config for any adapter parses here and the adapter
|
|
11
|
+
* validates its own grammar.
|
|
12
|
+
*/
|
|
13
|
+
import * as z from 'zod/v4';
|
|
14
|
+
import type { RuntimeDescriptor } from '@vibesdotdev/kernel/schemas/descriptor';
|
|
15
|
+
import type { KindContext } from '@vibesdotdev/kernel/schemas/kind';
|
|
16
|
+
export declare const FirewallRuleSchema: z.ZodObject<{
|
|
17
|
+
protocol: z.ZodEnum<{
|
|
18
|
+
tcp: "tcp";
|
|
19
|
+
udp: "udp";
|
|
20
|
+
icmp: "icmp";
|
|
21
|
+
}>;
|
|
22
|
+
ports: z.ZodOptional<z.ZodString>;
|
|
23
|
+
sources: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
24
|
+
destinations: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
25
|
+
}, z.core.$strip>;
|
|
26
|
+
export type FirewallRule = z.infer<typeof FirewallRuleSchema>;
|
|
27
|
+
/**
|
|
28
|
+
* Adapter-specific configuration: the adapter id plus its own fields. Each
|
|
29
|
+
* adapter package defines and parses its own config schema; this kind names
|
|
30
|
+
* no provider, so a config for any adapter — including one contributed by a
|
|
31
|
+
* user plugin — parses here, and the adapter validates its own grammar.
|
|
32
|
+
*/
|
|
33
|
+
export declare const FirewallConfigSchema: z.ZodObject<{
|
|
34
|
+
adapter: z.ZodString;
|
|
35
|
+
}, z.core.$loose>;
|
|
36
|
+
export type FirewallConfig = z.infer<typeof FirewallConfigSchema>;
|
|
37
|
+
export declare const FirewallDescriptorSchema: z.ZodObject<{
|
|
38
|
+
id: z.ZodString;
|
|
39
|
+
name: z.ZodOptional<z.ZodString>;
|
|
40
|
+
description: z.ZodOptional<z.ZodString>;
|
|
41
|
+
tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
42
|
+
hardware: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
43
|
+
enabled: z.ZodOptional<z.ZodBoolean>;
|
|
44
|
+
priority: z.ZodOptional<z.ZodNumber>;
|
|
45
|
+
capabilityId: z.ZodOptional<z.ZodString>;
|
|
46
|
+
requiredContext: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
47
|
+
optionalContext: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
48
|
+
retention: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
|
|
49
|
+
maxAgeDays: z.ZodOptional<z.ZodNumber>;
|
|
50
|
+
maxEntries: z.ZodOptional<z.ZodNumber>;
|
|
51
|
+
maxBytes: z.ZodOptional<z.ZodNumber>;
|
|
52
|
+
cascadeFrom: z.ZodOptional<z.ZodString>;
|
|
53
|
+
ageField: z.ZodOptional<z.ZodString>;
|
|
54
|
+
reason: z.ZodString;
|
|
55
|
+
enforcedBy: z.ZodOptional<z.ZodString>;
|
|
56
|
+
}, z.core.$strip>]>>;
|
|
57
|
+
kind: z.ZodLiteral<"infra/firewall">;
|
|
58
|
+
inboundRules: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
59
|
+
protocol: z.ZodEnum<{
|
|
60
|
+
tcp: "tcp";
|
|
61
|
+
udp: "udp";
|
|
62
|
+
icmp: "icmp";
|
|
63
|
+
}>;
|
|
64
|
+
ports: z.ZodOptional<z.ZodString>;
|
|
65
|
+
sources: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
66
|
+
destinations: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
67
|
+
}, z.core.$strip>>>;
|
|
68
|
+
outboundRules: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
69
|
+
protocol: z.ZodEnum<{
|
|
70
|
+
tcp: "tcp";
|
|
71
|
+
udp: "udp";
|
|
72
|
+
icmp: "icmp";
|
|
73
|
+
}>;
|
|
74
|
+
ports: z.ZodOptional<z.ZodString>;
|
|
75
|
+
sources: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
76
|
+
destinations: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
77
|
+
}, z.core.$strip>>>;
|
|
78
|
+
config: z.ZodOptional<z.ZodObject<{
|
|
79
|
+
adapter: z.ZodString;
|
|
80
|
+
}, z.core.$loose>>;
|
|
81
|
+
}, z.core.$strip>;
|
|
82
|
+
export type FirewallDescriptor = z.infer<typeof FirewallDescriptorSchema>;
|
|
83
|
+
declare class DefaultFirewallImplementation {
|
|
84
|
+
readonly descriptor: RuntimeDescriptor;
|
|
85
|
+
readonly context: KindContext;
|
|
86
|
+
/** The descriptor as this kind's schema reads it. */
|
|
87
|
+
readonly config: FirewallDescriptor;
|
|
88
|
+
constructor(descriptor: RuntimeDescriptor, context: KindContext);
|
|
89
|
+
}
|
|
90
|
+
export declare const firewallKind: import("@vibesdotdev/kernel").RuntimeKindDescriptorRecord<DefaultFirewallImplementation>;
|
|
91
|
+
export {};
|
|
92
|
+
//# sourceMappingURL=firewall.kind.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"firewall.kind.d.ts","sourceRoot":"","sources":["../../src/kinds/firewall.kind.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,KAAK,CAAC,MAAM,QAAQ,CAAC;AAG5B,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wCAAwC,CAAC;AAChF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;AAIpE,eAAO,MAAM,kBAAkB;;;;;;;;;iBAK7B,CAAC;AACH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAQ9D;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB;;iBAE/B,CAAC;AACH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAElE,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAGnC,CAAC;AAEH,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAE1E,cAAM,6BAA6B;aAIjB,UAAU,EAAE,iBAAiB;aAC7B,OAAO,EAAE,WAAW;IAJrC,qDAAqD;IACrD,QAAQ,CAAC,MAAM,EAAE,kBAAkB,CAAC;gBAEnB,UAAU,EAAE,iBAAiB,EAC7B,OAAO,EAAE,WAAW;CAKrC;AAED,eAAO,MAAM,YAAY,0FAKvB,CAAC"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Kind: infra/firewall
|
|
3
|
+
*
|
|
4
|
+
* Provider-neutral firewall descriptor. Used both for compute-level firewalls
|
|
5
|
+
* (e.g., DigitalOcean cloud firewall, attached to droplets) and the DOKS
|
|
6
|
+
* control-plane firewall.
|
|
7
|
+
*
|
|
8
|
+
* `config` is an open, adapter-keyed shape (DigitalOcean's firewall config
|
|
9
|
+
* lives in `@vibesdotdev/integrations-digitalocean`); this kind names no
|
|
10
|
+
* provider, so a config for any adapter parses here and the adapter
|
|
11
|
+
* validates its own grammar.
|
|
12
|
+
*/
|
|
13
|
+
import * as z from 'zod/v4';
|
|
14
|
+
import { createRuntimeKind } from '@vibesdotdev/kernel/factory/kind';
|
|
15
|
+
import { RuntimeDescriptorSchema } from '@vibesdotdev/kernel/schemas/descriptor';
|
|
16
|
+
import { readKindDescriptor } from "./read-descriptor.js";
|
|
17
|
+
import { INFRA_DISCOVERY_PATTERNS } from "./discovery.js";
|
|
18
|
+
export const FirewallRuleSchema = z.object({
|
|
19
|
+
protocol: z.enum(['tcp', 'udp', 'icmp']),
|
|
20
|
+
ports: z.string().optional(),
|
|
21
|
+
sources: z.array(z.string()).optional(),
|
|
22
|
+
destinations: z.array(z.string()).optional()
|
|
23
|
+
});
|
|
24
|
+
const FirewallBaseSchema = RuntimeDescriptorSchema.extend({
|
|
25
|
+
kind: z.literal('infra/firewall'),
|
|
26
|
+
inboundRules: z.array(FirewallRuleSchema).optional(),
|
|
27
|
+
outboundRules: z.array(FirewallRuleSchema).optional()
|
|
28
|
+
});
|
|
29
|
+
/**
|
|
30
|
+
* Adapter-specific configuration: the adapter id plus its own fields. Each
|
|
31
|
+
* adapter package defines and parses its own config schema; this kind names
|
|
32
|
+
* no provider, so a config for any adapter — including one contributed by a
|
|
33
|
+
* user plugin — parses here, and the adapter validates its own grammar.
|
|
34
|
+
*/
|
|
35
|
+
export const FirewallConfigSchema = z.looseObject({
|
|
36
|
+
adapter: z.string().min(1)
|
|
37
|
+
});
|
|
38
|
+
export const FirewallDescriptorSchema = FirewallBaseSchema.extend({
|
|
39
|
+
/** Adapter-specific configuration, parsed by the adapter that owns it. */
|
|
40
|
+
config: FirewallConfigSchema.optional()
|
|
41
|
+
});
|
|
42
|
+
class DefaultFirewallImplementation {
|
|
43
|
+
descriptor;
|
|
44
|
+
context;
|
|
45
|
+
/** The descriptor as this kind's schema reads it. */
|
|
46
|
+
config;
|
|
47
|
+
constructor(descriptor, context) {
|
|
48
|
+
this.descriptor = descriptor;
|
|
49
|
+
this.context = context;
|
|
50
|
+
this.config = readKindDescriptor(FirewallDescriptorSchema, descriptor);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
export const firewallKind = createRuntimeKind({
|
|
54
|
+
id: 'infra/firewall',
|
|
55
|
+
descriptorSchema: FirewallDescriptorSchema,
|
|
56
|
+
defaultImplementation: DefaultFirewallImplementation,
|
|
57
|
+
discoveryPatterns: INFRA_DISCOVERY_PATTERNS
|
|
58
|
+
});
|
|
59
|
+
//# sourceMappingURL=firewall.kind.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"firewall.kind.js","sourceRoot":"","sources":["../../src/kinds/firewall.kind.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,KAAK,CAAC,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AACrE,OAAO,EAAE,uBAAuB,EAAE,MAAM,wCAAwC,CAAC;AAGjF,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAC;AAE1D,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1C,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IACxC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5B,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IACvC,YAAY,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;CAC5C,CAAC,CAAC;AAGH,MAAM,kBAAkB,GAAG,uBAAuB,CAAC,MAAM,CAAC;IACzD,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC;IACjC,YAAY,EAAE,CAAC,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC,QAAQ,EAAE;IACpD,aAAa,EAAE,CAAC,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC,QAAQ,EAAE;CACrD,CAAC,CAAC;AAEH;;;;;GAKG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,WAAW,CAAC;IACjD,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;CAC1B,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,wBAAwB,GAAG,kBAAkB,CAAC,MAAM,CAAC;IACjE,0EAA0E;IAC1E,MAAM,EAAE,oBAAoB,CAAC,QAAQ,EAAE;CACvC,CAAC,CAAC;AAIH,MAAM,6BAA6B;IAIjB;IACA;IAJjB,qDAAqD;IAC5C,MAAM,CAAqB;IACpC,YACiB,UAA6B,EAC7B,OAAoB;QADpB,eAAU,GAAV,UAAU,CAAmB;QAC7B,YAAO,GAAP,OAAO,CAAa;QAEpC,IAAI,CAAC,MAAM,GAAG,kBAAkB,CAAC,wBAAwB,EAAE,UAAU,CAAC,CAAC;IACxE,CAAC;CAED;AAED,MAAM,CAAC,MAAM,YAAY,GAAG,iBAAiB,CAAoD;IAChG,EAAE,EAAE,gBAAgB;IACpB,gBAAgB,EAAE,wBAAwB;IAC1C,qBAAqB,EAAE,6BAA6B;IACpD,iBAAiB,EAAE,wBAAwB;CAC3C,CAAC,CAAC"}
|
|
@@ -3,18 +3,19 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Describes a git hosting service instance (e.g. Gitea, Forgejo).
|
|
5
5
|
*
|
|
6
|
-
* Schema shape: strict common base + `config
|
|
6
|
+
* Schema shape: strict common base + an open, adapter-keyed `config`.
|
|
7
7
|
*
|
|
8
8
|
* - The base (this file) defines fields that are universal across every
|
|
9
9
|
* adapter: id/kind/name + the hosting shape every git host declares
|
|
10
10
|
* (domain, url, storagePath, authMethod, etc.).
|
|
11
|
-
* - Adapter-specific fields
|
|
12
|
-
*
|
|
13
|
-
*
|
|
11
|
+
* - Adapter-specific fields live exclusively under `config`, keyed by
|
|
12
|
+
* `adapter`. Each adapter package defines and parses its own concrete
|
|
13
|
+
* schema (the DigitalOcean Gitea adapter's lives in
|
|
14
|
+
* `@vibesdotdev/integrations-digitalocean`); this kind names no provider.
|
|
14
15
|
*/
|
|
15
16
|
import * as z from 'zod/v4';
|
|
16
|
-
import type {
|
|
17
|
-
import type {
|
|
17
|
+
import type { RuntimeDescriptor } from '@vibesdotdev/kernel/schemas/descriptor';
|
|
18
|
+
import type { KindContext } from '@vibesdotdev/kernel/schemas/kind';
|
|
18
19
|
export declare const GitHostingTypeSchema: z.ZodEnum<{
|
|
19
20
|
gitea: "gitea";
|
|
20
21
|
forgejo: "forgejo";
|
|
@@ -22,27 +23,18 @@ export declare const GitHostingTypeSchema: z.ZodEnum<{
|
|
|
22
23
|
export type GitHostingType = z.infer<typeof GitHostingTypeSchema>;
|
|
23
24
|
export declare const GitHostingAuthMethodSchema: z.ZodEnum<{
|
|
24
25
|
local: "local";
|
|
25
|
-
oauth: "oauth";
|
|
26
26
|
token: "token";
|
|
27
|
+
oauth: "oauth";
|
|
27
28
|
}>;
|
|
28
29
|
export type GitHostingAuthMethod = z.infer<typeof GitHostingAuthMethodSchema>;
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
}, z.core.$
|
|
37
|
-
export declare const GitHostingConfigSchema: z.ZodUnion<readonly [z.ZodObject<{
|
|
38
|
-
dropletSize: z.ZodDefault<z.ZodString>;
|
|
39
|
-
dockerImage: z.ZodDefault<z.ZodString>;
|
|
40
|
-
volumeSizeGb: z.ZodDefault<z.ZodNumber>;
|
|
41
|
-
domain: z.ZodString;
|
|
42
|
-
sshPort: z.ZodDefault<z.ZodNumber>;
|
|
43
|
-
httpPort: z.ZodDefault<z.ZodNumber>;
|
|
44
|
-
adapter: z.ZodLiteral<"gitea-doks">;
|
|
45
|
-
}, z.core.$strip>]>;
|
|
30
|
+
/**
|
|
31
|
+
* Adapter-specific configuration: the adapter id plus its own fields. Each
|
|
32
|
+
* adapter package defines and parses its own config schema; this kind names
|
|
33
|
+
* no provider.
|
|
34
|
+
*/
|
|
35
|
+
export declare const GitHostingConfigSchema: z.ZodObject<{
|
|
36
|
+
adapter: z.ZodString;
|
|
37
|
+
}, z.core.$loose>;
|
|
46
38
|
export declare const GitHostingDescriptorSchema: z.ZodObject<{
|
|
47
39
|
id: z.ZodString;
|
|
48
40
|
name: z.ZodOptional<z.ZodString>;
|
|
@@ -51,8 +43,18 @@ export declare const GitHostingDescriptorSchema: z.ZodObject<{
|
|
|
51
43
|
hardware: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
52
44
|
enabled: z.ZodOptional<z.ZodBoolean>;
|
|
53
45
|
priority: z.ZodOptional<z.ZodNumber>;
|
|
46
|
+
capabilityId: z.ZodOptional<z.ZodString>;
|
|
54
47
|
requiredContext: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
55
48
|
optionalContext: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
49
|
+
retention: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
|
|
50
|
+
maxAgeDays: z.ZodOptional<z.ZodNumber>;
|
|
51
|
+
maxEntries: z.ZodOptional<z.ZodNumber>;
|
|
52
|
+
maxBytes: z.ZodOptional<z.ZodNumber>;
|
|
53
|
+
cascadeFrom: z.ZodOptional<z.ZodString>;
|
|
54
|
+
ageField: z.ZodOptional<z.ZodString>;
|
|
55
|
+
reason: z.ZodString;
|
|
56
|
+
enforcedBy: z.ZodOptional<z.ZodString>;
|
|
57
|
+
}, z.core.$strip>]>>;
|
|
56
58
|
kind: z.ZodLiteral<"infra/git-hosting">;
|
|
57
59
|
url: z.ZodString;
|
|
58
60
|
hostname: z.ZodString;
|
|
@@ -63,8 +65,8 @@ export declare const GitHostingDescriptorSchema: z.ZodObject<{
|
|
|
63
65
|
storagePath: z.ZodDefault<z.ZodString>;
|
|
64
66
|
authMethod: z.ZodDefault<z.ZodEnum<{
|
|
65
67
|
local: "local";
|
|
66
|
-
oauth: "oauth";
|
|
67
68
|
token: "token";
|
|
69
|
+
oauth: "oauth";
|
|
68
70
|
}>>;
|
|
69
71
|
ssl: z.ZodDefault<z.ZodBoolean>;
|
|
70
72
|
env: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
@@ -75,24 +77,20 @@ export declare const GitHostingDescriptorSchema: z.ZodObject<{
|
|
|
75
77
|
secret: z.ZodOptional<z.ZodBoolean>;
|
|
76
78
|
description: z.ZodOptional<z.ZodString>;
|
|
77
79
|
storeKey: z.ZodOptional<z.ZodString>;
|
|
80
|
+
storeBinding: z.ZodOptional<z.ZodBoolean>;
|
|
78
81
|
}, z.core.$strip>>>;
|
|
79
|
-
config: z.ZodOptional<z.
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
volumeSizeGb: z.ZodDefault<z.ZodNumber>;
|
|
83
|
-
domain: z.ZodString;
|
|
84
|
-
sshPort: z.ZodDefault<z.ZodNumber>;
|
|
85
|
-
httpPort: z.ZodDefault<z.ZodNumber>;
|
|
86
|
-
adapter: z.ZodLiteral<"gitea-doks">;
|
|
87
|
-
}, z.core.$strip>]>>;
|
|
82
|
+
config: z.ZodOptional<z.ZodObject<{
|
|
83
|
+
adapter: z.ZodString;
|
|
84
|
+
}, z.core.$loose>>;
|
|
88
85
|
}, z.core.$strip>;
|
|
89
86
|
export type GitHostingDescriptor = z.infer<typeof GitHostingDescriptorSchema>;
|
|
90
87
|
declare class DefaultGitHostingImplementation {
|
|
91
88
|
readonly descriptor: RuntimeDescriptor;
|
|
92
|
-
readonly context:
|
|
93
|
-
|
|
94
|
-
|
|
89
|
+
readonly context: KindContext;
|
|
90
|
+
/** The descriptor as this kind's schema reads it. */
|
|
91
|
+
readonly config: GitHostingDescriptor;
|
|
92
|
+
constructor(descriptor: RuntimeDescriptor, context: KindContext);
|
|
95
93
|
}
|
|
96
|
-
export declare const gitHostingKind: RuntimeKindDescriptorRecord<DefaultGitHostingImplementation>;
|
|
94
|
+
export declare const gitHostingKind: import("@vibesdotdev/kernel").RuntimeKindDescriptorRecord<DefaultGitHostingImplementation>;
|
|
97
95
|
export {};
|
|
98
96
|
//# sourceMappingURL=git-hosting.kind.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"git-hosting.kind.d.ts","sourceRoot":"","sources":["../../src/kinds/git-hosting.kind.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"git-hosting.kind.d.ts","sourceRoot":"","sources":["../../src/kinds/git-hosting.kind.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,KAAK,CAAC,MAAM,QAAQ,CAAC;AAG5B,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wCAAwC,CAAC;AAChF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;AAKpE,eAAO,MAAM,oBAAoB;;;EAA+B,CAAC;AACjE,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAElE,eAAO,MAAM,0BAA0B;;;;EAAsC,CAAC;AAC9E,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AA2B9E;;;;GAIG;AACH,eAAO,MAAM,sBAAsB;;iBAEjC,CAAC;AAEH,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAGrC,CAAC;AAEH,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAE9E,cAAM,+BAA+B;aAInB,UAAU,EAAE,iBAAiB;aAC7B,OAAO,EAAE,WAAW;IAJrC,qDAAqD;IACrD,QAAQ,CAAC,MAAM,EAAE,oBAAoB,CAAC;gBAErB,UAAU,EAAE,iBAAiB,EAC7B,OAAO,EAAE,WAAW;CAKrC;AAED,eAAO,MAAM,cAAc,4FAKzB,CAAC"}
|
|
@@ -3,19 +3,21 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Describes a git hosting service instance (e.g. Gitea, Forgejo).
|
|
5
5
|
*
|
|
6
|
-
* Schema shape: strict common base + `config
|
|
6
|
+
* Schema shape: strict common base + an open, adapter-keyed `config`.
|
|
7
7
|
*
|
|
8
8
|
* - The base (this file) defines fields that are universal across every
|
|
9
9
|
* adapter: id/kind/name + the hosting shape every git host declares
|
|
10
10
|
* (domain, url, storagePath, authMethod, etc.).
|
|
11
|
-
* - Adapter-specific fields
|
|
12
|
-
*
|
|
13
|
-
*
|
|
11
|
+
* - Adapter-specific fields live exclusively under `config`, keyed by
|
|
12
|
+
* `adapter`. Each adapter package defines and parses its own concrete
|
|
13
|
+
* schema (the DigitalOcean Gitea adapter's lives in
|
|
14
|
+
* `@vibesdotdev/integrations-digitalocean`); this kind names no provider.
|
|
14
15
|
*/
|
|
15
16
|
import * as z from 'zod/v4';
|
|
16
|
-
import { createRuntimeKind } from '@vibesdotdev/
|
|
17
|
-
import { RuntimeDescriptorSchema } from '@vibesdotdev/
|
|
18
|
-
import {
|
|
17
|
+
import { createRuntimeKind } from '@vibesdotdev/kernel/factory/kind';
|
|
18
|
+
import { RuntimeDescriptorSchema } from '@vibesdotdev/kernel/schemas/descriptor';
|
|
19
|
+
import { readKindDescriptor } from "./read-descriptor.js";
|
|
20
|
+
import { INFRA_DISCOVERY_PATTERNS } from "./discovery.js";
|
|
19
21
|
import { deploymentEnvRequirementSchema } from "../schemas.js";
|
|
20
22
|
export const GitHostingTypeSchema = z.enum(['gitea', 'forgejo']);
|
|
21
23
|
export const GitHostingAuthMethodSchema = z.enum(['local', 'oauth', 'token']);
|
|
@@ -36,46 +38,33 @@ const GitHostingBaseSchema = RuntimeDescriptorSchema.extend({
|
|
|
36
38
|
/** Environment variable requirements. */
|
|
37
39
|
env: z.array(deploymentEnvRequirementSchema).optional()
|
|
38
40
|
});
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
/** Primary domain for the Gitea instance. */
|
|
47
|
-
domain: z.string().min(1),
|
|
48
|
-
/** SSH port exposed on the service. */
|
|
49
|
-
sshPort: z.number().int().positive().default(22),
|
|
50
|
-
/** HTTP port exposed on the service. */
|
|
51
|
-
httpPort: z.number().int().positive().default(3000)
|
|
41
|
+
/**
|
|
42
|
+
* Adapter-specific configuration: the adapter id plus its own fields. Each
|
|
43
|
+
* adapter package defines and parses its own config schema; this kind names
|
|
44
|
+
* no provider.
|
|
45
|
+
*/
|
|
46
|
+
export const GitHostingConfigSchema = z.looseObject({
|
|
47
|
+
adapter: z.string().min(1)
|
|
52
48
|
});
|
|
53
|
-
export const GitHostingConfigSchema = z.union([
|
|
54
|
-
GiteaDoksGitHostingConfigSchema.extend({ adapter: z.literal('gitea-doks') })
|
|
55
|
-
]);
|
|
56
49
|
export const GitHostingDescriptorSchema = GitHostingBaseSchema.extend({
|
|
57
|
-
/**
|
|
58
|
-
* Adapter-specific configuration. Discriminated union — each adapter
|
|
59
|
-
* package defines its own config schema under its discriminator key.
|
|
60
|
-
*/
|
|
50
|
+
/** Adapter-specific configuration, parsed by the adapter that owns it. */
|
|
61
51
|
config: GitHostingConfigSchema.optional()
|
|
62
52
|
});
|
|
63
53
|
class DefaultGitHostingImplementation {
|
|
64
54
|
descriptor;
|
|
65
55
|
context;
|
|
56
|
+
/** The descriptor as this kind's schema reads it. */
|
|
57
|
+
config;
|
|
66
58
|
constructor(descriptor, context) {
|
|
67
59
|
this.descriptor = descriptor;
|
|
68
60
|
this.context = context;
|
|
69
|
-
|
|
70
|
-
get config() {
|
|
71
|
-
return this.descriptor;
|
|
61
|
+
this.config = readKindDescriptor(GitHostingDescriptorSchema, descriptor);
|
|
72
62
|
}
|
|
73
63
|
}
|
|
74
64
|
export const gitHostingKind = createRuntimeKind({
|
|
75
65
|
id: 'infra/git-hosting',
|
|
76
66
|
descriptorSchema: GitHostingDescriptorSchema,
|
|
77
67
|
defaultImplementation: DefaultGitHostingImplementation,
|
|
78
|
-
|
|
79
|
-
extractStem
|
|
68
|
+
discoveryPatterns: INFRA_DISCOVERY_PATTERNS
|
|
80
69
|
});
|
|
81
70
|
//# sourceMappingURL=git-hosting.kind.js.map
|