@cat-factory/contracts 0.64.0 → 0.65.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.
@@ -403,6 +403,12 @@ export declare const kubernetesEnvironmentConfigSchema: v.ObjectSchema<{
403
403
  readonly imageTemplate: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MaxLengthAction<string, 500, undefined>]>, undefined>;
404
404
  /** Fallback TTL (ms) after which the env is swept + torn down. */
405
405
  readonly defaultTtlMs: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, 60000, undefined>]>, undefined>;
406
+ /**
407
+ * How long (seconds) the container deploy adapter waits for each Deployment to roll out
408
+ * before reporting the env still `provisioning` (the backend keeps polling). Only the
409
+ * container-backed render path honors it; absent ⇒ the harness default (180s).
410
+ */
411
+ readonly rolloutTimeoutSeconds: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 1, undefined>]>, undefined>;
406
412
  /** Extra labels stamped on the namespace + every applied resource. */
407
413
  readonly labels: v.OptionalSchema<v.RecordSchema<v.StringSchema<undefined>, v.StringSchema<undefined>, undefined>, undefined>;
408
414
  /** Extra annotations stamped on the namespace. */
@@ -560,6 +566,193 @@ export declare const kubernetesSecretInjectionSchema: v.VariantSchema<"mode", [v
560
566
  }, "a secret entry must set exactly one of secretRef or valueTemplate.">]>, undefined>;
561
567
  }, undefined>], undefined>;
562
568
  export type KubernetesSecretInjection = v.InferOutput<typeof kubernetesSecretInjectionSchema>;
