@vibesdotdev/integrations-digitalocean 0.0.0-stage → 1.0.0-rc.1
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 +126 -0
- package/README.md +78 -2
- package/dist/ai/index.d.ts +4 -0
- package/dist/ai/index.d.ts.map +1 -0
- package/dist/ai/index.js +4 -0
- package/dist/ai/index.js.map +1 -0
- package/dist/ai/inference.transport.impl.d.ts +5 -0
- package/dist/ai/inference.transport.impl.d.ts.map +1 -0
- package/dist/ai/inference.transport.impl.js +54 -0
- package/dist/ai/inference.transport.impl.js.map +1 -0
- package/dist/ai/provider.plugin.d.ts +6 -0
- package/dist/ai/provider.plugin.d.ts.map +1 -0
- package/dist/ai/provider.plugin.js +126 -0
- package/dist/ai/provider.plugin.js.map +1 -0
- package/dist/ai/providers/cloud/frontier/digitalocean/config/schemas/index.d.ts +62 -0
- package/dist/ai/providers/cloud/frontier/digitalocean/config/schemas/index.d.ts.map +1 -0
- package/dist/ai/providers/cloud/frontier/digitalocean/config/schemas/index.js +73 -0
- package/dist/ai/providers/cloud/frontier/digitalocean/config/schemas/index.js.map +1 -0
- package/dist/ai/providers/cloud/frontier/digitalocean/index.d.ts +2 -0
- package/dist/ai/providers/cloud/frontier/digitalocean/index.d.ts.map +1 -0
- package/dist/ai/providers/cloud/frontier/digitalocean/index.js +2 -0
- package/dist/ai/providers/cloud/frontier/digitalocean/index.js.map +1 -0
- package/dist/ai/providers/cloud/frontier/digitalocean/provider.digitalocean.descriptor.d.ts +183 -0
- package/dist/ai/providers/cloud/frontier/digitalocean/provider.digitalocean.descriptor.d.ts.map +1 -0
- package/dist/ai/providers/cloud/frontier/digitalocean/provider.digitalocean.descriptor.js +66 -0
- package/dist/ai/providers/cloud/frontier/digitalocean/provider.digitalocean.descriptor.js.map +1 -0
- package/dist/apps/api-client.d.ts +45 -0
- package/dist/apps/api-client.d.ts.map +1 -0
- package/dist/apps/api-client.js +47 -0
- package/dist/apps/api-client.js.map +1 -0
- package/dist/apps/build-spec.d.ts +44 -0
- package/dist/apps/build-spec.d.ts.map +1 -0
- package/dist/apps/build-spec.js +463 -0
- package/dist/apps/build-spec.js.map +1 -0
- package/dist/apps/deploy-client.d.ts +42 -0
- package/dist/apps/deploy-client.d.ts.map +1 -0
- package/dist/apps/deploy-client.js +300 -0
- package/dist/apps/deploy-client.js.map +1 -0
- package/dist/apps/index.d.ts +5 -0
- package/dist/apps/index.d.ts.map +1 -0
- package/dist/apps/index.js +4 -0
- package/dist/apps/index.js.map +1 -0
- package/dist/apps/types.d.ts +204 -0
- package/dist/apps/types.d.ts.map +1 -0
- package/dist/apps/types.js +13 -0
- package/dist/apps/types.js.map +1 -0
- package/dist/client/control-plane.d.ts +49 -0
- package/dist/client/control-plane.d.ts.map +1 -0
- package/dist/client/control-plane.js +85 -0
- package/dist/client/control-plane.js.map +1 -0
- package/dist/client/do-fetch.d.ts +41 -0
- package/dist/client/do-fetch.d.ts.map +1 -0
- package/dist/client/do-fetch.js +199 -0
- package/dist/client/do-fetch.js.map +1 -0
- package/dist/client/errors.d.ts +6 -0
- package/dist/client/errors.d.ts.map +1 -0
- package/dist/client/errors.js +34 -0
- package/dist/client/errors.js.map +1 -0
- package/dist/client/factory.d.ts +53 -0
- package/dist/client/factory.d.ts.map +1 -0
- package/dist/client/factory.js +220 -0
- package/dist/client/factory.js.map +1 -0
- package/dist/client/helpers.d.ts +5 -0
- package/dist/client/helpers.d.ts.map +1 -0
- package/dist/client/helpers.js +8 -0
- package/dist/client/helpers.js.map +1 -0
- package/dist/client/index.d.ts +12 -0
- package/dist/client/index.d.ts.map +1 -0
- package/dist/client/index.js +10 -0
- package/dist/client/index.js.map +1 -0
- package/dist/client/paginated.d.ts +19 -0
- package/dist/client/paginated.d.ts.map +1 -0
- package/dist/client/paginated.js +56 -0
- package/dist/client/paginated.js.map +1 -0
- package/dist/client/retry.d.ts +34 -0
- package/dist/client/retry.d.ts.map +1 -0
- package/dist/client/retry.js +53 -0
- package/dist/client/retry.js.map +1 -0
- package/dist/config/digitalocean.config.descriptor.d.ts +197 -0
- package/dist/config/digitalocean.config.descriptor.d.ts.map +1 -0
- package/dist/config/digitalocean.config.descriptor.js +59 -0
- package/dist/config/digitalocean.config.descriptor.js.map +1 -0
- package/dist/credentials/index.d.ts +38 -0
- package/dist/credentials/index.d.ts.map +1 -0
- package/dist/credentials/index.js +56 -0
- package/dist/credentials/index.js.map +1 -0
- package/dist/databases/index.d.ts +82 -0
- package/dist/databases/index.d.ts.map +1 -0
- package/dist/databases/index.js +57 -0
- package/dist/databases/index.js.map +1 -0
- package/dist/digitalocean-friction.policy.d.ts +29 -0
- package/dist/digitalocean-friction.policy.d.ts.map +1 -0
- package/dist/digitalocean-friction.policy.js +21 -0
- package/dist/digitalocean-friction.policy.js.map +1 -0
- package/dist/digitalocean.plugin.d.ts +3 -0
- package/dist/digitalocean.plugin.d.ts.map +1 -0
- package/dist/digitalocean.plugin.js +27 -0
- package/dist/digitalocean.plugin.js.map +1 -0
- package/dist/droplets/index.d.ts +106 -0
- package/dist/droplets/index.d.ts.map +1 -0
- package/dist/droplets/index.js +227 -0
- package/dist/droplets/index.js.map +1 -0
- package/dist/index.d.ts +35 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +32 -0
- package/dist/index.js.map +1 -0
- package/dist/inference-control-plane/index.d.ts +63 -0
- package/dist/inference-control-plane/index.d.ts.map +1 -0
- package/dist/inference-control-plane/index.js +93 -0
- package/dist/inference-control-plane/index.js.map +1 -0
- package/dist/infra/billing.d.ts +26 -0
- package/dist/infra/billing.d.ts.map +1 -0
- package/dist/infra/billing.js +43 -0
- package/dist/infra/billing.js.map +1 -0
- package/dist/infra/credentials.d.ts +11 -0
- package/dist/infra/credentials.d.ts.map +1 -0
- package/dist/infra/credentials.js +15 -0
- package/dist/infra/credentials.js.map +1 -0
- package/dist/infra/deployment-provider/deploy-secrets.d.ts +10 -0
- package/dist/infra/deployment-provider/deploy-secrets.d.ts.map +1 -0
- package/dist/infra/deployment-provider/deploy-secrets.js +66 -0
- package/dist/infra/deployment-provider/deploy-secrets.js.map +1 -0
- package/dist/infra/deployment-provider/digitalocean-deployment-provider.impl.d.ts +96 -0
- package/dist/infra/deployment-provider/digitalocean-deployment-provider.impl.d.ts.map +1 -0
- package/dist/infra/deployment-provider/digitalocean-deployment-provider.impl.js +242 -0
- package/dist/infra/deployment-provider/digitalocean-deployment-provider.impl.js.map +1 -0
- package/dist/infra/deployment-provider/image-publish.d.ts +39 -0
- package/dist/infra/deployment-provider/image-publish.d.ts.map +1 -0
- package/dist/infra/deployment-provider/image-publish.js +146 -0
- package/dist/infra/deployment-provider/image-publish.js.map +1 -0
- package/dist/infra/deployment-provider.descriptor.d.ts +34 -0
- package/dist/infra/deployment-provider.descriptor.d.ts.map +1 -0
- package/dist/infra/deployment-provider.descriptor.js +9 -0
- package/dist/infra/deployment-provider.descriptor.js.map +1 -0
- package/dist/infra/digitalocean-infra.plugin.d.ts +101 -0
- package/dist/infra/digitalocean-infra.plugin.d.ts.map +1 -0
- package/dist/infra/digitalocean-infra.plugin.js +283 -0
- package/dist/infra/digitalocean-infra.plugin.js.map +1 -0
- package/dist/infra/doks/clients.d.ts +183 -0
- package/dist/infra/doks/clients.d.ts.map +1 -0
- package/dist/infra/doks/clients.js +172 -0
- package/dist/infra/doks/clients.js.map +1 -0
- package/dist/infra/doks/digitalocean.d.ts +34 -0
- package/dist/infra/doks/digitalocean.d.ts.map +1 -0
- package/dist/infra/doks/digitalocean.js +267 -0
- package/dist/infra/doks/digitalocean.js.map +1 -0
- package/dist/infra/doks/service-release-schemas.d.ts +1037 -0
- package/dist/infra/doks/service-release-schemas.d.ts.map +1 -0
- package/dist/infra/doks/service-release-schemas.js +51 -0
- package/dist/infra/doks/service-release-schemas.js.map +1 -0
- package/dist/infra/doks/service-release.d.ts +415 -0
- package/dist/infra/doks/service-release.d.ts.map +1 -0
- package/dist/infra/doks/service-release.js +3201 -0
- package/dist/infra/doks/service-release.js.map +1 -0
- package/dist/infra/doks/worker.d.ts +14 -0
- package/dist/infra/doks/worker.d.ts.map +1 -0
- package/dist/infra/doks/worker.js +343 -0
- package/dist/infra/doks/worker.js.map +1 -0
- package/dist/infra/droplet.impl.d.ts +172 -0
- package/dist/infra/droplet.impl.d.ts.map +1 -0
- package/dist/infra/droplet.impl.js +379 -0
- package/dist/infra/droplet.impl.js.map +1 -0
- package/dist/infra/functions.impl.d.ts +123 -0
- package/dist/infra/functions.impl.d.ts.map +1 -0
- package/dist/infra/functions.impl.js +202 -0
- package/dist/infra/functions.impl.js.map +1 -0
- package/dist/infra/index.d.ts +15 -0
- package/dist/infra/index.d.ts.map +1 -0
- package/dist/infra/index.js +12 -0
- package/dist/infra/index.js.map +1 -0
- package/dist/infra/inventory.d.ts +7 -0
- package/dist/infra/inventory.d.ts.map +1 -0
- package/dist/infra/inventory.js +259 -0
- package/dist/infra/inventory.js.map +1 -0
- package/dist/infra/kubernetes-log-stream.d.ts +5 -0
- package/dist/infra/kubernetes-log-stream.d.ts.map +1 -0
- package/dist/infra/kubernetes-log-stream.js +186 -0
- package/dist/infra/kubernetes-log-stream.js.map +1 -0
- package/dist/infra/kubernetes-logs.d.ts +33 -0
- package/dist/infra/kubernetes-logs.d.ts.map +1 -0
- package/dist/infra/kubernetes-logs.descriptor.d.ts +14 -0
- package/dist/infra/kubernetes-logs.descriptor.d.ts.map +1 -0
- package/dist/infra/kubernetes-logs.descriptor.js +28 -0
- package/dist/infra/kubernetes-logs.descriptor.js.map +1 -0
- package/dist/infra/kubernetes-logs.js +196 -0
- package/dist/infra/kubernetes-logs.js.map +1 -0
- package/dist/infra/utilization.d.ts +44 -0
- package/dist/infra/utilization.d.ts.map +1 -0
- package/dist/infra/utilization.js +108 -0
- package/dist/infra/utilization.js.map +1 -0
- package/dist/kubernetes/authority.d.ts +40 -0
- package/dist/kubernetes/authority.d.ts.map +1 -0
- package/dist/kubernetes/authority.js +90 -0
- package/dist/kubernetes/authority.js.map +1 -0
- package/dist/kubernetes/encoding.d.ts +4 -0
- package/dist/kubernetes/encoding.d.ts.map +1 -0
- package/dist/kubernetes/encoding.js +8 -0
- package/dist/kubernetes/encoding.js.map +1 -0
- package/dist/kubernetes/index.d.ts +105 -0
- package/dist/kubernetes/index.d.ts.map +1 -0
- package/dist/kubernetes/index.js +99 -0
- package/dist/kubernetes/index.js.map +1 -0
- package/dist/kubernetes/transport.d.ts +11 -0
- package/dist/kubernetes/transport.d.ts.map +1 -0
- package/dist/kubernetes/transport.js +27 -0
- package/dist/kubernetes/transport.js.map +1 -0
- package/dist/network/index.d.ts +24 -0
- package/dist/network/index.d.ts.map +1 -0
- package/dist/network/index.js +16 -0
- package/dist/network/index.js.map +1 -0
- package/dist/registry/index.d.ts +39 -0
- package/dist/registry/index.d.ts.map +1 -0
- package/dist/registry/index.js +20 -0
- package/dist/registry/index.js.map +1 -0
- package/dist/schemas/app-deployment.d.ts +1472 -0
- package/dist/schemas/app-deployment.d.ts.map +1 -0
- package/dist/schemas/app-deployment.js +156 -0
- package/dist/schemas/app-deployment.js.map +1 -0
- package/dist/schemas/app-platform.d.ts +755 -0
- package/dist/schemas/app-platform.d.ts.map +1 -0
- package/dist/schemas/app-platform.js +253 -0
- package/dist/schemas/app-platform.js.map +1 -0
- package/dist/schemas/cache-database.d.ts +210 -0
- package/dist/schemas/cache-database.d.ts.map +1 -0
- package/dist/schemas/cache-database.js +105 -0
- package/dist/schemas/cache-database.js.map +1 -0
- package/dist/schemas/control-plane.d.ts +456 -0
- package/dist/schemas/control-plane.d.ts.map +1 -0
- package/dist/schemas/control-plane.js +123 -0
- package/dist/schemas/control-plane.js.map +1 -0
- package/dist/schemas/credential-use.d.ts +714 -0
- package/dist/schemas/credential-use.d.ts.map +1 -0
- package/dist/schemas/credential-use.js +73 -0
- package/dist/schemas/credential-use.js.map +1 -0
- package/dist/schemas/doks-worker.d.ts +4062 -0
- package/dist/schemas/doks-worker.d.ts.map +1 -0
- package/dist/schemas/doks-worker.js +330 -0
- package/dist/schemas/doks-worker.js.map +1 -0
- package/dist/schemas/droplet.d.ts +110 -0
- package/dist/schemas/droplet.d.ts.map +1 -0
- package/dist/schemas/droplet.js +22 -0
- package/dist/schemas/droplet.js.map +1 -0
- package/dist/schemas/functions.d.ts +22 -0
- package/dist/schemas/functions.d.ts.map +1 -0
- package/dist/schemas/functions.js +25 -0
- package/dist/schemas/functions.js.map +1 -0
- package/dist/schemas/gitea-git-hosting.d.ts +20 -0
- package/dist/schemas/gitea-git-hosting.d.ts.map +1 -0
- package/dist/schemas/gitea-git-hosting.js +26 -0
- package/dist/schemas/gitea-git-hosting.js.map +1 -0
- package/dist/schemas/http.d.ts +2594 -0
- package/dist/schemas/http.d.ts.map +1 -0
- package/dist/schemas/http.js +4548 -0
- package/dist/schemas/http.js.map +1 -0
- package/dist/schemas/infra-kinds.d.ts +113 -0
- package/dist/schemas/infra-kinds.d.ts.map +1 -0
- package/dist/schemas/infra-kinds.js +93 -0
- package/dist/schemas/infra-kinds.js.map +1 -0
- package/dist/schemas/kubernetes-responses.d.ts +457 -0
- package/dist/schemas/kubernetes-responses.d.ts.map +1 -0
- package/dist/schemas/kubernetes-responses.js +681 -0
- package/dist/schemas/kubernetes-responses.js.map +1 -0
- package/dist/schemas/kubernetes.d.ts +143 -0
- package/dist/schemas/kubernetes.d.ts.map +1 -0
- package/dist/schemas/kubernetes.js +68 -0
- package/dist/schemas/kubernetes.js.map +1 -0
- package/dist/schemas/logs.d.ts +15 -0
- package/dist/schemas/logs.d.ts.map +1 -0
- package/dist/schemas/logs.js +11 -0
- package/dist/schemas/logs.js.map +1 -0
- package/dist/schemas/object-storage.d.ts +167 -0
- package/dist/schemas/object-storage.d.ts.map +1 -0
- package/dist/schemas/object-storage.js +124 -0
- package/dist/schemas/object-storage.js.map +1 -0
- package/dist/schemas/service-settings.d.ts +9 -0
- package/dist/schemas/service-settings.d.ts.map +1 -0
- package/dist/schemas/service-settings.js +21 -0
- package/dist/schemas/service-settings.js.map +1 -0
- package/dist/schemas/utilization.d.ts +57 -0
- package/dist/schemas/utilization.d.ts.map +1 -0
- package/dist/schemas/utilization.js +58 -0
- package/dist/schemas/utilization.js.map +1 -0
- package/dist/schemas/worker-status.d.ts +22 -0
- package/dist/schemas/worker-status.d.ts.map +1 -0
- package/dist/schemas/worker-status.js +14 -0
- package/dist/schemas/worker-status.js.map +1 -0
- package/dist/schemas/worker.d.ts +125 -0
- package/dist/schemas/worker.d.ts.map +1 -0
- package/dist/schemas/worker.js +129 -0
- package/dist/schemas/worker.js.map +1 -0
- package/dist/secrets/app-platform/app-credentials.impl.d.ts +14 -0
- package/dist/secrets/app-platform/app-credentials.impl.d.ts.map +1 -0
- package/dist/secrets/app-platform/app-credentials.impl.js +237 -0
- package/dist/secrets/app-platform/app-credentials.impl.js.map +1 -0
- package/dist/secrets/container-registry/image-publish-settings.descriptor.d.ts +6 -0
- package/dist/secrets/container-registry/image-publish-settings.descriptor.d.ts.map +1 -0
- package/dist/secrets/container-registry/image-publish-settings.descriptor.js +14 -0
- package/dist/secrets/container-registry/image-publish-settings.descriptor.js.map +1 -0
- package/dist/secrets/doks-secret.descriptor.d.ts +18 -0
- package/dist/secrets/doks-secret.descriptor.d.ts.map +1 -0
- package/dist/secrets/doks-secret.descriptor.js +35 -0
- package/dist/secrets/doks-secret.descriptor.js.map +1 -0
- package/dist/secrets/doks-secret.impl.d.ts +98 -0
- package/dist/secrets/doks-secret.impl.d.ts.map +1 -0
- package/dist/secrets/doks-secret.impl.js +451 -0
- package/dist/secrets/doks-secret.impl.js.map +1 -0
- package/dist/secrets/index.d.ts +4 -0
- package/dist/secrets/index.d.ts.map +1 -0
- package/dist/secrets/index.js +4 -0
- package/dist/secrets/index.js.map +1 -0
- package/dist/secrets/secrets-backend-doks.plugin.d.ts +3 -0
- package/dist/secrets/secrets-backend-doks.plugin.d.ts.map +1 -0
- package/dist/secrets/secrets-backend-doks.plugin.js +35 -0
- package/dist/secrets/secrets-backend-doks.plugin.js.map +1 -0
- package/dist/storage/index.d.ts +50 -0
- package/dist/storage/index.d.ts.map +1 -0
- package/dist/storage/index.js +92 -0
- package/dist/storage/index.js.map +1 -0
- package/dist/storage/spaces-keys.d.ts +25 -0
- package/dist/storage/spaces-keys.d.ts.map +1 -0
- package/dist/storage/spaces-keys.js +32 -0
- package/dist/storage/spaces-keys.js.map +1 -0
- package/package.json +172 -4
|
@@ -0,0 +1,237 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DigitalOcean App credential use builds reference bindings and sends each
|
|
3
|
+
* bound mutation through Secrets authenticated-request. Caller-owned values
|
|
4
|
+
* live only in an operation-scoped by-id store registered for that mutation.
|
|
5
|
+
*/
|
|
6
|
+
import { CapabilityError } from '@vibesdotdev/kernel';
|
|
7
|
+
import { BaseRuntimeClient } from '@vibesdotdev/kernel/client';
|
|
8
|
+
import { SecretsStoreDescriptorSchema } from '@vibesdotdev/secrets';
|
|
9
|
+
import { CredentialUseBindingSchema } from '@vibesdotdev/secrets/schemas';
|
|
10
|
+
import { DigitalOceanControlPlaneClient } from "../../client/control-plane.js";
|
|
11
|
+
import { requireApiToken } from "../../credentials/index.js";
|
|
12
|
+
import { buildDigitalOceanAppSpec } from "../../apps/build-spec.js";
|
|
13
|
+
import { AppDeploymentResourceResponseSchema, CreateAppDeploymentResponseSchema } from "../../schemas/http.js";
|
|
14
|
+
import { DigitalOceanSecretCredentialReferenceSchema, DigitalOceanTokenCredentialCandidatesSchema } from "../../schemas/control-plane.js";
|
|
15
|
+
import { DIGITALOCEAN_APP_CREDENTIALS_CLIENT_ID, DigitalOceanAppCredentialMutationRequestSchema, DigitalOceanAppCredentialMutationOutcomeSchema, DigitalOceanAppDeploymentPhaseSchema } from "../../schemas/app-deployment.js";
|
|
16
|
+
const silentLog = { info() { } };
|
|
17
|
+
function operationStoreReadOnly() {
|
|
18
|
+
return new CapabilityError('Operation-scoped App credentials permit reference reads only.', 'UNAVAILABLE', { reason: 'digitalocean-app-operation-store-read-only', retryable: false });
|
|
19
|
+
}
|
|
20
|
+
function createOperationSecretReference(storeId, values, value) {
|
|
21
|
+
const key = storeId + '-value-' + values.size;
|
|
22
|
+
values.set(key, value);
|
|
23
|
+
return DigitalOceanSecretCredentialReferenceSchema.parse({
|
|
24
|
+
source: 'secret',
|
|
25
|
+
store: storeId,
|
|
26
|
+
key
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
function registerOperationSecretStore(runtime, storeId, values) {
|
|
30
|
+
const descriptor = SecretsStoreDescriptorSchema.parse({
|
|
31
|
+
id: storeId,
|
|
32
|
+
kind: 'secrets/store',
|
|
33
|
+
backend: 'digitalocean-app-operation',
|
|
34
|
+
selection: 'by-id',
|
|
35
|
+
priority: 100,
|
|
36
|
+
tiers: ['local', 'dev', 'staging', 'production'],
|
|
37
|
+
enabled: true
|
|
38
|
+
});
|
|
39
|
+
return runtime.registerDynamicAsset('secrets/store', descriptor, async () => ({
|
|
40
|
+
impl: {
|
|
41
|
+
id: descriptor.id,
|
|
42
|
+
descriptor,
|
|
43
|
+
async list() {
|
|
44
|
+
return [];
|
|
45
|
+
},
|
|
46
|
+
async get(_tier, key) {
|
|
47
|
+
return values.get(key);
|
|
48
|
+
},
|
|
49
|
+
async getAll() {
|
|
50
|
+
throw operationStoreReadOnly();
|
|
51
|
+
},
|
|
52
|
+
async set() {
|
|
53
|
+
throw operationStoreReadOnly();
|
|
54
|
+
},
|
|
55
|
+
async unset() {
|
|
56
|
+
throw operationStoreReadOnly();
|
|
57
|
+
},
|
|
58
|
+
async setAll() {
|
|
59
|
+
throw operationStoreReadOnly();
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
}));
|
|
63
|
+
}
|
|
64
|
+
function appCredentialBinding(key, path, required, store) {
|
|
65
|
+
const reference = store === undefined
|
|
66
|
+
? DigitalOceanSecretCredentialReferenceSchema.parse({ source: 'secret', key })
|
|
67
|
+
: DigitalOceanSecretCredentialReferenceSchema.parse({ source: 'secret', key, store });
|
|
68
|
+
return CredentialUseBindingSchema.parse({
|
|
69
|
+
kind: 'json-field',
|
|
70
|
+
candidates: [reference],
|
|
71
|
+
path,
|
|
72
|
+
required
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
function appCredentialBindings(deployment, appConfig, spec, storeId, operationValues) {
|
|
76
|
+
const bindings = [];
|
|
77
|
+
const groups = [
|
|
78
|
+
{ path: 'services', specs: spec.services ?? [], configs: appConfig?.services ?? [] },
|
|
79
|
+
{ path: 'workers', specs: spec.workers ?? [], configs: appConfig?.workers ?? [] },
|
|
80
|
+
{
|
|
81
|
+
path: 'jobs',
|
|
82
|
+
specs: spec.jobs ?? [],
|
|
83
|
+
configs: [...(appConfig?.jobs ?? []), ...(appConfig?.cronJobs ?? [])]
|
|
84
|
+
},
|
|
85
|
+
{ path: 'static_sites', specs: spec.static_sites ?? [], configs: appConfig?.staticSites ?? [] }
|
|
86
|
+
];
|
|
87
|
+
for (const group of groups) {
|
|
88
|
+
for (const [componentIndex, component] of group.specs.entries()) {
|
|
89
|
+
const configuredComponent = group.configs.find(({ name }) => name === component.name);
|
|
90
|
+
for (const [envIndex, env] of (component.envs ?? []).entries()) {
|
|
91
|
+
if (env.type !== 'SECRET')
|
|
92
|
+
continue;
|
|
93
|
+
const configuredEnv = configuredComponent?.envs.find(({ key, type }) => key === env.key && type === 'SECRET');
|
|
94
|
+
const requirement = deployment.env.find(({ name, secret }) => name === env.key && secret === true);
|
|
95
|
+
const source = configuredEnv ?? requirement;
|
|
96
|
+
if (source === undefined)
|
|
97
|
+
continue;
|
|
98
|
+
let key;
|
|
99
|
+
let store;
|
|
100
|
+
if (source.value !== undefined) {
|
|
101
|
+
const reference = createOperationSecretReference(storeId, operationValues, source.value);
|
|
102
|
+
key = reference.key;
|
|
103
|
+
store = reference.store;
|
|
104
|
+
}
|
|
105
|
+
else {
|
|
106
|
+
key = source.storeKey ?? ('key' in source ? source.key : source.name);
|
|
107
|
+
}
|
|
108
|
+
bindings.push(appCredentialBinding(key, ['spec', group.path, String(componentIndex), 'envs', String(envIndex), 'value'], requirement === undefined ? false : requirement.required !== false, store));
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
for (const [destinationIndex, destination] of (appConfig?.logDestinations ?? []).entries()) {
|
|
113
|
+
const endpoint = destination.endpoint;
|
|
114
|
+
switch (endpoint.kind) {
|
|
115
|
+
case 'datadog':
|
|
116
|
+
bindings.push(appCredentialBinding(endpoint.apiKeyStoreKey, ['spec', 'log_destinations', String(destinationIndex), 'datadog', 'api_key'], false));
|
|
117
|
+
break;
|
|
118
|
+
case 'logtail':
|
|
119
|
+
bindings.push(appCredentialBinding(endpoint.tokenStoreKey, ['spec', 'log_destinations', String(destinationIndex), 'logtail', 'token'], false));
|
|
120
|
+
break;
|
|
121
|
+
case 'opensearch':
|
|
122
|
+
if (endpoint.basicAuthUserStoreKey) {
|
|
123
|
+
bindings.push(appCredentialBinding(endpoint.basicAuthUserStoreKey, ['spec', 'log_destinations', String(destinationIndex), 'open_search', 'basic_auth', 'user'], false));
|
|
124
|
+
}
|
|
125
|
+
if (endpoint.basicAuthPasswordStoreKey) {
|
|
126
|
+
bindings.push(appCredentialBinding(endpoint.basicAuthPasswordStoreKey, ['spec', 'log_destinations', String(destinationIndex), 'open_search', 'basic_auth', 'password'], false));
|
|
127
|
+
}
|
|
128
|
+
break;
|
|
129
|
+
case 'papertrail':
|
|
130
|
+
break;
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
return bindings;
|
|
134
|
+
}
|
|
135
|
+
function mutationPhase(app) {
|
|
136
|
+
return app.in_progress_deployment?.phase ?? app.active_deployment?.phase;
|
|
137
|
+
}
|
|
138
|
+
/** Registered owner for DigitalOcean App secret use and mutation. */
|
|
139
|
+
export class DigitalOceanAppCredentialsClient extends BaseRuntimeClient {
|
|
140
|
+
async deploy(input, options = {}) {
|
|
141
|
+
const request = DigitalOceanAppCredentialMutationRequestSchema.parse(input);
|
|
142
|
+
const log = options.credentialLog ?? silentLog;
|
|
143
|
+
const operationStoreId = 'digitalocean-app-operation-' + globalThis.crypto.randomUUID();
|
|
144
|
+
const operationValues = new Map();
|
|
145
|
+
let unregisterStore;
|
|
146
|
+
try {
|
|
147
|
+
const clientOptions = {
|
|
148
|
+
runtime: this.runtime,
|
|
149
|
+
credentialRuntime: this.runtime,
|
|
150
|
+
onCredentialSelected: (provenance) => {
|
|
151
|
+
if (provenance === undefined)
|
|
152
|
+
return;
|
|
153
|
+
log.info(`Using DigitalOcean API token candidate (${provenance.kind}, key ${provenance.reference.key}).`);
|
|
154
|
+
}
|
|
155
|
+
};
|
|
156
|
+
if (options.baseUrl !== undefined)
|
|
157
|
+
clientOptions.baseUrl = options.baseUrl;
|
|
158
|
+
if (options.fetchImpl !== undefined)
|
|
159
|
+
clientOptions.fetchImpl = options.fetchImpl;
|
|
160
|
+
if (options.retry !== undefined)
|
|
161
|
+
clientOptions.retry = options.retry;
|
|
162
|
+
if (options.credentialCandidates !== undefined) {
|
|
163
|
+
clientOptions.credentialCandidates = options.credentialCandidates;
|
|
164
|
+
}
|
|
165
|
+
const spec = buildDigitalOceanAppSpec({
|
|
166
|
+
deployment: request.deployment,
|
|
167
|
+
appConfig: request.appConfig,
|
|
168
|
+
defaultGithub: request.git?.repoCloneUrl
|
|
169
|
+
? {
|
|
170
|
+
repo: request.git.repoCloneUrl,
|
|
171
|
+
branch: request.git.branch ?? 'main',
|
|
172
|
+
deployOnPush: false
|
|
173
|
+
}
|
|
174
|
+
: undefined,
|
|
175
|
+
regionOverride: request.region,
|
|
176
|
+
includeUnresolvedSecrets: true
|
|
177
|
+
});
|
|
178
|
+
const credentialBindings = appCredentialBindings(request.deployment, request.appConfig, spec, operationStoreId, operationValues);
|
|
179
|
+
const explicitToken = options.token === undefined ? undefined : requireApiToken(options.token);
|
|
180
|
+
const usesSecretsCredentialUse = explicitToken === undefined || credentialBindings.length > 0;
|
|
181
|
+
if (usesSecretsCredentialUse) {
|
|
182
|
+
delete clientOptions.fetchImpl;
|
|
183
|
+
}
|
|
184
|
+
if (explicitToken !== undefined && credentialBindings.length > 0) {
|
|
185
|
+
const reference = createOperationSecretReference(operationStoreId, operationValues, explicitToken.value);
|
|
186
|
+
clientOptions.credentialCandidates = DigitalOceanTokenCredentialCandidatesSchema.parse([{
|
|
187
|
+
reference,
|
|
188
|
+
kind: explicitToken.kind
|
|
189
|
+
}]);
|
|
190
|
+
}
|
|
191
|
+
if (operationValues.size > 0) {
|
|
192
|
+
unregisterStore = registerOperationSecretStore(this.runtime, operationStoreId, operationValues);
|
|
193
|
+
}
|
|
194
|
+
const { runtime, ...runtimeOptions } = clientOptions;
|
|
195
|
+
const client = explicitToken !== undefined && !usesSecretsCredentialUse
|
|
196
|
+
? new DigitalOceanControlPlaneClient({ ...clientOptions, token: explicitToken })
|
|
197
|
+
: await DigitalOceanControlPlaneClient.fromRuntime(runtime, runtimeOptions);
|
|
198
|
+
const requestOptions = credentialBindings.length > 0 ? { credentialBindings } : {};
|
|
199
|
+
const targetAppId = request.appId ?? request.appConfig?.id;
|
|
200
|
+
let app;
|
|
201
|
+
let forcedDeploymentId;
|
|
202
|
+
let forcedPhase;
|
|
203
|
+
if (targetAppId) {
|
|
204
|
+
options.onLine?.('stdout', `Updating DO App ${targetAppId}...`);
|
|
205
|
+
const updated = await client.put(`/apps/${targetAppId}`, { spec }, requestOptions, AppDeploymentResourceResponseSchema);
|
|
206
|
+
app = updated.app;
|
|
207
|
+
options.onLine?.('stdout', `Forcing fresh deployment (branch HEAD) for ${targetAppId}...`);
|
|
208
|
+
const forced = await client.post(`/apps/${targetAppId}/deployments`, { force_build: true }, {}, CreateAppDeploymentResponseSchema);
|
|
209
|
+
forcedDeploymentId = forced.deployment?.id;
|
|
210
|
+
forcedPhase = forced.deployment?.phase === undefined
|
|
211
|
+
? undefined
|
|
212
|
+
: DigitalOceanAppDeploymentPhaseSchema.parse(forced.deployment.phase);
|
|
213
|
+
}
|
|
214
|
+
else {
|
|
215
|
+
options.onLine?.('stdout', `Creating DO App '${request.deployment.appId}'...`);
|
|
216
|
+
const created = await client.post('/apps', { spec }, requestOptions, AppDeploymentResourceResponseSchema);
|
|
217
|
+
app = created.app;
|
|
218
|
+
}
|
|
219
|
+
return DigitalOceanAppCredentialMutationOutcomeSchema.parse({
|
|
220
|
+
appId: app.id,
|
|
221
|
+
liveUrl: app.live_url ?? app.default_ingress,
|
|
222
|
+
deploymentId: forcedDeploymentId ?? app.in_progress_deployment?.id ?? app.active_deployment?.id,
|
|
223
|
+
phase: forcedPhase ?? mutationPhase(app)
|
|
224
|
+
});
|
|
225
|
+
}
|
|
226
|
+
finally {
|
|
227
|
+
try {
|
|
228
|
+
unregisterStore?.();
|
|
229
|
+
}
|
|
230
|
+
finally {
|
|
231
|
+
operationValues.clear();
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
export { DIGITALOCEAN_APP_CREDENTIALS_CLIENT_ID };
|
|
237
|
+
//# sourceMappingURL=app-credentials.impl.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"app-credentials.impl.js","sourceRoot":"","sources":["../../../src/secrets/app-platform/app-credentials.impl.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { RuntimeRef } from '@vibesdotdev/kernel';
|
|
2
|
+
import type { DigitalOceanImagePublishSettings } from '../../schemas/app-deployment.ts';
|
|
3
|
+
export declare const DIGITALOCEAN_IMAGE_PUBLISH_SETTINGS_MANIFEST_ID = "digitalocean.image-publish";
|
|
4
|
+
/** Return no settings until the application composes this optional capability. */
|
|
5
|
+
export declare function loadDigitalOceanImagePublishSettings(runtime: RuntimeRef): Promise<DigitalOceanImagePublishSettings | undefined>;
|
|
6
|
+
//# sourceMappingURL=image-publish-settings.descriptor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"image-publish-settings.descriptor.d.ts","sourceRoot":"","sources":["../../../src/secrets/container-registry/image-publish-settings.descriptor.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,KAAK,EAAE,gCAAgC,EAAE,MAAM,iCAAiC,CAAC;AAExF,eAAO,MAAM,+CAA+C,+BAA+B,CAAC;AAE5F,kFAAkF;AAClF,wBAAsB,oCAAoC,CACzD,OAAO,EAAE,UAAU,GACjB,OAAO,CAAC,gCAAgC,GAAG,SAAS,CAAC,CAYvD"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Application-composed settings for DigitalOcean Dockerfile image publishing.
|
|
3
|
+
*/
|
|
4
|
+
import { ConfigManifest } from '@vibesdotdev/config';
|
|
5
|
+
export const DIGITALOCEAN_IMAGE_PUBLISH_SETTINGS_MANIFEST_ID = 'digitalocean.image-publish';
|
|
6
|
+
/** Return no settings until the application composes this optional capability. */
|
|
7
|
+
export async function loadDigitalOceanImagePublishSettings(runtime) {
|
|
8
|
+
if (!runtime.hasKind('config/manifest') ||
|
|
9
|
+
!runtime.query('config/manifest').withId(DIGITALOCEAN_IMAGE_PUBLISH_SETTINGS_MANIFEST_ID).descriptors().length) {
|
|
10
|
+
return undefined;
|
|
11
|
+
}
|
|
12
|
+
return ConfigManifest.forRuntime(runtime, DIGITALOCEAN_IMAGE_PUBLISH_SETTINGS_MANIFEST_ID).load();
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=image-publish-settings.descriptor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"image-publish-settings.descriptor.js","sourceRoot":"","sources":["../../../src/secrets/container-registry/image-publish-settings.descriptor.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAIrD,MAAM,CAAC,MAAM,+CAA+C,GAAG,4BAA4B,CAAC;AAE5F,kFAAkF;AAClF,MAAM,CAAC,KAAK,UAAU,oCAAoC,CACzD,OAAmB;IAEnB,IACC,CAAC,OAAO,CAAC,OAAO,CAAC,iBAAiB,CAAC;QACnC,CAAC,OAAO,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC,MAAM,CAAC,+CAA+C,CAAC,CAAC,WAAW,EAAE,CAAC,MAAM,EAC7G,CAAC;QACF,OAAO,SAAS,CAAC;IAClB,CAAC;IAED,OAAO,cAAc,CAAC,UAAU,CAC/B,OAAO,EACP,+CAA+C,CAC/C,CAAC,IAAI,EAAE,CAAC;AACV,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `doks-secret` — deliver stored secrets to workloads as a Kubernetes Secret.
|
|
3
|
+
*
|
|
4
|
+
* Routed BY ID (`vibes secrets push --backend doks-secret`), never eligible for
|
|
5
|
+
* generic resolution: this is a delivery target, not somewhere `vibes secrets
|
|
6
|
+
* set` should silently land. The canonical store stays local; this projects it.
|
|
7
|
+
*
|
|
8
|
+
* A caller says which cluster namespace an environment means with
|
|
9
|
+
* `namespace.<environment>`, falling back to `namespace`. With neither, the
|
|
10
|
+
* backend refuses rather than guessing — writing production credentials into
|
|
11
|
+
* the wrong namespace is not a mistake worth being convenient about.
|
|
12
|
+
*/
|
|
13
|
+
import type { SecretsStoreDescriptor } from '@vibesdotdev/secrets';
|
|
14
|
+
export declare const DOKS_SECRET_DELIVERY_CLIENT_ID = "digitalocean-doks-secret-delivery";
|
|
15
|
+
export declare const DOKS_SECRET_STORE_ACCESS: unique symbol;
|
|
16
|
+
declare const descriptor: SecretsStoreDescriptor;
|
|
17
|
+
export default descriptor;
|
|
18
|
+
//# sourceMappingURL=doks-secret.descriptor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doks-secret.descriptor.d.ts","sourceRoot":"","sources":["../../src/secrets/doks-secret.descriptor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAEnE,eAAO,MAAM,8BAA8B,sCAAsC,CAAC;AAClF,eAAO,MAAM,wBAAwB,EAAE,OAAO,MAA2C,CAAC;AAE1F,QAAA,MAAM,UAAU,EAAE,sBAmBjB,CAAC;AAEF,eAAe,UAAU,CAAC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `doks-secret` — deliver stored secrets to workloads as a Kubernetes Secret.
|
|
3
|
+
*
|
|
4
|
+
* Routed BY ID (`vibes secrets push --backend doks-secret`), never eligible for
|
|
5
|
+
* generic resolution: this is a delivery target, not somewhere `vibes secrets
|
|
6
|
+
* set` should silently land. The canonical store stays local; this projects it.
|
|
7
|
+
*
|
|
8
|
+
* A caller says which cluster namespace an environment means with
|
|
9
|
+
* `namespace.<environment>`, falling back to `namespace`. With neither, the
|
|
10
|
+
* backend refuses rather than guessing — writing production credentials into
|
|
11
|
+
* the wrong namespace is not a mistake worth being convenient about.
|
|
12
|
+
*/
|
|
13
|
+
export const DOKS_SECRET_DELIVERY_CLIENT_ID = 'digitalocean-doks-secret-delivery';
|
|
14
|
+
export const DOKS_SECRET_STORE_ACCESS = Symbol('doks-secret-store-access');
|
|
15
|
+
const descriptor = {
|
|
16
|
+
id: 'doks-secret',
|
|
17
|
+
kind: 'secrets/store',
|
|
18
|
+
name: 'DOKS Kubernetes Secret',
|
|
19
|
+
description: 'Projects stored secrets into a Kubernetes Secret on a DOKS cluster, read by workloads through an ordinary secretKeyRef',
|
|
20
|
+
tags: ['remote', 'kubernetes', 'delivery-target'],
|
|
21
|
+
enabled: true,
|
|
22
|
+
backend: 'doks-secret',
|
|
23
|
+
tiers: ['dev', 'staging', 'production'],
|
|
24
|
+
// Below every general-purpose backend: only an explicit --backend reaches it.
|
|
25
|
+
priority: 1,
|
|
26
|
+
// A delivery target, named by id; never a scope-selected read store (rc05 §2.3).
|
|
27
|
+
selection: 'by-id',
|
|
28
|
+
// `config` is a flat string map by contract, so a per-environment namespace
|
|
29
|
+
// is spelled `namespace.<environment>`; `namespace` is the fallback.
|
|
30
|
+
config: {
|
|
31
|
+
secretName: 'vibes-secrets'
|
|
32
|
+
}
|
|
33
|
+
};
|
|
34
|
+
export default descriptor;
|
|
35
|
+
//# sourceMappingURL=doks-secret.descriptor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doks-secret.descriptor.js","sourceRoot":"","sources":["../../src/secrets/doks-secret.descriptor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAIH,MAAM,CAAC,MAAM,8BAA8B,GAAG,mCAAmC,CAAC;AAClF,MAAM,CAAC,MAAM,wBAAwB,GAAkB,MAAM,CAAC,0BAA0B,CAAC,CAAC;AAE1F,MAAM,UAAU,GAA2B;IAC1C,EAAE,EAAE,aAAa;IACjB,IAAI,EAAE,eAAe;IACrB,IAAI,EAAE,wBAAwB;IAC9B,WAAW,EACV,wHAAwH;IACzH,IAAI,EAAE,CAAC,QAAQ,EAAE,YAAY,EAAE,iBAAiB,CAAC;IACjD,OAAO,EAAE,IAAI;IACb,OAAO,EAAE,aAAa;IACtB,KAAK,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,YAAY,CAAC;IACvC,8EAA8E;IAC9E,QAAQ,EAAE,CAAC;IACX,iFAAiF;IACjF,SAAS,EAAE,OAAO;IAClB,4EAA4E;IAC5E,qEAAqE;IACrE,MAAM,EAAE;QACP,UAAU,EAAE,eAAe;KAC3B;CACD,CAAC;AAEF,eAAe,UAAU,CAAC"}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `secrets/store` backed by a Kubernetes Secret on a DOKS cluster.
|
|
3
|
+
*
|
|
4
|
+
* `vault-secrets-operator` was installed on `exemplar-staging` to do exactly
|
|
5
|
+
* this and, measured 2026-09-08, held **zero** CRs across every namespace — a
|
|
6
|
+
* Vault, an injector and an operator running for 383 days, delivering nothing.
|
|
7
|
+
* Meanwhile the two realm federators got their signing keys by hand, and the
|
|
8
|
+
* key the manifests claimed came from `vibes secrets` had never been in the
|
|
9
|
+
* store at all.
|
|
10
|
+
*
|
|
11
|
+
* So the delivery step becomes a backend: `vibes secrets push --backend
|
|
12
|
+
* doks-secret` writes the store's values into a Kubernetes Secret that
|
|
13
|
+
* workloads read with an ordinary `secretKeyRef`. No operator, no second
|
|
14
|
+
* source of truth, no CRD.
|
|
15
|
+
*
|
|
16
|
+
* Values are never logged, returned in an error, or placed in argv. Kubernetes
|
|
17
|
+
* Secrets carry them to workloads; build jobs can read registry credentials from
|
|
18
|
+
* their mounted `.npmrc` or `.bunfig.toml` files.
|
|
19
|
+
*/
|
|
20
|
+
import { type KindContext, type VibesRuntime } from '@vibesdotdev/kernel';
|
|
21
|
+
import { BaseRuntimeClient, type RuntimeClientDescriptor } from '@vibesdotdev/kernel/client';
|
|
22
|
+
import { type DigitalOceanDoksWorkerCredentialDeliveryOwner, type DigitalOceanDoksWorkerCredentialLease, type DigitalOceanDoksWorkerPlan } from '../schemas/doks-worker.ts';
|
|
23
|
+
import type { StoreOperationContext } from '@vibesdotdev/secrets';
|
|
24
|
+
import type { SecretEntry, SecretsStoreDescriptor } from '@vibesdotdev/secrets';
|
|
25
|
+
import { DOKS_SECRET_STORE_ACCESS } from './doks-secret.descriptor.ts';
|
|
26
|
+
import { type KubernetesApi } from '../kubernetes/authority.ts';
|
|
27
|
+
export declare function createDoksSecretStore(runtime: VibesRuntime, descriptor: SecretsStoreDescriptor, options?: {
|
|
28
|
+
api?: KubernetesApi;
|
|
29
|
+
}): {
|
|
30
|
+
id: string;
|
|
31
|
+
descriptor: {
|
|
32
|
+
id: string;
|
|
33
|
+
kind: "secrets/store";
|
|
34
|
+
backend: string;
|
|
35
|
+
tiers: ("local" | "dev" | "staging" | "production")[];
|
|
36
|
+
name?: string | undefined;
|
|
37
|
+
description?: string | undefined;
|
|
38
|
+
tags?: string[] | undefined;
|
|
39
|
+
enabled?: boolean | undefined;
|
|
40
|
+
hardware?: string[] | undefined;
|
|
41
|
+
selection?: "scope" | "by-id" | undefined;
|
|
42
|
+
managedCredentialValues?: true | undefined;
|
|
43
|
+
priority?: number | undefined;
|
|
44
|
+
config?: Record<string, string> | undefined;
|
|
45
|
+
};
|
|
46
|
+
list(environment: string, operationContext?: StoreOperationContext): Promise<SecretEntry[]>;
|
|
47
|
+
get(environment: string, key: string, operationContext?: StoreOperationContext): Promise<string | undefined>;
|
|
48
|
+
set(environment: string, key: string, value: string, operationContext?: StoreOperationContext): Promise<void>;
|
|
49
|
+
unset(environment: string, key: string, operationContext?: StoreOperationContext): Promise<void>;
|
|
50
|
+
getAll(environment: string, operationContext?: StoreOperationContext): Promise<Record<string, string>>;
|
|
51
|
+
setAll(environment: string, secrets: Record<string, string>, operationContext?: StoreOperationContext): Promise<void>;
|
|
52
|
+
admitWorkerCredentials: (input: DigitalOceanDoksWorkerPlan) => Promise<void>;
|
|
53
|
+
prepareWorkerCredentials: (input: DigitalOceanDoksWorkerPlan) => Promise<DigitalOceanDoksWorkerPlan>;
|
|
54
|
+
revokeWorkerCredentials: (input: DigitalOceanDoksWorkerCredentialLease) => Promise<void>;
|
|
55
|
+
};
|
|
56
|
+
/**
|
|
57
|
+
* Runtime-owned DOKS Secret capability. The store loader and DOKS worker
|
|
58
|
+
* execution resolve this same BaseRuntimeClient instance, so store connection
|
|
59
|
+
* reuse and credential delivery share one owner without widening secrets/store.
|
|
60
|
+
*/
|
|
61
|
+
export interface DoksSecretStoreAccess {
|
|
62
|
+
[DOKS_SECRET_STORE_ACCESS](): ReturnType<typeof createDoksSecretStore>;
|
|
63
|
+
}
|
|
64
|
+
export declare class DigitalOceanDoksSecretRuntimeClient extends BaseRuntimeClient<VibesRuntime> implements DigitalOceanDoksWorkerCredentialDeliveryOwner, DoksSecretStoreAccess {
|
|
65
|
+
#private;
|
|
66
|
+
constructor(descriptor: RuntimeClientDescriptor, context: KindContext<VibesRuntime>);
|
|
67
|
+
[DOKS_SECRET_STORE_ACCESS](): {
|
|
68
|
+
id: string;
|
|
69
|
+
descriptor: {
|
|
70
|
+
id: string;
|
|
71
|
+
kind: "secrets/store";
|
|
72
|
+
backend: string;
|
|
73
|
+
tiers: ("local" | "dev" | "staging" | "production")[];
|
|
74
|
+
name?: string | undefined;
|
|
75
|
+
description?: string | undefined;
|
|
76
|
+
tags?: string[] | undefined;
|
|
77
|
+
enabled?: boolean | undefined;
|
|
78
|
+
hardware?: string[] | undefined;
|
|
79
|
+
selection?: "scope" | "by-id" | undefined;
|
|
80
|
+
managedCredentialValues?: true | undefined;
|
|
81
|
+
priority?: number | undefined;
|
|
82
|
+
config?: Record<string, string> | undefined;
|
|
83
|
+
};
|
|
84
|
+
list(environment: string, operationContext?: StoreOperationContext): Promise<SecretEntry[]>;
|
|
85
|
+
get(environment: string, key: string, operationContext?: StoreOperationContext): Promise<string | undefined>;
|
|
86
|
+
set(environment: string, key: string, value: string, operationContext?: StoreOperationContext): Promise<void>;
|
|
87
|
+
unset(environment: string, key: string, operationContext?: StoreOperationContext): Promise<void>;
|
|
88
|
+
getAll(environment: string, operationContext?: StoreOperationContext): Promise<Record<string, string>>;
|
|
89
|
+
setAll(environment: string, secrets: Record<string, string>, operationContext?: StoreOperationContext): Promise<void>;
|
|
90
|
+
admitWorkerCredentials: (input: DigitalOceanDoksWorkerPlan) => Promise<void>;
|
|
91
|
+
prepareWorkerCredentials: (input: DigitalOceanDoksWorkerPlan) => Promise<DigitalOceanDoksWorkerPlan>;
|
|
92
|
+
revokeWorkerCredentials: (input: DigitalOceanDoksWorkerCredentialLease) => Promise<void>;
|
|
93
|
+
};
|
|
94
|
+
admitWorkerCredentials(plan: DigitalOceanDoksWorkerPlan): Promise<void>;
|
|
95
|
+
prepareWorkerCredentials(plan: DigitalOceanDoksWorkerPlan): Promise<DigitalOceanDoksWorkerPlan>;
|
|
96
|
+
revokeWorkerCredentials(lease: DigitalOceanDoksWorkerCredentialLease): Promise<void>;
|
|
97
|
+
}
|
|
98
|
+
//# sourceMappingURL=doks-secret.impl.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doks-secret.impl.d.ts","sourceRoot":"","sources":["../../src/secrets/doks-secret.impl.ts"],"names":[],"mappings":"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"}
|