Files
2026-07-13 12:49:17 +08:00

60 lines
3.1 KiB
C#

using System;
using System.Collections.Generic;
using System.IO;
using System.Runtime.InteropServices;
using MCPForUnity.Editor.Constants;
using MCPForUnity.Editor.Models;
using UnityEditor;
namespace MCPForUnity.Editor.Clients.Configurators
{
public class AntigravityConfigurator : JsonFileMcpConfigurator
{
// Antigravity 2.x migrated its MCP config from ~/.gemini/antigravity/mcp_config.json
// (where Antigravity also stores its own runtime state — conversations, scratch, etc.)
// to a dedicated ~/.gemini/config/mcp_config.json. The migration drops a `.migrated`
// marker in the new location and renames the previous folder to `antigravity-backup`.
// The old path is no longer read by Antigravity at all, so writing there silently
// fails to register UnityMCP on every modern install.
public AntigravityConfigurator() : base(new McpClient
{
name = "Antigravity 2.0",
windowsConfigPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), ".gemini", "config", "mcp_config.json"),
macConfigPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), ".gemini", "config", "mcp_config.json"),
linuxConfigPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), ".gemini", "config", "mcp_config.json"),
HttpUrlProperty = "serverUrl",
DefaultUnityFields = { { "disabled", false } },
StripEnvWhenNotRequired = true
})
{ }
// Detect Antigravity itself, not just its config dir. ~/.gemini/config/ is created on
// first launch of Antigravity 2.x, so the inherited ParentDirectoryExists check
// false-negatives on a fresh install where the user hasn't opened Antigravity yet.
// ~/.antigravity/ is created by the installer (VS-Code-style support dir) and the
// macOS app bundle is dropped by the installer; either is conclusive evidence that
// Antigravity is installed, regardless of whether it has been launched.
public override bool IsInstalled
{
get
{
string home = Environment.GetFolderPath(Environment.SpecialFolder.UserProfile);
if (Directory.Exists(Path.Combine(home, ".antigravity"))) return true;
if (Directory.Exists(Path.Combine(home, ".gemini", "config"))) return true;
if (Directory.Exists(Path.Combine(home, ".gemini", "antigravity"))) return true;
if (RuntimeInformation.IsOSPlatform(OSPlatform.OSX))
return Directory.Exists("/Applications/Antigravity.app");
return false;
}
}
public override IList<string> GetInstallationSteps() => new List<string>
{
"Open Antigravity 2.0",
"Click the more_horiz menu in the Agent pane > MCP Servers",
"Select 'Install' for Unity MCP or use the Configure button above",
"Restart Antigravity if necessary"
};
}
}