569
+ /**
570
+ * The full Kubernetes provision config the deploy adapter consumes: the combined cluster +
571
+ * URL + manifest-source config PLUS the kustomize/helm render inputs (image overrides, helm
572
+ * releases, secret injections). It is assembled at provision time by MERGING the workspace
573
+ * kube engine config (the "how": apiserver, sizing, shared helm releases) with the service's
574
+ * own provisioning (the "what/where": manifest source, per-environment helm releases, image
575
+ * overrides, secret injections) — so the provider reads everything it needs from one place.
576
+ * The native in-Worker REST adapter ignores the render fields (raw manifests only); the
577
+ * container-backed deploy adapter consumes them. Carries secret KEYS, never values.
578
+ */
579
+ export declare const kubernetesProvisionConfigSchema: v.ObjectSchema<{
580
+ /** Human label for the connection (shown in the UI). */
581
+ readonly label: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 120, undefined>]>;
582
+ /** kube-apiserver root URL, e.g. `https://my-cluster.example:6443`. */
583
+ readonly apiServerUrl: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 2000, undefined>]>;
584
+ /** PEM CA bundle to verify the apiserver TLS cert (omit only for a publicly-trusted CA). */
585
+ readonly caCertPem: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
586
+ /** Skip apiserver TLS verification — strongly discouraged; kind/dev clusters only. */
587
+ readonly insecureSkipTlsVerify: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
588
+ /**
589
+ * Namespace name template for the per-PR environment, e.g. `cf-env-{{pullNumber}}`.
590
+ * Rendered with the provision vars then sanitized to an RFC1123 label; absent ⇒ a
591
+ * default derived from the PR number / block id.
592
+ */
593
+ readonly namespaceTemplate: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 200, undefined>]>, undefined>;
594
+ /** Where the manifests are read from (co-located in the PR repo, or a separate repo). */
595
+ readonly manifestSource: v.VariantSchema<"type", [v.ObjectSchema<{
596
+ readonly type: v.LiteralSchema<"colocated", undefined>;
597
+ /** File or directory path within the PR repo (read at the PR head branch). */
598
+ readonly path: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 500, undefined>]>;
599
+ readonly renderer: v.OptionalSchema<v.PicklistSchema<["raw", "kustomize"], undefined>, undefined>;
600
+ }, undefined>, v.ObjectSchema<{
601
+ readonly type: v.LiteralSchema<"separate", undefined>;
602
+ /** `owner/repo` of the manifests repo. */
603
+ readonly repo: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.RegexAction<string, "must be \"owner/repo\"">]>;
604
+ /** Branch/tag/sha to read at; absent ⇒ that repo's default branch. */
605
+ readonly ref: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>]>, undefined>;
606
+ /** File or directory path within the manifests repo. */
607
+ readonly path: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 500, undefined>]>;
608
+ readonly renderer: v.OptionalSchema<v.PicklistSchema<["raw", "kustomize"], undefined>, undefined>;
609
+ }, undefined>], undefined>;
610
+ /** How the environment URL is derived once applied. */
611
+ readonly url: v.VariantSchema<"source", [v.ObjectSchema<{
612
+ readonly source: v.LiteralSchema<"ingressTemplate", undefined>;
613
+ /** Host template, e.g. `{{branch}}.preview.example.com`; rendered with the provision vars. */
614
+ readonly hostTemplate: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 500, undefined>]>;
615
+ readonly scheme: v.OptionalSchema<v.PicklistSchema<["http", "https"], undefined>, undefined>;
616
+ }, undefined>, v.ObjectSchema<{
617
+ readonly source: v.LiteralSchema<"ingressStatus", undefined>;
618
+ /** Ingress object to read `.status.loadBalancer` from; absent ⇒ the only Ingress applied. */
619
+ readonly ingressName: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>]>, undefined>;
620
+ readonly scheme: v.OptionalSchema<v.PicklistSchema<["http", "https"], undefined>, undefined>;
621
+ }, undefined>, v.ObjectSchema<{
622
+ readonly source: v.LiteralSchema<"serviceStatus", undefined>;
623
+ /** Service object to read `.status.loadBalancer` (k3s ServiceLB) from. */
624
+ readonly serviceName: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>]>;
625
+ 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>;
626
+ readonly scheme: v.OptionalSchema<v.PicklistSchema<["http", "https"], undefined>, undefined>;
627
+ }, undefined>, v.ObjectSchema<{
628
+ readonly source: v.LiteralSchema<"gatewayStatus", undefined>;
629
+ /** Gateway-API `Gateway` to read `.status.addresses[]` from; absent ⇒ the only one applied. */
630
+ readonly gatewayName: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>]>, undefined>;
631
+ readonly scheme: v.OptionalSchema<v.PicklistSchema<["http", "https"], undefined>, undefined>;
632
+ }, undefined>, v.ObjectSchema<{
633
+ readonly source: v.LiteralSchema<"httpRouteStatus", undefined>;
634
+ /** `HTTPRoute` whose `parentRefs` resolve to the Gateway address; absent ⇒ the only one applied. */
635
+ readonly httpRouteName: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>]>, undefined>;
636
+ readonly scheme: v.OptionalSchema<v.PicklistSchema<["http", "https"], undefined>, undefined>;
637
+ }, undefined>], undefined>;
638
+ /**
639
+ * Optional image reference made available to the manifests as `{{image}}` (e.g. a
640
+ * CI-built image tagged by branch/sha). Itself a template over the provision vars.
641
+ */
642
+ readonly imageTemplate: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MaxLengthAction<string, 500, undefined>]>, undefined>;
643
+ /** Fallback TTL (ms) after which the env is swept + torn down. */
644
+ readonly defaultTtlMs: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, 60000, undefined>]>, undefined>;
645
+ /**
646
+ * How long (seconds) the container deploy adapter waits for each Deployment to roll out
647
+ * before reporting the env still `provisioning` (the backend keeps polling). Only the
648
+ * container-backed render path honors it; absent ⇒ the harness default (180s).
649
+ */
650
+ readonly rolloutTimeoutSeconds: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 1, undefined>]>, undefined>;
651
+ /** Extra labels stamped on the namespace + every applied resource. */
652
+ readonly labels: v.OptionalSchema<v.RecordSchema<v.StringSchema<undefined>, v.StringSchema<undefined>, undefined>, undefined>;
653
+ /** Extra annotations stamped on the namespace. */
654
+ readonly annotations: v.OptionalSchema<v.RecordSchema<v.StringSchema<undefined>, v.StringSchema<undefined>, undefined>, undefined>;
655
+ /** Structured image overrides (the kustomize `images:` shape), templated over provision vars. */
656
+ readonly images: v.OptionalSchema<v.ArraySchema<v.SchemaWithPipe<readonly [v.ObjectSchema<{
657
+ /** The image to match (the `name:` in a kustomization `images:` entry), e.g. `registry/app`. */
658
+ readonly name: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>]>;
659
+ /** Optional replacement repo, templated; absent ⇒ keep the original repo. */
660
+ readonly newNameTemplate: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 500, undefined>]>, undefined>;
661
+ /** Replacement tag, templated (e.g. `{{branch}}` / `{{sha}}`); mutually exclusive with digest. */
662
+ readonly newTagTemplate: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 500, undefined>]>, undefined>;
663
+ /** Replacement digest, templated; alternative to a tag. */
664
+ readonly digestTemplate: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 500, undefined>]>, undefined>;
665
+ }, undefined>, v.CheckAction<{
666
+ name: string;
667
+ newNameTemplate?: string | undefined;
668
+ newTagTemplate?: string | undefined;
669
+ digestTemplate?: string | undefined;
670
+ }, "an image override must set at least one of newNameTemplate, newTagTemplate, or digestTemplate.">, v.CheckAction<{
671
+ name: string;
672
+ newNameTemplate?: string | undefined;
673
+ newTagTemplate?: string | undefined;
674
+ digestTemplate?: string | undefined;
675
+ }, "newTagTemplate and digestTemplate are mutually exclusive on an image override.">]>, undefined>, undefined>;
676
+ /** Helm releases to install — workspace-shared singletons merged with the service's per-env ones. */
677
+ readonly helmReleases: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
678
+ /** Release name. */
679
+ readonly name: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>]>;
680
+ /** Chart ref: an OCI ref (`oci://…`) or, with `repo`, a `repo/chart` name. */
681
+ readonly chart: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>]>;
682
+ /** Chart repo URL; absent ⇒ `chart` is an OCI ref. */
683
+ readonly repo: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 2000, undefined>]>, undefined>;
684
+ /** PINNED chart version, e.g. `1.2.3` / `v1.2.3` (floating tags like `latest`/`^1.0` rejected). */
685
+ 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.">]>;
686
+ /** Namespace to install into, templated; absent ⇒ the environment namespace. */
687
+ readonly namespaceTemplate: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 500, undefined>]>, undefined>;
688
+ /** Inline `--values` overrides. */
689
+ readonly values: v.OptionalSchema<v.RecordSchema<v.StringSchema<undefined>, v.UnknownSchema, undefined>, undefined>;
690
+ /** Templated `--set` overrides. */
691
+ readonly set: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
692
+ /** Dotted `--set` path, e.g. `config.rateLimit.enabled`. */
693
+ readonly path: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>]>;
694
+ /** The value, templated over the provision vars. */
695
+ readonly valueTemplate: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MaxLengthAction<string, 2000, undefined>]>;
696
+ }, undefined>, undefined>, undefined>;
697
+ /** Secret-bundle-backed values folded in at provision time (`--set <path>=<secret>`). */
698
+ readonly valuesSecretRefs: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
699
+ readonly path: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>]>;
700
+ readonly secretRef: v.ObjectSchema<{
701
+ readonly key: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.RegexAction<string, undefined>, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 64, undefined>]>;
702
+ }, undefined>;
703
+ }, undefined>, undefined>, undefined>;
704
+ readonly scope: v.OptionalSchema<v.PicklistSchema<["per-environment", "shared"], undefined>, undefined>;
705
+ }, undefined>, undefined>, undefined>;
706
+ /** Secrets fed in before apply (a `Secret` resource or a `secretGenerator` `.env`). */
707
+ readonly secretInjections: v.OptionalSchema<v.ArraySchema<v.VariantSchema<"mode", [v.ObjectSchema<{
708
+ readonly mode: v.LiteralSchema<"secret", undefined>;
709
+ /** Target Secret name in the namespace. */
710
+ readonly secretName: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>]>;
711
+ /** Secret `type`; absent ⇒ `Opaque`. */
712
+ readonly secretType: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>]>, undefined>;
713
+ readonly entries: v.ArraySchema<v.SchemaWithPipe<readonly [v.ObjectSchema<{
714
+ /** Key inside the rendered Secret / `.env`. */
715
+ readonly key: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.RegexAction<string, undefined>, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 256, undefined>]>;
716
+ /** Resolve the value from the workspace encrypted bundle by key. */
717
+ readonly secretRef: v.OptionalSchema<v.ObjectSchema<{
718
+ readonly key: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.RegexAction<string, undefined>, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 64, undefined>]>;
719
+ }, undefined>, undefined>;
720
+ /** OR a non-secret value, templated over the provision vars. */
721
+ readonly valueTemplate: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MaxLengthAction<string, 2000, undefined>]>, undefined>;
722
+ }, undefined>, v.CheckAction<{
723
+ key: string;
724
+ secretRef?: {
725
+ key: string;
726
+ } | undefined;
727
+ valueTemplate?: string | undefined;
728
+ }, "a secret entry must set exactly one of secretRef or valueTemplate.">]>, undefined>;
729
+ }, undefined>, v.ObjectSchema<{
730
+ readonly mode: v.LiteralSchema<"generatorEnvFile", undefined>;
731
+ /**
732
+ * Repo-relative path within the overlay tree to write the `KEY=value` env file the
733
+ * overlay's `secretGenerator` reads (e.g. `overlays/<env>/<component>/.env`). The
734
+ * overlay names the Secret.
735
+ */
736
+ readonly envFilePath: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 500, undefined>]>;
737
+ readonly entries: v.ArraySchema<v.SchemaWithPipe<readonly [v.ObjectSchema<{
738
+ /** Key inside the rendered Secret / `.env`. */
739
+ readonly key: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.RegexAction<string, undefined>, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 256, undefined>]>;
740
+ /** Resolve the value from the workspace encrypted bundle by key. */
741
+ readonly secretRef: v.OptionalSchema<v.ObjectSchema<{
742
+ readonly key: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.RegexAction<string, undefined>, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 64, undefined>]>;
743
+ }, undefined>, undefined>;
744
+ /** OR a non-secret value, templated over the provision vars. */
745
+ readonly valueTemplate: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MaxLengthAction<string, 2000, undefined>]>, undefined>;
746
+ }, undefined>, v.CheckAction<{
747
+ key: string;
748
+ secretRef?: {
749
+ key: string;
750
+ } | undefined;
751
+ valueTemplate?: string | undefined;
752
+ }, "a secret entry must set exactly one of secretRef or valueTemplate.">]>, undefined>;
753
+ }, undefined>], undefined>, undefined>, undefined>;
754
+ }, undefined>;
755
+ export type KubernetesProvisionConfig = v.InferOutput<typeof kubernetesProvisionConfigSchema>;
563
756
  /** Built-in environment backend kinds the contract knows by name. */
564
757
  export declare const RESERVED_ENVIRONMENT_BACKEND_KINDS: readonly ['manifest', 'kubernetes'];
565
758
  /**
@@ -780,10 +973,115 @@ export declare const environmentBackendConfigSchema: v.VariantSchema<"kind", [v.
780
973
  readonly imageTemplate: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MaxLengthAction<string, 500, undefined>]>, undefined>;
781
974
  /** Fallback TTL (ms) after which the env is swept + torn down. */
