I know this question is pretty much similar to the one, that was asked 5 years ago. I'd like to share my research and ask, if there are any movements in this fields since then? Or maybe workarounds?
So, basically, the basic answer is no, because Bitcoin Script just have control over restricting/allowing to spend particular input and by design it has no knowledge of outputs, current transaction might hold.
One workaround was to add
OP_CHECKTEMPLATEVERIFY, that will check transaction hash of current transaction against the one, that was in the script on creation. That way, you can be sure, that output is fixed against certain template. As of time of writing, it is merged in bitcoin-inquisition:24.0 and not available on Mainnet (unless I miss something).
As for OP_CONSTRAINDESTINATION, it is even not implemented, just proposal somewhere without any movement.
Another proposal was to generate PK of receiver and somehow encode and share, but it requires trusted setup, that makes the whole idea pointless.
Do you know any recent advancement in this field, that I might miss in my analysis, that might help restrict output of transaction from Bitcoin Script?