in reply to wrapping any given shell

How about using the unix script command. Quote from the manual:
script makes a record of everything printed on your screen. The record is written to filename. If no file name is given, the record is saved in the file typescript. The script command forks and creates a sub-shell, according to the value of $SHELL, and records the text from this ses- sion. The script ends when the forked shell exits or when CTRL-D is typed.
--

Zigster