@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,243 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Kind: infra/inventory
|
|
3
|
+
*
|
|
4
|
+
* Generic read-only inventory descriptor. Implementations enumerate provider
|
|
5
|
+
* resources without mutating them. Used by `vibes infra inventory` and
|
|
6
|
+
* provider-specific list/status commands.
|
|
7
|
+
*/
|
|
8
|
+
import * as z from 'zod/v4';
|
|
9
|
+
import { settleUntrusted } from '@vibesdotdev/config/manifest/read-untrusted';
|
|
10
|
+
import { CapabilityError, CaughtFailureSchema, isCapabilityError } from '@vibesdotdev/kernel';
|
|
11
|
+
import { createRuntimeKind } from '@vibesdotdev/kernel/factory/kind';
|
|
12
|
+
import { RuntimeDescriptorSchema } from '@vibesdotdev/kernel/schemas/descriptor';
|
|
13
|
+
import { readKindDescriptor } from "./read-descriptor.js";
|
|
14
|
+
import { INFRA_DISCOVERY_PATTERNS } from "./discovery.js";
|
|
15
|
+
import { WorkerDescriptorSchema } from "./worker.kind.js";
|
|
16
|
+
export const InventoryResourceSchema = z.object({
|
|
17
|
+
id: z.string(),
|
|
18
|
+
kind: z.string(),
|
|
19
|
+
name: z.string().optional(),
|
|
20
|
+
region: z.string().optional(),
|
|
21
|
+
status: z.string().optional(),
|
|
22
|
+
managedBy: z.string().optional(),
|
|
23
|
+
tags: z.array(z.string()).optional(),
|
|
24
|
+
createdAt: z.string().optional(),
|
|
25
|
+
raw: z.unknown().optional()
|
|
26
|
+
});
|
|
27
|
+
export const InfraProviderFailureSchema = z.object({
|
|
28
|
+
code: z.string(),
|
|
29
|
+
message: z.string(),
|
|
30
|
+
retryable: z.boolean().optional()
|
|
31
|
+
});
|
|
32
|
+
const FAILURE_UNREADABLE = {
|
|
33
|
+
code: 'INVALID_INPUT',
|
|
34
|
+
reason: 'infra-provider-failure-unreadable',
|
|
35
|
+
message: () => 'Provider failure evidence does not read.'
|
|
36
|
+
};
|
|
37
|
+
/** The evidence a failure that does not read as `InfraProviderFailure` is carried as. */
|
|
38
|
+
const UNREADABLE_FAILURE = {
|
|
39
|
+
code: 'PROVIDER_UNAVAILABLE',
|
|
40
|
+
message: 'Provider operation failed; inspect the provider-specific sanitized diagnostics.'
|
|
41
|
+
};
|
|
42
|
+
/** `failure` as the schema reads it; one that does not read (or throws when read) is the fixed unreadable evidence. */
|
|
43
|
+
function readFailure(failure) {
|
|
44
|
+
const read = settleUntrusted(InfraProviderFailureSchema, () => failure, FAILURE_UNREADABLE);
|
|
45
|
+
return read.ok ? read.data : UNREADABLE_FAILURE;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Provider-sanitized failure evidence as a typed `UNAVAILABLE
|
|
49
|
+
* infra-provider-failure`. The provider's own code stays on `failure.code`
|
|
50
|
+
* (and in details); the message is the provider's sanitized message.
|
|
51
|
+
*/
|
|
52
|
+
export class SanitizedInfraProviderError extends CapabilityError {
|
|
53
|
+
failure;
|
|
54
|
+
constructor(failure, cause) {
|
|
55
|
+
const parsed = readFailure(failure);
|
|
56
|
+
const options = {
|
|
57
|
+
reason: 'infra-provider-failure',
|
|
58
|
+
retryable: parsed.retryable,
|
|
59
|
+
details: { providerCode: parsed.code }
|
|
60
|
+
};
|
|
61
|
+
if (cause !== undefined)
|
|
62
|
+
options.cause = cause;
|
|
63
|
+
super(parsed.message, 'UNAVAILABLE', options);
|
|
64
|
+
this.name = 'SanitizedInfraProviderError';
|
|
65
|
+
this.failure = parsed;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
export function createSanitizedInfraProviderError(failure, cause) {
|
|
69
|
+
return new SanitizedInfraProviderError(failure, cause);
|
|
70
|
+
}
|
|
71
|
+
export const InfraAuthorityFingerprintSchema = z.object({
|
|
72
|
+
provider: z.string().min(1),
|
|
73
|
+
requestedEnvironment: z.string().min(1),
|
|
74
|
+
resolvedEnvironment: z.string().min(1),
|
|
75
|
+
source: z.string().min(1),
|
|
76
|
+
account: z.string().min(1),
|
|
77
|
+
/** Stable, non-display digest used to compare identities hidden by redaction. */
|
|
78
|
+
accountIdentity: z.string().regex(/^sha256:[a-f0-9]{64}$/).optional(),
|
|
79
|
+
capabilities: z.array(z.string().min(1))
|
|
80
|
+
});
|
|
81
|
+
/** Stable, provider-neutral text form for operator-facing inventory and audit output. */
|
|
82
|
+
export function formatInfraAuthorityFingerprint(authority) {
|
|
83
|
+
const parsed = InfraAuthorityFingerprintSchema.parse(authority);
|
|
84
|
+
return [
|
|
85
|
+
`provider=${parsed.provider}`,
|
|
86
|
+
`requested=${parsed.requestedEnvironment}`,
|
|
87
|
+
`resolved=${parsed.resolvedEnvironment}`,
|
|
88
|
+
`source=${parsed.source}`,
|
|
89
|
+
`account=${parsed.account}`,
|
|
90
|
+
`capabilities=${[...parsed.capabilities].sort().join(',')}`
|
|
91
|
+
].join(' ');
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Reconcile authority evidence emitted by several provider surfaces. Identity
|
|
95
|
+
* must be identical; capabilities are the honest union of operations actually
|
|
96
|
+
* requested by those surfaces.
|
|
97
|
+
*/
|
|
98
|
+
export function mergeInfraAuthorityFingerprints(authorities) {
|
|
99
|
+
if (authorities.length === 0)
|
|
100
|
+
return undefined;
|
|
101
|
+
const parsed = authorities.map((authority) => InfraAuthorityFingerprintSchema.parse(authority));
|
|
102
|
+
const [first, ...rest] = parsed;
|
|
103
|
+
if (parsed.length > 1 && parsed.some((authority) => !authority.accountIdentity)) {
|
|
104
|
+
throw createSanitizedInfraProviderError({
|
|
105
|
+
code: 'INFRA_AUTHORITY_DIVERGENCE',
|
|
106
|
+
message: 'Infrastructure provider surfaces resolved different operator authorities.',
|
|
107
|
+
retryable: false
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
for (const authority of rest) {
|
|
111
|
+
if (authority.provider !== first.provider ||
|
|
112
|
+
authority.requestedEnvironment !== first.requestedEnvironment ||
|
|
113
|
+
authority.resolvedEnvironment !== first.resolvedEnvironment ||
|
|
114
|
+
authority.source !== first.source ||
|
|
115
|
+
authority.account !== first.account ||
|
|
116
|
+
authority.accountIdentity !== first.accountIdentity) {
|
|
117
|
+
throw createSanitizedInfraProviderError({
|
|
118
|
+
code: 'INFRA_AUTHORITY_DIVERGENCE',
|
|
119
|
+
message: 'Infrastructure provider surfaces resolved different operator authorities.',
|
|
120
|
+
retryable: false
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
return InfraAuthorityFingerprintSchema.parse({
|
|
125
|
+
...first,
|
|
126
|
+
capabilities: [...new Set(parsed.flatMap((authority) => authority.capabilities))].sort()
|
|
127
|
+
});
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Convert arbitrary backend exceptions into bounded operator-safe evidence: a
|
|
131
|
+
* `SanitizedInfraProviderError` keeps its evidence; anything else is the fixed
|
|
132
|
+
* unreadable evidence (what it says is never repeated).
|
|
133
|
+
*/
|
|
134
|
+
export function sanitizeInfraProviderFailure(error, declaredCredentialKeys = []) {
|
|
135
|
+
const caught = CaughtFailureSchema.parse(error);
|
|
136
|
+
if (caught instanceof SanitizedInfraProviderError)
|
|
137
|
+
return caught.failure;
|
|
138
|
+
return typedFailureEvidence(caught, new Set(declaredCredentialKeys)) ?? UNREADABLE_FAILURE;
|
|
139
|
+
}
|
|
140
|
+
/** The deepest `cause` chain read when naming a typed failure. */
|
|
141
|
+
const TYPED_CHAIN_LIMIT = 6;
|
|
142
|
+
/** A credential key name is an environment-style name; it is named only when a declared requirement lists it. */
|
|
143
|
+
const CREDENTIAL_KEY_NAME = /^[A-Z][A-Z0-9_]{0,95}$/;
|
|
144
|
+
const TYPED_REASON = /^[a-z][a-z0-9-]{0,63}$/;
|
|
145
|
+
const TYPED_KEY_LIMIT = 8;
|
|
146
|
+
/**
|
|
147
|
+
* The names of the credential keys a typed failure's details carry
|
|
148
|
+
* (`details.keys`) that a declared credential requirement lists. An
|
|
149
|
+
* identifier-shaped string that no requirement declares (a token prefix, an
|
|
150
|
+
* access-key id) is never named.
|
|
151
|
+
*/
|
|
152
|
+
function credentialKeyNames(error, declared) {
|
|
153
|
+
const keys = error.details?.keys;
|
|
154
|
+
if (!Array.isArray(keys))
|
|
155
|
+
return [];
|
|
156
|
+
return keys
|
|
157
|
+
.filter((key) => typeof key === 'string' && CREDENTIAL_KEY_NAME.test(key) && declared.has(key))
|
|
158
|
+
.slice(0, TYPED_KEY_LIMIT);
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* The typed reasons (outermost first) and credential key names a
|
|
162
|
+
* `CapabilityError` chain carries. A `CapabilityError` states its reason and
|
|
163
|
+
* details value-free by contract; its message and any untyped link are never
|
|
164
|
+
* read, so a credential value cannot reach the evidence. `undefined` when the
|
|
165
|
+
* failure is not typed.
|
|
166
|
+
*/
|
|
167
|
+
function typedFailureEvidence(caught, declared) {
|
|
168
|
+
const reasons = [];
|
|
169
|
+
const keys = [];
|
|
170
|
+
let retryable;
|
|
171
|
+
let link = caught;
|
|
172
|
+
for (let depth = 0; depth < TYPED_CHAIN_LIMIT && link instanceof Error && isCapabilityError(link); depth++) {
|
|
173
|
+
if (TYPED_REASON.test(link.reason) && !reasons.includes(link.reason))
|
|
174
|
+
reasons.push(link.reason);
|
|
175
|
+
for (const key of credentialKeyNames(link, declared))
|
|
176
|
+
if (!keys.includes(key))
|
|
177
|
+
keys.push(key);
|
|
178
|
+
if (retryable === undefined)
|
|
179
|
+
retryable = link.retryable;
|
|
180
|
+
link = link.cause;
|
|
181
|
+
}
|
|
182
|
+
if (reasons.length === 0)
|
|
183
|
+
return undefined;
|
|
184
|
+
const named = keys.length > 0 ? ` (credential keys: ${keys.join(', ')})` : '';
|
|
185
|
+
const evidence = {
|
|
186
|
+
code: 'PROVIDER_UNAVAILABLE',
|
|
187
|
+
message: `Provider operation failed: ${reasons.join(' <- ')}${named}.`
|
|
188
|
+
};
|
|
189
|
+
if (retryable !== undefined)
|
|
190
|
+
evidence.retryable = retryable;
|
|
191
|
+
return evidence;
|
|
192
|
+
}
|
|
193
|
+
export const InventoryDeclaredResourceSchema = z.object({
|
|
194
|
+
kind: z.string().min(1),
|
|
195
|
+
id: z.string().min(1),
|
|
196
|
+
name: z.string().min(1).optional()
|
|
197
|
+
});
|
|
198
|
+
export const InventorySnapshotSchema = z.object({
|
|
199
|
+
provider: z.string(),
|
|
200
|
+
collectedAt: z.string(),
|
|
201
|
+
resources: z.array(InventoryResourceSchema),
|
|
202
|
+
declarations: z.array(InventoryDeclaredResourceSchema).optional(),
|
|
203
|
+
authority: InfraAuthorityFingerprintSchema.optional(),
|
|
204
|
+
/** Credential-route evidence only; never includes a credential value or key material. */
|
|
205
|
+
credentialPath: z.string().min(1).optional()
|
|
206
|
+
});
|
|
207
|
+
export const InventoryWorkspaceSourcesSchema = z.object({
|
|
208
|
+
deploymentProviders: z.array(z.string().min(1)).default([]),
|
|
209
|
+
workerAdapters: z.array(z.string().min(1)).default([])
|
|
210
|
+
});
|
|
211
|
+
export const InventoryWorkspaceSchema = z.object({
|
|
212
|
+
deployments: z.array(z.object({
|
|
213
|
+
provider: z.string().min(1),
|
|
214
|
+
unitName: z.string().nullable()
|
|
215
|
+
})).default([]),
|
|
216
|
+
workers: z.array(WorkerDescriptorSchema).default([])
|
|
217
|
+
});
|
|
218
|
+
const InventoryBaseSchema = RuntimeDescriptorSchema.extend({
|
|
219
|
+
kind: z.literal('infra/inventory'),
|
|
220
|
+
provider: z.string().min(1).optional(),
|
|
221
|
+
providerAliases: z.array(z.string().min(1)).optional(),
|
|
222
|
+
resourceKinds: z.array(z.string()).optional(),
|
|
223
|
+
workspaceSources: InventoryWorkspaceSourcesSchema.optional()
|
|
224
|
+
});
|
|
225
|
+
export const InventoryDescriptorSchema = InventoryBaseSchema;
|
|
226
|
+
class DefaultInventoryImplementation {
|
|
227
|
+
descriptor;
|
|
228
|
+
context;
|
|
229
|
+
/** The descriptor as this kind's schema reads it. */
|
|
230
|
+
config;
|
|
231
|
+
constructor(descriptor, context) {
|
|
232
|
+
this.descriptor = descriptor;
|
|
233
|
+
this.context = context;
|
|
234
|
+
this.config = readKindDescriptor(InventoryDescriptorSchema, descriptor);
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
export const inventoryKind = createRuntimeKind({
|
|
238
|
+
id: 'infra/inventory',
|
|
239
|
+
descriptorSchema: InventoryDescriptorSchema,
|
|
240
|
+
defaultImplementation: DefaultInventoryImplementation,
|
|
241
|
+
discoveryPatterns: INFRA_DISCOVERY_PATTERNS
|
|
242
|
+
});
|
|
243
|
+
//# sourceMappingURL=inventory.kind.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inventory.kind.js","sourceRoot":"","sources":["../../src/kinds/inventory.kind.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Kind: infra/load-balancer
|
|
3
|
+
*
|
|
4
|
+
* Provider-neutral load balancer descriptor.
|
|
5
|
+
*
|
|
6
|
+
* `config` is an open, adapter-keyed shape (DigitalOcean's load balancer
|
|
7
|
+
* config lives in `@vibesdotdev/integrations-digitalocean`); this kind
|
|
8
|
+
* names no provider, so a config for any adapter parses here and the
|
|
9
|
+
* adapter validates its own grammar.
|
|
10
|
+
*/
|
|
11
|
+
import * as z from 'zod/v4';
|
|
12
|
+
import type { RuntimeDescriptor } from '@vibesdotdev/kernel/schemas/descriptor';
|
|
13
|
+
import type { KindContext } from '@vibesdotdev/kernel/schemas/kind';
|
|
14
|
+
export declare const LoadBalancerForwardingRuleSchema: z.ZodObject<{
|
|
15
|
+
entryProtocol: z.ZodEnum<{
|
|
16
|
+
tcp: "tcp";
|
|
17
|
+
http: "http";
|
|
18
|
+
udp: "udp";
|
|
19
|
+
http2: "http2";
|
|
20
|
+
https: "https";
|
|
21
|
+
http3: "http3";
|
|
22
|
+
}>;
|
|
23
|
+
entryPort: z.ZodNumber;
|
|
24
|
+
targetProtocol: z.ZodEnum<{
|
|
25
|
+
tcp: "tcp";
|
|
26
|
+
http: "http";
|
|
27
|
+
udp: "udp";
|
|
28
|
+
http2: "http2";
|
|
29
|
+
https: "https";
|
|
30
|
+
}>;
|
|
31
|
+
targetPort: z.ZodNumber;
|
|
32
|
+
certificateId: z.ZodOptional<z.ZodString>;
|
|
33
|
+
tlsPassthrough: z.ZodOptional<z.ZodBoolean>;
|
|
34
|
+
}, z.core.$strip>;
|
|
35
|
+
export type LoadBalancerForwardingRule = z.infer<typeof LoadBalancerForwardingRuleSchema>;
|
|
36
|
+
export declare const LoadBalancerHealthCheckSchema: z.ZodObject<{
|
|
37
|
+
protocol: z.ZodEnum<{
|
|
38
|
+
tcp: "tcp";
|
|
39
|
+
http: "http";
|
|
40
|
+
https: "https";
|
|
41
|
+
}>;
|
|
42
|
+
port: z.ZodOptional<z.ZodNumber>;
|
|
43
|
+
path: z.ZodOptional<z.ZodString>;
|
|
44
|
+
checkIntervalSeconds: z.ZodOptional<z.ZodNumber>;
|
|
45
|
+
responseTimeoutSeconds: z.ZodOptional<z.ZodNumber>;
|
|
46
|
+
unhealthyThreshold: z.ZodOptional<z.ZodNumber>;
|
|
47
|
+
healthyThreshold: z.ZodOptional<z.ZodNumber>;
|
|
48
|
+
}, z.core.$strip>;
|
|
49
|
+
export type LoadBalancerHealthCheck = z.infer<typeof LoadBalancerHealthCheckSchema>;
|
|
50
|
+
/**
|
|
51
|
+
* Adapter-specific configuration: the adapter id plus its own fields. Each
|
|
52
|
+
* adapter package defines and parses its own config schema; this kind names
|
|
53
|
+
* no provider, so a config for any adapter — including one contributed by a
|
|
54
|
+
* user plugin — parses here, and the adapter validates its own grammar.
|
|
55
|
+
*/
|
|
56
|
+
export declare const LoadBalancerConfigSchema: z.ZodObject<{
|
|
57
|
+
adapter: z.ZodString;
|
|
58
|
+
}, z.core.$loose>;
|
|
59
|
+
export type LoadBalancerConfig = z.infer<typeof LoadBalancerConfigSchema>;
|
|
60
|
+
export declare const LoadBalancerDescriptorSchema: z.ZodObject<{
|
|
61
|
+
id: z.ZodString;
|
|
62
|
+
name: z.ZodOptional<z.ZodString>;
|
|
63
|
+
description: z.ZodOptional<z.ZodString>;
|
|
64
|
+
tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
65
|
+
hardware: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
66
|
+
enabled: z.ZodOptional<z.ZodBoolean>;
|
|
67
|
+
priority: z.ZodOptional<z.ZodNumber>;
|
|
68
|
+
capabilityId: z.ZodOptional<z.ZodString>;
|
|
69
|
+
requiredContext: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
70
|
+
optionalContext: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
71
|
+
retention: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
|
|
72
|
+
maxAgeDays: z.ZodOptional<z.ZodNumber>;
|
|
73
|
+
maxEntries: z.ZodOptional<z.ZodNumber>;
|
|
74
|
+
maxBytes: z.ZodOptional<z.ZodNumber>;
|
|
75
|
+
cascadeFrom: z.ZodOptional<z.ZodString>;
|
|
76
|
+
ageField: z.ZodOptional<z.ZodString>;
|
|
77
|
+
reason: z.ZodString;
|
|
78
|
+
enforcedBy: z.ZodOptional<z.ZodString>;
|
|
79
|
+
}, z.core.$strip>]>>;
|
|
80
|
+
kind: z.ZodLiteral<"infra/load-balancer">;
|
|
81
|
+
region: z.ZodOptional<z.ZodString>;
|
|
82
|
+
forwardingRules: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
83
|
+
entryProtocol: z.ZodEnum<{
|
|
84
|
+
tcp: "tcp";
|
|
85
|
+
http: "http";
|
|
86
|
+
udp: "udp";
|
|
87
|
+
http2: "http2";
|
|
88
|
+
https: "https";
|
|
89
|
+
http3: "http3";
|
|
90
|
+
}>;
|
|
91
|
+
entryPort: z.ZodNumber;
|
|
92
|
+
targetProtocol: z.ZodEnum<{
|
|
93
|
+
tcp: "tcp";
|
|
94
|
+
http: "http";
|
|
95
|
+
udp: "udp";
|
|
96
|
+
http2: "http2";
|
|
97
|
+
https: "https";
|
|
98
|
+
}>;
|
|
99
|
+
targetPort: z.ZodNumber;
|
|
100
|
+
certificateId: z.ZodOptional<z.ZodString>;
|
|
101
|
+
tlsPassthrough: z.ZodOptional<z.ZodBoolean>;
|
|
102
|
+
}, z.core.$strip>>>;
|
|
103
|
+
healthCheck: z.ZodOptional<z.ZodObject<{
|
|
104
|
+
protocol: z.ZodEnum<{
|
|
105
|
+
tcp: "tcp";
|
|
106
|
+
http: "http";
|
|
107
|
+
https: "https";
|
|
108
|
+
}>;
|
|
109
|
+
port: z.ZodOptional<z.ZodNumber>;
|
|
110
|
+
path: z.ZodOptional<z.ZodString>;
|
|
111
|
+
checkIntervalSeconds: z.ZodOptional<z.ZodNumber>;
|
|
112
|
+
responseTimeoutSeconds: z.ZodOptional<z.ZodNumber>;
|
|
113
|
+
unhealthyThreshold: z.ZodOptional<z.ZodNumber>;
|
|
114
|
+
healthyThreshold: z.ZodOptional<z.ZodNumber>;
|
|
115
|
+
}, z.core.$strip>>;
|
|
116
|
+
algorithm: z.ZodOptional<z.ZodEnum<{
|
|
117
|
+
round_robin: "round_robin";
|
|
118
|
+
least_connections: "least_connections";
|
|
119
|
+
}>>;
|
|
120
|
+
redirectHttpToHttps: z.ZodOptional<z.ZodBoolean>;
|
|
121
|
+
config: z.ZodOptional<z.ZodObject<{
|
|
122
|
+
adapter: z.ZodString;
|
|
123
|
+
}, z.core.$loose>>;
|
|
124
|
+
}, z.core.$strip>;
|
|
125
|
+
export type LoadBalancerDescriptor = z.infer<typeof LoadBalancerDescriptorSchema>;
|
|
126
|
+
declare class DefaultLoadBalancerImplementation {
|
|
127
|
+
readonly descriptor: RuntimeDescriptor;
|
|
128
|
+
readonly context: KindContext;
|
|
129
|
+
/** The descriptor as this kind's schema reads it. */
|
|
130
|
+
readonly config: LoadBalancerDescriptor;
|
|
131
|
+
constructor(descriptor: RuntimeDescriptor, context: KindContext);
|
|
132
|
+
}
|
|
133
|
+
export declare const loadBalancerKind: import("@vibesdotdev/kernel").RuntimeKindDescriptorRecord<DefaultLoadBalancerImplementation>;
|
|
134
|
+
export {};
|
|
135
|
+
//# sourceMappingURL=load-balancer.kind.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"load-balancer.kind.d.ts","sourceRoot":"","sources":["../../src/kinds/load-balancer.kind.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;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,gCAAgC;;;;;;;;;;;;;;;;;;;;iBAO3C,CAAC;AACH,MAAM,MAAM,0BAA0B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gCAAgC,CAAC,CAAC;AAE1F,eAAO,MAAM,6BAA6B;;;;;;;;;;;;iBAQxC,CAAC;AACH,MAAM,MAAM,uBAAuB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,6BAA6B,CAAC,CAAC;AAWpF;;;;;GAKG;AACH,eAAO,MAAM,wBAAwB;;iBAEnC,CAAC;AACH,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAE1E,eAAO,MAAM,4BAA4B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAGvC,CAAC;AAEH,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,4BAA4B,CAAC,CAAC;AAElF,cAAM,iCAAiC;aAIrB,UAAU,EAAE,iBAAiB;aAC7B,OAAO,EAAE,WAAW;IAJrC,qDAAqD;IACrD,QAAQ,CAAC,MAAM,EAAE,sBAAsB,CAAC;gBAEvB,UAAU,EAAE,iBAAiB,EAC7B,OAAO,EAAE,WAAW;CAKrC;AAED,eAAO,MAAM,gBAAgB,8FAK3B,CAAC"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Kind: infra/load-balancer
|
|
3
|
+
*
|
|
4
|
+
* Provider-neutral load balancer descriptor.
|
|
5
|
+
*
|
|
6
|
+
* `config` is an open, adapter-keyed shape (DigitalOcean's load balancer
|
|
7
|
+
* config lives in `@vibesdotdev/integrations-digitalocean`); this kind
|
|
8
|
+
* names no provider, so a config for any adapter parses here and the
|
|
9
|
+
* adapter validates its own grammar.
|
|
10
|
+
*/
|
|
11
|
+
import * as z from 'zod/v4';
|
|
12
|
+
import { createRuntimeKind } from '@vibesdotdev/kernel/factory/kind';
|
|
13
|
+
import { RuntimeDescriptorSchema } from '@vibesdotdev/kernel/schemas/descriptor';
|
|
14
|
+
import { readKindDescriptor } from "./read-descriptor.js";
|
|
15
|
+
import { INFRA_DISCOVERY_PATTERNS } from "./discovery.js";
|
|
16
|
+
export const LoadBalancerForwardingRuleSchema = z.object({
|
|
17
|
+
entryProtocol: z.enum(['http', 'https', 'http2', 'http3', 'tcp', 'udp']),
|
|
18
|
+
entryPort: z.number().int().positive(),
|
|
19
|
+
targetProtocol: z.enum(['http', 'https', 'http2', 'tcp', 'udp']),
|
|
20
|
+
targetPort: z.number().int().positive(),
|
|
21
|
+
certificateId: z.string().optional(),
|
|
22
|
+
tlsPassthrough: z.boolean().optional()
|
|
23
|
+
});
|
|
24
|
+
export const LoadBalancerHealthCheckSchema = z.object({
|
|
25
|
+
protocol: z.enum(['http', 'https', 'tcp']),
|
|
26
|
+
port: z.number().int().positive().optional(),
|
|
27
|
+
path: z.string().optional(),
|
|
28
|
+
checkIntervalSeconds: z.number().int().positive().optional(),
|
|
29
|
+
responseTimeoutSeconds: z.number().int().positive().optional(),
|
|
30
|
+
unhealthyThreshold: z.number().int().positive().optional(),
|
|
31
|
+
healthyThreshold: z.number().int().positive().optional()
|
|
32
|
+
});
|
|
33
|
+
const LoadBalancerBaseSchema = RuntimeDescriptorSchema.extend({
|
|
34
|
+
kind: z.literal('infra/load-balancer'),
|
|
35
|
+
region: z.string().min(1).optional(),
|
|
36
|
+
forwardingRules: z.array(LoadBalancerForwardingRuleSchema).optional(),
|
|
37
|
+
healthCheck: LoadBalancerHealthCheckSchema.optional(),
|
|
38
|
+
algorithm: z.enum(['round_robin', 'least_connections']).optional(),
|
|
39
|
+
redirectHttpToHttps: z.boolean().optional()
|
|
40
|
+
});
|
|
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, so a config for any adapter — including one contributed by a
|
|
45
|
+
* user plugin — parses here, and the adapter validates its own grammar.
|
|
46
|
+
*/
|
|
47
|
+
export const LoadBalancerConfigSchema = z.looseObject({
|
|
48
|
+
adapter: z.string().min(1)
|
|
49
|
+
});
|
|
50
|
+
export const LoadBalancerDescriptorSchema = LoadBalancerBaseSchema.extend({
|
|
51
|
+
/** Adapter-specific configuration, parsed by the adapter that owns it. */
|
|
52
|
+
config: LoadBalancerConfigSchema.optional()
|
|
53
|
+
});
|
|
54
|
+
class DefaultLoadBalancerImplementation {
|
|
55
|
+
descriptor;
|
|
56
|
+
context;
|
|
57
|
+
/** The descriptor as this kind's schema reads it. */
|
|
58
|
+
config;
|
|
59
|
+
constructor(descriptor, context) {
|
|
60
|
+
this.descriptor = descriptor;
|
|
61
|
+
this.context = context;
|
|
62
|
+
this.config = readKindDescriptor(LoadBalancerDescriptorSchema, descriptor);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
export const loadBalancerKind = createRuntimeKind({
|
|
66
|
+
id: 'infra/load-balancer',
|
|
67
|
+
descriptorSchema: LoadBalancerDescriptorSchema,
|
|
68
|
+
defaultImplementation: DefaultLoadBalancerImplementation,
|
|
69
|
+
discoveryPatterns: INFRA_DISCOVERY_PATTERNS
|
|
70
|
+
});
|
|
71
|
+
//# sourceMappingURL=load-balancer.kind.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"load-balancer.kind.js","sourceRoot":"","sources":["../../src/kinds/load-balancer.kind.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,6 +5,10 @@
|
|
|
5
5
|
* Provides programmatic access to logs for tailing, queries, and analytics.
|
|
6
6
|
*/
|
|
7
7
|
import * as z from 'zod/v4';
|
|
8
|
+
import type { WorkerLogRequest, ActiveLogStream } from '../schemas/log-stream.ts';
|
|
9
|
+
import type { DatabaseMigrationCredentialSource, DatabaseMigrationLog } from '../schemas/database-migration.ts';
|
|
10
|
+
import type { JsonValue } from '@vibesdotdev/kernel/schemas/json';
|
|
11
|
+
export { WorkerLogRequestSchema, ActiveLogStreamSchema, type WorkerLogRequest, type ActiveLogStream } from '../schemas/log-stream.ts';
|
|
8
12
|
export declare const InfraLogsDescriptorSchema: z.ZodObject<{
|
|
9
13
|
id: z.ZodString;
|
|
10
14
|
name: z.ZodOptional<z.ZodString>;
|
|
@@ -13,12 +17,23 @@ export declare const InfraLogsDescriptorSchema: z.ZodObject<{
|
|
|
13
17
|
hardware: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
14
18
|
enabled: z.ZodOptional<z.ZodBoolean>;
|
|
15
19
|
priority: z.ZodOptional<z.ZodNumber>;
|
|
20
|
+
capabilityId: z.ZodOptional<z.ZodString>;
|
|
16
21
|
requiredContext: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
17
22
|
optionalContext: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
18
|
-
config: z.ZodOptional<z.
|
|
23
|
+
config: z.ZodOptional<z.ZodUnknown>;
|
|
24
|
+
retention: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
|
|
25
|
+
maxAgeDays: z.ZodOptional<z.ZodNumber>;
|
|
26
|
+
maxEntries: z.ZodOptional<z.ZodNumber>;
|
|
27
|
+
maxBytes: z.ZodOptional<z.ZodNumber>;
|
|
28
|
+
cascadeFrom: z.ZodOptional<z.ZodString>;
|
|
29
|
+
ageField: z.ZodOptional<z.ZodString>;
|
|
30
|
+
reason: z.ZodString;
|
|
31
|
+
enforcedBy: z.ZodOptional<z.ZodString>;
|
|
32
|
+
}, z.core.$strip>]>>;
|
|
19
33
|
kind: z.ZodLiteral<"infra/logs">;
|
|
20
34
|
adapter: z.ZodString;
|
|
21
35
|
adapterConfig: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
36
|
+
environment: z.ZodOptional<z.ZodString>;
|
|
22
37
|
sources: z.ZodDefault<z.ZodArray<z.ZodObject<{
|
|
23
38
|
type: z.ZodEnum<{
|
|
24
39
|
worker: "worker";
|
|
@@ -26,11 +41,12 @@ export declare const InfraLogsDescriptorSchema: z.ZodObject<{
|
|
|
26
41
|
d1: "d1";
|
|
27
42
|
r2: "r2";
|
|
28
43
|
kv: "kv";
|
|
44
|
+
pod: "pod";
|
|
29
45
|
}>;
|
|
30
46
|
name: z.ZodString;
|
|
31
47
|
environment: z.ZodOptional<z.ZodString>;
|
|
32
48
|
}, z.core.$strip>>>;
|
|
33
|
-
|
|
49
|
+
logRetention: z.ZodOptional<z.ZodObject<{
|
|
34
50
|
hotDays: z.ZodDefault<z.ZodNumber>;
|
|
35
51
|
coldDays: z.ZodDefault<z.ZodNumber>;
|
|
36
52
|
}, z.core.$strip>>;
|
|
@@ -48,7 +64,60 @@ export declare const InfraLogsDescriptorSchema: z.ZodObject<{
|
|
|
48
64
|
}, z.core.$strip>;
|
|
49
65
|
export type InfraLogsDescriptor = z.infer<typeof InfraLogsDescriptorSchema>;
|
|
50
66
|
export type InfraLogsDescriptorInput = z.input<typeof InfraLogsDescriptorSchema>;
|
|
67
|
+
export type LogQueryView = 'events' | 'invocations' | 'calculations' | 'calculations_by_invocation' | 'traces' | 'requests' | 'agents';
|
|
68
|
+
export type LogQueryFilterOperation = 'eq' | 'neq' | 'includes' | 'not_includes' | 'starts_with' | 'ends_with' | 'regex' | 'exists' | 'is_null' | 'in' | 'not_in' | 'gt' | 'gte' | 'lt' | 'lte';
|
|
69
|
+
export interface LogQueryFilter {
|
|
70
|
+
key: string;
|
|
71
|
+
operation: LogQueryFilterOperation;
|
|
72
|
+
type?: 'string' | 'number' | 'boolean';
|
|
73
|
+
value?: string | number | boolean;
|
|
74
|
+
}
|
|
75
|
+
export interface LogQueryOptions {
|
|
76
|
+
view?: LogQueryView;
|
|
77
|
+
filters?: LogQueryFilter[];
|
|
78
|
+
filterCombination?: 'and' | 'or';
|
|
79
|
+
needle?: {
|
|
80
|
+
value: string;
|
|
81
|
+
isRegex?: boolean;
|
|
82
|
+
matchCase?: boolean;
|
|
83
|
+
};
|
|
84
|
+
limit?: number;
|
|
85
|
+
offset?: string;
|
|
86
|
+
from: number;
|
|
87
|
+
to: number;
|
|
88
|
+
orderBy?: {
|
|
89
|
+
value: string;
|
|
90
|
+
order: 'asc' | 'desc';
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
/** A historical query's answer. The view fields keep the provider's JSON shape; callers normalize what they read. */
|
|
94
|
+
export interface LogQueryResult {
|
|
95
|
+
queryId?: string;
|
|
96
|
+
events?: JsonValue;
|
|
97
|
+
invocations?: JsonValue;
|
|
98
|
+
calculations?: JsonValue;
|
|
99
|
+
rows?: JsonValue;
|
|
100
|
+
result?: JsonValue;
|
|
101
|
+
count?: number;
|
|
102
|
+
/** How many rows matched before the limit applied, so a truncated answer never reads as complete. */
|
|
103
|
+
matchedBeforeLimit?: number;
|
|
104
|
+
/** Provider-reported scalar facts about what was read (for example the cluster and how many sources). */
|
|
105
|
+
facts?: Readonly<Record<string, string | number | boolean>>;
|
|
106
|
+
}
|
|
107
|
+
/** One command's credential choice for a log source: whose credentials, for which environment. */
|
|
108
|
+
export interface LogsSourceOptions {
|
|
109
|
+
/** `ambient` is the operator's explicit opt-in to the shell's provider credentials; it never consults a store. */
|
|
110
|
+
readonly credentialSource: DatabaseMigrationCredentialSource;
|
|
111
|
+
/** The Vibes deployment environment whose stored credentials the source reads; absent, the runtime's own. */
|
|
112
|
+
readonly environment?: string;
|
|
113
|
+
/** Where the source reports which store supplied its credentials. */
|
|
114
|
+
readonly log: Pick<DatabaseMigrationLog, 'info' | 'warn'>;
|
|
115
|
+
}
|
|
51
116
|
export interface LogsImplementation {
|
|
117
|
+
/** The same source under one command's credential choice; a source without it reads only its default credentials. */
|
|
118
|
+
create?(options: LogsSourceOptions): Promise<LogsImplementation>;
|
|
119
|
+
/** Optional Kubernetes workload log operation; providers validate with WorkerLogRequestSchema. */
|
|
120
|
+
streamLogs?(request: WorkerLogRequest): Promise<ActiveLogStream>;
|
|
52
121
|
/** Stream logs in real-time (returns WebSocket URL) */
|
|
53
122
|
tailLogs(sourceName: string, options?: {
|
|
54
123
|
status?: 'ok' | 'error' | 'canceled';
|
|
@@ -81,11 +150,13 @@ export interface LogsImplementation {
|
|
|
81
150
|
timeStart: string;
|
|
82
151
|
timeEnd?: string;
|
|
83
152
|
}): Promise<number>;
|
|
153
|
+
/** Query historical log events/invocations when the provider supports it. */
|
|
154
|
+
queryLogs?(sourceName: string, options: LogQueryOptions): Promise<LogQueryResult>;
|
|
84
155
|
}
|
|
85
156
|
export interface DefaultLogsImplementation {
|
|
86
157
|
generateConfig: () => InfraLogsDescriptor;
|
|
87
158
|
}
|
|
88
|
-
export declare const logsKind: import("@vibesdotdev/
|
|
159
|
+
export declare const logsKind: import("@vibesdotdev/kernel").RuntimeKindDescriptorRecord<DefaultLogsImplementation>;
|
|
89
160
|
export type InfraLogsKind = InfraLogsDescriptor;
|
|
90
161
|
export type InfraLogsKindInput = InfraLogsDescriptorInput;
|
|
91
162
|
//# sourceMappingURL=logs.kind.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logs.kind.d.ts","sourceRoot":"","sources":["../../src/kinds/logs.kind.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,CAAC,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"logs.kind.d.ts","sourceRoot":"","sources":["../../src/kinds/logs.kind.ts"],"names":[],"mappings":"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"}
|