proto/idb.proto (786 lines of code) (raw):

/* * Copyright (c) Meta Platforms, Inc. and affiliates. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */ syntax = "proto3"; package idb; // The idb companion service definition. service CompanionService { // Management rpc connect(ConnectRequest) returns (ConnectResponse) {} rpc debugserver(stream DebugServerRequest) returns (stream DebugServerResponse) {} rpc dap(stream DapRequest) returns (stream DapResponse) {} rpc describe(TargetDescriptionRequest) returns (TargetDescriptionResponse) {} rpc install(stream InstallRequest) returns (stream InstallResponse) {} rpc instruments_run(stream InstrumentsRunRequest) returns (stream InstrumentsRunResponse) {} rpc log(LogRequest) returns (stream LogResponse) {} rpc xctrace_record(stream XctraceRecordRequest) returns (stream XctraceRecordResponse) {} // Interaction rpc accessibility_info(AccessibilityInfoRequest) returns (AccessibilityInfoResponse) {} rpc focus(FocusRequest) returns (FocusResponse) {} rpc hid(stream HIDEvent) returns (HIDResponse) {} rpc open_url(OpenUrlRequest) returns (OpenUrlRequest) {} rpc set_location(SetLocationRequest) returns (SetLocationResponse) {} rpc send_notification(SendNotificationRequest) returns (SendNotificationResponse) {} rpc simulate_memory_warning(SimulateMemoryWarningRequest) returns (SimulateMemoryWarningResponse) {} // Settings rpc approve(ApproveRequest) returns (ApproveResponse) {} rpc clear_keychain(ClearKeychainRequest) returns (ClearKeychainResponse) {} rpc contacts_update(ContactsUpdateRequest) returns (ContactsUpdateResponse) {} rpc setting(SettingRequest) returns (SettingResponse) {} // Sets settings rpc get_setting(GetSettingRequest) returns (GetSettingResponse) { } // Gets current setting rpc list_settings(ListSettingRequest) returns (ListSettingResponse) { } // Lists available settings // App rpc launch(stream LaunchRequest) returns (stream LaunchResponse) {} rpc list_apps(ListAppsRequest) returns (ListAppsResponse) {} rpc terminate(TerminateRequest) returns (TerminateResponse) {} rpc uninstall(UninstallRequest) returns (UninstallResponse) {} // Video/Audio rpc add_media(stream AddMediaRequest) returns (AddMediaResponse) {} rpc record(stream RecordRequest) returns (stream RecordResponse) {} rpc screenshot(ScreenshotRequest) returns (ScreenshotResponse) {} rpc video_stream(stream VideoStreamRequest) returns (stream VideoStreamResponse) {} // Crash Operations rpc crash_delete(CrashLogQuery) returns (CrashLogResponse) {} rpc crash_list(CrashLogQuery) returns (CrashLogResponse) {} rpc crash_show(CrashShowRequest) returns (CrashShowResponse) {} // xctest operations rpc xctest_list_bundles(XctestListBundlesRequest) returns (XctestListBundlesResponse) {} rpc xctest_list_tests(XctestListTestsRequest) returns (XctestListTestsResponse) {} rpc xctest_run(XctestRunRequest) returns (stream XctestRunResponse) {} // File Operations rpc ls(LsRequest) returns (LsResponse) {} rpc mkdir(MkdirRequest) returns (MkdirResponse) {} rpc mv(MvRequest) returns (MvResponse) {} rpc rm(RmRequest) returns (RmResponse) {} rpc pull(PullRequest) returns (stream PullResponse) {} rpc push(stream PushRequest) returns (PushResponse) {} rpc tail(stream TailRequest) returns (stream TailResponse) {} } message Payload { oneof source { string file_path = 1; bytes data = 2; string url = 3; Compression compression = 4; } enum Compression { GZIP = 0; ZSTD = 1; } } message ProcessOutput { enum Interface { STDOUT = 0; STDERR = 1; } Interface interface = 1; bytes data = 2; } message CompanionInfo { string udid = 1; bool is_local = 4; bytes metadata = 6; } enum Setting { LOCALE = 0; ANY = 1; // any kind of app or global setting } message SettingRequest { message HardwareKeyboard { bool enabled = 1; } message StringSetting { Setting setting = 1; string value = 2; string name = 3; // iff setting == ANY string domain = 4; // assumed "Apple Global Domain" if empty /* * Currently supported value_types and corresponding values are: * string <string_value> * data <hex_digits> * int[eger] <integer_value> * float <floating-point_value> * bool[ean] (true | false | yes | no) * date <date_rep> * array <value1> <value2> ... * array-add <value1> <value2> ... * dict <key1> <value1> <key2> <value2> ... * dict-add <key1> <value1> ... * * Check defaults set help for more details. */ string value_type = 5; } oneof setting { HardwareKeyboard hardwareKeyboard = 1; StringSetting stringSetting = 2; } } message SettingResponse {} message GetSettingRequest { Setting setting = 1; string name = 2; // iff setting == ANY string domain = 3; // assumed "Apple Global Domain" if empty } message GetSettingResponse { string value = 1; } message ListSettingRequest { Setting setting = 1; } message ListSettingResponse { repeated string values = 1; } message ListAppsRequest { bool suppress_process_state = 1; } message ListAppsResponse { repeated InstalledAppInfo apps = 1; } message InstalledAppInfo { string bundle_id = 1; string name = 2; repeated string architectures = 3; string install_type = 4; enum AppProcessState { UNKNOWN = 0; NOT_RUNNING = 1; RUNNING = 2; } AppProcessState process_state = 5; bool debuggable = 6; uint64 process_identifier = 7; } message InstallRequest { enum Destination { APP = 0; XCTEST = 1; DYLIB = 2; DSYM = 3; FRAMEWORK = 4; } message LinkDsymToBundle { enum BundleType { APP = 0; XCTEST = 1; } BundleType bundle_type = 1; string bundle_id = 2; } oneof value { Destination destination = 1; Payload payload = 2; string name_hint = 3; bool make_debuggable = 4; string bundle_id = 5; //(2022-03-02) REMOVE, For back compatibility only. // Link dSYM to app bundle_id LinkDsymToBundle link_dsym_to_bundle = 6; } } message InstallResponse { string name = 1; string uuid = 2; double progress = 3; } message ScreenshotRequest {} message ScreenshotResponse { bytes image_data = 1; string image_format = 2; } message FocusRequest {} message FocusResponse {} message Point { double x = 1; double y = 2; } message AccessibilityInfoRequest { enum Format { LEGACY = 0; NESTED = 1; } Point point = 2; Format format = 3; } message AccessibilityInfoResponse { string json = 1; } message ApproveRequest { enum Permission { PHOTOS = 0; CAMERA = 1; CONTACTS = 2; URL = 3; LOCATION = 4; NOTIFICATION = 5; MICROPHONE = 6; } string bundle_id = 1; repeated Permission permissions = 2; string scheme = 3; } message ApproveResponse {} message ClearKeychainRequest {} message ClearKeychainResponse {} message SetLocationRequest { Location location = 1; } message Location { double latitude = 1; double longitude = 2; } message SetLocationResponse {} message UninstallRequest { string bundle_id = 1; } message UninstallResponse {} message TerminateRequest { string bundle_id = 1; } message TerminateResponse {} message OpenUrlRequest { string url = 1; } message OpenUrlResponse {} message ContactsUpdateRequest { Payload payload = 1; } message ContactsUpdateResponse {} message TargetDescriptionRequest { bool fetch_diagnostics = 1; } message TargetDescriptionResponse { TargetDescription target_description = 1; CompanionInfo companion = 2; } message HIDEvent { enum HIDDirection { DOWN = 0; UP = 1; } message HIDTouch { Point point = 1; } enum HIDButtonType { APPLE_PAY = 0; HOME = 1; LOCK = 2; SIDE_BUTTON = 3; SIRI = 4; } message HIDButton { HIDButtonType button = 1; } message HIDKey { uint64 keycode = 1; } message HIDPressAction { oneof action { HIDTouch touch = 1; HIDButton button = 2; HIDKey key = 3; } } message HIDPress { HIDPressAction action = 1; HIDDirection direction = 2; } message HIDSwipe { Point start = 1; Point end = 2; double delta = 5; double duration = 6; } message HIDDelay { double duration = 1; } oneof event { HIDPress press = 1; HIDSwipe swipe = 2; HIDDelay delay = 3; } } message HIDResponse {} message ConnectRequest { map<string, string> metadata = 1; string local_file_path = 4; } message ConnectResponse { CompanionInfo companion = 1; } message ScreenDimensions { uint64 width = 1; uint64 height = 2; double density = 3; uint64 width_points = 4; uint64 height_points = 5; } message TargetDescription { string udid = 1; string name = 2; ScreenDimensions screen_dimensions = 3; string state = 4; string target_type = 5; string os_version = 6; string architecture = 7; bytes extended = 9; bytes diagnostics = 10; } message LogRequest { enum Source { TARGET = 0; COMPANION = 1; } repeated string arguments = 1; Source source = 2; } message LogResponse { bytes output = 1; } message RecordRequest { message Start { string file_path = 1; } message Stop {} oneof control { Start start = 1; Stop stop = 2; } } message RecordResponse { oneof output { bytes log_output = 1; Payload payload = 2; } } message VideoStreamRequest { enum Format { H264 = 0; RBGA = 1; MJPEG = 2; MINICAP = 3; I420 = 4; } message Start { string file_path = 1; uint64 fps = 2; Format format = 3; double compression_quality = 4; double scale_factor = 5; double avg_bitrate = 6; } message Stop {} oneof control { Start start = 1; Stop stop = 2; } } message VideoStreamResponse { oneof output { bytes log_output = 1; Payload payload = 2; } } message LaunchRequest { message Start { string bundle_id = 1; map<string, string> env = 2; repeated string app_args = 3; bool foreground_if_running = 4; bool wait_for = 5; bool wait_for_debugger = 6; } message Stop {} oneof control { Start start = 1; Stop stop = 2; } } message LaunchResponse { ProcessOutput output = 3; DebuggerInfo debugger = 4; } message AddMediaRequest { Payload payload = 1; } message AddMediaResponse {} message InstrumentsRunRequest { message InstrumentsTimings { double terminate_timeout = 1; double launch_retry_timeout = 2; double launch_error_timeout = 3; double operation_duration = 4; } message Start { string template_name = 2; string app_bundle_id = 3; map<string, string> environment = 4; repeated string arguments = 5; InstrumentsTimings timings = 6; repeated string tool_arguments = 7; } message Stop { repeated string post_process_arguments = 1; } oneof control { Start start = 1; Stop stop = 2; } } message InstrumentsRunResponse { enum State { UNKNOWN = 0; RUNNING_INSTRUMENTS = 1; POST_PROCESSING = 2; } oneof output { bytes log_output = 1; Payload payload = 2; State state = 3; } } message XctraceRecordRequest { message LauchProcess { string process_to_launch = 1; repeated string launch_args = 2; string target_stdin = 3; string target_stdout = 4; map<string, string> process_env = 5; } message Target { oneof target { bool all_processes = 1; string process_to_attach = 2; LauchProcess launch_process = 3; } } message Start { string template_name = 1; double time_limit = 2; string package = 3; Target target = 4; } message Stop { double timeout = 1; repeated string args = 2; } oneof control { Start start = 1; Stop stop = 2; } } message XctraceRecordResponse { enum State { UNKNOWN = 0; RUNNING = 1; PROCESSING = 2; } oneof output { bytes log = 1; Payload payload = 2; State state = 3; } } message DebugServerRequest { message Start { string bundle_id = 1; } message Status {} message Stop {} message Pipe { bytes data = 1; } oneof control { Start start = 1; Stop stop = 2; Status status = 3; Pipe pipe = 4; } } message DebugServerResponse { message Pipe { bytes data = 1; } message Status { repeated string lldb_bootstrap_commands = 1; } oneof control { Status status = 1; Pipe pipe = 2; } } // crashes message CrashShowRequest { string name = 1; } message CrashLogResponse { repeated CrashLogInfo list = 1; } message CrashLogInfo { string name = 1; string bundle_id = 2; string process_name = 3; string parent_process_name = 4; uint64 process_identifier = 5; uint64 parent_process_identifier = 6; uint64 timestamp = 7; } message CrashShowResponse { CrashLogInfo info = 1; string contents = 2; } message CrashLogQuery { uint64 since = 1; uint64 before = 2; string bundle_id = 3; string name = 4; } // xctest message XctestListBundlesRequest {} message XctestListBundlesResponse { message Bundles { string name = 1; string bundle_id = 2; repeated string architectures = 3; } repeated Bundles bundles = 1; } message XctestListTestsRequest { string bundle_name = 1; string app_path = 2; } message XctestListTestsResponse { repeated string names = 1; } message XctestRunRequest { message Logic {} message Application { string app_bundle_id = 1; } message UI { string app_bundle_id = 1; string test_host_app_bundle_id = 2; } message Mode { oneof mode { Logic logic = 1; Application application = 2; UI ui = 3; } } message CodeCoverage { enum Format { EXPORTED = 0; RAW = 1; } bool collect = 1; Format format = 2; } Mode mode = 1; string test_bundle_id = 2; repeated string tests_to_run = 3; repeated string tests_to_skip = 4; repeated string arguments = 5; map<string, string> environment = 6; uint64 timeout = 7; bool report_activities = 8; bool collect_coverage = 9; bool report_attachments = 10; bool collect_logs = 11; bool wait_for_debugger = 12; CodeCoverage code_coverage = 13; } message XctestRunResponse { message TestRunInfo { message TestRunFailureInfo { string failure_message = 1; string file = 2; uint64 line = 3; } message TestAttachment { bytes payload = 1; double timestamp = 2; string name = 3; string uniform_type_identifier = 4; } message TestActivity { string title = 1; double duration = 2; string uuid = 3; string activity_type = 4; double start = 5; double finish = 6; string name = 7; repeated TestAttachment attachments = 8; repeated TestActivity sub_activities = 9; } enum Status { PASSED = 0; FAILED = 1; CRASHED = 2; } Status status = 1; string bundle_name = 2; string class_name = 3; string method_name = 4; double duration = 5; TestRunFailureInfo failure_info = 6; repeated string logs = 7; repeated TestActivity activityLogs = 8; } enum Status { RUNNING = 0; TERMINATED_NORMALLY = 1; TERMINATED_ABNORMALLY = 2; } Status status = 1; repeated TestRunInfo results = 2; repeated string log_output = 3; Payload result_bundle = 4; string coverage_json = 5; Payload log_directory = 6; DebuggerInfo debugger = 7; Payload code_coverage_data = 8; } // File message FileContainer { enum Kind { NONE = 0; APPLICATION = 1; ROOT = 2; MEDIA = 3; CRASHES = 4; PROVISIONING_PROFILES = 5; MDM_PROFILES = 6; SPRINGBOARD_ICONS = 7; WALLPAPER = 8; DISK_IMAGES = 9; GROUP_CONTAINER = 10; APPLICATION_CONTAINER = 11; AUXILLARY = 12; XCTEST = 13; DYLIB = 14; DSYM = 15; FRAMEWORK = 16; SYMBOLS = 17; } Kind kind = 1; string bundle_id = 2; } message FileInfo { string path = 1; } message FileListing { FileInfo parent = 1; repeated FileInfo files = 2; } message LsResponse { repeated FileInfo files = 1; repeated FileListing listings = 2; } message LsRequest { string path = 2; FileContainer container = 3; repeated string paths = 4; } message MkdirRequest { string path = 2; FileContainer container = 3; } message MkdirResponse {} message MvRequest { repeated string src_paths = 2; string dst_path = 3; FileContainer container = 4; } message MvResponse {} message RmRequest { repeated string paths = 2; FileContainer container = 3; } message RmResponse {} message PushRequest { message Inner { string dst_path = 2; FileContainer container = 3; } oneof value { Payload payload = 1; Inner inner = 2; } } message PushResponse {} message PullRequest { string src_path = 2; string dst_path = 3; FileContainer container = 4; } message PullResponse { Payload payload = 1; } message TailRequest { message Start { FileContainer container = 1; string path = 2; } message Stop {} oneof control { Start start = 1; Stop stop = 2; } } message TailResponse { bytes data = 1; } message DebuggerInfo { uint64 pid = 1; string host = 2; uint64 port = 3; } message SendNotificationRequest { string bundle_id = 1; string json_payload = 2; } message SendNotificationResponse {} message DapRequest { message Start { string debugger_pkg_id = 1; } message Pipe { bytes data = 1; } message Stop {} oneof control { Start start = 1; Pipe pipe = 2; Stop stop = 3; } } message DapResponse { message Event { string desc = 1; } message Pipe { bytes data = 1; } oneof event { Event started = 1; Pipe stdout = 2; Event stopped = 3; } } message SimulateMemoryWarningRequest {} message SimulateMemoryWarningResponse {}