chore: Enable "curly" rule to avoid single-statement if confusion/errors.

This commit is contained in:
cpojer
2026-01-31 16:19:20 +09:00
parent 009b16fab8
commit 5ceff756e1
1266 changed files with 27871 additions and 9393 deletions

View File

@@ -72,7 +72,9 @@ async function detectRemoteHostFromCliPath(cliPath: string): Promise<string | un
// Match user@host pattern first (e.g., openclaw@192.168.64.3)
const userHostMatch = content.match(/\bssh\b[^\n]*?\s+([a-zA-Z0-9._-]+@[a-zA-Z0-9._-]+)/);
if (userHostMatch) return userHostMatch[1];
if (userHostMatch) {
return userHostMatch[1];
}
// Fallback: match host-only before imsg command (e.g., ssh -T mac-mini imsg)
const hostOnlyMatch = content.match(/\bssh\b[^\n]*?\s+([a-zA-Z][a-zA-Z0-9._-]*)\s+\S*\bimsg\b/);
@@ -93,13 +95,17 @@ function normalizeReplyField(value: unknown): string | undefined {
const trimmed = value.trim();
return trimmed ? trimmed : undefined;
}
if (typeof value === "number") return String(value);
if (typeof value === "number") {
return String(value);
}
return undefined;
}
function describeReplyContext(message: IMessagePayload): IMessageReplyContext | null {
const body = normalizeReplyField(message.reply_to_text);
if (!body) return null;
if (!body) {
return null;
}
const id = normalizeReplyField(message.reply_to_id);
const sender = normalizeReplyField(message.reply_to_sender);
return { body, id, sender };
@@ -149,7 +155,9 @@ export async function monitorIMessageProvider(opts: MonitorIMessageOpts = {}): P
debounceMs: inboundDebounceMs,
buildKey: (entry) => {
const sender = entry.message.sender?.trim();
if (!sender) return null;
if (!sender) {
return null;
}
const conversationId =
entry.message.chat_id != null
? `chat:${entry.message.chat_id}`
@@ -158,13 +166,19 @@ export async function monitorIMessageProvider(opts: MonitorIMessageOpts = {}): P
},
shouldDebounce: (entry) => {
const text = entry.message.text?.trim() ?? "";
if (!text) return false;
if (entry.message.attachments && entry.message.attachments.length > 0) return false;
if (!text) {
return false;
}
if (entry.message.attachments && entry.message.attachments.length > 0) {
return false;
}
return !hasControlCommand(text, cfg);
},
onFlush: async (entries) => {
const last = entries.at(-1);
if (!last) return;
if (!last) {
return;
}
if (entries.length === 1) {
await handleMessageNow(last.message);
return;
@@ -188,9 +202,13 @@ export async function monitorIMessageProvider(opts: MonitorIMessageOpts = {}): P
async function handleMessageNow(message: IMessagePayload) {
const senderRaw = message.sender ?? "";
const sender = senderRaw.trim();
if (!sender) return;
if (!sender) {
return;
}
const senderNormalized = normalizeIMessageHandle(sender);
if (message.is_from_me) return;
if (message.is_from_me) {
return;
}
const chatId = message.chat_id ?? undefined;
const chatGuid = message.chat_guid ?? undefined;
@@ -220,7 +238,9 @@ export async function monitorIMessageProvider(opts: MonitorIMessageOpts = {}): P
);
const isGroup = Boolean(message.is_group) || treatAsGroupByConfig;
if (isGroup && !chatId) return;
if (isGroup && !chatId) {
return;
}
const groupId = isGroup ? groupIdCandidate : undefined;
const storeAllowFrom = await readChannelAllowFromStore("imessage").catch(() => []);
@@ -273,7 +293,9 @@ export async function monitorIMessageProvider(opts: MonitorIMessageOpts = {}): P
chatIdentifier,
}));
if (!isGroup) {
if (dmPolicy === "disabled") return;
if (dmPolicy === "disabled") {
return;
}
if (!dmAuthorized) {
if (dmPolicy === "pairing") {
const senderId = normalizeIMessageHandle(sender);
@@ -336,7 +358,9 @@ export async function monitorIMessageProvider(opts: MonitorIMessageOpts = {}): P
const kind = mediaKindFromMime(mediaType ?? undefined);
const placeholder = kind ? `<media:${kind}>` : attachments?.length ? "<media:attachment>" : "";
const bodyText = messageText || placeholder;
if (!bodyText) return;
if (!bodyText) {
return;
}
const replyContext = describeReplyContext(message);
const createdAt = message.created_at ? Date.parse(message.created_at) : undefined;
const historyKey = isGroup
@@ -580,7 +604,9 @@ export async function monitorIMessageProvider(opts: MonitorIMessageOpts = {}): P
const handleMessage = async (raw: unknown) => {
const params = raw as { message?: IMessagePayload | null };
const message = params?.message ?? null;
if (!message) return;
if (!message) {
return;
}
await inboundDebouncer.enqueue({ message });
};
@@ -594,7 +620,9 @@ export async function monitorIMessageProvider(opts: MonitorIMessageOpts = {}): P
runtime,
check: async () => {
const probe = await probeIMessage(2000, { cliPath, dbPath, runtime });
if (probe.ok) return { ok: true };
if (probe.ok) {
return { ok: true };
}
if (probe.fatal) {
throw new Error(probe.error ?? "imsg rpc unavailable");
}
@@ -602,7 +630,9 @@ export async function monitorIMessageProvider(opts: MonitorIMessageOpts = {}): P
},
});
if (opts.abortSignal?.aborted) return;
if (opts.abortSignal?.aborted) {
return;
}
const client = await createIMessageRpcClient({
cliPath,
@@ -644,7 +674,9 @@ export async function monitorIMessageProvider(opts: MonitorIMessageOpts = {}): P
subscriptionId = result?.subscription ?? null;
await client.waitForClose();
} catch (err) {
if (abort?.aborted) return;
if (abort?.aborted) {
return;
}
runtime.error?.(danger(`imessage: monitor failed: ${String(err)}`));
throw err;
} finally {