export function normalizeWebhookPath(raw: string): string { const trimmed = raw.trim(); if (!trimmed) { return "/"; } const withSlash = trimmed.startsWith("/") ? trimmed : `/${trimmed}`; if (withSlash.length > 1 && withSlash.endsWith("/")) { return withSlash.slice(0, -1); } return withSlash; } export function resolveWebhookPath(params: { webhookPath?: string; webhookUrl?: string; defaultPath?: string | null; }): string | null { const trimmedPath = params.webhookPath?.trim(); if (trimmedPath) { return normalizeWebhookPath(trimmedPath); } if (params.webhookUrl?.trim()) { try { const parsed = new URL(params.webhookUrl); return normalizeWebhookPath(parsed.pathname || "/"); } catch { return null; } } return params.defaultPath ?? null; }