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
     140855 |   bashlex
     221531 |         gptme.config
     227244 |       gptme.llm
     251049 |         mcp.client.session
     272173 |     gptme.commands
     314908 |   gptme.chat
     383727 |       mcp
     383757 |     mcp.types
     402845 |   gptme.tools.mcp_adapter
    1342031 | gptme.cli.main

real	0m2.195s
user	0m1.850s
sys	0m0.230s
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 ± σ):      3.127 s ±  0.131 s    [User: 2.683 s, System: 0.717 s]
  Range (min … max):    2.985 s …  3.304 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                                       273            294           1357
gptme/util/gh.py                                              217            245           1161
gptme/llm/llm_anthropic.py                                    208            287            883
gptme/llm/__init__.py                                         118            218            622
gptme/tools/base.py                                           141            185            603
gptme/util/context.py                                         140            207            593
gptme/lessons/installer.py                                    146            165            495
gptme/llm/llm_openai_subscription.py                          123             92            476
gptme/chat.py                                                  74            100            438
gptme/util/prompt.py                                          102            151            410
gptme/message.py                                              110            147            407
gptme/util/_telemetry.py                                      113            159            403
gptme/telemetry.py                                             93             55            394
gptme/lessons/index.py                                        117            128            385
gptme/util/cost_display.py                                     64             65            324
gptme/checkpoint.py                                            79             49            320
gptme/tools/__init__.py                                        89             69            311
gptme/info.py                                                  84             70            293
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/profiles.py                                              64             67            233
gptme/util/auto_naming.py                                      68             78            224
gptme/lessons/hybrid_matcher.py                                87            123            223
gptme/lessons/parser.py                                        73            117            222
gptme/lessons/commands.py                                      91             48            219
gptme/util/_sound_sounddevice.py                               57             50            218
gptme/init.py                                                  40             58            214
gptme/workspace_snapshot.py                                    37             41            207
gptme/util/sound.py                                            65             72            200
gptme/hooks/__init__.py                                        20             42            197
gptme/util/reduce.py                                           54             63            190
gptme/llm/validate.py                                          30             29            174
gptme/circuit_breaker.py                                       49             72            171
gptme/llm/utils.py                                             56             84            159
gptme/util/__init__.py                                         34             29            155
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            139
gptme/llm/llm_gptme.py                                         51             64            133
gptme/util/cost_tracker.py                                     46             69            114
gptme/util/export.py                                           26             29            111
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/__init__.py                                               8              3             27
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/util/conversation_ids.py                                  7              4             22
gptme/lessons/__init__.py                                       7             15             18
gptme/__main__.py                                               2              0             12
gptme/llm/constants.py                                          2              6              5
-----------------------------------------------------------------------------------------------
SUM:                                                         4269           5142          16652
-----------------------------------------------------------------------------------------------
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                                       273            294           1357
gptme/llm/llm_anthropic.py                                    208            287            883
gptme/llm/__init__.py                                         118            218            622
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                                         51             64            133
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:                                                          979           1176           4595
-----------------------------------------------------------------------------------------------
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                          228            127           1177
gptme/tools/mcp_adapter.py                               209            215            612
gptme/tools/base.py                                      141            185            603
gptme/tools/computer.py                                  172            233            603
gptme/tools/browser.py                                   191            272            592
gptme/tools/gh.py                                        117            128            523
gptme/tools/_browser_playwright.py                       140            105            518
gptme/hooks/registry.py                                  100             82            492
gptme/tools/computer_transport.py                        122             79            466
gptme/tools/chats.py                                      91            117            427
gptme/tools/tmux.py                                       98            170            398
gptme/tools/mcp.py                                       102            103            337
gptme/tools/__init__.py                                   89             69            311
gptme/tools/python.py                                     85             98            288
gptme/tools/lessons.py                                   106            115            278
gptme/tools/save.py                                       63             63            274
gptme/tools/shell_validation.py                           88            121            273
gptme/tools/patch.py                                      63             95            270
gptme/tools/shell_background.py                           65             36            270
gptme/plugins/__init__.py                                 85            119            256
gptme/tools/complete.py                                   70             87            256
gptme/tools/patch_many.py                                 56             62            243
gptme/tools/todo.py                                       95            104            232
gptme/tools/precommit.py                                  70             96            229
gptme/hooks/aw_watcher_agent.py                           49             21            217
gptme/hooks/elicitation.py                                90            132            213
gptme/hooks/cost_awareness.py                             65             73            205
gptme/hooks/auto_snapshots.py                             51             66            201
gptme/hooks/__init__.py                                   20             42            197
gptme/tools/morph.py                                      43             49            185
gptme/tools/read.py                                       41             49            177
gptme/tools/_browser_thread.py                            32             10            171
gptme/hooks/cache_awareness.py                           118            186            168
gptme/hooks/types.py                                      91            127            155
gptme/hooks/cli_confirm.py                                50             54            152
gptme/tools/rag.py                                        63             78            151
gptme/tools/restart.py                                    53             83            150
gptme/hooks/token_awareness.py                            47             46            146
gptme/tools/form.py                                       42             64            145
gptme/hooks/agents_md_inject.py                           36             59            136
gptme/hooks/tool_target_instructions.py                   37             47            135
gptme/tools/elicit.py                                     39            121            135
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                                     34             41            104
gptme/hooks/active_context.py                             25             23            100
gptme/tools/_anchored.py                                  33             41            100
gptme/tools/screenshot.py                                 29             38             95
gptme/tools/vent.py                                       39             64             93
gptme/hooks/injection_screening.py                        21             23             86
gptme/hooks/time_awareness.py                             32             29             86
gptme/tools/autocommit.py                                 37             58             80
gptme/tools/vision.py                                     28             21             73
gptme/tools/_browser_lynx.py                              12             12             60
gptme/tools/_browser_perplexity.py                        22             16             60
gptme/hooks/cwd_changed.py                                18             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                                       14              6             41
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/_allowlist.py                                 10              3              8
gptme/tools/_browser_format.py                             3              5              3
------------------------------------------------------------------------------------------
SUM:                                                    4581           5348          16141
------------------------------------------------------------------------------------------
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                               266            211           1491
gptme/server/api_v2_sessions.py                      121            153            786
gptme/server/session_step.py                         163            217            765
gptme/server/openapi_docs.py                         240            161            681
gptme/server/tasks_api.py                            186            121            643
gptme/server/static/main.js                           51             69            498
gptme/server/workspace_api.py                         97             91            442
gptme/server/artifacts_api.py                         75             60            314
gptme/server/external_sessions.py                     40             25            267
gptme/server/cli.py                                   37             39            211
gptme/server/session_models.py                        57             69            202
gptme/server/panels_api.py                            51             51            201
gptme/server/static/index.html                        11             18            201
gptme/server/acp_session_runtime.py                   34             30            165
gptme/server/auth.py                                  57             80            160
gptme/server/api_v2_common.py                         83             63            153
gptme/server/client.py                                63             79            149
gptme/server/static/style.css                         27              4            143
gptme/server/api_v2_agents.py                         25             17            132
gptme/server/app.py                                   30             65            115
gptme/server/static/computer.html                      1              1             90
gptme/server/tools_api.py                             19             12             76
gptme/server/constants.py                              7             11              9
gptme/server/__init__.py                               2              3              3
gptme/server/__main__.py                               1              0              3
--------------------------------------------------------------------------------------
SUM:                                                1744           1650           7900
--------------------------------------------------------------------------------------
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_server_v2.py                                       518            191           2237
tests/test_llm_openai.py                                      489            258           1954
tests/test_init.py                                            249            141           1476
tests/test_eval_behavioral.py                                 865            961           1354
tests/test_tools_subagent.py                                  436            228           1280
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_server_v2_sessions.py                              157            119            971
tests/test_cli.py                                             252             88            928
tests/test_eval_leaderboard.py                                126            104            883
tests/test_info.py                                            167             73            878
tests/test_config.py                                          246            340            830
tests/test_llm_utils.py                                       235            123            817
tests/test_util_gh_mocked.py                                  149            119            777
tests/test_util_cli.py                                        216            136            772
tests/test_tasks_api.py                                       170             63            736
tests/test_server_workspace.py                                142            141            722
tests/test_agent.py                                           205            112            701
tests/test_tools_browser.py                                   232             52            697
tests/test_hooks_registry.py                                  247             89            696
tests/test_acp_session_runtime.py                             224             76            681
tests/test_tools_gh.py                                        134             69            675
tests/test_prompt_templates.py                                229            148            659
tests/test_llm_anthropic.py                                   131             45            618
tests/test_json_output.py                                     110             83            611
tests/test_doctor.py                                          161            101            595
tests/test_cost_display.py                                     81             58            593
tests/test_tools_lessons.py                                   135             49            580
tests/test_tools_precommit.py                                 109             86            578
tests/test_llm_models_resolution.py                           199            140            575
tests/test_tools_computer.py                                  211            120            571
tests/test_auto_compact.py                                    235            201            566
tests/test_server_panels.py                                    61             30            551
tests/test_server_path_traversal.py                           139            105            539
tests/test_eval.py                                            114             76            528
tests/test_lessons.py                                         156            153            517
tests/test_hooks_cost_awareness.py                             72             61            516
tests/test_tools_base.py                                      164             62            500
tests/test_hooks_cache_awareness.py                           152             44            484
tests/test_computer_transport.py                              177             70            482
tests/test_llm_auth.py                                        169             56            476
tests/test_server_bad_input.py                                111             94            473
tests/test_tools_complete.py                                  107            123            473
tests/test_chat.py                                            196            170            469
tests/test_server_session_models.py                           158            140            466
tests/test_commands.py                                        147             68            463
tests/test_skill_installer.py                                 138            154            459
tests/test_tools_shell_background.py                          117             51            456
tests/test_lessons_commands.py                                157             82            422
tests/test_dirs.py                                             97             69            421
tests/test_lessons_index.py                                   137            116            419
tests/context/test_task_analyzer.py                            90             44            418
tests/test_lessons_parser.py                                  188            239            417
tests/test_codeblock.py                                       302            776            402
tests/test_tools_shell_validation.py                          161             63            399
tests/test_message.py                                         139            120            398
tests/test_tools_mcp.py                                       102             20            398
tests/test_hybrid_lessons.py                                  100             54            395
tests/test_util_cli_mcp.py                                     89             45            380
tests/test_workspace_api.py                                   103             19            369
tests/test_eval_behavioral_solutions.py                       281            848            364
tests/test_mcp_discovery.py                                   107             41            356
tests/test_profiles.py                                         84             30            354
tests/test_lessons_matcher.py                                  99             86            352
tests/test_util_hooks.py                                       85             93            347
tests/test_tools_patch_many.py                                 91            101            345
tests/test_shell_background.py                                 99             71            342
tests/test_server.py                                          122             93            341
tests/test_unified_plugins.py                                  94             38            341
tests/test_provider_plugins.py                                 90             32            337
tests/test_eval_trends.py                                      35             22            335
tests/conftest.py                                              90             97            334
tests/test_workspace_agents.py                                145             57            329
tests/test_circuit_breaker.py                                  98             69            322
tests/test_util_tool_format.py                                 78             32            322
tests/test_agent_doctor.py                                     72             34            318
tests/test_tools.py                                           132             61            317
tests/test_mcp_adapter.py                                     106             54            313
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_tools_browser_thread.py                             84             41            297
tests/test_external_sessions.py                                80             49            296
tests/test_conversations.py                                    45             32            293
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_hooks_server_confirm.py                             78             31            282
tests/test_util_cli_batch.py                                   55              8            277
tests/test_tools_restart.py                                    72             49            274
tests/test_server_v2_agents.py                                 57             25            272
tests/test_llm_models.py                                       98             65            271
tests/test_tools_autocommit.py                                 98             47            258
tests/test_workspace_snapshot.py                               86             38            258
tests/test_hooks.py                                           120             47            255
tests/test_context_selector.py                                 83             45            254
tests/test_logmanager.py                                       74             61            254
tests/test_eval_claude_code.py                                 66             27            253
tests/test_lessons_integration.py                              97             66            252
tests/test_server_v2_auto_stepping.py                          55             48            251
tests/test_util_cli_providers.py                               60             27            250
tests/test_prompt_tools.py                                     57             30            249
tests/test_server_artifacts.py                                 46             24            242
tests/test_agents_md_inject.py                                 43             37            241
tests/test_complete.py                                         56             40            241
tests/test_ephemeral.py                                        70             35            240
tests/test_mcp.py                                              68             59            239
tests/test_auto_naming.py                                      69             45            237
tests/test_browser.py                                         100             56            233
tests/test_reduce.py                                           65             70            231
tests/test_tools__anchored.py                                  46             30            230
tests/test_hooks_cwd_changed.py                                55             24            227
tests/test_util_keyword_matching.py                            75             46            218
tests/test_lessons_tool.py                                     62             34            216
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_server_v2_hooks.py                                  80             60            207
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_tools_python.py                                     79             31            198
tests/test_github_ci_self_heal.py                              48              3            194
tests/test_eval_swebench.py                                    64             36            193
tests/test_tools_save.py                                       57             36            193
tests/test_chats_clean.py                                      46             18            191
tests/test_telemetry.py                                        68             31            189
tests/test_chats_stats.py                                      63             27            184
tests/test_dspy_hybrid.py                                      65             45            179
tests/test_tools_tmux.py                                       77             65            179
tests/test_dspy_basic.py                                       66             44            177
tests/test_cost_tracker.py                                     26             26            175
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_util_cli_models.py                                  23             24            170
tests/test_llm_openai_subscription.py                          37              9            169
tests/test_util_terminal.py                                    52             34            168
tests/test_lessons_auto_include.py                             45             38            167
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_tools_time_awareness.py                             52             34            163
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_eval_pass_rate_gate.py                              48              9            154
tests/test_shell_allowlist_autoconfirm.py                      38             38            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_file_selector_integration.py                        50             23            145
tests/test_vent.py                                             32             10            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_token_awareness.py                            59             47            139
tests/test_tools_vision.py                                     36             31            138
tests/test_server_elicitation.py                               47             17            137
tests/test_util_content.py                                     49             25            137
tests/test_llm_openai_sampling.py                              29              0            136
tests/test_server_v2_tool_confirmation.py                      33             33            135
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_active_context.py                                   41             22            126
tests/test_util_context_dedup.py                               61             43            125
tests/test_prompt.py                                           36             36            123
tests/test_server_webui_dir.py                                 59             21            121
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_eval_subagent.py                                    25             13            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_cost_awareness_delayed_warning.py                   42             32            108
tests/test_tools_chats.py                                      26             19            107
tests/test_tools_choice.py                                     51             26            103
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_agent_memory.py                                     26             17             90
tests/test_browser_lynx.py                                     35             15             90
tests/test_swebench_utils.py                                   27              2             89
tests/test_server_cors.py                                      33             20             88
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_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_webui_redirects.py                                  11              7             57
tests/test_chat_history.py                                     14             12             56
tests/test_computer_artifacts.py                               14              3             54
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_github_bot.py                                       12              1             51
tests/test_server_v2_sse.py                                    15             13             50
tests/test_cli_status.py                                       15              9             48
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_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:                                                        21651          15389          73078
-----------------------------------------------------------------------------------------------
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                              67             89            514
gptme/eval/trends.py                           59             31            317
gptme/eval/types.py                            28             36             77
gptme/eval/pass_rate_gate.py                   23             44             75
gptme/eval/filestore.py                        11              8             63
gptme/eval/cost.py                             12             24              6
gptme/eval/__init__.py                          2              2              4
gptme/eval/__main__.py                          1              0              3
------------------------------------------------------------------------------------------
SUM:                                          541            975           3241
------------------------------------------------------------------------------------------
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/__version__.py gptme/message.py gptme/session.py gptme/mcp/client.py gptme/mcp/__init__.py gptme/mcp/registry.py gptme/plugins/plugin.py gptme/plugins/entrypoints.py gptme/plugins/__init__.py gptme/plugins/registry.py gptme/prompt_queue.py gptme/credentials.py gptme/constants.py gptme/circuit_breaker.py gptme/oauth/openrouter.py gptme/oauth/__init__.py gptme/context/selector/file_selector.py gptme/context/selector/file_config.py gptme/context/selector/file_integration.py gptme/context/selector/llm_based.py gptme/context/selector/rule_based.py gptme/context/selector/base.py gptme/context/selector/__init__.py gptme/context/selector/hybrid.py gptme/context/selector/config.py gptme/context/adaptive_compressor.py gptme/context/task_analyzer.py gptme/context/compress.py gptme/context/__init__.py gptme/context/config.py gptme/acp/client.py gptme/acp/__main__.py gptme/acp/__init__.py gptme/acp/types.py gptme/acp/adapter.py gptme/acp/agent.py gptme/server/session_step.py gptme/server/client.py gptme/server/tools_api.py gptme/server/app.py gptme/server/api_v2_common.py gptme/server/tasks_api.py gptme/server/api_v2_sessions.py gptme/server/constants.py gptme/server/auth.py gptme/server/session_models.py gptme/server/external_sessions.py gptme/server/workspace_api.py gptme/server/__main__.py gptme/server/openapi_docs.py gptme/server/api_v2.py gptme/server/panels_api.py gptme/server/cli.py gptme/server/__init__.py gptme/server/acp_session_runtime.py gptme/server/api_v2_agents.py gptme/server/artifacts_api.py gptme/__main__.py gptme/telemetry.py gptme/llm/llm_anthropic.py gptme/llm/constants.py gptme/llm/llm_openai.py gptme/llm/provider_plugins.py gptme/llm/llm_gptme.py gptme/llm/utils.py gptme/llm/validate.py gptme/llm/llm_anthropic_models_deprecated.py gptme/llm/__init__.py gptme/llm/llm_openai_subscription.py gptme/llm/llm_openai_models.py gptme/llm/llm_openai_models_deprecated.py gptme/llm/openai_responses.py gptme/llm/models/__init__.py gptme/llm/models/types.py gptme/llm/models/data.py gptme/llm/models/resolution.py gptme/llm/models/listing.py gptme/cli/doctor.py gptme/cli/main.py gptme/cli/cmd_chats.py gptme/cli/cmd_mcp.py gptme/cli/auth.py gptme/cli/cmd_skills.py gptme/cli/cmd_batch.py gptme/cli/__init__.py gptme/cli/cmd_agents.py gptme/cli/checkpoint.py gptme/cli/cmd_status.py gptme/cli/onboard.py gptme/cli/cmd_init.py gptme/cli/setup.py gptme/cli/cmd_hooks.py gptme/cli/wut.py gptme/cli/util.py gptme/workspace_snapshot.py gptme/config/core.py gptme/config/models.py gptme/config/__init__.py gptme/config/cli_setup.py gptme/config/project.py gptme/config/user.py gptme/config/chat.py gptme/prompts/chat_history.py gptme/prompts/architect.py gptme/prompts/templates.py gptme/prompts/skills.py gptme/prompts/__init__.py gptme/prompts/workspace.py gptme/prompts/context_cmd.py gptme/util/git_worktree.py gptme/util/tree.py gptme/util/context_dedup.py gptme/util/tool_format.py gptme/util/reduce.py gptme/util/clipboard.py gptme/util/auto_naming.py gptme/util/output_storage.py gptme/util/interrupt.py gptme/util/prompt.py gptme/util/cost_tracker.py gptme/util/install.py gptme/util/_sound_sounddevice.py gptme/util/master_context.py gptme/util/cost.py gptme/util/generate_name.py gptme/util/terminal.py gptme/util/uri.py gptme/util/_telemetry.py gptme/util/gh.py gptme/util/context_savings.py gptme/util/__init__.py gptme/util/sound.py gptme/util/export.py gptme/util/_sound_cmd.py gptme/util/context.py gptme/util/file_storage.py gptme/util/content.py gptme/util/ask_execute.py gptme/util/keyword_matching.py gptme/util/conversation_ids.py gptme/util/tokens.py gptme/util/cost_display.py gptme/util/useredit.py gptme/executor.py gptme/__init__.py gptme/dirs.py gptme/lessons/index.py gptme/lessons/parser.py gptme/lessons/installer.py gptme/lessons/skills/python-repl/python_helpers.py gptme/lessons/matcher.py gptme/lessons/hybrid_matcher.py gptme/lessons/commands.py gptme/lessons/__init__.py gptme/lessons/auto_include.py gptme/hooks/token_awareness.py gptme/hooks/aw_watcher_agent.py gptme/hooks/form_autodetect.py gptme/hooks/server_elicit.py gptme/hooks/cache_awareness.py gptme/hooks/auto_confirm.py gptme/hooks/workspace_agents.py gptme/hooks/auto_snapshots.py gptme/hooks/tests/test_time_awareness.py gptme/hooks/tests/test_injection_screening.py gptme/hooks/tests/test_server_elicit.py gptme/hooks/tests/test_aw_watcher_agent.py gptme/hooks/tests/test_cache_awareness.py gptme/hooks/tests/test_cli_confirm.py gptme/hooks/tests/test_cwd_awareness.py gptme/hooks/tests/test_tool_target_instructions.py gptme/hooks/tests/test_confirm.py gptme/hooks/tests/test_agents_md_inject.py gptme/hooks/tests/test_workspace_agents.py gptme/hooks/tests/__init__.py gptme/hooks/tests/test_auto_confirm.py gptme/hooks/tests/test_token_awareness.py gptme/hooks/tests/test_active_context.py gptme/hooks/tests/test_cost_awareness.py gptme/hooks/tests/test_form_autodetect.py gptme/hooks/tests/test_server_confirm.py gptme/hooks/tests/test_elicitation.py gptme/hooks/tests/test_markdown_validation.py gptme/hooks/__init__.py gptme/hooks/elicitation.py gptme/hooks/cwd_changed.py gptme/hooks/agents_md_inject.py gptme/hooks/test.py gptme/hooks/registry.py gptme/hooks/types.py gptme/hooks/cost_awareness.py gptme/hooks/mcp_namespace_hint.py gptme/hooks/injection_screening.py gptme/hooks/active_context.py gptme/hooks/cwd_awareness.py gptme/hooks/tool_target_instructions.py gptme/hooks/markdown_validation.py gptme/hooks/time_awareness.py gptme/hooks/confirm.py gptme/hooks/cli_confirm.py gptme/hooks/server_confirm.py gptme/profiles.py gptme/info.py gptme/checkpoint.py gptme/agent/doctor.py gptme/agent/service.py gptme/agent/cli.py gptme/agent/__init__.py gptme/agent/workspace.py gptme/init.py gptme/logmanager/conversations.py gptme/logmanager/manager.py gptme/logmanager/__init__.py gptme/commands/account.py gptme/commands/session.py gptme/commands/base.py gptme/commands/__init__.py gptme/commands/export.py gptme/commands/checkpoint.py gptme/commands/meta.py gptme/commands/llm.py gptme/eval/pass_rate_gate.py gptme/eval/main.py gptme/eval/leaderboard.py gptme/eval/agents/__init__.py gptme/eval/agents/swebench.py gptme/eval/agents/claude_code.py gptme/eval/__main__.py gptme/eval/cost.py gptme/eval/trends.py gptme/eval/__init__.py gptme/eval/swebench/evaluate.py gptme/eval/swebench/main.py gptme/eval/swebench/__main__.py gptme/eval/swebench/utils.py gptme/eval/swebench/__init__.py gptme/eval/swebench/info.py gptme/eval/swe_extra/swe_bench_constants.py gptme/eval/swe_extra/swe_bench_test_spec.py gptme/eval/swe_extra/__init__.py gptme/eval/swe_extra/swe_bench_extra_data.py gptme/eval/swe_extra/run_swe_extra.py gptme/eval/tbench/__init__.py gptme/eval/tbench/run.py gptme/eval/tbench/agent.py gptme/eval/types.py gptme/eval/filestore.py gptme/eval/dspy/metrics.py gptme/eval/dspy/signatures.py gptme/eval/dspy/__main__.py gptme/eval/dspy/experiments.py gptme/eval/dspy/prompt_optimizer.py gptme/eval/dspy/cli.py gptme/eval/dspy/tasks.py gptme/eval/dspy/__init__.py gptme/eval/dspy/hybrid_optimizer.py gptme/eval/execenv.py gptme/eval/run.py gptme/eval/suites/practical3.py gptme/eval/suites/practical16.py gptme/eval/suites/practical5.py gptme/eval/suites/practical30.py gptme/eval/suites/practical19.py gptme/eval/suites/basic.py gptme/eval/suites/practical25.py gptme/eval/suites/practical15.py gptme/eval/suites/behavioral/iterative_debug.py gptme/eval/suites/behavioral/rate_limiting.py gptme/eval/suites/behavioral/add_deprecation_warning.py gptme/eval/suites/behavioral/debug_data_pipeline.py gptme/eval/suites/behavioral/implement_lru_cache.py gptme/eval/suites/behavioral/add_feature_preserve_default.py gptme/eval/suites/behavioral/extract_function_refactor.py gptme/eval/suites/behavioral/implement_event_emitter.py gptme/eval/suites/behavioral/handle_specific_exception.py gptme/eval/suites/behavioral/git_selective_commit.py gptme/eval/suites/behavioral/circuit_breaker.py gptme/eval/suites/behavioral/fix_security_path_traversal.py gptme/eval/suites/behavioral/root_cause_pipeline_debug.py gptme/eval/suites/behavioral/implement_memoization.py gptme/eval/suites/behavioral/_common.py gptme/eval/suites/behavioral/add_logging.py gptme/eval/suites/behavioral/test_driven_error_handling.py gptme/eval/suites/behavioral/minimal_feature_preserve_default_with_decoys.py gptme/eval/suites/behavioral/validate_user_input.py gptme/eval/suites/behavioral/stage_new_files.py gptme/eval/suites/behavioral/retry_with_backoff.py gptme/eval/suites/behavioral/add_type_hints.py gptme/eval/suites/behavioral/use_existing_helper.py gptme/eval/suites/behavioral/__init__.py gptme/eval/suites/behavioral/implement_priority_queue.py gptme/eval/suites/behavioral/write_test_suite.py gptme/eval/suites/behavioral/refactor_for_testability.py gptme/eval/suites/behavioral/scope_discipline_bugfix.py gptme/eval/suites/behavioral/fix_data_mutation.py gptme/eval/suites/behavioral/bounded_bugfix_with_decoys.py gptme/eval/suites/behavioral/optimize_n_squared.py gptme/eval/suites/behavioral/multi_file_rename.py gptme/eval/suites/behavioral/noisy_worktree_fix.py gptme/eval/suites/behavioral/merge_conflict_resolution.py gptme/eval/suites/behavioral/add_docstrings.py gptme/eval/suites/behavioral/fix_mutable_default.py gptme/eval/suites/behavioral/remove_dead_code.py gptme/eval/suites/practical32.py gptme/eval/suites/practical2.py gptme/eval/suites/practical33.py gptme/eval/suites/practical6.py gptme/eval/suites/practical28.py gptme/eval/suites/practical31.py gptme/eval/suites/browser.py gptme/eval/suites/practical14.py gptme/eval/suites/practical26.py gptme/eval/suites/practical8.py gptme/eval/suites/practical22.py gptme/eval/suites/practical24.py gptme/eval/suites/practical10.py gptme/eval/suites/__init__.py gptme/eval/suites/practical23.py gptme/eval/suites/init_projects.py gptme/eval/suites/practical29.py gptme/eval/suites/practical7.py gptme/eval/suites/practical12.py gptme/eval/suites/subagent.py gptme/eval/suites/practical17.py gptme/eval/suites/practical13.py gptme/eval/suites/practical11.py gptme/eval/suites/practical21.py gptme/eval/suites/practical9.py gptme/eval/suites/practical27.py gptme/eval/suites/practical.py gptme/eval/suites/practical18.py gptme/eval/suites/practical20.py gptme/eval/suites/practical4.py gptme/chat.py gptme/codeblock.py gptme/tools/tmux.py gptme/tools/computer_transport.py gptme/tools/shell_background.py gptme/tools/_browser_perplexity.py gptme/tools/vision.py gptme/tools/_browser_format.py gptme/tools/shell.py gptme/tools/computer.py gptme/tools/form.py gptme/tools/screenshot.py gptme/tools/morph.py gptme/tools/chats.py gptme/tools/shell_validation.py gptme/tools/elicit.py gptme/tools/vent.py gptme/tools/save.py gptme/tools/complete.py gptme/tools/_browser_lynx.py gptme/tools/_anchored.py gptme/tools/python.py gptme/tools/browser.py gptme/tools/base.py gptme/tools/patch_many.py gptme/tools/gh.py gptme/tools/read.py gptme/tools/rag.py gptme/tools/_allowlist.py gptme/tools/__init__.py gptme/tools/todo.py gptme/tools/precommit.py gptme/tools/patch.py gptme/tools/subagent/batch.py gptme/tools/subagent/__init__.py gptme/tools/subagent/hooks.py gptme/tools/subagent/types.py gptme/tools/subagent/execution.py gptme/tools/subagent/api.py gptme/tools/_browser_thread.py gptme/tools/_browser_playwright.py gptme/tools/mcp_adapter.py gptme/tools/choice.py gptme/tools/autocompact/handlers.py gptme/tools/autocompact/scoring.py gptme/tools/autocompact/decision.py gptme/tools/autocompact/engine.py gptme/tools/autocompact/__init__.py gptme/tools/autocompact/resume.py gptme/tools/autocompact/hook.py gptme/tools/mcp.py gptme/tools/restart.py gptme/tools/lessons.py gptme/tools/autocommit.py tests/test_acp_stdout.py tests/test_lessons_commands.py tests/test_tools_gh.py tests/test_util_hooks.py tests/test_shell_background.py tests/test_reduce.py tests/test_eval_practical19.py tests/test_agent_service_timeouts.py tests/test_util_cli_skills.py tests/test_llm_openai_sampling.py tests/test_message.py tests/test_tools_autocommit.py tests/test_telemetry.py tests/test_llm_openai.py tests/test_server_parent_death_watcher.py tests/test_commands_llm.py tests/test_unified_plugins.py tests/test_session.py tests/conftest.py tests/test_server_cors.py tests/test_tools_save.py tests/test_util_install.py tests/test_context_selector.py tests/test_setup_completions.py tests/test_prompt_tools.py tests/test_tools_read.py tests/test_tools_browser_thread.py tests/test_tools_todo.py tests/test_acp_session_runtime.py tests/test_util_file_storage.py tests/test_workspace_api.py tests/test_tools_lessons.py tests/test_browser_github_routing.py tests/test_server_v2_sse.py tests/test_server_elicitation.py tests/test_util_generate_name.py tests/test_utils.py tests/test_computer_artifacts.py tests/test_tools_vision.py tests/test_acp_client.py tests/test_tool_loading_duplicate.py tests/test_util_cli_batch.py tests/test_command_completion.py tests/test_cli_status.py tests/test_tools_patch.py tests/test_server.py tests/test_tools_precommit.py tests/test_dspy_integration.py tests/test_executor.py tests/test_cwe214_docker_env_leak.py tests/test_tools_computer.py tests/test_server_cli_fallback.py tests/test_execenv.py tests/test_util_export.py tests/test_server_panels.py tests/test_util_cli_models.py tests/test_skill_installer.py tests/test_circuit_breaker.py tests/test_ephemeral.py tests/test_tools_chats.py tests/test_tools_shell_multiline.py tests/test_xml_format.py tests/test_tools_token_awareness.py tests/test_oauth_openrouter.py tests/test_custom_providers.py tests/context/test_task_analyzer.py tests/context/test_adaptive_compressor.py tests/test_util_tree.py tests/test_tool_use.py tests/test_tools_shell_validation.py tests/test_browser.py tests/test_hooks.py tests/test_agent_workspace_timeouts.py tests/test_browser_format.py tests/test_acp_protocol_logging.py tests/test_computer_transport.py tests/test_server_v2_agents.py tests/test_cost_awareness_delayed_warning.py tests/test_eval_swebench.py tests/test_server_v2_auto_stepping.py tests/test_webui_redirects.py tests/test_llm_openai_subscription.py tests/test_server_v2_sessions.py tests/test_cost_tracker.py tests/test_server_v2_hooks.py tests/test_context.py tests/test_eval_timeouts.py tests/test_server_artifacts.py tests/test_hooks_mcp_namespace_hint.py tests/test_lessons_tool.py tests/test_init.py tests/test_lessons_index.py tests/test_util_interrupt.py tests/test_util_output_storage.py tests/test_shell_issue729.py tests/test_eval_behavioral_solutions.py tests/test_tools_mcp.py tests/test_eval_claude_code.py tests/test_eval_trends.py tests/test_provider_plugins.py tests/test_llm_models_resolution.py tests/test_external_sessions.py tests/test_llm_auth.py tests/test_util_context_dedup.py tests/test_vent.py tests/test_eval_subagent.py tests/test_tools.py tests/test_tools_time_awareness.py tests/test_tools_rag.py tests/test_util_clipboard_paste.py tests/test_tools_choice.py tests/test_dirs.py tests/test_server_path_traversal.py tests/test_prompts.py tests/test_mcp.py tests/test_package_exports.py tests/test_util_context_savings.py tests/test_hybrid_lessons.py tests/test_util_terminal.py tests/test_server_bad_input.py tests/test_server_v2.py tests/test_credentials.py tests/test_workspace_snapshot.py tests/test_agents_md_inject.py tests/test_tools_base.py tests/test_util_gh_mocked.py tests/test_plugins.py tests/test_util.py tests/test_workspace_agents.py tests/test_cli_confirm_hook.py tests/test_pdf_to_images.py tests/test_server_v2_tool_confirmation.py tests/test_commands.py tests/test_hooks_registry.py tests/test_tools_tmux.py tests/test_cost_display.py tests/test_llm_anthropic.py tests/test_dspy_basic.py tests/test_lessons_parser.py tests/test_auto_compact.py tests/test_dspy_gepa.py tests/test_util_cost.py tests/test_github_bot.py tests/test_shell_fd_leak.py tests/test_agent_doctor.py tests/test_eval.py tests/test_profiles.py tests/test_tools__anchored.py tests/test_integration_phase4.py tests/test_lessons_integration.py tests/test_tasks_api.py tests/lessons/test_wildcard_matching.py tests/test_onboard.py tests/test_tools_form.py tests/test_demo_capture.py tests/test_lessons_auto_include.py tests/test_server_workspace.py tests/test_autocompact_scoring.py tests/test_hooks_form_autodetect.py tests/test_hooks_cwd_changed.py tests/test_util_tokens.py tests/test_util_tool_format.py tests/test_tools_complete.py tests/test_util_cli_mcp.py tests/test_eval_practical16.py tests/test_chats_json.py tests/test_acp_types.py tests/test_chats_stats.py tests/test_lessons_status.py tests/test_llm_validate.py tests/test_eval_leaderboard.py tests/test_eval_behavioral.py tests/test_tools_subagent.py tests/test_file_selector_integration.py tests/test_hooks_cache_awareness.py tests/test_quota_skip.py tests/test_lessons_matcher.py tests/test_tools_shell.py tests/test_server_session_models.py tests/test_tools_python.py tests/test_prompt_templates.py tests/test_eval_practical18.py tests/test_hooks_cost_awareness.py tests/test_tools_restart.py tests/test_server_api_v2_common.py tests/test_swebench_utils.py tests/test_hooks_server_confirm.py tests/test_git_worktree.py tests/test_complete.py tests/test_tools_morph.py tests/test_logmanager.py tests/test_chats_rename.py tests/test_chats_clean.py tests/test_tree.py tests/test_server_webui_dir.py tests/test_chat_history.py tests/test_active_context.py tests/test_shell_output_mixing_issue408.py tests/test_llm_models.py tests/test_server_auth.py tests/test_shell_issue772.py tests/test_screenshot.py tests/test_server_client.py tests/test_json_output.py tests/test_prompt.py tests/test_commands_account.py tests/test_tools_shell_background.py tests/test_tools_browser.py tests/test_master_context.py tests/test_chat_config.py tests/test_codeblock.py tests/test_uri.py tests/test_misc_subprocess_timeouts.py tests/test_credentials_integration.py tests/test_util_cli.py tests/test_checkpoint.py tests/test_agent_memory.py tests/test_shell_for_loop_issue724.py tests/test_dspy_hybrid.py tests/test_eval_practical20.py tests/test_mcp_discovery.py tests/test_llm_utils.py tests/test_chat.py tests/test_eval_pass_rate_gate.py tests/test_prompt_skills_summary.py tests/test_chats_export.py tests/test_github_ci_self_heal.py tests/test_info.py tests/test_util_gh.py tests/test_agent.py tests/test_acp_agent.py tests/test_markdown_validation.py tests/test_conversations.py tests/test_util_keyword_matching.py tests/test_lessons.py tests/test_util_content.py tests/test_tools_patch_many.py tests/test_config.py tests/test_subagent_unit.py tests/test_mcp_adapter.py tests/test_tools_screenshot.py tests/test_util_cli_providers.py tests/test_browser_lynx.py tests/test_eval_practical17.py tests/test_message_command.py tests/test_acp_adapter.py tests/test_doctor.py tests/test_gptme_provider.py tests/test_shell_allowlist_autoconfirm.py tests/test_cost_cache_cold_warning.py tests/test_tools_elicit.py tests/test_auto_naming.py tests/test_cli.py scripts/train/collect.py scripts/auto_rename_logs.py scripts/verify_cloudflare_pages_deep_links.py scripts/demo_capture.py scripts/check_rst_formatting.py scripts/github_bot.py scripts/github_ci_self_heal.py scripts/eval_leaderboard.py scripts/analyze_compression.py scripts/eval_trends.py  --by-file --hide-rate --quiet | tail -n +2
-------------------------------------------------------------------------------------------------------------------------------
File                                                                                        blank        comment           code
-------------------------------------------------------------------------------------------------------------------------------
tests/test_server_v2.py                                                                       518            191           2237
tests/test_llm_openai.py                                                                      489            258           1954
gptme/server/api_v2.py                                                                        266            211           1491
tests/test_init.py                                                                            249            141           1476
gptme/llm/llm_openai.py                                                                       273            294           1357
tests/test_eval_behavioral.py                                                                 865            961           1354
gptme/tools/shell.py                                                                          248            327           1333
tests/test_tools_subagent.py                                                                  436            228           1280
gptme/hooks/workspace_agents.py                                                               228            127           1177
gptme/util/gh.py                                                                              217            245           1161
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
tests/test_server_v2_sessions.py                                                              157            119            971
gptme/hooks/tests/test_workspace_agents.py                                                    190             44            960
gptme/cli/util.py                                                                             219            154            945
tests/test_cli.py                                                                             252             88            928
gptme/cli/main.py                                                                             147            147            904
gptme/llm/llm_anthropic.py                                                                    208            287            883
tests/test_eval_leaderboard.py                                                                126            104            883
tests/test_info.py                                                                            167             73            878
gptme/eval/main.py                                                                            104            110            864
tests/test_config.py                                                                          246            340            830
tests/test_llm_utils.py                                                                       235            123            817
gptme/eval/leaderboard.py                                                                     149            485            804
gptme/server/api_v2_sessions.py                                                               121            153            786
tests/test_util_gh_mocked.py                                                                  149            119            777
tests/test_util_cli.py                                                                        216            136            772
gptme/server/session_step.py                                                                  163            217            765
tests/test_tasks_api.py                                                                       170             63            736
tests/test_server_workspace.py                                                                142            141            722
gptme/eval/suites/basic.py                                                                    138             55            715
tests/test_agent.py                                                                           205            112            701
gptme/cli/doctor.py                                                                           105             78            698
tests/test_tools_browser.py                                                                   232             52            697
tests/test_hooks_registry.py                                                                  247             89            696
gptme/server/openapi_docs.py                                                                  240            161            681
tests/test_acp_session_runtime.py                                                             224             76            681
tests/test_tools_gh.py                                                                        134             69            675
tests/test_prompt_templates.py                                                                229            148            659
gptme/server/tasks_api.py                                                                     186            121            643
gptme/eval/dspy/tasks.py                                                                      170            374            639
gptme/llm/__init__.py                                                                         118            218            622
tests/test_llm_anthropic.py                                                                   131             45            618
gptme/tools/mcp_adapter.py                                                                    209            215            612
tests/test_json_output.py                                                                     110             83            611
gptme/tools/base.py                                                                           141            185            603
gptme/tools/computer.py                                                                       172            233            603
scripts/github_bot.py                                                                         109            107            598
tests/test_doctor.py                                                                          161            101            595
gptme/util/context.py                                                                         140            207            593
tests/test_cost_display.py                                                                     81             58            593
gptme/tools/browser.py                                                                        191            272            592
tests/test_tools_lessons.py                                                                   135             49            580
gptme/cli/setup.py                                                                            134             66            579
tests/test_tools_precommit.py                                                                 109             86            578
tests/test_llm_models_resolution.py                                                           199            140            575
tests/test_tools_computer.py                                                                  211            120            571
tests/test_auto_compact.py                                                                    235            201            566
tests/test_server_panels.py                                                                    61             30            551
gptme/logmanager/manager.py                                                                   131            171            541
tests/test_server_path_traversal.py                                                           139            105            539
tests/test_eval.py                                                                            114             76            528
gptme/tools/gh.py                                                                             117            128            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/eval/run.py                                                                              67             89            514
tests/test_tools_base.py                                                                      164             62            500
gptme/lessons/installer.py                                                                    146            165            495
gptme/hooks/registry.py                                                                       100             82            492
tests/test_hooks_cache_awareness.py                                                           152             44            484
tests/test_computer_transport.py                                                              177             70            482
gptme/llm/models/data.py                                                                        3             41            478
gptme/llm/llm_openai_subscription.py                                                          123             92            476
tests/test_llm_auth.py                                                                        169             56            476
tests/test_server_bad_input.py                                                                111             94            473
tests/test_tools_complete.py                                                                  107            123            473
tests/test_chat.py                                                                            196            170            469
gptme/tools/computer_transport.py                                                             122             79            466
tests/test_server_session_models.py                                                           158            140            466
tests/test_commands.py                                                                        147             68            463
tests/test_skill_installer.py                                                                 138            154            459
tests/test_tools_shell_background.py                                                          117             51            456
scripts/github_ci_self_heal.py                                                                106             43            447
scripts/analyze_compression.py                                                                103             68            446
scripts/demo_capture.py                                                                       104             83            445
gptme/server/workspace_api.py                                                                  97             91            442
gptme/chat.py                                                                                  74            100            438
gptme/tools/chats.py                                                                           91            117            427
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_lessons_index.py                                                                   137            116            419
tests/context/test_task_analyzer.py                                                            90             44            418
tests/test_lessons_parser.py                                                                  188            239            417
gptme/util/prompt.py                                                                          102            151            410
gptme/message.py                                                                              110            147            407
gptme/tools/subagent/api.py                                                                    69            124            406
gptme/util/_telemetry.py                                                                      113            159            403
tests/test_codeblock.py                                                                       302            776            402
gptme/agent/service.py                                                                        108            103            400
tests/test_tools_shell_validation.py                                                          161             63            399
gptme/tools/tmux.py                                                                            98            170            398
tests/test_message.py                                                                         139            120            398
tests/test_tools_mcp.py                                                                       102             20            398
gptme/agent/cli.py                                                                            107            128            395
tests/test_hybrid_lessons.py                                                                  100             54            395
gptme/telemetry.py                                                                             93             55            394
gptme/agent/doctor.py                                                                          89             43            387
gptme/lessons/index.py                                                                        117            128            385
tests/test_util_cli_mcp.py                                                                     89             45            380
gptme/cli/cmd_hooks.py                                                                        104             75            374
tests/test_workspace_api.py                                                                   103             19            369
gptme/hooks/tests/test_cost_awareness.py                                                       72             45            367
gptme/eval/dspy/cli.py                                                                         73             57            364
tests/test_eval_behavioral_solutions.py                                                       281            848            364
tests/test_mcp_discovery.py                                                                   107             41            356
tests/test_profiles.py                                                                         84             30            354
tests/test_lessons_matcher.py                                                                  99             86            352
gptme/eval/dspy/experiments.py                                                                 94             60            350
tests/test_util_hooks.py                                                                       85             93            347
gptme/agent/workspace.py                                                                      120            209            346
gptme/eval/dspy/metrics.py                                                                     97             98            345
tests/test_tools_patch_many.py                                                                 91            101            345
gptme/tools/subagent/execution.py                                                              89            130            344
gptme/hooks/tests/test_elicitation.py                                                          91             45            343
tests/test_shell_background.py                                                                 99             71            342
tests/test_server.py                                                                          122             93            341
tests/test_unified_plugins.py                                                                  94             38            341
gptme/cli/cmd_chats.py                                                                         70             45            337
gptme/tools/mcp.py                                                                            102            103            337
tests/test_provider_plugins.py                                                                 90             32            337
tests/test_eval_trends.py                                                                      35             22            335
tests/conftest.py                                                                              90             97            334
tests/test_workspace_agents.py                                                                145             57            329
gptme/hooks/tests/test_agents_md_inject.py                                                     63             46            327
gptme/eval/suites/practical.py                                                                 35             30            326
gptme/util/cost_display.py                                                                     64             65            324
tests/test_circuit_breaker.py                                                                  98             69            322
tests/test_util_tool_format.py                                                                 78             32            322
gptme/checkpoint.py                                                                            79             49            320
gptme/hooks/tests/test_tool_target_instructions.py                                             58             49            319
tests/test_agent_doctor.py                                                                     72             34            318
gptme/eval/trends.py                                                                           59             31            317
tests/test_tools.py                                                                           132             61            317
gptme/server/artifacts_api.py                                                                  75             60            314
tests/test_mcp_adapter.py                                                                     106             54            313
gptme/tools/__init__.py                                                                        89             69            311
tests/test_tools_morph.py                                                                      89             66            310
gptme/hooks/tests/test_confirm.py                                                             100             59            309
gptme/mcp/client.py                                                                            94            121            307
tests/context/test_adaptive_compressor.py                                                      58             44            298
tests/test_context.py                                                                         130             79            297
tests/test_tools_browser_thread.py                                                             84             41            297
tests/test_external_sessions.py                                                                80             49            296
gptme/info.py                                                                                  84             70            293
tests/test_conversations.py                                                                    45             32            293
tests/test_prompts.py                                                                          90             56            292
gptme/tools/python.py                                                                          85             98            288
tests/test_execenv.py                                                                          76             54            288
tests/lessons/test_wildcard_matching.py                                                       114            125            287
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/tools/lessons.py                                                                        106            115            278
tests/test_util_cli_batch.py                                                                   55              8            277
gptme/logmanager/conversations.py                                                              63             91            276
gptme/tools/save.py                                                                            63             63            274
tests/test_tools_restart.py                                                                    72             49            274
gptme/tools/shell_validation.py                                                                88            121            273
tests/test_server_v2_agents.py                                                                 57             25            272
tests/test_llm_models.py                                                                       98             65            271
gptme/tools/patch.py                                                                           63             95            270
gptme/tools/shell_background.py                                                                65             36            270
gptme/hooks/tests/test_token_awareness.py                                                      37             28            269
gptme/llm/openai_responses.py                                                                  63             10            269
gptme/cli/cmd_init.py                                                                          91            163            267
gptme/server/external_sessions.py                                                              40             25            267
gptme/acp/client.py                                                                            66            121            266
gptme/cli/cmd_skills.py                                                                        71             35            261
gptme/prompts/workspace.py                                                                     44             68            261
gptme/cli/cmd_status.py                                                                        64             26            260
gptme/llm/models/listing.py                                                                    63             57            259
gptme/llm/models/resolution.py                                                                 60             65            258
tests/test_tools_autocommit.py                                                                 98             47            258
tests/test_workspace_snapshot.py                                                               86             38            258
gptme/plugins/__init__.py                                                                      85            119            256
gptme/tools/complete.py                                                                        70             87            256
tests/test_hooks.py                                                                           120             47            255
tests/test_context_selector.py                                                                 83             45            254
tests/test_logmanager.py                                                                       74             61            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
tests/test_server_v2_auto_stepping.py                                                          55             48            251
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
gptme/config/models.py                                                                         82             71            247
gptme/commands/llm.py                                                                          54             51            243
gptme/tools/patch_many.py                                                                      56             62            243
gptme/prompts/__init__.py                                                                      52             93            242
tests/test_server_artifacts.py                                                                 46             24            242
gptme/config/chat.py                                                                           48             67            241
tests/test_agents_md_inject.py                                                                 43             37            241
tests/test_complete.py                                                                         56             40            241
gptme/prompts/templates.py                                                                     59            106            240
tests/test_ephemeral.py                                                                        70             35            240
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/profiles.py                                                                              64             67            233
tests/test_browser.py                                                                         100             56            233
gptme/context/adaptive_compressor.py                                                           76            130            232
gptme/tools/todo.py                                                                            95            104            232
tests/test_reduce.py                                                                           65             70            231
gptme/config/user.py                                                                           69             63            230
tests/test_tools__anchored.py                                                                  46             30            230
gptme/tools/precommit.py                                                                       70             96            229
tests/test_hooks_cwd_changed.py                                                                55             24            227
gptme/cli/onboard.py                                                                           67             59            224
gptme/mcp/registry.py                                                                          59             70            224
gptme/util/auto_naming.py                                                                      68             78            224
gptme/eval/suites/behavioral/__init__.py                                                        9             11            223
gptme/eval/swebench/main.py                                                                    32             23            223
gptme/lessons/hybrid_matcher.py                                                                87            123            223
gptme/lessons/parser.py                                                                        73            117            222
gptme/eval/suites/practical6.py                                                                56             46            221
gptme/lessons/commands.py                                                                      91             48            219
gptme/hooks/tests/test_cli_confirm.py                                                          75             23            218
gptme/util/_sound_sounddevice.py                                                               57             50            218
tests/test_util_keyword_matching.py                                                            75             46            218
gptme/hooks/aw_watcher_agent.py                                                                49             21            217
tests/test_lessons_tool.py                                                                     62             34            216
gptme/init.py                                                                                  40             58            214
gptme/cli/auth.py                                                                              48             28            213
gptme/eval/swe_extra/swe_bench_extra_data.py                                                   69             51            213
gptme/hooks/elicitation.py                                                                     90            132            213
gptme/server/cli.py                                                                            37             39            211
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_server_v2_hooks.py                                                                  80             60            207
tests/test_executor.py                                                                         50             31            206
gptme/hooks/cost_awareness.py                                                                  65             73            205
tests/test_oauth_openrouter.py                                                                 62              9            205
gptme/tools/autocompact/engine.py                                                              41             58            204
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/server/session_models.py                                                                 57             69            202
tests/test_chats_json.py                                                                       30             17            202
gptme/eval/suites/practical7.py                                                                57             81            201
gptme/hooks/auto_snapshots.py                                                                  51             66            201
gptme/server/panels_api.py                                                                     51             51            201
gptme/util/sound.py                                                                            65             72            200
tests/test_tool_use.py                                                                         38             43            200
tests/test_subagent_unit.py                                                                    45             20            199
gptme/hooks/tests/test_active_context.py                                                       37             29            198
tests/test_tools_python.py                                                                     79             31            198
gptme/hooks/__init__.py                                                                        20             42            197
gptme/hooks/tests/test_server_elicit.py                                                        58             23            196
tests/test_github_ci_self_heal.py                                                              48              3            194
tests/test_eval_swebench.py                                                                    64             36            193
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/util/reduce.py                                                                           54             63            190
tests/test_telemetry.py                                                                        68             31            189
gptme/eval/agents/claude_code.py                                                               41             33            187
gptme/cli/cmd_batch.py                                                                         30              6            186
gptme/hooks/tests/test_server_confirm.py                                                       48             32            186
gptme/eval/suites/practical14.py                                                               64             52            185
gptme/tools/morph.py                                                                           43             49            185
tests/test_chats_stats.py                                                                      63             27            184
gptme/eval/swebench/evaluate.py                                                                35             41            183
gptme/commands/base.py                                                                         64             61            182
gptme/context/selector/file_selector.py                                                        50             61            179
tests/test_dspy_hybrid.py                                                                      65             45            179
tests/test_tools_tmux.py                                                                       77             65            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_cost_tracker.py                                                                     26             26            175
gptme/commands/session.py                                                                      58             47            174
gptme/llm/validate.py                                                                          30             29            174
tests/test_tools_todo.py                                                                       81             65            173
tests/test_chats_export.py                                                                     48             17            172
gptme/circuit_breaker.py                                                                       49             72            171
gptme/eval/suites/practical10.py                                                               55             65            171
gptme/tools/_browser_thread.py                                                                 32             10            171
tests/test_acp_types.py                                                                        35             12            171
tests/test_tools_patch.py                                                                      91            214            171
gptme/eval/agents/swebench.py                                                                  35             22            170
tests/test_util_cli_models.py                                                                  23             24            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_lessons_auto_include.py                                                             45             38            167
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
tests/test_tools_time_awareness.py                                                             52             34            163
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/config/cli_setup.py                                                                      31             42            157
tests/test_commands_account.py                                                                 37              6            156
gptme/hooks/types.py                                                                           91            127            155
gptme/util/__init__.py                                                                         34             29            155
gptme/eval/suites/practical15.py                                                               65             92            154
tests/test_eval_pass_rate_gate.py                                                              48              9            154
tests/test_shell_allowlist_autoconfirm.py                                                      38             38            154
gptme/server/api_v2_common.py                                                                  83             63            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                                                                             63             78            151
gptme/util/tool_format.py                                                                      48             75            151
tests/test_util_tree.py                                                                        44             33            151
gptme/tools/restart.py                                                                         53             83            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
gptme/hooks/token_awareness.py                                                                 47             46            146
gptme/cli/cmd_mcp.py                                                                           42             14            145
gptme/tools/form.py                                                                            42             64            145
tests/test_file_selector_integration.py                                                        50             23            145
tests/test_vent.py                                                                             32             10            145
gptme/commands/checkpoint.py                                                                   21              4            143
gptme/hooks/tests/test_aw_watcher_agent.py                                                     26              6            143
gptme/hooks/tests/test_injection_screening.py                                                  53              5            143
tests/test_gptme_provider.py                                                                   66             20            143
tests/test_util_tokens.py                                                                      72             35            143
gptme/lessons/auto_include.py                                                                  50             59            139
tests/test_dspy_integration.py                                                                 54             32            139
tests/test_tools_token_awareness.py                                                            59             47            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_content.py                                                                     49             25            137
gptme/hooks/agents_md_inject.py                                                                36             59            136
tests/test_llm_openai_sampling.py                                                              29              0            136
gptme/hooks/tool_target_instructions.py                                                        37             47            135
gptme/tools/elicit.py                                                                          39            121            135
tests/test_server_v2_tool_confirmation.py                                                      33             33            135
gptme/eval/swebench/utils.py                                                                   29             10            134
gptme/tools/subagent/types.py                                                                  47             65            134
gptme/llm/llm_gptme.py                                                                         51             64            133
gptme/server/api_v2_agents.py                                                                  25             17            132
gptme/eval/suites/practical17.py                                                               64            137            131
gptme/eval/suites/subagent.py                                                                  31             18            131
gptme/eval/suites/behavioral/minimal_feature_preserve_default_with_decoys.py                   41             72            130
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
gptme/hooks/tests/test_markdown_validation.py                                                  29             21            127
gptme/eval/suites/practical21.py                                                               76            184            126
tests/test_active_context.py                                                                   41             22            126
gptme/hooks/tests/test_cache_awareness.py                                                      47             34            125
tests/test_util_context_dedup.py                                                               61             43            125
gptme/eval/suites/behavioral/handle_specific_exception.py                                      15              8            123
gptme/hooks/form_autodetect.py                                                                 48             65            123
gptme/llm/models/types.py                                                                      50             62            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_server_webui_dir.py                                                                 59             21            121
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_eval_subagent.py                                                                    25             13            116
tests/test_llm_validate.py                                                                     26             20            116
gptme/config/core.py                                                                           40             33            115
gptme/plugins/registry.py                                                                      40             32            115
gptme/server/app.py                                                                            30             65            115
scripts/auto_rename_logs.py                                                                    34             23            115
gptme/eval/suites/practical18.py                                                               52            117            114
gptme/util/cost_tracker.py                                                                     46             69            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/hooks/tests/test_time_awareness.py                                                       36             11            111
gptme/util/export.py                                                                           26             29            111
gptme/hooks/confirm.py                                                                         53             88            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_tools_chats.py                                                                      26             19            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
gptme/tools/choice.py                                                                          34             41            104
scripts/train/collect.py                                                                       35             52            104
gptme/lessons/matcher.py                                                                       35             47            103
tests/test_tools_choice.py                                                                     51             26            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/behavioral/bounded_bugfix_with_decoys.py                                     55             93            101
gptme/eval/suites/behavioral/root_cause_pipeline_debug.py                                      48            117            101
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
gptme/tools/_anchored.py                                                                       33             41            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/swe_extra/run_swe_extra.py                                                          25             15             99
gptme/eval/suites/behavioral/implement_priority_queue.py                                       61            109             98
gptme/eval/suites/behavioral/optimize_n_squared.py                                             31             43             96
gptme/tools/screenshot.py                                                                      29             38             95
tests/test_session.py                                                                          40             21             95
gptme/tools/vent.py                                                                            39             64             93
gptme/prompts/chat_history.py                                                                  34             27             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
tests/test_server_cors.py                                                                      33             20             88
gptme/eval/suites/behavioral/circuit_breaker.py                                                53            118             87
gptme/util/tree.py                                                                             21             15             87
scripts/verify_cloudflare_pages_deep_links.py                                                  17              1             87
gptme/hooks/injection_screening.py                                                             21             23             86
gptme/hooks/time_awareness.py                                                                  32             29             86
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
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
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/eval/types.py                                                                            28             36             77
gptme/util/context_savings.py                                                                  20              6             77
tests/test_eval_timeouts.py                                                                    32             33             77
gptme/context/compress.py                                                                      63            131             76
gptme/server/tools_api.py                                                                      19             12             76
gptme/eval/pass_rate_gate.py                                                                   23             44             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                                                                          28             21             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/llm/models/__init__.py                                                                    3             12             62
gptme/util/_sound_cmd.py                                                                       22             17             62
gptme/eval/suites/behavioral/add_logging.py                                                    27             39             61
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_shell_output_mixing_issue408.py                                                     25             29             60
gptme/context/selector/rule_based.py                                                           20             13             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
tests/test_webui_redirects.py                                                                  11              7             57
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                                                                     18             11             54
gptme/hooks/mcp_namespace_hint.py                                                              21             24             54
tests/test_computer_artifacts.py                                                               14              3             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_github_bot.py                                                                       12              1             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
tests/test_cli_status.py                                                                       15              9             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/logmanager/__init__.py                                                                    3              9             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
gptme/hooks/test.py                                                                            14              6             41
tests/test_xml_format.py                                                                       19             68             41
gptme/tools/subagent/hooks.py                                                                  19             25             40
gptme/util/file_storage.py                                                                     30             47             40
gptme/context/selector/hybrid.py                                                               14             16             39
gptme/util/keyword_matching.py                                                                 35             66             39
tests/test_shell_fd_leak.py                                                                    23             16             39
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
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/__init__.py                                                                               8              3             27
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/util/conversation_ids.py                                                                  7              4             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/tools/_allowlist.py                                                                      10              3              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:                                                                                        43172          41298         152704
-------------------------------------------------------------------------------------------------------------------------------
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: 652
  Total blocks: 12092
  Average complexity: 3.6429043996030432

