I wanted this too, but it really can't be done :\
There would need to be a bot signal account to check the data, and that bot signal account would need its own phone number. Signal has no concept of bot accounts to my knowledge- it would need to just be a regular account. And even ignoring that- Signal clients use libsignal, which has nearly zero documentation at all. Would require looking at the code of the signal desktop app to figure it out, which also has no documentation.
What about checking pages for contacts? Nope- they don't show any information about the contact, it just has buttons to open the apps.
I even looked into silly workarounds like "what if you made a sticker pack?" - here's a link to one I made a while ago, you may notice it actually does show details! https://signal.art/addstickers/#pack_id=f0ae652cb16b2f76458ca75dad6c41a4&pack_key=6886cbba813caef5d4ea3f8cc8d67db366630e1c6a964f2aed999553b23b1fd3
However- the author string is just any text at all. It's not actually guaranteed to be the username of the user, so it doesn't help us.
Basically- this would be an immense task, requiring dedicated Signal accounts (or maintainers giving the credentials to their main accounts to the doipjs library used by keyoxide) due to Signal's lack of support for bots, and would require using libraries that implement the full Signal protocol because literally everything about Signal is encrypted.