pub(super) fn graph_fields(tool: &str) -> Option<&'static [&'static str]> {
match tool {
"get_neighbors" => Some(&[
"relation_filter",
"max_results",
"cursor",
"response_detail",
]),
"query_graph" => Some(&[
"question",
"mode",
"depth",
"max_nodes",
"context_filter",
"seed_files",
"seed_symbols",
"relation_filter",
"flow_direction",
"augment_seeds",
"include_classified",
"include_low_signal",
"token_budget",
]),
"graph_stats" => Some(&["include_capabilities"]),
"god_nodes" => Some(&["top_n", "include_classified"]),
"shortest_path" => Some(&["max_hops"]),
"get_community" => Some(&["max_nodes", "cursor"]),
"list_communities" => Some(&["top_n", "include_non_product"]),
"module_map" => Some(&["top_n", "depth", "include_non_product"]),
"build_graph" => Some(&["max_members"]),
_ => None,
}
}
pub(super) fn change_fields(tool: &str) -> Option<&'static [&'static str]> {
match tool {
"get_dependents" => Some(&[
"depth",
"max_nodes",
"precision",
"max_references",
"timeout_ms",
"include_container_importers",
]),
"change_impact" => Some(&[
"base",
"base_ref",
"head_ref",
"diff",
"files",
"target",
"depth",
"max_nodes",
"precision",
"max_references",
"timeout_ms",
]),
"git_history" => Some(&[
"revision",
"months",
"max_commits",
"min_pair_count",
"max_pairs",
"top_n",
"first_parent",
"include_analytics",
"token_budget",
]),
"git_read_blob" => Some(&["oid", "revision", "path", "max_bytes", "token_budget"]),
"cross_repo_git" => Some(&[
"action",
"revision",
"base_ref",
"head_ref",
"max_commits",
"first_parent",
"left",
"right",
]),
"verified_change" => Some(&[
"phase",
"base_ref",
"head_ref",
"diff",
"files",
"precision",
"max_symbols",
"impact_depth",
"max_impact_nodes",
"data_flow_depth",
"max_data_flow_edges",
"duplicate_ratchet",
"api_contract",
"tests",
"run_tests",
"test_timeout_ms",
]),
"select_tests" => Some(&[
"base",
"base_ref",
"head_ref",
"diff",
"files",
"target",
"depth",
"max_nodes",
"max_tests",
"precision",
]),
"graph_diff" => Some(&[
"base_ref",
"head_ref",
"path",
"detail",
"max_results",
"token_budget",
]),
"prepare_change" => Some(&["intent"]),
"verify_capabilities" => Some(&["max_results", "include_tests", "include_classified"]),
_ => None,
}
}
pub(super) fn source_and_api_fields(tool: &str) -> Option<&'static [&'static str]> {
match tool {
"trace_api_contract" => Some(&[
"transport",
"method",
"path",
"changed_files",
"client_names",
"include_tests",
"include_classified",
"max_impact_depth",
"max_endpoints",
"max_matches",
"max_source_files",
"max_source_file_bytes",
"max_affected_files",
"top_n",
"client_wrappers",
"auto_discover_wrappers",
"runtime_config",
"runtime_evidence_files",
"runtime_evidence_max_age_hours",
"response_detail",
"page_size",
"per_item_limit",
"cursor",
]),
"map_stacktrace" => Some(&["max_frames"]),
"search_code" => Some(&[
"is_regex",
"glob",
"before",
"after",
"max_results",
"token_budget",
]),
"read_source" => Some(&[
"label",
"path",
"start_line",
"before",
"after",
"token_budget",
]),
"list_endpoints" => Some(&["method", "path", "max_results", "include_classified"]),
"trace_endpoint" => Some(&[
"method",
"match",
"handler_file",
"max_depth",
"max_nodes",
"max_excerpts",
"context_lines",
"include_classified",
]),
_ => None,
}
}