@actant/cli 0.1.3 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/program.ts","../src/client/rpc-client.ts","../src/commands/template/index.ts","../src/commands/template/list.ts","../src/output/formatter.ts","../src/output/error-presenter.ts","../src/output/printer.ts","../src/output/stream-renderer.ts","../src/commands/template/show.ts","../src/commands/template/validate.ts","../src/commands/template/load.ts","../src/commands/template/install.ts","../src/commands/agent/index.ts","../src/commands/agent/create.ts","../src/commands/agent/start.ts","../src/commands/agent/stop.ts","../src/commands/agent/status.ts","../src/commands/agent/list.ts","../src/commands/agent/adopt.ts","../src/commands/agent/destroy.ts","../src/commands/agent/resolve.ts","../src/commands/agent/attach.ts","../src/commands/agent/detach.ts","../src/commands/agent/run.ts","../src/commands/agent/prompt.ts","../src/commands/agent/chat.ts","../src/commands/agent/dispatch.ts","../src/commands/agent/tasks.ts","../src/commands/agent/logs.ts","../src/commands/help.ts","../package.json","../src/commands/skill/index.ts","../src/commands/skill/list.ts","../src/commands/skill/show.ts","../src/commands/skill/add.ts","../src/commands/skill/remove.ts","../src/commands/skill/export.ts","../src/commands/prompt/index.ts","../src/commands/prompt/list.ts","../src/commands/prompt/show.ts","../src/commands/prompt/add.ts","../src/commands/prompt/remove.ts","../src/commands/prompt/export.ts","../src/commands/mcp/index.ts","../src/commands/mcp/list.ts","../src/commands/mcp/show.ts","../src/commands/mcp/add.ts","../src/commands/mcp/remove.ts","../src/commands/mcp/export.ts","../src/commands/workflow/index.ts","../src/commands/workflow/list.ts","../src/commands/workflow/show.ts","../src/commands/workflow/add.ts","../src/commands/workflow/remove.ts","../src/commands/workflow/export.ts","../src/commands/plugin/index.ts","../src/commands/plugin/list.ts","../src/commands/plugin/show.ts","../src/commands/plugin/add.ts","../src/commands/plugin/remove.ts","../src/commands/plugin/export.ts","../src/commands/source/index.ts","../src/commands/source/list.ts","../src/commands/source/add.ts","../src/commands/source/remove.ts","../src/commands/source/sync.ts","../src/commands/preset/index.ts","../src/commands/preset/list.ts","../src/commands/preset/show.ts","../src/commands/preset/apply.ts","../src/commands/schedule/index.ts","../src/commands/schedule/list.ts","../src/commands/daemon/index.ts","../src/commands/daemon/start.ts","../src/commands/daemon/stop.ts","../src/commands/daemon/status.ts","../src/commands/proxy.ts","../src/commands/self-update.ts","../src/commands/setup/setup.ts","../src/commands/setup/steps/choose-home.ts","../src/commands/setup/steps/configure-provider.ts","../src/commands/setup/steps/configure-source.ts","../src/commands/setup/steps/materialize-agent.ts","../src/commands/setup/steps/configure-autostart.ts","../src/commands/setup/steps/hello-world.ts","../src/commands/setup/steps/configure-update.ts"],"sourcesContent":["import { Command } from \"commander\";\nimport { readFileSync } from \"node:fs\";\nimport { join } from \"node:path\";\nimport { getDefaultIpcPath } from \"@actant/shared\";\nimport { RpcClient } from \"./client/rpc-client\";\nimport {\n createTemplateCommand,\n createAgentCommand,\n createSkillCommand,\n createPromptCommand,\n createMcpCommand,\n createWorkflowCommand,\n createPluginCommand,\n createSourceCommand,\n createPresetCommand,\n createScheduleCommand,\n createDaemonCommand,\n createProxyCommand,\n createHelpCommand,\n createSelfUpdateCommand,\n createSetupCommand,\n} from \"./commands/index\";\nimport { presentError, type CliPrinter } from \"./output/index\";\n\nexport function defaultSocketPath(): string {\n const home = process.env[\"ACTANT_HOME\"];\n return process.env[\"ACTANT_SOCKET\"] ?? getDefaultIpcPath(home);\n}\n\nexport function createProgram(socketPath?: string, printer?: CliPrinter): Command {\n const sock = socketPath ?? defaultSocketPath();\n const client = new RpcClient(sock);\n\n const pkgPath = join(import.meta.dirname, \"..\", \"package.json\");\n const { version } = JSON.parse(readFileSync(pkgPath, \"utf-8\"));\n\n const program = new Command(\"actant\")\n .version(version)\n .description(\"Actant — Build, manage, and compose AI agents\");\n\n program.addCommand(createTemplateCommand(client, printer));\n program.addCommand(createAgentCommand(client, printer));\n program.addCommand(createSkillCommand(client, printer));\n program.addCommand(createPromptCommand(client, printer));\n program.addCommand(createMcpCommand(client, printer));\n program.addCommand(createWorkflowCommand(client, printer));\n program.addCommand(createPluginCommand(client, printer));\n program.addCommand(createSourceCommand(client, printer));\n program.addCommand(createPresetCommand(client, printer));\n program.addCommand(createScheduleCommand(client, printer));\n program.addCommand(createDaemonCommand(printer));\n program.addCommand(createProxyCommand(printer));\n program.addCommand(createHelpCommand());\n program.addCommand(createSelfUpdateCommand());\n program.addCommand(createSetupCommand(printer));\n\n program.exitOverride();\n\n return program;\n}\n\nexport async function run(argv?: string[]): Promise<void> {\n const args = argv ?? process.argv;\n\n const hasSubcommand = args.length > 2 && !args[2]?.startsWith(\"-\");\n\n if (!hasSubcommand) {\n const versionRequested = args.includes(\"-V\") || args.includes(\"--version\");\n const helpRequested = args.includes(\"-h\") || args.includes(\"--help\");\n\n if (!versionRequested && !helpRequested) {\n const sock = defaultSocketPath();\n const client = new RpcClient(sock);\n const { startRepl } = await import(\"./repl/repl\");\n await startRepl(client, sock);\n return;\n }\n }\n\n const program = createProgram();\n try {\n await program.parseAsync(args);\n } catch (err) {\n if (err instanceof Error && \"code\" in err) {\n const code = (err as { code: string }).code;\n if (code === \"commander.helpDisplayed\" || code === \"commander.version\") {\n return;\n }\n }\n presentError(err);\n process.exitCode = 1;\n }\n}\n","import { createConnection } from \"node:net\";\nimport type { RpcRequest, RpcResponse, RpcMethodMap, RpcMethod } from \"@actant/shared\";\n\nlet requestId = 0;\n\nexport class RpcClient {\n constructor(private readonly socketPath: string) {}\n\n async call<M extends RpcMethod>(\n method: M,\n params: RpcMethodMap[M][\"params\"],\n options?: { timeoutMs?: number },\n ): Promise<RpcMethodMap[M][\"result\"]> {\n const id = ++requestId;\n const request: RpcRequest = {\n jsonrpc: \"2.0\",\n id,\n method,\n params: params as Record<string, unknown>,\n };\n\n const response = await this.send(request, options?.timeoutMs);\n\n if (response.error) {\n const err = new RpcCallError(response.error.message, response.error.code, response.error.data);\n throw err;\n }\n\n return response.result as RpcMethodMap[M][\"result\"];\n }\n\n async ping(): Promise<boolean> {\n try {\n await this.call(\"daemon.ping\", {});\n return true;\n } catch {\n return false;\n }\n }\n\n private send(request: RpcRequest, timeoutMs?: number): Promise<RpcResponse> {\n const effectiveTimeout = timeoutMs\n ?? (process.env[\"ACTANT_RPC_TIMEOUT_MS\"] ? Number(process.env[\"ACTANT_RPC_TIMEOUT_MS\"]) : 10_000);\n\n return new Promise((resolve, reject) => {\n const socket = createConnection(this.socketPath, () => {\n socket.write(JSON.stringify(request) + \"\\n\");\n });\n\n let buffer = \"\";\n\n socket.on(\"data\", (chunk) => {\n buffer += chunk.toString();\n const lines = buffer.split(\"\\n\");\n for (const line of lines) {\n const trimmed = line.trim();\n if (!trimmed) continue;\n try {\n const response = JSON.parse(trimmed) as RpcResponse;\n socket.end();\n resolve(response);\n return;\n } catch {\n // partial data, continue\n }\n }\n });\n\n socket.on(\"error\", (err) => {\n reject(new ConnectionError(this.socketPath, err));\n });\n\n socket.setTimeout(effectiveTimeout, () => {\n socket.destroy();\n reject(new Error(`RPC call timed out after ${effectiveTimeout}ms`));\n });\n });\n }\n}\n\nexport class RpcCallError extends Error {\n constructor(\n message: string,\n readonly code: number,\n readonly data?: unknown,\n ) {\n super(message);\n this.name = \"RpcCallError\";\n }\n}\n\nexport class ConnectionError extends Error {\n constructor(\n readonly socketPath: string,\n readonly cause: Error,\n ) {\n super(`Cannot connect to daemon at ${socketPath}. Is it running? Start with: actant daemon start`);\n this.name = \"ConnectionError\";\n }\n}\n","import { Command } from \"commander\";\nimport type { RpcClient } from \"../../client/rpc-client\";\nimport type { CliPrinter } from \"../../output/index\";\nimport { createTemplateListCommand } from \"./list\";\nimport { createTemplateShowCommand } from \"./show\";\nimport { createTemplateValidateCommand } from \"./validate\";\nimport { createTemplateLoadCommand } from \"./load\";\nimport { createTemplateInstallCommand } from \"./install\";\n\nexport function createTemplateCommand(client: RpcClient, printer?: CliPrinter): Command {\n const cmd = new Command(\"template\")\n .alias(\"tpl\")\n .description(\"Manage agent templates\");\n\n cmd.addCommand(createTemplateListCommand(client, printer));\n cmd.addCommand(createTemplateShowCommand(client, printer));\n cmd.addCommand(createTemplateValidateCommand(client, printer));\n cmd.addCommand(createTemplateLoadCommand(client, printer));\n cmd.addCommand(createTemplateInstallCommand(client, printer));\n\n return cmd;\n}\n","import { Command } from \"commander\";\nimport type { RpcClient } from \"../../client/rpc-client\";\nimport { presentError, formatTemplateList, type OutputFormat, type CliPrinter, defaultPrinter } from \"../../output/index\";\n\nexport function createTemplateListCommand(client: RpcClient, printer: CliPrinter = defaultPrinter): Command {\n return new Command(\"list\")\n .alias(\"ls\")\n .description(\"List all registered templates\")\n .option(\"-f, --format <format>\", \"Output format: table, json, quiet\", \"table\")\n .action(async (opts: { format: OutputFormat }) => {\n try {\n const templates = await client.call(\"template.list\", {});\n printer.log(formatTemplateList(templates, opts.format));\n } catch (err) {\n presentError(err, printer);\n process.exitCode = 1;\n }\n });\n}\n","import Table from \"cli-table3\";\nimport chalk from \"chalk\";\nimport type { AgentTemplate, AgentInstanceMeta, SkillDefinition, PromptDefinition, McpServerDefinition, WorkflowDefinition, PluginDefinition } from \"@actant/shared\";\n\nexport type OutputFormat = \"table\" | \"json\" | \"quiet\";\n\nexport function formatTemplateList(\n templates: AgentTemplate[],\n format: OutputFormat,\n): string {\n if (format === \"json\") {\n return JSON.stringify(templates, null, 2);\n }\n\n if (format === \"quiet\") {\n return templates.map((t) => t.name).join(\"\\n\");\n }\n\n if (templates.length === 0) {\n return chalk.dim(\"No templates registered.\");\n }\n\n const table = new Table({\n head: [\n chalk.cyan(\"Name\"),\n chalk.cyan(\"Version\"),\n chalk.cyan(\"Backend\"),\n chalk.cyan(\"Provider\"),\n chalk.cyan(\"Description\"),\n ],\n });\n\n for (const t of templates) {\n table.push([\n t.name,\n t.version,\n t.backend.type,\n t.provider.type,\n t.description ?? chalk.dim(\"—\"),\n ]);\n }\n\n return table.toString();\n}\n\nexport function formatTemplateDetail(\n template: AgentTemplate,\n format: OutputFormat,\n): string {\n if (format === \"json\") {\n return JSON.stringify(template, null, 2);\n }\n\n if (format === \"quiet\") {\n return template.name;\n }\n\n const ctx = template.domainContext;\n const lines = [\n `${chalk.bold(\"Template:\")} ${template.name}`,\n `${chalk.bold(\"Version:\")} ${template.version}`,\n `${chalk.bold(\"Backend:\")} ${template.backend.type}`,\n `${chalk.bold(\"Provider:\")} ${template.provider.type}`,\n ];\n\n if (template.description) {\n lines.push(`${chalk.bold(\"Desc:\")} ${template.description}`);\n }\n\n lines.push(\"\");\n lines.push(chalk.bold(\"Domain Context:\"));\n lines.push(` Skills: ${ctx.skills?.length ?? 0} ref(s) ${(ctx.skills ?? []).join(\", \") || chalk.dim(\"none\")}`);\n lines.push(` Prompts: ${ctx.prompts?.length ?? 0} ref(s) ${(ctx.prompts ?? []).join(\", \") || chalk.dim(\"none\")}`);\n lines.push(` MCP Servers: ${ctx.mcpServers?.length ?? 0} ref(s) ${(ctx.mcpServers ?? []).map((s) => s.name).join(\", \") || chalk.dim(\"none\")}`);\n lines.push(` Plugins: ${ctx.plugins?.length ?? 0} ref(s) ${(ctx.plugins ?? []).join(\", \") || chalk.dim(\"none\")}`);\n lines.push(` Workflow: ${ctx.workflow ?? chalk.dim(\"none\")}`);\n lines.push(` SubAgents: ${(ctx.subAgents ?? []).join(\", \") || chalk.dim(\"none\")}`);\n\n if (template.metadata && Object.keys(template.metadata).length > 0) {\n lines.push(\"\");\n lines.push(chalk.bold(\"Metadata:\"));\n for (const [k, v] of Object.entries(template.metadata)) {\n lines.push(` ${k}: ${v}`);\n }\n }\n\n return lines.join(\"\\n\");\n}\n\nconst STATUS_COLORS: Record<string, (text: string) => string> = {\n created: chalk.blue,\n starting: chalk.yellow,\n running: chalk.green,\n stopping: chalk.yellow,\n stopped: chalk.gray,\n error: chalk.red,\n};\n\nfunction colorStatus(status: string): string {\n const fn = STATUS_COLORS[status] ?? chalk.white;\n return fn(status);\n}\n\nexport function formatAgentList(\n agents: AgentInstanceMeta[],\n format: OutputFormat,\n): string {\n if (format === \"json\") {\n return JSON.stringify(agents, null, 2);\n }\n\n if (format === \"quiet\") {\n return agents.map((a) => a.name).join(\"\\n\");\n }\n\n if (agents.length === 0) {\n return chalk.dim(\"No agents found.\");\n }\n\n const table = new Table({\n head: [\n chalk.cyan(\"Name\"),\n chalk.cyan(\"Template\"),\n chalk.cyan(\"Status\"),\n chalk.cyan(\"Launch Mode\"),\n chalk.cyan(\"PID\"),\n chalk.cyan(\"Created\"),\n ],\n });\n\n for (const a of agents) {\n table.push([\n a.name,\n `${a.templateName}@${a.templateVersion}`,\n colorStatus(a.status),\n a.launchMode,\n a.pid?.toString() ?? chalk.dim(\"—\"),\n a.createdAt.slice(0, 19).replace(\"T\", \" \"),\n ]);\n }\n\n return table.toString();\n}\n\nexport function formatAgentDetail(\n agent: AgentInstanceMeta,\n format: OutputFormat,\n): string {\n if (format === \"json\") {\n return JSON.stringify(agent, null, 2);\n }\n\n if (format === \"quiet\") {\n return agent.name;\n }\n\n const lines = [\n `${chalk.bold(\"Agent:\")} ${agent.name}`,\n `${chalk.bold(\"ID:\")} ${agent.id}`,\n `${chalk.bold(\"Template:\")} ${agent.templateName}@${agent.templateVersion}`,\n `${chalk.bold(\"Status:\")} ${colorStatus(agent.status)}`,\n `${chalk.bold(\"Launch:\")} ${agent.launchMode}`,\n `${chalk.bold(\"PID:\")} ${agent.pid ?? chalk.dim(\"—\")}`,\n `${chalk.bold(\"Created:\")} ${agent.createdAt}`,\n `${chalk.bold(\"Updated:\")} ${agent.updatedAt}`,\n ];\n\n if (agent.metadata && Object.keys(agent.metadata).length > 0) {\n lines.push(\"\");\n lines.push(chalk.bold(\"Metadata:\"));\n for (const [k, v] of Object.entries(agent.metadata)) {\n lines.push(` ${k}: ${v}`);\n }\n }\n\n return lines.join(\"\\n\");\n}\n\n// ---------------------------------------------------------------------------\n// Domain component formatters\n// ---------------------------------------------------------------------------\n\nexport function formatSkillList(\n skills: SkillDefinition[],\n format: OutputFormat,\n): string {\n if (format === \"json\") return JSON.stringify(skills, null, 2);\n if (format === \"quiet\") return skills.map((s) => s.name).join(\"\\n\");\n if (skills.length === 0) return chalk.dim(\"No skills loaded.\");\n\n const table = new Table({\n head: [chalk.cyan(\"Name\"), chalk.cyan(\"Tags\"), chalk.cyan(\"Description\")],\n });\n\n for (const s of skills) {\n table.push([\n s.name,\n s.tags?.join(\", \") ?? chalk.dim(\"—\"),\n s.description ?? chalk.dim(\"—\"),\n ]);\n }\n\n return table.toString();\n}\n\nexport function formatSkillDetail(\n skill: SkillDefinition,\n format: OutputFormat,\n): string {\n if (format === \"json\") return JSON.stringify(skill, null, 2);\n if (format === \"quiet\") return skill.name;\n\n const lines = [\n `${chalk.bold(\"Skill:\")} ${skill.name}`,\n ...(skill.description ? [`${chalk.bold(\"Description:\")} ${skill.description}`] : []),\n ...(skill.tags?.length ? [`${chalk.bold(\"Tags:\")} ${skill.tags.join(\", \")}`] : []),\n \"\",\n chalk.bold(\"Content:\"),\n skill.content,\n ];\n return lines.join(\"\\n\");\n}\n\nexport function formatPromptList(\n prompts: PromptDefinition[],\n format: OutputFormat,\n): string {\n if (format === \"json\") return JSON.stringify(prompts, null, 2);\n if (format === \"quiet\") return prompts.map((p) => p.name).join(\"\\n\");\n if (prompts.length === 0) return chalk.dim(\"No prompts loaded.\");\n\n const table = new Table({\n head: [chalk.cyan(\"Name\"), chalk.cyan(\"Variables\"), chalk.cyan(\"Description\")],\n });\n\n for (const p of prompts) {\n table.push([\n p.name,\n p.variables?.join(\", \") ?? chalk.dim(\"—\"),\n p.description ?? chalk.dim(\"—\"),\n ]);\n }\n\n return table.toString();\n}\n\nexport function formatPromptDetail(\n prompt: PromptDefinition,\n format: OutputFormat,\n): string {\n if (format === \"json\") return JSON.stringify(prompt, null, 2);\n if (format === \"quiet\") return prompt.name;\n\n const lines = [\n `${chalk.bold(\"Prompt:\")} ${prompt.name}`,\n ...(prompt.description ? [`${chalk.bold(\"Description:\")} ${prompt.description}`] : []),\n ...(prompt.variables?.length ? [`${chalk.bold(\"Variables:\")} ${prompt.variables.join(\", \")}`] : []),\n \"\",\n chalk.bold(\"Content:\"),\n prompt.content,\n ];\n return lines.join(\"\\n\");\n}\n\nexport function formatMcpList(\n servers: McpServerDefinition[],\n format: OutputFormat,\n): string {\n if (format === \"json\") return JSON.stringify(servers, null, 2);\n if (format === \"quiet\") return servers.map((s) => s.name).join(\"\\n\");\n if (servers.length === 0) return chalk.dim(\"No MCP servers loaded.\");\n\n const table = new Table({\n head: [chalk.cyan(\"Name\"), chalk.cyan(\"Command\"), chalk.cyan(\"Description\")],\n });\n\n for (const s of servers) {\n const cmd = [s.command, ...(s.args ?? [])].join(\" \");\n table.push([\n s.name,\n cmd,\n s.description ?? chalk.dim(\"—\"),\n ]);\n }\n\n return table.toString();\n}\n\nexport function formatMcpDetail(\n server: McpServerDefinition,\n format: OutputFormat,\n): string {\n if (format === \"json\") return JSON.stringify(server, null, 2);\n if (format === \"quiet\") return server.name;\n\n const lines = [\n `${chalk.bold(\"MCP Server:\")} ${server.name}`,\n ...(server.description ? [`${chalk.bold(\"Description:\")} ${server.description}`] : []),\n `${chalk.bold(\"Command:\")} ${server.command}`,\n ...(server.args?.length ? [`${chalk.bold(\"Args:\")} ${server.args.join(\" \")}`] : []),\n ];\n\n if (server.env && Object.keys(server.env).length > 0) {\n lines.push(\"\");\n lines.push(chalk.bold(\"Environment:\"));\n for (const [k, v] of Object.entries(server.env)) {\n lines.push(` ${k}=${v}`);\n }\n }\n\n return lines.join(\"\\n\");\n}\n\nexport function formatWorkflowList(\n workflows: WorkflowDefinition[],\n format: OutputFormat,\n): string {\n if (format === \"json\") return JSON.stringify(workflows, null, 2);\n if (format === \"quiet\") return workflows.map((w) => w.name).join(\"\\n\");\n if (workflows.length === 0) return chalk.dim(\"No workflows loaded.\");\n\n const table = new Table({\n head: [chalk.cyan(\"Name\"), chalk.cyan(\"Description\")],\n });\n\n for (const w of workflows) {\n table.push([w.name, w.description ?? chalk.dim(\"—\")]);\n }\n\n return table.toString();\n}\n\nexport function formatWorkflowDetail(\n workflow: WorkflowDefinition,\n format: OutputFormat,\n): string {\n if (format === \"json\") return JSON.stringify(workflow, null, 2);\n if (format === \"quiet\") return workflow.name;\n\n const lines = [\n `${chalk.bold(\"Workflow:\")} ${workflow.name}`,\n ...(workflow.description ? [`${chalk.bold(\"Description:\")} ${workflow.description}`] : []),\n \"\",\n chalk.bold(\"Content:\"),\n workflow.content,\n ];\n return lines.join(\"\\n\");\n}\n\nexport function formatPluginList(plugins: PluginDefinition[], format: OutputFormat): string {\n if (format === \"json\") return JSON.stringify(plugins, null, 2);\n if (format === \"quiet\") return plugins.map((p) => p.name).join(\"\\n\");\n if (plugins.length === 0) return chalk.dim(\"No plugins loaded.\");\n\n const table = new Table({\n head: [chalk.cyan(\"Name\"), chalk.cyan(\"Type\"), chalk.cyan(\"Source\"), chalk.cyan(\"Enabled\"), chalk.cyan(\"Description\")],\n });\n\n for (const p of plugins) {\n table.push([\n p.name,\n p.type,\n p.source ?? chalk.dim(\"—\"),\n p.enabled !== false ? chalk.green(\"yes\") : chalk.red(\"no\"),\n p.description ?? chalk.dim(\"—\"),\n ]);\n }\n\n return table.toString();\n}\n\nexport function formatPluginDetail(plugin: PluginDefinition, format: OutputFormat): string {\n if (format === \"json\") return JSON.stringify(plugin, null, 2);\n if (format === \"quiet\") return plugin.name;\n\n const lines = [\n `${chalk.bold(\"Plugin:\")} ${plugin.name}`,\n ...(plugin.description ? [`${chalk.bold(\"Description:\")} ${plugin.description}`] : []),\n `${chalk.bold(\"Type:\")} ${plugin.type}`,\n ...(plugin.source ? [`${chalk.bold(\"Source:\")} ${plugin.source}`] : []),\n `${chalk.bold(\"Enabled:\")} ${plugin.enabled !== false ? chalk.green(\"yes\") : chalk.red(\"no\")}`,\n ];\n\n if (plugin.config && Object.keys(plugin.config).length > 0) {\n lines.push(\"\");\n lines.push(chalk.bold(\"Config:\"));\n for (const [k, v] of Object.entries(plugin.config)) {\n lines.push(` ${k}: ${JSON.stringify(v)}`);\n }\n }\n\n return lines.join(\"\\n\");\n}\n","import chalk from \"chalk\";\nimport { ActantError } from \"@actant/shared\";\nimport { RpcCallError, ConnectionError } from \"../client/rpc-client\";\nimport { type CliPrinter, defaultPrinter } from \"./printer\";\n\nexport function presentError(err: unknown, printer: CliPrinter = defaultPrinter): void {\n if (err instanceof ConnectionError) {\n printer.errorStyled(\"Cannot connect to daemon.\");\n printer.errorDim(\"Start with: actant daemon start\");\n return;\n }\n\n if (err instanceof RpcCallError) {\n printer.error(`${chalk.red(`[RPC ${err.code}]`)} ${err.message}`);\n if (err.data && typeof err.data === \"object\") {\n const data = err.data as Record<string, unknown>;\n if (data.context) {\n printer.error(`${chalk.dim(\" Context:\")} ${JSON.stringify(data.context)}`);\n }\n }\n return;\n }\n\n if (err instanceof ActantError) {\n printer.error(`${chalk.red(`[${err.code}]`)} ${err.message}`);\n if (err.context && Object.keys(err.context).length > 0) {\n printer.error(`${chalk.dim(\" Context:\")} ${JSON.stringify(err.context)}`);\n }\n return;\n }\n\n if (err instanceof Error) {\n printer.error(`${chalk.red(\"Error:\")} ${err.message}`);\n } else {\n printer.error(`${chalk.red(\"Error:\")} ${String(err)}`);\n }\n}\n","import chalk from \"chalk\";\n\n/**\n * Abstraction for CLI terminal output, replacing direct console.log/error usage.\n * Inject a custom CliOutput for testing or format switching.\n */\nexport interface CliOutput {\n log(message: string): void;\n error(message: string): void;\n}\n\nconst consoleOutput: CliOutput = {\n log: (msg: string) => {\n console.log(msg);\n },\n error: (msg: string) => {\n console.error(msg);\n },\n};\n\nexport class CliPrinter {\n private readonly out: CliOutput;\n\n constructor(output?: CliOutput) {\n this.out = output ?? consoleOutput;\n }\n\n log(text: string): void {\n this.out.log(text);\n }\n\n error(text: string): void {\n this.out.error(text);\n }\n\n success(text: string): void {\n this.out.log(chalk.green(text));\n }\n\n warn(text: string): void {\n this.out.log(chalk.yellow(text));\n }\n\n dim(text: string): void {\n this.out.log(chalk.dim(text));\n }\n\n errorStyled(text: string): void {\n this.out.error(chalk.red(text));\n }\n\n errorDim(text: string): void {\n this.out.error(chalk.dim(text));\n }\n}\n\nexport const defaultPrinter = new CliPrinter();\n","import chalk from \"chalk\";\nimport type { StreamChunk } from \"@actant/core\";\n\nexport interface StreamRendererOptions {\n output?: NodeJS.WritableStream;\n /** Prefix printed before the first chunk of a response. */\n agentLabel?: string;\n /** Show tool use indicators. Default: true */\n showTools?: boolean;\n}\n\n/**\n * Renders an async stream of {@link StreamChunk} objects to the terminal\n * in real-time, one chunk at a time.\n *\n * Returns the concatenated text once the stream is exhausted.\n */\nexport async function renderStream(\n stream: AsyncIterable<StreamChunk>,\n options?: StreamRendererOptions,\n): Promise<string> {\n const output = options?.output ?? process.stdout;\n const showTools = options?.showTools ?? true;\n const label = options?.agentLabel ?? \"agent\";\n\n let started = false;\n let collectedText = \"\";\n\n for await (const chunk of stream) {\n if (!started) {\n output.write(chalk.cyan(`${label}> `));\n started = true;\n }\n\n switch (chunk.type) {\n case \"text\":\n output.write(chunk.content);\n collectedText += chunk.content;\n break;\n\n case \"tool_use\":\n if (showTools) {\n output.write(chalk.dim(`\\n ${chunk.content}\\n`));\n }\n break;\n\n case \"result\":\n output.write(chunk.content);\n collectedText += chunk.content;\n break;\n\n case \"error\":\n output.write(chalk.red(`\\n[Error] ${chunk.content}\\n`));\n break;\n }\n }\n\n if (started) {\n output.write(\"\\n\\n\");\n }\n\n return collectedText;\n}\n","import { Command } from \"commander\";\nimport type { RpcClient } from \"../../client/rpc-client\";\nimport { presentError, formatTemplateDetail, type OutputFormat, type CliPrinter, defaultPrinter } from \"../../output/index\";\n\nexport function createTemplateShowCommand(client: RpcClient, printer: CliPrinter = defaultPrinter): Command {\n return new Command(\"show\")\n .description(\"Show template details\")\n .argument(\"<name>\", \"Template name\")\n .option(\"-f, --format <format>\", \"Output format: table, json, quiet\", \"table\")\n .action(async (name: string, opts: { format: OutputFormat }) => {\n try {\n const template = await client.call(\"template.get\", { name });\n printer.log(formatTemplateDetail(template, opts.format));\n } catch (err) {\n presentError(err, printer);\n process.exitCode = 1;\n }\n });\n}\n","import { resolve } from \"node:path\";\nimport { Command } from \"commander\";\nimport chalk from \"chalk\";\nimport type { RpcClient } from \"../../client/rpc-client\";\nimport { presentError, type CliPrinter, defaultPrinter } from \"../../output/index\";\n\nexport function createTemplateValidateCommand(client: RpcClient, printer: CliPrinter = defaultPrinter): Command {\n return new Command(\"validate\")\n .description(\"Validate a template JSON file\")\n .argument(\"<file>\", \"Path to template JSON file\")\n .action(async (file: string) => {\n try {\n const result = await client.call(\"template.validate\", { filePath: resolve(file) });\n if (result.valid && result.template) {\n printer.log(`${chalk.green(\"Valid\")} — ${result.template.name}@${result.template.version}`);\n if (result.warnings?.length) {\n printer.log(chalk.yellow(` ${result.warnings.length} warning(s):`));\n for (const w of result.warnings) {\n printer.log(chalk.yellow(` - ${w.path}: ${w.message}`));\n }\n }\n } else {\n printer.error(chalk.red(\"Invalid template\"));\n if (result.errors) {\n for (const e of result.errors) {\n printer.errorDim(` - ${e.path}: ${e.message}`);\n }\n }\n process.exitCode = 1;\n }\n } catch (err) {\n presentError(err, printer);\n process.exitCode = 1;\n }\n });\n}\n","import { resolve } from \"node:path\";\nimport { Command } from \"commander\";\nimport chalk from \"chalk\";\nimport type { RpcClient } from \"../../client/rpc-client\";\nimport { presentError, type CliPrinter, defaultPrinter } from \"../../output/index\";\n\nexport function createTemplateLoadCommand(client: RpcClient, printer: CliPrinter = defaultPrinter): Command {\n return new Command(\"load\")\n .description(\"Load a template from a JSON file into the registry\")\n .argument(\"<file>\", \"Path to template JSON file\")\n .action(async (file: string) => {\n try {\n const template = await client.call(\"template.load\", { filePath: resolve(file) });\n printer.log(`${chalk.green(\"Loaded\")} ${template.name}@${template.version}`);\n } catch (err) {\n presentError(err, printer);\n process.exitCode = 1;\n }\n });\n}\n","import { Command } from \"commander\";\nimport type { RpcClient } from \"../../client/rpc-client\";\nimport { presentError, type CliPrinter, defaultPrinter } from \"../../output/index\";\n\nexport function createTemplateInstallCommand(\n _client: RpcClient,\n printer: CliPrinter = defaultPrinter,\n): Command {\n return new Command(\"install\")\n .description(\"Install a template from a source (source@name)\")\n .argument(\"<spec>\", \"Source and template name, e.g. my-source@my-template\")\n .action(async (spec: string) => {\n try {\n const at = spec.indexOf(\"@\");\n if (at < 0) {\n printer.error(\"Expected format: <source>@<name>\");\n process.exitCode = 1;\n return;\n }\n const source = spec.slice(0, at);\n printer.log(\n `Template install not yet implemented via RPC - use \"actant source sync ${source}\" to sync templates from the source.`,\n );\n } catch (err) {\n presentError(err, printer);\n process.exitCode = 1;\n }\n });\n}\n","import { Command } from \"commander\";\nimport type { RpcClient } from \"../../client/rpc-client\";\nimport type { CliPrinter } from \"../../output/index\";\nimport { createAgentCreateCommand } from \"./create\";\nimport { createAgentStartCommand } from \"./start\";\nimport { createAgentStopCommand } from \"./stop\";\nimport { createAgentStatusCommand } from \"./status\";\nimport { createAgentListCommand } from \"./list\";\nimport { createAgentAdoptCommand } from \"./adopt\";\nimport { createAgentDestroyCommand } from \"./destroy\";\nimport { createAgentResolveCommand } from \"./resolve\";\nimport { createAgentAttachCommand } from \"./attach\";\nimport { createAgentDetachCommand } from \"./detach\";\nimport { createAgentRunCommand } from \"./run\";\nimport { createAgentPromptCommand } from \"./prompt\";\nimport { createAgentChatCommand } from \"./chat\";\nimport { createAgentDispatchCommand } from \"./dispatch\";\nimport { createAgentTasksCommand } from \"./tasks\";\nimport { createAgentLogsCommand } from \"./logs\";\n\nexport function createAgentCommand(client: RpcClient, printer?: CliPrinter): Command {\n const cmd = new Command(\"agent\")\n .description(\"Manage agent instances\");\n\n cmd.addCommand(createAgentCreateCommand(client, printer));\n cmd.addCommand(createAgentStartCommand(client, printer));\n cmd.addCommand(createAgentStopCommand(client, printer));\n cmd.addCommand(createAgentStatusCommand(client, printer));\n cmd.addCommand(createAgentListCommand(client, printer));\n cmd.addCommand(createAgentAdoptCommand(client, printer));\n cmd.addCommand(createAgentDestroyCommand(client, printer));\n cmd.addCommand(createAgentResolveCommand(client, printer));\n cmd.addCommand(createAgentAttachCommand(client, printer));\n cmd.addCommand(createAgentDetachCommand(client, printer));\n cmd.addCommand(createAgentRunCommand(client, printer));\n cmd.addCommand(createAgentPromptCommand(client, printer));\n cmd.addCommand(createAgentChatCommand(client, printer));\n cmd.addCommand(createAgentDispatchCommand(client, printer));\n cmd.addCommand(createAgentTasksCommand(client, printer));\n cmd.addCommand(createAgentLogsCommand(client, printer));\n\n return cmd;\n}\n","import { existsSync } from \"node:fs\";\nimport { resolve } from \"node:path\";\nimport { createInterface } from \"node:readline\";\nimport { Command } from \"commander\";\nimport chalk from \"chalk\";\nimport type { LaunchMode, WorkDirConflict } from \"@actant/shared\";\nimport type { RpcClient } from \"../../client/rpc-client\";\nimport { presentError, formatAgentDetail, type OutputFormat, type CliPrinter, defaultPrinter } from \"../../output/index\";\n\nconst VALID_LAUNCH_MODES = new Set([\"direct\", \"acp-background\", \"acp-service\", \"one-shot\"]);\n\nfunction askQuestion(question: string): Promise<string> {\n const rl = createInterface({ input: process.stdin, output: process.stdout });\n return new Promise((res) => {\n rl.question(question, (answer) => {\n rl.close();\n res(answer.trim().toLowerCase());\n });\n });\n}\n\nexport function createAgentCreateCommand(client: RpcClient, printer: CliPrinter = defaultPrinter): Command {\n return new Command(\"create\")\n .description(\"Create a new agent from a template\")\n .argument(\"<name>\", \"Agent instance name\")\n .requiredOption(\"-t, --template <template>\", \"Template name to use\")\n .option(\"--launch-mode <mode>\", \"Launch mode: direct, acp-background, acp-service, one-shot\")\n .option(\"--work-dir <path>\", \"Custom workspace directory (absolute or relative path)\")\n .option(\"--workspace <path>\", \"Same as --work-dir: create instance at external path instead of builtin location\")\n .option(\"--overwrite\", \"If work-dir exists, remove it and recreate\")\n .option(\"--append\", \"If work-dir exists, add agent files into it\")\n .option(\"-f, --format <format>\", \"Output format: table, json, quiet\", \"table\")\n .action(async (name: string, opts: {\n template: string;\n launchMode?: string;\n workDir?: string;\n workspace?: string;\n overwrite?: boolean;\n append?: boolean;\n format: OutputFormat;\n }) => {\n try {\n if (opts.launchMode && !VALID_LAUNCH_MODES.has(opts.launchMode)) {\n printer.error(`${chalk.red(`Invalid launch mode: ${opts.launchMode}`)}`);\n process.exitCode = 1;\n return;\n }\n\n if (opts.overwrite && opts.append) {\n printer.error(`${chalk.red(\"Cannot use both --overwrite and --append\")}`);\n process.exitCode = 1;\n return;\n }\n\n let workDirConflict: WorkDirConflict | undefined;\n const workDirPath = opts.workspace ?? opts.workDir;\n const workDir = workDirPath ? resolve(workDirPath) : undefined;\n\n if (workDir && existsSync(workDir)) {\n if (opts.overwrite) {\n workDirConflict = \"overwrite\";\n } else if (opts.append) {\n workDirConflict = \"append\";\n } else {\n printer.warn(`Directory already exists: ${workDir}`);\n const answer = await askQuestion(\n ` ${chalk.yellow(\"(o)\")}verwrite / ${chalk.cyan(\"(a)\")}ppend / ${chalk.dim(\"(c)\")}ancel? `,\n );\n if (answer === \"o\" || answer === \"overwrite\") {\n workDirConflict = \"overwrite\";\n } else if (answer === \"a\" || answer === \"append\") {\n workDirConflict = \"append\";\n } else {\n printer.log(\"Cancelled.\");\n return;\n }\n }\n }\n\n const overrides: Record<string, unknown> = {};\n if (opts.launchMode) overrides.launchMode = opts.launchMode as LaunchMode;\n if (workDir) overrides.workDir = workDir;\n if (workDirConflict) overrides.workDirConflict = workDirConflict;\n\n const meta = await client.call(\"agent.create\", {\n name,\n template: opts.template,\n overrides: Object.keys(overrides).length > 0 ? overrides : undefined,\n });\n printer.log(`${chalk.green(\"Agent created successfully.\")}\\n`);\n printer.log(formatAgentDetail(meta, opts.format));\n } catch (err) {\n presentError(err, printer);\n process.exitCode = 1;\n }\n });\n}\n","import { Command } from \"commander\";\nimport chalk from \"chalk\";\nimport type { RpcClient } from \"../../client/rpc-client\";\nimport { presentError, type CliPrinter, defaultPrinter } from \"../../output/index\";\n\nexport function createAgentStartCommand(client: RpcClient, printer: CliPrinter = defaultPrinter): Command {\n return new Command(\"start\")\n .description(\"Start an agent\")\n .argument(\"<name>\", \"Agent name\")\n .action(async (name: string) => {\n try {\n await client.call(\"agent.start\", { name });\n printer.log(`${chalk.green(\"Started\")} ${name}`);\n } catch (err) {\n presentError(err, printer);\n process.exitCode = 1;\n }\n });\n}\n","import { Command } from \"commander\";\nimport chalk from \"chalk\";\nimport type { RpcClient } from \"../../client/rpc-client\";\nimport { presentError, type CliPrinter, defaultPrinter } from \"../../output/index\";\n\nexport function createAgentStopCommand(client: RpcClient, printer: CliPrinter = defaultPrinter): Command {\n return new Command(\"stop\")\n .description(\"Stop a running agent\")\n .argument(\"<name>\", \"Agent name\")\n .action(async (name: string) => {\n try {\n await client.call(\"agent.stop\", { name });\n printer.log(`${chalk.green(\"Stopped\")} ${name}`);\n } catch (err) {\n presentError(err, printer);\n process.exitCode = 1;\n }\n });\n}\n","import { Command } from \"commander\";\nimport type { RpcClient } from \"../../client/rpc-client\";\nimport { presentError, formatAgentDetail, formatAgentList, type OutputFormat, type CliPrinter, defaultPrinter } from \"../../output/index\";\n\nexport function createAgentStatusCommand(client: RpcClient, printer: CliPrinter = defaultPrinter): Command {\n return new Command(\"status\")\n .description(\"Show agent status (all agents if no name given)\")\n .argument(\"[name]\", \"Agent name (optional)\")\n .option(\"-f, --format <format>\", \"Output format: table, json, quiet\", \"table\")\n .action(async (name: string | undefined, opts: { format: OutputFormat }) => {\n try {\n if (name) {\n const agent = await client.call(\"agent.status\", { name });\n printer.log(formatAgentDetail(agent, opts.format));\n } else {\n const agents = await client.call(\"agent.list\", {});\n printer.log(formatAgentList(agents, opts.format));\n }\n } catch (err) {\n presentError(err, printer);\n process.exitCode = 1;\n }\n });\n}\n","import { Command } from \"commander\";\nimport type { RpcClient } from \"../../client/rpc-client\";\nimport { presentError, formatAgentList, type OutputFormat, type CliPrinter, defaultPrinter } from \"../../output/index\";\n\nexport function createAgentListCommand(client: RpcClient, printer: CliPrinter = defaultPrinter): Command {\n return new Command(\"list\")\n .alias(\"ls\")\n .description(\"List all agents\")\n .option(\"-f, --format <format>\", \"Output format: table, json, quiet\", \"table\")\n .action(async (opts: { format: OutputFormat }) => {\n try {\n const agents = await client.call(\"agent.list\", {});\n printer.log(formatAgentList(agents, opts.format));\n } catch (err) {\n presentError(err, printer);\n process.exitCode = 1;\n }\n });\n}\n","import chalk from \"chalk\";\nimport { Command } from \"commander\";\nimport type { AgentAdoptResult } from \"@actant/shared\";\nimport type { RpcClient } from \"../../client/rpc-client\";\nimport { presentError, type OutputFormat, type CliPrinter, defaultPrinter } from \"../../output/index\";\n\nfunction formatAdoptResult(result: AgentAdoptResult, format: OutputFormat): string {\n if (format === \"json\") {\n return JSON.stringify(result, null, 2);\n }\n\n if (format === \"quiet\") {\n return result.name;\n }\n\n const lines = [\n chalk.green(\"Agent adopted successfully.\"),\n \"\",\n `${chalk.bold(\"Name:\")} ${result.name}`,\n `${chalk.bold(\"Template:\")} ${result.template}`,\n `${chalk.bold(\"Workspace:\")} ${result.workspacePath}`,\n `${chalk.bold(\"Location:\")} ${result.location}`,\n `${chalk.bold(\"Status:\")} ${result.status}`,\n `${chalk.bold(\"Created:\")} ${result.createdAt}`,\n ];\n return lines.join(\"\\n\");\n}\n\nexport function createAgentAdoptCommand(client: RpcClient, printer: CliPrinter = defaultPrinter): Command {\n return new Command(\"adopt\")\n .description(\"Adopt an existing agent workspace into the instance registry\")\n .argument(\"<path>\", \"Path to the agent workspace directory (contains .actant.json)\")\n .option(\"--rename <name>\", \"Register with a different name than in .actant.json\")\n .option(\"-f, --format <format>\", \"Output format: table, json, quiet\", \"table\")\n .action(async (path: string, opts: { rename?: string; format: OutputFormat }) => {\n try {\n const result = await client.call(\"agent.adopt\", {\n path,\n rename: opts.rename,\n }) as AgentAdoptResult;\n printer.log(formatAdoptResult(result, opts.format));\n } catch (err) {\n presentError(err, printer);\n process.exitCode = 1;\n }\n });\n}\n","import { Command } from \"commander\";\nimport chalk from \"chalk\";\nimport type { RpcClient } from \"../../client/rpc-client\";\nimport { presentError, type CliPrinter, defaultPrinter } from \"../../output/index\";\n\nexport function createAgentDestroyCommand(client: RpcClient, printer: CliPrinter = defaultPrinter): Command {\n return new Command(\"destroy\")\n .alias(\"rm\")\n .description(\"Destroy an agent (removes workspace directory)\")\n .argument(\"<name>\", \"Agent name\")\n .option(\"--force\", \"Skip confirmation\", false)\n .action(async (name: string, opts: { force: boolean }) => {\n if (!opts.force) {\n printer.warn(`Destroying agent \"${name}\" will remove its entire workspace.`);\n printer.warn(\"Use --force to skip this warning.\");\n process.exitCode = 1;\n return;\n }\n\n try {\n await client.call(\"agent.destroy\", { name });\n printer.log(`${chalk.green(\"Destroyed\")} ${name}`);\n } catch (err) {\n presentError(err, printer);\n process.exitCode = 1;\n }\n });\n}\n","import { Command } from \"commander\";\nimport chalk from \"chalk\";\nimport type { RpcClient } from \"../../client/rpc-client\";\nimport { presentError, type OutputFormat, type CliPrinter, defaultPrinter } from \"../../output/index\";\n\nexport function createAgentResolveCommand(client: RpcClient, printer: CliPrinter = defaultPrinter): Command {\n return new Command(\"resolve\")\n .description(\"Resolve spawn info for an agent (external spawn support)\")\n .argument(\"<name>\", \"Agent instance name\")\n .option(\"-t, --template <template>\", \"Template name (auto-creates instance if not found)\")\n .option(\"-f, --format <format>\", \"Output format: table, json, quiet\", \"table\")\n .action(async (name: string, opts: { template?: string; format: OutputFormat }) => {\n try {\n const result = await client.call(\"agent.resolve\", {\n name,\n template: opts.template,\n });\n\n if (opts.format === \"json\") {\n printer.log(JSON.stringify(result, null, 2));\n } else if (opts.format === \"quiet\") {\n printer.log([result.command, ...result.args].join(\" \"));\n } else {\n if (result.created) {\n printer.log(`${chalk.green(\"Instance created.\")}\\n`);\n }\n printer.log(`${chalk.bold(\"Instance:\")} ${result.instanceName}`);\n printer.log(`${chalk.bold(\"Backend:\")} ${result.backendType}`);\n printer.log(`${chalk.bold(\"Workspace:\")} ${result.workspaceDir}`);\n printer.log(`${chalk.bold(\"Command:\")} ${result.command}`);\n printer.log(`${chalk.bold(\"Args:\")} ${result.args.join(\" \")}`);\n if (result.env && Object.keys(result.env).length > 0) {\n printer.log(chalk.bold(\"Env:\"));\n for (const [k, v] of Object.entries(result.env)) {\n printer.log(` ${k}=${v}`);\n }\n }\n }\n } catch (err) {\n presentError(err, printer);\n process.exitCode = 1;\n }\n });\n}\n","import { Command } from \"commander\";\nimport chalk from \"chalk\";\nimport type { RpcClient } from \"../../client/rpc-client\";\nimport { presentError, formatAgentDetail, type OutputFormat, type CliPrinter, defaultPrinter } from \"../../output/index\";\n\nexport function createAgentAttachCommand(client: RpcClient, printer: CliPrinter = defaultPrinter): Command {\n return new Command(\"attach\")\n .description(\"Attach an externally-spawned process to an agent\")\n .argument(\"<name>\", \"Agent instance name\")\n .requiredOption(\"--pid <pid>\", \"Process ID of the externally-spawned agent\")\n .option(\"--metadata <json>\", \"Additional metadata as JSON object\")\n .option(\"-f, --format <format>\", \"Output format: table, json, quiet\", \"table\")\n .action(async (name: string, opts: { pid: string; metadata?: string; format: OutputFormat }) => {\n try {\n const pid = parseInt(opts.pid, 10);\n if (isNaN(pid) || pid <= 0) {\n printer.error(chalk.red(\"Invalid PID: must be a positive integer\"));\n process.exitCode = 1;\n return;\n }\n\n let metadata: Record<string, string> | undefined;\n if (opts.metadata) {\n try {\n metadata = JSON.parse(opts.metadata) as Record<string, string>;\n } catch {\n printer.error(chalk.red(\"Invalid --metadata: must be valid JSON\"));\n process.exitCode = 1;\n return;\n }\n }\n\n const meta = await client.call(\"agent.attach\", { name, pid, metadata });\n printer.log(`${chalk.green(\"Process attached.\")}\\n`);\n printer.log(formatAgentDetail(meta, opts.format));\n } catch (err) {\n presentError(err, printer);\n process.exitCode = 1;\n }\n });\n}\n","import { Command } from \"commander\";\nimport type { RpcClient } from \"../../client/rpc-client\";\nimport { presentError, type CliPrinter, defaultPrinter } from \"../../output/index\";\n\nexport function createAgentDetachCommand(client: RpcClient, printer: CliPrinter = defaultPrinter): Command {\n return new Command(\"detach\")\n .description(\"Detach an externally-managed process from an agent\")\n .argument(\"<name>\", \"Agent instance name\")\n .option(\"--cleanup\", \"Clean up ephemeral workspace after detach\")\n .action(async (name: string, opts: { cleanup?: boolean }) => {\n try {\n const result = await client.call(\"agent.detach\", {\n name,\n cleanup: opts.cleanup,\n });\n printer.success(\"Process detached.\");\n if (result.workspaceCleaned) {\n printer.dim(\"Ephemeral workspace cleaned up.\");\n }\n } catch (err) {\n presentError(err, printer);\n process.exitCode = 1;\n }\n });\n}\n","import { Command } from \"commander\";\nimport type { RpcClient } from \"../../client/rpc-client\";\nimport { presentError, type CliPrinter, defaultPrinter } from \"../../output/index\";\n\nexport function createAgentRunCommand(client: RpcClient, printer: CliPrinter = defaultPrinter): Command {\n return new Command(\"run\")\n .description(\"Send a prompt to an agent and get the response\")\n .argument(\"<name>\", \"Agent name\")\n .requiredOption(\"--prompt <prompt>\", \"The prompt to send\")\n .option(\"--model <model>\", \"Model to use (e.g. sonnet, opus)\")\n .option(\"--max-turns <turns>\", \"Maximum agentic turns\", parseInt)\n .option(\"--timeout <ms>\", \"Timeout in milliseconds\", parseInt)\n .option(\"--session-id <id>\", \"Resume a specific session\")\n .option(\"-f, --format <format>\", \"Output format: text, json\", \"text\")\n .action(async (name: string, opts: {\n prompt: string;\n model?: string;\n maxTurns?: number;\n timeout?: number;\n sessionId?: string;\n format: string;\n }) => {\n try {\n const rpcTimeout = (opts.timeout ?? 300_000) + 5_000;\n const result = await client.call(\"agent.run\", {\n name,\n prompt: opts.prompt,\n options: {\n model: opts.model,\n maxTurns: opts.maxTurns,\n timeoutMs: opts.timeout,\n sessionId: opts.sessionId,\n },\n }, { timeoutMs: rpcTimeout });\n\n if (opts.format === \"json\") {\n printer.log(JSON.stringify(result, null, 2));\n } else {\n printer.log(result.text);\n }\n } catch (err) {\n presentError(err, printer);\n process.exitCode = 1;\n }\n });\n}\n","import { Command } from \"commander\";\nimport type { RpcClient } from \"../../client/rpc-client\";\nimport { presentError, type CliPrinter, defaultPrinter } from \"../../output/index\";\n\nexport function createAgentPromptCommand(client: RpcClient, printer: CliPrinter = defaultPrinter): Command {\n return new Command(\"prompt\")\n .description(\"Send a message to a running agent's ACP session\")\n .argument(\"<name>\", \"Agent name (must be started with `agent start`)\")\n .requiredOption(\"-m, --message <message>\", \"The message to send\")\n .option(\"--session-id <id>\", \"Specific ACP session ID (uses primary session if omitted)\")\n .option(\"-f, --format <format>\", \"Output format: text, json\", \"text\")\n .action(async (name: string, opts: {\n message: string;\n sessionId?: string;\n format: string;\n }) => {\n try {\n const result = await client.call(\"agent.prompt\", {\n name,\n message: opts.message,\n sessionId: opts.sessionId,\n });\n\n if (opts.format === \"json\") {\n printer.log(JSON.stringify(result, null, 2));\n } else {\n printer.log(result.response);\n }\n } catch (err) {\n presentError(err, printer);\n process.exitCode = 1;\n }\n });\n}\n","import { createInterface, type Interface } from \"node:readline\";\nimport { Command } from \"commander\";\nimport chalk from \"chalk\";\nimport type { RpcClient } from \"../../client/rpc-client\";\nimport { presentError, renderStream, type CliPrinter, defaultPrinter } from \"../../output/index\";\nimport { AcpConnection, type AcpSessionInfo, type SessionNotification } from \"@actant/acp\";\nimport type { StreamChunk } from \"@actant/core\";\n\nexport function createAgentChatCommand(client: RpcClient, printer: CliPrinter = defaultPrinter): Command {\n return new Command(\"chat\")\n .description(\"Start an interactive chat session with an agent\")\n .argument(\"<name>\", \"Agent name\")\n .option(\"-t, --template <template>\", \"Template name (auto-creates instance if not found)\")\n .action(async (name: string, opts: { template?: string }) => {\n try {\n await runChat(client, name, opts, printer);\n } catch (err) {\n presentError(err, printer);\n process.exitCode = 1;\n }\n });\n}\n\nasync function runChat(\n client: RpcClient,\n name: string,\n opts: { template?: string },\n printer: CliPrinter,\n): Promise<void> {\n const alive = await client.ping();\n if (!alive) {\n printer.error(\"Daemon is not running. Start it with: actant daemon start\");\n process.exitCode = 1;\n return;\n }\n\n // Check if the agent is already running (Daemon-managed)\n let daemonManaged = false;\n try {\n const status = await client.call(\"agent.status\", { name });\n if (status.status === \"running\") {\n daemonManaged = true;\n }\n } catch {\n // Not found or not running — will use Direct Bridge\n }\n\n if (daemonManaged) {\n await runDaemonChat(client, name, printer);\n } else {\n await runDirectBridgeChat(client, name, opts, printer);\n }\n}\n\n/**\n * Daemon-managed path: Agent is already running via `agent start`.\n * Uses agent.prompt RPC (synchronous for now; Phase 3 will add Session Lease streaming).\n */\nasync function runDaemonChat(\n client: RpcClient,\n name: string,\n printer: CliPrinter,\n): Promise<void> {\n const meta = await client.call(\"agent.status\", { name });\n printer.log(\n chalk.bold(`Chat with ${meta.name}`) +\n chalk.dim(` (${meta.templateName}@${meta.templateVersion}) [daemon-managed]`),\n );\n printer.log(chalk.dim('Type your message and press Enter. Use \"exit\" or Ctrl+C to quit.\\n'));\n\n const rl = createReadline();\n rl.prompt();\n\n let sessionId: string | undefined;\n\n rl.on(\"line\", async (line: string) => {\n const trimmed = line.trim();\n if (!trimmed) { rl.prompt(); return; }\n if (trimmed === \"exit\" || trimmed === \"quit\") { rl.close(); return; }\n\n try {\n process.stdout.write(chalk.cyan(\"agent> \"));\n const result = await client.call(\"agent.prompt\", {\n name,\n message: trimmed,\n sessionId,\n }, { timeoutMs: 305_000 });\n process.stdout.write(result.response + \"\\n\\n\");\n sessionId = result.sessionId;\n } catch (err) {\n presentError(err, printer);\n }\n rl.prompt();\n });\n\n rl.on(\"close\", () => {\n process.stdout.write(chalk.dim(\"\\nChat ended.\\n\"));\n });\n\n return new Promise((resolve) => {\n rl.on(\"close\", resolve);\n });\n}\n\n/**\n * Direct Bridge path: Proxy spawns Agent via AcpConnection, owns the process.\n * Uses streamPrompt for real-time streaming output.\n */\nasync function runDirectBridgeChat(\n client: RpcClient,\n name: string,\n opts: { template?: string },\n printer: CliPrinter,\n): Promise<void> {\n const resolved = await client.call(\"agent.resolve\", {\n name,\n template: opts.template,\n });\n\n const conn = new AcpConnection({ autoApprove: true });\n let session: AcpSessionInfo | null = null;\n let attached = false;\n\n const cleanup = async () => {\n await conn.close();\n if (attached) {\n try {\n await client.call(\"agent.detach\", { name: resolved.instanceName, cleanup: false });\n } catch {\n // Daemon may be down\n }\n }\n };\n\n try {\n await conn.spawn(resolved.command, resolved.args, resolved.workspaceDir);\n\n await client.call(\"agent.attach\", {\n name: resolved.instanceName,\n pid: process.pid, // register for lifecycle tracking\n metadata: { proxyMode: \"direct-bridge-chat\" },\n });\n attached = true;\n\n const initResult = await conn.initialize();\n const agentName = initResult.agentInfo?.name ?? name;\n\n session = await conn.newSession(resolved.workspaceDir);\n\n printer.log(\n chalk.bold(`Chat with ${agentName}`) +\n chalk.dim(` (direct bridge, session ${session.sessionId.slice(0, 8)}...)`),\n );\n printer.log(chalk.dim('Type your message and press Enter. Use \"exit\" or Ctrl+C to quit.\\n'));\n\n const rl = createReadline();\n\n process.on(\"SIGINT\", () => {\n if (session) {\n conn.cancel(session.sessionId).catch(() => {});\n }\n rl.close();\n });\n\n rl.prompt();\n\n const activeSession = session;\n\n rl.on(\"line\", async (line: string) => {\n const trimmed = line.trim();\n if (!trimmed) { rl.prompt(); return; }\n if (trimmed === \"exit\" || trimmed === \"quit\") { rl.close(); return; }\n\n try {\n const chunkStream = mapNotificationsToChunks(\n conn.streamPrompt(activeSession.sessionId, trimmed),\n );\n await renderStream(chunkStream, { agentLabel: agentName });\n } catch (err) {\n presentError(err, printer);\n }\n rl.prompt();\n });\n\n rl.on(\"close\", () => {\n process.stdout.write(chalk.dim(\"\\nChat ended.\\n\"));\n });\n\n await new Promise<void>((resolve) => {\n rl.on(\"close\", resolve);\n });\n } finally {\n await cleanup();\n }\n}\n\nfunction createReadline(): Interface {\n return createInterface({\n input: process.stdin,\n output: process.stdout,\n prompt: chalk.green(\"you> \"),\n terminal: process.stdin.isTTY ?? false,\n });\n}\n\nasync function* mapNotificationsToChunks(\n notifications: AsyncIterable<SessionNotification>,\n): AsyncIterable<StreamChunk> {\n for await (const notification of notifications) {\n const chunk = notificationToChunk(notification);\n if (chunk) yield chunk;\n }\n}\n\nfunction notificationToChunk(notification: SessionNotification): StreamChunk | null {\n const update = notification.update;\n\n switch (update.sessionUpdate) {\n case \"agent_message_chunk\":\n if (update.content.type === \"text\") {\n return { type: \"text\", content: update.content.text };\n }\n return null;\n\n case \"tool_call\":\n return {\n type: \"tool_use\",\n content: `[Tool: ${update.title ?? \"unknown\"}] ${update.toolCallId}`,\n };\n\n case \"tool_call_update\":\n if (update.status === \"completed\" && update.content) {\n const textParts: string[] = [];\n for (const item of update.content) {\n if (item.type === \"content\" && item.content.type === \"text\") {\n textParts.push(item.content.text);\n }\n }\n if (textParts.length > 0) {\n return { type: \"text\", content: textParts.join(\"\") };\n }\n }\n return null;\n\n default:\n return null;\n }\n}\n","import { Command } from \"commander\";\nimport type { RpcClient } from \"../../client/rpc-client\";\nimport { presentError, type CliPrinter, defaultPrinter } from \"../../output/index\";\n\nexport function createAgentDispatchCommand(client: RpcClient, printer: CliPrinter = defaultPrinter): Command {\n return new Command(\"dispatch\")\n .description(\"Queue a one-off task for an agent's scheduler\")\n .argument(\"<name>\", \"Agent name\")\n .requiredOption(\"-m, --message <message>\", \"The prompt/message to dispatch\")\n .option(\"-p, --priority <priority>\", \"Task priority: low, normal, high, critical\", \"normal\")\n .action(async (name: string, opts: { message: string; priority: string }) => {\n try {\n const result = await client.call(\"agent.dispatch\", {\n name,\n prompt: opts.message,\n priority: opts.priority,\n });\n if (result.queued) {\n printer.log(\"Task queued.\");\n } else {\n printer.dim(`No scheduler for agent \"${name}\". Task not queued.`);\n }\n } catch (err) {\n presentError(err, printer);\n process.exitCode = 1;\n }\n });\n}\n","import { Command } from \"commander\";\nimport type { RpcClient } from \"../../client/rpc-client\";\nimport { presentError, type CliPrinter, defaultPrinter } from \"../../output/index\";\n\nexport function createAgentTasksCommand(client: RpcClient, printer: CliPrinter = defaultPrinter): Command {\n return new Command(\"tasks\")\n .description(\"List queued tasks for an agent's scheduler\")\n .argument(\"<name>\", \"Agent name\")\n .option(\"-f, --format <format>\", \"Output format: table, json\", \"table\")\n .action(async (name: string, opts: { format: string }) => {\n try {\n const result = await client.call(\"agent.tasks\", { name });\n if (opts.format === \"json\") {\n printer.log(JSON.stringify(result, null, 2));\n } else {\n printer.log(`Queued: ${result.queued} Processing: ${result.processing}`);\n if (result.tasks.length > 0) {\n for (const t of result.tasks as Array<{ id: string; prompt: string; priority: string; source: string }>) {\n const promptPreview = (t.prompt ?? \"\").length > 40 ? `${(t.prompt ?? \"\").slice(0, 40)}...` : (t.prompt ?? \"\");\n printer.log(` ${t.id?.slice(0, 8) ?? \"?\"} ${t.priority} ${t.source} ${promptPreview}`);\n }\n }\n }\n } catch (err) {\n presentError(err, printer);\n process.exitCode = 1;\n }\n });\n}\n","import { Command } from \"commander\";\nimport type { RpcClient } from \"../../client/rpc-client\";\nimport { presentError, type CliPrinter, defaultPrinter } from \"../../output/index\";\n\nexport function createAgentLogsCommand(client: RpcClient, printer: CliPrinter = defaultPrinter): Command {\n return new Command(\"logs\")\n .description(\"Show execution logs for an agent's scheduler\")\n .argument(\"<name>\", \"Agent name\")\n .option(\"--limit <n>\", \"Maximum number of records to show\", parseInt, 20)\n .option(\"-f, --format <format>\", \"Output format: table, json\", \"table\")\n .action(async (name: string, opts: { limit: number; format: string }) => {\n try {\n const result = await client.call(\"agent.logs\", { name, limit: opts.limit });\n if (opts.format === \"json\") {\n printer.log(JSON.stringify(result, null, 2));\n } else {\n const records = result as Array<{ taskId: string; status: string; source: string; startedAt: string; durationMs?: number; error?: string }>;\n if (records.length === 0) {\n printer.dim(\"No execution logs.\");\n } else {\n for (const r of records) {\n const dur = r.durationMs != null ? ` ${r.durationMs}ms` : \"\";\n const err = r.error ? ` error: ${r.error}` : \"\";\n printer.log(` ${r.taskId?.slice(0, 8) ?? \"?\"} ${r.status} ${r.source} ${r.startedAt}${dur}${err}`);\n }\n }\n }\n } catch (err) {\n presentError(err, printer);\n process.exitCode = 1;\n }\n });\n}\n","import { Command } from \"commander\";\nimport chalk from \"chalk\";\nimport pkg from \"../../package.json\";\n\nfunction showOverview(): void {\n const version = (pkg as { version?: string }).version ?? \"0.1.0\";\n\n const lines = [\n \"\",\n chalk.bold(\" Actant — Build, manage, and compose AI agents\"),\n chalk.gray(` v${version}`),\n \"\",\n chalk.bold(\" Quick Start:\"),\n ` ${chalk.cyan(\"actant daemon start\")} Start the daemon`,\n ` ${chalk.cyan(\"actant agent create my-agent\")} Create an Agent`,\n ` ${chalk.cyan(\"actant agent start my-agent\")} Start an Agent`,\n ` ${chalk.cyan(\"actant agent chat my-agent\")} Chat with an Agent`,\n \"\",\n chalk.bold(\" Agent Management:\"),\n ` ${chalk.cyan(\"agent\")} create|start|stop|list|chat|run Agent lifecycle`,\n ` ${chalk.cyan(\"agent adopt\")} <path> Adopt existing workspace`,\n ` ${chalk.cyan(\"template\")} list|show Agent templates`,\n ` ${chalk.cyan(\"proxy\")} <name> ACP proxy forwarding`,\n \"\",\n chalk.bold(\" Component Management:\"),\n ` ${chalk.cyan(\"skill\")} list|add|remove|show Manage skills`,\n ` ${chalk.cyan(\"prompt\")} list|add|remove|show Manage prompts`,\n ` ${chalk.cyan(\"mcp\")} list|show Manage MCP server configs`,\n ` ${chalk.cyan(\"workflow\")} list|show Manage workflows`,\n ` ${chalk.cyan(\"plugin\")} list|add|remove|show Manage plugins`,\n \"\",\n chalk.bold(\" Ecosystem:\"),\n ` ${chalk.cyan(\"source\")} list|add|remove|sync Manage component sources`,\n ` ${chalk.cyan(\"preset\")} list|apply Manage preset packs`,\n \"\",\n chalk.bold(\" Scheduling:\"),\n ` ${chalk.cyan(\"schedule\")} list Manage employee agent scheduling`,\n \"\",\n chalk.bold(\" System:\"),\n ` ${chalk.cyan(\"daemon\")} start|stop|status Daemon management`,\n ` ${chalk.cyan(\"help\")} [command] Show help`,\n ` ${chalk.cyan(\"--version\")} Show version`,\n \"\",\n chalk.bold(\" Tips:\"),\n chalk.gray(\" Use 'actant help <command>' for detailed help on a command\"),\n \"\",\n ];\n\n process.stdout.write(lines.join(\"\\n\"));\n}\n\nfunction showCommandHelp(program: Command, commandName: string): void {\n const subcmd = program.commands.find((c) => c.name() === commandName);\n if (subcmd) {\n subcmd.outputHelp();\n } else {\n process.stdout.write(\n chalk.red(`Unknown command: ${commandName}\\n`) +\n chalk.gray(\"Run 'actant help' to see available commands.\\n\"),\n );\n }\n}\n\nexport function createHelpCommand(): Command {\n return new Command(\"help\")\n .argument(\"[command]\", \"Command to get help for\")\n .description(\"Show help information\")\n .action(function (command?: string) {\n const program = this.parent as Command;\n if (command) {\n showCommandHelp(program, command);\n } else {\n showOverview();\n }\n });\n}\n","{\n \"name\": \"@actant/cli\",\n \"version\": \"0.1.3\",\n \"description\": \"CLI for the Actant AI agent platform — build, manage, and compose AI agents\",\n \"type\": \"module\",\n \"license\": \"MIT\",\n \"author\": \"blackplume <blackplume233@gmail.com>\",\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"https://github.com/blackplume233/Actant.git\",\n \"directory\": \"packages/cli\"\n },\n \"homepage\": \"https://github.com/blackplume233/Actant#readme\",\n \"bugs\": \"https://github.com/blackplume233/Actant/issues\",\n \"keywords\": [\n \"actant\",\n \"ai-agent\",\n \"cli\",\n \"agent-platform\"\n ],\n \"publishConfig\": {\n \"access\": \"public\"\n },\n \"files\": [\n \"dist\",\n \"scripts/postinstall.mjs\"\n ],\n \"bin\": {\n \"actant\": \"./dist/bin/actant.js\"\n },\n \"scripts\": {\n \"build\": \"tsup\",\n \"dev\": \"tsx src/index.ts\",\n \"type-check\": \"tsc --noEmit\",\n \"test\": \"vitest run\",\n \"clean\": \"rimraf dist\",\n \"postinstall\": \"node scripts/postinstall.mjs\",\n \"prepublishOnly\": \"tsup\"\n },\n \"dependencies\": {\n \"@actant/acp\": \"workspace:*\",\n \"@actant/api\": \"workspace:*\",\n \"@actant/core\": \"workspace:*\",\n \"@actant/shared\": \"workspace:*\",\n \"@inquirer/prompts\": \"^8.3.0\",\n \"chalk\": \"^5.6.2\",\n \"cli-table3\": \"^0.6.5\",\n \"commander\": \"^14.0.3\"\n }\n}\n","import { Command } from \"commander\";\nimport type { RpcClient } from \"../../client/rpc-client\";\nimport type { CliPrinter } from \"../../output/index\";\nimport { createSkillListCommand } from \"./list\";\nimport { createSkillShowCommand } from \"./show\";\nimport { createSkillAddCommand } from \"./add\";\nimport { createSkillRemoveCommand } from \"./remove\";\nimport { createSkillExportCommand } from \"./export\";\n\nexport function createSkillCommand(client: RpcClient, printer?: CliPrinter): Command {\n const cmd = new Command(\"skill\")\n .description(\"Manage loaded skills\");\n\n cmd.addCommand(createSkillListCommand(client, printer));\n cmd.addCommand(createSkillShowCommand(client, printer));\n cmd.addCommand(createSkillAddCommand(client, printer));\n cmd.addCommand(createSkillRemoveCommand(client, printer));\n cmd.addCommand(createSkillExportCommand(client, printer));\n\n return cmd;\n}\n","import { Command } from \"commander\";\nimport type { RpcClient } from \"../../client/rpc-client\";\nimport { presentError, formatSkillList, type OutputFormat, type CliPrinter, defaultPrinter } from \"../../output/index\";\n\nexport function createSkillListCommand(client: RpcClient, printer: CliPrinter = defaultPrinter): Command {\n return new Command(\"list\")\n .alias(\"ls\")\n .description(\"List all loaded skills\")\n .option(\"-f, --format <format>\", \"Output format: table, json, quiet\", \"table\")\n .action(async (opts: { format: OutputFormat }) => {\n try {\n const skills = await client.call(\"skill.list\", {});\n printer.log(formatSkillList(skills, opts.format));\n } catch (err) {\n presentError(err, printer);\n process.exitCode = 1;\n }\n });\n}\n","import { Command } from \"commander\";\nimport type { RpcClient } from \"../../client/rpc-client\";\nimport { presentError, formatSkillDetail, type OutputFormat, type CliPrinter, defaultPrinter } from \"../../output/index\";\n\nexport function createSkillShowCommand(client: RpcClient, printer: CliPrinter = defaultPrinter): Command {\n return new Command(\"show\")\n .description(\"Show skill details\")\n .argument(\"<name>\", \"Skill name\")\n .option(\"-f, --format <format>\", \"Output format: table, json, quiet\", \"table\")\n .action(async (name: string, opts: { format: OutputFormat }) => {\n try {\n const skill = await client.call(\"skill.get\", { name });\n printer.log(formatSkillDetail(skill, opts.format));\n } catch (err) {\n presentError(err, printer);\n process.exitCode = 1;\n }\n });\n}\n","import { readFile } from \"node:fs/promises\";\nimport { resolve } from \"node:path\";\nimport { Command } from \"commander\";\nimport type { RpcClient } from \"../../client/rpc-client\";\nimport { presentError, type CliPrinter, defaultPrinter } from \"../../output/index\";\n\nexport function createSkillAddCommand(client: RpcClient, printer: CliPrinter = defaultPrinter): Command {\n return new Command(\"add\")\n .description(\"Add a skill from a JSON file\")\n .argument(\"<file>\", \"Path to skill definition JSON file\")\n .action(async (file: string) => {\n try {\n const raw = await readFile(resolve(file), \"utf-8\");\n const component = JSON.parse(raw);\n const result = await client.call(\"skill.add\", { component });\n printer.success(`Skill \"${result.name}\" added successfully.`);\n } catch (err) {\n presentError(err, printer);\n process.exitCode = 1;\n }\n });\n}\n","import { Command } from \"commander\";\nimport type { RpcClient } from \"../../client/rpc-client\";\nimport { presentError, type CliPrinter, defaultPrinter } from \"../../output/index\";\n\nexport function createSkillRemoveCommand(client: RpcClient, printer: CliPrinter = defaultPrinter): Command {\n return new Command(\"remove\")\n .alias(\"rm\")\n .description(\"Remove a loaded skill\")\n .argument(\"<name>\", \"Skill name\")\n .action(async (name: string) => {\n try {\n const result = await client.call(\"skill.remove\", { name });\n if (result.success) {\n printer.success(`Skill \"${name}\" removed.`);\n } else {\n printer.warn(`Skill \"${name}\" not found.`);\n }\n } catch (err) {\n presentError(err, printer);\n process.exitCode = 1;\n }\n });\n}\n","import { Command } from \"commander\";\nimport type { RpcClient } from \"../../client/rpc-client\";\nimport { presentError, type CliPrinter, defaultPrinter } from \"../../output/index\";\n\nexport function createSkillExportCommand(client: RpcClient, printer: CliPrinter = defaultPrinter): Command {\n return new Command(\"export\")\n .description(\"Export a skill to a JSON file\")\n .argument(\"<name>\", \"Skill name\")\n .option(\"-o, --out <file>\", \"Output file path\", \"./{name}.json\")\n .action(async (name: string, opts: { out: string }) => {\n try {\n const outPath = opts.out.replace(\"{name}\", name);\n await client.call(\"skill.export\", { name, filePath: outPath });\n printer.success(`Skill \"${name}\" exported to ${outPath}`);\n } catch (err) {\n presentError(err, printer);\n process.exitCode = 1;\n }\n });\n}\n","import { Command } from \"commander\";\nimport type { RpcClient } from \"../../client/rpc-client\";\nimport type { CliPrinter } from \"../../output/index\";\nimport { createPromptListCommand } from \"./list\";\nimport { createPromptShowCommand } from \"./show\";\nimport { createPromptAddCommand } from \"./add\";\nimport { createPromptRemoveCommand } from \"./remove\";\nimport { createPromptExportCommand } from \"./export\";\n\nexport function createPromptCommand(client: RpcClient, printer?: CliPrinter): Command {\n const cmd = new Command(\"prompt\")\n .description(\"Manage loaded prompts\");\n\n cmd.addCommand(createPromptListCommand(client, printer));\n cmd.addCommand(createPromptShowCommand(client, printer));\n cmd.addCommand(createPromptAddCommand(client, printer));\n cmd.addCommand(createPromptRemoveCommand(client, printer));\n cmd.addCommand(createPromptExportCommand(client, printer));\n\n return cmd;\n}\n","import { Command } from \"commander\";\nimport type { RpcClient } from \"../../client/rpc-client\";\nimport { presentError, formatPromptList, type OutputFormat, type CliPrinter, defaultPrinter } from \"../../output/index\";\n\nexport function createPromptListCommand(client: RpcClient, printer: CliPrinter = defaultPrinter): Command {\n return new Command(\"list\")\n .alias(\"ls\")\n .description(\"List all loaded prompts\")\n .option(\"-f, --format <format>\", \"Output format: table, json, quiet\", \"table\")\n .action(async (opts: { format: OutputFormat }) => {\n try {\n const prompts = await client.call(\"prompt.list\", {});\n printer.log(formatPromptList(prompts, opts.format));\n } catch (err) {\n presentError(err, printer);\n process.exitCode = 1;\n }\n });\n}\n","import { Command } from \"commander\";\nimport type { RpcClient } from \"../../client/rpc-client\";\nimport { presentError, formatPromptDetail, type OutputFormat, type CliPrinter, defaultPrinter } from \"../../output/index\";\n\nexport function createPromptShowCommand(client: RpcClient, printer: CliPrinter = defaultPrinter): Command {\n return new Command(\"show\")\n .description(\"Show prompt details\")\n .argument(\"<name>\", \"Prompt name\")\n .option(\"-f, --format <format>\", \"Output format: table, json, quiet\", \"table\")\n .action(async (name: string, opts: { format: OutputFormat }) => {\n try {\n const prompt = await client.call(\"prompt.get\", { name });\n printer.log(formatPromptDetail(prompt, opts.format));\n } catch (err) {\n presentError(err, printer);\n process.exitCode = 1;\n }\n });\n}\n","import { readFile } from \"node:fs/promises\";\nimport { resolve } from \"node:path\";\nimport { Command } from \"commander\";\nimport type { RpcClient } from \"../../client/rpc-client\";\nimport { presentError, type CliPrinter, defaultPrinter } from \"../../output/index\";\n\nexport function createPromptAddCommand(client: RpcClient, printer: CliPrinter = defaultPrinter): Command {\n return new Command(\"add\")\n .description(\"Add a prompt from a JSON file\")\n .argument(\"<file>\", \"Path to prompt definition JSON file\")\n .action(async (file: string) => {\n try {\n const raw = await readFile(resolve(file), \"utf-8\");\n const component = JSON.parse(raw);\n const result = await client.call(\"prompt.add\", { component });\n printer.success(`Prompt \"${result.name}\" added successfully.`);\n } catch (err) {\n presentError(err, printer);\n process.exitCode = 1;\n }\n });\n}\n","import { Command } from \"commander\";\nimport type { RpcClient } from \"../../client/rpc-client\";\nimport { presentError, type CliPrinter, defaultPrinter } from \"../../output/index\";\n\nexport function createPromptRemoveCommand(client: RpcClient, printer: CliPrinter = defaultPrinter): Command {\n return new Command(\"remove\")\n .alias(\"rm\")\n .description(\"Remove a loaded prompt\")\n .argument(\"<name>\", \"Prompt name\")\n .action(async (name: string) => {\n try {\n const result = await client.call(\"prompt.remove\", { name });\n if (result.success) {\n printer.success(`Prompt \"${name}\" removed.`);\n } else {\n printer.warn(`Prompt \"${name}\" not found.`);\n }\n } catch (err) {\n presentError(err, printer);\n process.exitCode = 1;\n }\n });\n}\n","import { Command } from \"commander\";\nimport type { RpcClient } from \"../../client/rpc-client\";\nimport { presentError, type CliPrinter, defaultPrinter } from \"../../output/index\";\n\nexport function createPromptExportCommand(client: RpcClient, printer: CliPrinter = defaultPrinter): Command {\n return new Command(\"export\")\n .description(\"Export a prompt to a JSON file\")\n .argument(\"<name>\", \"Prompt name\")\n .option(\"-o, --out <file>\", \"Output file path\", \"./{name}.json\")\n .action(async (name: string, opts: { out: string }) => {\n try {\n const outPath = opts.out.replace(\"{name}\", name);\n await client.call(\"prompt.export\", { name, filePath: outPath });\n printer.success(`Prompt \"${name}\" exported to ${outPath}`);\n } catch (err) {\n presentError(err, printer);\n process.exitCode = 1;\n }\n });\n}\n","import { Command } from \"commander\";\nimport type { RpcClient } from \"../../client/rpc-client\";\nimport type { CliPrinter } from \"../../output/index\";\nimport { createMcpListCommand } from \"./list\";\nimport { createMcpShowCommand } from \"./show\";\nimport { createMcpAddCommand } from \"./add\";\nimport { createMcpRemoveCommand } from \"./remove\";\nimport { createMcpExportCommand } from \"./export\";\n\nexport function createMcpCommand(client: RpcClient, printer?: CliPrinter): Command {\n const cmd = new Command(\"mcp\")\n .description(\"Manage loaded MCP server configs\");\n\n cmd.addCommand(createMcpListCommand(client, printer));\n cmd.addCommand(createMcpShowCommand(client, printer));\n cmd.addCommand(createMcpAddCommand(client, printer));\n cmd.addCommand(createMcpRemoveCommand(client, printer));\n cmd.addCommand(createMcpExportCommand(client, printer));\n\n return cmd;\n}\n","import { Command } from \"commander\";\nimport type { RpcClient } from \"../../client/rpc-client\";\nimport { presentError, formatMcpList, type OutputFormat, type CliPrinter, defaultPrinter } from \"../../output/index\";\n\nexport function createMcpListCommand(client: RpcClient, printer: CliPrinter = defaultPrinter): Command {\n return new Command(\"list\")\n .alias(\"ls\")\n .description(\"List all loaded MCP server configs\")\n .option(\"-f, --format <format>\", \"Output format: table, json, quiet\", \"table\")\n .action(async (opts: { format: OutputFormat }) => {\n try {\n const servers = await client.call(\"mcp.list\", {});\n printer.log(formatMcpList(servers, opts.format));\n } catch (err) {\n presentError(err, printer);\n process.exitCode = 1;\n }\n });\n}\n","import { Command } from \"commander\";\nimport type { RpcClient } from \"../../client/rpc-client\";\nimport { presentError, formatMcpDetail, type OutputFormat, type CliPrinter, defaultPrinter } from \"../../output/index\";\n\nexport function createMcpShowCommand(client: RpcClient, printer: CliPrinter = defaultPrinter): Command {\n return new Command(\"show\")\n .description(\"Show MCP server config details\")\n .argument(\"<name>\", \"MCP server name\")\n .option(\"-f, --format <format>\", \"Output format: table, json, quiet\", \"table\")\n .action(async (name: string, opts: { format: OutputFormat }) => {\n try {\n const server = await client.call(\"mcp.get\", { name });\n printer.log(formatMcpDetail(server, opts.format));\n } catch (err) {\n presentError(err, printer);\n process.exitCode = 1;\n }\n });\n}\n","import { readFile } from \"node:fs/promises\";\nimport { resolve } from \"node:path\";\nimport { Command } from \"commander\";\nimport type { RpcClient } from \"../../client/rpc-client\";\nimport { presentError, type CliPrinter, defaultPrinter } from \"../../output/index\";\n\nexport function createMcpAddCommand(client: RpcClient, printer: CliPrinter = defaultPrinter): Command {\n return new Command(\"add\")\n .description(\"Add an MCP server config from a JSON file\")\n .argument(\"<file>\", \"Path to MCP server definition JSON file\")\n .action(async (file: string) => {\n try {\n const raw = await readFile(resolve(file), \"utf-8\");\n const component = JSON.parse(raw);\n const result = await client.call(\"mcp.add\", { component });\n printer.success(`MCP \"${result.name}\" added successfully.`);\n } catch (err) {\n presentError(err, printer);\n process.exitCode = 1;\n }\n });\n}\n","import { Command } from \"commander\";\nimport type { RpcClient } from \"../../client/rpc-client\";\nimport { presentError, type CliPrinter, defaultPrinter } from \"../../output/index\";\n\nexport function createMcpRemoveCommand(client: RpcClient, printer: CliPrinter = defaultPrinter): Command {\n return new Command(\"remove\")\n .alias(\"rm\")\n .description(\"Remove a loaded MCP server config\")\n .argument(\"<name>\", \"MCP server name\")\n .action(async (name: string) => {\n try {\n const result = await client.call(\"mcp.remove\", { name });\n if (result.success) {\n printer.success(`MCP \"${name}\" removed.`);\n } else {\n printer.warn(`MCP \"${name}\" not found.`);\n }\n } catch (err) {\n presentError(err, printer);\n process.exitCode = 1;\n }\n });\n}\n","import { Command } from \"commander\";\nimport type { RpcClient } from \"../../client/rpc-client\";\nimport { presentError, type CliPrinter, defaultPrinter } from \"../../output/index\";\n\nexport function createMcpExportCommand(client: RpcClient, printer: CliPrinter = defaultPrinter): Command {\n return new Command(\"export\")\n .description(\"Export an MCP server config to a JSON file\")\n .argument(\"<name>\", \"MCP server name\")\n .option(\"-o, --out <file>\", \"Output file path\", \"./{name}.json\")\n .action(async (name: string, opts: { out: string }) => {\n try {\n const outPath = opts.out.replace(\"{name}\", name);\n await client.call(\"mcp.export\", { name, filePath: outPath });\n printer.success(`MCP \"${name}\" exported to ${outPath}`);\n } catch (err) {\n presentError(err, printer);\n process.exitCode = 1;\n }\n });\n}\n","import { Command } from \"commander\";\nimport type { RpcClient } from \"../../client/rpc-client\";\nimport type { CliPrinter } from \"../../output/index\";\nimport { createWorkflowListCommand } from \"./list\";\nimport { createWorkflowShowCommand } from \"./show\";\nimport { createWorkflowAddCommand } from \"./add\";\nimport { createWorkflowRemoveCommand } from \"./remove\";\nimport { createWorkflowExportCommand } from \"./export\";\n\nexport function createWorkflowCommand(client: RpcClient, printer?: CliPrinter): Command {\n const cmd = new Command(\"workflow\")\n .description(\"Manage loaded workflows\");\n\n cmd.addCommand(createWorkflowListCommand(client, printer));\n cmd.addCommand(createWorkflowShowCommand(client, printer));\n cmd.addCommand(createWorkflowAddCommand(client, printer));\n cmd.addCommand(createWorkflowRemoveCommand(client, printer));\n cmd.addCommand(createWorkflowExportCommand(client, printer));\n\n return cmd;\n}\n","import { Command } from \"commander\";\nimport type { RpcClient } from \"../../client/rpc-client\";\nimport { presentError, formatWorkflowList, type OutputFormat, type CliPrinter, defaultPrinter } from \"../../output/index\";\n\nexport function createWorkflowListCommand(client: RpcClient, printer: CliPrinter = defaultPrinter): Command {\n return new Command(\"list\")\n .alias(\"ls\")\n .description(\"List all loaded workflows\")\n .option(\"-f, --format <format>\", \"Output format: table, json, quiet\", \"table\")\n .action(async (opts: { format: OutputFormat }) => {\n try {\n const workflows = await client.call(\"workflow.list\", {});\n printer.log(formatWorkflowList(workflows, opts.format));\n } catch (err) {\n presentError(err, printer);\n process.exitCode = 1;\n }\n });\n}\n","import { Command } from \"commander\";\nimport type { RpcClient } from \"../../client/rpc-client\";\nimport { presentError, formatWorkflowDetail, type OutputFormat, type CliPrinter, defaultPrinter } from \"../../output/index\";\n\nexport function createWorkflowShowCommand(client: RpcClient, printer: CliPrinter = defaultPrinter): Command {\n return new Command(\"show\")\n .description(\"Show workflow details\")\n .argument(\"<name>\", \"Workflow name\")\n .option(\"-f, --format <format>\", \"Output format: table, json, quiet\", \"table\")\n .action(async (name: string, opts: { format: OutputFormat }) => {\n try {\n const workflow = await client.call(\"workflow.get\", { name });\n printer.log(formatWorkflowDetail(workflow, opts.format));\n } catch (err) {\n presentError(err, printer);\n process.exitCode = 1;\n }\n });\n}\n","import { readFile } from \"node:fs/promises\";\nimport { resolve } from \"node:path\";\nimport { Command } from \"commander\";\nimport type { RpcClient } from \"../../client/rpc-client\";\nimport { presentError, type CliPrinter, defaultPrinter } from \"../../output/index\";\n\nexport function createWorkflowAddCommand(client: RpcClient, printer: CliPrinter = defaultPrinter): Command {\n return new Command(\"add\")\n .description(\"Add a workflow from a JSON file\")\n .argument(\"<file>\", \"Path to workflow definition JSON file\")\n .action(async (file: string) => {\n try {\n const raw = await readFile(resolve(file), \"utf-8\");\n const component = JSON.parse(raw);\n const result = await client.call(\"workflow.add\", { component });\n printer.success(`Workflow \"${result.name}\" added successfully.`);\n } catch (err) {\n presentError(err, printer);\n process.exitCode = 1;\n }\n });\n}\n","import { Command } from \"commander\";\nimport type { RpcClient } from \"../../client/rpc-client\";\nimport { presentError, type CliPrinter, defaultPrinter } from \"../../output/index\";\n\nexport function createWorkflowRemoveCommand(client: RpcClient, printer: CliPrinter = defaultPrinter): Command {\n return new Command(\"remove\")\n .alias(\"rm\")\n .description(\"Remove a loaded workflow\")\n .argument(\"<name>\", \"Workflow name\")\n .action(async (name: string) => {\n try {\n const result = await client.call(\"workflow.remove\", { name });\n if (result.success) {\n printer.success(`Workflow \"${name}\" removed.`);\n } else {\n printer.warn(`Workflow \"${name}\" not found.`);\n }\n } catch (err) {\n presentError(err, printer);\n process.exitCode = 1;\n }\n });\n}\n","import { Command } from \"commander\";\nimport type { RpcClient } from \"../../client/rpc-client\";\nimport { presentError, type CliPrinter, defaultPrinter } from \"../../output/index\";\n\nexport function createWorkflowExportCommand(client: RpcClient, printer: CliPrinter = defaultPrinter): Command {\n return new Command(\"export\")\n .description(\"Export a workflow to a JSON file\")\n .argument(\"<name>\", \"Workflow name\")\n .option(\"-o, --out <file>\", \"Output file path\", \"./{name}.json\")\n .action(async (name: string, opts: { out: string }) => {\n try {\n const outPath = opts.out.replace(\"{name}\", name);\n await client.call(\"workflow.export\", { name, filePath: outPath });\n printer.success(`Workflow \"${name}\" exported to ${outPath}`);\n } catch (err) {\n presentError(err, printer);\n process.exitCode = 1;\n }\n });\n}\n","import { Command } from \"commander\";\nimport type { RpcClient } from \"../../client/rpc-client\";\nimport type { CliPrinter } from \"../../output/index\";\nimport { createPluginListCommand } from \"./list\";\nimport { createPluginShowCommand } from \"./show\";\nimport { createPluginAddCommand } from \"./add\";\nimport { createPluginRemoveCommand } from \"./remove\";\nimport { createPluginExportCommand } from \"./export\";\n\nexport function createPluginCommand(client: RpcClient, printer?: CliPrinter): Command {\n const cmd = new Command(\"plugin\")\n .description(\"Manage loaded plugins\");\n\n cmd.addCommand(createPluginListCommand(client, printer));\n cmd.addCommand(createPluginShowCommand(client, printer));\n cmd.addCommand(createPluginAddCommand(client, printer));\n cmd.addCommand(createPluginRemoveCommand(client, printer));\n cmd.addCommand(createPluginExportCommand(client, printer));\n\n return cmd;\n}\n","import { Command } from \"commander\";\nimport type { RpcClient } from \"../../client/rpc-client\";\nimport { presentError, formatPluginList, type OutputFormat, type CliPrinter, defaultPrinter } from \"../../output/index\";\n\nexport function createPluginListCommand(client: RpcClient, printer: CliPrinter = defaultPrinter): Command {\n return new Command(\"list\")\n .alias(\"ls\")\n .description(\"List all plugins\")\n .option(\"-f, --format <format>\", \"Output format: table, json, quiet\", \"table\")\n .action(async (opts: { format: OutputFormat }) => {\n try {\n const plugins = await client.call(\"plugin.list\", {});\n printer.log(formatPluginList(plugins, opts.format));\n } catch (err) {\n presentError(err, printer);\n process.exitCode = 1;\n }\n });\n}\n","import { Command } from \"commander\";\nimport type { RpcClient } from \"../../client/rpc-client\";\nimport { presentError, formatPluginDetail, type OutputFormat, type CliPrinter, defaultPrinter } from \"../../output/index\";\n\nexport function createPluginShowCommand(client: RpcClient, printer: CliPrinter = defaultPrinter): Command {\n return new Command(\"show\")\n .description(\"Show plugin details\")\n .argument(\"<name>\", \"Plugin name\")\n .option(\"-f, --format <format>\", \"Output format: table, json, quiet\", \"table\")\n .action(async (name: string, opts: { format: OutputFormat }) => {\n try {\n const plugin = await client.call(\"plugin.get\", { name });\n printer.log(formatPluginDetail(plugin, opts.format));\n } catch (err) {\n presentError(err, printer);\n process.exitCode = 1;\n }\n });\n}\n","import { readFile } from \"node:fs/promises\";\nimport { resolve } from \"node:path\";\nimport { Command } from \"commander\";\nimport type { RpcClient } from \"../../client/rpc-client\";\nimport { presentError, type CliPrinter, defaultPrinter } from \"../../output/index\";\n\nexport function createPluginAddCommand(client: RpcClient, printer: CliPrinter = defaultPrinter): Command {\n return new Command(\"add\")\n .description(\"Add a plugin from a JSON file\")\n .argument(\"<file>\", \"Path to plugin definition JSON file\")\n .action(async (file: string) => {\n try {\n const raw = await readFile(resolve(file), \"utf-8\");\n const component = JSON.parse(raw);\n const result = await client.call(\"plugin.add\", { component });\n printer.success(`Plugin \"${result.name}\" added successfully.`);\n } catch (err) {\n presentError(err, printer);\n process.exitCode = 1;\n }\n });\n}\n","import { Command } from \"commander\";\nimport type { RpcClient } from \"../../client/rpc-client\";\nimport { presentError, type CliPrinter, defaultPrinter } from \"../../output/index\";\n\nexport function createPluginRemoveCommand(client: RpcClient, printer: CliPrinter = defaultPrinter): Command {\n return new Command(\"remove\")\n .alias(\"rm\")\n .description(\"Remove a loaded plugin\")\n .argument(\"<name>\", \"Plugin name\")\n .action(async (name: string) => {\n try {\n const result = await client.call(\"plugin.remove\", { name });\n if (result.success) {\n printer.success(`Plugin \"${name}\" removed.`);\n } else {\n printer.warn(`Plugin \"${name}\" not found.`);\n }\n } catch (err) {\n presentError(err, printer);\n process.exitCode = 1;\n }\n });\n}\n","import { Command } from \"commander\";\nimport type { RpcClient } from \"../../client/rpc-client\";\nimport { presentError, type CliPrinter, defaultPrinter } from \"../../output/index\";\n\nexport function createPluginExportCommand(client: RpcClient, printer: CliPrinter = defaultPrinter): Command {\n return new Command(\"export\")\n .description(\"Export a plugin to a JSON file\")\n .argument(\"<name>\", \"Plugin name\")\n .option(\"-o, --out <file>\", \"Output file path\", \"./{name}.json\")\n .action(async (name: string, opts: { out: string }) => {\n try {\n const outPath = opts.out.replace(\"{name}\", name);\n await client.call(\"plugin.export\", { name, filePath: outPath });\n printer.success(`Plugin \"${name}\" exported to ${outPath}`);\n } catch (err) {\n presentError(err, printer);\n process.exitCode = 1;\n }\n });\n}\n","import { Command } from \"commander\";\nimport type { RpcClient } from \"../../client/rpc-client\";\nimport type { CliPrinter } from \"../../output/index\";\nimport { createSourceListCommand } from \"./list\";\nimport { createSourceAddCommand } from \"./add\";\nimport { createSourceRemoveCommand } from \"./remove\";\nimport { createSourceSyncCommand } from \"./sync\";\n\nexport function createSourceCommand(client: RpcClient, printer?: CliPrinter): Command {\n const cmd = new Command(\"source\")\n .description(\"Manage component sources (GitHub repos, local dirs)\");\n\n cmd.addCommand(createSourceListCommand(client, printer));\n cmd.addCommand(createSourceAddCommand(client, printer));\n cmd.addCommand(createSourceRemoveCommand(client, printer));\n cmd.addCommand(createSourceSyncCommand(client, printer));\n\n return cmd;\n}\n","import { Command } from \"commander\";\nimport type { RpcClient } from \"../../client/rpc-client\";\nimport { presentError, type OutputFormat, type CliPrinter, defaultPrinter } from \"../../output/index\";\nimport type { SourceEntry } from \"@actant/shared\";\n\nexport function createSourceListCommand(client: RpcClient, printer: CliPrinter = defaultPrinter): Command {\n return new Command(\"list\")\n .alias(\"ls\")\n .description(\"List registered component sources\")\n .option(\"-f, --format <format>\", \"Output format: table, json, quiet\", \"table\")\n .action(async (opts: { format: OutputFormat }) => {\n try {\n const sources: SourceEntry[] = await client.call(\"source.list\", {});\n if (opts.format === \"json\") {\n printer.log(JSON.stringify(sources, null, 2));\n } else if (opts.format === \"quiet\") {\n printer.log(sources.map((s) => s.name).join(\"\\n\"));\n } else {\n if (sources.length === 0) {\n printer.dim(\"No sources registered.\");\n } else {\n for (const s of sources) {\n const cfg = s.config;\n const detail = cfg.type === \"github\" ? cfg.url : cfg.type === \"local\" ? cfg.path : \"unknown\";\n printer.log(` ${s.name} (${cfg.type}) ${detail}`);\n }\n }\n }\n } catch (err) {\n presentError(err, printer);\n process.exitCode = 1;\n }\n });\n}\n","import { Command } from \"commander\";\nimport type { RpcClient } from \"../../client/rpc-client\";\nimport { presentError, type CliPrinter, defaultPrinter } from \"../../output/index\";\n\nexport function createSourceAddCommand(client: RpcClient, printer: CliPrinter = defaultPrinter): Command {\n return new Command(\"add\")\n .description(\"Register a component source\")\n .argument(\"<url-or-path>\", \"GitHub URL or local directory path\")\n .requiredOption(\"--name <name>\", \"Package name (namespace prefix)\")\n .option(\"--type <type>\", \"Source type: github, local\", \"github\")\n .option(\"--branch <branch>\", \"Git branch (for github type)\", \"main\")\n .action(async (urlOrPath: string, opts: { name: string; type: string; branch: string }) => {\n try {\n const config = opts.type === \"local\"\n ? { type: \"local\" as const, path: urlOrPath }\n : { type: \"github\" as const, url: urlOrPath, branch: opts.branch };\n const result = await client.call(\"source.add\", { name: opts.name, config });\n const c = result.components;\n printer.success(\n `Source \"${opts.name}\" added. Components: ${c.skills} skills, ${c.prompts} prompts, ${c.mcp} mcp, ${c.workflows} workflows, ${c.presets} presets`,\n );\n } catch (err) {\n presentError(err, printer);\n process.exitCode = 1;\n }\n });\n}\n","import { Command } from \"commander\";\nimport type { RpcClient } from \"../../client/rpc-client\";\nimport { presentError, type CliPrinter, defaultPrinter } from \"../../output/index\";\n\nexport function createSourceRemoveCommand(client: RpcClient, printer: CliPrinter = defaultPrinter): Command {\n return new Command(\"remove\")\n .alias(\"rm\")\n .description(\"Remove a registered source\")\n .argument(\"<name>\", \"Source name\")\n .action(async (name: string) => {\n try {\n const result = await client.call(\"source.remove\", { name });\n if (result.success) {\n printer.success(`Source \"${name}\" removed.`);\n } else {\n printer.warn(`Source \"${name}\" not found.`);\n }\n } catch (err) {\n presentError(err, printer);\n process.exitCode = 1;\n }\n });\n}\n","import chalk from \"chalk\";\nimport { Command } from \"commander\";\nimport type { RpcClient } from \"../../client/rpc-client\";\nimport { presentError, type CliPrinter, defaultPrinter } from \"../../output/index\";\n\nexport function createSourceSyncCommand(client: RpcClient, printer: CliPrinter = defaultPrinter): Command {\n return new Command(\"sync\")\n .description(\"Sync component source(s)\")\n .argument(\"[name]\", \"Source name (syncs all if omitted)\")\n .action(async (name?: string) => {\n try {\n const result = await client.call(\"source.sync\", { name });\n printer.success(`Synced: ${result.synced.join(\", \")}`);\n\n const report = result.report;\n if (report) {\n const parts: string[] = [];\n if (report.addedCount > 0) parts.push(chalk.green(`+${report.addedCount} added`));\n if (report.updatedCount > 0) parts.push(chalk.yellow(`${report.updatedCount} updated`));\n if (report.removedCount > 0) parts.push(chalk.red(`-${report.removedCount} removed`));\n if (parts.length > 0) {\n printer.log(` ${parts.join(\", \")}`);\n }\n if (report.hasBreakingChanges) {\n printer.warn(\" ⚠ Breaking changes detected (major version bump). Review updated components.\");\n }\n }\n } catch (err) {\n presentError(err, printer);\n process.exitCode = 1;\n }\n });\n}\n","import { Command } from \"commander\";\nimport type { RpcClient } from \"../../client/rpc-client\";\nimport type { CliPrinter } from \"../../output/index\";\nimport { createPresetListCommand } from \"./list\";\nimport { createPresetShowCommand } from \"./show\";\nimport { createPresetApplyCommand } from \"./apply\";\n\nexport function createPresetCommand(client: RpcClient, printer?: CliPrinter): Command {\n const cmd = new Command(\"preset\")\n .description(\"Manage component presets (bundled compositions)\");\n\n cmd.addCommand(createPresetListCommand(client, printer));\n cmd.addCommand(createPresetShowCommand(client, printer));\n cmd.addCommand(createPresetApplyCommand(client, printer));\n\n return cmd;\n}\n","import { Command } from \"commander\";\nimport type { RpcClient } from \"../../client/rpc-client\";\nimport { presentError, type OutputFormat, type CliPrinter, defaultPrinter } from \"../../output/index\";\nimport type { PresetDefinition } from \"@actant/shared\";\n\nexport function createPresetListCommand(client: RpcClient, printer: CliPrinter = defaultPrinter): Command {\n return new Command(\"list\")\n .alias(\"ls\")\n .description(\"List available presets from registered sources\")\n .argument(\"[package]\", \"Filter by source package name\")\n .option(\"-f, --format <format>\", \"Output format: table, json, quiet\", \"table\")\n .action(async (packageName: string | undefined, opts: { format: OutputFormat }) => {\n try {\n const presets: PresetDefinition[] = await client.call(\"preset.list\", { packageName });\n if (opts.format === \"json\") {\n printer.log(JSON.stringify(presets, null, 2));\n } else if (opts.format === \"quiet\") {\n printer.log(presets.map((p) => p.name).join(\"\\n\"));\n } else {\n if (presets.length === 0) {\n printer.dim(\"No presets available.\");\n } else {\n for (const p of presets) {\n const desc = p.description ? ` — ${p.description}` : \"\";\n printer.log(` ${p.name}${desc}`);\n }\n }\n }\n } catch (err) {\n presentError(err, printer);\n process.exitCode = 1;\n }\n });\n}\n","import { Command } from \"commander\";\nimport type { RpcClient } from \"../../client/rpc-client\";\nimport { presentError, type OutputFormat, type CliPrinter, defaultPrinter } from \"../../output/index\";\n\nexport function createPresetShowCommand(client: RpcClient, printer: CliPrinter = defaultPrinter): Command {\n return new Command(\"show\")\n .description(\"Show preset details\")\n .argument(\"<qualified-name>\", \"Preset qualified name (package@preset)\")\n .option(\"-f, --format <format>\", \"Output format: table, json\", \"table\")\n .action(async (qualifiedName: string, opts: { format: OutputFormat }) => {\n try {\n const preset = await client.call(\"preset.show\", { qualifiedName });\n if (opts.format === \"json\") {\n printer.log(JSON.stringify(preset, null, 2));\n } else {\n printer.log(`Preset: ${preset.name}`);\n if (preset.description) printer.log(`Description: ${preset.description}`);\n if (preset.skills?.length) printer.log(`Skills: ${preset.skills.join(\", \")}`);\n if (preset.prompts?.length) printer.log(`Prompts: ${preset.prompts.join(\", \")}`);\n if (preset.mcpServers?.length) printer.log(`MCP Servers: ${preset.mcpServers.join(\", \")}`);\n if (preset.workflows?.length) printer.log(`Workflows: ${preset.workflows.join(\", \")}`);\n }\n } catch (err) {\n presentError(err, printer);\n process.exitCode = 1;\n }\n });\n}\n","import { Command } from \"commander\";\nimport type { RpcClient } from \"../../client/rpc-client\";\nimport { presentError, type CliPrinter, defaultPrinter } from \"../../output/index\";\n\nexport function createPresetApplyCommand(client: RpcClient, printer: CliPrinter = defaultPrinter): Command {\n return new Command(\"apply\")\n .description(\"Apply a preset to a template (adds all preset components)\")\n .argument(\"<qualified-name>\", \"Preset qualified name (package@preset)\")\n .argument(\"<template>\", \"Template name to apply to\")\n .action(async (qualifiedName: string, templateName: string) => {\n try {\n const result = await client.call(\"preset.apply\", { qualifiedName, templateName });\n printer.success(`Preset \"${qualifiedName}\" applied to template \"${result.name}\".`);\n } catch (err) {\n presentError(err, printer);\n process.exitCode = 1;\n }\n });\n}\n","import { Command } from \"commander\";\nimport type { RpcClient } from \"../../client/rpc-client\";\nimport type { CliPrinter } from \"../../output/index\";\nimport { createScheduleListCommand } from \"./list\";\n\nexport function createScheduleCommand(client: RpcClient, printer?: CliPrinter): Command {\n const cmd = new Command(\"schedule\")\n .description(\"Manage agent schedules (heartbeat, cron, hooks)\");\n\n cmd.addCommand(createScheduleListCommand(client, printer));\n\n return cmd;\n}\n","import { Command } from \"commander\";\nimport type { RpcClient } from \"../../client/rpc-client\";\nimport { presentError, type CliPrinter, defaultPrinter } from \"../../output/index\";\n\nexport function createScheduleListCommand(client: RpcClient, printer: CliPrinter = defaultPrinter): Command {\n return new Command(\"list\")\n .alias(\"ls\")\n .description(\"List schedule sources for an agent\")\n .argument(\"<name>\", \"Agent name\")\n .option(\"-f, --format <format>\", \"Output format: table, json\", \"table\")\n .action(async (name: string, opts: { format: string }) => {\n try {\n const result = await client.call(\"schedule.list\", { name });\n if (opts.format === \"json\") {\n printer.log(JSON.stringify(result, null, 2));\n } else {\n if (result.sources.length === 0 && !result.running) {\n printer.dim(`No scheduler for agent \"${name}\".`);\n } else {\n printer.log(`Scheduler: ${result.running ? \"running\" : \"stopped\"}`);\n for (const s of result.sources) {\n printer.log(` ${s.id} (${s.type}) ${s.active ? \"active\" : \"inactive\"}`);\n }\n }\n }\n } catch (err) {\n presentError(err, printer);\n process.exitCode = 1;\n }\n });\n}\n","import { Command } from \"commander\";\nimport type { CliPrinter } from \"../../output/index\";\nimport { createDaemonStartCommand } from \"./start\";\nimport { createDaemonStopCommand } from \"./stop\";\nimport { createDaemonStatusCommand } from \"./status\";\n\nexport function createDaemonCommand(printer?: CliPrinter): Command {\n const cmd = new Command(\"daemon\")\n .description(\"Manage the Actant daemon\");\n\n cmd.addCommand(createDaemonStartCommand(printer));\n cmd.addCommand(createDaemonStopCommand(printer));\n cmd.addCommand(createDaemonStatusCommand(printer));\n\n return cmd;\n}\n","import { Command } from \"commander\";\nimport { join } from \"node:path\";\nimport { fork, spawn } from \"node:child_process\";\nimport chalk from \"chalk\";\nimport { onShutdownSignal, isWindows, isSingleExecutable } from \"@actant/shared\";\nimport { RpcClient } from \"../../client/rpc-client\";\nimport { presentError, type CliPrinter, defaultPrinter } from \"../../output/index\";\nimport { defaultSocketPath } from \"../../program\";\n\n/**\n * Internal flag used by SEA binary to re-exec itself in daemon mode.\n * When the binary is a single executable, there's no separate daemon-entry.js\n * to fork — instead we spawn ourselves with this flag.\n */\nexport const SEA_DAEMON_FLAG = \"--__actant-daemon\";\n\nfunction spawnDaemonChild() {\n if (isSingleExecutable()) {\n return spawn(process.execPath, [SEA_DAEMON_FLAG], {\n detached: true,\n stdio: [\"ignore\", \"ignore\", \"pipe\"],\n env: process.env,\n });\n }\n\n const daemonScript = join(import.meta.dirname, \"daemon-entry.js\");\n\n // Windows: fork() + detached doesn't truly detach due to IPC channel\n // keeping parent-child bound together (Node.js #36808).\n return isWindows()\n ? spawn(process.execPath, [daemonScript], {\n detached: true,\n stdio: [\"ignore\", \"ignore\", \"pipe\"],\n env: process.env,\n })\n : fork(daemonScript, [], {\n detached: true,\n stdio: [\"ignore\", \"ignore\", \"pipe\", \"ipc\"],\n env: process.env,\n });\n}\n\nexport function createDaemonStartCommand(printer: CliPrinter = defaultPrinter): Command {\n return new Command(\"start\")\n .description(\"Start the Actant daemon\")\n .option(\"--foreground\", \"Run in foreground (don't daemonize)\", false)\n .action(async (opts: { foreground: boolean }) => {\n const client = new RpcClient(defaultSocketPath());\n\n const alive = await client.ping();\n if (alive) {\n printer.warn(\"Daemon is already running.\");\n return;\n }\n\n if (opts.foreground) {\n try {\n const { Daemon } = await import(\"@actant/api\");\n const daemon = new Daemon();\n\n onShutdownSignal(async () => {\n await daemon.stop();\n process.exit(0);\n });\n\n await daemon.start();\n printer.log(`${chalk.green(\"Daemon started (foreground).\")} PID: ${process.pid}`);\n printer.dim(\"Press Ctrl+C to stop.\");\n\n await new Promise(() => {});\n } catch (err) {\n presentError(err, printer);\n process.exitCode = 1;\n }\n } else {\n const child = spawnDaemonChild();\n\n const stderrChunks: Buffer[] = [];\n child.stderr?.on(\"data\", (chunk: Buffer) => {\n stderrChunks.push(chunk);\n });\n\n let earlyExit = false;\n let earlyExitCode: number | null = null;\n child.on(\"exit\", (code) => {\n earlyExit = true;\n earlyExitCode = code;\n });\n\n await new Promise((resolve) => setTimeout(resolve, 2000));\n\n if (earlyExit) {\n const stderr = Buffer.concat(stderrChunks).toString().trim();\n printer.error(`Daemon process exited unexpectedly (code: ${earlyExitCode}).`);\n if (stderr) printer.error(stderr);\n process.exitCode = 1;\n return;\n }\n\n let healthy = false;\n for (let i = 0; i < 3; i++) {\n healthy = await client.ping();\n if (healthy) break;\n await new Promise((resolve) => setTimeout(resolve, 500));\n }\n\n child.stderr?.destroy();\n if (\"connected\" in child && child.connected) child.disconnect();\n child.unref();\n\n if (healthy) {\n printer.log(`${chalk.green(\"Daemon started.\")} PID: ${child.pid}`);\n } else {\n const stderr = Buffer.concat(stderrChunks).toString().trim();\n printer.error(\"Daemon process started but is not responding.\");\n if (stderr) printer.error(stderr);\n process.exitCode = 1;\n }\n }\n });\n}\n","import { Command } from \"commander\";\nimport { RpcClient } from \"../../client/rpc-client\";\nimport { type CliPrinter, defaultPrinter } from \"../../output/index\";\nimport { defaultSocketPath } from \"../../program\";\n\nexport function createDaemonStopCommand(\n printer: CliPrinter = defaultPrinter,\n client?: RpcClient,\n): Command {\n return new Command(\"stop\")\n .description(\"Stop the Actant daemon\")\n .action(async () => {\n const rpc = client ?? new RpcClient(defaultSocketPath());\n\n try {\n await rpc.call(\"daemon.shutdown\", {});\n printer.success(\"Daemon stopping...\");\n } catch {\n printer.warn(\"Daemon is not running.\");\n }\n });\n}\n","import { Command } from \"commander\";\nimport chalk from \"chalk\";\nimport { RpcClient } from \"../../client/rpc-client\";\nimport { type CliPrinter, defaultPrinter, type OutputFormat } from \"../../output/index\";\nimport { defaultSocketPath } from \"../../program\";\n\nexport function createDaemonStatusCommand(printer: CliPrinter = defaultPrinter): Command {\n return new Command(\"status\")\n .description(\"Check if the daemon is running\")\n .option(\"-f, --format <format>\", \"Output format: table, json, quiet\", \"table\")\n .action(async (opts: { format: OutputFormat }) => {\n const client = new RpcClient(defaultSocketPath());\n\n try {\n const result = await client.call(\"daemon.ping\", {});\n\n if (opts.format === \"json\") {\n printer.log(JSON.stringify({ running: true, ...result }, null, 2));\n } else if (opts.format === \"quiet\") {\n printer.log(\"running\");\n } else {\n printer.success(\"Daemon is running.\");\n printer.log(` Version: ${result.version}`);\n printer.log(` Uptime: ${result.uptime}s`);\n printer.log(` Agents: ${result.agents}`);\n }\n } catch {\n if (opts.format === \"json\") {\n printer.log(JSON.stringify({ running: false }, null, 2));\n } else if (opts.format === \"quiet\") {\n printer.log(\"stopped\");\n } else {\n printer.log(chalk.red(\"Daemon is not running.\"));\n printer.dim(\"Start with: actant daemon start\");\n }\n process.exitCode = 1;\n }\n });\n}\n","import { Command } from \"commander\";\nimport { spawn, type ChildProcess } from \"node:child_process\";\nimport { createInterface } from \"node:readline\";\nimport { RpcClient } from \"../client/rpc-client\";\nimport { presentError, type CliPrinter, defaultPrinter } from \"../output/index\";\nimport { defaultSocketPath } from \"../program\";\n\n/**\n * `actant proxy <name>` — acts as a transparent ACP bridge on stdin/stdout.\n *\n * **Direct Bridge (default):** Proxy spawns the Agent subprocess directly,\n * pipes IDE stdio ↔ Agent stdio, registers lifecycle with Daemon via\n * resolve/attach/detach. No ACP message parsing — pure byte stream.\n *\n * **Session Lease (`--lease`):** Proxy connects to a Daemon-managed Agent,\n * translates ACP protocol messages from IDE into session.* RPC calls.\n */\nexport function createProxyCommand(printer: CliPrinter = defaultPrinter): Command {\n return new Command(\"proxy\")\n .description(\"Run an ACP proxy for an agent (stdin/stdout ACP protocol)\")\n .argument(\"<name>\", \"Agent name to proxy\")\n .option(\"--lease\", \"Use Session Lease mode (requires running agent)\", false)\n .option(\"-t, --template <template>\", \"Template name (auto-creates instance if not found)\")\n .action(async (name: string, opts: { lease: boolean; template?: string }) => {\n if (opts.lease) {\n await runSessionLease(name, printer);\n } else {\n await runDirectBridge(name, opts, printer);\n }\n });\n}\n\nasync function runDirectBridge(\n name: string,\n opts: { template?: string },\n printer: CliPrinter,\n): Promise<void> {\n const client = new RpcClient(defaultSocketPath());\n let child: ChildProcess | null = null;\n let instanceName: string = name;\n let attached = false;\n let cleaning = false;\n\n const cleanup = async () => {\n if (cleaning) return;\n cleaning = true;\n\n if (child && !child.killed) {\n child.kill(\"SIGTERM\");\n await new Promise<void>((resolve) => {\n const timer = setTimeout(() => {\n child?.kill(\"SIGKILL\");\n resolve();\n }, 3000);\n child?.once(\"exit\", () => {\n clearTimeout(timer);\n resolve();\n });\n });\n }\n\n if (attached) {\n try {\n await client.call(\"agent.detach\", { name: instanceName, cleanup: true });\n } catch {\n // Daemon may already be down\n }\n attached = false;\n }\n };\n\n try {\n const alive = await client.ping();\n if (!alive) {\n printer.error(\"Daemon is not running. Start it with: actant daemon start\");\n process.exitCode = 1;\n return;\n }\n\n const resolved = await client.call(\"agent.resolve\", {\n name,\n template: opts.template,\n });\n\n instanceName = resolved.instanceName;\n\n // Check if instance is already occupied → auto-instantiate ephemeral copy\n const targetInstance = await resolveAvailableInstance(\n client,\n instanceName,\n resolved,\n printer,\n );\n if (!targetInstance) {\n process.exitCode = 1;\n return;\n }\n instanceName = targetInstance.instanceName;\n const workspaceDir = targetInstance.workspaceDir;\n const command = targetInstance.command;\n const args = targetInstance.args;\n const env = { ...process.env, ...targetInstance.env };\n\n child = spawn(command, args, {\n cwd: workspaceDir,\n stdio: [\"pipe\", \"pipe\", \"pipe\"],\n env,\n });\n\n if (!child.stdin || !child.stdout || child.pid == null) {\n throw new Error(\"Failed to create stdio pipes for agent subprocess\");\n }\n\n const childPid = child.pid;\n const childProc = child;\n\n await client.call(\"agent.attach\", {\n name: instanceName,\n pid: childPid,\n metadata: { proxyMode: \"direct-bridge\" },\n });\n attached = true;\n\n process.on(\"SIGINT\", () => { void cleanup().then(() => process.exit(0)); });\n process.on(\"SIGTERM\", () => { void cleanup().then(() => process.exit(0)); });\n\n // Transparent byte-stream bridge: IDE ↔ Proxy ↔ Agent\n process.stdin.pipe(child.stdin);\n child.stdout.pipe(process.stdout);\n child.stderr?.pipe(process.stderr);\n\n const exitCode = await new Promise<number>((resolve) => {\n childProc.on(\"exit\", (code) => resolve(code ?? 1));\n childProc.on(\"error\", (err) => {\n printer.error(`Agent process error: ${err.message}`);\n resolve(1);\n });\n });\n\n if (attached) {\n try {\n await client.call(\"agent.detach\", { name: instanceName, cleanup: true });\n } catch {\n // ignore\n }\n attached = false;\n }\n\n process.exitCode = exitCode;\n } catch (err) {\n await cleanup();\n presentError(err, printer);\n process.exitCode = 1;\n }\n}\n\ninterface AvailableInstance {\n instanceName: string;\n workspaceDir: string;\n command: string;\n args: string[];\n env?: Record<string, string>;\n}\n\n/**\n * If the target instance is already running (occupied), attempt to create\n * an ephemeral instance from the same template. Returns null when the\n * instance is occupied but cannot be auto-instantiated.\n */\nasync function resolveAvailableInstance(\n client: RpcClient,\n instanceName: string,\n resolved: {\n workspaceDir: string;\n command: string;\n args: string[];\n env?: Record<string, string>;\n instanceName: string;\n },\n printer: CliPrinter,\n): Promise<AvailableInstance | null> {\n try {\n const status = await client.call(\"agent.status\", { name: instanceName });\n if (status.status === \"running\" && status.pid != null) {\n // Instance is occupied — try auto-instantiation from the same template\n const templateName = status.templateName;\n if (!templateName) {\n printer.error(\n `Agent \"${instanceName}\" is already running (pid ${status.pid}) and has no template for auto-instantiation.`,\n );\n return null;\n }\n\n const ephemeralName = `${instanceName}-proxy-${Date.now()}`;\n const ephemeral = await client.call(\"agent.resolve\", {\n name: ephemeralName,\n template: templateName,\n overrides: { workspacePolicy: \"ephemeral\" },\n });\n\n printer.dim(\n `Instance \"${instanceName}\" occupied → created ephemeral \"${ephemeralName}\"`,\n );\n\n return {\n instanceName: ephemeral.instanceName,\n workspaceDir: ephemeral.workspaceDir,\n command: ephemeral.command,\n args: ephemeral.args,\n env: ephemeral.env,\n };\n }\n } catch {\n // agent.status throws when instance was just created via resolve — that's fine\n }\n\n return {\n instanceName: resolved.instanceName,\n workspaceDir: resolved.workspaceDir,\n command: resolved.command,\n args: resolved.args,\n env: resolved.env,\n };\n}\n\n// ---------------------------------------------------------------------------\n// Session Lease mode — ACP pipe via Gateway (with legacy fallback)\n// ---------------------------------------------------------------------------\n\n/**\n * Session Lease Proxy: thin ACP pipe between IDE (stdio) and Daemon (socket).\n *\n * The proxy does NOT parse ACP messages. It connects a Unix socket to the\n * Daemon's ACP Gateway and bridges IDE stdio <-> socket byte-for-byte.\n * All ACP intelligence (forwarding, impersonation) lives in the Daemon's Gateway.\n *\n * Falls back to legacy RPC translation when Daemon doesn't support gateway.lease.\n */\nasync function runSessionLease(\n agentName: string,\n printer: CliPrinter,\n): Promise<void> {\n const rpcClient = new RpcClient(defaultSocketPath());\n\n try {\n const alive = await rpcClient.ping();\n if (!alive) {\n printer.error(\"Daemon is not running. Start it with: actant daemon start\");\n process.exitCode = 1;\n return;\n }\n\n const meta = await rpcClient.call(\"agent.status\", { name: agentName });\n if (meta.status !== \"running\") {\n printer.error(\n `Agent \"${agentName}\" is not running (status: ${meta.status}). ` +\n `Session Lease requires a running agent. Start with: actant agent start ${agentName}`,\n );\n process.exitCode = 1;\n return;\n }\n } catch (err) {\n presentError(err, printer);\n process.exitCode = 1;\n return;\n }\n\n // Try Gateway pipe first, fall back to legacy RPC translation\n let gatewaySocketPath: string | null = null;\n try {\n const result = await rpcClient.call(\"gateway.lease\", { agentName });\n gatewaySocketPath = (result as { socketPath: string }).socketPath;\n } catch {\n // gateway.lease not implemented yet — use legacy mode\n }\n\n if (gatewaySocketPath) {\n await runGatewayPipe(gatewaySocketPath, printer);\n } else {\n printer.dim(\"Gateway lease not available, using legacy session lease mode\");\n await runLegacySessionLease(agentName, rpcClient, printer);\n }\n}\n\nasync function runGatewayPipe(\n gatewaySocketPath: string,\n _printer: CliPrinter,\n): Promise<void> {\n const net = await import(\"node:net\");\n const socket = net.createConnection(gatewaySocketPath);\n\n let cleaning = false;\n const cleanup = () => {\n if (cleaning) return;\n cleaning = true;\n socket.destroy();\n };\n\n process.on(\"SIGINT\", () => { cleanup(); process.exit(0); });\n process.on(\"SIGTERM\", () => { cleanup(); process.exit(0); });\n\n socket.on(\"connect\", () => {\n process.stdin.pipe(socket);\n socket.pipe(process.stdout);\n });\n\n socket.on(\"error\", (err) => {\n _printer.error(`Gateway connection error: ${err.message}`);\n cleanup();\n process.exitCode = 1;\n });\n\n socket.on(\"close\", () => { cleanup(); process.exit(0); });\n\n await new Promise<void>(() => {});\n}\n\n/**\n * Legacy Session Lease: RPC-based protocol translation.\n * Kept for backward compat until gateway.lease is fully rolled out.\n */\nasync function runLegacySessionLease(\n agentName: string,\n client: RpcClient,\n _printer: CliPrinter,\n): Promise<void> {\n const clientId = `proxy-${Date.now()}`;\n let sessionId: string | null = null;\n let closed = false;\n\n const cleanup = async () => {\n if (closed) return;\n closed = true;\n if (sessionId) {\n try { await client.call(\"session.close\", { sessionId }); } catch { /* ignore */ }\n }\n };\n\n process.on(\"SIGINT\", () => { void cleanup().then(() => process.exit(0)); });\n process.on(\"SIGTERM\", () => { void cleanup().then(() => process.exit(0)); });\n\n const rl = createInterface({ input: process.stdin });\n\n rl.on(\"line\", (line) => {\n if (closed) return;\n void handleLegacyMessage(line, agentName, clientId, client, {\n getSessionId: () => sessionId,\n setSessionId: (id) => { sessionId = id; },\n }).catch((err) => {\n writeAcpError(null, -32603, err instanceof Error ? err.message : String(err));\n });\n });\n\n rl.on(\"close\", () => {\n void cleanup().then(() => process.exit(0));\n });\n}\n\ninterface SessionContext {\n getSessionId(): string | null;\n setSessionId(id: string): void;\n}\n\ninterface AcpMessage {\n jsonrpc: string;\n id?: unknown;\n method?: string;\n params?: Record<string, unknown>;\n}\n\nasync function handleLegacyMessage(\n line: string,\n agentName: string,\n clientId: string,\n client: RpcClient,\n ctx: SessionContext,\n): Promise<void> {\n let msg: AcpMessage;\n try { msg = JSON.parse(line); } catch { return; }\n if (!msg.method) return;\n\n const params = msg.params ?? {};\n\n switch (msg.method) {\n case \"initialize\":\n writeAcpResponse(msg.id, {\n protocolVersion: 1,\n agentInfo: { name: \"actant-proxy\", title: `Actant Proxy: ${agentName} (lease)`, version: \"0.1.0\" },\n agentCapabilities: {},\n });\n break;\n\n case \"session/new\":\n try {\n const result = await client.call(\"session.create\", { agentName, clientId });\n ctx.setSessionId(result.sessionId);\n writeAcpResponse(msg.id, { sessionId: result.sessionId, modes: {} });\n } catch (err) {\n writeAcpError(msg.id, -32603, err instanceof Error ? err.message : String(err));\n }\n break;\n\n case \"session/prompt\": {\n const sid = (params[\"sessionId\"] as string) ?? ctx.getSessionId();\n if (!sid) { writeAcpError(msg.id, -32602, \"No session. Call session/new first.\"); break; }\n try {\n const prompt = params[\"prompt\"] as Array<{ type: string; text?: string }> | undefined;\n const text = prompt?.find((p) => p.type === \"text\")?.text ?? \"\";\n const result = await client.call(\"session.prompt\", { sessionId: sid, text }, { timeoutMs: 305_000 });\n writeAcpResponse(msg.id, { stopReason: result.stopReason });\n } catch (err) {\n writeAcpError(msg.id, -32603, err instanceof Error ? err.message : String(err));\n }\n break;\n }\n\n case \"session/cancel\": {\n const sid = (params[\"sessionId\"] as string) ?? ctx.getSessionId();\n if (sid) { try { await client.call(\"session.cancel\", { sessionId: sid }); } catch { /* best-effort */ } }\n if (msg.id != null) writeAcpResponse(msg.id, { ok: true });\n break;\n }\n\n default:\n if (msg.id != null) writeAcpError(msg.id, -32601, `Unsupported method: ${msg.method}`);\n }\n}\n\nfunction writeAcpResponse(id: unknown, result: unknown): void {\n process.stdout.write(JSON.stringify({ jsonrpc: \"2.0\", id: id ?? null, result }) + \"\\n\");\n}\n\nfunction writeAcpError(id: unknown, code: number, message: string): void {\n process.stdout.write(JSON.stringify({ jsonrpc: \"2.0\", id: id ?? null, error: { code, message } }) + \"\\n\");\n}\n","import { Command } from \"commander\";\nimport { spawn } from \"child_process\";\nimport { writeFileSync, mkdirSync, readFileSync, existsSync } from \"fs\";\nimport { join } from \"path\";\nimport { homedir } from \"os\";\nimport chalk from \"chalk\";\n\nexport function createSelfUpdateCommand(): Command {\n return new Command(\"self-update\")\n .description(\"Update Actant from local source\")\n .option(\"--source <path>\", \"Source directory path\")\n .option(\"--check\", \"Only check for updates, don't apply\")\n .option(\"--force\", \"Skip active session warnings\")\n .option(\"--dry-run\", \"Show what would be done without doing it\")\n .option(\"--no-agent\", \"Skip agent supervisor, run script directly\")\n .option(\"--skip-build\", \"Skip build step (use pre-built dist)\")\n .action(async (opts) => {\n const actantHome = process.env.ACTANT_HOME || join(homedir(), \".actant\");\n\n // Read config for devSourcePath\n let devSourcePath = opts.source;\n if (!devSourcePath) {\n const configPath = join(actantHome, \"config.json\");\n try {\n const config = JSON.parse(readFileSync(configPath, \"utf-8\"));\n devSourcePath = config.devSourcePath;\n } catch {\n /* ignore */\n }\n }\n\n if (!devSourcePath) {\n console.error(\n chalk.red(\n \"No source path specified. Use --source <path> or set devSourcePath in ~/.actant/config.json\",\n ),\n );\n process.exit(1);\n }\n\n if (opts.check) {\n // Show version comparison\n showVersionCheck(devSourcePath, actantHome);\n return;\n }\n\n // Read installed version from CLI package\n let installedVersion = \"0.1.0\";\n const cliPkgPath = join(devSourcePath, \"packages\", \"cli\", \"package.json\");\n if (existsSync(cliPkgPath)) {\n try {\n const cliPkg = JSON.parse(readFileSync(cliPkgPath, \"utf-8\"));\n installedVersion = cliPkg.version ?? installedVersion;\n } catch {\n /* ignore */\n }\n }\n\n // Write update manifest\n const updateId = `upd-${new Date().toISOString().replace(/[-:T.]/g, \"\").slice(0, 15)}`;\n const manifestPath = join(actantHome, \"update-manifest.json\");\n const manifest = {\n updateId,\n createdAt: new Date().toISOString(),\n sourcePath: devSourcePath,\n installedVersion: { version: installedVersion },\n backupPath: join(actantHome, \"backups\", updateId),\n runningAgents: [],\n daemonSocketPath: join(actantHome, \"daemon.sock\"),\n rollbackOnFailure: true,\n phase: \"pending\",\n useAgent: !opts.noAgent,\n };\n\n mkdirSync(actantHome, { recursive: true });\n writeFileSync(manifestPath, JSON.stringify(manifest, null, 2));\n\n console.log(chalk.cyan(\"=== Actant Self-Update ===\"));\n console.log(`Update ID: ${updateId}`);\n console.log(`Source: ${devSourcePath}`);\n\n // Spawn the update script\n const scriptPath = join(devSourcePath, \"scripts\", \"self-update.js\");\n const scriptArgs = [\"--manifest\", manifestPath];\n if (opts.dryRun) scriptArgs.push(\"--dry-run\");\n if (opts.skipBuild) scriptArgs.push(\"--skip-build\");\n\n console.log(chalk.gray(`Spawning: node ${scriptPath} ${scriptArgs.join(\" \")}`));\n\n const child = spawn(\"node\", [scriptPath, ...scriptArgs], {\n detached: !opts.noAgent,\n stdio: opts.noAgent ? \"inherit\" : \"ignore\",\n });\n\n if (!opts.noAgent) {\n child.unref();\n console.log(chalk.green(\"Update script spawned in background. Check logs at:\"));\n console.log(chalk.gray(` ${join(actantHome, \"logs\", `update-${updateId}.log`)}`));\n } else {\n child.on(\"exit\", (code) => {\n if (code === 0) {\n console.log(chalk.green(\"\\nUpdate completed successfully!\"));\n } else if (code === 1) {\n console.log(chalk.yellow(\"\\nUpdate failed, rolled back to previous version.\"));\n } else {\n console.log(chalk.red(\"\\nSevere failure — manual intervention may be needed.\"));\n }\n });\n }\n });\n}\n\nfunction showVersionCheck(sourcePath: string, actantHome: string): void {\n console.log(chalk.cyan(\"=== Version Check ===\"));\n\n try {\n const pkg = JSON.parse(readFileSync(join(sourcePath, \"package.json\"), \"utf-8\"));\n console.log(`Source version: ${pkg.version || \"unknown\"}`);\n } catch {\n console.log(\"Source version: unknown\");\n }\n\n // Check for last update\n const manifestPath = join(actantHome, \"update-manifest.json\");\n try {\n const manifest = JSON.parse(readFileSync(manifestPath, \"utf-8\"));\n console.log(`Last update: ${manifest.updateId} (phase: ${manifest.phase})`);\n } catch {\n console.log(\"Last update: none\");\n }\n}\n","import { Command } from \"commander\";\nimport chalk from \"chalk\";\nimport { getDefaultIpcPath } from \"@actant/shared\";\nimport { RpcClient } from \"../../client/rpc-client\";\nimport { presentError, type CliPrinter, defaultPrinter } from \"../../output/index\";\nimport {\n chooseHome,\n ensureDirectoryStructure,\n configureProvider,\n configureSource,\n materializeAgent,\n configureAutostart,\n helloWorld,\n configureUpdate,\n} from \"./steps/index\";\n\nexport function createSetupCommand(printer: CliPrinter = defaultPrinter): Command {\n return new Command(\"setup\")\n .description(\"Interactive setup wizard — configure Actant step by step\")\n .option(\"--skip-home\", \"Skip work directory selection\")\n .option(\"--skip-provider\", \"Skip model provider configuration\")\n .option(\"--skip-source\", \"Skip component source configuration\")\n .option(\"--skip-agent\", \"Skip agent creation\")\n .option(\"--skip-autostart\", \"Skip auto-start configuration\")\n .option(\"--skip-hello\", \"Skip hello world verification\")\n .option(\"--skip-update\", \"Skip update options\")\n .action(async (opts: {\n skipHome?: boolean;\n skipProvider?: boolean;\n skipSource?: boolean;\n skipAgent?: boolean;\n skipAutostart?: boolean;\n skipHello?: boolean;\n skipUpdate?: boolean;\n }) => {\n try {\n printBanner(printer);\n\n // Step 1: Choose ACTANT_HOME\n let actantHome: string;\n if (opts.skipHome) {\n const { homedir } = await import(\"node:os\");\n const { join } = await import(\"node:path\");\n const { existsSync, writeFileSync } = await import(\"node:fs\");\n actantHome = process.env[\"ACTANT_HOME\"] || join(homedir(), \".actant\");\n ensureDirectoryStructure(actantHome);\n const configFile = join(actantHome, \"config.json\");\n if (!existsSync(configFile)) {\n writeFileSync(configFile, JSON.stringify({\n devSourcePath: \"\",\n update: { maxBackups: 3, preUpdateTestCommand: \"pnpm test:changed\", autoRestartAgents: true },\n }, null, 2) + \"\\n\");\n }\n printer.dim(` 使用默认工作目录: ${actantHome}`);\n } else {\n actantHome = await chooseHome(printer);\n }\n\n // Step 2: Configure Model Provider\n if (!opts.skipProvider) {\n await configureProvider(printer, actantHome);\n }\n\n // Steps 3-6 need the daemon running\n const daemonNeeded = !opts.skipSource || !opts.skipAgent || !opts.skipHello;\n let client: RpcClient | undefined;\n let daemonStartedBySetup = false;\n\n if (daemonNeeded) {\n const socketPath = process.env[\"ACTANT_SOCKET\"] ?? getDefaultIpcPath(actantHome);\n client = new RpcClient(socketPath);\n\n const alive = await client.ping();\n if (!alive) {\n printer.log(chalk.dim(\"\\n 正在启动 Daemon...\"));\n daemonStartedBySetup = await tryStartDaemon(printer, socketPath);\n if (!daemonStartedBySetup) {\n printer.warn(\" ⚠ 无法自动启动 Daemon,跳过需要 Daemon 的步骤\");\n printer.dim(\" 请手动运行: actant daemon start\");\n client = undefined;\n }\n } else {\n printer.dim(\"\\n Daemon 已在运行中\");\n }\n }\n\n // Step 3: Configure Source\n if (!opts.skipSource && client) {\n await configureSource(printer, client);\n }\n\n // Step 4: Materialize Agent\n let createdAgents: string[] = [];\n if (!opts.skipAgent && client) {\n createdAgents = await materializeAgent(printer, client);\n }\n\n // Step 5: Configure Auto-start\n if (!opts.skipAutostart) {\n await configureAutostart(printer);\n }\n\n // Step 6: Hello World Verification\n if (!opts.skipHello && client) {\n await helloWorld(printer, client, createdAgents);\n }\n\n // Step 7: Update Options\n if (!opts.skipUpdate) {\n await configureUpdate(printer, actantHome);\n }\n\n printSummary(printer, actantHome);\n } catch (err) {\n if (isUserCancellation(err)) {\n printer.log(chalk.dim(\"\\n 已取消设置向导\"));\n return;\n }\n presentError(err, printer);\n process.exitCode = 1;\n }\n });\n}\n\nfunction printBanner(printer: CliPrinter): void {\n printer.log(\"\");\n printer.log(chalk.cyan(\"╔══════════════════════════════════════════════╗\"));\n printer.log(chalk.cyan(\"║\") + chalk.bold(\" Actant Setup Wizard \") + chalk.cyan(\"║\"));\n printer.log(chalk.cyan(\"║\") + chalk.dim(\" Build, manage, and compose AI agents \") + chalk.cyan(\"║\"));\n printer.log(chalk.cyan(\"╚══════════════════════════════════════════════╝\"));\n}\n\nfunction printSummary(printer: CliPrinter, actantHome: string): void {\n printer.log(\"\");\n printer.log(chalk.green(\"══════════════════════════════════════════════\"));\n printer.log(chalk.green.bold(\" Setup Complete!\"));\n printer.log(chalk.green(\"══════════════════════════════════════════════\"));\n printer.log(\"\");\n printer.dim(` 工作目录: ${actantHome}`);\n printer.log(\"\");\n printer.log(\" 快速开始:\");\n printer.log(` ${chalk.cyan(\"actant daemon start\")} 启动 Daemon`);\n printer.log(` ${chalk.cyan(\"actant template list\")} 浏览模板`);\n printer.log(` ${chalk.cyan(\"actant agent list\")} 查看 Agent`);\n printer.log(` ${chalk.cyan(\"actant agent chat <n>\")} 与 Agent 对话`);\n printer.log(` ${chalk.cyan(\"actant setup\")} 重新运行此向导`);\n printer.log(\"\");\n printer.dim(\" 更多帮助: actant help\");\n printer.log(\"\");\n}\n\nasync function tryStartDaemon(printer: CliPrinter, socketPath: string): Promise<boolean> {\n try {\n const { fork, spawn } = await import(\"node:child_process\");\n const { join } = await import(\"node:path\");\n const { isWindows, isSingleExecutable } = await import(\"@actant/shared\");\n\n let child;\n if (isSingleExecutable()) {\n child = spawn(process.execPath, [\"--__actant-daemon\"], {\n detached: true,\n stdio: [\"ignore\", \"ignore\", \"ignore\"],\n env: process.env,\n });\n } else {\n const daemonScript = join(import.meta.dirname, \"..\", \"daemon-entry.js\");\n child = isWindows()\n ? spawn(process.execPath, [daemonScript], {\n detached: true,\n stdio: [\"ignore\", \"ignore\", \"ignore\"],\n env: process.env,\n })\n : fork(daemonScript, [], {\n detached: true,\n stdio: [\"ignore\", \"ignore\", \"ignore\", \"ipc\"],\n env: process.env,\n });\n }\n\n if (\"connected\" in child && child.connected) child.disconnect();\n child.unref();\n\n const client = new RpcClient(socketPath);\n for (let i = 0; i < 10; i++) {\n await new Promise((r) => setTimeout(r, 1000));\n if (await client.ping()) {\n printer.success(\" ✓ Daemon 已启动\");\n return true;\n }\n }\n\n printer.warn(\" ⚠ Daemon 进程已启动但未响应\");\n return false;\n } catch (err) {\n printer.warn(` ⚠ 启动 Daemon 失败: ${err instanceof Error ? err.message : String(err)}`);\n return false;\n }\n}\n\nfunction isUserCancellation(err: unknown): boolean {\n if (err instanceof Error) {\n return err.message.includes(\"User force closed\") ||\n err.message.includes(\"prompt was canceled\") ||\n err.name === \"ExitPromptError\";\n }\n return false;\n}\n","import { join } from \"node:path\";\nimport { homedir } from \"node:os\";\nimport { mkdirSync, existsSync, writeFileSync } from \"node:fs\";\nimport { select, input } from \"@inquirer/prompts\";\nimport chalk from \"chalk\";\nimport type { CliPrinter } from \"../../../output/index\";\n\nconst DEFAULT_HOME = join(homedir(), \".actant\");\n\nconst SUBDIRS = [\n \"configs/skills\",\n \"configs/prompts\",\n \"configs/mcp\",\n \"configs/workflows\",\n \"configs/plugins\",\n \"configs/templates\",\n \"instances\",\n \"sources/cache\",\n \"logs\",\n \"backups\",\n];\n\nexport async function chooseHome(printer: CliPrinter): Promise<string> {\n printer.log(`\\n${chalk.cyan(\"[ Step 1/7 ]\")} ${chalk.bold(\"选择工作目录\")}\\n`);\n\n const choice = await select({\n message: \"Actant 工作目录 (ACTANT_HOME):\",\n choices: [\n { name: `使用默认 ${DEFAULT_HOME}`, value: \"default\" },\n { name: \"自定义路径...\", value: \"custom\" },\n ],\n });\n\n let actantHome = DEFAULT_HOME;\n\n if (choice === \"custom\") {\n actantHome = await input({\n message: \"请输入工作目录路径:\",\n validate: (val) => val.trim().length > 0 || \"路径不能为空\",\n });\n actantHome = actantHome.trim();\n }\n\n ensureDirectoryStructure(actantHome);\n\n const configFile = join(actantHome, \"config.json\");\n if (!existsSync(configFile)) {\n writeFileSync(\n configFile,\n JSON.stringify(\n {\n devSourcePath: \"\",\n update: {\n maxBackups: 3,\n preUpdateTestCommand: \"pnpm test:changed\",\n autoRestartAgents: true,\n },\n },\n null,\n 2,\n ) + \"\\n\",\n );\n }\n\n printer.success(`✓ 工作目录: ${actantHome}`);\n\n if (actantHome !== DEFAULT_HOME) {\n printer.warn(\n ` 请将以下内容添加到你的 shell 配置文件 (~/.bashrc, ~/.zshrc, 或 $PROFILE):\\n` +\n ` ${chalk.cyan(`export ACTANT_HOME=\"${actantHome}\"`)}`,\n );\n }\n\n return actantHome;\n}\n\nexport function ensureDirectoryStructure(base: string): void {\n for (const dir of SUBDIRS) {\n mkdirSync(join(base, dir), { recursive: true });\n }\n}\n","import { join } from \"node:path\";\nimport { readFileSync, writeFileSync } from \"node:fs\";\nimport { select, input, password, confirm } from \"@inquirer/prompts\";\nimport chalk from \"chalk\";\nimport type { CliPrinter } from \"../../../output/index\";\nimport type { ProviderConfig, AppConfig } from \"../types\";\n\ntype Protocol = ProviderConfig[\"protocol\"];\n\nconst PROVIDER_DEFAULTS: Record<string, { protocol: Protocol; baseUrl: string; apiKeyEnv: string }> = {\n anthropic: { protocol: \"http\", baseUrl: \"https://api.anthropic.com\", apiKeyEnv: \"ANTHROPIC_API_KEY\" },\n openai: { protocol: \"http\", baseUrl: \"https://api.openai.com/v1\", apiKeyEnv: \"OPENAI_API_KEY\" },\n \"openai-compatible\": { protocol: \"http\", baseUrl: \"http://localhost:11434/v1\", apiKeyEnv: \"LLM_API_KEY\" },\n custom: { protocol: \"http\", baseUrl: \"http://localhost:8080\", apiKeyEnv: \"LLM_API_KEY\" },\n};\n\nexport async function configureProvider(printer: CliPrinter, actantHome: string): Promise<void> {\n printer.log(`\\n${chalk.cyan(\"[ Step 2/7 ]\")} ${chalk.bold(\"配置 Model Provider\")}\\n`);\n\n const providerType = await select<ProviderConfig[\"type\"]>({\n message: \"选择 Model Provider:\",\n default: \"anthropic\" as ProviderConfig[\"type\"],\n choices: [\n { name: \"Anthropic (Claude)\", value: \"anthropic\" },\n { name: \"OpenAI\", value: \"openai\" },\n { name: \"OpenAI-Compatible (vLLM / Ollama / LM Studio 等)\", value: \"openai-compatible\" },\n { name: \"Custom\", value: \"custom\" },\n ],\n });\n\n const fallback: { protocol: Protocol; baseUrl: string; apiKeyEnv: string } = {\n protocol: \"http\", baseUrl: \"\", apiKeyEnv: \"LLM_API_KEY\",\n };\n const defaults = PROVIDER_DEFAULTS[providerType] ?? fallback;\n\n const protocol = await select<ProviderConfig[\"protocol\"]>({\n message: \"协议类型:\",\n choices: [\n { name: \"HTTP / REST\", value: \"http\" },\n { name: \"WebSocket\", value: \"websocket\" },\n { name: \"gRPC\", value: \"grpc\" },\n ],\n default: defaults.protocol,\n });\n\n const baseUrl = await input({\n message: \"Base URL:\",\n default: defaults.baseUrl,\n validate: (val) => {\n try {\n new URL(val);\n return true;\n } catch {\n return \"请输入有效的 URL\";\n }\n },\n });\n\n const apiKeyEnvName = await input({\n message: \"API Key 环境变量名:\",\n default: defaults.apiKeyEnv,\n });\n\n const apiKey = await password({\n message: `${apiKeyEnvName} 的值 (API Key):`,\n mask: \"*\",\n });\n\n if (apiKey) {\n const shouldValidate = await confirm({\n message: \"验证连接?\",\n default: true,\n });\n\n if (shouldValidate) {\n printer.log(chalk.dim(\" 正在验证连接...\"));\n const ok = await validateConnection(providerType, protocol, baseUrl, apiKey);\n if (ok) {\n printer.success(\" ✓ 连接验证成功\");\n } else {\n printer.warn(\" ⚠ 连接验证失败,配置已保存但可能需要检查\");\n }\n }\n\n printer.warn(\n ` 请确保环境变量 ${chalk.cyan(apiKeyEnvName)} 已设置:\\n` +\n ` ${chalk.dim(`export ${apiKeyEnvName}=\"${apiKey.slice(0, 8)}...\"`)}`,\n );\n }\n\n const providerConfig: ProviderConfig = {\n type: providerType,\n protocol,\n baseUrl,\n apiKeyEnv: apiKeyEnvName,\n };\n\n saveProviderConfig(actantHome, providerConfig);\n printer.success(`✓ Model Provider 已配置: ${providerType} (${protocol}) → ${baseUrl}`);\n}\n\nfunction saveProviderConfig(actantHome: string, provider: ProviderConfig): void {\n const configFile = join(actantHome, \"config.json\");\n let config: AppConfig = {};\n try {\n config = JSON.parse(readFileSync(configFile, \"utf-8\")) as AppConfig;\n } catch { /* start fresh */ }\n\n config.provider = provider;\n writeFileSync(configFile, JSON.stringify(config, null, 2) + \"\\n\");\n}\n\nasync function validateConnection(\n type: string,\n _protocol: string,\n baseUrl: string,\n apiKey: string,\n): Promise<boolean> {\n try {\n if (type === \"anthropic\") {\n const res = await fetch(`${baseUrl}/v1/messages`, {\n method: \"POST\",\n headers: {\n \"x-api-key\": apiKey,\n \"anthropic-version\": \"2023-06-01\",\n \"content-type\": \"application/json\",\n },\n body: JSON.stringify({\n model: \"claude-sonnet-4-20250514\",\n max_tokens: 1,\n messages: [{ role: \"user\", content: \"hi\" }],\n }),\n signal: AbortSignal.timeout(15000),\n });\n return res.status === 200 || res.status === 400;\n }\n\n if (type === \"openai\" || type === \"openai-compatible\") {\n const res = await fetch(`${baseUrl}/models`, {\n headers: { Authorization: `Bearer ${apiKey}` },\n signal: AbortSignal.timeout(10000),\n });\n return res.ok;\n }\n\n const res = await fetch(baseUrl, {\n headers: { Authorization: `Bearer ${apiKey}` },\n signal: AbortSignal.timeout(10000),\n });\n return res.ok;\n } catch {\n return false;\n }\n}\n","import { confirm, input, select } from \"@inquirer/prompts\";\nimport chalk from \"chalk\";\nimport type { RpcClient } from \"../../../client/rpc-client\";\nimport type { CliPrinter } from \"../../../output/index\";\n\nconst DEFAULT_SOURCE_NAME = \"actant-hub\";\nconst DEFAULT_SOURCE_URL = \"https://github.com/blackplume233/actant-hub.git\";\n\nexport async function configureSource(printer: CliPrinter, client: RpcClient): Promise<void> {\n printer.log(`\\n${chalk.cyan(\"[ Step 3/7 ]\")} ${chalk.bold(\"配置组件源 (Source)\")}\\n`);\n\n const addDefault = await confirm({\n message: `添加官方组件源 ${DEFAULT_SOURCE_NAME}?`,\n default: true,\n });\n\n if (addDefault) {\n try {\n printer.log(chalk.dim(` 正在注册 ${DEFAULT_SOURCE_NAME}...`));\n const result = await client.call(\"source.add\", {\n name: DEFAULT_SOURCE_NAME,\n config: { type: \"github\" as const, url: DEFAULT_SOURCE_URL, branch: \"main\" },\n });\n const c = result.components;\n printer.success(\n ` ✓ ${DEFAULT_SOURCE_NAME} 已添加: ` +\n `${c.skills} skills, ${c.prompts} prompts, ${c.mcp} mcp, ` +\n `${c.workflows} workflows, ${c.presets} presets`,\n );\n } catch (err) {\n const message = err instanceof Error ? err.message : String(err);\n if (message.includes(\"already exists\") || message.includes(\"already registered\")) {\n printer.dim(` ${DEFAULT_SOURCE_NAME} 已存在,跳过`);\n } else {\n printer.warn(` ⚠ 添加 ${DEFAULT_SOURCE_NAME} 失败: ${message}`);\n printer.dim(\" 你可以稍后手动运行: actant source add --name actant-hub <url>\");\n }\n }\n }\n\n let addMore = await confirm({\n message: \"添加其他 Source?\",\n default: false,\n });\n\n while (addMore) {\n const sourceType = await select({\n message: \"Source 类型:\",\n choices: [\n { name: \"GitHub 仓库\", value: \"github\" },\n { name: \"本地目录\", value: \"local\" },\n ],\n });\n\n const name = await input({\n message: \"Source 名称 (命名空间前缀):\",\n validate: (val) => val.trim().length > 0 || \"名称不能为空\",\n });\n\n if (sourceType === \"github\") {\n const url = await input({\n message: \"GitHub 仓库 URL:\",\n validate: (val) => val.trim().length > 0 || \"URL 不能为空\",\n });\n const branch = await input({\n message: \"分支:\",\n default: \"main\",\n });\n\n try {\n const result = await client.call(\"source.add\", {\n name: name.trim(),\n config: { type: \"github\" as const, url: url.trim(), branch },\n });\n const c = result.components;\n printer.success(\n ` ✓ ${name.trim()} 已添加: ${c.skills} skills, ${c.prompts} prompts`,\n );\n } catch (err) {\n printer.warn(` ⚠ 添加失败: ${err instanceof Error ? err.message : String(err)}`);\n }\n } else {\n const path = await input({\n message: \"本地目录路径:\",\n validate: (val) => val.trim().length > 0 || \"路径不能为空\",\n });\n\n try {\n const result = await client.call(\"source.add\", {\n name: name.trim(),\n config: { type: \"local\" as const, path: path.trim() },\n });\n const c = result.components;\n printer.success(\n ` ✓ ${name.trim()} 已添加: ${c.skills} skills, ${c.prompts} prompts`,\n );\n } catch (err) {\n printer.warn(` ⚠ 添加失败: ${err instanceof Error ? err.message : String(err)}`);\n }\n }\n\n addMore = await confirm({\n message: \"继续添加其他 Source?\",\n default: false,\n });\n }\n\n printer.success(\"✓ 组件源配置完成\");\n}\n","import { checkbox, input } from \"@inquirer/prompts\";\nimport chalk from \"chalk\";\nimport type { RpcClient } from \"../../../client/rpc-client\";\nimport type { CliPrinter } from \"../../../output/index\";\n\ninterface TemplateInfo {\n name: string;\n version: string;\n description?: string;\n}\n\nexport async function materializeAgent(printer: CliPrinter, client: RpcClient): Promise<string[]> {\n printer.log(`\\n${chalk.cyan(\"[ Step 4/7 ]\")} ${chalk.bold(\"选择并创建 Agent\")}\\n`);\n\n let templates: TemplateInfo[];\n try {\n templates = (await client.call(\"template.list\", {})) as TemplateInfo[];\n } catch (err) {\n printer.warn(` ⚠ 无法获取模板列表: ${err instanceof Error ? err.message : String(err)}`);\n printer.dim(\" 你可以稍后使用 actant agent create <name> -t <template> 创建 Agent\");\n return [];\n }\n\n if (templates.length === 0) {\n printer.dim(\" 暂无可用模板。请先通过 actant source sync 同步组件,或使用 actant template load 加载模板。\");\n return [];\n }\n\n const selected = await checkbox({\n message: \"选择要创建的 Agent 模板 (空格选择, 回车确认):\",\n choices: templates.map((t, i) => ({\n name: `${t.name} (v${t.version})${t.description ? ` — ${t.description}` : \"\"}`,\n value: t.name,\n checked: i === 0,\n })),\n });\n\n if (selected.length === 0) {\n printer.dim(\" 未选择任何模板,跳过 Agent 创建\");\n return [];\n }\n\n const createdAgents: string[] = [];\n\n for (const templateName of selected) {\n const instanceName = await input({\n message: `Agent 实例名称 (模板: ${templateName}):`,\n default: templateName,\n validate: (val) => {\n if (val.trim().length === 0) return \"名称不能为空\";\n if (!/^[a-zA-Z0-9_-]+$/.test(val.trim())) return \"仅允许字母、数字、下划线和连字符\";\n return true;\n },\n });\n\n try {\n printer.log(chalk.dim(` 正在创建 ${instanceName.trim()}...`));\n await client.call(\"agent.create\", {\n name: instanceName.trim(),\n template: templateName,\n });\n printer.success(` ✓ Agent \"${instanceName.trim()}\" 已创建 (模板: ${templateName})`);\n createdAgents.push(instanceName.trim());\n } catch (err) {\n printer.warn(` ⚠ 创建 \"${instanceName.trim()}\" 失败: ${err instanceof Error ? err.message : String(err)}`);\n }\n }\n\n if (createdAgents.length > 0) {\n printer.success(`✓ 已创建 ${createdAgents.length} 个 Agent`);\n }\n\n return createdAgents;\n}\n","import { execSync } from \"node:child_process\";\nimport { writeFileSync, mkdirSync } from \"node:fs\";\nimport { join } from \"node:path\";\nimport { homedir } from \"node:os\";\nimport { confirm } from \"@inquirer/prompts\";\nimport chalk from \"chalk\";\nimport { isWindows } from \"@actant/shared\";\nimport type { CliPrinter } from \"../../../output/index\";\n\nexport async function configureAutostart(printer: CliPrinter): Promise<void> {\n printer.log(`\\n${chalk.cyan(\"[ Step 5/7 ]\")} ${chalk.bold(\"配置自动启动\")}\\n`);\n\n const platform = process.platform;\n const platformName = platform === \"win32\" ? \"Windows\" : platform === \"darwin\" ? \"macOS\" : \"Linux\";\n printer.log(` 检测到平台: ${chalk.bold(platformName)}`);\n\n const enable = await confirm({\n message: \"配置 Actant Daemon 开机自启?\",\n default: true,\n });\n\n if (!enable) {\n printer.dim(\" 跳过自动启动配置\");\n return;\n }\n\n try {\n if (isWindows()) {\n configureWindows(printer);\n } else if (platform === \"darwin\") {\n configureMacOS(printer);\n } else {\n configureLinux(printer);\n }\n printer.success(\"✓ 自动启动已配置\");\n } catch (err) {\n printer.warn(` ⚠ 自动启动配置失败: ${err instanceof Error ? err.message : String(err)}`);\n printer.dim(\" 你可以稍后手动配置自动启动\");\n }\n}\n\nfunction configureWindows(printer: CliPrinter): void {\n printer.log(chalk.dim(\" 正在注册 Windows Task Scheduler 任务...\"));\n\n const actantPath = findActantExecutable();\n const taskXml = `<?xml version=\"1.0\" encoding=\"UTF-16\"?>\n<Task version=\"1.2\" xmlns=\"http://schemas.microsoft.com/windows/2004/02/mit/task\">\n <Triggers>\n <LogonTrigger>\n <Enabled>true</Enabled>\n </LogonTrigger>\n </Triggers>\n <Principals>\n <Principal>\n <LogonType>InteractiveToken</LogonType>\n <RunLevel>LeastPrivilege</RunLevel>\n </Principal>\n </Principals>\n <Settings>\n <MultipleInstancesPolicy>IgnoreNew</MultipleInstancesPolicy>\n <DisallowStartIfOnBatteries>false</DisallowStartIfOnBatteries>\n <StopIfGoingOnBatteries>false</StopIfGoingOnBatteries>\n <ExecutionTimeLimit>PT0S</ExecutionTimeLimit>\n </Settings>\n <Actions>\n <Exec>\n <Command>${actantPath}</Command>\n <Arguments>daemon start</Arguments>\n </Exec>\n </Actions>\n</Task>`;\n\n const tempXmlPath = join(process.env[\"TEMP\"] || homedir(), \"actant-task.xml\");\n writeFileSync(tempXmlPath, taskXml, \"utf-16le\");\n\n execSync(`schtasks /Create /TN \"ActantDaemon\" /XML \"${tempXmlPath}\" /F`, { stdio: \"pipe\" });\n printer.dim(\" 已注册任务: ActantDaemon (登录时自动启动)\");\n}\n\nfunction configureMacOS(printer: CliPrinter): void {\n printer.log(chalk.dim(\" 正在生成 launchd plist...\"));\n\n const actantPath = findActantExecutable();\n const plistDir = join(homedir(), \"Library\", \"LaunchAgents\");\n mkdirSync(plistDir, { recursive: true });\n\n const plistPath = join(plistDir, \"com.actant.daemon.plist\");\n const plist = `<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n <key>Label</key>\n <string>com.actant.daemon</string>\n <key>ProgramArguments</key>\n <array>\n <string>${actantPath}</string>\n <string>daemon</string>\n <string>start</string>\n <string>--foreground</string>\n </array>\n <key>RunAtLoad</key>\n <true/>\n <key>KeepAlive</key>\n <true/>\n <key>StandardOutPath</key>\n <string>${join(homedir(), \".actant\", \"logs\", \"daemon-stdout.log\")}</string>\n <key>StandardErrorPath</key>\n <string>${join(homedir(), \".actant\", \"logs\", \"daemon-stderr.log\")}</string>\n</dict>\n</plist>`;\n\n writeFileSync(plistPath, plist);\n execSync(`launchctl load \"${plistPath}\"`, { stdio: \"pipe\" });\n printer.dim(` 已加载: ${plistPath}`);\n}\n\nfunction configureLinux(printer: CliPrinter): void {\n printer.log(chalk.dim(\" 正在生成 systemd user service...\"));\n\n const actantPath = findActantExecutable();\n const serviceDir = join(homedir(), \".config\", \"systemd\", \"user\");\n mkdirSync(serviceDir, { recursive: true });\n\n const servicePath = join(serviceDir, \"actant-daemon.service\");\n const unit = `[Unit]\nDescription=Actant Daemon — AI Agent Platform\nAfter=network.target\n\n[Service]\nType=simple\nExecStart=${actantPath} daemon start --foreground\nRestart=on-failure\nRestartSec=5\nEnvironment=NODE_ENV=production\n\n[Install]\nWantedBy=default.target\n`;\n\n writeFileSync(servicePath, unit);\n execSync(\"systemctl --user daemon-reload\", { stdio: \"pipe\" });\n execSync(\"systemctl --user enable actant-daemon.service\", { stdio: \"pipe\" });\n printer.dim(` 已启用: actant-daemon.service`);\n}\n\nfunction findActantExecutable(): string {\n try {\n const result = execSync(isWindows() ? \"where.exe actant\" : \"which actant\", {\n encoding: \"utf-8\",\n stdio: [\"pipe\", \"pipe\", \"pipe\"],\n });\n const first = result.trim().split(\"\\n\")[0];\n return first ? first.trim() : \"actant\";\n } catch {\n return \"actant\";\n }\n}\n","import chalk from \"chalk\";\nimport type { RpcClient } from \"../../../client/rpc-client\";\nimport type { CliPrinter } from \"../../../output/index\";\n\nexport async function helloWorld(\n printer: CliPrinter,\n client: RpcClient,\n createdAgents: string[],\n): Promise<void> {\n printer.log(`\\n${chalk.cyan(\"[ Step 6/7 ]\")} ${chalk.bold(\"Hello World 验证\")}\\n`);\n\n const alive = await client.ping();\n if (!alive) {\n printer.warn(\" ⚠ Daemon 未运行,跳过验证\");\n printer.dim(\" 启动后可手动验证: actant agent run <name> --prompt \\\"Hello, World!\\\"\");\n return;\n }\n printer.success(\" ✓ Daemon 连接正常\");\n\n if (createdAgents.length === 0) {\n printer.dim(\" 无已创建的 Agent,跳过端到端验证\");\n printer.dim(\" 创建 Agent 后可运行: actant agent run <name> --prompt \\\"Hello, World!\\\"\");\n return;\n }\n\n const testAgent = createdAgents[0];\n if (!testAgent) {\n printer.dim(\" 无可用 Agent,跳过端到端验证\");\n return;\n }\n printer.log(chalk.dim(` 正在使用 Agent \"${testAgent}\" 进行验证...`));\n\n try {\n await client.call(\"agent.start\", { name: testAgent });\n printer.success(` ✓ Agent \"${testAgent}\" 已启动`);\n\n await waitForAgentReady(client, testAgent, 15000);\n\n printer.log(chalk.dim(` 发送测试消息: \"Hello, World!\"`));\n const runResult = await client.call(\"agent.run\", {\n name: testAgent,\n prompt: \"Please respond with exactly: Hello from Actant! (keep it short)\",\n });\n\n if (runResult) {\n printer.success(\" ✓ 收到 Agent 回复 — 端到端验证通过!\");\n } else {\n printer.warn(\" ⚠ Agent 未返回结果,但启动正常\");\n }\n } catch (err) {\n const message = err instanceof Error ? err.message : String(err);\n if (message.includes(\"not found\") || message.includes(\"NOT_FOUND\")) {\n printer.warn(` ⚠ Agent \"${testAgent}\" 未找到,跳过验证`);\n } else if (message.includes(\"Cannot connect\")) {\n printer.warn(\" ⚠ 无法连接后端 (backend),请确认后端已安装\");\n printer.dim(\" 提示: claude-code 后端需要安装 claude-agent-acp\");\n } else {\n printer.warn(` ⚠ 验证过程中出现错误: ${message}`);\n }\n printer.dim(\" 你可以稍后手动验证: actant agent run <name> --prompt \\\"Hello!\\\"\");\n }\n}\n\nasync function waitForAgentReady(client: RpcClient, name: string, timeoutMs: number): Promise<void> {\n const start = Date.now();\n while (Date.now() - start < timeoutMs) {\n try {\n const status = await client.call(\"agent.status\", { name });\n if (status.status === \"running\") return;\n } catch { /* agent not ready yet */ }\n await new Promise((r) => setTimeout(r, 1000));\n }\n}\n","import { join } from \"node:path\";\nimport { readFileSync, writeFileSync, existsSync } from \"node:fs\";\nimport { confirm, input } from \"@inquirer/prompts\";\nimport chalk from \"chalk\";\nimport type { CliPrinter } from \"../../../output/index\";\nimport type { AppConfig } from \"../types\";\n\nfunction detectDevSourcePath(): string {\n const candidates = [\n process.cwd(),\n join(process.cwd(), \"..\"),\n ];\n for (const dir of candidates) {\n if (existsSync(join(dir, \"packages\", \"cli\", \"package.json\"))) {\n return dir;\n }\n }\n return process.cwd();\n}\n\nexport async function configureUpdate(printer: CliPrinter, actantHome: string): Promise<void> {\n printer.log(`\\n${chalk.cyan(\"[ Step 7/7 ]\")} ${chalk.bold(\"更新选项\")}\\n`);\n\n const wantConfigure = await confirm({\n message: \"配置自动更新源? (用于从本地源码更新 Actant)\",\n default: false,\n });\n\n if (!wantConfigure) {\n printer.dim(\" 跳过更新配置\");\n printUpdateHelp(printer);\n return;\n }\n\n const defaultPath = detectDevSourcePath();\n const devSourcePath = await input({\n message: \"开发源目录路径 (AgentCraft 项目根目录):\",\n default: defaultPath,\n validate: (val) => val.trim().length > 0 || \"路径不能为空\",\n });\n\n const configFile = join(actantHome, \"config.json\");\n let config: AppConfig = {};\n try {\n config = JSON.parse(readFileSync(configFile, \"utf-8\")) as AppConfig;\n } catch { /* start fresh */ }\n\n config.devSourcePath = devSourcePath.trim();\n writeFileSync(configFile, JSON.stringify(config, null, 2) + \"\\n\");\n\n printer.success(`✓ 更新源已配置: ${devSourcePath.trim()}`);\n printUpdateHelp(printer);\n}\n\nfunction printUpdateHelp(printer: CliPrinter): void {\n printer.log(\"\");\n printer.dim(\" 更新命令:\");\n printer.dim(` ${chalk.cyan(\"actant self-update\")} 从源码构建并更新`);\n printer.dim(` ${chalk.cyan(\"actant self-update --check\")} 检查版本差异`);\n printer.dim(` ${chalk.cyan(\"npm install -g @actant/cli\")} 从 npm 更新`);\n}\n"],"mappings":"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","names":["Command","readFileSync","join","getDefaultIpcPath","resolve","Command","chalk","chalk","chalk","chalk","Command","Command","Command","chalk","Command","chalk","resolve","Command","chalk","Command","resolve","chalk","Command","Command","Command","Command","resolve","Command","chalk","Command","chalk","resolve","Command","chalk","Command","chalk","Command","chalk","Command","chalk","Command","Command","Command","Command","chalk","Command","chalk","Command","Command","chalk","Command","chalk","Command","chalk","Command","chalk","Command","chalk","Command","chalk","Command","Command","Command","Command","Command","Command","createInterface","Command","chalk","Command","chalk","resolve","createInterface","Command","Command","Command","Command","Command","Command","Command","Command","chalk","chalk","Command","Command","Command","Command","Command","Command","resolve","Command","Command","resolve","Command","Command","Command","Command","Command","Command","Command","Command","Command","Command","readFile","resolve","Command","Command","readFile","resolve","Command","Command","Command","Command","Command","Command","Command","Command","Command","Command","readFile","resolve","Command","Command","readFile","resolve","Command","Command","Command","Command","Command","Command","Command","Command","Command","Command","readFile","resolve","Command","Command","readFile","resolve","Command","Command","Command","Command","Command","Command","Command","Command","Command","Command","readFile","resolve","Command","Command","readFile","resolve","Command","Command","Command","Command","Command","Command","Command","Command","Command","Command","Command","Command","chalk","Command","Command","chalk","Command","Command","Command","Command","Command","Command","Command","Command","Command","Command","Command","Command","Command","Command","Command","chalk","Command","chalk","resolve","Command","Command","Command","chalk","Command","chalk","Command","Command","spawn","createInterface","Command","resolve","spawn","createInterface","Command","spawn","existsSync","join","chalk","Command","chalk","join","homedir","mkdirSync","existsSync","writeFileSync","chalk","join","readFileSync","writeFileSync","select","input","chalk","res","confirm","input","select","chalk","input","chalk","writeFileSync","mkdirSync","join","homedir","confirm","chalk","isWindows","chalk","join","readFileSync","writeFileSync","existsSync","confirm","input","chalk","Command","homedir","join","existsSync","writeFileSync","chalk","fork","spawn","isWindows","isSingleExecutable","getDefaultIpcPath","join","readFileSync","Command"]}