Repository Analysis

gptme/gptme

Your agent in your terminal, equipped with local tools: writes code, uses the terminal, browses the web. Make your own persistent autonomous agent on top!

34.4 Strong AI signal View on GitHub

Analysis Overview

This report presents the forensic synthetic code analysis of gptme/gptme, a Python project with 4,354 GitHub stars. SynthScan v2.0 examined 399,019 lines of code across 1269 source files, recording 10705 pattern matches distributed across 25 syntactic categories. The overall adjusted score of 34.4 places this repository in the Strong AI signal band.

The scanner applied 160+ deterministic lexical heuristics, multi-line block detectors, abstract syntax tree depth profilers, and a cross-file Jaccard similarity matrix to construct a statistically normalised synthetic code estimate. All matches are individually weighted by severity coefficient and contextual multiplier before summation, and the resulting headline score is temporally discounted to account for the repository's development history relative to the commercial emergence of large language model coding tooling (November 2022 onward).

34.4
Adjusted Score
34.4
Raw Score
100%
Time Factor
2026-07-14
Last Push
4.4K
Stars
Python
Language
399.0K
Lines of Code
1.3K
Files
10.7K
Pattern Hits
2026-07-14
Scan Date
0.12
HC Hit Rate

What These Metrics Mean

Adjusted Score
Primary synthetic code indicator. Raw score normalised per 1,000 lines of code and multiplied by the temporal discount factor. This is the definitive comparative metric — use it to rank repositories by AI authorship density.
Raw Score
The unmodified sum of all severity-weighted, context-multiplied pattern match scores before temporal discounting. Reflects the absolute signal strength independent of when the repository was last active.
Time Factor
The temporal discount multiplier (0–100%) applied to the raw score. Repositories last updated before ChatGPT's launch (Nov 2022) receive a 5% factor. Full signal is only assigned to repositories active in the post-adoption era (Jan 2024+).
Pattern Hits
Total count of individual pattern matches across all files and categories. A high hit count with a low score may indicate a very large codebase with isolated AI snippets; a low count with a high score indicates dense, concentrated AI signatures.
HC Hit Rate
High+Critical pattern hits per file, averaged across the repository. This orthogonal signal catches repositories where a few files are densely packed with high-severity AI tells — a strong indicator even when the normalised score appears moderate due to codebase size.
Lines of Code / Files
Total lines and files analysed. The scanner examines 94 file extensions. These denominators are used to normalise the score, enabling fair comparison between repositories of vastly different sizes.

Score History

This chart maps the temporal evolution of the adjusted synthetic code score across successive scan runs. An upward trajectory indicates ongoing incorporation of AI-generated code or expanding LLM-assisted scaffolding; a stable or declining trajectory may reflect active human refactoring, code removal, or the adoption of stricter authorship policies. The dashed secondary line (right axis) independently tracks total raw pattern hit count, which can diverge from the normalised score when codebase size changes significantly between scans.

Severity Breakdown

Classifies detected patterns by their diagnostic confidence and structural impact. CRITICAL patterns (coefficient 10) represent definitive synthetic signatures — hallucinated imports, explicit LLM attribution metadata — virtually never produced by human authors. HIGH (5) indicates strong structural tells such as cross-file repetition or cross-linguistic idioms. MEDIUM (2) covers recognisable conversational padding and AI-specific vocabulary. LOW (1) captures subtle indicators like tautological comments and generic boilerplate that require density to carry independent signal.

CRITICAL 0HIGH 154MEDIUM 1298LOW 9253

Directory Score Breakdown

This horizontal bar chart decomposes the repository's raw synthetic code score by top-level directory, allowing you to pinpoint precisely which modules or components carry the highest AI authorship density. Directories with disproportionately high scores relative to their size warrant targeted manual review: concentrated AI signatures often trace back to mass-generated configuration layers, auto-ported test suites, LLM-scaffolded boilerplate classes, or entire subsystems authored under heavy copilot assistance. Use this view to prioritise your human code-review effort.

Pattern Findings

