## C#6, 262 bytes

<!-- language-all: lang-cs -->

    string F(int x,int y)=>S(x,y)??"~<.,,>~~";string S(int x,int y)=>x<0|y<0?null:y<1?x<1?"":null:y<2?x<3?null:C(x):y<3&x>5?C(x/2)+C(x/2+x%2):S(x-1,y-2)!=null?S(x-1,y-2)+"<.,.> ":S(x-2,y-2)!=null?S(x-2,y-2)+",<..>, ":null;string C(int x)=>$"<{new string(',',x)}.> ";

Call `F()`. The other two functions are helpers. [repl.it demo](https://repl.it/E8L8/0)