/** * BetterContact launchers are upstream-async but Deepline gives callers a * bounded synchronous convenience wait before returning a pollable request * id. Keep the provider and SDK budgets together so the client cannot abandon * a launched job while the server is still inside that documented path. */ /** Per-request upstream timeout used by BetterContact launch and poll calls. */ export const BETTERCONTACT_UPSTREAM_REQUEST_TIMEOUT_MS = 30_000; /** * Client budget for a BetterContact launcher response. * * Covers route cold start, the bounded synchronous wait, one in-flight * upstream request, and response serialization without widening unrelated * tool requests. */ export const BETTERCONTACT_LAUNCHER_CLIENT_TIMEOUT_MS = 120_000; const BETTERCONTACT_LAUNCHER_TOOL_IDS = new Set([ 'bettercontact_enrich', 'bettercontact_bulk_enrich', ]); export function usesExtendedBetterContactLauncherBudget( toolId: string, ): boolean { return BETTERCONTACT_LAUNCHER_TOOL_IDS.has(toolId.trim().toLowerCase()); }