Best-effort categorisation by tool-name prefix. Matches how the codebase already groups handlers (`graph`, `info`, `git`, `analysis`, `health`, `edit`, `memory`). Tools that don't match any prefix fall under `other`.
(def: &ToolDefinition)
| 386 | /// already groups handlers (`graph`, `info`, `git`, `analysis`, `health`, |
| 387 | /// `edit`, `memory`). Tools that don't match any prefix fall under `other`. |
| 388 | fn group_for(def: &ToolDefinition) -> &'static str { |
| 389 | let n = def.name.as_str(); |
| 390 | if n.starts_with("tracedecay_branch_") |
| 391 | || n == "tracedecay_commit_context" |
| 392 | || n == "tracedecay_pr_context" |
| 393 | || n == "tracedecay_changelog" |
| 394 | || n == "tracedecay_diff_context" |
| 395 | || n == "tracedecay_affected" |
| 396 | { |
| 397 | "git & history" |
| 398 | } else if n == "tracedecay_str_replace" |
| 399 | || n == "tracedecay_multi_str_replace" |
| 400 | || n == "tracedecay_insert_at" |
| 401 | || n == "tracedecay_ast_grep_rewrite" |
| 402 | || n == "tracedecay_replace_symbol" |
| 403 | || n == "tracedecay_insert_at_symbol" |
| 404 | { |
| 405 | "edit" |
| 406 | } else if n == "tracedecay_fact_store" |
| 407 | || n == "tracedecay_fact_feedback" |
| 408 | || n == "tracedecay_memory_status" |
| 409 | || n == "tracedecay_session_start" |
| 410 | || n == "tracedecay_session_end" |
| 411 | { |
| 412 | "memory & session" |
| 413 | } else if n == "tracedecay_health" |
| 414 | || n == "tracedecay_runtime" |
| 415 | || n == "tracedecay_dsm" |
| 416 | || n == "tracedecay_test_risk" |
| 417 | || n == "tracedecay_test_map" |
| 418 | || n == "tracedecay_gini" |
| 419 | || n == "tracedecay_dependency_depth" |
| 420 | || n == "tracedecay_redundancy" |
| 421 | { |
| 422 | "health" |
| 423 | } else if n == "tracedecay_callers" |
| 424 | || n == "tracedecay_callees" |
| 425 | || n == "tracedecay_callers_for" |
| 426 | || n == "tracedecay_call_chain" |
| 427 | || n == "tracedecay_impact" |
| 428 | || n == "tracedecay_file_dependents" |
| 429 | || n == "tracedecay_by_qualified_name" |
| 430 | || n == "tracedecay_signature" |
| 431 | || n == "tracedecay_impls" |
| 432 | || n == "tracedecay_implementations" |
| 433 | || n == "tracedecay_derives" |
| 434 | || n == "tracedecay_similar" |
| 435 | || n == "tracedecay_rename_preview" |
| 436 | || n == "tracedecay_find_exact_symbol" |
| 437 | || n == "tracedecay_type_hierarchy" |
| 438 | { |
| 439 | "graph" |
| 440 | } else if n == "tracedecay_diagnose" |
| 441 | || n == "tracedecay_diagnostics" |
| 442 | || n == "tracedecay_run_affected_tests" |
| 443 | { |
| 444 | "workflow" |
| 445 | } else if n == "tracedecay_dead_code" |
no test coverage detected