@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 @@
|
|
|
1
|
+
{"version":3,"file":"deployment-graph.js","sourceRoot":"","sources":["../src/deployment-graph.ts"],"names":[],"mappings":"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"}
|
package/dist/deployment.d.ts
CHANGED
|
@@ -1,9 +1,30 @@
|
|
|
1
|
-
import { type
|
|
1
|
+
import { type RuntimeRef } from '@vibesdotdev/kernel';
|
|
2
|
+
import * as z from 'zod/v4';
|
|
3
|
+
import type { DeclaredCredential } from '@vibesdotdev/kernel/credentials';
|
|
4
|
+
import { deploymentDependencySchema, type AppDeployment, type AppDeploymentInput, type DeploymentDependency, type DeploymentEnvRequirement, type DeploymentOrigin, type DeploymentOriginEnv, type DeploymentUpstream } from './schemas.ts';
|
|
2
5
|
export declare function createAppDeployment(input: AppDeploymentInput): AppDeployment;
|
|
6
|
+
/** Validate admission using only capabilities selected in the caller's runtime. */
|
|
7
|
+
export declare function validateAppDeployment(runtime: RuntimeRef, deployment: AppDeployment): void;
|
|
3
8
|
export declare function createDeploymentOrigin(input: DeploymentOrigin): DeploymentOrigin;
|
|
4
9
|
export declare function createDeploymentEnvRequirement(input: DeploymentEnvRequirement): DeploymentEnvRequirement;
|
|
5
|
-
export declare function createDeploymentDependency(input:
|
|
10
|
+
export declare function createDeploymentDependency(input: z.input<typeof deploymentDependencySchema>): DeploymentDependency;
|
|
6
11
|
export declare function getPrimaryOrigin(deployment: AppDeployment): DeploymentOrigin;
|
|
7
|
-
export declare function getUpstreamOriginEnv(upstream: DeploymentUpstream):
|
|
8
|
-
export type { AppDeployment, AppDeploymentInput, DeploymentDependency, DeploymentEnvRequirement, DeploymentOrigin, DeploymentUpstream };
|
|
12
|
+
export declare function getUpstreamOriginEnv(upstream: DeploymentUpstream): DeploymentOriginEnv;
|
|
13
|
+
export type { AppDeployment, AppDeploymentInput, DeploymentDependency, DeploymentEnvRequirement, DeploymentOrigin, DeploymentOriginEnv, DeploymentUpstream };
|
|
14
|
+
/**
|
|
15
|
+
* Derive an app's secret env entries from the credentials its composed plugins
|
|
16
|
+
* declare, and verify the hand-written `env` against them. A declared credential
|
|
17
|
+
* the hand list omits is added (secret, required as declared, described by the
|
|
18
|
+
* owner's purpose). One the hand list contradicts is refused: a hand entry that
|
|
19
|
+
* is not a store-bound secret, or that lowers a required credential to
|
|
20
|
+
* `required: false`, is how a safety control went unbound for days.
|
|
21
|
+
*
|
|
22
|
+
* Secret entries are names only: a secret entry carrying `value` is refused
|
|
23
|
+
* (the refusal names the entry, never the value), and a name listed twice is
|
|
24
|
+
* refused rather than resolved last-wins. A returned entry never carries a
|
|
25
|
+
* plaintext value for a declared credential.
|
|
26
|
+
*/
|
|
27
|
+
export declare function reconcileDeploymentCredentials(envInput: readonly DeploymentEnvRequirement[] | undefined, declared: readonly DeclaredCredential[]): DeploymentEnvRequirement[];
|
|
28
|
+
/** Reconcile a deployment's env against declared credentials, returning the deployment with derived entries. */
|
|
29
|
+
export declare function reconcileAppDeploymentCredentials(deployment: AppDeployment, declared: readonly DeclaredCredential[]): AppDeployment;
|
|
9
30
|
//# sourceMappingURL=deployment.d.ts.map
|
package/dist/deployment.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deployment.d.ts","sourceRoot":"","sources":["../src/deployment.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"deployment.d.ts","sourceRoot":"","sources":["../src/deployment.ts"],"names":[],"mappings":"AAAA,OAAO,EAA8D,KAAK,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAElH,OAAO,KAAK,CAAC,MAAM,QAAQ,CAAC;AAC5B,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AAC1E,OAAO,EAEN,0BAA0B,EAG1B,KAAK,aAAa,EAClB,KAAK,kBAAkB,EACvB,KAAK,oBAAoB,EACzB,KAAK,wBAAwB,EAC7B,KAAK,gBAAgB,EACrB,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,EACvB,MAAM,cAAc,CAAC;AAEtB,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,kBAAkB,GAAG,aAAa,CAE5E;AAED,mFAAmF;AACnF,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,aAAa,GAAG,IAAI,CA0B1F;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,gBAAgB,GAAG,gBAAgB,CAEhF;AAED,wBAAgB,8BAA8B,CAC7C,KAAK,EAAE,wBAAwB,GAC7B,wBAAwB,CAE1B;AAED,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,GAAG,oBAAoB,CAElH;AAED,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,aAAa,GAAG,gBAAgB,CAI5E;AAED,wBAAgB,oBAAoB,CACnC,QAAQ,EAAE,kBAAkB,GAC1B,mBAAmB,CAQrB;AAED,YAAY,EACX,aAAa,EACb,kBAAkB,EAClB,oBAAoB,EACpB,wBAAwB,EACxB,gBAAgB,EAChB,mBAAmB,EACnB,kBAAkB,EAClB,CAAC;AAgBF;;;;;;;;;;;;GAYG;AACH,wBAAgB,8BAA8B,CAC7C,QAAQ,EAAE,SAAS,wBAAwB,EAAE,GAAG,SAAS,EACzD,QAAQ,EAAE,SAAS,kBAAkB,EAAE,GACrC,wBAAwB,EAAE,CAkF5B;AAED,gHAAgH;AAChH,wBAAgB,iCAAiC,CAChD,UAAU,EAAE,aAAa,EACzB,QAAQ,EAAE,SAAS,kBAAkB,EAAE,GACrC,aAAa,CAEf"}
|
package/dist/deployment.js
CHANGED
|
@@ -1,7 +1,38 @@
|
|
|
1
|
+
import { CapabilityError, matchesScope } from '@vibesdotdev/kernel';
|
|
2
|
+
import { DeploymentProviderDescriptorSchema } from "./kinds/deployment-provider.kind.js";
|
|
3
|
+
import * as z from 'zod/v4';
|
|
1
4
|
import { appDeploymentSchema, deploymentDependencySchema, deploymentEnvRequirementSchema, deploymentOriginSchema } from "./schemas.js";
|
|
2
5
|
export function createAppDeployment(input) {
|
|
3
6
|
return appDeploymentSchema.parse(input);
|
|
4
7
|
}
|
|
8
|
+
/** Validate admission using only capabilities selected in the caller's runtime. */
|
|
9
|
+
export function validateAppDeployment(runtime, deployment) {
|
|
10
|
+
const candidates = runtime.hasKind('infra/deployment-provider')
|
|
11
|
+
? runtime.query('infra/deployment-provider')
|
|
12
|
+
.withId(deployment.provider)
|
|
13
|
+
.enabled()
|
|
14
|
+
.filter((provider) => matchesScope(runtime.scope, { hardware: provider.hardware }))
|
|
15
|
+
.descriptors()
|
|
16
|
+
: [];
|
|
17
|
+
const descriptor = candidates[0];
|
|
18
|
+
if (!descriptor) {
|
|
19
|
+
throw new CapabilityError('The deployment provider is not registered.', 'UNAVAILABLE', {
|
|
20
|
+
reason: 'deployment-provider-unavailable', details: { provider: deployment.provider }
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
const capabilities = DeploymentProviderDescriptorSchema.parse(descriptor);
|
|
24
|
+
if (!capabilities.runtimes.includes(deployment.runtime)) {
|
|
25
|
+
throw new CapabilityError('The deployment provider does not support the requested runtime.', 'INVALID_INPUT', {
|
|
26
|
+
reason: 'deployment-runtime-unsupported',
|
|
27
|
+
details: { provider: deployment.provider, runtime: deployment.runtime }
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
if (deployment.execution?.pty === true && !capabilities.pty) {
|
|
31
|
+
throw new CapabilityError('The deployment provider does not support interactive PTY sessions.', 'INVALID_INPUT', {
|
|
32
|
+
reason: 'deployment-pty-unsupported', details: { provider: deployment.provider }
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
}
|
|
5
36
|
export function createDeploymentOrigin(input) {
|
|
6
37
|
return deploymentOriginSchema.parse(input);
|
|
7
38
|
}
|
|
@@ -22,4 +53,78 @@ export function getUpstreamOriginEnv(upstream) {
|
|
|
22
53
|
[upstream.originEnvVar]: upstream.origin
|
|
23
54
|
};
|
|
24
55
|
}
|
|
56
|
+
const deploymentEnvRequirementListSchema = z.array(deploymentEnvRequirementSchema);
|
|
57
|
+
/** The environment-variable alphabet a deployment credential name must fit. */
|
|
58
|
+
const DEPLOYMENT_CREDENTIAL_NAME = /^[A-Z][A-Z0-9_]{0,95}$/;
|
|
59
|
+
function credentialRefusal(message, reason, details, recoveryHint) {
|
|
60
|
+
return new CapabilityError(message, 'INVALID_INPUT', { reason, retryable: false, details, recoveryHint });
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Derive an app's secret env entries from the credentials its composed plugins
|
|
64
|
+
* declare, and verify the hand-written `env` against them. A declared credential
|
|
65
|
+
* the hand list omits is added (secret, required as declared, described by the
|
|
66
|
+
* owner's purpose). One the hand list contradicts is refused: a hand entry that
|
|
67
|
+
* is not a store-bound secret, or that lowers a required credential to
|
|
68
|
+
* `required: false`, is how a safety control went unbound for days.
|
|
69
|
+
*
|
|
70
|
+
* Secret entries are names only: a secret entry carrying `value` is refused
|
|
71
|
+
* (the refusal names the entry, never the value), and a name listed twice is
|
|
72
|
+
* refused rather than resolved last-wins. A returned entry never carries a
|
|
73
|
+
* plaintext value for a declared credential.
|
|
74
|
+
*/
|
|
75
|
+
export function reconcileDeploymentCredentials(envInput, declared) {
|
|
76
|
+
// The env a deployment module exports is untrusted data: parse it here, naming no entry's content.
|
|
77
|
+
const parsedEnv = deploymentEnvRequirementListSchema.safeParse(envInput ?? []);
|
|
78
|
+
if (!parsedEnv.success) {
|
|
79
|
+
throw credentialRefusal('The deployment env is not a list of env requirements.', 'deployment-env-invalid', { issues: parsedEnv.error.issues.length }, 'Each env entry needs a name matching ^[_A-Z0-9]+$ and the documented optional fields.');
|
|
80
|
+
}
|
|
81
|
+
const env = parsedEnv.data;
|
|
82
|
+
const byName = new Map();
|
|
83
|
+
for (const entry of env) {
|
|
84
|
+
if (byName.has(entry.name)) {
|
|
85
|
+
throw credentialRefusal(`The deployment env lists '${entry.name}' more than once.`, 'deployment-env-duplicate', { name: entry.name }, `Keep one '${entry.name}' entry.`);
|
|
86
|
+
}
|
|
87
|
+
byName.set(entry.name, entry);
|
|
88
|
+
if (entry.secret === true && entry.value !== undefined) {
|
|
89
|
+
throw credentialRefusal(`The deployment env entry '${entry.name}' is a secret that carries a value.`, 'deployment-secret-value-inline', { name: entry.name }, `Remove \`value\` from '${entry.name}'; a secret is bound from the secret store, never written in the deployment.`);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
const derived = [];
|
|
93
|
+
const declaredNames = new Set();
|
|
94
|
+
for (const credential of declared) {
|
|
95
|
+
if (!DEPLOYMENT_CREDENTIAL_NAME.test(credential.key)) {
|
|
96
|
+
throw credentialRefusal(`Plugin '${credential.owner}' declares a credential name outside the environment-name alphabet.`, 'deployment-credential-name-invalid', { plugin: credential.owner, length: credential.key.length }, 'Declare the credential with a name matching ^[A-Z][A-Z0-9_]{0,95}$.');
|
|
97
|
+
}
|
|
98
|
+
if (declaredNames.has(credential.key)) {
|
|
99
|
+
throw credentialRefusal(`The credential '${credential.key}' is declared more than once.`, 'deployment-credential-duplicate', { key: credential.key, plugin: credential.owner }, 'Merge declared credentials by name before reconciling a deployment.');
|
|
100
|
+
}
|
|
101
|
+
declaredNames.add(credential.key);
|
|
102
|
+
const entry = byName.get(credential.key);
|
|
103
|
+
if (!entry) {
|
|
104
|
+
derived.push(deploymentEnvRequirementSchema.parse({
|
|
105
|
+
name: credential.key,
|
|
106
|
+
secret: true,
|
|
107
|
+
required: credential.required,
|
|
108
|
+
description: `${credential.purpose} (declared by ${credential.owner})`
|
|
109
|
+
}));
|
|
110
|
+
continue;
|
|
111
|
+
}
|
|
112
|
+
const requiredByEntry = entry.required !== false;
|
|
113
|
+
if (entry.secret !== true || entry.storeBinding === false || (credential.required && !requiredByEntry)) {
|
|
114
|
+
throw credentialRefusal(`The deployment declares '${credential.key}' in a way that contradicts the plugin declaration by '${credential.owner}'.`, 'deployment-credential-conflict', {
|
|
115
|
+
key: credential.key,
|
|
116
|
+
plugin: credential.owner,
|
|
117
|
+
declaredRequired: credential.required,
|
|
118
|
+
deploymentSecret: entry.secret === true,
|
|
119
|
+
deploymentRequired: requiredByEntry,
|
|
120
|
+
deploymentStoreBinding: entry.storeBinding !== false
|
|
121
|
+
}, `Remove the hand-written '${credential.key}' entry (it is derived from the plugin declaration), or make it a store-bound ${credential.required ? 'required ' : ''}secret.`);
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
return [...env, ...derived];
|
|
125
|
+
}
|
|
126
|
+
/** Reconcile a deployment's env against declared credentials, returning the deployment with derived entries. */
|
|
127
|
+
export function reconcileAppDeploymentCredentials(deployment, declared) {
|
|
128
|
+
return { ...deployment, env: reconcileDeploymentCredentials(deployment.env, declared) };
|
|
129
|
+
}
|
|
25
130
|
//# sourceMappingURL=deployment.js.map
|
package/dist/deployment.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deployment.js","sourceRoot":"","sources":["../src/deployment.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,mBAAmB,EACnB,0BAA0B,EAC1B,8BAA8B,EAC9B,sBAAsB,
|
|
1
|
+
{"version":3,"file":"deployment.js","sourceRoot":"","sources":["../src/deployment.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import type { CloudProvider, CloudInstance, CloudProviderErrorDetails, InstanceConfig, InstanceFilters, CloudVolume, VolumeConfig, VolumeFilters, SSHKey } from '../types.ts';
|
|
2
|
+
import { CapabilityError, type CapabilityErrorDetails, type VibesRuntime } from '@vibesdotdev/kernel';
|
|
3
|
+
/**
|
|
4
|
+
* A provider failure in the `CapabilityError` taxonomy: `code` is the mapped
|
|
5
|
+
* taxonomy code (`TIMEOUT`, `NOT_FOUND` for `*_NOT_FOUND`, else
|
|
6
|
+
* `UNAVAILABLE`), `reason` is `cloud-provider-<providerCode>`, and the
|
|
7
|
+
* provider's own code stays on `providerCode`. Message and text details are
|
|
8
|
+
* redacted (credential shapes and control characters removed, bounded).
|
|
9
|
+
*/
|
|
10
|
+
export declare class CloudProviderError extends CapabilityError {
|
|
11
|
+
readonly provider: string;
|
|
12
|
+
readonly providerCode: string;
|
|
13
|
+
constructor(message: string, providerCode: string, provider: string, details?: CloudProviderErrorDetails, options?: {
|
|
14
|
+
readonly cause?: Error | CapabilityErrorDetails;
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
/** Shared mechanics for provider-owned compute and volume implementations. */
|
|
18
|
+
export declare abstract class BaseCloudProvider implements CloudProvider {
|
|
19
|
+
#private;
|
|
20
|
+
protected defaultRegion?: string | undefined;
|
|
21
|
+
abstract name: string;
|
|
22
|
+
constructor(runtime: Pick<VibesRuntime, 'lifecycle'>, credentials: string, defaultRegion?: string | undefined);
|
|
23
|
+
/** Keep runtime internals out of serialization while preserving provider access. */
|
|
24
|
+
protected get runtime(): Pick<VibesRuntime, 'lifecycle'>;
|
|
25
|
+
protected set runtime(runtime: Pick<VibesRuntime, 'lifecycle'>);
|
|
26
|
+
/** The credential the provider was constructed with, for its own requests. */
|
|
27
|
+
protected get credentials(): string;
|
|
28
|
+
abstract createInstance(config: InstanceConfig): Promise<CloudInstance>;
|
|
29
|
+
abstract deleteInstance(instanceId: string): Promise<void>;
|
|
30
|
+
abstract getInstance(instanceId: string): Promise<CloudInstance | null>;
|
|
31
|
+
abstract listInstances(filters?: InstanceFilters): Promise<CloudInstance[]>;
|
|
32
|
+
abstract createVolume(config: VolumeConfig): Promise<CloudVolume>;
|
|
33
|
+
abstract attachVolume(volumeId: string, instanceId: string): Promise<void>;
|
|
34
|
+
abstract detachVolume(volumeId: string): Promise<void>;
|
|
35
|
+
abstract deleteVolume(volumeId: string): Promise<void>;
|
|
36
|
+
abstract listVolumes(filters?: VolumeFilters): Promise<CloudVolume[]>;
|
|
37
|
+
abstract getOrCreateVPC(name: string): Promise<string>;
|
|
38
|
+
abstract addSSHKey(name: string, publicKey: string): Promise<string>;
|
|
39
|
+
abstract listSSHKeys(): Promise<SSHKey[]>;
|
|
40
|
+
protected waitForInstanceStatus(instanceId: string, targetStatus: string, timeoutMs?: number, pollIntervalMs?: number): Promise<CloudInstance>;
|
|
41
|
+
protected waitForVolumeStatus(volumeId: string, targetStatus: string, timeoutMs?: number, pollIntervalMs?: number): Promise<CloudVolume>;
|
|
42
|
+
/** A typed provider failure; `cause` is the failure it replaces, kept for `-v` and logs. */
|
|
43
|
+
protected createError(message: string, code: string, details?: CloudProviderErrorDetails, cause?: Error): CloudProviderError;
|
|
44
|
+
protected buildTags(tags: Record<string, string>, additionalTags?: Record<string, string>): {
|
|
45
|
+
'managed-by': string;
|
|
46
|
+
provider: string;
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=base.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../src/doks/cloud/base.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
import * as z from 'zod/v4';
|
|
2
|
+
import { CapabilityError, isCapabilityError } from '@vibesdotdev/kernel';
|
|
3
|
+
import { redactedExcerpt } from '@vibesdotdev/shared/utils';
|
|
4
|
+
/** The taxonomy code a provider's own failure code maps to. */
|
|
5
|
+
function capabilityCodeOf(providerCode) {
|
|
6
|
+
if (providerCode === 'TIMEOUT')
|
|
7
|
+
return 'TIMEOUT';
|
|
8
|
+
if (providerCode.endsWith('_NOT_FOUND'))
|
|
9
|
+
return 'NOT_FOUND';
|
|
10
|
+
return 'UNAVAILABLE';
|
|
11
|
+
}
|
|
12
|
+
/** `cloud-provider-<provider code in kebab form>`, bounded. */
|
|
13
|
+
function reasonOf(providerCode) {
|
|
14
|
+
const slug = providerCode.toLowerCase().replace(/[^a-z0-9]+/g, '-').replace(/^-+|-+$/g, '').slice(0, 40);
|
|
15
|
+
return `cloud-provider-${slug || 'failure'}`;
|
|
16
|
+
}
|
|
17
|
+
/** One detail value as carried: text redacted, scalars as given. */
|
|
18
|
+
const DetailValueSchema = z.union([z.string().transform((text) => redactedExcerpt(text)), z.number(), z.boolean(), z.null()]);
|
|
19
|
+
function redactedDetails(provider, providerCode, details) {
|
|
20
|
+
const redacted = {};
|
|
21
|
+
for (const [key, value] of Object.entries(details ?? {})) {
|
|
22
|
+
if (value !== undefined)
|
|
23
|
+
redacted[key] = DetailValueSchema.parse(value);
|
|
24
|
+
}
|
|
25
|
+
return { ...redacted, provider, providerCode };
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* A provider failure in the `CapabilityError` taxonomy: `code` is the mapped
|
|
29
|
+
* taxonomy code (`TIMEOUT`, `NOT_FOUND` for `*_NOT_FOUND`, else
|
|
30
|
+
* `UNAVAILABLE`), `reason` is `cloud-provider-<providerCode>`, and the
|
|
31
|
+
* provider's own code stays on `providerCode`. Message and text details are
|
|
32
|
+
* redacted (credential shapes and control characters removed, bounded).
|
|
33
|
+
*/
|
|
34
|
+
export class CloudProviderError extends CapabilityError {
|
|
35
|
+
provider;
|
|
36
|
+
providerCode;
|
|
37
|
+
constructor(message, providerCode, provider, details, options = {}) {
|
|
38
|
+
super(redactedExcerpt(message), capabilityCodeOf(providerCode), {
|
|
39
|
+
reason: reasonOf(providerCode),
|
|
40
|
+
details: redactedDetails(provider, providerCode, details),
|
|
41
|
+
cause: options.cause
|
|
42
|
+
});
|
|
43
|
+
this.name = 'CloudProviderError';
|
|
44
|
+
this.provider = provider;
|
|
45
|
+
this.providerCode = providerCode;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
/** Shared mechanics for provider-owned compute and volume implementations. */
|
|
49
|
+
export class BaseCloudProvider {
|
|
50
|
+
defaultRegion;
|
|
51
|
+
/** The provider credential, private to this class: never an enumerable field that JSON or inspect would print. */
|
|
52
|
+
#credentials;
|
|
53
|
+
#runtime;
|
|
54
|
+
constructor(runtime, credentials, defaultRegion) {
|
|
55
|
+
this.defaultRegion = defaultRegion;
|
|
56
|
+
this.#credentials = credentials;
|
|
57
|
+
this.#runtime = runtime;
|
|
58
|
+
}
|
|
59
|
+
/** Keep runtime internals out of serialization while preserving provider access. */
|
|
60
|
+
get runtime() {
|
|
61
|
+
return this.#runtime;
|
|
62
|
+
}
|
|
63
|
+
set runtime(runtime) {
|
|
64
|
+
this.#runtime = runtime;
|
|
65
|
+
}
|
|
66
|
+
/** The credential the provider was constructed with, for its own requests. */
|
|
67
|
+
get credentials() {
|
|
68
|
+
return this.#credentials;
|
|
69
|
+
}
|
|
70
|
+
async waitForInstanceStatus(instanceId, targetStatus, timeoutMs = 300_000, pollIntervalMs = 5_000) {
|
|
71
|
+
try {
|
|
72
|
+
return await this.runtime.lifecycle.wait(async (signal) => {
|
|
73
|
+
while (true) {
|
|
74
|
+
const instance = await this.getInstance(instanceId);
|
|
75
|
+
if (!instance)
|
|
76
|
+
throw this.createError('Instance not found', 'INSTANCE_NOT_FOUND', { instanceId });
|
|
77
|
+
if (instance.status === targetStatus)
|
|
78
|
+
return instance;
|
|
79
|
+
if (instance.status === 'error' || instance.status === 'terminated') {
|
|
80
|
+
throw this.createError(`Instance entered error state: ${instance.status}`, 'INSTANCE_ERROR', {
|
|
81
|
+
instanceId,
|
|
82
|
+
status: instance.status
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
await this.runtime.lifecycle.delay(pollIntervalMs, signal);
|
|
86
|
+
}
|
|
87
|
+
}, { timeoutMs, reason: `waiting-for-instance-status-${targetStatus}` });
|
|
88
|
+
}
|
|
89
|
+
catch (err) {
|
|
90
|
+
if (err instanceof Error && isCapabilityError(err) && err.reason === 'wait-timeout') {
|
|
91
|
+
throw new CloudProviderError(`Timeout waiting for instance status: ${targetStatus}`, 'TIMEOUT', this.name, {
|
|
92
|
+
instanceId,
|
|
93
|
+
targetStatus,
|
|
94
|
+
timeoutMs
|
|
95
|
+
}, { cause: err });
|
|
96
|
+
}
|
|
97
|
+
throw err;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
async waitForVolumeStatus(volumeId, targetStatus, timeoutMs = 120_000, pollIntervalMs = 3_000) {
|
|
101
|
+
try {
|
|
102
|
+
return await this.runtime.lifecycle.wait(async (signal) => {
|
|
103
|
+
while (true) {
|
|
104
|
+
const volume = (await this.listVolumes()).find((candidate) => candidate.id === volumeId);
|
|
105
|
+
if (!volume)
|
|
106
|
+
throw this.createError('Volume not found', 'VOLUME_NOT_FOUND', { volumeId });
|
|
107
|
+
if (volume.status === targetStatus)
|
|
108
|
+
return volume;
|
|
109
|
+
if (volume.status === 'error' || volume.status === 'deleted') {
|
|
110
|
+
throw this.createError(`Volume entered error state: ${volume.status}`, 'VOLUME_ERROR', {
|
|
111
|
+
volumeId,
|
|
112
|
+
status: volume.status
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
await this.runtime.lifecycle.delay(pollIntervalMs, signal);
|
|
116
|
+
}
|
|
117
|
+
}, { timeoutMs, reason: `waiting-for-volume-status-${targetStatus}` });
|
|
118
|
+
}
|
|
119
|
+
catch (err) {
|
|
120
|
+
if (err instanceof Error && isCapabilityError(err) && err.reason === 'wait-timeout') {
|
|
121
|
+
throw new CloudProviderError(`Timeout waiting for volume status: ${targetStatus}`, 'TIMEOUT', this.name, {
|
|
122
|
+
volumeId,
|
|
123
|
+
targetStatus,
|
|
124
|
+
timeoutMs
|
|
125
|
+
}, { cause: err });
|
|
126
|
+
}
|
|
127
|
+
throw err;
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
/** A typed provider failure; `cause` is the failure it replaces, kept for `-v` and logs. */
|
|
131
|
+
createError(message, code, details, cause) {
|
|
132
|
+
return new CloudProviderError(message, code, this.name, details, { cause });
|
|
133
|
+
}
|
|
134
|
+
buildTags(tags, additionalTags) {
|
|
135
|
+
return { 'managed-by': 'vibes', provider: this.name, ...tags, ...additionalTags };
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
//# sourceMappingURL=base.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base.js","sourceRoot":"","sources":["../../../src/doks/cloud/base.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { VibesRuntime } from '@vibesdotdev/kernel';
|
|
2
|
+
import type { CloudProvider } from '../types.ts';
|
|
3
|
+
export type CloudProviderFactory = (runtime: Pick<VibesRuntime, 'lifecycle'>, credentials: string, region: string) => CloudProvider;
|
|
4
|
+
export interface CloudProviderFactoryImplementation {
|
|
5
|
+
create: CloudProviderFactory;
|
|
6
|
+
}
|
|
7
|
+
export interface CloudProviderFactoryRuntime {
|
|
8
|
+
resolve<T>(kind: string, id: string): Promise<T>;
|
|
9
|
+
readonly lifecycle: VibesRuntime['lifecycle'];
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Resolve and construct the vendor implementation selected by the active
|
|
13
|
+
* runtime. A resolved implementation without `create` refuses
|
|
14
|
+
* `INVALID_INPUT cloud-provider-factory-invalid`; a resolution failure passes
|
|
15
|
+
* through as the runtime raised it.
|
|
16
|
+
*/
|
|
17
|
+
export declare function createRegisteredCloudProvider(runtime: CloudProviderFactoryRuntime, type: string, credentials: string, region: string): Promise<CloudProvider>;
|
|
18
|
+
//# sourceMappingURL=factory.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../../src/doks/cloud/factory.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjD,MAAM,MAAM,oBAAoB,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,YAAY,EAAE,WAAW,CAAC,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,aAAa,CAAC;AAEpI,MAAM,WAAW,kCAAkC;IAClD,MAAM,EAAE,oBAAoB,CAAC;CAC7B;AAED,MAAM,WAAW,2BAA2B;IAC3C,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IACjD,QAAQ,CAAC,SAAS,EAAE,YAAY,CAAC,WAAW,CAAC,CAAC;CAC9C;AAYD;;;;;GAKG;AACH,wBAAsB,6BAA6B,CAClD,OAAO,EAAE,2BAA2B,EACpC,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,GACZ,OAAO,CAAC,aAAa,CAAC,CAOxB"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import * as z from 'zod/v4';
|
|
2
|
+
import { readUntrusted } from '@vibesdotdev/config/manifest/read-untrusted';
|
|
3
|
+
/** A registered factory offers `create`; kept as the original object (its method may use `this`). */
|
|
4
|
+
const FactoryOperationsSchema = z.object({ create: z.function() });
|
|
5
|
+
const FactorySchema = z.custom((value) => FactoryOperationsSchema.safeParse(value).success);
|
|
6
|
+
const FACTORY_INVALID = {
|
|
7
|
+
code: 'INVALID_INPUT',
|
|
8
|
+
reason: 'cloud-provider-factory-invalid',
|
|
9
|
+
message: () => 'The registered infra/cloud-provider implementation offers no create().'
|
|
10
|
+
};
|
|
11
|
+
/**
|
|
12
|
+
* Resolve and construct the vendor implementation selected by the active
|
|
13
|
+
* runtime. A resolved implementation without `create` refuses
|
|
14
|
+
* `INVALID_INPUT cloud-provider-factory-invalid`; a resolution failure passes
|
|
15
|
+
* through as the runtime raised it.
|
|
16
|
+
*/
|
|
17
|
+
export async function createRegisteredCloudProvider(runtime, type, credentials, region) {
|
|
18
|
+
const resolved = await runtime.resolve('infra/cloud-provider', type);
|
|
19
|
+
const factory = readUntrusted(FactorySchema, () => resolved, FACTORY_INVALID);
|
|
20
|
+
return factory.create(runtime, credentials, region);
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=factory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"factory.js","sourceRoot":"","sources":["../../../src/doks/cloud/factory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,aAAa,EAA6B,MAAM,6CAA6C,CAAC;AAevG,qGAAqG;AACrG,MAAM,uBAAuB,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;AACnE,MAAM,aAAa,GAAG,CAAC,CAAC,MAAM,CAAqC,CAAC,KAAK,EAAE,EAAE,CAAC,uBAAuB,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC;AAEhI,MAAM,eAAe,GAAyB;IAC7C,IAAI,EAAE,eAAe;IACrB,MAAM,EAAE,gCAAgC;IACxC,OAAO,EAAE,GAAG,EAAE,CAAC,wEAAwE;CACvF,CAAC;AAEF;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,6BAA6B,CAClD,OAAoC,EACpC,IAAY,EACZ,WAAmB,EACnB,MAAc;IAEd,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,OAAO,CACrC,sBAAsB,EACtB,IAAI,CACJ,CAAC;IACF,MAAM,OAAO,GAAG,aAAa,CAAC,aAAa,EAAE,GAAG,EAAE,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAC;IAC9E,OAAO,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC;AACrD,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export type { CloudProvider, InstanceConfig, CloudInstance, InstanceFilters, VolumeConfig, CloudVolume, VolumeFilters, SSHKey, CloudProviderConfig, CloudProviderErrorDetails, CloudInstanceMetadata, InstanceStatus, VolumeStatus } from '../types.ts';
|
|
2
|
+
export { CloudProviderError, CloudProviderConfigSchema } from '../types.ts';
|
|
3
|
+
export { BaseCloudProvider } from './base.ts';
|
|
4
|
+
export { createRegisteredCloudProvider, type CloudProviderFactory, type CloudProviderFactoryImplementation, type CloudProviderFactoryRuntime } from './factory.ts';
|
|
5
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/doks/cloud/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACX,aAAa,EACb,cAAc,EACd,aAAa,EACb,eAAe,EACf,YAAY,EACZ,WAAW,EACX,aAAa,EACb,MAAM,EACN,mBAAmB,EACnB,yBAAyB,EACzB,qBAAqB,EACrB,cAAc,EACd,YAAY,EACZ,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,kBAAkB,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AAC5E,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,EACN,6BAA6B,EAC7B,KAAK,oBAAoB,EACzB,KAAK,kCAAkC,EACvC,KAAK,2BAA2B,EAChC,MAAM,cAAc,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/doks/cloud/index.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,kBAAkB,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AAC5E,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,EACN,6BAA6B,EAI7B,MAAM,cAAc,CAAC"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
/** Provider-neutral cloud compute and volume contracts. */
|
|
2
|
+
import * as z from 'zod/v4';
|
|
3
|
+
import type { CapabilityErrorDetails } from '@vibesdotdev/kernel';
|
|
4
|
+
export type InstanceStatus = 'pending' | 'running' | 'stopping' | 'stopped' | 'terminating' | 'terminated' | 'error';
|
|
5
|
+
export type VolumeStatus = 'creating' | 'available' | 'in-use' | 'deleting' | 'deleted' | 'error';
|
|
6
|
+
export interface CloudProvider {
|
|
7
|
+
name: string;
|
|
8
|
+
createInstance(config: InstanceConfig): Promise<CloudInstance>;
|
|
9
|
+
deleteInstance(instanceId: string): Promise<void>;
|
|
10
|
+
getInstance(instanceId: string): Promise<CloudInstance | null>;
|
|
11
|
+
listInstances(filters?: InstanceFilters): Promise<CloudInstance[]>;
|
|
12
|
+
createVolume(config: VolumeConfig): Promise<CloudVolume>;
|
|
13
|
+
attachVolume(volumeId: string, instanceId: string): Promise<void>;
|
|
14
|
+
detachVolume(volumeId: string): Promise<void>;
|
|
15
|
+
deleteVolume(volumeId: string): Promise<void>;
|
|
16
|
+
listVolumes(filters?: VolumeFilters): Promise<CloudVolume[]>;
|
|
17
|
+
getOrCreateVPC(name: string): Promise<string>;
|
|
18
|
+
addSSHKey(name: string, publicKey: string): Promise<string>;
|
|
19
|
+
listSSHKeys(): Promise<SSHKey[]>;
|
|
20
|
+
}
|
|
21
|
+
export interface InstanceConfig {
|
|
22
|
+
name: string;
|
|
23
|
+
type: string;
|
|
24
|
+
region: string;
|
|
25
|
+
image: string;
|
|
26
|
+
sshKeys?: string[];
|
|
27
|
+
vpcId?: string;
|
|
28
|
+
userData?: string;
|
|
29
|
+
tags: Record<string, string>;
|
|
30
|
+
}
|
|
31
|
+
export interface CloudInstance {
|
|
32
|
+
id: string;
|
|
33
|
+
name: string;
|
|
34
|
+
type: string;
|
|
35
|
+
region: string;
|
|
36
|
+
status: InstanceStatus;
|
|
37
|
+
publicIp?: string;
|
|
38
|
+
privateIp?: string;
|
|
39
|
+
createdAt: Date;
|
|
40
|
+
tags: Record<string, string>;
|
|
41
|
+
metadata?: CloudInstanceMetadata;
|
|
42
|
+
}
|
|
43
|
+
/** Provider-reported instance facts: JSON values only. */
|
|
44
|
+
export type CloudInstanceMetadata = CapabilityErrorDetails;
|
|
45
|
+
export interface InstanceFilters {
|
|
46
|
+
status?: InstanceStatus[];
|
|
47
|
+
tags?: Record<string, string>;
|
|
48
|
+
region?: string;
|
|
49
|
+
}
|
|
50
|
+
export interface VolumeConfig {
|
|
51
|
+
name: string;
|
|
52
|
+
size: number;
|
|
53
|
+
region: string;
|
|
54
|
+
tags?: Record<string, string>;
|
|
55
|
+
}
|
|
56
|
+
export interface CloudVolume {
|
|
57
|
+
id: string;
|
|
58
|
+
name: string;
|
|
59
|
+
size: number;
|
|
60
|
+
region: string;
|
|
61
|
+
status: VolumeStatus;
|
|
62
|
+
attachedTo?: string;
|
|
63
|
+
createdAt: Date;
|
|
64
|
+
tags?: Record<string, string>;
|
|
65
|
+
}
|
|
66
|
+
export interface VolumeFilters {
|
|
67
|
+
status?: VolumeStatus[];
|
|
68
|
+
region?: string;
|
|
69
|
+
attachedTo?: string;
|
|
70
|
+
}
|
|
71
|
+
export interface SSHKey {
|
|
72
|
+
id: string;
|
|
73
|
+
name: string;
|
|
74
|
+
fingerprint: string;
|
|
75
|
+
publicKey: string;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Provider-neutral cloud provider config. `type` is the open provider id,
|
|
79
|
+
* resolved through the registered cloud provider factory — never a closed
|
|
80
|
+
* provider enum.
|
|
81
|
+
*/
|
|
82
|
+
export declare const CloudProviderConfigSchema: z.ZodObject<{
|
|
83
|
+
type: z.ZodString;
|
|
84
|
+
credentials: z.ZodString;
|
|
85
|
+
region: z.ZodOptional<z.ZodString>;
|
|
86
|
+
}, z.core.$strip>;
|
|
87
|
+
export type CloudProviderConfig = z.infer<typeof CloudProviderConfigSchema>;
|
|
88
|
+
/**
|
|
89
|
+
* What a provider attaches to a failure: scalar facts (ids, statuses, HTTP
|
|
90
|
+
* codes). Text values are redacted at construction, so a provider that hands
|
|
91
|
+
* over a raw API body or an echoed token never carries it further.
|
|
92
|
+
*/
|
|
93
|
+
export type CloudProviderErrorDetails = Readonly<Record<string, string | number | boolean | null | undefined>>;
|
|
94
|
+
export { CloudProviderError } from './cloud/base.ts';
|
|
95
|
+
//# sourceMappingURL=types.d.ts.map
|