782
975
  readonly defaultTtlMs: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, 60000, undefined>]>, undefined>;
976
+ /**
977
+ * How long (seconds) the container deploy adapter waits for each Deployment to roll out
978
+ * before reporting the env still `provisioning` (the backend keeps polling). Only the
979
+ * container-backed render path honors it; absent ⇒ the harness default (180s).
980
+ */
981
+ readonly rolloutTimeoutSeconds: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 1, undefined>]>, undefined>;
783
982
  /** Extra labels stamped on the namespace + every applied resource. */
784
983
  readonly labels: v.OptionalSchema<v.RecordSchema<v.StringSchema<undefined>, v.StringSchema<undefined>, undefined>, undefined>;
785
984
  /** Extra annotations stamped on the namespace. */
786
985
  readonly annotations: v.OptionalSchema<v.RecordSchema<v.StringSchema<undefined>, v.StringSchema<undefined>, undefined>, undefined>;
986
+ /** Structured image overrides (the kustomize `images:` shape), templated over provision vars. */
987
+ readonly images: v.OptionalSchema<v.ArraySchema<v.SchemaWithPipe<readonly [v.ObjectSchema<{
988
+ /** The image to match (the `name:` in a kustomization `images:` entry), e.g. `registry/app`. */
989
+ readonly name: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>]>;
990
+ /** Optional replacement repo, templated; absent ⇒ keep the original repo. */
991
+ readonly newNameTemplate: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 500, undefined>]>, undefined>;
992
+ /** Replacement tag, templated (e.g. `{{branch}}` / `{{sha}}`); mutually exclusive with digest. */
993
+ readonly newTagTemplate: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 500, undefined>]>, undefined>;
994
+ /** Replacement digest, templated; alternative to a tag. */
995
+ readonly digestTemplate: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 500, undefined>]>, undefined>;
996
+ }, undefined>, v.CheckAction<{
997
+ name: string;
998
+ newNameTemplate?: string | undefined;
999
+ newTagTemplate?: string | undefined;
1000
+ digestTemplate?: string | undefined;
1001
+ }, "an image override must set at least one of newNameTemplate, newTagTemplate, or digestTemplate.">, v.CheckAction<{
1002
+ name: string;
1003
+ newNameTemplate?: string | undefined;
1004
+ newTagTemplate?: string | undefined;
1005
+ digestTemplate?: string | undefined;
1006
+ }, "newTagTemplate and digestTemplate are mutually exclusive on an image override.">]>, undefined>, undefined>;
1007
+ /** Helm releases to install — workspace-shared singletons merged with the service's per-env ones. */
1008
+ readonly helmReleases: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
1009
+ /** Release name. */
1010
+ readonly name: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>]>;
1011
+ /** Chart ref: an OCI ref (`oci://…`) or, with `repo`, a `repo/chart` name. */
1012
+ readonly chart: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>]>;
1013
+ /** Chart repo URL; absent ⇒ `chart` is an OCI ref. */
1014
+ readonly repo: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 2000, undefined>]>, undefined>;
1015
+ /** PINNED chart version, e.g. `1.2.3` / `v1.2.3` (floating tags like `latest`/`^1.0` rejected). */
1016
+ 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.">]>;
1017
+ /** Namespace to install into, templated; absent ⇒ the environment namespace. */
1018
+ readonly namespaceTemplate: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 500, undefined>]>, undefined>;
1019
+ /** Inline `--values` overrides. */
1020
+ readonly values: v.OptionalSchema<v.RecordSchema<v.StringSchema<undefined>, v.UnknownSchema, undefined>, undefined>;
1021
+ /** Templated `--set` overrides. */
1022
+ readonly set: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
1023
+ /** Dotted `--set` path, e.g. `config.rateLimit.enabled`. */
1024
+ readonly path: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>]>;
1025
+ /** The value, templated over the provision vars. */
1026
+ readonly valueTemplate: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MaxLengthAction<string, 2000, undefined>]>;
1027
+ }, undefined>, undefined>, undefined>;
1028
+ /** Secret-bundle-backed values folded in at provision time (`--set <path>=<secret>`). */
1029
+ readonly valuesSecretRefs: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
1030
+ readonly path: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>]>;
1031
+ readonly secretRef: v.ObjectSchema<{
1032
+ readonly key: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.RegexAction<string, undefined>, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 64, undefined>]>;
1033
+ }, undefined>;
1034
+ }, undefined>, undefined>, undefined>;
1035
+ readonly scope: v.OptionalSchema<v.PicklistSchema<["per-environment", "shared"], undefined>, undefined>;
1036
+ }, undefined>, undefined>, undefined>;
1037
+ /** Secrets fed in before apply (a `Secret` resource or a `secretGenerator` `.env`). */
1038
+ readonly secretInjections: v.OptionalSchema<v.ArraySchema<v.VariantSchema<"mode", [v.ObjectSchema<{
1039
+ readonly mode: v.LiteralSchema<"secret", undefined>;
1040
+ /** Target Secret name in the namespace. */
1041
+ readonly secretName: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>]>;
1042
+ /** Secret `type`; absent ⇒ `Opaque`. */
1043
+ readonly secretType: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>]>, undefined>;
1044
+ readonly entries: v.ArraySchema<v.SchemaWithPipe<readonly [v.ObjectSchema<{
1045
+ /** Key inside the rendered Secret / `.env`. */
1046
+ readonly key: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.RegexAction<string, undefined>, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 256, undefined>]>;
1047
+ /** Resolve the value from the workspace encrypted bundle by key. */
1048
+ readonly secretRef: v.OptionalSchema<v.ObjectSchema<{
1049
+ readonly key: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.RegexAction<string, undefined>, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 64, undefined>]>;
1050
+ }, undefined>, undefined>;
1051
+ /** OR a non-secret value, templated over the provision vars. */
1052
+ readonly valueTemplate: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MaxLengthAction<string, 2000, undefined>]>, undefined>;
1053
+ }, undefined>, v.CheckAction<{
1054
+ key: string;
1055
+ secretRef?: {
1056
+ key: string;
1057
+ } | undefined;
1058
+ valueTemplate?: string | undefined;
1059
+ }, "a secret entry must set exactly one of secretRef or valueTemplate.">]>, undefined>;
1060
+ }, undefined>, v.ObjectSchema<{
1061
+ readonly mode: v.LiteralSchema<"generatorEnvFile", undefined>;
1062
+ /**
1063
+ * Repo-relative path within the overlay tree to write the `KEY=value` env file the
1064
+ * overlay's `secretGenerator` reads (e.g. `overlays/<env>/<component>/.env`). The
1065
+ * overlay names the Secret.
1066
+ */
1067
+ readonly envFilePath: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 500, undefined>]>;
1068
+ readonly entries: v.ArraySchema<v.SchemaWithPipe<readonly [v.ObjectSchema<{
1069
+ /** Key inside the rendered Secret / `.env`. */
1070
+ readonly key: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.RegexAction<string, undefined>, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 256, undefined>]>;
1071
+ /** Resolve the value from the workspace encrypted bundle by key. */
1072
+ readonly secretRef: v.OptionalSchema<v.ObjectSchema<{
1073
+ readonly key: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.RegexAction<string, undefined>, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 64, undefined>]>;
1074
+ }, undefined>, undefined>;
1075
+ /** OR a non-secret value, templated over the provision vars. */
1076
+ readonly valueTemplate: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MaxLengthAction<string, 2000, undefined>]>, undefined>;
1077
+ }, undefined>, v.CheckAction<{
1078
+ key: string;
1079
+ secretRef?: {
1080
+ key: string;
1081
+ } | undefined;
1082
+ valueTemplate?: string | undefined;
1083
+ }, "a secret entry must set exactly one of secretRef or valueTemplate.">]>, undefined>;
1084
+ }, undefined>], undefined>, undefined>, undefined>;
787
1085
  }, undefined>;
