SYMBOL INDEX (463 symbols across 62 files) FILE: crab-benchmark-v0/dataset/android_subtasks.py function get_xml_etree (line 27) | def get_xml_etree(env) -> _Element | None: function check_contain_input_text (line 36) | def check_contain_input_text(text: str, env) -> bool: function check_contain_input_text_multiple (line 45) | def check_contain_input_text_multiple(text: str, env) -> bool: function check_contain_contact (line 54) | def check_contain_contact(name: str, env) -> bool: function check_current_package_name (line 90) | def check_current_package_name(name: str, env) -> bool: function check_ocr_results (line 98) | def check_ocr_results(text: str, env) -> bool: function check_current_message_page (line 103) | def check_current_message_page(title: str, env) -> bool: function check_message_text_box_contain (line 117) | def check_message_text_box_contain(text: str, env) -> bool: function check_message_text_box_empty (line 131) | def check_message_text_box_empty(env) -> bool: function check_send_message (line 147) | def check_send_message(title: str, message: str, env) -> bool: function check_note_content (line 166) | def check_note_content(content: str, env) -> bool: function check_bluetooth_name (line 188) | def check_bluetooth_name(content: str, env) -> bool: function check_map_direction_page (line 201) | def check_map_direction_page(from_des: str, to_des: str, env) -> bool: function check_dial_number (line 215) | def check_dial_number(phone_number: str, env) -> bool: function check_calendar_registered (line 229) | def check_calendar_registered(date: str, content: str, env) -> bool: function check_drive_registered (line 250) | def check_drive_registered(content: str, env) -> bool: function check_contact_registered (line 268) | def check_contact_registered(mail: str, name: str, env) -> bool: function check_calling_number (line 287) | def check_calling_number(phone_number: str, env) -> bool: function check_google_tasks_name (line 303) | def check_google_tasks_name(target: str, env) -> bool: function check_date (line 320) | def check_date(target: str, env) -> bool: function check_city_clock (line 340) | def check_city_clock(place_name: str, env) -> bool: function check_event (line 357) | def check_event(date: str, env) -> bool: function check_event_registered (line 374) | def check_event_registered(date: str, content: str, env) -> bool: function check_location (line 395) | def check_location(content: str, env) -> bool: function check_contain_city (line 406) | def check_contain_city(number: str, city: str, env) -> bool: function check_file (line 426) | def check_file(content: str, env) -> bool: function check_mail_sent (line 469) | def check_mail_sent(mail: str, content: str, env) -> bool: function distance_evaluator_generator (line 503) | def distance_evaluator_generator(place_name_1: str, place_name_2: str): function mail_evaluator_generator (line 513) | def mail_evaluator_generator(mail: str, content: str): function contact_evaluator_generator (line 523) | def contact_evaluator_generator(mail: str, name: str): FILE: crab-benchmark-v0/dataset/handmade_tasks.py function check_calendar_in_today (line 39) | def check_calendar_in_today(env) -> bool: function get_file_bullet_points (line 61) | def get_file_bullet_points(file_path: str) -> int | None: function check_blluet_point_match_calendar (line 82) | def check_blluet_point_match_calendar(file_path: str, env) -> bool: function check_node_exist (line 91) | def check_node_exist(node_query: str, env) -> bool: function check_new_jpg_files_in_dir (line 102) | def check_new_jpg_files_in_dir(directory) -> bool: function check_text_list_in_current_window_name (line 119) | def check_text_list_in_current_window_name(texts: list[str]) -> bool: function check_keep_notes_content (line 133) | def check_keep_notes_content(text: str, env) -> bool: function check_keep_notes_contain_fd (line 154) | def check_keep_notes_contain_fd(env) -> bool: function check_alarm_contains (line 178) | def check_alarm_contains(time: str, env) -> bool: function check_tap_text (line 192) | def check_tap_text(text: str, env) -> bool: function summarize_ubuntu_evaluator (line 207) | def summarize_ubuntu_evaluator(): function check_calendar_evaluator (line 218) | def check_calendar_evaluator(): function evaluator_97e6f333 (line 228) | def evaluator_97e6f333(): function evaluator_82efbd82 (line 248) | def evaluator_82efbd82(): function evaluator_515a5467 (line 264) | def evaluator_515a5467(): function evaluator_5a1eba49 (line 288) | def evaluator_5a1eba49(): function evaluator_c347f78a (line 302) | def evaluator_c347f78a(): function evaluator_bf83c176 (line 316) | def evaluator_bf83c176(): function evaluator_74bb11dd (line 347) | def evaluator_74bb11dd(): function evaluator_ca79febf (line 381) | def evaluator_ca79febf(): function evaluator_dfabf84c (line 404) | def evaluator_dfabf84c(): function evaluator_aab5555e (line 419) | def evaluator_aab5555e(): function get_root_usage (line 450) | def get_root_usage() -> str: function check_contain_input_text_and_get_df_result (line 459) | def check_contain_input_text_and_get_df_result(text: str, env) -> bool: function evaluator_fd0576be (line 473) | def evaluator_fd0576be(): function evaluator_7e08f7d4 (line 483) | def evaluator_7e08f7d4(): function evaluator_4957e964 (line 495) | def evaluator_4957e964(): FILE: crab-benchmark-v0/dataset/ubuntu_subtasks.py class ImageMatcher (line 43) | class ImageMatcher: method __init__ (line 49) | def __init__(self, top_k: int = 4096): method warp_corners_and_draw_matches (line 61) | def warp_corners_and_draw_matches( method _get_bounding_box (line 119) | def _get_bounding_box( method _resize_image (line 146) | def _resize_image( method get_resizing_functions (line 176) | def get_resizing_functions( method match_images (line 193) | def match_images( method load_and_convert_image (line 256) | def load_and_convert_image(self, filepath: str) -> np.ndarray: function from_env_load_and_save_file (line 278) | def from_env_load_and_save_file(env, file_path, output_dir="/tmp/local_s... function crop_image (line 322) | def crop_image(img: np.ndarray, bbox: List[int]) -> np.ndarray: function calculate_bbox_center (line 337) | def calculate_bbox_center(bbox: List[int]) -> Tuple[int, int]: function is_bbox_in_direction (line 353) | def is_bbox_in_direction(bbox_1: List[int], bbox_2: List[int], direction... function ocr_text_matching (line 381) | def ocr_text_matching( function convert_file_to_images (line 414) | def convert_file_to_images(file_path: str) -> List[str]: function cleanup_files (line 473) | def cleanup_files(files: List[str]): function is_valid_url (line 484) | def is_valid_url(url): function is_valid_image_data_uri (line 498) | def is_valid_image_data_uri(uri): function is_github_repo_url (line 507) | def is_github_repo_url(url): function get_rgb_values_outside_bbox (line 519) | def get_rgb_values_outside_bbox( function contains_required_strings (line 557) | def contains_required_strings(clipboard_content: str, required_strings: ... function verify_file_content_with_clipboard (line 575) | def verify_file_content_with_clipboard(file_path: str) -> bool: function verify_odt_file_content_with_clipboard (line 614) | def verify_odt_file_content_with_clipboard(file_path: str) -> bool: function verify_combined_image (line 656) | def verify_combined_image( function is_image_2_brighter (line 716) | def is_image_2_brighter(image_path_1: str, image_path_2: str) -> bool: function is_img_url_in_clipboard (line 743) | def is_img_url_in_clipboard() -> bool: function is_github_repo_url_in_clipboard (line 775) | def is_github_repo_url_in_clipboard(keyword: str) -> bool: function is_software_installed (line 797) | def is_software_installed(package_name: str) -> bool: function get_file_url_hash (line 810) | def get_file_url_hash(url): function download_and_verify_file (line 817) | def download_and_verify_file(url: str, file_path: str) -> bool: function download_from_clipboard_and_verify_file (line 838) | def download_from_clipboard_and_verify_file(file_path: str) -> bool: function check_color_scheme (line 865) | def check_color_scheme(assmue: str) -> bool: function check_text_in_current_window_name (line 874) | def check_text_in_current_window_name(text: str) -> bool: function check_current_window_process (line 885) | def check_current_window_process(assmue: str) -> bool: function check_file_exist (line 904) | def check_file_exist(file_path: str) -> bool: function check_file_content (line 909) | def check_file_content(file_path: str, content: str) -> bool: function empty_evaluator (line 918) | def empty_evaluator() -> bool: function is_process_open (line 923) | def is_process_open(process_name: str) -> bool: function check_app_usage_history (line 940) | def check_app_usage_history(app_name: str) -> bool: function check_process_closed (line 960) | def check_process_closed(app_name: str) -> bool: function verify_background (line 976) | def verify_background(photo_path: str) -> bool: function is_torch_matmul_example_copied_correctly (line 1007) | def is_torch_matmul_example_copied_correctly() -> bool: function check_directory_exists (line 1043) | def check_directory_exists(dir_path: str) -> bool: function verify_files_copied (line 1049) | def verify_files_copied(source_dir: str, target_dir: str, file_extension... function check_contain_input_text_list (line 1061) | def check_contain_input_text_list(texts: list[str], env) -> bool: function is_google_maps_url_in_clipboard (line 1085) | def is_google_maps_url_in_clipboard() -> bool: function check_contain_input_text (line 1098) | def check_contain_input_text(text: str, env) -> bool: function verify_country_data_in_ods (line 1120) | def verify_country_data_in_ods(country: str, file_path: str) -> bool: FILE: crab-benchmark-v0/main.py class CrabBenchmarkV0 (line 50) | class CrabBenchmarkV0(Experiment): method __init__ (line 51) | def __init__( method get_prompt (line 60) | def get_prompt(self): function get_benchmark (line 82) | def get_benchmark(env: str, ubuntu_url: str): FILE: crab/actions/android_actions.py function execute_adb (line 24) | def execute_adb(adb_command: str, env=None): function get_device_size (line 43) | def get_device_size(env): function setup (line 55) | def setup(env) -> None: function screenshot (line 60) | def screenshot(env) -> str: function tap (line 78) | def tap(element: int, env) -> None: function long_tap (line 92) | def long_tap(element: int, env) -> None: class SwipeDirection (line 107) | class SwipeDirection(str, Enum): class SwipeDist (line 114) | class SwipeDist(str, Enum): function swipe (line 121) | def swipe(element: int, direction: SwipeDirection, dist: SwipeDist, env)... function open_app_drawer (line 157) | def open_app_drawer(env) -> None: class AndroidKey (line 169) | class AndroidKey(str, Enum): function key_press (line 175) | def key_press(key: AndroidKey, env): function write_text (line 194) | def write_text(text: str, env) -> None: function stop_all_apps (line 209) | def stop_all_apps(env) -> None: FILE: crab/actions/crab_actions.py function submit (line 20) | def submit(content: str) -> None: function check_submit (line 31) | def check_submit(text: str, env) -> bool: function complete (line 40) | def complete() -> bool: function wait (line 48) | def wait() -> bool: function get_element_position (line 55) | def get_element_position(element_id, env): FILE: crab/actions/desktop_actions.py function click_position (line 30) | def click_position(x: int, y: int) -> None: function click (line 43) | def click(element: int, env) -> None: function right_click_position (line 56) | def right_click_position(x: int, y: int) -> None: function right_click (line 68) | def right_click(element: int, env) -> None: function double_click_position (line 84) | def double_click_position(x: int, y: int) -> None: function double_click (line 96) | def double_click(element: int, env) -> None: function mouse_scroll (line 112) | def mouse_scroll(click: int = 1) -> None: class KeyEnum (line 123) | class KeyEnum(str, Enum): function key_press (line 222) | def key_press(key: KeyEnum) -> None: function press_hotkey (line 237) | def press_hotkey(keys: list[KeyEnum]) -> None: function write_text (line 253) | def write_text(text: str) -> None: function search_application (line 267) | def search_application(name: str) -> None: function screenshot (line 285) | def screenshot() -> str: FILE: crab/actions/file_actions.py function save_base64_image (line 23) | def save_base64_image(image: str, path: str = "image.png") -> None: FILE: crab/actions/system_actions.py function delay (line 21) | def delay(time: float) -> None: function run_bash_command (line 26) | def run_bash_command(command: str) -> str: FILE: crab/actions/visual_prompt_actions.py function check_transformers_import (line 45) | def check_transformers_import() -> None: function _calculate_iou (line 53) | def _calculate_iou(box1: BoxType, box2: BoxType) -> float: function _calculate_center (line 68) | def _calculate_center(box: BoxType) -> tuple[int, int]: function _remove_invalid_boxes (line 72) | def _remove_invalid_boxes( function _filter_boxes_by_center (line 91) | def _filter_boxes_by_center( function _box_a_in_b (line 116) | def _box_a_in_b(a: BoxType, b: BoxType) -> bool: function _filter_boxes_by_overlap (line 120) | def _filter_boxes_by_overlap( function _filter_boxes_by_iou (line 138) | def _filter_boxes_by_iou( function _draw_boxes (line 157) | def _draw_boxes( function _get_grounding_dino_model (line 194) | def _get_grounding_dino_model( function _get_easyocr_model (line 212) | def _get_easyocr_model() -> easyocr.Reader: function get_groundingdino_boxes (line 216) | def get_groundingdino_boxes( function get_easyocr_boxes (line 264) | def get_easyocr_boxes( function groundingdino_easyocr (line 294) | def groundingdino_easyocr( function get_elements_prompt (line 333) | def get_elements_prompt( FILE: crab/agents/backend_models/__init__.py class BackendModelConfig (line 27) | class BackendModelConfig(BaseModel): function create_backend_model (line 67) | def create_backend_model(model_config: BackendModelConfig) -> BackendModel: FILE: crab/agents/backend_models/camel_model.py function _get_model_platform_type (line 35) | def _get_model_platform_type(model_platform_name: str) -> "ModelPlatform... function _get_model_type (line 45) | def _get_model_type(model_name: str) -> "str | ModelType": function _convert_action_to_schema (line 52) | def _convert_action_to_schema( function _convert_tool_calls_to_action_list (line 65) | def _convert_tool_calls_to_action_list( class CamelModel (line 80) | class CamelModel(BackendModel): method __init__ (line 81) | def __init__( method get_token_usage (line 102) | def get_token_usage(self) -> int: method reset (line 105) | def reset(self, system_message: str, action_space: list[Action] | None... method chat (line 131) | def chat(self, messages: list[tuple[str, MessageType]]) -> BackendOutput: FILE: crab/agents/backend_models/claude_model.py class ClaudeModel (line 30) | class ClaudeModel(BackendModel): method __init__ (line 31) | def __init__( method reset (line 55) | def reset(self, system_message: str, action_space: list[Action] | None... method chat (line 62) | def chat(self, message: list[Message] | Message) -> BackendOutput: method _construct_new_message (line 72) | def _construct_new_message(self, message: list[Message]) -> dict[str, ... method _fetch_from_memory (line 99) | def _fetch_from_memory(self) -> list[dict]: method get_token_usage (line 107) | def get_token_usage(self): method _record_message (line 110) | def _record_message( method _call_api (line 148) | def _call_api(self, request_messages: list[dict]) -> anthropic.types.M... method _generate_backend_output (line 172) | def _generate_backend_output( function _merge_request (line 196) | def _merge_request(request: list[dict]) -> list[dict]: function _convert_action_to_schema (line 207) | def _convert_action_to_schema(action_space): FILE: crab/agents/backend_models/gemini_model.py class GeminiModel (line 39) | class GeminiModel(BackendModel): method __init__ (line 40) | def __init__( method reset (line 64) | def reset(self, system_message: str, action_space: list[Action] | None... method chat (line 71) | def chat(self, message: list[Message] | Message) -> BackendOutput: method _construct_new_message (line 81) | def _construct_new_message(self, message: list[Message]) -> dict[str, ... method _generate_backend_output (line 94) | def _generate_backend_output(self, response_message: Content) -> Backe... method _fetch_from_memory (line 111) | def _fetch_from_memory(self) -> list[dict]: method get_token_usage (line 119) | def get_token_usage(self): method _record_message (line 122) | def _record_message( method _call_api (line 135) | def _call_api(self, request_messages: list) -> Content: function _convert_action_to_schema (line 164) | def _convert_action_to_schema(action_space: list[Action] | None) -> list... function _clear_schema (line 177) | def _clear_schema(schema_dict: dict) -> None: function _action_to_func_dec (line 188) | def _action_to_func_dec(action: Action) -> FunctionDeclaration: FILE: crab/agents/backend_models/openai_model.py class OpenAIModel (line 29) | class OpenAIModel(BackendModel): method __init__ (line 30) | def __init__( method reset (line 61) | def reset(self, system_message: str, action_space: list[Action] | None... method chat (line 72) | def chat(self, message: list[Message] | Message) -> BackendOutput: method get_token_usage (line 82) | def get_token_usage(self): method _record_message (line 85) | def _record_message( method _call_api (line 102) | def _call_api( method _fetch_from_memory (line 123) | def _fetch_from_memory(self) -> list[ChatCompletionMessage | dict]: method _construct_new_message (line 131) | def _construct_new_message(self, message: list[Message]) -> dict[str, ... method _generate_backend_output (line 155) | def _generate_backend_output( function _convert_action_to_schema (line 173) | def _convert_action_to_schema( class OpenAIModelJSON (line 185) | class OpenAIModelJSON(OpenAIModel): method __init__ (line 186) | def __init__( method reset (line 204) | def reset(self, system_message: str, action_space: list[Action] | None... method _record_message (line 208) | def _record_message( method _generate_backend_output (line 216) | def _generate_backend_output( class SGlangOpenAIModelJSON (line 242) | class SGlangOpenAIModelJSON(OpenAIModelJSON): method _construct_new_message (line 243) | def _construct_new_message(self, message: list[Message]) -> dict[str, ... FILE: crab/agents/policies/multi_agent_by_env.py class MultiAgentByEnvPolicy (line 24) | class MultiAgentByEnvPolicy(AgentPolicy): method __init__ (line 58) | def __init__( method reset (line 67) | def reset( method get_token_usage (line 99) | def get_token_usage(self): method get_backend_model_name (line 106) | def get_backend_model_name(self): method chat (line 113) | def chat( FILE: crab/agents/policies/multi_agent_by_func.py class MultiAgentByFuncPolicy (line 25) | class MultiAgentByFuncPolicy(AgentPolicy): method __init__ (line 42) | def __init__( method reset (line 51) | def reset( method get_token_usage (line 68) | def get_token_usage(self): method get_backend_model_name (line 74) | def get_backend_model_name(self): method chat (line 81) | def chat( FILE: crab/agents/policies/single_agent.py class SingleAgentPolicy (line 32) | class SingleAgentPolicy(AgentPolicy): method __init__ (line 86) | def __init__( method reset (line 107) | def reset( method get_token_usage (line 128) | def get_token_usage(self): method get_backend_model_name (line 131) | def get_backend_model_name(self): method chat (line 135) | def chat( FILE: crab/agents/utils.py function combine_multi_env_action_space (line 17) | def combine_multi_env_action_space( function decode_combined_action (line 33) | def decode_combined_action( function generate_action_prompt (line 53) | def generate_action_prompt(action_space: list[Action], expand: bool = Fa... function extract_text_and_code_prompts (line 70) | def extract_text_and_code_prompts(content: str) -> tuple[list[str], list... FILE: crab/benchmarks/template.py function is_system_state (line 21) | def is_system_state(env) -> bool: function check_submit_true (line 26) | def check_submit_true(env) -> bool: function _submit (line 36) | def _submit(content: bool) -> None: function check_sys0 (line 66) | def check_sys0(env) -> bool: function check_sys1 (line 71) | def check_sys1(env) -> bool: function check_sys2 (line 76) | def check_sys2(env) -> bool: FILE: crab/core/agent_policy.py class AgentPolicy (line 19) | class AgentPolicy(ABC): method chat (line 21) | def chat( method reset (line 27) | def reset( method get_token_usage (line 35) | def get_token_usage(self) -> int: ... method get_backend_model_name (line 38) | def get_backend_model_name(self) -> str: ... FILE: crab/core/backend_model.py class BackendModel (line 19) | class BackendModel(ABC): method chat (line 21) | def chat(self, contents: list[tuple[str, MessageType]]) -> BackendOutp... method reset (line 24) | def reset( method get_token_usage (line 31) | def get_token_usage(self): ... FILE: crab/core/benchmark.py class Benchmark (line 26) | class Benchmark: method __init__ (line 45) | def __init__( method start_task (line 116) | def start_task(self, task_id: str) -> tuple[Task, dict[str, list[Actio... method close_task (line 152) | def close_task(self) -> None: method get_env_descriptions (line 160) | def get_env_descriptions(self) -> dict[str, str]: method observe (line 167) | def observe(self) -> dict[str, dict[str, Any]]: method observe_with_prompt (line 180) | def observe_with_prompt( method evaluate (line 204) | def evaluate(self): method step (line 209) | def step( method reset (line 310) | def reset(self) -> None: method human_evaluation (line 315) | def human_evaluation(self, task_id: str) -> None: method export_action_space (line 329) | def export_action_space(self) -> dict[str, list[Action]]: method _verify_spaces (line 340) | def _verify_spaces(self) -> None: method _generate_action_map (line 360) | def _generate_action_map(self) -> None: method _get_env (line 366) | def _get_env( method _take_env_action (line 377) | def _take_env_action(self, action: Action) -> Any: method _set_env_action (line 384) | def _set_env_action(self, action: Action) -> None: method _reset_environments (line 393) | def _reset_environments(self): method _get_task_by_id (line 399) | def _get_task_by_id(self, task_id: str) -> Task: method _merge_dicts (line 405) | def _merge_dicts( method _merge_lists (line 414) | def _merge_lists(self, env_dict: dict[str, list]) -> dict[str, list]: function create_benchmark (line 422) | def create_benchmark(config: BenchmarkConfig) -> Benchmark: FILE: crab/core/csv_log.py class CSVLog (line 19) | class CSVLog: method __init__ (line 20) | def __init__(self, csv_path: Path, headers: list[str]) -> None: method write_row (line 28) | def write_row(self, data: list[Any]): FILE: crab/core/decorators.py function _decorator (line 19) | def _decorator(func, cls: type[Action], options: dict | None = None) -> ... function action (line 28) | def action(*args: Callable, env_name: str | None = None, local=False): function evaluator (line 36) | def evaluator( FILE: crab/core/environment.py class Environment (line 29) | class Environment: method __init__ (line 70) | def __init__( method step (line 98) | def step( method take_action (line 126) | def take_action( method observe (line 157) | def observe(self) -> dict[str, Any]: method observe_with_prompt (line 170) | def observe_with_prompt( method set_action (line 185) | def set_action(self, action: Action) -> None: method start (line 195) | def start(self) -> None: method close (line 199) | def close(self) -> None: method reset (line 203) | def reset(self) -> None: method action_space (line 211) | def action_space(self) -> list[Action]: method observation_space (line 215) | def observation_space(self) -> list[ClosedAction]: method _action_endpoint (line 218) | def _action_endpoint(self, action: Action, parameters: dict[str, Any]): function create_environment (line 251) | def create_environment(config): FILE: crab/core/exceptions.py class ActionNotFound (line 14) | class ActionNotFound(ValueError): class TaskNotFound (line 18) | class TaskNotFound(ValueError): FILE: crab/core/experiment.py class Experiment (line 58) | class Experiment: method __init__ (line 59) | def __init__( method write_message (line 71) | def write_message(self, message: str, step: int): method write_task_info_json (line 75) | def write_task_info_json(self, task_info_path: Path): method init_log_dir (line 98) | def init_log_dir(self): method get_prompt (line 126) | def get_prompt(self) -> dict[str, list[tuple[str, MessageType]]]: method execute_action (line 129) | def execute_action(self, response: list[ActionOutput]) -> bool: method log_prompt (line 156) | def log_prompt(self, prompt): method step (line 168) | def step(self, it) -> bool: method start_benchmark (line 186) | def start_benchmark(self): method write_exception_detail (line 222) | def write_exception_detail(self, exception_info: str): method write_current_log_row (line 228) | def write_current_log_row(self, action): method write_main_csv_row (line 245) | def write_main_csv_row(self, terminate_reason): FILE: crab/core/graph_evaluator.py class GraphEvaluator (line 23) | class GraphEvaluator: method __init__ (line 24) | def __init__( method reset (line 53) | def reset(self): method step (line 59) | def step( method get_next_source_nodes (line 91) | def get_next_source_nodes(self) -> set[Evaluator]: method entry (line 106) | def entry(self) -> bool: method update (line 109) | def update(self): method calculate_longest_unfinished_path_length (line 118) | def calculate_longest_unfinished_path_length(self) -> int: method calculate_step_to_complete (line 144) | def calculate_step_to_complete(self) -> int: method is_complete (line 173) | def is_complete(self) -> bool: method get_completeness (line 176) | def get_completeness(self) -> float: method get_completeness_per_action (line 179) | def get_completeness_per_action(self) -> float: method get_step_to_complete (line 182) | def get_step_to_complete(self) -> int: method get_longest_unfinished_path_length (line 185) | def get_longest_unfinished_path_length(self) -> int: method stat (line 188) | def stat(self) -> dict[str, Any]: method _check_submit (line 198) | def _check_submit(self, environment: Environment) -> bool: method compute_radar_stats (line 211) | def compute_radar_stats(self) -> dict[str, float]: method visualize (line 223) | def visualize(evaluators: list["GraphEvaluator"], path: str): FILE: crab/core/models/action.py class Action (line 41) | class Action(BaseModel): method __eq__ (line 74) | def __eq__(self, other): method __hash__ (line 77) | def __hash__(self): method __call__ (line 80) | def __call__(self, *args: Any, **kwargs: Any) -> Self: method _check_combinable (line 127) | def _check_combinable(a: "Action", b: "Action") -> None: method __rshift__ (line 135) | def __rshift__(self, other_action: "Action") -> "Action": method __add__ (line 169) | def __add__(self, other_action: "Action") -> "Action": method run (line 200) | def run(self, **kwargs) -> Any: method set_kept_param (line 210) | def set_kept_param(self, **params) -> Self: method get_required_params (line 217) | def get_required_params(self) -> dict[str, FieldInfo]: method to_openai_json_schema (line 225) | def to_openai_json_schema(self) -> dict: method to_raw_action (line 235) | def to_raw_action(self) -> dict[str, Any]: method from_function (line 244) | def from_function(cls, func: Callable) -> Self: function _check_no_param (line 315) | def _check_no_param(action: Action) -> Action: FILE: crab/core/models/agent_interface.py class MessageType (line 22) | class MessageType(IntEnum): class ActionOutput (line 30) | class ActionOutput(BaseModel): class BackendOutput (line 36) | class BackendOutput(BaseModel): class EnvironmentInfo (line 41) | class EnvironmentInfo(BaseModel): FILE: crab/core/models/benchmark_interface.py class StepResult (line 19) | class StepResult(BaseModel): FILE: crab/core/models/config.py class EnvironmentConfig (line 22) | class EnvironmentConfig(BaseModel): class VMEnvironmentConfig (line 32) | class VMEnvironmentConfig(BaseModel): class BenchmarkConfig (line 37) | class BenchmarkConfig(BaseModel): FILE: crab/core/models/evaluator.py class Evaluator (line 19) | class Evaluator(Action): method must_return_bool (line 24) | def must_return_bool(cls, v: type[BaseModel]) -> type[BaseModel]: method __and__ (line 29) | def __and__(self, other: "Evaluator") -> "Evaluator": method __or__ (line 39) | def __or__(self, other: "Evaluator") -> "Evaluator": method __invert__ (line 51) | def __invert__(self) -> "Evaluator": FILE: crab/core/models/task.py class Task (line 30) | class Task(BaseModel): method change_evaluator_to_graph (line 41) | def change_evaluator_to_graph(cls, evaluator: nx.DiGraph | Evaluator) ... method to_list (line 50) | def to_list(cls, action: Action | list[Action]) -> list[Action]: class SubTask (line 56) | class SubTask(BaseModel): method __hash__ (line 67) | def __hash__(self) -> int: method expand_attribute_type (line 72) | def expand_attribute_type( class SubTaskInstance (line 83) | class SubTaskInstance(BaseModel): method __hash__ (line 89) | def __hash__(self) -> int: method dump_model (line 93) | def dump_model(self) -> dict[str, Any]: class GeneratedTask (line 101) | class GeneratedTask(BaseModel): FILE: crab/core/task_generator.py class TaskGenerator (line 108) | class TaskGenerator: method __init__ (line 111) | def __init__( method from_config (line 130) | def from_config(cls, config_path: str) -> "TaskGenerator": method graph_generation (line 158) | def graph_generation(self, subtask_list: list[SubTask]) -> None: method combine (line 170) | def combine(self, current_description: str, target_description: str) -... method gpt_choice (line 193) | def gpt_choice( method random_walk (line 242) | def random_walk( method _fill_task_attributes (line 270) | def _fill_task_attributes(self, task: SubTask, kept_attribute: str): method _select_random_attributes (line 285) | def _select_random_attributes(self, type_dict: dict[str, str]) -> dict... method generate_single_node_task (line 306) | def generate_single_node_task(subtask: SubTask): method combine_subtask_list (line 328) | def combine_subtask_list(self, subtask_list: list[SubTask]): method combine_two_subtasks (line 369) | def combine_two_subtasks( method task_generation (line 462) | def task_generation( method generate_evaluator (line 508) | def generate_evaluator( method dump_generated_task (line 543) | def dump_generated_task( method get_task_from_file (line 576) | def get_task_from_file(self, file_name) -> Task: function load_subtasks (line 618) | def load_subtasks(version): function generate_length1_all (line 637) | def generate_length1_all( function generate_length1_by_id (line 659) | def generate_length1_by_id(generator: TaskGenerator, dir_path: str): function generate_length2_manual (line 684) | def generate_length2_manual(generator: TaskGenerator, dir_path: str): function main (line 728) | def main(): FILE: crab/environments/template.py function set_state (line 18) | def set_state(value: bool, env: Environment) -> None: function current_state (line 29) | def current_state(env: Environment) -> bool: FILE: crab/server/api.py function raw_action (line 32) | async def raw_action(request: Request): FILE: crab/server/config.py class Settings (line 19) | class Settings(BaseSettings): class EnvSettings (line 25) | class EnvSettings(BaseSettings): function parse_args (line 29) | def parse_args(): FILE: crab/server/exception_handlers.py function request_validation_exception_handler (line 26) | async def request_validation_exception_handler( function unhandled_exception_handler (line 44) | async def unhandled_exception_handler( FILE: crab/server/main.py function init (line 33) | def init(environment_config: EnvironmentConfig) -> FastAPI: FILE: crab/server/middleware.py function log_request_middleware (line 22) | async def log_request_middleware(request: Request, call_next): FILE: crab/server/utils.py function get_instances (line 19) | def get_instances(package, class_type): function get_benchmarks_environments (line 34) | def get_benchmarks_environments(): FILE: crab/utils/common.py function base64_to_image (line 22) | def base64_to_image(encoded: str) -> Image.Image: function image_to_base64 (line 26) | def image_to_base64(image: Image.Image) -> str: function callable_to_base64 (line 32) | def callable_to_base64(func: Callable) -> str: function base64_to_callable (line 36) | def base64_to_callable(encoded: str) -> Callable: function json_expand_refs (line 40) | def json_expand_refs(schema: dict | list, defs: dict | None = None): FILE: crab/utils/encryption.py function encrypt_message (line 26) | def encrypt_message(plaintext: str, key: bytes) -> str: function decrypt_message (line 43) | def decrypt_message(encrypted: str, key: bytes) -> str: function generate_key_from_env (line 64) | def generate_key_from_env() -> Optional[bytes]: FILE: crab/utils/measure.py function timed (line 29) | def timed(func): FILE: examples/multi_env.py function start_benchmark (line 22) | def start_benchmark(benchmark: Benchmark, agent: SingleAgentPolicy): FILE: examples/single_env.py function start_benchmark (line 22) | def start_benchmark(benchmark: Benchmark, agent: SingleAgentPolicy): FILE: licenses/update_license.py function fine_license_start_line (line 22) | def fine_license_start_line(lines: List[str], start_with: str) -> int: function find_license_end_line (line 29) | def find_license_end_line(lines: List[str], start_with: str) -> int: function update_license_in_file (line 36) | def update_license_in_file( function update_license_in_directory (line 76) | def update_license_in_directory( FILE: test/actions/test_visual_prompt_actions.py function test_get_groundingdino_boxes_single_image (line 28) | def test_get_groundingdino_boxes_single_image(): function test_get_groundingdino_boxes_multi_image (line 42) | def test_get_groundingdino_boxes_multi_image(): function test_groundingdino_easy_ocr (line 64) | def test_groundingdino_easy_ocr(image_name: str): FILE: test/agents/backend_models/test_camel_model.py function camel_model (line 21) | def camel_model(): function add (line 34) | def add(a: int, b: int): function test_action_chat (line 45) | def test_action_chat(camel_model): FILE: test/agents/backend_models/test_claude_model.py function claude_model_text (line 23) | def claude_model_text(): function add (line 35) | def add(a: int, b: int): function test_text_chat (line 46) | def test_text_chat(claude_model_text): function test_action_chat (line 67) | def test_action_chat(claude_model_text): FILE: test/agents/backend_models/test_gemini_model.py function gemini_model_text (line 23) | def gemini_model_text(): function add (line 36) | def add(a: int, b: int): function test_text_chat (line 47) | def test_text_chat(gemini_model_text): function test_action_chat (line 68) | def test_action_chat(gemini_model_text): FILE: test/agents/backend_models/test_openai_model.py function openai_model_text (line 90) | def openai_model_text(): function add (line 104) | def add(a: int, b: int): function test_text_chat (line 118) | def test_text_chat(mock_create, openai_model_text): function test_action_chat (line 147) | def test_action_chat(mock_create, openai_model_text): FILE: test/agents/policies/test_multi_agent_by_func.py function policy_fixture (line 23) | def policy_fixture(): function test_policy (line 46) | def test_policy(policy_fixture): FILE: test/agents/policies/test_mutli_agent_by_env.py function policy_fixture (line 23) | def policy_fixture(): function test_policy (line 46) | def test_policy(policy_fixture): FILE: test/agents/policies/test_single_agent.py function policy_fixture (line 76) | def policy_fixture(): function test_policy (line 100) | def test_policy(mock_create: MagicMock, policy_fixture): FILE: test/core/test_action.py function dummy_function (line 19) | def dummy_function(a: int, b: str = "default") -> int: function dummy_env_action (line 34) | def dummy_env_action(a: int, env: int) -> int: function test_action_to_openai_json_schema (line 48) | def test_action_to_openai_json_schema(): function test_from_function (line 65) | def test_from_function(): function test_chaining (line 74) | def test_chaining(): function add_a_to_b (line 80) | def add_a_to_b(a: int, b: int = 1) -> int: function multiply_a_to_b (line 85) | def multiply_a_to_b(a: int, b: int = 1) -> int: function test_closed_action (line 89) | def test_closed_action(): function test_kwargs_action (line 95) | def test_kwargs_action(): function test_chain_various_actions (line 100) | def test_chain_various_actions(): function test_kept_param (line 109) | def test_kept_param(): FILE: test/core/test_benchmark.py function benchmark (line 27) | def benchmark(request): function test_multi_env_benchmark_process (line 51) | def test_multi_env_benchmark_process(benchmark: Benchmark): function to_str (line 82) | def to_str(input: bool) -> str: function test_prompting_tool (line 87) | def test_prompting_tool(benchmark: Benchmark): FILE: test/core/test_evaluator.py function set_a (line 22) | def set_a(value: int) -> None: function dummy_evaluator1 (line 28) | def dummy_evaluator1() -> bool: function dummy_evaluator2 (line 42) | def dummy_evaluator2() -> bool: function dummy_evaluator3 (line 57) | def dummy_evaluator3() -> bool: function no_param_evaluator (line 72) | def no_param_evaluator() -> bool: function root_env (line 77) | def root_env() -> Environment: function test_evaluator_run (line 86) | def test_evaluator_run(): function test_evaluator_and (line 94) | def test_evaluator_and(): function test_evaluator_or (line 103) | def test_evaluator_or(): function test_evaluator_not (line 112) | def test_evaluator_not(): function test_chain_evaluator (line 119) | def test_chain_evaluator(root_env): FILE: test/core/test_utils.py function test_encrypt_decrypt (line 21) | def test_encrypt_decrypt(): FILE: test/server/test_api.py function mock_env (line 28) | def mock_env(): function test_raw_action_unencrypted (line 36) | def test_raw_action_unencrypted(mock_env): function test_raw_action_encrypted (line 44) | def test_raw_action_encrypted(mock_env, monkeypatch):