Most Complex Functions (D+):
  gptme/plugins/__init__.py
      F 154:0 _load_plugin - D
  gptme/context/selector/file_selector.py
  gptme/context/selector/rule_based.py
      M 27:4 RuleBasedSelector.select - D
  gptme/acp/agent.py
      M 521:4 GptmeAgent.new_session - D
      M 951:4 GptmeAgent.prompt - D
  gptme/server/session_step.py
  gptme/server/tasks_api.py
      F 380:0 get_git_status - D
  gptme/server/api_v2_sessions.py
      F 298:0 api_conversation_step - E
      F 565:0 api_conversation_tool_confirm - D
      F 924:0 api_conversation_transcript - D
  gptme/server/openapi_docs.py
      F 831:0 _convert_to_openapi_nullable - D
  gptme/server/api_v2.py
      F 1007:0 api_conversation_edit_message - E
      F 648:0 api_conversation_put - D
      F 821:0 api_conversation_post - D
      F 1374:0 api_conversation_config_patch - D
  gptme/server/api_v2_agents.py
      F 55:0 api_agents_put - D
  gptme/telemetry.py
      F 347:0 record_llm_request - E
  gptme/llm/llm_anthropic.py
      F 1231:0 _prepare_messages_for_api - D
  gptme/llm/llm_openai.py
      F 776:0 chat - E
      F 363:0 init - E
      F 1009:0 _stream_responses - D
      F 1165:0 stream - D
      F 1517:0 _transform_msgs_for_special_provider - D
      F 557:0 _handle_openai_transient_error - D
  gptme/llm/__init__.py
  gptme/llm/llm_openai_subscription.py
      F 500:0 stream - D
  gptme/llm/models/resolution.py
      F 165:0 get_model - E
  gptme/llm/models/listing.py
      F 282:0 list_models - D
  gptme/cli/main.py
  gptme/cli/cmd_skills.py
      F 17:0 skills_list - D
  gptme/cli/cmd_agents.py
      F 25:0 run_scan - D
  gptme/cli/cmd_hooks.py
      F 265:0 run - D
  gptme/cli/util.py
      F 1058:0 models_test - D
  gptme/config/core.py
      M 61:4 Config.mcp - D
  gptme/config/cli_setup.py
  gptme/config/chat.py
      M 83:4 ChatConfig.from_dict - 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/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 329: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 291:0 display_costs - D
      F 137:0 gather_conversation_costs - D
  gptme/lessons/index.py
      M 97:4 LessonIndex._default_dirs - E
      M 415:4 LessonIndex._load_manifest_skill_stubs - D
  gptme/lessons/parser.py
      F 266:0 parse_lesson - D
  gptme/lessons/installer.py
      F 239:0 install_skill - E
      F 506:0 check_dependencies - D
  gptme/hooks/token_awareness.py
      F 93:0 add_token_usage_warning - D
  gptme/hooks/registry.py
      M 177:4 HookRegistry.trigger - D
  gptme/hooks/tool_target_instructions.py
      F 67:0 _extract_paths - D
  gptme/hooks/cli_confirm.py
      F 162:0 _looks_like_diff - D
  gptme/info.py
      F 335:0 format_version_info - D
  gptme/agent/doctor.py
      F 337:0 check_lessons - E
  gptme/init.py
      F 111:0 init_model - D
  gptme/commands/checkpoint.py
      F 43:0 cmd_checkpoint - D
  gptme/commands/meta.py
      F 140:0 cmd_plugin - E
  gptme/commands/llm.py
      F 129:0 cmd_tools - D
      F 212:0 cmd_context - D
  gptme/eval/main.py
  gptme/eval/leaderboard.py
      F 915:0 compute_rate_trends - D
      F 679:0 aggregate_per_test - D
  gptme/eval/trends.py
      F 157:0 compute_diff - D
  gptme/eval/dspy/hybrid_optimizer.py
      C 239:0 TaskComplexity - D
      M 283:4 TaskComplexity.analyze - D
  gptme/eval/run.py
      F 289:0 execute - D
  gptme/eval/suites/practical16.py
      F 68:0 check_queue_all_producers_mentioned - D
  gptme/chat.py
      F 332:0 _process_message_conversation - D
      F 175:0 _run_chat_loop - D
  gptme/codeblock.py
  gptme/tools/tmux.py
      F 423:0 execute_tmux - D
  gptme/tools/shell_background.py
      M 56:4 BackgroundJob._read_output - D
  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/computer.py
      F 598:0 computer - E
  gptme/tools/chats.py
  gptme/tools/complete.py
      F 271:0 stuck_detect_hook - D
  gptme/tools/gh.py
      F 549:0 execute_gh - E
      F 99:0 _wait_for_checks - D
  gptme/tools/__init__.py
      F 214:0 get_toolchain - D
      F 139:0 init_tools - D
  gptme/tools/subagent/execution.py
      F 98:0 _create_subagent_thread - D
  gptme/tools/subagent/api.py
      F 34:0 subagent - D
  gptme/tools/autocompact/engine.py
  gptme/tools/mcp.py
  gptme/tools/lessons.py
      F 244:0 auto_include_lessons_hook - D
  tests/test_server_v2_auto_stepping.py
      F 16:0 test_auto_stepping - E
  tests/test_eval_behavioral_solutions.py
      F 55:0 _apply_solution - E
  tests/test_server_v2_tool_confirmation.py
      F 15:0 test_tool_confirmation_flow - D
  tests/test_util_cli.py
      F 363:0 test_tools_list - D
      F 509:0 test_models_list - D
  tests/test_config.py
      F 596:0 test_project_config_loaded_from_toml - D
      F 633:0 test_project_config_loaded_from_json - D
  scripts/auto_rename_logs.py
      F 32:0 auto_rename_logs - D
  scripts/demo_capture.py
      F 485:0 main - D
  scripts/check_rst_formatting.py
      F 26:0 check_file - E
  scripts/github_bot.py
      F 555:0 main - D