788
1086
  }, undefined>, v.ObjectSchema<{
789
1087
  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">]>;
@@ -1108,6 +1406,12 @@ export declare const kubernetesEngineConfigSchema: v.ObjectSchema<{
1108
1406
  readonly imageTemplate: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MaxLengthAction<string, 500, undefined>]>, undefined>;
1109
1407
  /** Fallback TTL (ms) after which the env is swept + torn down. */
1110
1408
  readonly defaultTtlMs: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, 60000, undefined>]>, undefined>;
1409
+ /**
1410
+ * How long (seconds) the container deploy adapter waits for each Deployment to roll out
1411
+ * before reporting the env still `provisioning` (the backend keeps polling). Absent ⇒ the
1412
+ * harness default (180s). Merged into the provision config via `...kube` at provision time.
1413
+ */
1414
+ readonly rolloutTimeoutSeconds: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 1, undefined>]>, undefined>;
1111
1415
  /** Extra labels stamped on the namespace + every applied resource. */
1112
1416
  readonly labels: v.OptionalSchema<v.RecordSchema<v.StringSchema<undefined>, v.StringSchema<undefined>, undefined>, undefined>;
1113
1417
  /** Extra annotations stamped on the namespace. */
@@ -1337,6 +1641,12 @@ export declare const infraHandlerConfigSchema: v.VariantSchema<"engine", [v.Obje
1337
1641
  readonly imageTemplate: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MaxLengthAction<string, 500, undefined>]>, undefined>;
1338
1642
  /** Fallback TTL (ms) after which the env is swept + torn down. */
1339
1643
  readonly defaultTtlMs: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, 60000, undefined>]>, undefined>;
1644
+ /**
1645
+ * How long (seconds) the container deploy adapter waits for each Deployment to roll out
1646
+ * before reporting the env still `provisioning` (the backend keeps polling). Absent ⇒ the
1647
+ * harness default (180s). Merged into the provision config via `...kube` at provision time.
1648
+ */
1649
+ readonly rolloutTimeoutSeconds: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 1, undefined>]>, undefined>;
1340
1650
  /** Extra labels stamped on the namespace + every applied resource. */
1341
1651
  readonly labels: v.OptionalSchema<v.RecordSchema<v.StringSchema<undefined>, v.StringSchema<undefined>, undefined>, undefined>;
1342
1652
  /** Extra annotations stamped on the namespace. */
@@ -1427,6 +1737,12 @@ export declare const infraHandlerConfigSchema: v.VariantSchema<"engine", [v.Obje
1427
1737
  readonly imageTemplate: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MaxLengthAction<string, 500, undefined>]>, undefined>;
1428
1738
  /** Fallback TTL (ms) after which the env is swept + torn down. */
1429
1739
  readonly defaultTtlMs: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, 60000, undefined>]>, undefined>;
1740
+ /**
1741
+ * How long (seconds) the container deploy adapter waits for each Deployment to roll out
1742
+ * before reporting the env still `provisioning` (the backend keeps polling). Absent ⇒ the
1743
+ * harness default (180s). Merged into the provision config via `...kube` at provision time.
1744
+ */
1745
+ readonly rolloutTimeoutSeconds: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 1, undefined>]>, undefined>;
1430
1746
  /** Extra labels stamped on the namespace + every applied resource. */
1431
1747
  readonly labels: v.OptionalSchema<v.RecordSchema<v.StringSchema<undefined>, v.StringSchema<undefined>, undefined>, undefined>;
1432
1748
  /** Extra annotations stamped on the namespace. */
@@ -1818,6 +2134,12 @@ export declare const environmentHandlerViewSchema: v.ObjectSchema<{
1818
2134
  readonly imageTemplate: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MaxLengthAction<string, 500, undefined>]>, undefined>;
1819
2135
  /** Fallback TTL (ms) after which the env is swept + torn down. */
1820
2136
  readonly defaultTtlMs: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, 60000, undefined>]>, undefined>;
2137
+ /**
2138
+ * How long (seconds) the container deploy adapter waits for each Deployment to roll out
2139
+ * before reporting the env still `provisioning` (the backend keeps polling). Absent ⇒ the
2140
+ * harness default (180s). Merged into the provision config via `...kube` at provision time.
2141
+ */
2142
+ readonly rolloutTimeoutSeconds: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 1, undefined>]>, undefined>;
1821
2143
  /** Extra labels stamped on the namespace + every applied resource. */
1822
2144
  readonly labels: v.OptionalSchema<v.RecordSchema<v.StringSchema<undefined>, v.StringSchema<undefined>, undefined>, undefined>;
1823
2145
  /** Extra annotations stamped on the namespace. */
@@ -1908,6 +2230,12 @@ export declare const environmentHandlerViewSchema: v.ObjectSchema<{
1908
2230
  readonly imageTemplate: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MaxLengthAction<string, 500, undefined>]>, undefined>;
1909
2231
  /** Fallback TTL (ms) after which the env is swept + torn down. */
1910
2232
  readonly defaultTtlMs: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, 60000, undefined>]>, undefined>;
2233
+ /**
2234
+ * How long (seconds) the container deploy adapter waits for each Deployment to roll out
2235
+ * before reporting the env still `provisioning` (the backend keeps polling). Absent ⇒ the
2236
+ * harness default (180s). Merged into the provision config via `...kube` at provision time.
2237
+ */
2238
+ readonly rolloutTimeoutSeconds: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 1, undefined>]>, undefined>;
1911
2239
  /** Extra labels stamped on the namespace + every applied resource. */
1912
2240
  readonly labels: v.OptionalSchema<v.RecordSchema<v.StringSchema<undefined>, v.StringSchema<undefined>, undefined>, undefined>;
1913
2241
  /** Extra annotations stamped on the namespace. */
@@ -2274,6 +2602,12 @@ export declare const registerEnvironmentHandlerSchema: v.ObjectSchema<{
2274
2602
  readonly imageTemplate: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MaxLengthAction<string, 500, undefined>]>, undefined>;
2275
2603
  /** Fallback TTL (ms) after which the env is swept + torn down. */
2276
2604
  readonly defaultTtlMs: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, 60000, undefined>]>, undefined>;
2605
+ /**
2606
+ * How long (seconds) the container deploy adapter waits for each Deployment to roll out
2607
+ * before reporting the env still `provisioning` (the backend keeps polling). Absent ⇒ the
2608
+ * harness default (180s). Merged into the provision config via `...kube` at provision time.
2609
+ */
2610
+ readonly rolloutTimeoutSeconds: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 1, undefined>]>, undefined>;
2277
2611
  /** Extra labels stamped on the namespace + every applied resource. */
2278
2612
  readonly labels: v.OptionalSchema<v.RecordSchema<v.StringSchema<undefined>, v.StringSchema<undefined>, undefined>, undefined>;
2279
2613
  /** Extra annotations stamped on the namespace. */
@@ -2364,6 +2698,12 @@ export declare const registerEnvironmentHandlerSchema: v.ObjectSchema<{
2364
2698
  readonly imageTemplate: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MaxLengthAction<string, 500, undefined>]>, undefined>;
2365
2699
  /** Fallback TTL (ms) after which the env is swept + torn down. */
2366
2700
  readonly defaultTtlMs: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, 60000, undefined>]>, undefined>;
