def launch_app(
        device: Device,
        installation_info: _AppInstallationInfo,
        working_directory: _Path,
    ) -> _AppSession:
        """
        Launch an installed application on the specified device and create a DeviceSession.

        This method launches an application that has been previously installed on the device
        using the 'xcrun devicectl' command-line tool. It starts the app in console mode and
        returns a DeviceSession object representing the running application session.

        Parameters
        ----------
        device: Device
            The target device on which to launch the application.

        installation_info : AppInstallationInfo
            The result of a previous app installation, containing the bundle identifier
            and database UUID of the installed application.

        Returns
        -------
        AppSession:
            An AppSession object representing the launched application session. This object contains:
            - process: The subprocess object for the running 'xcrun devicectl' command.
            - device: The Device on which the app was launched.
            - bundle_identifier: The bundle ID of the launched application.
            - database_uuid: The database UUID of the launched application.

        """

        process = _DeviceCtl._run_command_async(
            f"xcrun devicectl device process launch --console -d {device.identifier} {installation_info.bundle_identifier}"
        )
        return _AppSession(
            process=process,
            device=device,
            installation_info=installation_info,
            working_directory=working_directory,
        )

        Launch an installed application on the specified device and create a DeviceSession.

        This method launches an application that has been previously installed on the device
        using the 'xcrun devicectl' command-line tool. It starts the app in console mode and
        returns a DeviceSession object representing the running application session.

        Parameters
        ----------
        device: Device
            The target device on which to launch the application.

        installation_info : AppInstallationInfo
            The result of a previous app installation, containing the bundle identifier
            and database UUID of the installed application.

        Returns
        -------
        AppSession:
            An AppSession object representing the launched application session. This object contains:
            - process: The subprocess object for the running 'xcrun devicectl' command.
            - device: The Device on which the app was launched.
            - bundle_identifier: The bundle ID of the launched application.
            - database_uuid: The database UUID of the launched application.

        
coremltools/models/ml_program/experimental/remote_device.py