Are we tiny?#

gptme is intended to be small and simple, and focus on doing the right thing in the right way, rather than all the things in all the ways.

The benefits of this approach are many:

  • It is easier to understand and maintain.

  • It is easier to contribute to.

  • It is easier to learn.

  • It is easier to extend.

  • It is more fun to work on.

Being aggressive about keeping things small and simple is a way to keep the project maintainable and fun to work on. The fastest way to kill a project is to make it too big and complex, and suffer burnout as a result.

Another major benefit of keeping things small and simple is that it makes it easier for AI to understand and work with the codebase. This is a major goal of the project, and it is important to keep in mind that the simpler the codebase is, the easier it will be for AI to work with it:

“The simpler your API is, the more effectively the AI can harness it when generating code.”

Kenneth Reitz (and many others)

To that end, in this document we will present some statistics about the current state of the project, trying to be mindful to keep an eye on this page and make sure we are not growing too much.

Startup time#

$ make bench-import
make[2]: Entering directory '/home/runner/work/gptme/gptme'
Benchmarking import time for gptme
time poetry run python -X importtime -m gptme --model openai --non-interactive 2>&1 | grep "import time" | cut -d'|' -f 2- | sort -n | tail -n 10
     170854 |   gptme.tools._browser_playwright
     195875 |         gptme.config
     203205 |       gptme.llm
     239840 |         mcp.client.session
     266824 |     gptme.commands
     301309 |   gptme.chat
     364245 |       mcp
     364272 |     mcp.types
     380309 |   gptme.tools.mcp_adapter
    1334853 | gptme.cli.main

real	0m2.059s
user	0m1.784s
sys	0m0.203s
make[2]: Leaving directory '/home/runner/work/gptme/gptme'
$ make bench-startup
make[2]: Entering directory '/home/runner/work/gptme/gptme'
Benchmarking startup time for gptme
hyperfine "poetry run gptme '/exit'" -M 5 || poetry run gptme '/exit' || exit 1
Benchmark 1: poetry run gptme '/exit'
  Time (mean ± σ):      2.606 s ±  0.238 s    [User: 2.278 s, System: 0.578 s]
  Range (min … max):    2.443 s …  3.015 s    5 runs
 
make[2]: Leaving directory '/home/runner/work/gptme/gptme'

Lines of code#

LoC Core#