2701
+ /**
2702
+ * How long (seconds) the container deploy adapter waits for each Deployment to roll out
2703
+ * before reporting the env still `provisioning` (the backend keeps polling). Absent ⇒ the
2704
+ * harness default (180s). Merged into the provision config via `...kube` at provision time.
2705
+ */
2706
+ readonly rolloutTimeoutSeconds: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 1, undefined>]>, undefined>;
2367
2707
  /** Extra labels stamped on the namespace + every applied resource. */
2368
2708
  readonly labels: v.OptionalSchema<v.RecordSchema<v.StringSchema<undefined>, v.StringSchema<undefined>, undefined>, undefined>;
2369
2709
  /** Extra annotations stamped on the namespace. */
@@ -2731,6 +3071,12 @@ export declare const upsertEnvironmentUserHandlerBodySchema: v.ObjectSchema<{
2731
3071
  readonly imageTemplate: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MaxLengthAction<string, 500, undefined>]>, undefined>;
2732
3072
  /** Fallback TTL (ms) after which the env is swept + torn down. */
2733
3073
  readonly defaultTtlMs: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, 60000, undefined>]>, undefined>;
3074
+ /**
3075
+ * How long (seconds) the container deploy adapter waits for each Deployment to roll out
3076
+ * before reporting the env still `provisioning` (the backend keeps polling). Absent ⇒ the
3077
+ * harness default (180s). Merged into the provision config via `...kube` at provision time.
3078
+ */
3079
+ readonly rolloutTimeoutSeconds: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 1, undefined>]>, undefined>;
2734
3080
  /** Extra labels stamped on the namespace + every applied resource. */
2735
3081
  readonly labels: v.OptionalSchema<v.RecordSchema<v.StringSchema<undefined>, v.StringSchema<undefined>, undefined>, undefined>;
2736
3082
  /** Extra annotations stamped on the namespace. */
@@ -2821,6 +3167,12 @@ export declare const upsertEnvironmentUserHandlerBodySchema: v.ObjectSchema<{
2821
3167
  readonly imageTemplate: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MaxLengthAction<string, 500, undefined>]>, undefined>;
2822
3168
  /** Fallback TTL (ms) after which the env is swept + torn down. */
2823
3169
  readonly defaultTtlMs: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, 60000, undefined>]>, undefined>;
3170
+ /**
3171
+ * How long (seconds) the container deploy adapter waits for each Deployment to roll out
3172
+ * before reporting the env still `provisioning` (the backend keeps polling). Absent ⇒ the
3173
+ * harness default (180s). Merged into the provision config via `...kube` at provision time.
3174
+ */
3175
+ readonly rolloutTimeoutSeconds: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 1, undefined>]>, undefined>;
2824
3176
  /** Extra labels stamped on the namespace + every applied resource. */
2825
3177
  readonly labels: v.OptionalSchema<v.RecordSchema<v.StringSchema<undefined>, v.StringSchema<undefined>, undefined>, undefined>;
2826
3178
  /** Extra annotations stamped on the namespace. */
@@ -3196,6 +3548,12 @@ export declare const environmentHandlersBundleSchema: v.ObjectSchema<{
3196
3548
  readonly imageTemplate: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MaxLengthAction<string, 500, undefined>]>, undefined>;
3197
3549
  /** Fallback TTL (ms) after which the env is swept + torn down. */
3198
3550
  readonly defaultTtlMs: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, 60000, undefined>]>, undefined>;
3551
+ /**
3552
+ * How long (seconds) the container deploy adapter waits for each Deployment to roll out
3553
+ * before reporting the env still `provisioning` (the backend keeps polling). Absent ⇒ the
3554
+ * harness default (180s). Merged into the provision config via `...kube` at provision time.
3555
+ */
3556
+ readonly rolloutTimeoutSeconds: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 1, undefined>]>, undefined>;
3199
3557
  /** Extra labels stamped on the namespace + every applied resource. */
3200
3558
  readonly labels: v.OptionalSchema<v.RecordSchema<v.StringSchema<undefined>, v.StringSchema<undefined>, undefined>, undefined>;
3201
3559
  /** Extra annotations stamped on the namespace. */
@@ -3286,6 +3644,12 @@ export declare const environmentHandlersBundleSchema: v.ObjectSchema<{
3286
3644
  readonly imageTemplate: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MaxLengthAction<string, 500, undefined>]>, undefined>;
3287
3645
  /** Fallback TTL (ms) after which the env is swept + torn down. */
3288
3646
  readonly defaultTtlMs: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, 60000, undefined>]>, undefined>;
3647
+ /**
3648
+ * How long (seconds) the container deploy adapter waits for each Deployment to roll out
3649
+ * before reporting the env still `provisioning` (the backend keeps polling). Absent ⇒ the
3650
+ * harness default (180s). Merged into the provision config via `...kube` at provision time.
3651
+ */
3652
+ readonly rolloutTimeoutSeconds: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 1, undefined>]>, undefined>;
3289
3653
  /** Extra labels stamped on the namespace + every applied resource. */
3290
3654
  readonly labels: v.OptionalSchema<v.RecordSchema<v.StringSchema<undefined>, v.StringSchema<undefined>, undefined>, undefined>;
3291
3655
  /** Extra annotations stamped on the namespace. */
@@ -3732,10 +4096,115 @@ export declare const environmentConnectionSchema: v.ObjectSchema<{
3732
4096
  readonly imageTemplate: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MaxLengthAction<string, 500, undefined>]>, undefined>;
3733
4097
  /** Fallback TTL (ms) after which the env is swept + torn down. */
3734
4098
  readonly defaultTtlMs: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, 60000, undefined>]>, undefined>;
4099
+ /**
4100
+ * How long (seconds) the container deploy adapter waits for each Deployment to roll out
4101
+ * before reporting the env still `provisioning` (the backend keeps polling). Only the
4102
+ * container-backed render path honors it; absent ⇒ the harness default (180s).
4103
+ */
4104
+ readonly rolloutTimeoutSeconds: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 1, undefined>]>, undefined>;
3735
4105
  /** Extra labels stamped on the namespace + every applied resource. */
3736
4106
  readonly labels: v.OptionalSchema<v.RecordSchema<v.StringSchema<undefined>, v.StringSchema<undefined>, undefined>, undefined>;
3737
4107
  /** Extra annotations stamped on the namespace. */
3738
4108
  readonly annotations: v.OptionalSchema<v.RecordSchema<v.StringSchema<undefined>, v.StringSchema<undefined>, undefined>, undefined>;
