{"version":3,"sources":["../../src/auth/types.ts","../../src/auth/AINativeAuthProvider.ts"],"names":["AuthMethod","AuthStatus","StorageStrategy","AuthErrorType","AuthEventType"],"mappings":"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","file":"index.mjs","sourcesContent":["/**\n * Authentication types for AINative Auth integration\n */\n\n/**\n * Supported authentication methods\n */\nexport enum AuthMethod {\n  /** API Key authentication */\n  API_KEY = 'API_KEY',\n  /** OAuth 2.0 authentication */\n  OAUTH = 'OAUTH',\n  /** JSON Web Token authentication */\n  JWT = 'JWT',\n}\n\n/**\n * Authentication status\n */\nexport enum AuthStatus {\n  /** Not authenticated */\n  UNAUTHENTICATED = 'UNAUTHENTICATED',\n  /** Authentication in progress */\n  AUTHENTICATING = 'AUTHENTICATING',\n  /** Successfully authenticated */\n  AUTHENTICATED = 'AUTHENTICATED',\n  /** Authentication failed */\n  FAILED = 'FAILED',\n  /** Token expired, needs refresh */\n  EXPIRED = 'EXPIRED',\n  /** Token refreshing in progress */\n  REFRESHING = 'REFRESHING',\n}\n\n/**\n * Base credentials interface\n */\nexport interface BaseCredentials {\n  /** Authentication method */\n  method: AuthMethod;\n  /** Tenant ID for multi-tenant support */\n  tenantId?: string;\n}\n\n/**\n * API Key credentials\n */\nexport interface APIKeyCredentials extends BaseCredentials {\n  method: AuthMethod.API_KEY;\n  /** API key value */\n  apiKey: string;\n}\n\n/**\n * OAuth credentials\n */\nexport interface OAuthCredentials extends BaseCredentials {\n  method: AuthMethod.OAUTH;\n  /** Client ID */\n  clientId: string;\n  /** Client secret */\n  clientSecret: string;\n  /** OAuth scopes */\n  scopes?: string[];\n  /** Redirect URI for OAuth flow */\n  redirectUri?: string;\n}\n\n/**\n * JWT credentials\n */\nexport interface JWTCredentials extends BaseCredentials {\n  method: AuthMethod.JWT;\n  /** JWT token */\n  token: string;\n  /** Refresh token (optional) */\n  refreshToken?: string;\n}\n\n/**\n * Union type for all credential types\n */\nexport type AuthCredentials = APIKeyCredentials | OAuthCredentials | JWTCredentials;\n\n/**\n * Authentication configuration\n */\nexport interface AuthConfig {\n  /** AINative API base URL */\n  baseUrl?: string;\n  /** Authentication endpoint */\n  authEndpoint?: string;\n  /** Token refresh endpoint */\n  refreshEndpoint?: string;\n  /** Token validation endpoint */\n  validateEndpoint?: string;\n  /** Logout endpoint */\n  logoutEndpoint?: string;\n  /** Automatic token refresh (default: true) */\n  autoRefresh?: boolean;\n  /** Token refresh buffer in seconds (refresh before expiration) */\n  refreshBuffer?: number;\n  /** Request timeout in milliseconds */\n  timeout?: number;\n  /** Maximum retry attempts for failed requests */\n  maxRetries?: number;\n  /** Retry delay in milliseconds */\n  retryDelay?: number;\n  /** Enable request/response logging */\n  enableLogging?: boolean;\n  /** Custom headers to include in all requests */\n  customHeaders?: Record<string, string>;\n  /** Storage strategy for tokens */\n  storageStrategy?: StorageStrategy;\n}\n\n/**\n * Storage strategy for tokens\n */\nexport enum StorageStrategy {\n  /** Store in memory only (lost on restart) */\n  MEMORY = 'MEMORY',\n  /** Store in local storage (browser) */\n  LOCAL_STORAGE = 'LOCAL_STORAGE',\n  /** Store in session storage (browser) */\n  SESSION_STORAGE = 'SESSION_STORAGE',\n  /** Custom storage implementation */\n  CUSTOM = 'CUSTOM',\n}\n\n/**\n * Authentication session data\n */\nexport interface AuthSession {\n  /** Current authentication status */\n  status: AuthStatus;\n  /** Access token */\n  accessToken?: string;\n  /** Refresh token */\n  refreshToken?: string;\n  /** Token type (usually \"Bearer\") */\n  tokenType?: string;\n  /** Token expiration timestamp (Unix time in seconds) */\n  expiresAt?: number;\n  /** Token issued at timestamp (Unix time in seconds) */\n  issuedAt?: number;\n  /** Scopes granted */\n  scopes?: string[];\n  /** User information */\n  user?: UserInfo;\n  /** Tenant ID */\n  tenantId?: string;\n  /** Session metadata */\n  metadata?: Record<string, any>;\n}\n\n/**\n * User information from authentication\n */\nexport interface UserInfo {\n  /** User ID */\n  id: string;\n  /** Email address */\n  email?: string;\n  /** Full name */\n  name?: string;\n  /** Username */\n  username?: string;\n  /** User roles */\n  roles?: string[];\n  /** User permissions */\n  permissions?: string[];\n  /** Additional user metadata */\n  metadata?: Record<string, any>;\n}\n\n/**\n * Token refresh options\n */\nexport interface TokenRefreshOptions {\n  /** Force refresh even if token not expired */\n  force?: boolean;\n  /** Retry on failure */\n  retry?: boolean;\n  /** Maximum retry attempts */\n  maxRetries?: number;\n}\n\n/**\n * Authentication error types\n */\nexport enum AuthErrorType {\n  /** Invalid credentials */\n  INVALID_CREDENTIALS = 'INVALID_CREDENTIALS',\n  /** Network error */\n  NETWORK_ERROR = 'NETWORK_ERROR',\n  /** Token expired */\n  TOKEN_EXPIRED = 'TOKEN_EXPIRED',\n  /** Invalid token */\n  INVALID_TOKEN = 'INVALID_TOKEN',\n  /** Unauthorized access */\n  UNAUTHORIZED = 'UNAUTHORIZED',\n  /** Forbidden access */\n  FORBIDDEN = 'FORBIDDEN',\n  /** Rate limit exceeded */\n  RATE_LIMIT_EXCEEDED = 'RATE_LIMIT_EXCEEDED',\n  /** Server error */\n  SERVER_ERROR = 'SERVER_ERROR',\n  /** Configuration error */\n  CONFIG_ERROR = 'CONFIG_ERROR',\n  /** Unknown error */\n  UNKNOWN = 'UNKNOWN',\n}\n\n/**\n * Authentication error\n */\nexport class AuthError extends Error {\n  /** Error type */\n  type: AuthErrorType;\n  /** HTTP status code (if applicable) */\n  statusCode?: number;\n  /** Original error */\n  originalError?: Error;\n  /** Additional error details */\n  details?: Record<string, any>;\n\n  constructor(\n    message: string,\n    type: AuthErrorType = AuthErrorType.UNKNOWN,\n    statusCode?: number,\n    originalError?: Error,\n    details?: Record<string, any>\n  ) {\n    super(message);\n    this.name = 'AuthError';\n    this.type = type;\n    this.statusCode = statusCode;\n    this.originalError = originalError;\n    this.details = details;\n\n    // Maintains proper stack trace for where our error was thrown (only available on V8)\n    if (Error.captureStackTrace) {\n      Error.captureStackTrace(this, AuthError);\n    }\n  }\n}\n\n/**\n * Token validation result\n */\nexport interface TokenValidationResult {\n  /** Whether the token is valid */\n  valid: boolean;\n  /** Token expiration timestamp */\n  expiresAt?: number;\n  /** Time until expiration in seconds */\n  expiresIn?: number;\n  /** Whether token is expired */\n  expired: boolean;\n  /** Whether token needs refresh soon */\n  needsRefresh: boolean;\n  /** Token claims/payload */\n  claims?: Record<string, any>;\n  /** Validation error if invalid */\n  error?: string;\n}\n\n/**\n * Authentication event types\n */\nexport enum AuthEventType {\n  /** Authentication started */\n  AUTH_STARTED = 'AUTH_STARTED',\n  /** Authentication succeeded */\n  AUTH_SUCCESS = 'AUTH_SUCCESS',\n  /** Authentication failed */\n  AUTH_FAILED = 'AUTH_FAILED',\n  /** Token refresh started */\n  REFRESH_STARTED = 'REFRESH_STARTED',\n  /** Token refresh succeeded */\n  REFRESH_SUCCESS = 'REFRESH_SUCCESS',\n  /** Token refresh failed */\n  REFRESH_FAILED = 'REFRESH_FAILED',\n  /** Session validated */\n  SESSION_VALIDATED = 'SESSION_VALIDATED',\n  /** Session expired */\n  SESSION_EXPIRED = 'SESSION_EXPIRED',\n  /** Logout initiated */\n  LOGOUT_STARTED = 'LOGOUT_STARTED',\n  /** Logout completed */\n  LOGOUT_COMPLETED = 'LOGOUT_COMPLETED',\n}\n\n/**\n * Authentication event\n */\nexport interface AuthEvent {\n  /** Event type */\n  type: AuthEventType;\n  /** Event timestamp */\n  timestamp: Date;\n  /** Session at time of event */\n  session?: AuthSession;\n  /** Error if event represents a failure */\n  error?: AuthError;\n  /** Additional event data */\n  data?: Record<string, any>;\n}\n\n/**\n * Authentication event listener\n */\nexport type AuthEventListener = (event: AuthEvent) => void;\n\n/**\n * Storage adapter interface for custom token storage\n */\nexport interface StorageAdapter {\n  /** Get item from storage */\n  getItem(key: string): Promise<string | null>;\n  /** Set item in storage */\n  setItem(key: string, value: string): Promise<void>;\n  /** Remove item from storage */\n  removeItem(key: string): Promise<void>;\n  /** Clear all items from storage */\n  clear(): Promise<void>;\n}\n\n/**\n * API response for authentication\n */\nexport interface AuthResponse {\n  /** Access token */\n  access_token: string;\n  /** Refresh token */\n  refresh_token?: string;\n  /** Token type */\n  token_type: string;\n  /** Expires in (seconds) */\n  expires_in: number;\n  /** Scopes granted */\n  scope?: string;\n  /** User information */\n  user?: UserInfo;\n  /** Additional response data */\n  [key: string]: any;\n}\n\n/**\n * API response for token refresh\n */\nexport interface RefreshResponse {\n  /** New access token */\n  access_token: string;\n  /** New refresh token (optional) */\n  refresh_token?: string;\n  /** Token type */\n  token_type: string;\n  /** Expires in (seconds) */\n  expires_in: number;\n  /** Additional response data */\n  [key: string]: any;\n}\n\n/**\n * API response for session validation\n */\nexport interface ValidationResponse {\n  /** Whether the session is valid */\n  valid: boolean;\n  /** Token expiration timestamp */\n  expires_at?: number;\n  /** User information */\n  user?: UserInfo;\n  /** Additional response data */\n  [key: string]: any;\n}\n","/**\n * AINative Authentication Provider\n * Provides seamless authentication integration with AINative's auth system\n */\n\nimport {\n  AuthError,\n  AuthErrorType,\n  AuthMethod,\n  AuthStatus,\n  AuthEventType,\n  StorageStrategy,\n} from './types';\nimport type {\n  AuthCredentials,\n  AuthConfig,\n  AuthSession,\n  TokenRefreshOptions,\n  TokenValidationResult,\n  AuthEventListener,\n  AuthEvent,\n  StorageAdapter,\n  AuthResponse,\n  RefreshResponse,\n  ValidationResponse,\n  APIKeyCredentials,\n  OAuthCredentials,\n  JWTCredentials,\n} from './types';\n\n/**\n * Default configuration values\n */\nconst DEFAULT_CONFIG: Required<Omit<AuthConfig, 'customHeaders'>> = {\n  baseUrl: 'https://api.ainative.studio',\n  authEndpoint: '/v1/auth/authenticate',\n  refreshEndpoint: '/v1/auth/refresh',\n  validateEndpoint: '/v1/auth/validate',\n  logoutEndpoint: '/v1/auth/logout',\n  autoRefresh: true,\n  refreshBuffer: 300, // 5 minutes\n  timeout: 30000, // 30 seconds\n  maxRetries: 3,\n  retryDelay: 1000, // 1 second\n  enableLogging: false,\n  storageStrategy: StorageStrategy.MEMORY,\n};\n\n/**\n * AINative Authentication Provider\n * Handles authentication, token management, and session validation\n */\nexport class AINativeAuthProvider {\n  private config: Required<AuthConfig>;\n  private session: AuthSession;\n  private eventListeners: Map<AuthEventType, Set<AuthEventListener>>;\n  private refreshTimer?: NodeJS.Timeout;\n  private refreshPromise?: Promise<void>;\n  private storageAdapter?: StorageAdapter;\n  private customHeaders: Record<string, string>;\n\n  /**\n   * Create a new AINativeAuthProvider instance\n   * @param config - Authentication configuration\n   * @param storageAdapter - Custom storage adapter (required if using CUSTOM storage strategy)\n   */\n  constructor(config: AuthConfig = {}, storageAdapter?: StorageAdapter) {\n    this.config = {\n      ...DEFAULT_CONFIG,\n      ...config,\n      customHeaders: config.customHeaders || {},\n    };\n    this.customHeaders = config.customHeaders || {};\n    this.session = { status: AuthStatus.UNAUTHENTICATED };\n    this.eventListeners = new Map();\n    this.storageAdapter = storageAdapter;\n\n    if (this.config.storageStrategy === StorageStrategy.CUSTOM && !storageAdapter) {\n      throw new AuthError(\n        'Storage adapter is required when using CUSTOM storage strategy',\n        AuthErrorType.CONFIG_ERROR\n      );\n    }\n\n    this.log('AINativeAuthProvider initialized');\n  }\n\n  /**\n   * Authenticate with AINative\n   * @param credentials - Authentication credentials\n   * @returns Promise resolving to authentication session\n   */\n  async authenticate(credentials: AuthCredentials): Promise<AuthSession> {\n    this.log('Authentication started', { method: credentials.method });\n    this.updateStatus(AuthStatus.AUTHENTICATING);\n    this.emitEvent(AuthEventType.AUTH_STARTED, { credentials: { method: credentials.method } });\n\n    try {\n      const response = await this.makeAuthRequest(credentials);\n      const session = this.createSessionFromResponse(response, credentials.tenantId);\n\n      this.session = session;\n      await this.saveSession(session);\n\n      this.updateStatus(AuthStatus.AUTHENTICATED);\n      this.emitEvent(AuthEventType.AUTH_SUCCESS, { session });\n\n      // Set up auto-refresh if enabled\n      if (this.config.autoRefresh && session.expiresAt) {\n        this.scheduleTokenRefresh(session.expiresAt);\n      }\n\n      this.log('Authentication successful');\n      return session;\n    } catch (error) {\n      const authError = this.normalizeError(error);\n      this.updateStatus(AuthStatus.FAILED);\n      this.emitEvent(AuthEventType.AUTH_FAILED, { error: authError });\n      this.log('Authentication failed', { error: authError.message });\n      throw authError;\n    }\n  }\n\n  /**\n   * Refresh the current authentication token\n   * @param options - Token refresh options\n   * @returns Promise resolving to updated session\n   */\n  async refreshToken(options: TokenRefreshOptions = {}): Promise<AuthSession> {\n    // If refresh is already in progress, return the existing promise\n    if (this.refreshPromise) {\n      this.log('Token refresh already in progress, waiting...');\n      await this.refreshPromise;\n      return this.session;\n    }\n\n    const {\n      force = false,\n      retry = true,\n      maxRetries = this.config.maxRetries,\n    } = options;\n\n    // Check if refresh is needed\n    if (!force && this.session.status === AuthStatus.AUTHENTICATED) {\n      const validation = this.validateTokenLocally();\n      if (validation.valid && !validation.needsRefresh) {\n        this.log('Token is still valid, no refresh needed');\n        return this.session;\n      }\n    }\n\n    this.log('Token refresh started');\n    this.updateStatus(AuthStatus.REFRESHING);\n    this.emitEvent(AuthEventType.REFRESH_STARTED);\n\n    this.refreshPromise = this.performTokenRefresh(maxRetries, retry);\n\n    try {\n      await this.refreshPromise;\n      this.emitEvent(AuthEventType.REFRESH_SUCCESS, { session: this.session });\n      this.log('Token refresh successful');\n      return this.session;\n    } catch (error) {\n      const authError = this.normalizeError(error);\n      this.updateStatus(AuthStatus.EXPIRED);\n      this.emitEvent(AuthEventType.REFRESH_FAILED, { error: authError });\n      this.log('Token refresh failed', { error: authError.message });\n      throw authError;\n    } finally {\n      this.refreshPromise = undefined;\n    }\n  }\n\n  /**\n   * Validate the current session\n   * @returns Promise resolving to validation result\n   */\n  async validateSession(): Promise<TokenValidationResult> {\n    this.log('Session validation started');\n\n    // First check locally\n    const localValidation = this.validateTokenLocally();\n    if (!localValidation.valid) {\n      this.log('Session invalid (local check)');\n      return localValidation;\n    }\n\n    // Perform server-side validation\n    try {\n      const url = `${this.config.baseUrl}${this.config.validateEndpoint}`;\n      const response = await this.fetchWithRetry<ValidationResponse>(url, {\n        method: 'POST',\n        headers: this.getAuthHeaders(),\n      });\n\n      const result: TokenValidationResult = {\n        valid: response.valid,\n        expiresAt: response.expires_at,\n        expiresIn: response.expires_at\n          ? Math.max(0, response.expires_at - Math.floor(Date.now() / 1000))\n          : undefined,\n        expired: !response.valid,\n        needsRefresh: response.expires_at\n          ? response.expires_at - Math.floor(Date.now() / 1000) < this.config.refreshBuffer\n          : false,\n        claims: response.user as any,\n      };\n\n      this.emitEvent(AuthEventType.SESSION_VALIDATED, { validation: result });\n      this.log('Session validation completed', { valid: result.valid });\n\n      if (!result.valid) {\n        this.updateStatus(AuthStatus.EXPIRED);\n        this.emitEvent(AuthEventType.SESSION_EXPIRED);\n      }\n\n      return result;\n    } catch (error) {\n      const authError = this.normalizeError(error);\n      this.log('Session validation failed', { error: authError.message });\n\n      return {\n        valid: false,\n        expired: true,\n        needsRefresh: true,\n        error: authError.message,\n      };\n    }\n  }\n\n  /**\n   * Logout and clear the current session\n   * @returns Promise that resolves when logout is complete\n   */\n  async logout(): Promise<void> {\n    this.log('Logout started');\n    this.emitEvent(AuthEventType.LOGOUT_STARTED);\n\n    // Clear refresh timer\n    if (this.refreshTimer) {\n      clearTimeout(this.refreshTimer);\n      this.refreshTimer = undefined;\n    }\n\n    // Call logout endpoint if authenticated\n    if (this.session.status === AuthStatus.AUTHENTICATED && this.session.accessToken) {\n      try {\n        const url = `${this.config.baseUrl}${this.config.logoutEndpoint}`;\n        await this.fetchWithRetry(url, {\n          method: 'POST',\n          headers: this.getAuthHeaders(),\n        });\n        this.log('Server logout successful');\n      } catch (error) {\n        // Log error but don't throw - we still want to clear local session\n        this.log('Server logout failed', { error: error instanceof Error ? error.message : 'Unknown error' });\n      }\n    }\n\n    // Clear session\n    this.session = { status: AuthStatus.UNAUTHENTICATED };\n    await this.clearSession();\n\n    this.emitEvent(AuthEventType.LOGOUT_COMPLETED);\n    this.log('Logout completed');\n  }\n\n  /**\n   * Get authentication headers for API calls\n   * @returns Headers object with authentication\n   */\n  getAuthHeaders(): Record<string, string> {\n    const headers: Record<string, string> = {\n      'Content-Type': 'application/json',\n      ...this.customHeaders,\n    };\n\n    if (this.session.accessToken) {\n      const tokenType = this.session.tokenType || 'Bearer';\n      headers['Authorization'] = `${tokenType} ${this.session.accessToken}`;\n    }\n\n    return headers;\n  }\n\n  /**\n   * Get the current authentication session\n   * @returns Current session\n   */\n  getSession(): AuthSession {\n    return { ...this.session };\n  }\n\n  /**\n   * Check if currently authenticated\n   * @returns True if authenticated\n   */\n  isAuthenticated(): boolean {\n    return this.session.status === AuthStatus.AUTHENTICATED && !!this.session.accessToken;\n  }\n\n  /**\n   * Get current configuration\n   * @returns Current configuration\n   */\n  getConfig(): AuthConfig {\n    return { ...this.config };\n  }\n\n  /**\n   * Update configuration\n   * @param config - Partial configuration to update\n   */\n  updateConfig(config: Partial<AuthConfig>): void {\n    this.config = { ...this.config, ...config };\n    if (config.customHeaders) {\n      this.customHeaders = { ...this.customHeaders, ...config.customHeaders };\n    }\n    this.log('Configuration updated');\n  }\n\n  /**\n   * Add event listener\n   * @param eventType - Event type to listen for\n   * @param listener - Event listener callback\n   */\n  addEventListener(eventType: AuthEventType, listener: AuthEventListener): void {\n    if (!this.eventListeners.has(eventType)) {\n      this.eventListeners.set(eventType, new Set());\n    }\n    this.eventListeners.get(eventType)!.add(listener);\n  }\n\n  /**\n   * Remove event listener\n   * @param eventType - Event type\n   * @param listener - Event listener callback\n   */\n  removeEventListener(eventType: AuthEventType, listener: AuthEventListener): void {\n    const listeners = this.eventListeners.get(eventType);\n    if (listeners) {\n      listeners.delete(listener);\n    }\n  }\n\n  /**\n   * Make authentication request based on credential type\n   * @private\n   */\n  private async makeAuthRequest(credentials: AuthCredentials): Promise<AuthResponse> {\n    const url = `${this.config.baseUrl}${this.config.authEndpoint}`;\n\n    let body: Record<string, any>;\n\n    switch (credentials.method) {\n      case AuthMethod.API_KEY:\n        body = {\n          grant_type: 'api_key',\n          api_key: (credentials as APIKeyCredentials).apiKey,\n          tenant_id: credentials.tenantId,\n        };\n        break;\n\n      case AuthMethod.OAUTH:\n        const oauthCreds = credentials as OAuthCredentials;\n        body = {\n          grant_type: 'client_credentials',\n          client_id: oauthCreds.clientId,\n          client_secret: oauthCreds.clientSecret,\n          scope: oauthCreds.scopes?.join(' '),\n          redirect_uri: oauthCreds.redirectUri,\n          tenant_id: credentials.tenantId,\n        };\n        break;\n\n      case AuthMethod.JWT:\n        const jwtCreds = credentials as JWTCredentials;\n        body = {\n          grant_type: 'jwt_bearer',\n          assertion: jwtCreds.token,\n          refresh_token: jwtCreds.refreshToken,\n          tenant_id: credentials.tenantId,\n        };\n        break;\n\n      default:\n        throw new AuthError(\n          `Unsupported authentication method: ${(credentials as any).method}`,\n          AuthErrorType.CONFIG_ERROR\n        );\n    }\n\n    return this.fetchWithRetry<AuthResponse>(url, {\n      method: 'POST',\n      headers: {\n        'Content-Type': 'application/json',\n        ...this.customHeaders,\n      },\n      body: JSON.stringify(body),\n    });\n  }\n\n  /**\n   * Perform token refresh\n   * @private\n   */\n  private async performTokenRefresh(maxRetries: number, retry: boolean): Promise<void> {\n    if (!this.session.refreshToken) {\n      throw new AuthError(\n        'No refresh token available',\n        AuthErrorType.INVALID_TOKEN\n      );\n    }\n\n    const url = `${this.config.baseUrl}${this.config.refreshEndpoint}`;\n    const response = await this.fetchWithRetry<RefreshResponse>(\n      url,\n      {\n        method: 'POST',\n        headers: {\n          'Content-Type': 'application/json',\n          ...this.customHeaders,\n        },\n        body: JSON.stringify({\n          refresh_token: this.session.refreshToken,\n          tenant_id: this.session.tenantId,\n        }),\n      },\n      retry ? maxRetries : 1\n    );\n\n    // Update session with new tokens\n    const now = Math.floor(Date.now() / 1000);\n    this.session = {\n      ...this.session,\n      status: AuthStatus.AUTHENTICATED,\n      accessToken: response.access_token,\n      refreshToken: response.refresh_token || this.session.refreshToken,\n      tokenType: response.token_type,\n      expiresAt: now + response.expires_in,\n      issuedAt: now,\n    };\n\n    await this.saveSession(this.session);\n\n    // Schedule next refresh\n    if (this.config.autoRefresh && this.session.expiresAt) {\n      this.scheduleTokenRefresh(this.session.expiresAt);\n    }\n  }\n\n  /**\n   * Create session from authentication response\n   * @private\n   */\n  private createSessionFromResponse(response: AuthResponse, tenantId?: string): AuthSession {\n    const now = Math.floor(Date.now() / 1000);\n\n    return {\n      status: AuthStatus.AUTHENTICATED,\n      accessToken: response.access_token,\n      refreshToken: response.refresh_token,\n      tokenType: response.token_type,\n      expiresAt: now + response.expires_in,\n      issuedAt: now,\n      scopes: response.scope?.split(' '),\n      user: response.user,\n      tenantId,\n      metadata: {},\n    };\n  }\n\n  /**\n   * Validate token locally without server call\n   * @private\n   */\n  private validateTokenLocally(): TokenValidationResult {\n    if (!this.session.accessToken || !this.session.expiresAt) {\n      return {\n        valid: false,\n        expired: true,\n        needsRefresh: true,\n        error: 'No active session',\n      };\n    }\n\n    const now = Math.floor(Date.now() / 1000);\n    const expiresIn = this.session.expiresAt - now;\n    const expired = expiresIn <= 0;\n    const needsRefresh = expiresIn < this.config.refreshBuffer;\n\n    return {\n      valid: !expired,\n      expiresAt: this.session.expiresAt,\n      expiresIn: Math.max(0, expiresIn),\n      expired,\n      needsRefresh,\n    };\n  }\n\n  /**\n   * Schedule automatic token refresh\n   * @private\n   */\n  private scheduleTokenRefresh(expiresAt: number): void {\n    // Clear existing timer\n    if (this.refreshTimer) {\n      clearTimeout(this.refreshTimer);\n    }\n\n    const now = Math.floor(Date.now() / 1000);\n    const timeUntilRefresh = (expiresAt - now - this.config.refreshBuffer) * 1000;\n\n    if (timeUntilRefresh > 0) {\n      this.log(`Token refresh scheduled in ${timeUntilRefresh}ms`);\n      this.refreshTimer = setTimeout(() => {\n        this.refreshToken({ force: true, retry: true }).catch((error) => {\n          this.log('Auto-refresh failed', { error: error.message });\n        });\n      }, timeUntilRefresh);\n    }\n  }\n\n  /**\n   * Make HTTP request with retry logic\n   * @private\n   */\n  private async fetchWithRetry<T>(\n    url: string,\n    options: RequestInit,\n    maxRetries: number = this.config.maxRetries\n  ): Promise<T> {\n    let lastError: Error | undefined;\n\n    for (let attempt = 0; attempt <= maxRetries; attempt++) {\n      try {\n        const controller = new AbortController();\n        const timeoutId = setTimeout(() => controller.abort(), this.config.timeout);\n\n        const response = await fetch(url, {\n          ...options,\n          signal: controller.signal,\n        });\n\n        clearTimeout(timeoutId);\n\n        if (!response.ok) {\n          throw await this.createErrorFromResponse(response);\n        }\n\n        const data = await response.json();\n        return data as T;\n      } catch (error) {\n        lastError = error instanceof Error ? error : new Error(String(error));\n\n        // Don't retry on certain errors\n        if (\n          error instanceof AuthError &&\n          (error.type === AuthErrorType.INVALID_CREDENTIALS ||\n            error.type === AuthErrorType.UNAUTHORIZED ||\n            error.type === AuthErrorType.FORBIDDEN ||\n            error.type === AuthErrorType.RATE_LIMIT_EXCEEDED ||\n            error.type === AuthErrorType.SERVER_ERROR)\n        ) {\n          throw error;\n        }\n\n        // Retry on network errors\n        if (attempt < maxRetries) {\n          this.log(`Request failed, retrying (${attempt + 1}/${maxRetries})`, {\n            error: lastError.message,\n          });\n          await this.sleep(this.config.retryDelay * (attempt + 1));\n          continue;\n        }\n      }\n    }\n\n    throw new AuthError(\n      `Request failed after ${maxRetries} retries: ${lastError?.message}`,\n      AuthErrorType.NETWORK_ERROR,\n      undefined,\n      lastError\n    );\n  }\n\n  /**\n   * Create AuthError from HTTP response\n   * @private\n   */\n  private async createErrorFromResponse(response: Response): Promise<AuthError> {\n    let errorMessage = `HTTP ${response.status}: ${response.statusText}`;\n    let errorType = AuthErrorType.UNKNOWN;\n    let details: Record<string, any> = {};\n\n    try {\n      const errorData = await response.json();\n      errorMessage = errorData.message || errorData.error || errorMessage;\n      details = errorData;\n    } catch {\n      // Response body is not JSON\n    }\n\n    // Map HTTP status codes to error types\n    switch (response.status) {\n      case 401:\n        errorType = AuthErrorType.UNAUTHORIZED;\n        break;\n      case 403:\n        errorType = AuthErrorType.FORBIDDEN;\n        break;\n      case 429:\n        errorType = AuthErrorType.RATE_LIMIT_EXCEEDED;\n        break;\n      case 500:\n      case 502:\n      case 503:\n      case 504:\n        errorType = AuthErrorType.SERVER_ERROR;\n        break;\n    }\n\n    return new AuthError(errorMessage, errorType, response.status, undefined, details);\n  }\n\n  /**\n   * Normalize error to AuthError\n   * @private\n   */\n  private normalizeError(error: unknown): AuthError {\n    if (error instanceof AuthError) {\n      return error;\n    }\n\n    if (error instanceof Error) {\n      return new AuthError(\n        error.message,\n        AuthErrorType.UNKNOWN,\n        undefined,\n        error\n      );\n    }\n\n    return new AuthError(\n      String(error),\n      AuthErrorType.UNKNOWN\n    );\n  }\n\n  /**\n   * Update session status\n   * @private\n   */\n  private updateStatus(status: AuthStatus): void {\n    this.session.status = status;\n  }\n\n  /**\n   * Emit event to listeners\n   * @private\n   */\n  private emitEvent(eventType: AuthEventType, data?: Record<string, any>): void {\n    const event: AuthEvent = {\n      type: eventType,\n      timestamp: new Date(),\n      session: { ...this.session },\n      ...data,\n    };\n\n    const listeners = this.eventListeners.get(eventType);\n    if (listeners) {\n      listeners.forEach((listener) => {\n        try {\n          listener(event);\n        } catch (error) {\n          this.log('Error in event listener', { error: error instanceof Error ? error.message : 'Unknown' });\n        }\n      });\n    }\n  }\n\n  /**\n   * Save session to storage\n   * @private\n   */\n  private async saveSession(session: AuthSession): Promise<void> {\n    try {\n      const sessionData = JSON.stringify(session);\n\n      switch (this.config.storageStrategy) {\n        case StorageStrategy.MEMORY:\n          // Already in memory\n          break;\n\n        case StorageStrategy.LOCAL_STORAGE:\n          if (typeof localStorage !== 'undefined') {\n            localStorage.setItem('ainative_auth_session', sessionData);\n          }\n          break;\n\n        case StorageStrategy.SESSION_STORAGE:\n          if (typeof sessionStorage !== 'undefined') {\n            sessionStorage.setItem('ainative_auth_session', sessionData);\n          }\n          break;\n\n        case StorageStrategy.CUSTOM:\n          if (this.storageAdapter) {\n            await this.storageAdapter.setItem('ainative_auth_session', sessionData);\n          }\n          break;\n      }\n    } catch (error) {\n      this.log('Failed to save session', { error: error instanceof Error ? error.message : 'Unknown' });\n    }\n  }\n\n  /**\n   * Clear session from storage\n   * @private\n   */\n  private async clearSession(): Promise<void> {\n    try {\n      switch (this.config.storageStrategy) {\n        case StorageStrategy.MEMORY:\n          // Already cleared\n          break;\n\n        case StorageStrategy.LOCAL_STORAGE:\n          if (typeof localStorage !== 'undefined') {\n            localStorage.removeItem('ainative_auth_session');\n          }\n          break;\n\n        case StorageStrategy.SESSION_STORAGE:\n          if (typeof sessionStorage !== 'undefined') {\n            sessionStorage.removeItem('ainative_auth_session');\n          }\n          break;\n\n        case StorageStrategy.CUSTOM:\n          if (this.storageAdapter) {\n            await this.storageAdapter.removeItem('ainative_auth_session');\n          }\n          break;\n      }\n    } catch (error) {\n      this.log('Failed to clear session', { error: error instanceof Error ? error.message : 'Unknown' });\n    }\n  }\n\n  /**\n   * Log message if logging is enabled\n   * @private\n   */\n  private log(message: string, data?: Record<string, any>): void {\n    if (this.config.enableLogging) {\n      console.log(`[AINativeAuth] ${message}`, data || '');\n    }\n  }\n\n  /**\n   * Sleep for specified milliseconds\n   * @private\n   */\n  private sleep(ms: number): Promise<void> {\n    return new Promise((resolve) => setTimeout(resolve, ms));\n  }\n}\n"]}