feature: Accept term input
This is a draft PR so contributors can play around with it. It gives the terminal the ability to accept input and also opens up a stateful session with the container.
In order to make the docker session stateful a socket is attached to the container on initialization. Then commands are written by os to the socket, the program blocks for 100ms and then os reads from the socket. This is not proper for production code, but this just serves as an example for people to see the functionality and if they think it's worth pursuing. In a production setting there would need to be a separate long lived thread that polls the socket for available data.
I previously closed a similar PR because the workflow I use when playing around is a separate interactive shell with
docker exec -it <container_name> bash
which allows me to also run a text editor so I can start a task, wait, view the changes, edit them if I want and repeat
See: https://www.figma.com/file/iM5UBG1lnpg2sgE3cFnF1P/OpenDevin?type=design&node-id=7381%3A45778&mode=design&t=UnZ2CWeMB5xTlxwI-1