4109
+ /** Structured image overrides (the kustomize `images:` shape), templated over provision vars. */
4110
+ readonly images: v.OptionalSchema<v.ArraySchema<v.SchemaWithPipe<readonly [v.ObjectSchema<{
4111
+ /** The image to match (the `name:` in a kustomization `images:` entry), e.g. `registry/app`. */
4112
+ readonly name: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>]>;
4113
+ /** Optional replacement repo, templated; absent ⇒ keep the original repo. */
4114
+ readonly newNameTemplate: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 500, undefined>]>, undefined>;
4115
+ /** Replacement tag, templated (e.g. `{{branch}}` / `{{sha}}`); mutually exclusive with digest. */
4116
+ readonly newTagTemplate: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 500, undefined>]>, undefined>;
4117
+ /** Replacement digest, templated; alternative to a tag. */
4118
+ readonly digestTemplate: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 500, undefined>]>, undefined>;
4119
+ }, undefined>, v.CheckAction<{
4120
+ name: string;
4121
+ newNameTemplate?: string | undefined;
4122
+ newTagTemplate?: string | undefined;
4123
+ digestTemplate?: string | undefined;
4124
+ }, "an image override must set at least one of newNameTemplate, newTagTemplate, or digestTemplate.">, v.CheckAction<{
4125
+ name: string;
4126
+ newNameTemplate?: string | undefined;
4127
+ newTagTemplate?: string | undefined;
4128
+ digestTemplate?: string | undefined;
4129
+ }, "newTagTemplate and digestTemplate are mutually exclusive on an image override.">]>, undefined>, undefined>;
4130
+ /** Helm releases to install — workspace-shared singletons merged with the service's per-env ones. */
4131
+ readonly helmReleases: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
4132
+ /** Release name. */
4133
+ readonly name: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>]>;
4134
+ /** Chart ref: an OCI ref (`oci://…`) or, with `repo`, a `repo/chart` name. */
4135
+ readonly chart: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>]>;
4136
+ /** Chart repo URL; absent ⇒ `chart` is an OCI ref. */
4137
+ readonly repo: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 2000, undefined>]>, undefined>;
4138
+ /** PINNED chart version, e.g. `1.2.3` / `v1.2.3` (floating tags like `latest`/`^1.0` rejected). */
4139
+ 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.">]>;
4140
+ /** Namespace to install into, templated; absent ⇒ the environment namespace. */
4141
+ readonly namespaceTemplate: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 500, undefined>]>, undefined>;
4142
+ /** Inline `--values` overrides. */
4143
+ readonly values: v.OptionalSchema<v.RecordSchema<v.StringSchema<undefined>, v.UnknownSchema, undefined>, undefined>;
4144
+ /** Templated `--set` overrides. */
4145
+ readonly set: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
4146
+ /** Dotted `--set` path, e.g. `config.rateLimit.enabled`. */
4147
+ readonly path: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>]>;
4148
+ /** The value, templated over the provision vars. */
4149
+ readonly valueTemplate: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MaxLengthAction<string, 2000, undefined>]>;
4150
+ }, undefined>, undefined>, undefined>;
4151
+ /** Secret-bundle-backed values folded in at provision time (`--set <path>=<secret>`). */
4152
+ readonly valuesSecretRefs: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
4153
+ readonly path: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>]>;
4154
+ readonly secretRef: v.ObjectSchema<{
4155
+ readonly key: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.RegexAction<string, undefined>, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 64, undefined>]>;
4156
+ }, undefined>;
4157
+ }, undefined>, undefined>, undefined>;
4158
+ readonly scope: v.OptionalSchema<v.PicklistSchema<["per-environment", "shared"], undefined>, undefined>;
4159
+ }, undefined>, undefined>, undefined>;
4160
+ /** Secrets fed in before apply (a `Secret` resource or a `secretGenerator` `.env`). */
4161
+ readonly secretInjections: v.OptionalSchema<v.ArraySchema<v.VariantSchema<"mode", [v.ObjectSchema<{
4162
+ readonly mode: v.LiteralSchema<"secret", undefined>;
4163
+ /** Target Secret name in the namespace. */
4164
+ readonly secretName: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>]>;
4165
+ /** Secret `type`; absent ⇒ `Opaque`. */
4166
+ readonly secretType: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>]>, undefined>;
4167
+ readonly entries: v.ArraySchema<v.SchemaWithPipe<readonly [v.ObjectSchema<{
4168
+ /** Key inside the rendered Secret / `.env`. */
4169
+ readonly key: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.RegexAction<string, undefined>, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 256, undefined>]>;
4170
+ /** Resolve the value from the workspace encrypted bundle by key. */
4171
+ readonly secretRef: v.OptionalSchema<v.ObjectSchema<{
4172
+ readonly key: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.RegexAction<string, undefined>, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 64, undefined>]>;
4173
+ }, undefined>, undefined>;
4174
+ /** OR a non-secret value, templated over the provision vars. */
4175
+ readonly valueTemplate: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MaxLengthAction<string, 2000, undefined>]>, undefined>;
4176
+ }, undefined>, v.CheckAction<{
4177
+ key: string;
4178
+ secretRef?: {
4179
+ key: string;
4180
+ } | undefined;
4181
+ valueTemplate?: string | undefined;
4182
+ }, "a secret entry must set exactly one of secretRef or valueTemplate.">]>, undefined>;
4183
+ }, undefined>, v.ObjectSchema<{
4184
+ readonly mode: v.LiteralSchema<"generatorEnvFile", undefined>;
4185
+ /**
4186
+ * Repo-relative path within the overlay tree to write the `KEY=value` env file the
4187
+ * overlay's `secretGenerator` reads (e.g. `overlays/<env>/<component>/.env`). The
4188
+ * overlay names the Secret.
4189
+ */
4190
+ readonly envFilePath: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 500, undefined>]>;
4191
+ readonly entries: v.ArraySchema<v.SchemaWithPipe<readonly [v.ObjectSchema<{
4192
+ /** Key inside the rendered Secret / `.env`. */
4193
+ readonly key: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.RegexAction<string, undefined>, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 256, undefined>]>;
4194
+ /** Resolve the value from the workspace encrypted bundle by key. */
4195
+ readonly secretRef: v.OptionalSchema<v.ObjectSchema<{
4196
+ readonly key: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.RegexAction<string, undefined>, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 64, undefined>]>;
4197
+ }, undefined>, undefined>;
4198
+ /** OR a non-secret value, templated over the provision vars. */
4199
+ readonly valueTemplate: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MaxLengthAction<string, 2000, undefined>]>, undefined>;
4200
+ }, undefined>, v.CheckAction<{
4201
+ key: string;
4202
+ secretRef?: {
4203
+ key: string;
4204
+ } | undefined;
4205
+ valueTemplate?: string | undefined;
4206
+ }, "a secret entry must set exactly one of secretRef or valueTemplate.">]>, undefined>;
4207
+ }, undefined>], undefined>, undefined>, undefined>;
3739
4208
  }, undefined>;
3740
4209
  }, undefined>, v.ObjectSchema<{
3741
4210
  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">]>;
@@ -4079,10 +4548,115 @@ export declare const registerEnvironmentProviderSchema: v.ObjectSchema<{
4079
4548
  readonly imageTemplate: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MaxLengthAction<string, 500, undefined>]>, undefined>;
4080
4549
  /** Fallback TTL (ms) after which the env is swept + torn down. */
4081
4550
  readonly defaultTtlMs: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, 60000, undefined>]>, undefined>;
4551
+ /**
4552
+ * How long (seconds) the container deploy adapter waits for each Deployment to roll out
4553
+ * before reporting the env still `provisioning` (the backend keeps polling). Only the
4554
+ * container-backed render path honors it; absent ⇒ the harness default (180s).
4555
+ */
4556
+ readonly rolloutTimeoutSeconds: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 1, undefined>]>, undefined>;
4082
4557
  /** Extra labels stamped on the namespace + every applied resource. */
4083
4558
  readonly labels: v.OptionalSchema<v.RecordSchema<v.StringSchema<undefined>, v.StringSchema<undefined>, undefined>, undefined>;
4084
4559
  /** Extra annotations stamped on the namespace. */
4085
4560
  readonly annotations: v.OptionalSchema<v.RecordSchema<v.StringSchema<undefined>, v.StringSchema<undefined>, undefined>, undefined>;
