mirror of
https://github.com/getpaseo/paseo.git
synced 2026-10-22 09:12:44 +00:00
* fix(plugins): clarify upgrade diagnostics Keep plugin inspection network-free and consolidate runtime, source, and installed revision details under plugin ls. Legacy entry failures now explain the required v0.8 migration in user-facing language. * test(cli): align hidden plugin status command
99 lines
4.1 KiB
TypeScript
99 lines
4.1 KiB
TypeScript
import { describe, expect, it } from "vitest";
|
|
import { createCli } from "./cli.js";
|
|
|
|
describe("canonical CLI surface", () => {
|
|
it("offers daemon host selection as a global option", () => {
|
|
expect(createCli().helpInformation()).toContain("--host <host>");
|
|
});
|
|
|
|
it("shows project, workspace, and heartbeat commands while hiding worktree compatibility", () => {
|
|
const cli = createCli();
|
|
const help = cli.helpInformation();
|
|
expect(help).toContain("project");
|
|
expect(help).toContain("workspace");
|
|
expect(help).toContain("heartbeat");
|
|
expect(help).not.toContain("worktree");
|
|
});
|
|
|
|
it("offers identical top-level and daemon config reload commands", () => {
|
|
const cli = createCli();
|
|
const reload = cli.commands.find((command) => command.name() === "reload");
|
|
const daemon = cli.commands.find((command) => command.name() === "daemon");
|
|
const nestedReload = daemon?.commands.find((command) => command.name() === "reload");
|
|
|
|
expect(reload?.helpInformation()).toContain("--host <host>");
|
|
expect(reload?.helpInformation()).toContain("--json");
|
|
expect(nestedReload?.helpInformation()).toContain("--host <host>");
|
|
expect(nestedReload?.helpInformation()).toContain("--json");
|
|
});
|
|
|
|
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 <local|worktree>");
|
|
expect(help).not.toContain("--isolation");
|
|
expect(help).not.toContain("--worktree <name>");
|
|
});
|
|
|
|
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 <mode>");
|
|
expect(help).toContain("--worktree-slug <slug>");
|
|
expect(help).toContain("--new-branch <name>");
|
|
expect(help).toContain("--branch <name>");
|
|
expect(help).toContain("--pr-number <n>");
|
|
expect(help).toContain("--forge <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 thinking configuration when running, updating, and scheduling agents", () => {
|
|
const cli = createCli();
|
|
const run = cli.commands.find((command) => command.name() === "run");
|
|
const agent = cli.commands.find((command) => command.name() === "agent");
|
|
const update = agent?.commands.find((command) => command.name() === "update");
|
|
const schedule = cli.commands.find((command) => command.name() === "schedule");
|
|
const scheduleCreate = schedule?.commands.find((command) => command.name() === "create");
|
|
|
|
expect(run?.helpInformation()).toContain("--thinking <id>");
|
|
expect(update?.helpInformation()).toContain("--thinking <id>");
|
|
expect(scheduleCreate?.helpInformation()).toContain("--thinking <id>");
|
|
});
|
|
|
|
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("<agent-id>");
|
|
expect(open?.helpInformation()).toContain("--server <server-id>");
|
|
});
|
|
|
|
it("offers the complete local plugin lifecycle", () => {
|
|
const plugin = createCli().commands.find((command) => command.name() === "plugin");
|
|
|
|
expect(plugin?.commands.map((command) => command.name())).toEqual([
|
|
"init",
|
|
"ls",
|
|
"status",
|
|
"logs",
|
|
"install",
|
|
"update",
|
|
"reload",
|
|
"enable",
|
|
"disable",
|
|
"remove",
|
|
]);
|
|
expect(
|
|
plugin?.commands.find((command) => command.name() === "init")?.helpInformation(),
|
|
).toContain("--id <id>");
|
|
expect(
|
|
plugin?.commands.find((command) => command.name() === "install")?.helpInformation(),
|
|
).toContain("--id <id>");
|
|
});
|
|
});
|