Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions changelog.d/herdr-core-antigravity-name.md
Original file line number Diff line number Diff line change
@@ -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`.
9 changes: 5 additions & 4 deletions server/herdr-core/snapshot.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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", () => {
Expand Down
4 changes: 2 additions & 2 deletions server/herdr-core/snapshot.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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<string, string> = { "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<string, string> = { "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 {
Expand Down
Loading