4561
+ /** Structured image overrides (the kustomize `images:` shape), templated over provision vars. */
4562
+ readonly images: v.OptionalSchema<v.ArraySchema<v.SchemaWithPipe<readonly [v.ObjectSchema<{
4563
+ /** The image to match (the `name:` in a kustomization `images:` entry), e.g. `registry/app`. */
4564
+ readonly name: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>]>;
4565
+ /** Optional replacement repo, templated; absent ⇒ keep the original repo. */
4566
+ readonly newNameTemplate: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 500, undefined>]>, undefined>;
4567
+ /** Replacement tag, templated (e.g. `{{branch}}` / `{{sha}}`); mutually exclusive with digest. */
4568
+ readonly newTagTemplate: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 500, undefined>]>, undefined>;
4569
+ /** Replacement digest, templated; alternative to a tag. */
4570
+ readonly digestTemplate: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 500, undefined>]>, undefined>;
4571
+ }, undefined>, v.CheckAction<{
4572
+ name: string;
4573
+ newNameTemplate?: string | undefined;
4574
+ newTagTemplate?: string | undefined;
4575
+ digestTemplate?: string | undefined;
4576
+ }, "an image override must set at least one of newNameTemplate, newTagTemplate, or digestTemplate.">, v.CheckAction<{
4577
+ name: string;
4578
+ newNameTemplate?: string | undefined;
4579
+ newTagTemplate?: string | undefined;
4580
+ digestTemplate?: string | undefined;
4581
+ }, "newTagTemplate and digestTemplate are mutually exclusive on an image override.">]>, undefined>, undefined>;
4582
+ /** Helm releases to install — workspace-shared singletons merged with the service's per-env ones. */
4583
+ readonly helmReleases: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
4584
+ /** Release name. */
4585
+ readonly name: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>]>;
4586
+ /** Chart ref: an OCI ref (`oci://…`) or, with `repo`, a `repo/chart` name. */
4587
+ readonly chart: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>]>;
4588
+ /** Chart repo URL; absent ⇒ `chart` is an OCI ref. */
4589
+ readonly repo: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 2000, undefined>]>, undefined>;
4590
+ /** PINNED chart version, e.g. `1.2.3` / `v1.2.3` (floating tags like `latest`/`^1.0` rejected). */
4591
+ 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.">]>;
4592
+ /** Namespace to install into, templated; absent ⇒ the environment namespace. */
4593
+ readonly namespaceTemplate: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 500, undefined>]>, undefined>;
4594
+ /** Inline `--values` overrides. */
4595
+ readonly values: v.OptionalSchema<v.RecordSchema<v.StringSchema<undefined>, v.UnknownSchema, undefined>, undefined>;
4596
+ /** Templated `--set` overrides. */
4597
+ readonly set: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
4598
+ /** Dotted `--set` path, e.g. `config.rateLimit.enabled`. */
4599
+ readonly path: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>]>;
4600
+ /** The value, templated over the provision vars. */
4601
+ readonly valueTemplate: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MaxLengthAction<string, 2000, undefined>]>;
4602
+ }, undefined>, undefined>, undefined>;
4603
+ /** Secret-bundle-backed values folded in at provision time (`--set <path>=<secret>`). */
4604
+ readonly valuesSecretRefs: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
4605
+ readonly path: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>]>;
4606
+ readonly secretRef: v.ObjectSchema<{
4607
+ readonly key: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.RegexAction<string, undefined>, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 64, undefined>]>;
4608
+ }, undefined>;
4609
+ }, undefined>, undefined>, undefined>;
4610
+ readonly scope: v.OptionalSchema<v.PicklistSchema<["per-environment", "shared"], undefined>, undefined>;
4611
+ }, undefined>, undefined>, undefined>;
4612
+ /** Secrets fed in before apply (a `Secret` resource or a `secretGenerator` `.env`). */
4613
+ readonly secretInjections: v.OptionalSchema<v.ArraySchema<v.VariantSchema<"mode", [v.ObjectSchema<{
4614
+ readonly mode: v.LiteralSchema<"secret", undefined>;
4615
+ /** Target Secret name in the namespace. */
4616
+ readonly secretName: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>]>;
4617
+ /** Secret `type`; absent ⇒ `Opaque`. */
4618
+ readonly secretType: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>]>, undefined>;
4619
+ readonly entries: v.ArraySchema<v.SchemaWithPipe<readonly [v.ObjectSchema<{
4620
+ /** Key inside the rendered Secret / `.env`. */
4621
+ readonly key: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.RegexAction<string, undefined>, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 256, undefined>]>;
4622
+ /** Resolve the value from the workspace encrypted bundle by key. */
4623
+ readonly secretRef: v.OptionalSchema<v.ObjectSchema<{
4624
+ readonly key: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.RegexAction<string, undefined>, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 64, undefined>]>;
4625
+ }, undefined>, undefined>;
4626
+ /** OR a non-secret value, templated over the provision vars. */
4627
+ readonly valueTemplate: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MaxLengthAction<string, 2000, undefined>]>, undefined>;
4628
+ }, undefined>, v.CheckAction<{
4629
+ key: string;
4630
+ secretRef?: {
4631
+ key: string;
4632
+ } | undefined;
4633
+ valueTemplate?: string | undefined;
4634
+ }, "a secret entry must set exactly one of secretRef or valueTemplate.">]>, undefined>;
4635
+ }, undefined>, v.ObjectSchema<{
4636
+ readonly mode: v.LiteralSchema<"generatorEnvFile", undefined>;
4637
+ /**
4638
+ * Repo-relative path within the overlay tree to write the `KEY=value` env file the
4639
+ * overlay's `secretGenerator` reads (e.g. `overlays/<env>/<component>/.env`). The
4640
+ * overlay names the Secret.
4641
+ */
4642
+ readonly envFilePath: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 500, undefined>]>;
4643
+ readonly entries: v.ArraySchema<v.SchemaWithPipe<readonly [v.ObjectSchema<{
4644
+ /** Key inside the rendered Secret / `.env`. */
4645
+ readonly key: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.RegexAction<string, undefined>, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 256, undefined>]>;
4646
+ /** Resolve the value from the workspace encrypted bundle by key. */
4647
+ readonly secretRef: v.OptionalSchema<v.ObjectSchema<{
4648
+ readonly key: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.RegexAction<string, undefined>, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 64, undefined>]>;
4649
+ }, undefined>, undefined>;
4650
+ /** OR a non-secret value, templated over the provision vars. */
4651
+ readonly valueTemplate: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MaxLengthAction<string, 2000, undefined>]>, undefined>;
4652
+ }, undefined>, v.CheckAction<{
4653
+ key: string;
4654
+ secretRef?: {
4655
+ key: string;
4656
+ } | undefined;
4657
+ valueTemplate?: string | undefined;
4658
+ }, "a secret entry must set exactly one of secretRef or valueTemplate.">]>, undefined>;
4659
+ }, undefined>], undefined>, undefined>, undefined>;
4086
4660
  }, undefined>;
4087
4661
  }, undefined>, v.ObjectSchema<{
4088
4662
  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">]>;
@@ -4428,10 +5002,115 @@ export declare const testEnvironmentConnectionSchema: v.ObjectSchema<{
4428
5002
  readonly imageTemplate: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MaxLengthAction<string, 500, undefined>]>, undefined>;
4429
5003
  /** Fallback TTL (ms) after which the env is swept + torn down. */
4430
5004
  readonly defaultTtlMs: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, 60000, undefined>]>, undefined>;
5005
+ /**
5006
+ * How long (seconds) the container deploy adapter waits for each Deployment to roll out
5007
+ * before reporting the env still `provisioning` (the backend keeps polling). Only the
5008
+ * container-backed render path honors it; absent ⇒ the harness default (180s).
5009
+ */
5010
+ readonly rolloutTimeoutSeconds: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 1, undefined>]>, undefined>;
4431
5011
  /** Extra labels stamped on the namespace + every applied resource. */
4432
5012
  readonly labels: v.OptionalSchema<v.RecordSchema<v.StringSchema<undefined>, v.StringSchema<undefined>, undefined>, undefined>;
