1010from aider .urls import github_issues
1111from aider .versioncheck import VERSION_CHECK_FNAME
1212
13+ # Global variable to store resolved args data for error reporting
14+ resolved_args_data = None
15+
1316FENCE = "`" * 3
1417
1518
@@ -34,6 +37,54 @@ def get_git_info():
3437 return "Git information unavailable"
3538
3639
40+ def format_args_for_reporting (args ):
41+ """
42+ Format args data for error reporting, removing sensitive keys and collapsing MCP servers.
43+ """
44+ if not args :
45+ return "No args data available"
46+
47+ # Create a copy of the args namespace as a dictionary
48+ args_dict = vars (args ).copy ()
49+
50+ # Remove any keys containing "key" (case insensitive)
51+ keys_to_remove = [key for key in args_dict .keys () if "key" in key .lower ()]
52+ for key in keys_to_remove :
53+ args_dict .pop (key , None )
54+
55+ # Handle mcp_servers - collapse into just a list of server names
56+ if "mcp_servers" in args_dict :
57+ mcp_servers = args_dict ["mcp_servers" ]
58+ if isinstance (mcp_servers , str ):
59+ try :
60+ import json
61+
62+ config = json .loads (mcp_servers )
63+ if "mcpServers" in config :
64+ server_names = list (config ["mcpServers" ].keys ())
65+ args_dict ["mcp_servers" ] = server_names
66+ except (json .JSONDecodeError , AttributeError ):
67+ # If parsing fails, keep the original value
68+ pass
69+
70+ # Format the output line by line
71+ lines = ["Configuration:" ]
72+ for key , value in sorted (args_dict .items ()):
73+ lines .append (f"{ key } : { value } " )
74+
75+ return "\n " .join (lines )
76+
77+
78+ def get_args_error_data ():
79+ global resolved_args_data
80+ return resolved_args_data
81+
82+
83+ def set_args_error_data (args ):
84+ global resolved_args_data
85+ resolved_args_data = args
86+
87+
3788def report_github_issue (issue_text , title = None , confirm = True ):
3889 """
3990 Compose a URL to open a new GitHub issue with the given text prefilled,
@@ -50,9 +101,18 @@ def report_github_issue(issue_text, title=None, confirm=True):
50101 python_info = get_python_info () + "\n "
51102 os_info = get_os_info () + "\n "
52103 git_info = get_git_info () + "\n "
104+ args_info = format_args_for_reporting (get_args_error_data ()) + "\n "
53105
54106 system_info = (
55- version_info + python_version + platform_info + python_info + os_info + git_info + "\n "
107+ version_info
108+ + python_version
109+ + platform_info
110+ + python_info
111+ + os_info
112+ + git_info
113+ + "\n "
114+ + args_info
115+ + "\n "
56116 )
57117
58118 issue_text = system_info + issue_text
0 commit comments