Sounds like you just need to change the attributes, which you can do with setNodeType (pass null for the node type to preserve the existing type, but provide a new set of attributes). Lifting and then wrapping is very unlikely to work – the content of the node may not even be allowed as content of the parent node.
The issue is that unlike center and right which wrap their content, there actually shouldn’t be any left aligned nodes - that is aligning to the left needs to be a lift out of the align attribute node.
The reason is that if you align to the left on any line of for example a centered block, it should move the entire centered block to the left, but if you align to the center on any line of a left aligned block it should only center that line.
Basically aligning to the left needs to removes alignment from the entire centered/righted block, where as aligning a left (unaligned) line to the center/right wraps just that line.
So unless I’m missing something I have to lift which I am not able to successfully achieve