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
78512 | prompt_toolkit
80300 | gptme.util.prompt
103543 | gptme.message
120025 | gptme.cli.main
133465 | gptme.tools
148888 | gptme.config.cli_setup
182916 | gptme.config
191401 | gptme.llm
264742 | gptme.commands
349947 | gptme.chat
real 0m1.375s
user 0m1.145s
sys 0m0.195s
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
Benchmark 1: import gptme.cli.main
Time (mean ± σ): 138.9 ms ± 1.8 ms [User: 118.5 ms, System: 20.4 ms]
Range (min … max): 136.6 ms … 142.7 ms 10 runs
Benchmark 2: gptme --help
Time (mean ± σ): 591.5 ms ± 12.6 ms [User: 525.5 ms, System: 65.7 ms]
Range (min … max): 575.8 ms … 621.8 ms 10 runs
Benchmark 3: full start/exit cycle
Time (mean ± σ): 1.047 s ± 0.017 s [User: 0.839 s, System: 0.562 s]
Range (min … max): 1.029 s … 1.076 s 10 runs
Summary
import gptme.cli.main ran
4.26 ± 0.11 times faster than gptme --help
7.54 ± 0.16 times faster than full start/exit cycle
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 326 472 1728
gptme/util/gh.py 243 301 1213
gptme/tools/base.py 195 296 960
gptme/llm/llm_anthropic.py 225 325 959
gptme/llm/__init__.py 159 292 824
gptme/util/context.py 159 243 717
gptme/chat.py 94 190 587
gptme/util/capabilities_export.py 60 71 560
gptme/tools/__init__.py 127 147 520
gptme/llm/llm_openai_subscription.py 125 122 517
gptme/lessons/installer.py 146 165 496
gptme/codeblock.py 62 301 476
gptme/message.py 122 207 464
gptme/util/reduce.py 98 163 458
gptme/telemetry.py 98 60 435
gptme/util/_telemetry.py 110 157 432
gptme/lessons/auto_include.py 108 210 418
gptme/util/prompt.py 102 151 412
gptme/util/cost_display.py 81 80 406
gptme/lessons/index.py 120 135 392
gptme/workspace_snapshot.py 53 64 386
gptme/llm/openai_responses.py 80 26 384
gptme/init.py 68 113 372
gptme/info.py 98 80 365
gptme/lessons/hybrid_matcher.py 122 162 364
gptme/llm/llm_grok_subscription.py 93 74 359
gptme/llm/llm_openai_models.py 6 49 355
gptme/llm/local_discovery.py 64 35 351
gptme/sandbox.py 95 208 349
gptme/util/safety.py 57 63 330
gptme/checkpoint.py 79 49 321
gptme/attestation.py 71 2 301
gptme/plugins/__init__.py 101 133 295
gptme/llm/validate.py 43 64 277
gptme/util/tool_display.py 36 23 273
gptme/profiles.py 66 68 268
gptme/knowledge.py 70 80 252
gptme/anti_slop.py 40 62 242
gptme/util/auto_naming.py 68 78 236
gptme/util/review.py 70 129 231
gptme/lessons/parser.py 74 119 226
gptme/hooks/__init__.py 22 50 224
gptme/lessons/commands.py 91 48 219
gptme/util/_sound_sounddevice.py 57 50 218
gptme/model_attestation.py 63 78 209
gptme/lessons/skill_events.py 33 26 208
gptme/util/sound.py 65 72 200
gptme/circuit_breaker.py 49 72 171
gptme/util/git_worktree.py 40 67 169
gptme/util/tool_format.py 48 76 169
gptme/llm/llm_gptme.py 64 112 164
gptme/util/cost_tracker.py 56 98 164
gptme/llm/utils.py 56 92 159
gptme/util/tokens.py 46 69 159
gptme/dirs.py 72 99 157
gptme/llm/llm_openai_models_deprecated.py 5 14 157
gptme/util/__init__.py 34 29 157
gptme/util/clipboard.py 22 12 147
gptme/lessons/skill_commands.py 47 58 144
gptme/util/replay.py 42 49 129
gptme/k_best.py 34 40 125
gptme/prompt_queue.py 41 21 121
gptme/util/ask_execute.py 26 44 116
gptme/util/export.py 26 29 111
gptme/lessons/matcher.py 35 47 103
gptme/__version__.py 21 17 99
gptme/llm/llm_openrouter_subscription.py 35 37 99
gptme/util/tree.py 21 15 87
gptme/util/context_savings.py 20 6 77
gptme/gears.py 16 4 76
gptme/util/output_storage.py 29 37 71
gptme/llm/llm_anthropic_models_deprecated.py 5 11 70
gptme/llm/retry_abort.py 24 66 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/llm/retry_policy.py 19 24 60
gptme/util/uri.py 29 42 59
gptme/util/cost.py 20 21 55
gptme/util/history.py 17 7 55
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/status_provider.py 24 60 47
gptme/llm/llm_mock.py 16 22 41
gptme/util/file_storage.py 30 47 40
gptme/util/keyword_matching.py 35 66 39
gptme/__init__.py 8 3 36
gptme/util/content.py 18 24 30
gptme/util/install.py 13 25 30
gptme/constants.py 21 29 29
gptme/util/git_cmd.py 12 30 29
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 21
gptme/__main__.py 2 0 12
gptme/util/stdio.py 8 9 12
gptme/llm/constants.py 2 6 5
-----------------------------------------------------------------------------------------------
SUM: 6007 8085 25229
-----------------------------------------------------------------------------------------------
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 326 472 1728
gptme/llm/llm_anthropic.py 225 325 959
gptme/llm/__init__.py 159 292 824
gptme/llm/llm_openai_subscription.py 125 122 517
gptme/llm/openai_responses.py 80 26 384
gptme/llm/llm_grok_subscription.py 93 74 359
gptme/llm/llm_openai_models.py 6 49 355
gptme/llm/local_discovery.py 64 35 351
gptme/llm/validate.py 43 64 277
gptme/llm/llm_gptme.py 64 112 164
gptme/llm/utils.py 56 92 159
gptme/llm/llm_openai_models_deprecated.py 5 14 157
gptme/llm/llm_openrouter_subscription.py 35 37 99
gptme/llm/llm_anthropic_models_deprecated.py 5 11 70
gptme/llm/retry_abort.py 24 66 70
gptme/llm/retry_policy.py 19 24 60
gptme/llm/provider_plugins.py 39 35 48
gptme/llm/llm_mock.py 16 22 41
gptme/llm/constants.py 2 6 5
-----------------------------------------------------------------------------------------------
SUM: 1386 1878 6627
-----------------------------------------------------------------------------------------------
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 339 553 2276
gptme/tools/computer.py 437 864 1659
gptme/hooks/workspace_agents.py 238 153 1255
gptme/tools/base.py 195 296 960
gptme/tools/convert.py 136 85 793
gptme/tools/mcp_adapter.py 235 227 710
gptme/tools/chats.py 135 175 706
gptme/tools/browser.py 274 436 673
gptme/tools/_browser_playwright.py 234 276 665
gptme/tools/complete.py 103 170 572
gptme/tools/computer_transport.py 151 125 567
gptme/tools/gh.py 120 122 538
gptme/tools/__init__.py 127 147 520
gptme/hooks/registry.py 102 82 502
gptme/tools/hashline_edit.py 126 383 502
gptme/tools/shell_validation.py 131 333 476
gptme/tools/shell_background.py 96 77 455
gptme/tools/tmux.py 98 170 398
gptme/tools/python.py 98 131 393
gptme/tools/mcp.py 103 103 337
gptme/hooks/cost_awareness.py 83 79 334
gptme/tools/shell_flags.py 60 257 315
gptme/tools/read.py 57 79 311
gptme/tools/_browser_thread.py 57 68 297
gptme/plugins/__init__.py 101 133 295
gptme/tools/lessons.py 106 117 278
gptme/tools/save.py 63 63 276
gptme/tools/patch.py 63 95 271
gptme/tools/rag.py 89 131 246
gptme/tools/patch_many.py 56 62 243
gptme/tools/todo.py 96 104 232
gptme/tools/precommit.py 76 96 230
gptme/hooks/__init__.py 22 50 224
gptme/hooks/aw_watcher_agent.py 49 21 217
gptme/hooks/elicitation.py 90 132 213
gptme/hooks/auto_snapshots.py 51 66 201
gptme/hooks/guardrails.py 65 84 195
gptme/hooks/manifest.py 43 41 190
gptme/hooks/script.py 21 8 189
gptme/tools/pruner.py 44 0 188
gptme/tools/morph.py 43 49 185
gptme/tools/request_tool_change.py 35 33 173
gptme/tools/patch_anchored.py 54 79 172
gptme/hooks/cache_awareness.py 118 186 168
gptme/hooks/types.py 96 136 163
gptme/hooks/cli_confirm.py 52 59 156
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 63 137
gptme/hooks/tool_target_instructions.py 37 47 135
gptme/tools/elicit.py 40 121 135
gptme/hooks/injection_screening.py 31 34 130
gptme/hooks/confirm.py 57 95 124
gptme/hooks/form_autodetect.py 48 65 123
gptme/hooks/server_confirm.py 51 58 122
gptme/plugins/registry.py 40 35 116
gptme/hooks/server_elicit.py 52 56 113
gptme/tools/computer_semantic.py 61 129 110
gptme/tools/choice.py 34 41 104
gptme/hooks/active_context.py 25 23 100
gptme/tools/_anchored.py 33 41 100
gptme/tools/_computer_gate.py 33 61 100
gptme/tools/screenshot.py 30 45 100
gptme/tools/vision.py 35 36 99
gptme/tools/vent.py 39 64 93
gptme/hooks/knowledge_inject.py 21 37 90
gptme/tools/memory.py 34 40 88
gptme/hooks/time_awareness.py 32 29 86
gptme/tools/_browser_lynx.py 11 8 84
gptme/tools/autocommit.py 38 58 81
gptme/tools/progress.py 23 53 73
gptme/plugins/entrypoints.py 24 35 69
gptme/tools/_browser_perplexity.py 22 16 60
gptme/tools/clarify.py 17 26 57
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/tools/_allowlist.py 18 15 48
gptme/hooks/test.py 14 6 41
gptme/hooks/cwd_awareness.py 11 17 28
gptme/hooks/auto_confirm.py 11 9 24
gptme/tools/_hashline_snapshot.py 16 15 23
gptme/tools/_url_safety.py 9 10 22
gptme/plugins/plugin.py 25 39 17
gptme/tools/_browser_format.py 3 5 3
------------------------------------------------------------------------------------------
SUM: 6396 8837 24354
------------------------------------------------------------------------------------------
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 480 428 2829
gptme/server/session_step.py 176 342 1031
gptme/server/api_v2_sessions.py 119 175 899
gptme/server/openapi_docs.py 256 177 766
gptme/server/tasks_api.py 193 130 680
gptme/server/a2a_api.py 103 42 544
gptme/server/artifacts_api.py 107 110 538
gptme/server/static/main.js 51 69 498
gptme/server/workspace_api.py 100 110 486
gptme/server/external_sessions.py 59 92 372
gptme/server/cli.py 52 95 294
gptme/server/session_models.py 69 111 294
gptme/server/preview_proxy_api.py 82 125 288
gptme/server/tools_api.py 58 49 249
gptme/server/static/computer.html 12 3 237
gptme/server/auth.py 76 118 206
gptme/server/panels_api.py 51 51 203
gptme/server/computer_api.py 51 55 202
gptme/server/static/index.html 11 18 201
gptme/server/acp_session_runtime.py 34 30 165
gptme/server/api_v2_common.py 83 63 156
gptme/server/client.py 63 79 149
gptme/server/static/style.css 27 4 143
gptme/server/api_v2_agents.py 25 17 139
gptme/server/app.py 35 84 135
gptme/server/skills_api.py 32 4 125
gptme/server/metrics.py 36 19 117
gptme/server/tts_api.py 24 18 90
gptme/server/__init__.py 5 8 9
gptme/server/constants.py 7 11 9
gptme/server/__main__.py 1 0 3
--------------------------------------------------------------------------------------
SUM: 2478 2637 12057
--------------------------------------------------------------------------------------
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_subagent_unit.py 1375 630 5181
tests/test_server_v2.py 844 326 3550
tests/test_llm_openai.py 713 434 2860
tests/test_tools_subagent.py 859 443 2839
tests/test_util_review.py 478 329 2035
tests/test_server_v2_sessions.py 267 225 1693
tests/test_tools_shell.py 494 483 1677
tests/test_init.py 258 147 1599
tests/test_cli.py 427 168 1571
tests/test_config.py 420 490 1472
tests/test_acp_agent.py 400 196 1458
tests/test_eval_behavioral.py 867 967 1357
tests/test_util_cli_review_watch.py 317 189 1283
tests/test_tools_computer.py 438 269 1258
tests/test_util_gh.py 260 172 1172
tests/test_tools_shell_validation.py 365 248 1169
tests/test_server.py 297 202 1126
tests/test_llm_utils.py 311 139 1088
tests/test_doctor.py 266 141 1055
tests/test_tools_complete.py 218 253 1017
tests/test_tools_base.py 331 112 1010
tests/test_reduce.py 283 248 997
tests/test_memory_store.py 152 59 981
tests/test_tools_browser.py 316 74 980
tests/test_util_cli.py 256 181 977
tests/test_info.py 183 78 972
tests/test_codeblock.py 432 934 965
tests/test_tui.py 251 122 954
tests/test_lessons_auto_include.py 252 217 938
tests/test_cmd_service.py 207 184 909
tests/test_auto_compact.py 352 272 894
tests/test_eval_leaderboard.py 126 104 883
tests/test_tools_convert.py 265 117 864
tests/test_computer_audit.py 231 157 846
tests/test_tasks_api.py 185 69 831
tests/test_eval_computer_suite.py 328 149 819
tests/test_shell_background.py 197 90 816
tests/test_util_gh_mocked.py 155 121 814
tests/test_prompt_templates.py 260 191 811
tests/test_sandbox.py 195 105 801
tests/test_chat.py 290 206 797
tests/test_cost_display.py 110 68 776
tests/test_server_workspace.py 149 154 743
tests/test_tools_hashline_edit.py 213 445 725
tests/test_computer_transport.py 267 91 713
tests/test_tools_gh.py 152 90 713
tests/test_eval.py 131 84 709
tests/test_agent.py 205 115 707
tests/test_acp_session_runtime.py 222 76 699
tests/test_hooks_registry.py 247 89 696
tests/test_llm_anthropic.py 153 51 691
tests/test_logmanager.py 195 143 670
tests/test_llm_models_resolution.py 222 179 666
tests/test_json_output.py 114 84 640
tests/test_cli_status.py 244 137 633
tests/test_subagent_budget.py 166 144 626
tests/test_prompts.py 179 109 609
tests/test_computer_doctor_cmd.py 88 58 607
tests/test_message.py 205 130 599
tests/test_mcp_server.py 138 43 594
tests/test_tools_lessons.py 135 49 580
tests/test_tools_precommit.py 109 86 578
tests/test_tools_request_tool_change.py 117 43 578
tests/test_llm_openai_subscription.py 134 61 567
tests/test_server_panels.py 61 30 552
tests/test_memory_index_policy.py 98 39 551
tests/test_eval_subagent.py 119 56 547
tests/test_computer_actions.py 165 125 546
tests/test_subagent_persistence.py 68 1 543
tests/test_server_path_traversal.py 139 105 539
tests/test_model_attestation.py 115 30 537
tests/test_dirs.py 127 89 531
tests/test_cc_memory.py 113 108 530
tests/test_hooks_cost_awareness.py 73 61 525
tests/conftest.py 141 221 521
tests/test_server_bad_input.py 121 101 519
tests/test_context.py 213 101 518
tests/test_lessons.py 156 153 517
tests/test_commands.py 161 73 514
tests/test_capabilities_export.py 65 27 506
tests/test_context_scout.py 78 54 501
tests/test_tools.py 200 108 498
tests/test_gptme_provider.py 162 71 494
tests/test_hooks_cache_awareness.py 151 44 484
tests/test_computer_demo_cmd.py 144 74 480
tests/test_eventlog.py 117 48 476
tests/test_snapshot_command.py 117 57 476
tests/test_server_session_models.py 161 141 475
tests/test_llm_models.py 149 108 472
tests/test_skill_installer.py 138 154 459
tests/test_llm_auth.py 153 55 458
tests/test_server_skill_events.py 55 4 446
tests/test_util_cli_providers.py 93 42 438
tests/test_knowledge.py 185 20 429
tests/test_tools_browser_thread.py 113 51 425
tests/test_lessons_commands.py 157 82 422
tests/test_external_sessions.py 116 67 421
tests/test_lessons_index.py 137 116 419
tests/context/test_task_analyzer.py 90 44 418
tests/test_util_cli_mcp.py 98 50 418
tests/test_lessons_parser.py 188 239 417
tests/test_server_artifacts.py 66 32 415
tests/test_subagent_worktree_isolation.py 129 70 414
tests/test_tools_mcp.py 102 20 398
tests/test_hybrid_lessons.py 100 58 395
tests/test_profiles.py 88 37 395
tests/test_computer_latency_cmd.py 93 42 393
tests/test_dataset.py 127 38 381
tests/test_guardrail_hook.py 95 74 377
tests/test_unified_plugins.py 102 42 376
tests/test_mcp_adapter.py 124 61 373
tests/test_conversations.py 51 33 371
tests/test_github_ci_self_heal.py 71 6 371
tests/test_server_v2_agents.py 67 28 370
tests/test_tools_read.py 121 52 370
tests/test_workspace_api.py 103 19 369
tests/test_provider_plugins.py 93 33 366
tests/test_computer_record.py 119 30 364
tests/test_eval_behavioral_solutions.py 281 848 364
tests/test_cost_tracker.py 44 26 361
tests/test_replay.py 120 110 361
tests/test_context_providers.py 183 121 356
tests/test_mcp_discovery.py 107 41 356
tests/test_lessons_matcher.py 99 86 352
tests/test_computer_use_integration.py 140 143 349
tests/test_tui_e2e.py 63 82 348
tests/test_util_hooks.py 85 93 347
tests/test_complete.py 81 72 345
tests/test_tools_patch_many.py 91 101 345
tests/test_skill_commands.py 113 49 342
tests/test_computer_semantic_fixtures.py 92 107 340
tests/test_search_alias.py 56 61 337
tests/test_script_hooks.py 55 7 336
tests/test_eval_trends.py 35 22 335
tests/test_llm_grok_subscription.py 98 20 330
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_ephemeral.py 87 56 321
tests/test_llm_validate.py 64 61 321
tests/test_mcp.py 94 62 321
tests/test_util_safety.py 96 22 321
tests/test_workspace_snapshot.py 105 46 319
tests/test_agent_doctor.py 72 34 318
tests/test_preview_proxy.py 91 43 315
tests/test_skill_metrics.py 38 2 312
tests/test_tools_morph.py 89 67 311
tests/test_util_cli_batch.py 62 8 310
tests/test_chats_external_search.py 72 55 307
tests/test_browser.py 140 71 305
tests/test_tools_rag.py 95 37 301
tests/test_config_encoding.py 154 195 300
tests/context/test_adaptive_compressor.py 58 44 298
tests/test_eval_swebench.py 78 41 294
tests/test_plugins.py 110 85 292
tests/test_chats_stats.py 72 30 291
tests/test_llm_openai_reasoning_effort.py 81 19 289
tests/test_execenv.py 76 54 288
tests/lessons/test_wildcard_matching.py 114 125 287
tests/test_server_a2a.py 64 20 283
tests/test_hooks_server_confirm.py 78 31 282
tests/test_server_v2_auto_stepping.py 56 50 281
tests/test_tools_patch_anchored.py 65 26 278
tests/test_auto_naming.py 80 48 277
tests/test_computer_video_frames_cli.py 67 12 274
tests/test_tool_conditionals.py 89 1 274
tests/test_tools_restart.py 72 49 274
tests/test_util_tokens.py 129 71 273
tests/test_hooks.py 130 49 271
tests/test_telemetry.py 77 85 270
tests/test_util_cli_attest.py 67 1 269
tests/test_computer_docker_config.py 59 92 267
tests/lessons/test_bm25_parity.py 67 70 266
tests/test_server_startup.py 39 65 261
tests/test_tools_autocommit.py 99 47 259
tests/test_terminal_startup_latency.py 77 32 257
tests/test_tool_use.py 60 66 255
tests/test_context_selector.py 83 45 254
tests/test_eval_claude_code.py 66 27 253
tests/test_lessons_integration.py 97 66 252
tests/test_prompt_tools.py 57 30 249
tests/test_tools_screenshot.py 59 52 249
tests/test_skill_events.py 49 2 246
tests/test_track_tokens.py 63 29 245
tests/test_local_discovery.py 63 18 242
tests/test_agents_md_inject.py 43 37 241
tests/test_cli_from_turn.py 65 18 239
tests/test_computer_x11_integration.py 87 87 236
tests/test_cli_stats.py 62 27 234
tests/test_onboard.py 56 49 232
tests/test_shell_allowlist_autoconfirm.py 58 62 231
tests/test_tools__anchored.py 46 30 230
tests/test_computer_settle.py 90 78 228
tests/test_hooks_cwd_changed.py 55 24 227
tests/test_chats_json.py 32 17 225
tests/test_git_worktree.py 57 37 224
tests/test_tools_python.py 93 60 224
tests/test_util_keyword_matching.py 75 46 218
tests/test_lessons_tool.py 62 34 216
tests/test_llm_retry_abort.py 85 62 216
tests/test_subagent_roundtrip.py 70 51 216
tests/test_hooks_knowledge_inject.py 64 6 214
tests/test_llm_openai_sampling.py 42 0 214
tests/test_cli_resume.py 64 15 212
tests/test_config_trust.py 94 43 212
tests/test_checkpoint.py 88 20 211
tests/test_server_fresh_bad_input.py 43 38 211
tests/test_autocompact_scoring.py 86 39 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_shell_stream_oneshot.py 71 44 204
tests/test_util_file_storage.py 51 36 203
tests/test_tui_skill_events.py 22 4 202
tests/test_tutorial.py 85 7 200
tests/test_util_cli_models.py 31 27 199
tests/test_cli_fatal_error_envelope.py 41 37 194
tests/test_tools_save.py 57 36 193
tests/test_chats_clean.py 46 18 191
tests/test_server_tools_query.py 54 35 191
tests/test_acp_client.py 69 34 190
tests/test_computer_task.py 116 31 189
tests/test_computer_screenshot_cli.py 53 12 183
tests/test_fold_mid_system.py 74 43 183
tests/test_k_best.py 76 23 182
tests/test_memory_tool.py 38 11 181
tests/test_dspy_hybrid.py 65 45 179
tests/test_foreground_output_dedup.py 37 15 179
tests/test_tools_tmux.py 77 65 179
tests/test_dspy_basic.py 66 44 177
tests/test_execute_msg_hook_call_id.py 65 49 176
tests/test_browser_lynx.py 63 15 175
tests/test_tools_todo.py 81 65 173
tests/test_workspace_memory_policy.py 36 3 173
tests/test_chats_export.py 48 17 172
tests/test_model_selection_trace_export.py 55 13 172
tests/test_util_cli_generate.py 35 7 172
tests/test_acp_types.py 35 12 171
tests/test_tools_patch.py 91 214 171
tests/test_toolspec_read_only.py 40 11 170
tests/test_util_terminal.py 52 34 168
tests/test_tools_elicit.py 50 25 167
tests/test_util_cli_skills.py 63 42 165
tests/test_anti_slop.py 69 24 163
tests/test_tools_time_awareness.py 52 34 163
tests/test_util_cost.py 29 26 163
tests/test_server_default_profile.py 69 42 161
tests/test_acp_protocol_logging.py 56 15 160
tests/test_tree.py 64 40 160
tests/test_acp_stdout.py 76 37 158
tests/test_server_api_v2_common.py 48 48 158
tests/test_tui_visual.py 48 46 158
tests/test_uri.py 55 30 158
tests/test_backtrack.py 39 11 157
tests/test_commands_account.py 37 6 156
tests/test_server_v2_tool_confirmation.py 33 33 155
tests/test_eval_pass_rate_gate.py 48 9 154
tests/test_git_cmd_resolver.py 45 34 154
tests/test_llm_retry_policy.py 63 18 153
tests/test_server_config_workspace_containment.py 42 46 153
tests/test_timings.py 66 50 153
tests/test_subagent_integration.py 48 21 152
tests/test_util_tree.py 44 33 151
tests/test_shell_max_output_bytes.py 63 80 150
tests/test_tools_vision.py 38 34 150
tests/fixtures/provider_test_scaffold.py 76 68 148
tests/test_browser_state.py 75 31 148
tests/test_util_install.py 34 31 148
tests/test_master_context.py 39 24 147
tests/test_misc_subprocess_timeouts.py 48 30 146
tests/test_file_selector_integration.py 50 23 145
tests/test_vent.py 32 10 145
tests/test_subagent_concurrency.py 37 16 144
tests/test_server_elicitation.py 47 17 141
tests/test_dspy_integration.py 54 32 139
tests/test_tools_token_awareness.py 59 47 139
tests/test_computer_milestone_integration.py 61 59 138
tests/test_util_content.py 49 25 137
tests/test_chat_config.py 53 44 135
tests/test_cli_explain.py 53 18 135
tests/test_computer_gate.py 76 40 133
tests/test_agent_workspace_timeouts.py 41 22 129
tests/test_snapshot_list.py 45 7 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_docs_structure.py 31 29 126
tests/test_util_context_dedup.py 61 43 125
tests/test_treeofthoughts.py 34 23 124
tests/test_computer_risk_streaming.py 54 44 123
tests/test_prompt.py 36 36 123
tests/test_server_webui_dir.py 59 21 121
tests/test_subagent_planner_roles.py 39 30 121
tests/test_util_interrupt.py 48 38 121
tests/test_eval_format_routing.py 30 25 120
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/thread_leak.py 34 55 115
tests/test_lessons_status.py 67 96 113
tests/test_chats_rename.py 42 16 112
tests/test_server_host_validation.py 46 29 112
tests/test_computer_run_task_cli.py 40 14 109
tests/test_cost_awareness_delayed_warning.py 42 32 108
tests/test_tools_chats.py 26 19 107
tests/test_browser_session_persistence.py 62 33 103
tests/test_server_parent_death_watcher.py 25 38 103
tests/test_tools_choice.py 51 26 103
tests/test_util_output_storage.py 23 13 103
tests/test_command_completion.py 33 23 100
tests/test_hooks_mcp_namespace_hint.py 30 14 100
tests/test_memory_cli_metadata.py 12 8 100
tests/test_generation_pre_snapshot_boundary.py 38 39 99
tests/test_thread_leak.py 29 7 98
tests/test_server_auth.py 46 25 97
tests/test_shell_parser.py 19 3 96
tests/test_agent_fork_command.py 18 5 95
tests/test_session.py 40 21 95
tests/test_server_v2_sse.py 26 27 94
tests/test_server_etag.py 22 5 91
tests/test_agent_memory.py 26 17 90
tests/test_swebench_utils.py 27 2 89
tests/test_commands_rag.py 16 2 88
tests/test_server_cors.py 33 20 88
tests/test_browser_github_routing.py 27 0 86
tests/test_util.py 42 85 85
tests/test_output_format.py 29 21 84
tests/test_shell_high_fd.py 28 29 83
tests/test_commands_llm.py 16 0 81
tests/test_eval_swebench_retrieval.py 25 4 81
tests/test_prompt_queue.py 33 15 80
tests/test_prompt_skills_summary.py 44 44 80
tests/test_eval_timeouts.py 32 33 77
tests/test_server_perf.py 22 21 77
tests/test_xml_format.py 33 91 77
tests/test_cli_llm_generate.py 17 10 75
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_subscription_pricing.py 27 14 74
tests/test_pytest_timeout_retry_interaction.py 21 25 73
tests/test_shell_issue772.py 48 47 73
tests/test_acp_e2e_smoke.py 23 27 71
tests/test_server_audio_transcription.py 20 15 69
tests/test_hooks_form_autodetect.py 22 34 68
tests/test_docs_tool_formats_coverage.py 16 15 67
tests/test_tools_form.py 22 19 67
tests/test_setup_completions.py 21 6 66
tests/test_util_context_savings.py 12 0 66
tests/test_computer_api.py 90 401 65
tests/test_eval_tool_efficiency.py 20 11 64
tests/test_llm_mock.py 22 12 60
tests/test_shell_output_mixing_issue408.py 25 29 60
tests/test_eval_practical20.py 27 8 59
tests/test_server_client.py 33 26 59
tests/test_server_metrics.py 20 20 59
tests/test_shell_memory_limit.py 18 14 59
tests/test_validate_release_package.py 14 1 58
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_server_skills_api.py 13 1 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_server_tts_api.py 21 0 53
tests/test_github_bot.py 12 1 51
tests/test_execute_msg_defensive.py 19 19 49
tests/test_pytest_retry_tmp_path_interaction.py 17 26 47
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_shell_fd_leak.py 23 16 39
tests/test_utils.py 14 17 38
tests/test_gears.py 18 0 36
tests/test_util_export.py 20 11 36
tests/snapshots/tui_stream.svg 3 0 35
tests/test_message_command.py 13 12 35
tests/test_tools_pruner.py 9 0 35
tests/snapshots/tui_idle.svg 3 0 34
tests/snapshots/tui_inline.svg 3 0 34
tests/test_cli_confirm_hook.py 24 20 34
tests/test_credentials.py 16 0 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_constants.py 11 13 19
tests/test_server_cli_tools.py 12 4 19
tests/test_tools_shell_multiline.py 7 19 19
tests/test_browser_format.py 8 6 18
tests/test_llm_summarize_terminal_projection.py 9 9 15
tests/test_screenshot.py 9 6 15
tests/retry_compat.py 8 22 6
----------------------------------------------------------------------------------------------------
SUM: 39899 26708 141243
----------------------------------------------------------------------------------------------------
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 108 117 924
gptme/eval/leaderboard.py 149 485 817
gptme/eval/run.py 74 96 549
gptme/eval/execenv.py 85 146 514
gptme/eval/trends.py 59 31 317
gptme/eval/types.py 35 69 110
gptme/eval/pass_rate_gate.py 23 44 75
gptme/eval/filestore.py 11 8 63
gptme/eval/cost.py 18 25 40
gptme/eval/__init__.py 2 2 4
gptme/eval/__main__.py 1 0 3
------------------------------------------------------------------------------------------
SUM: 565 1023 3416
------------------------------------------------------------------------------------------
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/plugins/registry.py gptme/plugins/__init__.py gptme/plugins/plugin.py gptme/plugins/entrypoints.py gptme/message.py gptme/tui/app.py gptme/tui/__init__.py gptme/tui/main.py gptme/codeblock.py gptme/__version__.py gptme/tools/_browser_perplexity.py gptme/tools/screenshot.py gptme/tools/_computer_gate.py gptme/tools/elicit.py gptme/tools/_browser_lynx.py gptme/tools/choice.py gptme/tools/_browser_format.py gptme/tools/computer.py gptme/tools/browser.py gptme/tools/mcp_adapter.py gptme/tools/patch_anchored.py gptme/tools/python.py gptme/tools/_url_safety.py gptme/tools/autocompact/scoring.py gptme/tools/autocompact/context_provider.py gptme/tools/autocompact/__init__.py gptme/tools/autocompact/config.py gptme/tools/autocompact/engine.py gptme/tools/autocompact/resume.py gptme/tools/autocompact/handlers.py gptme/tools/autocompact/decision.py gptme/tools/autocompact/hook.py gptme/tools/save.py gptme/tools/morph.py gptme/tools/__init__.py gptme/tools/vision.py gptme/tools/precommit.py gptme/tools/subagent/__init__.py gptme/tools/subagent/execution.py gptme/tools/subagent/hooks.py gptme/tools/subagent/types.py gptme/tools/subagent/batch.py gptme/tools/subagent/control.py gptme/tools/subagent/concurrency.py gptme/tools/subagent/api.py gptme/tools/subagent/context.py gptme/tools/subagent/persistence.py gptme/tools/form.py gptme/tools/_browser_playwright.py gptme/tools/complete.py gptme/tools/todo.py gptme/tools/vent.py gptme/tools/shell_background.py gptme/tools/gh.py gptme/tools/pruner.py gptme/tools/convert.py gptme/tools/tmux.py gptme/tools/chats.py gptme/tools/shell_validation.py gptme/tools/computer_semantic.py gptme/tools/patch_many.py gptme/tools/clarify.py gptme/tools/shell.py gptme/tools/shell_flags.py gptme/tools/computer_transport.py gptme/tools/read.py gptme/tools/autocommit.py gptme/tools/lessons.py gptme/tools/_anchored.py gptme/tools/restart.py gptme/tools/request_tool_change.py gptme/tools/rag.py gptme/tools/mcp.py gptme/tools/memory.py gptme/tools/progress.py gptme/tools/hashline_edit.py gptme/tools/base.py gptme/tools/_hashline_snapshot.py gptme/tools/_allowlist.py gptme/tools/patch.py gptme/tools/_browser_thread.py gptme/info.py gptme/lessons/skills/python-repl/python_helpers.py gptme/lessons/hybrid_matcher.py gptme/lessons/__init__.py gptme/lessons/commands.py gptme/lessons/skill_commands.py gptme/lessons/matcher.py gptme/lessons/installer.py gptme/lessons/auto_include.py gptme/lessons/parser.py gptme/lessons/skill_events.py gptme/lessons/index.py gptme/session.py gptme/constants.py gptme/__init__.py gptme/anti_slop.py gptme/logmanager/manager.py gptme/logmanager/conversations.py gptme/logmanager/__init__.py gptme/logmanager/eventlog.py gptme/logmanager/conv_checkpoints.py gptme/executor.py gptme/hooks/agents_md_inject.py gptme/hooks/cli_confirm.py gptme/hooks/cache_awareness.py gptme/hooks/workspace_agents.py gptme/hooks/script.py gptme/hooks/registry.py gptme/hooks/__init__.py gptme/hooks/markdown_validation.py gptme/hooks/elicitation.py gptme/hooks/aw_watcher_agent.py gptme/hooks/test.py gptme/hooks/types.py gptme/hooks/tests/test_workspace_agents.py gptme/hooks/tests/test_aw_watcher_agent.py gptme/hooks/tests/test_guardrails.py gptme/hooks/tests/__init__.py gptme/hooks/tests/test_token_awareness.py gptme/hooks/tests/test_cli_confirm.py gptme/hooks/tests/test_manifest.py gptme/hooks/tests/test_cache_awareness.py gptme/hooks/tests/test_active_context.py gptme/hooks/tests/test_server_elicit.py gptme/hooks/tests/test_cost_awareness.py gptme/hooks/tests/test_markdown_validation.py gptme/hooks/tests/test_confirm.py gptme/hooks/tests/test_elicitation.py gptme/hooks/tests/test_form_autodetect.py gptme/hooks/tests/test_agents_md_inject.py gptme/hooks/tests/test_cwd_awareness.py gptme/hooks/tests/test_auto_confirm.py gptme/hooks/tests/test_tool_target_instructions.py gptme/hooks/tests/test_injection_screening.py gptme/hooks/tests/test_server_confirm.py gptme/hooks/tests/test_time_awareness.py gptme/hooks/mcp_namespace_hint.py gptme/hooks/auto_confirm.py gptme/hooks/confirm.py gptme/hooks/manifest.py gptme/hooks/cost_awareness.py gptme/hooks/server_confirm.py gptme/hooks/guardrails.py gptme/hooks/injection_screening.py gptme/hooks/auto_snapshots.py gptme/hooks/token_awareness.py gptme/hooks/form_autodetect.py gptme/hooks/server_elicit.py gptme/hooks/active_context.py gptme/hooks/tool_target_instructions.py gptme/hooks/cwd_awareness.py gptme/hooks/cwd_changed.py gptme/hooks/knowledge_inject.py gptme/hooks/time_awareness.py gptme/prompts/skills.py gptme/prompts/__init__.py gptme/prompts/workspace.py gptme/prompts/architect.py gptme/prompts/context_cmd.py gptme/prompts/chat_history.py gptme/prompts/templates.py gptme/oauth/openrouter.py gptme/oauth/__init__.py gptme/prompt_queue.py gptme/attestation.py gptme/mcp/client.py gptme/mcp/registry.py gptme/mcp/__init__.py gptme/mcp/server.py gptme/knowledge.py gptme/context/__init__.py gptme/context/config.py gptme/context/compress.py gptme/context/scout.py gptme/context/selector/rule_based.py gptme/context/selector/__init__.py gptme/context/selector/config.py gptme/context/selector/file_selector.py gptme/context/selector/file_integration.py gptme/context/selector/llm_based.py gptme/context/selector/hybrid.py gptme/context/selector/file_config.py gptme/context/selector/base.py gptme/context/adaptive_compressor.py gptme/context/task_analyzer.py gptme/dirs.py gptme/config/models.py gptme/config/__init__.py gptme/config/core.py gptme/config/user.py gptme/config/trust.py gptme/config/chat.py gptme/config/project.py gptme/config/cli_setup.py gptme/profiles.py gptme/commands/session.py gptme/commands/__init__.py gptme/commands/export.py gptme/commands/snapshot.py gptme/commands/llm.py gptme/commands/account.py gptme/commands/backtrack.py gptme/commands/rag.py gptme/commands/checkpoint.py gptme/commands/base.py gptme/commands/meta.py gptme/util/review.py gptme/util/ask_execute.py gptme/util/interrupt.py gptme/util/git_worktree.py gptme/util/replay.py gptme/util/conversation_ids.py gptme/util/cost.py gptme/util/__init__.py gptme/util/export.py gptme/util/useredit.py gptme/util/_telemetry.py gptme/util/tool_format.py gptme/util/generate_name.py gptme/util/_sound_sounddevice.py gptme/util/gh.py gptme/util/capabilities_export.py gptme/util/sound.py gptme/util/terminal.py gptme/util/uri.py gptme/util/safety.py gptme/util/master_context.py gptme/util/prompt.py gptme/util/auto_naming.py gptme/util/file_storage.py gptme/util/cost_tracker.py gptme/util/keyword_matching.py gptme/util/tool_display.py gptme/util/tree.py gptme/util/context_dedup.py gptme/util/clipboard.py gptme/util/content.py gptme/util/reduce.py gptme/util/context_savings.py gptme/util/tokens.py gptme/util/context.py gptme/util/cost_display.py gptme/util/history.py gptme/util/stdio.py gptme/util/_sound_cmd.py gptme/util/install.py gptme/util/git_cmd.py gptme/util/output_storage.py gptme/init.py gptme/memory/roots.py gptme/memory/policy.py gptme/memory/recall.py gptme/memory/__init__.py gptme/memory/store.py gptme/memory/schema.py gptme/server/panels_api.py gptme/server/session_step.py gptme/server/api_v2_common.py gptme/server/client.py gptme/server/app.py gptme/server/tasks_api.py gptme/server/skills_api.py gptme/server/constants.py gptme/server/__init__.py gptme/server/session_models.py gptme/server/external_sessions.py gptme/server/computer_api.py gptme/server/metrics.py gptme/server/preview_proxy_api.py gptme/server/api_v2_sessions.py gptme/server/openapi_docs.py gptme/server/api_v2_agents.py gptme/server/api_v2.py gptme/server/a2a_api.py gptme/server/tts_api.py gptme/server/acp_session_runtime.py gptme/server/__main__.py gptme/server/tools_api.py gptme/server/auth.py gptme/server/workspace_api.py gptme/server/artifacts_api.py gptme/server/cli.py gptme/circuit_breaker.py gptme/chat.py gptme/status_provider.py gptme/dataset/__init__.py gptme/dataset/trajectory_to_env.py gptme/llm/llm_openai_subscription.py gptme/llm/llm_openrouter_subscription.py gptme/llm/constants.py gptme/llm/__init__.py gptme/llm/provider_plugins.py gptme/llm/utils.py gptme/llm/llm_mock.py gptme/llm/llm_openai.py gptme/llm/llm_openai_models_deprecated.py gptme/llm/llm_openai_models.py gptme/llm/llm_anthropic.py gptme/llm/llm_gptme.py gptme/llm/local_discovery.py gptme/llm/retry_abort.py gptme/llm/retry_policy.py gptme/llm/llm_grok_subscription.py gptme/llm/llm_anthropic_models_deprecated.py gptme/llm/validate.py gptme/llm/openai_responses.py gptme/llm/models/__init__.py gptme/llm/models/data.py gptme/llm/models/types.py gptme/llm/models/recommended.py gptme/llm/models/listing.py gptme/llm/models/resolution.py gptme/workspace_snapshot.py gptme/credentials.py gptme/__main__.py gptme/checkpoint.py gptme/acp/client.py gptme/acp/__init__.py gptme/acp/types.py gptme/acp/agent.py gptme/acp/adapter.py gptme/acp/__main__.py gptme/k_best.py gptme/cli/cmd_chats.py gptme/cli/cmd_status.py gptme/cli/cmd_snapshot.py gptme/cli/cmd_init.py gptme/cli/__init__.py gptme/cli/cmd_review.py gptme/cli/cmd_skills.py gptme/cli/cmd_memory.py gptme/cli/cmd_attest.py gptme/cli/cmd_computer.py gptme/cli/cmd_stats.py gptme/cli/doctor.py gptme/cli/setup.py gptme/cli/cmd_slop.py gptme/cli/onboard.py gptme/cli/wut.py gptme/cli/cmd_tutorial.py gptme/cli/cmd_mcp_serve.py gptme/cli/main.py gptme/cli/cmd_agents.py gptme/cli/cmd_resume.py gptme/cli/cmd_dataset.py gptme/cli/cmd_knowledge.py gptme/cli/util.py gptme/cli/cmd_batch.py gptme/cli/checkpoint.py gptme/cli/cmd_review_watch.py gptme/cli/cmd_mcp.py gptme/cli/cmd_service.py gptme/cli/auth.py gptme/cli/cmd_explain.py gptme/cli/cmd_hooks.py gptme/cli/cmd_capabilities.py gptme/cli/cmd_review_pr.py gptme/agent/__init__.py gptme/agent/workspace.py gptme/agent/service.py gptme/agent/doctor.py gptme/agent/cli.py gptme/gears.py gptme/sandbox.py gptme/eval/trends.py gptme/eval/pass_rate_gate.py gptme/eval/cost.py gptme/eval/suites/practical5.py gptme/eval/suites/computer.py gptme/eval/suites/browser.py gptme/eval/suites/practical14.py gptme/eval/suites/practical3.py gptme/eval/suites/practical2.py gptme/eval/suites/behavioral/iterative_debug.py gptme/eval/suites/behavioral/multi_file_rename.py gptme/eval/suites/behavioral/implement_event_emitter.py gptme/eval/suites/behavioral/implement_memoization.py gptme/eval/suites/behavioral/add_logging.py gptme/eval/suites/behavioral/implement_lru_cache.py gptme/eval/suites/behavioral/retry_with_backoff.py gptme/eval/suites/behavioral/bounded_bugfix_with_decoys.py gptme/eval/suites/behavioral/__init__.py gptme/eval/suites/behavioral/validate_user_input.py gptme/eval/suites/behavioral/fix_data_mutation.py gptme/eval/suites/behavioral/minimal_feature_preserve_default_with_decoys.py gptme/eval/suites/behavioral/root_cause_pipeline_debug.py gptme/eval/suites/behavioral/add_deprecation_warning.py gptme/eval/suites/behavioral/implement_priority_queue.py gptme/eval/suites/behavioral/extract_function_refactor.py gptme/eval/suites/behavioral/stage_new_files.py gptme/eval/suites/behavioral/test_driven_error_handling.py gptme/eval/suites/behavioral/write_test_suite.py gptme/eval/suites/behavioral/debug_data_pipeline.py gptme/eval/suites/behavioral/add_type_hints.py gptme/eval/suites/behavioral/noisy_worktree_fix.py gptme/eval/suites/behavioral/scope_discipline_bugfix.py gptme/eval/suites/behavioral/remove_dead_code.py gptme/eval/suites/behavioral/use_existing_helper.py gptme/eval/suites/behavioral/refactor_for_testability.py gptme/eval/suites/behavioral/fix_mutable_default.py gptme/eval/suites/behavioral/fix_security_path_traversal.py gptme/eval/suites/behavioral/handle_specific_exception.py gptme/eval/suites/behavioral/add_docstrings.py gptme/eval/suites/behavioral/git_selective_commit.py gptme/eval/suites/behavioral/merge_conflict_resolution.py gptme/eval/suites/behavioral/circuit_breaker.py gptme/eval/suites/behavioral/optimize_n_squared.py gptme/eval/suites/behavioral/_common.py gptme/eval/suites/behavioral/add_feature_preserve_default.py gptme/eval/suites/behavioral/rate_limiting.py gptme/eval/suites/__init__.py gptme/eval/suites/practical10.py gptme/eval/suites/practical23.py gptme/eval/suites/practical29.py gptme/eval/suites/practical25.py gptme/eval/suites/practical.py gptme/eval/suites/practical24.py gptme/eval/suites/practical21.py gptme/eval/suites/practical16.py gptme/eval/suites/practical26.py gptme/eval/suites/practical4.py gptme/eval/suites/practical27.py gptme/eval/suites/init_projects.py gptme/eval/suites/practical13.py gptme/eval/suites/practical8.py gptme/eval/suites/basic.py gptme/eval/suites/practical31.py gptme/eval/suites/practical33.py gptme/eval/suites/practical12.py gptme/eval/suites/practical32.py gptme/eval/suites/practical9.py gptme/eval/suites/practical15.py gptme/eval/suites/practical22.py gptme/eval/suites/practical7.py gptme/eval/suites/practical11.py gptme/eval/suites/practical18.py gptme/eval/suites/practical19.py gptme/eval/suites/practical20.py gptme/eval/suites/practical17.py gptme/eval/suites/practical30.py gptme/eval/suites/subagent.py gptme/eval/suites/practical28.py gptme/eval/suites/practical6.py gptme/eval/leaderboard.py gptme/eval/__init__.py gptme/eval/types.py gptme/eval/swebench/info.py gptme/eval/swebench/__init__.py gptme/eval/swebench/retrieval.py gptme/eval/swebench/utils.py gptme/eval/swebench/evaluate.py gptme/eval/swebench/main.py gptme/eval/swebench/__main__.py gptme/eval/filestore.py gptme/eval/agents/swebench.py gptme/eval/agents/claude_code.py gptme/eval/agents/__init__.py gptme/eval/dspy/signatures.py gptme/eval/dspy/__init__.py gptme/eval/dspy/experiments.py gptme/eval/dspy/hybrid_optimizer.py gptme/eval/dspy/metrics.py gptme/eval/dspy/tasks.py gptme/eval/dspy/__main__.py gptme/eval/dspy/prompt_optimizer.py gptme/eval/dspy/cli.py gptme/eval/run.py gptme/eval/main.py gptme/eval/execenv.py gptme/eval/tbench/__init__.py gptme/eval/tbench/agent.py gptme/eval/tbench/run.py gptme/eval/__main__.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/swe_extra/swe_bench_constants.py gptme/eval/swe_extra/swe_bench_test_spec.py gptme/model_attestation.py gptme/telemetry.py tests/test_gptme_provider.py tests/test_tools_choice.py tests/test_tools_form.py tests/test_docs_tool_formats_coverage.py tests/test_timings.py tests/test_cli.py tests/test_hybrid_lessons.py tests/test_integration_phase4.py tests/test_pytest_retry_tmp_path_interaction.py tests/test_tui.py tests/test_server_config_workspace_containment.py tests/test_tools_precommit.py tests/test_eval_leaderboard.py tests/test_util_tool_format.py tests/test_agent_memory.py tests/test_preview_proxy.py tests/test_lessons_tool.py tests/test_lessons_index.py tests/test_server_artifacts.py tests/test_treeofthoughts.py tests/test_pytest_timeout_retry_interaction.py tests/test_custom_providers.py tests/test_mcp.py tests/test_acp_protocol_logging.py tests/test_tasks_api.py tests/test_prompt_tools.py tests/test_message_command.py tests/test_circuit_breaker.py tests/test_util_terminal.py tests/test_subagent_persistence.py tests/test_workspace_agents.py tests/test_server.py tests/test_eval_computer_suite.py tests/test_workspace_memory_policy.py tests/test_cc_memory.py tests/test_tools__anchored.py tests/test_eval_practical19.py tests/test_tools_browser.py tests/test_search_alias.py tests/test_hooks_cost_awareness.py tests/test_shell_issue772.py tests/test_chats_clean.py tests/test_lessons_status.py tests/test_computer_video_frames_cli.py tests/test_tools_patch_anchored.py tests/test_tui_e2e.py tests/test_llm_openai_reasoning_effort.py tests/test_model_attestation.py tests/test_cli_confirm_hook.py tests/test_utils.py tests/test_config.py tests/test_setup_completions.py tests/test_computer_screenshot_cli.py tests/test_provider_plugins.py tests/test_execute_msg_defensive.py tests/lessons/test_bm25_parity.py tests/lessons/test_wildcard_matching.py tests/test_anti_slop.py tests/test_tool_use.py tests/test_tools_shell.py tests/test_acp_adapter.py tests/test_eval_practical20.py tests/test_computer_settle.py tests/test_util_gh_mocked.py tests/test_eval_behavioral_solutions.py tests/test_llm_mock.py tests/test_chat.py tests/test_llm_retry_policy.py tests/test_execenv.py tests/test_output_format.py tests/test_unified_plugins.py tests/test_server_bad_input.py tests/test_cost_display.py tests/test_llm_retry_abort.py tests/test_server_fresh_bad_input.py tests/test_util_cli_providers.py tests/test_tree.py tests/test_dataset.py tests/test_knowledge.py tests/test_lessons_commands.py tests/test_computer_audit.py tests/test_credentials_integration.py tests/test_prompt_templates.py tests/test_computer_record.py tests/test_server_cors.py tests/test_mcp_server.py tests/test_shell_background.py tests/test_server_tts_api.py tests/test_server_etag.py tests/test_eval_format_routing.py tests/test_computer_demo_cmd.py tests/test_context_selector.py tests/test_server_skills_api.py tests/test_pdf_to_images.py tests/test_llm_openai_sampling.py tests/test_tui_skill_events.py tests/test_llm_summarize_terminal_projection.py tests/test_acp_e2e_smoke.py tests/test_computer_latency_cmd.py tests/test_tools_subagent.py tests/test_auto_compact.py tests/test_dspy_hybrid.py tests/test_util_cost.py tests/test_agent_service_timeouts.py tests/test_tools_base.py tests/test_context.py tests/test_server_v2_sse.py tests/test_server_perf.py tests/test_master_context.py tests/test_config_encoding.py tests/test_cli_fatal_error_envelope.py tests/test_local_discovery.py tests/test_server_workspace.py tests/test_vent.py tests/test_tools_tmux.py tests/test_tools_read.py tests/test_tools_computer.py tests/test_util_context_dedup.py tests/test_browser_state.py tests/test_info.py tests/test_acp_types.py tests/test_doctor.py tests/test_guardrail_hook.py tests/test_swebench_utils.py tests/test_memory_store.py tests/test_chats_external_search.py tests/test_shell_stream_oneshot.py tests/test_oauth_openrouter.py tests/test_ephemeral.py tests/test_conversations.py tests/test_eval_timeouts.py tests/test_computer_actions.py tests/test_shell_allowlist_autoconfirm.py tests/test_subagent_concurrency.py tests/test_util_cli_mcp.py tests/test_subscription_pricing.py tests/test_util_tokens.py tests/test_acp_stdout.py tests/test_util_clipboard_paste.py tests/test_eval_tool_efficiency.py tests/test_tools_time_awareness.py tests/test_git_worktree.py tests/test_file_selector_integration.py tests/test_tools_lessons.py tests/test_constants.py tests/test_tools_token_awareness.py tests/test_server_cli_fallback.py tests/test_llm_grok_subscription.py tests/test_screenshot.py tests/test_llm_utils.py tests/test_auto_naming.py tests/test_k_best.py tests/test_chats_stats.py tests/test_chat_history.py tests/test_server_api_v2_common.py tests/test_cli_from_turn.py tests/test_track_tokens.py tests/test_json_output.py tests/test_tools_screenshot.py tests/test_acp_client.py tests/test_computer_doctor_cmd.py tests/test_server_v2.py tests/test_skill_events.py tests/context/test_adaptive_compressor.py tests/context/test_task_analyzer.py tests/test_server_v2_agents.py tests/test_shell_issue729.py tests/test_tools_morph.py tests/test_workspace_api.py tests/test_eval.py tests/test_server_v2_sessions.py tests/test_tools_patch.py tests/test_context_providers.py tests/test_eval_practical17.py tests/test_util_safety.py tests/test_codeblock.py tests/test_util_cli.py tests/test_server_host_validation.py tests/test_util.py tests/test_hooks_form_autodetect.py tests/fixtures/provider_test_scaffold.py tests/test_commands.py tests/test_server_skill_events.py tests/test_lessons_parser.py tests/test_llm_models_resolution.py tests/test_util_cli_batch.py tests/test_tools_shell_validation.py tests/test_prompt_queue.py tests/test_active_context.py tests/test_util_hooks.py tests/test_cost_awareness_delayed_warning.py tests/test_llm_openai_subscription.py tests/test_agent_doctor.py tests/test_util_cli_generate.py tests/test_tools_convert.py tests/test_util_interrupt.py tests/test_model_selection_trace_export.py tests/test_server_webui_dir.py tests/test_execute_msg_hook_call_id.py tests/test_util_keyword_matching.py tests/test_onboard.py tests/test_util_review.py tests/test_skill_installer.py tests/test_util_file_storage.py tests/test_subagent_roundtrip.py tests/test_server_startup.py tests/test_tools_complete.py tests/test_util_tree.py tests/test_prompt_skills_summary.py tests/test_hooks.py tests/test_dspy_integration.py tests/test_message.py tests/test_computer_semantic_fixtures.py tests/test_eval_claude_code.py tests/test_memory_index_policy.py tests/test_server_audio_transcription.py tests/test_subagent_planner_roles.py tests/test_github_bot.py tests/test_package_exports.py tests/test_cost_cache_cold_warning.py tests/test_mcp_adapter.py tests/test_eval_swebench_retrieval.py tests/test_sandbox.py tests/test_cost_tracker.py tests/test_hooks_cwd_changed.py tests/test_executor.py tests/test_server_session_models.py tests/test_shell_fd_leak.py tests/test_browser_lynx.py tests/test_server_metrics.py tests/test_chats_rename.py tests/test_prompts.py tests/test_misc_subprocess_timeouts.py tests/test_server_v2_tool_confirmation.py tests/test_tools_chats.py tests/test_commands_rag.py tests/test_llm_validate.py tests/test_subagent_integration.py tests/test_thread_leak.py tests/test_tools_gh.py tests/test_tool_loading_duplicate.py tests/test_markdown_validation.py tests/test_util_gh.py tests/test_skill_commands.py tests/test_session.py tests/test_init.py tests/test_tools_hashline_edit.py tests/test_hooks_mcp_namespace_hint.py tests/test_eval_pass_rate_gate.py tests/test_tool_conditionals.py tests/test_tools_save.py tests/test_agent_workspace_timeouts.py tests/test_llm_models.py tests/test_server_default_profile.py tests/test_cli_explain.py tests/test_llm_anthropic.py tests/test_llm_auth.py tests/test_shell_parser.py tests/test_demo_capture.py tests/test_config_trust.py tests/test_tools_patch_many.py tests/test_tools.py tests/test_gears.py tests/test_tools_python.py tests/test_hooks_cache_awareness.py tests/test_computer_risk_streaming.py tests/test_computer_gate.py tests/test_util_cli_attest.py tests/test_server_v2_auto_stepping.py tests/test_server_a2a.py tests/test_dirs.py tests/test_shell_memory_limit.py tests/test_util_cli_review_watch.py tests/test_agent.py tests/test_browser_github_routing.py tests/test_server_parent_death_watcher.py tests/thread_leak.py tests/test_capabilities_export.py tests/test_tools_shell_multiline.py tests/test_complete.py tests/test_reduce.py tests/test_validate_release_package.py tests/test_uri.py tests/test_git_cmd_resolver.py tests/test_workspace_snapshot.py tests/test_tools_pruner.py tests/test_quota_skip.py tests/test_eval_swebench.py tests/test_util_generate_name.py tests/conftest.py tests/test_tools_request_tool_change.py tests/test_hooks_knowledge_inject.py tests/test_webui_redirects.py tests/test_chat_config.py tests/test_server_auth.py tests/test_checkpoint.py tests/test_xml_format.py tests/test_tools_restart.py tests/test_server_v2_hooks.py tests/test_util_cli_models.py tests/test_lessons_matcher.py tests/test_subagent_budget.py tests/test_tools_rag.py tests/test_agents_md_inject.py tests/test_computer_task.py tests/test_llm_openai.py tests/test_foreground_output_dedup.py tests/test_computer_artifacts.py tests/test_browser_session_persistence.py tests/test_eval_trends.py tests/test_lessons_auto_include.py tests/test_commands_llm.py tests/test_lessons.py tests/test_cli_status.py tests/test_tools_mcp.py tests/test_dspy_gepa.py tests/test_server_cli_tools.py tests/test_computer_run_task_cli.py tests/test_browser.py tests/test_hooks_registry.py tests/test_external_sessions.py tests/test_eval_behavioral.py tests/test_replay.py tests/test_tools_vision.py tests/test_util_output_storage.py tests/test_computer_x11_integration.py tests/test_autocompact_scoring.py tests/test_memory_tool.py tests/test_server_panels.py tests/test_tutorial.py tests/test_chats_json.py tests/test_cli_resume.py tests/test_context_scout.py tests/test_github_ci_self_heal.py tests/test_tools_browser_thread.py tests/test_util_context_savings.py tests/test_lessons_integration.py tests/test_util_content.py tests/test_prompt.py tests/test_cwe214_docker_env_leak.py tests/test_terminal_startup_latency.py tests/test_eval_practical16.py tests/test_tui_visual.py tests/test_telemetry.py tests/test_shell_max_output_bytes.py tests/test_generation_pre_snapshot_boundary.py tests/test_tools_todo.py tests/test_chats_export.py tests/test_skill_metrics.py tests/test_plugins.py tests/test_computer_docker_config.py tests/test_mcp_discovery.py tests/test_eval_practical18.py tests/retry_compat.py tests/test_credentials.py tests/test_subagent_worktree_isolation.py tests/test_util_export.py tests/test_server_client.py tests/test_backtrack.py tests/test_toolspec_read_only.py tests/test_server_tools_query.py tests/test_server_elicitation.py tests/test_cli_llm_generate.py tests/test_util_install.py tests/test_fold_mid_system.py tests/test_tools_autocommit.py tests/test_dspy_basic.py tests/test_acp_agent.py tests/test_script_hooks.py tests/test_computer_use_integration.py tests/test_eval_subagent.py tests/test_snapshot_list.py tests/test_memory_cli_metadata.py tests/test_hooks_server_confirm.py tests/test_profiles.py tests/test_logmanager.py tests/test_docs_structure.py tests/test_shell_output_mixing_issue408.py tests/test_cmd_service.py tests/test_tools_elicit.py tests/test_shell_for_loop_issue724.py tests/test_computer_milestone_integration.py tests/test_agent_fork_command.py tests/test_acp_session_runtime.py tests/test_snapshot_command.py tests/test_server_path_traversal.py tests/test_util_cli_skills.py tests/test_computer_transport.py tests/test_subagent_unit.py tests/test_eventlog.py tests/test_command_completion.py tests/test_computer_api.py tests/test_cli_stats.py tests/test_commands_account.py tests/test_browser_format.py tests/test_shell_high_fd.py scripts/eval_leaderboard.py scripts/analyze_compression.py scripts/treeofthoughts.py scripts/check_rst_formatting.py scripts/eval_trends.py scripts/docs_structure.py scripts/validate_release_package.py scripts/train/collect.py scripts/verify_cloudflare_pages_deep_links.py scripts/github_bot.py scripts/auto_rename_logs.py scripts/demo_capture.py scripts/check_model_freshness.py scripts/github_ci_self_heal.py --by-file --hide-rate --quiet | tail -n +2
-------------------------------------------------------------------------------------------------------------------------------
File blank comment code
-------------------------------------------------------------------------------------------------------------------------------
tests/test_subagent_unit.py 1375 630 5181
tests/test_server_v2.py 844 326 3550
tests/test_llm_openai.py 713 434 2860
tests/test_tools_subagent.py 859 443 2839
gptme/server/api_v2.py 480 428 2829
gptme/tools/shell.py 339 553 2276
tests/test_util_review.py 478 329 2035
gptme/llm/llm_openai.py 326 472 1728
gptme/cli/cmd_computer.py 252 296 1726
tests/test_server_v2_sessions.py 267 225 1693
tests/test_tools_shell.py 494 483 1677
gptme/tools/computer.py 437 864 1659
tests/test_init.py 258 147 1599
tests/test_cli.py 427 168 1571
tests/test_config.py 420 490 1472
gptme/cli/main.py 228 303 1458
tests/test_acp_agent.py 400 196 1458
tests/test_eval_behavioral.py 867 967 1357
tests/test_util_cli_review_watch.py 317 189 1283
gptme/tui/app.py 188 344 1275
tests/test_tools_computer.py 438 269 1258
gptme/hooks/workspace_agents.py 238 153 1255
gptme/tools/subagent/api.py 218 475 1254
gptme/acp/agent.py 205 341 1217
gptme/util/gh.py 243 301 1213
tests/test_util_gh.py 260 172 1172
tests/test_tools_shell_validation.py 365 248 1169
gptme/cli/util.py 254 197 1162
tests/test_server.py 297 202 1126
tests/test_llm_utils.py 311 139 1088
tests/test_doctor.py 266 141 1055
gptme/server/session_step.py 176 342 1031
tests/test_tools_complete.py 218 253 1017
tests/test_tools_base.py 331 112 1010
gptme/cli/doctor.py 125 95 1005
tests/test_reduce.py 283 248 997
tests/test_memory_store.py 152 59 981
tests/test_tools_browser.py 316 74 980
tests/test_util_cli.py 256 181 977
tests/test_info.py 183 78 972
tests/test_codeblock.py 432 934 965
gptme/tools/base.py 195 296 960
gptme/llm/llm_anthropic.py 225 325 959
gptme/hooks/tests/test_workspace_agents.py 193 49 956
tests/test_tui.py 251 122 954
tests/test_lessons_auto_include.py 252 217 938
gptme/eval/main.py 108 117 924
tests/test_cmd_service.py 207 184 909
gptme/server/api_v2_sessions.py 119 175 899
tests/test_auto_compact.py 352 272 894
tests/test_eval_leaderboard.py 126 104 883
tests/test_tools_convert.py 265 117 864
gptme/cli/cmd_review_pr.py 148 332 857
tests/test_computer_audit.py 231 157 846
tests/test_tasks_api.py 185 69 831
gptme/llm/__init__.py 159 292 824
tests/test_eval_computer_suite.py 328 149 819
gptme/eval/leaderboard.py 149 485 817
tests/test_shell_background.py 197 90 816
tests/test_util_gh_mocked.py 155 121 814
gptme/tools/subagent/execution.py 139 311 811
tests/test_prompt_templates.py 260 191 811
tests/test_sandbox.py 195 105 801
tests/test_chat.py 290 206 797
gptme/tools/convert.py 136 85 793
tests/test_cost_display.py 110 68 776
gptme/logmanager/manager.py 169 229 770
gptme/server/openapi_docs.py 256 177 766
tests/test_server_workspace.py 149 154 743
gptme/eval/suites/computer.py 111 245 732
tests/test_tools_hashline_edit.py 213 445 725
gptme/cli/cmd_review_watch.py 121 230 720
gptme/util/context.py 159 243 717
gptme/eval/suites/basic.py 138 55 715
tests/test_computer_transport.py 267 91 713
tests/test_tools_gh.py 152 90 713
gptme/tools/mcp_adapter.py 235 227 710
tests/test_eval.py 131 84 709
gptme/tools/subagent/batch.py 135 482 708
tests/test_agent.py 205 115 707
gptme/tools/chats.py 135 175 706
gptme/cli/setup.py 154 72 700
tests/test_acp_session_runtime.py 222 76 699
tests/test_hooks_registry.py 247 89 696
tests/test_llm_anthropic.py 153 51 691
gptme/server/tasks_api.py 193 130 680
gptme/llm/models/data.py 18 156 679
gptme/tools/browser.py 274 436 673
tests/test_logmanager.py 195 143 670
tests/test_llm_models_resolution.py 222 179 666
gptme/tools/_browser_playwright.py 234 276 665
tests/test_json_output.py 114 84 640
gptme/eval/dspy/tasks.py 170 374 639
tests/test_cli_status.py 244 137 633
tests/test_subagent_budget.py 166 144 626
tests/test_prompts.py 179 109 609
tests/test_computer_doctor_cmd.py 88 58 607
tests/test_message.py 205 130 599
scripts/github_bot.py 109 107 597
tests/test_mcp_server.py 138 43 594
gptme/chat.py 94 190 587
gptme/prompts/__init__.py 75 87 580
tests/test_tools_lessons.py 135 49 580
tests/test_tools_precommit.py 109 86 578
tests/test_tools_request_tool_change.py 117 43 578
gptme/tools/complete.py 103 170 572
gptme/tools/computer_transport.py 151 125 567
tests/test_llm_openai_subscription.py 134 61 567
gptme/util/capabilities_export.py 60 71 560
tests/test_server_panels.py 61 30 552
tests/test_memory_index_policy.py 98 39 551
gptme/eval/run.py 74 96 549
tests/test_eval_subagent.py 119 56 547
tests/test_computer_actions.py 165 125 546
gptme/server/a2a_api.py 103 42 544
tests/test_subagent_persistence.py 68 1 543
tests/test_server_path_traversal.py 139 105 539
gptme/server/artifacts_api.py 107 110 538
gptme/tools/gh.py 120 122 538
scripts/github_ci_self_heal.py 111 49 537
tests/test_model_attestation.py 115 30 537
tests/test_dirs.py 127 89 531
tests/test_cc_memory.py 113 108 530
tests/test_hooks_cost_awareness.py 73 61 525
tests/conftest.py 141 221 521
gptme/tools/__init__.py 127 147 520
tests/test_server_bad_input.py 121 101 519
tests/test_context.py 213 101 518
gptme/llm/llm_openai_subscription.py 125 122 517
tests/test_lessons.py 156 153 517
gptme/eval/execenv.py 85 146 514
tests/test_commands.py 161 73 514
tests/test_capabilities_export.py 65 27 506
gptme/memory/store.py 76 103 505
gptme/hooks/registry.py 102 82 502
gptme/tools/hashline_edit.py 126 383 502
tests/test_context_scout.py 78 54 501
tests/test_tools.py 200 108 498
gptme/lessons/installer.py 146 165 496
tests/test_gptme_provider.py 162 71 494
gptme/cli/cmd_chats.py 107 79 487
gptme/server/workspace_api.py 100 110 486
tests/test_hooks_cache_awareness.py 151 44 484
gptme/config/user.py 112 155 483
tests/test_computer_demo_cmd.py 144 74 480
gptme/codeblock.py 62 301 476
gptme/tools/shell_validation.py 131 333 476
tests/test_eventlog.py 117 48 476
tests/test_snapshot_command.py 117 57 476
tests/test_server_session_models.py 161 141 475
gptme/hooks/tests/test_cost_awareness.py 84 53 472
tests/test_llm_models.py 149 108 472
gptme/message.py 122 207 464
tests/test_skill_installer.py 138 154 459
gptme/util/reduce.py 98 163 458
tests/test_llm_auth.py 153 55 458
gptme/tools/shell_background.py 96 77 455
scripts/analyze_compression.py 103 68 446
tests/test_server_skill_events.py 55 4 446
scripts/demo_capture.py 104 83 445
tests/test_util_cli_providers.py 93 42 438
gptme/telemetry.py 98 60 435
gptme/util/_telemetry.py 110 157 432
tests/test_knowledge.py 185 20 429
tests/test_tools_browser_thread.py 113 51 425
tests/test_lessons_commands.py 157 82 422
tests/test_external_sessions.py 116 67 421
gptme/eval/dspy/prompt_optimizer.py 109 89 420
tests/test_lessons_index.py 137 116 419
gptme/lessons/auto_include.py 108 210 418
tests/context/test_task_analyzer.py 90 44 418
tests/test_util_cli_mcp.py 98 50 418
gptme/prompts/workspace.py 52 97 417
tests/test_lessons_parser.py 188 239 417
tests/test_server_artifacts.py 66 32 415
tests/test_subagent_worktree_isolation.py 129 70 414
gptme/util/prompt.py 102 151 412
gptme/agent/workspace.py 130 227 407
gptme/util/cost_display.py 81 80 406
gptme/cli/auth.py 83 54 405
gptme/agent/service.py 108 103 400
gptme/tools/tmux.py 98 170 398
tests/test_tools_mcp.py 102 20 398
tests/test_hybrid_lessons.py 100 58 395
tests/test_profiles.py 88 37 395
gptme/agent/cli.py 108 137 394
gptme/eval/suites/subagent.py 90 70 394
gptme/tools/python.py 98 131 393
tests/test_computer_latency_cmd.py 93 42 393
gptme/lessons/index.py 120 135 392
gptme/agent/doctor.py 90 43 388
gptme/hooks/tests/test_manifest.py 95 45 387
gptme/workspace_snapshot.py 53 64 386
gptme/llm/openai_responses.py 80 26 384
tests/test_dataset.py 127 38 381
gptme/logmanager/conversations.py 82 119 379
tests/test_guardrail_hook.py 95 74 377
gptme/cli/cmd_hooks.py 106 76 376
tests/test_unified_plugins.py 102 42 376
scripts/check_rst_formatting.py 96 102 374
tests/test_mcp_adapter.py 124 61 373
gptme/init.py 68 113 372
gptme/server/external_sessions.py 59 92 372
tests/test_conversations.py 51 33 371
tests/test_github_ci_self_heal.py 71 6 371
gptme/cli/cmd_status.py 95 103 370
tests/test_server_v2_agents.py 67 28 370
tests/test_tools_read.py 121 52 370
gptme/cli/cmd_service.py 126 370 369
tests/test_workspace_api.py 103 19 369
tests/test_provider_plugins.py 93 33 366
gptme/info.py 98 80 365
gptme/eval/dspy/cli.py 73 57 364
gptme/lessons/hybrid_matcher.py 122 162 364
tests/test_computer_record.py 119 30 364
tests/test_eval_behavioral_solutions.py 281 848 364
tests/test_cost_tracker.py 44 26 361
tests/test_replay.py 120 110 361
gptme/llm/llm_grok_subscription.py 93 74 359
tests/test_context_providers.py 183 121 356
tests/test_mcp_discovery.py 107 41 356
gptme/llm/llm_openai_models.py 6 49 355
gptme/mcp/client.py 99 138 355
tests/test_lessons_matcher.py 99 86 352
gptme/hooks/tests/test_guardrails.py 113 57 351
gptme/llm/local_discovery.py 64 35 351
gptme/eval/dspy/experiments.py 94 60 350
gptme/sandbox.py 95 208 349
tests/test_computer_use_integration.py 140 143 349
scripts/docs_structure.py 61 25 348
tests/test_tui_e2e.py 63 82 348
gptme/hooks/tests/test_confirm.py 108 60 347
tests/test_util_hooks.py 85 93 347
gptme/eval/dspy/metrics.py 97 98 345
tests/test_complete.py 81 72 345
tests/test_tools_patch_many.py 91 101 345
gptme/hooks/tests/test_elicitation.py 91 45 343
tests/test_skill_commands.py 113 49 342
tests/test_computer_semantic_fixtures.py 92 107 340
gptme/config/models.py 114 99 337
gptme/tools/mcp.py 103 103 337
tests/test_search_alias.py 56 61 337
tests/test_script_hooks.py 55 7 336
tests/test_eval_trends.py 35 22 335
gptme/hooks/cost_awareness.py 83 79 334
gptme/util/safety.py 57 63 330
tests/test_llm_grok_subscription.py 98 20 330
tests/test_workspace_agents.py 145 57 329
gptme/config/chat.py 64 110 328
gptme/hooks/tests/test_agents_md_inject.py 63 48 328
gptme/eval/suites/practical.py 35 30 326
gptme/tools/subagent/__init__.py 65 225 324
gptme/tools/subagent/types.py 85 156 323
tests/test_circuit_breaker.py 98 69 322
tests/test_util_tool_format.py 78 32 322
gptme/checkpoint.py 79 49 321
tests/test_ephemeral.py 87 56 321
tests/test_llm_validate.py 64 61 321
tests/test_mcp.py 94 62 321
tests/test_util_safety.py 96 22 321
scripts/treeofthoughts.py 59 91 320
gptme/hooks/tests/test_tool_target_instructions.py 58 49 319
tests/test_workspace_snapshot.py 105 46 319
tests/test_agent_doctor.py 72 34 318
gptme/eval/trends.py 59 31 317
gptme/tools/shell_flags.py 60 257 315
tests/test_preview_proxy.py 91 43 315
tests/test_skill_metrics.py 38 2 312
gptme/tools/read.py 57 79 311
tests/test_tools_morph.py 89 67 311
tests/test_util_cli_batch.py 62 8 310
tests/test_chats_external_search.py 72 55 307
gptme/context/scout.py 83 92 306
tests/test_browser.py 140 71 305
gptme/dataset/trajectory_to_env.py 81 92 302
gptme/attestation.py 71 2 301
gptme/cli/cmd_memory.py 40 27 301
tests/test_tools_rag.py 95 37 301
tests/test_config_encoding.py 154 195 300
tests/context/test_adaptive_compressor.py 58 44 298
gptme/tools/_browser_thread.py 57 68 297
gptme/plugins/__init__.py 101 133 295
gptme/prompts/templates.py 70 151 295
gptme/server/cli.py 52 95 294
gptme/server/session_models.py 69 111 294
tests/test_eval_swebench.py 78 41 294
gptme/commands/llm.py 60 55 292
tests/test_plugins.py 110 85 292
tests/test_chats_stats.py 72 30 291
tests/test_llm_openai_reasoning_effort.py 81 19 289
gptme/server/preview_proxy_api.py 82 125 288
tests/test_execenv.py 76 54 288
gptme/commands/snapshot.py 43 32 287
tests/lessons/test_wildcard_matching.py 114 125 287
gptme/acp/client.py 67 122 285
tests/test_server_a2a.py 64 20 283
gptme/eval/dspy/hybrid_optimizer.py 141 345 282
tests/test_hooks_server_confirm.py 78 31 282
tests/test_server_v2_auto_stepping.py 56 50 281
gptme/eval/swe_extra/swe_bench_test_spec.py 53 29 280
gptme/tools/lessons.py 106 117 278
tests/test_tools_patch_anchored.py 65 26 278
gptme/llm/validate.py 43 64 277
tests/test_auto_naming.py 80 48 277
gptme/tools/save.py 63 63 276
gptme/cli/onboard.py 73 79 275
tests/test_computer_video_frames_cli.py 67 12 274
tests/test_tool_conditionals.py 89 1 274
tests/test_tools_restart.py 72 49 274
gptme/util/tool_display.py 36 23 273
tests/test_util_tokens.py 129 71 273
gptme/tools/patch.py 63 95 271
tests/test_hooks.py 130 49 271
tests/test_telemetry.py 77 85 270
gptme/hooks/tests/test_token_awareness.py 37 28 269
tests/test_util_cli_attest.py 67 1 269
gptme/cli/cmd_init.py 92 163 268
gptme/profiles.py 66 68 268
gptme/llm/models/listing.py 63 58 267
tests/test_computer_docker_config.py 59 92 267
tests/lessons/test_bm25_parity.py 67 70 266
gptme/memory/schema.py 49 24 264
gptme/cli/cmd_skills.py 71 35 261
tests/test_server_startup.py 39 65 261
tests/test_tools_autocommit.py 99 47 259
gptme/llm/models/resolution.py 59 85 258
tests/test_terminal_startup_latency.py 77 32 257
tests/test_tool_use.py 60 66 255
tests/test_context_selector.py 83 45 254
gptme/hooks/tests/test_form_autodetect.py 73 25 253
tests/test_eval_claude_code.py 66 27 253
gptme/knowledge.py 70 80 252
tests/test_lessons_integration.py 97 66 252
gptme/eval/suites/practical16.py 64 100 251
scripts/check_model_freshness.py 53 40 251
gptme/server/tools_api.py 58 49 249
tests/test_prompt_tools.py 57 30 249
tests/test_tools_screenshot.py 59 52 249
gptme/config/cli_setup.py 39 62 247
gptme/hooks/tests/test_injection_screening.py 78 13 247
gptme/tools/rag.py 89 131 246
tests/test_skill_events.py 49 2 246
tests/test_track_tokens.py 63 29 245
gptme/tools/patch_many.py 56 62 243
gptme/anti_slop.py 40 62 242
tests/test_local_discovery.py 63 18 242
tests/test_agents_md_inject.py 43 37 241
gptme/eval/swebench/main.py 32 23 239
tests/test_cli_from_turn.py 65 18 239
gptme/commands/meta.py 54 20 238
gptme/context/task_analyzer.py 100 124 237
gptme/util/auto_naming.py 68 78 236
tests/test_computer_x11_integration.py 87 87 236
tests/test_cli_stats.py 62 27 234
gptme/context/adaptive_compressor.py 76 130 232
gptme/tools/todo.py 96 104 232
tests/test_onboard.py 56 49 232
gptme/logmanager/eventlog.py 68 56 231
gptme/util/review.py 70 129 231
tests/test_shell_allowlist_autoconfirm.py 58 62 231
gptme/tools/precommit.py 76 96 230
tests/test_tools__anchored.py 46 30 230
tests/test_computer_settle.py 90 78 228
tests/test_hooks_cwd_changed.py 55 24 227
gptme/cli/cmd_resume.py 44 25 226
gptme/lessons/parser.py 74 119 226
gptme/tools/autocompact/engine.py 41 75 225
gptme/tools/subagent/hooks.py 73 136 225
tests/test_chats_json.py 32 17 225
gptme/hooks/__init__.py 22 50 224
gptme/mcp/registry.py 59 70 224
tests/test_git_worktree.py 57 37 224
tests/test_tools_python.py 93 60 224
gptme/eval/suites/behavioral/__init__.py 9 11 223
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
tests/test_llm_retry_abort.py 85 62 216
tests/test_subagent_roundtrip.py 70 51 216
gptme/commands/base.py 71 76 214
tests/test_hooks_knowledge_inject.py 64 6 214
tests/test_llm_openai_sampling.py 42 0 214
gptme/eval/swe_extra/swe_bench_extra_data.py 69 51 213
gptme/hooks/elicitation.py 90 132 213
tests/test_cli_resume.py 64 15 212
tests/test_config_trust.py 94 43 212
tests/test_checkpoint.py 88 20 211
tests/test_server_fresh_bad_input.py 43 38 211
gptme/model_attestation.py 63 78 209
gptme/eval/swebench/evaluate.py 39 61 208
gptme/lessons/skill_events.py 33 26 208
tests/test_autocompact_scoring.py 86 39 208
gptme/cli/cmd_batch.py 31 6 207
tests/test_server_v2_hooks.py 80 60 207
gptme/server/auth.py 76 118 206
tests/test_executor.py 50 31 206
tests/test_oauth_openrouter.py 62 9 205
tests/test_shell_stream_oneshot.py 71 44 204
gptme/server/panels_api.py 51 51 203
tests/test_util_file_storage.py 51 36 203
gptme/server/computer_api.py 51 55 202
tests/test_tui_skill_events.py 22 4 202
gptme/eval/suites/practical7.py 57 81 201
gptme/hooks/auto_snapshots.py 51 66 201
gptme/util/sound.py 65 72 200
tests/test_tutorial.py 85 7 200
tests/test_util_cli_models.py 31 27 199
gptme/hooks/tests/test_active_context.py 37 29 198
gptme/hooks/tests/test_server_elicit.py 58 23 196
gptme/hooks/guardrails.py 65 84 195
tests/test_cli_fatal_error_envelope.py 41 37 194
tests/test_tools_save.py 57 36 193
gptme/cli/cmd_knowledge.py 44 57 191
gptme/eval/suites/practical8.py 68 62 191
tests/test_chats_clean.py 46 18 191
tests/test_server_tools_query.py 54 35 191
gptme/hooks/manifest.py 43 41 190
tests/test_acp_client.py 69 34 190
gptme/hooks/script.py 21 8 189
tests/test_computer_task.py 116 31 189
gptme/tools/pruner.py 44 0 188
gptme/eval/agents/claude_code.py 41 33 187
gptme/memory/recall.py 35 14 187
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_computer_screenshot_cli.py 53 12 183
tests/test_fold_mid_system.py 74 43 183
gptme/mcp/server.py 51 68 182
tests/test_k_best.py 76 23 182
tests/test_memory_tool.py 38 11 181
gptme/cli/cmd_stats.py 51 36 180
gptme/context/selector/file_selector.py 50 61 180
tests/test_dspy_hybrid.py 65 45 179
tests/test_foreground_output_dedup.py 37 15 179
tests/test_tools_tmux.py 77 65 179
gptme/cli/cmd_mcp.py 52 29 178
gptme/config/core.py 59 84 178
gptme/tools/autocompact/resume.py 50 74 178
tests/test_dspy_basic.py 66 44 177
gptme/cli/cmd_tutorial.py 50 37 176
gptme/eval/suites/practical4.py 47 24 176
tests/test_execute_msg_hook_call_id.py 65 49 176
tests/test_browser_lynx.py 63 15 175
gptme/commands/session.py 58 47 174
gptme/tools/request_tool_change.py 35 33 173
tests/test_tools_todo.py 81 65 173
tests/test_workspace_memory_policy.py 36 3 173
gptme/tools/patch_anchored.py 54 79 172
tests/test_chats_export.py 48 17 172
tests/test_model_selection_trace_export.py 55 13 172
tests/test_util_cli_generate.py 35 7 172
gptme/circuit_breaker.py 49 72 171
gptme/eval/suites/practical10.py 55 65 171
tests/test_acp_types.py 35 12 171
tests/test_tools_patch.py 91 214 171
gptme/eval/agents/swebench.py 35 22 170
tests/test_toolspec_read_only.py 40 11 170
gptme/util/git_worktree.py 40 67 169
gptme/util/tool_format.py 48 76 169
gptme/hooks/cache_awareness.py 118 186 168
gptme/oauth/openrouter.py 48 43 168
tests/test_util_terminal.py 52 34 168
tests/test_tools_elicit.py 50 25 167
gptme/server/acp_session_runtime.py 34 30 165
tests/test_util_cli_skills.py 63 42 165
gptme/eval/suites/practical2.py 46 18 164
gptme/llm/llm_gptme.py 64 112 164
gptme/util/cost_tracker.py 56 98 164
gptme/hooks/types.py 96 136 163
gptme/tui/main.py 25 15 163
tests/test_anti_slop.py 69 24 163
tests/test_tools_time_awareness.py 52 34 163
tests/test_util_cost.py 29 26 163
gptme/cli/cmd_explain.py 33 26 161
tests/test_server_default_profile.py 69 42 161
tests/test_acp_protocol_logging.py 56 15 160
tests/test_tree.py 64 40 160
gptme/llm/utils.py 56 92 159
gptme/util/tokens.py 46 69 159
gptme/eval/suites/practical3.py 27 19 158
tests/test_acp_stdout.py 76 37 158
tests/test_server_api_v2_common.py 48 48 158
tests/test_tui_visual.py 48 46 158
tests/test_uri.py 55 30 158
gptme/dirs.py 72 99 157
gptme/llm/llm_openai_models_deprecated.py 5 14 157
gptme/util/__init__.py 34 29 157
tests/test_backtrack.py 39 11 157
gptme/cli/cmd_dataset.py 25 23 156
gptme/hooks/cli_confirm.py 52 59 156
gptme/server/api_v2_common.py 83 63 156
tests/test_commands_account.py 37 6 156
tests/test_server_v2_tool_confirmation.py 33 33 155
gptme/eval/suites/practical15.py 65 92 154
tests/test_eval_pass_rate_gate.py 48 9 154
tests/test_git_cmd_resolver.py 45 34 154
tests/test_llm_retry_policy.py 63 18 153
tests/test_server_config_workspace_containment.py 42 46 153
tests/test_timings.py 66 50 153
gptme/tools/autocompact/scoring.py 53 89 152
tests/test_subagent_integration.py 48 21 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/eval/swebench/retrieval.py 46 62 151
tests/test_util_tree.py 44 33 151
gptme/tools/restart.py 53 83 150
gptme/tools/subagent/persistence.py 29 36 150
tests/test_shell_max_output_bytes.py 63 80 150
tests/test_tools_vision.py 38 34 150
gptme/server/client.py 63 79 149
tests/fixtures/provider_test_scaffold.py 76 68 148
tests/test_browser_state.py 75 31 148
tests/test_util_install.py 34 31 148
gptme/eval/agents/__init__.py 24 15 147
gptme/util/clipboard.py 22 12 147
tests/test_master_context.py 39 24 147
gptme/acp/__main__.py 52 57 146
gptme/hooks/token_awareness.py 47 46 146
gptme/llm/models/types.py 55 91 146
tests/test_misc_subprocess_timeouts.py 48 30 146
gptme/tools/form.py 42 64 145
tests/test_file_selector_integration.py 50 23 145
tests/test_vent.py 32 10 145
gptme/lessons/skill_commands.py 47 58 144
tests/test_subagent_concurrency.py 37 16 144
gptme/commands/checkpoint.py 21 4 143
gptme/hooks/tests/test_aw_watcher_agent.py 26 6 143
tests/test_server_elicitation.py 47 17 141
gptme/server/api_v2_agents.py 25 17 139
tests/test_dspy_integration.py 54 32 139
tests/test_tools_token_awareness.py 59 47 139
gptme/config/trust.py 54 45 138
gptme/eval/suites/practical5.py 67 80 138
tests/test_computer_milestone_integration.py 61 59 138
gptme/hooks/agents_md_inject.py 36 63 137
tests/test_util_content.py 49 25 137
gptme/eval/swebench/utils.py 30 10 135
gptme/hooks/tool_target_instructions.py 37 47 135
gptme/server/app.py 35 84 135
gptme/tools/elicit.py 40 121 135
tests/test_chat_config.py 53 44 135
tests/test_cli_explain.py 53 18 135
gptme/tools/autocompact/context_provider.py 51 54 133
tests/test_computer_gate.py 76 40 133
gptme/cli/cmd_attest.py 21 5 131
gptme/eval/suites/practical17.py 64 137 131
gptme/eval/suites/behavioral/minimal_feature_preserve_default_with_decoys.py 41 72 130
gptme/hooks/injection_screening.py 31 34 130
gptme/util/replay.py 42 49 129
tests/test_agent_workspace_timeouts.py 41 22 129
tests/test_snapshot_list.py 45 7 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
tests/test_docs_structure.py 31 29 126
gptme/hooks/tests/test_cache_awareness.py 47 34 125
gptme/k_best.py 34 40 125
gptme/server/skills_api.py 32 4 125
tests/test_util_context_dedup.py 61 43 125
gptme/hooks/confirm.py 57 95 124
tests/test_treeofthoughts.py 34 23 124
gptme/eval/suites/behavioral/handle_specific_exception.py 15 8 123
gptme/hooks/form_autodetect.py 48 65 123
tests/test_computer_risk_streaming.py 54 44 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
gptme/tools/autocompact/hook.py 40 48 122
gptme/prompt_queue.py 41 21 121
tests/test_server_webui_dir.py 59 21 121
tests/test_subagent_planner_roles.py 39 30 121
tests/test_util_interrupt.py 48 38 121
tests/test_eval_format_routing.py 30 25 120
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
gptme/commands/backtrack.py 31 29 117
gptme/server/metrics.py 36 19 117
tests/test_util_clipboard_paste.py 27 14 117
gptme/eval/suites/behavioral/add_type_hints.py 40 97 116
gptme/plugins/registry.py 40 35 116
gptme/util/ask_execute.py 26 44 116
tests/test_agent_service_timeouts.py 19 18 116
scripts/auto_rename_logs.py 34 23 115
tests/thread_leak.py 34 55 115
gptme/eval/suites/practical18.py 52 117 114
gptme/hooks/server_elicit.py 52 56 113
tests/test_lessons_status.py 67 96 113
tests/test_chats_rename.py 42 16 112
tests/test_server_host_validation.py 46 29 112
gptme/hooks/tests/test_time_awareness.py 36 11 111
gptme/util/export.py 26 29 111
gptme/eval/types.py 35 69 110
gptme/tools/computer_semantic.py 61 129 110
tests/test_computer_run_task_cli.py 40 14 109
tests/test_cost_awareness_delayed_warning.py 42 32 108
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_browser_session_persistence.py 62 33 103
tests/test_server_parent_death_watcher.py 25 38 103
tests/test_tools_choice.py 51 26 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
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
gptme/tools/_computer_gate.py 33 61 100
gptme/tools/screenshot.py 30 45 100
tests/test_command_completion.py 33 23 100
tests/test_hooks_mcp_namespace_hint.py 30 14 100
tests/test_memory_cli_metadata.py 12 8 100
gptme/__version__.py 21 17 99
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/llm/llm_openrouter_subscription.py 35 37 99
gptme/tools/vision.py 35 36 99
tests/test_generation_pre_snapshot_boundary.py 38 39 99
gptme/eval/suites/behavioral/implement_priority_queue.py 61 109 98
tests/test_thread_leak.py 29 7 98
tests/test_server_auth.py 46 25 97
gptme/eval/suites/behavioral/optimize_n_squared.py 31 43 96
tests/test_shell_parser.py 19 3 96
tests/test_agent_fork_command.py 18 5 95
tests/test_session.py 40 21 95
tests/test_server_v2_sse.py 26 27 94
gptme/tools/vent.py 39 64 93
gptme/prompts/chat_history.py 34 27 91
tests/test_server_etag.py 22 5 91
gptme/acp/types.py 25 13 90
gptme/hooks/knowledge_inject.py 21 37 90
gptme/server/tts_api.py 24 18 90
tests/test_agent_memory.py 26 17 90
gptme/cli/cmd_slop.py 17 10 89
gptme/eval/tbench/run.py 16 12 89
tests/test_swebench_utils.py 27 2 89
gptme/commands/__init__.py 16 21 88
gptme/tools/memory.py 34 40 88
tests/test_commands_rag.py 16 2 88
tests/test_server_cors.py 33 20 88
gptme/eval/suites/behavioral/circuit_breaker.py 53 118 87
gptme/llm/models/recommended.py 19 30 87
gptme/prompts/context_cmd.py 12 18 87
gptme/util/tree.py 21 15 87
scripts/verify_cloudflare_pages_deep_links.py 17 1 87
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/config/__init__.py 7 16 85
gptme/eval/suites/behavioral/implement_memoization.py 50 112 85
gptme/tools/autocompact/handlers.py 27 14 85
tests/test_util.py 42 85 85
gptme/tools/_browser_lynx.py 11 8 84
tests/test_output_format.py 29 21 84
gptme/eval/suites/behavioral/validate_user_input.py 33 55 83
tests/test_shell_high_fd.py 28 29 83
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 38 58 81
tests/test_commands_llm.py 16 0 81
tests/test_eval_swebench_retrieval.py 25 4 81
tests/test_prompt_queue.py 33 15 80
tests/test_prompt_skills_summary.py 44 44 80
gptme/cli/cmd_agents.py 19 14 79
gptme/eval/suites/behavioral/rate_limiting.py 52 118 78
gptme/util/context_savings.py 20 6 77
tests/test_eval_timeouts.py 32 33 77
tests/test_server_perf.py 22 21 77
tests/test_xml_format.py 33 91 77
gptme/cli/cmd_capabilities.py 8 6 76
gptme/context/compress.py 63 131 76
gptme/gears.py 16 4 76
gptme/eval/pass_rate_gate.py 23 44 75
gptme/memory/policy.py 11 7 75
tests/test_cli_llm_generate.py 17 10 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
gptme/llm/models/__init__.py 4 12 74
gptme/tools/subagent/control.py 19 3 74
tests/test_custom_providers.py 32 44 74
tests/test_subscription_pricing.py 27 14 74
gptme/tools/progress.py 23 53 73
tests/test_pytest_timeout_retry_interaction.py 21 25 73
tests/test_shell_issue772.py 48 47 73
gptme/util/output_storage.py 29 37 71
tests/test_acp_e2e_smoke.py 23 27 71
gptme/llm/llm_anthropic_models_deprecated.py 5 11 70
gptme/llm/retry_abort.py 24 66 70
gptme/session.py 39 64 70
gptme/config/project.py 23 28 69
gptme/context/selector/llm_based.py 32 38 69
gptme/plugins/entrypoints.py 24 35 69
gptme/util/generate_name.py 5 6 69
tests/test_server_audio_transcription.py 20 15 69
tests/test_hooks_form_autodetect.py 22 34 68
tests/test_docs_tool_formats_coverage.py 16 15 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_setup_completions.py 21 6 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/logmanager/conv_checkpoints.py 21 19 65
tests/test_computer_api.py 90 401 65
tests/test_eval_tool_efficiency.py 20 11 64
gptme/eval/filestore.py 11 8 63
gptme/lessons/skills/python-repl/python_helpers.py 28 26 63
gptme/memory/roots.py 18 16 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/util/_sound_cmd.py 22 17 62
gptme/eval/suites/behavioral/add_logging.py 27 39 61
gptme/llm/retry_policy.py 19 24 60
gptme/tools/_browser_perplexity.py 22 16 60
tests/test_llm_mock.py 22 12 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
tests/test_server_metrics.py 20 20 59
tests/test_shell_memory_limit.py 18 14 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_validate_release_package.py 14 1 58
gptme/tools/clarify.py 17 26 57
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/util/cost.py 20 21 55
gptme/util/history.py 17 7 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
tests/test_server_skills_api.py 13 1 54
gptme/credentials.py 16 7 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
tests/test_server_tts_api.py 21 0 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
gptme/cli/cmd_snapshot.py 12 6 49
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/tools/subagent/concurrency.py 12 10 49
tests/test_execute_msg_defensive.py 19 19 49
gptme/llm/provider_plugins.py 39 35 48
gptme/tools/_allowlist.py 18 15 48
gptme/eval/suites/behavioral/git_selective_commit.py 21 59 47
gptme/status_provider.py 24 60 47
tests/test_pytest_retry_tmp_path_interaction.py 17 26 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
gptme/logmanager/__init__.py 4 9 44
gptme/tools/autocompact/__init__.py 3 12 44
tests/test_pdf_to_images.py 13 13 43
gptme/eval/suites/behavioral/stage_new_files.py 12 18 42
tests/test_server_cli_fallback.py 16 12 42
gptme/cli/cmd_mcp_serve.py 14 17 41
gptme/context/selector/file_config.py 10 8 41
gptme/hooks/test.py 14 6 41
gptme/llm/llm_mock.py 16 22 41
gptme/eval/cost.py 18 25 40
gptme/util/file_storage.py 30 47 40
scripts/validate_release_package.py 12 4 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/__init__.py 8 3 36
gptme/cli/wut.py 13 12 36
gptme/commands/rag.py 17 8 36
tests/test_gears.py 18 0 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_tools_pruner.py 9 0 35
gptme/tools/subagent/context.py 22 81 34
tests/test_cli_confirm_hook.py 24 20 34
tests/test_credentials.py 16 0 34
gptme/context/__init__.py 8 8 33
gptme/memory/__init__.py 3 5 33
tests/test_shell_for_loop_issue724.py 16 24 33
gptme/eval/suites/behavioral/_common.py 9 5 32
gptme/hooks/tests/test_auto_confirm.py 12 4 32
gptme/context/selector/__init__.py 12 16 31
gptme/util/content.py 18 24 30
gptme/util/install.py 13 25 30
gptme/constants.py 21 29 29
gptme/util/git_cmd.py 12 30 29
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/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
gptme/tools/autocompact/config.py 11 16 24
tests/test_tool_loading_duplicate.py 16 15 24
gptme/cli/cmd_review.py 23 34 23
gptme/context/selector/base.py 14 23 23
gptme/mcp/__init__.py 4 3 23
gptme/tools/_hashline_snapshot.py 16 15 23
gptme/util/interrupt.py 13 15 23
gptme/tools/_url_safety.py 9 10 22
gptme/util/conversation_ids.py 7 4 22
tests/test_credentials_integration.py 8 0 22
gptme/acp/__init__.py 5 13 21
gptme/context/config.py 13 30 21
gptme/context/selector/config.py 8 8 21
gptme/lessons/__init__.py 7 15 21
gptme/agent/__init__.py 3 6 19
tests/test_constants.py 11 13 19
tests/test_server_cli_tools.py 12 4 19
tests/test_tools_shell_multiline.py 7 19 19
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_llm_summarize_terminal_projection.py 9 9 15
tests/test_screenshot.py 9 6 15
gptme/__main__.py 2 0 12
gptme/util/stdio.py 8 9 12
gptme/prompts/architect.py 26 52 11
gptme/server/__init__.py 5 8 9
gptme/server/constants.py 7 11 9
gptme/eval/tbench/__init__.py 13 22 8
gptme/eval/dspy/__init__.py 6 6 7
tests/retry_compat.py 8 22 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/__main__.py 1 0 3
gptme/tools/_browser_format.py 3 5 3
gptme/dataset/__init__.py 4 7 2
gptme/oauth/__init__.py 1 4 0
gptme/tui/__init__.py 4 12 0
-------------------------------------------------------------------------------------------------------------------------------
SUM: 69392 65697 261350
-------------------------------------------------------------------------------------------------------------------------------
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: 893
Total blocks: 19349
Average complexity: 3.7364721691043465
Most Complex Functions (D+):
gptme/plugins/__init__.py
F 205:0 _load_plugin - D
gptme/message.py
F 559:0 format_msgs - D
F 665:0 print_msg - D
gptme/tui/app.py
M 1505:4 GptmeApp._generation_body - D
M 668:4 ChatInput._on_key - D
gptme/codeblock.py
F 102:0 _find_heredoc_terminator - E
F 240:0 _scan_ipython_triple_quote - D
gptme/tools/computer.py
F 1386:0 _dispatch_transport - D
gptme/tools/mcp_adapter.py
F 200:0 create_mcp_tools - D
gptme/tools/python.py
F 271:0 execute_python - D
gptme/tools/autocompact/engine.py
gptme/tools/__init__.py
F 290:0 get_toolchain - D
F 177:0 init_tools - D
gptme/tools/subagent/execution.py
F 488:0 _run_subagent_subprocess - D
gptme/tools/subagent/batch.py
gptme/tools/subagent/api.py
gptme/tools/complete.py
F 190:0 complete_hook - E
F 679:0 stuck_detect_hook - D
gptme/tools/shell_background.py
M 116:4 BackgroundJob._read_output - D
gptme/tools/gh.py
F 99:0 _wait_for_checks - D
gptme/tools/tmux.py
F 423:0 execute_tmux - D
gptme/tools/chats.py
gptme/tools/shell_validation.py
F 386:0 _has_sensitive_args - D
gptme/tools/shell.py
M 1031:4 ShellSession._read_output_windows - E
F 2447:0 execute_shell_impl - D
M 873:4 ShellSession._run_pipe - D
M 643:4 ShellSession._run_with_tty - D
gptme/tools/shell_flags.py
F 414:0 _split_lines - D
F 560:0 _check_segment - D
gptme/tools/read.py
F 161:0 _read_one - E
F 305:0 execute_read - D
gptme/tools/lessons.py
F 244:0 auto_include_lessons_hook - D
gptme/tools/mcp.py
gptme/tools/hashline_edit.py
F 808:0 execute_hashline_edit - D
gptme/tools/base.py
F 376:0 render_tool_conditionals - D
gptme/info.py
F 431:0 format_version_info - D
gptme/lessons/hybrid_matcher.py
M 394:4 HybridLessonMatcher._match_with_bm25 - D
gptme/lessons/installer.py
F 240:0 install_skill - E
F 507:0 check_dependencies - D
gptme/lessons/auto_include.py
F 264:0 _classify_lesson - D
gptme/lessons/parser.py
F 273:0 parse_lesson - D
gptme/lessons/index.py
M 97:4 LessonIndex._default_dirs - E
M 432:4 LessonIndex._load_manifest_skill_stubs - D
gptme/hooks/cli_confirm.py
F 173:0 _looks_like_diff - D
gptme/hooks/workspace_agents.py
F 1357:0 scan_agents - D
gptme/hooks/registry.py
M 178:4 HookRegistry.trigger - D
gptme/hooks/__init__.py
F 115:0 init_hooks - D
gptme/hooks/token_awareness.py
F 93:0 add_token_usage_warning - D
gptme/hooks/tool_target_instructions.py
F 67:0 _extract_paths - D
gptme/prompts/__init__.py
F 261:0 _build_prompt_sections - E
gptme/prompts/workspace.py
gptme/prompts/chat_history.py
F 20:0 prompt_chat_history - E
gptme/prompts/templates.py
F 91:0 prompt_gptme - E
gptme/context/selector/rule_based.py
M 27:4 RuleBasedSelector.select - D
gptme/context/selector/file_selector.py
gptme/config/models.py
M 365:4 ProjectConfig.from_dict - D
gptme/config/core.py
M 80:4 Config.mcp - D
gptme/config/user.py
F 351:0 load_user_config - E
F 674:0 _merge_config_data - D
gptme/config/chat.py
M 151:4 ChatConfig.from_dict - D
M 291:4 ChatConfig.save - D
gptme/config/cli_setup.py
gptme/commands/snapshot.py
F 42:0 _print_prunable - D
gptme/commands/llm.py
F 180:0 cmd_tools - D
F 271:0 cmd_context - D
gptme/commands/backtrack.py
F 65:0 cmd_backtrack - D
gptme/commands/checkpoint.py
F 43:0 cmd_checkpoint - D
gptme/commands/meta.py
F 142:0 cmd_plugin - E
gptme/util/ask_execute.py
F 69:0 execute_with_confirmation - D
gptme/util/_telemetry.py
F 324:0 init_telemetry - D
gptme/util/tool_format.py
F 104:0 format_tools_list - D
gptme/util/gh.py
F 1103:0 get_github_run_logs - D
F 1295:0 search_github_issues - D
F 1401:0 search_github_prs - D
F 1503:0 merge_github_pr - D
gptme/util/capabilities_export.py
F 549:0 validate_snapshot - D
gptme/util/prompt.py
M 296:4 GptmeCompleter.get_completions - D
gptme/util/reduce.py
F 553:0 _drop_orphaned_tool_pairs - D
F 624:0 limit_log - D
gptme/util/context.py
F 497:0 include_paths - E
F 985:0 _resource_to_codeblock - E
gptme/util/cost_display.py
F 392:0 display_costs - D
F 227:0 gather_conversation_costs - D
gptme/init.py
F 136:0 init_model - D
F 296:0 _record_selection_trace - D
gptme/memory/schema.py
gptme/server/session_step.py
gptme/server/tasks_api.py
F 396:0 get_git_status - D
F 856:0 api_tasks_update - D
gptme/server/api_v2_sessions.py
F 577:0 api_conversation_tool_confirm - E
F 1037:0 api_conversation_transcript - D
F 809:0 api_conversation_rerun - D
gptme/server/openapi_docs.py
F 948:0 _convert_to_openapi_nullable - D
gptme/server/api_v2_agents.py
F 57:0 api_agents_put - D
gptme/server/api_v2.py
F 1640:0 api_conversation_put - E
F 2088:0 api_conversation_edit_message - E
F 1843:0 api_conversation_post - E
F 2829:0 api_conversation_config_patch - E
F 1508:0 api_conversation - D
gptme/server/a2a_api.py
F 490:0 _task_from_conversation - D
gptme/chat.py
F 309:0 _run_chat_loop - E
F 516:0 _process_message_conversation - E
F 142:0 chat - D
gptme/llm/__init__.py
gptme/llm/llm_openai.py
F 1076:0 chat - E
F 520:0 init - E
F 1551:0 stream - E
F 793:0 _handle_openai_transient_error - D
F 1350:0 extra_body - D
F 1779:0 _handle_tools - D
gptme/llm/llm_anthropic.py
F 1362:0 _prepare_messages_for_api - D
F 752:0 chat - D
gptme/llm/openai_responses.py
F 320:0 _stream_responses_events - D
gptme/llm/models/listing.py
F 291:0 list_models - D
gptme/llm/models/resolution.py
gptme/workspace_snapshot.py
F 417:0 prune_by_age - D
gptme/acp/agent.py
M 655:4 GptmeAgent.new_session - E
M 1128:4 GptmeAgent.prompt - D
gptme/cli/cmd_skills.py
F 17:0 skills_list - D
gptme/cli/cmd_computer.py
F 1409:0 doctor_cmd - E
F 1170:0 latency_cmd - D
F 1751:0 demo_cmd - D
gptme/cli/doctor.py
F 642:0 _check_computer - D
gptme/cli/main.py
M 101:4 _DynamicHelpCommand.parse_args - D
gptme/cli/cmd_agents.py
F 25:0 run_scan - D
gptme/cli/util.py
F 816:0 llm_generate - D
F 1353:0 models_test - D
gptme/cli/cmd_review_watch.py
gptme/cli/cmd_service.py
F 566:0 init - D
gptme/cli/cmd_hooks.py
F 265:0 run - D
gptme/cli/cmd_review_pr.py
F 1072:0 review_pr - D
gptme/agent/doctor.py
F 339:0 check_lessons - E
gptme/eval/trends.py
F 157:0 compute_diff - D
gptme/eval/suites/practical16.py
F 68:0 check_queue_all_producers_mentioned - D
gptme/eval/leaderboard.py
F 928:0 compute_rate_trends - D
F 692:0 aggregate_per_test - D
gptme/eval/dspy/hybrid_optimizer.py
C 239:0 TaskComplexity - D
M 283:4 TaskComplexity.analyze - D
gptme/eval/run.py
F 310:0 execute - D
gptme/eval/main.py
gptme/telemetry.py
F 398:0 record_llm_request - E
tests/test_server.py
F 309:0 test_api_conversation_list_detail_flag - D
tests/test_config.py
F 729:0 test_project_config_loaded_from_toml - D
F 766:0 test_project_config_loaded_from_json - D
tests/test_eval_behavioral_solutions.py
F 55:0 _apply_solution - E
tests/test_memory_store.py
M 385:4 TestStore.test_concurrent_supersede_keeps_links_consistent - D
tests/test_skill_events.py
F 32:0 test_queue_is_not_completion_and_terminal_requires_valid_transition - D
tests/test_util_cli.py
F 19:0 test_tokens_count - D
F 406:0 test_tools_list - D
F 558:0 test_models_list - D
tests/test_server_v2_tool_confirmation.py
F 15:0 test_tool_confirmation_flow - D
tests/test_server_v2_auto_stepping.py
F 16:0 test_auto_stepping - E
F 259:0 test_multi_tool_per_message - D
tests/test_skill_metrics.py
F 100:0 test_ledger_and_metrics_agree_without_duplicate_terminal_counts - E
scripts/treeofthoughts.py
F 183:0 tree_search - D
scripts/check_rst_formatting.py
F 62:0 check_lines - E
scripts/docs_structure.py
F 263:0 check_nav - E
scripts/github_bot.py
F 554:0 main - D
scripts/auto_rename_logs.py
F 32:0 auto_rename_logs - D
scripts/demo_capture.py
F 485:0 main - D
Largest Files (>300 SLOC):
5181 tests/test_subagent_unit.py
3550 tests/test_server_v2.py
2874 tests/test_llm_openai.py
2844 tests/test_tools_subagent.py
2829 gptme/server/api_v2.py
2368 gptme/tools/shell.py
2252 tests/test_eval_behavioral.py
2075 tests/test_util_review.py
1939 gptme/tools/computer.py
1886 tests/test_tools_shell.py
1740 tests/test_config.py
1728 gptme/llm/llm_openai.py
1727 gptme/cli/cmd_computer.py
1695 tests/test_server_v2_sessions.py
1599 tests/test_init.py
1580 tests/test_cli.py
1509 gptme/cli/main.py
1458 tests/test_acp_agent.py
1431 gptme/tui/app.py
1379 tests/test_codeblock.py
1299 tests/test_tools_computer.py
1285 tests/test_util_cli_review_watch.py
1256 gptme/hooks/workspace_agents.py
1254 gptme/tools/subagent/api.py
1230 gptme/util/gh.py
1217 gptme/acp/agent.py
1188 tests/test_tools_shell_validation.py
1187 gptme/eval/leaderboard.py
1172 tests/test_util_gh.py
1168 gptme/cli/util.py
1132 tests/test_server.py
1127 tests/test_eval_behavioral_solutions.py
1088 tests/test_llm_utils.py
1055 tests/test_doctor.py
1042 tests/test_tools_base.py
1031 gptme/server/session_step.py
1021 tests/test_tools_complete.py
1005 gptme/cli/doctor.py
1004 tests/test_tools_hashline_edit.py
997 tests/test_reduce.py
989 tests/test_memory_store.py
980 tests/test_tools_browser.py
977 tests/test_util_cli.py
972 tests/test_info.py
966 gptme/tools/base.py
962 gptme/llm/llm_anthropic.py
957 tests/test_lessons_auto_include.py
956 gptme/hooks/tests/test_workspace_agents.py
954 tests/test_tui.py
947 gptme/eval/dspy/tasks.py
931 tests/test_auto_compact.py
926 gptme/eval/main.py
910 tests/test_cmd_service.py
902 gptme/server/api_v2_sessions.py
889 tests/test_eval_leaderboard.py
881 tests/test_computer_audit.py
878 gptme/cli/cmd_review_pr.py
864 tests/test_tools_convert.py
844 tests/test_chat.py
831 tests/test_tasks_api.py
824 gptme/llm/__init__.py
821 tests/test_util_gh_mocked.py
820 gptme/eval/suites/computer.py
819 tests/test_eval_computer_suite.py
816 tests/test_shell_background.py
815 tests/test_prompt_templates.py
811 gptme/tools/subagent/execution.py
801 tests/test_sandbox.py
797 gptme/llm/models/data.py
794 gptme/tools/convert.py
790 gptme/server/openapi_docs.py
781 tests/test_cost_display.py
771 gptme/logmanager/manager.py
758 gptme/tools/browser.py
743 tests/test_server_workspace.py
739 gptme/util/context.py
733 gptme/tools/chats.py
728 tests/test_eval.py
720 gptme/cli/cmd_review_watch.py
715 gptme/eval/suites/basic.py
713 tests/test_tools_gh.py
713 tests/test_computer_transport.py
713 gptme/tools/subagent/batch.py
710 gptme/tools/mcp_adapter.py
709 gptme/cli/setup.py
707 tests/test_agent.py
705 gptme/tools/hashline_edit.py
699 tests/test_acp_session_runtime.py
696 tests/test_hooks_registry.py
692 tests/test_llm_anthropic.py
680 gptme/tools/_browser_playwright.py
680 gptme/server/tasks_api.py
670 tests/test_logmanager.py
666 tests/test_llm_models_resolution.py
640 tests/test_json_output.py
637 gptme/cli/cmd_service.py
626 tests/test_subagent_budget.py
626 tests/test_prompts.py
612 tests/test_lessons.py
610 tests/test_message.py
609 scripts/github_bot.py
607 tests/test_computer_doctor_cmd.py
599 gptme/util/capabilities_export.py
596 gptme/tools/gh.py
594 tests/test_mcp_server.py
587 gptme/chat.py
583 gptme/tools/complete.py
583 gptme/prompts/__init__.py
580 tests/test_tools_lessons.py
578 tests/test_tools_request_tool_change.py
578 tests/test_tools_precommit.py
576 tests/test_lessons_parser.py
573 tests/test_skill_installer.py
570 tests/test_llm_openai_subscription.py
567 scripts/github_ci_self_heal.py
567 gptme/tools/computer_transport.py
554 tests/test_eval_subagent.py
552 tests/test_server_panels.py
551 tests/test_memory_index_policy.py
550 gptme/eval/run.py
548 gptme/server/a2a_api.py
546 tests/test_computer_actions.py
543 tests/test_subagent_persistence.py
541 gptme/server/artifacts_api.py
539 tests/test_server_path_traversal.py
539 gptme/llm/llm_openai_subscription.py
538 tests/test_cc_memory.py
538 gptme/tools/subagent/__init__.py
537 tests/test_model_attestation.py
534 tests/test_tools.py
533 tests/conftest.py
531 tests/test_dirs.py
526 gptme/eval/execenv.py
525 tests/test_hooks_cost_awareness.py
523 gptme/tools/__init__.py
519 tests/test_server_bad_input.py
518 tests/test_context.py
514 tests/test_commands.py
514 gptme/lessons/installer.py
506 tests/test_capabilities_export.py
505 gptme/memory/store.py
504 gptme/tools/shell_validation.py
502 gptme/hooks/registry.py
501 tests/test_context_scout.py
496 tests/test_gptme_provider.py
487 gptme/cli/cmd_chats.py
486 gptme/server/workspace_api.py
485 gptme/config/user.py
484 tests/test_hooks_cache_awareness.py
484 gptme/codeblock.py
483 gptme/tools/tmux.py
480 tests/test_computer_demo_cmd.py
477 tests/test_snapshot_command.py
476 tests/test_eventlog.py
475 tests/test_server_session_models.py
472 tests/test_llm_models.py
472 gptme/hooks/tests/test_cost_awareness.py
471 gptme/message.py
458 tests/test_llm_auth.py
458 gptme/util/reduce.py
458 gptme/tools/shell_background.py
456 gptme/agent/workspace.py
451 scripts/demo_capture.py
446 tests/test_server_skill_events.py
445 scripts/analyze_compression.py
442 gptme/tools/shell_flags.py
442 gptme/tools/python.py
438 tests/test_util_cli_providers.py
437 tests/test_lessons_index.py
436 tests/test_computer_api.py
436 gptme/util/_telemetry.py
435 gptme/telemetry.py
432 gptme/util/prompt.py
429 tests/test_knowledge.py
425 tests/test_tools_browser_thread.py
423 tests/test_external_sessions.py
422 tests/test_lessons_commands.py
421 gptme/eval/dspy/prompt_optimizer.py
420 tests/test_tools_patch_many.py
419 gptme/agent/service.py
418 tests/test_util_cli_mcp.py
418 tests/context/test_task_analyzer.py
418 gptme/lessons/auto_include.py
417 gptme/prompts/workspace.py
415 tests/test_server_artifacts.py
414 tests/test_subagent_worktree_isolation.py
406 gptme/util/cost_display.py
405 gptme/cli/auth.py
399 gptme/eval/suites/subagent.py
398 tests/test_tools_mcp.py
396 gptme/llm/llm_openai_models.py
395 tests/test_profiles.py
395 tests/test_hybrid_lessons.py
394 gptme/agent/cli.py
393 tests/test_computer_latency_cmd.py
392 gptme/prompts/templates.py
392 gptme/lessons/index.py
388 gptme/workspace_snapshot.py
388 gptme/agent/doctor.py
387 gptme/hooks/tests/test_manifest.py
384 gptme/llm/openai_responses.py
383 tests/test_util_hooks.py
383 tests/test_computer_use_integration.py
381 tests/test_dataset.py
381 gptme/logmanager/conversations.py
378 gptme/cli/cmd_init.py
377 tests/test_guardrail_hook.py
376 tests/test_unified_plugins.py
376 gptme/cli/cmd_hooks.py
375 scripts/check_rst_formatting.py
374 gptme/init.py
373 tests/test_mcp_adapter.py
372 tests/test_lessons_matcher.py
372 gptme/server/external_sessions.py
371 tests/test_github_ci_self_heal.py
371 tests/test_conversations.py
370 tests/test_tools_read.py
370 tests/test_server_v2_agents.py
370 gptme/cli/cmd_status.py
369 tests/test_workspace_api.py
366 tests/test_provider_plugins.py
365 gptme/info.py
364 tests/test_computer_record.py
364 gptme/lessons/hybrid_matcher.py
364 gptme/eval/dspy/cli.py
363 tests/test_replay.py
361 tests/test_cost_tracker.py
361 gptme/sandbox.py
359 gptme/llm/llm_grok_subscription.py
356 tests/test_mcp_discovery.py
356 tests/test_context_providers.py
355 gptme/mcp/client.py
355 gptme/eval/dspy/experiments.py
352 gptme/tools/mcp.py
351 gptme/llm/local_discovery.py
351 gptme/hooks/tests/test_guardrails.py
350 scripts/docs_structure.py
350 gptme/eval/dspy/metrics.py
348 tests/test_tui_e2e.py
347 tests/test_skill_commands.py
347 tests/test_complete.py
347 gptme/hooks/tests/test_confirm.py
346 tests/test_tools_patch.py
346 tests/lessons/test_wildcard_matching.py
343 gptme/hooks/tests/test_elicitation.py
342 tests/test_script_hooks.py
340 tests/test_computer_semantic_fixtures.py
340 gptme/tools/read.py
337 tests/test_search_alias.py
337 gptme/config/models.py
336 tests/test_eval_trends.py
334 gptme/hooks/cost_awareness.py
330 tests/test_llm_grok_subscription.py
330 gptme/util/safety.py
329 tests/test_workspace_agents.py
328 gptme/hooks/tests/test_agents_md_inject.py
328 gptme/config/chat.py
327 tests/test_mcp.py
326 scripts/treeofthoughts.py
326 gptme/eval/suites/practical.py
323 gptme/tools/subagent/types.py
322 tests/test_workspace_snapshot.py
322 tests/test_util_tool_format.py
322 tests/test_circuit_breaker.py
321 tests/test_util_safety.py
321 tests/test_llm_validate.py
321 tests/test_ephemeral.py
321 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
315 tests/test_telemetry.py
315 tests/test_preview_proxy.py
314 tests/test_eval_swebench.py
314 gptme/context/scout.py
312 tests/test_skill_metrics.py
312 tests/test_plugins.py
311 tests/test_tools_morph.py
310 tests/test_util_cli_batch.py
310 gptme/tools/patch.py
307 tests/test_chats_external_search.py
305 tests/test_browser.py
303 gptme/dataset/trajectory_to_env.py
301 tests/test_tools_rag.py
301 gptme/tools/save.py
301 gptme/cli/cmd_memory.py
301 gptme/attestation.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@5.2.0
Clone found (python)
- __init__.py [29:47 - 40:30] (12 lines, 54 tokens)
context/__init__.py [36:55 - 47:30]
Clone found (python)
- __init__.py [29:47 - 42:29] (14 lines, 62 tokens)
context/selector/__init__.py [46:61 - 59:75]
Clone found (python)
- acp/client.py [239:9 - 246:9] (8 lines, 85 tokens)
acp/client.py [449:5 - 456:5]
Clone found (python)
- agent/cli.py [97:6 - 120:4] (24 lines, 84 tokens)
cli/cmd_agents.py [76:8 - 99:4]
Clone found (python)
- cli/auth.py [367:5 - 383:60] (17 lines, 90 tokens)
llm/llm_grok_subscription.py [291:5 - 306:60]
Clone found (python)
- cli/auth.py [386:5 - 404:76] (19 lines, 108 tokens)
llm/llm_grok_subscription.py [308:5 - 325:81]
Clone found (python)
- cli/auth.py [410:40 - 420:25] (11 lines, 64 tokens)
llm/llm_grok_subscription.py [331:58 - 341:25]
Clone found (python)
- cli/auth.py [456:9 - 469:18] (14 lines, 58 tokens)
llm/llm_grok_subscription.py [366:5 - 379:14]
Clone found (python)
- cli/cmd_batch.py [45:67 - 58:17] (14 lines, 74 tokens)
cli/main.py [242:77 - 255:17]
Clone found (python)
- cli/cmd_batch.py [132:5 - 145:39] (14 lines, 54 tokens)
cli/cmd_review_watch.py [576:5 - 589:39]
Clone found (python)
- cli/cmd_batch.py [145:37 - 159:38] (15 lines, 61 tokens)
cli/cmd_review_watch.py [591:45 - 605:38]
Clone found (python)
- cli/cmd_chats.py [77:22 - 89:15] (13 lines, 67 tokens)
cli/cmd_chats.py [117:24 - 129:15]
Clone found (python)
- cli/cmd_dataset.py [38:25 - 58:13] (21 lines, 92 tokens)
cli/cmd_dataset.py [99:26 - 119:13]
Clone found (python)
- cli/cmd_init.py [61:1 - 72:61] (12 lines, 70 tokens)
cli/cmd_service.py [317:1 - 328:61]
Clone found (python)
- cli/cmd_mcp.py [162:21 - 182:4] (21 lines, 80 tokens)
cli/cmd_mcp_serve.py [14:28 - 34:4]
Clone found (python)
- cli/cmd_mcp.py [207:5 - 217:24] (11 lines, 65 tokens)
cli/cmd_mcp_serve.py [62:5 - 72:24]
Clone found (python)
- cli/cmd_review_watch.py [95:5 - 106:14] (12 lines, 87 tokens)
cli/cmd_review_watch.py [128:5 - 139:14]
Clone found (python)
- cli/cmd_review_watch.py [847:86 - 861:80] (15 lines, 55 tokens)
cli/cmd_review_watch.py [1014:64 - 1032:33]
Clone found (python)
- cli/doctor.py [232:37 - 247:40] (16 lines, 60 tokens)
cli/doctor.py [254:47 - 269:40]
Clone found (python)
- cli/main.py [1260:40 - 1276:35] (17 lines, 102 tokens)
cli/main.py [1402:26 - 1418:27]
Clone found (python)
- cli/util.py [1517:9 - 1524:72] (8 lines, 54 tokens)
cli/util.py [1550:5 - 1557:68]
Clone found (python)
- commands/meta.py [165:9 - 173:49] (9 lines, 58 tokens)
commands/meta.py [214:9 - 222:49]
Clone found (python)
- config/chat.py [60:13 - 75:4] (16 lines, 100 tokens)
logmanager/eventlog.py [100:13 - 115:4]
Clone found (python)
- config/user.py [604:5 - 616:4] (13 lines, 62 tokens)
config/user.py [662:5 - 674:4]
Clone found (python)
- context/adaptive_compressor.py [56:1 - 69:23] (14 lines, 92 tokens)
tools/autocompact/scoring.py [145:1 - 158:23]
Clone found (python)
- context/adaptive_compressor.py [69:46 - 81:15] (13 lines, 52 tokens)
tools/autocompact/scoring.py [158:24 - 167:60]
Clone found (python)
- context/adaptive_compressor.py [175:1 - 186:79] (12 lines, 53 tokens)
tools/autocompact/scoring.py [236:61 - 247:79]
Clone found (python)
- context/adaptive_compressor.py [203:48 - 212:48] (10 lines, 55 tokens)
tools/autocompact/scoring.py [263:25 - 272:48]
Clone found (python)
- eval/agents/swebench.py [110:9 - 116:86] (7 lines, 60 tokens)
eval/agents/swebench.py [134:13 - 142:14]
Clone found (python)
- eval/dspy/cli.py [78:1 - 92:2] (15 lines, 79 tokens)
eval/dspy/cli.py [316:66 - 330:2]
Clone found (python)
- eval/dspy/cli.py [160:9 - 176:15] (17 lines, 57 tokens)
eval/dspy/cli.py [423:45 - 439:15]
Clone found (python)
- eval/dspy/cli.py [187:13 - 192:51] (6 lines, 58 tokens)
eval/dspy/cli.py [450:13 - 455:51]
Clone found (python)
- eval/execenv.py [180:9 - 201:62] (22 lines, 63 tokens)
eval/execenv.py [482:9 - 503:62]
Clone found (python)
- eval/execenv.py [207:13 - 220:11] (14 lines, 59 tokens)
eval/execenv.py [508:13 - 521:11]
Clone found (python)
- eval/execenv.py [207:13 - 227:28] (21 lines, 92 tokens)
eval/execenv.py [718:13 - 737:16]
Clone found (python)
- eval/execenv.py [237:57 - 248:33] (12 lines, 94 tokens)
eval/filestore.py [59:60 - 70:33]
Clone found (python)
- eval/execenv.py [360:5 - 379:22] (20 lines, 137 tokens)
eval/execenv.py [585:5 - 604:22]
Clone found (python)
- eval/execenv.py [395:17 - 414:29] (20 lines, 82 tokens)
eval/execenv.py [615:17 - 634:29]
Clone found (python)
- eval/leaderboard.py [221:5 - 227:46] (7 lines, 61 tokens)
eval/leaderboard.py [702:5 - 708:85]
Clone found (python)
- eval/leaderboard.py [317:28 - 332:28] (16 lines, 63 tokens)
eval/leaderboard.py [377:68 - 392:28]
Clone found (python)
- eval/leaderboard.py [474:3 - 480:27] (7 lines, 82 tokens)
eval/leaderboard.py [848:3 - 854:27]
Clone found (python)
- eval/leaderboard.py [474:3 - 480:27] (7 lines, 82 tokens)
eval/leaderboard.py [1156:3 - 1162:27]
Clone found (python)
- eval/suites/behavioral/add_feature_preserve_default.py [61:5 - 79:17] (19 lines, 102 tokens)
eval/suites/behavioral/minimal_feature_preserve_default_with_decoys.py [112:5 - 130:17]
Clone found (python)
- eval/suites/behavioral/add_feature_preserve_default.py [83:43 - 131:5] (49 lines, 230 tokens)
eval/suites/behavioral/minimal_feature_preserve_default_with_decoys.py [162:59 - 210:5]
Clone found (python)
- eval/suites/behavioral/add_type_hints.py [19:62 - 27:44] (9 lines, 59 tokens)
eval/suites/behavioral/add_type_hints.py [41:70 - 49:44]
Clone found (python)
- eval/suites/behavioral/add_type_hints.py [19:62 - 27:33] (9 lines, 58 tokens)
eval/suites/behavioral/add_type_hints.py [82:71 - 90:33]
Clone found (python)
- eval/suites/behavioral/add_type_hints.py [42:43 - 49:69] (8 lines, 55 tokens)
eval/suites/behavioral/fix_mutable_default.py [28:41 - 35:69]
Clone found (python)
- eval/suites/behavioral/circuit_breaker.py [1:42 - 19:4] (19 lines, 68 tokens)
eval/suites/behavioral/rate_limiting.py [1:40 - 19:4]
Clone found (python)
- eval/suites/behavioral/circuit_breaker.py [91:51 - 111:44] (21 lines, 121 tokens)
eval/suites/behavioral/rate_limiting.py [82:49 - 102:44]
Clone found (python)
- eval/suites/behavioral/circuit_breaker.py [125:1 - 138:4] (14 lines, 73 tokens)
eval/suites/behavioral/rate_limiting.py [117:1 - 130:4]
Clone found (python)
- eval/suites/behavioral/circuit_breaker.py [170:46 - 178:68] (9 lines, 58 tokens)
eval/suites/behavioral/circuit_breaker.py [208:27 - 216:68]
Clone found (python)
- eval/suites/behavioral/implement_event_emitter.py [53:74 - 61:72] (9 lines, 69 tokens)
eval/suites/behavioral/implement_event_emitter.py [67:82 - 75:72]
Clone found (python)
- eval/suites/behavioral/implement_event_emitter.py [53:74 - 61:72] (9 lines, 69 tokens)
eval/suites/behavioral/implement_event_emitter.py [84:77 - 92:72]
Clone found (python)
- eval/suites/behavioral/implement_priority_queue.py [31:46 - 38:30] (8 lines, 50 tokens)
eval/suites/behavioral/implement_priority_queue.py [44:45 - 51:30]
Clone found (python)
- eval/suites/behavioral/root_cause_pipeline_debug.py [176:10 - 181:6] (6 lines, 59 tokens)
eval/suites/behavioral/root_cause_pipeline_debug.py [214:12 - 219:6]
Clone found (python)
- eval/suites/practical.py [26:63 - 33:40] (8 lines, 50 tokens)
eval/suites/practical.py [44:57 - 51:40]
Clone found (python)
- eval/suites/practical.py [26:63 - 33:40] (8 lines, 50 tokens)
eval/suites/practical.py [59:71 - 66:40]
Clone found (python)
- hooks/registry.py [127:9 - 133:91] (7 lines, 64 tokens)
hooks/registry.py [637:5 - 643:87]
Clone found (python)
- hooks/tests/test_agents_md_inject.py [62:9 - 71:34] (10 lines, 56 tokens)
hooks/tests/test_agents_md_inject.py [131:9 - 140:34]
Clone found (python)
- hooks/tests/test_agents_md_inject.py [156:74 - 171:35] (16 lines, 68 tokens)
hooks/tests/test_agents_md_inject.py [191:46 - 206:35]
Clone found (python)
- hooks/tests/test_agents_md_inject.py [156:74 - 171:40] (16 lines, 71 tokens)
hooks/tests/test_agents_md_inject.py [239:55 - 254:40]
Clone found (python)
- hooks/tests/test_agents_md_inject.py [156:74 - 170:68] (15 lines, 62 tokens)
hooks/tests/test_agents_md_inject.py [263:54 - 278:58]
Clone found (python)
- hooks/tests/test_agents_md_inject.py [156:74 - 172:21] (17 lines, 72 tokens)
hooks/tests/test_agents_md_inject.py [289:48 - 305:19]
Clone found (python)
- hooks/tests/test_agents_md_inject.py [335:68 - 350:35] (16 lines, 71 tokens)
hooks/tests/test_agents_md_inject.py [372:44 - 387:35]
Clone found (python)
- hooks/tests/test_confirm.py [421:48 - 431:13] (11 lines, 57 tokens)
hooks/tests/test_confirm.py [443:55 - 453:13]
Clone found (python)
- hooks/tests/test_cost_awareness.py [363:78 - 377:29] (15 lines, 56 tokens)
hooks/tests/test_cost_awareness.py [395:76 - 409:29]
Clone found (python)
- hooks/tests/test_cost_awareness.py [484:72 - 501:46] (18 lines, 62 tokens)
hooks/tests/test_cost_awareness.py [507:82 - 524:46]
Clone found (python)
- hooks/tests/test_server_confirm.py [254:35 - 266:34] (13 lines, 83 tokens)
hooks/tests/test_server_elicit.py [265:35 - 277:34]
Clone found (python)
- hooks/tests/test_time_awareness.py [114:36 - 120:21] (7 lines, 52 tokens)
hooks/tests/test_time_awareness.py [132:32 - 138:21]
Clone found (python)
- hooks/tests/test_time_awareness.py [114:36 - 120:21] (7 lines, 52 tokens)
hooks/tests/test_time_awareness.py [146:31 - 152:21]
Clone found (python)
- hooks/tests/test_tool_target_instructions.py [132:43 - 140:62] (9 lines, 55 tokens)
hooks/tests/test_tool_target_instructions.py [260:36 - 270:38]
Clone found (python)
- hooks/tests/test_tool_target_instructions.py [134:31 - 141:25] (8 lines, 53 tokens)
hooks/tests/test_tool_target_instructions.py [157:32 - 164:25]
Clone found (python)
- hooks/tests/test_workspace_agents.py [296:9 - 316:58] (21 lines, 124 tokens)
hooks/tests/test_workspace_agents.py [341:9 - 361:58]
Clone found (python)
- hooks/tests/test_workspace_agents.py [733:13 - 745:44] (13 lines, 57 tokens)
hooks/tests/test_workspace_agents.py [999:13 - 1011:44]
Clone found (python)
- init.py [338:5 - 343:6] (6 lines, 52 tokens)
model_attestation.py [296:5 - 301:6]
Clone found (python)
- knowledge.py [216:5 - 223:14] (8 lines, 63 tokens)
knowledge.py [257:5 - 264:14]
Clone found (python)
- llm/__init__.py [317:21 - 324:14] (8 lines, 72 tokens)
llm/__init__.py [764:21 - 771:14]
Clone found (python)
- llm/__init__.py [487:19 - 495:5] (9 lines, 56 tokens)
llm/__init__.py [641:12 - 649:5]
Clone found (python)
- llm/__init__.py [524:5 - 537:17] (14 lines, 54 tokens)
llm/__init__.py [678:5 - 691:17]
Clone found (python)
- llm/llm_anthropic.py [177:29 - 194:68] (18 lines, 77 tokens)
llm/llm_openai.py [283:26 - 300:68]
Clone found (python)
- llm/llm_anthropic.py [469:5 - 486:21] (18 lines, 61 tokens)
llm/llm_openai.py [813:5 - 831:21]
Clone found (python)
- llm/llm_anthropic.py [558:5 - 566:38] (9 lines, 66 tokens)
llm/llm_openai.py [965:5 - 973:38]
Clone found (python)
- llm/llm_anthropic.py [569:83 - 587:30] (19 lines, 64 tokens)
llm/llm_openai.py [976:44 - 994:30]
Clone found (python)
- llm/llm_anthropic.py [752:9 - 759:32] (8 lines, 56 tokens)
llm/llm_anthropic.py [855:11 - 862:32]
Clone found (python)
- llm/llm_anthropic.py [769:5 - 804:6] (36 lines, 161 tokens)
llm/llm_anthropic.py [880:5 - 915:6]
Clone found (python)
- llm/llm_grok_subscription.py [235:63 - 249:14] (15 lines, 51 tokens)
llm/llm_openai_subscription.py [375:50 - 388:27]
Clone found (python)
- llm/llm_mock.py [49:9 - 57:5] (9 lines, 55 tokens)
llm/llm_mock.py [62:11 - 70:5]
Clone found (python)
- llm/llm_openai.py [1076:9 - 1084:5] (9 lines, 52 tokens)
llm/llm_openai.py [1551:11 - 1559:5]
Clone found (python)
- llm/llm_openai.py [1091:5 - 1100:84] (10 lines, 50 tokens)
llm/llm_openai.py [1566:5 - 1575:84]
Clone found (python)
- llm/llm_openai.py [1166:5 - 1180:82] (15 lines, 93 tokens)
llm/llm_openai.py [1596:5 - 1610:82]
Clone found (python)
- llm/llm_openai.py [2113:48 - 2120:52] (8 lines, 50 tokens)
llm/llm_openai.py [2130:32 - 2137:52]
Clone found (python)
- llm/llm_openai.py [2226:5 - 2238:41] (13 lines, 56 tokens)
llm/openai_responses.py [178:5 - 190:41]
Clone found (python)
- llm/llm_openai_models.py [326:20 - 335:7] (10 lines, 51 tokens)
llm/llm_openai_models.py [345:14 - 354:7]
Clone found (python)
- llm/llm_openai_models.py [326:20 - 335:7] (10 lines, 51 tokens)
llm/llm_openai_models.py [356:20 - 365:7]
Clone found (python)
- llm/llm_openai_models.py [367:24 - 376:7] (10 lines, 51 tokens)
llm/llm_openai_models.py [378:20 - 387:7]
Clone found (python)
- llm/llm_openai_models.py [367:24 - 376:7] (10 lines, 51 tokens)
llm/llm_openai_models.py [400:14 - 409:7]
Clone found (python)
- llm/models/data.py [143:26 - 155:15] (13 lines, 54 tokens)
llm/models/data.py [157:26 - 169:15]
Clone found (python)
- llm/models/data.py [225:35 - 235:11] (11 lines, 55 tokens)
llm/models/data.py [236:33 - 246:11]
Clone found (python)
- llm/models/listing.py [184:21 - 190:10] (7 lines, 50 tokens)
llm/models/listing.py [357:32 - 363:14]
Clone found (python)
- llm/validate.py [266:9 - 281:4] (16 lines, 70 tokens)
llm/validate.py [334:54 - 349:4]
Clone found (python)
- llm/validate.py [333:48 - 349:4] (17 lines, 78 tokens)
llm/validate.py [352:45 - 368:4]
Clone found (python)
- llm/validate.py [333:48 - 346:64] (14 lines, 77 tokens)
llm/validate.py [371:37 - 384:64]
Clone found (python)
- plugins/__init__.py [481:5 - 506:4] (26 lines, 110 tokens)
util/install.py [14:5 - 39:4]
Clone found (python)
- prompt_queue.py [40:5 - 53:4] (14 lines, 70 tokens)
tools/subagent/control.py [34:5 - 47:4]
Clone found (python)
- prompt_queue.py [87:5 - 96:68] (10 lines, 50 tokens)
prompt_queue.py [148:5 - 157:68]
Clone found (python)
- prompts/__init__.py [445:21 - 457:39] (13 lines, 91 tokens)
prompts/__init__.py [566:15 - 578:39]
Clone found (python)
- prompts/__init__.py [461:5 - 478:6] (18 lines, 73 tokens)
prompts/__init__.py [641:5 - 658:6]
Clone found (python)
- server/api_v2.py [1121:84 - 1139:4] (19 lines, 69 tokens)
server/api_v2.py [1173:5 - 1191:4]
Clone found (python)
- server/api_v2.py [1141:5 - 1157:15] (17 lines, 118 tokens)
server/api_v2.py [1212:5 - 1228:15]
Clone found (python)
- server/api_v2.py [1845:5 - 1852:76] (8 lines, 61 tokens)
server/api_v2.py [2832:5 - 2839:76]
Clone found (python)
- server/api_v2.py [1882:5 - 1902:30] (21 lines, 95 tokens)
server/api_v2.py [2482:5 - 2502:30]
Clone found (python)
- server/api_v2.py [1890:31 - 1902:30] (13 lines, 54 tokens)
server/api_v2.py [2879:33 - 2891:30]
Clone found (python)
- server/api_v2.py [2062:118 - 2077:11] (16 lines, 54 tokens)
server/api_v2.py [2218:97 - 2233:11]
Clone found (python)
- server/api_v2.py [2122:5 - 2140:40] (19 lines, 82 tokens)
server/api_v2.py [2247:5 - 2266:30]
Clone found (python)
- server/api_v2.py [2140:86 - 2159:14] (20 lines, 80 tokens)
server/api_v2.py [2266:78 - 2286:14]
Clone found (python)
- server/api_v2.py [2367:5 - 2378:10] (12 lines, 61 tokens)
server/api_v2.py [2393:9 - 2406:14]
Clone found (python)
- server/api_v2.py [3055:58 - 3068:38] (14 lines, 94 tokens)
server/api_v2.py [3091:51 - 3104:38]
Clone found (python)
- server/api_v2.py [3059:5 - 3071:40] (13 lines, 78 tokens)
server/api_v2.py [3416:5 - 3428:15]
Clone found (python)
- server/api_v2.py [3209:53 - 3214:76] (6 lines, 51 tokens)
server/api_v2.py [3310:52 - 3315:76]
Clone found (python)
- server/api_v2.py [3209:53 - 3214:76] (6 lines, 51 tokens)
server/api_v2.py [3351:50 - 3356:76]
Clone found (python)
- server/api_v2.py [3209:53 - 3214:76] (6 lines, 51 tokens)
server/api_v2.py [3455:54 - 3460:76]
Clone found (python)
- server/api_v2.py [3209:53 - 3214:76] (6 lines, 51 tokens)
server/api_v2.py [3503:54 - 3508:76]
Clone found (python)
- server/api_v2_agents.py [59:5 - 65:15] (7 lines, 52 tokens)
server/tasks_api.py [746:5 - 752:7]
Clone found (python)
- server/api_v2_sessions.py [302:96 - 314:81] (13 lines, 74 tokens)
server/api_v2_sessions.py [1130:60 - 1142:81]
Clone found (python)
- server/api_v2_sessions.py [318:5 - 329:15] (12 lines, 51 tokens)
server/api_v2_sessions.py [610:9 - 621:19]
Clone found (python)
- server/api_v2_sessions.py [606:9 - 621:19] (16 lines, 79 tokens)
server/api_v2_sessions.py [1140:5 - 1155:15]
Clone found (python)
- server/api_v2_sessions.py [607:27 - 621:19] (15 lines, 67 tokens)
server/api_v2_sessions.py [827:19 - 841:15]
Clone found (python)
- server/session_models.py [343:25 - 355:46] (13 lines, 76 tokens)
server/session_models.py [404:29 - 416:42]
Clone found (python)
- server/session_models.py [372:21 - 389:8] (18 lines, 66 tokens)
server/session_models.py [431:17 - 448:8]
Clone found (python)
- server/session_step.py [605:5 - 612:69] (8 lines, 52 tokens)
server/session_step.py [1406:5 - 1413:69]
Clone found (python)
- server/tasks_api.py [505:73 - 514:64] (10 lines, 53 tokens)
server/tasks_api.py [518:51 - 527:64]
Clone found (python)
- server/workspace_api.py [55:68 - 62:6] (8 lines, 63 tokens)
server/workspace_api.py [76:5 - 83:6]
Clone found (python)
- server/workspace_api.py [344:74 - 353:26] (10 lines, 73 tokens)
server/workspace_api.py [616:77 - 625:26]
Clone found (python)
- server/workspace_api.py [344:74 - 353:26] (10 lines, 73 tokens)
server/workspace_api.py [683:9 - 692:26]
Clone found (python)
- server/workspace_api.py [568:9 - 588:67] (21 lines, 149 tokens)
server/workspace_api.py [655:9 - 675:67]
Clone found (python)
- telemetry.py [61:24 - 83:8] (23 lines, 135 tokens)
util/_telemetry.py [321:34 - 343:8]
Clone found (python)
- telemetry.py [114:9 - 123:45] (10 lines, 60 tokens)
telemetry.py [557:5 - 566:41]
Clone found (python)
- tools/_browser_playwright.py [758:9 - 773:8] (16 lines, 89 tokens)
tools/browser.py [1081:9 - 1096:8]
Clone found (python)
- tools/_browser_playwright.py [775:60 - 783:62] (9 lines, 59 tokens)
tools/browser.py [999:68 - 1007:62]
Clone found (python)
- tools/_browser_playwright.py [896:69 - 909:27] (14 lines, 77 tokens)
tools/browser.py [1179:44 - 1192:27]
Clone found (python)
- tools/_browser_playwright.py [1079:1 - 1094:43] (16 lines, 61 tokens)
tools/browser.py [1306:1 - 1321:43]
Clone found (python)
- tools/autocompact/engine.py [197:13 - 206:18] (10 lines, 57 tokens)
tools/autocompact/engine.py [248:17 - 257:22]
Clone found (python)
- tools/clarify.py [45:5 - 60:31] (16 lines, 83 tokens)
tools/complete.py [229:5 - 244:31]
Clone found (python)
- tools/complete.py [430:5 - 438:15] (9 lines, 50 tokens)
tools/complete.py [504:5 - 512:15]
Clone found (python)
- tools/computer.py [1484:13 - 1501:14] (18 lines, 71 tokens)
tools/computer.py [1873:13 - 1890:14]
Clone found (python)
- tools/computer.py [1630:13 - 1649:37] (20 lines, 93 tokens)
tools/computer_transport.py [262:13 - 281:37]
Clone found (python)
- tools/computer.py [1662:53 - 1673:30] (12 lines, 52 tokens)
tools/computer.py [1689:49 - 1700:30]
Clone found (python)
- tools/computer.py [1749:9 - 1758:19] (10 lines, 50 tokens)
tools/computer.py [1843:9 - 1852:19]
Clone found (python)
- tools/convert.py [381:19 - 399:35] (19 lines, 63 tokens)
tools/convert.py [686:18 - 704:35]
Clone found (python)
- tools/convert.py [382:9 - 400:49] (19 lines, 74 tokens)
tools/convert.py [563:34 - 583:18]
Clone found (python)
- tools/convert.py [384:5 - 399:35] (16 lines, 61 tokens)
tools/convert.py [467:5 - 482:35]
Clone found (python)
- tools/gh.py [78:9 - 87:59] (10 lines, 53 tokens)
tools/gh.py [151:13 - 159:63]
Clone found (python)
- tools/hashline_edit.py [808:26 - 815:32] (8 lines, 57 tokens)
tools/patch_anchored.py [109:26 - 116:32]
Clone found (python)
- tools/hashline_edit.py [808:26 - 815:32] (8 lines, 57 tokens)
tools/patch_anchored.py [236:27 - 243:32]
Clone found (python)
- tools/patch.py [331:5 - 343:23] (13 lines, 55 tokens)
tools/save.py [132:5 - 144:23]
Clone found (python)
- tools/patch_anchored.py [101:1 - 106:3] (6 lines, 52 tokens)
tools/patch_anchored.py [189:1 - 194:2]
Clone found (python)
- tools/precommit.py [119:52 - 126:61] (8 lines, 51 tokens)
tools/precommit.py [130:67 - 137:61]
Clone found (python)
- tools/shell.py [470:5 - 481:58] (12 lines, 71 tokens)
tools/shell_background.py [64:5 - 75:58]
Clone found (python)
- tools/shell.py [1031:29 - 1045:11] (15 lines, 76 tokens)
tools/shell.py [1448:26 - 1462:11]
Clone found (python)
- tools/shell.py [1156:21 - 1165:40] (10 lines, 50 tokens)
tools/shell.py [1239:29 - 1248:48]
Clone found (python)
- tools/shell.py [1156:21 - 1175:26] (20 lines, 94 tokens)
tools/shell.py [1269:25 - 1288:30]
Clone found (python)
- tools/shell.py [1156:21 - 1176:34] (21 lines, 98 tokens)
tools/shell.py [1325:25 - 1346:25]
Clone found (python)
- tools/shell.py [1157:25 - 1177:39] (21 lines, 103 tokens)
tools/shell.py [1298:25 - 1318:39]
Clone found (python)
- tools/shell.py [1164:69 - 1178:27] (15 lines, 64 tokens)
tools/shell.py [1305:69 - 1319:31]
Clone found (python)
- tools/shell.py [1188:37 - 1204:75] (17 lines, 61 tokens)
tools/shell.py [1627:37 - 1643:75]
Clone found (python)
- tools/shell.py [1208:29 - 1223:34] (16 lines, 66 tokens)
tools/shell.py [1658:33 - 1674:34]
Clone found (python)
- tools/shell.py [1268:64 - 1288:30] (21 lines, 95 tokens)
tools/shell.py [1372:39 - 1392:26]
Clone found (python)
- tools/shell.py [1277:73 - 1292:37] (16 lines, 53 tokens)
tools/shell.py [1333:73 - 1348:73]
Clone found (python)
- tools/shell.py [2181:5 - 2191:31] (11 lines, 55 tokens)
tools/shell.py [2232:5 - 2242:31]
Clone found (python)
- tools/shell_validation.py [260:9 - 268:21] (9 lines, 53 tokens)
tools/shell_validation.py [617:9 - 625:21]
Clone found (python)
- tools/subagent/batch.py [492:33 - 505:5] (14 lines, 90 tokens)
tools/subagent/batch.py [1099:25 - 1112:5]
Clone found (python)
- tools/subagent/batch.py [529:53 - 539:43] (11 lines, 118 tokens)
tools/subagent/batch.py [663:54 - 673:43]
Clone found (python)
- tools/subagent/batch.py [534:27 - 539:81] (6 lines, 72 tokens)
tools/subagent/batch.py [1142:81 - 1147:81]
Clone found (python)
- tools/subagent/batch.py [807:13 - 822:14] (16 lines, 59 tokens)
tools/subagent/batch.py [932:13 - 947:14]
Clone found (python)
- tools/subagent/context.py [20:9 - 30:16] (11 lines, 60 tokens)
tools/subagent/context.py [47:9 - 57:16]
Clone found (python)
- tui/app.py [151:22 - 156:11] (6 lines, 50 tokens)
tui/app.py [253:25 - 258:11]
Clone found (python)
- tui/app.py [176:5 - 185:4] (10 lines, 79 tokens)
tui/app.py [271:5 - 280:4]
Clone found (python)
- util/_sound_sounddevice.py [61:46 - 72:56] (12 lines, 73 tokens)
util/_sound_sounddevice.py [102:46 - 113:56]
Clone found (python)
- util/gh.py [542:28 - 551:23] (10 lines, 51 tokens)
util/gh.py [1341:13 - 1350:23]
Clone found (python)
- util/gh.py [1325:17 - 1339:7] (15 lines, 55 tokens)
util/gh.py [1429:14 - 1443:7]
Clone found (python)
- util/tool_format.py [139:79 - 153:10] (15 lines, 54 tokens)
util/tool_format.py [172:65 - 186:10]
Clone found (python)
- workspace_snapshot.py [389:5 - 403:26] (15 lines, 88 tokens)
workspace_snapshot.py [467:5 - 481:26]
Clone found (python)
- analyze_compression.py [55:82 - 67:32] (13 lines, 63 tokens)
analyze_compression.py [152:54 - 164:32]
Clone found (python)
- analyze_compression.py [116:9 - 127:34] (12 lines, 61 tokens)
analyze_compression.py [220:9 - 231:34]
Clone found (python)
- generate_sounds.py [91:16 - 97:69] (7 lines, 53 tokens)
generate_sounds.py [165:18 - 171:69]
┌────────────┬────────────────┬─────────────┬──────────────┬──────────────┬──────────────────┬───────────────────┐
│ Format │ Files analyzed │ Total lines │ Total tokens │ Clones found │ Duplicated lines │ Duplicated tokens │
├────────────┼────────────────┼─────────────┼──────────────┼──────────────┼──────────────────┼───────────────────┤
│ bash │ 12 │ 1996 │ 3343 │ 0 │ 0 (0.00%) │ 0 (0.00%) │
├────────────┼────────────────┼─────────────┼──────────────┼──────────────┼──────────────────┼───────────────────┤
│ css │ 1 │ 174 │ 1100 │ 0 │ 0 (0.00%) │ 0 (0.00%) │
├────────────┼────────────────┼─────────────┼──────────────┼──────────────┼──────────────────┼───────────────────┤
│ javascript │ 1 │ 618 │ 3358 │ 0 │ 0 (0.00%) │ 0 (0.00%) │
├────────────┼────────────────┼─────────────┼──────────────┼──────────────┼──────────────────┼───────────────────┤
│ markdown │ 6 │ 1749 │ 13361 │ 0 │ 0 (0.00%) │ 0 (0.00%) │
├────────────┼────────────────┼─────────────┼──────────────┼──────────────┼──────────────────┼───────────────────┤
│ markup │ 2 │ 482 │ 3220 │ 0 │ 0 (0.00%) │ 0 (0.00%) │
├────────────┼────────────────┼─────────────┼──────────────┼──────────────┼──────────────────┼───────────────────┤
│ python │ 488 │ 190335 │ 906513 │ 185 │ 2280 (1.20%) │ 12927 (1.43%) │
├────────────┼────────────────┼─────────────┼──────────────┼──────────────┼──────────────────┼───────────────────┤
│ text │ 3 │ 923 │ 330 │ 0 │ 0 (0.00%) │ 0 (0.00%) │
├────────────┼────────────────┼─────────────┼──────────────┼──────────────┼──────────────────┼───────────────────┤
│ txt │ 1 │ 146 │ 245 │ 0 │ 0 (0.00%) │ 0 (0.00%) │
├────────────┼────────────────┼─────────────┼──────────────┼──────────────┼──────────────────┼───────────────────┤
│ yaml │ 3 │ 758 │ 1511 │ 0 │ 0 (0.00%) │ 0 (0.00%) │
├────────────┼────────────────┼─────────────┼──────────────┼──────────────┼──────────────────┼───────────────────┤
│ Total: │ 517 │ 197181 │ 932981 │ 185 │ 2280 (1.16%) │ 12927 (1.39%) │
└────────────┴────────────────┴─────────────┴──────────────┴──────────────┴──────────────────┴───────────────────┘
Found 185 clones.
time: 426.108ms
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