ARTEMIS turns natural-language instructions into reliable Android automation. It automates end-to-end workflows, captures logs, and integrates seamlessly with AI coding assistants such as Antigravity, Codex, and Claude Code. It also achieves 99%+ success rate on AndroidWorld Benchmark.
This report summarizes scanner evidence for google/artemis, a Python project with 11,346 GitHub stars. SynthScan examined 213,921 lines of code across 747 source files, recording 5055 pattern matches distributed across 22 syntactic categories. The legacy adjusted pattern signal is 30.1 (High pattern signal); it is not an authorship estimate.
Use the findings to ask whether maintainers can explain intent, verify dependencies, simplify unnecessary scaffolding, and focus review effort. Risk Payload v1 adds ownership, supply-chain, over-engineering, and review-effort vectors when available. These are prompts for human verification, not probabilities, security findings, or measured maintenance costs.
Use each vector to guide manual verification of the underlying findings.
Can maintainers explain intent, assumptions, and trade-offs? 3199 finding(s).
Are imports declared and package/API names verified? 561 finding(s).
Are wrappers, guards, and repeated structures necessary? 3575 finding(s).
Which changes need focused human review? 5055 finding(s).
Run additional scans to build a history of the legacy pattern signal. Score changes are not a measure of AI adoption or code quality.
Groups findings by configured severity weight. Severity is not a confidence estimate, security rating, or proof that a package is missing. Verify imports against the project's manifests and inspect each finding in its local design context.
This horizontal bar chart shows where configured pattern scores accumulate across directories. Treat the bars as locations to inspect, not as evidence of authorship or code quality. Use the file-level findings to decide whether a directory needs a focused ownership, dependency, complexity, or review check.
The scanner identified 5055 distinct pattern matches across 22 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a detector match to inspect in context. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.
Reading the findings table: The Severity column indicates the configured finding weight (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — legacy comment-context matches receive a ×1.5 score weight. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier under the legacy scoring model.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …round/backend_manager/app/services/bigquery_service.py | 54 | def _ensure_dataset_and_table(self): | CODE |
| LOW | …end_manager/app/services/cloud_orchestrator_service.py | 74 | async def create_new_cuttlefish_emulator( | CODE |
| LOW | …end_manager/app/services/cloud_orchestrator_service.py | 140 | async def create_cuttlefish_instance( | CODE |
| LOW | …end_manager/app/services/cloud_orchestrator_service.py | 204 | async def destroy_cuttlefish_instance(self, session_id: str) -> None: | CODE |
| LOW | artemis/clients/accessibility_client.py | 107 | def normalize_helper_elements(elements: Any) -> list[dict[str, Any]]: | CODE |
| LOW | artemis/clients/screen_client_factory.py | 351 | def hierarchy_backend_summary(client: Any) -> dict[str, Any] | None: | CODE |
| LOW | artemis/clients/screen_client_factory.py | 367 | def hierarchy_backend_sentence( | CODE |
| LOW | artemis/tools/scratchpad.py | 724 | def get_update_note_tool_pure(ctx: ArtemisContext) -> BaseTool: | CODE |
| LOW | artemis/tools/scratchpad.py | 788 | def get_append_note_tool_pure(ctx: ArtemisContext) -> BaseTool: | CODE |
| LOW | artemis/tools/diagnostic_tool.py | 106 | def get_ask_diagnostic_agent_tool(ctx: ArtemisContext) -> BaseTool: | CODE |
| LOW | artemis/tools/object_detection_tool.py | 80 | async def _run_object_detection_logic( | CODE |
| LOW | artemis/tools/object_detection_tool.py | 229 | def get_operator_object_detector_tool(ctx: ArtemisContext) -> BaseTool: | CODE |
| LOW | artemis/tools/video_tool.py | 247 | def get_video_analyzer_tool_pure(ctx: ArtemisContext) -> BaseTool: | CODE |
| LOW⚡ | artemis/tools/image_processor_tool.py | 95 | def get_ask_image_processor_tool(ctx: ArtemisContext) -> BaseTool: | CODE |
| LOW⚡ | artemis/tools/image_processor_tool.py | 100 | async def _run_image_processor_logic( | CODE |
| LOW⚡ | artemis/tools/image_processor_tool.py | 107 | async def run_image_processor_agent(inst: str, img_path: str) -> dict: | CODE |
| LOW⚡ | artemis/tools/command_tool.py | 1145 | def get_run_short_adb_command_tool(ctx: ArtemisContext) -> BaseTool: | CODE |
| LOW | artemis/tools/command_tool.py | 146 | def _format_long_output_response(task_id: str, output: str, intro: str) -> str: | CODE |
| LOW | artemis/tools/command_tool.py | 311 | async def shutdown_adb_background_tasks(ctx: ArtemisContext | None) -> int: | CODE |
| LOW | artemis/tools/command_tool.py | 1231 | def get_analyze_task_output_tool(ctx: ArtemisContext) -> BaseTool: | CODE |
| LOW | artemis/tools/tool_wrapper.py | 46 | async def invoke_tool_with_injection( | CODE |
| LOW | artemis/tools/base.py | 219 | def _flatten_json_schema_properties( | CODE |
| LOW | artemis/tools/history/__init__.py | 348 | def history_tool_declarations(ctx: Any) -> list[ToolDeclaration]: | CODE |
| LOW | artemis/llm/router.py | 136 | def _patch_langchain_google_genai(): | CODE |
| LOW | artemis/llm/router.py | 147 | def patched_process_tool_config(self, tool_choice, tool_config, formatted_tools): | CODE |
| LOW | artemis/llm/google/provider.py | 76 | def is_google_family_provider(value: Any) -> bool: | CODE |
| LOW | artemis/llm/google/provider.py | 163 | def is_agentic_video_auto_eligible(model_name: Any) -> bool: | CODE |
| LOW | artemis/core/diagnostics/adb_server_connection.py | 260 | def _connection_error_message(output: str) -> str: | CODE |
| LOW | artemis/core/diagnostics/emulator_manager.py | 78 | def _subprocess_creation_kwargs() -> dict[str, Any]: | CODE |
| LOW | artemis/core/diagnostics/engine.py | 112 | async def run_device_submission_probe(self, target_serial: str | None = None) -> ProbeResult: | CODE |
| LOW | artemis/core/diagnostics/device_smoke.py | 161 | def _resolve_requested_serial(device_serial: str | None) -> str | None: | CODE |
| LOW | artemis/core/diagnostics/probes/adb_probe.py | 69 | def invalidate_enrichment_cache(self) -> None: | CODE |
| LOW | artemis/core/diagnostics/probes/adb_probe.py | 235 | async def _get_confirmed_device_lock_state( | CODE |
| LOW | artemis/core/diagnostics/probes/adb_probe.py | 255 | async def _get_dashboard_lock_state( | CODE |
| LOW | artemis/core/diagnostics/probes/adb_probe.py | 354 | async def probe_submission_readiness(self, target_serial: str | None = None) -> ProbeResult: | CODE |
| LOW⚡ | artemis/memory/chunking.py | 192 | def validate_interval_coverage(intervals: Any, start_step: int, end_step: int) -> bool: | CODE |
| LOW | artemis/memory/chunking.py | 135 | def injected_instruction_line(step: dict) -> str | None: | CODE |
| LOW | artemis/memory/chunking.py | 740 | def render_era_period_paragraph(era: EraState) -> str: | CODE |
| LOW | artemis/memory/chunking.py | 952 | def _resolve_capsule_fallback_model(self, ctx: Any) -> str | None: | CODE |
| LOW | artemis/memory/chunking.py | 1175 | def _redispatch_failed_capsules(self) -> None: | CODE |
| LOW | artemis/memory/transcript.py | 402 | def _ai_message_has_visible_text(message: BaseMessage) -> bool: | CODE |
| LOW | artemis/memory/transcript.py | 456 | def effective_image_scrub_depth(self) -> int: | CODE |
| LOW | artemis/config/llm.py | 60 | def lightweight_judge_default() -> "LLMWithFallback": | CODE |
| LOW | artemis/config/llm.py | 133 | def _expand_default_into_nodes(config_dict: dict) -> dict: | CODE |
| LOW | artemis/config/agent.py | 263 | def checker_overrides_for_level(level: str | None) -> dict[str, Any]: | CODE |
| LOW | artemis/config/agent.py | 281 | def verification_level_for_checker(checker: "CheckerConfig") -> VerificationLevel: | CODE |
| LOW | artemis/config/agent.py | 916 | def synchronize_profiles_and_components(cls, data: Any) -> Any: | CODE |
| LOW | artemis/resources/__init__.py | 40 | def get_bundled_showcase_dist() -> Path | None: | CODE |
| LOW | artemis/graph/graph.py | 494 | def _get_active_subgoal_hashes(ctx: ArtemisContext) -> tuple[str, str | None]: | CODE |
| LOW | artemis/graph/graph.py | 515 | def check_plan_mutation_rejections( | CODE |
| LOW | artemis/graph/graph.py | 578 | def _reject_checker_note_write(key: str, tool_call_id: str | None) -> ToolMessage | None: | CODE |
| LOW | artemis/graph/checkpoints.py | 362 | def append_attempt_stream_record( | CODE |
| LOW | artemis/graph/checkpoints.py | 985 | def harvest_finished_checkpoints(ctx, state) -> list[str]: | CODE |
| LOW | artemis/graph/checkpoints.py | 1002 | async def spawn_pending_checkpoints(ctx, state, anchor_step_id: str | None) -> list[str]: | CODE |
| LOW | artemis/graph/perception.py | 75 | def _check_injected_instruction_file(base_dir: str) -> dict | None: | CODE |
| LOW | artemis/graph/perception.py | 95 | def _unprotect_current_check_lines(ctx: ArtemisContext) -> None: | CODE |
| LOW | artemis/runtime/awake_service.py | 87 | def _configure_usb_stay_awake(device_id: str) -> str | None: | CODE |
| LOW | artemis/runtime/awake_service.py | 153 | def _discover_connected_device_ids() -> list[str]: | CODE |
| LOW | artemis/runtime/awake_service.py | 283 | def _reconcile_connected_devices(self, connected: set[str]) -> None: | CODE |
| LOW | artemis/runtime/device_pool.py | 234 | async def _enumerate_async_uncached( | CODE |
| 2199 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | …yground/backend_manager/app/services/docker_service.py | 93 | except NotFound: | CODE |
| HIGH | …end_manager/app/services/cloud_orchestrator_service.py | 177 | except (ValueError, IndexError): | CODE |
| HIGH | artemis/tools/command_tool.py | 412 | except (ProcessLookupError, OSError): | CODE |
| HIGH | artemis/tools/command_tool.py | 435 | except asyncio.CancelledError: | CODE |
| HIGH | artemis/tools/command_tool.py | 419 | except (ProcessLookupError, OSError): | CODE |
| HIGH | artemis/tools/command_tool.py | 423 | except TimeoutError: | CODE |
| HIGH | artemis/tools/command_tool.py | 1133 | except (ProcessLookupError, OSError): | CODE |
| HIGH | artemis/tools/tool_wrapper.py | 87 | except (ValueError, TypeError): | CODE |
| HIGH | artemis/tools/mobile/log_utils.py | 33 | except ValueError: | CODE |
| HIGH | artemis/tools/mobile/log_utils.py | 126 | except ValueError: | CODE |
| HIGH | artemis/drivers/android/adb_driver.py | 496 | except OSError: | CODE |
| HIGH | artemis/core/diagnostics/emulator_manager.py | 470 | except (OSError, subprocess.SubprocessError): | CODE |
| HIGH | artemis/core/diagnostics/device_smoke.py | 204 | except RuntimeError: | CODE |
| HIGH | artemis/core/diagnostics/probes/adb_probe.py | 347 | except (ProcessLookupError, OSError): | CODE |
| HIGH | artemis/memory/chunking.py | 1371 | except (TypeError, ValueError, ZeroDivisionError): | CODE |
| HIGH | artemis/memory/__init__.py | 71 | except (AttributeError, TypeError, ValueError): | CODE |
| HIGH | artemis/config/llm.py | 254 | except OSError: | CODE |
| HIGH | artemis/config/runtime.py | 55 | except (OSError, ValueError): | CODE |
| HIGH | artemis/platform/darwin.py | 98 | except (psutil.NoSuchProcess, psutil.AccessDenied): | CODE |
| HIGH | artemis/platform/darwin.py | 123 | except (psutil.NoSuchProcess, psutil.AccessDenied): | CODE |
| HIGH | artemis/platform/darwin.py | 138 | except (psutil.NoSuchProcess, psutil.AccessDenied): | CODE |
| HIGH | artemis/platform/windows.py | 110 | except (OSError, subprocess.SubprocessError): | CODE |
| HIGH | artemis/platform/windows.py | 135 | except (OSError, ValueError): | CODE |
| HIGH | artemis/platform/windows.py | 141 | except (OSError, ValueError): | CODE |
| HIGH | artemis/platform/windows.py | 123 | except (psutil.NoSuchProcess, psutil.AccessDenied): | CODE |
| HIGH | artemis/platform/linux.py | 113 | except (psutil.NoSuchProcess, psutil.AccessDenied): | CODE |
| HIGH | artemis/platform/linux.py | 138 | except (psutil.NoSuchProcess, psutil.AccessDenied): | CODE |
| HIGH | artemis/platform/linux.py | 153 | except (psutil.NoSuchProcess, psutil.AccessDenied): | CODE |
| HIGH | artemis/graph/checkpoints.py | 230 | except (AttributeError, TypeError, ValueError): | CODE |
| HIGH | artemis/graph/checkpoints.py | 508 | except (AttributeError, TypeError, ValueError): | CODE |
| HIGH | artemis/graph/checkpoints.py | 525 | except (AttributeError, TypeError, ValueError): | CODE |
| HIGH | artemis/runtime/device_pool.py | 155 | except (ProcessLookupError, OSError): | CODE |
| HIGH | artemis/runtime/device_pool.py | 265 | except (ProcessLookupError, OSError): | CODE |
| HIGH | artemis/runtime/server_lifecycle.py | 225 | except (OSError, ValueError, subprocess.SubprocessError): | CODE |
| HIGH | artemis/runtime/server_lifecycle.py | 242 | except (OSError, ValueError, subprocess.SubprocessError): | CODE |
| HIGH | artemis/runtime/server_lifecycle.py | 261 | except (OSError, ValueError, subprocess.SubprocessError): | CODE |
| HIGH | artemis/runtime/helper_manager.py | 326 | except OSError: | CODE |
| HIGH | artemis/runtime/device_lock.py | 532 | except OSError: | CODE |
| HIGH | artemis/runtime/device_lock.py | 744 | except OSError: | CODE |
| HIGH | artemis/runtime/device_lock.py | 426 | except OSError: | CODE |
| HIGH | artemis/runtime/daemon_client.py | 164 | except OSError: | CODE |
| HIGH | artemis/runtime/awake_lease.py | 146 | except OSError: | CODE |
| HIGH | artemis/runtime/awake_lease.py | 221 | except OSError: | CODE |
| HIGH | artemis/runtime/awake_lease.py | 127 | except OSError: | CODE |
| HIGH | artemis/runtime/trace_store.py | 103 | except OSError: | CODE |
| HIGH | artemis/runtime/process_probe.py | 77 | except (psutil.AccessDenied, PermissionError): | CODE |
| HIGH | artemis/runtime/process_probe.py | 88 | except (psutil.AccessDenied, PermissionError): | CODE |
| HIGH | artemis/agents/validator/tool_declarations.py | 216 | except (json.JSONDecodeError, TypeError): | CODE |
| HIGH | artemis/agents/validator/tool_declarations.py | 204 | except (ValueError, TypeError): | CODE |
| HIGH | artemis/agents/validator/tool_declarations.py | 223 | except (ValueError, TypeError): | CODE |
| HIGH | artemis/agents/checker/checker.py | 349 | except ValueError: | CODE |
| HIGH | artemis/agents/video_analyzer/blackboard.py | 310 | except (TypeError, json.JSONDecodeError): | CODE |
| HIGH | artemis/agents/video_analyzer/video_analyzer.py | 512 | except (ValueError, TypeError): | CODE |
| HIGH | artemis/agents/flash/runner.py | 273 | except (AttributeError, TypeError, ValueError): | CODE |
| HIGH | artemis/agents/flash/runner.py | 179 | except (AttributeError, TypeError, ValueError): | CODE |
| HIGH | artemis/agents/flash/runner.py | 990 | except (AttributeError, TypeError, ValueError): | CODE |
| HIGH | artemis/agents/operator/operator.py | 344 | except (AttributeError, TypeError, ValueError): | CODE |
| HIGH | artemis/agents/operator/operator.py | 898 | except (AttributeError, TypeError): | CODE |
| HIGH | artemis/agents/operator/operator.py | 1111 | except (AttributeError, TypeError): | CODE |
| HIGH | artemis/utils/credentials_validator.py | 48 | except ValueError: | CODE |
| 131 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …ayground/backend_manager/app/routers/session_router.py | 37 | except Exception as e: | CODE |
| LOW | …round/backend_manager/app/services/bigquery_service.py | 46 | except Exception as e: | CODE |
| LOW | …round/backend_manager/app/services/bigquery_service.py | 120 | except Exception as e: | CODE |
| LOW | …yground/backend_manager/app/services/docker_service.py | 43 | except Exception as e: | CODE |
| LOW | …yground/backend_manager/app/services/docker_service.py | 60 | except Exception as e: | CODE |
| LOW | …yground/backend_manager/app/services/docker_service.py | 143 | except Exception as e: | CODE |
| LOW | …yground/backend_manager/app/services/docker_service.py | 174 | except Exception as e: | CODE |
| MEDIUM | …yground/backend_manager/app/services/docker_service.py | 166 | def _remove_container(): | CODE |
| LOW | …end_manager/app/services/cloud_orchestrator_service.py | 70 | except Exception as e: | CODE |
| LOW | …end_manager/app/services/cloud_orchestrator_service.py | 125 | except Exception as e: | CODE |
| LOW | …ground/backend_manager/app/services/session_manager.py | 75 | except Exception as e: | CODE |
| LOW | …ground/backend_manager/app/services/session_manager.py | 126 | except Exception as e: | CODE |
| LOW | artemis/context.py | 207 | except Exception as exc: | CODE |
| LOW | artemis/context.py | 221 | except Exception as exc: | CODE |
| LOW | artemis/context.py | 234 | except Exception as exc: | CODE |
| LOW | artemis/context.py | 274 | except Exception as exc: | CODE |
| LOW | artemis/context.py | 283 | except Exception as exc: | CODE |
| LOW | artemis/clients/screen_client_factory.py | 203 | except Exception as exc: # pylint: disable=broad-exception-caught | CODE |
| LOW | artemis/tools/scratchpad.py | 154 | except Exception as e: # pylint: disable=broad-exception-caught | CODE |
| LOW | artemis/tools/scratchpad.py | 233 | except Exception as e: # pylint: disable=broad-exception-caught | CODE |
| LOW | artemis/tools/scratchpad.py | 317 | except Exception as e: # pylint: disable=broad-exception-caught | CODE |
| LOW | artemis/tools/scratchpad.py | 398 | except Exception as e: # pylint: disable=broad-exception-caught | CODE |
| LOW | artemis/tools/scratchpad.py | 462 | except Exception as e: # pylint: disable=broad-exception-caught | CODE |
| LOW | artemis/tools/scratchpad.py | 538 | except Exception as e: # pylint: disable=broad-exception-caught | CODE |
| LOW | artemis/tools/scratchpad.py | 583 | except Exception as e: # pylint: disable=broad-exception-caught | CODE |
| LOW | artemis/tools/scratchpad.py | 647 | except Exception as e: # pylint: disable=broad-exception-caught | CODE |
| LOW | artemis/tools/scratchpad.py | 715 | except Exception as e: # pylint: disable=broad-exception-caught | CODE |
| LOW | artemis/tools/scratchpad.py | 779 | except Exception as e: # pylint: disable=broad-exception-caught | CODE |
| LOW | artemis/tools/committee_tool.py | 145 | except Exception as e: # pylint: disable=broad-exception-caught | CODE |
| LOW | artemis/tools/committee_tool.py | 186 | except Exception as e: # pylint: disable=broad-exception-caught | CODE |
| LOW | artemis/tools/committee_tool.py | 199 | except Exception as e: # pylint: disable=broad-exception-caught | CODE |
| LOW | artemis/tools/committee_tool.py | 210 | except Exception as e: # pylint: disable=broad-exception-caught | CODE |
| LOW | artemis/tools/committee_tool.py | 226 | except Exception as e: # pylint: disable=broad-exception-caught | CODE |
| LOW | artemis/tools/committee_tool.py | 318 | except Exception as e: # pylint: disable=broad-exception-caught | CODE |
| LOW | artemis/tools/explorer_tool.py | 298 | except Exception as e: # pylint: disable=broad-exception-caught | CODE |
| LOW | artemis/tools/explorer_tool.py | 455 | except Exception as e: # pylint: disable=broad-exception-caught | CODE |
| LOW | artemis/tools/diagnostic_tool.py | 62 | except Exception as e: # pylint: disable=broad-exception-caught | CODE |
| LOW | artemis/tools/object_detection_tool.py | 71 | except Exception as e: # pylint: disable=broad-exception-caught | CODE |
| LOW | artemis/tools/object_detection_tool.py | 113 | except Exception as e: | CODE |
| LOW | artemis/tools/video_tool.py | 165 | except Exception as e: # pylint: disable=broad-exception-caught | CODE |
| LOW | artemis/tools/video_tool.py | 226 | except Exception as e: # pylint: disable=broad-exception-caught | CODE |
| LOW⚡ | artemis/tools/command_tool.py | 1130 | except Exception: # pylint: disable=broad-exception-caught | CODE |
| LOW⚡ | artemis/tools/command_tool.py | 1136 | except Exception as e: # pylint: disable=broad-exception-caught | CODE |
| LOW | artemis/tools/command_tool.py | 124 | except Exception: # pylint: disable=broad-exception-caught | CODE |
| LOW | artemis/tools/command_tool.py | 282 | except Exception as e: # pylint: disable=broad-exception-caught | CODE |
| LOW | artemis/tools/command_tool.py | 425 | except Exception as exc: # pylint: disable=broad-exception-caught | CODE |
| LOW | artemis/tools/command_tool.py | 459 | except Exception as e: # pylint: disable=broad-exception-caught | CODE |
| LOW | artemis/tools/command_tool.py | 497 | except Exception as e: # pylint: disable=broad-exception-caught | CODE |
| LOW | artemis/tools/command_tool.py | 720 | except Exception as e: # pylint: disable=broad-exception-caught | CODE |
| LOW | artemis/tools/command_tool.py | 750 | except Exception as e: # pylint: disable=broad-exception-caught | CODE |
| LOW | artemis/tools/command_tool.py | 982 | except Exception as e: # pylint: disable=broad-exception-caught | CODE |
| LOW | artemis/tools/command_tool.py | 1002 | except Exception as e: # pylint: disable=broad-exception-caught | CODE |
| LOW | artemis/tools/command_tool.py | 1100 | except Exception as e: # pylint: disable=broad-exception-caught | CODE |
| LOW | artemis/tools/command_tool.py | 1116 | except Exception as e: # pylint: disable=broad-exception-caught | CODE |
| LOW | artemis/tools/tool_wrapper.py | 127 | except Exception as e: | CODE |
| LOW | artemis/tools/base.py | 102 | except Exception as e: # pylint: disable=broad-exception-caught | CODE |
| LOW | artemis/tools/mobile/read_hierarchy.py | 88 | except Exception as e: # pylint: disable=broad-exception-caught | CODE |
| LOW | artemis/tools/mobile/log_utils.py | 102 | except Exception as e: # pylint: disable=broad-exception-caught | CODE |
| LOW | artemis/tools/mobile/search_logs.py | 247 | except Exception as e: # pylint: disable=broad-exception-caught | CODE |
| LOW | artemis/tools/mobile/ocr.py | 65 | except Exception as e: # pylint: disable=broad-exception-caught | CODE |
| 738 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM⚡ | playground/deploy_to_cos.sh | 50 | # ---------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | playground/deploy_to_cos.sh | 52 | # ---------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | playground/deploy_to_cos.sh | 67 | # ---------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | playground/deploy_to_cos.sh | 69 | # ---------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | playground/deploy_to_cos.sh | 85 | # ---------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | playground/deploy_to_cos.sh | 87 | # ---------------------------------------------------------------------- | COMMENT |
| MEDIUM | artemis/tools/command_tool.py | 188 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | artemis/tools/command_tool.py | 190 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | artemis/tools/command_tool.py | 365 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | artemis/tools/command_tool.py | 367 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | artemis/tools/command_tool.py | 547 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | artemis/tools/command_tool.py | 549 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | artemis/tools/command_tool.py | 871 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | artemis/tools/command_tool.py | 873 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | artemis/tools/command_tool.py | 1018 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | artemis/tools/command_tool.py | 1020 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | artemis/tools/command_tool.py | 1167 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | artemis/tools/command_tool.py | 1169 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | artemis/llm/reliability.py | 112 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | artemis/llm/reliability.py | 114 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | artemis/llm/reliability.py | 135 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | artemis/llm/reliability.py | 137 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | artemis/llm/reliability.py | 185 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | artemis/llm/reliability.py | 187 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | artemis/memory/chunking.py | 187 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | artemis/memory/chunking.py | 189 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | artemis/memory/chunking.py | 1059 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM⚡ | artemis/memory/chunking.py | 1061 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM⚡ | artemis/memory/chunking.py | 1487 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM⚡ | artemis/memory/chunking.py | 1489 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM⚡ | artemis/memory/chunking.py | 1733 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM⚡ | artemis/memory/chunking.py | 1735 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM⚡ | artemis/memory/chunking.py | 1779 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM⚡ | artemis/memory/chunking.py | 1781 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM | artemis/memory/chunking.py | 94 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | artemis/memory/chunking.py | 96 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | artemis/memory/chunking.py | 590 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | artemis/memory/chunking.py | 592 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | artemis/memory/chunking.py | 665 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | artemis/memory/chunking.py | 667 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | artemis/memory/chunking.py | 859 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | artemis/memory/chunking.py | 861 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | artemis/memory/chunking.py | 995 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM | artemis/memory/chunking.py | 997 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM | artemis/memory/chunking.py | 1815 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM | artemis/memory/chunking.py | 1817 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM⚡ | artemis/memory/transcript.py | 369 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM⚡ | artemis/memory/transcript.py | 371 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM⚡ | artemis/memory/transcript.py | 380 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM⚡ | artemis/memory/transcript.py | 382 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM⚡ | artemis/memory/transcript.py | 560 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM⚡ | artemis/memory/transcript.py | 562 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM⚡ | artemis/memory/transcript.py | 574 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM⚡ | artemis/memory/transcript.py | 576 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM⚡ | artemis/memory/transcript.py | 590 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM⚡ | artemis/memory/transcript.py | 592 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM | artemis/memory/transcript.py | 715 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM | artemis/memory/transcript.py | 717 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM | artemis/memory/transcript.py | 768 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM | artemis/memory/transcript.py | 770 | # ------------------------------------------------------------------ | COMMENT |
| 155 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | pyproject.toml | 1 | # Copyright 2026 Google LLC | COMMENT |
| LOW | setup.py | 1 | # Copyright 2026 Google LLC | COMMENT |
| LOW | start.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | playground/deploy_to_cos.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | playground/artemis_container/docker-entrypoint.sh | 1 | #!/bin/bash | COMMENT |
| LOW | playground/artemis_container/docker-compose.yml | 1 | # Copyright 2026 Google LLC | COMMENT |
| LOW | playground/nginx_container/docker-entrypoint.sh | 1 | #!/bin/bash | COMMENT |
| LOW | playground/nginx_container/docker-compose.yml | 1 | # Copyright 2026 Google LLC | COMMENT |
| LOW | playground/nginx_container/certs/generate_dev_certs.sh | 1 | #!/bin/bash | COMMENT |
| LOW | playground/backend_manager/docker-compose.yml | 1 | # Copyright 2026 Google LLC | COMMENT |
| LOW | playground/backend_manager/app/config.py | 1 | # Copyright 2026 Google LLC | COMMENT |
| LOW | playground/backend_manager/app/main.py | 1 | # Copyright 2026 Google LLC | COMMENT |
| LOW | playground/backend_manager/app/routers/auth_router.py | 1 | # Copyright 2026 Google LLC | COMMENT |
| LOW | playground/backend_manager/app/routers/health_router.py | 1 | # Copyright 2026 Google LLC | COMMENT |
| LOW | …ayground/backend_manager/app/routers/session_router.py | 1 | # Copyright 2026 Google LLC | COMMENT |
| LOW | playground/backend_manager/app/auth/otp_service.py | 1 | # Copyright 2026 Google LLC | COMMENT |
| LOW | playground/backend_manager/app/auth/jwt_handler.py | 1 | # Copyright 2026 Google LLC | COMMENT |
| LOW | playground/backend_manager/app/schemas/auth_schema.py | 1 | # Copyright 2026 Google LLC | COMMENT |
| LOW | …ayground/backend_manager/app/schemas/session_schema.py | 1 | # Copyright 2026 Google LLC | COMMENT |
| LOW | …round/backend_manager/app/services/bigquery_service.py | 1 | # Copyright 2026 Google LLC | COMMENT |
| LOW | …yground/backend_manager/app/services/docker_service.py | 1 | # Copyright 2026 Google LLC | COMMENT |
| LOW | …end_manager/app/services/cloud_orchestrator_service.py | 1 | # Copyright 2026 Google LLC | COMMENT |
| LOW | …ground/backend_manager/app/services/session_manager.py | 1 | # Copyright 2026 Google LLC | COMMENT |
| LOW | artemis/_version.py | 1 | # Copyright 2026 Google LLC | COMMENT |
| LOW | artemis/constants.py | 1 | # Copyright 2026 Google LLC | COMMENT |
| LOW | artemis/__init__.py | 1 | # Copyright 2026 Google LLC | COMMENT |
| LOW | artemis/context.py | 1 | # Copyright 2026 Google LLC | COMMENT |
| LOW | artemis/_legacy_imports.py | 1 | # Copyright 2026 Google LLC | COMMENT |
| LOW | artemis/main.py | 1 | # Copyright 2026 Google LLC | COMMENT |
| LOW | artemis/__main__.py | 1 | # Copyright 2026 Google LLC | COMMENT |
| LOW | artemis/clients/accessibility_client.py | 1 | # Copyright 2026 Google LLC | COMMENT |
| LOW | artemis/clients/screen_client_factory.py | 1 | # Copyright 2026 Google LLC | COMMENT |
| LOW | artemis/tools/scratchpad.py | 1 | # Copyright 2026 Google LLC | COMMENT |
| LOW | artemis/tools/committee_tool.py | 1 | # pylint: disable=too-many-statements | COMMENT |
| LOW | artemis/tools/index.py | 1 | # Copyright 2026 Google LLC | COMMENT |
| LOW | artemis/tools/explorer_tool.py | 1 | # Copyright 2026 Google LLC | COMMENT |
| LOW | artemis/tools/diagnostic_tool.py | 1 | # Copyright 2026 Google LLC | COMMENT |
| LOW | artemis/tools/object_detection_tool.py | 1 | # Copyright 2026 Google LLC | COMMENT |
| LOW | artemis/tools/wait_tool.py | 1 | # Copyright 2026 Google LLC | COMMENT |
| LOW | artemis/tools/video_tool.py | 1 | # Copyright 2026 Google LLC | COMMENT |
| LOW | artemis/tools/diagnoser_submit_answer_tool.py | 1 | # Copyright 2026 Google LLC | COMMENT |
| LOW | artemis/tools/image_processor_tool.py | 1 | # Copyright 2026 Google LLC | COMMENT |
| LOW | artemis/tools/command_tool.py | 1 | # Copyright 2026 Google LLC | COMMENT |
| LOW | artemis/tools/tool_wrapper.py | 1 | # Copyright 2026 Google LLC | COMMENT |
| LOW | artemis/tools/base.py | 1 | # Copyright 2026 Google LLC | COMMENT |
| LOW | artemis/tools/log_tool.py | 1 | # Copyright 2026 Google LLC | COMMENT |
| LOW | artemis/tools/system/adb_shell.py | 1 | # Copyright 2026 Google LLC | COMMENT |
| LOW | artemis/tools/mobile/read_hierarchy.py | 1 | # Copyright 2026 Google LLC | COMMENT |
| LOW | artemis/tools/mobile/log_utils.py | 1 | # Copyright 2026 Google LLC | COMMENT |
| LOW | artemis/tools/mobile/search_logs.py | 1 | # Copyright 2026 Google LLC | COMMENT |
| LOW | artemis/tools/mobile/ocr.py | 1 | # Copyright 2026 Google LLC | COMMENT |
| LOW | artemis/tools/mobile/launch_app.py | 1 | # Copyright 2026 Google LLC | COMMENT |
| LOW | artemis/tools/mobile/read_logs.py | 1 | # Copyright 2026 Google LLC | COMMENT |
| LOW | artemis/tools/history/__init__.py | 1 | # Copyright 2026 Google LLC | COMMENT |
| LOW | artemis/tools/history/replay.py | 1 | # Copyright 2026 Google LLC | COMMENT |
| LOW | artemis/tools/history/search.py | 1 | # Copyright 2026 Google LLC | COMMENT |
| LOW | artemis/tools/history/screenshot.py | 1 | # Copyright 2026 Google LLC | COMMENT |
| LOW | artemis/llm/reliability.py | 1 | # Copyright 2026 Google LLC | COMMENT |
| LOW | artemis/llm/__init__.py | 1 | # Copyright 2026 Google LLC | COMMENT |
| LOW | artemis/llm/parser.py | 1 | # Copyright 2026 Google LLC | COMMENT |
| 516 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | playground/backend_manager/app/auth/jwt_handler.py | 16 | CODE | |
| LOW | …round/backend_manager/app/services/bigquery_service.py | 15 | CODE | |
| LOW | …round/backend_manager/app/services/bigquery_service.py | 15 | CODE | |
| LOW | …yground/backend_manager/app/services/docker_service.py | 24 | CODE | |
| LOW | artemis/__init__.py | 17 | CODE | |
| LOW | artemis/__init__.py | 23 | CODE | |
| LOW | artemis/__init__.py | 23 | CODE | |
| LOW | artemis/__init__.py | 24 | CODE | |
| LOW | artemis/__init__.py | 24 | CODE | |
| LOW | artemis/__init__.py | 24 | CODE | |
| LOW | artemis/__init__.py | 25 | CODE | |
| LOW | artemis/__init__.py | 25 | CODE | |
| LOW | artemis/__init__.py | 25 | CODE | |
| LOW | artemis/__init__.py | 25 | CODE | |
| LOW | artemis/__init__.py | 26 | CODE | |
| LOW | artemis/__init__.py | 27 | CODE | |
| LOW | artemis/__init__.py | 28 | CODE | |
| LOW | artemis/context.py | 17 | CODE | |
| LOW | artemis/context.py | 21 | CODE | |
| LOW | artemis/context.py | 39 | CODE | |
| LOW | artemis/context.py | 39 | CODE | |
| LOW | artemis/clients/accessibility_client.py | 36 | CODE | |
| LOW | artemis/clients/accessibility_client.py | 49 | CODE | |
| LOW | artemis/clients/accessibility_client.py | 49 | CODE | |
| LOW | artemis/clients/screen_client_factory.py | 33 | CODE | |
| LOW | artemis/clients/screen_client_factory.py | 44 | CODE | |
| LOW | artemis/tools/index.py | 17 | CODE | |
| LOW | artemis/tools/tool_wrapper.py | 32 | CODE | |
| LOW | artemis/tools/tool_wrapper.py | 32 | CODE | |
| LOW | artemis/tools/system/adb_shell.py | 15 | CODE | |
| LOW | artemis/tools/system/adb_shell.py | 15 | CODE | |
| LOW | artemis/tools/system/adb_shell.py | 15 | CODE | |
| LOW | artemis/tools/history/__init__.py | 22 | CODE | |
| LOW | artemis/tools/history/__init__.py | 40 | CODE | |
| LOW | artemis/tools/history/replay.py | 27 | CODE | |
| LOW | artemis/tools/history/search.py | 43 | CODE | |
| LOW | artemis/tools/history/screenshot.py | 24 | CODE | |
| LOW | artemis/llm/reliability.py | 28 | CODE | |
| LOW | artemis/llm/__init__.py | 17 | CODE | |
| LOW | artemis/llm/__init__.py | 17 | CODE | |
| LOW | artemis/llm/structured.py | 24 | CODE | |
| LOW | artemis/llm/google/provider.py | 31 | CODE | |
| LOW | artemis/llm/google/__init__.py | 28 | CODE | |
| LOW | artemis/llm/google/__init__.py | 28 | CODE | |
| LOW | artemis/llm/google/__init__.py | 28 | CODE | |
| LOW | artemis/llm/google/__init__.py | 28 | CODE | |
| LOW | artemis/llm/google/__init__.py | 28 | CODE | |
| LOW | artemis/llm/google/__init__.py | 28 | CODE | |
| LOW | artemis/llm/google/__init__.py | 28 | CODE | |
| LOW | artemis/llm/google/__init__.py | 28 | CODE | |
| LOW | artemis/llm/google/__init__.py | 28 | CODE | |
| LOW | artemis/llm/google/__init__.py | 28 | CODE | |
| LOW | artemis/llm/google/__init__.py | 28 | CODE | |
| LOW | artemis/llm/google/__init__.py | 41 | CODE | |
| LOW | artemis/llm/google/__init__.py | 41 | CODE | |
| LOW | artemis/llm/google/usage.py | 33 | CODE | |
| LOW | artemis/drivers/__init__.py | 17 | CODE | |
| LOW | artemis/drivers/__init__.py | 17 | CODE | |
| LOW | artemis/drivers/__init__.py | 17 | CODE | |
| LOW | artemis/drivers/__init__.py | 17 | CODE | |
| 472 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …ground/backend_manager/app/services/session_manager.py | 47 | CODE | |
| LOW | artemis/tools/committee_tool.py | 121 | CODE | |
| LOW | artemis/tools/tool_wrapper.py | 46 | CODE | |
| LOW | artemis/tools/tool_wrapper.py | 182 | CODE | |
| LOW | artemis/tools/base.py | 65 | CODE | |
| LOW | artemis/tools/mobile/log_utils.py | 84 | CODE | |
| LOW | artemis/tools/mobile/ocr.py | 47 | CODE | |
| LOW | artemis/tools/history/search.py | 307 | CODE | |
| LOW | artemis/tools/history/search.py | 376 | CODE | |
| LOW | artemis/llm/structured.py | 52 | CODE | |
| LOW | artemis/llm/structured.py | 72 | CODE | |
| LOW | artemis/llm/structured.py | 117 | CODE | |
| LOW | artemis/llm/router.py | 136 | CODE | |
| LOW | artemis/llm/router.py | 211 | CODE | |
| LOW | artemis/drivers/android/adb_driver.py | 121 | CODE | |
| LOW | artemis/drivers/android/adb_driver.py | 274 | CODE | |
| LOW | artemis/drivers/android/adb_driver.py | 307 | CODE | |
| LOW | artemis/drivers/android/adb_driver.py | 402 | CODE | |
| LOW | artemis/drivers/android/adb_driver.py | 462 | CODE | |
| LOW | artemis/drivers/android/input_ime.py | 54 | CODE | |
| LOW | artemis/core/diagnostics/emulator_manager.py | 142 | CODE | |
| LOW | artemis/core/diagnostics/emulator_manager.py | 251 | CODE | |
| LOW | artemis/core/diagnostics/probes/adb_probe.py | 354 | CODE | |
| LOW | artemis/core/diagnostics/probes/adb_probe.py | 477 | CODE | |
| LOW | artemis/memory/chunking.py | 654 | CODE | |
| LOW | artemis/memory/transcript.py | 116 | CODE | |
| LOW | artemis/memory/transcript.py | 208 | CODE | |
| LOW | artemis/memory/transcript.py | 402 | CODE | |
| LOW | artemis/memory/transcript.py | 463 | CODE | |
| LOW | artemis/config/llm.py | 133 | CODE | |
| LOW | artemis/config/llm.py | 117 | CODE | |
| LOW | artemis/config/runtime.py | 39 | CODE | |
| LOW | artemis/config/runtime.py | 158 | CODE | |
| LOW | artemis/config/agent.py | 916 | CODE | |
| LOW | artemis/config/settings.py | 186 | CODE | |
| LOW | artemis/config/settings.py | 216 | CODE | |
| LOW | artemis/config/core/interpolator.py | 27 | CODE | |
| LOW | artemis/platform/darwin.py | 89 | CODE | |
| LOW | artemis/platform/linux.py | 104 | CODE | |
| LOW | artemis/graph/graph.py | 248 | CODE | |
| LOW | artemis/graph/graph.py | 948 | CODE | |
| LOW | artemis/graph/checkpoints.py | 433 | CODE | |
| LOW | artemis/graph/checkpoints.py | 1002 | CODE | |
| LOW | artemis/graph/checkpoints.py | 1139 | CODE | |
| LOW | artemis/runtime/device_pool.py | 161 | CODE | |
| LOW | artemis/runtime/server_lifecycle.py | 100 | CODE | |
| LOW | artemis/runtime/server_lifecycle.py | 191 | CODE | |
| LOW | artemis/runtime/server_lifecycle.py | 323 | CODE | |
| LOW | artemis/runtime/helper_manager.py | 666 | CODE | |
| LOW | artemis/runtime/helper_manager.py | 846 | CODE | |
| LOW | artemis/runtime/device_lock.py | 513 | CODE | |
| LOW | artemis/runtime/device_lock.py | 602 | CODE | |
| LOW | artemis/runtime/device_lock.py | 966 | CODE | |
| LOW | artemis/runtime/daemon_client.py | 382 | CODE | |
| LOW | artemis/runtime/awake_lease.py | 116 | CODE | |
| LOW | artemis/runtime/awake_lease.py | 227 | CODE | |
| LOW | artemis/runtime/trace_store.py | 146 | CODE | |
| LOW | artemis/runtime/process_probe.py | 40 | CODE | |
| LOW | artemis/agents/outputter/outputter.py | 132 | CODE | |
| LOW | artemis/agents/validator/execution_loop.py | 362 | CODE | |
| 197 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | …end_manager/app/services/cloud_orchestrator_service.py | 173 | # If adb_port key is absent or null, dynamically parse adb_serial (e.g. '127.0.0.1:6520') | COMMENT |
| HIGH | artemis/core/diagnostics/engine.py | 264 | payload="adb kill-server && adb start-server", | CODE |
| HIGH | artemis/core/diagnostics/engine.py | 298 | """Execute adb kill-server && adb start-server to recover connectivity, auto-healing corrupted keys if needed."" | STRING |
| HIGH | artemis/interfaces/cli/commands/ui.py | 227 | " [dim]Build it by hand with: cd apps/showcase_ui && npm install && " | CODE |
| HIGH | tests/unit/test_drivers.py | 97 | expected_multi = "input tap 540 1200 && sleep 0.100 && input tap 540 1200 && sleep 0.100 && input tap 540 1200" | CODE |
| HIGH | tests/unit/test_ui_command.py | 159 | assert "npm install && npm run build" in output | CODE |
| HIGH | tests/unit/test_cli.py | 839 | ("command", "Install", "winget install Google.PlatformTools && adb start-server"), | CODE |
| HIGH | tests/unit/tools/test_command_tool.py | 194 | "CommandLine": "sleep 2 && echo 'background task finished'", | CODE |
| HIGH | tests/unit/mcp/test_diagnose_tool.py | 573 | payload=r"C:\sdk\platform-tools\adb.exe kill-server && C:\sdk\platform-tools\adb.exe start-server", | CODE |
| HIGH | third_party/mobile_use/utils/app_launch_utils.py | 41 | Only fails if we get a different (non-null) package or timeout. | STRING |
| HIGH | third_party/mobile_use/utils/app_launch_utils.py | 69 | logger.debug(f"Poll {i + 1}/{polls}: App loading (mCurrentFocus=null)...") | CODE |
| HIGH | …ird_party/mobile_use/controllers/unified_controller.py | 150 | "input keycombination 113 29 && input keyevent 67 && " | CODE |
| HIGH⚡ | apps/admin_console/server.py | 384 | <p><code>cd apps/showcase_ui && npm install && npm run build</code></p> | CODE |
| HIGH | mcp_server/tools/inspect_trace.py | 78 | when the action failed/was intercepted, else null), and | STRING |
| HIGH⚡ | mcp_server/notifiers/desktop.py | 91 | f"[Windows.UI.Notifications.ToastNotificationManager, Windows.UI.Notifications, ContentType = Window | CODE |
| HIGH⚡ | mcp_server/notifiers/desktop.py | 94 | f'$textNodes.Item(0).AppendChild($template.CreateTextNode("{header}")) > $null; ' | CODE |
| HIGH⚡ | mcp_server/notifiers/desktop.py | 95 | f'$textNodes.Item(1).AppendChild($template.CreateTextNode("{clean_body}")) > $null; ' | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | artemis/_version.py | 30 | __all__ = ["__version__", "get_version"] | CODE |
| LOW | artemis/__init__.py | 30 | __all__ = [ | CODE |
| LOW | artemis/clients/accessibility_client.py | 72 | __all__ = [ | CODE |
| LOW | artemis/clients/screen_client_factory.py | 194 | def _set_active(self, backend: str, reason: str | None = None) -> None: | CODE |
| LOW | artemis/clients/screen_client_factory.py | 389 | __all__ = [ | CODE |
| LOW | artemis/tools/explorer_tool.py | 68 | __all__ = [ | CODE |
| LOW | artemis/tools/tool_wrapper.py | 34 | __all__ = [ | CODE |
| LOW | artemis/tools/system/adb_shell.py | 25 | __all__ = [ | CODE |
| LOW | artemis/tools/history/__init__.py | 47 | __all__ = [ | CODE |
| LOW | artemis/llm/__init__.py | 22 | __all__ = [ | CODE |
| LOW | artemis/llm/google/__init__.py | 43 | __all__ = [ | CODE |
| LOW | artemis/drivers/__init__.py | 34 | __all__ = [ | CODE |
| LOW | artemis/drivers/types.py | 27 | __all__ = [ | CODE |
| LOW | artemis/core/diagnostics/__init__.py | 59 | __all__ = [ | CODE |
| LOW | artemis/core/diagnostics/engine.py | 92 | def set_probe_target_serial(self, serial: str | None) -> None: | CODE |
| LOW | artemis/core/diagnostics/device_smoke.py | 364 | __all__ = ["UIAUTOMATOR_PACKAGES", "fix_for_error", "smoke_test_device"] | CODE |
| LOW | artemis/core/diagnostics/hierarchy_parity.py | 216 | __all__ = ["analyze_xml", "compare_backends", "compare_dumps", "match_labels"] | CODE |
| LOW | artemis/core/diagnostics/probes/adb_probe.py | 65 | def set_target_serial(self, serial: str | None) -> None: | CODE |
| LOW⚡ | artemis/memory/transcript.py | 568 | def set_static_prefix(self, messages: list[BaseMessage]) -> None: | CODE |
| LOW⚡ | artemis/memory/transcript.py | 582 | def set_restored_history(self, text: str) -> None: | CODE |
| LOW | artemis/memory/__init__.py | 76 | __all__ = [ | CODE |
| LOW | artemis/config/__init__.py | 165 | __all__ = [ | CODE |
| LOW | artemis/config/llm.py | 42 | __all__ = [ | CODE |
| LOW | artemis/config/settings.py | 216 | def set_api_key(self, provider: str, key: str, persist_to_env: bool = False) -> None: | CODE |
| LOW | artemis/config/core/__init__.py | 20 | __all__ = [ | CODE |
| LOW | artemis/resources/__init__.py | 46 | __all__ = ["get_bundled_config_path", "get_bundled_showcase_dist"] | CODE |
| LOW | artemis/platform/__init__.py | 54 | __all__ = [ | CODE |
| LOW | artemis/runtime/helper_manager.py | 1013 | __all__ = [ | CODE |
| LOW | artemis/runtime/__init__.py | 67 | __all__ = [ | CODE |
| LOW | artemis/runtime/trace_store.py | 40 | logger = logging.getLogger(__name__) | CODE |
| LOW | artemis/runtime/process_probe.py | 37 | logger = logging.getLogger(__name__) | CODE |
| LOW | artemis/agents/prompt_assembly.py | 33 | __all__ = ["gate_segment", "render_tool_enum", "resolve_available"] | CODE |
| LOW | artemis/agents/validator/validator.py | 62 | __all__ = ["ValidatorNode", "ValidationErrorCategory"] | CODE |
| LOW | artemis/agents/video_analyzer/conflict_resolution.py | 17 | logger = logging.getLogger(__name__) | CODE |
| LOW | artemis/agents/explorer/explorer.py | 58 | __all__ = ["Explorer"] | CODE |
| LOW | artemis/utils/python_executor.py | 27 | logger = logging.getLogger(__name__) | CODE |
| LOW | artemis/utils/image_diff.py | 25 | logger = logging.getLogger(__name__) | CODE |
| LOW | artemis/utils/task_tree.py | 24 | logger = logging.getLogger(__name__) | CODE |
| LOW | artemis/mcp/observation.py | 37 | __all__ = ["observe"] | CODE |
| LOW | artemis/mcp/action_specs.py | 72 | __all__ = [ | CODE |
| LOW | artemis/mcp/xml_search_server.py | 29 | logger = logging.getLogger(__name__) | CODE |
| LOW | artemis/mcp/action_manifest.py | 44 | __all__ = [ | CODE |
| LOW | artemis/mcp/action_types.py | 28 | __all__ = ["ActionCode", "ActionResult", "ObserveResult"] | CODE |
| LOW | artemis/mcp/__init__.py | 20 | __all__ = ["adb_mcp", "xml_mcp"] | CODE |
| LOW | artemis/mcp/action_names.py | 31 | __all__ = ["OPERATOR_ACTION_TO_CANONICAL", "to_canonical_call"] | CODE |
| LOW | artemis/mcp/action_executor.py | 69 | __all__ = ["McpActionExecutor"] | CODE |
| LOW | artemis/mcp/action_server.py | 52 | __all__ = ["build_action_server"] | CODE |
| LOW | artemis/mcp/adb_server.py | 33 | logger = logging.getLogger(__name__) | CODE |
| LOW | artemis/mcp/action_session.py | 61 | __all__ = ["ActionSession", "get_action_session"] | CODE |
| LOW | artemis/mcp/actuators/__init__.py | 21 | __all__ = ["Actuator", "AdbActuator", "MockActuator"] | CODE |
| LOW | artemis/mcp/actuators/base.py | 36 | __all__ = ["Actuator"] | CODE |
| LOW | artemis/mcp/actuators/adb.py | 42 | __all__ = ["AdbActuator", "find_element_at_coords", "ensure_focus_at_coords"] | CODE |
| LOW | artemis/mcp/actuators/mock.py | 29 | __all__ = ["MockActuator"] | CODE |
| LOW⚡ | artemis/data_engine/engine.py | 789 | def update_session_device_info(self, **fields: Any) -> None: | CODE |
| LOW | artemis/data_engine/history_reader.py | 34 | __all__ = ["HistoryReader", "OfflineHistoryReader", "friendly_step"] | CODE |
| LOW | artemis/sdk/__init__.py | 24 | __all__ = ["Agent"] | CODE |
| LOW | artemis/sdk/utils.py | 23 | __all__ = [ | CODE |
| LOW | artemis/sdk/agent.py | 59 | __all__ = ["Agent", "TOutput", "attach_test_summary", "resolve_trace_suffix", "run_tuning_summary"] | CODE |
| LOW | artemis/sdk/types/__init__.py | 42 | __all__ = [ | CODE |
| LOW | artemis/sdk/types/agent.py | 34 | __all__ = ["AgentConfig", "AgentProfile", "ApiBaseUrl", "DevicePlatform", "ServerConfig"] | CODE |
| 27 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | start.sh | 278 | # Check if nvm already has a compatible Node version installed | COMMENT |
| LOW | playground/artemis_container/docker-entrypoint.sh | 51 | # Check if connected | COMMENT |
| LOW | playground/nginx_container/docker-entrypoint.sh | 24 | # Check if SSL certificates exist; if not, auto-generate a self-signed fallback cert | COMMENT |
| LOW | …yground/backend_manager/app/services/docker_service.py | 89 | # Check if an existing container with same name exists and remove it | COMMENT |
| LOW | …end_manager/app/services/cloud_orchestrator_service.py | 151 | # Check if this session already has an allocated instance | COMMENT |
| LOW | …ground/backend_manager/app/services/session_manager.py | 56 | # Check if session has exceeded expiration or missed heartbeats | COMMENT |
| LOW | artemis/drivers/android/adb_driver.py | 132 | # Check if ui_adb_client has direct screen data support | COMMENT |
| LOW | artemis/core/diagnostics/emulator_manager.py | 293 | # Check if process died | COMMENT |
| LOW | artemis/core/diagnostics/emulator_manager.py | 359 | # Check if process died | COMMENT |
| LOW | artemis/runtime/device_pool.py | 454 | # Check if preferred is available or exists | COMMENT |
| LOW | artemis/runtime/daemon_client.py | 406 | # Check if task is queued in daemon status | COMMENT |
| LOW | artemis/agents/validator/precondition_xml.py | 495 | # Check if the occupant has content | COMMENT |
| LOW | artemis/agents/validator/precondition_xml.py | 498 | # Check if this occupant or any container covering this point is interactive | COMMENT |
| LOW | artemis/agents/log_analyzer/log_analyzer.py | 99 | # Check if we have the raw logs cached | COMMENT |
| LOW | artemis/agents/explorer/run_setup.py | 162 | # Check if it exists in DB | COMMENT |
| LOW | artemis/utils/ui_filter.py | 163 | # Check if it's a valid image container | COMMENT |
| LOW | artemis/utils/ui_filter.py | 204 | # Check if it's a decoration (not clickable, not focusable) | COMMENT |
| LOW | artemis/utils/task_tree.py | 923 | # Check if task_plan has actual subgoals (single-source checkbox grammar). | COMMENT |
| LOW | artemis/utils/ocr_xml_fusion.py | 38 | # Check if it's a Chinese character | COMMENT |
| LOW | artemis/utils/ocr_xml_fusion.py | 40 | # Check if it's a digit | COMMENT |
| LOW | tests/e2e/play_youtube.py | 146 | # Check if we are already on a webpage or home page (e.g., search bar is visible, or youtube content) | COMMENT |
| LOW | tests/e2e/play_youtube.py | 255 | # Check if it's paused or if we need to click play | COMMENT |
| LOW | third_party/mobile_use/utils/video.py | 287 | "15", # Set framerate to 15 fps | CODE |
| LOW | scripts/install_deps.sh | 396 | # Check if nvm already has a compatible Node version installed | COMMENT |
| LOW | scripts/run_ui.py | 140 | # Check if restart requested | COMMENT |
| LOW | scripts/run_ui.py | 150 | # Check if server is already running | COMMENT |
| LOW | apps/admin_console/replay_manager.py | 947 | # Set timestamp to be immediately before the final response | COMMENT |
| LOW | apps/admin_console/replay_manager.py | 1273 | # Check if directory does not exist, does not contain the sentinel file, or count of chunked steps is out of syn | COMMENT |
| LOW | apps/admin_console/replay_manager.py | 2234 | # Check if this step has already been replayed by scanning outputs folder | COMMENT |
| LOW | apps/admin_console/services/media_service.py | 432 | # Check if the string is a Base64 image | COMMENT |
| LOW | mcp_server/tools/task_runner.py | 361 | # Check if the task was already enqueued despite a slow or None | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM⚡ | tests/unit/tools/test_committee_tool.py | 30 | # Create a temp directory for testing | COMMENT |
| MEDIUM⚡ | tests/unit/tools/test_committee_tool.py | 37 | # Create a mock screenshot file | COMMENT |
| MEDIUM⚡ | tests/unit/tools/test_committee_tool.py | 41 | # Create a mock failed plans history file | COMMENT |
| MEDIUM | tests/unit/agents/test_flash_step_summarizer.py | 890 | # Create a blank RGB image in memory | COMMENT |
| MEDIUM | tests/unit/utils/test_ocr_xml_fusion.py | 79 | # Create a dummy image | COMMENT |
| MEDIUM | …ts/unit/data_engine/test_latency_optimizations_deep.py | 95 | # Create the initial step | COMMENT |
| MEDIUM | …ts/unit/data_engine/test_latency_optimizations_deep.py | 201 | # Create an injected_instruction.json file | COMMENT |
| MEDIUM⚡ | …xplorer_all_tools/test_explorer_ask_image_processor.py | 151 | # Create the mock output image path | COMMENT |
| MEDIUM⚡ | …xplorer_all_tools/test_explorer_ask_image_processor.py | 153 | # Create a small dummy image of size 100x100 using PIL so that cv2.imread inside explorer reads these dimensions | COMMENT |
| MEDIUM | …xplorer_all_tools/test_explorer_ask_image_processor.py | 294 | # Create a dummy image | COMMENT |
| MEDIUM | …explorer_all_tools/test_object_detector_concurrency.py | 27 | # Create a dummy image file for the test | COMMENT |
| MEDIUM⚡ | mcp_server/base.py | 32 | # Define the shared FastMCP instance for external IDE and agent clients. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | artemis/llm/google/provider.py | 54 | # Agentic video understanding (Interactions API, ``processing: "agentic"``) | COMMENT |
| MEDIUM⚡ | artemis/agents/planner/planner.json | 4 | "thinking_process": "## Systematic Thinking Process & Operating Principles\nBefore calling any tools or formulating | CODE |
| MEDIUM | artemis/agents/video_analyzer/chunk_conversation.py | 41 | #: (shared by the static and agentic paths). | COMMENT |
| MEDIUM | artemis/agents/video_analyzer/video_analyzer.py | 171 | # video-processing mode (agentic sub-agents take long clips). | COMMENT |
| MEDIUM | artemis/services/token_meter.py | 51 | # Size of the model context window the live Operator/FlashRunner prompt is | COMMENT |
| MEDIUM⚡ | tests/unit/test_google_provider.py | 140 | # Explicit "agentic" is honoured on Flash-Lite but never on a variant. | COMMENT |
| MEDIUM | tests/unit/agents/test_video_agentic.py | 978 | # One agentic attempt on the 150s clip, then 60s static pieces. | COMMENT |
| MEDIUM | tests/unit/agents/test_video_reliability.py | 297 | # ------------------------------------------------ mid-run agentic degrade | COMMENT |
| MEDIUM | tests/unit/agents/test_video_reliability.py | 397 | # Only the first chunk ever reached the agentic API; the second never ran | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | artemis/drivers/android/adb_driver.py | 310 | # Safe & robust clearing: Move to End -> Shift+Home selection -> Delete -> Fallback backspaces | COMMENT |
| MEDIUM | artemis/drivers/android/input_ime.py | 58 | # Safe & robust clearing: Move to End -> Shift+Home selection -> Delete -> Fallback backspaces | COMMENT |
| MEDIUM | artemis/graph/checkpoints.py | 472 | # :func:`sync_finding_lines`; harness code never reads them back. | COMMENT |
| MEDIUM⚡ | artemis/agents/planner/planner.json | 3 | "role": "## Role\nYou are a Senior Test Engineer leading a team of mobile execution agents. Your objective is to dee | CODE |
| MEDIUM⚡ | artemis/agents/planner/planner.json | 6 | "output_protocol_initial": "## Task Plan & Scratchpad Protocol\n\n1. **Articulate Thinking**: Begin by reasoning thr | CODE |
| MEDIUM | artemis/utils/plan_grammar.py | 67 | #: projection of the checkpoint repair state: harness code re-renders them on | COMMENT |
| MEDIUM | artemis/services/llm.py | 525 | """Universal LangChain Runnable wrapper ensuring robust execution and telemetry.""" | STRING |
| MEDIUM | apps/admin_console/routers/system.py | 103 | """Execute all diagnostic probes and return a comprehensive system readiness report.""" | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL | tests/unit/agents/test_video_analyzer.py | 616 | analyzer.client.aio.files.delete.assert_awaited_once_with(name="files/abc") | CODE |
| CRITICAL | tests/unit/agents/test_video_audio_native.py | 150 | analyzer.client.aio.files.delete.assert_awaited_once_with(name="files/abc") | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | artemis/tools/image_processor_tool.py | 117 | CODE | |
| LOW | artemis/tools/command_tool.py | 636 | CODE | |
| LOW | artemis/tools/log_tool.py | 90 | CODE | |
| LOW | artemis/tools/mobile/search_logs.py | 218 | CODE | |
| LOW | artemis/memory/transcript.py | 262 | CODE | |
| LOW | artemis/runtime/device_lock.py | 109 | CODE | |
| LOW | artemis/runtime/daemon_client.py | 210 | CODE | |
| LOW | artemis/agents/flash/context_compressor.py | 109 | CODE | |
| LOW | artemis/data_engine/engine.py | 853 | CODE | |
| LOW | artemis/data_engine/engine.py | 1387 | CODE | |
| LOW | artemis/sdk/builders/agent_config_builder.py | 116 | CODE | |
| LOW | artemis/interfaces/cli/commands/run.py | 44 | CODE | |
| LOW | artemis/interfaces/cli/commands/run.py | 169 | CODE | |
| LOW | tests/unit/memory/test_history_chunking.py | 159 | CODE | |
| LOW | tests/unit/mcp/test_diagnose_tool.py | 269 | CODE | |
| LOW | docs/assets/generate_banner.py | 86 | CODE | |
| LOW | packages/artemis-client/src/artemis_client/client.py | 72 | CODE | |
| LOW | packages/artemis-client/src/artemis_client/client.py | 175 | CODE | |
| LOW | packages/artemis-client/src/artemis_client/client.py | 295 | CODE | |
| LOW | apps/admin_console/services/task_queue_service.py | 1041 | CODE | |
| LOW | mcp_server/tools/task_runner.py | 205 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | third_party/mobile_use/sdk/agent.py | 240 | Install an app on the connected device. For Android: Installs an APK file using ADB. Args: | STRING |
| HIGH | third_party/mobile_use/sdk/types/task.py | 149 | Parse the content into a Pydantic model instance. Args: model_class: The Pydantic model class to pa | STRING |
| HIGH | …_party/mobile_use/sdk/builders/agent_config_builder.py | 176 | Build the AgentConfig object. Args: default_profile: Name of the default agent profile to use | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | playground/deploy_to_cos.sh | 51 | # Step 1: Build Docker Images on local gLinux workstation (linux/amd64) | COMMENT |
| LOW⚡ | playground/deploy_to_cos.sh | 68 | # Step 2: Stream & Load Docker Images into COS VM via SSH Pipe | COMMENT |
| LOW⚡ | playground/deploy_to_cos.sh | 86 | # Step 3: Launch / Restart Artemis Services on the COS VM | COMMENT |
| LOW⚡ | tests/e2e/play_youtube.py | 310 | # Step 1: Bypass welcome screens | COMMENT |
| LOW⚡ | tests/e2e/play_youtube.py | 313 | # Step 2: Play the first video | COMMENT |
| LOW⚡ | tests/e2e/play_youtube.py | 315 | # Step 3: Verify it plays | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | playground/deploy_to_cos.sh | 51 | # Step 1: Build Docker Images on local gLinux workstation (linux/amd64) | COMMENT |
| LOW⚡ | playground/deploy_to_cos.sh | 68 | # Step 2: Stream & Load Docker Images into COS VM via SSH Pipe | COMMENT |
| LOW⚡ | playground/deploy_to_cos.sh | 86 | # Step 3: Launch / Restart Artemis Services on the COS VM | COMMENT |
| LOW⚡ | tests/e2e/play_youtube.py | 310 | # Step 1: Bypass welcome screens | COMMENT |
| LOW⚡ | tests/e2e/play_youtube.py | 313 | # Step 2: Play the first video | COMMENT |
| LOW⚡ | tests/e2e/play_youtube.py | 315 | # Step 3: Verify it plays | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | artemis/clients/screen_client_factory.py | 172 | def helper(self) -> AccessibilityClient: | CODE |
| LOW | artemis/interfaces/cli/commands/run.py | 44 | async def execute_task( | CODE |
| LOW⚡ | third_party/mobile_use/sdk/agent.py | 328 | async def run_task( | CODE |
| LOW⚡ | third_party/mobile_use/sdk/agent.py | 337 | async def run_task( | CODE |
| LOW⚡ | third_party/mobile_use/sdk/agent.py | 345 | async def run_task( | CODE |
| LOW | third_party/mobile_use/sdk/agent.py | 292 | async def run_task( | CODE |
| LOW | third_party/mobile_use/sdk/agent.py | 304 | async def run_task( | CODE |
| LOW | third_party/mobile_use/sdk/agent.py | 316 | async def run_task( | CODE |
| LOW | packages/artemis-client/src/artemis_client/client.py | 334 | async def run_task(self, task: Any, **overrides: Any) -> TaskResult: | CODE |
| LOW | apps/admin_console/routers/tasks.py | 70 | async def run_task(request: RunRequest): | CODE |
| LOW | mcp_server/background/task_runner.py | 113 | async def run_task( | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | artemis/config/settings.py | 69 | "your_api_key", | CODE |
| HIGH | tests/unit/test_config_package.py | 118 | assert is_placeholder_key("<your-api-key>") is True | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | playground/backend_manager/README.md | 73 | * `POST /api/v1/auth/otp/send` — Request a 6-digit OTP code (`{"identifier": "user@example.com"}`). | COMMENT |
| LOW | playground/backend_manager/app/schemas/auth_schema.py | 20 | ..., description="User phone number or email address", example="user@example.com" | CODE |
| LOW | playground/backend_manager/app/schemas/auth_schema.py | 32 | ..., description="User phone number or email address", example="user@example.com" | CODE |
| LOW | artemis/utils/ocr_xml_fusion.py | 26 | PLACEHOLDERS = {"search", "enter text", "placeholder"} | CODE |
| LOW⚡ | tests/unit/test_credentials_validator.py | 43 | assert "placeholder" in msg.lower() | CODE |
| LOW | tests/unit/core/test_device_smoke.py | 265 | assert "placeholder" in result["error"] | CODE |
| LOW | tests/unit/agents/test_validator.py | 59 | self.screenshot = "ZHVtbXlfZGF0YQ==" # b64("dummy_data") | CODE |
| LOW | tests/unit/agents/test_validator.py | 106 | p.write_bytes(b"dummy_data") | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | tests/unit/test_llm_gateway.py | 69 | CODE | |
| MEDIUM | tests/unit/test_llm_gateway.py | 95 | CODE | |
| MEDIUM | tests/unit/test_llm_gateway.py | 124 | CODE | |
| MEDIUM | tests/unit/test_llm_gateway.py | 138 | CODE |