4433
5013
  /** Extra annotations stamped on the namespace. */
4434
5014
  readonly annotations: v.OptionalSchema<v.RecordSchema<v.StringSchema<undefined>, v.StringSchema<undefined>, undefined>, undefined>;
5015
+ /** Structured image overrides (the kustomize `images:` shape), templated over provision vars. */
5016
+ readonly images: v.OptionalSchema<v.ArraySchema<v.SchemaWithPipe<readonly [v.ObjectSchema<{
5017
+ /** The image to match (the `name:` in a kustomization `images:` entry), e.g. `registry/app`. */
5018
+ readonly name: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>]>;
5019
+ /** Optional replacement repo, templated; absent ⇒ keep the original repo. */
5020
+ readonly newNameTemplate: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 500, undefined>]>, undefined>;
5021
+ /** Replacement tag, templated (e.g. `{{branch}}` / `{{sha}}`); mutually exclusive with digest. */
5022
+ readonly newTagTemplate: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 500, undefined>]>, undefined>;
5023
+ /** Replacement digest, templated; alternative to a tag. */
5024
+ readonly digestTemplate: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 500, undefined>]>, undefined>;
5025
+ }, undefined>, v.CheckAction<{
5026
+ name: string;
5027
+ newNameTemplate?: string | undefined;
5028
+ newTagTemplate?: string | undefined;
5029
+ digestTemplate?: string | undefined;
5030
+ }, "an image override must set at least one of newNameTemplate, newTagTemplate, or digestTemplate.">, v.CheckAction<{
5031
+ name: string;
5032
+ newNameTemplate?: string | undefined;
5033
+ newTagTemplate?: string | undefined;
5034
+ digestTemplate?: string | undefined;
5035
+ }, "newTagTemplate and digestTemplate are mutually exclusive on an image override.">]>, undefined>, undefined>;
5036
+ /** Helm releases to install — workspace-shared singletons merged with the service's per-env ones. */
5037
+ readonly helmReleases: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
5038
+ /** Release name. */
5039
+ readonly name: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>]>;
5040
+ /** Chart ref: an OCI ref (`oci://…`) or, with `repo`, a `repo/chart` name. */
5041
+ readonly chart: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>]>;
5042
+ /** Chart repo URL; absent ⇒ `chart` is an OCI ref. */
5043
+ readonly repo: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 2000, undefined>]>, undefined>;
5044
+ /** PINNED chart version, e.g. `1.2.3` / `v1.2.3` (floating tags like `latest`/`^1.0` rejected). */
5045
+ 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.">]>;
5046
+ /** Namespace to install into, templated; absent ⇒ the environment namespace. */
5047
+ readonly namespaceTemplate: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 500, undefined>]>, undefined>;
5048
+ /** Inline `--values` overrides. */
5049
+ readonly values: v.OptionalSchema<v.RecordSchema<v.StringSchema<undefined>, v.UnknownSchema, undefined>, undefined>;
5050
+ /** Templated `--set` overrides. */
5051
+ readonly set: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
5052
+ /** Dotted `--set` path, e.g. `config.rateLimit.enabled`. */
5053
+ readonly path: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>]>;
5054
+ /** The value, templated over the provision vars. */
5055
+ readonly valueTemplate: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MaxLengthAction<string, 2000, undefined>]>;
5056
+ }, undefined>, undefined>, undefined>;
5057
+ /** Secret-bundle-backed values folded in at provision time (`--set <path>=<secret>`). */
5058
+ readonly valuesSecretRefs: v.OptionalSchema<v.ArraySchema<v.ObjectSchema<{
5059
+ readonly path: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>]>;
5060
+ readonly secretRef: v.ObjectSchema<{
5061
+ readonly key: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.RegexAction<string, undefined>, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 64, undefined>]>;
5062
+ }, undefined>;
5063
+ }, undefined>, undefined>, undefined>;
5064
+ readonly scope: v.OptionalSchema<v.PicklistSchema<["per-environment", "shared"], undefined>, undefined>;
5065
+ }, undefined>, undefined>, undefined>;
5066
+ /** Secrets fed in before apply (a `Secret` resource or a `secretGenerator` `.env`). */
5067
+ readonly secretInjections: v.OptionalSchema<v.ArraySchema<v.VariantSchema<"mode", [v.ObjectSchema<{
5068
+ readonly mode: v.LiteralSchema<"secret", undefined>;
5069
+ /** Target Secret name in the namespace. */
5070
+ readonly secretName: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>]>;
5071
+ /** Secret `type`; absent ⇒ `Opaque`. */
5072
+ readonly secretType: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MinLengthAction<string, 1, undefined>]>, undefined>;
5073
+ readonly entries: v.ArraySchema<v.SchemaWithPipe<readonly [v.ObjectSchema<{
5074
+ /** Key inside the rendered Secret / `.env`. */
5075
+ readonly key: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.RegexAction<string, undefined>, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 256, undefined>]>;
5076
+ /** Resolve the value from the workspace encrypted bundle by key. */
5077
+ readonly secretRef: v.OptionalSchema<v.ObjectSchema<{
5078
+ readonly key: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.RegexAction<string, undefined>, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 64, undefined>]>;
5079
+ }, undefined>, undefined>;
5080
+ /** OR a non-secret value, templated over the provision vars. */
5081
+ readonly valueTemplate: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MaxLengthAction<string, 2000, undefined>]>, undefined>;
5082
+ }, undefined>, v.CheckAction<{
5083
+ key: string;
5084
+ secretRef?: {
5085
+ key: string;
5086
+ } | undefined;
5087
+ valueTemplate?: string | undefined;
5088
+ }, "a secret entry must set exactly one of secretRef or valueTemplate.">]>, undefined>;
5089
+ }, undefined>, v.ObjectSchema<{
5090
+ readonly mode: v.LiteralSchema<"generatorEnvFile", undefined>;
5091
+ /**
5092
+ * Repo-relative path within the overlay tree to write the `KEY=value` env file the
5093
+ * overlay's `secretGenerator` reads (e.g. `overlays/<env>/<component>/.env`). The
5094
+ * overlay names the Secret.
5095
+ */
5096
+ readonly envFilePath: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.TrimAction, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 500, undefined>]>;
5097
+ readonly entries: v.ArraySchema<v.SchemaWithPipe<readonly [v.ObjectSchema<{
5098
+ /** Key inside the rendered Secret / `.env`. */
5099
+ readonly key: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.RegexAction<string, undefined>, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 256, undefined>]>;
5100
+ /** Resolve the value from the workspace encrypted bundle by key. */
5101
+ readonly secretRef: v.OptionalSchema<v.ObjectSchema<{
5102
+ readonly key: v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.RegexAction<string, undefined>, v.MinLengthAction<string, 1, undefined>, v.MaxLengthAction<string, 64, undefined>]>;
5103
+ }, undefined>, undefined>;
5104
+ /** OR a non-secret value, templated over the provision vars. */
5105
+ readonly valueTemplate: v.OptionalSchema<v.SchemaWithPipe<readonly [v.StringSchema<undefined>, v.MaxLengthAction<string, 2000, undefined>]>, undefined>;
5106
+ }, undefined>, v.CheckAction<{
5107
+ key: string;
5108
+ secretRef?: {
5109
+ key: string;
5110
+ } | undefined;
5111
+ valueTemplate?: string | undefined;
5112
+ }, "a secret entry must set exactly one of secretRef or valueTemplate.">]>, undefined>;
5113
+ }, undefined>], undefined>, undefined>, undefined>;
4435
5114
  }, undefined>;
4436
5115
  }, undefined>, v.ObjectSchema<{
4437
5116
  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">]>;