| import type { Command } from "commander"; |
| import type { OpenClawConfig } from "../../config/config.js"; |
| import { callGateway } from "../../gateway/call.js"; |
| import { GATEWAY_CLIENT_MODES, GATEWAY_CLIENT_NAMES } from "../../utils/message-channel.js"; |
| import { withProgress } from "../progress.js"; |
|
|
| export type GatewayRpcOpts = { |
| config?: OpenClawConfig; |
| url?: string; |
| token?: string; |
| password?: string; |
| timeout?: string; |
| expectFinal?: boolean; |
| json?: boolean; |
| }; |
|
|
| export const gatewayCallOpts = (cmd: Command) => |
| cmd |
| .option("--url <url>", "Gateway WebSocket URL (defaults to gateway.remote.url when configured)") |
| .option("--token <token>", "Gateway token (if required)") |
| .option("--password <password>", "Gateway password (password auth)") |
| .option("--timeout <ms>", "Timeout in ms", "10000") |
| .option("--expect-final", "Wait for final response (agent)", false) |
| .option("--json", "Output JSON", false); |
|
|
| export const callGatewayCli = async (method: string, opts: GatewayRpcOpts, params?: unknown) => |
| withProgress( |
| { |
| label: `Gateway ${method}`, |
| indeterminate: true, |
| enabled: opts.json !== true, |
| }, |
| async () => |
| await callGateway({ |
| config: opts.config, |
| url: opts.url, |
| token: opts.token, |
| password: opts.password, |
| method, |
| params, |
| expectFinal: Boolean(opts.expectFinal), |
| timeoutMs: Number(opts.timeout ?? 10_000), |
| clientName: GATEWAY_CLIENT_NAMES.CLI, |
| mode: GATEWAY_CLIENT_MODES.CLI, |
| }), |
| ); |
|
|