import { describe, expect, it } from "vitest"; import { createCli } from "./cli.js"; describe("canonical CLI surface", () => { it("shows workspace and heartbeat commands while hiding worktree compatibility", () => { const cli = createCli(); const help = cli.helpInformation(); expect(help).toContain("workspace"); expect(help).toContain("heartbeat"); expect(help).not.toContain("worktree"); }); it("names explicit workspace creation without exposing older syntax", () => { const run = createCli().commands.find((command) => command.name() === "run"); const help = run?.helpInformation(); expect(help).toContain("--new-workspace "); expect(help).not.toContain("--isolation"); expect(help).not.toContain("--worktree "); }); it("offers the worktree creation options on run", () => { const run = createCli().commands.find((command) => command.name() === "run"); const help = run?.helpInformation(); expect(help).toContain("--worktree-mode "); expect(help).toContain("--worktree-slug "); expect(help).toContain("--new-branch "); expect(help).toContain("--branch "); expect(help).toContain("--pr-number "); expect(help).toContain("--forge "); }); it("uses background for execution and reserves detach for ownership", () => { const run = createCli().commands.find((command) => command.name() === "run"); expect(run?.helpInformation()).toContain("--background"); expect(run?.helpInformation()).not.toContain("--detach"); }); it("offers opening an existing agent in the desktop app", () => { const agent = createCli().commands.find((command) => command.name() === "agent"); const open = agent?.commands.find((command) => command.name() === "open"); expect(open?.helpInformation()).toContain(""); expect(open?.helpInformation()).toContain("--server "); }); });