11import { randomUUID } from "crypto" ;
22import { env as stdEnv } from "std-env" ;
33import { z } from "zod" ;
4-
5- const BoolEnv = z . preprocess ( ( val ) => {
6- if ( typeof val !== "string" ) {
7- return val ;
8- }
9-
10- return [ "true" , "1" ] . includes ( val . toLowerCase ( ) . trim ( ) ) ;
11- } , z . boolean ( ) ) ;
4+ import { AdditionalEnvVars , BoolEnv } from "./envUtil.js" ;
125
136const Env = z . object ( {
147 // This will come from `spec.nodeName` in k8s
@@ -26,9 +19,15 @@ const Env = z.object({
2619 . transform ( ( s ) => z . enum ( [ "http" , "https" ] ) . parse ( s . toLowerCase ( ) ) )
2720 . default ( "http" ) ,
2821 TRIGGER_WORKLOAD_API_DOMAIN : z . string ( ) . optional ( ) , // If unset, will use orchestrator-specific default
22+ TRIGGER_WORKLOAD_API_HOST_INTERNAL : z . string ( ) . default ( "0.0.0.0" ) ,
2923 TRIGGER_WORKLOAD_API_PORT_INTERNAL : z . coerce . number ( ) . default ( 8020 ) , // This is the port the workload API listens on
3024 TRIGGER_WORKLOAD_API_PORT_EXTERNAL : z . coerce . number ( ) . default ( 8020 ) , // This is the exposed port passed to the run controller
3125
26+ // Runner settings
27+ RUNNER_HEARTBEAT_INTERVAL_SECONDS : z . coerce . number ( ) . optional ( ) ,
28+ RUNNER_SNAPSHOT_POLL_INTERVAL_SECONDS : z . coerce . number ( ) . optional ( ) ,
29+ RUNNER_ADDITIONAL_ENV_VARS : AdditionalEnvVars , // optional (csv)
30+
3231 // Dequeue settings (provider mode)
3332 TRIGGER_DEQUEUE_ENABLED : BoolEnv . default ( "true" ) ,
3433 TRIGGER_DEQUEUE_INTERVAL_MS : z . coerce . number ( ) . int ( ) . default ( 1000 ) ,
@@ -41,6 +40,7 @@ const Env = z.object({
4140 DOCKER_NETWORK : z . string ( ) . default ( "host" ) ,
4241 OTEL_EXPORTER_OTLP_ENDPOINT : z . string ( ) . url ( ) ,
4342 ENFORCE_MACHINE_PRESETS : z . coerce . boolean ( ) . default ( false ) ,
43+ KUBERNETES_IMAGE_PULL_SECRETS : z . string ( ) . optional ( ) , // csv
4444
4545 // Used by the resource monitor
4646 OVERRIDE_CPU_TOTAL : z . coerce . number ( ) . optional ( ) ,
@@ -53,7 +53,10 @@ const Env = z.object({
5353 EPHEMERAL_STORAGE_SIZE_REQUEST : z . string ( ) . default ( "2Gi" ) ,
5454
5555 // Metrics
56+ METRICS_ENABLED : BoolEnv . default ( true ) ,
5657 METRICS_COLLECT_DEFAULTS : BoolEnv . default ( true ) ,
58+ METRICS_HOST : z . string ( ) . default ( "127.0.0.1" ) ,
59+ METRICS_PORT : z . coerce . number ( ) . int ( ) . default ( 9090 ) ,
5760
5861 // Pod cleaner
5962 POD_CLEANER_ENABLED : BoolEnv . default ( true ) ,
@@ -63,6 +66,9 @@ const Env = z.object({
6366 // Failed pod handler
6467 FAILED_POD_HANDLER_ENABLED : BoolEnv . default ( true ) ,
6568 FAILED_POD_HANDLER_RECONNECT_INTERVAL_MS : z . coerce . number ( ) . int ( ) . default ( 1000 ) ,
69+
70+ // Debug
71+ DEBUG : BoolEnv . default ( false ) ,
6672} ) ;
6773
6874export const env = Env . parse ( stdEnv ) ;
0 commit comments