{"version":3,"sources":["../src/utils/storage.ts","../src/utils/eventBus.ts","../src/constants/eventConsts.ts","../src/utils/uuid.ts","../src/internal/socketServices.ts","../src/internal/api.ts","../src/internal/rootService.ts","../src/client.ts"],"names":[],"mappings":"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","file":"index.mjs","sourcesContent":["/**\n * Safe localStorage utility for isomorphic environments\n * Works in browsers, gracefully handles Node.js (no-op)\n */\n\n/**\n * Check if localStorage is available\n */\nfunction isLocalStorageAvailable(): boolean {\n  try {\n    if (typeof window !== 'undefined' && typeof window.localStorage !== 'undefined') {\n      // Test that localStorage actually works (some browsers block it)\n      const testKey = '__agentai_storage_test__';\n      window.localStorage.setItem(testKey, 'test');\n      window.localStorage.removeItem(testKey);\n      return true;\n    }\n    return false;\n  } catch {\n    return false;\n  }\n}\n\nconst storageAvailable = isLocalStorageAvailable();\n\n/**\n * Safely set an item in localStorage\n * No-op in Node.js or when localStorage is unavailable\n * \n * @param key - Storage key\n * @param value - Value to store (will be JSON stringified if object)\n * @returns true if stored successfully, false otherwise\n */\nexport function setStorageItem(key: string, value: unknown): boolean {\n  if (!storageAvailable) {\n    return false;\n  }\n\n  try {\n    const serialized = typeof value === 'string' ? value : JSON.stringify(value);\n    window.localStorage.setItem(key, serialized);\n    return true;\n  } catch {\n    // Storage might be full or blocked\n    return false;\n  }\n}\n\n/**\n * Safely get an item from localStorage\n * Returns null in Node.js or when localStorage is unavailable\n * \n * @param key - Storage key\n * @param parse - If true, attempts to JSON.parse the value (default: false)\n * @returns The stored value, parsed value, or null\n */\nexport function getStorageItem<T = string>(key: string, parse: boolean = false): T | null {\n  if (!storageAvailable) {\n    return null;\n  }\n\n  try {\n    const value = window.localStorage.getItem(key);\n    if (value === null) {\n      return null;\n    }\n    return parse ? JSON.parse(value) : value as T;\n  } catch {\n    return null;\n  }\n}\n\n/**\n * Safely remove an item from localStorage\n * No-op in Node.js or when localStorage is unavailable\n * \n * @param key - Storage key\n * @returns true if removed successfully, false otherwise\n */\nexport function removeStorageItem(key: string): boolean {\n  if (!storageAvailable) {\n    return false;\n  }\n\n  try {\n    window.localStorage.removeItem(key);\n    return true;\n  } catch {\n    return false;\n  }\n}\n\n/**\n * Safely clear all items from localStorage\n * No-op in Node.js or when localStorage is unavailable\n * \n * @returns true if cleared successfully, false otherwise\n */\nexport function clearStorage(): boolean {\n  if (!storageAvailable) {\n    return false;\n  }\n\n  try {\n    window.localStorage.clear();\n    return true;\n  } catch {\n    return false;\n  }\n}\n\n/**\n * Check if running in a browser environment with localStorage\n * \n * @returns true if localStorage is available\n */\nexport function hasStorage(): boolean {\n  return storageAvailable;\n}\n\n","import { EventEmitter } from 'eventemitter3';\nimport { SDKEvent, SDKEventType } from '../types';\nimport { ErrorPayload } from '../errors';\n\nexport class EventBus extends EventEmitter {\n  emitBusEvent(type: SDKEventType | string, payload?: any): void {\n    const event: SDKEvent = {\n      type: type as SDKEventType,\n      payload,\n      timestamp: new Date().toISOString(),\n    };\n    this.emit(type, event);\n  }\n\n  emitError(message: string, details?: unknown): void {\n    const errorPayload: ErrorPayload = { message, details };\n    const event: SDKEvent = {\n      type: 'error',\n      payload: errorPayload,\n      timestamp: new Date().toISOString(),\n    };\n    this.emit('error', event);\n  }\n\n  reset(): void {\n    this.removeAllListeners();\n  }\n}\n\nexport const clientBus = new EventBus();\nexport const internalBus = new EventBus();\n","\nexport const INTERNAL_EVENTS = {\n    AGENTAI_READY: 'agentai_ready',\n    INTERNAL_TRANSFER_RESPONSE: 'internal_transfer_response',\n    RESPONSE_RESOLUTION_COMMENTS: 'response_resolution_comments',\n    CONV_META_INFO: 'conv_meta_Info',\n    WELCOME_MESSAGE_SENT: 'welcome_message_sent',\n}\n\nexport const SOCKET_EVENTS = {\n    CONNECT: 'connect',\n    DISCONNECT: 'disconnect',\n    CONNECT_ERROR: 'connect_error',\n    AA_READY: 'aa_ready',\n    USER_SAVED_MESSAGE: 'user_saved_message',\n    AGENT_SAVED_MESSAGE: 'agent_saved_message',\n    INTERNAL_TRANSFER_RESPONSE: 'internal_transfer_response',\n    RESPONSE_RESOLUTION_COMMENTS: 'response_resolution_comments',\n    CONV_META_INFO: 'conv_meta_Info',\n    AGENT_ASSIST_RESPONSE: 'agent_assist_response',\n    AGENTAI_EVENT_ACK: 'agentai_event_ack',\n}\n\nexport const CLIENT_EVENTS = {\n    CONNECT: 'connect',\n    DISCONNECT: 'disconnect',\n    CONNECT_ERROR: 'connect_error',\n    RECONNECT: 'reconnect',\n    RECONNECT_ATTEMPT: 'reconnect_attempt',\n    AGENTAI_READY: 'agentai_ready',\n    USER_SAVED_MESSAGE: 'user_saved_message',\n    AGENT_SAVED_MESSAGE: 'agent_saved_message',\n    INTERNAL_TRANSFER_RESPONSE: 'internal_transfer_response',\n    INTERM_SUMMARY_RESPONSE: 'interm_summary_response',\n    INTERM_SUMMARY_EVENT_ACK: 'interm_summary_event_ack',\n}","/**\n * Generate a random UUID with optional prefix\n * \n * @param prefix - Prefix for the UUID (default: 'ua')\n * @returns A unique identifier string\n * \n * @example\n * ```typescript\n * const id = KoreGenerateuuidPipe(); // 'ua-xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'\n * const customId = KoreGenerateuuidPipe('msg'); // 'msg-xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'\n * ```\n */\nconst KoreGenerateuuidPipe = (prefix: string = 'ua'): string => {\n  let d = new Date().getTime();\n  \n  // Use high-precision timer if available (works in both browser and Node.js)\n  if (typeof performance !== 'undefined' && typeof performance.now === 'function') {\n    d += performance.now();\n  }\n  \n  const uuid = `${prefix}-xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx`.replace(/[xy]/g, (c) => {\n    const r = (d + Math.random() * 16) % 16 | 0;\n    d = Math.floor(d / 16);\n    return (c === 'x' ? r : (r & 0x3 | 0x8)).toString(16);\n  });\n  \n  return uuid;\n};\n\nexport default KoreGenerateuuidPipe;\n\n","import { io, Socket } from \"socket.io-client\";\nimport { AgentAIConfig, ConnectionState } from \"../types\";\nimport { clientBus, internalBus } from \"../utils/eventBus\";\nimport { AgentAIApi } from \"./api\";\nimport {\n  CLIENT_EVENTS,\n  INTERNAL_EVENTS,\n  SOCKET_EVENTS,\n} from \"../constants/eventConsts\";\nimport KoreGenerateuuidPipe from \"../utils/uuid\";\n\nexport class websocketService {\n  connectionState: ConnectionState = \"disconnected\";\n  _reconnectAttempts: number = 0;\n  protected socket: Socket | null = null;\n  config: AgentAIConfig = {} as AgentAIConfig;\n\n  socketConnection(api: AgentAIApi, nameSpacePath: string) {\n    this.socket = null; // Will be set when socket is created\n    const { conversationId, botId, channel, interactiveLanguage } =\n      this.config.connection;\n    const { domainURL } = this.config.connection;\n    let queryParams: any = {\n      accountId: api.getAccountId(),\n      botId,\n      experience: channel,\n      conversationId,\n      userId: api.getUserId(),\n      language: interactiveLanguage,\n      interactiveLang: interactiveLanguage,\n      accessToken: api.getAuthToken(),\n      cE: true,\n    };\n\n    let finalUrl = `${domainURL}/${nameSpacePath}`;\n    const subPath = api.getService();\n    const socketConfig = {\n      url: finalUrl,\n      options: {\n        path: `/${subPath}/api/v1/chat`,\n        autoConnect: false,\n        transports: [\"websocket\", \"polling\", \"flashsocket\"],\n        reconnection: true,\n        reconnectionDelay: 5000,\n        reconnectionAttempts: 13,\n        query: queryParams,\n      },\n    };\n\n    this.socket = io(socketConfig.url, socketConfig.options);\n    this.socket.connect();\n    this.setupEventListeners();\n  }\n\n  setupEventListeners(): void {\n    if (!this.socket) return;\n\n    this.socket.on(SOCKET_EVENTS.CONNECT, () => {\n      this.connectionState = \"connected\";\n      this._reconnectAttempts = 0;\n      clientBus.emitBusEvent(CLIENT_EVENTS.CONNECT, {\n        content: \"connected\",\n        metadata: { status: \"connected\" },\n      });\n    });\n\n    this.socket.on(SOCKET_EVENTS.DISCONNECT, (reason) => {\n      this.connectionState = \"disconnected\";\n      clientBus.emitBusEvent(CLIENT_EVENTS.DISCONNECT, {\n        content: reason,\n        metadata: { reason },\n      });\n    });\n\n    this.socket.on(SOCKET_EVENTS.CONNECT_ERROR, (error) => {\n      clientBus.emitBusEvent(CLIENT_EVENTS.CONNECT_ERROR, {\n        content: error.message,\n        metadata: { name: error.name },\n      });\n    });\n\n    this.socket.io.on(\"reconnect\", (attempt) => {\n      this.connectionState = \"connected\";\n      this._reconnectAttempts = 0;\n      clientBus.emitBusEvent(CLIENT_EVENTS.RECONNECT, {\n        content: \"reconnected\",\n        metadata: { attempt },\n      });\n    });\n\n    this.socket.io.on(\"reconnect_attempt\", (attempt) => {\n      this.connectionState = \"reconnecting\";\n      this._reconnectAttempts = attempt;\n      clientBus.emitBusEvent(CLIENT_EVENTS.RECONNECT_ATTEMPT, {\n        content: \"reconnecting\",\n        metadata: { attempt },\n      });\n    });\n\n    this.socket.on(SOCKET_EVENTS.AA_READY, (event: any) => {\n      clientBus.emitBusEvent(CLIENT_EVENTS.AGENTAI_READY, { ready: true });\n      internalBus.emit(INTERNAL_EVENTS.AGENTAI_READY, event);\n    });\n\n    this.socket.on(SOCKET_EVENTS.USER_SAVED_MESSAGE, (event: any) => {\n      clientBus.emitBusEvent(CLIENT_EVENTS.USER_SAVED_MESSAGE, event);\n    });\n\n    this.socket.on(SOCKET_EVENTS.AGENT_SAVED_MESSAGE, (event: any) => {\n      clientBus.emitBusEvent(CLIENT_EVENTS.AGENT_SAVED_MESSAGE, event);\n    });\n\n    this.socket.on(SOCKET_EVENTS.INTERNAL_TRANSFER_RESPONSE, (event: any) => {\n      internalBus.emit(INTERNAL_EVENTS.INTERNAL_TRANSFER_RESPONSE, event);\n      clientBus.emitBusEvent(CLIENT_EVENTS.INTERNAL_TRANSFER_RESPONSE, event);\n    });\n\n    this.socket.on(SOCKET_EVENTS.RESPONSE_RESOLUTION_COMMENTS, (event: any) => {\n      internalBus.emit(INTERNAL_EVENTS.RESPONSE_RESOLUTION_COMMENTS, event);\n      clientBus.emitBusEvent(CLIENT_EVENTS.INTERM_SUMMARY_RESPONSE, event);\n    });\n\n    this.socket.on(SOCKET_EVENTS.CONV_META_INFO, (event: any) => {\n      internalBus.emit(INTERNAL_EVENTS.CONV_META_INFO, event);\n    });\n\n    this.socket.on(SOCKET_EVENTS.AGENT_ASSIST_RESPONSE, (event: any) => {\n      if (\n        !(event?.eventName === \"service_execution_in_progress\") &&\n        !event?.sendMenuRequest\n      ) {\n        internalBus.emit(INTERNAL_EVENTS.WELCOME_MESSAGE_SENT, false);\n      }\n    });\n\n    this.socket.on(SOCKET_EVENTS.AGENTAI_EVENT_ACK, (event: any) => {\n      if (event?.expEvent === \"response_resolution_comments\") {\n        clientBus.emitBusEvent(CLIENT_EVENTS.INTERM_SUMMARY_EVENT_ACK, event);\n      }\n    });\n  }\n\n  emitSocketEvent(event: string, payload: unknown): void {\n    if (!this.socket?.connected) {\n      clientBus.emitError(\"Socket is not connected. Call connect() first.\");\n      return;\n    }\n    if (!this.config) {\n      clientBus.emitError(\"Configuration is not set.\");\n      return;\n    }\n    const data: any = {\n      isExtAD: true,\n      experience: this.config.connection.channel,\n      traceId: KoreGenerateuuidPipe(),\n      conversationId: this.config.connection.conversationId,\n      botId: this.config.connection.botId,\n      language: this.config.connection.interactiveLanguage,\n      participant: (payload as any)?.participant || {},\n    };\n    Object.assign(data, payload);\n    this.socket.emit(event, data);\n  }\n\n  getSocket(): Socket | null {\n    return this.socket;\n  }\n\n  isConnected(): boolean {\n    return this.socket?.connected || false;\n  }\n\n  disconnect(): void {\n    if (this.socket) {\n      this.socket.disconnect();\n      this.socket = null;\n      this.connectionState = \"disconnected\";\n    }\n  }\n}\n","/**\n * Internal API module - NOT exported to consumers\n */\n\nimport { SocketConnectionConfig } from \"../types\";\nimport { clientBus } from \"../utils/eventBus\";\n\nexport interface BotInfo {\n  chatBot: string;\n  taskBotId: string;\n}\n\nexport interface AuthenticateParams {\n  source: string;\n  conversationId: string;\n  isSmartAssist: boolean;\n  experience?: string;\n}\n\nexport interface AuthenticatePayload {\n  assertion: string;\n  botInfo: BotInfo;\n  token: Record<string, unknown>;\n}\n\nexport interface ApiConfig {\n  baseUrl: string;\n  token: string;\n  assertion: string;\n  botInfo: BotInfo;\n}\n\n/**\n * Internal API client for AgentAI backend calls\n * @internal\n */\nexport class AgentAIApi {\n  private accessToken: string = '';\n  private baseUrl: string;\n  private service: string = 'agentassist';\n  private userId: string = '';\n  public getService(): string {\n    return this.service;\n  }\n  public getAuthToken(): string {\n    return this.accessToken;\n  }\n  public getAccountId(): string {\n    return this.accountId;\n  }\n  public getUserId(): string {\n    return this.userId;\n  }\n  private connection: SocketConnectionConfig;\n  // private assertion: string;\n  private botInfo: BotInfo;\n  private accountId: string = '';\n\n  private endPoint: Record<string, string> = {\n    load: '/api/v1/aa/load',\n  };\n\n  constructor(config: SocketConnectionConfig) {\n    this.connection = config;\n    this.baseUrl = config.domainURL;\n    // this.assertion = config.assertion;\n    this.botInfo = {\n      chatBot: \"Sample Chat Bot\",\n      taskBotId: config.botId,\n    };\n  }\n\n  /**\n   * Authenticate and load agent assist session\n   * Returns the fetch Promise - caller handles .then() / .catch()\n   * @internal\n   */\n  async authenticate(params: AuthenticateParams): Promise<any> {\n    const { source, conversationId, isSmartAssist, experience } = params;\n\n    const endpoint = `${this.baseUrl}/${this.service}${this.endPoint.load}?source=${encodeURIComponent(source)}&conversationId=${encodeURIComponent(conversationId)}&isSmartAssist=${isSmartAssist}&experience=${encodeURIComponent(experience || 'chat')}`;\n\n    // Build headers\n    let headers = new Headers({});\n    let headerObj: any = { iid: this.connection.botId, accountId: this.accountId, Authorization: 'bearer ' + this.accessToken };\n    headerObj['Content-Type'] = 'application/json';\n    Object.keys(headerObj).forEach((key) => {\n      headers.set(key, headerObj[key]);\n    });\n\n    // Build request payload\n    const payload: AuthenticatePayload = {\n      assertion: this.connection.token,\n      botInfo: this.botInfo,\n      token: {},\n    };\n    const response = await fetch(endpoint, {\n      method: 'POST',\n      headers: headers,\n      body: JSON.stringify(payload),\n    });\n    if (!response.ok) {\n      const error: any = await response.json();\n      clientBus.emitError((error?.message as any) || 'Something went wrong');\n      return null;\n    };\n    return await response.json();\n  }\n\n  setAuthInfo(authInfo: any) {\n    this.accessToken = authInfo.accessToken;\n    this.accountId = authInfo.accountId;\n    this.service = authInfo.invokeNewAAService ? 'agentai' : 'agentassist';\n    this.userId = authInfo.userId;\n  }\n}\n","import {\n  AgentAIConfig,\n  SocketConnectionConfig,\n  MessagePayload,\n  ConnectionState,\n} from \"../types\";\nimport {\n  getStorageItem,\n  hasStorage,\n  setStorageItem,\n  removeStorageItem,\n} from \"../utils/storage\";\nimport { clientBus, internalBus } from \"../utils/eventBus\";\nimport { INTERNAL_EVENTS } from \"../constants/eventConsts\";\nimport KoreGenerateuuidPipe from \"../utils/uuid\";\nimport { Socket } from \"socket.io-client\";\nimport { websocketService } from \"./socketServices\";\nimport { AgentAIApi } from \"./api\";\n\nexport class RootService {\n  internalTransferData: any = null;\n  config: AgentAIConfig = {} as AgentAIConfig;\n  aaSettings: any = null;\n  aaPreferences: any = null;\n  _isValid: boolean = true;\n  nameSpacePath: string = \"koreagentassist\";\n\n  isWelcomeMessageSent: boolean = true;\n  agentUserDetails: any = {};\n  crId: string = \"\";\n  maxIntermittentSummaryCount: number = 2;\n  isIntermittentSummaryEnabled: boolean = false;\n  generatedIntermittentSummaryCount: number = 0;\n  isSummarizationEnabled: boolean = false;\n  isInternalTransferInitialized: boolean = false;\n  isAnonymousFlowEnabled: boolean = false;\n  socket: Socket | null = null;\n  api!: AgentAIApi;\n  webSocketService!: websocketService;\n\n  constructor(config: AgentAIConfig) {\n    this.config = config;\n    this.loadAPICall();\n  }\n\n  loadAPICall() {\n    const validationError = this.validateConfig(this.config);\n    if (validationError) {\n      this._isValid = false;\n      queueMicrotask(() => {\n        clientBus.emitError(validationError);\n      });\n      return;\n    }\n    this.webSocketService = new websocketService();\n    this.webSocketService.config = this.config;\n    this.nameSpacePath = this.config?.connection?.headLess\n      ? \"agentaiheadless\"\n      : \"koreagentassist\";\n    this.api = new AgentAIApi({\n      ...this.config.connection,\n    });\n    this.api\n      .authenticate({\n        source: \"desktop\",\n        conversationId: this.config.connection.conversationId,\n        isSmartAssist: false,\n        experience: this.config.connection.channel || \"chat\",\n      })\n      .then((response) => {\n        if (response) {\n          this.api.setAuthInfo({\n            accessToken: response?.authorization?.accessToken,\n            accountId: response?.userInfo?.accountId,\n            invokeNewAAService: response?.invokeNewAAService,\n            userId: response?.userInfo?.userId,\n          });\n          if (response?.isWidgetDisabled) {\n            clientBus.emitError(\"AgentAI Widget is disabled\");\n            return;\n          }\n          this.isAnonymousFlowEnabled =\n            response?.isAnonymousFlowEnabled || false;\n          this.socketConnection();\n        }\n      })\n      .catch((error) => {\n        clientBus.emitError(\"Failed to authenticate\", error);\n      });\n  }\n\n  setupInternalEventListeners(): void {\n    internalBus.on(INTERNAL_EVENTS.AGENTAI_READY, (data: any) => {\n      this.handleOnReadyEvent(data);\n    });\n\n    internalBus.on(INTERNAL_EVENTS.INTERNAL_TRANSFER_RESPONSE, (data: any) => {\n      this.handleInternalTransferResponse(data);\n    });\n\n    internalBus.on(\n      INTERNAL_EVENTS.RESPONSE_RESOLUTION_COMMENTS,\n      (data: any) => {\n        this.handleResponseResolutionComments(data);\n      },\n    );\n\n    internalBus.on(INTERNAL_EVENTS.CONV_META_INFO, (data: any) => {\n      this.handleConvMetaInfo(data);\n    });\n\n    internalBus.on(INTERNAL_EVENTS.WELCOME_MESSAGE_SENT, (data: any) => {\n      this.handleWelcomeMessageSent(data);\n    });\n  }\n\n  socketConnection(): void {\n    this.webSocketService.socketConnection(\n      this.api,\n      this.nameSpacePath,\n    );\n    const socket = this.webSocketService.getSocket();\n    if (socket) {\n      this.socket = socket;\n    }\n    this.setupInternalEventListeners();\n  }\n\n  /**\n   * Validate the configuration\n   * @returns Error message if validation fails, null if valid\n   */\n  validateConfig(config: AgentAIConfig): string | null {\n    if (!config) {\n      return \"Configuration is required\";\n    }\n\n    if (!config.connection) {\n      return \"Connection configuration is required\";\n    }\n\n    const { connection } = config;\n    const requiredFields: (keyof SocketConnectionConfig)[] = [\n      \"conversationId\",\n      \"botId\",\n      \"domainURL\",\n      \"token\",\n      \"interactiveLanguage\",\n      \"customData\",\n      \"channel\",\n    ];\n\n    for (const field of requiredFields) {\n      if (!connection[field]) {\n        return `${field} is required in connection config`;\n      }\n    }\n\n    return null;\n  }\n\n  handleInternalTransferResponse(response: any): void {\n    if (!response) {\n      clientBus.emitError(\"Internal transfer response is required\");\n      return;\n    }\n    if (response && response?.requestType === \"internal_transfer_via_api\") {\n      let internalTransferData = this.internalTransferData;\n      const InternalTransferDataLength =\n        Object.keys(this.internalTransferData || {})?.length ||\n        Object.keys(\n          getStorageItem(`${this.config?.connection?.conversationId}`, true) ||\n            {},\n        ).length;\n\n      if (!internalTransferData && InternalTransferDataLength > 0) {\n        internalTransferData = getStorageItem(\n          `${this.config?.connection?.conversationId}`,\n          true,\n        );\n      }\n\n      if (!InternalTransferDataLength) {\n        this.internalTransfer(response);\n        return;\n      }\n\n      if (InternalTransferDataLength && internalTransferData?.isAnonymous) {\n        this.internalTransfer(response);\n        return;\n      }\n\n      if (\n        InternalTransferDataLength &&\n        internalTransferData?.participant?.identity ===\n          response?.participant?.identity\n      ) {\n        this.internalTransfer(response);\n        return;\n      }\n\n      if (\n        InternalTransferDataLength &&\n        internalTransferData?.participant?.participantId ===\n          response?.participant?.identity\n      ) {\n        this.internalTransfer(response);\n        return;\n      }\n    } else {\n      if (\n        response?.isAnonymous &&\n        response?.participant?.identity ===\n          this.internalTransferData?.participant?.identity\n      ) {\n        this.internalTransferData.participant = { ...response?.participant };\n        this.checkAndUpdateDataInLocalStorage(\n          JSON.parse(JSON.stringify(this.internalTransferData)),\n        );\n      }\n    }\n  }\n\n  checkAndUpdateDataInLocalStorage(data: any): void {\n    if (!hasStorage()) {\n      return;\n    }\n    const key = `${this.config?.connection?.conversationId}`;\n    setStorageItem(key, data);\n  }\n\n  handleResponseResolutionComments(event: any): void {\n    if (event?.type === \"interim\") {\n      this.generatedIntermittentSummaryCount++;\n    }\n    const key = `${this.config?.connection?.conversationId}`;\n    const lsData: any = getStorageItem(key, true);\n    if (lsData && event?.type === \"interim\") {\n      lsData.generatedIntermittentSummaryCount =\n        this.generatedIntermittentSummaryCount;\n      setStorageItem(key, lsData);\n    }\n  }\n\n  handleConvMetaInfo(event: any): void {\n    this.crId = event?.crId || \"\";\n  }\n\n  handleWelcomeMessageSent(value: boolean): void {\n    this.isWelcomeMessageSent = value;\n  }\n\n  handleOnReadyEvent(data: any): void {\n    this.aaSettings = data?.aa_settings?.agentAssistSettings;\n    this.aaPreferences = data?.aa_prefs;\n    const imSGroup = data?.aa_prefs?.prefs?.[\n      this.config?.connection?.channel || \"\"\n    ]?.locale?.[\n      this.config?.connection?.interactiveLanguage || \"en\"\n    ]?.act?.find((item: any) => item?.imS);\n    if (imSGroup && imSGroup?.imS) {\n      this.isIntermittentSummaryEnabled = imSGroup?.imS?.isE || false;\n      this.maxIntermittentSummaryCount = imSGroup?.imS?.sCnt || 2;\n    }\n\n    const channel = this.config?.connection?.channel || \"\";\n    const language = this.config?.connection?.interactiveLanguage || \"en\";\n    this.isSummarizationEnabled =\n      this.aaSettings?.[channel]?.summarization?.localeData?.[language]\n        ?.isEnabled || false;\n    this.sendWelcomeMessageRequest();\n    if (getStorageItem(`${this.config?.connection?.conversationId}`)) {\n      this.isInternalTransferInitialized = true;\n      this.internalTransferData = getStorageItem(\n        `${this.config?.connection?.conversationId}`,\n        true,\n      );\n      this.generatedIntermittentSummaryCount =\n        this.internalTransferData?.generatedIntermittentSummaryCount || 0;\n    }\n    if (data?.internal_transfer_response) {\n      this.handleInternalTransferResponse(data?.internal_transfer_response);\n    } else {\n      if (!this.isInternalTransferInitialized) {\n        this.sendTheAnonymousInternalTransfer();\n      }\n    }\n  }\n\n  sendWelcomeMessageRequest(): void {\n    if (!this.socket) return;\n    let welcomeMessageParams: any = {\n      waitTime: 2000,\n      userName: this.config?.connection?.userName || \"\",\n      id: this.config?.connection?.conversationId || \"\",\n      isSendWelcomeMessage: this.isWelcomeMessageSent,\n      agentassistInfo: this.agentUserDetails,\n      botId: this.config?.connection?.botId || \"\",\n      sendMenuRequest: true,\n      uId: this.config?.connection?.userId || \"\",\n      sId: this.config?.connection?.sessionId || \"\",\n      experience: this.config?.connection?.channel,\n      jToken: this.config?.connection?.token,\n      conversationId: this.config?.connection?.conversationId || \"\",\n      customData: this.config?.connection?.customData || {},\n      autoBotId: this.config?.connection?.autoBotId || \"\",\n      language: this.config?.connection?.interactiveLanguage || \"\",\n      allQueryParams: { ...(this.config?.connection || {}) },\n    };\n\n    this.webSocketService.emitSocketEvent(\n      \"welcome_message_request\",\n      welcomeMessageParams,\n    );\n  }\n\n  sendTheAnonymousInternalTransfer(): void {\n    if (this.isAnonymousFlowEnabled) {\n      const anonymousId = KoreGenerateuuidPipe(\"an\");\n      const payload = {\n        participant: {\n          identity: anonymousId,\n          name: \"Anonymous\",\n          type: \"agent\",\n        },\n        transition: \"entry\",\n        transfertype: \"NA\",\n        isAnonymous: true,\n      };\n      this.internalTransfer(payload, true);\n    }\n  }\n\n  internalTransfer(payload: any, isAnonymous: boolean = false): boolean {\n    if (!this.isConnected()) {\n      clientBus.emitError(\"Socket is not connected. Call connect() first.\");\n      return false;\n    }\n    if (!payload.participant || !payload.transition || !payload.transfertype) {\n      clientBus.emitError(\n        \"Participant, transition and transfertype are required\",\n      );\n      return false;\n    }\n    try {\n      if (!isAnonymous) {\n        const LsinternalTransferData: any = getStorageItem(\n          `${this.config?.connection?.conversationId}`,\n          true,\n        );\n        const instanceInternalTransferData = this.internalTransferData;\n        if (\n          instanceInternalTransferData ||\n          Object.keys(LsinternalTransferData || {}).length > 0\n        ) {\n          const anonymousId =\n            instanceInternalTransferData?.participant?.identity ||\n            LsinternalTransferData?.participant?.identity;\n          const incomingParticipant = payload?.participant || {};\n          if (payload?.transition === \"exit\") {\n            payload = {\n              ...payload,\n              ...(instanceInternalTransferData || LsinternalTransferData),\n              transition: payload?.transition,\n              transfertype: payload?.transfertype,\n            };\n\n            payload.participant = {\n              ...incomingParticipant,\n              identity: incomingParticipant?.identity\n                ? incomingParticipant?.identity\n                : anonymousId,\n              ...(!incomingParticipant?.identity && {\n                participantId: incomingParticipant?.identity,\n              }),\n            };\n          } else {\n            payload = {\n              ...payload,\n              ...(instanceInternalTransferData || LsinternalTransferData),\n              transition: payload?.transition,\n              transfertype: payload?.transfertype,\n            };\n\n            payload.participant = {\n              ...incomingParticipant,\n              identity: anonymousId,\n              participantId: incomingParticipant?.identity,\n            };\n          }\n        }\n        payload.isAnonymous = false;\n      }\n      this.internalTransferData = {\n        ...payload,\n        conversationId: this.config?.connection?.conversationId,\n      };\n      this.checkAndUpdateDataInLocalStorage(\n        JSON.parse(JSON.stringify(this.internalTransferData)),\n      );\n      if (!this.socket) {\n        clientBus.emitError(\"Socket is not set\");\n        return false;\n      }\n      this.webSocketService.emitSocketEvent(\n        \"internal_transfer\",\n        payload,\n      );\n    } catch (error) {\n      clientBus.emitError(\"Failed to internal transfer\", error);\n      return false;\n    }\n    return true;\n  }\n\n  generateIntermittentSummary(isEndOfConversation: boolean = false): boolean {\n    if (!this.isConnected()) {\n      clientBus.emitError(\"Socket is not connected. Call connect() first.\");\n      return false;\n    }\n    if (!isEndOfConversation) {\n      if (!this.isIntermittentSummaryEnabled || !this.isSummarizationEnabled) {\n        clientBus.emitError(\"Intermittent summary is not enabled\");\n        return false;\n      }\n      if (\n        this.generatedIntermittentSummaryCount >=\n        this.maxIntermittentSummaryCount\n      ) {\n        clientBus.emitError(\"Max intermittent summary count reached\");\n        return false;\n      }\n    }\n    if (!this.socket) {\n      clientBus.emitError(\"Socket is not set\");\n      return false;\n    }\n    try {\n      const channel = this.config?.connection?.channel || \"\";\n      const language = this.config?.connection?.interactiveLanguage || \"en\";\n      const payload = {\n        sessionId: this.config?.connection?.sessionId,\n        type: isEndOfConversation ? \"final\" : \"interim\",\n        interimSummary: true,\n        userId: this.api?.getUserId() || \"\",\n        model:\n          this.aaSettings?.[channel]?.summarization?.localeData?.[language]\n            ?.model || {},\n        crId: this.crId || \"\",\n        numberOfGeneratedSummaries: this.generatedIntermittentSummaryCount,\n      };\n\n      if (isEndOfConversation) {\n        if (this.isSummarizationEnabled) {\n          this.webSocketService.emitSocketEvent(\n            \"request_resolution_comments\",\n            payload,\n          );\n        }\n        this.webSocketService.emitSocketEvent(\n          \"end_of_conversation\",\n          payload,\n        );\n        removeStorageItem(`${this.config?.connection?.conversationId}`);\n      } else {\n        this.webSocketService.emitSocketEvent(\n          \"request_resolution_comments\",\n          payload,\n        );\n      }\n      return true;\n    } catch (error) {\n      clientBus.emitError(\"Failed to generate intermittent summary\", error);\n      return false;\n    }\n  }\n\n  endOfConversation(): boolean {\n    if (!this.isConnected()) {\n      clientBus.emitError(\"Socket is not connected. Call connect() first.\");\n      return false;\n    }\n    try {\n      const isSuccess = this.generateIntermittentSummary(true);\n      return isSuccess;\n    } catch (error) {\n      clientBus.emitError(\"Failed to end of conversation\", error);\n      return false;\n    }\n  }\n\n  sendAgentMessage(payload: MessagePayload): boolean {\n    if (!this.isConnected()) {\n      clientBus.emitError(\"Socket is not connected. Call connect() first.\");\n      return false;\n    }\n    if (!payload.message || payload.message.trim() === \"\") {\n      clientBus.emitError(\n        \"Message content is required and author must be agent\",\n      );\n      return false;\n    }\n    if (!this.socket) {\n      clientBus.emitError(\"Socket is not set\");\n      return false;\n    }\n    const payloadWithAuthor = {\n      author: {\n        type: \"AGENT\",\n      },\n      value: payload.message,\n      message: payload.message,\n    };\n    this.webSocketService.emitSocketEvent(\n      \"agent_sent_message\",\n      payloadWithAuthor,\n    );\n    return true;\n  }\n\n  sendUserMessage(payload: MessagePayload): boolean {\n    if (!this.isConnected()) {\n      clientBus.emitError(\"Socket is not connected. Call connect() first.\");\n      return false;\n    }\n    if (!payload.message || payload.message.trim() === \"\") {\n      clientBus.emitError(\n        \"Message content is required and author must be user\",\n      );\n      return false;\n    }\n    if (!this.socket) {\n      clientBus.emitError(\"Socket is not set\");\n      return false;\n    }\n    const payloadWithAuthor = {\n      author: {\n        type: \"USER\",\n      },\n      value: payload.message,\n      message: payload.message,\n    };\n    this.webSocketService.emitSocketEvent(\n      \"user_sent_message\",\n      payloadWithAuthor,\n    );\n    return true;\n  }\n\n  disconnect(): void {\n    this.webSocketService.disconnect();\n  }\n\n  getConnectionState(): ConnectionState {\n    return this.webSocketService.connectionState;\n  }\n\n  isConnected(): boolean {\n    return this.webSocketService.isConnected();\n  }\n\n  getReconnectAttempts(): number {\n    return this.webSocketService._reconnectAttempts;\n  }\n\n  getSocket(): Socket | null {\n    return this.webSocketService.getSocket();\n  }\n\n  isValid(): boolean {\n    return this._isValid;\n  }\n}\n","import { Socket } from 'socket.io-client';\nimport {\n  AgentAIConfig,\n  MessagePayload,\n  ConnectionState,\n} from './types';\nimport { RootService } from './internal/rootService';\nimport { clientBus, internalBus } from './utils/eventBus';\n\n/**\n * AgentAI SDK Client\n * \n * Establishes socket connection on instantiation and provides methods\n * for sending agent/user messages.\n * \n * @example\n * ```typescript\n * import { AgentAI } from '@koreai/agentai-node-sdk';\n * \n * const client = new AgentAI({\n *   connection: {\n *     domainURL: 'https://your-server.com',\n *     botId: 'your-bot-id',\n *     conversationId: 'conversation-id',\n *     token: 'your-access-token',\n *     interactiveLanguage: 'en',\n *     customData: '{}',\n *     channel: 'web',\n *     sessionId: 'session-id',\n *   }\n * });\n * \n * // Listen for connection events\n * client.on('connect', () => {\n *   console.log('Connected to AgentAI');\n * });\n * \n * client.on('disconnect', (event) => {\n *   console.log('Disconnected:', event);\n * });\n * \n * // Listen for message acknowledgments\n * client.on('agent_message_ack', (event) => {\n *   console.log('Agent message acknowledged:', event.payload);\n * });\n * \n * // Send messages\n * client.sendAgentMessage({ content: 'Hello from agent' });\n * ```\n */\nexport class AgentAI {\n  private rootService: RootService;\n  constructor(config: AgentAIConfig) {\n    clientBus.reset();\n    internalBus.reset();\n    this.rootService = new RootService(config);\n  }\n\n  on(event: string, fn: (...args: any[]) => void): this {\n    clientBus.on(event, fn);\n    return this;\n  }\n\n  off(event: string, fn: (...args: any[]) => void): this {\n    clientBus.off(event, fn);\n    return this;\n  }\n\n  once(event: string, fn: (...args: any[]) => void): this {\n    clientBus.once(event, fn);\n    return this;\n  }\n\n  /**\n   * Disconnect from socket\n   */\n  disconnect(): void {\n    this.rootService.disconnect();\n    clientBus.reset();\n    internalBus.reset();\n  }\n\n  /**\n   * Get current connection state\n   */\n  getConnectionState(): ConnectionState {\n    return this.rootService.getConnectionState();\n  }\n\n  /**\n   * Check if connected\n   */\n  isConnected(): boolean {\n    return this.rootService.isConnected();\n  }\n\n  /**\n   * Check if the client was initialized with valid configuration\n   */\n  isValid(): boolean {\n    return this.rootService.isValid();\n  }\n\n  /**\n   * Get current reconnection attempt count\n   */\n  getReconnectAttempts(): number {\n    return this.rootService.getReconnectAttempts();\n  }\n\n  /**\n   * Get the raw socket instance (for advanced usage)\n   */\n  getSocket(): Socket | null {\n    return this.rootService.getSocket();\n  }\n\n  /**\n   * Send a message as an agent\n   * Emits 'agent_message_ack' event as acknowledgment\n   * \n   * @param payload - Message payload containing message and optional metadata\n   * @returns true if message was sent, false if there was an error\n   */\n  sendAgentMessage(payload: MessagePayload): boolean { \n    return this.rootService.sendAgentMessage(payload);\n  }\n\n  /**\n   * Send a message as a user\n   * Emits 'user_message_ack' event as acknowledgment\n   * \n   * @param payload - Message payload containing message and optional metadata\n   * @returns true if message was sent, false if there was an error\n   */\n  sendUserMessage(payload: MessagePayload): boolean {\n    return this.rootService.sendUserMessage(payload);\n  }\n\n  /**\n   * Internal transfer\n   */\n  internalTransfer(payload: any, isAnonymous: boolean = false): boolean {   \n    return this.rootService.internalTransfer(payload, isAnonymous);\n  }\n\n  /**\n   * Generate intermittent summary\n   */\n  generateIntermSummary(): boolean {\n    return this.rootService.generateIntermittentSummary();\n  }\n\n  /**\n   * End of conversation\n   */\n  endOfConversation(): boolean {\n    return this.rootService.endOfConversation();\n  }\n}\n"]}