The scanner identified 10705 distinct pattern matches across 25 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a statistically significant AI authorship indicator. 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 diagnostic confidence level (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — comment-context matches receive a ×1.5 weight because LLMs systematically over-annotate. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier as dense clusters constitute far stronger evidence of synthetic authorship than isolated hits.

Hyper-Verbose Identifiers7055 hits · 6306 pts
SeverityFileLineSnippetContext
LOWtests/test_server_path_traversal.py50 def test_events_rejects_traversal(self, client: FlaskClient, payload: str):CODE
LOWtests/test_server_path_traversal.py55 def test_step_rejects_traversal(self, client: FlaskClient, payload: str):CODE
LOWtests/test_server_path_traversal.py63 def test_tool_confirm_rejects_traversal(self, client: FlaskClient, payload: str):CODE
LOWtests/test_server_path_traversal.py71 def test_rerun_rejects_traversal(self, client: FlaskClient, payload: str):CODE
LOWtests/test_server_path_traversal.py76 def test_elicit_respond_rejects_traversal(self, client: FlaskClient, payload: str):CODE
LOWtests/test_server_path_traversal.py84 def test_interrupt_rejects_traversal(self, client: FlaskClient, payload: str):CODE
LOWtests/test_server_path_traversal.py96 def test_browse_rejects_traversal(self, client: FlaskClient, payload: str):CODE
LOWtests/test_server_path_traversal.py101 def test_upload_rejects_traversal(self, client: FlaskClient, payload: str):CODE
LOWtests/test_server_path_traversal.py106 def test_file_rejects_traversal(self, client: FlaskClient, payload: str):CODE
LOWtests/test_server_path_traversal.py112 def test_preview_rejects_traversal(self, client: FlaskClient, payload: str):CODE
LOWtests/test_server_path_traversal.py120 def test_download_rejects_traversal(self, client: FlaskClient, payload: str):CODE
LOWtests/test_server_path_traversal.py285 def test_user_avatar_rejects_non_image_extension(CODE
LOWtests/test_server_path_traversal.py303 def test_user_avatar_accepts_image_extension(CODE
LOWtests/test_server_path_traversal.py335 def test_agent_avatar_by_path_rejects_non_image_extension(CODE
LOWtests/test_server_path_traversal.py385 def test_conversation_agent_avatar_rejects_non_image_extension(CODE
LOWtests/test_server_path_traversal.py38def _assert_traversal_rejected(response):CODE
LOWtests/test_server_path_traversal.py132 def test_post_message_rejects_traversal(self, client: FlaskClient, payload: str):CODE
LOWtests/test_server_path_traversal.py170 def test_rejects_traversal_in_files(CODE
LOWtests/test_server_path_traversal.py183 def test_safe_relative_path_not_rejected_as_traversal(CODE
LOWtests/test_server_path_traversal.py220 def test_name_with_dots_no_traversal(self, client: FlaskClient):CODE
LOWtests/test_server_path_traversal.py254 def test_generate_rejects_branch_traversal(self, client: FlaskClient, payload: str):CODE
LOWtests/test_server_path_traversal.py266 def test_valid_branch_accepted(self, client: FlaskClient):CODE
LOWtests/test_server_path_traversal.py319 def test_user_avatar_rejects_dotfile_without_image_ext(CODE
LOWtests/test_server_path_traversal.py361 def test_agent_avatar_by_path_accepts_image_extension(CODE
LOWtests/test_server_path_traversal.py427 def test_user_avatar_rejects_disguised_non_image(CODE
LOWtests/test_server_path_traversal.py470 def test_rejects_absolute_path_outside_cwd(CODE
LOWtests/test_server_path_traversal.py484 def test_rejects_home_directory_path(CODE
LOWtests/test_server_path_traversal.py498 def test_rejects_traversal_in_path(CODE
LOWtests/test_server_path_traversal.py525 def test_rejects_non_object_json_body(self, client: FlaskClient, body: object):CODE
LOWtests/test_server_path_traversal.py537 def test_rejects_name_that_slugifies_to_empty(CODE
LOWtests/test_server_path_traversal.py611 def test_whitespace_only_id_rejected_unit(self):CODE
LOWtests/test_server_path_traversal.py626 def test_control_or_edge_whitespace_id_rejected_unit(self, bad_id: str):CODE
LOWtests/test_server_path_traversal.py638 def test_multibyte_over_limit_rejected(self):CODE
LOWtests/test_server_path_traversal.py661 def test_too_long_branch_unit(self):CODE
LOWtests/test_server_path_traversal.py696 def test_multibyte_branch_over_limit_rejected(self):CODE
LOWtests/test_server_path_traversal.py716 def test_too_long_branch_via_endpoint(self, client: FlaskClient):CODE
LOWtests/test_server_path_traversal.py738 def test_rejects_traversal_payloads(self):CODE
LOWtests/test_server_path_traversal.py772 def test_rejects_non_string_branch(self):CODE
LOWtests/test_hooks_mcp_namespace_hint.py41 def test_matches_simple_at_ref(self):CODE
LOWtests/test_hooks_mcp_namespace_hint.py44 def test_matches_hyphenated_name(self):CODE
LOWtests/test_hooks_mcp_namespace_hint.py47 def test_matches_multiple_refs(self):CODE
LOWtests/test_hooks_mcp_namespace_hint.py53 def test_no_false_positive_on_email_address(self):CODE
LOWtests/test_hooks_mcp_namespace_hint.py64 def test_no_messages_yields_nothing(self):CODE
LOWtests/test_hooks_mcp_namespace_hint.py68 def test_no_at_ref_yields_nothing(self):CODE
LOWtests/test_hooks_mcp_namespace_hint.py73 def test_at_ref_matches_server_yields_hint(self):CODE
LOWtests/test_hooks_mcp_namespace_hint.py85 def test_at_ref_no_matching_server_yields_nothing(self):CODE
LOWtests/test_hooks_mcp_namespace_hint.py90 def test_no_loaded_servers_yields_nothing(self):CODE
LOWtests/test_hooks_mcp_namespace_hint.py96 def test_multiple_servers_in_one_message(self):CODE
LOWtests/test_hooks_mcp_namespace_hint.py109 def test_only_last_user_message_checked(self):CODE
LOWtests/test_hooks_mcp_namespace_hint.py120 def test_tool_without_description(self):CODE
LOWtests/test_hooks_mcp_namespace_hint.py136 def test_hint_format_contains_full_tool_name(self):CODE
LOWtests/test_commands_llm.py21def test_cmd_context_reports_context_savings(tmp_path: Path):CODE
LOWtests/test_shell_issue729.py26def test_stderr_redirect_with_pipe(shell):CODE
LOWtests/test_shell_issue729.py49def test_jq_complex_syntax_nested_pipe(shell):CODE
LOWtests/test_shell_issue729.py87def test_jq_function_in_filter(shell):CODE
LOWtests/test_shell_issue729.py118def test_stdout_and_stderr_redirect(shell):CODE
LOWtests/test_dspy_basic.py138def test_tool_metric_empty_messages():CODE
LOWtests/test_dspy_basic.py154def test_prompt_optimizer_init(mock_dspy):CODE
LOWtests/test_dspy_basic.py178def test_task_coverage_analysis():CODE
LOWtests/test_dspy_basic.py201def test_optimization_experiment():CODE
6995 more matches not shown…
Decorative Section Separators1036 hits · 3660 pts
SeverityFileLineSnippetContext
MEDIUMtests/test_hooks_mcp_namespace_hint.py35# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_hooks_mcp_namespace_hint.py37# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_hooks_mcp_namespace_hint.py58# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_hooks_mcp_namespace_hint.py60# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_computer_api.py328# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_computer_api.py330# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_computer_api.py118# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_computer_api.py120# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_computer_api.py180# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_computer_api.py182# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_computer_api.py212# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_computer_api.py214# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_computer_api.py296# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_computer_api.py298# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_mcp_adapter.py366# ============================================================================COMMENT
MEDIUMtests/test_mcp_adapter.py368# ============================================================================COMMENT
MEDIUMtests/test_lessons.py42# ──────────────────────────────────────────────COMMENT
MEDIUMtests/test_lessons.py44# ──────────────────────────────────────────────COMMENT
MEDIUMtests/test_lessons.py67# ──────────────────────────────────────────────COMMENT
MEDIUMtests/test_lessons.py69# ──────────────────────────────────────────────COMMENT
MEDIUMtests/test_lessons.py93# ──────────────────────────────────────────────COMMENT
MEDIUMtests/test_lessons.py95# ──────────────────────────────────────────────COMMENT
MEDIUMtests/test_lessons.py651# ──────────────────────────────────────────────COMMENT
MEDIUMtests/test_lessons.py653# ──────────────────────────────────────────────COMMENT
MEDIUMtests/test_lessons.py137# ──────────────────────────────────────────────COMMENT
MEDIUMtests/test_lessons.py139# ──────────────────────────────────────────────COMMENT
MEDIUMtests/test_lessons.py161# ──────────────────────────────────────────────COMMENT
MEDIUMtests/test_lessons.py163# ──────────────────────────────────────────────COMMENT
MEDIUMtests/test_lessons.py202# ──────────────────────────────────────────────COMMENT
MEDIUMtests/test_lessons.py204# ──────────────────────────────────────────────COMMENT
MEDIUMtests/test_lessons.py404# ──────────────────────────────────────────────COMMENT
MEDIUMtests/test_lessons.py406# ──────────────────────────────────────────────COMMENT
MEDIUMtests/test_lessons.py491# ──────────────────────────────────────────────COMMENT
MEDIUMtests/test_lessons.py493# ──────────────────────────────────────────────COMMENT
MEDIUMtests/test_lessons.py777# ──────────────────────────────────────────────COMMENT
MEDIUMtests/test_lessons.py779# ──────────────────────────────────────────────COMMENT
MEDIUMtests/test_lessons.py814# ──────────────────────────────────────────────COMMENT
MEDIUMtests/test_lessons.py816# ──────────────────────────────────────────────COMMENT
MEDIUMtests/test_eval_behavioral_solutions.py1379# ── Parametrized solution verification ───────────────────────────────────────STRING
MEDIUMtests/test_eval_behavioral_solutions.py1451# ── Smoke tests for individual scenarios ─────────────────────────────────────STRING
MEDIUMtests/test_computer_x11_integration.py33# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_computer_x11_integration.py35# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_computer_x11_integration.py63# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_computer_x11_integration.py65# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_computer_x11_integration.py199# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_computer_x11_integration.py201# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_computer_x11_integration.py219# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_computer_x11_integration.py221# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_backtrack.py17# ── helpers ──────────────────────────────────────────────────────────────────COMMENT
MEDIUMtests/test_backtrack.py50# ── ConvCheckpoint primitives ─────────────────────────────────────────────────COMMENT
MEDIUMtests/test_backtrack.py100# ── /backtrack command ────────────────────────────────────────────────────────COMMENT
MEDIUMtests/test_util_context_dedup.py165# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_util_context_dedup.py167# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_util_context_dedup.py194# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_util_context_dedup.py196# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_util_context_dedup.py8# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_util_context_dedup.py10# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_util_context_dedup.py87# ---------------------------------------------------------------------------STRING
MEDIUMtests/test_util_context_dedup.py89# ---------------------------------------------------------------------------STRING
MEDIUMtests/test_util_context_dedup.py136# ---------------------------------------------------------------------------STRING
976 more matches not shown…
Cross-Language Confusion102 hits · 564 pts
SeverityFileLineSnippetContext
HIGHtests/test_shell_issue729.py41. File descriptor redirects (2>/dev/null, 2>&1, etc.)STRING
HIGHtests/test_codeblock.py160pwd && ls -laCODE
HIGHtests/test_codeblock.py166 assert codeblocks[0] == Codeblock("shell", "pwd && ls -la")CODE
HIGHtests/test_shell_output_mixing_issue408.py106 ret1, out1, err1 = shell.run("sleep 0.1 && echo 'delayed output'")CODE
HIGHtests/test_server_client.py74 b'data: {"type": "connected", "session_id": null}'CODE
HIGHtests/test_tools_shell_background.py553 job = start_background_job("echo out && echo err >&2")CODE
HIGHtests/test_tools_shell_background.py186 job = start_background_job("echo hello && echo world")CODE
HIGHtests/test_tools_shell_background.py202 job = start_background_job("sleep 0.1 && echo done")CODE
HIGHtests/test_shell_issue772.py52. Combinations of || with pipe operators (|)STRING
HIGHtests/test_shell_issue772.py27 Issue: cat .env.local 2>/dev/null || cat .env.example | head -20STRING
HIGHtests/test_shell_issue772.py31 The shell tool was treating the first | in || as a pipe operator,STRING
HIGHtests/test_shell_issue772.py40 code = f"cat /nonexistent 2>/dev/null || cat {temp_file} | head -3"CODE
HIGHtests/test_shell_issue772.py62 Verify that || operator works correctly in basic cases.STRING
HIGHtests/test_shell_issue772.py64 code = "false || echo 'fallback'"CODE
HIGHtests/test_shell_issue772.py85 code = f"cat /nonexistent 2>/dev/null || cat {temp_file}"CODE
HIGHtests/test_shell_issue772.py102 """Test multiple || operators in sequence.STRING
HIGHtests/test_shell_issue772.py104 Verify that chains of || operators are handled correctly.STRING
HIGHtests/test_shell_issue772.py106 code = "false || false || echo 'third try'"CODE
HIGHtests/test_shell_issue772.py115 """Test combination of || and && operators.STRING
HIGHtests/test_shell_issue772.py115 """Test combination of || and && operators.STRING
HIGHtests/test_shell_issue772.py119 code = "true && echo 'success' || echo 'failure'"CODE
HIGHtests/test_shell_issue772.py133 cat file1 2>/dev/null || cat file2 | head -20STRING
HIGHtests/test_shell_issue772.py136 - stderr redirect (2>/dev/null)STRING
HIGHtests/test_shell_issue772.py147 code = f"cat /nonexistent 2>/dev/null || cat {temp_file} | head -5"CODE
HIGHtests/test_execenv.py410 env.run("cat input.txt > output.txt && echo ' modified' >> output.txt")CODE
HIGHtests/test_tools_shell_multiline.py13 gh pr checks "$pr" --json name,conclusion,workflowName --jq '.[] | select(.conclusion != null) | "\\(.workflowName): \CODE
HIGHtests/test_tools_shell_validation.py177 assert _find_first_unquoted_pipe("cmd1 || cmd2") is NoneCODE
HIGHtests/test_tools_shell_validation.py180 result = _find_first_unquoted_pipe("cmd1 || cmd2 | cmd3")CODE
HIGHtests/test_tools_shell_validation.py183 cmd = "cmd1 || cmd2 | cmd3"CODE
HIGHtests/test_reduce.py707 content="I'll run two things.\n```shell\necho a && echo b\n```",CODE
HIGHtests/test_reduce.py773 content="I'll run two things.\n```shell\necho a && echo b\n```",CODE
HIGHtests/test_reduce.py835 content="I'll run two things.\n```shell\necho a && echo b\n```",CODE
HIGHtests/test_tools_shell.py1275 # stdin is a pipe (not /dev/null, not terminal)COMMENT
HIGHtests/test_tools_shell.py1325 # stdin is a pipe (not /dev/null, not terminal)COMMENT
HIGHtests/test_tools_shell.py1638 job = start_background_job("sleep 0.1 && echo 'done'")CODE
HIGHtests/test_tools_shell.py1641 assert job.command == "sleep 0.1 && echo 'done'"CODE
HIGHtests/test_tools_shell.py1719 start_background_job("sleep 0.5 && echo 'job1'")CODE
HIGHtests/test_tools_shell.py1720 start_background_job("sleep 0.5 && echo 'job2'")CODE
HIGHtests/test_tools_shell.py205cat /tmp/test_space.sh && rm /tmp/test_space.sh"""STRING
HIGHtests/test_tools_shell.py216cat /tmp/test_space2.sh && rm /tmp/test_space2.sh"""STRING
HIGHtests/test_tools_shell.py1556 """curl http://example.com | bash && cat << EOFSTRING
HIGHscripts/demo_capture.py121 "playwright (pip install playwright && playwright install chromium)"CODE
HIGHscripts/demo_capture.py163 f"cd {tmpdir} && gptme --non-interactive --no-confirm {model_flag} '{prompt}' 2>&1 || true",CODE
HIGHscripts/demo_capture.py23 - playwright (pip install playwright && playwright install chromium)STRING
HIGHgptme/tools/_browser_playwright.py430 if (el.className && typeof el.className === 'string')STRING
HIGHgptme/tools/tmux.py576 "new-session cd ~/bob && gptme --non-interactive 'What is your latest work?'",CODE
HIGHgptme/tools/computer.py2177 "(fix: pip install playwright && playwright install chromium)"STRING
HIGHgptme/tools/computer.py2235 "pip install playwright && playwright install chromium",STRING
HIGHgptme/tools/python.py105 _ipython.push({func.__name__: func})CODE
HIGHgptme/tools/python.py199 _ipython.push(registered_functions)CODE
HIGHgptme/util/gh.py619 '.[] | select(.event == "cross-referenced" and .source.issue.pull_request != null) 'CODE
HIGHgptme/server/api_v2.py1095 # Cursor pagination path — returns {conversations: [...], next_cursor: string|null}COMMENT
HIGHgptme/server/api_v2.py1034 "description": "If true, return a paginated response object {conversations: [...], next_cursor: string|null}CODE
HIGHgptme/server/api_v2.py1053 ``{conversations: [...], next_cursor: string|null}``. Pass the returnedSTRING
HIGHgptme/server/openapi_docs.py948 # Handle direct nullable patterns (type + default: null)COMMENT
HIGHgptme/cli/cmd_computer.py1372 " sudo apt install stterm && st &"CODE
HIGHgptme/cli/cmd_computer.py1339 " On Linux: sudo apt install scrot && export DISPLAY=:1\n"CODE
HIGHgptme/cli/cmd_computer.py1601 hint="pip install playwright && python -m playwright install chromium (optional — needed for browser toolCODE
HIGHgptme/cli/cmd_computer.py1700 "var text = (compose.innerText || compose.textContent || '').trim();"CODE
HIGHgptme/cli/setup.py602 "install": "pip install playwright && playwright install",CODE
42 more matches not shown…
Unused Imports679 hits · 562 pts
SeverityFileLineSnippetContext
LOWtests/test_computer_api.py7CODE
LOWtests/test_computer_video_frames_cli.py7CODE
LOWtests/test_computer_x11_integration.py17CODE
LOWtests/test_backtrack.py8CODE
LOWtests/test_util_clipboard_paste.py24CODE
LOWtests/test_acp_agent.py28CODE
LOWtests/test_dirs.py14CODE
LOWtests/test_computer_audit.py8CODE
LOWtests/test_workspace_snapshot.py12CODE
LOWtests/test_cli_status.py3CODE
LOWtests/test_computer_actions.py8CODE
LOWtests/test_computer_screenshot_cli.py7CODE
LOWtests/test_computer_task.py8CODE
LOWtests/test_eventlog.py3CODE
LOWtests/test_mcp_server.py3CODE
LOWtests/test_mcp_server.py586CODE
LOWtests/test_provider_plugins.py7CODE
LOWtests/test_terminal_startup_latency.py8CODE
LOWtests/test_circuit_breaker.py11CODE
LOWtests/test_acp_client.py12CODE
LOWtests/test_acp_client.py32CODE
LOWtests/test_cli_from_turn.py3CODE
LOWtests/test_computer_record.py8CODE
LOWtests/test_tools_patch_anchored.py3CODE
LOWtests/test_tasks_api.py18CODE
LOWtests/test_computer_doctor_cmd.py7CODE
LOWtests/test_acp_session_runtime.py3CODE
LOWtests/test_util_hooks.py3CODE
LOWtests/test_computer_demo_cmd.py8CODE
LOWtests/test_gptme_provider.py8CODE
LOWtests/test_acp_protocol_logging.py7CODE
LOWtests/test_github_ci_self_heal.py1CODE
LOWtests/test_browser_state.py3CODE
LOWtests/test_computer_run_task_cli.py8CODE
LOWtests/test_tools__anchored.py7CODE
LOWtests/test_snapshot_command.py3CODE
LOWtests/test_snapshot_command.py14CODE
LOWtests/test_treeofthoughts.py8CODE
LOWtests/test_computer_gate.py11CODE
LOWtests/test_computer_use_integration.py18CODE
LOWtests/test_computer_milestone_integration.py23CODE
LOWtests/test_computer_docker_config.py15CODE
LOWtests/test_computer_settle.py12CODE
LOWtests/test_llm_openai.py6CODE
LOWtests/test_llm_openai.py7CODE
LOWtests/test_computer_risk_streaming.py16CODE
LOWtests/test_unified_plugins.py3CODE
LOWtests/test_tools_base.py7CODE
LOWtests/test_commands_rag.py92CODE
LOWtests/test_snapshot_list.py3CODE
LOWtests/test_browser_session_persistence.py10CODE
LOWtests/test_util_cli_batch.py3CODE
LOWtests/test_server_session_models.py6CODE
LOWtests/test_util_cli_attest.py3CODE
LOWtests/test_computer_latency_cmd.py7CODE
LOWtests/test_oauth_openrouter.py3CODE
LOWtests/test_checkpoint.py3CODE
LOWtests/test_external_sessions.py7CODE
LOWtests/test_cli_resume.py3CODE
LOWscripts/check_model_freshness.py20CODE
619 more matches not shown…
Self-Referential Comments172 hits · 532 pts
SeverityFileLineSnippetContext
MEDIUMtests/test_server_path_traversal.py400 # Create the logdir and a valid conversation log so theCOMMENT
MEDIUMtests/test_shell_issue729.py58 # Create a test JSON fileCOMMENT
MEDIUMtests/test_cost_awareness_delayed_warning.py72 # Create a messages list with a user messageCOMMENT
MEDIUMtests/test_cost_awareness_delayed_warning.py97 # Create a messages list with an assistant messageCOMMENT
MEDIUMtests/test_eval_behavioral_solutions.py205 # Create the shared validation moduleSTRING
MEDIUMtests/test_replay.py286 # Create a working context that's nearly full (simulated)COMMENT
MEDIUMtests/test_utils.py16 # Create a test image file that is 0.8MB raw (within 1MB limit)COMMENT
MEDIUMtests/test_utils.py53 # Create a file that is 1.2MB (exceeds 1MB limit)COMMENT
MEDIUMtests/conftest.py309 # Create a temporary file with the given contentCOMMENT
MEDIUMtests/conftest.py430 # Create a test client without authentication by defaultCOMMENT
MEDIUMtests/test_acp_agent.py1031 # Create a fake log directory with a conversation.jsonlCOMMENT
MEDIUMtests/test_acp_agent.py1501 # Create a minimal log dir so new_session can resume from diskCOMMENT
MEDIUMtests/test_tools_chats.py13 # Create a test conversation containing "python"COMMENT
MEDIUMtests/test_server_v2.py1266 # Create a conversation with a non-test prefix so it isn't filtered outCOMMENT
MEDIUMtests/test_server_v2.py1299 # Create a real conversation with a non-test prefix so it isn't filteredCOMMENT
MEDIUMtests/test_util_cli_skills.py174 # Create a skill so the index isn't empty (tests the "not found" path, not "empty index")COMMENT
MEDIUMtests/test_util_cli_skills.py206 # Create a skill where metadata.name differs from the H1 titleCOMMENT
MEDIUMtests/test_demo_capture.py48 # Create a fake fileCOMMENT
MEDIUMtests/test_agent.py451 # Create a plist fileCOMMENT
MEDIUMtests/test_agent.py762 # Create a fake workspaceCOMMENT
MEDIUMtests/test_agent.py982 # Create a repo with multiple commitsCOMMENT
MEDIUMtests/test_tools_save.py110 # Create a subdirectory to work fromCOMMENT
MEDIUMtests/test_tools_save.py132 # Create a directory outside the cwdCOMMENT
MEDIUMtests/test_tools_save.py141 # Create a symlink in work_dir pointing to outside_dirCOMMENT
MEDIUMtests/test_tools_save.py188 # Create a symlink in work_dir pointing to outside_dirCOMMENT
MEDIUMtests/test_misc_subprocess_timeouts.py158 # Create a file so glob has something to findCOMMENT
MEDIUMtests/test_llm_utils.py361 # Create a file with a tilde path won't work in CI, but we can testCOMMENT
MEDIUMtests/test_tool_use.py239 "import numpy as np\nimport pandas as pd\n\n# Create a simple dataset\n"CODE
MEDIUMtests/test_chat_history.py30 # Create a few mock conversationsCOMMENT
MEDIUMtests/test_plugins.py463 # Create a hook module with register() functionCOMMENT
MEDIUMtests/test_agent_service_timeouts.py100 # Create a temp file to simulate a log fileCOMMENT
MEDIUMtests/test_util_gh_mocked.py542 # Create a body that exceeds 1000 tokens (4000 chars)COMMENT
MEDIUMtests/test_util_gh_mocked.py571 # Create a body with identifiable start and endCOMMENT
MEDIUMtests/test_util_gh_mocked.py620 # Create a mock response with a very long review commentCOMMENT
MEDIUMtests/test_util_gh_mocked.py675 # Create a long comment with a suggestion in the middle (where truncation would remove it)COMMENT
MEDIUMtests/test_util_gh_mocked.py797 # Create a diff larger than default budget (4000 tokens = 16000 chars)COMMENT
MEDIUMtests/test_custom_providers.py94 # Create a minimal tool specCOMMENT
MEDIUMtests/test_prompt.py123 # Create a symlinkCOMMENT
MEDIUMtests/test_prompt.py148 # Create a new file in tmp_pathCOMMENT
MEDIUMtests/test_util_safety.py194 # Create a report with artificially high-risk segmentsCOMMENT
MEDIUMtests/test_message.py464 # Create a message - role with special chars is unusual but should be safeCOMMENT
MEDIUMtests/test_message.py178 # Create a test file in tmp_pathCOMMENT
MEDIUMtests/test_llm_anthropic.py333 # Create a mock that looks like an Anthropic API 500 errorCOMMENT
MEDIUMtests/test_prompt_skills_summary.py17 # Create a mock skill fileCOMMENT
MEDIUMtests/test_prompt_skills_summary.py56 # Create a mock skill file with long descriptionCOMMENT
MEDIUMtests/test_prompts.py211 # Create a temp workspace with a fileCOMMENT
MEDIUMtests/test_prompts.py216 # Create a file outside workspaceCOMMENT
MEDIUMtests/test_prompts.py221 # Create a gptme.toml with path traversal attemptCOMMENT
MEDIUMtests/test_execenv.py236 # Create a mock log fileCOMMENT
MEDIUMtests/test_tasks_api.py1023 # Create a temp task fileCOMMENT
MEDIUMtests/test_tasks_api.py219 # Create a fake repo subdir with .gitCOMMENT
MEDIUMtests/test_tools_browser.py393 # Create a minimal mock for pypdfCOMMENT
MEDIUMtests/test_computer_doctor_cmd.py736 # Create a tmp_path home with no .XdefaultsCOMMENT
MEDIUMtests/test_acp_session_runtime.py193 # Create a conversation via the API so LogManager can find itCOMMENT
MEDIUMtests/test_acp_session_runtime.py204 # Create a session backed by the dummy ACP runtimeCOMMENT
MEDIUMtests/test_acp_session_runtime.py905 # Create a session with a dead ACP runtimeCOMMENT
MEDIUMtests/test_lessons_matcher.py374 # Create a lesson fileCOMMENT
MEDIUMtests/test_lessons_matcher.py422 # Create a lesson fileCOMMENT
MEDIUMtests/test_server_v2_sessions.py1172 # Create a conversation via PUT, then manually remove the session to simulate no-session caseCOMMENT
MEDIUMtests/test_tools_tmux.py223 # Create a worker-isolated session to avoid race conditionsCOMMENT
112 more matches not shown…
Excessive Try-Catch Wrapping513 hits · 520 pts
SeverityFileLineSnippetContext
LOWtests/test_eval_behavioral_solutions.py925 except Exception:STRING
LOWtests/test_eval_behavioral_solutions.py1435 except Exception as e:STRING
LOWtests/conftest.py104 except Exception:CODE
LOWtests/conftest.py251 except Exception as e:CODE
LOWtests/conftest.py285 except Exception:CODE
LOWtests/conftest.py496 except Exception as e:CODE
LOWtests/test_acp_agent.py413 except Exception as e:CODE
LOWtests/test_chat_history.py69 except Exception as e:CODE
MEDIUMtests/test_chat_history.py70 print(f"Error generating chat history: {e}")CODE
MEDIUMtests/test_circuit_breaker.py345def do_fail():CODE
MEDIUMtests/test_circuit_breaker.py371def do_fail():CODE
LOWtests/test_circuit_breaker.py348 except Exception as e:CODE
LOWtests/test_circuit_breaker.py414 except Exception:CODE
LOWtests/test_hooks_server_confirm.py211 except Exception as e:CODE
LOWtests/test_hooks_server_confirm.py219 except Exception as e:CODE
MEDIUMtests/test_hooks_server_confirm.py204def register_and_wait(tool_id):CODE
LOWtests/test_llm_anthropic.py374 except Exception:CODE
MEDIUMtests/test_subagent_unit.py4888def thread_target():CODE
LOWtests/test_subagent_unit.py4900 except Exception as e:CODE
MEDIUMtests/test_eval_behavioral.py1011 print(f"Error: negative value {value}")CODE
MEDIUMtests/test_eval_behavioral.py1017 print(f"Error: {e}")CODE
MEDIUMtests/test_eval_behavioral.py973def process_record(record):CODE
LOWtests/test_eval_behavioral.py1669 except Exception:CODE
LOWtests/test_eval_behavioral.py2938 except Exception as err:STRING
LOWtests/test_mcp_discovery.py160 except Exception as e:CODE
MEDIUMtests/test_computer_use_integration.py37def _playwright_available() -> bool:CODE
LOWtests/test_computer_use_integration.py184 except Exception:CODE
LOWtests/test_computer_use_integration.py61 except Exception:CODE
MEDIUMtests/test_computer_milestone_integration.py34def _playwright_available() -> bool:CODE
LOWtests/test_computer_milestone_integration.py81 except Exception:CODE
LOWtests/test_computer_milestone_integration.py54 except Exception:CODE
LOWtests/test_server_bad_input.py345 except Exception:CODE
LOWtests/test_llm_openai.py529 except Exception:CODE
LOWtests/test_tools_subagent.py1178 except Exception:CODE
LOWtests/test_tools_subagent.py1227 except Exception:CODE
LOWtests/test_server_session_models.py701 except Exception as e:CODE
LOWtests/test_server_session_models.py710 except Exception as e:CODE
LOWtests/test_server_session_models.py743 except Exception as e:CODE
LOWtests/test_server_session_models.py751 except Exception as e:CODE
LOWtests/test_oauth_openrouter.py88 except Exception as e:CODE
MEDIUMtests/test_oauth_openrouter.py81def target() -> None:CODE
MEDIUMtests/test_hooks_registry.py911def registerer():CODE
MEDIUMtests/test_hooks_registry.py920def unregisterer():CODE
LOWtests/test_hooks_registry.py917 except Exception as e:CODE
LOWtests/test_hooks_registry.py924 except Exception as e:CODE
MEDIUMscripts/auto_rename_logs.py44 print(f"Error: Logs directory not found: {logs_dir}")CODE
LOWscripts/auto_rename_logs.py142 except Exception as e:CODE
MEDIUMscripts/auto_rename_logs.py143 print(f"Error processing {conv_dir}: {e}")CODE
LOWscripts/treeofthoughts.py285 except Exception:CODE
MEDIUMscripts/treeofthoughts.py454 print(f"Error: workspace {workspace} is not a directory", file=sys.stderr)CODE
MEDIUMscripts/github_bot.py72 print(f"Error: {name} environment variable is required", file=sys.stderr)CODE
MEDIUMscripts/github_bot.py643 print("Error in resolve mode: provide GITHUB_EVENT_PATH or --issue")STRING
MEDIUMscripts/github_bot.py727 print("Error: Either GITHUB_EVENT_PATH or --comment-body required")STRING
LOWscripts/build_changelog.py587 except Exception as e:STRING
LOWscripts/analyze_compression.py116 except Exception as e:CODE
LOWscripts/analyze_compression.py220 except Exception as e:CODE
LOWscripts/demo_capture.py195 except Exception as e:CODE
LOWscripts/demo_capture.py275 except Exception as e:CODE
LOWscripts/demo_capture.py333 except Exception as e:CODE
LOWscripts/demo_capture.py352 except Exception as e:CODE
453 more matches not shown…
Deep Nesting376 hits · 338 pts
SeverityFileLineSnippetContext
LOWtests/test_eval_behavioral_solutions.py55CODE
LOWtests/conftest.py144CODE
LOWtests/conftest.py257CODE
LOWtests/conftest.py341CODE
LOWtests/conftest.py463CODE
LOWtests/conftest.py349CODE
LOWtests/conftest.py472CODE
LOWtests/test_tree.py1CODE
LOWtests/test_onboard.py20CODE
LOWtests/test_plugins.py369CODE
LOWtests/test_server_parent_death_watcher.py42CODE
LOWtests/test_util_gh_mocked.py194CODE
LOWtests/test_util_gh_mocked.py228CODE
LOWtests/test_util_gh_mocked.py667CODE
LOWtests/test_util_gh_mocked.py201CODE
LOWtests/test_util_gh_mocked.py700CODE
LOWtests/test_hooks_server_confirm.py301CODE
LOWtests/test_hooks_server_confirm.py329CODE
LOWtests/test_computer_docker_config.py28CODE
LOWtests/test_tools_subagent.py1129CODE
LOWtests/test_tools_subagent.py1183CODE
LOWdocs/conf.py25CODE
LOWscripts/check_model_freshness.py95CODE
LOWscripts/auto_rename_logs.py32CODE
LOWscripts/github_ci_self_heal.py294CODE
LOWscripts/github_ci_self_heal.py305CODE
LOWscripts/treeofthoughts.py183CODE
LOWscripts/generate_sounds.py371CODE
LOWscripts/build_changelog.py207CODE
LOWscripts/build_changelog.py327CODE
LOWscripts/build_changelog.py454CODE
LOWscripts/check_rst_formatting.py26CODE
LOWscripts/check_rst_formatting.py170CODE
LOWscripts/analyze_compression.py33CODE
LOWscripts/analyze_compression.py132CODE
LOWscripts/analyze_compression.py236CODE
LOWscripts/analyze_compression.py329CODE
LOWscripts/analyze_compression.py502CODE
LOWscripts/demo_capture.py133CODE
LOWscripts/demo_capture.py200CODE
LOWscripts/demo_capture.py286CODE
LOWscripts/demo_capture.py485CODE
LOWgptme/dirs.py104CODE
LOWgptme/checkpoint.py239CODE
LOWgptme/message.py494CODE
LOWgptme/message.py565CODE
LOWgptme/__version__.py8CODE
LOWgptme/__version__.py46CODE
LOWgptme/chat.py183CODE
LOWgptme/chat.py340CODE
LOWgptme/chat.py593CODE
LOWgptme/circuit_breaker.py108CODE
LOWgptme/codeblock.py96CODE
LOWgptme/init.py99CODE
LOWgptme/info.py132CODE
LOWgptme/info.py249CODE
LOWgptme/workspace_snapshot.py228CODE
LOWgptme/tools/_browser_lynx.py29CODE
LOWgptme/tools/patch.py263CODE
LOWgptme/tools/shell_validation.py111CODE
316 more matches not shown…
Redundant / Tautological Comments185 hits · 284 pts
SeverityFileLineSnippetContext
LOWtests/test_dspy_basic.py13# Check if DSPy is available and handle import errors gracefullyCOMMENT
LOWtests/conftest.py173 # Check if Anthropic quota is exhausted to skip API tests gracefully.COMMENT
LOWtests/test_chat_history.py23 # Check if feature is enabledCOMMENT
LOWtests/test_hybrid_lessons.py12# Check if hybrid matching is availableCOMMENT
LOWtests/test_server_v2_hooks.py76 # Check if test SESSION_START hook message is in the logCOMMENT
LOWtests/test_server_v2_hooks.py125 # Check if test STEP_PRE hook message is in the logCOMMENT
LOWtests/test_server_v2_hooks.py228 # Check if test TURN_POST hook message is in the logCOMMENT
LOWtests/test_tools_computer.py38 # Check if xrandr is available and can run successfullyCOMMENT
LOWtests/test_auto_compact.py362 # Check if original had <think>, if so, compacted should tooCOMMENT
LOWtests/test_tools_morph.py240 # Set cwd to a subdirectory so the file path escapes itCOMMENT
LOWtests/test_cli.py1120 # Set timeout to 5 minutes to avoid Anthropic's streaming recommendationCOMMENT
LOWtests/test_dspy_hybrid.py5# Check if DSPy is available and handle import errors gracefullyCOMMENT
LOWtests/test_tools_shell.py1265# Check if stdin is /dev/nullCOMMENT
LOWtests/test_tools_shell.py1315# Check if stdin is /dev/nullCOMMENT
LOWscripts/github_bot.py455 # Check if there are changesCOMMENT
LOWscripts/check_rst_formatting.py65 # Check if we're exiting a code block (line with same or less indentation that has content)COMMENT
LOWscripts/check_rst_formatting.py99 # Check if this is the start of a new list (not continuing an existing one)COMMENT
LOWscripts/check_rst_formatting.py106 # Check if there's a blank line between this and the parent list itemCOMMENT
LOWscripts/check_rst_formatting.py119 # Check if bullet list needs blank line before itCOMMENT
LOWscripts/check_rst_formatting.py128 # Check if there's no blank line before this listCOMMENT
LOWscripts/check_poetry_lock_sync.sh13# Check if poetry.lock is in sync with pyproject.tomlCOMMENT
LOWscripts/demo_capture.py109 # Check if playwright is importableCOMMENT
LOWscripts/demo_capture.py375 # Check if server is already runningCOMMENT
LOWscripts/demo_capture.py418 # Check if already runningCOMMENT
LOWscripts/demo_capture.py616 # Print resultsCOMMENT
LOWscripts/build_server_executable.sh6# Check if we're in the project rootCOMMENT
LOWscripts/build_server_executable.sh24# Check if build was successfulCOMMENT
LOWwebui/server.py36 # Check if this looks like an asset requestCOMMENT
LOWgptme/chat.py399 # Check if user declined execution - return to prompt without generating responseCOMMENT
LOWgptme/chat.py436 # Check if there are any runnable tools leftCOMMENT
LOWgptme/chat.py466 # Check if there's an interrupt or decline message after the last assistant messageCOMMENT
LOWgptme/chat.py495 # Check if we should prompt for input or generate response directlyCOMMENT
LOWgptme/codeblock.py252 # Check if this line starts with backticks (potential opening or closing)COMMENT
LOWgptme/codeblock.py256 # Check if this is a bare fence (only backticks on the line)COMMENT
LOWgptme/codeblock.py321 # Check if this line is a bare fence (only backticks)COMMENT
LOWgptme/codeblock.py327 # Check if there's content after it (allowing blank lines)COMMENT
LOWgptme/init.py141 # Check if model has provider/model formatCOMMENT
LOWgptme/init.py144 # Check if it's a built-in provider or custom providerCOMMENT
LOWgptme/info.py260 # Check if editable via direct_url.jsonCOMMENT
LOWgptme/info.py284 # Check if installed via pipx (lives in ~/.local/pipx/)COMMENT
LOWgptme/info.py302 # Check if any of the indicator packages are installedCOMMENT
LOWgptme/tools/save.py160 # Check if file exists and store original content for comparisonCOMMENT
LOWgptme/tools/save.py165 # Check if folder existsCOMMENT
LOWgptme/tools/save.py191 # Check if this was an inefficient overwrite (minimal changes)COMMENT
LOWgptme/tools/save.py244 # Check if folder exists firstCOMMENT
LOWgptme/tools/shell_validation.py184 # Check if remaining text is the delimiterCOMMENT
LOWgptme/tools/shell_validation.py189 # Check if the line from pos to newline_idx is just the delimiterCOMMENT
LOWgptme/tools/shell_validation.py219 # Check if this pipe is inside quotesCOMMENT
LOWgptme/tools/shell_validation.py221 # Check if this is part of || (logical OR)COMMENT
LOWgptme/tools/shell_validation.py277 # Check if all commands in the pipeline are allowlistedCOMMENT
LOWgptme/tools/shell_validation.py329 # Check if the match is within a safe region (quoted or heredoc)COMMENT
LOWgptme/tools/shell_validation.py363 # Check if command is allowlistedCOMMENT
LOWgptme/tools/shell_validation.py390 # Check if disabled via environment variableCOMMENT
LOWgptme/tools/shell_validation.py394 # Check if shellcheck is availableCOMMENT
LOWgptme/tools/shell_validation.py463 # Check if any triggered codes are error codes (should block)COMMENT
LOWgptme/tools/gh.py244 # Check if all checks are doneCOMMENT
LOWgptme/tools/mcp_adapter.py203 # Check if the tool has inputSchema with propertiesCOMMENT
LOWgptme/tools/mcp_adapter.py444 # Check if server already loadedCOMMENT
LOWgptme/tools/mcp_adapter.py448 # Check if server is in configCOMMENT
LOWgptme/tools/shell.py340 # Check if -S or -n flags are present (they disable TTY need)COMMENT
125 more matches not shown…
Modern Structural Boilerplate272 hits · 272 pts
SeverityFileLineSnippetContext
LOWtests/test_eval_behavioral_solutions.py586 def update_metadata(self, key: str, info: dict[str, Any]) -> None:STRING
LOWtests/conftest.py32logger = logging.getLogger(__name__)CODE
LOWtests/test_workspace_snapshot.py344 def set_git_dates(timestamp: int) -> None:CODE
LOWtests/test_server_tts_api.py12def _set_openrouter_key(monkeypatch: pytest.MonkeyPatch, value: str | None) -> None:CODE
LOWtests/test_server_v2_auto_stepping.py12logger = logging.getLogger(__name__)CODE
LOWtests/test_acp_session_runtime.py60 async def set_session_model(self, session_id: str, model_id: str) -> None:CODE
LOWtests/test_eval_behavioral.py1044logger = logging.getLogger(__name__)CODE
LOWtests/test_server_v2_tool_confirmation.py11logger = logging.getLogger(__name__)CODE
LOWscripts/auto_rename_logs.py14logger = logging.getLogger(__name__)CODE
LOWscripts/github_bot.py77def set_github_env(name: str, value: str) -> None:CODE
LOWscripts/build_changelog.py32logger = logging.getLogger(__name__)CODE
LOWscripts/analyze_compression.py25logger = logging.getLogger(__name__)CODE
LOWscripts/train/collect.py19logger = logging.getLogger(__name__)CODE
LOWgptme/dirs.py9logger = logging.getLogger(__name__)CODE
LOWgptme/prompt_queue.py17logger = logging.getLogger(__name__)CODE
LOWgptme/session.py18logger = logging.getLogger(__name__)CODE
LOWgptme/__init__.py13__all__ = ["Codeblock", "LogManager", "Message", "__version__", "chat", "get_prompt"]CODE
LOWgptme/telemetry.py32__all__ = [CODE
LOWgptme/telemetry.py49logger = logging.getLogger(__name__)CODE
LOWgptme/message.py30logger = logging.getLogger(__name__)CODE
LOWgptme/message.py44def set_output_format(fmt: str) -> None:CODE
LOWgptme/chat.py49logger = logging.getLogger(__name__)CODE
LOWgptme/circuit_breaker.py38logger = logging.getLogger(__name__)CODE
LOWgptme/circuit_breaker.py286__all__ = [CODE
LOWgptme/init.py31logger = logging.getLogger(__name__)CODE
LOWgptme/init.py283def _set_console_compact(enabled: bool) -> None:CODE
LOWgptme/profiles.py41logger = logging.getLogger(__name__)CODE
LOWgptme/executor.py25logger = logging.getLogger(__name__)CODE
LOWgptme/workspace_snapshot.py29logger = logging.getLogger(__name__)CODE
LOWgptme/tools/_browser_lynx.py11logger = logging.getLogger(__name__)CODE
LOWgptme/tools/shell_validation.py23logger = logging.getLogger(__name__)CODE
LOWgptme/tools/_browser_perplexity.py9logger = logging.getLogger(__name__)CODE
LOWgptme/tools/clarify.py23logger = logging.getLogger(__name__)CODE
LOWgptme/tools/lessons.py34logger = logging.getLogger(__name__)CODE
LOWgptme/tools/gh.py47logger = logging.getLogger(__name__)CODE
LOWgptme/tools/_browser_playwright.py39logger = logging.getLogger(__name__)CODE
LOWgptme/tools/shell.py104logger = logging.getLogger(__name__)CODE
LOWgptme/tools/shell.py953def set_workspace_cwd(cwd: str) -> None:CODE
LOWgptme/tools/shell.py988def set_shell(shell: ShellSession) -> None:CODE
LOWgptme/tools/tmux.py31logger = logging.getLogger(__name__)CODE
LOWgptme/tools/__init__.py40logger = logging.getLogger(__name__)CODE
LOWgptme/tools/__init__.py43__all__ = [CODE
LOWgptme/tools/__init__.py83def _set_available_tools_cache(tools: list[ToolSpec] | None) -> None:CODE
LOWgptme/tools/__init__.py469def set_tools(tools: list[ToolSpec]) -> None:CODE
LOWgptme/tools/computer.py117logger = logging.getLogger(__name__)CODE
LOWgptme/tools/_browser_thread.py15logger = logging.getLogger(__name__)CODE
LOWgptme/tools/_browser_thread.py41def set_storage_state_override(path: Path | None) -> None:CODE
LOWgptme/tools/elicit.py34logger = logging.getLogger(__name__)CODE
LOWgptme/tools/browser.py374logger = logging.getLogger(__name__)CODE
LOWgptme/tools/autocommit.py32logger = logging.getLogger(__name__)CODE
LOWgptme/tools/autocommit.py175__all__ = ["tool"]STRING
LOWgptme/tools/restart.py17logger = logging.getLogger(__name__)CODE
LOWgptme/tools/shell_background.py31logger = logging.getLogger(__name__)CODE
LOWgptme/tools/rag.py60logger = logging.getLogger(__name__)CODE
LOWgptme/tools/python.py154def _setup_venv_paths(env_only: bool = False) -> None:CODE
LOWgptme/tools/vent.py52logger = logging.getLogger(__name__)CODE
LOWgptme/tools/complete.py17logger = logging.getLogger(__name__)CODE
LOWgptme/tools/chats.py19logger = logging.getLogger(__name__)CODE
LOWgptme/tools/pruner.py13logger = logging.getLogger(__name__)CODE
LOWgptme/tools/progress.py33logger = logging.getLogger(__name__)CODE
212 more matches not shown…
Docstring Block Structure46 hits · 230 pts
SeverityFileLineSnippetContext
HIGHtests/test_eval_behavioral_solutions.py714\ import re def parse_args(input_str): \"\"\"Parse a string of arguments respeSTRING
HIGHtests/test_eval_behavioral_solutions.py1041\ \"\"\"API client for external service.\"\"\" import urllib.request import json STRING
HIGHtests/test_eval_behavioral.py2721\ import re def parse_args(input_str): """Parse a shell-like argument string into a list of tokens. Handles qSTRING
HIGHgptme/session.py81Create a new session. Args: session_id: Unique session identifier log: Optional LogManaSTRING
HIGHgptme/message.py248Concatenate two messages of the same role. Merges content with separator, and combines files and file_hashes. STRING
HIGHgptme/tools/_browser_playwright.py730Load a previously saved browser session (cookies, localStorage) from a file. This is the in-session complement to `STRING
HIGHgptme/tools/_browser_playwright.py882Press a keyboard key or shortcut in the current browser page. Dispatches the key event to the active focused elemenSTRING
HIGHgptme/tools/computer.py765Return a text dump of the AT-SPI2 accessibility tree for all desktop apps. Requires the optional ``pyatspi`` packagSTRING
HIGHgptme/tools/computer.py843Find an accessible element by role and name and return its center coordinates. Looks up the element via AT-SPI2, coSTRING
HIGHgptme/tools/computer.py939Return a text dump of the macOS accessibility tree for visible apps. Uses AppleScript via ``osascript`` to query thSTRING
HIGHgptme/tools/computer.py1043Find a UI element on macOS by AX role and name and return its center coordinates. Searches the frontmost applicatioSTRING
HIGHgptme/tools/computer.py2431Start recording the screen to an MP4 file. Uses ``ffmpeg`` with ``x11grab`` (Linux) or ``avfoundation`` (macOS). STRING
HIGHgptme/tools/computer.py2514Record the screen for a fixed duration and return the output path. Synchronous wrapper around ``start_recording()``STRING
HIGHgptme/tools/browser.py174Convert PDF pages to images using auto-detected CLI tools. Auto-detects and uses the first available tool: pdftoppmSTRING
HIGHgptme/tools/browser.py1005Load a previously saved browser session (cookies, localStorage) from a file. In-session complement to ``save_browseSTRING
HIGHgptme/tools/browser.py1115Press a keyboard key or shortcut in the current browser page. Dispatches the key event to the focused element (or dSTRING
HIGHgptme/tools/screenshot.py53Validate that screenshot path is within allowed directory. Security: Prevents arbitrary file writes via path traverSTRING
HIGHgptme/tools/base.py345 Tool specification. Defines a tool that can be used by the agent. Args: name: The name of the tool. STRING
HIGHgptme/tools/autocompact/hook.py34 Get a unique name for the compacted conversation fork. The original conversation stays untouched as the backupSTRING
HIGHgptme/tools/subagent/batch.py392Wait for the first subagent to complete and return its result. Useful for speculative/hedging patterns: spawn NSTRING
HIGHgptme/tools/subagent/api.py1252Wait for the first of the given subagents to complete. Useful for speculative/hedging patterns: spawn N subagents aSTRING
HIGHgptme/llm/__init__.py1094 Get available models from a provider. Args: provider: The provider to get models from Returns: STRING
HIGHgptme/llm/utils.py85Convert Parameter objects to JSON Schema dictionary format. This utility converts a list of Parameter objects into STRING
HIGHgptme/oauth/openrouter.py146Run the OpenRouter PKCE OAuth flow and return a durable API key. Args: key_label: Label OpenRouter shows foSTRING
HIGHgptme/util/master_context.py97 Recover truncated content from the master context. Args: logfile: Path to conversation.jsonl bSTRING
HIGHgptme/util/git_worktree.py128Create a git worktree for isolated subagent execution. Args: repo_path: Path to the git repository root. STRING
HIGHgptme/util/content.py2 Check if message content is a command (starts with / and first word has exactly one slash). Examples: STRING
HIGHgptme/util/keyword_matching.py20Convert a keyword (possibly with wildcards) to a compiled regex pattern. Wildcards: - '*' matches zero or more STRING
HIGHgptme/util/install.py40 Get the install command for a package based on the current environment. Args: package: Package name (eSTRING
HIGHgptme/util/tool_format.py195Format detailed tool information. Args: tool: The tool to format include_examples: Include example STRING
HIGHgptme/server/workspace_api.py151 Safely resolve a path within a workspace. Args: workspace: Base workspace path path: Optional STRING
HIGHgptme/server/client.py53Create a new session for conversation via events endpoint. Args: conversation_id: The conversation STRING
HIGHgptme/server/client.py104Take a step in the conversation. Args: conversation_id: The conversation ID session_id:STRING
HIGHgptme/server/client.py140Stream events from conversation. Args: conversation_id: The conversation ID session_id:STRING
HIGHgptme/server/client.py174Interrupt the current generation or tool execution. Args: conversation_id: The conversation ID STRING
HIGHgptme/server/client.py206Confirm, edit, or skip a pending tool execution. Args: conversation_id: The conversation ID STRING
HIGHgptme/agent/workspace.py60 Create an agent workspace by cloning a template repository. This is the recommended approach for creating agenSTRING
HIGHgptme/mcp/client.py348Read a specific resource by URI. Args: uri: The URI of the resource to read. Returns: STRING
HIGHgptme/mcp/client.py428Get a specific prompt by name with optional arguments. Args: name: The name of the prompt to retrieSTRING
HIGHgptme/logmanager/conversations.py518 Delete a conversation by its ID. Args: conv_id: The conversation ID to delete Returns: TrSTRING
HIGHgptme/lessons/installer.py509Check if all skill dependencies are satisfied. Args: skill_names: Specific skills to check (None = check alSTRING
HIGHgptme/lessons/parser.py110Convert a file glob pattern to likely keywords. Args: glob_pattern: File pattern like '**/*.py' or 'src/apiSTRING
HIGHgptme/eval/leaderboard.py1310Generate a leaderboard from eval results. Args: results_dir: Path to eval_results directory with timestampeSTRING
HIGHgptme/eval/dspy/hybrid_optimizer.py382 Select appropriate optimization strategy based on task characteristics. This function implements automated optSTRING
HIGHgptme/eval/dspy/experiments.py407 Run a complete prompt optimization experiment. Args: experiment_name: Name for the experiment STRING
HIGHgptme/eval/dspy/experiments.py458 Quick test of prompt variations without full optimization. Args: prompt_variations: Dictionary of promSTRING
Verbosity Indicators39 hits · 73 pts
SeverityFileLineSnippetContext
LOWtests/test_server_v2.py1034 # Step 1: list sessions (webui catalog fetch)COMMENT
LOWtests/test_server_v2.py1041 # Step 2: fetch that specific session by its ID (webui detail fetch)COMMENT
LOWtests/test_snapshot_command.py267 # Step 1: record state before attemptCOMMENT
LOWtests/test_snapshot_command.py276 # Step 2: mutate workspace (simulate a failed attempt)COMMENT
LOWtests/test_snapshot_command.py280 # Step 3: restore to before-attemptCOMMENT
LOWtests/test_server_v2_hooks.py275 # We need to check if there's an endpoint for this or if it happens automaticallyCOMMENT
LOWtests/test_computer_use_integration.py233 # Step 1: open the form pageCOMMENT
LOWtests/test_computer_use_integration.py237 # Step 2: fill message and author fieldsCOMMENT
LOWtests/test_computer_use_integration.py241 # Step 3: click the submit button (waits for page load internally)COMMENT
LOWtests/test_computer_use_integration.py244 # Step 4: read the result pageCOMMENT
LOWtests/test_computer_use_integration.py604 # Step 1: open a page and save the sessionCOMMENT
LOWtests/test_computer_use_integration.py609 # Step 2: reload the state in the same sessionCOMMENT
LOWtests/test_computer_use_integration.py616 # Step 3: open the same page again — should work with restored stateCOMMENT
LOWtests/test_chat.py478 # Step 1: include_paths extracts the image pathCOMMENT
LOWtests/test_chat.py483 # Step 2: embed_attached_file_content preserves imagesCOMMENT
LOWtests/test_chat.py489 # Step 3: msgs2dicts preserves files for provider processingCOMMENT
LOWtests/test_computer_milestone_integration.py117 # Step 1: load the gameCOMMENT
LOWtests/test_computer_milestone_integration.py120 # Step 2: verify initial stateCOMMENT
LOWtests/test_computer_milestone_integration.py129 # Step 3: fire at the enemy — auto-aims so one Space winsCOMMENT
LOWtests/test_computer_milestone_integration.py132 # Step 4: verify the milestone markerCOMMENT
LOWtests/test_computer_milestone_integration.py202 # Step 1: load the gameCOMMENT
LOWtests/test_computer_milestone_integration.py205 # Step 2: verify initial stateCOMMENT
LOWtests/test_computer_milestone_integration.py211 # Step 3: click three ore nodes to gather 6 iron oreCOMMENT
LOWtests/test_computer_milestone_integration.py216 # Step 4: wait for the craft button to become enabled (needs >= 5 ore)COMMENT
LOWtests/test_computer_milestone_integration.py219 # Step 5: craft an iron plateCOMMENT
LOWtests/test_computer_milestone_integration.py222 # Step 6: verify the milestone markerCOMMENT
LOWgptme/llm/llm_gptme.py254 # Step 1: Request device authorizationCOMMENT
LOWgptme/llm/llm_gptme.py272 # Step 2: Display code to userCOMMENT
LOWgptme/llm/llm_gptme.py276 # Step 3: Poll for tokenCOMMENT
LOWgptme/cli/auth.py80 # Step 1: Request device authorizationCOMMENT
LOWgptme/cli/auth.py108 # Step 2: Show the user what to doCOMMENT
LOWgptme/cli/auth.py124 # Step 3: Poll for tokenCOMMENT
LOWgptme/cli/onboard.py238 # Step 1: Detect providersCOMMENT
LOWgptme/cli/onboard.py268 # Step 2: Select providerCOMMENT
LOWgptme/cli/onboard.py278 # Step 3: Test connectivityCOMMENT
LOWgptme/cli/onboard.py292 # Step 4: Create configCOMMENT
LOWgptme/hooks/form_autodetect.py204 # Step 1: Heuristic detectionCOMMENT
LOWgptme/hooks/form_autodetect.py210 # Step 2: LLM parsingCOMMENT
LOWgptme/hooks/form_autodetect.py216 # Step 3: Create and yield form messageCOMMENT
Modern AI Meta-Vocabulary25 hits · 72 pts
SeverityFileLineSnippetContext
MEDIUMREADME.md83 - [🛡 Guardrails](#-guardrails)CODE
MEDIUMtests/test_replay.py330 # Model with a 100-token context windowCOMMENT
MEDIUMtests/conftest.py171 # Download the embedding model before running tests.COMMENT
MEDIUMtests/test_tools_rag.py50 # Should yield nothing when RAG is not availableCOMMENT
MEDIUMtests/test_tools_rag.py68 # Should yield nothing when RAG is disabledCOMMENT
MEDIUMtests/test_tools_token_awareness.py80 # GPT-4 has a context window of 8192 or 128000 depending on versionCOMMENT
MEDIUMtests/test_init.py56# init() — orchestration testsCOMMENT
MEDIUMdocs/howto/automate-task.md56## Set up a project scaffoldCOMMENT
MEDIUMgptme/constants.py56# This prevents unbounded memory usage and context window overflowCOMMENT
MEDIUMgptme/tools/rag.py21 workspace_only = true # Whether to only search in the workspace directory, or the whole RAG indexSTRING
MEDIUMgptme/tools/rag.py22 paths = [] # List of paths to include in the RAG index. Has no effect if workspace_only is true.STRING
MEDIUMgptme/tools/rag.py82### When to use RAGCOMMENT
MEDIUMgptme/llm/llm_openai_models.py297 # GPT-5.3 Codex — top-tier agentic coding modelCOMMENT
MEDIUMgptme/llm/llm_openai_models.py327 # GPT-5.2 Codex — agentic coding variant of 5.2COMMENT
MEDIUMgptme/llm/llm_openai_models.py349 # GPT-5.1 Codex — agentic coding variant of 5.1COMMENT
MEDIUMgptme/cli/util.py328 # Initialize RAGCOMMENT
MEDIUMgptme/cli/util.py349 # Initialize RAGCOMMENT
MEDIUMgptme/cli/util.py381 # Initialize RAGCOMMENT
MEDIUMgptme/cli/setup.py464# Uncomment to enable RAG (Retrieval-Augmented Generation)COMMENT
MEDIUMgptme/cli/cmd_init.py9 gptme init my-project # Create my-project/ with scaffoldSTRING
MEDIUMgptme/logmanager/manager.py722 # Expired — drop from context window (not from the log on disk).COMMENT
MEDIUMgptme/logmanager/manager.py784 # Enrich with enabled context enhancements (RAG, fresh context)COMMENT
MEDIUMgptme/prompts/__init__.py422# Sub-module imports for orchestrationCOMMENT
MEDIUMgptme/commands/llm.py294 # Show context window utilization if model info is availableCOMMENT
MEDIUMgptme/eval/agents/swebench.py83 # implementation. This is the orchestration skeleton from bjsi'sCOMMENT
Structural Annotation Overuse38 hits · 72 pts
SeverityFileLineSnippetContext
LOWtests/test_server_v2.py1034 # Step 1: list sessions (webui catalog fetch)COMMENT
LOWtests/test_server_v2.py1041 # Step 2: fetch that specific session by its ID (webui detail fetch)COMMENT
LOWtests/test_snapshot_command.py267 # Step 1: record state before attemptCOMMENT
LOWtests/test_snapshot_command.py276 # Step 2: mutate workspace (simulate a failed attempt)COMMENT
LOWtests/test_snapshot_command.py280 # Step 3: restore to before-attemptCOMMENT
LOWtests/test_computer_use_integration.py233 # Step 1: open the form pageCOMMENT
LOWtests/test_computer_use_integration.py237 # Step 2: fill message and author fieldsCOMMENT
LOWtests/test_computer_use_integration.py241 # Step 3: click the submit button (waits for page load internally)COMMENT
LOWtests/test_computer_use_integration.py244 # Step 4: read the result pageCOMMENT
LOWtests/test_computer_use_integration.py604 # Step 1: open a page and save the sessionCOMMENT
LOWtests/test_computer_use_integration.py609 # Step 2: reload the state in the same sessionCOMMENT
LOWtests/test_computer_use_integration.py616 # Step 3: open the same page again — should work with restored stateCOMMENT
LOWtests/test_chat.py478 # Step 1: include_paths extracts the image pathCOMMENT
LOWtests/test_chat.py483 # Step 2: embed_attached_file_content preserves imagesCOMMENT
LOWtests/test_chat.py489 # Step 3: msgs2dicts preserves files for provider processingCOMMENT
LOWtests/test_computer_milestone_integration.py117 # Step 1: load the gameCOMMENT
LOWtests/test_computer_milestone_integration.py120 # Step 2: verify initial stateCOMMENT
LOWtests/test_computer_milestone_integration.py129 # Step 3: fire at the enemy — auto-aims so one Space winsCOMMENT
LOWtests/test_computer_milestone_integration.py132 # Step 4: verify the milestone markerCOMMENT
LOWtests/test_computer_milestone_integration.py202 # Step 1: load the gameCOMMENT
LOWtests/test_computer_milestone_integration.py205 # Step 2: verify initial stateCOMMENT
LOWtests/test_computer_milestone_integration.py211 # Step 3: click three ore nodes to gather 6 iron oreCOMMENT
LOWtests/test_computer_milestone_integration.py216 # Step 4: wait for the craft button to become enabled (needs >= 5 ore)COMMENT
LOWtests/test_computer_milestone_integration.py219 # Step 5: craft an iron plateCOMMENT
LOWtests/test_computer_milestone_integration.py222 # Step 6: verify the milestone markerCOMMENT
LOWgptme/llm/llm_gptme.py254 # Step 1: Request device authorizationCOMMENT
LOWgptme/llm/llm_gptme.py272 # Step 2: Display code to userCOMMENT
LOWgptme/llm/llm_gptme.py276 # Step 3: Poll for tokenCOMMENT
LOWgptme/cli/auth.py80 # Step 1: Request device authorizationCOMMENT
LOWgptme/cli/auth.py108 # Step 2: Show the user what to doCOMMENT
LOWgptme/cli/auth.py124 # Step 3: Poll for tokenCOMMENT
LOWgptme/cli/onboard.py238 # Step 1: Detect providersCOMMENT
LOWgptme/cli/onboard.py268 # Step 2: Select providerCOMMENT
LOWgptme/cli/onboard.py278 # Step 3: Test connectivityCOMMENT
LOWgptme/cli/onboard.py292 # Step 4: Create configCOMMENT
LOWgptme/hooks/form_autodetect.py204 # Step 1: Heuristic detectionCOMMENT
LOWgptme/hooks/form_autodetect.py210 # Step 2: LLM parsingCOMMENT
LOWgptme/hooks/form_autodetect.py216 # Step 3: Create and yield form messageCOMMENT
AI Slop Vocabulary19 hits · 46 pts
SeverityFileLineSnippetContext
MEDIUMpyproject.toml87swebench = {version = ">=1.0", optional=true} # for SWE-bench eval harnessCODE
MEDIUMpyproject.toml88terminal-bench = {version = ">=0.1", optional=true, python = ">=3.12"} # for Terminal-Bench eval harnessCODE
MEDIUMtests/test_mcp_discovery.py151 # We'll use a try-except to make the test more robustCOMMENT
LOWtests/test_reduce.py150 # Should not raise ValueError, just return messages as-is with content preservedCOMMENT
MEDIUMgptme/tools/autocompact/resume.py177 resume_prompt = """Please create a comprehensive resume of this conversation that includes:CODE
MEDIUMgptme/tools/subagent/__init__.py137### ACP Mode (multi-harness support)COMMENT
MEDIUMgptme/tools/subagent/api.py500 # ACP mode: multi-harness support via Agent Client ProtocolCOMMENT
MEDIUMgptme/llm/__init__.py881 # TODO: make this more robust/general, maybe with a callback that runs on each char/chunkCOMMENT
LOWgptme/util/reduce.py124 # but if prev_len == tokens, we are not making progress, so just return the log as-isCOMMENT
MEDIUMgptme/util/install.py18 # Check for uvx (comprehensive cross-platform detection to avoid false positives)COMMENT
MEDIUMgptme/plugins/__init__.py482 # Check for uvx (comprehensive cross-platform detection to avoid false positives)COMMENT
LOWgptme/server/openapi_docs.py609 # For now, just use the first non-None type as 200 responseCOMMENT
MEDIUMgptme/server/tasks_api.py272 """Get comprehensive task information with derived data."""STRING
MEDIUMgptme/eval/dspy/tasks.py415 """Create advanced multi-step tasks for comprehensive evaluation."""STRING
MEDIUMgptme/eval/dspy/experiments.py29 """Generate a comprehensive optimization report."""STRING
MEDIUMgptme/eval/swe_extra/swe_bench_test_spec.py1# edited from the original swebench/harness/test_spec.pyCOMMENT
MEDIUMgptme/eval/swebench/evaluate.py245 # NOTE: This is NOT authoritative — use the official SWE-bench harness forCOMMENT
MEDIUMgptme/eval/swebench/main.py208 # Run the official harness for the first model's predictionsCOMMENT
MEDIUMgptme/eval/swebench/main.py209 # (multi-model harness runs can be done by calling this multiple times)COMMENT
Over-Commented Block40 hits · 36 pts
SeverityFileLineSnippetContext
LOW.pre-commit-config.yaml41# stages: [commit]COMMENT
LOWdocker-compose.yml1# Two services are available:COMMENT
LOWdocker-compose.yml41 - gptme-config:/home/gptme/.config/gptmeCOMMENT
LOWgptme.toml1prompt = "This is gptme"COMMENT
LOWgptme.toml21#paths = [COMMENT
LOWgptme.toml41#command = "npx"COMMENT
LOWtauri/src-tauri/src/lib.rs681 // the normal tao event loop (e.g. last window closed via Cmd+W).COMMENT
LOWtauri/src-tauri/src/lib.rs741 }COMMENT
LOWtests/data/gh-issue-list.txt1#301 fix: broken import in tools/shell.py open 2025-01-15COMMENT
LOWtests/data/gh-issue-list.txt21#321 fix: edge case with piped commands detection open 2025-01-28COMMENT
LOWscripts/check_model_freshness.py41 "llm/models/resolution.py",COMMENT
LOWscripts/bump_version.sh1#!/bin/bashCOMMENT
LOWscripts/publish_release.sh1#!/bin/bashCOMMENT
LOWscripts/install.sh1#!/usr/bin/env shCOMMENT
LOW.github/workflows/release.yml1name: ReleaseCOMMENT
LOWwebui/.pre-commit-config.yaml41 # types_or: [javascript, jsx, ts, tsx]COMMENT
LOWwebui/eslint.config.js61 // {COMMENT
LOWwebui/wrangler.toml1# Cloudflare Pages configurationCOMMENT
LOWwebui/e2e/performance.spec.ts1import { test, expect } from '@playwright/test';COMMENT
LOWwebui/src/utils/conversation.ts1// This file can be removed or repurposed for other conversation utilitiesCOMMENT
LOWwebui/src/utils/tauri.ts1// Detect if we're running in Tauri environment.COMMENT
LOWgptme/codeblock.py281 # This fixes the case where ``` appears after a nested blockCOMMENT
LOWgptme/tools/subagent/execution.py181 _thread_local.agent_id = agent_idCOMMENT
LOWgptme/tools/subagent/execution.py321 # Full context (using profile-filtered tools)COMMENT
LOWgptme/tools/subagent/execution.py361 # Inject parent conversation context if providedCOMMENT
LOWgptme/tools/subagent/batch.py281 # collected in self.results. Workers will exit their poll loops withinCOMMENT
LOWgptme/llm/llm_openai.py1101 # Ensure routed provider supports all request parameters (tools,COMMENT
LOWgptme/llm/__init__.py701 # must buffer the entire line and then decide whether to emit or suppress it.COMMENT
LOWgptme/llm/__init__.py821 # already-wrapped rows visible when think-sig is detected).COMMENT
LOWgptme/llm/__init__.py841 # buffer (tag line itself should not reach the caller).COMMENT
LOWgptme/server/session_step.py1041 # Clear previous error and mark as generating before starting threadCOMMENT
LOWgptme/server/api_v2_sessions.py401COMMENT
LOWgptme/cli/util.py921def tools_call(tool_name: str, function_name: str, arg: list[str]):COMMENT
LOWgptme/eval/main.py121COMMENT
LOWgptme/eval/suites/computer.py201# Game mechanics (readable via read_page_text / ARIA):COMMENT
LOWgptme/eval/suites/computer.py941 "clean exit": _expect_clean_exit,COMMENT
LOWgptme/eval/suites/computer.py981 },COMMENT
LOWgptme/eval/suites/computer.py1041 # End-to-end validation of the click-driven gather-and-craft loop using aCOMMENT
LOWgptme/eval/agents/swebench.py81COMMENT
LOWgptme/acp/agent.py141 # Per-session model overrides (populated from per-project gptme.toml)COMMENT
Fake / Example Data32 hits · 33 pts
SeverityFileLineSnippetContext
LOWtests/test_server_path_traversal.py291 fake_key = tmp_path / "id_rsa"CODE
LOWtests/test_server_path_traversal.py292 fake_key.write_text("PRIVATE KEY")CODE
LOWtests/test_server_path_traversal.py295 mock_config.user.avatar = str(fake_key)CODE
LOWtests/test_server_path_traversal.py343 fake_key = agent_dir / "id_rsa"CODE
LOWtests/test_server_path_traversal.py344 fake_key.write_text("PRIVATE KEY")CODE
LOWtests/test_server_path_traversal.py393 fake_key = agent_dir / "id_rsa"CODE
LOWtests/test_server_path_traversal.py394 fake_key.write_text("PRIVATE KEY")CODE
LOWtests/test_agent.py680 monkeypatch.setenv("GIT_AUTHOR_EMAIL", "test@test.com")CODE
LOWtests/test_agent.py682 monkeypatch.setenv("GIT_COMMITTER_EMAIL", "test@test.com")CODE
LOWtests/test_prompts.py341 ["git", "config", "user.email", "test@test.com"],CODE
LOWtests/test_prompts.py509 ["git", "config", "user.email", "test@test.com"],CODE
LOWtests/test_subagent_worktree_isolation.py57 ["git", "config", "user.email", "test@test.com"],CODE
LOWtests/test_agent_doctor.py62 "GIT_AUTHOR_EMAIL": "test@test.com",CODE
LOWtests/test_agent_doctor.py64 "GIT_COMMITTER_EMAIL": "test@test.com",CODE
LOWtests/test_lessons_commands.py160 assert "placeholder" in result.lower()CODE
LOWtests/test_lessons_commands.py57 keywords=["patch", "placeholder", "error"],CODE
LOWtests/test_util_cli.py1011 "GIT_AUTHOR_EMAIL": "test@test.com",CODE
LOWtests/test_util_cli.py1013 "GIT_COMMITTER_EMAIL": "test@test.com",CODE
LOWtests/test_util_cli.py1019 ["git", "config", "user.email", "test@test.com"],CODE
LOWtests/test_git_worktree.py23 ["git", "config", "user.email", "test@test.com"],CODE
LOWtests/test_util_keyword_matching.py251 text = "Lorem ipsum " * 100 + "specific keyword here" + " dolor sit" * 100CODE
LOW.github/workflows/docs.yml39 echo -e '[prompt]\nabout_user = "testing"\nresponse_preference = "just testing"\n\n[env]\nOPENAI_API_KEY="sk-dCODE
LOWwebui/src/components/__tests__/CommandPalette.test.tsx405 expect(input).toHaveAttribute('placeholder', expect.stringContaining('command'));CODE
LOWgptme/tools/_browser_playwright.py1053 fill_element("[name='email']", "user@example.com")STRING
LOWgptme/tools/computer.py2068 computer("type", text="user@example.com")CODE
LOWgptme/tools/computer.py2072 computer("type", text="user@example.com")CODE
LOWgptme/tools/browser.py1238 fill_element("[name='email']", "user@example.com")STRING
LOWgptme/eval/suites/practical7.py215 "phone": "555-1234",CODE
LOWgptme/eval/suites/practical7.py217 "street": "123 Main St",CODE
LOWgptme/eval/suites/practical7.py230 "street": "123 Main St",CODE
LOWgptme/eval/suites/behavioral/noisy_worktree_fix.py106 assert validate_email("user@example.com") is TrueCODE
LOWgptme/eval/suites/behavioral/add_docstrings.py174 assert validate_email("user@example.com") == "user@example.com"CODE
Dead Code14 hits · 28 pts
SeverityFileLineSnippetContext
MEDIUMtests/test_mcp_server.py36CODE
MEDIUMtests/test_llm_utils.py481CODE
MEDIUMtests/test_hooks.py64CODE
MEDIUMtests/test_hooks.py69CODE
MEDIUMtests/test_hooks.py74CODE
MEDIUMtests/test_hooks_cwd_changed.py87CODE
MEDIUMtests/test_hooks_cwd_changed.py137CODE
MEDIUMgptme/hooks/aw_watcher_agent.py158CODE
MEDIUMgptme/hooks/aw_watcher_agent.py175CODE
MEDIUMgptme/hooks/aw_watcher_agent.py195CODE
MEDIUMgptme/hooks/aw_watcher_agent.py235CODE
MEDIUMgptme/hooks/cwd_changed.py42CODE
MEDIUMgptme/hooks/auto_snapshots.py253CODE
MEDIUMgptme/hooks/auto_snapshots.py284CODE
AI Structural Patterns26 hits · 22 pts
SeverityFileLineSnippetContext
LOWtests/test_util_cli_models.py191CODE
LOWtests/test_agent.py29CODE
LOWtests/test_chats_stats.py52CODE
LOWtests/test_util_cli.py815CODE
LOWtests/test_util_tool_format.py28CODE
LOWtests/test_json_output.py137CODE
LOWtests/test_json_output.py630CODE
LOWtests/test_json_output.py743CODE
LOWgptme/chat.py53CODE
LOWgptme/tools/shell.py1749CODE
LOWgptme/tools/chats.py646CODE
LOWgptme/tools/base.py390CODE
LOWgptme/tools/subagent/execution.py834CODE
LOWgptme/tools/subagent/batch.py491CODE
LOWgptme/tools/subagent/batch.py600CODE
LOWgptme/tools/subagent/batch.py818CODE
LOWgptme/tools/subagent/api.py56CODE
LOWgptme/llm/__init__.py277CODE
LOWgptme/llm/models/listing.py282CODE
LOWgptme/config/cli_setup.py84CODE
LOWgptme/cli/cmd_init.py185CODE
LOWgptme/prompts/__init__.py337CODE
LOWgptme/prompts/__init__.py445CODE
LOWgptme/eval/main.py541CODE
LOWgptme/eval/dspy/prompt_optimizer.py226CODE
LOWgptme/eval/dspy/prompt_optimizer.py278CODE
Cross-File Repetition3 hits · 15 pts
SeverityFileLineSnippetContext
HIGHtests/test_eval_behavioral.py0\ def summarize(text): \"\"\"return a dict with word and line counts for the given text.\"\"\" if not text: return {"worSTRING
HIGH…vioral/minimal_feature_preserve_default_with_decoys.py0\ def summarize(text): \"\"\"return a dict with word and line counts for the given text.\"\"\" if not text: return {"worSTRING
HIGH…eval/suites/behavioral/add_feature_preserve_default.py0\ def summarize(text): \"\"\"return a dict with word and line counts for the given text.\"\"\" if not text: return {"worSTRING
Overly Generic Function Names15 hits · 14 pts
SeverityFileLineSnippetContext
LOWtests/test_active_context.py20 (tmp_path / "utils.py").write_text("def helper(): pass\n")CODE
LOWtests/test_active_context.py138 assert "def helper(): pass" in contentCODE
LOWtests/test_eval_behavioral.py231 def helper():CODE
LOWtests/test_eval_behavioral.py1654def helper():CODE
LOWtests/test_context.py353 (subdir / "utils.py").write_text("def helper(): pass")CODE
LOWtests/test_context.py492 (subdir / "utils.py").write_text("def helper(): pass")CODE
LOWtests/test_tools_base.py276 def helper(name: str) -> bool:CODE
LOWtests/test_tools_base.py287 def helper(name: str) -> bool:CODE
LOWtests/test_tools_base.py455 def helper(name: str) -> bool:CODE
LOWtests/test_tools_base.py501 def helper(name: str) -> bool:CODE
LOWtests/test_tools_shell.py388def test_function(shell):STRING
LOWgptme/cli/cmd_computer.py903def run_task(task: str, timeout: int, model: str | None, as_json: bool):CODE
LOWgptme/hooks/tests/test_active_context.py28 (ws / "utils.py").write_text("def helper():\n return 42\n")CODE
LOWgptme/eval/dspy/tasks.py584 "slow_processor.py": """def process_data(data):STRING
LOWgptme/eval/dspy/tasks.py708def process_data(size):CODE
Synthetic Comment Markers2 hits · 12 pts
SeverityFileLineSnippetContext
HIGHscripts/github_ci_self_heal.py262 f"*🤖 Auto-generated by gptme-bot self-heal ({model})*\n"CODE
HIGHgptme/cli/onboard.py201# Generated by gptme onboardCOMMENT
Example Usage Blocks8 hits · 12 pts
SeverityFileLineSnippetContext
LOWdocker-compose.yml58 # Usage:COMMENT
LOWtauri/scripts/build-appimage.sh4# Usage:COMMENT
LOWscripts/bump_version.sh4# Usage:COMMENT
LOWscripts/gh-pr-view-with-pr-comments.sh9# Example usage:COMMENT
LOWscripts/publish_release.sh11# Usage:COMMENT
LOWscripts/install.sh4# Usage:COMMENT
LOWgptme/lessons/installer.py674# Example usageCOMMENT
LOWgptme/eval/dspy/experiments.py498 # Example usageCOMMENT
TODO Padding6 hits · 12 pts
SeverityFileLineSnippetContext
LOWgptme/eval/suites/behavioral/implement_lru_cache.py144 # TODO: implement LRU cachingCOMMENT
LOWgptme/eval/suites/behavioral/implement_memoization.py91 # TODO: implement memoizationCOMMENT
LOW…tme/eval/suites/behavioral/implement_priority_queue.py97 # TODO: implement priority queueCOMMENT
LOW…tme/eval/suites/behavioral/implement_priority_queue.py101 # TODO: implementCOMMENT
LOW…tme/eval/suites/behavioral/implement_priority_queue.py111 # TODO: implementCOMMENT
LOW…tme/eval/suites/behavioral/implement_priority_queue.py120 # TODO: implementCOMMENT
Magic Placeholder Names1 hit · 5 pts
SeverityFileLineSnippetContext
HIGHgptme/cli/util.py1253 click.echo(f"Set it with: export {env_var}=your-api-key")CODE
Slop Phrases1 hit · 2 pts
SeverityFileLineSnippetContext
MEDIUMtests/test_server_v2_tool_confirmation.py39 "Done, let me know if you need anything else.",CODE