Heartbeat defaults and ws guard; format

This commit is contained in:
Peter Steinberger
2025-11-27 18:37:30 +01:00
parent 49ada54f6d
commit 9b3c4db10d
3 changed files with 7 additions and 4 deletions

View File

@@ -119,10 +119,10 @@ const isMain =
if (isMain) {
// Global error handlers to prevent silent crashes from unhandled rejections/exceptions.
// These log the error and exit gracefully instead of crashing without trace.
process.on("unhandledRejection", (reason, promise) => {
process.on("unhandledRejection", (reason, _promise) => {
console.error(
"[warelay] Unhandled promise rejection:",
reason instanceof Error ? reason.stack ?? reason.message : reason,
reason instanceof Error ? (reason.stack ?? reason.message) : reason,
);
process.exit(1);
});

View File

@@ -45,7 +45,7 @@ export type WebMonitorTuning = {
const formatDuration = (ms: number) =>
ms >= 1000 ? `${(ms / 1000).toFixed(2)}s` : `${ms}ms`;
const DEFAULT_REPLY_HEARTBEAT_MINUTES = 10;
const DEFAULT_REPLY_HEARTBEAT_MINUTES = 30;
export const HEARTBEAT_TOKEN = "HEARTBEAT_OK";
export const HEARTBEAT_PROMPT = "HEARTBEAT ultrathink";

View File

@@ -90,7 +90,10 @@ export async function createWaSocket(printQr: boolean, verbose: boolean) {
);
// Handle WebSocket-level errors to prevent unhandled exceptions from crashing the process
if (sock.ws) {
if (
sock.ws &&
typeof (sock.ws as unknown as { on?: unknown }).on === "function"
) {
sock.ws.on("error", (err: Error) => {
sessionLogger.error({ error: String(err) }, "WebSocket error");
});