Cool, I started working on something similar a while back but I didn't get past handling generics. Like if you have a node<T> with two T inputs and a T[] output, then when you attach a number to an input, the other input's type becomes number too and the output becomes number[]. That could need to propagate to connected nodes, too. Also when you disconnect a node, you would want to determine whether T must still be a number.
Is that something you're handling in your project? Do you have any pointers?