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
84799 | gptme.cli.main
88640 | gptme.tools
100507 | gptme.config.cli_setup
120840 | gptme.config
124813 | gptme.llm
156444 | playwright.sync_api._generated
163455 | playwright.sync_api
166902 | gptme.commands
173109 | gptme.tools._browser_playwright
219062 | gptme.chat
real 0m1.303s
user 0m1.066s
sys 0m0.147s
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 ± σ): 113.0 ms ± 5.7 ms [User: 94.4 ms, System: 18.5 ms]
Range (min … max): 107.8 ms … 128.2 ms 10 runs
Benchmark 2: gptme --help
Time (mean ± σ): 443.3 ms ± 5.3 ms [User: 390.9 ms, System: 52.3 ms]
Range (min … max): 434.4 ms … 453.0 ms 10 runs
Benchmark 3: full start/exit cycle
Time (mean ± σ): 873.6 ms ± 87.5 ms [User: 630.9 ms, System: 494.1 ms]
Range (min … max): 811.0 ms … 1084.7 ms 10 runs
Warning: Statistical outliers were detected. Consider re-running this benchmark on a quiet system without any interferences from other programs. It might help to use the '--warmup' or '--prepare' options.
Summary
import gptme.cli.main ran
3.92 ± 0.20 times faster than gptme --help
7.73 ± 0.87 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 308 376 1515
gptme/util/gh.py 243 301 1213
gptme/llm/llm_anthropic.py 217 310 920
gptme/tools/base.py 181 267 869
gptme/llm/__init__.py 148 273 771
gptme/util/context.py 145 224 619
gptme/chat.py 77 141 502
gptme/lessons/installer.py 146 165 496
gptme/llm/llm_openai_subscription.py 116 96 484
gptme/message.py 121 192 426
gptme/util/prompt.py 102 151 412
gptme/util/cost_display.py 81 80 406
gptme/util/_telemetry.py 113 159 403
gptme/telemetry.py 94 55 396
gptme/lessons/auto_include.py 100 195 386
gptme/workspace_snapshot.py 53 64 386
gptme/lessons/index.py 117 128 385
gptme/util/reduce.py 94 120 377
gptme/llm/openai_responses.py 80 22 367
gptme/lessons/hybrid_matcher.py 122 162 364
gptme/info.py 96 79 361
gptme/llm/llm_grok_subscription.py 93 74 359
gptme/tools/__init__.py 97 95 357
gptme/init.py 65 89 336
gptme/llm/llm_openai_models.py 6 43 333
gptme/util/safety.py 57 63 330
gptme/checkpoint.py 79 49 321
gptme/sandbox.py 82 156 307
gptme/attestation.py 71 2 301
gptme/plugins/__init__.py 98 133 295
gptme/profiles.py 64 68 268
gptme/codeblock.py 38 148 250
gptme/anti_slop.py 40 62 242
gptme/util/review.py 70 129 231
gptme/lessons/parser.py 74 119 226
gptme/util/auto_naming.py 68 78 224
gptme/lessons/commands.py 91 48 219
gptme/util/_sound_sounddevice.py 57 50 218
gptme/model_attestation.py 63 78 209
gptme/util/sound.py 65 72 200
gptme/hooks/__init__.py 20 42 197
gptme/llm/validate.py 30 29 175
gptme/circuit_breaker.py 49 72 171
gptme/util/git_worktree.py 40 67 169
gptme/llm/llm_gptme.py 64 112 164
gptme/llm/utils.py 56 84 159
gptme/util/tokens.py 46 69 159
gptme/llm/llm_openai_models_deprecated.py 5 14 157
gptme/util/__init__.py 34 29 157
gptme/util/tool_format.py 48 75 151
gptme/util/clipboard.py 22 12 147
gptme/util/replay.py 42 49 129
gptme/k_best.py 34 40 125
gptme/util/cost_tracker.py 46 69 114
gptme/dirs.py 46 35 111
gptme/util/export.py 26 29 111
gptme/prompt_queue.py 41 20 109
gptme/lessons/matcher.py 35 47 103
gptme/llm/llm_openrouter_subscription.py 35 37 99
gptme/__version__.py 19 8 89
gptme/util/ask_execute.py 25 40 89
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/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/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 20 25 28
gptme/util/useredit.py 11 13 26
gptme/executor.py 18 26 24
gptme/util/interrupt.py 13 15 23
gptme/util/conversation_ids.py 7 4 22
gptme/lessons/__init__.py 7 15 18
gptme/util/git_cmd.py 7 14 17
gptme/__main__.py 2 0 12
gptme/util/stdio.py 8 9 12
gptme/llm/constants.py 2 6 5
-----------------------------------------------------------------------------------------------
SUM: 5409 6901 21666
-----------------------------------------------------------------------------------------------
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 308 376 1515
gptme/llm/llm_anthropic.py 217 310 920
gptme/llm/__init__.py 148 273 771
gptme/llm/llm_openai_subscription.py 116 96 484
gptme/llm/openai_responses.py 80 22 367
gptme/llm/llm_grok_subscription.py 93 74 359
gptme/llm/llm_openai_models.py 6 43 333
gptme/llm/validate.py 30 29 175
gptme/llm/llm_gptme.py 64 112 164
gptme/llm/utils.py 56 84 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/provider_plugins.py 39 35 48
gptme/llm/llm_mock.py 16 22 41
gptme/llm/constants.py 2 6 5
-----------------------------------------------------------------------------------------------
SUM: 1244 1610 5737
-----------------------------------------------------------------------------------------------
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/computer.py 432 864 1659
gptme/tools/shell.py 271 351 1452
gptme/hooks/workspace_agents.py 238 149 1254
gptme/tools/base.py 181 267 869
gptme/tools/chats.py 135 167 706
gptme/tools/_browser_playwright.py 235 276 661
gptme/tools/browser.py 263 417 660
gptme/tools/mcp_adapter.py 227 219 648
gptme/tools/complete.py 103 170 572
gptme/tools/gh.py 117 128 523
gptme/tools/computer_transport.py 134 99 512
gptme/hooks/registry.py 102 82 502
gptme/tools/hashline_edit.py 126 365 500
gptme/tools/tmux.py 98 170 398
gptme/tools/__init__.py 97 95 357
gptme/tools/python.py 93 116 353
gptme/tools/mcp.py 102 103 337
gptme/hooks/cost_awareness.py 82 75 329
gptme/tools/shell_validation.py 104 183 316
gptme/tools/_browser_thread.py 57 68 297
gptme/plugins/__init__.py 98 133 295
gptme/tools/read.py 55 72 285
gptme/tools/lessons.py 106 115 278
gptme/tools/save.py 63 63 276
gptme/tools/patch.py 63 95 271
gptme/tools/shell_background.py 65 36 270
gptme/tools/rag.py 89 131 245
gptme/tools/patch_many.py 56 62 243
gptme/tools/todo.py 95 104 232
gptme/tools/precommit.py 70 96 230
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/__init__.py 20 42 197
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/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 50 54 152
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 39 121 135
gptme/hooks/injection_screening.py 31 34 130
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/hooks/confirm.py 53 88 109
gptme/tools/choice.py 34 41 104
gptme/hooks/active_context.py 25 23 100
gptme/tools/_anchored.py 33 41 100
gptme/tools/_computer_gate.py 33 61 100
gptme/tools/screenshot.py 29 40 95
gptme/tools/vent.py 39 64 93
gptme/hooks/time_awareness.py 32 29 86
gptme/tools/autocommit.py 37 58 81
gptme/tools/progress.py 23 53 73
gptme/tools/vision.py 28 21 73
gptme/plugins/entrypoints.py 24 35 69
gptme/tools/_browser_lynx.py 12 12 60
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/hooks/test.py 14 6 41
gptme/hooks/cwd_awareness.py 11 17 28
gptme/tools/_allowlist.py 11 7 27
gptme/hooks/auto_confirm.py 11 9 24
gptme/tools/_hashline_snapshot.py 16 15 23
gptme/plugins/plugin.py 25 39 17
gptme/tools/_browser_format.py 3 5 3
------------------------------------------------------------------------------------------
SUM: 5780 7668 20909
------------------------------------------------------------------------------------------
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 464 383 2732
gptme/server/session_step.py 173 297 964
gptme/server/api_v2_sessions.py 119 171 893
gptme/server/openapi_docs.py 256 169 752
gptme/server/tasks_api.py 190 124 666
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 47 60 266
gptme/server/tools_api.py 58 49 245
gptme/server/static/computer.html 12 3 237
gptme/server/session_models.py 63 96 235
gptme/server/auth.py 76 115 203
gptme/server/panels_api.py 51 51 203
gptme/server/static/index.html 11 18 201
gptme/server/acp_session_runtime.py 34 30 165
gptme/server/computer_api.py 44 51 164
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/app.py 35 84 133
gptme/server/api_v2_agents.py 25 17 132
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/constants.py 7 11 9
gptme/server/__init__.py 2 3 3
gptme/server/__main__.py 1 0 3
--------------------------------------------------------------------------------------
SUM: 2353 2342 11424
--------------------------------------------------------------------------------------
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 1285 610 4667
tests/test_server_v2.py 755 281 3190
tests/test_tools_subagent.py 847 429 2756
tests/test_llm_openai.py 622 366 2483
tests/test_util_review.py 453 311 1974
tests/test_init.py 253 142 1569
tests/test_server_v2_sessions.py 240 172 1531
tests/test_eval_behavioral.py 865 961 1354
tests/test_cli.py 364 144 1295
tests/test_tools_computer.py 438 269 1258
tests/test_tools_shell.py 388 427 1232
tests/test_acp_agent.py 355 188 1206
tests/test_util_gh.py 260 172 1172
tests/test_config.py 339 412 1098
tests/test_util_cli_review_watch.py 275 172 1082
tests/test_server.py 293 201 1081
tests/test_tools_complete.py 218 253 1017
tests/test_tools_base.py 318 107 972
tests/test_info.py 177 78 937
tests/test_doctor.py 247 127 932
tests/test_llm_utils.py 255 127 886
tests/test_eval_leaderboard.py 126 104 883
tests/test_tui.py 235 120 866
tests/test_util_cli.py 226 151 856
tests/test_computer_audit.py 231 157 846
tests/test_lessons_auto_include.py 219 202 834
tests/test_eval_computer_suite.py 328 149 819
tests/test_util_gh_mocked.py 155 121 814
tests/test_tasks_api.py 180 65 812
tests/test_cost_display.py 110 68 776
tests/test_tools_browser.py 263 63 773
tests/test_server_workspace.py 149 154 743
tests/test_tools_hashline_edit.py 193 382 720
tests/test_eval.py 131 84 709
tests/test_agent.py 205 112 701
tests/test_acp_session_runtime.py 222 76 699
tests/test_hooks_registry.py 247 89 696
tests/test_reduce.py 187 144 681
tests/test_tools_gh.py 134 69 675
tests/test_sandbox.py 155 55 664
tests/test_prompt_templates.py 229 148 659
tests/test_json_output.py 114 84 640
tests/test_llm_models_resolution.py 216 171 639
tests/test_subagent_budget.py 166 144 626
tests/test_llm_anthropic.py 131 45 618
tests/test_computer_doctor_cmd.py 88 58 607
tests/test_tools_lessons.py 135 49 580
tests/test_tools_precommit.py 109 86 578
tests/test_auto_compact.py 235 201 566
tests/test_computer_transport.py 209 79 556
tests/test_server_panels.py 61 30 552
tests/test_eval_subagent.py 119 56 547
tests/test_computer_actions.py 165 125 546
tests/test_server_path_traversal.py 139 105 539
tests/test_server_bad_input.py 121 101 519
tests/test_lessons.py 156 153 517
tests/test_hooks_cost_awareness.py 72 61 516
tests/test_model_attestation.py 105 30 496
tests/test_gptme_provider.py 162 71 494
tests/conftest.py 124 202 485
tests/test_hooks_cache_awareness.py 151 44 484
tests/test_chat.py 202 171 482
tests/test_computer_demo_cmd.py 144 74 480
tests/test_tools_shell_validation.py 211 108 477
tests/test_snapshot_command.py 117 57 476
tests/test_server_session_models.py 161 141 475
tests/test_commands.py 147 68 463
tests/test_skill_installer.py 138 154 459
tests/test_llm_auth.py 153 55 458
tests/test_mcp_server.py 112 39 457
tests/test_tools_shell_background.py 117 51 456
tests/test_dirs.py 111 80 446
tests/test_llm_openai_subscription.py 99 43 445
tests/test_message.py 160 123 444
tests/test_prompts.py 138 80 438
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_codeblock.py 316 806 416
tests/test_server_artifacts.py 66 32 415
tests/test_subagent_worktree_isolation.py 129 70 414
tests/test_tools.py 164 98 407
tests/test_logmanager.py 118 121 404
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_unified_plugins.py 102 42 376
tests/test_conversations.py 52 33 371
tests/test_github_ci_self_heal.py 71 6 371
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_replay.py 120 110 361
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_shell_background.py 99 71 342
tests/test_context.py 152 87 341
tests/test_computer_semantic_fixtures.py 92 107 340
tests/test_script_hooks.py 55 7 336
tests/test_eval_trends.py 35 22 335
tests/test_mcp_adapter.py 113 59 334
tests/test_tools_read.py 108 49 333
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_util_safety.py 96 22 321
tests/test_workspace_snapshot.py 105 46 319
tests/test_agent_doctor.py 72 34 318
tests/test_llm_models.py 110 80 315
tests/test_llm_grok_subscription.py 92 18 312
tests/test_tools_morph.py 89 66 310
tests/test_chats_external_search.py 72 55 307
tests/test_eventlog.py 73 35 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_util_cli_batch.py 59 8 292
tests/test_chats_stats.py 72 30 291
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_computer_video_frames_cli.py 67 12 274
tests/test_tools_restart.py 72 49 274
tests/test_util_tokens.py 129 71 273
tests/test_server_v2_agents.py 57 25 272
tests/test_computer_docker_config.py 59 92 267
tests/lessons/test_bm25_parity.py 67 70 266
tests/test_util_cli_attest.py 67 1 266
tests/test_util_cli_providers.py 65 30 263
tests/test_tools_autocommit.py 99 47 259
tests/test_terminal_startup_latency.py 77 32 257
tests/test_hooks.py 120 47 255
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_cli_status.py 55 24 247
tests/test_agents_md_inject.py 43 37 241
tests/test_cli_from_turn.py 65 18 239
tests/test_mcp.py 68 59 239
tests/test_auto_naming.py 69 45 237
tests/test_computer_x11_integration.py 87 87 236
tests/test_cli_stats.py 62 27 234
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_tools_python.py 93 60 224
tests/test_git_worktree.py 57 37 222
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_llm_openai_sampling.py 42 0 214
tests/test_cli_resume.py 64 15 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_tools_screenshot.py 55 48 203
tests/test_util_file_storage.py 51 36 203
tests/test_tutorial.py 85 7 200
tests/test_tools_save.py 57 36 193
tests/test_chats_clean.py 46 18 191
tests/test_computer_task.py 116 31 189
tests/test_telemetry.py 68 31 189
tests/test_computer_screenshot_cli.py 53 12 183
tests/test_k_best.py 76 23 182
tests/test_dspy_hybrid.py 65 45 179
tests/test_tools_tmux.py 77 65 179
tests/test_dspy_basic.py 66 44 177
tests/test_execute_msg_hook_call_id.py 65 49 176
tests/test_server_tools_query.py 51 28 176
tests/test_cost_tracker.py 26 26 175
tests/test_tools_todo.py 81 65 173
tests/test_chats_export.py 48 17 172
tests/test_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_util_cli_models.py 23 25 170
tests/test_tree.py 61 37 168
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_computer_api.py 70 190 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_acp_client.py 64 34 159
tests/test_acp_stdout.py 76 37 158
tests/test_anti_slop.py 67 24 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_search_alias.py 33 27 156
tests/test_server_v2_tool_confirmation.py 33 33 155
tests/test_eval_pass_rate_gate.py 48 9 154
tests/test_shell_allowlist_autoconfirm.py 38 38 154
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/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_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_tools_vision.py 36 31 138
tests/test_util_content.py 49 25 137
tests/test_chat_config.py 53 44 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_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_integration_phase4.py 22 19 119
tests/test_cost_cache_cold_warning.py 33 8 118
tests/test_util_clipboard_paste.py 27 14 117
tests/test_agent_service_timeouts.py 19 18 116
tests/test_llm_validate.py 26 20 116
tests/thread_leak.py 34 55 115
tests/test_misc_subprocess_timeouts.py 43 27 114
tests/test_lessons_status.py 67 96 113
tests/test_chats_rename.py 42 16 112
tests/test_server_host_validation.py 46 27 110
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_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_thread_leak.py 29 7 98
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_browser_lynx.py 35 15 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_server_auth.py 40 19 84
tests/test_eval_swebench_retrieval.py 25 4 81
tests/test_commands_llm.py 16 0 80
tests/test_prompt_skills_summary.py 44 44 80
tests/test_onboard.py 17 17 79
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_shell_issue772.py 48 47 73
tests/test_server_audio_transcription.py 20 15 69
tests/test_hooks_form_autodetect.py 22 34 68
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_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_git_cmd_resolver.py 23 15 59
tests/test_server_client.py 33 26 59
tests/test_server_metrics.py 20 20 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_server_parent_death_watcher.py 16 14 50
tests/test_execute_msg_defensive.py 19 19 49
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_acp_e2e_smoke.py 14 18 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_prompt_queue.py 16 15 30
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_screenshot.py 9 6 15
----------------------------------------------------------------------------------------------------
SUM: 33786 23051 116640
----------------------------------------------------------------------------------------------------
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 107 112 915
gptme/eval/leaderboard.py 149 485 804
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 31 53 97
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: 560 1002 3381
------------------------------------------------------------------------------------------
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/__init__.py gptme/llm/__init__.py gptme/llm/retry_abort.py gptme/llm/llm_mock.py gptme/llm/utils.py gptme/llm/models/__init__.py gptme/llm/models/data.py gptme/llm/models/listing.py gptme/llm/models/types.py gptme/llm/models/resolution.py gptme/llm/llm_anthropic.py gptme/llm/llm_grok_subscription.py gptme/llm/llm_anthropic_models_deprecated.py gptme/llm/llm_openrouter_subscription.py gptme/llm/openai_responses.py gptme/llm/llm_gptme.py gptme/llm/constants.py gptme/llm/provider_plugins.py gptme/llm/llm_openai_models_deprecated.py gptme/llm/validate.py gptme/llm/llm_openai.py gptme/llm/llm_openai_subscription.py gptme/llm/llm_openai_models.py gptme/sandbox.py gptme/circuit_breaker.py gptme/chat.py gptme/k_best.py gptme/credentials.py gptme/info.py gptme/plugins/__init__.py gptme/plugins/plugin.py gptme/plugins/entrypoints.py gptme/plugins/registry.py gptme/attestation.py gptme/codeblock.py gptme/__main__.py gptme/oauth/__init__.py gptme/oauth/openrouter.py gptme/__version__.py gptme/acp/__init__.py gptme/acp/agent.py gptme/acp/__main__.py gptme/acp/types.py gptme/acp/adapter.py gptme/acp/client.py gptme/tui/__init__.py gptme/tui/app.py gptme/tui/main.py gptme/context/__init__.py gptme/context/selector/__init__.py gptme/context/selector/config.py gptme/context/selector/file_integration.py gptme/context/selector/llm_based.py gptme/context/selector/file_selector.py gptme/context/selector/hybrid.py gptme/context/selector/rule_based.py gptme/context/selector/file_config.py gptme/context/selector/base.py gptme/context/config.py gptme/context/compress.py gptme/context/task_analyzer.py gptme/context/adaptive_compressor.py gptme/lessons/__init__.py gptme/lessons/index.py gptme/lessons/auto_include.py gptme/lessons/hybrid_matcher.py gptme/lessons/parser.py gptme/lessons/installer.py gptme/lessons/skills/python-repl/python_helpers.py gptme/lessons/commands.py gptme/lessons/matcher.py gptme/logmanager/__init__.py gptme/logmanager/manager.py gptme/logmanager/conversations.py gptme/logmanager/eventlog.py gptme/logmanager/conv_checkpoints.py gptme/hooks/__init__.py gptme/hooks/confirm.py gptme/hooks/tool_target_instructions.py gptme/hooks/server_confirm.py gptme/hooks/token_awareness.py gptme/hooks/manifest.py gptme/hooks/markdown_validation.py gptme/hooks/agents_md_inject.py gptme/hooks/script.py gptme/hooks/elicitation.py gptme/hooks/server_elicit.py gptme/hooks/cwd_awareness.py gptme/hooks/tests/__init__.py gptme/hooks/tests/test_server_confirm.py gptme/hooks/tests/test_cost_awareness.py gptme/hooks/tests/test_token_awareness.py gptme/hooks/tests/test_tool_target_instructions.py gptme/hooks/tests/test_aw_watcher_agent.py gptme/hooks/tests/test_auto_confirm.py gptme/hooks/tests/test_time_awareness.py gptme/hooks/tests/test_markdown_validation.py gptme/hooks/tests/test_active_context.py gptme/hooks/tests/test_manifest.py gptme/hooks/tests/test_elicitation.py gptme/hooks/tests/test_cli_confirm.py gptme/hooks/tests/test_cache_awareness.py gptme/hooks/tests/test_cwd_awareness.py gptme/hooks/tests/test_form_autodetect.py gptme/hooks/tests/test_agents_md_inject.py gptme/hooks/tests/test_workspace_agents.py gptme/hooks/tests/test_injection_screening.py gptme/hooks/tests/test_server_elicit.py gptme/hooks/tests/test_confirm.py gptme/hooks/cli_confirm.py gptme/hooks/aw_watcher_agent.py gptme/hooks/injection_screening.py gptme/hooks/cost_awareness.py gptme/hooks/test.py gptme/hooks/types.py gptme/hooks/active_context.py gptme/hooks/workspace_agents.py gptme/hooks/registry.py gptme/hooks/cwd_changed.py gptme/hooks/mcp_namespace_hint.py gptme/hooks/auto_snapshots.py gptme/hooks/form_autodetect.py gptme/hooks/auto_confirm.py gptme/hooks/cache_awareness.py gptme/hooks/time_awareness.py gptme/dirs.py gptme/session.py gptme/prompt_queue.py gptme/tools/__init__.py gptme/tools/_browser_lynx.py gptme/tools/mcp_adapter.py gptme/tools/elicit.py gptme/tools/save.py gptme/tools/computer.py gptme/tools/patch_many.py gptme/tools/mcp.py gptme/tools/_browser_format.py gptme/tools/shell.py gptme/tools/todo.py gptme/tools/morph.py gptme/tools/pruner.py gptme/tools/gh.py gptme/tools/_anchored.py gptme/tools/precommit.py gptme/tools/patch.py gptme/tools/vision.py gptme/tools/complete.py gptme/tools/shell_background.py gptme/tools/chats.py gptme/tools/progress.py gptme/tools/patch_anchored.py gptme/tools/shell_validation.py gptme/tools/autocompact/__init__.py gptme/tools/autocompact/scoring.py gptme/tools/autocompact/decision.py gptme/tools/autocompact/hook.py gptme/tools/autocompact/handlers.py gptme/tools/autocompact/engine.py gptme/tools/autocompact/resume.py gptme/tools/subagent/__init__.py gptme/tools/subagent/batch.py gptme/tools/subagent/hooks.py gptme/tools/subagent/execution.py gptme/tools/subagent/api.py gptme/tools/subagent/types.py gptme/tools/subagent/concurrency.py gptme/tools/subagent/context.py gptme/tools/subagent/control.py gptme/tools/autocommit.py gptme/tools/vent.py gptme/tools/clarify.py gptme/tools/_browser_perplexity.py gptme/tools/rag.py gptme/tools/choice.py gptme/tools/screenshot.py gptme/tools/python.py gptme/tools/computer_transport.py gptme/tools/_browser_thread.py gptme/tools/browser.py gptme/tools/lessons.py gptme/tools/_computer_gate.py gptme/tools/_browser_playwright.py gptme/tools/tmux.py gptme/tools/_allowlist.py gptme/tools/computer_semantic.py gptme/tools/read.py gptme/tools/_hashline_snapshot.py gptme/tools/restart.py gptme/tools/hashline_edit.py gptme/tools/form.py gptme/tools/base.py gptme/profiles.py gptme/eval/__init__.py gptme/eval/main.py gptme/eval/agents/__init__.py gptme/eval/agents/claude_code.py gptme/eval/agents/swebench.py gptme/eval/swebench/__init__.py gptme/eval/swebench/retrieval.py gptme/eval/swebench/main.py gptme/eval/swebench/utils.py gptme/eval/swebench/info.py gptme/eval/swebench/__main__.py gptme/eval/swebench/evaluate.py gptme/eval/__main__.py gptme/eval/dspy/__init__.py gptme/eval/dspy/experiments.py gptme/eval/dspy/__main__.py gptme/eval/dspy/signatures.py gptme/eval/dspy/metrics.py gptme/eval/dspy/prompt_optimizer.py gptme/eval/dspy/hybrid_optimizer.py gptme/eval/dspy/cli.py gptme/eval/dspy/tasks.py gptme/eval/swe_extra/__init__.py gptme/eval/swe_extra/swe_bench_constants.py gptme/eval/swe_extra/run_swe_extra.py gptme/eval/swe_extra/swe_bench_test_spec.py gptme/eval/swe_extra/swe_bench_extra_data.py gptme/eval/suites/__init__.py gptme/eval/suites/practical2.py gptme/eval/suites/practical30.py gptme/eval/suites/practical12.py gptme/eval/suites/practical22.py gptme/eval/suites/practical17.py gptme/eval/suites/practical13.py gptme/eval/suites/practical15.py gptme/eval/suites/practical11.py gptme/eval/suites/behavioral/__init__.py gptme/eval/suites/behavioral/refactor_for_testability.py gptme/eval/suites/behavioral/implement_lru_cache.py gptme/eval/suites/behavioral/circuit_breaker.py gptme/eval/suites/behavioral/multi_file_rename.py gptme/eval/suites/behavioral/stage_new_files.py gptme/eval/suites/behavioral/add_deprecation_warning.py gptme/eval/suites/behavioral/fix_security_path_traversal.py gptme/eval/suites/behavioral/validate_user_input.py gptme/eval/suites/behavioral/bounded_bugfix_with_decoys.py gptme/eval/suites/behavioral/remove_dead_code.py gptme/eval/suites/behavioral/test_driven_error_handling.py gptme/eval/suites/behavioral/fix_mutable_default.py gptme/eval/suites/behavioral/rate_limiting.py gptme/eval/suites/behavioral/_common.py gptme/eval/suites/behavioral/minimal_feature_preserve_default_with_decoys.py gptme/eval/suites/behavioral/implement_memoization.py gptme/eval/suites/behavioral/add_type_hints.py gptme/eval/suites/behavioral/debug_data_pipeline.py gptme/eval/suites/behavioral/extract_function_refactor.py gptme/eval/suites/behavioral/scope_discipline_bugfix.py gptme/eval/suites/behavioral/add_logging.py gptme/eval/suites/behavioral/iterative_debug.py gptme/eval/suites/behavioral/add_docstrings.py gptme/eval/suites/behavioral/merge_conflict_resolution.py gptme/eval/suites/behavioral/git_selective_commit.py gptme/eval/suites/behavioral/add_feature_preserve_default.py gptme/eval/suites/behavioral/handle_specific_exception.py gptme/eval/suites/behavioral/root_cause_pipeline_debug.py gptme/eval/suites/behavioral/implement_priority_queue.py gptme/eval/suites/behavioral/noisy_worktree_fix.py gptme/eval/suites/behavioral/implement_event_emitter.py gptme/eval/suites/behavioral/write_test_suite.py gptme/eval/suites/behavioral/optimize_n_squared.py gptme/eval/suites/behavioral/fix_data_mutation.py gptme/eval/suites/behavioral/use_existing_helper.py gptme/eval/suites/behavioral/retry_with_backoff.py gptme/eval/suites/practical33.py gptme/eval/suites/computer.py gptme/eval/suites/practical7.py gptme/eval/suites/practical4.py gptme/eval/suites/practical24.py gptme/eval/suites/practical6.py gptme/eval/suites/practical21.py gptme/eval/suites/practical25.py gptme/eval/suites/practical8.py gptme/eval/suites/practical27.py gptme/eval/suites/practical18.py gptme/eval/suites/practical32.py gptme/eval/suites/practical9.py gptme/eval/suites/practical19.py gptme/eval/suites/practical29.py gptme/eval/suites/practical20.py gptme/eval/suites/init_projects.py gptme/eval/suites/practical26.py gptme/eval/suites/practical16.py gptme/eval/suites/browser.py gptme/eval/suites/practical14.py gptme/eval/suites/practical.py gptme/eval/suites/practical28.py gptme/eval/suites/practical5.py gptme/eval/suites/basic.py gptme/eval/suites/practical31.py gptme/eval/suites/subagent.py gptme/eval/suites/practical3.py gptme/eval/suites/practical23.py gptme/eval/suites/practical10.py gptme/eval/run.py gptme/eval/types.py gptme/eval/tbench/__init__.py gptme/eval/tbench/agent.py gptme/eval/tbench/run.py gptme/eval/filestore.py gptme/eval/trends.py gptme/eval/cost.py gptme/eval/leaderboard.py gptme/eval/execenv.py gptme/eval/pass_rate_gate.py gptme/anti_slop.py gptme/constants.py gptme/prompts/__init__.py gptme/prompts/workspace.py gptme/prompts/skills.py gptme/prompts/chat_history.py gptme/prompts/context_cmd.py gptme/prompts/templates.py gptme/prompts/architect.py gptme/checkpoint.py gptme/init.py gptme/executor.py gptme/config/__init__.py gptme/config/chat.py gptme/config/models.py gptme/config/cli_setup.py gptme/config/project.py gptme/config/user.py gptme/config/core.py gptme/telemetry.py gptme/commands/__init__.py gptme/commands/llm.py gptme/commands/backtrack.py gptme/commands/meta.py gptme/commands/account.py gptme/commands/session.py gptme/commands/rag.py gptme/commands/checkpoint.py gptme/commands/snapshot.py gptme/commands/export.py gptme/commands/base.py gptme/util/__init__.py gptme/util/terminal.py gptme/util/tool_format.py gptme/util/install.py gptme/util/prompt.py gptme/util/file_storage.py gptme/util/cost_display.py gptme/util/review.py gptme/util/context_savings.py gptme/util/auto_naming.py gptme/util/ask_execute.py gptme/util/safety.py gptme/util/gh.py gptme/util/reduce.py gptme/util/_sound_cmd.py gptme/util/git_cmd.py gptme/util/content.py gptme/util/git_worktree.py gptme/util/history.py gptme/util/keyword_matching.py gptme/util/tokens.py gptme/util/_telemetry.py gptme/util/sound.py gptme/util/context_dedup.py gptme/util/stdio.py gptme/util/_sound_sounddevice.py gptme/util/replay.py gptme/util/cost.py gptme/util/tree.py gptme/util/interrupt.py gptme/util/generate_name.py gptme/util/clipboard.py gptme/util/cost_tracker.py gptme/util/master_context.py gptme/util/conversation_ids.py gptme/util/context.py gptme/util/export.py gptme/util/useredit.py gptme/util/uri.py gptme/util/output_storage.py gptme/gears.py gptme/mcp/__init__.py gptme/mcp/registry.py gptme/mcp/client.py gptme/mcp/server.py gptme/cli/__init__.py gptme/cli/setup.py gptme/cli/main.py gptme/cli/cmd_skills.py gptme/cli/cmd_computer.py gptme/cli/util.py gptme/cli/cmd_stats.py gptme/cli/doctor.py gptme/cli/cmd_hooks.py gptme/cli/cmd_review.py gptme/cli/cmd_review_watch.py gptme/cli/cmd_tutorial.py gptme/cli/cmd_mcp_serve.py gptme/cli/cmd_status.py gptme/cli/cmd_batch.py gptme/cli/cmd_review_pr.py gptme/cli/cmd_init.py gptme/cli/cmd_slop.py gptme/cli/wut.py gptme/cli/cmd_resume.py gptme/cli/cmd_attest.py gptme/cli/cmd_agents.py gptme/cli/cmd_snapshot.py gptme/cli/auth.py gptme/cli/checkpoint.py gptme/cli/onboard.py gptme/cli/cmd_mcp.py gptme/cli/cmd_chats.py gptme/workspace_snapshot.py gptme/message.py gptme/agent/__init__.py gptme/agent/workspace.py gptme/agent/service.py gptme/agent/doctor.py gptme/agent/cli.py gptme/model_attestation.py gptme/server/__init__.py gptme/server/app.py gptme/server/acp_session_runtime.py gptme/server/openapi_docs.py gptme/server/a2a_api.py gptme/server/tools_api.py gptme/server/panels_api.py gptme/server/tasks_api.py gptme/server/__main__.py gptme/server/artifacts_api.py gptme/server/computer_api.py gptme/server/api_v2.py gptme/server/metrics.py gptme/server/workspace_api.py gptme/server/api_v2_sessions.py gptme/server/constants.py gptme/server/auth.py gptme/server/api_v2_common.py gptme/server/cli.py gptme/server/external_sessions.py gptme/server/api_v2_agents.py gptme/server/tts_api.py gptme/server/skills_api.py gptme/server/session_step.py gptme/server/client.py gptme/server/session_models.py tests/test_util.py tests/test_util_cli_batch.py tests/test_integration_phase4.py tests/test_executor.py tests/test_server_v2_sessions.py tests/test_shell_allowlist_autoconfirm.py tests/test_subagent_concurrency.py tests/test_eval_behavioral.py tests/test_tools_rag.py tests/test_server_cors.py tests/test_eval_claude_code.py tests/test_util_generate_name.py tests/test_server_v2_tool_confirmation.py tests/test_swebench_utils.py tests/test_message_command.py tests/test_util_output_storage.py tests/test_gptme_provider.py tests/test_lessons_commands.py tests/test_dirs.py tests/test_tools_choice.py tests/test_computer_gate.py tests/conftest.py tests/test_agent_workspace_timeouts.py tests/test_shell_background.py tests/test_dspy_gepa.py tests/test_workspace_snapshot.py tests/test_tools_hashline_edit.py tests/test_tools_token_awareness.py tests/test_commands_account.py tests/test_checkpoint.py tests/test_eval_swebench_retrieval.py tests/test_computer_use_integration.py tests/test_lessons_status.py tests/test_sandbox.py tests/test_server_v2_auto_stepping.py tests/test_browser.py tests/test_util_review.py tests/test_server_v2_agents.py tests/test_computer_artifacts.py tests/test_server_artifacts.py tests/test_execenv.py tests/test_eval_swebench.py tests/test_eval_practical20.py tests/test_cli.py tests/test_eval_behavioral_solutions.py tests/test_lessons_auto_include.py tests/test_server_bad_input.py tests/test_tools_subagent.py tests/test_eval_pass_rate_gate.py tests/test_server_workspace.py tests/test_mcp_discovery.py tests/test_k_best.py tests/test_thread_leak.py tests/test_reduce.py tests/test_util_terminal.py tests/test_agent_doctor.py tests/test_message.py tests/test_model_selection_trace_export.py tests/test_chats_json.py tests/test_tools_elicit.py tests/test_computer_screenshot_cli.py tests/test_server_skills_api.py tests/test_model_attestation.py tests/test_execute_msg_hook_call_id.py tests/test_chat_config.py tests/test_server_parent_death_watcher.py tests/test_dspy_integration.py tests/test_computer_demo_cmd.py tests/test_subagent_integration.py tests/test_tools_shell_background.py tests/test_util_install.py tests/test_server_audio_transcription.py tests/test_anti_slop.py tests/test_util_tokens.py tests/test_ephemeral.py tests/test_llm_mock.py tests/test_hooks_cost_awareness.py tests/test_tools__anchored.py tests/test_util_content.py tests/test_cost_display.py tests/test_github_bot.py tests/test_acp_protocol_logging.py tests/test_misc_subprocess_timeouts.py tests/test_eval.py tests/test_shell_output_mixing_issue408.py tests/test_tools_browser.py tests/test_prompt_skills_summary.py tests/test_hooks_cache_awareness.py tests/test_demo_capture.py tests/test_computer_semantic_fixtures.py tests/test_computer_video_frames_cli.py tests/test_cost_cache_cold_warning.py tests/test_util_tool_format.py tests/test_server_host_validation.py tests/test_cli_resume.py tests/test_computer_record.py tests/test_eval_subagent.py tests/test_util_safety.py tests/test_acp_session_runtime.py tests/test_computer_actions.py tests/test_server_client.py tests/test_server_a2a.py tests/test_browser_state.py tests/test_eval_practical18.py tests/test_chats_clean.py tests/test_computer_doctor_cmd.py tests/test_computer_settle.py tests/test_config.py tests/test_context_selector.py tests/test_script_hooks.py tests/test_hooks_cwd_changed.py tests/test_tasks_api.py tests/test_util_tree.py tests/test_computer_task.py tests/test_subscription_pricing.py tests/test_util_cli_providers.py tests/test_eval_practical16.py tests/test_lessons.py tests/test_server_cli_fallback.py tests/test_search_alias.py tests/test_tools_screenshot.py tests/test_github_ci_self_heal.py tests/test_chat.py tests/test_shell_fd_leak.py tests/test_tools_morph.py tests/test_json_output.py tests/test_mcp_server.py tests/test_util_interrupt.py tests/test_llm_models_resolution.py tests/test_tui.py tests/test_tutorial.py tests/test_server_v2_sse.py tests/test_prompt_queue.py tests/test_autocompact_scoring.py tests/test_telemetry.py tests/test_context.py tests/test_markdown_validation.py tests/test_vent.py tests/test_util_cli_generate.py tests/test_treeofthoughts.py tests/test_tools_lessons.py tests/test_subagent_planner_roles.py tests/test_conversations.py tests/test_subagent_worktree_isolation.py tests/test_active_context.py tests/test_tool_loading_duplicate.py tests/test_tools_python.py tests/test_server_config_workspace_containment.py tests/test_acp_client.py tests/test_eval_practical19.py tests/test_tools.py tests/test_acp_e2e_smoke.py tests/test_tools_form.py tests/test_eventlog.py tests/test_profiles.py tests/context/test_task_analyzer.py tests/context/test_adaptive_compressor.py tests/test_prompt_tools.py tests/test_llm_openai_sampling.py tests/test_util_cli.py tests/test_hooks_server_confirm.py tests/test_tools_time_awareness.py tests/test_screenshot.py tests/test_cli_stats.py tests/test_util_gh.py tests/test_llm_validate.py tests/test_tui_visual.py tests/test_util_cli_models.py tests/test_subagent_budget.py tests/test_agent_memory.py tests/test_gears.py tests/test_tools_save.py tests/test_auto_naming.py tests/test_server_cli_tools.py tests/test_tools_patch_anchored.py tests/test_credentials_integration.py tests/test_eval_tool_efficiency.py tests/lessons/test_bm25_parity.py tests/lessons/test_wildcard_matching.py tests/test_git_cmd_resolver.py tests/test_hooks.py tests/test_tools_chats.py tests/test_browser_github_routing.py tests/test_hooks_registry.py tests/test_commands.py tests/test_util_gh_mocked.py tests/test_setup_completions.py tests/test_util_cli_attest.py tests/test_shell_issue772.py tests/test_util_cost.py tests/test_git_worktree.py tests/test_server_etag.py tests/test_tools_precommit.py tests/test_lessons_tool.py tests/test_server_v2.py tests/test_shell_for_loop_issue724.py tests/test_server_v2_hooks.py tests/test_acp_agent.py tests/test_codeblock.py tests/test_package_exports.py tests/test_tools_gh.py tests/test_tui_e2e.py tests/test_eval_leaderboard.py tests/test_init.py tests/test_terminal_startup_latency.py tests/test_llm_retry_abort.py tests/test_llm_openai_subscription.py tests/test_llm_models.py tests/test_plugins.py tests/test_tools_autocommit.py tests/test_constants.py tests/test_tools_tmux.py tests/test_computer_docker_config.py tests/test_tools_shell_multiline.py tests/test_auto_compact.py tests/test_llm_auth.py tests/test_cli_confirm_hook.py tests/test_util_cli_review_watch.py tests/test_computer_risk_streaming.py tests/test_tools_base.py tests/test_llm_utils.py tests/test_util_file_storage.py tests/test_hooks_mcp_namespace_hint.py tests/test_replay.py tests/test_tools_patch.py tests/test_agent.py tests/test_eval_trends.py tests/test_eval_practical17.py tests/test_browser_format.py tests/test_session.py tests/test_logmanager.py tests/test_server_metrics.py tests/test_eval_timeouts.py tests/test_computer_run_task_cli.py tests/test_tool_use.py tests/test_hybrid_lessons.py tests/test_workspace_api.py tests/test_server_session_models.py tests/test_tools_pruner.py tests/test_snapshot_list.py tests/test_cli_status.py tests/test_tree.py tests/test_chats_external_search.py tests/test_chat_history.py tests/test_xml_format.py tests/test_util_hooks.py tests/test_file_selector_integration.py tests/test_external_sessions.py tests/test_server_webui_dir.py tests/test_computer_audit.py tests/test_oauth_openrouter.py tests/test_doctor.py tests/test_browser_session_persistence.py tests/test_acp_stdout.py tests/test_dspy_basic.py tests/test_onboard.py tests/test_tools_read.py tests/test_util_context_savings.py tests/test_cli_from_turn.py tests/test_prompt_templates.py tests/test_validate_release_package.py tests/test_llm_anthropic.py tests/test_output_format.py tests/test_server_elicitation.py tests/test_custom_providers.py tests/test_commands_llm.py tests/test_command_completion.py tests/test_lessons_index.py tests/test_server_panels.py tests/test_master_context.py tests/test_server_tts_api.py tests/test_computer_x11_integration.py tests/test_tools_browser_thread.py tests/test_hooks_form_autodetect.py tests/test_server_tools_query.py tests/test_dspy_hybrid.py tests/test_config_encoding.py tests/test_webui_redirects.py tests/test_utils.py tests/test_eval_computer_suite.py tests/test_chats_rename.py tests/test_tools_complete.py tests/test_credentials.py tests/test_provider_plugins.py tests/test_agents_md_inject.py tests/test_chats_stats.py tests/test_tools_shell.py tests/test_util_context_dedup.py tests/test_quota_skip.py tests/test_chats_export.py tests/test_computer_transport.py tests/test_acp_adapter.py tests/test_shell_issue729.py tests/test_util_cli_skills.py tests/test_execute_msg_defensive.py tests/test_tools_shell_validation.py tests/test_workspace_agents.py tests/test_util_clipboard_paste.py tests/test_circuit_breaker.py tests/test_util_export.py tests/test_tools_restart.py tests/test_server_auth.py tests/test_server_default_profile.py tests/test_cwe214_docker_env_leak.py tests/test_tools_computer.py tests/test_server_perf.py tests/test_tools_patch_many.py tests/test_acp_types.py tests/test_util_keyword_matching.py tests/test_server_fresh_bad_input.py tests/test_agent_service_timeouts.py tests/test_timings.py tests/test_pdf_to_images.py tests/fixtures/provider_test_scaffold.py tests/test_computer_milestone_integration.py tests/test_subagent_unit.py tests/test_lessons_parser.py tests/test_tools_vision.py tests/test_skill_installer.py tests/test_commands_rag.py tests/test_server.py tests/test_computer_api.py tests/test_llm_grok_subscription.py tests/test_tools_mcp.py tests/test_server_path_traversal.py tests/test_snapshot_command.py tests/test_mcp.py tests/test_server_api_v2_common.py tests/test_util_cli_mcp.py tests/test_llm_openai.py tests/test_lessons_integration.py tests/test_unified_plugins.py tests/test_cost_tracker.py tests/test_cli_llm_generate.py tests/test_complete.py tests/test_prompt.py tests/test_prompts.py tests/test_cost_awareness_delayed_warning.py tests/thread_leak.py tests/test_computer_latency_cmd.py tests/test_info.py tests/test_lessons_matcher.py tests/test_tools_todo.py tests/test_subagent_roundtrip.py tests/test_mcp_adapter.py tests/test_uri.py tests/test_browser_lynx.py tests/test_backtrack.py scripts/treeofthoughts.py scripts/validate_release_package.py scripts/github_ci_self_heal.py scripts/demo_capture.py scripts/analyze_compression.py scripts/check_model_freshness.py scripts/eval_leaderboard.py scripts/check_rst_formatting.py scripts/auto_rename_logs.py scripts/github_bot.py scripts/train/collect.py scripts/eval_trends.py scripts/verify_cloudflare_pages_deep_links.py --by-file --hide-rate --quiet | tail -n +2
-------------------------------------------------------------------------------------------------------------------------------
File blank comment code
-------------------------------------------------------------------------------------------------------------------------------
tests/test_subagent_unit.py 1285 610 4667
tests/test_server_v2.py 755 281 3190
tests/test_tools_subagent.py 847 429 2756
gptme/server/api_v2.py 464 383 2732
tests/test_llm_openai.py 622 366 2483
tests/test_util_review.py 453 311 1974
gptme/cli/cmd_computer.py 252 296 1726
gptme/tools/computer.py 432 864 1659
tests/test_init.py 253 142 1569
tests/test_server_v2_sessions.py 240 172 1531
gptme/llm/llm_openai.py 308 376 1515
gptme/tools/shell.py 271 351 1452
tests/test_eval_behavioral.py 865 961 1354
tests/test_cli.py 364 144 1295
gptme/cli/main.py 206 229 1291
tests/test_tools_computer.py 438 269 1258
gptme/hooks/workspace_agents.py 238 149 1254
tests/test_tools_shell.py 388 427 1232
gptme/util/gh.py 243 301 1213
tests/test_acp_agent.py 355 188 1206
gptme/tui/app.py 183 324 1188
tests/test_util_gh.py 260 172 1172
tests/test_config.py 339 412 1098
tests/test_util_cli_review_watch.py 275 172 1082
tests/test_server.py 293 201 1081
gptme/acp/agent.py 194 322 1066
gptme/cli/util.py 235 182 1043
tests/test_tools_complete.py 218 253 1017
gptme/tools/subagent/api.py 189 435 991
tests/test_tools_base.py 318 107 972
gptme/server/session_step.py 173 297 964
gptme/hooks/tests/test_workspace_agents.py 189 44 945
tests/test_info.py 177 78 937
tests/test_doctor.py 247 127 932
gptme/cli/doctor.py 115 89 924
gptme/llm/llm_anthropic.py 217 310 920
gptme/eval/main.py 107 112 915
gptme/server/api_v2_sessions.py 119 171 893
tests/test_llm_utils.py 255 127 886
tests/test_eval_leaderboard.py 126 104 883
gptme/tools/base.py 181 267 869
tests/test_tui.py 235 120 866
tests/test_util_cli.py 226 151 856
tests/test_computer_audit.py 231 157 846
tests/test_lessons_auto_include.py 219 202 834
tests/test_eval_computer_suite.py 328 149 819
tests/test_util_gh_mocked.py 155 121 814
gptme/cli/cmd_review_pr.py 146 321 812
tests/test_tasks_api.py 180 65 812
gptme/eval/leaderboard.py 149 485 804
tests/test_cost_display.py 110 68 776
tests/test_tools_browser.py 263 63 773
gptme/llm/__init__.py 148 273 771
gptme/tools/subagent/execution.py 135 303 762
gptme/server/openapi_docs.py 256 169 752
tests/test_server_workspace.py 149 154 743
gptme/eval/suites/computer.py 111 245 732
tests/test_tools_hashline_edit.py 193 382 720
gptme/eval/suites/basic.py 138 55 715
tests/test_eval.py 131 84 709
gptme/tools/subagent/batch.py 135 482 708
gptme/tools/chats.py 135 167 706
tests/test_agent.py 205 112 701
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_reduce.py 187 144 681
gptme/cli/cmd_review_watch.py 118 214 680
gptme/logmanager/manager.py 156 209 678
tests/test_tools_gh.py 134 69 675
gptme/server/tasks_api.py 190 124 666
tests/test_sandbox.py 155 55 664
gptme/tools/_browser_playwright.py 235 276 661
gptme/tools/browser.py 263 417 660
tests/test_prompt_templates.py 229 148 659
gptme/tools/mcp_adapter.py 227 219 648
tests/test_json_output.py 114 84 640
gptme/eval/dspy/tasks.py 170 374 639
tests/test_llm_models_resolution.py 216 171 639
tests/test_subagent_budget.py 166 144 626
gptme/util/context.py 145 224 619
tests/test_llm_anthropic.py 131 45 618
tests/test_computer_doctor_cmd.py 88 58 607
scripts/github_bot.py 109 107 597
tests/test_tools_lessons.py 135 49 580
tests/test_tools_precommit.py 109 86 578
gptme/tools/complete.py 103 170 572
tests/test_auto_compact.py 235 201 566
tests/test_computer_transport.py 209 79 556
tests/test_server_panels.py 61 30 552
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_server_path_traversal.py 139 105 539
gptme/server/artifacts_api.py 107 110 538
scripts/github_ci_self_heal.py 111 49 537
gptme/tools/gh.py 117 128 523
tests/test_server_bad_input.py 121 101 519
tests/test_lessons.py 156 153 517
tests/test_hooks_cost_awareness.py 72 61 516
gptme/eval/execenv.py 85 146 514
gptme/tools/computer_transport.py 134 99 512
gptme/llm/models/data.py 6 52 503
gptme/chat.py 77 141 502
gptme/hooks/registry.py 102 82 502
gptme/tools/hashline_edit.py 126 365 500
gptme/lessons/installer.py 146 165 496
tests/test_model_attestation.py 105 30 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/conftest.py 124 202 485
gptme/llm/llm_openai_subscription.py 116 96 484
gptme/prompts/__init__.py 72 84 484
tests/test_hooks_cache_awareness.py 151 44 484
gptme/config/user.py 112 155 483
tests/test_chat.py 202 171 482
tests/test_computer_demo_cmd.py 144 74 480
tests/test_tools_shell_validation.py 211 108 477
tests/test_snapshot_command.py 117 57 476
tests/test_server_session_models.py 161 141 475
gptme/hooks/tests/test_cost_awareness.py 83 52 463
tests/test_commands.py 147 68 463
tests/test_skill_installer.py 138 154 459
tests/test_llm_auth.py 153 55 458
tests/test_mcp_server.py 112 39 457
tests/test_tools_shell_background.py 117 51 456
scripts/analyze_compression.py 103 68 446
tests/test_dirs.py 111 80 446
scripts/demo_capture.py 104 83 445
tests/test_llm_openai_subscription.py 99 43 445
tests/test_message.py 160 123 444
tests/test_prompts.py 138 80 438
gptme/message.py 121 192 426
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
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_codeblock.py 316 806 416
tests/test_server_artifacts.py 66 32 415
tests/test_subagent_worktree_isolation.py 129 70 414
gptme/cli/cmd_status.py 97 43 413
gptme/util/prompt.py 102 151 412
tests/test_tools.py 164 98 407
gptme/util/cost_display.py 81 80 406
gptme/cli/auth.py 83 54 405
tests/test_logmanager.py 118 121 404
gptme/util/_telemetry.py 113 159 403
gptme/agent/service.py 108 103 400
gptme/tools/tmux.py 98 170 398
tests/test_tools_mcp.py 102 20 398
gptme/telemetry.py 94 55 396
gptme/agent/cli.py 107 128 395
tests/test_hybrid_lessons.py 100 58 395
tests/test_profiles.py 88 37 395
gptme/eval/suites/subagent.py 90 70 394
tests/test_computer_latency_cmd.py 93 42 393
gptme/agent/doctor.py 90 43 388
gptme/hooks/tests/test_manifest.py 95 45 387
gptme/lessons/auto_include.py 100 195 386
gptme/workspace_snapshot.py 53 64 386
gptme/lessons/index.py 117 128 385
gptme/util/reduce.py 94 120 377
gptme/cli/cmd_hooks.py 106 76 376
tests/test_unified_plugins.py 102 42 376
gptme/logmanager/conversations.py 81 120 374
gptme/server/external_sessions.py 59 92 372
tests/test_conversations.py 52 33 371
tests/test_github_ci_self_heal.py 71 6 371
tests/test_workspace_api.py 103 19 369
gptme/llm/openai_responses.py 80 22 367
tests/test_provider_plugins.py 93 33 366
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
gptme/info.py 96 79 361
tests/test_replay.py 120 110 361
gptme/llm/llm_grok_subscription.py 93 74 359
gptme/tools/__init__.py 97 95 357
tests/test_mcp_discovery.py 107 41 356
gptme/tools/python.py 93 116 353
tests/test_lessons_matcher.py 99 86 352
gptme/eval/dspy/experiments.py 94 60 350
tests/test_computer_use_integration.py 140 143 349
tests/test_tui_e2e.py 63 82 348
gptme/agent/workspace.py 120 209 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_shell_background.py 99 71 342
tests/test_context.py 152 87 341
tests/test_computer_semantic_fixtures.py 92 107 340
gptme/config/models.py 114 99 337
gptme/tools/mcp.py 102 103 337
gptme/init.py 65 89 336
tests/test_script_hooks.py 55 7 336
tests/test_eval_trends.py 35 22 335
tests/test_mcp_adapter.py 113 59 334
gptme/llm/llm_openai_models.py 6 43 333
tests/test_tools_read.py 108 49 333
gptme/util/safety.py 57 63 330
gptme/hooks/cost_awareness.py 82 75 329
tests/test_workspace_agents.py 145 57 329
gptme/hooks/tests/test_agents_md_inject.py 63 48 328
gptme/eval/suites/practical.py 35 30 326
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_util_safety.py 96 22 321
gptme/tools/subagent/__init__.py 64 225 320
scripts/treeofthoughts.py 59 91 320
gptme/hooks/tests/test_tool_target_instructions.py 58 49 319
gptme/tools/subagent/types.py 84 153 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_validation.py 104 183 316
tests/test_llm_models.py 110 80 315
tests/test_llm_grok_subscription.py 92 18 312
tests/test_tools_morph.py 89 66 310
gptme/hooks/tests/test_confirm.py 100 59 309
gptme/mcp/client.py 94 121 307
gptme/sandbox.py 82 156 307
tests/test_chats_external_search.py 72 55 307
tests/test_eventlog.py 73 35 307
tests/test_browser.py 140 71 305
gptme/attestation.py 71 2 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/llm/models/resolution.py 62 84 297
gptme/tools/_browser_thread.py 57 68 297
gptme/plugins/__init__.py 98 133 295
tests/test_eval_swebench.py 78 41 294
gptme/commands/llm.py 60 55 292
tests/test_plugins.py 110 85 292
tests/test_util_cli_batch.py 59 8 292
tests/test_chats_stats.py 72 30 291
tests/test_execenv.py 76 54 288
gptme/commands/snapshot.py 43 32 287
tests/lessons/test_wildcard_matching.py 114 125 287
gptme/prompts/workspace.py 47 69 285
gptme/tools/read.py 55 72 285
gptme/config/chat.py 60 99 284
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 115 278
tests/test_tools_patch_anchored.py 65 26 278
gptme/tools/save.py 63 63 276
tests/test_computer_video_frames_cli.py 67 12 274
tests/test_tools_restart.py 72 49 274
tests/test_util_tokens.py 129 71 273
tests/test_server_v2_agents.py 57 25 272
gptme/tools/patch.py 63 95 271
gptme/tools/shell_background.py 65 36 270
gptme/hooks/tests/test_token_awareness.py 37 28 269
gptme/cli/cmd_init.py 92 163 268
gptme/profiles.py 64 68 268
tests/test_computer_docker_config.py 59 92 267
gptme/acp/client.py 66 121 266
gptme/server/cli.py 47 60 266
tests/lessons/test_bm25_parity.py 67 70 266
tests/test_util_cli_attest.py 67 1 266
tests/test_util_cli_providers.py 65 30 263
gptme/cli/cmd_skills.py 71 35 261
gptme/llm/models/listing.py 63 57 261
tests/test_tools_autocommit.py 99 47 259
tests/test_terminal_startup_latency.py 77 32 257
tests/test_hooks.py 120 47 255
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
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/codeblock.py 38 148 250
tests/test_prompt_tools.py 57 30 249
gptme/hooks/tests/test_injection_screening.py 78 13 247
tests/test_cli_status.py 55 24 247
gptme/server/tools_api.py 58 49 245
gptme/tools/rag.py 89 131 245
gptme/tools/patch_many.py 56 62 243
gptme/anti_slop.py 40 62 242
tests/test_agents_md_inject.py 43 37 241
gptme/prompts/templates.py 59 106 240
gptme/eval/swebench/main.py 32 23 239
tests/test_cli_from_turn.py 65 18 239
tests/test_mcp.py 68 59 239
gptme/commands/meta.py 54 20 238
gptme/context/task_analyzer.py 100 124 237
tests/test_auto_naming.py 69 45 237
tests/test_computer_x11_integration.py 87 87 236
gptme/server/session_models.py 63 96 235
tests/test_cli_stats.py 62 27 234
gptme/context/adaptive_compressor.py 76 130 232
gptme/tools/todo.py 95 104 232
gptme/util/review.py 70 129 231
gptme/tools/precommit.py 70 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/subagent/hooks.py 73 136 225
tests/test_chats_json.py 32 17 225
gptme/cli/onboard.py 67 59 224
gptme/mcp/registry.py 59 70 224
gptme/util/auto_naming.py 68 78 224
tests/test_tools_python.py 93 60 224
gptme/eval/suites/behavioral/__init__.py 9 11 223
tests/test_git_worktree.py 57 37 222
gptme/eval/suites/practical6.py 56 46 221
gptme/lessons/commands.py 91 48 219
gptme/hooks/tests/test_cli_confirm.py 75 23 218
gptme/util/_sound_sounddevice.py 57 50 218
tests/test_util_keyword_matching.py 75 46 218
gptme/hooks/aw_watcher_agent.py 49 21 217
tests/test_lessons_tool.py 62 34 216
tests/test_llm_retry_abort.py 85 62 216
tests/test_subagent_roundtrip.py 70 51 216
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_checkpoint.py 88 20 211
tests/test_server_fresh_bad_input.py 43 38 211
gptme/config/cli_setup.py 36 42 209
gptme/model_attestation.py 63 78 209
gptme/eval/swebench/evaluate.py 39 61 208
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
gptme/tools/autocompact/engine.py 41 58 204
gptme/server/auth.py 76 115 203
gptme/server/panels_api.py 51 51 203
tests/test_tools_screenshot.py 55 48 203
tests/test_util_file_storage.py 51 36 203
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
gptme/hooks/tests/test_active_context.py 37 29 198
gptme/hooks/__init__.py 20 42 197
gptme/hooks/tests/test_server_elicit.py 58 23 196
gptme/cli/cmd_batch.py 31 6 195
tests/test_tools_save.py 57 36 193
gptme/eval/suites/practical8.py 68 62 191
tests/test_chats_clean.py 46 18 191
gptme/hooks/manifest.py 43 41 190
gptme/hooks/script.py 21 8 189
tests/test_computer_task.py 116 31 189
tests/test_telemetry.py 68 31 189
gptme/tools/pruner.py 44 0 188
gptme/eval/agents/claude_code.py 41 33 187
gptme/hooks/tests/test_server_confirm.py 48 32 186
gptme/eval/suites/practical14.py 64 52 185
gptme/tools/morph.py 43 49 185
tests/test_computer_screenshot_cli.py 53 12 183
gptme/commands/base.py 64 61 182
tests/test_k_best.py 76 23 182
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_tools_tmux.py 77 65 179
gptme/cli/cmd_mcp.py 52 29 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_server_tools_query.py 51 28 176
gptme/llm/validate.py 30 29 175
tests/test_cost_tracker.py 26 26 175
gptme/commands/session.py 58 47 174
tests/test_tools_todo.py 81 65 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_util_cli_models.py 23 25 170
gptme/util/git_worktree.py 40 67 169
gptme/hooks/cache_awareness.py 118 186 168
gptme/oauth/openrouter.py 48 43 168
tests/test_tree.py 61 37 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/server/computer_api.py 44 51 164
gptme/hooks/types.py 96 136 163
gptme/tui/main.py 25 15 163
tests/test_computer_api.py 70 190 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
gptme/llm/utils.py 56 84 159
gptme/mcp/server.py 48 56 159
gptme/util/tokens.py 46 69 159
tests/test_acp_client.py 64 34 159
gptme/eval/suites/practical3.py 27 19 158
tests/test_acp_stdout.py 76 37 158
tests/test_anti_slop.py 67 24 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/llm/llm_openai_models_deprecated.py 5 14 157
gptme/util/__init__.py 34 29 157
tests/test_backtrack.py 39 11 157
gptme/server/api_v2_common.py 83 63 156
tests/test_commands_account.py 37 6 156
tests/test_search_alias.py 33 27 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_shell_allowlist_autoconfirm.py 38 38 154
tests/test_server_config_workspace_containment.py 42 46 153
tests/test_timings.py 66 50 153
gptme/hooks/cli_confirm.py 50 54 152
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
gptme/util/tool_format.py 48 75 151
tests/test_util_tree.py 44 33 151
gptme/tools/restart.py 53 83 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
scripts/check_rst_formatting.py 41 52 147
tests/test_master_context.py 39 24 147
gptme/hooks/token_awareness.py 47 46 146
gptme/config/core.py 48 51 145
gptme/tools/form.py 42 64 145
tests/test_file_selector_integration.py 50 23 145
tests/test_vent.py 32 10 145
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
gptme/acp/__main__.py 52 57 142
gptme/logmanager/eventlog.py 51 39 141
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
gptme/eval/suites/practical5.py 67 80 138
gptme/llm/models/types.py 52 86 138
tests/test_computer_milestone_integration.py 61 59 138
tests/test_tools_vision.py 36 31 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/tools/elicit.py 39 121 135
tests/test_chat_config.py 53 44 135
gptme/server/app.py 35 84 133
tests/test_computer_gate.py 76 40 133
gptme/server/api_v2_agents.py 25 17 132
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
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
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
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_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/tools/autocompact/hook.py 40 48 116
tests/test_agent_service_timeouts.py 19 18 116
tests/test_llm_validate.py 26 20 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/util/cost_tracker.py 46 69 114
tests/test_misc_subprocess_timeouts.py 43 27 114
gptme/hooks/server_elicit.py 52 56 113
tests/test_lessons_status.py 67 96 113
tests/test_chats_rename.py 42 16 112
gptme/dirs.py 46 35 111
gptme/hooks/tests/test_time_awareness.py 36 11 111
gptme/util/export.py 26 29 111
gptme/tools/computer_semantic.py 61 129 110
tests/test_server_host_validation.py 46 27 110
gptme/hooks/confirm.py 53 88 109
gptme/prompt_queue.py 41 20 109
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_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
tests/test_command_completion.py 33 23 100
tests/test_hooks_mcp_namespace_hint.py 30 14 100
gptme/eval/suites/practical24.py 78 204 99
gptme/eval/suites/practical26.py 72 162 99
gptme/eval/suites/practical31.py 69 112 99
gptme/eval/swe_extra/run_swe_extra.py 25 15 99
gptme/llm/llm_openrouter_subscription.py 35 37 99
gptme/eval/suites/behavioral/implement_priority_queue.py 61 109 98
tests/test_thread_leak.py 29 7 98
gptme/eval/types.py 31 53 97
gptme/eval/suites/behavioral/optimize_n_squared.py 31 43 96
gptme/tools/screenshot.py 29 40 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/server/tts_api.py 24 18 90
tests/test_agent_memory.py 26 17 90
tests/test_browser_lynx.py 35 15 90
gptme/__version__.py 19 8 89
gptme/cli/cmd_slop.py 17 10 89
gptme/eval/tbench/run.py 16 12 89
gptme/util/ask_execute.py 25 40 89
tests/test_swebench_utils.py 27 2 89
gptme/commands/__init__.py 15 21 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/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/eval/suites/behavioral/implement_memoization.py 50 112 85
tests/test_util.py 42 85 85
tests/test_output_format.py 29 21 84
tests/test_server_auth.py 40 19 84
gptme/eval/suites/behavioral/validate_user_input.py 33 55 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 37 58 81
tests/test_eval_swebench_retrieval.py 25 4 81
tests/test_commands_llm.py 16 0 80
tests/test_prompt_skills_summary.py 44 44 80
gptme/cli/cmd_agents.py 19 14 79
tests/test_onboard.py 17 17 79
gptme/eval/suites/behavioral/rate_limiting.py 52 118 78
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/context/compress.py 63 131 76
gptme/gears.py 16 4 76
gptme/eval/pass_rate_gate.py 23 44 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/tools/subagent/control.py 19 3 74
tests/test_custom_providers.py 32 44 74
tests/test_subscription_pricing.py 27 14 74
gptme/config/__init__.py 6 15 73
gptme/tools/progress.py 23 53 73
gptme/tools/vision.py 28 21 73
tests/test_shell_issue772.py 48 47 73
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/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_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_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/eval/suites/__init__.py 22 18 62
gptme/eval/suites/behavioral/test_driven_error_handling.py 35 56 62
gptme/eval/suites/init_projects.py 21 1 62
gptme/llm/models/__init__.py 3 12 62
gptme/util/_sound_cmd.py 22 17 62
gptme/eval/suites/behavioral/add_logging.py 27 39 61
gptme/tools/_browser_lynx.py 12 12 60
gptme/tools/_browser_perplexity.py 22 16 60
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_git_cmd_resolver.py 23 15 59
tests/test_server_client.py 33 26 59
tests/test_server_metrics.py 20 20 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/tools/autocompact/handlers.py 19 9 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
tests/test_server_parent_death_watcher.py 16 14 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/eval/suites/behavioral/git_selective_commit.py 21 52 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 3 9 44
tests/test_acp_e2e_smoke.py 14 18 43
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/tools/autocompact/__init__.py 3 12 37
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
tests/test_shell_for_loop_issue724.py 16 24 33
gptme/eval/suites/behavioral/_common.py 9 5 32
gptme/hooks/tests/test_auto_confirm.py 12 4 32
gptme/context/selector/__init__.py 12 16 31
gptme/util/content.py 18 24 30
gptme/util/install.py 13 25 30
tests/test_prompt_queue.py 16 15 30
tests/test_package_exports.py 10 3 29
gptme/constants.py 20 25 28
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/tools/_allowlist.py 11 7 27
gptme/util/useredit.py 11 13 26
tests/test_quota_skip.py 5 3 26
gptme/acp/adapter.py 19 22 25
gptme/executor.py 18 26 24
gptme/hooks/auto_confirm.py 11 9 24
tests/test_tool_loading_duplicate.py 16 15 24
gptme/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/util/conversation_ids.py 7 4 22
tests/test_credentials_integration.py 8 0 22
gptme/acp/__init__.py 5 13 21
gptme/context/selector/config.py 8 8 21
gptme/agent/__init__.py 3 6 19
gptme/context/config.py 12 25 19
tests/test_constants.py 11 13 19
tests/test_server_cli_tools.py 12 4 19
tests/test_tools_shell_multiline.py 7 19 19
gptme/lessons/__init__.py 7 15 18
tests/test_browser_format.py 8 6 18
gptme/eval/suites/browser.py 5 0 17
gptme/plugins/plugin.py 25 39 17
gptme/util/git_cmd.py 7 14 17
gptme/cli/__init__.py 10 13 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/constants.py 7 11 9
gptme/eval/tbench/__init__.py 13 22 8
gptme/eval/dspy/__init__.py 6 6 7
gptme/llm/constants.py 2 6 5
scripts/eval_trends.py 2 1 5
gptme/eval/__init__.py 2 2 4
scripts/eval_leaderboard.py 2 1 4
gptme/eval/__main__.py 1 0 3
gptme/eval/dspy/__main__.py 3 5 3
gptme/eval/swebench/__main__.py 1 0 3
gptme/server/__init__.py 2 3 3
gptme/server/__main__.py 1 0 3
gptme/tools/_browser_format.py 3 5 3
gptme/oauth/__init__.py 1 4 0
gptme/tui/__init__.py 4 12 0
-------------------------------------------------------------------------------------------------------------------------------
SUM: 60711 57585 222804
-------------------------------------------------------------------------------------------------------------------------------
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: 807
Total blocks: 16810
Average complexity: 3.696192742415229
Most Complex Functions (D+):
gptme/llm/__init__.py
gptme/llm/models/listing.py
F 284:0 list_models - D
gptme/llm/models/resolution.py
gptme/llm/llm_anthropic.py
F 1300:0 _prepare_messages_for_api - D
F 685:0 chat - D
gptme/llm/openai_responses.py
F 313:0 _stream_responses_events - D
gptme/llm/llm_openai.py
F 473:0 init - E
F 979:0 chat - E
F 1311:0 stream - D
F 702:0 _handle_openai_transient_error - D
F 1143:0 extra_body - D
gptme/chat.py
F 201:0 _run_chat_loop - E
F 387:0 _process_message_conversation - E
F 55:0 chat - D
gptme/info.py
F 424:0 format_version_info - D
gptme/plugins/__init__.py
F 202:0 _load_plugin - D
gptme/codeblock.py
gptme/acp/agent.py
M 559:4 GptmeAgent.new_session - D
M 994:4 GptmeAgent.prompt - D
gptme/tui/app.py
M 654:4 ChatInput._on_key - D
gptme/context/selector/file_selector.py
gptme/context/selector/rule_based.py
M 27:4 RuleBasedSelector.select - D
gptme/lessons/index.py
M 97:4 LessonIndex._default_dirs - E
M 415:4 LessonIndex._load_manifest_skill_stubs - D
gptme/lessons/auto_include.py
F 228:0 _classify_lesson - D
gptme/lessons/hybrid_matcher.py
M 394:4 HybridLessonMatcher._match_with_bm25 - D
gptme/lessons/parser.py
F 273:0 parse_lesson - D
gptme/lessons/installer.py
F 240:0 install_skill - E
F 507:0 check_dependencies - D
gptme/hooks/tool_target_instructions.py
F 67:0 _extract_paths - D
gptme/hooks/token_awareness.py
F 93:0 add_token_usage_warning - D
gptme/hooks/cli_confirm.py
F 162:0 _looks_like_diff - D
gptme/hooks/workspace_agents.py
F 1352:0 scan_agents - D
gptme/hooks/registry.py
M 178:4 HookRegistry.trigger - D
gptme/tools/__init__.py
F 254:0 get_toolchain - D
F 159:0 init_tools - D
gptme/tools/computer.py
F 1381:0 _dispatch_transport - D
gptme/tools/mcp.py
gptme/tools/shell.py
M 755:4 ShellSession._read_output_unix - E
M 590:4 ShellSession._read_output_windows - D
M 457:4 ShellSession._run_pipe - D
F 1651:0 execute_shell - D
gptme/tools/gh.py
F 549:0 execute_gh - E
F 99:0 _wait_for_checks - D
gptme/tools/complete.py
F 190:0 complete_hook - E
F 679:0 stuck_detect_hook - D
gptme/tools/shell_background.py
M 56:4 BackgroundJob._read_output - D
gptme/tools/chats.py
gptme/tools/autocompact/engine.py
gptme/tools/subagent/batch.py
gptme/tools/subagent/execution.py
gptme/tools/subagent/api.py
gptme/tools/python.py
F 236:0 execute_python - D
gptme/tools/lessons.py
F 244:0 auto_include_lessons_hook - D
gptme/tools/tmux.py
F 423:0 execute_tmux - D
gptme/tools/read.py
F 160:0 _read_one - E
gptme/tools/hashline_edit.py
F 789:0 execute_hashline_edit - D
gptme/eval/main.py
gptme/eval/dspy/hybrid_optimizer.py
C 239:0 TaskComplexity - D
M 283:4 TaskComplexity.analyze - D
gptme/eval/suites/practical16.py
F 68:0 check_queue_all_producers_mentioned - D
gptme/eval/run.py
F 310:0 execute - D
gptme/eval/trends.py
F 157:0 compute_diff - D
gptme/eval/leaderboard.py
F 915:0 compute_rate_trends - D
F 679:0 aggregate_per_test - D
gptme/prompts/__init__.py
F 214:0 _build_prompt_sections - D
gptme/prompts/workspace.py
gptme/prompts/chat_history.py
F 20:0 prompt_chat_history - E
gptme/init.py
F 113:0 init_model - D
gptme/config/chat.py
M 115:4 ChatConfig.from_dict - D
gptme/config/models.py
M 365:4 ProjectConfig.from_dict - D
gptme/config/cli_setup.py
gptme/config/user.py
F 351:0 load_user_config - E
F 674:0 _merge_config_data - D
gptme/config/core.py
M 74:4 Config.mcp - D
gptme/telemetry.py
F 350:0 record_llm_request - E
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/meta.py
F 142:0 cmd_plugin - E
gptme/commands/checkpoint.py
F 43:0 cmd_checkpoint - D
gptme/commands/snapshot.py
F 42:0 _print_prunable - D
gptme/util/tool_format.py
F 104:0 format_tools_list - D
gptme/util/prompt.py
M 296:4 GptmeCompleter.get_completions - D
gptme/util/cost_display.py
F 392:0 display_costs - D
F 227:0 gather_conversation_costs - 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/reduce.py
F 291:0 proactive_summarize_log - E
F 466:0 _drop_orphaned_tool_pairs - D
gptme/util/_telemetry.py
F 329:0 init_telemetry - D
gptme/util/context.py
F 495:0 include_paths - E
F 857:0 _resource_to_codeblock - E
gptme/cli/main.py
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/util.py
F 694:0 llm_generate - D
F 1200:0 models_test - D
gptme/cli/doctor.py
F 546:0 _check_computer - D
gptme/cli/cmd_hooks.py
F 265:0 run - D
gptme/cli/cmd_review_watch.py
gptme/cli/cmd_review_pr.py
F 1026:0 review_pr - D
gptme/cli/cmd_agents.py
F 25:0 run_scan - D
gptme/workspace_snapshot.py
F 417:0 prune_by_age - D
gptme/agent/doctor.py
F 339:0 check_lessons - E
gptme/server/openapi_docs.py
F 926:0 _convert_to_openapi_nullable - D
gptme/server/a2a_api.py
F 490:0 _task_from_conversation - D
gptme/server/tasks_api.py
F 381:0 get_git_status - D
gptme/server/api_v2.py
F 1567:0 api_conversation_put - E
F 1984:0 api_conversation_edit_message - E
F 1435:0 api_conversation - D
F 2717:0 api_conversation_config_patch - D
F 1781:0 api_conversation_post - D
gptme/server/api_v2_sessions.py
F 576:0 api_conversation_tool_confirm - E
F 1028:0 api_conversation_transcript - D
F 800:0 api_conversation_rerun - D
gptme/server/api_v2_agents.py
F 55:0 api_agents_put - D
gptme/server/session_step.py
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_eval_behavioral_solutions.py
F 55:0 _apply_solution - E
tests/test_config.py
F 665:0 test_project_config_loaded_from_toml - D
F 702:0 test_project_config_loaded_from_json - D
tests/test_util_cli.py
F 19:0 test_tokens_count - D
F 406:0 test_tools_list - D
F 557:0 test_models_list - D
tests/test_server.py
F 309:0 test_api_conversation_list_detail_flag - D
scripts/treeofthoughts.py
F 183:0 tree_search - D
scripts/demo_capture.py
F 485:0 main - D
scripts/check_rst_formatting.py
F 26:0 check_file - E
scripts/auto_rename_logs.py
F 32:0 auto_rename_logs - D
scripts/github_bot.py
F 554:0 main - D
Largest Files (>300 SLOC):
4667 tests/test_subagent_unit.py
3190 tests/test_server_v2.py
2761 tests/test_tools_subagent.py
2732 gptme/server/api_v2.py
2494 tests/test_llm_openai.py
2249 tests/test_eval_behavioral.py
2014 tests/test_util_review.py
1939 gptme/tools/computer.py
1727 gptme/cli/cmd_computer.py
1569 tests/test_init.py
1545 gptme/tools/shell.py
1533 tests/test_server_v2_sessions.py
1515 gptme/llm/llm_openai.py
1441 tests/test_tools_shell.py
1355 tests/test_config.py
1344 gptme/tui/app.py
1341 gptme/cli/main.py
1304 tests/test_cli.py
1299 tests/test_tools_computer.py
1255 gptme/hooks/workspace_agents.py
1230 gptme/util/gh.py
1206 tests/test_acp_agent.py
1174 gptme/eval/leaderboard.py
1172 tests/test_util_gh.py
1127 tests/test_eval_behavioral_solutions.py
1087 tests/test_server.py
1084 tests/test_util_cli_review_watch.py
1066 gptme/acp/agent.py
1049 gptme/cli/util.py
1021 tests/test_tools_complete.py
1004 tests/test_tools_base.py
991 gptme/tools/subagent/api.py
964 gptme/server/session_step.py
951 tests/test_tools_hashline_edit.py
947 gptme/eval/dspy/tasks.py
945 gptme/hooks/tests/test_workspace_agents.py
937 tests/test_info.py
932 tests/test_doctor.py
924 gptme/cli/doctor.py
922 gptme/llm/llm_anthropic.py
917 gptme/eval/main.py
898 tests/test_codeblock.py
896 gptme/server/api_v2_sessions.py
889 tests/test_eval_leaderboard.py
886 tests/test_llm_utils.py
881 tests/test_computer_audit.py
875 gptme/tools/base.py
866 tests/test_tui.py
856 tests/test_util_cli.py
853 tests/test_lessons_auto_include.py
833 gptme/cli/cmd_review_pr.py
821 tests/test_util_gh_mocked.py
820 gptme/eval/suites/computer.py
819 tests/test_eval_computer_suite.py
812 tests/test_tasks_api.py
781 tests/test_cost_display.py
776 gptme/server/openapi_docs.py
773 tests/test_tools_browser.py
771 gptme/llm/__init__.py
762 gptme/tools/subagent/execution.py
745 gptme/tools/browser.py
743 tests/test_server_workspace.py
728 tests/test_eval.py
725 gptme/tools/chats.py
715 gptme/eval/suites/basic.py
713 gptme/tools/subagent/batch.py
709 gptme/cli/setup.py
701 tests/test_agent.py
699 tests/test_acp_session_runtime.py
696 tests/test_hooks_registry.py
685 gptme/tools/hashline_edit.py
681 tests/test_reduce.py
680 gptme/cli/cmd_review_watch.py
679 gptme/logmanager/manager.py
676 gptme/tools/_browser_playwright.py
675 tests/test_tools_gh.py
666 gptme/server/tasks_api.py
664 tests/test_sandbox.py
659 tests/test_prompt_templates.py
648 gptme/tools/mcp_adapter.py
641 gptme/util/context.py
640 tests/test_json_output.py
639 tests/test_llm_models_resolution.py
626 tests/test_subagent_budget.py
619 tests/test_llm_anthropic.py
612 tests/test_lessons.py
609 scripts/github_bot.py
607 tests/test_computer_doctor_cmd.py
603 tests/test_auto_compact.py
593 gptme/tools/gh.py
583 gptme/tools/complete.py
580 tests/test_tools_lessons.py
578 tests/test_tools_precommit.py
576 tests/test_lessons_parser.py
573 tests/test_skill_installer.py
567 scripts/github_ci_self_heal.py
556 tests/test_computer_transport.py
554 tests/test_eval_subagent.py
552 tests/test_server_panels.py
552 gptme/llm/models/data.py
550 gptme/eval/run.py
548 gptme/server/a2a_api.py
546 tests/test_computer_actions.py
541 gptme/server/artifacts_api.py
539 tests/test_server_path_traversal.py
534 gptme/tools/subagent/__init__.py
527 tests/test_chat.py
526 gptme/eval/execenv.py
519 tests/test_server_bad_input.py
516 tests/test_hooks_cost_awareness.py
514 gptme/lessons/installer.py
512 gptme/tools/computer_transport.py
506 gptme/llm/llm_openai_subscription.py
502 gptme/hooks/registry.py
502 gptme/chat.py
497 tests/conftest.py
496 tests/test_model_attestation.py
496 tests/test_gptme_provider.py
487 gptme/prompts/__init__.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
483 gptme/tools/tmux.py
480 tests/test_computer_demo_cmd.py
478 tests/test_tools_shell_validation.py
477 tests/test_snapshot_command.py
475 tests/test_server_session_models.py
463 tests/test_commands.py
463 gptme/hooks/tests/test_cost_awareness.py
458 tests/test_llm_auth.py
457 tests/test_mcp_server.py
456 tests/test_tools_shell_background.py
455 tests/test_prompts.py
455 tests/test_message.py
451 scripts/demo_capture.py
448 tests/test_llm_openai_subscription.py
446 tests/test_dirs.py
445 scripts/analyze_compression.py
439 tests/test_tools.py
437 tests/test_lessons_index.py
433 gptme/message.py
432 gptme/util/prompt.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
415 tests/test_server_artifacts.py
414 tests/test_subagent_worktree_isolation.py
413 gptme/cli/cmd_status.py
407 gptme/util/_telemetry.py
406 gptme/util/cost_display.py
405 gptme/cli/auth.py
404 tests/test_logmanager.py
402 gptme/tools/python.py
399 gptme/eval/suites/subagent.py
398 tests/test_tools_mcp.py
396 gptme/telemetry.py
396 gptme/agent/workspace.py
395 tests/test_profiles.py
395 tests/test_hybrid_lessons.py
395 gptme/agent/cli.py
393 tests/test_computer_latency_cmd.py
388 gptme/workspace_snapshot.py
388 gptme/agent/doctor.py
387 gptme/hooks/tests/test_manifest.py
386 gptme/lessons/auto_include.py
385 gptme/lessons/index.py
383 tests/test_util_hooks.py
383 tests/test_computer_use_integration.py
378 gptme/cli/cmd_init.py
377 gptme/util/reduce.py
376 tests/test_unified_plugins.py
376 gptme/logmanager/conversations.py
376 gptme/cli/cmd_hooks.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
369 tests/test_workspace_api.py
368 gptme/llm/llm_openai_models.py
367 gptme/llm/openai_responses.py
366 tests/test_provider_plugins.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 gptme/info.py
360 gptme/tools/__init__.py
359 gptme/llm/llm_grok_subscription.py
356 tests/test_mcp_discovery.py
355 gptme/eval/dspy/experiments.py
352 gptme/tools/mcp.py
350 gptme/eval/dspy/metrics.py
348 tests/test_tui_e2e.py
347 tests/test_complete.py
346 tests/test_tools_patch.py
346 tests/lessons/test_wildcard_matching.py
343 gptme/hooks/tests/test_elicitation.py
342 tests/test_shell_background.py
342 tests/test_script_hooks.py
341 tests/test_context.py
340 tests/test_computer_semantic_fixtures.py
338 gptme/init.py
337 gptme/config/models.py
336 tests/test_eval_trends.py
334 tests/test_mcp_adapter.py
333 tests/test_tools_read.py
330 gptme/util/safety.py
329 tests/test_workspace_agents.py
329 gptme/hooks/cost_awareness.py
328 tests/test_computer_api.py
328 gptme/hooks/tests/test_agents_md_inject.py
326 scripts/treeofthoughts.py
326 gptme/eval/suites/practical.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_ephemeral.py
321 gptme/tools/shell_validation.py
321 gptme/checkpoint.py
319 gptme/tools/subagent/types.py
319 gptme/sandbox.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_llm_models.py
314 tests/test_eval_swebench.py
314 gptme/tools/read.py
312 tests/test_plugins.py
312 tests/test_llm_grok_subscription.py
310 tests/test_tools_morph.py
310 gptme/tools/patch.py
309 gptme/hooks/tests/test_confirm.py
307 tests/test_eventlog.py
307 tests/test_chats_external_search.py
307 gptme/mcp/client.py
305 tests/test_browser.py
303 gptme/prompts/templates.py
301 tests/test_tools_rag.py
301 gptme/tools/save.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.0.15
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 [428:5 - 435: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 [159:77 - 172:17]
Clone found (python)
- cli/cmd_batch.py [132:5 - 145:39] (14 lines, 54 tokens)
cli/cmd_review_watch.py [517:5 - 530:39]
Clone found (python)
- cli/cmd_batch.py [145:37 - 159:38] (15 lines, 61 tokens)
cli/cmd_review_watch.py [532:45 - 546: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_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 [788:86 - 802:80] (15 lines, 55 tokens)
cli/cmd_review_watch.py [955:64 - 973: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 [1113:40 - 1129:35] (17 lines, 102 tokens)
cli/main.py [1255:26 - 1271:27]
Clone found (python)
- cli/util.py [1364:9 - 1371:72] (8 lines, 54 tokens)
cli/util.py [1397:5 - 1404: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/user.py [604:5 - 616:4] (13 lines, 58 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 [208:5 - 214:46] (7 lines, 61 tokens)
eval/leaderboard.py [689:5 - 695:85]
Clone found (python)
- eval/leaderboard.py [304:28 - 319:28] (16 lines, 63 tokens)
eval/leaderboard.py [364:68 - 379:28]
Clone found (python)
- eval/leaderboard.py [461:3 - 467:27] (7 lines, 82 tokens)
eval/leaderboard.py [835:3 - 841:27]
Clone found (python)
- eval/leaderboard.py [461:3 - 467:27] (7 lines, 82 tokens)
eval/leaderboard.py [1143:3 - 1149: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_cost_awareness.py [352:78 - 366:29] (15 lines, 56 tokens)
hooks/tests/test_cost_awareness.py [384:76 - 398:29]
Clone found (python)
- hooks/tests/test_cost_awareness.py [473:72 - 490:46] (18 lines, 62 tokens)
hooks/tests/test_cost_awareness.py [496:82 - 513: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 [276:9 - 296:58] (21 lines, 124 tokens)
hooks/tests/test_workspace_agents.py [321:9 - 341:58]
Clone found (python)
- hooks/tests/test_workspace_agents.py [713:13 - 725:44] (13 lines, 57 tokens)
hooks/tests/test_workspace_agents.py [979:13 - 991:44]
Clone found (python)
- init.py [298:5 - 303:6] (6 lines, 52 tokens)
model_attestation.py [296:5 - 301:6]
Clone found (python)
- init.py [320:9 - 330:25] (11 lines, 58 tokens)
model_attestation.py [319:9 - 329:25]
Clone found (python)
- llm/__init__.py [284:21 - 291:14] (8 lines, 72 tokens)
llm/__init__.py [695:21 - 702:14]
Clone found (python)
- llm/__init__.py [418:19 - 426:5] (9 lines, 56 tokens)
llm/__init__.py [572:12 - 580:5]
Clone found (python)
- llm/__init__.py [455:5 - 468:17] (14 lines, 54 tokens)
llm/__init__.py [609:5 - 622:17]
Clone found (python)
- llm/llm_anthropic.py [171:29 - 192:7] (22 lines, 88 tokens)
llm/llm_openai.py [240:26 - 261:7]
Clone found (python)
- llm/llm_anthropic.py [409:5 - 426:21] (18 lines, 61 tokens)
llm/llm_openai.py [722:5 - 740:21]
Clone found (python)
- llm/llm_anthropic.py [464:5 - 477:39] (14 lines, 72 tokens)
llm/llm_openai.py [840:5 - 853:39]
Clone found (python)
- llm/llm_anthropic.py [493:5 - 521:30] (29 lines, 134 tokens)
llm/llm_openai.py [869:5 - 897:30]
Clone found (python)
- llm/llm_anthropic.py [685:9 - 692:32] (8 lines, 56 tokens)
llm/llm_anthropic.py [784:11 - 791:32]
Clone found (python)
- llm/llm_anthropic.py [702:5 - 737:6] (36 lines, 161 tokens)
llm/llm_anthropic.py [809:5 - 844:6]
Clone found (python)
- llm/llm_grok_subscription.py [235:63 - 249:14] (15 lines, 51 tokens)
llm/llm_openai_subscription.py [372:50 - 385: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 [979:9 - 987:5] (9 lines, 52 tokens)
llm/llm_openai.py [1311:11 - 1319:5]
Clone found (python)
- llm/llm_openai.py [994:5 - 1003:84] (10 lines, 50 tokens)
llm/llm_openai.py [1326:5 - 1335:84]
Clone found (python)
- llm/llm_openai.py [1064:5 - 1078:82] (15 lines, 93 tokens)
llm/llm_openai.py [1356:5 - 1370:82]
Clone found (python)
- llm/llm_openai.py [1809:48 - 1816:52] (8 lines, 50 tokens)
llm/llm_openai.py [1826:32 - 1833:52]
Clone found (python)
- llm/llm_openai_models.py [298:20 - 307:7] (10 lines, 51 tokens)
llm/llm_openai_models.py [317:14 - 326:7]
Clone found (python)
- llm/llm_openai_models.py [298:20 - 307:7] (10 lines, 51 tokens)
llm/llm_openai_models.py [328:20 - 337:7]
Clone found (python)
- llm/llm_openai_models.py [339:24 - 348:7] (10 lines, 51 tokens)
llm/llm_openai_models.py [350:20 - 359:7]
Clone found (python)
- llm/llm_openai_models.py [339:24 - 348:7] (10 lines, 51 tokens)
llm/llm_openai_models.py [372:14 - 381:7]
Clone found (python)
- llm/models/data.py [46:26 - 58:15] (13 lines, 54 tokens)
llm/models/data.py [60:26 - 72:15]
Clone found (python)
- llm/models/data.py [128:35 - 138:11] (11 lines, 55 tokens)
llm/models/data.py [139:33 - 149:11]
Clone found (python)
- llm/models/listing.py [177:21 - 183:10] (7 lines, 50 tokens)
llm/models/listing.py [350:32 - 356:14]
Clone found (python)
- llm/validate.py [151:9 - 164:4] (14 lines, 50 tokens)
llm/validate.py [190:54 - 203:4]
Clone found (python)
- llm/validate.py [189:48 - 203:4] (15 lines, 58 tokens)
llm/validate.py [206:45 - 220:4]
Clone found (python)
- llm/validate.py [189:48 - 200:64] (12 lines, 57 tokens)
llm/validate.py [223:37 - 234:64]
Clone found (python)
- plugins/__init__.py [478:5 - 503: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 [78:5 - 87:68] (10 lines, 50 tokens)
prompt_queue.py [135:5 - 144:68]
Clone found (python)
- prompts/__init__.py [355:21 - 367:39] (13 lines, 91 tokens)
prompts/__init__.py [470:15 - 482:39]
Clone found (python)
- prompts/__init__.py [370:5 - 386:6] (17 lines, 69 tokens)
prompts/__init__.py [541:5 - 557:6]
Clone found (python)
- server/api_v2.py [1057:84 - 1075:4] (19 lines, 69 tokens)
server/api_v2.py [1109:5 - 1127:4]
Clone found (python)
- server/api_v2.py [1077:5 - 1093:15] (17 lines, 118 tokens)
server/api_v2.py [1139:5 - 1155:15]
Clone found (python)
- server/api_v2.py [1783:5 - 1790:76] (8 lines, 61 tokens)
server/api_v2.py [2720:5 - 2727:76]
Clone found (python)
- server/api_v2.py [1820:5 - 1840:30] (21 lines, 95 tokens)
server/api_v2.py [2378:5 - 2398:30]
Clone found (python)
- server/api_v2.py [1828:31 - 1840:30] (13 lines, 54 tokens)
server/api_v2.py [2767:33 - 2779:30]
Clone found (python)
- server/api_v2.py [1958:118 - 1973:11] (16 lines, 54 tokens)
server/api_v2.py [2114:97 - 2129:11]
Clone found (python)
- server/api_v2.py [2018:5 - 2036:40] (19 lines, 82 tokens)
server/api_v2.py [2143:5 - 2162:30]
Clone found (python)
- server/api_v2.py [2036:86 - 2055:14] (20 lines, 80 tokens)
server/api_v2.py [2162:78 - 2182:14]
Clone found (python)
- server/api_v2.py [2263:5 - 2274:10] (12 lines, 61 tokens)
server/api_v2.py [2289:9 - 2302:14]
Clone found (python)
- server/api_v2.py [2935:58 - 2948:38] (14 lines, 94 tokens)
server/api_v2.py [2971:51 - 2984:38]
Clone found (python)
- server/api_v2.py [2939:5 - 2951:40] (13 lines, 78 tokens)
server/api_v2.py [3258:5 - 3270:15]
Clone found (python)
- server/api_v2.py [3081:53 - 3086:76] (6 lines, 51 tokens)
server/api_v2.py [3152:52 - 3157:76]
Clone found (python)
- server/api_v2.py [3081:53 - 3086:76] (6 lines, 51 tokens)
server/api_v2.py [3193:50 - 3198:76]
Clone found (python)
- server/api_v2.py [3081:53 - 3086:76] (6 lines, 51 tokens)
server/api_v2.py [3297:54 - 3302:76]
Clone found (python)
- server/api_v2.py [3081:53 - 3086:76] (6 lines, 51 tokens)
server/api_v2.py [3345:54 - 3350:76]
Clone found (python)
- server/api_v2_agents.py [57:5 - 63:15] (7 lines, 52 tokens)
server/tasks_api.py [731:5 - 737:7]
Clone found (python)
- server/api_v2_sessions.py [302:96 - 314:81] (13 lines, 74 tokens)
server/api_v2_sessions.py [1121:60 - 1133:81]
Clone found (python)
- server/api_v2_sessions.py [318:5 - 329:15] (12 lines, 51 tokens)
server/api_v2_sessions.py [609:9 - 620:19]
Clone found (python)
- server/api_v2_sessions.py [605:9 - 620:19] (16 lines, 79 tokens)
server/api_v2_sessions.py [1131:5 - 1146:15]
Clone found (python)
- server/api_v2_sessions.py [606:27 - 620:19] (15 lines, 67 tokens)
server/api_v2_sessions.py [818:19 - 832:15]
Clone found (python)
- server/session_models.py [296:25 - 308:46] (13 lines, 76 tokens)
server/session_models.py [352:29 - 364:42]
Clone found (python)
- server/session_models.py [321:21 - 337:8] (17 lines, 58 tokens)
server/session_models.py [375:17 - 391:8]
Clone found (python)
- server/session_step.py [602:5 - 612:8] (11 lines, 58 tokens)
server/session_step.py [1308:5 - 1318:8]
Clone found (python)
- server/tasks_api.py [490:73 - 499:64] (10 lines, 53 tokens)
server/tasks_api.py [503:51 - 512: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 [57:24 - 79:8] (23 lines, 135 tokens)
util/_telemetry.py [326:34 - 348:8]
Clone found (python)
- telemetry.py [110:9 - 119:45] (10 lines, 60 tokens)
telemetry.py [509:5 - 518:41]
Clone found (python)
- tools/_browser_playwright.py [749:9 - 764:8] (16 lines, 89 tokens)
tools/browser.py [1039:9 - 1054:8]
Clone found (python)
- tools/_browser_playwright.py [766:60 - 774:62] (9 lines, 59 tokens)
tools/browser.py [957:68 - 965:62]
Clone found (python)
- tools/_browser_playwright.py [887:69 - 900:27] (14 lines, 77 tokens)
tools/browser.py [1136:44 - 1149:27]
Clone found (python)
- tools/_browser_playwright.py [1070:1 - 1085:43] (16 lines, 61 tokens)
tools/browser.py [1263:1 - 1278:43]
Clone found (python)
- tools/autocompact/engine.py [186:13 - 195:18] (10 lines, 57 tokens)
tools/autocompact/engine.py [237:17 - 246: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 [1479:13 - 1496:14] (18 lines, 71 tokens)
tools/computer.py [1868:13 - 1885:14]
Clone found (python)
- tools/computer.py [1625:13 - 1644:37] (20 lines, 93 tokens)
tools/computer_transport.py [260:13 - 279:37]
Clone found (python)
- tools/computer.py [1657:53 - 1668:30] (12 lines, 52 tokens)
tools/computer.py [1684:49 - 1695:30]
Clone found (python)
- tools/computer.py [1744:9 - 1753:19] (10 lines, 50 tokens)
tools/computer.py [1838:9 - 1847:19]
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 [789:26 - 796:32] (8 lines, 57 tokens)
tools/patch_anchored.py [109:26 - 116:32]
Clone found (python)
- tools/hashline_edit.py [789:26 - 796: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 [114:52 - 121:61] (8 lines, 51 tokens)
tools/precommit.py [125:67 - 132:61]
Clone found (python)
- tools/shell.py [590:29 - 602:11] (13 lines, 66 tokens)
tools/shell.py [755:26 - 767:11]
Clone found (python)
- tools/shell.py [666:37 - 682:75] (17 lines, 63 tokens)
tools/shell.py [834:37 - 850:75]
Clone found (python)
- tools/shell.py [1211:5 - 1221:31] (11 lines, 55 tokens)
tools/shell.py [1262:5 - 1272:31]
Clone found (python)
- tools/shell_background.py [71:24 - 79:27] (9 lines, 57 tokens)
tools/shell_background.py [89:39 - 97:23]
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 [137:22 - 142:11] (6 lines, 50 tokens)
tui/app.py [239:25 - 244:11]
Clone found (python)
- tui/app.py [162:5 - 171:4] (10 lines, 79 tokens)
tui/app.py [257:5 - 266: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)
- 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 │ 13 │ 1583 │ 3247 │ 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 │ 8 │ 1448 │ 8909 │ 0 │ 0 (0.00%) │ 0 (0.00%) │
├────────────┼────────────────┼─────────────┼──────────────┼──────────────┼──────────────────┼───────────────────┤
│ markup │ 2 │ 482 │ 3220 │ 0 │ 0 (0.00%) │ 0 (0.00%) │
├────────────┼────────────────┼─────────────┼──────────────┼──────────────┼──────────────────┼───────────────────┤
│ python │ 448 │ 169286 │ 795737 │ 167 │ 2019 (1.19%) │ 11614 (1.46%) │
├────────────┼────────────────┼─────────────┼──────────────┼──────────────┼──────────────────┼───────────────────┤
│ text │ 2 │ 527 │ 267 │ 0 │ 0 (0.00%) │ 0 (0.00%) │
├────────────┼────────────────┼─────────────┼──────────────┼──────────────┼──────────────────┼───────────────────┤
│ txt │ 1 │ 146 │ 245 │ 0 │ 0 (0.00%) │ 0 (0.00%) │
├────────────┼────────────────┼─────────────┼──────────────┼──────────────┼──────────────────┼───────────────────┤
│ yaml │ 1 │ 82 │ 151 │ 0 │ 0 (0.00%) │ 0 (0.00%) │
├────────────┼────────────────┼─────────────┼──────────────┼──────────────┼──────────────────┼───────────────────┤
│ Total: │ 477 │ 174346 │ 816234 │ 167 │ 2019 (1.16%) │ 11614 (1.42%) │
└────────────┴────────────────┴─────────────┴──────────────┴──────────────┴──────────────────┴───────────────────┘
Found 167 clones.
time: 325.831ms
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