# Adding a new SHELL message
These are the steps to add a new Command/Response pair:
- Add a new enum variant for `Command`
- Add a new implementation to turn the command into a wire message (`Command::into_wire`)
- Add a new enum variant for `Response`
- Add a new deserializable struct for response content
- Add an entry to match the `msg_type` in `WireMessage::into_response`
- Add `into_packets` tests in `wire.rs`
- Add `message_parsing` tests in `responses.rs`
# Messages requiring implementation
## Client -> Kernel (SHELL)
- [x] `kernel_info_request`
- [x] `execute_request`
- [x] `inspect_request`
- [x] `complete_request`
- [x] `history_request`
- [x] `is_complete_request`
- [x] `shutdown_request`
- [x] `comm_info_request`
- [ ] `interrupt_request`
## Kernel -> Client (SHELL)
- [x] `kernel_info_reply`
- [x] `execute_reply`
- [x] `inspect_reply`
- [x] `complete_reply`
- [x] `history_reply`
- [x] `is_complete_reply`
- [x] `shutdown_reply`
- [x] `comm_info_reply`
## Kernel -> Client (IOPUB)
- [x] `stream`
- [x] `status`
- [x] `execute_input`
- [x] `error`
- [x] `execute_result`
- [x] `clear_output`
- [ ] `display_data`
- [ ] `update_display_data`
## Kernel -> Client (STDIN)
- [ ] `input_request`
## Client -> Kernel (STDIN)
- [ ] `input_reply`
## Kernel -> Client (CONTROL)
- [ ] `interrupt_reply`