@vibesdotdev/infra-core 0.0.1 → 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 +34 -63
- 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 +23 -34
- 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 +141 -35
- 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 +123 -40
- package/SPEC.md +0 -169
- 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,162 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Infra DNS Kind
|
|
3
|
+
*
|
|
4
|
+
* Provider-agnostic schema for authoritative DNS records. Per-provider
|
|
5
|
+
* implementations (cloudflare-dns, do-domains, route53) map this shape
|
|
6
|
+
* onto the native API.
|
|
7
|
+
*
|
|
8
|
+
* `proxied` is modeled here rather than in the Cloudflare adapter because
|
|
9
|
+
* whether a hostname is served through a reverse proxy is a product
|
|
10
|
+
* decision with protocol consequences, not a vendor detail. Git over HTTP
|
|
11
|
+
* requires a direct origin; a proxied record silently breaks smart-HTTP
|
|
12
|
+
* pack negotiation. Providers without a proxy layer reject `proxied: true`
|
|
13
|
+
* as unsupported rather than accepting and ignoring it.
|
|
14
|
+
*/
|
|
15
|
+
import * as z from 'zod/v4';
|
|
16
|
+
import type { InfraAuthorityFingerprint } from './inventory.kind.ts';
|
|
17
|
+
declare const DnsRecordTypeSchema: z.ZodEnum<{
|
|
18
|
+
A: "A";
|
|
19
|
+
CNAME: "CNAME";
|
|
20
|
+
AAAA: "AAAA";
|
|
21
|
+
TXT: "TXT";
|
|
22
|
+
MX: "MX";
|
|
23
|
+
SRV: "SRV";
|
|
24
|
+
CAA: "CAA";
|
|
25
|
+
NS: "NS";
|
|
26
|
+
}>;
|
|
27
|
+
export type DnsRecordType = z.infer<typeof DnsRecordTypeSchema>;
|
|
28
|
+
declare const DnsRecordSchema: z.ZodObject<{
|
|
29
|
+
name: z.ZodString;
|
|
30
|
+
type: z.ZodEnum<{
|
|
31
|
+
A: "A";
|
|
32
|
+
CNAME: "CNAME";
|
|
33
|
+
AAAA: "AAAA";
|
|
34
|
+
TXT: "TXT";
|
|
35
|
+
MX: "MX";
|
|
36
|
+
SRV: "SRV";
|
|
37
|
+
CAA: "CAA";
|
|
38
|
+
NS: "NS";
|
|
39
|
+
}>;
|
|
40
|
+
content: z.ZodString;
|
|
41
|
+
ttl: z.ZodDefault<z.ZodNumber>;
|
|
42
|
+
proxied: z.ZodDefault<z.ZodBoolean>;
|
|
43
|
+
priority: z.ZodOptional<z.ZodNumber>;
|
|
44
|
+
comment: z.ZodOptional<z.ZodString>;
|
|
45
|
+
}, z.core.$strip>;
|
|
46
|
+
export type DnsRecord = z.infer<typeof DnsRecordSchema>;
|
|
47
|
+
export type DnsRecordInput = z.input<typeof DnsRecordSchema>;
|
|
48
|
+
declare const DnsBaseSchema: z.ZodObject<{
|
|
49
|
+
id: z.ZodString;
|
|
50
|
+
name: z.ZodOptional<z.ZodString>;
|
|
51
|
+
description: z.ZodOptional<z.ZodString>;
|
|
52
|
+
tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
53
|
+
hardware: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
54
|
+
enabled: z.ZodOptional<z.ZodBoolean>;
|
|
55
|
+
priority: z.ZodOptional<z.ZodNumber>;
|
|
56
|
+
capabilityId: z.ZodOptional<z.ZodString>;
|
|
57
|
+
requiredContext: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
58
|
+
optionalContext: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
59
|
+
config: z.ZodOptional<z.ZodUnknown>;
|
|
60
|
+
retention: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
|
|
61
|
+
maxAgeDays: z.ZodOptional<z.ZodNumber>;
|
|
62
|
+
maxEntries: z.ZodOptional<z.ZodNumber>;
|
|
63
|
+
maxBytes: z.ZodOptional<z.ZodNumber>;
|
|
64
|
+
cascadeFrom: z.ZodOptional<z.ZodString>;
|
|
65
|
+
ageField: z.ZodOptional<z.ZodString>;
|
|
66
|
+
reason: z.ZodString;
|
|
67
|
+
enforcedBy: z.ZodOptional<z.ZodString>;
|
|
68
|
+
}, z.core.$strip>]>>;
|
|
69
|
+
kind: z.ZodLiteral<"infra/dns">;
|
|
70
|
+
adapter: z.ZodString;
|
|
71
|
+
adapterConfig: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
72
|
+
zone: z.ZodOptional<z.ZodString>;
|
|
73
|
+
environment: z.ZodDefault<z.ZodString>;
|
|
74
|
+
records: z.ZodDefault<z.ZodArray<z.ZodObject<{
|
|
75
|
+
name: z.ZodString;
|
|
76
|
+
type: z.ZodEnum<{
|
|
77
|
+
A: "A";
|
|
78
|
+
CNAME: "CNAME";
|
|
79
|
+
AAAA: "AAAA";
|
|
80
|
+
TXT: "TXT";
|
|
81
|
+
MX: "MX";
|
|
82
|
+
SRV: "SRV";
|
|
83
|
+
CAA: "CAA";
|
|
84
|
+
NS: "NS";
|
|
85
|
+
}>;
|
|
86
|
+
content: z.ZodString;
|
|
87
|
+
ttl: z.ZodDefault<z.ZodNumber>;
|
|
88
|
+
proxied: z.ZodDefault<z.ZodBoolean>;
|
|
89
|
+
priority: z.ZodOptional<z.ZodNumber>;
|
|
90
|
+
comment: z.ZodOptional<z.ZodString>;
|
|
91
|
+
}, z.core.$strip>>>;
|
|
92
|
+
}, z.core.$strip>;
|
|
93
|
+
export type InfraDnsDescriptor = z.infer<typeof DnsBaseSchema>;
|
|
94
|
+
export type InfraDnsDescriptorInput = z.input<typeof DnsBaseSchema>;
|
|
95
|
+
/** A record as it exists on the provider, carrying the provider-assigned id. */
|
|
96
|
+
export type LiveDnsRecord = DnsRecord & {
|
|
97
|
+
providerId: string;
|
|
98
|
+
zone: string;
|
|
99
|
+
};
|
|
100
|
+
export interface DnsZoneStatus {
|
|
101
|
+
zone: string;
|
|
102
|
+
status: string;
|
|
103
|
+
nameservers: string[];
|
|
104
|
+
activatedOn?: string;
|
|
105
|
+
modifiedOn?: string;
|
|
106
|
+
}
|
|
107
|
+
export interface DnsZoneActivationResult {
|
|
108
|
+
requested: boolean;
|
|
109
|
+
status: DnsZoneStatus;
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Implementation contract every provider implements. `upsertRecord` is
|
|
113
|
+
* idempotent on (name, type): it updates the existing record in place
|
|
114
|
+
* rather than creating a duplicate RRset entry. Opt-in matchContent selects by
|
|
115
|
+
* exact content as well, creating a sibling when that value is absent. Callers
|
|
116
|
+
* must check supportsContentMatch before using this mode.
|
|
117
|
+
*/
|
|
118
|
+
export interface DnsImplementation {
|
|
119
|
+
/** Whether diff/upsert support preserving siblings by matching exact content. */
|
|
120
|
+
supportsContentMatch?: boolean;
|
|
121
|
+
/** Redacted authority used by the latest provider request. */
|
|
122
|
+
getAuthority?(): Promise<InfraAuthorityFingerprint>;
|
|
123
|
+
/** List records, optionally narrowed by exact name and/or type. */
|
|
124
|
+
listRecords(filter?: {
|
|
125
|
+
name?: string;
|
|
126
|
+
type?: DnsRecordType;
|
|
127
|
+
}): Promise<LiveDnsRecord[]>;
|
|
128
|
+
/** Create or update a record by (name, type). Returns the provider id. */
|
|
129
|
+
upsertRecord(record: DnsRecordInput, options?: {
|
|
130
|
+
matchContent?: boolean;
|
|
131
|
+
}): Promise<{
|
|
132
|
+
providerId: string;
|
|
133
|
+
created: boolean;
|
|
134
|
+
}>;
|
|
135
|
+
/** Delete by provider id. Absence is not an error. */
|
|
136
|
+
deleteRecord(providerId: string): Promise<boolean>;
|
|
137
|
+
/**
|
|
138
|
+
* Diff desired against live for the names in `desired`. Records outside
|
|
139
|
+
* that set are never reported for deletion — this kind is additive by
|
|
140
|
+
* default so it can coexist with records owned elsewhere.
|
|
141
|
+
*/
|
|
142
|
+
diff(desired: DnsRecordInput[], options?: {
|
|
143
|
+
matchContent?: boolean;
|
|
144
|
+
}): Promise<{
|
|
145
|
+
create: DnsRecord[];
|
|
146
|
+
update: Array<{
|
|
147
|
+
providerId: string;
|
|
148
|
+
from: LiveDnsRecord;
|
|
149
|
+
to: DnsRecord;
|
|
150
|
+
}>;
|
|
151
|
+
unchanged: LiveDnsRecord[];
|
|
152
|
+
}>;
|
|
153
|
+
/** Read the authoritative zone's provider activation state. */
|
|
154
|
+
getZoneStatus?(): Promise<DnsZoneStatus>;
|
|
155
|
+
/** Request an immediate provider activation check for a pending zone. */
|
|
156
|
+
requestZoneActivation?(): Promise<DnsZoneActivationResult>;
|
|
157
|
+
}
|
|
158
|
+
export declare const dnsKind: import("@vibesdotdev/kernel").RuntimeKindDescriptorRecord<DnsImplementation>;
|
|
159
|
+
export type InfraDnsKind = InfraDnsDescriptor;
|
|
160
|
+
export type InfraDnsKindInput = InfraDnsDescriptorInput;
|
|
161
|
+
export { DnsBaseSchema as InfraDnsDescriptorSchema, DnsRecordSchema, DnsRecordTypeSchema };
|
|
162
|
+
//# sourceMappingURL=dns.kind.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dns.kind.d.ts","sourceRoot":"","sources":["../../src/kinds/dns.kind.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Infra DNS Kind
|
|
3
|
+
*
|
|
4
|
+
* Provider-agnostic schema for authoritative DNS records. Per-provider
|
|
5
|
+
* implementations (cloudflare-dns, do-domains, route53) map this shape
|
|
6
|
+
* onto the native API.
|
|
7
|
+
*
|
|
8
|
+
* `proxied` is modeled here rather than in the Cloudflare adapter because
|
|
9
|
+
* whether a hostname is served through a reverse proxy is a product
|
|
10
|
+
* decision with protocol consequences, not a vendor detail. Git over HTTP
|
|
11
|
+
* requires a direct origin; a proxied record silently breaks smart-HTTP
|
|
12
|
+
* pack negotiation. Providers without a proxy layer reject `proxied: true`
|
|
13
|
+
* as unsupported rather than accepting and ignoring it.
|
|
14
|
+
*/
|
|
15
|
+
import * as z from 'zod/v4';
|
|
16
|
+
import { createRuntimeKind } from '@vibesdotdev/kernel/factory/kind';
|
|
17
|
+
import { RuntimeDescriptorSchema } from '@vibesdotdev/kernel/schemas/descriptor';
|
|
18
|
+
import { INFRA_DISCOVERY_PATTERNS } from "./discovery.js";
|
|
19
|
+
const DnsRecordTypeSchema = z.enum(['A', 'AAAA', 'CNAME', 'TXT', 'MX', 'SRV', 'CAA', 'NS']);
|
|
20
|
+
const DnsRecordSchema = z.object({
|
|
21
|
+
/** Fully-qualified record name (e.g. `git.vibes.dev`). */
|
|
22
|
+
name: z.string().min(1),
|
|
23
|
+
type: DnsRecordTypeSchema,
|
|
24
|
+
/** Record value: IP for A/AAAA, target for CNAME, payload for TXT. */
|
|
25
|
+
content: z.string().min(1),
|
|
26
|
+
/** TTL in seconds. `1` means "provider automatic" where supported. */
|
|
27
|
+
ttl: z.number().int().positive().default(1),
|
|
28
|
+
/**
|
|
29
|
+
* Serve through the provider's reverse proxy when true. Must be false
|
|
30
|
+
* for protocols the proxy cannot carry (git smart-HTTP, raw SSH).
|
|
31
|
+
*/
|
|
32
|
+
proxied: z.boolean().default(false),
|
|
33
|
+
/** Priority for MX/SRV. */
|
|
34
|
+
priority: z.number().int().nonnegative().optional(),
|
|
35
|
+
comment: z.string().optional()
|
|
36
|
+
});
|
|
37
|
+
const DnsBaseSchema = RuntimeDescriptorSchema.extend({
|
|
38
|
+
kind: z.literal('infra/dns'),
|
|
39
|
+
/** Adapter id (e.g. 'cloudflare-dns', 'do-domains'). */
|
|
40
|
+
adapter: z.string().min(1),
|
|
41
|
+
adapterConfig: z.record(z.string(), z.unknown()).optional(),
|
|
42
|
+
/** Apex zone this descriptor is authoritative for (e.g. `vibes.dev`). */
|
|
43
|
+
zone: z.string().min(1).optional(),
|
|
44
|
+
/** Environment name for credential resolution via `vibes secrets`. */
|
|
45
|
+
environment: z.string().default('local'),
|
|
46
|
+
records: z.array(DnsRecordSchema).default([])
|
|
47
|
+
});
|
|
48
|
+
export const dnsKind = createRuntimeKind({
|
|
49
|
+
id: 'infra/dns',
|
|
50
|
+
descriptorSchema: DnsBaseSchema,
|
|
51
|
+
discoveryPatterns: INFRA_DISCOVERY_PATTERNS
|
|
52
|
+
});
|
|
53
|
+
export { DnsBaseSchema as InfraDnsDescriptorSchema, DnsRecordSchema, DnsRecordTypeSchema };
|
|
54
|
+
//# sourceMappingURL=dns.kind.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dns.kind.js","sourceRoot":"","sources":["../../src/kinds/dns.kind.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;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,MAAM,mBAAmB,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;AAI5F,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC;IAChC,0DAA0D;IAC1D,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACvB,IAAI,EAAE,mBAAmB;IACzB,sEAAsE;IACtE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1B,sEAAsE;IACtE,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAC3C;;;OAGG;IACH,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;IACnC,2BAA2B;IAC3B,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE;IACnD,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAC9B,CAAC,CAAC;AAKH,MAAM,aAAa,GAAG,uBAAuB,CAAC,MAAM,CAAC;IACpD,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC;IAC5B,wDAAwD;IACxD,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,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;CAC7C,CAAC,CAAC;AAuDH,MAAM,CAAC,MAAM,OAAO,GAAG,iBAAiB,CAAwC;IAC/E,EAAE,EAAE,WAAW;IACf,gBAAgB,EAAE,aAAa;IAC/B,iBAAiB,EAAE,wBAAwB;CAC3C,CAAC,CAAC;AAKH,OAAO,EAAE,aAAa,IAAI,wBAAwB,EAAE,eAAe,EAAE,mBAAmB,EAAE,CAAC"}
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Kind: infra/drift
|
|
3
|
+
*
|
|
4
|
+
* Generic drift descriptor. Reports differences between declared infra
|
|
5
|
+
* descriptors and the live provider state. Drift entries cover missing
|
|
6
|
+
* resources, unmanaged resources, stale resources, unsafe public exposure,
|
|
7
|
+
* and unexpected cost drivers.
|
|
8
|
+
*/
|
|
9
|
+
import * as z from 'zod/v4';
|
|
10
|
+
import type { RuntimeDescriptor } from '@vibesdotdev/kernel/schemas/descriptor';
|
|
11
|
+
import type { KindContext } from '@vibesdotdev/kernel/schemas/kind';
|
|
12
|
+
export declare const DriftKindSchema: z.ZodEnum<{
|
|
13
|
+
missing: "missing";
|
|
14
|
+
unmanaged: "unmanaged";
|
|
15
|
+
stale: "stale";
|
|
16
|
+
"unsafe-public": "unsafe-public";
|
|
17
|
+
"cost-driver": "cost-driver";
|
|
18
|
+
"config-drift": "config-drift";
|
|
19
|
+
}>;
|
|
20
|
+
export type DriftKind = z.infer<typeof DriftKindSchema>;
|
|
21
|
+
export declare const DriftSeveritySchema: z.ZodEnum<{
|
|
22
|
+
info: "info";
|
|
23
|
+
critical: "critical";
|
|
24
|
+
warning: "warning";
|
|
25
|
+
}>;
|
|
26
|
+
export type DriftSeverity = z.infer<typeof DriftSeveritySchema>;
|
|
27
|
+
export declare const DriftEntrySchema: z.ZodObject<{
|
|
28
|
+
kind: z.ZodEnum<{
|
|
29
|
+
missing: "missing";
|
|
30
|
+
unmanaged: "unmanaged";
|
|
31
|
+
stale: "stale";
|
|
32
|
+
"unsafe-public": "unsafe-public";
|
|
33
|
+
"cost-driver": "cost-driver";
|
|
34
|
+
"config-drift": "config-drift";
|
|
35
|
+
}>;
|
|
36
|
+
severity: z.ZodDefault<z.ZodEnum<{
|
|
37
|
+
info: "info";
|
|
38
|
+
critical: "critical";
|
|
39
|
+
warning: "warning";
|
|
40
|
+
}>>;
|
|
41
|
+
resourceKind: z.ZodString;
|
|
42
|
+
resourceId: z.ZodOptional<z.ZodString>;
|
|
43
|
+
resourceName: z.ZodOptional<z.ZodString>;
|
|
44
|
+
message: z.ZodString;
|
|
45
|
+
expected: z.ZodOptional<z.ZodUnknown>;
|
|
46
|
+
actual: z.ZodOptional<z.ZodUnknown>;
|
|
47
|
+
}, z.core.$strip>;
|
|
48
|
+
export type DriftEntry = z.infer<typeof DriftEntrySchema>;
|
|
49
|
+
export declare const DriftReportSchema: z.ZodObject<{
|
|
50
|
+
provider: z.ZodString;
|
|
51
|
+
collectedAt: z.ZodString;
|
|
52
|
+
entries: z.ZodArray<z.ZodObject<{
|
|
53
|
+
kind: z.ZodEnum<{
|
|
54
|
+
missing: "missing";
|
|
55
|
+
unmanaged: "unmanaged";
|
|
56
|
+
stale: "stale";
|
|
57
|
+
"unsafe-public": "unsafe-public";
|
|
58
|
+
"cost-driver": "cost-driver";
|
|
59
|
+
"config-drift": "config-drift";
|
|
60
|
+
}>;
|
|
61
|
+
severity: z.ZodDefault<z.ZodEnum<{
|
|
62
|
+
info: "info";
|
|
63
|
+
critical: "critical";
|
|
64
|
+
warning: "warning";
|
|
65
|
+
}>>;
|
|
66
|
+
resourceKind: z.ZodString;
|
|
67
|
+
resourceId: z.ZodOptional<z.ZodString>;
|
|
68
|
+
resourceName: z.ZodOptional<z.ZodString>;
|
|
69
|
+
message: z.ZodString;
|
|
70
|
+
expected: z.ZodOptional<z.ZodUnknown>;
|
|
71
|
+
actual: z.ZodOptional<z.ZodUnknown>;
|
|
72
|
+
}, z.core.$strip>>;
|
|
73
|
+
}, z.core.$strip>;
|
|
74
|
+
export type DriftReport = z.infer<typeof DriftReportSchema>;
|
|
75
|
+
export declare const DriftDescriptorSchema: z.ZodObject<{
|
|
76
|
+
id: z.ZodString;
|
|
77
|
+
name: z.ZodOptional<z.ZodString>;
|
|
78
|
+
description: z.ZodOptional<z.ZodString>;
|
|
79
|
+
tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
80
|
+
hardware: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
81
|
+
enabled: z.ZodOptional<z.ZodBoolean>;
|
|
82
|
+
priority: z.ZodOptional<z.ZodNumber>;
|
|
83
|
+
capabilityId: z.ZodOptional<z.ZodString>;
|
|
84
|
+
requiredContext: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
85
|
+
optionalContext: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
86
|
+
config: z.ZodOptional<z.ZodUnknown>;
|
|
87
|
+
retention: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
|
|
88
|
+
maxAgeDays: z.ZodOptional<z.ZodNumber>;
|
|
89
|
+
maxEntries: z.ZodOptional<z.ZodNumber>;
|
|
90
|
+
maxBytes: z.ZodOptional<z.ZodNumber>;
|
|
91
|
+
cascadeFrom: z.ZodOptional<z.ZodString>;
|
|
92
|
+
ageField: z.ZodOptional<z.ZodString>;
|
|
93
|
+
reason: z.ZodString;
|
|
94
|
+
enforcedBy: z.ZodOptional<z.ZodString>;
|
|
95
|
+
}, z.core.$strip>]>>;
|
|
96
|
+
kind: z.ZodLiteral<"infra/drift">;
|
|
97
|
+
provider: z.ZodOptional<z.ZodString>;
|
|
98
|
+
}, z.core.$strip>;
|
|
99
|
+
export type DriftDescriptor = z.infer<typeof DriftDescriptorSchema>;
|
|
100
|
+
export interface DriftImplementation {
|
|
101
|
+
/** Compute drift between declared and live resources. */
|
|
102
|
+
detect(opts?: {
|
|
103
|
+
kinds?: string[];
|
|
104
|
+
}): Promise<DriftReport>;
|
|
105
|
+
}
|
|
106
|
+
declare class DefaultDriftImplementation {
|
|
107
|
+
readonly descriptor: RuntimeDescriptor;
|
|
108
|
+
readonly context: KindContext;
|
|
109
|
+
/** The descriptor as this kind's schema reads it. */
|
|
110
|
+
readonly config: DriftDescriptor;
|
|
111
|
+
constructor(descriptor: RuntimeDescriptor, context: KindContext);
|
|
112
|
+
}
|
|
113
|
+
export declare const driftKind: import("@vibesdotdev/kernel").RuntimeKindDescriptorRecord<DefaultDriftImplementation>;
|
|
114
|
+
export {};
|
|
115
|
+
//# sourceMappingURL=drift.kind.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"drift.kind.d.ts","sourceRoot":"","sources":["../../src/kinds/drift.kind.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;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,eAAe;;;;;;;EAO1B,CAAC;AACH,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAExD,eAAO,MAAM,mBAAmB;;;;EAA0C,CAAC;AAC3E,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAEhE,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;iBAS3B,CAAC;AACH,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAE1D,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;iBAI5B,CAAC;AACH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAO5D,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;iBAAkB,CAAC;AACrD,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAEpE,MAAM,WAAW,mBAAmB;IACnC,yDAAyD;IACzD,MAAM,CAAC,IAAI,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;CAC1D;AAED,cAAM,0BAA0B;aAId,UAAU,EAAE,iBAAiB;aAC7B,OAAO,EAAE,WAAW;IAJrC,qDAAqD;IACrD,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC;gBAEhB,UAAU,EAAE,iBAAiB,EAC7B,OAAO,EAAE,WAAW;CAKrC;AAED,eAAO,MAAM,SAAS,uFAKpB,CAAC"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Kind: infra/drift
|
|
3
|
+
*
|
|
4
|
+
* Generic drift descriptor. Reports differences between declared infra
|
|
5
|
+
* descriptors and the live provider state. Drift entries cover missing
|
|
6
|
+
* resources, unmanaged resources, stale resources, unsafe public exposure,
|
|
7
|
+
* and unexpected cost drivers.
|
|
8
|
+
*/
|
|
9
|
+
import * as z from 'zod/v4';
|
|
10
|
+
import { createRuntimeKind } from '@vibesdotdev/kernel/factory/kind';
|
|
11
|
+
import { RuntimeDescriptorSchema } from '@vibesdotdev/kernel/schemas/descriptor';
|
|
12
|
+
import { readKindDescriptor } from "./read-descriptor.js";
|
|
13
|
+
import { INFRA_DISCOVERY_PATTERNS } from "./discovery.js";
|
|
14
|
+
export const DriftKindSchema = z.enum([
|
|
15
|
+
'missing',
|
|
16
|
+
'unmanaged',
|
|
17
|
+
'stale',
|
|
18
|
+
'unsafe-public',
|
|
19
|
+
'cost-driver',
|
|
20
|
+
'config-drift'
|
|
21
|
+
]);
|
|
22
|
+
export const DriftSeveritySchema = z.enum(['info', 'warning', 'critical']);
|
|
23
|
+
export const DriftEntrySchema = z.object({
|
|
24
|
+
kind: DriftKindSchema,
|
|
25
|
+
severity: DriftSeveritySchema.default('warning'),
|
|
26
|
+
resourceKind: z.string(),
|
|
27
|
+
resourceId: z.string().optional(),
|
|
28
|
+
resourceName: z.string().optional(),
|
|
29
|
+
message: z.string(),
|
|
30
|
+
expected: z.unknown().optional(),
|
|
31
|
+
actual: z.unknown().optional()
|
|
32
|
+
});
|
|
33
|
+
export const DriftReportSchema = z.object({
|
|
34
|
+
provider: z.string(),
|
|
35
|
+
collectedAt: z.string(),
|
|
36
|
+
entries: z.array(DriftEntrySchema)
|
|
37
|
+
});
|
|
38
|
+
const DriftBaseSchema = RuntimeDescriptorSchema.extend({
|
|
39
|
+
kind: z.literal('infra/drift'),
|
|
40
|
+
provider: z.string().min(1).optional()
|
|
41
|
+
});
|
|
42
|
+
export const DriftDescriptorSchema = DriftBaseSchema;
|
|
43
|
+
class DefaultDriftImplementation {
|
|
44
|
+
descriptor;
|
|
45
|
+
context;
|
|
46
|
+
/** The descriptor as this kind's schema reads it. */
|
|
47
|
+
config;
|
|
48
|
+
constructor(descriptor, context) {
|
|
49
|
+
this.descriptor = descriptor;
|
|
50
|
+
this.context = context;
|
|
51
|
+
this.config = readKindDescriptor(DriftDescriptorSchema, descriptor);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
export const driftKind = createRuntimeKind({
|
|
55
|
+
id: 'infra/drift',
|
|
56
|
+
descriptorSchema: DriftDescriptorSchema,
|
|
57
|
+
defaultImplementation: DefaultDriftImplementation,
|
|
58
|
+
discoveryPatterns: INFRA_DISCOVERY_PATTERNS
|
|
59
|
+
});
|
|
60
|
+
//# sourceMappingURL=drift.kind.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"drift.kind.js","sourceRoot":"","sources":["../../src/kinds/drift.kind.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;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,eAAe,GAAG,CAAC,CAAC,IAAI,CAAC;IACrC,SAAS;IACT,WAAW;IACX,OAAO;IACP,eAAe;IACf,aAAa;IACb,cAAc;CACd,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC;AAG3E,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IACxC,IAAI,EAAE,eAAe;IACrB,QAAQ,EAAE,mBAAmB,CAAC,OAAO,CAAC,SAAS,CAAC;IAChD,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE;IACxB,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACjC,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACnC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAChC,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;CAC9B,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;IACpB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE;IACvB,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC;CAClC,CAAC,CAAC;AAGH,MAAM,eAAe,GAAG,uBAAuB,CAAC,MAAM,CAAC;IACtD,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC;IAC9B,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;CACtC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,qBAAqB,GAAG,eAAe,CAAC;AAQrD,MAAM,0BAA0B;IAId;IACA;IAJjB,qDAAqD;IAC5C,MAAM,CAAkB;IACjC,YACiB,UAA6B,EAC7B,OAAoB;QADpB,eAAU,GAAV,UAAU,CAAmB;QAC7B,YAAO,GAAP,OAAO,CAAa;QAEpC,IAAI,CAAC,MAAM,GAAG,kBAAkB,CAAC,qBAAqB,EAAE,UAAU,CAAC,CAAC;IACrE,CAAC;CAED;AAED,MAAM,CAAC,MAAM,SAAS,GAAG,iBAAiB,CAA8C;IACvF,EAAE,EAAE,aAAa;IACjB,gBAAgB,EAAE,qBAAqB;IACvC,qBAAqB,EAAE,0BAA0B;IACjD,iBAAiB,EAAE,wBAAwB;CAC3C,CAAC,CAAC"}
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Infra Edge Hostname Kind
|
|
3
|
+
*
|
|
4
|
+
* Provider-agnostic contract for what serves a hostname at an edge/CDN that
|
|
5
|
+
* fronts it. An edge can route a proxied hostname to its own compute (a
|
|
6
|
+
* Cloudflare Worker route or custom domain) before traffic ever reaches the
|
|
7
|
+
* DNS target, so a hostname whose DNS points at the declared provider can
|
|
8
|
+
* still be served by something else entirely.
|
|
9
|
+
*
|
|
10
|
+
* Each edge reports those compute claims on a hostname, releases one, points
|
|
11
|
+
* the hostname at a declared target, and purges exact paths. The deploy
|
|
12
|
+
* driver judges claims against the app's declared deployment with
|
|
13
|
+
* {@link planEdgeHostnameReconcile}: a claim by the declared provider's own
|
|
14
|
+
* vendor is that provider's routing and stays; a claim by any other vendor is
|
|
15
|
+
* foreign and is released, or refused when releasing it would also detach a
|
|
16
|
+
* sibling hostname.
|
|
17
|
+
*/
|
|
18
|
+
import * as z from 'zod/v4';
|
|
19
|
+
declare const EdgeHostnameBaseSchema: z.ZodObject<{
|
|
20
|
+
id: z.ZodString;
|
|
21
|
+
name: z.ZodOptional<z.ZodString>;
|
|
22
|
+
description: z.ZodOptional<z.ZodString>;
|
|
23
|
+
tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
24
|
+
hardware: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
25
|
+
enabled: z.ZodOptional<z.ZodBoolean>;
|
|
26
|
+
priority: z.ZodOptional<z.ZodNumber>;
|
|
27
|
+
capabilityId: z.ZodOptional<z.ZodString>;
|
|
28
|
+
requiredContext: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
29
|
+
optionalContext: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
30
|
+
config: z.ZodOptional<z.ZodUnknown>;
|
|
31
|
+
retention: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
|
|
32
|
+
maxAgeDays: z.ZodOptional<z.ZodNumber>;
|
|
33
|
+
maxEntries: z.ZodOptional<z.ZodNumber>;
|
|
34
|
+
maxBytes: z.ZodOptional<z.ZodNumber>;
|
|
35
|
+
cascadeFrom: z.ZodOptional<z.ZodString>;
|
|
36
|
+
ageField: z.ZodOptional<z.ZodString>;
|
|
37
|
+
reason: z.ZodString;
|
|
38
|
+
enforcedBy: z.ZodOptional<z.ZodString>;
|
|
39
|
+
}, z.core.$strip>]>>;
|
|
40
|
+
kind: z.ZodLiteral<"infra/edge-hostname">;
|
|
41
|
+
adapter: z.ZodString;
|
|
42
|
+
adapterConfig: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
43
|
+
environment: z.ZodDefault<z.ZodString>;
|
|
44
|
+
}, z.core.$strip>;
|
|
45
|
+
export type InfraEdgeHostnameDescriptor = z.infer<typeof EdgeHostnameBaseSchema>;
|
|
46
|
+
export type InfraEdgeHostnameDescriptorInput = z.input<typeof EdgeHostnameBaseSchema>;
|
|
47
|
+
/** Edge compute that answers a hostname before its DNS target does. */
|
|
48
|
+
export declare const EdgeHostnameClaimSchema: z.ZodObject<{
|
|
49
|
+
kind: z.ZodEnum<{
|
|
50
|
+
route: "route";
|
|
51
|
+
"custom-domain": "custom-domain";
|
|
52
|
+
}>;
|
|
53
|
+
providerId: z.ZodString;
|
|
54
|
+
hostname: z.ZodString;
|
|
55
|
+
pattern: z.ZodString;
|
|
56
|
+
unit: z.ZodNullable<z.ZodString>;
|
|
57
|
+
vendor: z.ZodString;
|
|
58
|
+
exclusive: z.ZodBoolean;
|
|
59
|
+
}, z.core.$strip>;
|
|
60
|
+
export type EdgeHostnameClaim = z.infer<typeof EdgeHostnameClaimSchema>;
|
|
61
|
+
/** Where a provider needs a hostname's DNS to point for its release to receive traffic. */
|
|
62
|
+
export declare const EdgeHostnameTargetSchema: z.ZodObject<{
|
|
63
|
+
hostname: z.ZodString;
|
|
64
|
+
type: z.ZodEnum<{
|
|
65
|
+
A: "A";
|
|
66
|
+
CNAME: "CNAME";
|
|
67
|
+
AAAA: "AAAA";
|
|
68
|
+
}>;
|
|
69
|
+
content: z.ZodString;
|
|
70
|
+
}, z.core.$strip>;
|
|
71
|
+
export type EdgeHostnameTarget = z.infer<typeof EdgeHostnameTargetSchema>;
|
|
72
|
+
export declare const EdgeHostnameTargetResultSchema: z.ZodObject<{
|
|
73
|
+
hostname: z.ZodString;
|
|
74
|
+
action: z.ZodEnum<{
|
|
75
|
+
unchanged: "unchanged";
|
|
76
|
+
created: "created";
|
|
77
|
+
updated: "updated";
|
|
78
|
+
}>;
|
|
79
|
+
}, z.core.$strip>;
|
|
80
|
+
export type EdgeHostnameTargetResult = z.infer<typeof EdgeHostnameTargetResultSchema>;
|
|
81
|
+
/** Absolute request paths with no query or fragment. */
|
|
82
|
+
export declare const EdgeHostnamePathSchema: z.ZodString;
|
|
83
|
+
export declare const EdgeHostnamePurgeResultSchema: z.ZodObject<{
|
|
84
|
+
hostname: z.ZodString;
|
|
85
|
+
purged: z.ZodArray<z.ZodString>;
|
|
86
|
+
}, z.core.$strip>;
|
|
87
|
+
export type EdgeHostnamePurgeResult = z.infer<typeof EdgeHostnamePurgeResultSchema>;
|
|
88
|
+
export interface EdgeHostnameImplementation {
|
|
89
|
+
/** The vendor this edge belongs to; its own compute claims carry it. */
|
|
90
|
+
readonly vendor: string;
|
|
91
|
+
/** Whether this edge fronts `hostname` (it holds the hostname's zone). */
|
|
92
|
+
fronts(hostname: string): Promise<boolean>;
|
|
93
|
+
/** Every compute claim on `hostname`. */
|
|
94
|
+
claims(hostname: string): Promise<EdgeHostnameClaim[]>;
|
|
95
|
+
/** Detach one claim and confirm by readback. Leaves the compute unit itself in place. */
|
|
96
|
+
release(claim: EdgeHostnameClaim): Promise<void>;
|
|
97
|
+
/** Point `target.hostname` at `target.content` through this edge; idempotent. */
|
|
98
|
+
ensureTarget(target: EdgeHostnameTarget): Promise<EdgeHostnameTargetResult>;
|
|
99
|
+
/** Purge exact paths on `hostname` from this edge's cache. */
|
|
100
|
+
purge(input: {
|
|
101
|
+
hostname: string;
|
|
102
|
+
paths: readonly string[];
|
|
103
|
+
}): Promise<EdgeHostnamePurgeResult>;
|
|
104
|
+
}
|
|
105
|
+
export interface EdgeHostnameReconcilePlan {
|
|
106
|
+
/** Claims the declared provider owns, or that serve nothing. */
|
|
107
|
+
keep: EdgeHostnameClaim[];
|
|
108
|
+
/** Foreign claims on this hostname alone: released by the reconcile. */
|
|
109
|
+
release: EdgeHostnameClaim[];
|
|
110
|
+
/** Foreign claims that also match sibling hostnames: releasing them would detach those too. */
|
|
111
|
+
refuse: EdgeHostnameClaim[];
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Judge an edge's claims on a declared hostname against the vendor of the
|
|
115
|
+
* provider that deployment declares. A claim by that vendor is the provider's
|
|
116
|
+
* own routing; anything else serving the hostname is foreign.
|
|
117
|
+
*/
|
|
118
|
+
export declare function planEdgeHostnameReconcile(input: {
|
|
119
|
+
claims: readonly EdgeHostnameClaim[];
|
|
120
|
+
declaredVendor: string;
|
|
121
|
+
}): EdgeHostnameReconcilePlan;
|
|
122
|
+
export declare const edgeHostnameKind: import("@vibesdotdev/kernel").RuntimeKindDescriptorRecord<EdgeHostnameImplementation>;
|
|
123
|
+
export { EdgeHostnameBaseSchema as InfraEdgeHostnameDescriptorSchema };
|
|
124
|
+
//# sourceMappingURL=edge-hostname.kind.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"edge-hostname.kind.d.ts","sourceRoot":"","sources":["../../src/kinds/edge-hostname.kind.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,CAAC,MAAM,QAAQ,CAAC;AAK5B,QAAA,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;iBAO1B,CAAC;AAEH,MAAM,MAAM,2BAA2B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AACjF,MAAM,MAAM,gCAAgC,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAEtF,uEAAuE;AACvE,eAAO,MAAM,uBAAuB;;;;;;;;;;;iBAclC,CAAC;AACH,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAExE,2FAA2F;AAC3F,eAAO,MAAM,wBAAwB;;;;;;;;iBAInC,CAAC;AACH,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAE1E,eAAO,MAAM,8BAA8B;;;;;;;iBAGzC,CAAC;AACH,MAAM,MAAM,wBAAwB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,8BAA8B,CAAC,CAAC;AAEtF,wDAAwD;AACxD,eAAO,MAAM,sBAAsB,aAAmG,CAAC;AAEvI,eAAO,MAAM,6BAA6B;;;iBAGxC,CAAC;AACH,MAAM,MAAM,uBAAuB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,6BAA6B,CAAC,CAAC;AAEpF,MAAM,WAAW,0BAA0B;IAC1C,wEAAwE;IACxE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,0EAA0E;IAC1E,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC3C,yCAAyC;IACzC,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAAC;IACvD,yFAAyF;IACzF,OAAO,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACjD,iFAAiF;IACjF,YAAY,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,wBAAwB,CAAC,CAAC;IAC5E,8DAA8D;IAC9D,KAAK,CAAC,KAAK,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAA;KAAE,GAAG,OAAO,CAAC,uBAAuB,CAAC,CAAC;CAC/F;AAED,MAAM,WAAW,yBAAyB;IACzC,gEAAgE;IAChE,IAAI,EAAE,iBAAiB,EAAE,CAAC;IAC1B,wEAAwE;IACxE,OAAO,EAAE,iBAAiB,EAAE,CAAC;IAC7B,+FAA+F;IAC/F,MAAM,EAAE,iBAAiB,EAAE,CAAC;CAC5B;AAED;;;;GAIG;AACH,wBAAgB,yBAAyB,CAAC,KAAK,EAAE;IAChD,MAAM,EAAE,SAAS,iBAAiB,EAAE,CAAC;IACrC,cAAc,EAAE,MAAM,CAAC;CACvB,GAAG,yBAAyB,CAc5B;AAED,eAAO,MAAM,gBAAgB,uFAI3B,CAAC;AAEH,OAAO,EAAE,sBAAsB,IAAI,iCAAiC,EAAE,CAAC"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Infra Edge Hostname Kind
|
|
3
|
+
*
|
|
4
|
+
* Provider-agnostic contract for what serves a hostname at an edge/CDN that
|
|
5
|
+
* fronts it. An edge can route a proxied hostname to its own compute (a
|
|
6
|
+
* Cloudflare Worker route or custom domain) before traffic ever reaches the
|
|
7
|
+
* DNS target, so a hostname whose DNS points at the declared provider can
|
|
8
|
+
* still be served by something else entirely.
|
|
9
|
+
*
|
|
10
|
+
* Each edge reports those compute claims on a hostname, releases one, points
|
|
11
|
+
* the hostname at a declared target, and purges exact paths. The deploy
|
|
12
|
+
* driver judges claims against the app's declared deployment with
|
|
13
|
+
* {@link planEdgeHostnameReconcile}: a claim by the declared provider's own
|
|
14
|
+
* vendor is that provider's routing and stays; a claim by any other vendor is
|
|
15
|
+
* foreign and is released, or refused when releasing it would also detach a
|
|
16
|
+
* sibling hostname.
|
|
17
|
+
*/
|
|
18
|
+
import * as z from 'zod/v4';
|
|
19
|
+
import { createRuntimeKind } from '@vibesdotdev/kernel/factory/kind';
|
|
20
|
+
import { RuntimeDescriptorSchema } from '@vibesdotdev/kernel/schemas/descriptor';
|
|
21
|
+
import { INFRA_DISCOVERY_PATTERNS } from "./discovery.js";
|
|
22
|
+
const EdgeHostnameBaseSchema = RuntimeDescriptorSchema.extend({
|
|
23
|
+
kind: z.literal('infra/edge-hostname'),
|
|
24
|
+
/** Adapter id (e.g. 'cloudflare-edge-hostname'). */
|
|
25
|
+
adapter: z.string().min(1),
|
|
26
|
+
adapterConfig: z.record(z.string(), z.unknown()).optional(),
|
|
27
|
+
/** Environment name for credential resolution via `vibes secrets`. */
|
|
28
|
+
environment: z.string().default('local')
|
|
29
|
+
});
|
|
30
|
+
/** Edge compute that answers a hostname before its DNS target does. */
|
|
31
|
+
export const EdgeHostnameClaimSchema = z.object({
|
|
32
|
+
kind: z.enum(['route', 'custom-domain']),
|
|
33
|
+
/** Provider-assigned identity of the claim. */
|
|
34
|
+
providerId: z.string().min(1),
|
|
35
|
+
/** The hostname the claim was read for. */
|
|
36
|
+
hostname: z.string().min(1),
|
|
37
|
+
/** Provider-native match: a route pattern, or the custom domain's hostname. */
|
|
38
|
+
pattern: z.string().min(1),
|
|
39
|
+
/** The compute unit serving the claim (a Worker script); null when the claim serves nothing, such as a route exclusion. */
|
|
40
|
+
unit: z.string().min(1).nullable(),
|
|
41
|
+
/** The vendor whose compute serves the claim (`cloudflare`, ...). */
|
|
42
|
+
vendor: z.string().min(1),
|
|
43
|
+
/** True when the claim matches this hostname alone; false for a wildcard that also matches siblings. */
|
|
44
|
+
exclusive: z.boolean()
|
|
45
|
+
});
|
|
46
|
+
/** Where a provider needs a hostname's DNS to point for its release to receive traffic. */
|
|
47
|
+
export const EdgeHostnameTargetSchema = z.object({
|
|
48
|
+
hostname: z.string().min(1),
|
|
49
|
+
type: z.enum(['CNAME', 'A', 'AAAA']),
|
|
50
|
+
content: z.string().min(1)
|
|
51
|
+
});
|
|
52
|
+
export const EdgeHostnameTargetResultSchema = z.object({
|
|
53
|
+
hostname: z.string().min(1),
|
|
54
|
+
action: z.enum(['unchanged', 'created', 'updated'])
|
|
55
|
+
});
|
|
56
|
+
/** Absolute request paths with no query or fragment. */
|
|
57
|
+
export const EdgeHostnamePathSchema = z.string().trim().regex(/^\/[^\s?#]*$/, 'a path starts with / and carries no query or fragment');
|
|
58
|
+
export const EdgeHostnamePurgeResultSchema = z.object({
|
|
59
|
+
hostname: z.string().min(1),
|
|
60
|
+
purged: z.array(z.string())
|
|
61
|
+
});
|
|
62
|
+
/**
|
|
63
|
+
* Judge an edge's claims on a declared hostname against the vendor of the
|
|
64
|
+
* provider that deployment declares. A claim by that vendor is the provider's
|
|
65
|
+
* own routing; anything else serving the hostname is foreign.
|
|
66
|
+
*/
|
|
67
|
+
export function planEdgeHostnameReconcile(input) {
|
|
68
|
+
const plan = { keep: [], release: [], refuse: [] };
|
|
69
|
+
for (const claim of input.claims) {
|
|
70
|
+
if (claim.unit === null || claim.vendor === input.declaredVendor) {
|
|
71
|
+
plan.keep.push(claim);
|
|
72
|
+
continue;
|
|
73
|
+
}
|
|
74
|
+
if (claim.exclusive)
|
|
75
|
+
plan.release.push(claim);
|
|
76
|
+
else
|
|
77
|
+
plan.refuse.push(claim);
|
|
78
|
+
}
|
|
79
|
+
return plan;
|
|
80
|
+
}
|
|
81
|
+
export const edgeHostnameKind = createRuntimeKind({
|
|
82
|
+
id: 'infra/edge-hostname',
|
|
83
|
+
descriptorSchema: EdgeHostnameBaseSchema,
|
|
84
|
+
discoveryPatterns: INFRA_DISCOVERY_PATTERNS
|
|
85
|
+
});
|
|
86
|
+
export { EdgeHostnameBaseSchema as InfraEdgeHostnameDescriptorSchema };
|
|
87
|
+
//# sourceMappingURL=edge-hostname.kind.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"edge-hostname.kind.js","sourceRoot":"","sources":["../../src/kinds/edge-hostname.kind.ts"],"names":[],"mappings":"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"}
|