import type { OpenClawPluginApi } from "openclaw/plugin-sdk"; import { runContractorAgentsAdd } from "./contractor-agents-add.js"; export function registerCli(api: OpenClawPluginApi): void { api.registerCli( (ctx) => { // Use ctx.program.command() directly — do NOT import Commander separately. // Importing a different Commander version causes _prepareForParse failures. const contractorAgents = ctx.program.command("contractor-agents") .description("Manage Claude-backed contractor agents"); contractorAgents .command("add") .description("Provision a new Claude-backed contractor agent") .requiredOption("--agent-id ", "Agent id") .requiredOption("--workspace ", "Workspace directory") .requiredOption("--contractor ", "Contractor kind (claude)") .action(async (opts: { agentId: string; workspace: string; contractor: string }) => { try { await runContractorAgentsAdd({ agentId: opts.agentId, workspace: opts.workspace, contractor: opts.contractor, }); } catch (err) { console.error(`[contractor-agents add] Error: ${String(err)}`); process.exitCode = 1; } }); contractorAgents .command("status") .description("Show status of a contractor agent (not yet implemented)") .requiredOption("--agent-id ", "Agent id") .action(() => { console.log("[contractor-agents status] not yet implemented"); }); }, { commands: ["contractor-agents"], descriptors: [ { name: "contractor-agents", description: "Manage Claude-backed contractor agents", hasSubcommands: true, }, ], }, ); }