import json
import sys
import os

# Add project root and src/ to sys.path
project_root = os.path.abspath(os.path.join(os.path.dirname(__file__), ".."))
sys.path.append(project_root)
sys.path.append(os.path.join(project_root, "src"))

try:
 import mcp_client
except ImportError as e:
# Print the error to stderr to diagnose
 print(f"ImportError in discovery: {e}", file=sys.stderr)
 print("[]")
 sys.exit(0)

def main() -> None:
 specs = list(mcp_client.MCP_TOOL_SPECS)
 # Add run_powershell (manually define to match ai_client.py)
 specs.append({
   "name": "run_powershell",
   "description": (
    "Run a PowerShell script within the project base_dir. "
    "Use this to create, edit, rename, or delete files and directories. "
    "The working directory is set to base_dir automatically. "
    "stdout and stderr are returned to you as the result."
   ),
   "parameters": {
    "type": "object",
    "properties": {
     "script": {
      "type": "string",
      "description": "The PowerShell script to execute."
     }
    },
    "required": ["script"]
   }
  })
 # Rename 'parameters' to 'parametersJsonSchema' for Gemini CLI
 for spec in specs:
  if "parameters" in spec:
   spec["parametersJsonSchema"] = spec.pop("parameters")
   # Output as JSON array of FunctionDeclarations
 print(json.dumps(specs, indent=2))

if __name__ == "__main__":
 main()
