AI Slop Code RIsk Monitor

feder-cr/aihawk_mcp_server

Open-source, self-hosted alternative to OpenAI Dots, Grok Bot. Built to be undetectable by anti-bot systems.

16.9 Elevated pattern signal View on GitHub

Maintenance and Governance Review

This report summarizes scanner evidence for feder-cr/aihawk_mcp_server, a TypeScript project with 31,957 GitHub stars. SynthScan examined 159,316 lines of code across 893 source files, recording 2160 pattern matches distributed across 16 syntactic categories. The legacy adjusted pattern signal is 16.9 (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.

16.9
Adjusted Signal
16.9
Raw Pattern Score
100%
Time Factor
2026-10-11
Last Push
32.0K
Stars
TypeScript
Language
159.3K
Lines of Code
893
Files
2.2K
Pattern Hits
2026-10-12
Scan Date
0.05
HC Hit Rate

Risk Review · v3

Use each vector to guide manual verification of the underlying findings.

Cognitive Ownership Risk 41.4/100 · MEDIUM

Can maintainers explain intent, assumptions, and trade-offs? 1756 finding(s).

Hallucinated Dependency & Supply Chain Risk 10.9/100 · LOW

Are imports declared and package/API names verified? 196 finding(s).

Agent Over-Engineering Ratio 50.4/100 · HIGH

Are wrappers, guards, and repeated structures necessary? 1877 finding(s).

PR Review Velocity Impact 57.2/100 · HIGH

Which changes need focused human review? 2160 finding(s).

What These Metrics Mean

Adjusted Signal
Legacy pattern score normalized per 1,000 scanned lines and multiplied by the repository-level time factor. It is not an estimate of AI authorship.
Raw Pattern Score
Sum of severity- and context-weighted pattern findings before applying the time factor.
Time Factor
A coarse multiplier based on repository last-push metadata. It does not identify when individual code was written.
Pattern Hits
Count of configured pattern findings. Review each location and surrounding code before acting.
HC Hit Rate
High- and critical-severity findings per scanned file. Severity is a configured detector weight, not proof of a vulnerability or authorship.
Lines / Files
Scan coverage denominators used by the legacy normalized score.

Pattern-Signal History

Run additional scans to build a history of the legacy pattern signal. Score changes are not a measure of AI adoption or code quality.

No multi-scan history yet — run the scanner again to build trend data.

Severity Breakdown

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.

CRITICAL 8HIGH 37MEDIUM 144LOW 1971

Directory Score Breakdown

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.

Pattern Findings

The scanner identified 2160 distinct pattern matches across 16 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.

Hyper-Verbose Identifiers1665 hits · 1604 pts
SeverityFileLineSnippetContext
LOW…ngine_dots/nanobot/providers/openai_compat_provider.py63def _requires_max_completion_tokens(model_name: str) -> bool:CODE
LOW…ngine_dots/nanobot/providers/openai_compat_provider.py132def _uses_openrouter_attribution(api_base: str | None) -> bool:CODE
LOW…ngine_dots/nanobot/providers/openai_compat_provider.py471 def _extract_thinking_content(cls, value: object) -> str | None:CODE
LOW…ngine_dots/nanobot/providers/openai_compat_provider.py652 def _accum_legacy_function_call(function_call: Any) -> None:CODE
LOW⚡invisible_engine_dots/nanobot/providers/base.py124def tool_arguments_json_for_replay(arguments: Any) -> str:CODE
LOWinvisible_engine_dots/nanobot/providers/base.py96def tool_arguments_object_for_replay(arguments: Any) -> dict[str, Any]:CODE
LOWinvisible_engine_dots/nanobot/providers/base.py548 def _tool_cache_marker_indices(cls, tools: list[dict[str, Any]]) -> list[int]:CODE
LOWinvisible_engine_dots/nanobot/providers/base.py567 def _sanitize_request_messages(CODE
LOWinvisible_engine_dots/nanobot/providers/base.py607 def _error_response_from_exception(self, exc: Exception) -> LLMResponse:CODE
LOWinvisible_engine_dots/nanobot/providers/base.py780 def _enforce_role_alternation(messages: list[dict[str, Any]]) -> list[dict[str, Any]]:CODE
LOWinvisible_engine_dots/nanobot/providers/base.py880 def _strip_image_content_inplace(messages: list[dict[str, Any]]) -> bool:CODE
LOWinvisible_engine_dots/nanobot/providers/base.py970 def _extract_compound_try_again_in(cls, text: str) -> float | None:CODE
LOWinvisible_engine_dots/nanobot/providers/base.py989 def _extract_retry_after_from_headers(cls, headers: Any) -> float | None:CODE
LOWinvisible_engine_dots/nanobot/providers/base.py1029 def _extract_retry_after_from_response(cls, response: LLMResponse) -> float | None:CODE
LOWinvisible_engine_dots/nanobot/utils/runtime.py35def empty_tool_result_message(tool_name: str) -> str:CODE
LOWinvisible_engine_dots/nanobot/utils/runtime.py40def ensure_nonempty_tool_result(tool_name: str, content: Any) -> Any:CODE
LOWinvisible_engine_dots/nanobot/utils/runtime.py60def build_finalization_retry_message() -> dict[str, str]:CODE
LOWinvisible_engine_dots/nanobot/utils/runtime.py65def build_length_recovery_message(content: str) -> dict[str, str]:CODE
LOWinvisible_engine_dots/nanobot/utils/helpers.py291def content_with_media_breadcrumbs(CODE
LOWinvisible_engine_dots/nanobot/utils/helpers.py360def recent_message_start_index(CODE
LOWinvisible_engine_dots/nanobot/utils/helpers.py441def _estimate_prompt_tokens_with_source(CODE
LOWinvisible_engine_dots/nanobot/utils/helpers.py548def estimate_prompt_tokens_chain(CODE
LOWinvisible_engine_dots/nanobot/agent/runner.py64def _restore_outer_whitespace(content: str, original: str | None) -> str:CODE
LOWinvisible_engine_dots/nanobot/agent/runner.py289 def _initial_transcript_and_compaction(CODE
LOWinvisible_engine_dots/nanobot/agent/runner.py738 def _drop_malformed_tool_calls(CODE
LOWinvisible_engine_dots/nanobot/agent/runner.py772 def _malformed_tool_call_retry_messages(CODE
LOWinvisible_engine_dots/nanobot/agent/runner.py792 async def _request_finalization_retry(CODE
LOWinvisible_engine_dots/nanobot/agent/runner.py807 def _finalization_retry_messages(messages: list[dict[str, Any]]) -> list[dict[str, Any]]:CODE
LOWinvisible_engine_dots/nanobot/agent/runner.py916 async def _commit_model_error_placeholder(CODE
LOWinvisible_engine_dots/nanobot/agent/memory.py37def recent_user_message_tokens(prompt_budget: int) -> int:CODE
LOWinvisible_engine_dots/nanobot/agent/memory.py137def _with_recent_user_messages(summary: str, messages: list[dict[str, Any]], limit: int) -> str:CODE
LOW…isible_engine_dots/nanobot/agent/context_governance.py241 def _merge_adjacent_user_messages_for_model(CODE
LOW…isible_engine_dots/nanobot/agent/context_governance.py268 def prepare_messages_for_model(CODE
LOW…isible_engine_dots/nanobot/agent/context_governance.py543 def strip_placeholder_assistant_messages(CODE
LOW…isible_engine_dots/nanobot/agent/context_governance.py581 def strip_malformed_tool_calls(CODE
LOW…isible_engine_dots/nanobot/agent/context_governance.py674 def backfill_missing_tool_results(CODE
LOW…isible_engine_dots/nanobot/agent/tools/exec_session.py425 async def _wait_for_buffered_output(self) -> None:CODE
LOWinvisible_engine_dots/nanobot/agent/tools/registry.py159 def _unwrap_arguments_payload(cls, tool: Tool, params: Any) -> Any:CODE
LOWinvisible_engine_dots/nanobot/agent/tools/filesystem.py510def _collapse_internal_whitespace(text: str) -> str:CODE
LOWinvisible_engine_dots/nanobot/agent/tools/context.py38def current_request_session_key() -> str | None:CODE
LOWinvisible_engine_dots/nanobot/agent/tools/mcp.py111def _is_malformed_mcp_progress_notification(message: Any) -> bool:CODE
LOWinvisible_engine_dots/nanobot/agent/tools/mcp.py132def _progress_params_have_token(params: Any) -> bool:CODE
LOWinvisible_engine_dots/nanobot/agent/tools/mcp.py186def _filter_malformed_mcp_progress_notifications(CODE
LOWinvisible_engine_dots/nanobot/agent/tools/mcp.py223def _is_transient_connection_failure(exc: BaseException) -> bool:CODE
LOWinvisible_engine_dots/nanobot/agent/tools/mcp.py240def _log_mcp_connection_failure(name: str, exc: BaseException, hint: str = "") -> None:CODE
LOWinvisible_engine_dots/nanobot/agent/tools/mcp.py332def _resolve_local_schema_ref(root: dict[str, Any], ref: str) -> Any:CODE
LOWinvisible_engine_dots/nanobot/agent/tools/mcp.py355def _rewrite_local_schema_refs(schema: dict[str, Any]) -> dict[str, Any]:CODE
LOWinvisible_engine_dots/nanobot/agent/tools/mcp.py411def _normalize_nullable_schema(schema: dict[str, Any]) -> dict[str, Any]:CODE
LOWinvisible_engine_dots/nanobot/agent/tools/mcp.py462def _normalize_schema_for_openai(schema: Any) -> dict[str, Any]:CODE
LOWinvisible_engine_dots/nanobot/agent/tools/base.py56 def validate_json_schema_value(CODE
LOWinvisible_engine_dots/nanobot/dots/store.py437def mark_inbound_in_transcript(conn: sqlite3.Connection, inbound_id: str) -> bool:CODE
LOWinvisible_engine_dots/nanobot/dots/store.py982def _whole_numbers_as_integers(value: object) -> object:CODE
LOWinvisible_engine_dots/nanobot/dots/store.py1071def open_approval_for_session(conn: sqlite3.Connection, session_key: str) -> Approval | None:CODE
LOWinvisible_engine_dots/nanobot/dots/store.py1277def commit_summary_checkpoint(conn: sqlite3.Connection, session_key: str, summary: str, boundary: int) -> None:CODE
LOWinvisible_engine_dots/nanobot/dots/store.py1049def get_approval_by_tool_call(conn: sqlite3.Connection, session_key: str, tool_call_id: str) -> Approval | None:STRING
LOWinvisible_engine_dots/nanobot/dots/targets.py150def browser_identity_only_target(params: Mapping[str, Any]) -> str | None:CODE
LOWinvisible_engine_dots/nanobot/dots/targets.py178def identity_create_arguments(params: Mapping[str, Any]) -> dict[str, Any]:CODE
LOWinvisible_engine_dots/nanobot/dots/protocol.py180def _iso_datetime_with_offset(value: str) -> str:CODE
LOWinvisible_engine_dots/nanobot/dots/protocol.py227 def _note_is_absent_or_a_string(cls, value: str | None) -> str | None:CODE
LOWinvisible_engine_dots/nanobot/dots/protocol.py349 def _servers_are_named_and_of_one_kind(cls, value: Any) -> Any:CODE
1605 more matches not shown…
Decorative Section Separators136 hits · 513 pts
SeverityFileLineSnippetContext
MEDIUM…ngine_dots/nanobot/providers/openai_compat_provider.py375 # ------------------------------------------------------------------COMMENT
MEDIUM…ngine_dots/nanobot/providers/openai_compat_provider.py377 # ------------------------------------------------------------------COMMENT
MEDIUM…ngine_dots/nanobot/providers/openai_compat_provider.py427 # ------------------------------------------------------------------COMMENT
MEDIUM…ngine_dots/nanobot/providers/openai_compat_provider.py429 # ------------------------------------------------------------------COMMENT
MEDIUM…ngine_dots/nanobot/providers/openai_compat_provider.py840 # ------------------------------------------------------------------COMMENT
MEDIUM…ngine_dots/nanobot/providers/openai_compat_provider.py842 # ------------------------------------------------------------------COMMENT
MEDIUMinvisible_engine_dots/nanobot/agent/tools/filesystem.py74# ---------------------------------------------------------------------------COMMENT
MEDIUMinvisible_engine_dots/nanobot/agent/tools/filesystem.py76# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡invisible_engine_dots/nanobot/agent/tools/filesystem.py245# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡invisible_engine_dots/nanobot/agent/tools/filesystem.py247# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡invisible_engine_dots/nanobot/agent/tools/filesystem.py289# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡invisible_engine_dots/nanobot/agent/tools/filesystem.py291# ---------------------------------------------------------------------------COMMENT
MEDIUMinvisible_engine_dots/nanobot/agent/tools/filesystem.py811# ---------------------------------------------------------------------------COMMENT
MEDIUMinvisible_engine_dots/nanobot/agent/tools/filesystem.py813# ---------------------------------------------------------------------------COMMENT
MEDIUMinvisible_engine_dots/nanobot/dots/store.py322# ---------------------------------------------------------------------------COMMENT
MEDIUMinvisible_engine_dots/nanobot/dots/store.py324# ---------------------------------------------------------------------------COMMENT
MEDIUMinvisible_engine_dots/nanobot/dots/store.py373# ---------------------------------------------------------------------------COMMENT
MEDIUMinvisible_engine_dots/nanobot/dots/store.py375# ---------------------------------------------------------------------------COMMENT
MEDIUMinvisible_engine_dots/nanobot/dots/store.py475# ---------------------------------------------------------------------------COMMENT
MEDIUMinvisible_engine_dots/nanobot/dots/store.py477# ---------------------------------------------------------------------------COMMENT
MEDIUMinvisible_engine_dots/nanobot/dots/store.py614# ---------------------------------------------------------------------------COMMENT
MEDIUMinvisible_engine_dots/nanobot/dots/store.py616# ---------------------------------------------------------------------------COMMENT
MEDIUMinvisible_engine_dots/nanobot/dots/store.py667# ---------------------------------------------------------------------------COMMENT
MEDIUMinvisible_engine_dots/nanobot/dots/store.py669# ---------------------------------------------------------------------------COMMENT
MEDIUMinvisible_engine_dots/nanobot/dots/store.py741# ---------------------------------------------------------------------------COMMENT
MEDIUMinvisible_engine_dots/nanobot/dots/store.py743# ---------------------------------------------------------------------------COMMENT
MEDIUMinvisible_engine_dots/nanobot/dots/store.py825# ---------------------------------------------------------------------------COMMENT
MEDIUMinvisible_engine_dots/nanobot/dots/store.py827# ---------------------------------------------------------------------------COMMENT
MEDIUMinvisible_engine_dots/nanobot/dots/store.py909# ---------------------------------------------------------------------------COMMENT
MEDIUMinvisible_engine_dots/nanobot/dots/store.py911# ---------------------------------------------------------------------------COMMENT
MEDIUMinvisible_engine_dots/nanobot/dots/store.py1151# ---------------------------------------------------------------------------COMMENT
MEDIUMinvisible_engine_dots/nanobot/dots/store.py1153# ---------------------------------------------------------------------------COMMENT
MEDIUMinvisible_engine_dots/nanobot/dots/store.py1198# ---------------------------------------------------------------------------COMMENT
MEDIUMinvisible_engine_dots/nanobot/dots/store.py1200# ---------------------------------------------------------------------------COMMENT
MEDIUMinvisible_engine_dots/nanobot/dots/browser.py256 # ------------------------------------------------------------------COMMENT
MEDIUMinvisible_engine_dots/nanobot/dots/browser.py258 # ------------------------------------------------------------------COMMENT
MEDIUMinvisible_engine_dots/nanobot/dots/browser.py283 # ------------------------------------------------------------------COMMENT
MEDIUMinvisible_engine_dots/nanobot/dots/browser.py285 # ------------------------------------------------------------------COMMENT
MEDIUMinvisible_engine_dots/nanobot/dots/browser.py341 # ------------------------------------------------------------------COMMENT
MEDIUMinvisible_engine_dots/nanobot/dots/browser.py343 # ------------------------------------------------------------------COMMENT
MEDIUMinvisible_engine_dots/nanobot/dots/browser.py500 # ------------------------------------------------------------------COMMENT
MEDIUMinvisible_engine_dots/nanobot/dots/browser.py502 # ------------------------------------------------------------------COMMENT
MEDIUM⚡…_engine_dots/tests/core/tools/test_filesystem_tools.py279# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡…_engine_dots/tests/core/tools/test_filesystem_tools.py281# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡…_engine_dots/tests/core/tools/test_filesystem_tools.py367# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡…_engine_dots/tests/core/tools/test_filesystem_tools.py369# ---------------------------------------------------------------------------COMMENT
MEDIUM…_engine_dots/tests/core/tools/test_filesystem_tools.py36# ---------------------------------------------------------------------------COMMENT
MEDIUM…_engine_dots/tests/core/tools/test_filesystem_tools.py38# ---------------------------------------------------------------------------COMMENT
MEDIUM…_engine_dots/tests/core/tools/test_filesystem_tools.py195# ---------------------------------------------------------------------------COMMENT
MEDIUM…_engine_dots/tests/core/tools/test_filesystem_tools.py197# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡…engine_dots/tests/core/tools/test_edit_enhancements.py13# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡…engine_dots/tests/core/tools/test_edit_enhancements.py15# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡…engine_dots/tests/core/tools/test_edit_enhancements.py17# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡…engine_dots/tests/core/tools/test_edit_enhancements.py19# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡…engine_dots/tests/core/tools/test_edit_enhancements.py82# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡…engine_dots/tests/core/tools/test_edit_enhancements.py84# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡…engine_dots/tests/core/tools/test_edit_enhancements.py119# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡…engine_dots/tests/core/tools/test_edit_enhancements.py121# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡…engine_dots/tests/core/tools/test_edit_enhancements.py143# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡…engine_dots/tests/core/tools/test_edit_enhancements.py145# ---------------------------------------------------------------------------COMMENT
76 more matches not shown…
Unused Imports158 hits · 146 pts
SeverityFileLineSnippetContext
LOWinvisible_engine_dots/nanobot/providers/registry.py8CODE
LOW…ngine_dots/nanobot/providers/openai_compat_provider.py5CODE
LOWinvisible_engine_dots/nanobot/providers/prompt_count.py23CODE
LOWinvisible_engine_dots/nanobot/providers/base.py3CODE
LOWinvisible_engine_dots/nanobot/utils/dict_keys.py3CODE
LOWinvisible_engine_dots/nanobot/utils/cancellation.py3CODE
LOWinvisible_engine_dots/nanobot/utils/runtime.py3CODE
LOWinvisible_engine_dots/nanobot/utils/file_diff.py3CODE
LOWinvisible_engine_dots/nanobot/utils/helpers.py3CODE
LOWinvisible_engine_dots/nanobot/utils/llm_runtime.py3CODE
LOWinvisible_engine_dots/nanobot/agent/runner.py3CODE
LOWinvisible_engine_dots/nanobot/agent/memory.py9CODE
LOW…sible_engine_dots/nanobot/agent/transcript_metadata.py7CODE
LOWinvisible_engine_dots/nanobot/agent/hook.py3CODE
LOW…isible_engine_dots/nanobot/agent/context_governance.py8CODE
LOW…ble_engine_dots/nanobot/agent/tools/_search_content.py3CODE
LOWinvisible_engine_dots/nanobot/agent/tools/execution.py10CODE
LOW…isible_engine_dots/nanobot/agent/tools/exec_session.py3CODE
LOW…visible_engine_dots/nanobot/agent/tools/apply_patch.py3CODE
LOWinvisible_engine_dots/nanobot/agent/tools/registry.py3CODE
LOWinvisible_engine_dots/nanobot/agent/tools/cron.py5CODE
LOWinvisible_engine_dots/nanobot/agent/tools/filesystem.py3CODE
LOWinvisible_engine_dots/nanobot/agent/tools/shell.py3CODE
LOWinvisible_engine_dots/nanobot/agent/tools/context.py2CODE
LOWinvisible_engine_dots/nanobot/agent/tools/mcp.py3CODE
LOWinvisible_engine_dots/nanobot/agent/tools/search.py3CODE
LOWinvisible_engine_dots/nanobot/agent/tools/gate_types.py9CODE
LOWinvisible_engine_dots/nanobot/agent/tools/file_state.py3CODE
LOWinvisible_engine_dots/nanobot/agent/tools/base.py2CODE
LOWinvisible_engine_dots/nanobot/agent/tools/schema.py12CODE
LOWinvisible_engine_dots/nanobot/dots/store.py43CODE
LOWinvisible_engine_dots/nanobot/dots/server.py14CODE
LOWinvisible_engine_dots/nanobot/dots/targets.py13CODE
LOWinvisible_engine_dots/nanobot/dots/provider.py9CODE
LOWinvisible_engine_dots/nanobot/dots/skills.py11CODE
LOWinvisible_engine_dots/nanobot/dots/memory_update.py22CODE
LOWinvisible_engine_dots/nanobot/dots/checks.py7CODE
LOWinvisible_engine_dots/nanobot/dots/protocol.py11CODE
LOWinvisible_engine_dots/nanobot/dots/identity_rules.py19CODE
LOWinvisible_engine_dots/nanobot/dots/computer.py3CODE
LOWinvisible_engine_dots/nanobot/dots/mcp_servers.py25CODE
LOWinvisible_engine_dots/nanobot/dots/browser.py35CODE
LOWinvisible_engine_dots/nanobot/dots/engine.py33CODE
LOWinvisible_engine_dots/nanobot/dots/spend.py38CODE
LOWinvisible_engine_dots/nanobot/dots/turns.py18CODE
LOWinvisible_engine_dots/nanobot/dots/secrets.py9CODE
LOWinvisible_engine_dots/nanobot/dots/gate.py33CODE
LOWinvisible_engine_dots/nanobot/dots/transcript_outbox.py38CODE
LOWinvisible_engine_dots/nanobot/dots/images.py19CODE
LOWinvisible_engine_dots/nanobot/dots/permissions.py23CODE
LOWinvisible_engine_dots/nanobot/dots/main.py9CODE
LOWinvisible_engine_dots/nanobot/dots/projection.py8CODE
LOWinvisible_engine_dots/nanobot/dots/browser_tools.py19CODE
LOWinvisible_engine_dots/nanobot/dots/conversations.py22CODE
LOWinvisible_engine_dots/nanobot/cron/types.py3CODE
LOW…ible_engine_dots/nanobot/session/history_visibility.py3CODE
LOWinvisible_engine_dots/nanobot/session/summary.py3CODE
LOWinvisible_engine_dots/tests/conftest.py3CODE
LOWinvisible_engine_dots/tests/test_dependencies.py9CODE
LOWinvisible_engine_dots/tests/test_imports.py7CODE
98 more matches not shown…
Cross-Language Confusion21 hits · 89 pts
SeverityFileLineSnippetContext
HIGHinvisible_engine_dots/nanobot/dots/engine.py353 # 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.py290 for identity_id in (alone, null, blank):CODE
HIGH…ible_engine_dots/tests/dots/test_exec_through_relay.py200 command=f"sleep 3 && touch {marker}", timeout=1CODE
HIGHtests/bench/author.py136 solve="cd data && find . -type f -size +1048576c -printf '%s %P\\n' | sort -rn > /app/large.txt",STRING
HIGH⚡tests/bench/author.py485 "mkdir -p project && cd project && git init -q -b main && git config user.email dev@example.com && git config usSTRING
HIGH⚡tests/bench/author.py486 " && printf 'def add(a, b):\\n return a + b\\n\\nprint(add(2, 4))\\n' > calc.py && git add . && git commit -qSTRING
HIGH⚡tests/bench/author.py487 " && printf 'notes\\n' > NOTES.md && git add . && git commit -qm 'notes'"STRING
HIGH⚡tests/bench/author.py488 " && 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.py489 " && printf 'more notes\\n' >> NOTES.md && git commit -qam 'more notes'"STRING
HIGH⚡tests/bench/author.py490 " && git rev-parse HEAD~1 > /app/.bad && git rev-parse HEAD > /app/.head"STRING
HIGHtests/bench/author.py641 solve="""mkdir -p ~/.ssh && chmod 700 ~/.sshSTRING
HIGH⚡tests/bench/author.py895 " && echo 'int main(){return 0;}' > project/src/a.c && echo 'keep' > project/src/lib/b.c && echo 'print(1)' > prSTRING
HIGH⚡tests/bench/author.py896 " && echo 'notes' > project/docs/build.md && echo 'not an object' > project/docs/demo.o.txt && echo 'old' > projSTRING
HIGH⚡tests/bench/author.py898 solve="cd project && find . -name '*.o' -type f -delete && rm -rf build && find . -name __pycache__ -type d -prune -STRING
HIGHtests/bench/author_long.py186 curl -s -o /dev/null http://127.0.0.1:7070/stats && exit 0STRING
HIGHtests/bench/author_long.py405 setup=["python3 gen.py && rm gen.py"],STRING
HIGHtests/bench/dots_harbor/environment.py167 f"set -a; . {ENV_FILE} 2>/dev/null; set +a; {exports}"CODE
HIGHtests/bench/dots_harbor/environment.py199 f"mkdir -p {shlex.quote(target)} && tar -xf {staged} -C {shlex.quote(target)} --no-same-owner && rm -f {stagCODE
HIGHtests/bench/dots_harbor/dockerfile.py117 steps.append(Step("run", "echo 'COPY --from is not replayed' >&2 && false"))CODE
HIGHguest/image-builder/runtime/vmproxy.py75 "resolvectl dns tun0 198.18.0.2 && resolvectl domain tun0 '~.' && resolvectl default-route tun0 yes\n"CODE
HIGHguest/image-builder/runtime/vmproxy.py76 f"resolvectl default-route {device} no || true\n"CODE
Hallucination Indicators8 hits · 80 pts
SeverityFileLineSnippetContext
CRITICALinvisible_engine_dots/nanobot/providers/prompt_count.py29from nanobot.utils.helpers import estimate_prompt_tokensCODE
CRITICALinvisible_engine_dots/nanobot/providers/base.py19from nanobot.utils.helpers import sanitize_surrogates_deepCODE
CRITICALinvisible_engine_dots/nanobot/utils/runtime.py7from nanobot.utils.helpers import stringify_text_blocksCODE
CRITICALinvisible_engine_dots/nanobot/dots/memory_update.py42from nanobot.utils.helpers import estimate_prompt_tokens_chainCODE
CRITICAL…_engine_dots/tests/core/providers/test_prompt_count.py12from nanobot.utils.helpers import estimate_prompt_tokens, estimate_prompt_tokens_chainCODE
CRITICAL…ne_dots/tests/core/providers/test_reasoning_content.py12from nanobot.utils.helpers import build_assistant_messageCODE
CRITICAL…le_engine_dots/tests/core/utils/test_token_encoding.py146from nanobot.utils.helpers import estimate_message_tokensCODE
CRITICALpackages/channels/src/whatsapp-baileys/auth-state.ts67 found[id] = type === "app-state-sync-key" ? this.lib.proto.Message.AppStateSyncKeyData.fromObject(value as {CODE
Excessive Try-Catch Wrapping61 hits · 64 pts
SeverityFileLineSnippetContext
LOW…ngine_dots/nanobot/providers/openai_compat_provider.py791 except Exception:CODE
LOW…ngine_dots/nanobot/providers/openai_compat_provider.py915 except Exception as e:CODE
LOW⚡invisible_engine_dots/nanobot/providers/base.py116 except Exception:CODE
LOW⚡invisible_engine_dots/nanobot/providers/base.py119 except Exception:CODE
LOWinvisible_engine_dots/nanobot/providers/base.py91 except Exception:CODE
LOWinvisible_engine_dots/nanobot/providers/base.py726 except Exception:CODE
LOWinvisible_engine_dots/nanobot/providers/base.py925 except Exception as exc:CODE
LOWinvisible_engine_dots/nanobot/providers/base.py1021 except Exception:CODE
LOWinvisible_engine_dots/nanobot/utils/token_encoding.py21 except Exception as exc:CODE
LOWinvisible_engine_dots/nanobot/utils/token_encoding.py37 except Exception as exc:CODE
LOWinvisible_engine_dots/nanobot/utils/helpers.py339 except Exception:CODE
LOWinvisible_engine_dots/nanobot/utils/helpers.py486 except Exception:CODE
LOWinvisible_engine_dots/nanobot/utils/helpers.py543 except Exception:CODE
LOWinvisible_engine_dots/nanobot/agent/runner.py210 except Exception:CODE
LOWinvisible_engine_dots/nanobot/agent/runner.py254 except Exception as exc:CODE
LOWinvisible_engine_dots/nanobot/agent/runner.py282 except Exception:CODE
LOWinvisible_engine_dots/nanobot/agent/memory.py240 except Exception:CODE
LOWinvisible_engine_dots/nanobot/agent/tools/execution.py171 except Exception as exc:CODE
LOW…isible_engine_dots/nanobot/agent/tools/exec_session.py732 except Exception as exc:CODE
LOW…isible_engine_dots/nanobot/agent/tools/exec_session.py830 except Exception as exc:CODE
LOW…visible_engine_dots/nanobot/agent/tools/apply_patch.py231 except Exception:CODE
LOW…visible_engine_dots/nanobot/agent/tools/apply_patch.py246 except Exception as exc:CODE
LOWinvisible_engine_dots/nanobot/agent/tools/registry.py148 except Exception:CODE
LOW⚡invisible_engine_dots/nanobot/agent/tools/filesystem.py241 except Exception as e:CODE
LOW⚡invisible_engine_dots/nanobot/agent/tools/filesystem.py285 except Exception as e:CODE
LOWinvisible_engine_dots/nanobot/agent/tools/filesystem.py766 except Exception as e:CODE
LOWinvisible_engine_dots/nanobot/agent/tools/filesystem.py920 except Exception as e:CODE
LOWinvisible_engine_dots/nanobot/agent/tools/shell.py248 except Exception as e:CODE
LOWinvisible_engine_dots/nanobot/agent/tools/shell.py282 except Exception as exc:CODE
MEDIUMinvisible_engine_dots/nanobot/agent/tools/mcp.py1014def own_connection() -> None:CODE
LOWinvisible_engine_dots/nanobot/agent/tools/mcp.py307 except Exception:CODE
LOWinvisible_engine_dots/nanobot/agent/tools/mcp.py571 except Exception as exc:CODE
LOWinvisible_engine_dots/nanobot/agent/tools/mcp.py589 except Exception as exc:CODE
LOWinvisible_engine_dots/nanobot/agent/tools/mcp.py687 except Exception as exc:CODE
LOWinvisible_engine_dots/nanobot/agent/tools/mcp.py785 except Exception as exc:CODE
LOWinvisible_engine_dots/nanobot/agent/tools/mcp.py958 except Exception as e:CODE
LOWinvisible_engine_dots/nanobot/agent/tools/mcp.py976 except Exception as e:CODE
LOWinvisible_engine_dots/nanobot/agent/tools/mcp.py986 except Exception as e:CODE
LOWinvisible_engine_dots/nanobot/agent/tools/mcp.py1055 except Exception as e:CODE
LOWinvisible_engine_dots/nanobot/agent/tools/search.py382 except Exception as e:CODE
LOWinvisible_engine_dots/nanobot/agent/tools/search.py681 except Exception as e:CODE
LOWinvisible_engine_dots/nanobot/dots/store.py277 except Exception:CODE
LOWinvisible_engine_dots/nanobot/dots/server.py228 except Exception as error:CODE
LOWinvisible_engine_dots/nanobot/dots/server.py448 except Exception as error:CODE
LOWinvisible_engine_dots/nanobot/dots/mcp_servers.py392 except Exception as error:CODE
LOWinvisible_engine_dots/nanobot/dots/browser.py806 except Exception as error:CODE
LOWinvisible_engine_dots/nanobot/dots/engine.py582 except Exception:CODE
LOWinvisible_engine_dots/nanobot/dots/engine.py758 except Exception:CODE
MEDIUMinvisible_engine_dots/nanobot/dots/engine.py616def _run_memory_pass(self) -> None:CODE
LOWinvisible_engine_dots/nanobot/dots/turns.py278 except Exception as exc:CODE
LOWinvisible_engine_dots/nanobot/dots/turns.py495 except Exception as exc:CODE
LOWinvisible_engine_dots/nanobot/cron/service.py66 except Exception:CODE
LOWinvisible_engine_dots/nanobot/cron/service.py90 except Exception as exc:CODE
LOWinvisible_engine_dots/nanobot/cron/service.py97 except Exception:CODE
LOWinvisible_engine_dots/nanobot/cron/service.py152 except Exception:CODE
LOWinvisible_engine_dots/nanobot/cron/service.py199 except Exception:CODE
LOWinvisible_engine_dots/nanobot/cron/service.py437 except Exception:CODE
LOWinvisible_engine_dots/nanobot/cron/service.py478 except Exception:CODE
LOWinvisible_engine_dots/nanobot/cron/service.py519 except Exception as e:CODE
LOWinvisible_engine_dots/tests/test_imports.py40 except Exception as exc: # noqa: BLE001 - the failure names the moduleCODE
1 more matches not shown…
Deep Nesting61 hits · 56 pts
SeverityFileLineSnippetContext
LOW…ngine_dots/nanobot/providers/openai_compat_provider.py307CODE
LOW…ngine_dots/nanobot/providers/openai_compat_provider.py443CODE
LOW…ngine_dots/nanobot/providers/openai_compat_provider.py610CODE
LOW…ngine_dots/nanobot/providers/openai_compat_provider.py778CODE
LOWinvisible_engine_dots/nanobot/providers/base.py472CODE
LOWinvisible_engine_dots/nanobot/providers/base.py607CODE
LOWinvisible_engine_dots/nanobot/providers/base.py717CODE
LOWinvisible_engine_dots/nanobot/providers/base.py780CODE
LOWinvisible_engine_dots/nanobot/providers/base.py855CODE
LOWinvisible_engine_dots/nanobot/providers/base.py880CODE
LOWinvisible_engine_dots/nanobot/providers/base.py1050CODE
LOWinvisible_engine_dots/nanobot/utils/helpers.py316CODE
LOWinvisible_engine_dots/nanobot/utils/helpers.py386CODE
LOWinvisible_engine_dots/nanobot/utils/helpers.py441CODE
LOWinvisible_engine_dots/nanobot/utils/helpers.py507CODE
LOWinvisible_engine_dots/nanobot/agent/runner.py203CODE
LOWinvisible_engine_dots/nanobot/agent/memory.py164CODE
LOW…isible_engine_dots/nanobot/agent/context_governance.py636CODE
LOW…isible_engine_dots/nanobot/agent/context_governance.py674CODE
LOW…ble_engine_dots/nanobot/agent/tools/_search_content.py64CODE
LOW…isible_engine_dots/nanobot/agent/tools/exec_session.py50CODE
LOW…isible_engine_dots/nanobot/agent/tools/exec_session.py91CODE
LOW…isible_engine_dots/nanobot/agent/tools/exec_session.py735CODE
LOW…visible_engine_dots/nanobot/agent/tools/apply_patch.py96CODE
LOWinvisible_engine_dots/nanobot/agent/tools/cron.py123CODE
LOWinvisible_engine_dots/nanobot/agent/tools/filesystem.py130CODE
LOWinvisible_engine_dots/nanobot/agent/tools/filesystem.py617CODE
LOWinvisible_engine_dots/nanobot/agent/tools/filesystem.py870CODE
LOWinvisible_engine_dots/nanobot/agent/tools/mcp.py355CODE
LOWinvisible_engine_dots/nanobot/agent/tools/mcp.py810CODE
LOWinvisible_engine_dots/nanobot/agent/tools/mcp.py360CODE
LOWinvisible_engine_dots/nanobot/agent/tools/mcp.py757CODE
LOWinvisible_engine_dots/nanobot/agent/tools/mcp.py843CODE
LOWinvisible_engine_dots/nanobot/agent/tools/search.py78CODE
LOWinvisible_engine_dots/nanobot/agent/tools/search.py316CODE
LOWinvisible_engine_dots/nanobot/agent/tools/search.py542CODE
LOWinvisible_engine_dots/nanobot/agent/tools/base.py56CODE
LOWinvisible_engine_dots/nanobot/dots/memory_update.py120CODE
LOWinvisible_engine_dots/nanobot/dots/protocol.py253CODE
LOWinvisible_engine_dots/nanobot/dots/engine.py380CODE
LOWinvisible_engine_dots/nanobot/dots/engine.py783CODE
LOWinvisible_engine_dots/nanobot/dots/engine.py390CODE
LOWinvisible_engine_dots/nanobot/dots/engine.py792CODE
LOWinvisible_engine_dots/nanobot/dots/gate.py180CODE
LOWinvisible_engine_dots/nanobot/dots/images.py51CODE
LOWinvisible_engine_dots/nanobot/dots/conversations.py114CODE
LOWinvisible_engine_dots/nanobot/cron/service.py170CODE
LOWinvisible_engine_dots/nanobot/cron/service.py316CODE
LOWinvisible_engine_dots/tests/test_dependencies.py52CODE
LOW…engine_dots/tests/core/agent/test_runner_file_reads.py58CODE
LOWinvisible_engine_dots/tests/fakes/fake_relay.py24CODE
LOWinvisible_engine_dots/tests/dots/test_computer.py301CODE
LOWinvisible_engine_dots/tests/dots/test_computer.py306CODE
LOWinvisible_engine_dots/tests/dots/test_mcp_servers.py247CODE
LOWtests/bench/references/lisp.py29CODE
LOWtests/bench/references/lisp.py278CODE
LOWtests/bench/references/perft.py13CODE
LOWtests/bench/references/perft.py65CODE
LOWtests/bench/dots_harbor/environment.py109CODE
LOWtests/bench/dots_harbor/environment.py183CODE
1 more matches not shown…
Cross-Language Confusion (JS/TS)7 hits · 52 pts
SeverityFileLineSnippetContext
HIGH⚡tests/bench/bridge.ts62 print({ ready: true, removed: leftovers.length });CODE
HIGH⚡tests/bench/bridge.ts68 print({ id: dot.id });CODE
HIGH⚡tests/bench/bridge.ts74 print({ deleted: target });CODE
HIGH⚡tests/bench/bridge.ts88 print(ended);CODE
HIGH⚡tests/bench/bridge.ts93 print((await product.events(target)).filter((e) => !extra || e.data.task_id === extra));CODE
HIGH⚡tests/bench/bridge.ts97 print(result);CODE
HIGH⚡tests/bench/bridge.ts102 print({ written: extra });CODE
Empty Error Handlers9 hits · 45 pts
SeverityFileLineSnippetContext
HIGHinvisible_engine_dots/nanobot/utils/helpers.py339except Exception:CODE
HIGHinvisible_engine_dots/nanobot/utils/helpers.py486except Exception:CODE
HIGHinvisible_engine_dots/nanobot/utils/helpers.py543except Exception:CODE
HIGHinvisible_engine_dots/nanobot/agent/tools/shell.py40except (ProcessLookupError, ChildProcessError):CODE
HIGHinvisible_engine_dots/nanobot/agent/tools/mcp.py373except (UnicodeDecodeError, ValueError):CODE
HIGHinvisible_engine_dots/nanobot/dots/server.py446except ConnectionError:CODE
HIGHinvisible_engine_dots/nanobot/dots/checks.py103except OSError:CODE
HIGHinvisible_engine_dots/nanobot/dots/conversations.py64except ValueError:CODE
HIGHguest/image-builder/test/smoke/browser/proxy.py31except (ConnectionError, asyncio.CancelledError):CODE
Over-Commented Block21 hits · 20 pts
SeverityFileLineSnippetContext
LOWpyproject.toml1# Configuration only: nothing in this repository is a Python package. TheCOMMENT
LOWvitest.config.ts21 exclude: ["**/node_modules/**", "**/.next/**", "invisible_engine_dots/**", ...(process.platform === "linux" ? [] : [COMMENT
LOWinvisible_engine_dots/nanobot/utils/helpers.py181 # Every supported control tag contains '<'; ordinary text only needs trimming.COMMENT
LOWinvisible_engine_dots/nanobot/dots/store.py901 return cursor.rowcount == 1COMMENT
LOWinvisible_engine_dots/nanobot/dots/protocol.py121 # `main` alone, no tool takes `browser`, and its instructions are the page rules.COMMENT
LOWinvisible_engine_dots/nanobot/dots/browser.py61from nanobot.dots.protocol import BROWSER_ENV, BROWSERS_DIR, GUEST_DISPLAY, MCP_HOMES_DIRCOMMENT
LOWtests/e2e/linux-host/prepare.sh1#!/usr/bin/env bashCOMMENT
LOWguest/image-builder/test/smoke/smoke.sh1#!/usr/bin/env bashCOMMENT
LOWguest/image-builder/test/smoke/run.sh1#!/usr/bin/env bashCOMMENT
LOWguest/image-builder/test/smoke/prepare-engine.sh1#!/usr/bin/env bashCOMMENT
LOWguest/image-builder/test/smoke/lib.sh1#!/usr/bin/env bashCOMMENT
LOWguest/image-builder/test/smoke/browser/smoke.sh1#!/usr/bin/env bashCOMMENT
LOWguest/image-builder/runtime/install.sh21[ -x /opt/invisible-dots-engine/bin/python ] || die "the golden image has no engine environment (a golden image from befCOMMENT
LOWguest/image-builder/runtime/dot-install.sh1#!/usr/bin/env bashCOMMENT
LOWguest/image-builder/builder/provision.sh1#!/usr/bin/env bashCOMMENT
LOWguest/image-builder/builder/user-data.yaml1#cloud-configCOMMENT
LOWguest/image-builder/builder/build-browser-env.sh1#!/usr/bin/env bashCOMMENT
LOWguest/image-builder/builder/build-engine-env.sh1#!/usr/bin/env bashCOMMENT
LOWguest/dot-agentd/cmd/dot-agentd/main.go1// Command dot-agentd is the computer daemon of a Dot's VM. It serves theCOMMENT
LOWguest/dot-agentd/internal/agentd/server.go21 Token stringCOMMENT
LOWguest/dot-agentd/internal/agentd/account_linux.go121 }COMMENT
Modern AI Meta-Vocabulary4 hits · 14 pts
SeverityFileLineSnippetContext
MEDIUMinvisible_engine_dots/nanobot/utils/llm_runtime.py22 # The model's context window, prompt and answer together; None when it is not known.COMMENT
MEDIUMinvisible_engine_dots/nanobot/dots/turns.py308 # 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.py33 # The context window is the model's own (OpenRouter's), read by the turn: the settings name none.COMMENT
MEDIUMinvisible_engine_dots/tests/dots/test_main.py282 # OpenRouter's list of models: each with the context window and the longest answer of the provider itCOMMENT
AI Structural Patterns4 hits · 4 pts
SeverityFileLineSnippetContext
LOWinvisible_engine_dots/nanobot/agent/tools/shell.py175CODE
LOWinvisible_engine_dots/nanobot/agent/tools/search.py316CODE
LOWinvisible_engine_dots/nanobot/agent/tools/search.py542CODE
LOWinvisible_engine_dots/nanobot/dots/browser.py212CODE
AI Slop Vocabulary1 hit · 3 pts
SeverityFileLineSnippetContext
MEDIUM.github/workflows/tests.yml263 # apps/web/e2e/harness.ts. The JUnit report lands in apps/web/playwright-report.xml.COMMENT
Dead Code1 hit · 2 pts
SeverityFileLineSnippetContext
MEDIUMinvisible_engine_dots/tests/core/tools/test_mcp_tool.py748CODE
Fake / Example Data2 hits · 2 pts
SeverityFileLineSnippetContext
LOW…ible_engine_dots/tests/core/tools/test_search_tools.py715 (tmp_path / "source.txt").write_text("placeholder", encoding="utf-8")CODE
LOWpackages/shared/test/paths.test.ts7const userHome = resolve("fake-user-home");CODE
Modern Structural Boilerplate1 hit · 1 pts
SeverityFileLineSnippetContext
LOWinvisible_engine_dots/nanobot/dots/browser.py642 async def _settled(task: asyncio.Task[None] | None) -> None:CODE