UNPKG

openclaw

Version:

Multi-channel AI gateway with extensible messaging integrations

54 lines (53 loc) 3.54 kB
import { r as defaultRuntime } from "./runtime-CF2WjnNZ.js"; import { t as formatErrorMessage } from "./errors-Db3Ymjlb.js"; import { t as formatDocsLink } from "./links-ClIwBcy4.js"; import { r as theme } from "./theme-vjDs9tao.js"; import { n as inheritOptionFromParent } from "./command-options-BDuSHeWG.js"; import { t as normalizeAcpProvenanceMode } from "./types-BDs6k5lu.js"; import "./types-C3lEWSlg.js"; import { t as resolveGatewayAuthOptions } from "./gateway-secret-options-BZ9vZmJx.js"; //#region src/cli/acp-cli.ts function registerAcpCli(program) { const acp = program.command("acp").description("Run an ACP bridge backed by the Gateway"); acp.option("--url <url>", "Gateway WebSocket URL (defaults to gateway.remote.url when configured)").option("--token <token>", "Gateway token (if required)").option("--token-file <path>", "Read gateway token from file").option("--password <password>", "Gateway password (if required)").option("--password-file <path>", "Read gateway password from file").option("--session <key>", "Default session key (e.g. agent:main:main)").option("--session-label <label>", "Default session label to resolve").option("--require-existing", "Fail if the session key/label does not exist", false).option("--reset-session", "Reset the session key before first use", false).option("--no-prefix-cwd", "Do not prefix prompts with the working directory").option("--provenance <mode>", "ACP provenance mode: off, meta, or meta+receipt").option("-v, --verbose", "Verbose logging to stderr", false).addHelpText("after", () => `\n${theme.muted("Docs:")} ${formatDocsLink("/cli/acp", "docs.openclaw.ai/cli/acp")}\n`).action(async (opts) => { try { const { gatewayToken, gatewayPassword } = resolveGatewayAuthOptions(opts); const provenanceMode = normalizeAcpProvenanceMode(opts.provenance); if (opts.provenance && !provenanceMode) throw new Error("Invalid --provenance. Use \"off\", \"meta\", or \"meta+receipt\"."); const { serveAcpGateway } = await import("./server-zrB9dRww.js"); await serveAcpGateway({ gatewayUrl: opts.url, gatewayToken, gatewayPassword, defaultSessionKey: opts.session, defaultSessionLabel: opts.sessionLabel, requireExistingSession: Boolean(opts.requireExisting), resetSession: Boolean(opts.resetSession), prefixCwd: opts.prefixCwd !== false, provenanceMode, verbose: Boolean(opts.verbose) }); } catch (err) { defaultRuntime.error(`ACP bridge failed: ${formatErrorMessage(err)}`); defaultRuntime.exit(1); } }); acp.command("client").description("Run an interactive ACP client against the local ACP bridge").option("--cwd <dir>", "Working directory for the ACP session").option("--server <command>", "ACP server command (default: openclaw)").option("--server-args <args...>", "Extra arguments for the ACP server").option("--server-verbose", "Enable verbose logging on the ACP server", false).option("-v, --verbose", "Verbose client logging", false).action(async (opts, command) => { const inheritedVerbose = inheritOptionFromParent(command, "verbose"); try { const { runAcpClientInteractive } = await import("./client-CX1o7Kxw.js"); await runAcpClientInteractive({ cwd: opts.cwd, serverCommand: opts.server, serverArgs: opts.serverArgs, serverVerbose: Boolean(opts.serverVerbose), verbose: Boolean(opts.verbose || inheritedVerbose) }); } catch (err) { defaultRuntime.error(formatErrorMessage(err)); defaultRuntime.exit(1); } }); } //#endregion export { registerAcpCli };