I don't see a built in way in CGA. In python, you could take the point of insertion and sample the heightmap at three nearby points (like forming a little triangle shape around the point). From three points you can get a plane (mathematically), and hence a normal vector too. You could store the normal vector as an object attribute on your point shape (or as three attributes for x,y,z, I guess). You'd want to first test to see if the vector points up or down (is z negative?) and reverse the vector if so.
To find the contour-aligned vector, you can use the cross product of the surface normal and a z unit vector, and for the upslope direction vector you cross that vector with the surface normal. But this is somewhat complicated... and I don't remember how to do cross products by hand anymore.