{"version":3,"file":"reconnect.cjs","names":[],"sources":["../../src/utils/reconnect.ts"],"sourcesContent":["/**\n * Shared reconnect defaults and backoff for SSE (`streamWithRetry`) and\n * protocol transports (WebSocket / SSE adapters). Keep these in one place so\n * legacy and v2 clients do not diverge.\n */\n\nexport interface ReconnectInfo {\n  attempt: number;\n  cause: unknown;\n  delayMs: number;\n}\n\nexport interface ConnectedInfo {\n  kind: \"initial\" | \"reconnected\";\n  attempt: number;\n}\n\n/** Default max reconnect / retry attempts after an unexpected disconnect. */\nexport const DEFAULT_MAX_RECONNECT_ATTEMPTS = 5;\n\n/** Base delay (ms) for exponential reconnect backoff (`base * 2^(attempt-1)`). */\nexport const DEFAULT_RECONNECT_BASE_DELAY_MS = 1000;\n\n/** Cap (ms) for exponential reconnect backoff before jitter. */\nexport const DEFAULT_RECONNECT_MAX_DELAY_MS = 5000;\n\n/** Max random jitter (ms) added on top of the capped base delay. */\nexport const DEFAULT_RECONNECT_JITTER_MS = 1000;\n\n/**\n * Exponential backoff with jitter for stream reconnect.\n * `min(base * 2^(attempt-1), max) + random(0, jitter)`.\n */\nexport function reconnectDelayMs(attempt: number): number {\n  const baseDelay = Math.min(\n    DEFAULT_RECONNECT_BASE_DELAY_MS * 2 ** (attempt - 1),\n    DEFAULT_RECONNECT_MAX_DELAY_MS\n  );\n  const jitter = Math.random() * DEFAULT_RECONNECT_JITTER_MS;\n  return baseDelay + jitter;\n}\n"],"mappings":";;AAqBA,MAAa,kCAAkC;;AAG/C,MAAa,iCAAiC;;AAG9C,MAAa,8BAA8B;;;;;AAM3C,SAAgB,iBAAiB,SAAyB;AAMxD,QALkB,KAAK,IACrB,kCAAkC,MAAM,UAAU,IAClD,+BACD,GACc,KAAK,QAAQ,GAAG"}