package domain import ( "errors" "math" "time" ) const maxExecutionTimeoutSeconds int64 = math.MaxInt64 / int64(time.Second) // ValidateExecutionTargetSettings validates source-neutral execution-setting // invariants on a resolved target. func ValidateExecutionTargetSettings(target ExecutionTarget) error { if !isFinite(target.Temperature) || target.Temperature < 0 || target.Temperature > 2 { return errors.New("temperature must be finite and between 0 and 2") } if target.MaxTokens < 0 { return errors.New("max_tokens must be greater than or equal to 0") } if !isFinite(target.TopP) || target.TopP < 0 || target.TopP > 1 { return errors.New("top_p must be finite and between 0 and 1") } if target.TimeoutSeconds < 0 { return errors.New("timeout_seconds must be greater than or equal to 0") } if int64(target.TimeoutSeconds) > maxExecutionTimeoutSeconds { return errors.New("timeout_seconds exceeds the maximum supported duration") } return nil } func isFinite(value float64) bool { return !math.IsNaN(value) && !math.IsInf(value, 0) }