Open-source, self-hosted alternative to OpenAI Dots, Grok Bot. Built to be undetectable by anti-bot systems.
This report summarizes scanner evidence for feder-cr/Jobs_Applier_AI_Agent_AIHawk, a TypeScript project with 31,941 GitHub stars. SynthScan examined 160,154 lines of code across 1065 source files, recording 2321 pattern matches distributed across 17 syntactic categories. The legacy adjusted pattern signal is 18.6 (Elevated 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? 1788 finding(s).
Are imports declared and package/API names verified? 289 finding(s).
Are wrappers, guards, and repeated structures necessary? 1942 finding(s).
Which changes need focused human review? 2321 finding(s).
This chart tracks the legacy adjusted pattern score across scan runs. Changes can reflect source changes, scan coverage, or detector/scoring versions; they do not measure AI adoption or prove that a team refactored code. Compare runs only when their scoring versions are compatible. The dashed line tracks the raw pattern-hit count.
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 2321 distinct pattern matches across 17 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 | …ngine_dots/nanobot/providers/openai_compat_provider.py | 120 | def _requires_max_completion_tokens(model_name: str) -> bool: | CODE |
| LOW | …ngine_dots/nanobot/providers/openai_compat_provider.py | 137 | def _gateway_reasoning_extra_body(style: str, effort: str | None) -> dict[str, Any] | None: | CODE |
| LOW | …ngine_dots/nanobot/providers/openai_compat_provider.py | 268 | def _uses_openrouter_attribution(api_base: str | None) -> bool: | CODE |
| LOW | …ngine_dots/nanobot/providers/openai_compat_provider.py | 745 | def _extract_thinking_content(cls, value: object) -> str | None: | CODE |
| LOW | …ngine_dots/nanobot/providers/openai_compat_provider.py | 926 | def _accum_legacy_function_call(function_call: Any) -> None: | CODE |
| LOW⚡ | invisible_engine_dots/nanobot/providers/base.py | 136 | def tool_arguments_json_for_replay(arguments: Any) -> str: | CODE |
| LOW | invisible_engine_dots/nanobot/providers/base.py | 108 | def tool_arguments_object_for_replay(arguments: Any) -> dict[str, Any]: | CODE |
| LOW | invisible_engine_dots/nanobot/providers/base.py | 577 | def _tool_cache_marker_indices(cls, tools: list[dict[str, Any]]) -> list[int]: | CODE |
| LOW | invisible_engine_dots/nanobot/providers/base.py | 596 | def _sanitize_request_messages( | CODE |
| LOW | invisible_engine_dots/nanobot/providers/base.py | 636 | def _error_response_from_exception(self, exc: Exception) -> LLMResponse: | CODE |
| LOW | invisible_engine_dots/nanobot/providers/base.py | 809 | def _enforce_role_alternation(messages: list[dict[str, Any]]) -> list[dict[str, Any]]: | CODE |
| LOW | invisible_engine_dots/nanobot/providers/base.py | 909 | def _strip_image_content_inplace(messages: list[dict[str, Any]]) -> bool: | CODE |
| LOW | invisible_engine_dots/nanobot/providers/base.py | 1105 | def _extract_compound_try_again_in(cls, text: str) -> float | None: | CODE |
| LOW | invisible_engine_dots/nanobot/providers/base.py | 1124 | def _extract_retry_after_from_headers(cls, headers: Any) -> float | None: | CODE |
| LOW | invisible_engine_dots/nanobot/providers/base.py | 1164 | def _extract_retry_after_from_response(cls, response: LLMResponse) -> float | None: | CODE |
| LOW | invisible_engine_dots/nanobot/utils/runtime.py | 35 | def empty_tool_result_message(tool_name: str) -> str: | CODE |
| LOW | invisible_engine_dots/nanobot/utils/runtime.py | 40 | def ensure_nonempty_tool_result(tool_name: str, content: Any) -> Any: | CODE |
| LOW | invisible_engine_dots/nanobot/utils/runtime.py | 60 | def build_finalization_retry_message() -> dict[str, str]: | CODE |
| LOW | invisible_engine_dots/nanobot/utils/runtime.py | 65 | def build_length_recovery_message(content: str) -> dict[str, str]: | CODE |
| LOW | invisible_engine_dots/nanobot/utils/helpers.py | 314 | def content_with_media_breadcrumbs( | CODE |
| LOW | invisible_engine_dots/nanobot/utils/helpers.py | 383 | def recent_message_start_index( | CODE |
| LOW | invisible_engine_dots/nanobot/utils/helpers.py | 443 | def _render_tool_result_reference( | CODE |
| LOW | invisible_engine_dots/nanobot/utils/helpers.py | 472 | def _cleanup_tool_result_buckets(root: Path, current_bucket: Path) -> None: | CODE |
| LOW | invisible_engine_dots/nanobot/utils/helpers.py | 511 | def maybe_persist_tool_result( | CODE |
| LOW | invisible_engine_dots/nanobot/utils/helpers.py | 578 | def _estimate_prompt_tokens_with_source( | CODE |
| LOW | invisible_engine_dots/nanobot/utils/helpers.py | 685 | def estimate_prompt_tokens_chain( | CODE |
| LOW | invisible_engine_dots/nanobot/agent/runner.py | 67 | def _restore_outer_whitespace(content: str, original: str | None) -> str: | CODE |
| LOW | invisible_engine_dots/nanobot/agent/runner.py | 295 | def _initial_transcript_and_compaction( | CODE |
| LOW | invisible_engine_dots/nanobot/agent/runner.py | 757 | def _drop_malformed_tool_calls( | CODE |
| LOW | invisible_engine_dots/nanobot/agent/runner.py | 791 | def _malformed_tool_call_retry_messages( | CODE |
| LOW | invisible_engine_dots/nanobot/agent/runner.py | 811 | async def _request_finalization_retry( | CODE |
| LOW | invisible_engine_dots/nanobot/agent/runner.py | 826 | def _finalization_retry_messages(messages: list[dict[str, Any]]) -> list[dict[str, Any]]: | CODE |
| LOW | invisible_engine_dots/nanobot/agent/runner.py | 938 | async def _commit_model_error_placeholder( | CODE |
| LOW | invisible_engine_dots/nanobot/agent/memory.py | 37 | def recent_user_message_tokens(prompt_budget: int) -> int: | CODE |
| LOW | invisible_engine_dots/nanobot/agent/memory.py | 137 | def _with_recent_user_messages(summary: str, messages: list[dict[str, Any]], limit: int) -> str: | CODE |
| LOW | …isible_engine_dots/nanobot/agent/context_governance.py | 249 | def _merge_adjacent_user_messages_for_model( | CODE |
| LOW | …isible_engine_dots/nanobot/agent/context_governance.py | 276 | def prepare_messages_for_model( | CODE |
| LOW | …isible_engine_dots/nanobot/agent/context_governance.py | 593 | def strip_placeholder_assistant_messages( | CODE |
| LOW | …isible_engine_dots/nanobot/agent/context_governance.py | 631 | def strip_malformed_tool_calls( | CODE |
| LOW | …isible_engine_dots/nanobot/agent/context_governance.py | 724 | def backfill_missing_tool_results( | CODE |
| LOW | …isible_engine_dots/nanobot/agent/tools/exec_session.py | 425 | async def _wait_for_buffered_output(self) -> None: | CODE |
| LOW | invisible_engine_dots/nanobot/agent/tools/registry.py | 159 | def _unwrap_arguments_payload(cls, tool: Tool, params: Any) -> Any: | CODE |
| LOW | invisible_engine_dots/nanobot/agent/tools/filesystem.py | 514 | def _collapse_internal_whitespace(text: str) -> str: | CODE |
| LOW | invisible_engine_dots/nanobot/agent/tools/context.py | 38 | def current_request_session_key() -> str | None: | CODE |
| LOW⚡ | invisible_engine_dots/nanobot/agent/tools/mcp.py | 478 | async def _refresh_session_after_termination( | CODE |
| LOW | invisible_engine_dots/nanobot/agent/tools/mcp.py | 112 | def _is_malformed_mcp_progress_notification(message: Any) -> bool: | CODE |
| LOW | invisible_engine_dots/nanobot/agent/tools/mcp.py | 133 | def _progress_params_have_token(params: Any) -> bool: | CODE |
| LOW | invisible_engine_dots/nanobot/agent/tools/mcp.py | 187 | def _filter_malformed_mcp_progress_notifications( | CODE |
| LOW | invisible_engine_dots/nanobot/agent/tools/mcp.py | 224 | def _is_transient_connection_failure(exc: BaseException) -> bool: | CODE |
| LOW | invisible_engine_dots/nanobot/agent/tools/mcp.py | 233 | def _log_mcp_connection_failure(name: str, exc: BaseException, hint: str = "") -> None: | CODE |
| LOW | invisible_engine_dots/nanobot/agent/tools/mcp.py | 325 | def _resolve_local_schema_ref(root: dict[str, Any], ref: str) -> Any: | CODE |
| LOW | invisible_engine_dots/nanobot/agent/tools/mcp.py | 348 | def _rewrite_local_schema_refs(schema: dict[str, Any]) -> dict[str, Any]: | CODE |
| LOW | invisible_engine_dots/nanobot/agent/tools/mcp.py | 404 | def _normalize_nullable_schema(schema: dict[str, Any]) -> dict[str, Any]: | CODE |
| LOW | invisible_engine_dots/nanobot/agent/tools/mcp.py | 455 | def _normalize_schema_for_openai(schema: Any) -> dict[str, Any]: | CODE |
| LOW | invisible_engine_dots/nanobot/agent/tools/mcp.py | 1283 | def _attach_reconnect_handlers(self, server_names: Iterable[str]) -> None: | CODE |
| LOW | invisible_engine_dots/nanobot/agent/tools/mcp.py | 1322 | async def _refresh_terminated_server( | CODE |
| LOW | invisible_engine_dots/nanobot/agent/tools/base.py | 56 | def validate_json_schema_value( | CODE |
| LOW | invisible_engine_dots/nanobot/dots/store.py | 437 | def mark_inbound_in_transcript(conn: sqlite3.Connection, inbound_id: str) -> bool: | CODE |
| LOW | invisible_engine_dots/nanobot/dots/store.py | 1068 | def open_approval_for_session(conn: sqlite3.Connection, session_key: str) -> Approval | None: | CODE |
| LOW | invisible_engine_dots/nanobot/dots/store.py | 1274 | def commit_summary_checkpoint(conn: sqlite3.Connection, session_key: str, summary: str, boundary: int) -> None: | CODE |
| 1632 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | …ngine_dots/nanobot/providers/openai_compat_provider.py | 573 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM | …ngine_dots/nanobot/providers/openai_compat_provider.py | 575 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM | …ngine_dots/nanobot/providers/openai_compat_provider.py | 701 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM | …ngine_dots/nanobot/providers/openai_compat_provider.py | 703 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM | …ngine_dots/nanobot/providers/openai_compat_provider.py | 1116 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM | …ngine_dots/nanobot/providers/openai_compat_provider.py | 1118 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM | invisible_engine_dots/nanobot/agent/tools/filesystem.py | 74 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | invisible_engine_dots/nanobot/agent/tools/filesystem.py | 76 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | invisible_engine_dots/nanobot/agent/tools/filesystem.py | 249 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | invisible_engine_dots/nanobot/agent/tools/filesystem.py | 251 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | invisible_engine_dots/nanobot/agent/tools/filesystem.py | 293 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | invisible_engine_dots/nanobot/agent/tools/filesystem.py | 295 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | invisible_engine_dots/nanobot/agent/tools/filesystem.py | 815 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | invisible_engine_dots/nanobot/agent/tools/filesystem.py | 817 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | invisible_engine_dots/nanobot/dots/store.py | 322 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | invisible_engine_dots/nanobot/dots/store.py | 324 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | invisible_engine_dots/nanobot/dots/store.py | 373 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | invisible_engine_dots/nanobot/dots/store.py | 375 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | invisible_engine_dots/nanobot/dots/store.py | 475 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | invisible_engine_dots/nanobot/dots/store.py | 477 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | invisible_engine_dots/nanobot/dots/store.py | 614 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | invisible_engine_dots/nanobot/dots/store.py | 616 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | invisible_engine_dots/nanobot/dots/store.py | 667 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | invisible_engine_dots/nanobot/dots/store.py | 669 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | invisible_engine_dots/nanobot/dots/store.py | 741 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | invisible_engine_dots/nanobot/dots/store.py | 743 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | invisible_engine_dots/nanobot/dots/store.py | 825 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | invisible_engine_dots/nanobot/dots/store.py | 827 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | invisible_engine_dots/nanobot/dots/store.py | 917 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | invisible_engine_dots/nanobot/dots/store.py | 919 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | invisible_engine_dots/nanobot/dots/store.py | 1148 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | invisible_engine_dots/nanobot/dots/store.py | 1150 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | invisible_engine_dots/nanobot/dots/store.py | 1195 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | invisible_engine_dots/nanobot/dots/store.py | 1197 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | invisible_engine_dots/nanobot/dots/browser.py | 256 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM | invisible_engine_dots/nanobot/dots/browser.py | 258 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM | invisible_engine_dots/nanobot/dots/browser.py | 283 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM | invisible_engine_dots/nanobot/dots/browser.py | 285 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM | invisible_engine_dots/nanobot/dots/browser.py | 341 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM | invisible_engine_dots/nanobot/dots/browser.py | 343 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM | invisible_engine_dots/nanobot/dots/browser.py | 502 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM | invisible_engine_dots/nanobot/dots/browser.py | 504 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM⚡ | …_engine_dots/tests/core/tools/test_filesystem_tools.py | 279 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | …_engine_dots/tests/core/tools/test_filesystem_tools.py | 281 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | …_engine_dots/tests/core/tools/test_filesystem_tools.py | 367 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | …_engine_dots/tests/core/tools/test_filesystem_tools.py | 369 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | …_engine_dots/tests/core/tools/test_filesystem_tools.py | 36 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | …_engine_dots/tests/core/tools/test_filesystem_tools.py | 38 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | …_engine_dots/tests/core/tools/test_filesystem_tools.py | 195 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | …_engine_dots/tests/core/tools/test_filesystem_tools.py | 197 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | …engine_dots/tests/core/tools/test_edit_enhancements.py | 13 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | …engine_dots/tests/core/tools/test_edit_enhancements.py | 15 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | …engine_dots/tests/core/tools/test_edit_enhancements.py | 17 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | …engine_dots/tests/core/tools/test_edit_enhancements.py | 19 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | …engine_dots/tests/core/tools/test_edit_enhancements.py | 82 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | …engine_dots/tests/core/tools/test_edit_enhancements.py | 84 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | …engine_dots/tests/core/tools/test_edit_enhancements.py | 119 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | …engine_dots/tests/core/tools/test_edit_enhancements.py | 121 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | …engine_dots/tests/core/tools/test_edit_enhancements.py | 143 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | …engine_dots/tests/core/tools/test_edit_enhancements.py | 145 | # --------------------------------------------------------------------------- | COMMENT |
| 76 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | invisible_engine_dots/nanobot/events.py | 3 | CODE | |
| LOW | invisible_engine_dots/nanobot/providers/registry.py | 8 | CODE | |
| LOW | …ngine_dots/nanobot/providers/openai_compat_provider.py | 5 | CODE | |
| LOW | invisible_engine_dots/nanobot/providers/prompt_count.py | 23 | CODE | |
| LOW | invisible_engine_dots/nanobot/providers/base.py | 3 | CODE | |
| LOW | invisible_engine_dots/nanobot/utils/dict_keys.py | 3 | CODE | |
| LOW | invisible_engine_dots/nanobot/utils/cancellation.py | 3 | CODE | |
| LOW | invisible_engine_dots/nanobot/utils/runtime.py | 3 | CODE | |
| LOW | invisible_engine_dots/nanobot/utils/file_diff.py | 3 | CODE | |
| LOW | invisible_engine_dots/nanobot/utils/helpers.py | 3 | CODE | |
| LOW | invisible_engine_dots/nanobot/utils/llm_runtime.py | 3 | CODE | |
| LOW | invisible_engine_dots/nanobot/agent/runner.py | 3 | CODE | |
| LOW | invisible_engine_dots/nanobot/agent/memory.py | 9 | CODE | |
| LOW | …sible_engine_dots/nanobot/agent/transcript_metadata.py | 7 | CODE | |
| LOW | invisible_engine_dots/nanobot/agent/hook.py | 3 | CODE | |
| LOW | …isible_engine_dots/nanobot/agent/context_governance.py | 9 | CODE | |
| LOW | …ble_engine_dots/nanobot/agent/tools/_search_content.py | 3 | CODE | |
| LOW | invisible_engine_dots/nanobot/agent/tools/execution.py | 11 | CODE | |
| LOW | …isible_engine_dots/nanobot/agent/tools/exec_session.py | 3 | CODE | |
| LOW | …visible_engine_dots/nanobot/agent/tools/apply_patch.py | 3 | CODE | |
| LOW | invisible_engine_dots/nanobot/agent/tools/registry.py | 3 | CODE | |
| LOW | invisible_engine_dots/nanobot/agent/tools/cron.py | 5 | CODE | |
| LOW | invisible_engine_dots/nanobot/agent/tools/filesystem.py | 3 | CODE | |
| LOW | invisible_engine_dots/nanobot/agent/tools/shell.py | 3 | CODE | |
| LOW | invisible_engine_dots/nanobot/agent/tools/context.py | 2 | CODE | |
| LOW | invisible_engine_dots/nanobot/agent/tools/mcp.py | 3 | CODE | |
| LOW | invisible_engine_dots/nanobot/agent/tools/search.py | 3 | CODE | |
| LOW | invisible_engine_dots/nanobot/agent/tools/gate_types.py | 9 | CODE | |
| LOW | invisible_engine_dots/nanobot/agent/tools/file_state.py | 3 | CODE | |
| LOW | invisible_engine_dots/nanobot/agent/tools/base.py | 2 | CODE | |
| LOW | invisible_engine_dots/nanobot/agent/tools/schema.py | 12 | CODE | |
| LOW | invisible_engine_dots/nanobot/dots/store.py | 42 | CODE | |
| LOW | invisible_engine_dots/nanobot/dots/server.py | 14 | CODE | |
| LOW | invisible_engine_dots/nanobot/dots/targets.py | 13 | CODE | |
| LOW | invisible_engine_dots/nanobot/dots/provider.py | 9 | CODE | |
| LOW | invisible_engine_dots/nanobot/dots/skills.py | 11 | CODE | |
| LOW | invisible_engine_dots/nanobot/dots/memory_update.py | 22 | CODE | |
| LOW | invisible_engine_dots/nanobot/dots/checks.py | 7 | CODE | |
| LOW | invisible_engine_dots/nanobot/dots/protocol.py | 11 | CODE | |
| LOW | invisible_engine_dots/nanobot/dots/identity_rules.py | 19 | CODE | |
| LOW | invisible_engine_dots/nanobot/dots/computer.py | 3 | CODE | |
| LOW | invisible_engine_dots/nanobot/dots/browser.py | 35 | CODE | |
| LOW | invisible_engine_dots/nanobot/dots/browser.py | 39 | CODE | |
| LOW | invisible_engine_dots/nanobot/dots/engine.py | 33 | CODE | |
| LOW | invisible_engine_dots/nanobot/dots/spend.py | 38 | CODE | |
| LOW | invisible_engine_dots/nanobot/dots/turns.py | 18 | CODE | |
| LOW | invisible_engine_dots/nanobot/dots/secrets.py | 9 | CODE | |
| LOW | invisible_engine_dots/nanobot/dots/gate.py | 33 | CODE | |
| LOW | invisible_engine_dots/nanobot/dots/transcript_outbox.py | 38 | CODE | |
| LOW | invisible_engine_dots/nanobot/dots/images.py | 19 | CODE | |
| LOW | invisible_engine_dots/nanobot/dots/permissions.py | 16 | CODE | |
| LOW | invisible_engine_dots/nanobot/dots/main.py | 9 | CODE | |
| LOW | invisible_engine_dots/nanobot/dots/projection.py | 8 | CODE | |
| LOW | invisible_engine_dots/nanobot/dots/browser_tools.py | 16 | CODE | |
| LOW | invisible_engine_dots/nanobot/dots/browser_tools.py | 26 | CODE | |
| LOW | invisible_engine_dots/nanobot/dots/conversations.py | 22 | CODE | |
| LOW | invisible_engine_dots/nanobot/cron/types.py | 3 | CODE | |
| LOW | …ible_engine_dots/nanobot/session/history_visibility.py | 3 | CODE | |
| LOW | invisible_engine_dots/nanobot/session/summary.py | 3 | CODE | |
| LOW | invisible_engine_dots/tests/conftest.py | 3 | CODE | |
| 189 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | tests/bench/tasks/organize-downloads/tests/grade.py | 0 | the checks of this task; any failed assertion gives the reward 0. | STRING |
| HIGH | tests/bench/tasks/fix-pagination/tests/grade.py | 0 | the checks of this task; any failed assertion gives the reward 0. | STRING |
| HIGH | tests/bench/tasks/static-site/tests/grade.py | 0 | the checks of this task; any failed assertion gives the reward 0. | STRING |
| HIGH | tests/bench/tasks/invoice-report/tests/grade.py | 0 | the checks of this task; any failed assertion gives the reward 0. | STRING |
| HIGH | tests/bench/tasks/csv-to-json/tests/grade.py | 0 | the checks of this task; any failed assertion gives the reward 0. | STRING |
| HIGH | tests/bench/tasks/meeting-speaker/tests/grade.py | 0 | the checks of this task; any failed assertion gives the reward 0. | STRING |
| HIGH | tests/bench/tasks/git-history/tests/grade.py | 0 | the checks of this task; any failed assertion gives the reward 0. | STRING |
| HIGH | tests/bench/tasks/extract-emails/tests/grade.py | 0 | the checks of this task; any failed assertion gives the reward 0. | STRING |
| HIGH | tests/bench/tasks/top-ips/tests/grade.py | 0 | the checks of this task; any failed assertion gives the reward 0. | STRING |
| HIGH | tests/bench/tasks/log-pipeline/tests/grade.py | 0 | the checks of this task; any failed assertion gives the reward 0. | STRING |
| HIGH | tests/bench/tasks/sales-by-region/tests/grade.py | 0 | the checks of this task; any failed assertion gives the reward 0. | STRING |
| HIGH | tests/bench/tasks/bash-to-python/tests/grade.py | 0 | the checks of this task; any failed assertion gives the reward 0. | STRING |
| HIGH | tests/bench/tasks/fix-script/tests/grade.py | 0 | the checks of this task; any failed assertion gives the reward 0. | STRING |
| HIGH | tests/bench/tasks/join-orders/tests/grade.py | 0 | the checks of this task; any failed assertion gives the reward 0. | STRING |
| HIGH | tests/bench/tasks/shipment-weights/tests/grade.py | 0 | the checks of this task; any failed assertion gives the reward 0. | STRING |
| HIGH | tests/bench/tasks/large-files/tests/grade.py | 0 | the checks of this task; any failed assertion gives the reward 0. | STRING |
| HIGH | tests/bench/tasks/wordfreq-cli/tests/grade.py | 0 | the checks of this task; any failed assertion gives the reward 0. | STRING |
| HIGH | tests/bench/tasks/recipes-question/tests/grade.py | 0 | the checks of this task; any failed assertion gives the reward 0. | STRING |
| HIGH | tests/bench/tasks/automation-tick/tests/grade.py | 0 | the checks of this task; any failed assertion gives the reward 0. | STRING |
| HIGH | tests/bench/tasks/ssh-config/tests/grade.py | 0 | the checks of this task; any failed assertion gives the reward 0. | STRING |
| HIGH | tests/bench/tasks/careful-cleanup/tests/grade.py | 0 | the checks of this task; any failed assertion gives the reward 0. | STRING |
| HIGH | tests/bench/tasks/user-service/tests/grade.py | 0 | the checks of this task; any failed assertion gives the reward 0. | STRING |
| HIGH | tests/bench/tasks/git-identity/tests/grade.py | 0 | the checks of this task; any failed assertion gives the reward 0. | STRING |
| HIGH | tests/bench/tasks/temperature-stats/tests/grade.py | 0 | the checks of this task; any failed assertion gives the reward 0. | STRING |
| HIGH | tests/bench/tasks/impossible-request/tests/grade.py | 0 | the checks of this task; any failed assertion gives the reward 0. | STRING |
| HIGH | tests/bench/tasks-long/kv-store/tests/grade.py | 0 | the checks of this task; any failed check gives the reward 0. | STRING |
| HIGH | tests/bench/tasks-long/language-history/tests/grade.py | 0 | the checks of this task; any failed check gives the reward 0. | STRING |
| HIGH | tests/bench/tasks-long/lisp-interpreter/tests/grade.py | 0 | the checks of this task; any failed check gives the reward 0. | STRING |
| HIGH | tests/bench/tasks-long/chess-perft/tests/grade.py | 0 | the checks of this task; any failed check gives the reward 0. | STRING |
| HIGH | …ts/bench/tasks-long/fraud-investigation/tests/grade.py | 0 | the checks of this task; any failed check gives the reward 0. | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL | invisible_engine_dots/nanobot/providers/prompt_count.py | 29 | from nanobot.utils.helpers import estimate_prompt_tokens | CODE |
| CRITICAL | invisible_engine_dots/nanobot/providers/base.py | 28 | from nanobot.utils.helpers import sanitize_surrogates_deep | CODE |
| CRITICAL | invisible_engine_dots/nanobot/utils/runtime.py | 7 | from nanobot.utils.helpers import stringify_text_blocks | CODE |
| CRITICAL | invisible_engine_dots/nanobot/dots/memory_update.py | 42 | from nanobot.utils.helpers import estimate_prompt_tokens_chain | CODE |
| CRITICAL | …_engine_dots/tests/core/providers/test_prompt_count.py | 12 | from nanobot.utils.helpers import estimate_prompt_tokens, estimate_prompt_tokens_chain | CODE |
| CRITICAL | …ne_dots/tests/core/providers/test_reasoning_content.py | 12 | from nanobot.utils.helpers import build_assistant_message | CODE |
| CRITICAL | …le_engine_dots/tests/core/utils/test_token_encoding.py | 146 | from nanobot.utils.helpers import estimate_message_tokens | CODE |
| CRITICAL | …ngine_dots/tests/core/agent/test_runner_persistence.py | 33 | from nanobot.utils.helpers import maybe_persist_tool_result | CODE |
| CRITICAL | …ngine_dots/tests/core/agent/test_runner_persistence.py | 63 | from nanobot.utils.helpers import maybe_persist_tool_result | CODE |
| CRITICAL | …ngine_dots/tests/core/agent/test_runner_persistence.py | 79 | from nanobot.utils.helpers import maybe_persist_tool_result | CODE |
| CRITICAL | …ngine_dots/tests/core/agent/test_runner_persistence.py | 214 | from nanobot.utils.helpers import maybe_persist_tool_result | CODE |
| CRITICAL | packages/channels/src/whatsapp-baileys/auth-state.ts | 67 | found[id] = type === "app-state-sync-key" ? this.lib.proto.Message.AppStateSyncKeyData.fromObject(value as { | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | invisible_engine_dots/nanobot/dots/engine.py | 343 | # What the host sent, as it sent it: a field it left out is not stored as null, which the parse refuses. | COMMENT |
| HIGH⚡ | invisible_engine_dots/tests/dots/test_browser_tools.py | 303 | for identity_id in (alone, null, blank): | CODE |
| HIGH | …ible_engine_dots/tests/dots/test_exec_through_relay.py | 200 | command=f"sleep 3 && touch {marker}", timeout=1 | CODE |
| HIGH | tests/bench/author.py | 136 | solve="cd data && find . -type f -size +1048576c -printf '%s %P\\n' | sort -rn > /app/large.txt", | STRING |
| HIGH⚡ | tests/bench/author.py | 485 | "mkdir -p project && cd project && git init -q -b main && git config user.email dev@example.com && git config us | STRING |
| HIGH⚡ | tests/bench/author.py | 486 | " && printf 'def add(a, b):\\n return a + b\\n\\nprint(add(2, 4))\\n' > calc.py && git add . && git commit -q | STRING |
| HIGH⚡ | tests/bench/author.py | 487 | " && printf 'notes\\n' > NOTES.md && git add . && git commit -qm 'notes'" | STRING |
| HIGH⚡ | tests/bench/author.py | 488 | " && printf 'def add(a, b):\\n return a + b - 1\\n\\nprint(add(2, 4))\\n' > calc.py && git commit -qam 'tidy | STRING |
| HIGH⚡ | tests/bench/author.py | 489 | " && printf 'more notes\\n' >> NOTES.md && git commit -qam 'more notes'" | STRING |
| HIGH⚡ | tests/bench/author.py | 490 | " && git rev-parse HEAD~1 > /app/.bad && git rev-parse HEAD > /app/.head" | STRING |
| HIGH | tests/bench/author.py | 641 | solve="""mkdir -p ~/.ssh && chmod 700 ~/.ssh | STRING |
| HIGH⚡ | tests/bench/author.py | 895 | " && echo 'int main(){return 0;}' > project/src/a.c && echo 'keep' > project/src/lib/b.c && echo 'print(1)' > pr | STRING |
| HIGH⚡ | tests/bench/author.py | 896 | " && echo 'notes' > project/docs/build.md && echo 'not an object' > project/docs/demo.o.txt && echo 'old' > proj | STRING |
| HIGH⚡ | tests/bench/author.py | 898 | solve="cd project && find . -name '*.o' -type f -delete && rm -rf build && find . -name __pycache__ -type d -prune - | STRING |
| HIGH | tests/bench/author_long.py | 186 | curl -s -o /dev/null http://127.0.0.1:7070/stats && exit 0 | STRING |
| HIGH | tests/bench/author_long.py | 405 | setup=["python3 gen.py && rm gen.py"], | STRING |
| HIGH | tests/bench/dots_harbor/environment.py | 167 | f"set -a; . {ENV_FILE} 2>/dev/null; set +a; {exports}" | CODE |
| HIGH | tests/bench/dots_harbor/environment.py | 199 | f"mkdir -p {shlex.quote(target)} && tar -xf {staged} -C {shlex.quote(target)} --no-same-owner && rm -f {stag | CODE |
| HIGH | tests/bench/dots_harbor/dockerfile.py | 117 | steps.append(Step("run", "echo 'COPY --from is not replayed' >&2 && false")) | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | invisible_engine_dots/nanobot/events.py | 85 | except Exception: | CODE |
| LOW | …ngine_dots/nanobot/providers/openai_compat_provider.py | 171 | except Exception: | CODE |
| LOW | …ngine_dots/nanobot/providers/openai_compat_provider.py | 1067 | except Exception: | CODE |
| LOW | …ngine_dots/nanobot/providers/openai_compat_provider.py | 1193 | except Exception as e: | CODE |
| LOW⚡ | invisible_engine_dots/nanobot/providers/base.py | 128 | except Exception: | CODE |
| LOW⚡ | invisible_engine_dots/nanobot/providers/base.py | 131 | except Exception: | CODE |
| LOW | invisible_engine_dots/nanobot/providers/base.py | 103 | except Exception: | CODE |
| LOW | invisible_engine_dots/nanobot/providers/base.py | 755 | except Exception: | CODE |
| LOW | invisible_engine_dots/nanobot/providers/base.py | 971 | except Exception as exc: | CODE |
| LOW | invisible_engine_dots/nanobot/providers/base.py | 1156 | except Exception: | CODE |
| LOW | invisible_engine_dots/nanobot/utils/token_encoding.py | 21 | except Exception as exc: | CODE |
| LOW | invisible_engine_dots/nanobot/utils/token_encoding.py | 37 | except Exception as exc: | CODE |
| LOW | invisible_engine_dots/nanobot/utils/helpers.py | 362 | except Exception: | CODE |
| LOW | invisible_engine_dots/nanobot/utils/helpers.py | 530 | except Exception: | CODE |
| LOW | invisible_engine_dots/nanobot/utils/helpers.py | 623 | except Exception: | CODE |
| LOW | invisible_engine_dots/nanobot/utils/helpers.py | 680 | except Exception: | CODE |
| LOW | invisible_engine_dots/nanobot/agent/runner.py | 216 | except Exception: | CODE |
| LOW | invisible_engine_dots/nanobot/agent/runner.py | 260 | except Exception as exc: | CODE |
| LOW | invisible_engine_dots/nanobot/agent/runner.py | 288 | except Exception: | CODE |
| LOW | invisible_engine_dots/nanobot/agent/memory.py | 241 | except Exception: | CODE |
| LOW | …isible_engine_dots/nanobot/agent/context_governance.py | 583 | except Exception: | CODE |
| LOW | invisible_engine_dots/nanobot/agent/tools/execution.py | 192 | except Exception as exc: | CODE |
| LOW | …isible_engine_dots/nanobot/agent/tools/exec_session.py | 736 | except Exception as exc: | CODE |
| LOW | …isible_engine_dots/nanobot/agent/tools/exec_session.py | 838 | except Exception as exc: | CODE |
| LOW | …visible_engine_dots/nanobot/agent/tools/apply_patch.py | 231 | except Exception: | CODE |
| LOW | …visible_engine_dots/nanobot/agent/tools/apply_patch.py | 246 | except Exception as exc: | CODE |
| LOW | invisible_engine_dots/nanobot/agent/tools/registry.py | 148 | except Exception: | CODE |
| LOW⚡ | invisible_engine_dots/nanobot/agent/tools/filesystem.py | 245 | except Exception as e: | CODE |
| LOW⚡ | invisible_engine_dots/nanobot/agent/tools/filesystem.py | 289 | except Exception as e: | CODE |
| LOW | invisible_engine_dots/nanobot/agent/tools/filesystem.py | 770 | except Exception as e: | CODE |
| LOW | invisible_engine_dots/nanobot/agent/tools/filesystem.py | 928 | except Exception as e: | CODE |
| LOW | invisible_engine_dots/nanobot/agent/tools/shell.py | 252 | except Exception as e: | CODE |
| LOW | invisible_engine_dots/nanobot/agent/tools/shell.py | 286 | except Exception as exc: | CODE |
| MEDIUM | invisible_engine_dots/nanobot/agent/tools/mcp.py | 1151 | def own_connection() -> None: | CODE |
| LOW | invisible_engine_dots/nanobot/agent/tools/mcp.py | 300 | except Exception: | CODE |
| LOW | invisible_engine_dots/nanobot/agent/tools/mcp.py | 589 | except Exception as exc: | CODE |
| LOW | invisible_engine_dots/nanobot/agent/tools/mcp.py | 633 | except Exception as exc: | CODE |
| LOW | invisible_engine_dots/nanobot/agent/tools/mcp.py | 737 | except Exception as exc: | CODE |
| LOW | invisible_engine_dots/nanobot/agent/tools/mcp.py | 870 | except Exception as exc: | CODE |
| LOW | invisible_engine_dots/nanobot/agent/tools/mcp.py | 1090 | except Exception as e: | CODE |
| LOW | invisible_engine_dots/nanobot/agent/tools/mcp.py | 1108 | except Exception as e: | CODE |
| LOW | invisible_engine_dots/nanobot/agent/tools/mcp.py | 1124 | except Exception as e: | CODE |
| LOW | invisible_engine_dots/nanobot/agent/tools/mcp.py | 1190 | except Exception as e: | CODE |
| LOW | invisible_engine_dots/nanobot/agent/tools/search.py | 386 | except Exception as e: | CODE |
| LOW | invisible_engine_dots/nanobot/agent/tools/search.py | 689 | except Exception as e: | CODE |
| LOW | invisible_engine_dots/nanobot/dots/store.py | 277 | except Exception: | CODE |
| LOW | invisible_engine_dots/nanobot/dots/server.py | 226 | except Exception as error: | CODE |
| LOW | invisible_engine_dots/nanobot/dots/server.py | 437 | except Exception as error: | CODE |
| LOW | invisible_engine_dots/nanobot/dots/browser.py | 807 | except Exception as error: | CODE |
| LOW | invisible_engine_dots/nanobot/dots/engine.py | 570 | except Exception: | CODE |
| LOW | invisible_engine_dots/nanobot/dots/engine.py | 746 | except Exception: | CODE |
| MEDIUM | invisible_engine_dots/nanobot/dots/engine.py | 604 | def _run_memory_pass(self) -> None: | CODE |
| LOW | invisible_engine_dots/nanobot/dots/turns.py | 275 | except Exception as exc: | CODE |
| LOW | invisible_engine_dots/nanobot/dots/turns.py | 486 | except Exception as exc: | CODE |
| LOW | invisible_engine_dots/nanobot/cron/service.py | 66 | except Exception: | CODE |
| LOW | invisible_engine_dots/nanobot/cron/service.py | 90 | except Exception as exc: | CODE |
| LOW | invisible_engine_dots/nanobot/cron/service.py | 97 | except Exception: | CODE |
| LOW | invisible_engine_dots/nanobot/cron/service.py | 152 | except Exception: | CODE |
| LOW | invisible_engine_dots/nanobot/cron/service.py | 199 | except Exception: | CODE |
| LOW | invisible_engine_dots/nanobot/cron/service.py | 437 | except Exception: | CODE |
| 4 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …ngine_dots/nanobot/providers/openai_compat_provider.py | 505 | CODE | |
| LOW | …ngine_dots/nanobot/providers/openai_compat_provider.py | 595 | CODE | |
| LOW | …ngine_dots/nanobot/providers/openai_compat_provider.py | 717 | CODE | |
| LOW | …ngine_dots/nanobot/providers/openai_compat_provider.py | 884 | CODE | |
| LOW | …ngine_dots/nanobot/providers/openai_compat_provider.py | 1054 | CODE | |
| LOW | invisible_engine_dots/nanobot/providers/base.py | 501 | CODE | |
| LOW | invisible_engine_dots/nanobot/providers/base.py | 636 | CODE | |
| LOW | invisible_engine_dots/nanobot/providers/base.py | 746 | CODE | |
| LOW | invisible_engine_dots/nanobot/providers/base.py | 809 | CODE | |
| LOW | invisible_engine_dots/nanobot/providers/base.py | 884 | CODE | |
| LOW | invisible_engine_dots/nanobot/providers/base.py | 909 | CODE | |
| LOW | invisible_engine_dots/nanobot/providers/base.py | 1217 | CODE | |
| LOW | invisible_engine_dots/nanobot/utils/helpers.py | 339 | CODE | |
| LOW | invisible_engine_dots/nanobot/utils/helpers.py | 409 | CODE | |
| LOW | invisible_engine_dots/nanobot/utils/helpers.py | 578 | CODE | |
| LOW | invisible_engine_dots/nanobot/utils/helpers.py | 644 | CODE | |
| LOW | invisible_engine_dots/nanobot/agent/runner.py | 209 | CODE | |
| LOW | invisible_engine_dots/nanobot/agent/memory.py | 164 | CODE | |
| LOW | …isible_engine_dots/nanobot/agent/context_governance.py | 540 | CODE | |
| LOW | …isible_engine_dots/nanobot/agent/context_governance.py | 686 | CODE | |
| LOW | …isible_engine_dots/nanobot/agent/context_governance.py | 724 | CODE | |
| LOW | …ble_engine_dots/nanobot/agent/tools/_search_content.py | 64 | CODE | |
| LOW | …isible_engine_dots/nanobot/agent/tools/exec_session.py | 50 | CODE | |
| LOW | …isible_engine_dots/nanobot/agent/tools/exec_session.py | 91 | CODE | |
| LOW | …isible_engine_dots/nanobot/agent/tools/exec_session.py | 739 | CODE | |
| LOW | …visible_engine_dots/nanobot/agent/tools/apply_patch.py | 96 | CODE | |
| LOW | invisible_engine_dots/nanobot/agent/tools/cron.py | 123 | CODE | |
| LOW | invisible_engine_dots/nanobot/agent/tools/filesystem.py | 134 | CODE | |
| LOW | invisible_engine_dots/nanobot/agent/tools/filesystem.py | 621 | CODE | |
| LOW | invisible_engine_dots/nanobot/agent/tools/filesystem.py | 878 | CODE | |
| LOW | invisible_engine_dots/nanobot/agent/tools/mcp.py | 348 | CODE | |
| LOW | invisible_engine_dots/nanobot/agent/tools/mcp.py | 918 | CODE | |
| LOW | invisible_engine_dots/nanobot/agent/tools/mcp.py | 353 | CODE | |
| LOW | invisible_engine_dots/nanobot/agent/tools/mcp.py | 566 | CODE | |
| LOW | invisible_engine_dots/nanobot/agent/tools/mcp.py | 716 | CODE | |
| LOW | invisible_engine_dots/nanobot/agent/tools/mcp.py | 833 | CODE | |
| LOW | invisible_engine_dots/nanobot/agent/tools/mcp.py | 938 | CODE | |
| LOW | invisible_engine_dots/nanobot/agent/tools/search.py | 78 | CODE | |
| LOW | invisible_engine_dots/nanobot/agent/tools/search.py | 320 | CODE | |
| LOW | invisible_engine_dots/nanobot/agent/tools/search.py | 550 | CODE | |
| LOW | invisible_engine_dots/nanobot/agent/tools/base.py | 56 | CODE | |
| LOW | invisible_engine_dots/nanobot/dots/memory_update.py | 120 | CODE | |
| LOW | invisible_engine_dots/nanobot/dots/protocol.py | 238 | CODE | |
| LOW | invisible_engine_dots/nanobot/dots/engine.py | 368 | CODE | |
| LOW | invisible_engine_dots/nanobot/dots/engine.py | 771 | CODE | |
| LOW | invisible_engine_dots/nanobot/dots/engine.py | 378 | CODE | |
| LOW | invisible_engine_dots/nanobot/dots/engine.py | 780 | CODE | |
| LOW | invisible_engine_dots/nanobot/dots/gate.py | 180 | CODE | |
| LOW | invisible_engine_dots/nanobot/dots/images.py | 48 | CODE | |
| LOW | invisible_engine_dots/nanobot/dots/conversations.py | 114 | CODE | |
| LOW | invisible_engine_dots/nanobot/cron/service.py | 170 | CODE | |
| LOW | invisible_engine_dots/nanobot/cron/service.py | 316 | CODE | |
| LOW | invisible_engine_dots/nanobot/cron/service.py | 719 | CODE | |
| LOW | invisible_engine_dots/tests/test_dependencies.py | 52 | CODE | |
| LOW | …engine_dots/tests/core/agent/test_runner_file_reads.py | 58 | CODE | |
| LOW | invisible_engine_dots/tests/fakes/fake_relay.py | 24 | CODE | |
| LOW | invisible_engine_dots/tests/dots/test_computer.py | 301 | CODE | |
| LOW | invisible_engine_dots/tests/dots/test_computer.py | 306 | CODE | |
| LOW | tests/bench/references/lisp.py | 29 | CODE | |
| LOW | tests/bench/references/lisp.py | 278 | CODE | |
| 5 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH⚡ | tests/bench/bridge.ts | 62 | print({ ready: true, removed: leftovers.length }); | CODE |
| HIGH⚡ | tests/bench/bridge.ts | 68 | print({ id: dot.id }); | CODE |
| HIGH⚡ | tests/bench/bridge.ts | 74 | print({ deleted: target }); | CODE |
| HIGH⚡ | tests/bench/bridge.ts | 88 | print(ended); | CODE |
| HIGH⚡ | tests/bench/bridge.ts | 93 | print((await product.events(target)).filter((e) => !extra || e.data.task_id === extra)); | CODE |
| HIGH⚡ | tests/bench/bridge.ts | 97 | print(result); | CODE |
| HIGH⚡ | tests/bench/bridge.ts | 102 | print({ written: extra }); | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | invisible_engine_dots/nanobot/utils/helpers.py | 362 | except Exception: | CODE |
| HIGH | invisible_engine_dots/nanobot/utils/helpers.py | 623 | except Exception: | CODE |
| HIGH | invisible_engine_dots/nanobot/utils/helpers.py | 680 | except Exception: | CODE |
| HIGH | invisible_engine_dots/nanobot/agent/tools/shell.py | 40 | except (ProcessLookupError, ChildProcessError): | CODE |
| HIGH | invisible_engine_dots/nanobot/agent/tools/mcp.py | 366 | except (UnicodeDecodeError, ValueError): | CODE |
| HIGH | invisible_engine_dots/nanobot/dots/server.py | 435 | except ConnectionError: | CODE |
| HIGH | invisible_engine_dots/nanobot/dots/checks.py | 103 | except OSError: | CODE |
| HIGH | invisible_engine_dots/nanobot/dots/conversations.py | 64 | except ValueError: | CODE |
| HIGH | tests/bench/tasks-long/kv-store/tests/grade.py | 28 | except (OSError, ValueError): | CODE |
| HIGH | guest/image-builder/test/smoke/browser/proxy.py | 31 | except (ConnectionError, asyncio.CancelledError): | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | pyproject.toml | 1 | # Configuration only: nothing in this repository is a Python package. The | COMMENT |
| LOW | vitest.config.ts | 21 | // Setup hooks boot an embedded PostgreSQL (PGlite, WebAssembly) and run | COMMENT |
| LOW | invisible_engine_dots/nanobot/dots/store.py | 921 | # Where an approval stands. Every step commits before the next one starts: | COMMENT |
| LOW | invisible_engine_dots/nanobot/dots/store.py | 1141 | cursor = conn.execute( | COMMENT |
| LOW | invisible_engine_dots/nanobot/dots/browser.py | 61 | from nanobot.dots.store import BrowserIdentityRow, DotStore | COMMENT |
| LOW | tests/e2e/linux-host/prepare.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | guest/image-builder/test/smoke/smoke.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | guest/image-builder/test/smoke/run.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | guest/image-builder/test/smoke/prepare-engine.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | guest/image-builder/test/smoke/lib.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | guest/image-builder/test/smoke/browser/smoke.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | guest/image-builder/runtime/install.sh | 21 | [ -x /opt/invisible-dots-engine/bin/python ] || die "the golden image has no engine environment (a golden image from bef | COMMENT |
| LOW | guest/image-builder/runtime/dot-install.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | guest/image-builder/builder/provision.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | guest/image-builder/builder/user-data.yaml | 1 | #cloud-config | COMMENT |
| LOW | guest/image-builder/builder/build-browser-env.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | guest/image-builder/builder/build-engine-env.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | guest/dot-agentd/cmd/dot-agentd/main.go | 1 | // Command dot-agentd is the computer daemon of a Dot's VM. It serves the | COMMENT |
| LOW | guest/dot-agentd/internal/agentd/server.go | 21 | Token string | COMMENT |
| LOW | guest/dot-agentd/internal/agentd/account_linux.go | 121 | } | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | invisible_engine_dots/nanobot/utils/llm_runtime.py | 22 | # The model's context window, prompt and answer together; None when it is not known. | COMMENT |
| MEDIUM | invisible_engine_dots/nanobot/dots/turns.py | 303 | # Every request uses the whole of what its model can do: its own context window and longest answer. | COMMENT |
| MEDIUM⚡ | invisible_engine_dots/tests/dots/test_projection.py | 33 | # The context window is the model's own (OpenRouter's), read by the turn: the settings name none. | COMMENT |
| MEDIUM | invisible_engine_dots/tests/dots/test_main.py | 282 | # OpenRouter's list of models: each with the context window and the longest answer of the provider it | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …ngine_dots/nanobot/providers/openai_compat_provider.py | 354 | CODE | |
| LOW | invisible_engine_dots/nanobot/providers/base.py | 974 | CODE | |
| LOW | invisible_engine_dots/nanobot/agent/tools/shell.py | 179 | CODE | |
| LOW | invisible_engine_dots/nanobot/agent/tools/search.py | 320 | CODE | |
| LOW | invisible_engine_dots/nanobot/agent/tools/search.py | 550 | CODE | |
| LOW | invisible_engine_dots/nanobot/dots/browser.py | 212 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | invisible_engine_dots/nanobot/agent/tools/mcp.py | 470 | def _set_mcp_connection(self, session: ClientSession, server_name: str) -> None: | CODE |
| LOW⚡ | invisible_engine_dots/nanobot/agent/tools/mcp.py | 475 | def set_reconnect_handler(self, reconnect: _ReconnectCallback) -> None: | CODE |
| LOW | invisible_engine_dots/nanobot/dots/browser.py | 643 | async def _settled(task: asyncio.Task[None] | None) -> None: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | .github/workflows/tests.yml | 255 | # apps/web/e2e/harness.ts. The JUnit report lands in apps/web/playwright-report.xml. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | invisible_engine_dots/tests/core/tools/test_mcp_tool.py | 896 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …ible_engine_dots/tests/core/tools/test_search_tools.py | 715 | (tmp_path / "source.txt").write_text("placeholder", encoding="utf-8") | CODE |
| LOW | packages/shared/test/paths.test.ts | 7 | const userHome = resolve("fake-user-home"); | CODE |