Largest Files (>300 SLOC):
  2249 tests/test_eval_behavioral.py
  2237 tests/test_server_v2.py
  1957 tests/test_llm_openai.py
  1491 gptme/server/api_v2.py
  1476 tests/test_init.py
  1426 gptme/tools/shell.py
  1358 gptme/llm/llm_openai.py
  1280 tests/test_tools_subagent.py
  1269 tests/test_tools_shell.py
  1178 gptme/util/gh.py
  1178 gptme/hooks/workspace_agents.py
  1174 gptme/eval/leaderboard.py
  1127 tests/test_eval_behavioral_solutions.py
  1075 tests/test_acp_agent.py
  1065 tests/test_config.py
  1059 tests/test_util_gh.py
   983 gptme/acp/agent.py
   973 tests/test_server_v2_sessions.py
   960 gptme/hooks/tests/test_workspace_agents.py
   949 gptme/cli/util.py
   947 gptme/eval/dspy/tasks.py
   937 tests/test_cli.py
   934 gptme/cli/main.py
   889 tests/test_eval_leaderboard.py
   885 gptme/llm/llm_anthropic.py
   878 tests/test_info.py
   869 tests/test_codeblock.py
   866 gptme/eval/main.py
   817 tests/test_llm_utils.py
   789 gptme/server/api_v2_sessions.py
   784 tests/test_util_gh_mocked.py
   772 tests/test_util_cli.py
   765 gptme/server/session_step.py
   736 tests/test_tasks_api.py
   722 tests/test_server_workspace.py
   715 gptme/eval/suites/basic.py
   705 gptme/server/openapi_docs.py
   701 tests/test_agent.py
   698 gptme/cli/doctor.py
   697 tests/test_tools_browser.py
   696 tests/test_hooks_registry.py
   681 tests/test_acp_session_runtime.py
   677 gptme/tools/browser.py
   675 tests/test_tools_gh.py
   666 gptme/tools/computer.py
   659 tests/test_prompt_templates.py
   643 gptme/server/tasks_api.py
   622 gptme/llm/__init__.py
   619 tests/test_llm_anthropic.py
   615 gptme/util/context.py
   612 tests/test_lessons.py
   612 gptme/tools/mcp_adapter.py
   611 tests/test_json_output.py
   610 scripts/github_bot.py
   609 gptme/tools/base.py
   603 tests/test_auto_compact.py
   598 tests/test_cost_display.py
   595 tests/test_doctor.py
   593 gptme/tools/gh.py
   588 gptme/cli/setup.py
   583 tests/test_tools_computer.py
   580 tests/test_tools_lessons.py
   578 tests/test_tools_precommit.py
   576 tests/test_lessons_parser.py
   575 tests/test_llm_models_resolution.py
   573 tests/test_skill_installer.py
   551 tests/test_server_panels.py
   547 tests/test_eval.py
   542 gptme/logmanager/manager.py
   539 tests/test_server_path_traversal.py
   533 gptme/tools/_browser_playwright.py
   532 tests/test_tools_base.py
   526 gptme/eval/execenv.py
   517 gptme/llm/models/data.py
   516 tests/test_hooks_cost_awareness.py
   515 gptme/eval/run.py
   514 tests/test_chat.py
   513 gptme/lessons/installer.py
   498 gptme/llm/llm_openai_subscription.py
   492 gptme/hooks/registry.py
   484 tests/test_hooks_cache_awareness.py
   483 gptme/tools/tmux.py
   482 tests/test_computer_transport.py
   477 scripts/github_ci_self_heal.py
   476 tests/test_tools_complete.py
   476 tests/test_llm_auth.py
   473 tests/test_server_bad_input.py
   466 tests/test_server_session_models.py
   466 gptme/tools/computer_transport.py
   463 tests/test_commands.py
   456 tests/test_tools_shell_background.py
   451 scripts/demo_capture.py
   445 scripts/analyze_compression.py
   445 gptme/tools/chats.py
   442 gptme/server/workspace_api.py
   438 gptme/chat.py
   437 tests/test_lessons_index.py
   430 gptme/util/prompt.py
   422 tests/test_lessons_commands.py
   421 tests/test_dirs.py
   421 gptme/eval/dspy/prompt_optimizer.py
   420 tests/test_tools_patch_many.py
   419 gptme/agent/service.py
   418 tests/context/test_task_analyzer.py
   414 gptme/message.py
   409 tests/test_message.py
   407 gptme/util/_telemetry.py
   406 gptme/tools/subagent/api.py
   399 tests/test_tools_shell_validation.py
   398 tests/test_tools_mcp.py
   395 tests/test_hybrid_lessons.py
   395 gptme/agent/workspace.py
   395 gptme/agent/cli.py
   394 gptme/telemetry.py
   387 gptme/agent/doctor.py
   385 gptme/lessons/index.py
   383 tests/test_util_hooks.py
   380 tests/test_util_cli_mcp.py
   377 gptme/cli/cmd_init.py
   374 gptme/cli/cmd_hooks.py
   372 tests/test_lessons_matcher.py
   369 tests/test_workspace_api.py
   367 gptme/hooks/tests/test_cost_awareness.py
   364 gptme/eval/dspy/cli.py
   356 tests/test_mcp_discovery.py
   355 gptme/eval/dspy/experiments.py
   354 tests/test_profiles.py
   352 gptme/tools/mcp.py
   350 gptme/eval/dspy/metrics.py
   347 tests/test_server.py
   346 tests/test_tools_patch.py
   346 tests/lessons/test_wildcard_matching.py
   344 gptme/tools/subagent/execution.py
   343 gptme/hooks/tests/test_elicitation.py
   342 tests/test_shell_background.py
   341 tests/test_unified_plugins.py
   338 tests/test_tools.py
   337 tests/test_provider_plugins.py
   337 gptme/cli/cmd_chats.py
   336 tests/test_eval_trends.py
   335 tests/conftest.py
   329 tests/test_workspace_agents.py
   327 gptme/hooks/tests/test_agents_md_inject.py
   326 gptme/eval/suites/practical.py
   324 gptme/util/cost_display.py
   322 tests/test_util_tool_format.py
   322 tests/test_circuit_breaker.py
   321 gptme/tools/python.py
   320 gptme/checkpoint.py
   319 gptme/hooks/tests/test_tool_target_instructions.py
   318 tests/test_agent_doctor.py
   317 gptme/eval/suites/practical16.py
   316 gptme/eval/trends.py
   314 gptme/server/artifacts_api.py
   313 tests/test_mcp_adapter.py
   313 gptme/tools/__init__.py
   310 tests/test_tools_morph.py
   309 gptme/tools/patch.py
   309 gptme/hooks/tests/test_confirm.py
   307 gptme/mcp/client.py
   303 gptme/prompts/templates.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.4
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 [237:17 - 247:39] (10 lines, 92 tokens)
   gptme/tools/autocompact/engine.py [186:13 - 196: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 [331:5 - 345:8] (14 lines, 93 tokens)
   gptme/tools/save.py [132:5 - 146: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/server/workspace_api.py [66:5 - 73:25] (7 lines, 94 tokens)
   gptme/server/workspace_api.py [45:68 - 52:23]

Clone found (python):
 - gptme/server/workspace_api.py [594:9 - 616:15] (22 lines, 230 tokens)
   gptme/server/workspace_api.py [516:9 - 538: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/tasks_api.py [835:5 - 841:43] (6 lines, 77 tokens)
   gptme/server/tasks_api.py [717:5 - 723:7]

Clone found (python):
 - gptme/server/session_models.py [286:29 - 300:60] (14 lines, 118 tokens)
   gptme/server/session_models.py [230:25 - 243:25]

Clone found (python):
 - gptme/server/session_models.py [309:17 - 325:45] (16 lines, 104 tokens)
   gptme/server/session_models.py [255:21 - 271: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_agents.py [57:5 - 63:15] (6 lines, 77 tokens)
   gptme/server/tasks_api.py [717:5 - 723:7]

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 [348:32 - 354:38] (6 lines, 75 tokens)
   gptme/llm/models/listing.py [175:21 - 181:27]

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

Clone found (python):
 - gptme/llm/models/data.py [128:33 - 139:35] (11 lines, 88 tokens)
   gptme/llm/models/data.py [117:35 - 128: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/llm/__init__.py [459:12 - 467:25] (8 lines, 98 tokens)
   gptme/llm/__init__.py [354:19 - 362:11]

Clone found (python):
 - gptme/llm/__init__.py [530:21 - 537:14] (7 lines, 101 tokens)
   gptme/llm/__init__.py [250:21 - 257:7]

Clone found (python):
 - gptme/hooks/tests/test_tool_target_instructions.py [157:32 - 164:67] (7 lines, 84 tokens)
   gptme/hooks/tests/test_tool_target_instructions.py [134:31 - 141:72]

Clone found (python):
 - gptme/hooks/tests/test_tool_target_instructions.py [260:36 - 270:42] (10 lines, 91 tokens)
   gptme/hooks/tests/test_tool_target_instructions.py [132:43 - 140:63]

Clone found (python):
 - gptme/hooks/tests/test_time_awareness.py [132:32 - 138:23] (6 lines, 77 tokens)
   gptme/hooks/tests/test_time_awareness.py [114:36 - 120:22]

Clone found (python):
 - gptme/hooks/tests/test_time_awareness.py [146:31 - 152:22] (6 lines, 77 tokens)
   gptme/hooks/tests/test_time_awareness.py [114:36 - 120: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/suites/behavioral/add_feature_preserve_default.py [61:5 - 82:5] (21 lines, 170 tokens)
   gptme/eval/suites/behavioral/minimal_feature_preserve_default_with_decoys.py [112:5 - 133:4]

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 [134:13 - 143:16] (9 lines, 93 tokens)
   gptme/eval/agents/swebench.py [110:9 - 117: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/doctor.py [253:47 - 268:47] (15 lines, 97 tokens)
   gptme/cli/doctor.py [231:37 - 246:45]

Clone found (python):
 - gptme/cli/cmd_chats.py [111:24 - 124:9] (13 lines, 88 tokens)
   gptme/cli/cmd_chats.py [71:22 - 84:17]

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 [57:24 - 80:8] (23 lines, 106 tokens)
   gptme/util/_telemetry.py [326:34 - 349:11]

Clone found (python):
 - gptme/telemetry.py [506:5 - 517:19] (11 lines, 90 tokens)
   gptme/telemetry.py [110:9 - 121:22]

Clone found (python):
 - gptme/__init__.py [20:44 - 31: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     │ 379            │ 102580      │ 632435       │ 65           │ 799 (0.78%)      │ 6700 (1.06%)      │
├────────────┼────────────────┼─────────────┼──────────────┼──────────────┼──────────────────┼───────────────────┤
│ css        │ 3              │ 225         │ 1446         │ 0            │ 0 (0%)           │ 0 (0%)            │
├────────────┼────────────────┼─────────────┼──────────────┼──────────────┼──────────────────┼───────────────────┤
│ javascript │ 3              │ 653         │ 5990         │ 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       │ 16             │ 1312        │ 5317         │ 0            │ 0 (0%)           │ 0 (0%)            │
├────────────┼────────────────┼─────────────┼──────────────┼──────────────┼──────────────────┼───────────────────┤
│ toml       │ 1              │ 137         │ 326          │ 0            │ 0 (0%)           │ 0 (0%)            │
├────────────┼────────────────┼─────────────┼──────────────┼──────────────┼──────────────────┼───────────────────┤
│ Total:     │ 415            │ 106198      │ 656833       │ 65           │ 799 (0.75%)      │ 6700 (1.02%)      │
└────────────┴────────────────┴─────────────┴──────────────┴──────────────┴──────────────────┴───────────────────┘
Found 65 clones.
time: 4.656s
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