let LogLevel = std.contract.custom ( fun label => fun value => let valid = ["trace", "debug", "info", "warn", "error"] in if std.array.any (fun x => x == value) valid then 'Ok value else 'Error { message = "Invalid log_level '%{value}'.\nValid values: trace | debug | info | warn | error" } ) in let Port = std.contract.custom ( fun label => fun value => if value >= 1 && value <= 65535 then 'Ok value else 'Error { message = "Invalid port '%{std.to_string value}'.\nValid range: 1 - 65535" } ) in { TlsConfig = { enabled | Bool, cert_path | String, key_path | String, }, ServerConfig = { host | String, port | Port, tls | TlsConfig, }, DatabaseConfig = { url | String, max_connections | Number, }, NatsConfig = { url | String, stream_name | String, }, AuthConfig = { jwt_secret | String, jwt_expiration_hours | Number, }, LoggingConfig = { level | LogLevel, json | Bool, }, MetricsConfig = { enabled | Bool, port | Port, }, NotificationConfig = { on_task_done | Array String | default = [], on_proposal_approved | Array String | default = [], on_proposal_rejected | Array String | default = [], on_agent_inactive | Array String | default = [], }, }