@vibesdotdev/infra-core 0.0.2 → 1.0.0-rc.4
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 +27 -1
- package/dist/bootstrap/seed.descriptor.d.ts +1 -1
- package/dist/bootstrap/seed.descriptor.d.ts.map +1 -1
- package/dist/bootstrap/seed.descriptor.js +1 -1
- package/dist/bootstrap/seed.descriptor.js.map +1 -1
- package/dist/bootstrap/seed.impl-shape.d.ts +1 -1
- package/dist/bootstrap/seed.impl-shape.d.ts.map +1 -1
- package/dist/bootstrap/seed.kind.d.ts +1 -3
- package/dist/bootstrap/seed.kind.d.ts.map +1 -1
- package/dist/bootstrap/seed.kind.js +17 -4
- package/dist/bootstrap/seed.kind.js.map +1 -1
- package/dist/bootstrap/seed.runner.d.ts +9 -2
- package/dist/bootstrap/seed.runner.d.ts.map +1 -1
- package/dist/bootstrap/seed.runner.js +37 -18
- package/dist/bootstrap/seed.runner.js.map +1 -1
- package/dist/capped-id.d.ts +19 -0
- package/dist/capped-id.d.ts.map +1 -0
- package/dist/capped-id.js +64 -0
- package/dist/capped-id.js.map +1 -0
- package/dist/cli/generate/artifact/artifact.cli-command.descriptor.d.ts +23 -0
- package/dist/cli/generate/artifact/artifact.cli-command.descriptor.d.ts.map +1 -0
- package/dist/cli/generate/artifact/artifact.cli-command.descriptor.js +33 -0
- package/dist/cli/generate/artifact/artifact.cli-command.descriptor.js.map +1 -0
- package/dist/cli/generate/artifact/artifact.cli-command.impl.d.ts +24 -0
- package/dist/cli/generate/artifact/artifact.cli-command.impl.d.ts.map +1 -0
- package/dist/cli/generate/artifact/artifact.cli-command.impl.js +73 -0
- package/dist/cli/generate/artifact/artifact.cli-command.impl.js.map +1 -0
- package/dist/cli/generate/context.d.ts +17 -0
- package/dist/cli/generate/context.d.ts.map +1 -0
- package/dist/cli/generate/context.js +24 -0
- package/dist/cli/generate/context.js.map +1 -0
- package/dist/cli/generate/generate/generate.cli-command.descriptor.d.ts +30 -0
- package/dist/cli/generate/generate/generate.cli-command.descriptor.d.ts.map +1 -0
- package/dist/cli/generate/generate/generate.cli-command.descriptor.js +25 -0
- package/dist/cli/generate/generate/generate.cli-command.descriptor.js.map +1 -0
- package/dist/cli/generate/generate/generate.cli-command.impl.d.ts +25 -0
- package/dist/cli/generate/generate/generate.cli-command.impl.d.ts.map +1 -0
- package/dist/cli/generate/generate/generate.cli-command.impl.js +64 -0
- package/dist/cli/generate/generate/generate.cli-command.impl.js.map +1 -0
- package/dist/cli/generate/generate-core.d.ts +51 -0
- package/dist/cli/generate/generate-core.d.ts.map +1 -0
- package/dist/cli/generate/generate-core.js +172 -0
- package/dist/cli/generate/generate-core.js.map +1 -0
- package/dist/cli/generate/index.d.ts +5 -0
- package/dist/cli/generate/index.d.ts.map +1 -0
- package/dist/cli/generate/index.js +5 -0
- package/dist/cli/generate/index.js.map +1 -0
- package/dist/credentials/resolve.d.ts +82 -22
- package/dist/credentials/resolve.d.ts.map +1 -1
- package/dist/credentials/resolve.js +251 -77
- package/dist/credentials/resolve.js.map +1 -1
- package/dist/deployment-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.d.ts +8 -4
- package/dist/deployment.d.ts.map +1 -1
- package/dist/deployment.js +30 -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 +34 -20
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +28 -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 +62 -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 +381 -0
- package/dist/kinds/build-job.kind.d.ts.map +1 -0
- package/dist/kinds/build-job.kind.js +216 -0
- package/dist/kinds/build-job.kind.js.map +1 -0
- package/dist/kinds/cache.kind.d.ts +39 -92
- package/dist/kinds/cache.kind.d.ts.map +1 -1
- package/dist/kinds/cache.kind.js +26 -51
- 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 +138 -0
- package/dist/kinds/compute-source.kind.d.ts.map +1 -0
- package/dist/kinds/compute-source.kind.js +145 -0
- package/dist/kinds/compute-source.kind.js.map +1 -0
- package/dist/kinds/compute-sources.descriptors.d.ts +45 -0
- package/dist/kinds/compute-sources.descriptors.d.ts.map +1 -0
- package/dist/kinds/compute-sources.descriptors.js +93 -0
- package/dist/kinds/compute-sources.descriptors.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-tls.kind.d.ts +194 -0
- package/dist/kinds/edge-tls.kind.d.ts.map +1 -0
- package/dist/kinds/edge-tls.kind.js +58 -0
- package/dist/kinds/edge-tls.kind.js.map +1 -0
- package/dist/kinds/firewall.kind.d.ts +92 -0
- package/dist/kinds/firewall.kind.d.ts.map +1 -0
- package/dist/kinds/firewall.kind.js +59 -0
- package/dist/kinds/firewall.kind.js.map +1 -0
- package/dist/kinds/git-hosting.kind.d.ts +36 -38
- package/dist/kinds/git-hosting.kind.d.ts.map +1 -1
- package/dist/kinds/git-hosting.kind.js +21 -32
- package/dist/kinds/git-hosting.kind.js.map +1 -1
- package/dist/kinds/index.d.ts +40 -15
- package/dist/kinds/index.d.ts.map +1 -1
- package/dist/kinds/index.js +39 -14
- package/dist/kinds/index.js.map +1 -1
- package/dist/kinds/inventory.kind.d.ts +326 -0
- package/dist/kinds/inventory.kind.d.ts.map +1 -0
- package/dist/kinds/inventory.kind.js +188 -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 +25 -29
- package/dist/kinds/package-registry.kind.d.ts.map +1 -1
- package/dist/kinds/package-registry.kind.js +12 -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 -36
- package/dist/kinds/sandbox.kind.d.ts.map +1 -1
- package/dist/kinds/sandbox.kind.js +80 -34
- 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 +40 -0
- package/dist/kinds/spend-guard.kind.d.ts.map +1 -0
- package/dist/kinds/spend-guard.kind.js +133 -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 +115 -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 +291 -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 +336 -0
- package/dist/schemas/deployment-provider.d.ts.map +1 -0
- package/dist/schemas/deployment-provider.js +198 -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 +190 -20
- package/dist/schemas.d.ts.map +1 -1
- package/dist/schemas.js +137 -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 +132 -0
- package/dist/web-app-projection.d.ts.map +1 -0
- package/dist/web-app-projection.js +93 -0
- package/dist/web-app-projection.js.map +1 -0
- package/package.json +87 -36
- 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
|
@@ -5,10 +5,11 @@
|
|
|
5
5
|
* (alerts, RUM, observability, …) reads from the same credential chain
|
|
6
6
|
* the rest of the platform uses. The chain (highest precedence first):
|
|
7
7
|
*
|
|
8
|
-
* 1.
|
|
9
|
-
* 2. The tier-resolved secrets/store implementation
|
|
8
|
+
* 1. The tier-resolved secrets/store implementation
|
|
10
9
|
* - local tier → encrypted-local → env-file
|
|
11
10
|
* - production → cloudflare-secrets-store → cloudflare-api
|
|
11
|
+
* There is no ambient-environment fallback: credentials resolve only through
|
|
12
|
+
* registered secrets stores, using the handed runtime (first argument).
|
|
12
13
|
*
|
|
13
14
|
* Adapters declare the secret KEY NAMES (e.g. CLOUDFLARE_API_TOKEN) on
|
|
14
15
|
* their descriptor's `adapterConfig` and use this helper to resolve
|
|
@@ -16,113 +17,286 @@
|
|
|
16
17
|
* (e.g. prefer a scoped CLOUDFLARE_NOTIFICATIONS_API_TOKEN, fall back
|
|
17
18
|
* to the broad CLOUDFLARE_API_TOKEN).
|
|
18
19
|
*
|
|
19
|
-
*
|
|
20
|
-
*
|
|
21
|
-
*
|
|
22
|
-
*
|
|
23
|
-
*
|
|
24
|
-
*
|
|
20
|
+
* Every refusal is a typed `CapabilityError` with a fixed message. What a
|
|
21
|
+
* backend threw is never repeated: each failing backend is carried as its
|
|
22
|
+
* value-free facts (`valueFreeFailure`) in the refusal's details. A walk in
|
|
23
|
+
* which any backend failed is `UNAVAILABLE credential-store-unavailable`,
|
|
24
|
+
* never absence; `NOT_FOUND credential-missing` (message prefix
|
|
25
|
+
* `Missing credential:`) means every backend answered and none held a candidate.
|
|
26
|
+
*
|
|
27
|
+
* Each store call is the work of a `runtime.lifecycle.wait`, so a call still
|
|
28
|
+
* running after its deadline is owned by the runtime and joined at disposal.
|
|
25
29
|
*/
|
|
26
|
-
import
|
|
30
|
+
import * as z from 'zod/v4';
|
|
31
|
+
import { readUntrusted, settleUntrusted } from '@vibesdotdev/config/manifest/read-untrusted';
|
|
32
|
+
import { getLogger } from '@vibesdotdev/logging';
|
|
33
|
+
import { CapabilityError, isCapabilityError, valueFreeFailure } from '@vibesdotdev/kernel';
|
|
34
|
+
import { settleWork } from "../settle-work.js";
|
|
35
|
+
/** The logger the opt-in `VIBES_DEBUG_SECRETS=1` trace writes to, on the handed runtime. */
|
|
36
|
+
const DEBUG_LOGGER_ID = 'infra.credentials';
|
|
37
|
+
const secretsDebugEnabled = (runtime) => runtime.getEnv('VIBES_DEBUG_SECRETS') === '1';
|
|
38
|
+
const EnvironmentTierSchema = z.enum(['local', 'dev', 'staging', 'production']);
|
|
39
|
+
/** The options as read once at the boundary: every field parsed independently, the context forwarded as given. */
|
|
40
|
+
const ResolveOptionsSchema = z.object({
|
|
41
|
+
operationContext: z.unknown().optional(),
|
|
42
|
+
keyCandidates: z.array(z.string().min(1)).min(1),
|
|
43
|
+
environment: z.string().min(1).optional(),
|
|
44
|
+
tier: EnvironmentTierSchema.optional(),
|
|
45
|
+
includeAllStoreBackends: z.boolean().optional(),
|
|
46
|
+
fallbackEnvironments: z.array(z.string()).optional(),
|
|
47
|
+
humanName: z.string().optional(),
|
|
48
|
+
backendTimeoutMs: z.number().positive().optional(),
|
|
49
|
+
resolutionTimeoutMs: z.number().positive().optional()
|
|
50
|
+
});
|
|
51
|
+
const OPTIONS_INVALID = {
|
|
52
|
+
code: 'INVALID_INPUT',
|
|
53
|
+
reason: 'credential-options-invalid',
|
|
54
|
+
message: () => 'Credential resolution options are invalid.'
|
|
55
|
+
};
|
|
56
|
+
export function operatorCredentialResolutionPolicy(environment) {
|
|
57
|
+
return {
|
|
58
|
+
environment,
|
|
59
|
+
includeAllStoreBackends: true,
|
|
60
|
+
fallbackEnvironments: environment === 'local' ? [] : ['local']
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
export function adapterCredentialSelection(credential) {
|
|
64
|
+
return {
|
|
65
|
+
requestedEnvironment: credential.requestedEnvironment,
|
|
66
|
+
resolvedEnvironment: credential.resolvedEnvironment,
|
|
67
|
+
key: credential.key,
|
|
68
|
+
source: credential.source
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
/** A resolved store that offers `get`, kept as the original object (its methods use `this`). */
|
|
72
|
+
const SecretsStoreReadsSchema = z.object({ get: z.function() });
|
|
73
|
+
const SecretsStoreReaderSchema = z.custom((value) => SecretsStoreReadsSchema.safeParse(value).success);
|
|
74
|
+
/** What a store answered for one key: a string value, or nothing. */
|
|
75
|
+
const StoredValueSchema = z.string().optional();
|
|
76
|
+
/** The selection facts of one registered store descriptor. */
|
|
77
|
+
const SecretsStoreSelectionSchema = z.looseObject({
|
|
78
|
+
id: z.string().min(1),
|
|
79
|
+
priority: z.number().optional(),
|
|
80
|
+
tiers: z.array(EnvironmentTierSchema).optional()
|
|
81
|
+
});
|
|
82
|
+
const STORE_UNREADABLE = {
|
|
83
|
+
code: 'UNAVAILABLE',
|
|
84
|
+
reason: 'secrets-store-unreadable',
|
|
85
|
+
message: () => 'A secrets store did not answer in its declared shape.'
|
|
86
|
+
};
|
|
87
|
+
/** A failed attempt, by the value-free facts `settleWork` read from what the backend threw. */
|
|
88
|
+
function backendFailure(store, failure, at = {}) {
|
|
89
|
+
return { store, ...at, failure };
|
|
90
|
+
}
|
|
91
|
+
/** The failures as JSON details: names, codes and reasons only. */
|
|
92
|
+
function failureDetails(failures) {
|
|
93
|
+
return failures.map(({ store, environment, key, failure }) => {
|
|
94
|
+
const detail = { store, name: failure.name };
|
|
95
|
+
if (environment !== undefined)
|
|
96
|
+
detail.environment = environment;
|
|
97
|
+
if (key !== undefined)
|
|
98
|
+
detail.key = key;
|
|
99
|
+
if (failure.code !== undefined)
|
|
100
|
+
detail.code = failure.code;
|
|
101
|
+
if (failure.reason !== undefined)
|
|
102
|
+
detail.reason = failure.reason;
|
|
103
|
+
return detail;
|
|
104
|
+
});
|
|
105
|
+
}
|
|
27
106
|
/**
|
|
28
107
|
* Tier-aware backend selection. Mirrors the secrets/store kind's own
|
|
29
|
-
* resolver (`
|
|
108
|
+
* resolver (`secrets/src/kinds/store.kind.ts`) so callers
|
|
30
109
|
* don't need to import internal helpers.
|
|
31
110
|
*/
|
|
32
|
-
function
|
|
111
|
+
function pickBackends(descriptors, tier, includeAllStoreBackends = false) {
|
|
33
112
|
if (descriptors.length === 0)
|
|
34
|
-
return
|
|
35
|
-
const
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
113
|
+
return [];
|
|
114
|
+
const pool = includeAllStoreBackends
|
|
115
|
+
? descriptors
|
|
116
|
+
: descriptors.filter((d) => (d.tiers ?? []).includes(tier));
|
|
117
|
+
const candidates = pool.length > 0 ? pool : descriptors;
|
|
118
|
+
return [...candidates].sort((a, b) => (b.priority ?? 0) - (a.priority ?? 0));
|
|
39
119
|
}
|
|
40
120
|
function inferTier(environment, override) {
|
|
41
121
|
if (override)
|
|
42
122
|
return override;
|
|
43
|
-
|
|
44
|
-
|
|
123
|
+
const known = EnvironmentTierSchema.safeParse(environment);
|
|
124
|
+
return known.success ? known.data : 'local';
|
|
125
|
+
}
|
|
126
|
+
/** Every registered store's selection facts; one that does not read is a carried failure, never dropped. */
|
|
127
|
+
function storeSelections(runtime, failures) {
|
|
128
|
+
const selections = [];
|
|
129
|
+
for (const [index, descriptor] of runtime.assets('secrets/store').descriptors().entries()) {
|
|
130
|
+
const read = settleUntrusted(SecretsStoreSelectionSchema, () => descriptor, STORE_UNREADABLE);
|
|
131
|
+
if (read.ok)
|
|
132
|
+
selections.push(read.data);
|
|
133
|
+
else
|
|
134
|
+
failures.push(backendFailure(`#${index + 1}`, valueFreeFailure(read.error)));
|
|
135
|
+
}
|
|
136
|
+
return selections;
|
|
137
|
+
}
|
|
138
|
+
/** Walk the backends in priority order under the resolution deadline's `signal`; never reads past it. */
|
|
139
|
+
async function walkBackends(runtime, plan, failures, signal) {
|
|
140
|
+
const debug = secretsDebugEnabled(runtime) ? getLogger(DEBUG_LOGGER_ID, runtime) : undefined;
|
|
141
|
+
for (const target of plan.targets) {
|
|
142
|
+
if (signal.aborted)
|
|
143
|
+
return { kind: 'aborted' };
|
|
144
|
+
const opened = await settleWork(async () => {
|
|
145
|
+
const resolved = await runtime.lifecycle.wait(() => runtime.query('secrets/store').withId(target.id).resolve(), { timeoutMs: plan.backendTimeoutMs, reason: `secrets-store-${target.id}-resolution`, signal });
|
|
146
|
+
return readUntrusted(SecretsStoreReaderSchema, () => resolved, STORE_UNREADABLE);
|
|
147
|
+
});
|
|
148
|
+
if (!opened.ok) {
|
|
149
|
+
failures.push(backendFailure(target.id, opened.failure));
|
|
150
|
+
continue;
|
|
151
|
+
}
|
|
152
|
+
const store = opened.value;
|
|
153
|
+
for (const environment of plan.environments) {
|
|
154
|
+
for (const key of plan.keys) {
|
|
155
|
+
if (signal.aborted)
|
|
156
|
+
return { kind: 'aborted' };
|
|
157
|
+
const read = await settleWork(async () => {
|
|
158
|
+
const stored = await runtime.lifecycle.wait(() => store.get(environment, key, plan.operationContext), { timeoutMs: plan.backendTimeoutMs, reason: `secrets-store-${target.id}-read`, signal });
|
|
159
|
+
return readUntrusted(StoredValueSchema, () => stored, STORE_UNREADABLE);
|
|
160
|
+
});
|
|
161
|
+
if (!read.ok) {
|
|
162
|
+
failures.push(backendFailure(target.id, read.failure, { environment, key }));
|
|
163
|
+
}
|
|
164
|
+
else if (read.value !== undefined && read.value.length > 0) {
|
|
165
|
+
debug?.info('secrets debug: credential resolved', { key, store: target.id, environment });
|
|
166
|
+
return {
|
|
167
|
+
kind: 'resolved',
|
|
168
|
+
credential: { key, value: read.value, source: target.id, requestedEnvironment: plan.requestedEnvironment, resolvedEnvironment: environment }
|
|
169
|
+
};
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
}
|
|
45
173
|
}
|
|
46
|
-
return '
|
|
174
|
+
return { kind: 'exhausted' };
|
|
47
175
|
}
|
|
48
176
|
/**
|
|
49
177
|
* Resolve a single credential by walking the candidate keys against
|
|
50
|
-
*
|
|
178
|
+
* the active secrets store. Returns the first match.
|
|
51
179
|
*
|
|
52
|
-
*
|
|
53
|
-
* up so the CLI surfaces a clean "missing credentials" message
|
|
54
|
-
* than a vague "401 Unauthorized" downstream.
|
|
180
|
+
* Refuses typed when no candidate resolves — adapters should let this
|
|
181
|
+
* bubble up so the CLI surfaces a clean "missing credentials" message
|
|
182
|
+
* rather than a vague "401 Unauthorized" downstream.
|
|
55
183
|
*/
|
|
56
|
-
export async function resolveAdapterCredential(options) {
|
|
57
|
-
const
|
|
58
|
-
const
|
|
59
|
-
const
|
|
60
|
-
//
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
184
|
+
export async function resolveAdapterCredential(runtime, options) {
|
|
185
|
+
const input = readUntrusted(ResolveOptionsSchema, () => options, OPTIONS_INVALID);
|
|
186
|
+
const env = input.environment ?? 'local';
|
|
187
|
+
const tier = inferTier(env, input.tier);
|
|
188
|
+
// Ceilings sized for the MEASURED store path, not the hoped-for one: a
|
|
189
|
+
// resolution walks the key-candidate list serially, and each miss is a
|
|
190
|
+
// full secrets-store roundtrip (Cloudflare-backed; observed 5-15s per read
|
|
191
|
+
// under load, 2026-08-18). Five candidates at 20s total aborted a healthy
|
|
192
|
+
// resolution mid-walk — the operator saw "timed out" while the store was
|
|
193
|
+
// merely slow, and worked around the blessed path by hand.
|
|
194
|
+
const backendTimeoutMs = input.backendTimeoutMs ?? 15_000;
|
|
195
|
+
const resolutionTimeoutMs = input.resolutionTimeoutMs ?? 90_000;
|
|
196
|
+
const keys = input.keyCandidates;
|
|
197
|
+
const subject = { keys: [...keys], environment: env, tier };
|
|
198
|
+
if (input.humanName !== undefined)
|
|
199
|
+
subject.humanName = input.humanName;
|
|
71
200
|
if (!runtime.hasKind('secrets/store')) {
|
|
72
|
-
throw new
|
|
73
|
-
'
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
.descriptors();
|
|
78
|
-
// `VIBES_DEBUG_SECRETS=1` dumps the visible descriptor pool when
|
|
79
|
-
// you're tracing why a credential is missing or getting misrouted.
|
|
80
|
-
if (process.env.VIBES_DEBUG_SECRETS === '1') {
|
|
81
|
-
console.error(`[secrets-debug] descriptors visible at tier=${tier}:`);
|
|
82
|
-
for (const d of descriptors) {
|
|
83
|
-
console.error(` - id=${d.id} priority=${d.priority ?? '-'} tiers=${JSON.stringify(d.tiers)}`);
|
|
84
|
-
}
|
|
201
|
+
throw new CapabilityError('No secrets/store kind is registered; the credential cannot resolve.', 'UNAVAILABLE', {
|
|
202
|
+
reason: 'secrets-store-unregistered',
|
|
203
|
+
details: subject,
|
|
204
|
+
recoveryHint: 'Load the secrets plugin (and a backend like encrypted-local) before calling this adapter.'
|
|
205
|
+
});
|
|
85
206
|
}
|
|
86
|
-
const
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
207
|
+
const failures = [];
|
|
208
|
+
const selections = storeSelections(runtime, failures);
|
|
209
|
+
const debug = secretsDebugEnabled(runtime) ? getLogger(DEBUG_LOGGER_ID, runtime) : undefined;
|
|
210
|
+
// `VIBES_DEBUG_SECRETS=1` traces the visible descriptor pool (ids, priorities, tiers; never a value).
|
|
211
|
+
debug?.info('secrets debug: stores visible', {
|
|
212
|
+
tier,
|
|
213
|
+
stores: selections.map((s) => ({ id: s.id, priority: s.priority ?? null, tiers: s.tiers ?? null }))
|
|
214
|
+
});
|
|
215
|
+
const targets = pickBackends(selections, tier, input.includeAllStoreBackends);
|
|
216
|
+
if (targets.length === 0) {
|
|
217
|
+
throw new CapabilityError('No secrets/store backend is available for this tier.', 'UNAVAILABLE', {
|
|
218
|
+
reason: 'secrets-store-backend-unavailable',
|
|
219
|
+
details: { ...subject, failures: failureDetails(failures) },
|
|
220
|
+
recoveryHint: 'Register a backend (encrypted-local for local, cloudflare-secrets-store for production).'
|
|
221
|
+
});
|
|
90
222
|
}
|
|
91
|
-
const
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
223
|
+
const plan = {
|
|
224
|
+
targets,
|
|
225
|
+
environments: [env, ...(input.fallbackEnvironments ?? []).filter((candidate) => candidate && candidate !== env)],
|
|
226
|
+
keys,
|
|
227
|
+
requestedEnvironment: env,
|
|
228
|
+
backendTimeoutMs,
|
|
229
|
+
operationContext: input.operationContext
|
|
230
|
+
};
|
|
231
|
+
let outcome;
|
|
232
|
+
try {
|
|
233
|
+
outcome = await runtime.lifecycle.wait((signal) => walkBackends(runtime, plan, failures, signal), {
|
|
234
|
+
timeoutMs: resolutionTimeoutMs,
|
|
235
|
+
reason: 'credential-resolution'
|
|
236
|
+
});
|
|
97
237
|
}
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
catch {
|
|
106
|
-
// next candidate
|
|
238
|
+
catch (error) {
|
|
239
|
+
if (error instanceof Error && isCapabilityError(error) && error.reason === 'wait-timeout') {
|
|
240
|
+
throw new CapabilityError('Credential resolution timed out.', 'TIMEOUT', {
|
|
241
|
+
reason: 'credential-resolution-timeout',
|
|
242
|
+
details: { ...subject, timeoutMs: resolutionTimeoutMs, failures: failureDetails(failures) },
|
|
243
|
+
cause: valueFreeFailure(error)
|
|
244
|
+
});
|
|
107
245
|
}
|
|
246
|
+
throw error;
|
|
247
|
+
}
|
|
248
|
+
if (outcome.kind === 'resolved')
|
|
249
|
+
return outcome.credential;
|
|
250
|
+
const stores = targets.map((d) => d.id);
|
|
251
|
+
// Absence only when every backend answered: one failed store may hold the credential.
|
|
252
|
+
if (outcome.kind === 'exhausted' && failures.length === 0) {
|
|
253
|
+
throw new CapabilityError('Missing credential: none of the candidate keys resolved from the secrets store.', 'NOT_FOUND', {
|
|
254
|
+
reason: 'credential-missing',
|
|
255
|
+
details: { ...subject, stores, failures: failureDetails(failures) },
|
|
256
|
+
recoveryHint: `Provision it through the configured Vibes secrets workflow for environment "${env}".`
|
|
257
|
+
});
|
|
108
258
|
}
|
|
109
|
-
throw new
|
|
110
|
-
|
|
111
|
-
|
|
259
|
+
throw new CapabilityError('The secrets store could not be read for this credential.', 'UNAVAILABLE', {
|
|
260
|
+
reason: 'credential-store-unavailable',
|
|
261
|
+
details: { ...subject, stores, failures: failureDetails(failures) }
|
|
262
|
+
});
|
|
112
263
|
}
|
|
113
264
|
/**
|
|
114
265
|
* Convenience wrapper for resolving multiple credentials at once.
|
|
115
266
|
* Each key gets a candidate list of one (the key itself). Use the
|
|
116
267
|
* single-credential form when you need fallback chains.
|
|
117
268
|
*/
|
|
118
|
-
export async function resolveAdapterCredentials(keys, options) {
|
|
269
|
+
export async function resolveAdapterCredentials(runtime, keys, options) {
|
|
270
|
+
const input = readUntrusted(PluralOptionsSchema, () => ({ keys, options }), OPTIONS_INVALID);
|
|
119
271
|
const out = {};
|
|
120
|
-
for (const key of keys) {
|
|
121
|
-
out[key] = await resolveAdapterCredential({
|
|
272
|
+
for (const key of input.keys) {
|
|
273
|
+
out[key] = await resolveAdapterCredential(runtime, {
|
|
122
274
|
keyCandidates: [key],
|
|
123
|
-
...
|
|
275
|
+
...input.options
|
|
124
276
|
});
|
|
125
277
|
}
|
|
126
278
|
return out;
|
|
127
279
|
}
|
|
280
|
+
/** The plural form's keys and shared options, read once at its boundary. */
|
|
281
|
+
const PluralOptionsSchema = z.object({
|
|
282
|
+
keys: z.array(z.string().min(1)),
|
|
283
|
+
options: ResolveOptionsSchema.omit({ keyCandidates: true, humanName: true }).optional()
|
|
284
|
+
});
|
|
285
|
+
/** The operator form's options, read once at its boundary; the selection policy is fixed, never taken from the caller. */
|
|
286
|
+
const OperatorOptionsSchema = ResolveOptionsSchema.omit({ tier: true, includeAllStoreBackends: true, fallbackEnvironments: true }).extend({
|
|
287
|
+
environment: z.string().min(1)
|
|
288
|
+
});
|
|
289
|
+
/**
|
|
290
|
+
* Resolve an operator credential with the shared inventory/audit policy.
|
|
291
|
+
* Use `resolveAdapterCredential` directly only when a non-operator workflow
|
|
292
|
+
* intentionally needs a different selection policy (for example, store-only
|
|
293
|
+
* recovery validation).
|
|
294
|
+
*/
|
|
295
|
+
export async function resolveOperatorCredential(runtime, options) {
|
|
296
|
+
const input = readUntrusted(OperatorOptionsSchema, () => options, OPTIONS_INVALID);
|
|
297
|
+
return resolveAdapterCredential(runtime, {
|
|
298
|
+
...input,
|
|
299
|
+
...operatorCredentialResolutionPolicy(input.environment)
|
|
300
|
+
});
|
|
301
|
+
}
|
|
128
302
|
//# sourceMappingURL=resolve.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolve.js","sourceRoot":"","sources":["../../src/credentials/resolve.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"resolve.js","sourceRoot":"","sources":["../../src/credentials/resolve.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The one selection of a deployment environment and of a provider config's
|
|
3
|
+
* environment block. Generic over every provider whose config nests named
|
|
4
|
+
* environments under `env` (wrangler's `env.<name>`, and any provider with the
|
|
5
|
+
* same shape): the deploy driver and each provider implementation select
|
|
6
|
+
* through these, so the environment that picks credentials, ledgers and
|
|
7
|
+
* provider bindings is always the same one.
|
|
8
|
+
*/
|
|
9
|
+
import { type ProviderConfig, type ResolvedProviderConfig } from './schemas/deployment-environment.ts';
|
|
10
|
+
export { ProviderConfigSchema, ResolvedProviderConfigSchema, type ProviderConfig, type ResolvedProviderConfig } from './schemas/deployment-environment.ts';
|
|
11
|
+
/** `prod`/absent read as `production`, `dev` as `development`; every other name is kept, lower-cased. */
|
|
12
|
+
export declare function normalizeDeploymentEnvironment(environment: string | undefined): string;
|
|
13
|
+
/**
|
|
14
|
+
* Select one semantic environment before any runtime, provider, secrets, or
|
|
15
|
+
* ledger work. `--wrangler-env` remains a compatibility spelling, but it no
|
|
16
|
+
* longer forms an independent provider-only selector that can drift from the
|
|
17
|
+
* environment used for credentials and deployment records.
|
|
18
|
+
*/
|
|
19
|
+
export declare function selectDeploymentEnvironment(input: {
|
|
20
|
+
environment?: string;
|
|
21
|
+
providerEnvironment?: string;
|
|
22
|
+
}): string;
|
|
23
|
+
/** Select a provider block without inheriting production bindings into named environments. */
|
|
24
|
+
export declare function resolveDeploymentProviderConfig(generatedConfig: ProviderConfig, environment?: string): ResolvedProviderConfig;
|
|
25
|
+
/** Refuse a missing named block before callers resolve credentials or execute provider commands. */
|
|
26
|
+
export declare function requireDeploymentProviderConfig(generatedConfig: ProviderConfig, environment?: string): {
|
|
27
|
+
config: Record<string, unknown>;
|
|
28
|
+
providerEnvironment: string | null;
|
|
29
|
+
};
|
|
30
|
+
//# sourceMappingURL=deployment-environment.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deployment-environment.d.ts","sourceRoot":"","sources":["../src/deployment-environment.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAwB,KAAK,cAAc,EAAE,KAAK,sBAAsB,EAAE,MAAM,qCAAqC,CAAC;AAC7H,OAAO,EACN,oBAAoB,EACpB,4BAA4B,EAC5B,KAAK,cAAc,EACnB,KAAK,sBAAsB,EAC3B,MAAM,qCAAqC,CAAC;AAQ7C,yGAAyG;AACzG,wBAAgB,8BAA8B,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAKtF;AAED;;;;;GAKG;AACH,wBAAgB,2BAA2B,CAAC,KAAK,EAAE;IAClD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC7B,GAAG,MAAM,CAET;AAED,8FAA8F;AAC9F,wBAAgB,+BAA+B,CAC9C,eAAe,EAAE,cAAc,EAC/B,WAAW,CAAC,EAAE,MAAM,GAClB,sBAAsB,CASxB;AAED,oGAAoG;AACpG,wBAAgB,+BAA+B,CAAC,eAAe,EAAE,cAAc,EAAE,WAAW,CAAC,EAAE,MAAM;;;EAIpG"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The one selection of a deployment environment and of a provider config's
|
|
3
|
+
* environment block. Generic over every provider whose config nests named
|
|
4
|
+
* environments under `env` (wrangler's `env.<name>`, and any provider with the
|
|
5
|
+
* same shape): the deploy driver and each provider implementation select
|
|
6
|
+
* through these, so the environment that picks credentials, ledgers and
|
|
7
|
+
* provider bindings is always the same one.
|
|
8
|
+
*/
|
|
9
|
+
import { ProviderConfigSchema } from "./schemas/deployment-environment.js";
|
|
10
|
+
export { ProviderConfigSchema, ResolvedProviderConfigSchema } from "./schemas/deployment-environment.js";
|
|
11
|
+
/** The record view of an admitted value, parsed once at the boundary. */
|
|
12
|
+
function asRecord(value) {
|
|
13
|
+
const parsed = ProviderConfigSchema.safeParse(value);
|
|
14
|
+
return parsed.success ? parsed.data : null;
|
|
15
|
+
}
|
|
16
|
+
/** `prod`/absent read as `production`, `dev` as `development`; every other name is kept, lower-cased. */
|
|
17
|
+
export function normalizeDeploymentEnvironment(environment) {
|
|
18
|
+
const value = environment?.trim().toLowerCase();
|
|
19
|
+
if (!value || value === 'prod')
|
|
20
|
+
return 'production';
|
|
21
|
+
if (value === 'dev')
|
|
22
|
+
return 'development';
|
|
23
|
+
return value;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Select one semantic environment before any runtime, provider, secrets, or
|
|
27
|
+
* ledger work. `--wrangler-env` remains a compatibility spelling, but it no
|
|
28
|
+
* longer forms an independent provider-only selector that can drift from the
|
|
29
|
+
* environment used for credentials and deployment records.
|
|
30
|
+
*/
|
|
31
|
+
export function selectDeploymentEnvironment(input) {
|
|
32
|
+
return normalizeDeploymentEnvironment(input.environment ?? input.providerEnvironment);
|
|
33
|
+
}
|
|
34
|
+
/** Select a provider block without inheriting production bindings into named environments. */
|
|
35
|
+
export function resolveDeploymentProviderConfig(generatedConfig, environment) {
|
|
36
|
+
const selected = selectDeploymentEnvironment({ environment });
|
|
37
|
+
if (selected === 'production')
|
|
38
|
+
return { config: generatedConfig, providerEnvironment: null };
|
|
39
|
+
const providerEnvironment = selected === 'local' ? 'development' : selected;
|
|
40
|
+
const environments = asRecord(generatedConfig.env) ?? {};
|
|
41
|
+
return {
|
|
42
|
+
config: asRecord(environments[providerEnvironment]),
|
|
43
|
+
providerEnvironment
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
/** Refuse a missing named block before callers resolve credentials or execute provider commands. */
|
|
47
|
+
export function requireDeploymentProviderConfig(generatedConfig, environment) {
|
|
48
|
+
const selected = resolveDeploymentProviderConfig(generatedConfig, environment);
|
|
49
|
+
if (!selected.config)
|
|
50
|
+
throw new Error(`Missing explicit provider environment "${selected.providerEnvironment}"; refusing production fallback.`);
|
|
51
|
+
return { config: selected.config, providerEnvironment: selected.providerEnvironment };
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=deployment-environment.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deployment-environment.js","sourceRoot":"","sources":["../src/deployment-environment.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAE,oBAAoB,EAAoD,MAAM,qCAAqC,CAAC;AAC7H,OAAO,EACN,oBAAoB,EACpB,4BAA4B,EAG5B,MAAM,qCAAqC,CAAC;AAE7C,yEAAyE;AACzE,SAAS,QAAQ,CAAC,KAAc;IAC/B,MAAM,MAAM,GAAG,oBAAoB,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IACrD,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;AAC5C,CAAC;AAED,yGAAyG;AACzG,MAAM,UAAU,8BAA8B,CAAC,WAA+B;IAC7E,MAAM,KAAK,GAAG,WAAW,EAAE,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAChD,IAAI,CAAC,KAAK,IAAI,KAAK,KAAK,MAAM;QAAE,OAAO,YAAY,CAAC;IACpD,IAAI,KAAK,KAAK,KAAK;QAAE,OAAO,aAAa,CAAC;IAC1C,OAAO,KAAK,CAAC;AACd,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,2BAA2B,CAAC,KAG3C;IACA,OAAO,8BAA8B,CAAC,KAAK,CAAC,WAAW,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;AACvF,CAAC;AAED,8FAA8F;AAC9F,MAAM,UAAU,+BAA+B,CAC9C,eAA+B,EAC/B,WAAoB;IAEpB,MAAM,QAAQ,GAAG,2BAA2B,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC;IAC9D,IAAI,QAAQ,KAAK,YAAY;QAAE,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,mBAAmB,EAAE,IAAI,EAAE,CAAC;IAC7F,MAAM,mBAAmB,GAAG,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC;IAC5E,MAAM,YAAY,GAAG,QAAQ,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;IACzD,OAAO;QACN,MAAM,EAAE,QAAQ,CAAC,YAAY,CAAC,mBAAmB,CAAC,CAAC;QACnD,mBAAmB;KACnB,CAAC;AACH,CAAC;AAED,oGAAoG;AACpG,MAAM,UAAU,+BAA+B,CAAC,eAA+B,EAAE,WAAoB;IACpG,MAAM,QAAQ,GAAG,+BAA+B,CAAC,eAAe,EAAE,WAAW,CAAC,CAAC;IAC/E,IAAI,CAAC,QAAQ,CAAC,MAAM;QAAE,MAAM,IAAI,KAAK,CAAC,0CAA0C,QAAQ,CAAC,mBAAmB,kCAAkC,CAAC,CAAC;IAChJ,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,mBAAmB,EAAE,QAAQ,CAAC,mBAAmB,EAAE,CAAC;AACvF,CAAC"}
|
package/dist/deployment.d.ts
CHANGED
|
@@ -1,9 +1,13 @@
|
|
|
1
|
-
import { type
|
|
1
|
+
import { type RuntimeRef } from '@vibesdotdev/kernel';
|
|
2
|
+
import type * as z from 'zod/v4';
|
|
3
|
+
import { deploymentDependencySchema, type AppDeployment, type AppDeploymentInput, type DeploymentDependency, type DeploymentEnvRequirement, type DeploymentOrigin, type DeploymentOriginEnv, type DeploymentUpstream } from './schemas.ts';
|
|
2
4
|
export declare function createAppDeployment(input: AppDeploymentInput): AppDeployment;
|
|
5
|
+
/** Validate admission using only capabilities selected in the caller's runtime. */
|
|
6
|
+
export declare function validateAppDeployment(runtime: RuntimeRef, deployment: AppDeployment): void;
|
|
3
7
|
export declare function createDeploymentOrigin(input: DeploymentOrigin): DeploymentOrigin;
|
|
4
8
|
export declare function createDeploymentEnvRequirement(input: DeploymentEnvRequirement): DeploymentEnvRequirement;
|
|
5
|
-
export declare function createDeploymentDependency(input:
|
|
9
|
+
export declare function createDeploymentDependency(input: z.input<typeof deploymentDependencySchema>): DeploymentDependency;
|
|
6
10
|
export declare function getPrimaryOrigin(deployment: AppDeployment): DeploymentOrigin;
|
|
7
|
-
export declare function getUpstreamOriginEnv(upstream: DeploymentUpstream):
|
|
8
|
-
export type { AppDeployment, AppDeploymentInput, DeploymentDependency, DeploymentEnvRequirement, DeploymentOrigin, DeploymentUpstream };
|
|
11
|
+
export declare function getUpstreamOriginEnv(upstream: DeploymentUpstream): DeploymentOriginEnv;
|
|
12
|
+
export type { AppDeployment, AppDeploymentInput, DeploymentDependency, DeploymentEnvRequirement, DeploymentOrigin, DeploymentOriginEnv, DeploymentUpstream };
|
|
9
13
|
//# 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,EAAiC,KAAK,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAErF,OAAO,KAAK,KAAK,CAAC,MAAM,QAAQ,CAAC;AACjC,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"}
|
package/dist/deployment.js
CHANGED
|
@@ -1,7 +1,37 @@
|
|
|
1
|
+
import { CapabilityError, matchesScope } from '@vibesdotdev/kernel';
|
|
2
|
+
import { DeploymentProviderDescriptorSchema } from "./kinds/deployment-provider.kind.js";
|
|
1
3
|
import { appDeploymentSchema, deploymentDependencySchema, deploymentEnvRequirementSchema, deploymentOriginSchema } from "./schemas.js";
|
|
2
4
|
export function createAppDeployment(input) {
|
|
3
5
|
return appDeploymentSchema.parse(input);
|
|
4
6
|
}
|
|
7
|
+
/** Validate admission using only capabilities selected in the caller's runtime. */
|
|
8
|
+
export function validateAppDeployment(runtime, deployment) {
|
|
9
|
+
const candidates = runtime.hasKind('infra/deployment-provider')
|
|
10
|
+
? runtime.query('infra/deployment-provider')
|
|
11
|
+
.withId(deployment.provider)
|
|
12
|
+
.enabled()
|
|
13
|
+
.filter((provider) => matchesScope(runtime.scope, { hardware: provider.hardware }))
|
|
14
|
+
.descriptors()
|
|
15
|
+
: [];
|
|
16
|
+
const descriptor = candidates[0];
|
|
17
|
+
if (!descriptor) {
|
|
18
|
+
throw new CapabilityError('The deployment provider is not registered.', 'UNAVAILABLE', {
|
|
19
|
+
reason: 'deployment-provider-unavailable', details: { provider: deployment.provider }
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
const capabilities = DeploymentProviderDescriptorSchema.parse(descriptor);
|
|
23
|
+
if (!capabilities.runtimes.includes(deployment.runtime)) {
|
|
24
|
+
throw new CapabilityError('The deployment provider does not support the requested runtime.', 'INVALID_INPUT', {
|
|
25
|
+
reason: 'deployment-runtime-unsupported',
|
|
26
|
+
details: { provider: deployment.provider, runtime: deployment.runtime }
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
if (deployment.execution?.pty === true && !capabilities.pty) {
|
|
30
|
+
throw new CapabilityError('The deployment provider does not support interactive PTY sessions.', 'INVALID_INPUT', {
|
|
31
|
+
reason: 'deployment-pty-unsupported', details: { provider: deployment.provider }
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
}
|
|
5
35
|
export function createDeploymentOrigin(input) {
|
|
6
36
|
return deploymentOriginSchema.parse(input);
|
|
7
37
|
}
|
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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"}
|