$ make cloc-core
make[2]: Entering directory '/home/runner/work/gptme/gptme'
cloc gptme/*.py gptme/llm/*.py gptme/util/*.py gptme/tools/base.py gptme/tools/__init__.py gptme/hooks/__init__.py gptme/plugins/__init__.py gptme/lessons/*.py --by-file --hide-rate --quiet | tail -n +2
-----------------------------------------------------------------------------------------------
File                                                        blank        comment           code
-----------------------------------------------------------------------------------------------
gptme/llm/llm_openai.py                                       264            276           1257
gptme/util/gh.py                                              217            245           1161
gptme/llm/llm_anthropic.py                                    199            256            835
gptme/util/context.py                                         140            207            593
gptme/tools/base.py                                           139            185            574
gptme/lessons/installer.py                                    146            165            495
gptme/llm/__init__.py                                         111            145            491
gptme/llm/llm_openai_subscription.py                          123             92            476
gptme/chat.py                                                  72             97            422
gptme/util/prompt.py                                          102            151            410
gptme/message.py                                               96            131            389
gptme/util/_telemetry.py                                      106            136            370
gptme/telemetry.py                                             86             54            342
gptme/checkpoint.py                                            79             49            320
gptme/util/cost_display.py                                     61             58            298
gptme/info.py                                                  84             70            293
gptme/tools/__init__.py                                        89             71            273
gptme/llm/openai_responses.py                                  63             10            269
gptme/plugins/__init__.py                                      85            119            256
gptme/llm/llm_openai_models.py                                  6             33            248
gptme/codeblock.py                                             37            143            247
gptme/lessons/index.py                                         90            133            235
gptme/profiles.py                                              64             67            233
gptme/util/auto_naming.py                                      68             78            224
gptme/lessons/parser.py                                        73            117            221
gptme/lessons/hybrid_matcher.py                                85            112            218
gptme/util/_sound_sounddevice.py                               57             50            218
gptme/lessons/commands.py                                      91             48            213
gptme/workspace_snapshot.py                                    37             41            207
gptme/util/sound.py                                            65             72            200
gptme/hooks/__init__.py                                        20             42            194
gptme/llm/validate.py                                          30             29            174
gptme/llm/utils.py                                             56             84            159
gptme/util/__init__.py                                         34             29            155
gptme/util/reduce.py                                           45             45            155
gptme/init.py                                                  33             39            153
gptme/llm/llm_openai_models_deprecated.py                       5             13            151
gptme/util/tool_format.py                                      48             75            151
gptme/util/clipboard.py                                        22             12            147
gptme/lessons/auto_include.py                                  50             59            136
gptme/llm/llm_gptme.py                                         47             58            127
gptme/util/export.py                                           26             29            111
gptme/util/cost_tracker.py                                     43             62            109
gptme/dirs.py                                                  45             35            107
gptme/lessons/matcher.py                                       35             47            103
gptme/util/ask_execute.py                                      25             40             89
gptme/util/tree.py                                             21             15             87
gptme/util/git_worktree.py                                     25             33             83
gptme/__version__.py                                           17              5             82
gptme/util/context_savings.py                                  20              6             77
gptme/prompt_queue.py                                          30              5             73
gptme/util/output_storage.py                                   29             37             71
gptme/llm/llm_anthropic_models_deprecated.py                    5             11             70
gptme/session.py                                               39             64             70
gptme/util/generate_name.py                                     5              6             69
gptme/util/master_context.py                                   28             38             66
gptme/util/_sound_cmd.py                                       22             17             62
gptme/util/tokens.py                                           20             20             60
gptme/util/uri.py                                              29             42             59
gptme/credentials.py                                           16              7             53
gptme/util/context_dedup.py                                    41             93             53
gptme/util/terminal.py                                         28             23             53
gptme/llm/provider_plugins.py                                  39             35             48
gptme/util/cost.py                                             12              9             47
gptme/util/file_storage.py                                     30             47             40
gptme/util/keyword_matching.py                                 35             66             39
gptme/util/content.py                                          18             24             30
gptme/util/install.py                                          13             25             30
gptme/constants.py                                             19             25             27
gptme/util/useredit.py                                         11             13             26
gptme/executor.py                                              18             26             24
gptme/util/interrupt.py                                        13             15             23
gptme/__init__.py                                               6              0             22
gptme/lessons/__init__.py                                       7             15             18
gptme/__main__.py                                               2              0             12
gptme/llm/constants.py                                          2              6              5
-----------------------------------------------------------------------------------------------
SUM:                                                         4099           4837          15688
-----------------------------------------------------------------------------------------------
make[2]: Leaving directory '/home/runner/work/gptme/gptme'

LoC LLM#

$ make cloc-llm
make[2]: Entering directory '/home/runner/work/gptme/gptme'
cloc gptme/llm/*.py --by-file --hide-rate --quiet | tail -n +2
-----------------------------------------------------------------------------------------------
File                                                        blank        comment           code
-----------------------------------------------------------------------------------------------
gptme/llm/llm_openai.py                                       264            276           1257
gptme/llm/llm_anthropic.py                                    199            256            835
gptme/llm/__init__.py                                         111            145            491
gptme/llm/llm_openai_subscription.py                          123             92            476
gptme/llm/openai_responses.py                                  63             10            269
gptme/llm/llm_openai_models.py                                  6             33            248
gptme/llm/validate.py                                          30             29            174
gptme/llm/utils.py                                             56             84            159
gptme/llm/llm_openai_models_deprecated.py                       5             13            151
gptme/llm/llm_gptme.py                                         47             58            127
gptme/llm/llm_anthropic_models_deprecated.py                    5             11             70
gptme/llm/provider_plugins.py                                  39             35             48
gptme/llm/constants.py                                          2              6              5
-----------------------------------------------------------------------------------------------
SUM:                                                          950           1048           4310
-----------------------------------------------------------------------------------------------
make[2]: Leaving directory '/home/runner/work/gptme/gptme'

LoC Tools#

$ make cloc-tools
make[2]: Entering directory '/home/runner/work/gptme/gptme'
cloc gptme/tools/*.py gptme/hooks/*.py gptme/plugins/*.py --by-file --hide-rate --quiet | tail -n +2
------------------------------------------------------------------------------------------
File                                                   blank        comment           code
------------------------------------------------------------------------------------------
gptme/tools/shell.py                                     248            327           1333
gptme/hooks/workspace_agents.py                          187            125            887
gptme/tools/mcp_adapter.py                               209            215            612
gptme/tools/browser.py                                   187            263            596
gptme/tools/computer.py                                  167            225            591
gptme/tools/base.py                                      139            185            574
gptme/tools/gh.py                                        116            127            523
gptme/tools/_browser_playwright.py                       140            105            518
gptme/tools/computer_transport.py                        119             75            463
gptme/tools/chats.py                                      85            101            385
gptme/tools/tmux.py                                       95            171            384
gptme/hooks/registry.py                                   88             78            381
gptme/tools/mcp.py                                       102            102            337
gptme/tools/lessons.py                                   102            109            275
gptme/tools/save.py                                       61             60            274
gptme/tools/__init__.py                                   89             71            273
gptme/tools/shell_validation.py                           88            121            273
gptme/tools/patch.py                                      62             95            270
gptme/tools/shell_background.py                           65             36            270
gptme/plugins/__init__.py                                 85            119            256
gptme/tools/python.py                                     74             90            239
gptme/tools/todo.py                                       95            109            232
gptme/tools/precommit.py                                  70             96            229
gptme/hooks/elicitation.py                                90            132            213
gptme/hooks/cost_awareness.py                             65             73            205
gptme/hooks/auto_snapshots.py                             51             66            199
gptme/hooks/__init__.py                                   20             42            194
gptme/tools/morph.py                                      43             47            185
gptme/tools/read.py                                       41             49            177
gptme/hooks/cache_awareness.py                           118            186            168
gptme/tools/_browser_thread.py                            27             12            156
gptme/hooks/cli_confirm.py                                50             54            152
gptme/tools/rag.py                                        62             74            151
gptme/tools/restart.py                                    51             81            150
gptme/tools/form.py                                       38             55            145
gptme/hooks/token_awareness.py                            44             50            142
gptme/hooks/types.py                                      74            112            139
gptme/hooks/agents_md_inject.py                           36             59            136
gptme/tools/elicit.py                                     36            109            135
gptme/hooks/tool_target_instructions.py                   34             48            132
gptme/tools/complete.py                                   34             45            125
gptme/hooks/form_autodetect.py                            48             65            123
gptme/hooks/server_confirm.py                             51             58            122
gptme/plugins/registry.py                                 40             32            115
gptme/hooks/server_elicit.py                              52             56            113
gptme/hooks/confirm.py                                    53             88            109
gptme/tools/choice.py                                     32             38            103
gptme/hooks/active_context.py                             25             23            100
gptme/tools/screenshot.py                                 25             29             94
gptme/hooks/time_awareness.py                             29             31             84
gptme/tools/autocommit.py                                 37             58             80
gptme/tools/vision.py                                     25             14             73
gptme/tools/_browser_lynx.py                              12             12             60
gptme/tools/_browser_perplexity.py                        22             16             60
gptme/hooks/cwd_changed.py                                15             11             54
gptme/hooks/mcp_namespace_hint.py                         21             24             54
gptme/hooks/markdown_validation.py                        36             41             51
gptme/plugins/entrypoints.py                              15             13             42
gptme/hooks/test.py                                       12              5             33
gptme/hooks/cwd_awareness.py                              11             17             28
gptme/hooks/auto_confirm.py                               11              9             24
gptme/plugins/plugin.py                                   25             39             17
gptme/tools/_browser_format.py                             3              5              3
------------------------------------------------------------------------------------------
SUM:                                                    4187           4983          14621
------------------------------------------------------------------------------------------
make[2]: Leaving directory '/home/runner/work/gptme/gptme'

LoC Server#

$ make cloc-server
make[2]: Entering directory '/home/runner/work/gptme/gptme'
cloc gptme/server --by-file --hide-rate --quiet | tail -n +2
--------------------------------------------------------------------------------------
File                                               blank        comment           code
--------------------------------------------------------------------------------------
gptme/server/api_v2.py                               214            166           1198
gptme/server/api_v2_sessions.py                      119            138            672
gptme/server/session_step.py                         150            200            661
gptme/server/tasks_api.py                            186            121            639
gptme/server/openapi_docs.py                         225            156            630
gptme/server/static/main.js                           51             69            497
gptme/server/workspace_api.py                         97             89            437
gptme/server/external_sessions.py                     40             25            267
gptme/server/session_models.py                        57             69            201
gptme/server/static/index.html                        11             18            201
gptme/server/cli.py                                   37             39            197
gptme/server/acp_session_runtime.py                   34             30            165
gptme/server/auth.py                                  57             80            160
gptme/server/client.py                                63             79            149
gptme/server/static/style.css                         27              4            143
gptme/server/api_v2_common.py                         75             62            133
gptme/server/api_v2_agents.py                         25             17            114
gptme/server/static/computer.html                      1              1             90
gptme/server/app.py                                   23             27             62
gptme/server/constants.py                              7             11              9
gptme/server/__init__.py                               2              3              3
gptme/server/__main__.py                               1              0              3
--------------------------------------------------------------------------------------
SUM:                                                1502           1404           6631
--------------------------------------------------------------------------------------
make[2]: Leaving directory '/home/runner/work/gptme/gptme'

LoC Tests#

$ make cloc-tests
make[2]: Entering directory '/home/runner/work/gptme/gptme'
cloc tests --by-file --hide-rate --quiet | tail -n +2
-----------------------------------------------------------------------------------------------
File                                                        blank        comment           code
-----------------------------------------------------------------------------------------------
tests/test_llm_openai.py                                      475            247           1872
tests/test_server_v2.py                                       343            135           1425
tests/test_init.py                                            220            117           1257
tests/test_tools_subagent.py                                  416            225           1193
tests/test_eval_behavioral.py                                 668            685           1113
tests/test_acp_agent.py                                       321            184           1075
tests/test_tools_shell.py                                     340            404           1060
tests/test_util_gh.py                                         231            125           1059
tests/test_eval_leaderboard.py                                126            104            883
tests/test_info.py                                            167             73            878
tests/test_util_gh_mocked.py                                  149            119            777
tests/test_tasks_api.py                                       166             59            702
tests/test_agent.py                                           205            112            701
tests/test_tools_browser.py                                   232             52            697
tests/test_tools_gh.py                                        134             69            675
tests/test_config.py                                          196            319            667
tests/test_hooks_registry.py                                  238             89            640
tests/test_prompt_templates.py                                226            147            636
tests/test_acp_session_runtime.py                             215             76            635
tests/test_llm_utils.py                                       190            101            625
tests/test_server_workspace.py                                128            130            605
tests/test_doctor.py                                          161            101            595
tests/test_llm_anthropic.py                                   123             42            591
tests/test_tools_lessons.py                                   135             49            580
tests/test_tools_precommit.py                                 109             86            578
tests/test_llm_models_resolution.py                           188            129            548
tests/test_auto_compact.py                                    227            189            543
tests/test_server_v2_sessions.py                              101             77            533
tests/test_lessons.py                                         156            153            517
tests/test_hooks_cost_awareness.py                             72             61            516
tests/test_hooks_cache_awareness.py                           152             44            484
tests/test_llm_auth.py                                        169             56            476
tests/test_server_session_models.py                           158            140            466
tests/test_skill_installer.py                                 138            154            459
tests/test_commands.py                                        144             67            456
tests/test_tools_shell_background.py                          117             51            456
tests/test_cost_display.py                                     51             37            455
tests/test_computer_transport.py                              170             66            449
tests/test_tools_base.py                                      149             62            440
tests/test_util_cli.py                                        117             64            434
tests/test_lessons_commands.py                                157             82            422
tests/test_dirs.py                                             97             69            421
tests/test_tools_computer.py                                  163             98            420
tests/context/test_task_analyzer.py                            90             44            418
tests/test_lessons_parser.py                                  188            239            417
tests/test_eval.py                                             95             76            405
tests/test_codeblock.py                                       302            776            402
tests/test_tools_shell_validation.py                          161             63            399
tests/test_tools_mcp.py                                       102             20            398
tests/test_chat.py                                            175            168            396
tests/test_server_path_traversal.py                           100             60            388
tests/test_lessons_index.py                                   131            106            385
tests/test_util_cli_mcp.py                                     89             45            380
tests/test_profiles.py                                         84             30            354
tests/test_lessons_matcher.py                                  99             86            352
tests/test_cli.py                                              95             71            344
tests/test_shell_background.py                                 99             71            342
tests/test_workspace_api.py                                    98             19            342
tests/test_unified_plugins.py                                  94             38            341
tests/test_eval_trends.py                                      35             22            335
tests/test_provider_plugins.py                                 90             32            333
tests/test_eval_behavioral_solutions.py                       261            770            332
tests/test_workspace_agents.py                                145             57            329
tests/test_message.py                                         120            111            328
tests/test_util_tool_format.py                                 78             32            322
tests/conftest.py                                              89             89            319
tests/test_agent_doctor.py                                     72             34            318
tests/test_mcp_discovery.py                                    97             39            315
tests/test_mcp_adapter.py                                     106             54            313
tests/test_hybrid_lessons.py                                   82             42            311
tests/test_util_hooks.py                                       82             87            311
tests/test_tools_morph.py                                      89             66            310
tests/context/test_adaptive_compressor.py                      58             44            298
tests/test_context.py                                         130             79            297
tests/test_external_sessions.py                                80             49            296
tests/test_prompts.py                                          90             56            292
tests/test_execenv.py                                          76             54            288
tests/lessons/test_wildcard_matching.py                       114            125            287
tests/test_server.py                                          106             71            283
tests/test_hooks_server_confirm.py                             78             31            282
tests/test_tools_restart.py                                    72             49            274
tests/test_server_v2_agents.py                                 57             25            272
tests/test_tools_complete.py                                   78             77            271
tests/test_json_output.py                                      51             52            260
tests/test_tools.py                                           113             59            259
tests/test_tools_autocommit.py                                 98             47            258
tests/test_workspace_snapshot.py                               86             38            257
tests/test_llm_models.py                                       90             63            255
tests/test_context_selector.py                                 83             45            254
tests/test_eval_claude_code.py                                 66             27            253
tests/test_lessons_integration.py                              97             66            252
tests/test_util_cli_providers.py                               60             27            250
tests/test_prompt_tools.py                                     57             30            249
tests/test_tools_browser_thread.py                             69             38            245
tests/test_ephemeral.py                                        78             39            244
tests/test_agents_md_inject.py                                 43             37            241
tests/test_complete.py                                         56             40            241
tests/test_mcp.py                                              68             59            239
tests/test_auto_naming.py                                      69             45            237
tests/test_conversations.py                                    35             25            235
tests/test_hooks.py                                           114             46            232
tests/test_browser.py                                          96             53            221
tests/test_util_keyword_matching.py                            75             46            218
tests/test_lessons_tool.py                                     62             34            216
tests/test_logmanager.py                                       66             57            215
tests/test_checkpoint.py                                       88             20            211
tests/test_autocompact_scoring.py                              86             39            208
tests/test_tools_read.py                                       72             29            208
tests/test_executor.py                                         50             31            206
tests/test_oauth_openrouter.py                                 62              9            205
tests/test_plugins.py                                          82             70            203
tests/test_tools_screenshot.py                                 55             48            203
tests/test_util_file_storage.py                                51             36            203
tests/test_chats_json.py                                       30             17            202
tests/test_tool_use.py                                         38             43            200
tests/test_subagent_unit.py                                    45             20            199
tests/test_server_v2_auto_stepping.py                          45             45            197
tests/test_tools_save.py                                       57             36            193
tests/test_chats_clean.py                                      46             18            191
tests/test_chats_stats.py                                      63             27            184
tests/test_dspy_hybrid.py                                      65             45            179
tests/test_dspy_basic.py                                       66             44            177
tests/test_hooks_cwd_changed.py                                55             24            176
tests/test_tools_todo.py                                       81             65            173
tests/test_chats_export.py                                     48             17            172
tests/test_acp_types.py                                        35             12            171
tests/test_tools_patch.py                                      91            214            171
tests/test_server_v2_hooks.py                                  70             59            170
tests/test_llm_openai_subscription.py                          37              9            169
tests/test_util_terminal.py                                    52             34            168
tests/test_tools_elicit.py                                     50             25            167
tests/test_tree.py                                             59             37            167
tests/test_util_cli_skills.py                                  63             42            165
tests/test_acp_protocol_logging.py                             56             15            160
tests/test_acp_client.py                                       64             34            159
tests/test_acp_stdout.py                                       76             37            158
tests/test_uri.py                                              55             30            158
tests/test_commands_account.py                                 37              6            156
tests/test_tools_time_awareness.py                             52             34            155
tests/test_cost_tracker.py                                     21             24            154
tests/test_shell_allowlist_autoconfirm.py                      38             38            154
tests/test_tools_tmux.py                                       69             63            154
tests/test_util_tree.py                                        44             33            151
tests/test_server_api_v2_common.py                             46             46            150
tests/test_util_install.py                                     34             31            148
tests/test_master_context.py                                   39             24            147
tests/test_reduce.py                                           42             41            146
tests/test_file_selector_integration.py                        50             23            145
tests/test_gptme_provider.py                                   66             20            143
tests/test_util_tokens.py                                      72             35            143
tests/test_dspy_integration.py                                 54             32            139
tests/test_tools_vision.py                                     36             31            138
tests/test_server_elicitation.py                               47             17            137
tests/test_util_cli_models.py                                  15             11            137
tests/test_util_content.py                                     49             25            137
tests/test_agent_workspace_timeouts.py                         41             22            129
tests/test_acp_adapter.py                                      42             33            128
tests/test_cwe214_docker_env_leak.py                           42             41            128
tests/test_lessons_auto_include.py                             38             27            127
tests/test_active_context.py                                   41             22            126
tests/test_eval_pass_rate_gate.py                              38              1            126
tests/test_tools_token_awareness.py                            59             47            126
tests/test_util_context_dedup.py                               61             43            125
tests/test_tools_python.py                                     56             19            124
tests/test_prompt.py                                           36             36            123
tests/test_util_interrupt.py                                   48             38            121
tests/test_integration_phase4.py                               22             19            119
tests/test_cost_cache_cold_warning.py                          33              8            118
tests/test_util_clipboard_paste.py                             27             14            117
tests/test_agent_service_timeouts.py                           19             18            116
tests/test_llm_validate.py                                     26             20            116
tests/test_misc_subprocess_timeouts.py                         43             27            114
tests/test_lessons_status.py                                   67             96            113
tests/test_chats_rename.py                                     42             17            112
tests/test_eval_swebench.py                                    39             32            111
tests/test_cost_awareness_delayed_warning.py                   42             32            108
tests/test_server_v2_tool_confirmation.py                      32             32            107
tests/test_util_cost.py                                        21             19            103
tests/test_util_output_storage.py                              23             13            103
tests/test_git_worktree.py                                     31             19            102
tests/test_command_completion.py                               33             23            100
tests/test_hooks_mcp_namespace_hint.py                         30             14            100
tests/test_session.py                                          40             21             95
tests/test_tools_choice.py                                     47             24             91
tests/test_agent_memory.py                                     26             17             90
tests/test_browser_lynx.py                                     35             15             90
tests/test_swebench_utils.py                                   27              2             89
tests/test_browser_github_routing.py                           27              0             86
tests/test_server_auth.py                                      40             19             84
tests/test_prompt_skills_summary.py                            44             44             80
tests/test_onboard.py                                          17             17             79
tests/test_util.py                                             42             85             78
tests/test_eval_timeouts.py                                    32             33             77
tests/test_markdown_validation.py                              43             34             75
tests/test_shell_issue729.py                                   50             52             75
tests/test_custom_providers.py                                 32             44             74
tests/test_shell_issue772.py                                   48             47             73
tests/test_chat_config.py                                      24             19             72
tests/test_hooks_form_autodetect.py                            22             34             68
tests/test_tools_form.py                                       22             19             67
tests/test_util_context_savings.py                             12              0             66
tests/test_server_cors.py                                      27             13             60
tests/test_shell_output_mixing_issue408.py                     25             29             60
tests/test_eval_practical20.py                                 27              8             59
tests/test_server_client.py                                    33             26             59
tests/test_chat_history.py                                     14             12             56
tests/test_eval_practical17.py                                 33              3             53
tests/test_eval_practical18.py                                 23              4             53
tests/test_eval_practical19.py                                 23              6             53
tests/test_tools_chats.py                                      16             13             51
tests/test_server_v2_sse.py                                    15             13             50
tests/test_dspy_gepa.py                                        18              9             46
tests/test_demo_capture.py                                     19              9             45
tests/test_util_generate_name.py                               17             10             45
tests/test-integration.sh                                      22             36             43
tests/test_pdf_to_images.py                                    13             13             43
tests/test_server_cli_fallback.py                              16             12             42
tests/test_xml_format.py                                       19             68             41
tests/test_shell_fd_leak.py                                    23             16             39
tests/test_telemetry.py                                        23             20             38
tests/test_utils.py                                            14             17             38
tests/test_server_parent_death_watcher.py                      14              9             36
tests/test_util_export.py                                      20             11             36
tests/test_message_command.py                                  13             12             35
tests/test_cli_confirm_hook.py                                 24             20             34
tests/test_commands_llm.py                                      7              0             34
tests/test_credentials.py                                      16              0             34
tests/test_tools_rag.py                                        15              8             34
tests/test_shell_for_loop_issue724.py                          16             24             33
tests/test_package_exports.py                                  10              3             29
tests/test_eval_practical16.py                                 11              0             28
tests/data/git-log-oneline.txt                                  0              0             27
tests/test_quota_skip.py                                        5              3             26
tests/data/example-patch-codeblock.txt                          4              0             25
tests/data/gh-issue-list.txt                                    0              0             25
tests/data/example-interrupted.txt                              8              0             24
tests/test_tool_loading_duplicate.py                           16             15             24
tests/test_credentials_integration.py                           8              0             22
tests/test_setup_completions.py                                 9              6             22
tests/test_tools_shell_multiline.py                             7             19             19
tests/test_browser_format.py                                    8              6             18
tests/test_screenshot.py                                        9              6             15
-----------------------------------------------------------------------------------------------
SUM:                                                        19365          13931          63436
-----------------------------------------------------------------------------------------------
make[2]: Leaving directory '/home/runner/work/gptme/gptme'

LoC Eval#

$ make cloc-eval
make[2]: Entering directory '/home/runner/work/gptme/gptme'
cloc gptme/eval/**.py --by-file --hide-rate --quiet | tail -n +2
------------------------------------------------------------------------------------------
File                                        blank        comment           code
------------------------------------------------------------------------------------------
gptme/eval/main.py                            104            110            864
gptme/eval/leaderboard.py                     149            485            804
gptme/eval/execenv.py                          85            146            514
gptme/eval/run.py                              63             88            492
gptme/eval/trends.py                           59             31            317
gptme/eval/types.py                            27             31             75
gptme/eval/filestore.py                        11              8             63
gptme/eval/pass_rate_gate.py                   17             36             59
gptme/eval/cost.py                             12             24              6
gptme/eval/__init__.py                          2              2              4
gptme/eval/__main__.py                          1              0              3
------------------------------------------------------------------------------------------
SUM:                                          530            961           3201
------------------------------------------------------------------------------------------
make[2]: Leaving directory '/home/runner/work/gptme/gptme'

LoC Total#

$ make cloc-total
make[2]: Entering directory '/home/runner/work/gptme/gptme'
cloc gptme/util/useredit.py gptme/util/ask_execute.py gptme/util/file_storage.py gptme/util/context_dedup.py gptme/util/tool_format.py gptme/util/cost.py gptme/util/interrupt.py gptme/util/export.py gptme/util/keyword_matching.py gptme/util/git_worktree.py gptme/util/prompt.py gptme/util/clipboard.py gptme/util/reduce.py gptme/util/auto_naming.py gptme/util/_telemetry.py gptme/util/uri.py gptme/util/context_savings.py gptme/util/terminal.py gptme/util/generate_name.py gptme/util/gh.py gptme/util/_sound_cmd.py gptme/util/__init__.py gptme/util/tokens.py gptme/util/_sound_sounddevice.py gptme/util/cost_tracker.py gptme/util/content.py gptme/util/context.py gptme/util/output_storage.py gptme/util/tree.py gptme/util/sound.py gptme/util/master_context.py gptme/util/install.py gptme/util/cost_display.py gptme/commands/llm.py gptme/commands/account.py gptme/commands/export.py gptme/commands/meta.py gptme/commands/base.py gptme/commands/__init__.py gptme/commands/checkpoint.py gptme/commands/session.py gptme/acp/adapter.py gptme/acp/types.py gptme/acp/client.py gptme/acp/__init__.py gptme/acp/__main__.py gptme/acp/agent.py gptme/prompt_queue.py gptme/dirs.py gptme/init.py gptme/codeblock.py gptme/constants.py gptme/oauth/__init__.py gptme/oauth/openrouter.py gptme/eval/swebench/main.py gptme/eval/swebench/evaluate.py gptme/eval/swebench/__init__.py gptme/eval/swebench/info.py gptme/eval/swebench/utils.py gptme/eval/swebench/__main__.py gptme/eval/leaderboard.py gptme/eval/main.py gptme/eval/cost.py gptme/eval/types.py gptme/eval/swe_extra/swe_bench_extra_data.py gptme/eval/swe_extra/swe_bench_test_spec.py gptme/eval/swe_extra/run_swe_extra.py gptme/eval/swe_extra/__init__.py gptme/eval/swe_extra/swe_bench_constants.py gptme/eval/tbench/run.py gptme/eval/tbench/__init__.py gptme/eval/tbench/agent.py gptme/eval/execenv.py gptme/eval/trends.py gptme/eval/filestore.py gptme/eval/agents/claude_code.py gptme/eval/agents/__init__.py gptme/eval/agents/swebench.py gptme/eval/run.py gptme/eval/__init__.py gptme/eval/pass_rate_gate.py gptme/eval/suites/practical10.py gptme/eval/suites/practical7.py gptme/eval/suites/practical31.py gptme/eval/suites/practical20.py gptme/eval/suites/practical13.py gptme/eval/suites/practical17.py gptme/eval/suites/browser.py gptme/eval/suites/practical27.py gptme/eval/suites/practical30.py gptme/eval/suites/practical.py gptme/eval/suites/practical12.py gptme/eval/suites/practical32.py gptme/eval/suites/practical9.py gptme/eval/suites/practical5.py gptme/eval/suites/practical18.py gptme/eval/suites/behavioral/_common.py gptme/eval/suites/behavioral/add_type_hints.py gptme/eval/suites/behavioral/add_deprecation_warning.py gptme/eval/suites/behavioral/rate_limiting.py gptme/eval/suites/behavioral/git_selective_commit.py gptme/eval/suites/behavioral/debug_data_pipeline.py gptme/eval/suites/behavioral/retry_with_backoff.py gptme/eval/suites/behavioral/remove_dead_code.py gptme/eval/suites/behavioral/add_docstrings.py gptme/eval/suites/behavioral/add_feature_preserve_default.py gptme/eval/suites/behavioral/write_test_suite.py gptme/eval/suites/behavioral/implement_memoization.py gptme/eval/suites/behavioral/fix_mutable_default.py gptme/eval/suites/behavioral/scope_discipline_bugfix.py gptme/eval/suites/behavioral/extract_function_refactor.py gptme/eval/suites/behavioral/implement_lru_cache.py gptme/eval/suites/behavioral/iterative_debug.py gptme/eval/suites/behavioral/stage_new_files.py gptme/eval/suites/behavioral/optimize_n_squared.py gptme/eval/suites/behavioral/implement_event_emitter.py gptme/eval/suites/behavioral/validate_user_input.py gptme/eval/suites/behavioral/implement_priority_queue.py gptme/eval/suites/behavioral/use_existing_helper.py gptme/eval/suites/behavioral/fix_data_mutation.py gptme/eval/suites/behavioral/multi_file_rename.py gptme/eval/suites/behavioral/__init__.py gptme/eval/suites/behavioral/fix_security_path_traversal.py gptme/eval/suites/behavioral/handle_specific_exception.py gptme/eval/suites/behavioral/noisy_worktree_fix.py gptme/eval/suites/behavioral/merge_conflict_resolution.py gptme/eval/suites/behavioral/test_driven_error_handling.py gptme/eval/suites/behavioral/add_logging.py gptme/eval/suites/behavioral/refactor_for_testability.py gptme/eval/suites/behavioral/circuit_breaker.py gptme/eval/suites/practical22.py gptme/eval/suites/init_projects.py gptme/eval/suites/practical29.py gptme/eval/suites/practical23.py gptme/eval/suites/practical8.py gptme/eval/suites/practical24.py gptme/eval/suites/practical26.py gptme/eval/suites/practical14.py gptme/eval/suites/practical3.py gptme/eval/suites/practical21.py gptme/eval/suites/practical6.py gptme/eval/suites/__init__.py gptme/eval/suites/practical15.py gptme/eval/suites/practical11.py gptme/eval/suites/practical4.py gptme/eval/suites/practical19.py gptme/eval/suites/basic.py gptme/eval/suites/practical16.py gptme/eval/suites/practical25.py gptme/eval/suites/practical2.py gptme/eval/suites/practical33.py gptme/eval/suites/practical28.py gptme/eval/__main__.py gptme/eval/dspy/tasks.py gptme/eval/dspy/metrics.py gptme/eval/dspy/hybrid_optimizer.py gptme/eval/dspy/prompt_optimizer.py gptme/eval/dspy/experiments.py gptme/eval/dspy/__init__.py gptme/eval/dspy/__main__.py gptme/eval/dspy/signatures.py gptme/eval/dspy/cli.py gptme/cli/auth.py gptme/cli/main.py gptme/cli/cmd_chats.py gptme/cli/cmd_mcp.py gptme/cli/cmd_agents.py gptme/cli/setup.py gptme/cli/cmd_hooks.py gptme/cli/doctor.py gptme/cli/wut.py gptme/cli/onboard.py gptme/cli/__init__.py gptme/cli/checkpoint.py gptme/cli/cmd_skills.py gptme/cli/util.py gptme/context/compress.py gptme/context/task_analyzer.py gptme/context/adaptive_compressor.py gptme/context/__init__.py gptme/context/config.py gptme/context/selector/file_selector.py gptme/context/selector/hybrid.py gptme/context/selector/rule_based.py gptme/context/selector/file_integration.py gptme/context/selector/file_config.py gptme/context/selector/base.py gptme/context/selector/__init__.py gptme/context/selector/llm_based.py gptme/context/selector/config.py gptme/__version__.py gptme/llm/validate.py gptme/llm/constants.py gptme/llm/llm_anthropic.py gptme/llm/llm_openai_models.py gptme/llm/llm_openai.py gptme/llm/llm_gptme.py gptme/llm/llm_openai_models_deprecated.py gptme/llm/provider_plugins.py gptme/llm/__init__.py gptme/llm/utils.py gptme/llm/llm_openai_subscription.py gptme/llm/llm_anthropic_models_deprecated.py gptme/llm/models/listing.py gptme/llm/models/types.py gptme/llm/models/resolution.py gptme/llm/models/__init__.py gptme/llm/models/data.py gptme/llm/openai_responses.py gptme/plugins/registry.py gptme/plugins/entrypoints.py gptme/plugins/__init__.py gptme/plugins/plugin.py gptme/chat.py gptme/config/cli_setup.py gptme/config/user.py gptme/config/models.py gptme/config/project.py gptme/config/chat.py gptme/config/core.py gptme/config/__init__.py gptme/mcp/registry.py gptme/mcp/client.py gptme/mcp/__init__.py gptme/prompts/context_cmd.py gptme/prompts/templates.py gptme/prompts/chat_history.py gptme/prompts/skills.py gptme/prompts/architect.py gptme/prompts/__init__.py gptme/prompts/workspace.py gptme/__init__.py gptme/info.py gptme/__main__.py gptme/workspace_snapshot.py gptme/message.py gptme/executor.py gptme/telemetry.py gptme/profiles.py gptme/checkpoint.py gptme/tools/choice.py gptme/tools/_browser_thread.py gptme/tools/rag.py gptme/tools/browser.py gptme/tools/chats.py gptme/tools/autocommit.py gptme/tools/elicit.py gptme/tools/shell.py gptme/tools/patch.py gptme/tools/restart.py gptme/tools/subagent/batch.py gptme/tools/subagent/api.py gptme/tools/subagent/types.py gptme/tools/subagent/execution.py gptme/tools/subagent/hooks.py gptme/tools/subagent/__init__.py gptme/tools/complete.py gptme/tools/lessons.py gptme/tools/read.py gptme/tools/computer_transport.py gptme/tools/form.py gptme/tools/_browser_playwright.py gptme/tools/autocompact/decision.py gptme/tools/autocompact/hook.py gptme/tools/autocompact/resume.py gptme/tools/autocompact/scoring.py gptme/tools/autocompact/__init__.py gptme/tools/autocompact/handlers.py gptme/tools/autocompact/engine.py gptme/tools/vision.py gptme/tools/_browser_lynx.py gptme/tools/tmux.py gptme/tools/shell_validation.py gptme/tools/_browser_format.py gptme/tools/mcp_adapter.py gptme/tools/gh.py gptme/tools/base.py gptme/tools/mcp.py gptme/tools/__init__.py gptme/tools/todo.py gptme/tools/shell_background.py gptme/tools/computer.py gptme/tools/morph.py gptme/tools/save.py gptme/tools/_browser_perplexity.py gptme/tools/python.py gptme/tools/screenshot.py gptme/tools/precommit.py gptme/credentials.py gptme/agent/service.py gptme/agent/doctor.py gptme/agent/__init__.py gptme/agent/workspace.py gptme/agent/cli.py gptme/hooks/registry.py gptme/hooks/elicitation.py gptme/hooks/tool_target_instructions.py gptme/hooks/cli_confirm.py gptme/hooks/test.py gptme/hooks/confirm.py gptme/hooks/active_context.py gptme/hooks/auto_confirm.py gptme/hooks/types.py gptme/hooks/cost_awareness.py gptme/hooks/time_awareness.py gptme/hooks/cache_awareness.py gptme/hooks/agents_md_inject.py gptme/hooks/form_autodetect.py gptme/hooks/server_elicit.py gptme/hooks/tests/test_tool_target_instructions.py gptme/hooks/tests/test_time_awareness.py gptme/hooks/tests/test_agents_md_inject.py gptme/hooks/tests/test_workspace_agents.py gptme/hooks/tests/test_markdown_validation.py gptme/hooks/tests/test_confirm.py gptme/hooks/tests/test_token_awareness.py gptme/hooks/tests/test_cache_awareness.py gptme/hooks/tests/test_cli_confirm.py gptme/hooks/tests/test_elicitation.py gptme/hooks/tests/test_active_context.py gptme/hooks/tests/test_server_elicit.py gptme/hooks/tests/test_cost_awareness.py gptme/hooks/tests/test_server_confirm.py gptme/hooks/tests/__init__.py gptme/hooks/tests/test_auto_confirm.py gptme/hooks/tests/test_form_autodetect.py gptme/hooks/tests/test_cwd_awareness.py gptme/hooks/workspace_agents.py gptme/hooks/markdown_validation.py gptme/hooks/server_confirm.py gptme/hooks/__init__.py gptme/hooks/auto_snapshots.py gptme/hooks/cwd_changed.py gptme/hooks/mcp_namespace_hint.py gptme/hooks/token_awareness.py gptme/hooks/cwd_awareness.py gptme/server/app.py gptme/server/api_v2_sessions.py gptme/server/auth.py gptme/server/api_v2.py gptme/server/session_step.py gptme/server/tasks_api.py gptme/server/api_v2_agents.py gptme/server/constants.py gptme/server/workspace_api.py gptme/server/client.py gptme/server/acp_session_runtime.py gptme/server/__init__.py gptme/server/api_v2_common.py gptme/server/__main__.py gptme/server/cli.py gptme/server/openapi_docs.py gptme/server/session_models.py gptme/server/external_sessions.py gptme/session.py gptme/lessons/parser.py gptme/lessons/index.py gptme/lessons/commands.py gptme/lessons/skills/python-repl/python_helpers.py gptme/lessons/installer.py gptme/lessons/__init__.py gptme/lessons/matcher.py gptme/lessons/auto_include.py gptme/lessons/hybrid_matcher.py gptme/logmanager/conversations.py gptme/logmanager/manager.py gptme/logmanager/__init__.py tests/test_tools_browser.py tests/test_util.py tests/test_chats_stats.py tests/test_shell_output_mixing_issue408.py tests/test_browser_github_routing.py tests/test_codeblock.py tests/test_tools_tmux.py tests/test_util_output_storage.py tests/test_eval_trends.py tests/test_dspy_basic.py tests/test_unified_plugins.py tests/test_tools_gh.py tests/test_util_interrupt.py tests/test_tools_todo.py tests/test_auto_naming.py tests/test_dirs.py tests/test_util_cli_models.py tests/test_tools_base.py tests/test_misc_subprocess_timeouts.py tests/test_mcp_discovery.py tests/test_hooks_cost_awareness.py tests/test_prompts.py tests/test_workspace_snapshot.py tests/test_tools_python.py tests/test_server_session_models.py tests/test_agent_workspace_timeouts.py tests/test_eval_practical20.py tests/test_server_workspace.py tests/test_util_cli_providers.py tests/test_server_v2_auto_stepping.py tests/test_cost_tracker.py tests/test_cli_confirm_hook.py tests/test_lessons_integration.py tests/test_eval_practical19.py tests/test_commands.py tests/test_util_generate_name.py tests/test_tools_autocommit.py tests/test_hooks_cwd_changed.py tests/test_tools_lessons.py tests/test_eval_leaderboard.py tests/test_mcp_adapter.py tests/test_agents_md_inject.py tests/test_tools_token_awareness.py tests/test_agent.py tests/test_acp_types.py tests/test_doctor.py tests/test_eval_practical16.py tests/test_eval_swebench.py tests/test_subagent_unit.py tests/test_util_terminal.py tests/test_eval.py tests/test_credentials.py tests/test_util_clipboard_paste.py tests/test_message_command.py tests/test_util_gh_mocked.py tests/test_tools_precommit.py tests/test_util_cost.py tests/test_llm_anthropic.py tests/test_server_cli_fallback.py tests/test_server_elicitation.py tests/test_util_tree.py tests/test_util_hooks.py tests/test_llm_openai.py tests/test_integration_phase4.py tests/test_lessons.py tests/test_tools_morph.py tests/test_tools_time_awareness.py tests/test_cost_cache_cold_warning.py tests/test_shell_background.py tests/test_shell_allowlist_autoconfirm.py tests/test_tools_shell_background.py tests/test_util_cli_skills.py tests/test_prompt_skills_summary.py tests/test_reduce.py tests/test_config.py tests/test_tools_subagent.py tests/test_shell_issue772.py tests/test_eval_practical17.py tests/test_workspace_agents.py tests/test_markdown_validation.py tests/test_server.py tests/test_dspy_gepa.py tests/test_lessons_parser.py tests/test_util_context_dedup.py tests/test_commands_account.py tests/test_tools_shell_multiline.py tests/test_hooks_form_autodetect.py tests/context/test_adaptive_compressor.py tests/context/test_task_analyzer.py tests/test_chats_json.py tests/test_acp_adapter.py tests/test_browser_format.py tests/test_chats_export.py tests/test_workspace_api.py tests/test_prompt_tools.py tests/test_xml_format.py tests/test_tools_complete.py tests/test_eval_claude_code.py tests/test_skill_installer.py tests/test_checkpoint.py tests/test_tools_choice.py tests/test_server_v2_agents.py tests/test_chats_rename.py tests/test_agent_service_timeouts.py tests/test_llm_auth.py tests/test_quota_skip.py tests/test_shell_for_loop_issue724.py tests/test_logmanager.py tests/test_util_install.py tests/test_onboard.py tests/test_acp_stdout.py tests/test_lessons_status.py tests/test_prompt.py tests/test_command_completion.py tests/test_server_cors.py tests/test_hooks_cache_awareness.py tests/test_util_cli_mcp.py tests/test_eval_behavioral.py tests/test_acp_protocol_logging.py tests/test_executor.py tests/test_context_selector.py tests/test_tools_shell.py tests/test_util_keyword_matching.py tests/test_oauth_openrouter.py tests/test_master_context.py tests/test_hooks_server_confirm.py tests/test_server_v2_tool_confirmation.py tests/test_autocompact_scoring.py tests/test_browser_lynx.py tests/test_server_parent_death_watcher.py tests/test_plugins.py tests/test_utils.py tests/test_acp_agent.py tests/test_context.py tests/test_chats_clean.py tests/test_external_sessions.py tests/test_active_context.py tests/test_acp_client.py tests/test_execenv.py tests/test_auto_compact.py tests/test_lessons_auto_include.py tests/test_tools_form.py tests/test_llm_openai_subscription.py tests/test_shell_fd_leak.py tests/test_llm_models.py tests/test_hooks_registry.py tests/test_tools_restart.py tests/test_server_path_traversal.py tests/test_json_output.py tests/test_tools_browser_thread.py tests/test_custom_providers.py tests/test_demo_capture.py tests/test_message.py tests/test_lessons_commands.py tests/test_util_tool_format.py tests/test_util_gh.py tests/test_tool_use.py tests/test_tools_elicit.py tests/test_tools.py tests/test_dspy_integration.py tests/test_tools_patch.py tests/test_tools_screenshot.py tests/test_server_v2_sse.py tests/test_file_selector_integration.py tests/test_prompt_templates.py tests/test_uri.py tests/test_credentials_integration.py tests/test_complete.py tests/test_tool_loading_duplicate.py tests/test_browser.py tests/test_llm_models_resolution.py tests/test_provider_plugins.py tests/test_tools_shell_validation.py tests/test_commands_llm.py tests/test_eval_timeouts.py tests/test_eval_behavioral_solutions.py tests/test_util_export.py tests/test_util_tokens.py tests/test_chat.py tests/test_chat_history.py tests/test_tools_read.py tests/test_setup_completions.py tests/test_mcp.py tests/test_agent_memory.py tests/test_util_cli.py tests/test_tools_computer.py tests/test_util_context_savings.py tests/test_tree.py tests/test_lessons_index.py tests/test_conversations.py tests/test_util_file_storage.py tests/test_session.py tests/test_tools_mcp.py tests/test_swebench_utils.py tests/test_eval_pass_rate_gate.py tests/test_tools_vision.py tests/test_cost_display.py tests/test_hooks_mcp_namespace_hint.py tests/test_git_worktree.py tests/test_lessons_matcher.py tests/test_lessons_tool.py tests/test_server_api_v2_common.py tests/test_ephemeral.py tests/test_package_exports.py tests/test_pdf_to_images.py tests/test_tasks_api.py tests/test_llm_validate.py tests/test_gptme_provider.py tests/test_acp_session_runtime.py tests/test_cwe214_docker_env_leak.py tests/test_server_client.py tests/test_chat_config.py tests/test_hooks.py tests/test_llm_utils.py tests/test_tools_rag.py tests/test_shell_issue729.py tests/test_dspy_hybrid.py tests/test_util_content.py tests/test_screenshot.py tests/test_hybrid_lessons.py tests/test_tools_chats.py tests/test_computer_transport.py tests/test_cost_awareness_delayed_warning.py tests/lessons/test_wildcard_matching.py tests/test_server_auth.py tests/conftest.py tests/test_server_v2_sessions.py tests/test_server_v2_hooks.py tests/test_server_v2.py tests/test_profiles.py tests/test_info.py tests/test_cli.py tests/test_agent_doctor.py tests/test_telemetry.py tests/test_tools_save.py tests/test_eval_practical18.py tests/test_init.py scripts/train/collect.py scripts/eval_trends.py scripts/eval_leaderboard.py scripts/analyze_compression.py scripts/demo_capture.py scripts/check_rst_formatting.py scripts/github_bot.py scripts/auto_rename_logs.py  --by-file --hide-rate --quiet | tail -n +2
---------------------------------------------------------------------------------------------------------------
File                                                                        blank        comment           code
---------------------------------------------------------------------------------------------------------------
tests/test_llm_openai.py                                                      475            247           1872
tests/test_server_v2.py                                                       343            135           1425
gptme/tools/shell.py                                                          248            327           1333
gptme/llm/llm_openai.py                                                       264            276           1257
tests/test_init.py                                                            220            117           1257
gptme/server/api_v2.py                                                        214            166           1198
tests/test_tools_subagent.py                                                  416            225           1193
gptme/util/gh.py                                                              217            245           1161
tests/test_eval_behavioral.py                                                 668            685           1113
tests/test_acp_agent.py                                                       321            184           1075
tests/test_tools_shell.py                                                     340            404           1060
tests/test_util_gh.py                                                         231            125           1059
gptme/acp/agent.py                                                            181            294            983
gptme/hooks/workspace_agents.py                                               187            125            887
tests/test_eval_leaderboard.py                                                126            104            883
tests/test_info.py                                                            167             73            878
gptme/eval/main.py                                                            104            110            864
gptme/llm/llm_anthropic.py                                                    199            256            835
gptme/eval/leaderboard.py                                                     149            485            804
tests/test_util_gh_mocked.py                                                  149            119            777
gptme/eval/suites/basic.py                                                    138             55            715
gptme/hooks/tests/test_workspace_agents.py                                    154             44            708
gptme/cli/main.py                                                             105            109            707
gptme/cli/doctor.py                                                           107             81            703
tests/test_tasks_api.py                                                       166             59            702
tests/test_agent.py                                                           205            112            701
tests/test_tools_browser.py                                                   232             52            697
gptme/cli/util.py                                                             183            112            690
tests/test_tools_gh.py                                                        134             69            675
gptme/server/api_v2_sessions.py                                               119            138            672
tests/test_config.py                                                          196            319            667
gptme/server/session_step.py                                                  150            200            661
tests/test_hooks_registry.py                                                  238             89            640
gptme/eval/dspy/tasks.py                                                      170            374            639
gptme/server/tasks_api.py                                                     186            121            639
tests/test_prompt_templates.py                                                226            147            636
tests/test_acp_session_runtime.py                                             215             76            635
gptme/server/openapi_docs.py                                                  225            156            630
tests/test_llm_utils.py                                                       190            101            625
gptme/tools/mcp_adapter.py                                                    209            215            612
tests/test_server_workspace.py                                                128            130            605
gptme/tools/browser.py                                                        187            263            596
tests/test_doctor.py                                                          161            101            595
gptme/util/context.py                                                         140            207            593
gptme/tools/computer.py                                                       167            225            591
tests/test_llm_anthropic.py                                                   123             42            591
tests/test_tools_lessons.py                                                   135             49            580
tests/test_tools_precommit.py                                                 109             86            578
gptme/cli/setup.py                                                            134             67            576
gptme/tools/base.py                                                           139            185            574
tests/test_llm_models_resolution.py                                           188            129            548
tests/test_auto_compact.py                                                    227            189            543
gptme/logmanager/manager.py                                                   136            177            540
tests/test_server_v2_sessions.py                                              101             77            533
gptme/tools/gh.py                                                             116            127            523
gptme/tools/_browser_playwright.py                                            140            105            518
tests/test_lessons.py                                                         156            153            517
tests/test_hooks_cost_awareness.py                                             72             61            516
gptme/eval/execenv.py                                                          85            146            514
gptme/lessons/installer.py                                                    146            165            495
gptme/eval/run.py                                                              63             88            492
gptme/llm/__init__.py                                                         111            145            491
tests/test_hooks_cache_awareness.py                                           152             44            484
gptme/llm/llm_openai_subscription.py                                          123             92            476
tests/test_llm_auth.py                                                        169             56            476
tests/test_server_session_models.py                                           158            140            466
gptme/tools/computer_transport.py                                             119             75            463
tests/test_skill_installer.py                                                 138            154            459
tests/test_commands.py                                                        144             67            456
tests/test_tools_shell_background.py                                          117             51            456
tests/test_cost_display.py                                                     51             37            455
tests/test_computer_transport.py                                              170             66            449
scripts/analyze_compression.py                                                103             68            446
scripts/demo_capture.py                                                       104             83            445
tests/test_tools_base.py                                                      149             62            440
gptme/server/workspace_api.py                                                  97             89            437
tests/test_util_cli.py                                                        117             64            434
gptme/chat.py                                                                  72             97            422
tests/test_lessons_commands.py                                                157             82            422
tests/test_dirs.py                                                             97             69            421
gptme/eval/dspy/prompt_optimizer.py                                           109             89            420
tests/test_tools_computer.py                                                  163             98            420
tests/context/test_task_analyzer.py                                            90             44            418
tests/test_lessons_parser.py                                                  188            239            417
gptme/util/prompt.py                                                          102            151            410
scripts/github_bot.py                                                          84             79            409
gptme/llm/models/data.py                                                        3             30            405
tests/test_eval.py                                                             95             76            405
gptme/tools/subagent/api.py                                                    69            124            404
tests/test_codeblock.py                                                       302            776            402
gptme/agent/service.py                                                        108            103            400
tests/test_tools_shell_validation.py                                          161             63            399
tests/test_tools_mcp.py                                                       102             20            398
tests/test_chat.py                                                            175            168            396
gptme/agent/cli.py                                                            107            128            395
gptme/message.py                                                               96            131            389
tests/test_server_path_traversal.py                                           100             60            388
gptme/agent/doctor.py                                                          89             43            387
gptme/tools/chats.py                                                           85            101            385
tests/test_lessons_index.py                                                   131            106            385
gptme/tools/tmux.py                                                            95            171            384
gptme/hooks/registry.py                                                        88             78            381
tests/test_util_cli_mcp.py                                                     89             45            380
gptme/util/_telemetry.py                                                      106            136            370
gptme/hooks/tests/test_cost_awareness.py                                       72             45            367
gptme/eval/dspy/cli.py                                                         73             57            364
gptme/cli/cmd_hooks.py                                                        103             72            363
tests/test_profiles.py                                                         84             30            354
tests/test_lessons_matcher.py                                                  99             86            352
gptme/eval/dspy/experiments.py                                                 94             60            350
gptme/agent/workspace.py                                                      120            209            346
gptme/eval/dspy/metrics.py                                                     97             98            345
tests/test_cli.py                                                              95             71            344
gptme/hooks/tests/test_elicitation.py                                          91             45            343
gptme/telemetry.py                                                             86             54            342
tests/test_shell_background.py                                                 99             71            342
tests/test_workspace_api.py                                                    98             19            342
tests/test_unified_plugins.py                                                  94             38            341
gptme/tools/mcp.py                                                            102            102            337
gptme/tools/subagent/execution.py                                              89            130            335
tests/test_eval_trends.py                                                      35             22            335
tests/test_provider_plugins.py                                                 90             32            333
tests/test_eval_behavioral_solutions.py                                       261            770            332
tests/test_workspace_agents.py                                                145             57            329
tests/test_message.py                                                         120            111            328
gptme/hooks/tests/test_agents_md_inject.py                                     63             46            327
gptme/eval/suites/practical.py                                                 35             30            326
tests/test_util_tool_format.py                                                 78             32            322
gptme/checkpoint.py                                                            79             49            320
tests/conftest.py                                                              89             89            319
tests/test_agent_doctor.py                                                     72             34            318
gptme/eval/trends.py                                                           59             31            317
tests/test_mcp_discovery.py                                                    97             39            315
tests/test_mcp_adapter.py                                                     106             54            313
tests/test_hybrid_lessons.py                                                   82             42            311
tests/test_util_hooks.py                                                       82             87            311
tests/test_tools_morph.py                                                      89             66            310
gptme/hooks/tests/test_confirm.py                                             100             59            309
gptme/cli/cmd_chats.py                                                         66             39            302
gptme/mcp/client.py                                                            93            108            299
gptme/util/cost_display.py                                                     61             58            298
tests/context/test_adaptive_compressor.py                                      58             44            298
tests/test_context.py                                                         130             79            297
tests/test_external_sessions.py                                                80             49            296
gptme/info.py                                                                  84             70            293
gptme/hooks/tests/test_tool_target_instructions.py                             58             49            292
tests/test_prompts.py                                                          90             56            292
tests/test_execenv.py                                                          76             54            288
tests/lessons/test_wildcard_matching.py                                       114            125            287
tests/test_server.py                                                          106             71            283
gptme/eval/dspy/hybrid_optimizer.py                                           141            345            282
tests/test_hooks_server_confirm.py                                             78             31            282
gptme/eval/swe_extra/swe_bench_test_spec.py                                    53             29            280
gptme/logmanager/conversations.py                                              60             81            278
gptme/tools/lessons.py                                                        102            109            275
gptme/tools/save.py                                                            61             60            274
tests/test_tools_restart.py                                                    72             49            274
gptme/tools/__init__.py                                                        89             71            273
gptme/tools/shell_validation.py                                                88            121            273
tests/test_server_v2_agents.py                                                 57             25            272
tests/test_tools_complete.py                                                   78             77            271
gptme/tools/patch.py                                                           62             95            270
gptme/tools/shell_background.py                                                65             36            270
gptme/llm/openai_responses.py                                                  63             10            269
gptme/server/external_sessions.py                                              40             25            267
gptme/acp/client.py                                                            66            121            266
gptme/prompts/workspace.py                                                     44             68            261
tests/test_json_output.py                                                      51             52            260
tests/test_tools.py                                                           113             59            259
tests/test_tools_autocommit.py                                                 98             47            258
gptme/cli/cmd_skills.py                                                        71             35            257
tests/test_workspace_snapshot.py                                               86             38            257
gptme/plugins/__init__.py                                                      85            119            256
gptme/llm/models/listing.py                                                    62             56            255
tests/test_llm_models.py                                                       90             63            255
tests/test_context_selector.py                                                 83             45            254
gptme/hooks/tests/test_form_autodetect.py                                      73             25            253
tests/test_eval_claude_code.py                                                 66             27            253
tests/test_lessons_integration.py                                              97             66            252
gptme/eval/suites/practical16.py                                               64            100            251
gptme/llm/models/resolution.py                                                 59             64            250
tests/test_util_cli_providers.py                                               60             27            250
tests/test_prompt_tools.py                                                     57             30            249
gptme/llm/llm_openai_models.py                                                  6             33            248
gptme/codeblock.py                                                             37            143            247
tests/test_tools_browser_thread.py                                             69             38            245
tests/test_ephemeral.py                                                        78             39            244
gptme/commands/llm.py                                                          54             51            243
gptme/prompts/__init__.py                                                      52             93            242
tests/test_agents_md_inject.py                                                 43             37            241
tests/test_complete.py                                                         56             40            241
gptme/tools/python.py                                                          74             90            239
tests/test_mcp.py                                                              68             59            239
gptme/context/task_analyzer.py                                                100            124            237
tests/test_auto_naming.py                                                      69             45            237
gptme/commands/meta.py                                                         54             20            236
gptme/lessons/index.py                                                         90            133            235
tests/test_conversations.py                                                    35             25            235
gptme/profiles.py                                                              64             67            233
gptme/context/adaptive_compressor.py                                           76            130            232
gptme/tools/todo.py                                                            95            109            232
tests/test_hooks.py                                                           114             46            232
gptme/tools/precommit.py                                                       70             96            229
gptme/cli/onboard.py                                                           67             59            224
gptme/hooks/tests/test_token_awareness.py                                      37             28            224
gptme/util/auto_naming.py                                                      68             78            224
gptme/eval/swebench/main.py                                                    32             23            223
gptme/eval/suites/practical6.py                                                56             46            221
gptme/lessons/parser.py                                                        73            117            221
tests/test_browser.py                                                          96             53            221
gptme/config/user.py                                                           68             56            220
gptme/prompts/templates.py                                                     57             93            219
gptme/hooks/tests/test_cli_confirm.py                                          75             23            218
gptme/lessons/hybrid_matcher.py                                                85            112            218
gptme/util/_sound_sounddevice.py                                               57             50            218
tests/test_util_keyword_matching.py                                            75             46            218
gptme/mcp/registry.py                                                          59             70            216
tests/test_lessons_tool.py                                                     62             34            216
gptme/config/models.py                                                         76             69            215
tests/test_logmanager.py                                                       66             57            215
gptme/eval/swe_extra/swe_bench_extra_data.py                                   69             51            213
gptme/hooks/elicitation.py                                                     90            132            213
gptme/lessons/commands.py                                                      91             48            213
tests/test_checkpoint.py                                                       88             20            211
tests/test_autocompact_scoring.py                                              86             39            208
tests/test_tools_read.py                                                       72             29            208
gptme/workspace_snapshot.py                                                    37             41            207
tests/test_executor.py                                                         50             31            206
gptme/hooks/cost_awareness.py                                                  65             73            205
tests/test_oauth_openrouter.py                                                 62              9            205
tests/test_plugins.py                                                          82             70            203
tests/test_tools_screenshot.py                                                 55             48            203
tests/test_util_file_storage.py                                                51             36            203
gptme/cli/auth.py                                                              47             28            202
gptme/tools/autocompact/engine.py                                              41             58            202
tests/test_chats_json.py                                                       30             17            202
gptme/eval/suites/practical7.py                                                57             81            201
gptme/server/session_models.py                                                 57             69            201
gptme/util/sound.py                                                            65             72            200
tests/test_tool_use.py                                                         38             43            200
gptme/hooks/auto_snapshots.py                                                  51             66            199
tests/test_subagent_unit.py                                                    45             20            199
gptme/hooks/tests/test_active_context.py                                       37             29            198
gptme/eval/suites/behavioral/__init__.py                                        9             11            197
gptme/server/cli.py                                                            37             39            197
tests/test_server_v2_auto_stepping.py                                          45             45            197
gptme/config/chat.py                                                           41             46            196
gptme/hooks/tests/test_server_elicit.py                                        58             23            196
gptme/hooks/__init__.py                                                        20             42            194
tests/test_tools_save.py                                                       57             36            193
gptme/eval/suites/practical8.py                                                68             62            191
tests/test_chats_clean.py                                                      46             18            191
gptme/eval/agents/claude_code.py                                               41             33            187
gptme/hooks/tests/test_server_confirm.py                                       48             32            186
gptme/eval/suites/practical14.py                                               64             52            185
gptme/tools/morph.py                                                           43             47            185
tests/test_chats_stats.py                                                      63             27            184
gptme/eval/swebench/evaluate.py                                                35             41            183
gptme/context/selector/file_selector.py                                        50             61            179
tests/test_dspy_hybrid.py                                                      65             45            179
gptme/tools/autocompact/resume.py                                              50             74            178
gptme/tools/read.py                                                            41             49            177
tests/test_dspy_basic.py                                                       66             44            177
gptme/eval/suites/practical4.py                                                47             24            176
tests/test_hooks_cwd_changed.py                                                55             24            176
gptme/llm/validate.py                                                          30             29            174
tests/test_tools_todo.py                                                       81             65            173
tests/test_chats_export.py                                                     48             17            172
gptme/eval/suites/practical10.py                                               55             65            171
tests/test_acp_types.py                                                        35             12            171
tests/test_tools_patch.py                                                      91            214            171
gptme/commands/session.py                                                      58             47            170
tests/test_server_v2_hooks.py                                                  70             59            170
tests/test_llm_openai_subscription.py                                          37              9            169
gptme/hooks/cache_awareness.py                                                118            186            168
gptme/oauth/openrouter.py                                                      48             43            168
tests/test_util_terminal.py                                                    52             34            168
tests/test_tools_elicit.py                                                     50             25            167
tests/test_tree.py                                                             59             37            167
gptme/server/acp_session_runtime.py                                            34             30            165
tests/test_util_cli_skills.py                                                  63             42            165
gptme/eval/suites/practical2.py                                                46             18            164
gptme/server/auth.py                                                           57             80            160
tests/test_acp_protocol_logging.py                                             56             15            160
gptme/llm/utils.py                                                             56             84            159
tests/test_acp_client.py                                                       64             34            159
gptme/eval/suites/practical3.py                                                27             19            158
gptme/tools/subagent/__init__.py                                               31            134            158
tests/test_acp_stdout.py                                                       76             37            158
tests/test_uri.py                                                              55             30            158
gptme/tools/_browser_thread.py                                                 27             12            156
tests/test_commands_account.py                                                 37              6            156
gptme/util/__init__.py                                                         34             29            155
gptme/util/reduce.py                                                           45             45            155
tests/test_tools_time_awareness.py                                             52             34            155
gptme/eval/suites/practical15.py                                               65             92            154
tests/test_cost_tracker.py                                                     21             24            154
tests/test_shell_allowlist_autoconfirm.py                                      38             38            154
tests/test_tools_tmux.py                                                       69             63            154
gptme/init.py                                                                  33             39            153
gptme/hooks/cli_confirm.py                                                     50             54            152
gptme/tools/autocompact/scoring.py                                             53             89            152
gptme/commands/account.py                                                      45             20            151
gptme/eval/suites/behavioral/add_deprecation_warning.py                        73            138            151
gptme/eval/suites/practical9.py                                                69             76            151
gptme/llm/llm_openai_models_deprecated.py                                       5             13            151
gptme/tools/rag.py                                                             62             74            151
gptme/util/tool_format.py                                                      48             75            151
tests/test_util_tree.py                                                        44             33            151
gptme/eval/agents/swebench.py                                                  26             22            150
gptme/tools/restart.py                                                         51             81            150
tests/test_server_api_v2_common.py                                             46             46            150
gptme/acp/__main__.py                                                          58             70            149
gptme/server/client.py                                                         63             79            149
tests/test_util_install.py                                                     34             31            148
gptme/eval/agents/__init__.py                                                  24             15            147
gptme/util/clipboard.py                                                        22             12            147
scripts/check_rst_formatting.py                                                41             52            147
tests/test_master_context.py                                                   39             24            147
tests/test_reduce.py                                                           42             41            146
gptme/tools/form.py                                                            38             55            145
tests/test_file_selector_integration.py                                        50             23            145
gptme/commands/checkpoint.py                                                   21              4            143
tests/test_gptme_provider.py                                                   66             20            143
tests/test_util_tokens.py                                                      72             35            143
gptme/hooks/token_awareness.py                                                 44             50            142
gptme/cli/cmd_mcp.py                                                           41             14            140
gptme/hooks/types.py                                                           74            112            139
tests/test_dspy_integration.py                                                 54             32            139
gptme/eval/suites/practical5.py                                                67             80            138
tests/test_tools_vision.py                                                     36             31            138
tests/test_server_elicitation.py                                               47             17            137
tests/test_util_cli_models.py                                                  15             11            137
tests/test_util_content.py                                                     49             25            137
gptme/hooks/agents_md_inject.py                                                36             59            136
gptme/lessons/auto_include.py                                                  50             59            136
gptme/tools/elicit.py                                                          36            109            135
gptme/eval/swebench/utils.py                                                   29             10            134
gptme/server/api_v2_common.py                                                  75             62            133
gptme/hooks/tool_target_instructions.py                                        34             48            132
gptme/eval/suites/practical17.py                                               64            137            131
tests/test_agent_workspace_timeouts.py                                         41             22            129
gptme/tools/subagent/types.py                                                  47             65            128
tests/test_acp_adapter.py                                                      42             33            128
tests/test_cwe214_docker_env_leak.py                                           42             41            128
gptme/hooks/tests/test_markdown_validation.py                                  29             21            127
gptme/llm/llm_gptme.py                                                         47             58            127
tests/test_lessons_auto_include.py                                             38             27            127
gptme/commands/base.py                                                         54             58            126
gptme/config/cli_setup.py                                                      22             38            126
gptme/eval/suites/practical21.py                                               76            184            126
tests/test_active_context.py                                                   41             22            126
tests/test_eval_pass_rate_gate.py                                              38              1            126
tests/test_tools_token_awareness.py                                            59             47            126
gptme/hooks/tests/test_cache_awareness.py                                      47             34            125
gptme/tools/complete.py                                                        34             45            125
tests/test_util_context_dedup.py                                               61             43            125
tests/test_tools_python.py                                                     56             19            124
gptme/eval/suites/behavioral/handle_specific_exception.py                      15              8            123
gptme/hooks/form_autodetect.py                                                 48             65            123
tests/test_prompt.py                                                           36             36            123
gptme/commands/export.py                                                       31             21            122
gptme/eval/suites/practical11.py                                               53             26            122
gptme/eval/suites/practical12.py                                               56             49            122
gptme/hooks/server_confirm.py                                                  51             58            122
tests/test_util_interrupt.py                                                   48             38            121
tests/test_integration_phase4.py                                               22             19            119
gptme/eval/suites/practical20.py                                               77            190            118
tests/test_cost_cache_cold_warning.py                                          33              8            118
tests/test_util_clipboard_paste.py                                             27             14            117
gptme/eval/suites/behavioral/add_type_hints.py                                 40             97            116
gptme/tools/autocompact/hook.py                                                40             48            116
tests/test_agent_service_timeouts.py                                           19             18            116
tests/test_llm_validate.py                                                     26             20            116
gptme/config/core.py                                                           40             33            115
gptme/llm/models/types.py                                                      49             60            115
gptme/plugins/registry.py                                                      40             32            115
scripts/auto_rename_logs.py                                                    34             23            115
gptme/eval/suites/practical18.py                                               52            117            114
gptme/server/api_v2_agents.py                                                  25             17            114
tests/test_misc_subprocess_timeouts.py                                         43             27            114
gptme/hooks/server_elicit.py                                                   52             56            113
tests/test_lessons_status.py                                                   67             96            113
tests/test_chats_rename.py                                                     42             17            112
gptme/util/export.py                                                           26             29            111
tests/test_eval_swebench.py                                                    39             32            111
gptme/hooks/confirm.py                                                         53             88            109
gptme/hooks/tests/test_time_awareness.py                                       36             11            109
gptme/util/cost_tracker.py                                                     43             62            109
tests/test_cost_awareness_delayed_warning.py                                   42             32            108
gptme/dirs.py                                                                  45             35            107
gptme/eval/suites/practical29.py                                               69            129            107
tests/test_server_v2_tool_confirmation.py                                      32             32            107
gptme/eval/suites/practical28.py                                               66            155            106
gptme/cli/checkpoint.py                                                        23             14            105
gptme/eval/suites/behavioral/implement_lru_cache.py                            56            101            105
gptme/eval/suites/practical13.py                                               47             47            105
gptme/eval/suites/practical19.py                                               58            133            105
gptme/eval/suites/behavioral/implement_event_emitter.py                        48             94            104
gptme/eval/suites/practical22.py                                               76            174            104
scripts/train/collect.py                                                       35             52            104
gptme/lessons/matcher.py                                                       35             47            103
gptme/tools/choice.py                                                          32             38            103
tests/test_util_cost.py                                                        21             19            103
tests/test_util_output_storage.py                                              23             13            103
gptme/eval/suites/practical23.py                                               75            190            102
gptme/eval/suites/practical30.py                                               68            110            102
tests/test_git_worktree.py                                                     31             19            102
gptme/eval/suites/practical25.py                                               70            147            101
gptme/eval/suites/practical27.py                                               70            154            101
gptme/eval/suites/practical33.py                                               68            109            101
gptme/eval/suites/behavioral/refactor_for_testability.py                       22             45            100
gptme/eval/suites/practical32.py                                               70            134            100
gptme/hooks/active_context.py                                                  25             23            100
tests/test_command_completion.py                                               33             23            100
tests/test_hooks_mcp_namespace_hint.py                                         30             14            100
gptme/eval/suites/practical24.py                                               78            204             99
gptme/eval/suites/practical26.py                                               72            162             99
gptme/eval/suites/practical31.py                                               69            112             99
gptme/eval/suites/behavioral/implement_priority_queue.py                       61            109             98
gptme/eval/suites/behavioral/optimize_n_squared.py                             31             43             96
tests/test_session.py                                                          40             21             95
gptme/tools/screenshot.py                                                      25             29             94
gptme/prompts/chat_history.py                                                  34             27             91
tests/test_tools_choice.py                                                     47             24             91
gptme/acp/types.py                                                             25             13             90
tests/test_agent_memory.py                                                     26             17             90
tests/test_browser_lynx.py                                                     35             15             90
gptme/eval/tbench/run.py                                                       16             12             89
gptme/util/ask_execute.py                                                      25             40             89
tests/test_swebench_utils.py                                                   27              2             89
gptme/eval/suites/behavioral/circuit_breaker.py                                53            118             87
gptme/util/tree.py                                                             21             15             87
gptme/tools/autocompact/decision.py                                            34             48             86
tests/test_browser_github_routing.py                                           27              0             86
gptme/commands/__init__.py                                                     15             21             85
gptme/eval/suites/behavioral/implement_memoization.py                          50            112             85
gptme/hooks/time_awareness.py                                                  29             31             84
tests/test_server_auth.py                                                      40             19             84
gptme/eval/suites/behavioral/validate_user_input.py                            33             55             83
gptme/util/git_worktree.py                                                     25             33             83
gptme/__version__.py                                                           17              5             82
gptme/eval/suites/behavioral/add_docstrings.py                                 47            103             82
gptme/eval/suites/behavioral/add_feature_preserve_default.py                   27             40             82
gptme/tools/autocommit.py                                                      37             58             80
tests/test_prompt_skills_summary.py                                            44             44             80
gptme/cli/cmd_agents.py                                                        19             14             79
gptme/eval/swe_extra/run_swe_extra.py                                          16             14             79
tests/test_onboard.py                                                          17             17             79
gptme/eval/suites/behavioral/rate_limiting.py                                  52            118             78
tests/test_util.py                                                             42             85             78
gptme/util/context_savings.py                                                  20              6             77
tests/test_eval_timeouts.py                                                    32             33             77
gptme/context/compress.py                                                      63            131             76
gptme/eval/types.py                                                            27             31             75
tests/test_markdown_validation.py                                              43             34             75
tests/test_shell_issue729.py                                                   50             52             75
gptme/eval/suites/behavioral/retry_with_backoff.py                             30             49             74
gptme/hooks/tests/test_cwd_awareness.py                                        13             12             74
tests/test_custom_providers.py                                                 32             44             74
gptme/prompt_queue.py                                                          30              5             73
gptme/tools/vision.py                                                          25             14             73
tests/test_shell_issue772.py                                                   48             47             73
tests/test_chat_config.py                                                      24             19             72
gptme/util/output_storage.py                                                   29             37             71
gptme/llm/llm_anthropic_models_deprecated.py                                    5             11             70
gptme/session.py                                                               39             64             70
gptme/config/project.py                                                        23             28             69
gptme/context/selector/llm_based.py                                            32             38             69
gptme/util/generate_name.py                                                     5              6             69
tests/test_hooks_form_autodetect.py                                            22             34             68
gptme/prompts/context_cmd.py                                                   11             12             67
tests/test_tools_form.py                                                       22             19             67
gptme/eval/swe_extra/swe_bench_constants.py                                     9              9             66
gptme/util/master_context.py                                                   28             38             66
tests/test_util_context_savings.py                                             12              0             66
gptme/eval/suites/behavioral/fix_mutable_default.py                            31             57             65
gptme/eval/tbench/agent.py                                                     20             24             65
gptme/config/__init__.py                                                        6             15             63
gptme/eval/filestore.py                                                        11              8             63
gptme/lessons/skills/python-repl/python_helpers.py                             28             26             63
gptme/eval/suites/__init__.py                                                  22             18             62
gptme/eval/suites/behavioral/test_driven_error_handling.py                     35             56             62
gptme/eval/suites/init_projects.py                                             21              1             62
gptme/server/app.py                                                            23             27             62
gptme/util/_sound_cmd.py                                                       22             17             62
gptme/eval/suites/behavioral/add_logging.py                                    27             39             61
gptme/llm/models/__init__.py                                                    3             12             60
gptme/tools/_browser_lynx.py                                                   12             12             60
gptme/tools/_browser_perplexity.py                                             22             16             60
gptme/util/tokens.py                                                           20             20             60
tests/test_server_cors.py                                                      27             13             60
tests/test_shell_output_mixing_issue408.py                                     25             29             60
gptme/context/selector/rule_based.py                                           20             13             59
gptme/eval/pass_rate_gate.py                                                   17             36             59
gptme/eval/suites/behavioral/merge_conflict_resolution.py                      31             63             59
gptme/eval/suites/behavioral/noisy_worktree_fix.py                             45             77             59
gptme/eval/suites/behavioral/scope_discipline_bugfix.py                        37             52             59
gptme/util/uri.py                                                              29             42             59
tests/test_eval_practical20.py                                                 27              8             59
tests/test_server_client.py                                                    33             26             59
gptme/eval/suites/behavioral/fix_data_mutation.py                              26             44             58
gptme/eval/suites/behavioral/fix_security_path_traversal.py                    23             31             58
gptme/prompts/skills.py                                                        16             10             58
gptme/eval/dspy/signatures.py                                                  19             21             56
gptme/eval/suites/behavioral/extract_function_refactor.py                      30             52             56
tests/test_chat_history.py                                                     14             12             56
gptme/context/selector/file_integration.py                                     13             10             55
gptme/eval/suites/behavioral/write_test_suite.py                               24             33             55
gptme/tools/autocompact/handlers.py                                            19              9             55
gptme/hooks/cwd_changed.py                                                     15             11             54
gptme/hooks/mcp_namespace_hint.py                                              21             24             54
gptme/credentials.py                                                           16              7             53
gptme/tools/subagent/batch.py                                                  26             47             53
gptme/util/context_dedup.py                                                    41             93             53
gptme/util/terminal.py                                                         28             23             53
tests/test_eval_practical17.py                                                 33              3             53
tests/test_eval_practical18.py                                                 23              4             53
tests/test_eval_practical19.py                                                 23              6             53
gptme/hooks/markdown_validation.py                                             36             41             51
tests/test_tools_chats.py                                                      16             13             51
gptme/eval/suites/behavioral/remove_dead_code.py                               40             63             50
tests/test_server_v2_sse.py                                                    15             13             50
gptme/eval/suites/behavioral/multi_file_rename.py                              27             42             49
gptme/eval/suites/behavioral/use_existing_helper.py                            32             45             49
gptme/eval/swebench/info.py                                                     8              3             49
gptme/llm/provider_plugins.py                                                  39             35             48
gptme/eval/suites/behavioral/git_selective_commit.py                           21             52             47
gptme/util/cost.py                                                             12              9             47
tests/test_dspy_gepa.py                                                        18              9             46
gptme/eval/suites/behavioral/debug_data_pipeline.py                            30             61             45
tests/test_demo_capture.py                                                     19              9             45
tests/test_util_generate_name.py                                               17             10             45
tests/test_pdf_to_images.py                                                    13             13             43
gptme/eval/suites/behavioral/stage_new_files.py                                12             18             42
gptme/plugins/entrypoints.py                                                   15             13             42
tests/test_server_cli_fallback.py                                              16             12             42
gptme/context/selector/file_config.py                                          10              8             41
tests/test_xml_format.py                                                       19             68             41
gptme/logmanager/__init__.py                                                    3              9             40
gptme/util/file_storage.py                                                     30             47             40
gptme/context/selector/hybrid.py                                               14             16             39
gptme/tools/subagent/hooks.py                                                  19             25             39
gptme/util/keyword_matching.py                                                 35             66             39
tests/test_shell_fd_leak.py                                                    23             16             39
tests/test_telemetry.py                                                        23             20             38
tests/test_utils.py                                                            14             17             38
gptme/tools/autocompact/__init__.py                                             3             12             37
gptme/cli/wut.py                                                               13             12             36
tests/test_server_parent_death_watcher.py                                      14              9             36
tests/test_util_export.py                                                      20             11             36
gptme/eval/suites/behavioral/iterative_debug.py                                28             39             35
tests/test_message_command.py                                                  13             12             35
tests/test_cli_confirm_hook.py                                                 24             20             34
tests/test_commands_llm.py                                                      7              0             34
tests/test_credentials.py                                                      16              0             34
tests/test_tools_rag.py                                                        15              8             34
gptme/context/__init__.py                                                       8              8             33
gptme/hooks/test.py                                                            12              5             33
tests/test_shell_for_loop_issue724.py                                          16             24             33
gptme/eval/suites/behavioral/_common.py                                         9              5             32
gptme/hooks/tests/test_auto_confirm.py                                         12              4             32
gptme/context/selector/__init__.py                                             12             16             31
gptme/util/content.py                                                          18             24             30
gptme/util/install.py                                                          13             25             30
tests/test_package_exports.py                                                  10              3             29
gptme/eval/swebench/__init__.py                                                 1              0             28
gptme/hooks/cwd_awareness.py                                                   11             17             28
tests/test_eval_practical16.py                                                 11              0             28
gptme/constants.py                                                             19             25             27
gptme/util/useredit.py                                                         11             13             26
tests/test_quota_skip.py                                                        5              3             26
gptme/acp/adapter.py                                                           19             22             25
gptme/executor.py                                                              18             26             24
gptme/hooks/auto_confirm.py                                                    11              9             24
tests/test_tool_loading_duplicate.py                                           16             15             24
gptme/context/selector/base.py                                                 14             23             23
gptme/util/interrupt.py                                                        13             15             23
gptme/__init__.py                                                               6              0             22
tests/test_credentials_integration.py                                           8              0             22
tests/test_setup_completions.py                                                 9              6             22
gptme/acp/__init__.py                                                           5             13             21
gptme/context/selector/config.py                                                8              8             21
gptme/agent/__init__.py                                                         3              6             19
gptme/context/config.py                                                        12             25             19
tests/test_tools_shell_multiline.py                                             7             19             19
gptme/lessons/__init__.py                                                       7             15             18
tests/test_browser_format.py                                                    8              6             18
gptme/eval/suites/browser.py                                                    5              0             17
gptme/plugins/plugin.py                                                        25             39             17
gptme/cli/__init__.py                                                          10             13             15
tests/test_screenshot.py                                                        9              6             15
gptme/mcp/__init__.py                                                           1              0             14
gptme/__main__.py                                                               2              0             12
gptme/prompts/architect.py                                                     26             52             11
gptme/server/constants.py                                                       7             11              9
gptme/eval/tbench/__init__.py                                                  13             22              8
gptme/eval/dspy/__init__.py                                                     6              6              7
gptme/eval/cost.py                                                             12             24              6
gptme/llm/constants.py                                                          2              6              5
scripts/eval_trends.py                                                          2              1              5
gptme/eval/__init__.py                                                          2              2              4
scripts/eval_leaderboard.py                                                     2              1              4
gptme/eval/__main__.py                                                          1              0              3
gptme/eval/dspy/__main__.py                                                     3              5              3
gptme/eval/swebench/__main__.py                                                 1              0              3
gptme/server/__init__.py                                                        2              3              3
gptme/server/__main__.py                                                        1              0              3
gptme/tools/_browser_format.py                                                  3              5              3
gptme/oauth/__init__.py                                                         1              4              0
---------------------------------------------------------------------------------------------------------------
SUM:                                                                        39310          38162         135916
---------------------------------------------------------------------------------------------------------------
make[2]: Leaving directory '/home/runner/work/gptme/gptme'

Code Metrics#

$ make metrics
make[2]: Entering directory '/home/runner/work/gptme/gptme'
=== Code Metrics Summary ===

Project Overview:
  Files: 613
  Total blocks: 11051
  Average complexity: 3.6114378789249844

Most Complex Functions (D+):
  gptme/util/tool_format.py
      F 104:0 format_tools_list - D
  gptme/util/prompt.py
      M 294:4 GptmeCompleter.get_completions - D
  gptme/util/_telemetry.py
      F 284:0 init_telemetry - D
  gptme/util/gh.py
      F 978:0 get_github_run_logs - D
      F 1161:0 search_github_issues - D
      F 1267:0 search_github_prs - D
      F 1369:0 merge_github_pr - D
  gptme/util/context.py
      F 462:0 include_paths - E
      F 809:0 _resource_to_codeblock - E
  gptme/util/cost_display.py
      F 280:0 display_costs - D
  gptme/commands/llm.py
      F 129:0 cmd_tools - D
      F 212:0 cmd_context - D
  gptme/commands/meta.py
      F 140:0 cmd_plugin - E
  gptme/commands/checkpoint.py
      F 43:0 cmd_checkpoint - D
  gptme/acp/agent.py
      M 521:4 GptmeAgent.new_session - D
      M 951:4 GptmeAgent.prompt - D
  gptme/codeblock.py
  gptme/eval/leaderboard.py
      F 915:0 compute_rate_trends - D
      F 679:0 aggregate_per_test - D
  gptme/eval/main.py
  gptme/eval/trends.py
      F 157:0 compute_diff - D
  gptme/eval/run.py
      F 286:0 execute - D
  gptme/eval/suites/practical16.py
      F 68:0 check_queue_all_producers_mentioned - D
  gptme/eval/dspy/hybrid_optimizer.py
      C 239:0 TaskComplexity - D
      M 283:4 TaskComplexity.analyze - D
  gptme/cli/main.py
  gptme/cli/cmd_agents.py
      F 25:0 run_scan - D
  gptme/cli/cmd_hooks.py
      F 265:0 run - D
  gptme/cli/cmd_skills.py
      F 17:0 skills_list - D
  gptme/cli/util.py
      F 725:0 models_test - D
  gptme/context/selector/file_selector.py
  gptme/context/selector/rule_based.py
      M 27:4 RuleBasedSelector.select - D
  gptme/llm/llm_anthropic.py
      F 1146:0 _prepare_messages_for_api - D
  gptme/llm/llm_openai.py
      F 705:0 chat - E
      F 327:0 init - E
      F 928:0 _stream_responses - D
      F 1078:0 stream - D
      F 1422:0 _transform_msgs_for_special_provider - D
      F 514:0 _handle_openai_transient_error - D
  gptme/llm/__init__.py
      F 422:0 _reply_stream - E
  gptme/llm/llm_openai_subscription.py
      F 500:0 stream - D
  gptme/llm/models/listing.py
      F 276:0 list_models - D
  gptme/llm/models/resolution.py
      F 164:0 get_model - E
  gptme/plugins/__init__.py
      F 154:0 _load_plugin - D
  gptme/chat.py
      F 311:0 _process_message_conversation - D
      F 174:0 _run_chat_loop - D
  gptme/config/cli_setup.py
  gptme/config/core.py
      M 61:4 Config.mcp - D
  gptme/prompts/chat_history.py
      F 20:0 prompt_chat_history - E
  gptme/prompts/__init__.py
      F 112:0 get_prompt - E
  gptme/prompts/workspace.py
  gptme/info.py
      F 335:0 format_version_info - D
  gptme/telemetry.py
      F 287:0 record_llm_request - E
  gptme/tools/chats.py
  gptme/tools/shell.py
      M 705:4 ShellSession._read_output_unix - E
      F 1229:0 _format_shell_output - E
      M 546:4 ShellSession._read_output_windows - D
      M 413:4 ShellSession._run_pipe - D
      F 1488:0 execute_shell - D
  gptme/tools/subagent/api.py
      F 34:0 subagent - D
  gptme/tools/subagent/execution.py
      F 97:0 _create_subagent_thread - D
  gptme/tools/lessons.py
      F 244:0 auto_include_lessons_hook - D
  gptme/tools/autocompact/engine.py
  gptme/tools/tmux.py
      F 405:0 execute_tmux - D
  gptme/tools/gh.py
      F 549:0 execute_gh - E
      F 99:0 _wait_for_checks - D
  gptme/tools/mcp.py
  gptme/tools/__init__.py
      F 132:0 init_tools - D
  gptme/tools/shell_background.py
      M 56:4 BackgroundJob._read_output - D
  gptme/tools/computer.py
      F 580:0 computer - E
  gptme/agent/doctor.py
      F 337:0 check_lessons - E
  gptme/hooks/registry.py
      M 112:4 HookRegistry.trigger - D
  gptme/hooks/tool_target_instructions.py
      F 64:0 _extract_paths - D
  gptme/hooks/cli_confirm.py
      F 162:0 _looks_like_diff - D
  gptme/hooks/token_awareness.py
      F 88:0 add_token_usage_warning - D
  gptme/server/api_v2_sessions.py
      F 246:0 api_conversation_step - E
      F 483:0 api_conversation_tool_confirm - D
  gptme/server/api_v2.py
      F 748:0 api_conversation_edit_message - E
      F 451:0 api_conversation_put - D
  gptme/server/session_step.py
      F 512:0 step - E
  gptme/server/tasks_api.py
      F 380:0 get_git_status - D
  gptme/server/openapi_docs.py
      F 760:0 _convert_to_openapi_nullable - D
  gptme/lessons/parser.py
      F 265:0 parse_lesson - D
  gptme/lessons/index.py
      M 96:4 LessonIndex._default_dirs - E
  gptme/lessons/installer.py
      F 239:0 install_skill - E
      F 506:0 check_dependencies - D
  tests/test_server_v2_auto_stepping.py
      F 16:0 test_auto_stepping - E
  tests/test_config.py
      F 540:0 test_project_config_loaded_from_toml - D
      F 577:0 test_project_config_loaded_from_json - D
  tests/test_eval_behavioral_solutions.py
      F 54:0 _apply_solution - E
  tests/test_util_cli.py
      F 181:0 test_tools_list - D
      F 261:0 test_models_list - D
  scripts/demo_capture.py
      F 485:0 main - D
  scripts/check_rst_formatting.py
      F 26:0 check_file - E
  scripts/auto_rename_logs.py
      F 32:0 auto_rename_logs - D

Largest Files (>300 SLOC):
  1875 tests/test_llm_openai.py
  1737 tests/test_eval_behavioral.py
  1426 gptme/tools/shell.py
  1425 tests/test_server_v2.py
  1269 tests/test_tools_shell.py
  1258 gptme/llm/llm_openai.py
  1257 tests/test_init.py
  1198 gptme/server/api_v2.py
  1193 tests/test_tools_subagent.py
  1178 gptme/util/gh.py
  1174 gptme/eval/leaderboard.py
  1075 tests/test_acp_agent.py
  1059 tests/test_util_gh.py
  1023 tests/test_eval_behavioral_solutions.py
   983 gptme/acp/agent.py
   947 gptme/eval/dspy/tasks.py
   902 tests/test_config.py
   889 tests/test_eval_leaderboard.py
   888 gptme/hooks/workspace_agents.py
   878 tests/test_info.py
   869 tests/test_codeblock.py
   866 gptme/eval/main.py
   837 gptme/llm/llm_anthropic.py
   784 tests/test_util_gh_mocked.py
   737 gptme/cli/main.py
   715 gptme/eval/suites/basic.py
   708 gptme/hooks/tests/test_workspace_agents.py
   703 gptme/cli/doctor.py
   702 tests/test_tasks_api.py
   701 tests/test_agent.py
   697 tests/test_tools_browser.py
   694 gptme/cli/util.py
   678 gptme/tools/browser.py
   675 tests/test_tools_gh.py
   675 gptme/server/api_v2_sessions.py
   661 gptme/server/session_step.py
   654 gptme/server/openapi_docs.py
   647 gptme/tools/computer.py
   640 tests/test_hooks_registry.py
   639 gptme/server/tasks_api.py
   636 tests/test_prompt_templates.py
   635 tests/test_acp_session_runtime.py
   625 tests/test_llm_utils.py
   615 gptme/util/context.py
   612 tests/test_lessons.py
   612 gptme/tools/mcp_adapter.py
   605 tests/test_server_workspace.py
   595 tests/test_doctor.py
   592 tests/test_llm_anthropic.py
   592 gptme/tools/gh.py
   585 gptme/cli/setup.py
   580 tests/test_tools_lessons.py
   580 tests/test_auto_compact.py
   580 gptme/tools/base.py
   578 tests/test_tools_precommit.py
   576 tests/test_lessons_parser.py
   573 tests/test_skill_installer.py
   548 tests/test_llm_models_resolution.py
   541 gptme/logmanager/manager.py
   535 tests/test_server_v2_sessions.py
   533 gptme/tools/_browser_playwright.py
   526 gptme/eval/execenv.py
   516 tests/test_hooks_cost_awareness.py
   513 gptme/lessons/installer.py
   498 gptme/llm/llm_openai_subscription.py
   493 gptme/eval/run.py
   491 gptme/llm/__init__.py
   484 tests/test_hooks_cache_awareness.py
   476 tests/test_llm_auth.py
   472 tests/test_tools_base.py
   471 gptme/tools/tmux.py
   466 tests/test_server_session_models.py
   463 gptme/tools/computer_transport.py
   456 tests/test_tools_shell_background.py
   456 tests/test_cost_display.py
   456 tests/test_commands.py
   451 scripts/demo_capture.py
   449 tests/test_computer_transport.py
   445 scripts/analyze_compression.py
   441 tests/test_chat.py
   437 gptme/server/workspace_api.py
   434 tests/test_util_cli.py
   433 gptme/llm/models/data.py
   432 tests/test_tools_computer.py
   430 gptme/util/prompt.py
   424 tests/test_eval.py
   422 tests/test_lessons_commands.py
   422 gptme/chat.py
   421 tests/test_dirs.py
   421 gptme/eval/dspy/prompt_optimizer.py
   419 gptme/agent/service.py
   418 tests/context/test_task_analyzer.py
   418 scripts/github_bot.py
   404 gptme/tools/subagent/api.py
   399 tests/test_tools_shell_validation.py
   398 tests/test_tools_mcp.py
   396 gptme/message.py
   395 gptme/agent/workspace.py
   395 gptme/agent/cli.py
   394 tests/test_lessons_index.py
   391 gptme/tools/chats.py
   388 tests/test_server_path_traversal.py
   387 gptme/agent/doctor.py
   381 gptme/hooks/registry.py
   380 tests/test_util_cli_mcp.py
   372 tests/test_lessons_matcher.py
   370 gptme/util/_telemetry.py
   367 gptme/hooks/tests/test_cost_awareness.py
   364 gptme/eval/dspy/cli.py
   363 gptme/cli/cmd_hooks.py
   355 gptme/eval/dspy/experiments.py
   354 tests/test_profiles.py
   353 tests/test_cli.py
   351 gptme/tools/mcp.py
   350 gptme/eval/dspy/metrics.py
   347 tests/test_util_hooks.py
   346 tests/test_tools_patch.py
   346 tests/lessons/test_wildcard_matching.py
   343 gptme/hooks/tests/test_elicitation.py
   342 tests/test_workspace_api.py
   342 tests/test_shell_background.py
   342 gptme/telemetry.py
   341 tests/test_unified_plugins.py
   339 tests/test_message.py
   336 tests/test_eval_trends.py
   335 gptme/tools/subagent/execution.py
   333 tests/test_provider_plugins.py
   329 tests/test_workspace_agents.py
   327 gptme/hooks/tests/test_agents_md_inject.py
   326 gptme/eval/suites/practical.py
   322 tests/test_util_tool_format.py
   320 gptme/checkpoint.py
   319 tests/conftest.py
   318 tests/test_agent_doctor.py
   317 gptme/eval/suites/practical16.py
   316 gptme/eval/trends.py
   315 tests/test_mcp_discovery.py
   313 tests/test_mcp_adapter.py
   311 tests/test_hybrid_lessons.py
   310 tests/test_tools_morph.py
   309 gptme/tools/patch.py
   309 gptme/hooks/tests/test_confirm.py
   302 gptme/cli/cmd_chats.py

make[3]: Entering directory '/home/runner/work/gptme/gptme'
Most Duplicated Files:
npm warn exec The following package was not found and will be installed: jscpd@4.2.3
Clone found (python):
 - gptme/util/_sound_sounddevice.py [103:5 - 115:71] (12 lines, 113 tokens)
   gptme/util/_sound_sounddevice.py [62:5 - 74:31]

Clone found (python):
 - gptme/tools/autocompact/engine.py [235:17 - 245:39] (10 lines, 92 tokens)
   gptme/tools/autocompact/engine.py [185:13 - 195:32]

Clone found (python):
 - gptme/tools/shell_background.py [89:39 - 97:25] (8 lines, 84 tokens)
   gptme/tools/shell_background.py [71:24 - 79:43]

Clone found (python):
 - gptme/tools/precommit.py [124:65 - 132:11] (8 lines, 71 tokens)
   gptme/tools/precommit.py [113:50 - 122:59]

Clone found (python):
 - gptme/tools/patch.py [330:5 - 344:8] (14 lines, 93 tokens)
   gptme/tools/save.py [127:5 - 141:45]

Clone found (python):
 - gptme/tools/gh.py [151:13 - 160:15] (9 lines, 80 tokens)
   gptme/tools/gh.py [78:9 - 89:15]

Clone found (python):
 - gptme/tools/computer.py [684:13 - 703:73] (19 lines, 147 tokens)
   gptme/tools/computer_transport.py [188:13 - 207:79]

Clone found (python):
 - gptme/server/workspace_api.py [64:5 - 71:25] (7 lines, 94 tokens)
   gptme/server/workspace_api.py [45:68 - 52:23]

Clone found (python):
 - gptme/server/workspace_api.py [587:9 - 609:15] (22 lines, 230 tokens)
   gptme/server/workspace_api.py [509:9 - 531:14]

Clone found (python):
 - gptme/server/tasks_api.py [502:49 - 513:50] (11 lines, 79 tokens)
   gptme/server/tasks_api.py [489:71 - 499:13]

Clone found (python):
 - gptme/server/session_models.py [285:29 - 299:60] (14 lines, 118 tokens)
   gptme/server/session_models.py [229:25 - 242:25]

Clone found (python):
 - gptme/server/session_models.py [308:17 - 324:45] (16 lines, 104 tokens)
   gptme/server/session_models.py [254:21 - 270:23]

Clone found (python):
 - gptme/server/external_sessions.py [247:103 - 258:20] (11 lines, 99 tokens)
   gptme/server/external_sessions.py [131:97 - 142:17]

Clone found (python):
 - gptme/server/api_v2_sessions.py [644:5 - 653:11] (9 lines, 82 tokens)
   gptme/server/api_v2_sessions.py [250:5 - 259:15]

Clone found (python):
 - gptme/server/api_v2_sessions.py [899:5 - 913:7] (14 lines, 129 tokens)
   gptme/server/api_v2_sessions.py [248:5 - 262:11]

Clone found (python):
 - gptme/plugins/__init__.py [412:5 - 437:29] (25 lines, 183 tokens)
   gptme/util/install.py [14:5 - 39:32]

Clone found (python):
 - gptme/llm/models/listing.py [342:32 - 348:38] (6 lines, 75 tokens)
   gptme/llm/models/listing.py [169:21 - 175:27]

Clone found (python):
 - gptme/llm/models/data.py [35:26 - 47:62] (12 lines, 90 tokens)
   gptme/llm/models/data.py [21:26 - 33:43]

Clone found (python):
 - gptme/llm/models/data.py [114:33 - 125:35] (11 lines, 88 tokens)
   gptme/llm/models/data.py [103:35 - 114:33]

Clone found (python):
 - gptme/llm/validate.py [205:45 - 219:18] (14 lines, 99 tokens)
   gptme/llm/validate.py [188:48 - 202:23]

Clone found (python):
 - gptme/llm/validate.py [222:37 - 233:64] (11 lines, 93 tokens)
   gptme/llm/validate.py [188:48 - 199:64]

Clone found (python):
 - gptme/hooks/tests/test_workspace_agents.py [707:13 - 719:63] (12 lines, 89 tokens)
   gptme/hooks/tests/test_workspace_agents.py [431:13 - 443:53]

Clone found (python):
 - gptme/hooks/tests/test_tool_target_instructions.py [154:32 - 159:67] (5 lines, 77 tokens)
   gptme/hooks/tests/test_tool_target_instructions.py [133:31 - 138:72]

Clone found (python):
 - gptme/hooks/tests/test_tool_target_instructions.py [245:36 - 253:42] (8 lines, 84 tokens)
   gptme/hooks/tests/test_tool_target_instructions.py [131:43 - 137:63]

Clone found (python):
 - gptme/hooks/tests/test_time_awareness.py [130:32 - 136:23] (6 lines, 77 tokens)
   gptme/hooks/tests/test_time_awareness.py [112:36 - 118:22]

Clone found (python):
 - gptme/hooks/tests/test_time_awareness.py [144:31 - 150:22] (6 lines, 77 tokens)
   gptme/hooks/tests/test_time_awareness.py [112:36 - 118:22]

Clone found (python):
 - gptme/hooks/tests/test_server_confirm.py [254:35 - 266:34] (12 lines, 124 tokens)
   gptme/hooks/tests/test_server_elicit.py [265:35 - 277:34]

Clone found (python):
 - gptme/hooks/tests/test_cost_awareness.py [271:9 - 284:40] (13 lines, 86 tokens)
   gptme/hooks/tests/test_cost_awareness.py [239:9 - 252:35]

Clone found (python):
 - gptme/hooks/tests/test_cost_awareness.py [383:9 - 399:48] (16 lines, 97 tokens)
   gptme/hooks/tests/test_cost_awareness.py [360:9 - 376:47]

Clone found (python):
 - gptme/hooks/tests/test_agents_md_inject.py [131:9 - 142:69] (11 lines, 87 tokens)
   gptme/hooks/tests/test_agents_md_inject.py [62:9 - 72:15]

Clone found (python):
 - gptme/hooks/tests/test_agents_md_inject.py [188:46 - 203:38] (15 lines, 112 tokens)
   gptme/hooks/tests/test_agents_md_inject.py [156:74 - 171:38]

Clone found (python):
 - gptme/hooks/tests/test_agents_md_inject.py [236:55 - 252:19] (16 lines, 116 tokens)
   gptme/hooks/tests/test_agents_md_inject.py [156:74 - 172:21]

Clone found (python):
 - gptme/hooks/tests/test_agents_md_inject.py [260:54 - 275:62] (15 lines, 104 tokens)
   gptme/hooks/tests/test_agents_md_inject.py [156:74 - 170:69]

Clone found (python):
 - gptme/hooks/tests/test_agents_md_inject.py [286:48 - 302:29] (16 lines, 118 tokens)
   gptme/hooks/tests/test_agents_md_inject.py [156:74 - 252:41]

Clone found (python):
 - gptme/hooks/tests/test_agents_md_inject.py [369:44 - 384:38] (15 lines, 115 tokens)
   gptme/hooks/tests/test_agents_md_inject.py [332:68 - 347:38]

Clone found (python):
 - gptme/eval/suites/behavioral/implement_event_emitter.py [68:5 - 75:79] (7 lines, 106 tokens)
   gptme/eval/suites/behavioral/implement_event_emitter.py [54:5 - 61:77]

Clone found (python):
 - gptme/eval/suites/behavioral/implement_event_emitter.py [85:5 - 92:78] (7 lines, 106 tokens)
   gptme/eval/suites/behavioral/implement_event_emitter.py [54:5 - 61:77]

Clone found (python):
 - gptme/eval/suites/behavioral/circuit_breaker.py [3:1 - 19:37] (16 lines, 115 tokens)
   gptme/eval/suites/behavioral/rate_limiting.py [3:1 - 19:32]

Clone found (python):
 - gptme/eval/suites/behavioral/add_type_hints.py [42:5 - 50:15] (8 lines, 100 tokens)
   gptme/eval/suites/behavioral/add_type_hints.py [20:5 - 36:16]

Clone found (python):
 - gptme/eval/suites/behavioral/add_type_hints.py [83:5 - 90:41] (7 lines, 89 tokens)
   gptme/eval/suites/behavioral/add_type_hints.py [20:5 - 27:44]

Clone found (python):
 - gptme/eval/dspy/cli.py [316:66 - 331:49] (15 lines, 104 tokens)
   gptme/eval/dspy/cli.py [78:1 - 93:7]

Clone found (python):
 - gptme/eval/dspy/cli.py [423:45 - 439:60] (16 lines, 93 tokens)
   gptme/eval/dspy/cli.py [160:9 - 176:55]

Clone found (python):
 - gptme/eval/dspy/cli.py [450:13 - 456:27] (6 lines, 84 tokens)
   gptme/eval/dspy/cli.py [187:13 - 192:69]

Clone found (python):
 - gptme/eval/agents/swebench.py [109:13 - 118:16] (9 lines, 93 tokens)
   gptme/eval/agents/swebench.py [85:9 - 92:11]

Clone found (python):
 - gptme/eval/execenv.py [237:57 - 249:72] (12 lines, 139 tokens)
   gptme/eval/filestore.py [59:60 - 71:14]

Clone found (python):
 - gptme/eval/execenv.py [482:9 - 503:66] (21 lines, 109 tokens)
   gptme/eval/execenv.py [180:9 - 201:64]

Clone found (python):
 - gptme/eval/execenv.py [508:13 - 521:23] (13 lines, 93 tokens)
   gptme/eval/execenv.py [207:13 - 220:15]

Clone found (python):
 - gptme/eval/execenv.py [585:5 - 605:21] (20 lines, 118 tokens)
   gptme/eval/execenv.py [360:5 - 380:21]

Clone found (python):
 - gptme/eval/execenv.py [615:17 - 634:31] (19 lines, 143 tokens)
   gptme/eval/execenv.py [395:17 - 414:88]

Clone found (python):
 - gptme/eval/execenv.py [718:13 - 737:86] (19 lines, 144 tokens)
   gptme/eval/execenv.py [207:13 - 527:80]

Clone found (python):
 - gptme/context/adaptive_compressor.py [69:46 - 81:16] (12 lines, 86 tokens)
   gptme/tools/autocompact/scoring.py [158:24 - 167:61]

Clone found (python):
 - gptme/context/adaptive_compressor.py [203:48 - 212:49] (9 lines, 86 tokens)
   gptme/tools/autocompact/scoring.py [263:25 - 272:49]

Clone found (python):
 - gptme/context/__init__.py [36:55 - 49:75] (13 lines, 101 tokens)
   gptme/context/selector/__init__.py [46:61 - 59:75]

Clone found (python):
 - gptme/commands/meta.py [212:9 - 221:19] (9 lines, 90 tokens)
   gptme/commands/meta.py [163:9 - 172:18]

Clone found (python):
 - gptme/cli/util.py [922:5 - 929:85] (7 lines, 79 tokens)
   gptme/cli/util.py [889:9 - 896:82]

Clone found (python):
 - gptme/cli/doctor.py [263:47 - 278:47] (15 lines, 97 tokens)
   gptme/cli/doctor.py [241:37 - 256:45]

Clone found (python):
 - gptme/agent/cli.py [97:6 - 120:13] (23 lines, 121 tokens)
   gptme/cli/cmd_agents.py [76:8 - 99:9]

Clone found (python):
 - gptme/acp/client.py [428:5 - 435:19] (7 lines, 139 tokens)
   gptme/acp/client.py [239:9 - 246:14]

Clone found (python):
 - scripts/generate_sounds.py [165:18 - 173:17] (8 lines, 81 tokens)
   scripts/generate_sounds.py [91:16 - 99:15]

Clone found (python):
 - scripts/analyze_compression.py [152:54 - 164:33] (12 lines, 97 tokens)
   scripts/analyze_compression.py [55:82 - 67:35]

Clone found (python):
 - scripts/analyze_compression.py [220:9 - 231:57] (11 lines, 97 tokens)
   scripts/analyze_compression.py [116:9 - 127:53]

Clone found (python):
 - gptme/telemetry.py [56:24 - 79:8] (23 lines, 106 tokens)
   gptme/util/_telemetry.py [281:48 - 304:11]

Clone found (python):
 - gptme/telemetry.py [446:5 - 457:19] (11 lines, 90 tokens)
   gptme/telemetry.py [109:9 - 120:22]

Clone found (python):
 - gptme/__init__.py [10:44 - 21:55] (11 lines, 89 tokens)
   gptme/context/selector/__init__.py [46:61 - 58:15]

┌────────────┬────────────────┬─────────────┬──────────────┬──────────────┬──────────────────┬───────────────────┐
│ Format     │ Files analyzed │ Total lines │ Total tokens │ Clones found │ Duplicated lines │ Duplicated tokens │
├────────────┼────────────────┼─────────────┼──────────────┼──────────────┼──────────────────┼───────────────────┤
│ python     │ 361            │ 98533       │ 606606       │ 64           │ 795 (0.81%)      │ 6601 (1.09%)      │
├────────────┼────────────────┼─────────────┼──────────────┼──────────────┼──────────────────┼───────────────────┤
│ css        │ 3              │ 225         │ 1446         │ 0            │ 0 (0%)           │ 0 (0%)            │
├────────────┼────────────────┼─────────────┼──────────────┼──────────────┼──────────────────┼───────────────────┤
│ javascript │ 3              │ 652         │ 5980         │ 0            │ 0 (0%)           │ 0 (0%)            │
├────────────┼────────────────┼─────────────┼──────────────┼──────────────┼──────────────────┼───────────────────┤
│ markup     │ 2              │ 320         │ 2766         │ 0            │ 0 (0%)           │ 0 (0%)            │
├────────────┼────────────────┼─────────────┼──────────────┼──────────────┼──────────────────┼───────────────────┤
│ markdown   │ 7              │ 820         │ 8022         │ 0            │ 0 (0%)           │ 0 (0%)            │
├────────────┼────────────────┼─────────────┼──────────────┼──────────────┼──────────────────┼───────────────────┤
│ yaml       │ 3              │ 73          │ 231          │ 0            │ 0 (0%)           │ 0 (0%)            │
├────────────┼────────────────┼─────────────┼──────────────┼──────────────┼──────────────────┼───────────────────┤
│ txt        │ 1              │ 78          │ 300          │ 0            │ 0 (0%)           │ 0 (0%)            │
├────────────┼────────────────┼─────────────┼──────────────┼──────────────┼──────────────────┼───────────────────┤
│ bash       │ 15             │ 1243        │ 4358         │ 0            │ 0 (0%)           │ 0 (0%)            │
├────────────┼────────────────┼─────────────┼──────────────┼──────────────┼──────────────────┼───────────────────┤
│ toml       │ 1              │ 137         │ 326          │ 0            │ 0 (0%)           │ 0 (0%)            │
├────────────┼────────────────┼─────────────┼──────────────┼──────────────┼──────────────────┼───────────────────┤
│ Total:     │ 396            │ 102081      │ 630035       │ 64           │ 795 (0.78%)      │ 6601 (1.05%)      │
└────────────┴────────────────┴─────────────┴──────────────┴──────────────┴──────────────────┴───────────────────┘
Found 64 clones.
time: 4.732s
make[3]: Leaving directory '/home/runner/work/gptme/gptme'
make[2]: Leaving directory '/home/runner/work/gptme/gptme'

The metrics above show:

  • Project Overview: Basic stats about the codebase size and complexity

  • Complex Functions: Functions rated D+ (high complexity, should be refactored)

  • Large Files: Files over 300 SLOC (should be split into smaller modules)

  • Duplicated Files: Using jscpd to find duplicated code

We should aim to:

  • Keep average complexity below 4.0

  • Have no E-rated functions (extremely complex)

  • Have few D-rated functions (very complex)

  • Keep files under 300 SLOC where possible