* Add metrics collection and terminal performance tests * feat: add loop, schedule, and chat commands with slash-namespaced RPC Introduce three new server-side features with CLI command groups: - `paseo loop` — iterative agent execution with verify-check/verify-prompt - `paseo schedule` — recurring tasks on interval or cron cadence - `paseo chat` — chat rooms for agent-to-agent coordination All features use new slash-namespaced RPC methods (e.g. `loop/run`, `schedule/create`, `chat/post`) instead of flat message types, backed by file-based persistence and wired through the existing WebSocket session dispatch. * test: stabilize loop schedule chat rollout
69 lines
2.3 KiB
TypeScript
69 lines
2.3 KiB
TypeScript
import { Command } from "commander";
|
|
import { withOutput } from "../../output/index.js";
|
|
import { addJsonAndDaemonHostOptions } from "../../utils/command-options.js";
|
|
import { runCreateCommand } from "./create.js";
|
|
import { runLsCommand } from "./ls.js";
|
|
import { runInspectCommand } from "./inspect.js";
|
|
import { runLogsCommand } from "./logs.js";
|
|
import { runPauseCommand } from "./pause.js";
|
|
import { runResumeCommand } from "./resume.js";
|
|
import { runDeleteCommand } from "./delete.js";
|
|
|
|
export function createScheduleCommand(): Command {
|
|
const schedule = new Command("schedule").description("Manage recurring schedules");
|
|
|
|
addJsonAndDaemonHostOptions(
|
|
schedule
|
|
.command("create")
|
|
.description("Create a schedule")
|
|
.argument("<prompt>", "Prompt to run on the schedule")
|
|
.option("--every <duration>", "Fixed interval cadence (for example: 5m, 1h)")
|
|
.option("--cron <expr>", "Cron cadence expression")
|
|
.option("--name <name>", "Optional schedule name")
|
|
.option("--target <self|new-agent|agent-id>", "Run target")
|
|
.option("--max-runs <n>", "Maximum number of runs")
|
|
.option("--expires-in <duration>", "Time to live for the schedule"),
|
|
).action(withOutput(runCreateCommand));
|
|
|
|
addJsonAndDaemonHostOptions(
|
|
schedule.command("ls").description("List schedules"),
|
|
).action(withOutput(runLsCommand));
|
|
|
|
addJsonAndDaemonHostOptions(
|
|
schedule
|
|
.command("inspect")
|
|
.description("Inspect a schedule")
|
|
.argument("<id>", "Schedule ID"),
|
|
).action(withOutput(runInspectCommand));
|
|
|
|
addJsonAndDaemonHostOptions(
|
|
schedule
|
|
.command("logs")
|
|
.description("Show recent schedule run logs")
|
|
.argument("<id>", "Schedule ID"),
|
|
).action(withOutput(runLogsCommand));
|
|
|
|
addJsonAndDaemonHostOptions(
|
|
schedule
|
|
.command("pause")
|
|
.description("Pause a schedule")
|
|
.argument("<id>", "Schedule ID"),
|
|
).action(withOutput(runPauseCommand));
|
|
|
|
addJsonAndDaemonHostOptions(
|
|
schedule
|
|
.command("resume")
|
|
.description("Resume a paused schedule")
|
|
.argument("<id>", "Schedule ID"),
|
|
).action(withOutput(runResumeCommand));
|
|
|
|
addJsonAndDaemonHostOptions(
|
|
schedule
|
|
.command("delete")
|
|
.description("Delete a schedule")
|
|
.argument("<id>", "Schedule ID"),
|
|
).action(withOutput(runDeleteCommand));
|
|
|
|
return schedule;
|
|
}
|