authorgravatar for ishaanko.mail@gmail.comIshaan Kothari <ishaanko.mail@gmail.com> 2026-09-25 20:55:15-07:00
committergravatar for noreply@github.comGitHub <noreply@github.com> 2026-09-25 22:55:15-05:00
log1e844a3d0647e9d2ca87d91b2fab5833bba19d08
treea7565db7b3e9108cbc554034564bc91619561f5f
parent4408bf5a4fb0c97373d57abfdf6f541e315b1e67
signature Signed by PGP key B5690EEEBB952194

fix(editors): stop treating the agy CLI as the Antigravity IDE (#7079)


3 files changed, 61 insertions(+), 1 deletions(-)

apps/server/src/process/externalLauncher.test.ts+51
...@@ -923,6 +923,18 @@ it.effect("discovers editors through the service API", () =>...@@ -923,6 +923,18 @@ it.effect("discovers editors through the service API", () =>
923);923);
924924
925for (const { platform, installPath, editor, args } of [925for (const { platform, installPath, editor, args } of [
926 {
927 platform: "darwin",
928 installPath: "Applications/Antigravity IDE.app/Contents/Resources/app/bin/antigravity-ide",
929 editor: "antigravity",
930 args: ["--goto", "/workspace with spaces/file.ts:12:4"],
931 },
932 {
933 platform: "linux",
934 installPath: ".local/bin/antigravity-ide",
935 editor: "antigravity",
936 args: ["--goto", "/workspace with spaces/file.ts:12:4"],
937 },
926 {938 {
927 platform: "darwin",939 platform: "darwin",
928 installPath: "Applications/Cursor.app/Contents/Resources/app/bin/code",940 installPath: "Applications/Cursor.app/Contents/Resources/app/bin/code",
...@@ -1028,6 +1040,45 @@ for (const { platform, installPath, editor, args } of [...@@ -1028,6 +1040,45 @@ for (const { platform, installPath, editor, args } of [
1028 );1040 );
1029}1041}
10301042
1043// `agy` is the standalone Antigravity CLI, which installs to ~/.local/bin on
1044// macOS and Linux and to its own bin folder on Windows. It is not the IDE.
1045for (const { platform, installPath, onPath } of [
1046 { platform: "darwin", installPath: ".local/bin/agy", onPath: true },
1047 { platform: "linux", installPath: ".local/bin/agy", onPath: false },
1048 { platform: "win32", installPath: "agy/bin/agy.cmd", onPath: true },
1049] as const) {
1050 it.effect.skipIf(windowsHost && platform !== "win32")(
1051 `does not report the agy CLI as the Antigravity IDE on ${platform}`,
1052 () =>
1053 Effect.gen(function* () {
1054 const fs = yield* FileSystem.FileSystem;
1055 const path = yield* Path.Path;
1056 const home = yield* fs.makeTempDirectoryScoped({ prefix: "t3-agy-cli-" });
1057 const executable = path.join(home, installPath);
1058 yield* fs.makeDirectory(path.dirname(executable), { recursive: true });
1059 yield* fs.writeFileString(executable, "#!/bin/sh\n");
1060 yield* fs.chmod(executable, 0o755);
1061 const editors = yield* Effect.gen(function* () {
1062 const launcher = yield* ExternalLauncher.ExternalLauncher;
1063 return yield* launcher.resolveAvailableEditors();
1064 }).pipe(
1065 Effect.provide(
1066 testLayer({
1067 platform,
1068 env: {
1069 HOME: home,
1070 LOCALAPPDATA: home,
1071 PATH: onPath ? path.dirname(executable) : path.join(home, "empty"),
1072 PATHEXT: ".COM;.EXE;.BAT;.CMD",
1073 },
1074 }),
1075 ),
1076 );
1077 assert.notInclude(editors, "antigravity");
1078 }).pipe(Effect.scoped, Effect.provide(NodeServices.layer)),
1079 );
1080}
1081
1031it.effect.skipIf(windowsHost)("ignores unusable app bundles and keeps PATH launchers first", () =>1082it.effect.skipIf(windowsHost)("ignores unusable app bundles and keeps PATH launchers first", () =>
1032 Effect.gen(function* () {1083 Effect.gen(function* () {
1033 const fs = yield* FileSystem.FileSystem;1084 const fs = yield* FileSystem.FileSystem;
packages/contracts/src/editor.ts+8-1
...@@ -59,7 +59,14 @@ export const EDITORS = [...@@ -59,7 +59,14 @@ export const EDITORS = [
59 launchStyle: "direct-path",59 launchStyle: "direct-path",
60 remoteScheme: "zed",60 remoteScheme: "zed",
61 },61 },
62 { id: "antigravity", label: "Antigravity", commands: ["agy"], launchStyle: "goto" },62 {
63 id: "antigravity",
64 label: "Antigravity",
65 // `agy` is the standalone Antigravity CLI, not the IDE. The IDE bundle
66 // ships `antigravity-ide`, so it comes first for install-folder lookups.
67 commands: ["antigravity-ide", "agy-ide"],
68 launchStyle: "goto",
69 },
63 { id: "idea", label: "IntelliJ IDEA", commands: ["idea"], launchStyle: "line-column" },70 { id: "idea", label: "IntelliJ IDEA", commands: ["idea"], launchStyle: "line-column" },
64 { id: "aqua", label: "Aqua", commands: ["aqua"], launchStyle: "line-column" },71 { id: "aqua", label: "Aqua", commands: ["aqua"], launchStyle: "line-column" },
65 { id: "clion", label: "CLion", commands: ["clion"], launchStyle: "line-column" },72 { id: "clion", label: "CLion", commands: ["clion"], launchStyle: "line-column" },
packages/shared/src/editor.ts+2
...@@ -12,6 +12,8 @@ type Editor = (typeof EDITORS)[number];...@@ -12,6 +12,8 @@ type Editor = (typeof EDITORS)[number];
12const installNames: Partial<Record<Editor["id"], ReadonlyArray<string>>> = {12const installNames: Partial<Record<Editor["id"], ReadonlyArray<string>>> = {
13 vscode: ["Visual Studio Code"],13 vscode: ["Visual Studio Code"],
14 "vscode-insiders": ["Visual Studio Code - Insiders"],14 "vscode-insiders": ["Visual Studio Code - Insiders"],
15 // `Antigravity.app` is the separate Hub, not the IDE.
16 antigravity: ["Antigravity IDE"],
15 idea: ["IntelliJ IDEA", "IntelliJ IDEA CE", "IntelliJ IDEA Ultimate"],17 idea: ["IntelliJ IDEA", "IntelliJ IDEA CE", "IntelliJ IDEA Ultimate"],
16 pycharm: ["PyCharm", "PyCharm CE"],18 pycharm: ["PyCharm", "PyCharm CE"],
17 rider: ["Rider", "JetBrains Rider"],19 rider: ["Rider", "JetBrains Rider"],