@cat-factory/contracts 0.97.0 → 0.99.0
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/dist/accounts.js +1 -1
- package/dist/accounts.js.map +1 -1
- package/dist/{provisioning.d.ts → compute-provisioning.d.ts} +1 -1
- package/dist/compute-provisioning.d.ts.map +1 -0
- package/dist/{provisioning.js → compute-provisioning.js} +5 -2
- package/dist/compute-provisioning.js.map +1 -0
- package/dist/entities.d.ts +300 -0
- package/dist/entities.d.ts.map +1 -1
- package/dist/entities.js +1 -1
- package/dist/entities.js.map +1 -1
- package/dist/environments.d.ts +1313 -79
- package/dist/environments.d.ts.map +1 -1
- package/dist/environments.js +105 -13
- package/dist/environments.js.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/primitives.d.ts +27 -0
- package/dist/primitives.d.ts.map +1 -1
- package/dist/primitives.js +34 -0
- package/dist/primitives.js.map +1 -1
- package/dist/provider-config.d.ts +29 -5
- package/dist/provider-config.d.ts.map +1 -1
- package/dist/provider-config.js +33 -2
- package/dist/provider-config.js.map +1 -1
- package/dist/recurring.d.ts +3 -3
- package/dist/recurring.d.ts.map +1 -1
- package/dist/recurring.js +6 -1
- package/dist/recurring.js.map +1 -1
- package/dist/requests.d.ts +702 -2
- package/dist/requests.d.ts.map +1 -1
- package/dist/requests.js +1 -1
- package/dist/requests.js.map +1 -1
- package/dist/routes/agent-runs.d.ts +200 -0
- package/dist/routes/agent-runs.d.ts.map +1 -1
- package/dist/routes/board.d.ts +1702 -2
- package/dist/routes/board.d.ts.map +1 -1
- package/dist/routes/environments.d.ts +718 -2
- package/dist/routes/environments.d.ts.map +1 -1
- package/dist/routes/execution.d.ts +1000 -0
- package/dist/routes/execution.d.ts.map +1 -1
- package/dist/routes/human-review.d.ts +100 -0
- package/dist/routes/human-review.d.ts.map +1 -1
- package/dist/routes/human-test.d.ts +500 -0
- package/dist/routes/human-test.d.ts.map +1 -1
- package/dist/routes/initiative.d.ts +100 -0
- package/dist/routes/initiative.d.ts.map +1 -1
- package/dist/routes/recurring.d.ts +5 -5
- package/dist/routes/runners.d.ts +184 -2
- package/dist/routes/runners.d.ts.map +1 -1
- package/dist/routes/tasks.d.ts +300 -0
- package/dist/routes/tasks.d.ts.map +1 -1
- package/dist/routes/user-secret.d.ts +2 -2
- package/dist/routes/visual-confirm.d.ts +300 -0
- package/dist/routes/visual-confirm.d.ts.map +1 -1
- package/dist/routes/workspaces.d.ts +402 -2
- package/dist/routes/workspaces.d.ts.map +1 -1
- package/dist/runners.d.ts +292 -2
- package/dist/runners.d.ts.map +1 -1
- package/dist/runners.js +21 -3
- package/dist/runners.js.map +1 -1
- package/dist/snapshot.d.ts +201 -1
- package/dist/snapshot.d.ts.map +1 -1
- package/dist/stack-recipes.d.ts +245 -0
- package/dist/stack-recipes.d.ts.map +1 -0
- package/dist/stack-recipes.js +175 -0
- package/dist/stack-recipes.js.map +1 -0
- package/dist/user-secret.d.ts +1 -1
- package/package.json +1 -1
- package/dist/provisioning.d.ts.map +0 -1
- package/dist/provisioning.js.map +0 -1
package/dist/environments.d.ts
CHANGED
|
@@ -753,8 +753,194 @@ export declare const kubernetesProvisionConfigSchema: v.ObjectSchema<{
|
|
|
753
753
|
}, undefined>], undefined>, undefined>, undefined>;
|
|
754
754
|
}, undefined>;
|
|
755
755
|
export type KubernetesProvisionConfig = v.InferOutput<typeof kubernetesProvisionConfigSchema>;
|
|
756
|
+
/**
|
|
757
|
+
* The AWS EKS provision config: the full Kubernetes provision config (an EKS apiserver is a
|
|
758
|
+
* standard apiserver, so per-PR namespaces + manifest apply are identical) PLUS the AWS
|
|
759
|
+
* `region` + `clusterName` needed to mint the IAM apiserver token. The AWS credentials ride
|
|
760
|
+
* the secret bundle; the SigV4/STS minting lives in `@cat-factory/eks`.
|
|
761
|
+
*/
|
|
762
|
+
export declare const eksProvisionConfigSchema: v.ObjectSchema<{
|
|
763
|
+
readonly region: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.RegexAction<string, "must be an AWS region slug">, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 64, undefined>]>;
|
|
764
|
+
readonly clusterName: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 120, undefined>]>;
|
|
765
|
+
readonly stsHost: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.RegexAction<string, "must be a bare host or host:port">, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 255, undefined>]>, undefined>;
|
|
766
|
+
/** Human label for the connection (shown in the UI). */
|
|
767
|
+
readonly label: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 120, undefined>]>;
|
|
768
|
+
/** kube-apiserver root URL, e.g. `https://my-cluster.example:6443`. */
|
|
769
|
+
readonly apiServerUrl: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 2000, undefined>]>;
|
|
770
|
+
/** PEM CA bundle to verify the apiserver TLS cert (omit only for a publicly-trusted CA). */
|
|
771
|
+
readonly caCertPem: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
|
|
772
|
+
/** Skip apiserver TLS verification — strongly discouraged; kind/dev clusters only. */
|
|
773
|
+
readonly insecureSkipTlsVerify: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
|
|
774
|
+
/**
|
|
775
|
+
* Namespace name template for the per-PR environment, e.g. `cf-env-{{pullNumber}}`.
|
|
776
|
+
* Rendered with the provision vars then sanitized to an RFC1123 label; absent ⇒ a
|
|
777
|
+
* default derived from the PR number / block id.
|
|
778
|
+
*/
|
|
779
|
+
readonly namespaceTemplate: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 200, undefined>]>, undefined>;
|
|
780
|
+
/** Where the manifests are read from (co-located in the PR repo, or a separate repo). */
|
|
781
|
+
readonly manifestSource: v.VariantSchema<"type", [v.ObjectSchema<{
|
|
782
|
+
readonly type: v.LiteralSchema<"colocated", undefined>;
|
|
783
|
+
/** File or directory path within the PR repo (read at the PR head branch). */
|
|
784
|
+
readonly path: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 500, undefined>]>;
|
|
785
|
+
readonly renderer: v.OptionalSchema<v.PicklistSchema<["raw", "kustomize"], undefined>, undefined>;
|
|
786
|
+
}, undefined>, v.ObjectSchema<{
|
|
787
|
+
readonly type: v.LiteralSchema<"separate", undefined>;
|
|
788
|
+
/** `owner/repo` of the manifests repo. */
|
|
789
|
+
readonly repo: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.RegexAction<string, "must be \"owner/repo\"">]>;
|
|
790
|
+
/** Branch/tag/sha to read at; absent ⇒ that repo's default branch. */
|
|
791
|
+
readonly ref: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>]>, undefined>;
|
|
792
|
+
/** File or directory path within the manifests repo. */
|
|
793
|
+
readonly path: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 500, undefined>]>;
|
|
794
|
+
readonly renderer: v.OptionalSchema<v.PicklistSchema<["raw", "kustomize"], undefined>, undefined>;
|
|
795
|
+
}, undefined>], undefined>;
|
|
796
|
+
/** How the environment URL is derived once applied. */
|
|
797
|
+
readonly url: v.VariantSchema<"source", [v.ObjectSchema<{
|
|
798
|
+
readonly source: v.LiteralSchema<"ingressTemplate", undefined>;
|
|
799
|
+
/** Host template, e.g. `{{branch}}.preview.example.com`; rendered with the provision vars. */
|
|
800
|
+
readonly hostTemplate: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 500, undefined>]>;
|
|
801
|
+
readonly scheme: v.OptionalSchema<v.PicklistSchema<["http", "https"], undefined>, undefined>;
|
|
802
|
+
}, undefined>, v.ObjectSchema<{
|
|
803
|
+
readonly source: v.LiteralSchema<"ingressStatus", undefined>;
|
|
804
|
+
/** Ingress object to read `.status.loadBalancer` from; absent ⇒ the only Ingress applied. */
|
|
805
|
+
readonly ingressName: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>]>, undefined>;
|
|
806
|
+
readonly scheme: v.OptionalSchema<v.PicklistSchema<["http", "https"], undefined>, undefined>;
|
|
807
|
+
}, undefined>, v.ObjectSchema<{
|
|
808
|
+
readonly source: v.LiteralSchema<"serviceStatus", undefined>;
|
|
809
|
+
/** Service object to read `.status.loadBalancer` (k3s ServiceLB) from. */
|
|
810
|
+
readonly serviceName: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>]>;
|
|
811
|
+
readonly port: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 1, undefined>, v.MaxValueAction<number, 65535, undefined>]>, undefined>;
|
|
812
|
+
readonly scheme: v.OptionalSchema<v.PicklistSchema<["http", "https"], undefined>, undefined>;
|
|
813
|
+
}, undefined>, v.ObjectSchema<{
|
|
814
|
+
readonly source: v.LiteralSchema<"gatewayStatus", undefined>;
|
|
815
|
+
/** Gateway-API `Gateway` to read `.status.addresses[]` from; absent ⇒ the only one applied. */
|
|
816
|
+
readonly gatewayName: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>]>, undefined>;
|
|
817
|
+
readonly scheme: v.OptionalSchema<v.PicklistSchema<["http", "https"], undefined>, undefined>;
|
|
818
|
+
}, undefined>, v.ObjectSchema<{
|
|
819
|
+
readonly source: v.LiteralSchema<"httpRouteStatus", undefined>;
|
|
820
|
+
/** `HTTPRoute` whose `parentRefs` resolve to the Gateway address; absent ⇒ the only one applied. */
|
|
821
|
+
readonly httpRouteName: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>]>, undefined>;
|
|
822
|
+
readonly scheme: v.OptionalSchema<v.PicklistSchema<["http", "https"], undefined>, undefined>;
|
|
823
|
+
}, undefined>], undefined>;
|
|
824
|
+
/**
|
|
825
|
+
* Optional image reference made available to the manifests as `{{image}}` (e.g. a
|
|
826
|
+
* CI-built image tagged by branch/sha). Itself a template over the provision vars.
|
|
827
|
+
*/
|
|
828
|
+
readonly imageTemplate: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MaxLengthAction<string, 500, undefined>]>, undefined>;
|
|
829
|
+
/** Fallback TTL (ms) after which the env is swept + torn down. */
|
|
830
|
+
readonly defaultTtlMs: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, 60000, undefined>]>, undefined>;
|
|
831
|
+
/**
|
|
832
|
+
* How long (seconds) the container deploy adapter waits for each Deployment to roll out
|
|
833
|
+
* before reporting the env still `provisioning` (the backend keeps polling). Only the
|
|
834
|
+
* container-backed render path honors it; absent ⇒ the harness default (180s).
|
|
835
|
+
*/
|
|
836
|
+
readonly rolloutTimeoutSeconds: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 1, undefined>]>, undefined>;
|
|
837
|
+
/** Extra labels stamped on the namespace + every applied resource. */
|
|
838
|
+
readonly labels: v.OptionalSchema<v.RecordSchema<v.StringSchema<undefined>, v.StringSchema<undefined>, undefined>, undefined>;
|
|
839
|
+
/** Extra annotations stamped on the namespace. */
|
|
840
|
+
readonly annotations: v.OptionalSchema<v.RecordSchema<v.StringSchema<undefined>, v.StringSchema<undefined>, undefined>, undefined>;
|
|
841
|
+
/** Structured image overrides (the kustomize `images:` shape), templated over provision vars. */
|
|
842
|
+
readonly images: v.OptionalSchema<v.ArraySchema<v.SchemaWithPipe<readonly [v.ObjectSchema<{
|
|
843
|
+
/** The image to match (the `name:` in a kustomization `images:` entry), e.g. `registry/app`. */
|
|
844
|
+
readonly name: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>]>;
|
|
845
|
+
/** Optional replacement repo, templated; absent ⇒ keep the original repo. */
|
|
846
|
+
readonly newNameTemplate: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 500, undefined>]>, undefined>;
|
|
847
|
+
/** Replacement tag, templated (e.g. `{{branch}}` / `{{sha}}`); mutually exclusive with digest. */
|
|
848
|
+
readonly newTagTemplate: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 500, undefined>]>, undefined>;
|
|
849
|
+
/** Replacement digest, templated; alternative to a tag. */
|
|
850
|
+
readonly digestTemplate: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 500, undefined>]>, undefined>;
|
|
851
|
+
}, undefined>, v.CheckAction<{
|
|
852
|
+
name: string;
|
|
853
|
+
newNameTemplate?: string | undefined;
|
|
854
|
+
newTagTemplate?: string | undefined;
|
|
855
|
+
digestTemplate?: string | undefined;
|
|
856
|
+
}, "an image override must set at least one of newNameTemplate, newTagTemplate, or digestTemplate.">, v.CheckAction<{
|
|
857
|
+
name: string;
|
|
858
|
+
newNameTemplate?: string | undefined;
|
|
859
|
+
newTagTemplate?: string | undefined;
|
|
860
|
+
digestTemplate?: string | undefined;
|
|
861
|
+
}, "newTagTemplate and digestTemplate are mutually exclusive on an image override.">]>, undefined>, undefined>;
|
|
862
|
+
/** Helm releases to install — workspace-shared singletons merged with the service's per-env ones. */
|
|
863
|
+
readonly helmReleases: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
|
|
864
|
+
/** Release name. */
|
|
865
|
+
readonly name: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>]>;
|
|
866
|
+
/** Chart ref: an OCI ref (`oci://…`) or, with `repo`, a `repo/chart` name. */
|
|
867
|
+
readonly chart: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>]>;
|
|
868
|
+
/** Chart repo URL; absent ⇒ `chart` is an OCI ref. */
|
|
869
|
+
readonly repo: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 2000, undefined>]>, undefined>;
|
|
870
|
+
/** PINNED chart version, e.g. `1.2.3` / `v1.2.3` (floating tags like `latest`/`^1.0` rejected). */
|
|
871
|
+
readonly version: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.RegexAction<string, "version must be a pinned semver (e.g. 1.2.3), not a floating tag like latest or ^1.0.">]>;
|
|
872
|
+
/** Namespace to install into, templated; absent ⇒ the environment namespace. */
|
|
873
|
+
readonly namespaceTemplate: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 500, undefined>]>, undefined>;
|
|
874
|
+
/** Inline `--values` overrides. */
|
|
875
|
+
readonly values: v.OptionalSchema<v.RecordSchema<v.StringSchema<undefined>, v.UnknownSchema, undefined>, undefined>;
|
|
876
|
+
/** Templated `--set` overrides. */
|
|
877
|
+
readonly set: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
|
|
878
|
+
/** Dotted `--set` path, e.g. `config.rateLimit.enabled`. */
|
|
879
|
+
readonly path: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>]>;
|
|
880
|
+
/** The value, templated over the provision vars. */
|
|
881
|
+
readonly valueTemplate: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MaxLengthAction<string, 2000, undefined>]>;
|
|
882
|
+
}, undefined>, undefined>, undefined>;
|
|
883
|
+
/** Secret-bundle-backed values folded in at provision time (`--set <path>=<secret>`). */
|
|
884
|
+
readonly valuesSecretRefs: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
|
|
885
|
+
readonly path: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>]>;
|
|
886
|
+
readonly secretRef: v.ObjectSchema<{
|
|
887
|
+
readonly key: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.RegexAction<string, undefined>, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 64, undefined>]>;
|
|
888
|
+
}, undefined>;
|
|
889
|
+
}, undefined>, undefined>, undefined>;
|
|
890
|
+
readonly scope: v.OptionalSchema<v.PicklistSchema<["per-environment", "shared"], undefined>, undefined>;
|
|
891
|
+
}, undefined>, undefined>, undefined>;
|
|
892
|
+
/** Secrets fed in before apply (a `Secret` resource or a `secretGenerator` `.env`). */
|
|
893
|
+
readonly secretInjections: v.OptionalSchema<v.ArraySchema<v.VariantSchema<"mode", [v.ObjectSchema<{
|
|
894
|
+
readonly mode: v.LiteralSchema<"secret", undefined>;
|
|
895
|
+
/** Target Secret name in the namespace. */
|
|
896
|
+
readonly secretName: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>]>;
|
|
897
|
+
/** Secret `type`; absent ⇒ `Opaque`. */
|
|
898
|
+
readonly secretType: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>]>, undefined>;
|
|
899
|
+
readonly entries: v.ArraySchema<v.SchemaWithPipe<readonly [v.ObjectSchema<{
|
|
900
|
+
/** Key inside the rendered Secret / `.env`. */
|
|
901
|
+
readonly key: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.RegexAction<string, undefined>, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 256, undefined>]>;
|
|
902
|
+
/** Resolve the value from the workspace encrypted bundle by key. */
|
|
903
|
+
readonly secretRef: v.OptionalSchema<v.ObjectSchema<{
|
|
904
|
+
readonly key: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.RegexAction<string, undefined>, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 64, undefined>]>;
|
|
905
|
+
}, undefined>, undefined>;
|
|
906
|
+
/** OR a non-secret value, templated over the provision vars. */
|
|
907
|
+
readonly valueTemplate: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MaxLengthAction<string, 2000, undefined>]>, undefined>;
|
|
908
|
+
}, undefined>, v.CheckAction<{
|
|
909
|
+
key: string;
|
|
910
|
+
secretRef?: {
|
|
911
|
+
key: string;
|
|
912
|
+
} | undefined;
|
|
913
|
+
valueTemplate?: string | undefined;
|
|
914
|
+
}, "a secret entry must set exactly one of secretRef or valueTemplate.">]>, undefined>;
|
|
915
|
+
}, undefined>, v.ObjectSchema<{
|
|
916
|
+
readonly mode: v.LiteralSchema<"generatorEnvFile", undefined>;
|
|
917
|
+
/**
|
|
918
|
+
* Repo-relative path within the overlay tree to write the `KEY=value` env file the
|
|
919
|
+
* overlay's `secretGenerator` reads (e.g. `overlays/<env>/<component>/.env`). The
|
|
920
|
+
* overlay names the Secret.
|
|
921
|
+
*/
|
|
922
|
+
readonly envFilePath: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 500, undefined>]>;
|
|
923
|
+
readonly entries: v.ArraySchema<v.SchemaWithPipe<readonly [v.ObjectSchema<{
|
|
924
|
+
/** Key inside the rendered Secret / `.env`. */
|
|
925
|
+
readonly key: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.RegexAction<string, undefined>, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 256, undefined>]>;
|
|
926
|
+
/** Resolve the value from the workspace encrypted bundle by key. */
|
|
927
|
+
readonly secretRef: v.OptionalSchema<v.ObjectSchema<{
|
|
928
|
+
readonly key: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.RegexAction<string, undefined>, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 64, undefined>]>;
|
|
929
|
+
}, undefined>, undefined>;
|
|
930
|
+
/** OR a non-secret value, templated over the provision vars. */
|
|
931
|
+
readonly valueTemplate: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MaxLengthAction<string, 2000, undefined>]>, undefined>;
|
|
932
|
+
}, undefined>, v.CheckAction<{
|
|
933
|
+
key: string;
|
|
934
|
+
secretRef?: {
|
|
935
|
+
key: string;
|
|
936
|
+
} | undefined;
|
|
937
|
+
valueTemplate?: string | undefined;
|
|
938
|
+
}, "a secret entry must set exactly one of secretRef or valueTemplate.">]>, undefined>;
|
|
939
|
+
}, undefined>], undefined>, undefined>, undefined>;
|
|
940
|
+
}, undefined>;
|
|
941
|
+
export type EksProvisionConfig = v.InferOutput<typeof eksProvisionConfigSchema>;
|
|
756
942
|
/** Built-in environment backend kinds the contract knows by name. */
|
|
757
|
-
export declare const RESERVED_ENVIRONMENT_BACKEND_KINDS: readonly ['manifest', 'kubernetes'];
|
|
943
|
+
export declare const RESERVED_ENVIRONMENT_BACKEND_KINDS: readonly ['manifest', 'kubernetes', 'eks'];
|
|
758
944
|
/**
|
|
759
945
|
* The `kind` slug of a CUSTOM (third-party, programmatically-registered) environment
|
|
760
946
|
* backend: any lower-kebab slug that isn't a reserved built-in. A custom backend stores
|
|
@@ -878,36 +1064,217 @@ export declare const environmentBackendConfigSchema: v.VariantSchema<"kind", [v.
|
|
|
878
1064
|
readonly from: v.StringSchema<undefined>;
|
|
879
1065
|
readonly to: v.PicklistSchema<["provisioning", "ready", "failed", "expired", "tearing_down", "torn_down"], undefined>;
|
|
880
1066
|
}, undefined>, undefined>, undefined>;
|
|
881
|
-
readonly expiresAtPath: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
|
|
882
|
-
readonly externalIdPath: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
|
|
883
|
-
readonly access: v.OptionalSchema<v.ObjectSchema<{
|
|
884
|
-
readonly scheme: v.PicklistSchema<["none", "bearer", "basic", "custom_header"], undefined>;
|
|
885
|
-
readonly tokenPath: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
|
|
886
|
-
readonly usernamePath: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
|
|
887
|
-
readonly passwordPath: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
|
|
888
|
-
readonly headerName: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
|
|
889
|
-
readonly headerValuePath: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
|
|
890
|
-
}, undefined>, undefined>;
|
|
891
|
-
}, undefined>;
|
|
892
|
-
/** Fallback TTL (ms) when the response carries no explicit expiry. */
|
|
893
|
-
readonly defaultTtlMs: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, 60000, undefined>]>, undefined>;
|
|
894
|
-
/**
|
|
895
|
-
* Opaque, provider-specific configuration for a CUSTOM backend (e.g. a Kargo project,
|
|
896
|
-
* link-selection key, status map). The generic HttpEnvironmentProvider ignores it
|
|
897
|
-
* entirely; a custom backend — registered by reference into the app-owned
|
|
898
|
-
* `EnvironmentBackendRegistry` (see `backend/docs/native-environment-adapter.md`) — reads
|
|
899
|
-
* + validates it off the per-call
|
|
900
|
-
* `manifest`. This is the per-WORKSPACE config carrier: a custom backend rides the generic
|
|
901
|
-
* manifest member of `environmentBackendConfigSchema`, so its bespoke settings live here and
|
|
902
|
-
* its credentials in the secret bundle. NOT covered by the manifest URL/SSRF checks (which
|
|
903
|
-
* only guard `baseUrl`/`tokenUrl`); a backend that puts a URL here must guard it itself
|
|
904
|
-
* (reuse the exported `UrlSafetyPolicy`).
|
|
905
|
-
*/
|
|
906
|
-
readonly providerConfig: v.OptionalSchema<v.RecordSchema<v.StringSchema<undefined>, v.UnknownSchema, undefined>, undefined>;
|
|
1067
|
+
readonly expiresAtPath: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
|
|
1068
|
+
readonly externalIdPath: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
|
|
1069
|
+
readonly access: v.OptionalSchema<v.ObjectSchema<{
|
|
1070
|
+
readonly scheme: v.PicklistSchema<["none", "bearer", "basic", "custom_header"], undefined>;
|
|
1071
|
+
readonly tokenPath: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
|
|
1072
|
+
readonly usernamePath: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
|
|
1073
|
+
readonly passwordPath: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
|
|
1074
|
+
readonly headerName: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
|
|
1075
|
+
readonly headerValuePath: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
|
|
1076
|
+
}, undefined>, undefined>;
|
|
1077
|
+
}, undefined>;
|
|
1078
|
+
/** Fallback TTL (ms) when the response carries no explicit expiry. */
|
|
1079
|
+
readonly defaultTtlMs: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, 60000, undefined>]>, undefined>;
|
|
1080
|
+
/**
|
|
1081
|
+
* Opaque, provider-specific configuration for a CUSTOM backend (e.g. a Kargo project,
|
|
1082
|
+
* link-selection key, status map). The generic HttpEnvironmentProvider ignores it
|
|
1083
|
+
* entirely; a custom backend — registered by reference into the app-owned
|
|
1084
|
+
* `EnvironmentBackendRegistry` (see `backend/docs/native-environment-adapter.md`) — reads
|
|
1085
|
+
* + validates it off the per-call
|
|
1086
|
+
* `manifest`. This is the per-WORKSPACE config carrier: a custom backend rides the generic
|
|
1087
|
+
* manifest member of `environmentBackendConfigSchema`, so its bespoke settings live here and
|
|
1088
|
+
* its credentials in the secret bundle. NOT covered by the manifest URL/SSRF checks (which
|
|
1089
|
+
* only guard `baseUrl`/`tokenUrl`); a backend that puts a URL here must guard it itself
|
|
1090
|
+
* (reuse the exported `UrlSafetyPolicy`).
|
|
1091
|
+
*/
|
|
1092
|
+
readonly providerConfig: v.OptionalSchema<v.RecordSchema<v.StringSchema<undefined>, v.UnknownSchema, undefined>, undefined>;
|
|
1093
|
+
}, undefined>;
|
|
1094
|
+
}, undefined>, v.ObjectSchema<{
|
|
1095
|
+
readonly kind: v.LiteralSchema<"kubernetes", undefined>;
|
|
1096
|
+
readonly kubernetes: v.ObjectSchema<{
|
|
1097
|
+
/** Human label for the connection (shown in the UI). */
|
|
1098
|
+
readonly label: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 120, undefined>]>;
|
|
1099
|
+
/** kube-apiserver root URL, e.g. `https://my-cluster.example:6443`. */
|
|
1100
|
+
readonly apiServerUrl: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 2000, undefined>]>;
|
|
1101
|
+
/** PEM CA bundle to verify the apiserver TLS cert (omit only for a publicly-trusted CA). */
|
|
1102
|
+
readonly caCertPem: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
|
|
1103
|
+
/** Skip apiserver TLS verification — strongly discouraged; kind/dev clusters only. */
|
|
1104
|
+
readonly insecureSkipTlsVerify: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
|
|
1105
|
+
/**
|
|
1106
|
+
* Namespace name template for the per-PR environment, e.g. `cf-env-{{pullNumber}}`.
|
|
1107
|
+
* Rendered with the provision vars then sanitized to an RFC1123 label; absent ⇒ a
|
|
1108
|
+
* default derived from the PR number / block id.
|
|
1109
|
+
*/
|
|
1110
|
+
readonly namespaceTemplate: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 200, undefined>]>, undefined>;
|
|
1111
|
+
/** Where the manifests are read from (co-located in the PR repo, or a separate repo). */
|
|
1112
|
+
readonly manifestSource: v.VariantSchema<"type", [v.ObjectSchema<{
|
|
1113
|
+
readonly type: v.LiteralSchema<"colocated", undefined>;
|
|
1114
|
+
/** File or directory path within the PR repo (read at the PR head branch). */
|
|
1115
|
+
readonly path: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 500, undefined>]>;
|
|
1116
|
+
readonly renderer: v.OptionalSchema<v.PicklistSchema<["raw", "kustomize"], undefined>, undefined>;
|
|
1117
|
+
}, undefined>, v.ObjectSchema<{
|
|
1118
|
+
readonly type: v.LiteralSchema<"separate", undefined>;
|
|
1119
|
+
/** `owner/repo` of the manifests repo. */
|
|
1120
|
+
readonly repo: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.RegexAction<string, "must be \"owner/repo\"">]>;
|
|
1121
|
+
/** Branch/tag/sha to read at; absent ⇒ that repo's default branch. */
|
|
1122
|
+
readonly ref: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>]>, undefined>;
|
|
1123
|
+
/** File or directory path within the manifests repo. */
|
|
1124
|
+
readonly path: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 500, undefined>]>;
|
|
1125
|
+
readonly renderer: v.OptionalSchema<v.PicklistSchema<["raw", "kustomize"], undefined>, undefined>;
|
|
1126
|
+
}, undefined>], undefined>;
|
|
1127
|
+
/** How the environment URL is derived once applied. */
|
|
1128
|
+
readonly url: v.VariantSchema<"source", [v.ObjectSchema<{
|
|
1129
|
+
readonly source: v.LiteralSchema<"ingressTemplate", undefined>;
|
|
1130
|
+
/** Host template, e.g. `{{branch}}.preview.example.com`; rendered with the provision vars. */
|
|
1131
|
+
readonly hostTemplate: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 500, undefined>]>;
|
|
1132
|
+
readonly scheme: v.OptionalSchema<v.PicklistSchema<["http", "https"], undefined>, undefined>;
|
|
1133
|
+
}, undefined>, v.ObjectSchema<{
|
|
1134
|
+
readonly source: v.LiteralSchema<"ingressStatus", undefined>;
|
|
1135
|
+
/** Ingress object to read `.status.loadBalancer` from; absent ⇒ the only Ingress applied. */
|
|
1136
|
+
readonly ingressName: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>]>, undefined>;
|
|
1137
|
+
readonly scheme: v.OptionalSchema<v.PicklistSchema<["http", "https"], undefined>, undefined>;
|
|
1138
|
+
}, undefined>, v.ObjectSchema<{
|
|
1139
|
+
readonly source: v.LiteralSchema<"serviceStatus", undefined>;
|
|
1140
|
+
/** Service object to read `.status.loadBalancer` (k3s ServiceLB) from. */
|
|
1141
|
+
readonly serviceName: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>]>;
|
|
1142
|
+
readonly port: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 1, undefined>, v.MaxValueAction<number, 65535, undefined>]>, undefined>;
|
|
1143
|
+
readonly scheme: v.OptionalSchema<v.PicklistSchema<["http", "https"], undefined>, undefined>;
|
|
1144
|
+
}, undefined>, v.ObjectSchema<{
|
|
1145
|
+
readonly source: v.LiteralSchema<"gatewayStatus", undefined>;
|
|
1146
|
+
/** Gateway-API `Gateway` to read `.status.addresses[]` from; absent ⇒ the only one applied. */
|
|
1147
|
+
readonly gatewayName: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>]>, undefined>;
|
|
1148
|
+
readonly scheme: v.OptionalSchema<v.PicklistSchema<["http", "https"], undefined>, undefined>;
|
|
1149
|
+
}, undefined>, v.ObjectSchema<{
|
|
1150
|
+
readonly source: v.LiteralSchema<"httpRouteStatus", undefined>;
|
|
1151
|
+
/** `HTTPRoute` whose `parentRefs` resolve to the Gateway address; absent ⇒ the only one applied. */
|
|
1152
|
+
readonly httpRouteName: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>]>, undefined>;
|
|
1153
|
+
readonly scheme: v.OptionalSchema<v.PicklistSchema<["http", "https"], undefined>, undefined>;
|
|
1154
|
+
}, undefined>], undefined>;
|
|
1155
|
+
/**
|
|
1156
|
+
* Optional image reference made available to the manifests as `{{image}}` (e.g. a
|
|
1157
|
+
* CI-built image tagged by branch/sha). Itself a template over the provision vars.
|
|
1158
|
+
*/
|
|
1159
|
+
readonly imageTemplate: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MaxLengthAction<string, 500, undefined>]>, undefined>;
|
|
1160
|
+
/** Fallback TTL (ms) after which the env is swept + torn down. */
|
|
1161
|
+
readonly defaultTtlMs: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, 60000, undefined>]>, undefined>;
|
|
1162
|
+
/**
|
|
1163
|
+
* How long (seconds) the container deploy adapter waits for each Deployment to roll out
|
|
1164
|
+
* before reporting the env still `provisioning` (the backend keeps polling). Only the
|
|
1165
|
+
* container-backed render path honors it; absent ⇒ the harness default (180s).
|
|
1166
|
+
*/
|
|
1167
|
+
readonly rolloutTimeoutSeconds: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 1, undefined>]>, undefined>;
|
|
1168
|
+
/** Extra labels stamped on the namespace + every applied resource. */
|
|
1169
|
+
readonly labels: v.OptionalSchema<v.RecordSchema<v.StringSchema<undefined>, v.StringSchema<undefined>, undefined>, undefined>;
|
|
1170
|
+
/** Extra annotations stamped on the namespace. */
|
|
1171
|
+
readonly annotations: v.OptionalSchema<v.RecordSchema<v.StringSchema<undefined>, v.StringSchema<undefined>, undefined>, undefined>;
|
|
1172
|
+
/** Structured image overrides (the kustomize `images:` shape), templated over provision vars. */
|
|
1173
|
+
readonly images: v.OptionalSchema<v.ArraySchema<v.SchemaWithPipe<readonly [v.ObjectSchema<{
|
|
1174
|
+
/** The image to match (the `name:` in a kustomization `images:` entry), e.g. `registry/app`. */
|
|
1175
|
+
readonly name: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>]>;
|
|
1176
|
+
/** Optional replacement repo, templated; absent ⇒ keep the original repo. */
|
|
1177
|
+
readonly newNameTemplate: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 500, undefined>]>, undefined>;
|
|
1178
|
+
/** Replacement tag, templated (e.g. `{{branch}}` / `{{sha}}`); mutually exclusive with digest. */
|
|
1179
|
+
readonly newTagTemplate: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 500, undefined>]>, undefined>;
|
|
1180
|
+
/** Replacement digest, templated; alternative to a tag. */
|
|
1181
|
+
readonly digestTemplate: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 500, undefined>]>, undefined>;
|
|
1182
|
+
}, undefined>, v.CheckAction<{
|
|
1183
|
+
name: string;
|
|
1184
|
+
newNameTemplate?: string | undefined;
|
|
1185
|
+
newTagTemplate?: string | undefined;
|
|
1186
|
+
digestTemplate?: string | undefined;
|
|
1187
|
+
}, "an image override must set at least one of newNameTemplate, newTagTemplate, or digestTemplate.">, v.CheckAction<{
|
|
1188
|
+
name: string;
|
|
1189
|
+
newNameTemplate?: string | undefined;
|
|
1190
|
+
newTagTemplate?: string | undefined;
|
|
1191
|
+
digestTemplate?: string | undefined;
|
|
1192
|
+
}, "newTagTemplate and digestTemplate are mutually exclusive on an image override.">]>, undefined>, undefined>;
|
|
1193
|
+
/** Helm releases to install — workspace-shared singletons merged with the service's per-env ones. */
|
|
1194
|
+
readonly helmReleases: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
|
|
1195
|
+
/** Release name. */
|
|
1196
|
+
readonly name: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>]>;
|
|
1197
|
+
/** Chart ref: an OCI ref (`oci://…`) or, with `repo`, a `repo/chart` name. */
|
|
1198
|
+
readonly chart: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>]>;
|
|
1199
|
+
/** Chart repo URL; absent ⇒ `chart` is an OCI ref. */
|
|
1200
|
+
readonly repo: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 2000, undefined>]>, undefined>;
|
|
1201
|
+
/** PINNED chart version, e.g. `1.2.3` / `v1.2.3` (floating tags like `latest`/`^1.0` rejected). */
|
|
1202
|
+
readonly version: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.RegexAction<string, "version must be a pinned semver (e.g. 1.2.3), not a floating tag like latest or ^1.0.">]>;
|
|
1203
|
+
/** Namespace to install into, templated; absent ⇒ the environment namespace. */
|
|
1204
|
+
readonly namespaceTemplate: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 500, undefined>]>, undefined>;
|
|
1205
|
+
/** Inline `--values` overrides. */
|
|
1206
|
+
readonly values: v.OptionalSchema<v.RecordSchema<v.StringSchema<undefined>, v.UnknownSchema, undefined>, undefined>;
|
|
1207
|
+
/** Templated `--set` overrides. */
|
|
1208
|
+
readonly set: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
|
|
1209
|
+
/** Dotted `--set` path, e.g. `config.rateLimit.enabled`. */
|
|
1210
|
+
readonly path: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>]>;
|
|
1211
|
+
/** The value, templated over the provision vars. */
|
|
1212
|
+
readonly valueTemplate: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MaxLengthAction<string, 2000, undefined>]>;
|
|
1213
|
+
}, undefined>, undefined>, undefined>;
|
|
1214
|
+
/** Secret-bundle-backed values folded in at provision time (`--set <path>=<secret>`). */
|
|
1215
|
+
readonly valuesSecretRefs: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
|
|
1216
|
+
readonly path: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>]>;
|
|
1217
|
+
readonly secretRef: v.ObjectSchema<{
|
|
1218
|
+
readonly key: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.RegexAction<string, undefined>, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 64, undefined>]>;
|
|
1219
|
+
}, undefined>;
|
|
1220
|
+
}, undefined>, undefined>, undefined>;
|
|
1221
|
+
readonly scope: v.OptionalSchema<v.PicklistSchema<["per-environment", "shared"], undefined>, undefined>;
|
|
1222
|
+
}, undefined>, undefined>, undefined>;
|
|
1223
|
+
/** Secrets fed in before apply (a `Secret` resource or a `secretGenerator` `.env`). */
|
|
1224
|
+
readonly secretInjections: v.OptionalSchema<v.ArraySchema<v.VariantSchema<"mode", [v.ObjectSchema<{
|
|
1225
|
+
readonly mode: v.LiteralSchema<"secret", undefined>;
|
|
1226
|
+
/** Target Secret name in the namespace. */
|
|
1227
|
+
readonly secretName: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>]>;
|
|
1228
|
+
/** Secret `type`; absent ⇒ `Opaque`. */
|
|
1229
|
+
readonly secretType: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>]>, undefined>;
|
|
1230
|
+
readonly entries: v.ArraySchema<v.SchemaWithPipe<readonly [v.ObjectSchema<{
|
|
1231
|
+
/** Key inside the rendered Secret / `.env`. */
|
|
1232
|
+
readonly key: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.RegexAction<string, undefined>, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 256, undefined>]>;
|
|
1233
|
+
/** Resolve the value from the workspace encrypted bundle by key. */
|
|
1234
|
+
readonly secretRef: v.OptionalSchema<v.ObjectSchema<{
|
|
1235
|
+
readonly key: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.RegexAction<string, undefined>, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 64, undefined>]>;
|
|
1236
|
+
}, undefined>, undefined>;
|
|
1237
|
+
/** OR a non-secret value, templated over the provision vars. */
|
|
1238
|
+
readonly valueTemplate: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MaxLengthAction<string, 2000, undefined>]>, undefined>;
|
|
1239
|
+
}, undefined>, v.CheckAction<{
|
|
1240
|
+
key: string;
|
|
1241
|
+
secretRef?: {
|
|
1242
|
+
key: string;
|
|
1243
|
+
} | undefined;
|
|
1244
|
+
valueTemplate?: string | undefined;
|
|
1245
|
+
}, "a secret entry must set exactly one of secretRef or valueTemplate.">]>, undefined>;
|
|
1246
|
+
}, undefined>, v.ObjectSchema<{
|
|
1247
|
+
readonly mode: v.LiteralSchema<"generatorEnvFile", undefined>;
|
|
1248
|
+
/**
|
|
1249
|
+
* Repo-relative path within the overlay tree to write the `KEY=value` env file the
|
|
1250
|
+
* overlay's `secretGenerator` reads (e.g. `overlays/<env>/<component>/.env`). The
|
|
1251
|
+
* overlay names the Secret.
|
|
1252
|
+
*/
|
|
1253
|
+
readonly envFilePath: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 500, undefined>]>;
|
|
1254
|
+
readonly entries: v.ArraySchema<v.SchemaWithPipe<readonly [v.ObjectSchema<{
|
|
1255
|
+
/** Key inside the rendered Secret / `.env`. */
|
|
1256
|
+
readonly key: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.RegexAction<string, undefined>, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 256, undefined>]>;
|
|
1257
|
+
/** Resolve the value from the workspace encrypted bundle by key. */
|
|
1258
|
+
readonly secretRef: v.OptionalSchema<v.ObjectSchema<{
|
|
1259
|
+
readonly key: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.RegexAction<string, undefined>, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 64, undefined>]>;
|
|
1260
|
+
}, undefined>, undefined>;
|
|
1261
|
+
/** OR a non-secret value, templated over the provision vars. */
|
|
1262
|
+
readonly valueTemplate: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MaxLengthAction<string, 2000, undefined>]>, undefined>;
|
|
1263
|
+
}, undefined>, v.CheckAction<{
|
|
1264
|
+
key: string;
|
|
1265
|
+
secretRef?: {
|
|
1266
|
+
key: string;
|
|
1267
|
+
} | undefined;
|
|
1268
|
+
valueTemplate?: string | undefined;
|
|
1269
|
+
}, "a secret entry must set exactly one of secretRef or valueTemplate.">]>, undefined>;
|
|
1270
|
+
}, undefined>], undefined>, undefined>, undefined>;
|
|
907
1271
|
}, undefined>;
|
|
908
1272
|
}, undefined>, v.ObjectSchema<{
|
|
909
|
-
readonly kind: v.LiteralSchema<"
|
|
910
|
-
readonly
|
|
1273
|
+
readonly kind: v.LiteralSchema<"eks", undefined>;
|
|
1274
|
+
readonly eks: v.ObjectSchema<{
|
|
1275
|
+
readonly region: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.RegexAction<string, "must be an AWS region slug">, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 64, undefined>]>;
|
|
1276
|
+
readonly clusterName: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 120, undefined>]>;
|
|
1277
|
+
readonly stsHost: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.RegexAction<string, "must be a bare host or host:port">, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 255, undefined>]>, undefined>;
|
|
911
1278
|
/** Human label for the connection (shown in the UI). */
|
|
912
1279
|
readonly label: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 120, undefined>]>;
|
|
913
1280
|
/** kube-apiserver root URL, e.g. `https://my-cluster.example:6443`. */
|
|
@@ -1252,6 +1619,113 @@ export declare const serviceProvisioningSchema: v.ObjectSchema<{
|
|
|
1252
1619
|
* contexts, in-checkout bind mounts, and relative `env_file`s resolve.
|
|
1253
1620
|
*/
|
|
1254
1621
|
readonly composeBuild: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
|
|
1622
|
+
/**
|
|
1623
|
+
* `docker-compose`: the declarative STACK RECIPE for a complex multi-step bring-up —
|
|
1624
|
+
* multi-`-f` layering, profiles, env-file materialization, external networks / shared-stack
|
|
1625
|
+
* refs, ordered setup/teardown steps + a terminal health gate. Absent ⇒ the simple
|
|
1626
|
+
* single-file `composePath` + `up --wait` path (when set, `recipe.composeFiles` supersedes
|
|
1627
|
+
* `composePath`). See {@link stackRecipeSchema}.
|
|
1628
|
+
*/
|
|
1629
|
+
readonly recipe: v.OptionalSchema<v.ObjectSchema<{
|
|
1630
|
+
readonly composeFiles: v.OptionalSchema<v.SchemaWithPipe<readonly [v.ArraySchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 500, undefined>]>, undefined>, v.MinLengthAction<string[], 1, undefined>]>, undefined>;
|
|
1631
|
+
readonly composeProfiles: v.OptionalSchema<v.ArraySchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 200, undefined>]>, undefined>, undefined>;
|
|
1632
|
+
readonly envFiles: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
|
|
1633
|
+
readonly template: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 500, undefined>]>;
|
|
1634
|
+
readonly target: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 500, undefined>]>;
|
|
1635
|
+
}, undefined>, undefined>, undefined>;
|
|
1636
|
+
readonly externalNetworks: v.OptionalSchema<v.ArraySchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 200, undefined>]>, undefined>, undefined>;
|
|
1637
|
+
readonly sharedStackRefs: v.OptionalSchema<v.ArraySchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 200, undefined>]>, undefined>, undefined>;
|
|
1638
|
+
readonly setupSteps: v.OptionalSchema<v.ArraySchema<v.VariantSchema<"kind", [v.ObjectSchema<{
|
|
1639
|
+
readonly kind: v.LiteralSchema<"compose-exec", undefined>;
|
|
1640
|
+
readonly name: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 120, undefined>]>;
|
|
1641
|
+
readonly service: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 200, undefined>]>;
|
|
1642
|
+
readonly command: v.SchemaWithPipe<readonly [v.ArraySchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>]>, undefined>, v.MinLengthAction<string[], 1, undefined>]>;
|
|
1643
|
+
readonly stdinFile: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 500, undefined>]>, undefined>;
|
|
1644
|
+
readonly user: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 200, undefined>]>, undefined>;
|
|
1645
|
+
readonly workdir: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 500, undefined>]>, undefined>;
|
|
1646
|
+
readonly timeoutMs: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 1000, undefined>, v.MaxValueAction<number, 3600000, undefined>]>, undefined>;
|
|
1647
|
+
}, undefined>, v.ObjectSchema<{
|
|
1648
|
+
readonly kind: v.LiteralSchema<"copy-file", undefined>;
|
|
1649
|
+
readonly name: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 120, undefined>]>;
|
|
1650
|
+
readonly from: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 500, undefined>]>;
|
|
1651
|
+
readonly to: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 500, undefined>]>;
|
|
1652
|
+
readonly timeoutMs: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 1000, undefined>, v.MaxValueAction<number, 3600000, undefined>]>, undefined>;
|
|
1653
|
+
}, undefined>, v.ObjectSchema<{
|
|
1654
|
+
readonly kind: v.LiteralSchema<"wait-http", undefined>;
|
|
1655
|
+
readonly name: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 120, undefined>]>;
|
|
1656
|
+
readonly url: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 2000, undefined>]>;
|
|
1657
|
+
readonly expectStatus: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 100, undefined>, v.MaxValueAction<number, 599, undefined>]>, undefined>;
|
|
1658
|
+
readonly expectBodyContains: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MaxLengthAction<string, 500, undefined>]>, undefined>;
|
|
1659
|
+
readonly intervalMs: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 250, undefined>, v.MaxValueAction<number, 60000, undefined>]>, undefined>;
|
|
1660
|
+
readonly timeoutMs: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 1000, undefined>, v.MaxValueAction<number, 3600000, undefined>]>, undefined>;
|
|
1661
|
+
}, undefined>, v.ObjectSchema<{
|
|
1662
|
+
readonly kind: v.LiteralSchema<"wait-file", undefined>;
|
|
1663
|
+
readonly name: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 120, undefined>]>;
|
|
1664
|
+
readonly path: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 500, undefined>]>;
|
|
1665
|
+
readonly service: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 200, undefined>]>, undefined>;
|
|
1666
|
+
readonly intervalMs: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 250, undefined>, v.MaxValueAction<number, 60000, undefined>]>, undefined>;
|
|
1667
|
+
readonly timeoutMs: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 1000, undefined>, v.MaxValueAction<number, 3600000, undefined>]>, undefined>;
|
|
1668
|
+
}, undefined>, v.ObjectSchema<{
|
|
1669
|
+
readonly kind: v.LiteralSchema<"host-command", undefined>;
|
|
1670
|
+
readonly name: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 120, undefined>]>;
|
|
1671
|
+
readonly command: v.SchemaWithPipe<readonly [v.ArraySchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>]>, undefined>, v.MinLengthAction<string[], 1, undefined>]>;
|
|
1672
|
+
readonly workdir: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 500, undefined>]>, undefined>;
|
|
1673
|
+
readonly timeoutMs: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 1000, undefined>, v.MaxValueAction<number, 3600000, undefined>]>, undefined>;
|
|
1674
|
+
}, undefined>], undefined>, undefined>, undefined>;
|
|
1675
|
+
readonly healthGate: v.OptionalSchema<v.VariantSchema<"kind", [v.ObjectSchema<{
|
|
1676
|
+
readonly kind: v.LiteralSchema<"compose-healthy", undefined>;
|
|
1677
|
+
}, undefined>, v.ObjectSchema<{
|
|
1678
|
+
readonly kind: v.LiteralSchema<"http", undefined>;
|
|
1679
|
+
readonly url: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 2000, undefined>]>;
|
|
1680
|
+
readonly expectStatus: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 100, undefined>, v.MaxValueAction<number, 599, undefined>]>, undefined>;
|
|
1681
|
+
readonly expectBodyContains: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MaxLengthAction<string, 500, undefined>]>, undefined>;
|
|
1682
|
+
readonly intervalMs: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 250, undefined>, v.MaxValueAction<number, 60000, undefined>]>, undefined>;
|
|
1683
|
+
readonly timeoutMs: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 1000, undefined>, v.MaxValueAction<number, 3600000, undefined>]>, undefined>;
|
|
1684
|
+
}, undefined>, v.ObjectSchema<{
|
|
1685
|
+
readonly kind: v.LiteralSchema<"compose-exec", undefined>;
|
|
1686
|
+
readonly service: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 200, undefined>]>;
|
|
1687
|
+
readonly command: v.SchemaWithPipe<readonly [v.ArraySchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>]>, undefined>, v.MinLengthAction<string[], 1, undefined>]>;
|
|
1688
|
+
readonly intervalMs: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 250, undefined>, v.MaxValueAction<number, 60000, undefined>]>, undefined>;
|
|
1689
|
+
readonly timeoutMs: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 1000, undefined>, v.MaxValueAction<number, 3600000, undefined>]>, undefined>;
|
|
1690
|
+
}, undefined>], undefined>, undefined>;
|
|
1691
|
+
readonly teardownSteps: v.OptionalSchema<v.ArraySchema<v.VariantSchema<"kind", [v.ObjectSchema<{
|
|
1692
|
+
readonly kind: v.LiteralSchema<"compose-exec", undefined>;
|
|
1693
|
+
readonly name: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 120, undefined>]>;
|
|
1694
|
+
readonly service: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 200, undefined>]>;
|
|
1695
|
+
readonly command: v.SchemaWithPipe<readonly [v.ArraySchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>]>, undefined>, v.MinLengthAction<string[], 1, undefined>]>;
|
|
1696
|
+
readonly stdinFile: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 500, undefined>]>, undefined>;
|
|
1697
|
+
readonly user: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 200, undefined>]>, undefined>;
|
|
1698
|
+
readonly workdir: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 500, undefined>]>, undefined>;
|
|
1699
|
+
readonly timeoutMs: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 1000, undefined>, v.MaxValueAction<number, 3600000, undefined>]>, undefined>;
|
|
1700
|
+
}, undefined>, v.ObjectSchema<{
|
|
1701
|
+
readonly kind: v.LiteralSchema<"copy-file", undefined>;
|
|
1702
|
+
readonly name: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 120, undefined>]>;
|
|
1703
|
+
readonly from: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 500, undefined>]>;
|
|
1704
|
+
readonly to: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 500, undefined>]>;
|
|
1705
|
+
readonly timeoutMs: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 1000, undefined>, v.MaxValueAction<number, 3600000, undefined>]>, undefined>;
|
|
1706
|
+
}, undefined>, v.ObjectSchema<{
|
|
1707
|
+
readonly kind: v.LiteralSchema<"wait-http", undefined>;
|
|
1708
|
+
readonly name: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 120, undefined>]>;
|
|
1709
|
+
readonly url: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 2000, undefined>]>;
|
|
1710
|
+
readonly expectStatus: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 100, undefined>, v.MaxValueAction<number, 599, undefined>]>, undefined>;
|
|
1711
|
+
readonly expectBodyContains: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MaxLengthAction<string, 500, undefined>]>, undefined>;
|
|
1712
|
+
readonly intervalMs: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 250, undefined>, v.MaxValueAction<number, 60000, undefined>]>, undefined>;
|
|
1713
|
+
readonly timeoutMs: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 1000, undefined>, v.MaxValueAction<number, 3600000, undefined>]>, undefined>;
|
|
1714
|
+
}, undefined>, v.ObjectSchema<{
|
|
1715
|
+
readonly kind: v.LiteralSchema<"wait-file", undefined>;
|
|
1716
|
+
readonly name: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 120, undefined>]>;
|
|
1717
|
+
readonly path: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 500, undefined>]>;
|
|
1718
|
+
readonly service: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 200, undefined>]>, undefined>;
|
|
1719
|
+
readonly intervalMs: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 250, undefined>, v.MaxValueAction<number, 60000, undefined>]>, undefined>;
|
|
1720
|
+
readonly timeoutMs: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 1000, undefined>, v.MaxValueAction<number, 3600000, undefined>]>, undefined>;
|
|
1721
|
+
}, undefined>, v.ObjectSchema<{
|
|
1722
|
+
readonly kind: v.LiteralSchema<"host-command", undefined>;
|
|
1723
|
+
readonly name: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 120, undefined>]>;
|
|
1724
|
+
readonly command: v.SchemaWithPipe<readonly [v.ArraySchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>]>, undefined>, v.MinLengthAction<string[], 1, undefined>]>;
|
|
1725
|
+
readonly workdir: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 500, undefined>]>, undefined>;
|
|
1726
|
+
readonly timeoutMs: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 1000, undefined>, v.MaxValueAction<number, 3600000, undefined>]>, undefined>;
|
|
1727
|
+
}, undefined>], undefined>, undefined>, undefined>;
|
|
1728
|
+
}, undefined>, undefined>;
|
|
1255
1729
|
/** `custom`: the custom-manifest-type id this service produces (matched to a remote-custom handler). */
|
|
1256
1730
|
readonly manifestId: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.RegexAction<string, undefined>, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 64, undefined>]>, undefined>;
|
|
1257
1731
|
/** `custom`: optional path to the custom manifest within the repo. */
|
|
@@ -4513,47 +4987,228 @@ export declare const environmentConnectionSchema: v.ObjectSchema<{
|
|
|
4513
4987
|
readonly name: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>]>;
|
|
4514
4988
|
readonly value: v.StringSchema<undefined>;
|
|
4515
4989
|
}, undefined>, undefined>, undefined>;
|
|
4516
|
-
readonly bodyTemplate: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
|
|
4517
|
-
/** Per-call timeout (ms). Bounded; defaults applied by the adapter. */
|
|
4518
|
-
readonly timeoutMs: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, 1, undefined>, v.MaxValueAction<number, 60000, undefined>]>, undefined>;
|
|
4519
|
-
}, undefined>, undefined>;
|
|
4520
|
-
readonly response: v.ObjectSchema<{
|
|
4521
|
-
readonly urlPath: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
|
|
4522
|
-
readonly statusPath: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
|
|
4523
|
-
readonly statusMap: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
|
|
4524
|
-
readonly from: v.StringSchema<undefined>;
|
|
4525
|
-
readonly to: v.PicklistSchema<["provisioning", "ready", "failed", "expired", "tearing_down", "torn_down"], undefined>;
|
|
4990
|
+
readonly bodyTemplate: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
|
|
4991
|
+
/** Per-call timeout (ms). Bounded; defaults applied by the adapter. */
|
|
4992
|
+
readonly timeoutMs: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, 1, undefined>, v.MaxValueAction<number, 60000, undefined>]>, undefined>;
|
|
4993
|
+
}, undefined>, undefined>;
|
|
4994
|
+
readonly response: v.ObjectSchema<{
|
|
4995
|
+
readonly urlPath: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
|
|
4996
|
+
readonly statusPath: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
|
|
4997
|
+
readonly statusMap: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
|
|
4998
|
+
readonly from: v.StringSchema<undefined>;
|
|
4999
|
+
readonly to: v.PicklistSchema<["provisioning", "ready", "failed", "expired", "tearing_down", "torn_down"], undefined>;
|
|
5000
|
+
}, undefined>, undefined>, undefined>;
|
|
5001
|
+
readonly expiresAtPath: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
|
|
5002
|
+
readonly externalIdPath: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
|
|
5003
|
+
readonly access: v.OptionalSchema<v.ObjectSchema<{
|
|
5004
|
+
readonly scheme: v.PicklistSchema<["none", "bearer", "basic", "custom_header"], undefined>;
|
|
5005
|
+
readonly tokenPath: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
|
|
5006
|
+
readonly usernamePath: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
|
|
5007
|
+
readonly passwordPath: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
|
|
5008
|
+
readonly headerName: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
|
|
5009
|
+
readonly headerValuePath: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
|
|
5010
|
+
}, undefined>, undefined>;
|
|
5011
|
+
}, undefined>;
|
|
5012
|
+
/** Fallback TTL (ms) when the response carries no explicit expiry. */
|
|
5013
|
+
readonly defaultTtlMs: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, 60000, undefined>]>, undefined>;
|
|
5014
|
+
/**
|
|
5015
|
+
* Opaque, provider-specific configuration for a CUSTOM backend (e.g. a Kargo project,
|
|
5016
|
+
* link-selection key, status map). The generic HttpEnvironmentProvider ignores it
|
|
5017
|
+
* entirely; a custom backend — registered by reference into the app-owned
|
|
5018
|
+
* `EnvironmentBackendRegistry` (see `backend/docs/native-environment-adapter.md`) — reads
|
|
5019
|
+
* + validates it off the per-call
|
|
5020
|
+
* `manifest`. This is the per-WORKSPACE config carrier: a custom backend rides the generic
|
|
5021
|
+
* manifest member of `environmentBackendConfigSchema`, so its bespoke settings live here and
|
|
5022
|
+
* its credentials in the secret bundle. NOT covered by the manifest URL/SSRF checks (which
|
|
5023
|
+
* only guard `baseUrl`/`tokenUrl`); a backend that puts a URL here must guard it itself
|
|
5024
|
+
* (reuse the exported `UrlSafetyPolicy`).
|
|
5025
|
+
*/
|
|
5026
|
+
readonly providerConfig: v.OptionalSchema<v.RecordSchema<v.StringSchema<undefined>, v.UnknownSchema, undefined>, undefined>;
|
|
5027
|
+
}, undefined>;
|
|
5028
|
+
}, undefined>, v.ObjectSchema<{
|
|
5029
|
+
readonly kind: v.LiteralSchema<"kubernetes", undefined>;
|
|
5030
|
+
readonly kubernetes: v.ObjectSchema<{
|
|
5031
|
+
/** Human label for the connection (shown in the UI). */
|
|
5032
|
+
readonly label: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 120, undefined>]>;
|
|
5033
|
+
/** kube-apiserver root URL, e.g. `https://my-cluster.example:6443`. */
|
|
5034
|
+
readonly apiServerUrl: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 2000, undefined>]>;
|
|
5035
|
+
/** PEM CA bundle to verify the apiserver TLS cert (omit only for a publicly-trusted CA). */
|
|
5036
|
+
readonly caCertPem: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
|
|
5037
|
+
/** Skip apiserver TLS verification — strongly discouraged; kind/dev clusters only. */
|
|
5038
|
+
readonly insecureSkipTlsVerify: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
|
|
5039
|
+
/**
|
|
5040
|
+
* Namespace name template for the per-PR environment, e.g. `cf-env-{{pullNumber}}`.
|
|
5041
|
+
* Rendered with the provision vars then sanitized to an RFC1123 label; absent ⇒ a
|
|
5042
|
+
* default derived from the PR number / block id.
|
|
5043
|
+
*/
|
|
5044
|
+
readonly namespaceTemplate: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 200, undefined>]>, undefined>;
|
|
5045
|
+
/** Where the manifests are read from (co-located in the PR repo, or a separate repo). */
|
|
5046
|
+
readonly manifestSource: v.VariantSchema<"type", [v.ObjectSchema<{
|
|
5047
|
+
readonly type: v.LiteralSchema<"colocated", undefined>;
|
|
5048
|
+
/** File or directory path within the PR repo (read at the PR head branch). */
|
|
5049
|
+
readonly path: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 500, undefined>]>;
|
|
5050
|
+
readonly renderer: v.OptionalSchema<v.PicklistSchema<["raw", "kustomize"], undefined>, undefined>;
|
|
5051
|
+
}, undefined>, v.ObjectSchema<{
|
|
5052
|
+
readonly type: v.LiteralSchema<"separate", undefined>;
|
|
5053
|
+
/** `owner/repo` of the manifests repo. */
|
|
5054
|
+
readonly repo: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.RegexAction<string, "must be \"owner/repo\"">]>;
|
|
5055
|
+
/** Branch/tag/sha to read at; absent ⇒ that repo's default branch. */
|
|
5056
|
+
readonly ref: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>]>, undefined>;
|
|
5057
|
+
/** File or directory path within the manifests repo. */
|
|
5058
|
+
readonly path: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 500, undefined>]>;
|
|
5059
|
+
readonly renderer: v.OptionalSchema<v.PicklistSchema<["raw", "kustomize"], undefined>, undefined>;
|
|
5060
|
+
}, undefined>], undefined>;
|
|
5061
|
+
/** How the environment URL is derived once applied. */
|
|
5062
|
+
readonly url: v.VariantSchema<"source", [v.ObjectSchema<{
|
|
5063
|
+
readonly source: v.LiteralSchema<"ingressTemplate", undefined>;
|
|
5064
|
+
/** Host template, e.g. `{{branch}}.preview.example.com`; rendered with the provision vars. */
|
|
5065
|
+
readonly hostTemplate: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 500, undefined>]>;
|
|
5066
|
+
readonly scheme: v.OptionalSchema<v.PicklistSchema<["http", "https"], undefined>, undefined>;
|
|
5067
|
+
}, undefined>, v.ObjectSchema<{
|
|
5068
|
+
readonly source: v.LiteralSchema<"ingressStatus", undefined>;
|
|
5069
|
+
/** Ingress object to read `.status.loadBalancer` from; absent ⇒ the only Ingress applied. */
|
|
5070
|
+
readonly ingressName: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>]>, undefined>;
|
|
5071
|
+
readonly scheme: v.OptionalSchema<v.PicklistSchema<["http", "https"], undefined>, undefined>;
|
|
5072
|
+
}, undefined>, v.ObjectSchema<{
|
|
5073
|
+
readonly source: v.LiteralSchema<"serviceStatus", undefined>;
|
|
5074
|
+
/** Service object to read `.status.loadBalancer` (k3s ServiceLB) from. */
|
|
5075
|
+
readonly serviceName: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>]>;
|
|
5076
|
+
readonly port: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 1, undefined>, v.MaxValueAction<number, 65535, undefined>]>, undefined>;
|
|
5077
|
+
readonly scheme: v.OptionalSchema<v.PicklistSchema<["http", "https"], undefined>, undefined>;
|
|
5078
|
+
}, undefined>, v.ObjectSchema<{
|
|
5079
|
+
readonly source: v.LiteralSchema<"gatewayStatus", undefined>;
|
|
5080
|
+
/** Gateway-API `Gateway` to read `.status.addresses[]` from; absent ⇒ the only one applied. */
|
|
5081
|
+
readonly gatewayName: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>]>, undefined>;
|
|
5082
|
+
readonly scheme: v.OptionalSchema<v.PicklistSchema<["http", "https"], undefined>, undefined>;
|
|
5083
|
+
}, undefined>, v.ObjectSchema<{
|
|
5084
|
+
readonly source: v.LiteralSchema<"httpRouteStatus", undefined>;
|
|
5085
|
+
/** `HTTPRoute` whose `parentRefs` resolve to the Gateway address; absent ⇒ the only one applied. */
|
|
5086
|
+
readonly httpRouteName: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>]>, undefined>;
|
|
5087
|
+
readonly scheme: v.OptionalSchema<v.PicklistSchema<["http", "https"], undefined>, undefined>;
|
|
5088
|
+
}, undefined>], undefined>;
|
|
5089
|
+
/**
|
|
5090
|
+
* Optional image reference made available to the manifests as `{{image}}` (e.g. a
|
|
5091
|
+
* CI-built image tagged by branch/sha). Itself a template over the provision vars.
|
|
5092
|
+
*/
|
|
5093
|
+
readonly imageTemplate: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MaxLengthAction<string, 500, undefined>]>, undefined>;
|
|
5094
|
+
/** Fallback TTL (ms) after which the env is swept + torn down. */
|
|
5095
|
+
readonly defaultTtlMs: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, 60000, undefined>]>, undefined>;
|
|
5096
|
+
/**
|
|
5097
|
+
* How long (seconds) the container deploy adapter waits for each Deployment to roll out
|
|
5098
|
+
* before reporting the env still `provisioning` (the backend keeps polling). Only the
|
|
5099
|
+
* container-backed render path honors it; absent ⇒ the harness default (180s).
|
|
5100
|
+
*/
|
|
5101
|
+
readonly rolloutTimeoutSeconds: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 1, undefined>]>, undefined>;
|
|
5102
|
+
/** Extra labels stamped on the namespace + every applied resource. */
|
|
5103
|
+
readonly labels: v.OptionalSchema<v.RecordSchema<v.StringSchema<undefined>, v.StringSchema<undefined>, undefined>, undefined>;
|
|
5104
|
+
/** Extra annotations stamped on the namespace. */
|
|
5105
|
+
readonly annotations: v.OptionalSchema<v.RecordSchema<v.StringSchema<undefined>, v.StringSchema<undefined>, undefined>, undefined>;
|
|
5106
|
+
/** Structured image overrides (the kustomize `images:` shape), templated over provision vars. */
|
|
5107
|
+
readonly images: v.OptionalSchema<v.ArraySchema<v.SchemaWithPipe<readonly [v.ObjectSchema<{
|
|
5108
|
+
/** The image to match (the `name:` in a kustomization `images:` entry), e.g. `registry/app`. */
|
|
5109
|
+
readonly name: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>]>;
|
|
5110
|
+
/** Optional replacement repo, templated; absent ⇒ keep the original repo. */
|
|
5111
|
+
readonly newNameTemplate: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 500, undefined>]>, undefined>;
|
|
5112
|
+
/** Replacement tag, templated (e.g. `{{branch}}` / `{{sha}}`); mutually exclusive with digest. */
|
|
5113
|
+
readonly newTagTemplate: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 500, undefined>]>, undefined>;
|
|
5114
|
+
/** Replacement digest, templated; alternative to a tag. */
|
|
5115
|
+
readonly digestTemplate: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 500, undefined>]>, undefined>;
|
|
5116
|
+
}, undefined>, v.CheckAction<{
|
|
5117
|
+
name: string;
|
|
5118
|
+
newNameTemplate?: string | undefined;
|
|
5119
|
+
newTagTemplate?: string | undefined;
|
|
5120
|
+
digestTemplate?: string | undefined;
|
|
5121
|
+
}, "an image override must set at least one of newNameTemplate, newTagTemplate, or digestTemplate.">, v.CheckAction<{
|
|
5122
|
+
name: string;
|
|
5123
|
+
newNameTemplate?: string | undefined;
|
|
5124
|
+
newTagTemplate?: string | undefined;
|
|
5125
|
+
digestTemplate?: string | undefined;
|
|
5126
|
+
}, "newTagTemplate and digestTemplate are mutually exclusive on an image override.">]>, undefined>, undefined>;
|
|
5127
|
+
/** Helm releases to install — workspace-shared singletons merged with the service's per-env ones. */
|
|
5128
|
+
readonly helmReleases: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
|
|
5129
|
+
/** Release name. */
|
|
5130
|
+
readonly name: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>]>;
|
|
5131
|
+
/** Chart ref: an OCI ref (`oci://…`) or, with `repo`, a `repo/chart` name. */
|
|
5132
|
+
readonly chart: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>]>;
|
|
5133
|
+
/** Chart repo URL; absent ⇒ `chart` is an OCI ref. */
|
|
5134
|
+
readonly repo: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 2000, undefined>]>, undefined>;
|
|
5135
|
+
/** PINNED chart version, e.g. `1.2.3` / `v1.2.3` (floating tags like `latest`/`^1.0` rejected). */
|
|
5136
|
+
readonly version: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.RegexAction<string, "version must be a pinned semver (e.g. 1.2.3), not a floating tag like latest or ^1.0.">]>;
|
|
5137
|
+
/** Namespace to install into, templated; absent ⇒ the environment namespace. */
|
|
5138
|
+
readonly namespaceTemplate: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 500, undefined>]>, undefined>;
|
|
5139
|
+
/** Inline `--values` overrides. */
|
|
5140
|
+
readonly values: v.OptionalSchema<v.RecordSchema<v.StringSchema<undefined>, v.UnknownSchema, undefined>, undefined>;
|
|
5141
|
+
/** Templated `--set` overrides. */
|
|
5142
|
+
readonly set: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
|
|
5143
|
+
/** Dotted `--set` path, e.g. `config.rateLimit.enabled`. */
|
|
5144
|
+
readonly path: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>]>;
|
|
5145
|
+
/** The value, templated over the provision vars. */
|
|
5146
|
+
readonly valueTemplate: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MaxLengthAction<string, 2000, undefined>]>;
|
|
5147
|
+
}, undefined>, undefined>, undefined>;
|
|
5148
|
+
/** Secret-bundle-backed values folded in at provision time (`--set <path>=<secret>`). */
|
|
5149
|
+
readonly valuesSecretRefs: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
|
|
5150
|
+
readonly path: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>]>;
|
|
5151
|
+
readonly secretRef: v.ObjectSchema<{
|
|
5152
|
+
readonly key: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.RegexAction<string, undefined>, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 64, undefined>]>;
|
|
5153
|
+
}, undefined>;
|
|
4526
5154
|
}, undefined>, undefined>, undefined>;
|
|
4527
|
-
readonly
|
|
4528
|
-
|
|
4529
|
-
|
|
4530
|
-
|
|
4531
|
-
|
|
4532
|
-
|
|
4533
|
-
|
|
4534
|
-
|
|
4535
|
-
|
|
4536
|
-
|
|
4537
|
-
|
|
4538
|
-
|
|
4539
|
-
|
|
4540
|
-
|
|
4541
|
-
|
|
4542
|
-
|
|
4543
|
-
|
|
4544
|
-
|
|
4545
|
-
|
|
4546
|
-
|
|
4547
|
-
|
|
4548
|
-
|
|
4549
|
-
|
|
4550
|
-
|
|
4551
|
-
|
|
4552
|
-
|
|
5155
|
+
readonly scope: v.OptionalSchema<v.PicklistSchema<["per-environment", "shared"], undefined>, undefined>;
|
|
5156
|
+
}, undefined>, undefined>, undefined>;
|
|
5157
|
+
/** Secrets fed in before apply (a `Secret` resource or a `secretGenerator` `.env`). */
|
|
5158
|
+
readonly secretInjections: v.OptionalSchema<v.ArraySchema<v.VariantSchema<"mode", [v.ObjectSchema<{
|
|
5159
|
+
readonly mode: v.LiteralSchema<"secret", undefined>;
|
|
5160
|
+
/** Target Secret name in the namespace. */
|
|
5161
|
+
readonly secretName: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>]>;
|
|
5162
|
+
/** Secret `type`; absent ⇒ `Opaque`. */
|
|
5163
|
+
readonly secretType: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>]>, undefined>;
|
|
5164
|
+
readonly entries: v.ArraySchema<v.SchemaWithPipe<readonly [v.ObjectSchema<{
|
|
5165
|
+
/** Key inside the rendered Secret / `.env`. */
|
|
5166
|
+
readonly key: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.RegexAction<string, undefined>, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 256, undefined>]>;
|
|
5167
|
+
/** Resolve the value from the workspace encrypted bundle by key. */
|
|
5168
|
+
readonly secretRef: v.OptionalSchema<v.ObjectSchema<{
|
|
5169
|
+
readonly key: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.RegexAction<string, undefined>, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 64, undefined>]>;
|
|
5170
|
+
}, undefined>, undefined>;
|
|
5171
|
+
/** OR a non-secret value, templated over the provision vars. */
|
|
5172
|
+
readonly valueTemplate: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MaxLengthAction<string, 2000, undefined>]>, undefined>;
|
|
5173
|
+
}, undefined>, v.CheckAction<{
|
|
5174
|
+
key: string;
|
|
5175
|
+
secretRef?: {
|
|
5176
|
+
key: string;
|
|
5177
|
+
} | undefined;
|
|
5178
|
+
valueTemplate?: string | undefined;
|
|
5179
|
+
}, "a secret entry must set exactly one of secretRef or valueTemplate.">]>, undefined>;
|
|
5180
|
+
}, undefined>, v.ObjectSchema<{
|
|
5181
|
+
readonly mode: v.LiteralSchema<"generatorEnvFile", undefined>;
|
|
5182
|
+
/**
|
|
5183
|
+
* Repo-relative path within the overlay tree to write the `KEY=value` env file the
|
|
5184
|
+
* overlay's `secretGenerator` reads (e.g. `overlays/<env>/<component>/.env`). The
|
|
5185
|
+
* overlay names the Secret.
|
|
5186
|
+
*/
|
|
5187
|
+
readonly envFilePath: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 500, undefined>]>;
|
|
5188
|
+
readonly entries: v.ArraySchema<v.SchemaWithPipe<readonly [v.ObjectSchema<{
|
|
5189
|
+
/** Key inside the rendered Secret / `.env`. */
|
|
5190
|
+
readonly key: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.RegexAction<string, undefined>, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 256, undefined>]>;
|
|
5191
|
+
/** Resolve the value from the workspace encrypted bundle by key. */
|
|
5192
|
+
readonly secretRef: v.OptionalSchema<v.ObjectSchema<{
|
|
5193
|
+
readonly key: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.RegexAction<string, undefined>, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 64, undefined>]>;
|
|
5194
|
+
}, undefined>, undefined>;
|
|
5195
|
+
/** OR a non-secret value, templated over the provision vars. */
|
|
5196
|
+
readonly valueTemplate: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MaxLengthAction<string, 2000, undefined>]>, undefined>;
|
|
5197
|
+
}, undefined>, v.CheckAction<{
|
|
5198
|
+
key: string;
|
|
5199
|
+
secretRef?: {
|
|
5200
|
+
key: string;
|
|
5201
|
+
} | undefined;
|
|
5202
|
+
valueTemplate?: string | undefined;
|
|
5203
|
+
}, "a secret entry must set exactly one of secretRef or valueTemplate.">]>, undefined>;
|
|
5204
|
+
}, undefined>], undefined>, undefined>, undefined>;
|
|
4553
5205
|
}, undefined>;
|
|
4554
5206
|
}, undefined>, v.ObjectSchema<{
|
|
4555
|
-
readonly kind: v.LiteralSchema<"
|
|
4556
|
-
readonly
|
|
5207
|
+
readonly kind: v.LiteralSchema<"eks", undefined>;
|
|
5208
|
+
readonly eks: v.ObjectSchema<{
|
|
5209
|
+
readonly region: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.RegexAction<string, "must be an AWS region slug">, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 64, undefined>]>;
|
|
5210
|
+
readonly clusterName: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 120, undefined>]>;
|
|
5211
|
+
readonly stsHost: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.RegexAction<string, "must be a bare host or host:port">, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 255, undefined>]>, undefined>;
|
|
4557
5212
|
/** Human label for the connection (shown in the UI). */
|
|
4558
5213
|
readonly label: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 120, undefined>]>;
|
|
4559
5214
|
/** kube-apiserver root URL, e.g. `https://my-cluster.example:6443`. */
|
|
@@ -5004,8 +5659,189 @@ export declare const registerEnvironmentProviderSchema: v.ObjectSchema<{
|
|
|
5004
5659
|
readonly providerConfig: v.OptionalSchema<v.RecordSchema<v.StringSchema<undefined>, v.UnknownSchema, undefined>, undefined>;
|
|
5005
5660
|
}, undefined>;
|
|
5006
5661
|
}, undefined>, v.ObjectSchema<{
|
|
5007
|
-
readonly kind: v.LiteralSchema<"kubernetes", undefined>;
|
|
5008
|
-
readonly kubernetes: v.ObjectSchema<{
|
|
5662
|
+
readonly kind: v.LiteralSchema<"kubernetes", undefined>;
|
|
5663
|
+
readonly kubernetes: v.ObjectSchema<{
|
|
5664
|
+
/** Human label for the connection (shown in the UI). */
|
|
5665
|
+
readonly label: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 120, undefined>]>;
|
|
5666
|
+
/** kube-apiserver root URL, e.g. `https://my-cluster.example:6443`. */
|
|
5667
|
+
readonly apiServerUrl: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 2000, undefined>]>;
|
|
5668
|
+
/** PEM CA bundle to verify the apiserver TLS cert (omit only for a publicly-trusted CA). */
|
|
5669
|
+
readonly caCertPem: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
|
|
5670
|
+
/** Skip apiserver TLS verification — strongly discouraged; kind/dev clusters only. */
|
|
5671
|
+
readonly insecureSkipTlsVerify: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
|
|
5672
|
+
/**
|
|
5673
|
+
* Namespace name template for the per-PR environment, e.g. `cf-env-{{pullNumber}}`.
|
|
5674
|
+
* Rendered with the provision vars then sanitized to an RFC1123 label; absent ⇒ a
|
|
5675
|
+
* default derived from the PR number / block id.
|
|
5676
|
+
*/
|
|
5677
|
+
readonly namespaceTemplate: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 200, undefined>]>, undefined>;
|
|
5678
|
+
/** Where the manifests are read from (co-located in the PR repo, or a separate repo). */
|
|
5679
|
+
readonly manifestSource: v.VariantSchema<"type", [v.ObjectSchema<{
|
|
5680
|
+
readonly type: v.LiteralSchema<"colocated", undefined>;
|
|
5681
|
+
/** File or directory path within the PR repo (read at the PR head branch). */
|
|
5682
|
+
readonly path: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 500, undefined>]>;
|
|
5683
|
+
readonly renderer: v.OptionalSchema<v.PicklistSchema<["raw", "kustomize"], undefined>, undefined>;
|
|
5684
|
+
}, undefined>, v.ObjectSchema<{
|
|
5685
|
+
readonly type: v.LiteralSchema<"separate", undefined>;
|
|
5686
|
+
/** `owner/repo` of the manifests repo. */
|
|
5687
|
+
readonly repo: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.RegexAction<string, "must be \"owner/repo\"">]>;
|
|
5688
|
+
/** Branch/tag/sha to read at; absent ⇒ that repo's default branch. */
|
|
5689
|
+
readonly ref: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>]>, undefined>;
|
|
5690
|
+
/** File or directory path within the manifests repo. */
|
|
5691
|
+
readonly path: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 500, undefined>]>;
|
|
5692
|
+
readonly renderer: v.OptionalSchema<v.PicklistSchema<["raw", "kustomize"], undefined>, undefined>;
|
|
5693
|
+
}, undefined>], undefined>;
|
|
5694
|
+
/** How the environment URL is derived once applied. */
|
|
5695
|
+
readonly url: v.VariantSchema<"source", [v.ObjectSchema<{
|
|
5696
|
+
readonly source: v.LiteralSchema<"ingressTemplate", undefined>;
|
|
5697
|
+
/** Host template, e.g. `{{branch}}.preview.example.com`; rendered with the provision vars. */
|
|
5698
|
+
readonly hostTemplate: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 500, undefined>]>;
|
|
5699
|
+
readonly scheme: v.OptionalSchema<v.PicklistSchema<["http", "https"], undefined>, undefined>;
|
|
5700
|
+
}, undefined>, v.ObjectSchema<{
|
|
5701
|
+
readonly source: v.LiteralSchema<"ingressStatus", undefined>;
|
|
5702
|
+
/** Ingress object to read `.status.loadBalancer` from; absent ⇒ the only Ingress applied. */
|
|
5703
|
+
readonly ingressName: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>]>, undefined>;
|
|
5704
|
+
readonly scheme: v.OptionalSchema<v.PicklistSchema<["http", "https"], undefined>, undefined>;
|
|
5705
|
+
}, undefined>, v.ObjectSchema<{
|
|
5706
|
+
readonly source: v.LiteralSchema<"serviceStatus", undefined>;
|
|
5707
|
+
/** Service object to read `.status.loadBalancer` (k3s ServiceLB) from. */
|
|
5708
|
+
readonly serviceName: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>]>;
|
|
5709
|
+
readonly port: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 1, undefined>, v.MaxValueAction<number, 65535, undefined>]>, undefined>;
|
|
5710
|
+
readonly scheme: v.OptionalSchema<v.PicklistSchema<["http", "https"], undefined>, undefined>;
|
|
5711
|
+
}, undefined>, v.ObjectSchema<{
|
|
5712
|
+
readonly source: v.LiteralSchema<"gatewayStatus", undefined>;
|
|
5713
|
+
/** Gateway-API `Gateway` to read `.status.addresses[]` from; absent ⇒ the only one applied. */
|
|
5714
|
+
readonly gatewayName: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>]>, undefined>;
|
|
5715
|
+
readonly scheme: v.OptionalSchema<v.PicklistSchema<["http", "https"], undefined>, undefined>;
|
|
5716
|
+
}, undefined>, v.ObjectSchema<{
|
|
5717
|
+
readonly source: v.LiteralSchema<"httpRouteStatus", undefined>;
|
|
5718
|
+
/** `HTTPRoute` whose `parentRefs` resolve to the Gateway address; absent ⇒ the only one applied. */
|
|
5719
|
+
readonly httpRouteName: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>]>, undefined>;
|
|
5720
|
+
readonly scheme: v.OptionalSchema<v.PicklistSchema<["http", "https"], undefined>, undefined>;
|
|
5721
|
+
}, undefined>], undefined>;
|
|
5722
|
+
/**
|
|
5723
|
+
* Optional image reference made available to the manifests as `{{image}}` (e.g. a
|
|
5724
|
+
* CI-built image tagged by branch/sha). Itself a template over the provision vars.
|
|
5725
|
+
*/
|
|
5726
|
+
readonly imageTemplate: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MaxLengthAction<string, 500, undefined>]>, undefined>;
|
|
5727
|
+
/** Fallback TTL (ms) after which the env is swept + torn down. */
|
|
5728
|
+
readonly defaultTtlMs: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, 60000, undefined>]>, undefined>;
|
|
5729
|
+
/**
|
|
5730
|
+
* How long (seconds) the container deploy adapter waits for each Deployment to roll out
|
|
5731
|
+
* before reporting the env still `provisioning` (the backend keeps polling). Only the
|
|
5732
|
+
* container-backed render path honors it; absent ⇒ the harness default (180s).
|
|
5733
|
+
*/
|
|
5734
|
+
readonly rolloutTimeoutSeconds: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 1, undefined>]>, undefined>;
|
|
5735
|
+
/** Extra labels stamped on the namespace + every applied resource. */
|
|
5736
|
+
readonly labels: v.OptionalSchema<v.RecordSchema<v.StringSchema<undefined>, v.StringSchema<undefined>, undefined>, undefined>;
|
|
5737
|
+
/** Extra annotations stamped on the namespace. */
|
|
5738
|
+
readonly annotations: v.OptionalSchema<v.RecordSchema<v.StringSchema<undefined>, v.StringSchema<undefined>, undefined>, undefined>;
|
|
5739
|
+
/** Structured image overrides (the kustomize `images:` shape), templated over provision vars. */
|
|
5740
|
+
readonly images: v.OptionalSchema<v.ArraySchema<v.SchemaWithPipe<readonly [v.ObjectSchema<{
|
|
5741
|
+
/** The image to match (the `name:` in a kustomization `images:` entry), e.g. `registry/app`. */
|
|
5742
|
+
readonly name: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>]>;
|
|
5743
|
+
/** Optional replacement repo, templated; absent ⇒ keep the original repo. */
|
|
5744
|
+
readonly newNameTemplate: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 500, undefined>]>, undefined>;
|
|
5745
|
+
/** Replacement tag, templated (e.g. `{{branch}}` / `{{sha}}`); mutually exclusive with digest. */
|
|
5746
|
+
readonly newTagTemplate: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 500, undefined>]>, undefined>;
|
|
5747
|
+
/** Replacement digest, templated; alternative to a tag. */
|
|
5748
|
+
readonly digestTemplate: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 500, undefined>]>, undefined>;
|
|
5749
|
+
}, undefined>, v.CheckAction<{
|
|
5750
|
+
name: string;
|
|
5751
|
+
newNameTemplate?: string | undefined;
|
|
5752
|
+
newTagTemplate?: string | undefined;
|
|
5753
|
+
digestTemplate?: string | undefined;
|
|
5754
|
+
}, "an image override must set at least one of newNameTemplate, newTagTemplate, or digestTemplate.">, v.CheckAction<{
|
|
5755
|
+
name: string;
|
|
5756
|
+
newNameTemplate?: string | undefined;
|
|
5757
|
+
newTagTemplate?: string | undefined;
|
|
5758
|
+
digestTemplate?: string | undefined;
|
|
5759
|
+
}, "newTagTemplate and digestTemplate are mutually exclusive on an image override.">]>, undefined>, undefined>;
|
|
5760
|
+
/** Helm releases to install — workspace-shared singletons merged with the service's per-env ones. */
|
|
5761
|
+
readonly helmReleases: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
|
|
5762
|
+
/** Release name. */
|
|
5763
|
+
readonly name: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>]>;
|
|
5764
|
+
/** Chart ref: an OCI ref (`oci://…`) or, with `repo`, a `repo/chart` name. */
|
|
5765
|
+
readonly chart: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>]>;
|
|
5766
|
+
/** Chart repo URL; absent ⇒ `chart` is an OCI ref. */
|
|
5767
|
+
readonly repo: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 2000, undefined>]>, undefined>;
|
|
5768
|
+
/** PINNED chart version, e.g. `1.2.3` / `v1.2.3` (floating tags like `latest`/`^1.0` rejected). */
|
|
5769
|
+
readonly version: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.RegexAction<string, "version must be a pinned semver (e.g. 1.2.3), not a floating tag like latest or ^1.0.">]>;
|
|
5770
|
+
/** Namespace to install into, templated; absent ⇒ the environment namespace. */
|
|
5771
|
+
readonly namespaceTemplate: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 500, undefined>]>, undefined>;
|
|
5772
|
+
/** Inline `--values` overrides. */
|
|
5773
|
+
readonly values: v.OptionalSchema<v.RecordSchema<v.StringSchema<undefined>, v.UnknownSchema, undefined>, undefined>;
|
|
5774
|
+
/** Templated `--set` overrides. */
|
|
5775
|
+
readonly set: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
|
|
5776
|
+
/** Dotted `--set` path, e.g. `config.rateLimit.enabled`. */
|
|
5777
|
+
readonly path: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>]>;
|
|
5778
|
+
/** The value, templated over the provision vars. */
|
|
5779
|
+
readonly valueTemplate: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MaxLengthAction<string, 2000, undefined>]>;
|
|
5780
|
+
}, undefined>, undefined>, undefined>;
|
|
5781
|
+
/** Secret-bundle-backed values folded in at provision time (`--set <path>=<secret>`). */
|
|
5782
|
+
readonly valuesSecretRefs: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
|
|
5783
|
+
readonly path: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>]>;
|
|
5784
|
+
readonly secretRef: v.ObjectSchema<{
|
|
5785
|
+
readonly key: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.RegexAction<string, undefined>, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 64, undefined>]>;
|
|
5786
|
+
}, undefined>;
|
|
5787
|
+
}, undefined>, undefined>, undefined>;
|
|
5788
|
+
readonly scope: v.OptionalSchema<v.PicklistSchema<["per-environment", "shared"], undefined>, undefined>;
|
|
5789
|
+
}, undefined>, undefined>, undefined>;
|
|
5790
|
+
/** Secrets fed in before apply (a `Secret` resource or a `secretGenerator` `.env`). */
|
|
5791
|
+
readonly secretInjections: v.OptionalSchema<v.ArraySchema<v.VariantSchema<"mode", [v.ObjectSchema<{
|
|
5792
|
+
readonly mode: v.LiteralSchema<"secret", undefined>;
|
|
5793
|
+
/** Target Secret name in the namespace. */
|
|
5794
|
+
readonly secretName: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>]>;
|
|
5795
|
+
/** Secret `type`; absent ⇒ `Opaque`. */
|
|
5796
|
+
readonly secretType: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>]>, undefined>;
|
|
5797
|
+
readonly entries: v.ArraySchema<v.SchemaWithPipe<readonly [v.ObjectSchema<{
|
|
5798
|
+
/** Key inside the rendered Secret / `.env`. */
|
|
5799
|
+
readonly key: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.RegexAction<string, undefined>, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 256, undefined>]>;
|
|
5800
|
+
/** Resolve the value from the workspace encrypted bundle by key. */
|
|
5801
|
+
readonly secretRef: v.OptionalSchema<v.ObjectSchema<{
|
|
5802
|
+
readonly key: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.RegexAction<string, undefined>, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 64, undefined>]>;
|
|
5803
|
+
}, undefined>, undefined>;
|
|
5804
|
+
/** OR a non-secret value, templated over the provision vars. */
|
|
5805
|
+
readonly valueTemplate: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MaxLengthAction<string, 2000, undefined>]>, undefined>;
|
|
5806
|
+
}, undefined>, v.CheckAction<{
|
|
5807
|
+
key: string;
|
|
5808
|
+
secretRef?: {
|
|
5809
|
+
key: string;
|
|
5810
|
+
} | undefined;
|
|
5811
|
+
valueTemplate?: string | undefined;
|
|
5812
|
+
}, "a secret entry must set exactly one of secretRef or valueTemplate.">]>, undefined>;
|
|
5813
|
+
}, undefined>, v.ObjectSchema<{
|
|
5814
|
+
readonly mode: v.LiteralSchema<"generatorEnvFile", undefined>;
|
|
5815
|
+
/**
|
|
5816
|
+
* Repo-relative path within the overlay tree to write the `KEY=value` env file the
|
|
5817
|
+
* overlay's `secretGenerator` reads (e.g. `overlays/<env>/<component>/.env`). The
|
|
5818
|
+
* overlay names the Secret.
|
|
5819
|
+
*/
|
|
5820
|
+
readonly envFilePath: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 500, undefined>]>;
|
|
5821
|
+
readonly entries: v.ArraySchema<v.SchemaWithPipe<readonly [v.ObjectSchema<{
|
|
5822
|
+
/** Key inside the rendered Secret / `.env`. */
|
|
5823
|
+
readonly key: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.RegexAction<string, undefined>, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 256, undefined>]>;
|
|
5824
|
+
/** Resolve the value from the workspace encrypted bundle by key. */
|
|
5825
|
+
readonly secretRef: v.OptionalSchema<v.ObjectSchema<{
|
|
5826
|
+
readonly key: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.RegexAction<string, undefined>, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 64, undefined>]>;
|
|
5827
|
+
}, undefined>, undefined>;
|
|
5828
|
+
/** OR a non-secret value, templated over the provision vars. */
|
|
5829
|
+
readonly valueTemplate: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MaxLengthAction<string, 2000, undefined>]>, undefined>;
|
|
5830
|
+
}, undefined>, v.CheckAction<{
|
|
5831
|
+
key: string;
|
|
5832
|
+
secretRef?: {
|
|
5833
|
+
key: string;
|
|
5834
|
+
} | undefined;
|
|
5835
|
+
valueTemplate?: string | undefined;
|
|
5836
|
+
}, "a secret entry must set exactly one of secretRef or valueTemplate.">]>, undefined>;
|
|
5837
|
+
}, undefined>], undefined>, undefined>, undefined>;
|
|
5838
|
+
}, undefined>;
|
|
5839
|
+
}, undefined>, v.ObjectSchema<{
|
|
5840
|
+
readonly kind: v.LiteralSchema<"eks", undefined>;
|
|
5841
|
+
readonly eks: v.ObjectSchema<{
|
|
5842
|
+
readonly region: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.RegexAction<string, "must be an AWS region slug">, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 64, undefined>]>;
|
|
5843
|
+
readonly clusterName: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 120, undefined>]>;
|
|
5844
|
+
readonly stsHost: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.RegexAction<string, "must be a bare host or host:port">, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 255, undefined>]>, undefined>;
|
|
5009
5845
|
/** Human label for the connection (shown in the UI). */
|
|
5010
5846
|
readonly label: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 120, undefined>]>;
|
|
5011
5847
|
/** kube-apiserver root URL, e.g. `https://my-cluster.example:6443`. */
|
|
@@ -5635,6 +6471,187 @@ export declare const testEnvironmentConnectionSchema: v.ObjectSchema<{
|
|
|
5635
6471
|
}, "a secret entry must set exactly one of secretRef or valueTemplate.">]>, undefined>;
|
|
5636
6472
|
}, undefined>], undefined>, undefined>, undefined>;
|
|
5637
6473
|
}, undefined>;
|
|
6474
|
+
}, undefined>, v.ObjectSchema<{
|
|
6475
|
+
readonly kind: v.LiteralSchema<"eks", undefined>;
|
|
6476
|
+
readonly eks: v.ObjectSchema<{
|
|
6477
|
+
readonly region: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.RegexAction<string, "must be an AWS region slug">, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 64, undefined>]>;
|
|
6478
|
+
readonly clusterName: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 120, undefined>]>;
|
|
6479
|
+
readonly stsHost: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.RegexAction<string, "must be a bare host or host:port">, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 255, undefined>]>, undefined>;
|
|
6480
|
+
/** Human label for the connection (shown in the UI). */
|
|
6481
|
+
readonly label: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 120, undefined>]>;
|
|
6482
|
+
/** kube-apiserver root URL, e.g. `https://my-cluster.example:6443`. */
|
|
6483
|
+
readonly apiServerUrl: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 2000, undefined>]>;
|
|
6484
|
+
/** PEM CA bundle to verify the apiserver TLS cert (omit only for a publicly-trusted CA). */
|
|
6485
|
+
readonly caCertPem: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
|
|
6486
|
+
/** Skip apiserver TLS verification — strongly discouraged; kind/dev clusters only. */
|
|
6487
|
+
readonly insecureSkipTlsVerify: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
|
|
6488
|
+
/**
|
|
6489
|
+
* Namespace name template for the per-PR environment, e.g. `cf-env-{{pullNumber}}`.
|
|
6490
|
+
* Rendered with the provision vars then sanitized to an RFC1123 label; absent ⇒ a
|
|
6491
|
+
* default derived from the PR number / block id.
|
|
6492
|
+
*/
|
|
6493
|
+
readonly namespaceTemplate: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 200, undefined>]>, undefined>;
|
|
6494
|
+
/** Where the manifests are read from (co-located in the PR repo, or a separate repo). */
|
|
6495
|
+
readonly manifestSource: v.VariantSchema<"type", [v.ObjectSchema<{
|
|
6496
|
+
readonly type: v.LiteralSchema<"colocated", undefined>;
|
|
6497
|
+
/** File or directory path within the PR repo (read at the PR head branch). */
|
|
6498
|
+
readonly path: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 500, undefined>]>;
|
|
6499
|
+
readonly renderer: v.OptionalSchema<v.PicklistSchema<["raw", "kustomize"], undefined>, undefined>;
|
|
6500
|
+
}, undefined>, v.ObjectSchema<{
|
|
6501
|
+
readonly type: v.LiteralSchema<"separate", undefined>;
|
|
6502
|
+
/** `owner/repo` of the manifests repo. */
|
|
6503
|
+
readonly repo: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.RegexAction<string, "must be \"owner/repo\"">]>;
|
|
6504
|
+
/** Branch/tag/sha to read at; absent ⇒ that repo's default branch. */
|
|
6505
|
+
readonly ref: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>]>, undefined>;
|
|
6506
|
+
/** File or directory path within the manifests repo. */
|
|
6507
|
+
readonly path: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 500, undefined>]>;
|
|
6508
|
+
readonly renderer: v.OptionalSchema<v.PicklistSchema<["raw", "kustomize"], undefined>, undefined>;
|
|
6509
|
+
}, undefined>], undefined>;
|
|
6510
|
+
/** How the environment URL is derived once applied. */
|
|
6511
|
+
readonly url: v.VariantSchema<"source", [v.ObjectSchema<{
|
|
6512
|
+
readonly source: v.LiteralSchema<"ingressTemplate", undefined>;
|
|
6513
|
+
/** Host template, e.g. `{{branch}}.preview.example.com`; rendered with the provision vars. */
|
|
6514
|
+
readonly hostTemplate: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 500, undefined>]>;
|
|
6515
|
+
readonly scheme: v.OptionalSchema<v.PicklistSchema<["http", "https"], undefined>, undefined>;
|
|
6516
|
+
}, undefined>, v.ObjectSchema<{
|
|
6517
|
+
readonly source: v.LiteralSchema<"ingressStatus", undefined>;
|
|
6518
|
+
/** Ingress object to read `.status.loadBalancer` from; absent ⇒ the only Ingress applied. */
|
|
6519
|
+
readonly ingressName: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>]>, undefined>;
|
|
6520
|
+
readonly scheme: v.OptionalSchema<v.PicklistSchema<["http", "https"], undefined>, undefined>;
|
|
6521
|
+
}, undefined>, v.ObjectSchema<{
|
|
6522
|
+
readonly source: v.LiteralSchema<"serviceStatus", undefined>;
|
|
6523
|
+
/** Service object to read `.status.loadBalancer` (k3s ServiceLB) from. */
|
|
6524
|
+
readonly serviceName: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>]>;
|
|
6525
|
+
readonly port: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 1, undefined>, v.MaxValueAction<number, 65535, undefined>]>, undefined>;
|
|
6526
|
+
readonly scheme: v.OptionalSchema<v.PicklistSchema<["http", "https"], undefined>, undefined>;
|
|
6527
|
+
}, undefined>, v.ObjectSchema<{
|
|
6528
|
+
readonly source: v.LiteralSchema<"gatewayStatus", undefined>;
|
|
6529
|
+
/** Gateway-API `Gateway` to read `.status.addresses[]` from; absent ⇒ the only one applied. */
|
|
6530
|
+
readonly gatewayName: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>]>, undefined>;
|
|
6531
|
+
readonly scheme: v.OptionalSchema<v.PicklistSchema<["http", "https"], undefined>, undefined>;
|
|
6532
|
+
}, undefined>, v.ObjectSchema<{
|
|
6533
|
+
readonly source: v.LiteralSchema<"httpRouteStatus", undefined>;
|
|
6534
|
+
/** `HTTPRoute` whose `parentRefs` resolve to the Gateway address; absent ⇒ the only one applied. */
|
|
6535
|
+
readonly httpRouteName: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>]>, undefined>;
|
|
6536
|
+
readonly scheme: v.OptionalSchema<v.PicklistSchema<["http", "https"], undefined>, undefined>;
|
|
6537
|
+
}, undefined>], undefined>;
|
|
6538
|
+
/**
|
|
6539
|
+
* Optional image reference made available to the manifests as `{{image}}` (e.g. a
|
|
6540
|
+
* CI-built image tagged by branch/sha). Itself a template over the provision vars.
|
|
6541
|
+
*/
|
|
6542
|
+
readonly imageTemplate: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MaxLengthAction<string, 500, undefined>]>, undefined>;
|
|
6543
|
+
/** Fallback TTL (ms) after which the env is swept + torn down. */
|
|
6544
|
+
readonly defaultTtlMs: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, 60000, undefined>]>, undefined>;
|
|
6545
|
+
/**
|
|
6546
|
+
* How long (seconds) the container deploy adapter waits for each Deployment to roll out
|
|
6547
|
+
* before reporting the env still `provisioning` (the backend keeps polling). Only the
|
|
6548
|
+
* container-backed render path honors it; absent ⇒ the harness default (180s).
|
|
6549
|
+
*/
|
|
6550
|
+
readonly rolloutTimeoutSeconds: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 1, undefined>]>, undefined>;
|
|
6551
|
+
/** Extra labels stamped on the namespace + every applied resource. */
|
|
6552
|
+
readonly labels: v.OptionalSchema<v.RecordSchema<v.StringSchema<undefined>, v.StringSchema<undefined>, undefined>, undefined>;
|
|
6553
|
+
/** Extra annotations stamped on the namespace. */
|
|
6554
|
+
readonly annotations: v.OptionalSchema<v.RecordSchema<v.StringSchema<undefined>, v.StringSchema<undefined>, undefined>, undefined>;
|
|
6555
|
+
/** Structured image overrides (the kustomize `images:` shape), templated over provision vars. */
|
|
6556
|
+
readonly images: v.OptionalSchema<v.ArraySchema<v.SchemaWithPipe<readonly [v.ObjectSchema<{
|
|
6557
|
+
/** The image to match (the `name:` in a kustomization `images:` entry), e.g. `registry/app`. */
|
|
6558
|
+
readonly name: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>]>;
|
|
6559
|
+
/** Optional replacement repo, templated; absent ⇒ keep the original repo. */
|
|
6560
|
+
readonly newNameTemplate: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 500, undefined>]>, undefined>;
|
|
6561
|
+
/** Replacement tag, templated (e.g. `{{branch}}` / `{{sha}}`); mutually exclusive with digest. */
|
|
6562
|
+
readonly newTagTemplate: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 500, undefined>]>, undefined>;
|
|
6563
|
+
/** Replacement digest, templated; alternative to a tag. */
|
|
6564
|
+
readonly digestTemplate: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 500, undefined>]>, undefined>;
|
|
6565
|
+
}, undefined>, v.CheckAction<{
|
|
6566
|
+
name: string;
|
|
6567
|
+
newNameTemplate?: string | undefined;
|
|
6568
|
+
newTagTemplate?: string | undefined;
|
|
6569
|
+
digestTemplate?: string | undefined;
|
|
6570
|
+
}, "an image override must set at least one of newNameTemplate, newTagTemplate, or digestTemplate.">, v.CheckAction<{
|
|
6571
|
+
name: string;
|
|
6572
|
+
newNameTemplate?: string | undefined;
|
|
6573
|
+
newTagTemplate?: string | undefined;
|
|
6574
|
+
digestTemplate?: string | undefined;
|
|
6575
|
+
}, "newTagTemplate and digestTemplate are mutually exclusive on an image override.">]>, undefined>, undefined>;
|
|
6576
|
+
/** Helm releases to install — workspace-shared singletons merged with the service's per-env ones. */
|
|
6577
|
+
readonly helmReleases: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
|
|
6578
|
+
/** Release name. */
|
|
6579
|
+
readonly name: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>]>;
|
|
6580
|
+
/** Chart ref: an OCI ref (`oci://…`) or, with `repo`, a `repo/chart` name. */
|
|
6581
|
+
readonly chart: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>]>;
|
|
6582
|
+
/** Chart repo URL; absent ⇒ `chart` is an OCI ref. */
|
|
6583
|
+
readonly repo: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 2000, undefined>]>, undefined>;
|
|
6584
|
+
/** PINNED chart version, e.g. `1.2.3` / `v1.2.3` (floating tags like `latest`/`^1.0` rejected). */
|
|
6585
|
+
readonly version: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.RegexAction<string, "version must be a pinned semver (e.g. 1.2.3), not a floating tag like latest or ^1.0.">]>;
|
|
6586
|
+
/** Namespace to install into, templated; absent ⇒ the environment namespace. */
|
|
6587
|
+
readonly namespaceTemplate: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 500, undefined>]>, undefined>;
|
|
6588
|
+
/** Inline `--values` overrides. */
|
|
6589
|
+
readonly values: v.OptionalSchema<v.RecordSchema<v.StringSchema<undefined>, v.UnknownSchema, undefined>, undefined>;
|
|
6590
|
+
/** Templated `--set` overrides. */
|
|
6591
|
+
readonly set: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
|
|
6592
|
+
/** Dotted `--set` path, e.g. `config.rateLimit.enabled`. */
|
|
6593
|
+
readonly path: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>]>;
|
|
6594
|
+
/** The value, templated over the provision vars. */
|
|
6595
|
+
readonly valueTemplate: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MaxLengthAction<string, 2000, undefined>]>;
|
|
6596
|
+
}, undefined>, undefined>, undefined>;
|
|
6597
|
+
/** Secret-bundle-backed values folded in at provision time (`--set <path>=<secret>`). */
|
|
6598
|
+
readonly valuesSecretRefs: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
|
|
6599
|
+
readonly path: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>]>;
|
|
6600
|
+
readonly secretRef: v.ObjectSchema<{
|
|
6601
|
+
readonly key: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.RegexAction<string, undefined>, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 64, undefined>]>;
|
|
6602
|
+
}, undefined>;
|
|
6603
|
+
}, undefined>, undefined>, undefined>;
|
|
6604
|
+
readonly scope: v.OptionalSchema<v.PicklistSchema<["per-environment", "shared"], undefined>, undefined>;
|
|
6605
|
+
}, undefined>, undefined>, undefined>;
|
|
6606
|
+
/** Secrets fed in before apply (a `Secret` resource or a `secretGenerator` `.env`). */
|
|
6607
|
+
readonly secretInjections: v.OptionalSchema<v.ArraySchema<v.VariantSchema<"mode", [v.ObjectSchema<{
|
|
6608
|
+
readonly mode: v.LiteralSchema<"secret", undefined>;
|
|
6609
|
+
/** Target Secret name in the namespace. */
|
|
6610
|
+
readonly secretName: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>]>;
|
|
6611
|
+
/** Secret `type`; absent ⇒ `Opaque`. */
|
|
6612
|
+
readonly secretType: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>]>, undefined>;
|
|
6613
|
+
readonly entries: v.ArraySchema<v.SchemaWithPipe<readonly [v.ObjectSchema<{
|
|
6614
|
+
/** Key inside the rendered Secret / `.env`. */
|
|
6615
|
+
readonly key: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.RegexAction<string, undefined>, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 256, undefined>]>;
|
|
6616
|
+
/** Resolve the value from the workspace encrypted bundle by key. */
|
|
6617
|
+
readonly secretRef: v.OptionalSchema<v.ObjectSchema<{
|
|
6618
|
+
readonly key: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.RegexAction<string, undefined>, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 64, undefined>]>;
|
|
6619
|
+
}, undefined>, undefined>;
|
|
6620
|
+
/** OR a non-secret value, templated over the provision vars. */
|
|
6621
|
+
readonly valueTemplate: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MaxLengthAction<string, 2000, undefined>]>, undefined>;
|
|
6622
|
+
}, undefined>, v.CheckAction<{
|
|
6623
|
+
key: string;
|
|
6624
|
+
secretRef?: {
|
|
6625
|
+
key: string;
|
|
6626
|
+
} | undefined;
|
|
6627
|
+
valueTemplate?: string | undefined;
|
|
6628
|
+
}, "a secret entry must set exactly one of secretRef or valueTemplate.">]>, undefined>;
|
|
6629
|
+
}, undefined>, v.ObjectSchema<{
|
|
6630
|
+
readonly mode: v.LiteralSchema<"generatorEnvFile", undefined>;
|
|
6631
|
+
/**
|
|
6632
|
+
* Repo-relative path within the overlay tree to write the `KEY=value` env file the
|
|
6633
|
+
* overlay's `secretGenerator` reads (e.g. `overlays/<env>/<component>/.env`). The
|
|
6634
|
+
* overlay names the Secret.
|
|
6635
|
+
*/
|
|
6636
|
+
readonly envFilePath: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 500, undefined>]>;
|
|
6637
|
+
readonly entries: v.ArraySchema<v.SchemaWithPipe<readonly [v.ObjectSchema<{
|
|
6638
|
+
/** Key inside the rendered Secret / `.env`. */
|
|
6639
|
+
readonly key: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.RegexAction<string, undefined>, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 256, undefined>]>;
|
|
6640
|
+
/** Resolve the value from the workspace encrypted bundle by key. */
|
|
6641
|
+
readonly secretRef: v.OptionalSchema<v.ObjectSchema<{
|
|
6642
|
+
readonly key: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.RegexAction<string, undefined>, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 64, undefined>]>;
|
|
6643
|
+
}, undefined>, undefined>;
|
|
6644
|
+
/** OR a non-secret value, templated over the provision vars. */
|
|
6645
|
+
readonly valueTemplate: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MaxLengthAction<string, 2000, undefined>]>, undefined>;
|
|
6646
|
+
}, undefined>, v.CheckAction<{
|
|
6647
|
+
key: string;
|
|
6648
|
+
secretRef?: {
|
|
6649
|
+
key: string;
|
|
6650
|
+
} | undefined;
|
|
6651
|
+
valueTemplate?: string | undefined;
|
|
6652
|
+
}, "a secret entry must set exactly one of secretRef or valueTemplate.">]>, undefined>;
|
|
6653
|
+
}, undefined>], undefined>, undefined>, undefined>;
|
|
6654
|
+
}, undefined>;
|
|
5638
6655
|
}, undefined>, v.ObjectSchema<{
|
|
5639
6656
|
readonly kind: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 64, undefined>, v.RegexAction<string, "must be a lower-kebab slug">, v.CheckAction<string, "reserved backend kind">]>;
|
|
5640
6657
|
readonly manifest: v.ObjectSchema<{
|
|
@@ -5836,7 +6853,13 @@ export declare const provisioningDetectionConfidenceSchema: v.PicklistSchema<["h
|
|
|
5836
6853
|
export type ProvisioningDetectionConfidence = v.InferOutput<typeof provisioningDetectionConfidenceSchema>;
|
|
5837
6854
|
/** One inferred aspect of the recommendation, with its confidence + a human-readable rationale. */
|
|
5838
6855
|
export declare const provisioningDetectionNoteSchema: v.ObjectSchema<{
|
|
5839
|
-
/**
|
|
6856
|
+
/**
|
|
6857
|
+
* Which field this note explains: `provisionType` | `renderer` | `url` | `namespace` |
|
|
6858
|
+
* `secretInjections` | `images` | `overlay` | `helmReleases` | `compose` | `serviceDir` |
|
|
6859
|
+
* `manifestRoot` | `composeService` | `composeBuild` | `composeFiles` | `composeProfiles` |
|
|
6860
|
+
* `envFiles` | `externalNetworks` | `sharedStackRefs` | `setupSteps` | `healthGate` |
|
|
6861
|
+
* `seedDump` | `repoCli`.
|
|
6862
|
+
*/
|
|
5840
6863
|
readonly field: v.StringSchema<undefined>;
|
|
5841
6864
|
readonly confidence: v.PicklistSchema<["high", "low"], undefined>;
|
|
5842
6865
|
/** Rationale for the SPA to surface next to the field (e.g. "kustomization.yaml present ⇒ kustomize"). */
|
|
@@ -5905,19 +6928,83 @@ export declare const provisioningManifestRootCandidateSchema: v.ObjectSchema<{
|
|
|
5905
6928
|
readonly recommended: v.BooleanSchema<undefined>;
|
|
5906
6929
|
}, undefined>;
|
|
5907
6930
|
export type ProvisioningManifestRootCandidate = v.InferOutput<typeof provisioningManifestRootCandidateSchema>;
|
|
6931
|
+
/**
|
|
6932
|
+
* A candidate Docker Compose file for `-f` layering (slice 2 detection). The base file(s) are
|
|
6933
|
+
* pre-selected into `provisioning.recipe.composeFiles`; OS-specific overrides
|
|
6934
|
+
* (`dev.wsl.override.yml`, `dev.mac.override.yml`) are surfaced here — annotated with `os` and
|
|
6935
|
+
* NOT auto-layered — so the wizard binds the one matching the operator's machine.
|
|
6936
|
+
*/
|
|
6937
|
+
export declare const provisioningComposeFileCandidateSchema: v.ObjectSchema<{
|
|
6938
|
+
/** Repo-relative compose file path (a value `recipe.composeFiles` would take). */
|
|
6939
|
+
readonly path: v.StringSchema<undefined>;
|
|
6940
|
+
/** The file's base name (e.g. `dev.wsl.override.yml`). */
|
|
6941
|
+
readonly name: v.StringSchema<undefined>;
|
|
6942
|
+
/** For an OS-specific override, which OS it targets; absent ⇒ OS-neutral (a base layer). */
|
|
6943
|
+
readonly os: v.OptionalSchema<v.PicklistSchema<["wsl", "mac", "linux", "windows"], undefined>, undefined>;
|
|
6944
|
+
/** True for a base layer pre-selected into `composeFiles`; an OS override is opt-in. */
|
|
6945
|
+
readonly recommended: v.BooleanSchema<undefined>;
|
|
6946
|
+
}, undefined>;
|
|
6947
|
+
export type ProvisioningComposeFileCandidate = v.InferOutput<typeof provisioningComposeFileCandidateSchema>;
|
|
6948
|
+
/**
|
|
6949
|
+
* A `COMPOSE_PROFILES` label the compose files declare (slice 2 detection). Surfaced
|
|
6950
|
+
* default-OFF — an optional service group the user opts into; `recommended` is set only for a
|
|
6951
|
+
* profile the detector deems part of the base bring-up (rare — most profiles are optional).
|
|
6952
|
+
*/
|
|
6953
|
+
export declare const provisioningProfileCandidateSchema: v.ObjectSchema<{
|
|
6954
|
+
/** The `profiles:` label (e.g. `peer`, `backends`). */
|
|
6955
|
+
readonly profile: v.StringSchema<undefined>;
|
|
6956
|
+
/** Whether to pre-enable it (default false — profiles are opt-in). */
|
|
6957
|
+
readonly recommended: v.BooleanSchema<undefined>;
|
|
6958
|
+
}, undefined>;
|
|
6959
|
+
export type ProvisioningProfileCandidate = v.InferOutput<typeof provisioningProfileCandidateSchema>;
|
|
6960
|
+
/**
|
|
6961
|
+
* A `.sql` dump found under a seed-ish directory (`deployment/`, `seed/`, `db/`,
|
|
6962
|
+
* `docker-entrypoint-initdb.d/`) — a LOW-confidence candidate the wizard confirms, turning it
|
|
6963
|
+
* into a `compose-exec` seed-import step (piping the dump via `stdinFile`). Never auto-applied.
|
|
6964
|
+
*/
|
|
6965
|
+
export declare const provisioningSeedDumpCandidateSchema: v.ObjectSchema<{
|
|
6966
|
+
/** Repo-relative path of the SQL dump. */
|
|
6967
|
+
readonly path: v.StringSchema<undefined>;
|
|
6968
|
+
/** The dump file's base name. */
|
|
6969
|
+
readonly name: v.StringSchema<undefined>;
|
|
6970
|
+
/** The heuristic top pick among several dumps. */
|
|
6971
|
+
readonly recommended: v.BooleanSchema<undefined>;
|
|
6972
|
+
}, undefined>;
|
|
6973
|
+
export type ProvisioningSeedDumpCandidate = v.InferOutput<typeof provisioningSeedDumpCandidateSchema>;
|
|
6974
|
+
/**
|
|
6975
|
+
* A REPORT-ONLY hint that the repo carries its OWN imperative bring-up — a Makefile, a
|
|
6976
|
+
* `bin/*console*` repo CLI, a justfile/Taskfile with setup-looking targets. Detection never
|
|
6977
|
+
* parses shell; it only flags the file so the wizard can suggest running the environment
|
|
6978
|
+
* ANALYST (slice 8) to translate that bring-up into recipe steps. Its presence sets the
|
|
6979
|
+
* "consider deep analysis" nudge.
|
|
6980
|
+
*/
|
|
6981
|
+
export declare const provisioningRepoCliHintSchema: v.ObjectSchema<{
|
|
6982
|
+
/** Repo-relative path of the CLI / build file that triggered the hint. */
|
|
6983
|
+
readonly path: v.StringSchema<undefined>;
|
|
6984
|
+
/** What kind of imperative entry point it is. */
|
|
6985
|
+
readonly kind: v.PicklistSchema<["makefile", "repo-cli", "justfile", "taskfile"], undefined>;
|
|
6986
|
+
}, undefined>;
|
|
6987
|
+
export type ProvisioningRepoCliHint = v.InferOutput<typeof provisioningRepoCliHintSchema>;
|
|
5908
6988
|
/**
|
|
5909
6989
|
* A non-binding provisioning recommendation detected from a service's repo. `provisioning`
|
|
5910
|
-
* carries the service-owned config to prefill (the "what + where"
|
|
5911
|
-
*
|
|
5912
|
-
*
|
|
5913
|
-
* the
|
|
6990
|
+
* carries the service-owned config to prefill (the "what + where", now including a
|
|
6991
|
+
* `docker-compose` service's {@link stackRecipeSchema | recipe} — layered compose files,
|
|
6992
|
+
* profiles, env-file pairs, external networks); `urlSource`/`namespace` are engine-level
|
|
6993
|
+
* suggestions the workspace handler owns (the detector can READ them from the manifests but
|
|
6994
|
+
* they aren't stored on the service); the candidate arrays + `notes` drive the confirm UI.
|
|
6995
|
+
* `detected: false` ⇒ nothing inferable (`provisioning.type` is `infraless`).
|
|
5914
6996
|
*
|
|
5915
6997
|
* The candidate arrays let the user CHOOSE instead of accepting a silent auto-pick:
|
|
5916
6998
|
* `overlayCandidates` (which overlay within a kustomize root), `manifestRootCandidates` (which
|
|
5917
|
-
* k8s root when several resolve), `serviceDirCandidates` (which root-shared monorepo slice),
|
|
5918
|
-
* `composeServiceCandidates` (which compose service)
|
|
5919
|
-
*
|
|
5920
|
-
*
|
|
6999
|
+
* k8s root when several resolve), `serviceDirCandidates` (which root-shared monorepo slice),
|
|
7000
|
+
* `composeServiceCandidates` (which compose service), `composeFileCandidates` (which OS override
|
|
7001
|
+
* to layer), `profileCandidates` (which optional profiles to enable), and `seedDumpCandidates`
|
|
7002
|
+
* (which SQL dump to seed from). `repoCliHint` flags a repo with its own imperative bring-up
|
|
7003
|
+
* (a nudge toward the analyst). Each note's `field` is one of `provisionType` | `renderer` |
|
|
7004
|
+
* `url` | `namespace` | `secretInjections` | `images` | `overlay` | `helmReleases` | `compose` |
|
|
7005
|
+
* `serviceDir` | `manifestRoot` | `composeService` | `composeBuild` | `composeFiles` |
|
|
7006
|
+
* `composeProfiles` | `envFiles` | `externalNetworks` | `sharedStackRefs` | `setupSteps` |
|
|
7007
|
+
* `healthGate` | `seedDump` | `repoCli`.
|
|
5921
7008
|
*/
|
|
5922
7009
|
export declare const provisioningRecommendationSchema: v.ObjectSchema<{
|
|
5923
7010
|
readonly detected: v.BooleanSchema<undefined>;
|
|
@@ -5951,6 +7038,113 @@ export declare const provisioningRecommendationSchema: v.ObjectSchema<{
|
|
|
5951
7038
|
* contexts, in-checkout bind mounts, and relative `env_file`s resolve.
|
|
5952
7039
|
*/
|
|
5953
7040
|
readonly composeBuild: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
|
|
7041
|
+
/**
|
|
7042
|
+
* `docker-compose`: the declarative STACK RECIPE for a complex multi-step bring-up —
|
|
7043
|
+
* multi-`-f` layering, profiles, env-file materialization, external networks / shared-stack
|
|
7044
|
+
* refs, ordered setup/teardown steps + a terminal health gate. Absent ⇒ the simple
|
|
7045
|
+
* single-file `composePath` + `up --wait` path (when set, `recipe.composeFiles` supersedes
|
|
7046
|
+
* `composePath`). See {@link stackRecipeSchema}.
|
|
7047
|
+
*/
|
|
7048
|
+
readonly recipe: v.OptionalSchema<v.ObjectSchema<{
|
|
7049
|
+
readonly composeFiles: v.OptionalSchema<v.SchemaWithPipe<readonly [v.ArraySchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 500, undefined>]>, undefined>, v.MinLengthAction<string[], 1, undefined>]>, undefined>;
|
|
7050
|
+
readonly composeProfiles: v.OptionalSchema<v.ArraySchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 200, undefined>]>, undefined>, undefined>;
|
|
7051
|
+
readonly envFiles: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
|
|
7052
|
+
readonly template: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 500, undefined>]>;
|
|
7053
|
+
readonly target: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 500, undefined>]>;
|
|
7054
|
+
}, undefined>, undefined>, undefined>;
|
|
7055
|
+
readonly externalNetworks: v.OptionalSchema<v.ArraySchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 200, undefined>]>, undefined>, undefined>;
|
|
7056
|
+
readonly sharedStackRefs: v.OptionalSchema<v.ArraySchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 200, undefined>]>, undefined>, undefined>;
|
|
7057
|
+
readonly setupSteps: v.OptionalSchema<v.ArraySchema<v.VariantSchema<"kind", [v.ObjectSchema<{
|
|
7058
|
+
readonly kind: v.LiteralSchema<"compose-exec", undefined>;
|
|
7059
|
+
readonly name: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 120, undefined>]>;
|
|
7060
|
+
readonly service: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 200, undefined>]>;
|
|
7061
|
+
readonly command: v.SchemaWithPipe<readonly [v.ArraySchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>]>, undefined>, v.MinLengthAction<string[], 1, undefined>]>;
|
|
7062
|
+
readonly stdinFile: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 500, undefined>]>, undefined>;
|
|
7063
|
+
readonly user: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 200, undefined>]>, undefined>;
|
|
7064
|
+
readonly workdir: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 500, undefined>]>, undefined>;
|
|
7065
|
+
readonly timeoutMs: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 1000, undefined>, v.MaxValueAction<number, 3600000, undefined>]>, undefined>;
|
|
7066
|
+
}, undefined>, v.ObjectSchema<{
|
|
7067
|
+
readonly kind: v.LiteralSchema<"copy-file", undefined>;
|
|
7068
|
+
readonly name: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 120, undefined>]>;
|
|
7069
|
+
readonly from: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 500, undefined>]>;
|
|
7070
|
+
readonly to: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 500, undefined>]>;
|
|
7071
|
+
readonly timeoutMs: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 1000, undefined>, v.MaxValueAction<number, 3600000, undefined>]>, undefined>;
|
|
7072
|
+
}, undefined>, v.ObjectSchema<{
|
|
7073
|
+
readonly kind: v.LiteralSchema<"wait-http", undefined>;
|
|
7074
|
+
readonly name: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 120, undefined>]>;
|
|
7075
|
+
readonly url: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 2000, undefined>]>;
|
|
7076
|
+
readonly expectStatus: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 100, undefined>, v.MaxValueAction<number, 599, undefined>]>, undefined>;
|
|
7077
|
+
readonly expectBodyContains: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MaxLengthAction<string, 500, undefined>]>, undefined>;
|
|
7078
|
+
readonly intervalMs: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 250, undefined>, v.MaxValueAction<number, 60000, undefined>]>, undefined>;
|
|
7079
|
+
readonly timeoutMs: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 1000, undefined>, v.MaxValueAction<number, 3600000, undefined>]>, undefined>;
|
|
7080
|
+
}, undefined>, v.ObjectSchema<{
|
|
7081
|
+
readonly kind: v.LiteralSchema<"wait-file", undefined>;
|
|
7082
|
+
readonly name: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 120, undefined>]>;
|
|
7083
|
+
readonly path: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 500, undefined>]>;
|
|
7084
|
+
readonly service: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 200, undefined>]>, undefined>;
|
|
7085
|
+
readonly intervalMs: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 250, undefined>, v.MaxValueAction<number, 60000, undefined>]>, undefined>;
|
|
7086
|
+
readonly timeoutMs: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 1000, undefined>, v.MaxValueAction<number, 3600000, undefined>]>, undefined>;
|
|
7087
|
+
}, undefined>, v.ObjectSchema<{
|
|
7088
|
+
readonly kind: v.LiteralSchema<"host-command", undefined>;
|
|
7089
|
+
readonly name: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 120, undefined>]>;
|
|
7090
|
+
readonly command: v.SchemaWithPipe<readonly [v.ArraySchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>]>, undefined>, v.MinLengthAction<string[], 1, undefined>]>;
|
|
7091
|
+
readonly workdir: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 500, undefined>]>, undefined>;
|
|
7092
|
+
readonly timeoutMs: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 1000, undefined>, v.MaxValueAction<number, 3600000, undefined>]>, undefined>;
|
|
7093
|
+
}, undefined>], undefined>, undefined>, undefined>;
|
|
7094
|
+
readonly healthGate: v.OptionalSchema<v.VariantSchema<"kind", [v.ObjectSchema<{
|
|
7095
|
+
readonly kind: v.LiteralSchema<"compose-healthy", undefined>;
|
|
7096
|
+
}, undefined>, v.ObjectSchema<{
|
|
7097
|
+
readonly kind: v.LiteralSchema<"http", undefined>;
|
|
7098
|
+
readonly url: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 2000, undefined>]>;
|
|
7099
|
+
readonly expectStatus: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 100, undefined>, v.MaxValueAction<number, 599, undefined>]>, undefined>;
|
|
7100
|
+
readonly expectBodyContains: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MaxLengthAction<string, 500, undefined>]>, undefined>;
|
|
7101
|
+
readonly intervalMs: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 250, undefined>, v.MaxValueAction<number, 60000, undefined>]>, undefined>;
|
|
7102
|
+
readonly timeoutMs: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 1000, undefined>, v.MaxValueAction<number, 3600000, undefined>]>, undefined>;
|
|
7103
|
+
}, undefined>, v.ObjectSchema<{
|
|
7104
|
+
readonly kind: v.LiteralSchema<"compose-exec", undefined>;
|
|
7105
|
+
readonly service: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 200, undefined>]>;
|
|
7106
|
+
readonly command: v.SchemaWithPipe<readonly [v.ArraySchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>]>, undefined>, v.MinLengthAction<string[], 1, undefined>]>;
|
|
7107
|
+
readonly intervalMs: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 250, undefined>, v.MaxValueAction<number, 60000, undefined>]>, undefined>;
|
|
7108
|
+
readonly timeoutMs: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 1000, undefined>, v.MaxValueAction<number, 3600000, undefined>]>, undefined>;
|
|
7109
|
+
}, undefined>], undefined>, undefined>;
|
|
7110
|
+
readonly teardownSteps: v.OptionalSchema<v.ArraySchema<v.VariantSchema<"kind", [v.ObjectSchema<{
|
|
7111
|
+
readonly kind: v.LiteralSchema<"compose-exec", undefined>;
|
|
7112
|
+
readonly name: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 120, undefined>]>;
|
|
7113
|
+
readonly service: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 200, undefined>]>;
|
|
7114
|
+
readonly command: v.SchemaWithPipe<readonly [v.ArraySchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>]>, undefined>, v.MinLengthAction<string[], 1, undefined>]>;
|
|
7115
|
+
readonly stdinFile: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 500, undefined>]>, undefined>;
|
|
7116
|
+
readonly user: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 200, undefined>]>, undefined>;
|
|
7117
|
+
readonly workdir: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 500, undefined>]>, undefined>;
|
|
7118
|
+
readonly timeoutMs: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 1000, undefined>, v.MaxValueAction<number, 3600000, undefined>]>, undefined>;
|
|
7119
|
+
}, undefined>, v.ObjectSchema<{
|
|
7120
|
+
readonly kind: v.LiteralSchema<"copy-file", undefined>;
|
|
7121
|
+
readonly name: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 120, undefined>]>;
|
|
7122
|
+
readonly from: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 500, undefined>]>;
|
|
7123
|
+
readonly to: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 500, undefined>]>;
|
|
7124
|
+
readonly timeoutMs: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 1000, undefined>, v.MaxValueAction<number, 3600000, undefined>]>, undefined>;
|
|
7125
|
+
}, undefined>, v.ObjectSchema<{
|
|
7126
|
+
readonly kind: v.LiteralSchema<"wait-http", undefined>;
|
|
7127
|
+
readonly name: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 120, undefined>]>;
|
|
7128
|
+
readonly url: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 2000, undefined>]>;
|
|
7129
|
+
readonly expectStatus: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 100, undefined>, v.MaxValueAction<number, 599, undefined>]>, undefined>;
|
|
7130
|
+
readonly expectBodyContains: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MaxLengthAction<string, 500, undefined>]>, undefined>;
|
|
7131
|
+
readonly intervalMs: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 250, undefined>, v.MaxValueAction<number, 60000, undefined>]>, undefined>;
|
|
7132
|
+
readonly timeoutMs: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 1000, undefined>, v.MaxValueAction<number, 3600000, undefined>]>, undefined>;
|
|
7133
|
+
}, undefined>, v.ObjectSchema<{
|
|
7134
|
+
readonly kind: v.LiteralSchema<"wait-file", undefined>;
|
|
7135
|
+
readonly name: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 120, undefined>]>;
|
|
7136
|
+
readonly path: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 500, undefined>]>;
|
|
7137
|
+
readonly service: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 200, undefined>]>, undefined>;
|
|
7138
|
+
readonly intervalMs: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 250, undefined>, v.MaxValueAction<number, 60000, undefined>]>, undefined>;
|
|
7139
|
+
readonly timeoutMs: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 1000, undefined>, v.MaxValueAction<number, 3600000, undefined>]>, undefined>;
|
|
7140
|
+
}, undefined>, v.ObjectSchema<{
|
|
7141
|
+
readonly kind: v.LiteralSchema<"host-command", undefined>;
|
|
7142
|
+
readonly name: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 120, undefined>]>;
|
|
7143
|
+
readonly command: v.SchemaWithPipe<readonly [v.ArraySchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>]>, undefined>, v.MinLengthAction<string[], 1, undefined>]>;
|
|
7144
|
+
readonly workdir: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 500, undefined>]>, undefined>;
|
|
7145
|
+
readonly timeoutMs: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 1000, undefined>, v.MaxValueAction<number, 3600000, undefined>]>, undefined>;
|
|
7146
|
+
}, undefined>], undefined>, undefined>, undefined>;
|
|
7147
|
+
}, undefined>, undefined>;
|
|
5954
7148
|
/** `custom`: the custom-manifest-type id this service produces (matched to a remote-custom handler). */
|
|
5955
7149
|
readonly manifestId: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.RegexAction<string, undefined>, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 64, undefined>]>, undefined>;
|
|
5956
7150
|
/** `custom`: optional path to the custom manifest within the repo. */
|
|
@@ -6125,9 +7319,49 @@ export declare const provisioningRecommendationSchema: v.ObjectSchema<{
|
|
|
6125
7319
|
/** The heuristic top pick (basename match, else the first declared service). */
|
|
6126
7320
|
readonly recommended: v.BooleanSchema<undefined>;
|
|
6127
7321
|
}, undefined>, undefined>, undefined>;
|
|
7322
|
+
/** Candidate compose files for `-f` layering (base pre-selected; OS overrides opt-in). */
|
|
7323
|
+
readonly composeFileCandidates: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
|
|
7324
|
+
/** Repo-relative compose file path (a value `recipe.composeFiles` would take). */
|
|
7325
|
+
readonly path: v.StringSchema<undefined>;
|
|
7326
|
+
/** The file's base name (e.g. `dev.wsl.override.yml`). */
|
|
7327
|
+
readonly name: v.StringSchema<undefined>;
|
|
7328
|
+
/** For an OS-specific override, which OS it targets; absent ⇒ OS-neutral (a base layer). */
|
|
7329
|
+
readonly os: v.OptionalSchema<v.PicklistSchema<["wsl", "mac", "linux", "windows"], undefined>, undefined>;
|
|
7330
|
+
/** True for a base layer pre-selected into `composeFiles`; an OS override is opt-in. */
|
|
7331
|
+
readonly recommended: v.BooleanSchema<undefined>;
|
|
7332
|
+
}, undefined>, undefined>, undefined>;
|
|
7333
|
+
/** `COMPOSE_PROFILES` labels the compose files declare (surfaced default-off). */
|
|
7334
|
+
readonly profileCandidates: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
|
|
7335
|
+
/** The `profiles:` label (e.g. `peer`, `backends`). */
|
|
7336
|
+
readonly profile: v.StringSchema<undefined>;
|
|
7337
|
+
/** Whether to pre-enable it (default false — profiles are opt-in). */
|
|
7338
|
+
readonly recommended: v.BooleanSchema<undefined>;
|
|
7339
|
+
}, undefined>, undefined>, undefined>;
|
|
7340
|
+
/** Low-confidence SQL seed dumps to confirm as `compose-exec` seed steps. */
|
|
7341
|
+
readonly seedDumpCandidates: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
|
|
7342
|
+
/** Repo-relative path of the SQL dump. */
|
|
7343
|
+
readonly path: v.StringSchema<undefined>;
|
|
7344
|
+
/** The dump file's base name. */
|
|
7345
|
+
readonly name: v.StringSchema<undefined>;
|
|
7346
|
+
/** The heuristic top pick among several dumps. */
|
|
7347
|
+
readonly recommended: v.BooleanSchema<undefined>;
|
|
7348
|
+
}, undefined>, undefined>, undefined>;
|
|
7349
|
+
/** Report-only: the repo has its own imperative bring-up ⇒ suggest the environment analyst. */
|
|
7350
|
+
readonly repoCliHint: v.OptionalSchema<v.ObjectSchema<{
|
|
7351
|
+
/** Repo-relative path of the CLI / build file that triggered the hint. */
|
|
7352
|
+
readonly path: v.StringSchema<undefined>;
|
|
7353
|
+
/** What kind of imperative entry point it is. */
|
|
7354
|
+
readonly kind: v.PicklistSchema<["makefile", "repo-cli", "justfile", "taskfile"], undefined>;
|
|
7355
|
+
}, undefined>, undefined>;
|
|
6128
7356
|
/** Per-field confidence + hints for the SPA. */
|
|
6129
7357
|
readonly notes: v.ArraySchema<v.ObjectSchema<{
|
|
6130
|
-
/**
|
|
7358
|
+
/**
|
|
7359
|
+
* Which field this note explains: `provisionType` | `renderer` | `url` | `namespace` |
|
|
7360
|
+
* `secretInjections` | `images` | `overlay` | `helmReleases` | `compose` | `serviceDir` |
|
|
7361
|
+
* `manifestRoot` | `composeService` | `composeBuild` | `composeFiles` | `composeProfiles` |
|
|
7362
|
+
* `envFiles` | `externalNetworks` | `sharedStackRefs` | `setupSteps` | `healthGate` |
|
|
7363
|
+
* `seedDump` | `repoCli`.
|
|
7364
|
+
*/
|
|
6131
7365
|
readonly field: v.StringSchema<undefined>;
|
|
6132
7366
|
readonly confidence: v.PicklistSchema<["high", "low"], undefined>;
|
|
6133
7367
|
/** Rationale for the SPA to surface next to the field (e.g. "kustomization.yaml present ⇒ kustomize"). */
|