Hi Alex,
Thanks for the question. I think for what you are asking it would be best to just reimplement the LocalMPO type and specialize it for you case. It was written assuming that the states on both sides would be the conjugate of each other. So you can just copy that code and have it take two different MPS as input then generalize the code appropriately. You should also rename the type to something besides LocalMPO to avoid any redefinition issues.
Also, you are probably well aware of this, but the "effective Hamiltonian" or effective operator that will result from using two different states may not be Hermitian. This may be what you want for your algorithm, but just in case you were planning to use it in our DMRG code for some reason, it will assume a Hermitian operator and will give wrong results, hang, or crash if you give it a non-Hermitian operator.
Best,
Miles