From 47a1f757a95fb2d359dc01d98448bb6e17ffae0e Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Wed, 10 Dec 2025 18:00:33 +0000 Subject: [PATCH] lint: format and stabilize gateway health --- src/auto-reply/command-reply.ts | 14 +++++++------- src/auto-reply/reply.triggers.test.ts | 2 +- src/auto-reply/reply.ts | 6 +++++- src/cli/program.ts | 12 ++++++++++-- src/commands/health.ts | 8 ++++++-- src/commands/status.ts | 2 +- src/gateway/server.ts | 2 +- src/telegram/send.test.ts | 4 +++- src/web/auto-reply.ts | 8 ++++---- src/web/outbound.ts | 17 ++++------------- src/webchat/server.ts | 4 +--- 11 files changed, 43 insertions(+), 36 deletions(-) diff --git a/src/auto-reply/command-reply.ts b/src/auto-reply/command-reply.ts index 75eb66251..f5db80b58 100644 --- a/src/auto-reply/command-reply.ts +++ b/src/auto-reply/command-reply.ts @@ -805,13 +805,13 @@ export async function runCommandReply( } }, }); - let stdoutUsed = stdout; - let stderrUsed = stderr; - let codeUsed = code; - let signalUsed = signal; - let killedUsed = killed; - let rpcAssistantText = extractRpcAssistantText(stdoutUsed); - let rawStdout = stdoutUsed.trim(); + const stdoutUsed = stdout; + const stderrUsed = stderr; + const codeUsed = code; + const signalUsed = signal; + const killedUsed = killed; + const rpcAssistantText = extractRpcAssistantText(stdoutUsed); + const rawStdout = stdoutUsed.trim(); let mediaFromCommand: string[] | undefined; const trimmed = stripRpcNoise(rawStdout); if (stderrUsed?.trim()) { diff --git a/src/auto-reply/reply.triggers.test.ts b/src/auto-reply/reply.triggers.test.ts index f1e3e8222..db9d98caa 100644 --- a/src/auto-reply/reply.triggers.test.ts +++ b/src/auto-reply/reply.triggers.test.ts @@ -1,5 +1,5 @@ -import { join } from "node:path"; import { tmpdir } from "node:os"; +import { join } from "node:path"; import { afterEach, describe, expect, it, vi } from "vitest"; import * as tauRpc from "../process/tau-rpc.js"; diff --git a/src/auto-reply/reply.ts b/src/auto-reply/reply.ts index 3670118ae..4ab3dc4d0 100644 --- a/src/auto-reply/reply.ts +++ b/src/auto-reply/reply.ts @@ -769,7 +769,11 @@ export async function getReplyFromConfig( const returnedSessionId = meta.agentMeta?.sessionId; // TODO: remove once pi-mono persists stable session ids for custom --session paths. const allowMetaSessionId = false; - if (allowMetaSessionId && returnedSessionId && returnedSessionId !== sessionId) { + if ( + allowMetaSessionId && + returnedSessionId && + returnedSessionId !== sessionId + ) { const entry = sessionEntry ?? sessionStore[sessionKey] ?? { sessionId: returnedSessionId, diff --git a/src/cli/program.ts b/src/cli/program.ts index e26da3a71..2e4e140ab 100644 --- a/src/cli/program.ts +++ b/src/cli/program.ts @@ -238,7 +238,10 @@ Examples: const webchatPort = opts.webchatPort ? Number.parseInt(String(opts.webchatPort), 10) : undefined; - if (webchatPort !== undefined && (Number.isNaN(webchatPort) || webchatPort <= 0)) { + if ( + webchatPort !== undefined && + (Number.isNaN(webchatPort) || webchatPort <= 0) + ) { defaultRuntime.error("Invalid webchat port"); defaultRuntime.exit(1); } @@ -290,7 +293,12 @@ Examples: const callGatewayCli = async ( method: string, - opts: { url?: string; token?: string; timeout?: string; expectFinal?: boolean }, + opts: { + url?: string; + token?: string; + timeout?: string; + expectFinal?: boolean; + }, params?: unknown, ) => callGateway({ diff --git a/src/commands/health.ts b/src/commands/health.ts index 526481375..08e9469fd 100644 --- a/src/commands/health.ts +++ b/src/commands/health.ts @@ -1,11 +1,15 @@ import { loadConfig } from "../config/config.js"; import { loadSessionStore, resolveStorePath } from "../config/sessions.js"; +import { callGateway } from "../gateway/call.js"; import { info } from "../globals.js"; import type { RuntimeEnv } from "../runtime.js"; import { makeProxyFetch } from "../telegram/proxy.js"; import { resolveHeartbeatSeconds } from "../web/reconnect.js"; -import { getWebAuthAgeMs, logWebSelfId, webAuthExists } from "../web/session.js"; -import { callGateway } from "../gateway/call.js"; +import { + getWebAuthAgeMs, + logWebSelfId, + webAuthExists, +} from "../web/session.js"; type TelegramProbe = { ok: boolean; diff --git a/src/commands/status.ts b/src/commands/status.ts index 948fd1ab6..183bc4b1c 100644 --- a/src/commands/status.ts +++ b/src/commands/status.ts @@ -6,11 +6,11 @@ import { resolveStorePath, type SessionEntry, } from "../config/sessions.js"; +import { callGateway } from "../gateway/call.js"; import { info } from "../globals.js"; import { buildProviderSummary } from "../infra/provider-summary.js"; import { peekSystemEvents } from "../infra/system-events.js"; import type { RuntimeEnv } from "../runtime.js"; -import { callGateway } from "../gateway/call.js"; import { resolveHeartbeatSeconds } from "../web/reconnect.js"; import { getWebAuthAgeMs, diff --git a/src/gateway/server.ts b/src/gateway/server.ts index 6655d0931..ec92b9ae9 100644 --- a/src/gateway/server.ts +++ b/src/gateway/server.ts @@ -233,7 +233,7 @@ function formatError(err: unknown): string { return JSON.stringify(err, null, 2); } -async function refreshHealthSnapshot(opts?: { probe?: boolean }) { +async function refreshHealthSnapshot(_opts?: { probe?: boolean }) { if (!healthRefresh) { healthRefresh = (async () => { const snap = await getHealthSnapshot(undefined); diff --git a/src/telegram/send.test.ts b/src/telegram/send.test.ts index f6c8e31c7..7c8edc0ce 100644 --- a/src/telegram/send.test.ts +++ b/src/telegram/send.test.ts @@ -15,7 +15,9 @@ describe("sendMessageTelegram", () => { message_id: 42, chat: { id: chatId }, }); - const api = { sendMessage } as unknown as { sendMessage: typeof sendMessage }; + const api = { sendMessage } as unknown as { + sendMessage: typeof sendMessage; + }; const res = await sendMessageTelegram(chatId, "_oops_", { token: "tok", diff --git a/src/web/auto-reply.ts b/src/web/auto-reply.ts index 98c9b3a91..b3bd8f146 100644 --- a/src/web/auto-reply.ts +++ b/src/web/auto-reply.ts @@ -327,10 +327,10 @@ export async function runWebHeartbeatOnce(opts: { { to, reason: "heartbeat-token", rawLength: replyPayload.text?.length }, "heartbeat skipped", ); - console.log(success("heartbeat: ok (HEARTBEAT_OK)")); - emitHeartbeatEvent({ status: "ok-token", to }); - return; - } + console.log(success("heartbeat: ok (HEARTBEAT_OK)")); + emitHeartbeatEvent({ status: "ok-token", to }); + return; + } if (hasMedia) { heartbeatLogger.warn( diff --git a/src/web/outbound.ts b/src/web/outbound.ts index 0265adca7..c87f2e474 100644 --- a/src/web/outbound.ts +++ b/src/web/outbound.ts @@ -38,7 +38,7 @@ export async function sendMessageWhatsApp( mediaType = media.contentType === "audio/ogg" ? "audio/ogg; codecs=opus" - : media.contentType ?? "application/octet-stream"; + : (media.contentType ?? "application/octet-stream"); } else if (media.kind === "video") { text = caption ?? ""; } else if (media.kind === "image") { @@ -54,18 +54,9 @@ export async function sendMessageWhatsApp( { jid, hasMedia: Boolean(options.mediaUrl) }, "sending message", ); - const result = await (async () => { - if (!active) throw new Error("Active web listener missing"); - let mediaBuffer: Buffer | undefined; - let mediaType: string | undefined; - if (options.mediaUrl) { - const media = await loadWebMedia(options.mediaUrl); - mediaBuffer = media.buffer; - mediaType = media.contentType; - } - await active.sendComposingTo(to); - return active.sendMessage(to, text, mediaBuffer, mediaType); - })(); + if (!active) throw new Error("Active web listener missing"); + await active.sendComposingTo(to); + const result = await active.sendMessage(to, text, mediaBuffer, mediaType); const messageId = (result as { messageId?: string })?.messageId ?? "unknown"; logInfo( diff --git a/src/webchat/server.ts b/src/webchat/server.ts index cf460a317..7ffa2e215 100644 --- a/src/webchat/server.ts +++ b/src/webchat/server.ts @@ -160,9 +160,7 @@ export async function __broadcastGatewayEventForTests() { // no-op } -export async function ensureWebChatServerFromConfig( - overridePort?: number, -) { +export async function ensureWebChatServerFromConfig(overridePort?: number) { const cfg = loadConfig(); if (cfg.webchat?.enabled === false) return null; const port = overridePort ?? cfg.webchat?.port ?? WEBCHAT_DEFAULT_PORT;