syntax = "proto3"; // Executes a command. // Ensure the id field is unique for each new session. If a client reuses the id of an existing // session, the connection will be closed. // If env is provided, the environment variables will be set. // If tty_dimensions is included, we will spawn a tty for the command using the given dimensions. message NewSessionMessage { uint64 id = 1; string command = 2; repeated string args = 3; map env = 4; string cwd = 5; TTYDimensions tty_dimensions = 6; bool is_fork = 7; // Janky, but required for having custom handling of the bootstrap fork bool is_bootstrap_fork = 8; } // Sent when starting a session failed. message NewSessionFailureMessage { uint64 id = 1; enum Reason { Prohibited = 0; ResourceShortage = 1; } Reason reason = 2; string message = 3; } // Sent when a session has completed message SessionDoneMessage { uint64 id = 1; int64 exit_status = 2; } // Identifies a session with a PID and a title. // Can be sent multiple times when title changes. message IdentifySessionMessage { uint64 id = 1; uint64 pid = 2; string title = 3; } // Writes data to a session. message WriteToSessionMessage { uint64 id = 1; bytes data = 2; enum Source { Stdin = 0; Ipc = 1; } Source source = 3; } // Resizes the TTY of the session identified by the id. // The connection will be closed if a TTY was not requested when the session was created. message ResizeSessionTTYMessage { uint64 id = 1; TTYDimensions tty_dimensions = 2; } // CloseSessionInputMessage closes the stdin of the session by the ID. message CloseSessionInputMessage { uint64 id = 1; } message ShutdownSessionMessage { uint64 id = 1; string signal = 2; } // SessionOutputMessage carries data read from the stdout or stderr of the session identified by the id. message SessionOutputMessage { uint64 id = 1; enum Source { Stdout = 0; Stderr = 1; Ipc = 2; } Source source = 2; bytes data = 3; } message TTYDimensions { uint32 height = 1; uint32 width = 2; } // Initializes a new connection to a port or path message NewConnectionMessage { uint64 id = 1; uint64 port = 2; string path = 3; } // Sent when a connection has successfully established message ConnectionEstablishedMessage { uint64 id = 1; } // Sent when a connection fails message NewConnectionFailureMessage { uint64 id = 1; string message = 2; } // Sent for connection output message ConnectionOutputMessage { uint64 id = 1; bytes data = 2; } // Sent to close a connection message ConnectionCloseMessage { uint64 id = 1; } message NewServerMessage { uint64 id = 1; uint64 port = 2; string path = 3; } message NewServerFailureMessage { uint64 id = 1; string message = 2; } message ServerEstablishedMessage { uint64 id = 1; } message ServerCloseMessage { uint64 id = 1; string reason = 2; } message ServerConnectionEstablishedMessage { uint64 server_id = 1; uint64 connection_id = 2; }