ServerMessage:
    | {
        info: ProcessSessionInfo;
        type: "session_created";
    }
    | {
        data: string;
        session_id: string;
        type: "session_output";
    }
    | {
        previous_state: ProcessState;
        recent_output: string;
        session_id: string;
        session_name: string;
        state: ProcessState;
        type: "session_state_change";
    }
    | {
        exit_code: number | null;
        session_id: string;
        type: "session_ended";
    }
    | {
        sessions: ProcessSessionInfo[];
        type: "session_list";
    }
    | {
        status: ProcessSessionInfo & {
            recent_output: string;
        };
        type: "session_status";
    }
    | {
        cols: number;
        rows: number;
        session_id: string;
        type: "session_resized";
    }
    | {
        error: string;
        type: "error";
    }