From 10dab33a5e931d752b6b036a20c48527bf74dfd9 Mon Sep 17 00:00:00 2001 From: grandprixgp <10516419+grandprixgp@users.noreply.github.com> Date: Mon, 2 Nov 2026 09:04:31 +0000 Subject: [PATCH] fix(herdr-core): read Antigravity's antigravity as agy, so its pane gets its conversation --- changelog.d/herdr-core-antigravity-name.md | 4 ++++ server/herdr-core/snapshot.test.ts | 9 +++++---- server/herdr-core/snapshot.ts | 4 ++-- 3 files changed, 11 insertions(+), 6 deletions(-) create mode 100644 changelog.d/herdr-core-antigravity-name.md diff --git a/changelog.d/herdr-core-antigravity-name.md b/changelog.d/herdr-core-antigravity-name.md new file mode 100644 index 0000000000..2b139238da --- /dev/null +++ b/changelog.d/herdr-core-antigravity-name.md @@ -0,0 +1,4 @@ +### Fixed +- On the herdr-core runtime, a pane running Antigravity shows its conversation, along with + everything else Ovis does for Agy panes: herdr-core names it `antigravity`, and Ovis now reads + that as `agy`. diff --git a/server/herdr-core/snapshot.test.ts b/server/herdr-core/snapshot.test.ts index 2ce243886c..acaa3afc26 100644 --- a/server/herdr-core/snapshot.test.ts +++ b/server/herdr-core/snapshot.test.ts @@ -58,19 +58,20 @@ describe("buildSnapshot", () => { // an error says nothing about the turn having finished: no badge, never done it("takes each pane's agent and status from what its program reported, and rolls the most pressing up", () => { - const layout = { spaces: [{ id: "s1", name: "a", tabs: [{ id: "s1t1", name: "", root: { type: "row", id: "r", children: [block("t1"), block("t2"), block("t3"), block("t4"), block("t5")] } }] }] }; + const layout = { spaces: [{ id: "s1", name: "a", tabs: [{ id: "s1t1", name: "", root: { type: "row", id: "r", children: [block("t1"), block("t2"), block("t3"), block("t4"), block("t5"), block("t6")] } }] }] }; const snapshot = buildSnapshot([ terminal("t1", { status: { app: "claude", state: "working" } }), terminal("t2", { status: { app: "codex", state: "blocked" } }), terminal("t3", { status: { app: "omp", state: "error" } }), terminal("t4"), - // herdr-core names Claude Code `claude-code`; the rest of the server knows it as herdr's `claude` + // herdr-core names Claude Code `claude-code` and Antigravity `antigravity`; the rest of the server knows them as herdr's `claude` and `agy` terminal("t5", { status: { app: "claude-code", state: "idle" } }), + terminal("t6", { status: { app: "antigravity", state: "idle" } }), ], layout, "0.1.14"); - expect(snapshot.panes.map((p) => [p.agent, p.agent_status])).toEqual([["claude", "working"], ["codex", "blocked"], ["omp", "unknown"], [null, "unknown"], ["claude", "idle"]]); + expect(snapshot.panes.map((p) => [p.agent, p.agent_status])).toEqual([["claude", "working"], ["codex", "blocked"], ["omp", "unknown"], [null, "unknown"], ["claude", "idle"], ["agy", "idle"]]); expect(snapshot.tabs[0]!.agent_status).toBe("blocked"); expect(snapshot.workspaces[0]!.agent_status).toBe("blocked"); - expect(snapshot.agents.map((a) => [a.pane_id, a.agent])).toEqual([["t1", "claude"], ["t2", "codex"], ["t3", "omp"], ["t5", "claude"]]); + expect(snapshot.agents.map((a) => [a.pane_id, a.agent])).toEqual([["t1", "claude"], ["t2", "codex"], ["t3", "omp"], ["t5", "claude"], ["t6", "agy"]]); }); it("gives each pane its terminal's own grid at its place in the tab's splits, so no two panes overlap", () => { diff --git a/server/herdr-core/snapshot.ts b/server/herdr-core/snapshot.ts index df7363629f..a3aac65bd1 100644 --- a/server/herdr-core/snapshot.ts +++ b/server/herdr-core/snapshot.ts @@ -68,8 +68,8 @@ export function agentStatusOf(status: HcStatus | null | undefined): AgentStatus } } -/** herdr-core's names for agents herdr names otherwise: the rest of the server knows herdr's (`claude`). */ -const HERDR_AGENT_NAMES: Record = { "claude-code": "claude" }; +/** herdr-core's names for agents herdr names otherwise: the rest of the server knows herdr's (`claude`, `agy`). */ +const HERDR_AGENT_NAMES: Record = { "claude-code": "claude", antigravity: "agy" }; /** The agent a status names, by herdr's name; a program that never reported one runs none herdr would see. */ export function agentOfStatus(status: HcStatus | null | undefined): string | null {