From 4e92ccc0dd95d30377812891a76070f07a5465b7 Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Fri, 9 Jan 2026 00:31:24 +0100 Subject: [PATCH] style: format --- src/commands/doctor.ts | 18 +++++++++--------- src/commands/providers.test.ts | 7 ++++++- src/commands/providers/status.ts | 6 ++++-- src/discord/audit.test.ts | 10 +++++++--- src/discord/audit.ts | 11 ++++++++--- src/discord/send.ts | 2 +- src/gateway/server-methods/providers.ts | 20 ++++++++++---------- src/infra/provider-activity.test.ts | 24 ++++++++++++------------ src/infra/provider-activity.ts | 1 - src/infra/providers-status-issues.ts | 1 - src/telegram/audit.test.ts | 12 +++++++----- src/telegram/bot.ts | 2 +- src/telegram/send.ts | 2 +- 13 files changed, 66 insertions(+), 50 deletions(-) diff --git a/src/commands/doctor.ts b/src/commands/doctor.ts index 2ee645e8d..70514c279 100644 --- a/src/commands/doctor.ts +++ b/src/commands/doctor.ts @@ -240,15 +240,15 @@ export async function doctorCommand( } } - if (healthOk) { - try { - const status = await callGateway>({ - method: "providers.status", - params: { probe: true, timeoutMs: 5000 }, - timeoutMs: 6000, - }); - const issues = collectProvidersStatusIssues(status); - if (issues.length > 0) { + if (healthOk) { + try { + const status = await callGateway>({ + method: "providers.status", + params: { probe: true, timeoutMs: 5000 }, + timeoutMs: 6000, + }); + const issues = collectProvidersStatusIssues(status); + if (issues.length > 0) { note( issues .map( diff --git a/src/commands/providers.test.ts b/src/commands/providers.test.ts index ad1cca796..a1ef4cfa2 100644 --- a/src/commands/providers.test.ts +++ b/src/commands/providers.test.ts @@ -391,7 +391,12 @@ describe("providers command", () => { hasWildcardUnmentionedGroups: true, unresolvedGroups: 1, groups: [ - { chatId: "-1001", ok: false, status: "left", error: "not in group" }, + { + chatId: "-1001", + ok: false, + status: "left", + error: "not in group", + }, ], }, }, diff --git a/src/commands/providers/status.ts b/src/commands/providers/status.ts index a5db18897..5039c53d9 100644 --- a/src/commands/providers/status.ts +++ b/src/commands/providers/status.ts @@ -79,11 +79,13 @@ export function formatGatewayProvidersStatusLines( bits.push(account.connected ? "connected" : "disconnected"); } const inboundAt = - typeof account.lastInboundAt === "number" && Number.isFinite(account.lastInboundAt) + typeof account.lastInboundAt === "number" && + Number.isFinite(account.lastInboundAt) ? account.lastInboundAt : null; const outboundAt = - typeof account.lastOutboundAt === "number" && Number.isFinite(account.lastOutboundAt) + typeof account.lastOutboundAt === "number" && + Number.isFinite(account.lastOutboundAt) ? account.lastOutboundAt : null; if (inboundAt) bits.push(`in:${formatAge(Date.now() - inboundAt)}`); diff --git a/src/discord/audit.test.ts b/src/discord/audit.test.ts index ae0cf91ec..fe0b2ced6 100644 --- a/src/discord/audit.test.ts +++ b/src/discord/audit.test.ts @@ -27,11 +27,16 @@ describe("discord audit", () => { }, } as unknown as import("../config/config.js").ClawdbotConfig; - const collected = collectDiscordAuditChannelIds({ cfg, accountId: "default" }); + const collected = collectDiscordAuditChannelIds({ + cfg, + accountId: "default", + }); expect(collected.channelIds).toEqual(["111"]); expect(collected.unresolvedChannels).toBe(1); - (fetchChannelPermissionsDiscord as unknown as ReturnType).mockResolvedValueOnce({ + ( + fetchChannelPermissionsDiscord as unknown as ReturnType + ).mockResolvedValueOnce({ channelId: "111", permissions: ["ViewChannel"], raw: "0", @@ -49,4 +54,3 @@ describe("discord audit", () => { expect(audit.channels[0]?.missing).toContain("SendMessages"); }); }); - diff --git a/src/discord/audit.ts b/src/discord/audit.ts index 76883e70e..07febe86e 100644 --- a/src/discord/audit.ts +++ b/src/discord/audit.ts @@ -27,7 +27,9 @@ function isRecord(value: unknown): value is Record { return Boolean(value) && typeof value === "object" && !Array.isArray(value); } -function shouldAuditChannelConfig(config: DiscordGuildChannelConfig | undefined) { +function shouldAuditChannelConfig( + config: DiscordGuildChannelConfig | undefined, +) { if (!config) return true; if (config.allow === false) return false; if (config.enabled === false) return false; @@ -46,7 +48,11 @@ function listConfiguredGuildChannelKeys( for (const [key, value] of Object.entries(channelsRaw)) { const channelId = String(key).trim(); if (!channelId) continue; - if (!shouldAuditChannelConfig(value as DiscordGuildChannelConfig | undefined)) + if ( + !shouldAuditChannelConfig( + value as DiscordGuildChannelConfig | undefined, + ) + ) continue; ids.add(channelId); } @@ -119,4 +125,3 @@ export async function auditDiscordChannelPermissions(params: { elapsedMs: Date.now() - started, }; } - diff --git a/src/discord/send.ts b/src/discord/send.ts index d582c9fb1..30091fedf 100644 --- a/src/discord/send.ts +++ b/src/discord/send.ts @@ -18,6 +18,7 @@ import { } from "discord-api-types/v10"; import { loadConfig } from "../config/config.js"; +import { recordProviderActivity } from "../infra/provider-activity.js"; import type { RetryConfig } from "../infra/retry.js"; import { createDiscordRetryRunner, @@ -32,7 +33,6 @@ import { loadWebMedia, loadWebMediaRaw } from "../web/media.js"; import { resolveDiscordAccount } from "./accounts.js"; import { chunkDiscordText } from "./chunk.js"; import { normalizeDiscordToken } from "./token.js"; -import { recordProviderActivity } from "../infra/provider-activity.js"; const DISCORD_TEXT_LIMIT = 2000; const DISCORD_MAX_STICKERS = 3; diff --git a/src/gateway/server-methods/providers.ts b/src/gateway/server-methods/providers.ts index 9bf9c782c..a56bee292 100644 --- a/src/gateway/server-methods/providers.ts +++ b/src/gateway/server-methods/providers.ts @@ -1,15 +1,19 @@ import type { ClawdbotConfig } from "../../config/config.js"; -import type { TelegramGroupConfig } from "../../config/types.js"; import { loadConfig, readConfigFileSnapshot, writeConfigFile, } from "../../config/config.js"; +import type { TelegramGroupConfig } from "../../config/types.js"; import { listDiscordAccountIds, resolveDefaultDiscordAccountId, resolveDiscordAccount, } from "../../discord/accounts.js"; +import { + auditDiscordChannelPermissions, + collectDiscordAuditChannelIds, +} from "../../discord/audit.js"; import { type DiscordProbe, probeDiscord } from "../../discord/probe.js"; import { listIMessageAccountIds, @@ -17,6 +21,7 @@ import { resolveIMessageAccount, } from "../../imessage/accounts.js"; import { type IMessageProbe, probeIMessage } from "../../imessage/probe.js"; +import { getProviderActivity } from "../../infra/provider-activity.js"; import { listSignalAccountIds, resolveDefaultSignalAccountId, @@ -34,6 +39,10 @@ import { resolveDefaultTelegramAccountId, resolveTelegramAccount, } from "../../telegram/accounts.js"; +import { + auditTelegramGroupMembership, + collectTelegramUnmentionedGroupIds, +} from "../../telegram/audit.js"; import { probeTelegram, type TelegramProbe } from "../../telegram/probe.js"; import { listEnabledWhatsAppAccounts, @@ -52,15 +61,6 @@ import { } from "../protocol/index.js"; import { formatForLog } from "../ws-log.js"; import type { GatewayRequestHandlers } from "./types.js"; -import { getProviderActivity } from "../../infra/provider-activity.js"; -import { - auditDiscordChannelPermissions, - collectDiscordAuditChannelIds, -} from "../../discord/audit.js"; -import { - auditTelegramGroupMembership, - collectTelegramUnmentionedGroupIds, -} from "../../telegram/audit.js"; export const providersHandlers: GatewayRequestHandlers = { "providers.status": async ({ params, respond, context }) => { diff --git a/src/infra/provider-activity.test.ts b/src/infra/provider-activity.test.ts index 85ae8c6d5..d669831f2 100644 --- a/src/infra/provider-activity.test.ts +++ b/src/infra/provider-activity.test.ts @@ -39,17 +39,17 @@ describe("provider activity", () => { direction: "inbound", at: 2, }); - expect(getProviderActivity({ provider: "whatsapp", accountId: "a" })).toEqual( - { - inboundAt: 1, - outboundAt: null, - }, - ); - expect(getProviderActivity({ provider: "whatsapp", accountId: "b" })).toEqual( - { - inboundAt: 2, - outboundAt: null, - }, - ); + expect( + getProviderActivity({ provider: "whatsapp", accountId: "a" }), + ).toEqual({ + inboundAt: 1, + outboundAt: null, + }); + expect( + getProviderActivity({ provider: "whatsapp", accountId: "b" }), + ).toEqual({ + inboundAt: 2, + outboundAt: null, + }); }); }); diff --git a/src/infra/provider-activity.ts b/src/infra/provider-activity.ts index 46609340a..dff0df0c1 100644 --- a/src/infra/provider-activity.ts +++ b/src/infra/provider-activity.ts @@ -50,4 +50,3 @@ export function getProviderActivity(params: { export function resetProviderActivityForTest() { activity.clear(); } - diff --git a/src/infra/providers-status-issues.ts b/src/infra/providers-status-issues.ts index 549040788..d30040f3e 100644 --- a/src/infra/providers-status-issues.ts +++ b/src/infra/providers-status-issues.ts @@ -343,4 +343,3 @@ export function collectProvidersStatusIssues( return issues; } - diff --git a/src/telegram/audit.test.ts b/src/telegram/audit.test.ts index 1be55fe67..638d251f6 100644 --- a/src/telegram/audit.test.ts +++ b/src/telegram/audit.test.ts @@ -24,10 +24,13 @@ describe("telegram audit", () => { vi.stubGlobal( "fetch", vi.fn().mockResolvedValueOnce( - new Response(JSON.stringify({ ok: true, result: { status: "member" } }), { - status: 200, - headers: { "Content-Type": "application/json" }, - }), + new Response( + JSON.stringify({ ok: true, result: { status: "member" } }), + { + status: 200, + headers: { "Content-Type": "application/json" }, + }, + ), ), ); const res = await auditTelegramGroupMembership({ @@ -63,4 +66,3 @@ describe("telegram audit", () => { expect(res.groups[0]?.status).toBe("left"); }); }); - diff --git a/src/telegram/bot.ts b/src/telegram/bot.ts index 5d3f4281c..f3563e3f3 100644 --- a/src/telegram/bot.ts +++ b/src/telegram/bot.ts @@ -38,6 +38,7 @@ import { } from "../config/sessions.js"; import { danger, logVerbose, shouldLogVerbose } from "../globals.js"; import { formatErrorMessage } from "../infra/errors.js"; +import { recordProviderActivity } from "../infra/provider-activity.js"; import { getChildLogger } from "../logging.js"; import { mediaKindFromMime } from "../media/constants.js"; import { detectMime, isGifMedia } from "../media/mime.js"; @@ -50,7 +51,6 @@ import { import { resolveAgentRoute } from "../routing/resolve-route.js"; import type { RuntimeEnv } from "../runtime.js"; import { loadWebMedia } from "../web/media.js"; -import { recordProviderActivity } from "../infra/provider-activity.js"; import { resolveTelegramAccount } from "./accounts.js"; import { createTelegramDraftStream } from "./draft-stream.js"; import { resolveTelegramFetch } from "./fetch.js"; diff --git a/src/telegram/send.ts b/src/telegram/send.ts index c63b50d4b..f77e049a7 100644 --- a/src/telegram/send.ts +++ b/src/telegram/send.ts @@ -3,9 +3,9 @@ import type { ApiClientOptions } from "grammy"; import { Bot, InputFile } from "grammy"; import { loadConfig } from "../config/config.js"; import { formatErrorMessage } from "../infra/errors.js"; +import { recordProviderActivity } from "../infra/provider-activity.js"; import type { RetryConfig } from "../infra/retry.js"; import { createTelegramRetryRunner } from "../infra/retry-policy.js"; -import { recordProviderActivity } from "../infra/provider-activity.js"; import { mediaKindFromMime } from "../media/constants.js"; import { isGifMedia } from "../media/mime.js"; import { loadWebMedia } from "../web/media.js";