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 { runDeleteCommand } from "./delete.js"; import { runPostCommand } from "./post.js"; import { runReadCommand } from "./read.js"; import { runWaitCommand } from "./wait.js"; export function createChatCommand(): Command { const chat = new Command("chat").description("Manage chat rooms for agent coordination"); addJsonAndDaemonHostOptions( chat .command("create") .description("Create a chat room") .argument("", "Room name (must be unique)") .option("--purpose ", "Room purpose/description"), ).action(withOutput(runCreateCommand)); addJsonAndDaemonHostOptions(chat.command("ls").description("List chat rooms")).action( withOutput(runLsCommand), ); addJsonAndDaemonHostOptions( chat .command("inspect") .description("Inspect a chat room") .argument("", "Room name or ID"), ).action(withOutput(runInspectCommand)); addJsonAndDaemonHostOptions( chat .command("delete") .description("Delete a chat room") .argument("", "Room name or ID"), ).action(withOutput(runDeleteCommand)); addJsonAndDaemonHostOptions( chat .command("post") .description("Post a chat message") .argument("", "Room name or ID") .argument("", "Message body") .option("--reply-to ", "Reply to a specific message ID"), ).action(withOutput(runPostCommand)); addJsonAndDaemonHostOptions( chat .command("read") .description("Read chat messages") .argument("", "Room name or ID") .option("--limit ", "Maximum number of messages to return") .option("--since ", "Filter by relative duration or ISO timestamp") .option("--agent ", "Filter by author agent ID"), ).action(withOutput(runReadCommand)); addJsonAndDaemonHostOptions( chat .command("wait") .description("Wait for new chat messages") .argument("", "Room name or ID") .option("--timeout ", "Maximum wait time"), ).action(withOutput(runWaitCommand)); return chat; }