@vibesdotdev/infra-core 0.0.2 → 1.0.0-rc.5
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 +35 -21
- 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 +327 -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 +139 -33
- 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 -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 +293 -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
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
declare const _default: {
|
|
2
|
+
id: string;
|
|
3
|
+
kind: "cli/command";
|
|
4
|
+
group: string;
|
|
5
|
+
name: string;
|
|
6
|
+
description: string;
|
|
7
|
+
usage: string;
|
|
8
|
+
arguments: never[];
|
|
9
|
+
options: ({
|
|
10
|
+
flags: string;
|
|
11
|
+
description: string;
|
|
12
|
+
default: string;
|
|
13
|
+
multiple?: undefined;
|
|
14
|
+
} | {
|
|
15
|
+
flags: string;
|
|
16
|
+
description: string;
|
|
17
|
+
default?: undefined;
|
|
18
|
+
multiple?: undefined;
|
|
19
|
+
} | {
|
|
20
|
+
flags: string;
|
|
21
|
+
description: string;
|
|
22
|
+
multiple: boolean;
|
|
23
|
+
default?: undefined;
|
|
24
|
+
})[];
|
|
25
|
+
surfaces: string[];
|
|
26
|
+
hardware: string[];
|
|
27
|
+
enabled: true;
|
|
28
|
+
};
|
|
29
|
+
export default _default;
|
|
30
|
+
//# sourceMappingURL=generate.cli-command.descriptor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generate.cli-command.descriptor.d.ts","sourceRoot":"","sources":["../../../../src/cli/generate/generate/generate.cli-command.descriptor.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAKA,wBAmBG"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CLI command: vibes infra generate
|
|
3
|
+
*/
|
|
4
|
+
import { createRuntimeAsset } from '@vibesdotdev/kernel';
|
|
5
|
+
export default createRuntimeAsset({
|
|
6
|
+
id: 'infra-generate.run',
|
|
7
|
+
kind: 'cli/command',
|
|
8
|
+
group: 'infra',
|
|
9
|
+
name: 'generate',
|
|
10
|
+
description: 'Generate infrastructure artifacts (K8s manifests, Helm charts, wrangler configs)',
|
|
11
|
+
usage: 'vibes infra generate [options]',
|
|
12
|
+
arguments: [],
|
|
13
|
+
options: [
|
|
14
|
+
{ flags: '-o, --output <dir>', description: 'Output directory', default: './infra/generated' },
|
|
15
|
+
{ flags: '-n, --dry-run', description: 'Print what would be generated without writing' },
|
|
16
|
+
{ flags: '-t, --target <name>', description: 'Filter by artifact target', multiple: true },
|
|
17
|
+
{ flags: '-r, --resource <id>', description: 'Filter by resource ID', multiple: true },
|
|
18
|
+
{ flags: '-f, --format <format>', description: 'Filter by format (yaml|json|hcl|tar.gz)' },
|
|
19
|
+
{ flags: '-v, --verbose', description: 'Verbose output' }
|
|
20
|
+
],
|
|
21
|
+
surfaces: ['cli'],
|
|
22
|
+
hardware: ['consumer', 'cloud'],
|
|
23
|
+
enabled: true
|
|
24
|
+
});
|
|
25
|
+
//# sourceMappingURL=generate.cli-command.descriptor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generate.cli-command.descriptor.js","sourceRoot":"","sources":["../../../../src/cli/generate/generate/generate.cli-command.descriptor.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAEzD,eAAe,kBAAkB,CAAC;IACjC,EAAE,EAAE,oBAAoB;IACxB,IAAI,EAAE,aAAa;IACnB,KAAK,EAAE,OAAO;IACd,IAAI,EAAE,UAAU;IAChB,WAAW,EAAE,kFAAkF;IAC/F,KAAK,EAAE,gCAAgC;IACvC,SAAS,EAAE,EAAE;IACb,OAAO,EAAE;QACR,EAAE,KAAK,EAAE,oBAAoB,EAAE,WAAW,EAAE,kBAAkB,EAAE,OAAO,EAAE,mBAAmB,EAAE;QAC9F,EAAE,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,+CAA+C,EAAE;QACxF,EAAE,KAAK,EAAE,qBAAqB,EAAE,WAAW,EAAE,2BAA2B,EAAE,QAAQ,EAAE,IAAI,EAAE;QAC1F,EAAE,KAAK,EAAE,qBAAqB,EAAE,WAAW,EAAE,uBAAuB,EAAE,QAAQ,EAAE,IAAI,EAAE;QACtF,EAAE,KAAK,EAAE,uBAAuB,EAAE,WAAW,EAAE,yCAAyC,EAAE;QAC1F,EAAE,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,gBAAgB,EAAE;KACzD;IACD,QAAQ,EAAE,CAAC,KAAK,CAAC;IACjB,QAAQ,EAAE,CAAC,UAAU,EAAE,OAAO,CAAC;IAC/B,OAAO,EAAE,IAAI;CACb,CAAC,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Implementation: vibes infra generate
|
|
3
|
+
*
|
|
4
|
+
* Every `--resource` and the `--format` filter reach the generation core.
|
|
5
|
+
* A generator failure is printed value-free and the run refuses
|
|
6
|
+
* `INTERNAL infra-generate-failed`, which the CLI host maps to the exit code.
|
|
7
|
+
*/
|
|
8
|
+
import * as z from 'zod/v4';
|
|
9
|
+
import { type CommandContext } from '../context.ts';
|
|
10
|
+
declare const GenerateOptionsSchema: z.ZodObject<{
|
|
11
|
+
output: z.ZodOptional<z.ZodString>;
|
|
12
|
+
dryRun: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodLiteral<"true">, z.ZodLiteral<"false">]>>;
|
|
13
|
+
target: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>>;
|
|
14
|
+
resource: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>>;
|
|
15
|
+
format: z.ZodOptional<z.ZodString>;
|
|
16
|
+
verbose: z.ZodOptional<z.ZodUnion<readonly [z.ZodBoolean, z.ZodLiteral<"true">, z.ZodLiteral<"false">]>>;
|
|
17
|
+
}, z.core.$loose>;
|
|
18
|
+
export type GenerateCommandOptions = z.input<typeof GenerateOptionsSchema>;
|
|
19
|
+
declare const GenerateArgsSchema: z.ZodObject<{}, z.core.$loose>;
|
|
20
|
+
export type GenerateCommandArgs = z.input<typeof GenerateArgsSchema>;
|
|
21
|
+
declare const _default: {
|
|
22
|
+
execute(rawArgs: GenerateCommandArgs, rawOptions: GenerateCommandOptions, context: CommandContext): Promise<void>;
|
|
23
|
+
};
|
|
24
|
+
export default _default;
|
|
25
|
+
//# sourceMappingURL=generate.cli-command.impl.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generate.cli-command.impl.d.ts","sourceRoot":"","sources":["../../../../src/cli/generate/generate/generate.cli-command.impl.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,CAAC,MAAM,QAAQ,CAAC;AAG5B,OAAO,EAA+B,KAAK,cAAc,EAAE,MAAM,eAAe,CAAC;AAKjF,QAAA,MAAM,qBAAqB;;;;;;;iBAOzB,CAAC;AACH,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAE3E,QAAA,MAAM,kBAAkB,gCAAoB,CAAC;AAC7C,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;;qBAO7C,mBAAmB,cAAc,sBAAsB,WAAW,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;;AADxH,wBAyCE"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Implementation: vibes infra generate
|
|
3
|
+
*
|
|
4
|
+
* Every `--resource` and the `--format` filter reach the generation core.
|
|
5
|
+
* A generator failure is printed value-free and the run refuses
|
|
6
|
+
* `INTERNAL infra-generate-failed`, which the CLI host maps to the exit code.
|
|
7
|
+
*/
|
|
8
|
+
import * as z from 'zod/v4';
|
|
9
|
+
import { CapabilityError } from '@vibesdotdev/kernel';
|
|
10
|
+
import { generateArtifacts } from "../generate-core.js";
|
|
11
|
+
import { commandUi, readCommandInput } from "../context.js";
|
|
12
|
+
const Flag = z.union([z.boolean(), z.literal('true'), z.literal('false')]).optional();
|
|
13
|
+
const OneOrMany = z.union([z.string(), z.array(z.string())]).optional();
|
|
14
|
+
const GenerateOptionsSchema = z.looseObject({
|
|
15
|
+
output: z.string().min(1).optional(),
|
|
16
|
+
dryRun: Flag,
|
|
17
|
+
target: OneOrMany,
|
|
18
|
+
resource: OneOrMany,
|
|
19
|
+
format: z.string().min(1).optional(),
|
|
20
|
+
verbose: Flag
|
|
21
|
+
});
|
|
22
|
+
const GenerateArgsSchema = z.looseObject({});
|
|
23
|
+
function isOn(flag) {
|
|
24
|
+
return flag === true || flag === 'true';
|
|
25
|
+
}
|
|
26
|
+
export default {
|
|
27
|
+
async execute(rawArgs, rawOptions, context) {
|
|
28
|
+
const runtime = context.runtime;
|
|
29
|
+
readCommandInput(GenerateArgsSchema, rawArgs, 'infra-generate-input-invalid');
|
|
30
|
+
const opts = readCommandInput(GenerateOptionsSchema, rawOptions, 'infra-generate-input-invalid');
|
|
31
|
+
const ui = await commandUi(runtime);
|
|
32
|
+
const verbose = isOn(opts.verbose);
|
|
33
|
+
const result = await generateArtifacts(runtime, {
|
|
34
|
+
outputDir: opts.output ?? './infra/generated',
|
|
35
|
+
dryRun: isOn(opts.dryRun),
|
|
36
|
+
target: opts.target,
|
|
37
|
+
sourceId: opts.resource,
|
|
38
|
+
format: opts.format,
|
|
39
|
+
verbose,
|
|
40
|
+
report: (line) => ui.log(line)
|
|
41
|
+
});
|
|
42
|
+
// Print summary
|
|
43
|
+
ui.info(`\n=== Generation Summary ===`);
|
|
44
|
+
ui.info(` Artifacts generated: ${result.count}`);
|
|
45
|
+
ui.info(` Errors: ${result.errors.length}`);
|
|
46
|
+
if (verbose && result.artifacts.length > 0) {
|
|
47
|
+
ui.log('\n Generated files:');
|
|
48
|
+
for (const artifact of result.artifacts) {
|
|
49
|
+
ui.log(` - ${artifact.path} (${artifact.sourceKind ?? 'N/A'}/${artifact.sourceId ?? 'N/A'})`);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
if (result.errors.length > 0) {
|
|
53
|
+
ui.log('\n Errors:');
|
|
54
|
+
for (const error of result.errors) {
|
|
55
|
+
ui.error(` - ${error.generatorId}: ${error.error}`);
|
|
56
|
+
}
|
|
57
|
+
throw new CapabilityError('Artifact generation failed for one or more generators.', 'INTERNAL', {
|
|
58
|
+
reason: 'infra-generate-failed',
|
|
59
|
+
details: { generators: result.errors.map((error) => error.generatorId) }
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
};
|
|
64
|
+
//# sourceMappingURL=generate.cli-command.impl.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generate.cli-command.impl.js","sourceRoot":"","sources":["../../../../src/cli/generate/generate/generate.cli-command.impl.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { type VibesRuntime } from '@vibesdotdev/kernel';
|
|
2
|
+
import { type ArtifactGenerationContext } from '../../kinds/artifact.kind.ts';
|
|
3
|
+
export interface GenerateOptions {
|
|
4
|
+
/** Output directory (default: ./infra/generated), resolved against the host's working directory */
|
|
5
|
+
outputDir?: string;
|
|
6
|
+
/** Dry-run mode (report what would be written, write nothing) */
|
|
7
|
+
dryRun?: boolean;
|
|
8
|
+
/** Filter by artifact generator ID */
|
|
9
|
+
target?: string | string[];
|
|
10
|
+
/** Filter by output format (the generator's declared `format`, else its output's `metadata.format`) */
|
|
11
|
+
format?: string;
|
|
12
|
+
/** Filter by source resource kind */
|
|
13
|
+
sourceKind?: string;
|
|
14
|
+
/** Filter by source resource ID (every listed ID is kept) */
|
|
15
|
+
sourceId?: string | string[];
|
|
16
|
+
/** Verbose output */
|
|
17
|
+
verbose?: boolean;
|
|
18
|
+
/** Where progress lines go (the CLI passes its UI). Without it nothing is printed; the result carries everything. */
|
|
19
|
+
report?: (line: string) => void;
|
|
20
|
+
}
|
|
21
|
+
export interface GenerateResult {
|
|
22
|
+
/** Number of artifacts generated */
|
|
23
|
+
count: number;
|
|
24
|
+
/** Generated artifacts */
|
|
25
|
+
artifacts: Array<{
|
|
26
|
+
generatorId: string;
|
|
27
|
+
sourceKind?: string;
|
|
28
|
+
sourceId?: string;
|
|
29
|
+
path: string;
|
|
30
|
+
}>;
|
|
31
|
+
/**
|
|
32
|
+
* Generators that failed. `error` is value-free (the failure's class name,
|
|
33
|
+
* and its code and reason when typed): what a generator threw is never
|
|
34
|
+
* repeated, since it may echo a credential.
|
|
35
|
+
*/
|
|
36
|
+
errors: Array<{
|
|
37
|
+
generatorId: string;
|
|
38
|
+
sourceKind?: string;
|
|
39
|
+
sourceId?: string;
|
|
40
|
+
error: string;
|
|
41
|
+
code?: string;
|
|
42
|
+
reason?: string;
|
|
43
|
+
}>;
|
|
44
|
+
}
|
|
45
|
+
/** Generation context passed to artifact generators. */
|
|
46
|
+
export type GenerationContext = ArtifactGenerationContext;
|
|
47
|
+
/**
|
|
48
|
+
* Generate artifacts from resource descriptors
|
|
49
|
+
*/
|
|
50
|
+
export declare function generateArtifacts(runtime: VibesRuntime, options?: GenerateOptions): Promise<GenerateResult>;
|
|
51
|
+
//# sourceMappingURL=generate-core.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generate-core.d.ts","sourceRoot":"","sources":["../../../src/cli/generate/generate-core.ts"],"names":[],"mappings":"AAmBA,OAAO,EAAqB,KAAK,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAG3E,OAAO,EAGN,KAAK,yBAAyB,EAE9B,MAAM,8BAA8B,CAAC;AAGtC,MAAM,WAAW,eAAe;IAC/B,mGAAmG;IACnG,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iEAAiE;IACjE,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,sCAAsC;IACtC,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC3B,uGAAuG;IACvG,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,qCAAqC;IACrC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,6DAA6D;IAC7D,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC7B,qBAAqB;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,qHAAqH;IACrH,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CAChC;AAED,MAAM,WAAW,cAAc;IAC9B,oCAAoC;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,0BAA0B;IAC1B,SAAS,EAAE,KAAK,CAAC;QAChB,WAAW,EAAE,MAAM,CAAC;QACpB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,IAAI,EAAE,MAAM,CAAC;KACb,CAAC,CAAC;IACH;;;;OAIG;IACH,MAAM,EAAE,KAAK,CAAC;QACb,WAAW,EAAE,MAAM,CAAC;QACpB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,MAAM,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC,CAAC;CACH;AAED,wDAAwD;AACxD,MAAM,MAAM,iBAAiB,GAAG,yBAAyB,CAAC;AA6C1D;;GAEG;AACH,wBAAsB,iBAAiB,CACtC,OAAO,EAAE,YAAY,EACrB,OAAO,GAAE,eAAoB,GAC3B,OAAO,CAAC,cAAc,CAAC,CA0GzB"}
|
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Core artifact generation logic.
|
|
3
|
+
*
|
|
4
|
+
* Orchestrates artifact generation by:
|
|
5
|
+
* 1. Querying runtime for artifact generators
|
|
6
|
+
* 2. Loading resource descriptors from runtime discovery
|
|
7
|
+
* 3. Calling generator.generate() for each resource
|
|
8
|
+
* 4. Writing output through the runtime's filesystem adapter, or reporting
|
|
9
|
+
* it for a dry run
|
|
10
|
+
*
|
|
11
|
+
* This module is implementation-agnostic — it doesn't know what
|
|
12
|
+
* artifacts are being generated, only how to orchestrate generation. It
|
|
13
|
+
* prints nothing itself: progress goes to the caller's `report`, and the
|
|
14
|
+
* result carries every artifact and every failure (value-free).
|
|
15
|
+
*/
|
|
16
|
+
import * as z from 'zod/v4';
|
|
17
|
+
import { readUntrusted } from '@vibesdotdev/config/manifest/read-untrusted';
|
|
18
|
+
import { resolveFileSystemAdapter } from '@vibesdotdev/filesystem/client/resolve-adapter';
|
|
19
|
+
import { requireRuntimeCwd } from '@vibesdotdev/kernel';
|
|
20
|
+
import { redactedExcerpt } from '@vibesdotdev/shared/utils';
|
|
21
|
+
import { ArtifactDescriptorSchema, ArtifactOutputSchema } from "../../kinds/artifact.kind.js";
|
|
22
|
+
import { failureText, settleWork } from "../../settle-work.js";
|
|
23
|
+
/** A resolved generator offers `generate`; kept as the original object (its method may use `this`). */
|
|
24
|
+
const GeneratorOperationsSchema = z.object({ generate: z.function() });
|
|
25
|
+
const ArtifactGeneratorSchema = z.custom((value) => GeneratorOperationsSchema.safeParse(value).success);
|
|
26
|
+
const GENERATOR_INVALID = {
|
|
27
|
+
code: 'INVALID_INPUT',
|
|
28
|
+
reason: 'artifact-generator-invalid',
|
|
29
|
+
message: () => 'The registered infra/artifact implementation offers no generate().'
|
|
30
|
+
};
|
|
31
|
+
const OUTPUT_INVALID = {
|
|
32
|
+
code: 'INTERNAL',
|
|
33
|
+
reason: 'artifact-output-invalid',
|
|
34
|
+
message: () => 'An artifact generator returned an output that does not read.'
|
|
35
|
+
};
|
|
36
|
+
/** The output metadata fields the result reports. */
|
|
37
|
+
const OutputFactsSchema = z.looseObject({
|
|
38
|
+
sourceKind: z.string().optional().catch(undefined),
|
|
39
|
+
sourceId: z.string().optional().catch(undefined),
|
|
40
|
+
format: z.string().optional().catch(undefined)
|
|
41
|
+
});
|
|
42
|
+
/** The infra resource kinds a generator may read. */
|
|
43
|
+
const RESOURCE_KINDS = [
|
|
44
|
+
'infra/worker',
|
|
45
|
+
'infra/web-app',
|
|
46
|
+
'infra/queue',
|
|
47
|
+
'infra/cache',
|
|
48
|
+
'infra/object-storage',
|
|
49
|
+
'infra/database',
|
|
50
|
+
'infra/git-hosting',
|
|
51
|
+
'infra/package-registry'
|
|
52
|
+
];
|
|
53
|
+
/** The longest content preview a verbose dry run reports, credential-redacted. */
|
|
54
|
+
const PREVIEW_CHARS = 200;
|
|
55
|
+
function listOf(value) {
|
|
56
|
+
if (value === undefined)
|
|
57
|
+
return undefined;
|
|
58
|
+
return Array.isArray(value) ? value : [value];
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Generate artifacts from resource descriptors
|
|
62
|
+
*/
|
|
63
|
+
export async function generateArtifacts(runtime, options = {}) {
|
|
64
|
+
const { outputDir = './infra/generated', dryRun = false, format, sourceKind, verbose = false } = options;
|
|
65
|
+
const report = options.report ?? (() => undefined);
|
|
66
|
+
const targets = listOf(options.target);
|
|
67
|
+
const sourceIds = listOf(options.sourceId);
|
|
68
|
+
const result = {
|
|
69
|
+
count: 0,
|
|
70
|
+
artifacts: [],
|
|
71
|
+
errors: []
|
|
72
|
+
};
|
|
73
|
+
// Listed by descriptor; each implementation loads inside its own settled work, so one failing loader is one failure entry.
|
|
74
|
+
const generators = runtime.hasKind('infra/artifact') ? runtime.query('infra/artifact').descriptors() : [];
|
|
75
|
+
if (verbose) {
|
|
76
|
+
report(`Found ${generators.length} artifact generators`);
|
|
77
|
+
}
|
|
78
|
+
// Filter by target if specified
|
|
79
|
+
let filteredGenerators = generators;
|
|
80
|
+
if (targets) {
|
|
81
|
+
filteredGenerators = generators.filter((descriptor) => targets.includes(descriptor.id));
|
|
82
|
+
if (verbose) {
|
|
83
|
+
report(`Filtered to ${filteredGenerators.length} generators (targets: ${targets.join(', ')})`);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
// Load resource descriptors from runtime discovery
|
|
87
|
+
const resources = loadResourceDescriptors(runtime);
|
|
88
|
+
if (verbose) {
|
|
89
|
+
report(`Loaded ${resources.length} resource descriptors`);
|
|
90
|
+
}
|
|
91
|
+
let filesystem;
|
|
92
|
+
// For each generator, resolve and call it
|
|
93
|
+
for (const descriptor of filteredGenerators) {
|
|
94
|
+
const generatorId = descriptor.id;
|
|
95
|
+
const declared = ArtifactDescriptorSchema.safeParse(descriptor);
|
|
96
|
+
const declaredFormat = declared.success ? declared.data.format : undefined;
|
|
97
|
+
// A generator that declares a different format is skipped before any work.
|
|
98
|
+
if (format !== undefined && declaredFormat !== undefined && declaredFormat !== format)
|
|
99
|
+
continue;
|
|
100
|
+
const outcome = await settleWork(async () => {
|
|
101
|
+
const impl = await runtime.query('infra/artifact').withId(generatorId).resolve();
|
|
102
|
+
const generator = readUntrusted(ArtifactGeneratorSchema, () => impl, GENERATOR_INVALID);
|
|
103
|
+
// Build generation context (implementation-specific)
|
|
104
|
+
const context = {
|
|
105
|
+
outputDir,
|
|
106
|
+
resources: resources.filter((r) => {
|
|
107
|
+
// Apply source filters if specified
|
|
108
|
+
if (sourceKind && r.kind !== sourceKind)
|
|
109
|
+
return false;
|
|
110
|
+
if (sourceIds && !sourceIds.includes(r.id))
|
|
111
|
+
return false;
|
|
112
|
+
return true;
|
|
113
|
+
}),
|
|
114
|
+
descriptor
|
|
115
|
+
};
|
|
116
|
+
const generated = await generator.generate(context);
|
|
117
|
+
const output = readUntrusted(ArtifactOutputSchema, () => generated, OUTPUT_INVALID);
|
|
118
|
+
const facts = OutputFactsSchema.parse(output.metadata ?? {});
|
|
119
|
+
// An undeclared generator is filtered by what its output says it is.
|
|
120
|
+
if (format !== undefined && declaredFormat === undefined && facts.format !== format)
|
|
121
|
+
return undefined;
|
|
122
|
+
if (dryRun) {
|
|
123
|
+
// Dry-run: report what would be generated
|
|
124
|
+
report(`[DRY-RUN] Would generate ${output.path}`);
|
|
125
|
+
const text = z.string().safeParse(output.content);
|
|
126
|
+
if (verbose && text.success) {
|
|
127
|
+
report(` Content preview: ${redactedExcerpt(text.data, { maxChars: PREVIEW_CHARS })}...`);
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
else {
|
|
131
|
+
// Write through the runtime's filesystem adapter, relative to the host's working directory
|
|
132
|
+
filesystem ??= await resolveFileSystemAdapter(runtime);
|
|
133
|
+
const target = filesystem.resolve(requireRuntimeCwd(runtime), output.path);
|
|
134
|
+
await filesystem.mkdir(filesystem.dirname(target), { recursive: true });
|
|
135
|
+
await filesystem.writeFile(target, output.content);
|
|
136
|
+
if (verbose) {
|
|
137
|
+
report(` wrote ${output.path}`);
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
return { generatorId, sourceKind: facts.sourceKind, sourceId: facts.sourceId, path: output.path };
|
|
141
|
+
});
|
|
142
|
+
if (!outcome.ok) {
|
|
143
|
+
const entry = { generatorId, error: failureText(outcome.failure) };
|
|
144
|
+
if (outcome.failure.code !== undefined)
|
|
145
|
+
entry.code = outcome.failure.code;
|
|
146
|
+
if (outcome.failure.reason !== undefined)
|
|
147
|
+
entry.reason = outcome.failure.reason;
|
|
148
|
+
result.errors.push(entry);
|
|
149
|
+
report(`Error generating artifact from ${generatorId}: ${entry.error}`);
|
|
150
|
+
continue;
|
|
151
|
+
}
|
|
152
|
+
if (outcome.value === undefined)
|
|
153
|
+
continue;
|
|
154
|
+
result.artifacts.push(outcome.value);
|
|
155
|
+
result.count++;
|
|
156
|
+
}
|
|
157
|
+
return result;
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Load resource descriptors from runtime discovery; a kind this runtime does
|
|
161
|
+
* not register contributes none (declared absence, asked, never caught).
|
|
162
|
+
*/
|
|
163
|
+
function loadResourceDescriptors(runtime) {
|
|
164
|
+
const allDescriptors = [];
|
|
165
|
+
for (const kind of RESOURCE_KINDS) {
|
|
166
|
+
if (!runtime.hasKind(kind))
|
|
167
|
+
continue;
|
|
168
|
+
allDescriptors.push(...runtime.query(kind).descriptors());
|
|
169
|
+
}
|
|
170
|
+
return allDescriptors;
|
|
171
|
+
}
|
|
172
|
+
//# sourceMappingURL=generate-core.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generate-core.js","sourceRoot":"","sources":["../../../src/cli/generate/generate-core.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/cli/generate/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,iBAAiB,EAAE,KAAK,eAAe,EAAE,KAAK,cAAc,EAAE,KAAK,iBAAiB,EAAE,MAAM,oBAAoB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cli/generate/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,iBAAiB,EAAqE,MAAM,oBAAoB,CAAC"}
|
|
@@ -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,15 +17,28 @@
|
|
|
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
|
-
|
|
30
|
+
import * as z from 'zod/v4';
|
|
31
|
+
import { type VibesRuntime } from '@vibesdotdev/kernel';
|
|
32
|
+
declare const EnvironmentTierSchema: z.ZodEnum<{
|
|
33
|
+
local: "local";
|
|
34
|
+
dev: "dev";
|
|
35
|
+
staging: "staging";
|
|
36
|
+
production: "production";
|
|
37
|
+
}>;
|
|
38
|
+
export type EnvironmentTier = z.infer<typeof EnvironmentTierSchema>;
|
|
27
39
|
export interface ResolveAdapterCredentialOptions {
|
|
40
|
+
/** Opaque Secrets-owned context; forward unchanged across backend bootstrap. */
|
|
41
|
+
operationContext?: unknown;
|
|
28
42
|
/**
|
|
29
43
|
* Ordered list of candidate keys. First one that resolves to a
|
|
30
44
|
* non-empty value wins. Useful for scoped → fallback patterns:
|
|
@@ -43,38 +57,84 @@ export interface ResolveAdapterCredentialOptions {
|
|
|
43
57
|
*/
|
|
44
58
|
tier?: EnvironmentTier;
|
|
45
59
|
/**
|
|
46
|
-
*
|
|
47
|
-
*
|
|
48
|
-
*
|
|
60
|
+
* When true, search every registered secrets/store backend by priority
|
|
61
|
+
* instead of only the backend matching the target tier. This is useful for
|
|
62
|
+
* operator control-plane credentials, which may be stored in an encrypted
|
|
63
|
+
* local backend even when the target environment is production.
|
|
64
|
+
*/
|
|
65
|
+
includeAllStoreBackends?: boolean;
|
|
66
|
+
/**
|
|
67
|
+
* Additional environment names to check after `environment`. Values are
|
|
68
|
+
* tried against each candidate backend in order.
|
|
49
69
|
*/
|
|
50
|
-
|
|
70
|
+
fallbackEnvironments?: readonly string[];
|
|
51
71
|
/**
|
|
52
|
-
* Optional human-readable name for the credential
|
|
53
|
-
*
|
|
72
|
+
* Optional human-readable name for the credential. Refusals are fixed
|
|
73
|
+
* text, so it is carried in their details, never in a message.
|
|
54
74
|
*/
|
|
55
75
|
humanName?: string;
|
|
76
|
+
/** Maximum time allowed for each backend resolve/get attempt. Defaults to 15s. */
|
|
77
|
+
backendTimeoutMs?: number;
|
|
78
|
+
/** Total deadline for the complete backend walk. Defaults to 90s. */
|
|
79
|
+
resolutionTimeoutMs?: number;
|
|
56
80
|
}
|
|
57
81
|
export interface ResolvedAdapterCredential {
|
|
58
82
|
/** The KEY that resolved (one of keyCandidates). Useful for audit. */
|
|
59
83
|
key: string;
|
|
60
84
|
/** The resolved secret value. Never logged. */
|
|
61
85
|
value: string;
|
|
62
|
-
/** Where the value came from:
|
|
86
|
+
/** Where the value came from: the store backend id. */
|
|
87
|
+
source: string;
|
|
88
|
+
/** Environment requested by the operator-facing command. */
|
|
89
|
+
requestedEnvironment: string;
|
|
90
|
+
/** Actual environment containing the value. */
|
|
91
|
+
resolvedEnvironment: string;
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Operator control-plane credentials are resolved on the consumer machine even
|
|
95
|
+
* when they target staging or production. Every infra inventory/audit adapter
|
|
96
|
+
* must use this narrower contract so one surface cannot silently select a
|
|
97
|
+
* different secrets backend than another.
|
|
98
|
+
*
|
|
99
|
+
* The policy is fixed: every registered store backend is eligible by
|
|
100
|
+
* priority, and non-local targets may fall back to the operator's local
|
|
101
|
+
* secrets environment. Callers still own key candidates, human-readable
|
|
102
|
+
* labels, and bounded resolution deadlines.
|
|
103
|
+
*/
|
|
104
|
+
export interface ResolveOperatorCredentialOptions extends Omit<ResolveAdapterCredentialOptions, 'tier' | 'includeAllStoreBackends' | 'fallbackEnvironments'> {
|
|
105
|
+
environment: string;
|
|
106
|
+
}
|
|
107
|
+
export type OperatorCredentialResolutionPolicy = Pick<ResolveAdapterCredentialOptions, 'environment' | 'includeAllStoreBackends' | 'fallbackEnvironments'>;
|
|
108
|
+
/** Safe-to-log selection metadata. Deliberately excludes the credential value. */
|
|
109
|
+
export interface AdapterCredentialSelection {
|
|
110
|
+
requestedEnvironment: string;
|
|
111
|
+
resolvedEnvironment: string;
|
|
112
|
+
key: string;
|
|
63
113
|
source: string;
|
|
64
114
|
}
|
|
115
|
+
export declare function operatorCredentialResolutionPolicy(environment: string): OperatorCredentialResolutionPolicy;
|
|
116
|
+
export declare function adapterCredentialSelection(credential: ResolvedAdapterCredential): AdapterCredentialSelection;
|
|
65
117
|
/**
|
|
66
118
|
* Resolve a single credential by walking the candidate keys against
|
|
67
|
-
*
|
|
119
|
+
* the active secrets store. Returns the first match.
|
|
68
120
|
*
|
|
69
|
-
*
|
|
70
|
-
* up so the CLI surfaces a clean "missing credentials" message
|
|
71
|
-
* than a vague "401 Unauthorized" downstream.
|
|
121
|
+
* Refuses typed when no candidate resolves — adapters should let this
|
|
122
|
+
* bubble up so the CLI surfaces a clean "missing credentials" message
|
|
123
|
+
* rather than a vague "401 Unauthorized" downstream.
|
|
72
124
|
*/
|
|
73
|
-
export declare function resolveAdapterCredential(options: ResolveAdapterCredentialOptions): Promise<ResolvedAdapterCredential>;
|
|
125
|
+
export declare function resolveAdapterCredential(runtime: VibesRuntime, options: ResolveAdapterCredentialOptions): Promise<ResolvedAdapterCredential>;
|
|
74
126
|
/**
|
|
75
127
|
* Convenience wrapper for resolving multiple credentials at once.
|
|
76
128
|
* Each key gets a candidate list of one (the key itself). Use the
|
|
77
129
|
* single-credential form when you need fallback chains.
|
|
78
130
|
*/
|
|
79
|
-
export declare function resolveAdapterCredentials(keys: readonly string[], options?: Omit<ResolveAdapterCredentialOptions, 'keyCandidates' | 'humanName'>): Promise<Record<string, ResolvedAdapterCredential>>;
|
|
131
|
+
export declare function resolveAdapterCredentials(runtime: VibesRuntime, keys: readonly string[], options?: Omit<ResolveAdapterCredentialOptions, 'keyCandidates' | 'humanName'>): Promise<Record<string, ResolvedAdapterCredential>>;
|
|
132
|
+
/**
|
|
133
|
+
* Resolve an operator credential with the shared inventory/audit policy.
|
|
134
|
+
* Use `resolveAdapterCredential` directly only when a non-operator workflow
|
|
135
|
+
* intentionally needs a different selection policy (for example, store-only
|
|
136
|
+
* recovery validation).
|
|
137
|
+
*/
|
|
138
|
+
export declare function resolveOperatorCredential(runtime: VibesRuntime, options: ResolveOperatorCredentialOptions): Promise<ResolvedAdapterCredential>;
|
|
139
|
+
export {};
|
|
80
140
|
//# sourceMappingURL=resolve.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolve.d.ts","sourceRoot":"","sources":["../../src/credentials/resolve.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"resolve.d.ts","sourceRoot":"","sources":["../../src/credentials/resolve.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,OAAO,KAAK,CAAC,MAAM,QAAQ,CAAC;AAG5B,OAAO,EAKN,KAAK,YAAY,EACjB,MAAM,qBAAqB,CAAC;AAS7B,QAAA,MAAM,qBAAqB;;;;;EAAoD,CAAC;AAChF,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAEpE,MAAM,WAAW,+BAA+B;IAC/C,gFAAgF;IAChF,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B;;;;OAIG;IACH,aAAa,EAAE,SAAS,MAAM,EAAE,CAAC;IACjC;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;OAIG;IACH,IAAI,CAAC,EAAE,eAAe,CAAC;IACvB;;;;;OAKG;IACH,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC;;;OAGG;IACH,oBAAoB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACzC;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kFAAkF;IAClF,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,qEAAqE;IACrE,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAqBD,MAAM,WAAW,yBAAyB;IACzC,sEAAsE;IACtE,GAAG,EAAE,MAAM,CAAC;IACZ,+CAA+C;IAC/C,KAAK,EAAE,MAAM,CAAC;IACd,uDAAuD;IACvD,MAAM,EAAE,MAAM,CAAC;IACf,4DAA4D;IAC5D,oBAAoB,EAAE,MAAM,CAAC;IAC7B,+CAA+C;IAC/C,mBAAmB,EAAE,MAAM,CAAC;CAC5B;AAED;;;;;;;;;;GAUG;AACH,MAAM,WAAW,gCAAiC,SAAQ,IAAI,CAC7D,+BAA+B,EAC/B,MAAM,GAAG,yBAAyB,GAAG,sBAAsB,CAC3D;IACA,WAAW,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,MAAM,kCAAkC,GAAG,IAAI,CACpD,+BAA+B,EAC/B,aAAa,GAAG,yBAAyB,GAAG,sBAAsB,CAClE,CAAC;AAEF,kFAAkF;AAClF,MAAM,WAAW,0BAA0B;IAC1C,oBAAoB,EAAE,MAAM,CAAC;IAC7B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;CACf;AAED,wBAAgB,kCAAkC,CACjD,WAAW,EAAE,MAAM,GACjB,kCAAkC,CAMpC;AAED,wBAAgB,0BAA0B,CACzC,UAAU,EAAE,yBAAyB,GACnC,0BAA0B,CAO5B;AA0JD;;;;;;;GAOG;AACH,wBAAsB,wBAAwB,CAC7C,OAAO,EAAE,YAAY,EACrB,OAAO,EAAE,+BAA+B,GACtC,OAAO,CAAC,yBAAyB,CAAC,CA+EpC;AAED;;;;GAIG;AACH,wBAAsB,yBAAyB,CAC9C,OAAO,EAAE,YAAY,EACrB,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,OAAO,CAAC,EAAE,IAAI,CAAC,+BAA+B,EAAE,eAAe,GAAG,WAAW,CAAC,GAC5E,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,yBAAyB,CAAC,CAAC,CAUpD;AAaD;;;;;GAKG;AACH,wBAAsB,yBAAyB,CAC9C,OAAO,EAAE,YAAY,EACrB,OAAO,EAAE,gCAAgC,GACvC,OAAO,CAAC,yBAAyB,CAAC,CAMpC"}
|