From 4bf968a45a1df713c00a4645bfee80f6a8fac38d Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Tue, 9 Dec 2025 17:17:50 +0100 Subject: [PATCH] CLI: add gateway verbose flag --- docs/gateway.md | 5 ++++- src/cli/program.ts | 2 ++ src/commands/health.ts | 2 +- src/commands/status.ts | 8 ++------ 4 files changed, 9 insertions(+), 8 deletions(-) diff --git a/docs/gateway.md b/docs/gateway.md index 43d391a67..dd121e2e1 100644 --- a/docs/gateway.md +++ b/docs/gateway.md @@ -9,10 +9,13 @@ Last updated: 2025-12-09 ## How to run (local) ```bash -clawdis gateway --port 18789 +pnpm clawdis gateway --port 18789 +# for full debug/trace logs in stdio: +pnpm clawdis gateway --port 18789 --verbose ``` - Binds WebSocket control plane to `127.0.0.1:` (default 18789). - Logs to stdout; use launchd/systemd to keep it alive and rotate logs. +- Pass `--verbose` to mirror debug logging from the log file into stdio when troubleshooting. - Optional shared secret: pass `--token ` or set `CLAWDIS_GATEWAY_TOKEN` to require clients to send `hello.auth.token`. ## Remote access diff --git a/src/cli/program.ts b/src/cli/program.ts index 7e1db9783..ccb02bb10 100644 --- a/src/cli/program.ts +++ b/src/cli/program.ts @@ -227,7 +227,9 @@ Examples: "--token ", "Shared token required in hello.auth.token (default: CLAWDIS_GATEWAY_TOKEN env if set)", ) + .option("--verbose", "Verbose logging to stdout/stderr", false) .action(async (opts) => { + setVerbose(Boolean(opts.verbose)); const port = Number.parseInt(String(opts.port ?? "18789"), 10); if (Number.isNaN(port) || port <= 0) { defaultRuntime.error("Invalid port"); diff --git a/src/commands/health.ts b/src/commands/health.ts index f4f3ad567..21a587ba4 100644 --- a/src/commands/health.ts +++ b/src/commands/health.ts @@ -4,8 +4,8 @@ import path from "node:path"; import { loadConfig } from "../config/config.js"; import { loadSessionStore, resolveStorePath } from "../config/sessions.js"; import { info } from "../globals.js"; -import { makeProxyFetch } from "../telegram/proxy.js"; import type { RuntimeEnv } from "../runtime.js"; +import { makeProxyFetch } from "../telegram/proxy.js"; import { resolveHeartbeatSeconds } from "../web/reconnect.js"; import { createWaSocket, diff --git a/src/commands/status.ts b/src/commands/status.ts index 32091a815..dd42f2f78 100644 --- a/src/commands/status.ts +++ b/src/commands/status.ts @@ -7,7 +7,6 @@ import { type SessionEntry, } from "../config/sessions.js"; import { info } from "../globals.js"; -import { getHealthSnapshot, type HealthSummary } from "./health.js"; import { buildProviderSummary } from "../infra/provider-summary.js"; import { peekSystemEvents } from "../infra/system-events.js"; import type { RuntimeEnv } from "../runtime.js"; @@ -17,6 +16,7 @@ import { logWebSelfId, webAuthExists, } from "../web/session.js"; +import { getHealthSnapshot, type HealthSummary } from "./health.js"; export type SessionStatus = { key: string; @@ -198,11 +198,7 @@ export async function statusCommand( if (opts.json) { runtime.log( - JSON.stringify( - health ? { ...summary, health } : summary, - null, - 2, - ), + JSON.stringify(health ? { ...summary, health } : summary, null, 2), ); return; }