@webex/contact-center 3.10.0-next.2 → 3.10.0-next.21

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (103) hide show
  1. package/dist/cc.js +13 -1
  2. package/dist/cc.js.map +1 -1
  3. package/dist/config.js.map +1 -1
  4. package/dist/constants.js.map +1 -1
  5. package/dist/index.js +17 -1
  6. package/dist/index.js.map +1 -1
  7. package/dist/logger-proxy.js.map +1 -1
  8. package/dist/metrics/MetricsManager.js +2 -1
  9. package/dist/metrics/MetricsManager.js.map +1 -1
  10. package/dist/metrics/behavioral-events.js +12 -0
  11. package/dist/metrics/behavioral-events.js.map +1 -1
  12. package/dist/metrics/constants.js +4 -0
  13. package/dist/metrics/constants.js.map +1 -1
  14. package/dist/services/AddressBook.js +2 -3
  15. package/dist/services/AddressBook.js.map +1 -1
  16. package/dist/services/EntryPoint.js +2 -3
  17. package/dist/services/EntryPoint.js.map +1 -1
  18. package/dist/services/Queue.js +2 -3
  19. package/dist/services/Queue.js.map +1 -1
  20. package/dist/services/WebCallingService.js +1 -1
  21. package/dist/services/WebCallingService.js.map +1 -1
  22. package/dist/services/agent/index.js +1 -2
  23. package/dist/services/agent/index.js.map +1 -1
  24. package/dist/services/agent/types.js +10 -0
  25. package/dist/services/agent/types.js.map +1 -1
  26. package/dist/services/config/Util.js.map +1 -1
  27. package/dist/services/config/constants.js.map +1 -1
  28. package/dist/services/config/index.js +1 -1
  29. package/dist/services/config/index.js.map +1 -1
  30. package/dist/services/config/types.js +2 -2
  31. package/dist/services/config/types.js.map +1 -1
  32. package/dist/services/constants.js.map +1 -1
  33. package/dist/services/core/Err.js.map +1 -1
  34. package/dist/services/core/GlobalTypes.js.map +1 -1
  35. package/dist/services/core/Utils.js +92 -74
  36. package/dist/services/core/Utils.js.map +1 -1
  37. package/dist/services/core/WebexRequest.js +1 -2
  38. package/dist/services/core/WebexRequest.js.map +1 -1
  39. package/dist/services/core/aqm-reqs.js +2 -3
  40. package/dist/services/core/aqm-reqs.js.map +1 -1
  41. package/dist/services/core/constants.js +17 -1
  42. package/dist/services/core/constants.js.map +1 -1
  43. package/dist/services/core/types.js.map +1 -1
  44. package/dist/services/core/websocket/WebSocketManager.js +1 -2
  45. package/dist/services/core/websocket/WebSocketManager.js.map +1 -1
  46. package/dist/services/core/websocket/connection-service.js +1 -1
  47. package/dist/services/core/websocket/connection-service.js.map +1 -1
  48. package/dist/services/core/websocket/keepalive.worker.js.map +1 -1
  49. package/dist/services/core/websocket/types.js.map +1 -1
  50. package/dist/services/index.js +1 -1
  51. package/dist/services/index.js.map +1 -1
  52. package/dist/services/task/AutoWrapup.js +1 -1
  53. package/dist/services/task/AutoWrapup.js.map +1 -1
  54. package/dist/services/task/TaskManager.js +177 -56
  55. package/dist/services/task/TaskManager.js.map +1 -1
  56. package/dist/services/task/TaskUtils.js +122 -5
  57. package/dist/services/task/TaskUtils.js.map +1 -1
  58. package/dist/services/task/constants.js +3 -1
  59. package/dist/services/task/constants.js.map +1 -1
  60. package/dist/services/task/contact.js +0 -2
  61. package/dist/services/task/contact.js.map +1 -1
  62. package/dist/services/task/dialer.js.map +1 -1
  63. package/dist/services/task/index.js +46 -40
  64. package/dist/services/task/index.js.map +1 -1
  65. package/dist/services/task/types.js +377 -4
  66. package/dist/services/task/types.js.map +1 -1
  67. package/dist/types/cc.d.ts +6 -0
  68. package/dist/types/index.d.ts +1 -1
  69. package/dist/types/metrics/constants.d.ts +4 -0
  70. package/dist/types/services/config/types.d.ts +4 -4
  71. package/dist/types/services/core/Utils.d.ts +32 -17
  72. package/dist/types/services/core/constants.d.ts +14 -0
  73. package/dist/types/services/task/TaskUtils.d.ts +59 -3
  74. package/dist/types/services/task/constants.d.ts +2 -0
  75. package/dist/types/services/task/types.d.ts +57 -13
  76. package/dist/types.js +5 -0
  77. package/dist/types.js.map +1 -1
  78. package/dist/utils/PageCache.js +1 -1
  79. package/dist/utils/PageCache.js.map +1 -1
  80. package/dist/webex-config.js.map +1 -1
  81. package/dist/webex.js +2 -2
  82. package/dist/webex.js.map +1 -1
  83. package/package.json +8 -8
  84. package/src/cc.ts +12 -0
  85. package/src/index.ts +1 -0
  86. package/src/metrics/behavioral-events.ts +12 -0
  87. package/src/metrics/constants.ts +4 -0
  88. package/src/services/config/types.ts +2 -2
  89. package/src/services/core/Utils.ts +101 -85
  90. package/src/services/core/constants.ts +16 -0
  91. package/src/services/task/TaskManager.ts +204 -36
  92. package/src/services/task/TaskUtils.ts +145 -5
  93. package/src/services/task/constants.ts +2 -0
  94. package/src/services/task/index.ts +50 -63
  95. package/src/services/task/types.ts +60 -13
  96. package/test/unit/spec/cc.ts +1 -0
  97. package/test/unit/spec/metrics/behavioral-events.ts +14 -0
  98. package/test/unit/spec/services/core/Utils.ts +262 -31
  99. package/test/unit/spec/services/task/TaskManager.ts +748 -5
  100. package/test/unit/spec/services/task/TaskUtils.ts +311 -9
  101. package/test/unit/spec/services/task/index.ts +323 -68
  102. package/umd/contact-center.min.js +2 -2
  103. package/umd/contact-center.min.js.map +1 -1
@@ -1 +1 @@
1
- {"version":3,"names":["_types","require","_loggerProxy","_interopRequireDefault","_WebexRequest","_PageCache","_interopRequireWildcard","_MetricsManager","_constants","_constants2","_constants3","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","obj","AddressBook","constructor","webex","getAddressBookId","webexRequest","WebexRequest","getInstance","pageCache","PageCache","metricsManager","MetricsManager","getEntries","params","startTime","Date","now","addressBookId","page","PAGINATION_DEFAULTS","PAGE","pageSize","PAGE_SIZE","search","filter","attributes","bookId","orgId","credentials","getOrgId","isSearchRequest","LoggerProxy","info","module","method","data","canUseCache","cacheKey","buildCacheKey","cachedPage","getCachedPage","duration","cacheHit","recordCount","length","meta","totalPages","totalMeta","totalRecords","timeEvent","METRIC_EVENT_NAMES","ADDRESSBOOK_FETCH_SUCCESS","errorData","error","trackEvent","ADDRESSBOOK_FETCH_FAILED","Error","queryParams","URLSearchParams","toString","append","resource","endPointMap","addressBookEntries","service","WCC_API_GATEWAY","response","request","HTTP_METHODS","GET","body","statusCode","isFirstPage","cachePage","message","String","exports","_default"],"sources":["AddressBook.ts"],"sourcesContent":["import {HTTP_METHODS, WebexSDK} from '../types';\nimport type {\n AddressBookEntry,\n AddressBookEntriesResponse,\n AddressBookEntrySearchParams,\n} from '../types';\nimport LoggerProxy from '../logger-proxy';\nimport WebexRequest from './core/WebexRequest';\nimport PageCache, {PAGINATION_DEFAULTS} from '../utils/PageCache';\nimport MetricsManager from '../metrics/MetricsManager';\nimport {WCC_API_GATEWAY} from './constants';\nimport {endPointMap} from './config/constants';\nimport {METRIC_EVENT_NAMES} from '../metrics/constants';\n\n/**\n * AddressBook API class for managing Webex Contact Center address book entries.\n * Provides functionality to fetch address book entries using the entry API.\n *\n * @class AddressBook\n * @public\n * @example\n * ```typescript\n * import Webex from 'webex';\n *\n * const webex = new Webex({ credentials: 'YOUR_ACCESS_TOKEN' });\n * const cc = webex.cc;\n *\n * // Register and login first\n * await cc.register();\n * await cc.stationLogin({ teamId: 'team123', loginOption: 'BROWSER' });\n *\n * // Get AddressBook API instance from ContactCenter\n * const addressBookAPI = cc.addressBook;\n *\n * // Get entries from agent's default address book\n * const entries = await addressBookAPI.getEntries();\n *\n * // Get entries from a specific address book with pagination\n * const entries = await addressBookAPI.getEntries({\n * addressBookId: 'addressBookId123',\n * page: 0,\n * pageSize: 50\n * });\n *\n * // Search for specific entries\n * const searchResults = await addressBook.getEntries({\n * search: 'john',\n * filter: 'name==\"John Doe\"'\n * });\n * ```\n */\nexport class AddressBook {\n private webexRequest: WebexRequest;\n private webex: WebexSDK;\n private getAddressBookId: () => string;\n private metricsManager: MetricsManager;\n\n // Page cache using the common utility\n private pageCache: PageCache<AddressBookEntry>;\n\n /**\n * Creates an instance of AddressBook\n * @param {WebexSDK} webex - The Webex SDK instance\n * @param {() => string} getAddressBookId - Function to get the addressBookId from agent profile\n * @public\n */\n constructor(webex: WebexSDK, getAddressBookId: () => string) {\n this.webex = webex;\n this.webexRequest = WebexRequest.getInstance({webex});\n this.getAddressBookId = getAddressBookId;\n this.pageCache = new PageCache<AddressBookEntry>('AddressBook');\n this.metricsManager = MetricsManager.getInstance({webex});\n }\n\n /**\n * Fetches address book entries for a specific address book using the entry API\n * @param {AddressBookEntrySearchParams} [params] - Search and pagination parameters including addressBookId\n * @returns {Promise<AddressBookEntriesResponse>} Promise resolving to address book entries\n * @throws {Error} If the API call fails\n * @public\n * @example\n * ```typescript\n * // Get entries from agent's default address book\n * const response = await addressBookAPI.getEntries();\n *\n * // Get entries from a specific address book with pagination\n * const response = await addressBookAPI.getEntries({\n * addressBookId: 'addressBookId123',\n * page: 0,\n * pageSize: 25\n * });\n * ```\n */\n public async getEntries(\n params: AddressBookEntrySearchParams = {}\n ): Promise<AddressBookEntriesResponse> {\n const startTime = Date.now();\n const {\n addressBookId,\n page = PAGINATION_DEFAULTS.PAGE,\n pageSize = PAGINATION_DEFAULTS.PAGE_SIZE,\n search,\n filter,\n attributes,\n } = params;\n\n // Use provided addressBookId or fall back to agent's address book\n const bookId = addressBookId || this.getAddressBookId();\n const orgId = this.webex.credentials.getOrgId();\n const isSearchRequest = !!(search || filter || attributes);\n\n LoggerProxy.info('Fetching address book entries', {\n module: 'AddressBook',\n method: 'getEntries',\n data: {\n orgId,\n bookId,\n page,\n pageSize,\n isSearchRequest,\n },\n });\n\n // Check if we can use cache for simple pagination (no search/filter/attributes)\n if (this.pageCache.canUseCache({search, filter, attributes})) {\n const cacheKey = this.pageCache.buildCacheKey(bookId, page, pageSize);\n const cachedPage = this.pageCache.getCachedPage(cacheKey);\n\n if (cachedPage) {\n const duration = Date.now() - startTime;\n\n LoggerProxy.info(`Returning page ${page} from cache`, {\n module: 'AddressBook',\n method: 'getEntries',\n data: {\n cacheHit: true,\n duration,\n recordCount: cachedPage.data.length,\n page,\n pageSize,\n },\n });\n\n return {\n data: cachedPage.data,\n meta: {\n page,\n pageSize,\n totalPages: cachedPage.totalMeta?.totalPages,\n totalRecords: cachedPage.totalMeta?.totalRecords,\n },\n };\n }\n }\n\n // Start timing for the operation\n this.metricsManager.timeEvent(METRIC_EVENT_NAMES.ADDRESSBOOK_FETCH_SUCCESS);\n\n // Validate address book id early to avoid bad requests\n if (!bookId) {\n const errorData = {\n orgId,\n bookId,\n isSearchRequest,\n page,\n pageSize,\n error: 'Missing addressBookId for agent. Ensure agent profile contains addressBookId.',\n };\n LoggerProxy.error('AddressBook called without a valid addressBookId', {\n module: 'AddressBook',\n method: 'getEntries',\n data: errorData,\n });\n\n this.metricsManager.trackEvent(METRIC_EVENT_NAMES.ADDRESSBOOK_FETCH_FAILED, errorData, [\n 'behavioral',\n 'operational',\n ]);\n\n throw new Error('AddressBook: addressBookId is not available for the current agent.');\n }\n\n try {\n // Build query parameters according to spec\n const queryParams = new URLSearchParams({\n page: page.toString(),\n pageSize: pageSize.toString(),\n });\n\n if (filter) queryParams.append('filter', filter);\n if (attributes) queryParams.append('attributes', attributes);\n if (search) queryParams.append('search', search);\n\n const resource = endPointMap.addressBookEntries(orgId, bookId, queryParams.toString());\n\n LoggerProxy.info('Making API request to fetch address book entries', {\n module: 'AddressBook',\n method: 'getEntries',\n data: {\n resource,\n service: WCC_API_GATEWAY,\n },\n });\n\n const response = await this.webexRequest.request({\n service: WCC_API_GATEWAY,\n resource,\n method: HTTP_METHODS.GET,\n });\n\n const duration = Date.now() - startTime;\n\n const recordCount = response.body?.data?.length || 0;\n const totalRecords = response.body?.meta?.totalRecords;\n\n LoggerProxy.info(`Successfully retrieved ${recordCount} address book entries`, {\n module: 'AddressBook',\n method: 'getEntries',\n data: {\n statusCode: response.statusCode,\n duration,\n recordCount,\n totalRecords,\n isSearchRequest,\n page,\n pageSize,\n },\n });\n\n // Only track metrics for search requests or first page loads to reduce metric volume\n if (isSearchRequest || page === 0) {\n this.metricsManager.trackEvent(\n METRIC_EVENT_NAMES.ADDRESSBOOK_FETCH_SUCCESS,\n {\n orgId,\n bookId,\n statusCode: response.statusCode,\n recordCount,\n totalRecords,\n isSearchRequest,\n isFirstPage: page === 0,\n },\n ['behavioral', 'operational']\n );\n }\n\n // Cache the page data for simple pagination (no search/filter/attributes)\n if (this.pageCache.canUseCache({search, filter, attributes}) && response.body?.data) {\n const cacheKey = this.pageCache.buildCacheKey(bookId, page, pageSize);\n this.pageCache.cachePage(cacheKey, response.body.data, response.body.meta);\n\n LoggerProxy.info('Cached address book entries for future requests', {\n module: 'AddressBook',\n method: 'getEntries',\n data: {\n cacheKey,\n recordCount,\n },\n });\n }\n\n return response.body;\n } catch (error) {\n const errorData = {\n orgId,\n bookId,\n error: error instanceof Error ? error.message : String(error),\n isSearchRequest,\n page,\n pageSize,\n };\n\n LoggerProxy.error('Failed to fetch address book entries', {\n module: 'AddressBook',\n method: 'getEntries',\n data: errorData,\n error,\n });\n\n // Track all failures for troubleshooting\n this.metricsManager.trackEvent(METRIC_EVENT_NAMES.ADDRESSBOOK_FETCH_FAILED, errorData, [\n 'behavioral',\n 'operational',\n ]);\n\n throw error;\n }\n }\n}\n\nexport default AddressBook;\n"],"mappings":"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"}
1
+ {"version":3,"names":["_types","require","_loggerProxy","_interopRequireDefault","_WebexRequest","_PageCache","_interopRequireWildcard","_MetricsManager","_constants","_constants2","_constants3","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","AddressBook","constructor","webex","getAddressBookId","webexRequest","WebexRequest","getInstance","pageCache","PageCache","metricsManager","MetricsManager","getEntries","params","startTime","Date","now","addressBookId","page","PAGINATION_DEFAULTS","PAGE","pageSize","PAGE_SIZE","search","filter","attributes","bookId","orgId","credentials","getOrgId","isSearchRequest","LoggerProxy","info","module","method","data","canUseCache","cacheKey","buildCacheKey","cachedPage","getCachedPage","duration","cacheHit","recordCount","length","meta","totalPages","totalMeta","totalRecords","timeEvent","METRIC_EVENT_NAMES","ADDRESSBOOK_FETCH_SUCCESS","errorData","error","trackEvent","ADDRESSBOOK_FETCH_FAILED","Error","queryParams","URLSearchParams","toString","append","resource","endPointMap","addressBookEntries","service","WCC_API_GATEWAY","response","request","HTTP_METHODS","GET","body","statusCode","isFirstPage","cachePage","message","String","exports","_default"],"sources":["AddressBook.ts"],"sourcesContent":["import {HTTP_METHODS, WebexSDK} from '../types';\nimport type {\n AddressBookEntry,\n AddressBookEntriesResponse,\n AddressBookEntrySearchParams,\n} from '../types';\nimport LoggerProxy from '../logger-proxy';\nimport WebexRequest from './core/WebexRequest';\nimport PageCache, {PAGINATION_DEFAULTS} from '../utils/PageCache';\nimport MetricsManager from '../metrics/MetricsManager';\nimport {WCC_API_GATEWAY} from './constants';\nimport {endPointMap} from './config/constants';\nimport {METRIC_EVENT_NAMES} from '../metrics/constants';\n\n/**\n * AddressBook API class for managing Webex Contact Center address book entries.\n * Provides functionality to fetch address book entries using the entry API.\n *\n * @class AddressBook\n * @public\n * @example\n * ```typescript\n * import Webex from 'webex';\n *\n * const webex = new Webex({ credentials: 'YOUR_ACCESS_TOKEN' });\n * const cc = webex.cc;\n *\n * // Register and login first\n * await cc.register();\n * await cc.stationLogin({ teamId: 'team123', loginOption: 'BROWSER' });\n *\n * // Get AddressBook API instance from ContactCenter\n * const addressBookAPI = cc.addressBook;\n *\n * // Get entries from agent's default address book\n * const entries = await addressBookAPI.getEntries();\n *\n * // Get entries from a specific address book with pagination\n * const entries = await addressBookAPI.getEntries({\n * addressBookId: 'addressBookId123',\n * page: 0,\n * pageSize: 50\n * });\n *\n * // Search for specific entries\n * const searchResults = await addressBook.getEntries({\n * search: 'john',\n * filter: 'name==\"John Doe\"'\n * });\n * ```\n */\nexport class AddressBook {\n private webexRequest: WebexRequest;\n private webex: WebexSDK;\n private getAddressBookId: () => string;\n private metricsManager: MetricsManager;\n\n // Page cache using the common utility\n private pageCache: PageCache<AddressBookEntry>;\n\n /**\n * Creates an instance of AddressBook\n * @param {WebexSDK} webex - The Webex SDK instance\n * @param {() => string} getAddressBookId - Function to get the addressBookId from agent profile\n * @public\n */\n constructor(webex: WebexSDK, getAddressBookId: () => string) {\n this.webex = webex;\n this.webexRequest = WebexRequest.getInstance({webex});\n this.getAddressBookId = getAddressBookId;\n this.pageCache = new PageCache<AddressBookEntry>('AddressBook');\n this.metricsManager = MetricsManager.getInstance({webex});\n }\n\n /**\n * Fetches address book entries for a specific address book using the entry API\n * @param {AddressBookEntrySearchParams} [params] - Search and pagination parameters including addressBookId\n * @returns {Promise<AddressBookEntriesResponse>} Promise resolving to address book entries\n * @throws {Error} If the API call fails\n * @public\n * @example\n * ```typescript\n * // Get entries from agent's default address book\n * const response = await addressBookAPI.getEntries();\n *\n * // Get entries from a specific address book with pagination\n * const response = await addressBookAPI.getEntries({\n * addressBookId: 'addressBookId123',\n * page: 0,\n * pageSize: 25\n * });\n * ```\n */\n public async getEntries(\n params: AddressBookEntrySearchParams = {}\n ): Promise<AddressBookEntriesResponse> {\n const startTime = Date.now();\n const {\n addressBookId,\n page = PAGINATION_DEFAULTS.PAGE,\n pageSize = PAGINATION_DEFAULTS.PAGE_SIZE,\n search,\n filter,\n attributes,\n } = params;\n\n // Use provided addressBookId or fall back to agent's address book\n const bookId = addressBookId || this.getAddressBookId();\n const orgId = this.webex.credentials.getOrgId();\n const isSearchRequest = !!(search || filter || attributes);\n\n LoggerProxy.info('Fetching address book entries', {\n module: 'AddressBook',\n method: 'getEntries',\n data: {\n orgId,\n bookId,\n page,\n pageSize,\n isSearchRequest,\n },\n });\n\n // Check if we can use cache for simple pagination (no search/filter/attributes)\n if (this.pageCache.canUseCache({search, filter, attributes})) {\n const cacheKey = this.pageCache.buildCacheKey(bookId, page, pageSize);\n const cachedPage = this.pageCache.getCachedPage(cacheKey);\n\n if (cachedPage) {\n const duration = Date.now() - startTime;\n\n LoggerProxy.info(`Returning page ${page} from cache`, {\n module: 'AddressBook',\n method: 'getEntries',\n data: {\n cacheHit: true,\n duration,\n recordCount: cachedPage.data.length,\n page,\n pageSize,\n },\n });\n\n return {\n data: cachedPage.data,\n meta: {\n page,\n pageSize,\n totalPages: cachedPage.totalMeta?.totalPages,\n totalRecords: cachedPage.totalMeta?.totalRecords,\n },\n };\n }\n }\n\n // Start timing for the operation\n this.metricsManager.timeEvent(METRIC_EVENT_NAMES.ADDRESSBOOK_FETCH_SUCCESS);\n\n // Validate address book id early to avoid bad requests\n if (!bookId) {\n const errorData = {\n orgId,\n bookId,\n isSearchRequest,\n page,\n pageSize,\n error: 'Missing addressBookId for agent. Ensure agent profile contains addressBookId.',\n };\n LoggerProxy.error('AddressBook called without a valid addressBookId', {\n module: 'AddressBook',\n method: 'getEntries',\n data: errorData,\n });\n\n this.metricsManager.trackEvent(METRIC_EVENT_NAMES.ADDRESSBOOK_FETCH_FAILED, errorData, [\n 'behavioral',\n 'operational',\n ]);\n\n throw new Error('AddressBook: addressBookId is not available for the current agent.');\n }\n\n try {\n // Build query parameters according to spec\n const queryParams = new URLSearchParams({\n page: page.toString(),\n pageSize: pageSize.toString(),\n });\n\n if (filter) queryParams.append('filter', filter);\n if (attributes) queryParams.append('attributes', attributes);\n if (search) queryParams.append('search', search);\n\n const resource = endPointMap.addressBookEntries(orgId, bookId, queryParams.toString());\n\n LoggerProxy.info('Making API request to fetch address book entries', {\n module: 'AddressBook',\n method: 'getEntries',\n data: {\n resource,\n service: WCC_API_GATEWAY,\n },\n });\n\n const response = await this.webexRequest.request({\n service: WCC_API_GATEWAY,\n resource,\n method: HTTP_METHODS.GET,\n });\n\n const duration = Date.now() - startTime;\n\n const recordCount = response.body?.data?.length || 0;\n const totalRecords = response.body?.meta?.totalRecords;\n\n LoggerProxy.info(`Successfully retrieved ${recordCount} address book entries`, {\n module: 'AddressBook',\n method: 'getEntries',\n data: {\n statusCode: response.statusCode,\n duration,\n recordCount,\n totalRecords,\n isSearchRequest,\n page,\n pageSize,\n },\n });\n\n // Only track metrics for search requests or first page loads to reduce metric volume\n if (isSearchRequest || page === 0) {\n this.metricsManager.trackEvent(\n METRIC_EVENT_NAMES.ADDRESSBOOK_FETCH_SUCCESS,\n {\n orgId,\n bookId,\n statusCode: response.statusCode,\n recordCount,\n totalRecords,\n isSearchRequest,\n isFirstPage: page === 0,\n },\n ['behavioral', 'operational']\n );\n }\n\n // Cache the page data for simple pagination (no search/filter/attributes)\n if (this.pageCache.canUseCache({search, filter, attributes}) && response.body?.data) {\n const cacheKey = this.pageCache.buildCacheKey(bookId, page, pageSize);\n this.pageCache.cachePage(cacheKey, response.body.data, response.body.meta);\n\n LoggerProxy.info('Cached address book entries for future requests', {\n module: 'AddressBook',\n method: 'getEntries',\n data: {\n cacheKey,\n recordCount,\n },\n });\n }\n\n return response.body;\n } catch (error) {\n const errorData = {\n orgId,\n bookId,\n error: error instanceof Error ? error.message : String(error),\n isSearchRequest,\n page,\n pageSize,\n };\n\n LoggerProxy.error('Failed to fetch address book entries', {\n module: 'AddressBook',\n method: 'getEntries',\n data: errorData,\n error,\n });\n\n // Track all failures for troubleshooting\n this.metricsManager.trackEvent(METRIC_EVENT_NAMES.ADDRESSBOOK_FETCH_FAILED, errorData, [\n 'behavioral',\n 'operational',\n ]);\n\n throw error;\n }\n }\n}\n\nexport default AddressBook;\n"],"mappings":"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","ignoreList":[]}
@@ -12,9 +12,8 @@ var _MetricsManager = _interopRequireDefault(require("../metrics/MetricsManager"
12
12
  var _constants = require("./constants");
13
13
  var _constants2 = require("./config/constants");
14
14
  var _constants3 = require("../metrics/constants");
15
- function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
16
- function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
17
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
15
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
16
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
18
17
  /**
19
18
  * EntryPoint class for managing Webex Contact Center entry points.
20
19
  * Provides functionality to fetch, search, and paginate through entry points.
@@ -1 +1 @@
1
- {"version":3,"names":["_types","require","_loggerProxy","_interopRequireDefault","_WebexRequest","_PageCache","_interopRequireWildcard","_MetricsManager","_constants","_constants2","_constants3","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","obj","EntryPoint","constructor","webex","webexRequest","WebexRequest","getInstance","pageCache","PageCache","metricsManager","MetricsManager","getEntryPoints","params","startTime","Date","now","page","PAGINATION_DEFAULTS","PAGE","pageSize","PAGE_SIZE","search","filter","attributes","sortBy","sortOrder","orgId","credentials","getOrgId","isSearchRequest","LoggerProxy","info","module","method","canUseCache","cacheKey","buildCacheKey","cachedPage","getCachedPage","duration","log","data","length","meta","totalPages","totalMeta","totalRecords","timeEvent","METRIC_EVENT_NAMES","ENTRYPOINT_FETCH_SUCCESS","queryParams","URLSearchParams","toString","append","resource","endPointMap","entryPointList","WCC_API_GATEWAY","response","request","service","HTTP_METHODS","GET","recordCount","body","statusCode","trackEvent","isFirstPage","cachePage","error","errorData","Error","message","String","ENTRYPOINT_FETCH_FAILED","exports","_default"],"sources":["EntryPoint.ts"],"sourcesContent":["import {HTTP_METHODS, WebexSDK} from '../types';\nimport type {EntryPointRecord, EntryPointListResponse, EntryPointSearchParams} from '../types';\nimport LoggerProxy from '../logger-proxy';\nimport WebexRequest from './core/WebexRequest';\nimport PageCache, {PAGINATION_DEFAULTS} from '../utils/PageCache';\nimport MetricsManager from '../metrics/MetricsManager';\nimport {WCC_API_GATEWAY} from './constants';\nimport {endPointMap} from './config/constants';\nimport {METRIC_EVENT_NAMES} from '../metrics/constants';\n\n/**\n * EntryPoint class for managing Webex Contact Center entry points.\n * Provides functionality to fetch, search, and paginate through entry points.\n *\n * @class EntryPoint\n * @public\n * @example\n * ```typescript\n * import Webex from 'webex';\n *\n * const webex = new Webex({ credentials: 'YOUR_ACCESS_TOKEN' });\n * const cc = webex.cc;\n *\n * // Register and login first\n * await cc.register();\n * await cc.stationLogin({ teamId: 'team123', loginOption: 'BROWSER' });\n *\n * // Get EntryPoint API instance from ContactCenter\n * const entryPointAPI = cc.entryPoint;\n *\n * // Get all entry points with pagination\n * const response = await entryPointAPI.getEntryPoints({\n * page: 0,\n * pageSize: 50\n * });\n *\n * // Search for specific entry points\n * const searchResults = await entryPointAPI.searchEntryPoints({\n * search: 'support',\n * filter: 'type==\"voice\"'\n * });\n * ```\n */\nexport class EntryPoint {\n private webexRequest: WebexRequest;\n private webex: WebexSDK;\n private metricsManager: MetricsManager;\n\n // Page cache using the common utility\n private pageCache: PageCache<EntryPointRecord>;\n\n /**\n * Creates an instance of EntryPoint\n * @param {WebexSDK} webex - The Webex SDK instance\n * @public\n */\n constructor(webex: WebexSDK) {\n this.webex = webex;\n this.webexRequest = WebexRequest.getInstance({webex});\n this.pageCache = new PageCache<EntryPointRecord>('EntryPoint');\n this.metricsManager = MetricsManager.getInstance({webex});\n }\n\n /**\n * Fetches entry points for the organization with pagination support\n * @param {EntryPointSearchParams} [params] - Search and pagination parameters\n * @returns {Promise<EntryPointListResponse>} Promise resolving to paginated entry points\n * @throws {Error} If the API call fails\n * @public\n * @example\n * ```typescript\n * // Get first page of entry points\n * const response = await entryPointAPI.getEntryPoints();\n *\n * // Get specific page with custom page size\n * const response = await entryPointAPI.getEntryPoints({\n * page: 2,\n * pageSize: 25\n * });\n * ```\n */\n public async getEntryPoints(\n params: EntryPointSearchParams = {}\n ): Promise<EntryPointListResponse> {\n const startTime = Date.now();\n const {\n page = PAGINATION_DEFAULTS.PAGE,\n pageSize = PAGINATION_DEFAULTS.PAGE_SIZE,\n search,\n filter,\n attributes,\n sortBy,\n sortOrder = 'asc',\n } = params;\n\n const orgId = this.webex.credentials.getOrgId();\n const isSearchRequest = !!(search || filter || attributes || sortBy);\n\n LoggerProxy.info(\n `Fetching entry points - orgId: ${orgId}, page: ${page}, pageSize: ${pageSize}, isSearchRequest: ${isSearchRequest}`,\n {\n module: 'EntryPoint',\n method: 'getEntryPoints',\n }\n );\n\n // Check if we can use cache for simple pagination (no search/filter/attributes/sort)\n if (this.pageCache.canUseCache({search, filter, attributes, sortBy})) {\n const cacheKey = this.pageCache.buildCacheKey(orgId, page, pageSize);\n const cachedPage = this.pageCache.getCachedPage(cacheKey);\n\n if (cachedPage) {\n const duration = Date.now() - startTime;\n\n LoggerProxy.log(\n `Returning page ${page} from cache - cacheHit: true, duration: ${duration}ms, recordCount: ${cachedPage.data.length}, pageSize: ${pageSize}`,\n {\n module: 'EntryPoint',\n method: 'getEntryPoints',\n }\n );\n\n return {\n data: cachedPage.data,\n meta: {\n page,\n pageSize,\n totalPages: cachedPage.totalMeta?.totalPages,\n totalRecords: cachedPage.totalMeta?.totalRecords,\n },\n };\n }\n }\n\n // Start timing only for actual API calls (not cache hits)\n this.metricsManager.timeEvent(METRIC_EVENT_NAMES.ENTRYPOINT_FETCH_SUCCESS);\n\n try {\n // Build query parameters\n const queryParams = new URLSearchParams({\n page: page.toString(),\n pageSize: pageSize.toString(),\n sortOrder,\n });\n\n if (search) queryParams.append('search', search);\n if (filter) queryParams.append('filter', filter);\n if (attributes) queryParams.append('attributes', attributes);\n if (sortBy) queryParams.append('sortBy', sortBy);\n\n const resource = endPointMap.entryPointList(orgId, queryParams.toString());\n\n LoggerProxy.log(\n `Making API request to fetch entry points - resource: ${resource}, service: ${WCC_API_GATEWAY}`,\n {\n module: 'EntryPoint',\n method: 'getEntryPoints',\n }\n );\n\n const response = await this.webexRequest.request({\n service: WCC_API_GATEWAY,\n resource,\n method: HTTP_METHODS.GET,\n });\n\n const duration = Date.now() - startTime;\n\n const recordCount = response.body?.data?.length || 0;\n const totalRecords = response.body?.meta?.totalRecords;\n\n LoggerProxy.log(`Successfully retrieved ${recordCount} entry points`, {\n module: 'EntryPoint',\n method: 'getEntryPoints',\n data: {\n statusCode: response.statusCode,\n duration,\n recordCount,\n totalRecords,\n isSearchRequest,\n page,\n pageSize,\n },\n });\n\n // Only track metrics for search requests or first page loads to reduce metric volume\n if (isSearchRequest || page === 0) {\n this.metricsManager.trackEvent(\n METRIC_EVENT_NAMES.ENTRYPOINT_FETCH_SUCCESS,\n {\n orgId,\n statusCode: response.statusCode,\n recordCount,\n totalRecords,\n isSearchRequest,\n isFirstPage: page === 0,\n },\n ['behavioral']\n );\n }\n\n // Cache the page data for simple pagination (no search/filter/attributes/sort)\n if (this.pageCache.canUseCache({search, filter, attributes, sortBy}) && response.body?.data) {\n const cacheKey = this.pageCache.buildCacheKey(orgId, page, pageSize);\n this.pageCache.cachePage(cacheKey, response.body.data, response.body.meta);\n\n LoggerProxy.log('Cached entry points data for future requests', {\n module: 'EntryPoint',\n method: 'getEntryPoints',\n data: {cacheKey, recordCount},\n });\n }\n\n return response.body;\n } catch (error) {\n const errorData = {\n orgId,\n error: error instanceof Error ? error.message : String(error),\n isSearchRequest,\n page,\n pageSize,\n };\n\n LoggerProxy.error(`Failed to fetch entry points`, {\n module: 'EntryPoint',\n method: 'getEntryPoints',\n data: errorData,\n error,\n });\n\n // Track all failures for troubleshooting\n this.metricsManager.trackEvent(METRIC_EVENT_NAMES.ENTRYPOINT_FETCH_FAILED, errorData, [\n 'behavioral',\n ]);\n\n throw error;\n }\n }\n}\n\nexport default EntryPoint;\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAEA,IAAAC,YAAA,GAAAC,sBAAA,CAAAF,OAAA;AACA,IAAAG,aAAA,GAAAD,sBAAA,CAAAF,OAAA;AACA,IAAAI,UAAA,GAAAC,uBAAA,CAAAL,OAAA;AACA,IAAAM,eAAA,GAAAJ,sBAAA,CAAAF,OAAA;AACA,IAAAO,UAAA,GAAAP,OAAA;AACA,IAAAQ,WAAA,GAAAR,OAAA;AACA,IAAAS,WAAA,GAAAT,OAAA;AAAwD,SAAAU,yBAAAC,CAAA,6BAAAC,OAAA,mBAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAF,wBAAA,YAAAA,CAAAC,CAAA,WAAAA,CAAA,GAAAG,CAAA,GAAAD,CAAA,KAAAF,CAAA;AAAA,SAAAN,wBAAAM,CAAA,EAAAE,CAAA,SAAAA,CAAA,IAAAF,CAAA,IAAAA,CAAA,CAAAI,UAAA,SAAAJ,CAAA,eAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,WAAAK,OAAA,EAAAL,CAAA,QAAAG,CAAA,GAAAJ,wBAAA,CAAAG,CAAA,OAAAC,CAAA,IAAAA,CAAA,CAAAG,GAAA,CAAAN,CAAA,UAAAG,CAAA,CAAAI,GAAA,CAAAP,CAAA,OAAAQ,CAAA,KAAAC,SAAA,UAAAC,CAAA,GAAAC,MAAA,CAAAC,cAAA,IAAAD,MAAA,CAAAE,wBAAA,WAAAC,CAAA,IAAAd,CAAA,oBAAAc,CAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAjB,CAAA,EAAAc,CAAA,SAAAI,CAAA,GAAAR,CAAA,GAAAC,MAAA,CAAAE,wBAAA,CAAAb,CAAA,EAAAc,CAAA,UAAAI,CAAA,KAAAA,CAAA,CAAAX,GAAA,IAAAW,CAAA,CAAAC,GAAA,IAAAR,MAAA,CAAAC,cAAA,CAAAJ,CAAA,EAAAM,CAAA,EAAAI,CAAA,IAAAV,CAAA,CAAAM,CAAA,IAAAd,CAAA,CAAAc,CAAA,YAAAN,CAAA,CAAAH,OAAA,GAAAL,CAAA,EAAAG,CAAA,IAAAA,CAAA,CAAAgB,GAAA,CAAAnB,CAAA,EAAAQ,CAAA,GAAAA,CAAA;AAAA,SAAAjB,uBAAA6B,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAhB,UAAA,GAAAgB,GAAA,KAAAf,OAAA,EAAAe,GAAA;AAExD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMC,UAAU,CAAC;EAKtB;;EAGA;AACF;AACA;AACA;AACA;EACEC,WAAWA,CAACC,KAAe,EAAE;IAC3B,IAAI,CAACA,KAAK,GAAGA,KAAK;IAClB,IAAI,CAACC,YAAY,GAAGC,qBAAY,CAACC,WAAW,CAAC;MAACH;IAAK,CAAC,CAAC;IACrD,IAAI,CAACI,SAAS,GAAG,IAAIC,kBAAS,CAAmB,YAAY,CAAC;IAC9D,IAAI,CAACC,cAAc,GAAGC,uBAAc,CAACJ,WAAW,CAAC;MAACH;IAAK,CAAC,CAAC;EAC3D;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACE,MAAaQ,cAAcA,CACzBC,MAA8B,GAAG,CAAC,CAAC,EACF;IACjC,MAAMC,SAAS,GAAGC,IAAI,CAACC,GAAG,CAAC,CAAC;IAC5B,MAAM;MACJC,IAAI,GAAGC,8BAAmB,CAACC,IAAI;MAC/BC,QAAQ,GAAGF,8BAAmB,CAACG,SAAS;MACxCC,MAAM;MACNC,MAAM;MACNC,UAAU;MACVC,MAAM;MACNC,SAAS,GAAG;IACd,CAAC,GAAGb,MAAM;IAEV,MAAMc,KAAK,GAAG,IAAI,CAACvB,KAAK,CAACwB,WAAW,CAACC,QAAQ,CAAC,CAAC;IAC/C,MAAMC,eAAe,GAAG,CAAC,EAAER,MAAM,IAAIC,MAAM,IAAIC,UAAU,IAAIC,MAAM,CAAC;IAEpEM,oBAAW,CAACC,IAAI,CACb,kCAAiCL,KAAM,WAAUV,IAAK,eAAcG,QAAS,sBAAqBU,eAAgB,EAAC,EACpH;MACEG,MAAM,EAAE,YAAY;MACpBC,MAAM,EAAE;IACV,CACF,CAAC;;IAED;IACA,IAAI,IAAI,CAAC1B,SAAS,CAAC2B,WAAW,CAAC;MAACb,MAAM;MAAEC,MAAM;MAAEC,UAAU;MAAEC;IAAM,CAAC,CAAC,EAAE;MACpE,MAAMW,QAAQ,GAAG,IAAI,CAAC5B,SAAS,CAAC6B,aAAa,CAACV,KAAK,EAAEV,IAAI,EAAEG,QAAQ,CAAC;MACpE,MAAMkB,UAAU,GAAG,IAAI,CAAC9B,SAAS,CAAC+B,aAAa,CAACH,QAAQ,CAAC;MAEzD,IAAIE,UAAU,EAAE;QACd,MAAME,QAAQ,GAAGzB,IAAI,CAACC,GAAG,CAAC,CAAC,GAAGF,SAAS;QAEvCiB,oBAAW,CAACU,GAAG,CACZ,kBAAiBxB,IAAK,2CAA0CuB,QAAS,oBAAmBF,UAAU,CAACI,IAAI,CAACC,MAAO,eAAcvB,QAAS,EAAC,EAC5I;UACEa,MAAM,EAAE,YAAY;UACpBC,MAAM,EAAE;QACV,CACF,CAAC;QAED,OAAO;UACLQ,IAAI,EAAEJ,UAAU,CAACI,IAAI;UACrBE,IAAI,EAAE;YACJ3B,IAAI;YACJG,QAAQ;YACRyB,UAAU,EAAEP,UAAU,CAACQ,SAAS,EAAED,UAAU;YAC5CE,YAAY,EAAET,UAAU,CAACQ,SAAS,EAAEC;UACtC;QACF,CAAC;MACH;IACF;;IAEA;IACA,IAAI,CAACrC,cAAc,CAACsC,SAAS,CAACC,8BAAkB,CAACC,wBAAwB,CAAC;IAE1E,IAAI;MACF;MACA,MAAMC,WAAW,GAAG,IAAIC,eAAe,CAAC;QACtCnC,IAAI,EAAEA,IAAI,CAACoC,QAAQ,CAAC,CAAC;QACrBjC,QAAQ,EAAEA,QAAQ,CAACiC,QAAQ,CAAC,CAAC;QAC7B3B;MACF,CAAC,CAAC;MAEF,IAAIJ,MAAM,EAAE6B,WAAW,CAACG,MAAM,CAAC,QAAQ,EAAEhC,MAAM,CAAC;MAChD,IAAIC,MAAM,EAAE4B,WAAW,CAACG,MAAM,CAAC,QAAQ,EAAE/B,MAAM,CAAC;MAChD,IAAIC,UAAU,EAAE2B,WAAW,CAACG,MAAM,CAAC,YAAY,EAAE9B,UAAU,CAAC;MAC5D,IAAIC,MAAM,EAAE0B,WAAW,CAACG,MAAM,CAAC,QAAQ,EAAE7B,MAAM,CAAC;MAEhD,MAAM8B,QAAQ,GAAGC,uBAAW,CAACC,cAAc,CAAC9B,KAAK,EAAEwB,WAAW,CAACE,QAAQ,CAAC,CAAC,CAAC;MAE1EtB,oBAAW,CAACU,GAAG,CACZ,wDAAuDc,QAAS,cAAaG,0BAAgB,EAAC,EAC/F;QACEzB,MAAM,EAAE,YAAY;QACpBC,MAAM,EAAE;MACV,CACF,CAAC;MAED,MAAMyB,QAAQ,GAAG,MAAM,IAAI,CAACtD,YAAY,CAACuD,OAAO,CAAC;QAC/CC,OAAO,EAAEH,0BAAe;QACxBH,QAAQ;QACRrB,MAAM,EAAE4B,mBAAY,CAACC;MACvB,CAAC,CAAC;MAEF,MAAMvB,QAAQ,GAAGzB,IAAI,CAACC,GAAG,CAAC,CAAC,GAAGF,SAAS;MAEvC,MAAMkD,WAAW,GAAGL,QAAQ,CAACM,IAAI,EAAEvB,IAAI,EAAEC,MAAM,IAAI,CAAC;MACpD,MAAMI,YAAY,GAAGY,QAAQ,CAACM,IAAI,EAAErB,IAAI,EAAEG,YAAY;MAEtDhB,oBAAW,CAACU,GAAG,CAAE,0BAAyBuB,WAAY,eAAc,EAAE;QACpE/B,MAAM,EAAE,YAAY;QACpBC,MAAM,EAAE,gBAAgB;QACxBQ,IAAI,EAAE;UACJwB,UAAU,EAAEP,QAAQ,CAACO,UAAU;UAC/B1B,QAAQ;UACRwB,WAAW;UACXjB,YAAY;UACZjB,eAAe;UACfb,IAAI;UACJG;QACF;MACF,CAAC,CAAC;;MAEF;MACA,IAAIU,eAAe,IAAIb,IAAI,KAAK,CAAC,EAAE;QACjC,IAAI,CAACP,cAAc,CAACyD,UAAU,CAC5BlB,8BAAkB,CAACC,wBAAwB,EAC3C;UACEvB,KAAK;UACLuC,UAAU,EAAEP,QAAQ,CAACO,UAAU;UAC/BF,WAAW;UACXjB,YAAY;UACZjB,eAAe;UACfsC,WAAW,EAAEnD,IAAI,KAAK;QACxB,CAAC,EACD,CAAC,YAAY,CACf,CAAC;MACH;;MAEA;MACA,IAAI,IAAI,CAACT,SAAS,CAAC2B,WAAW,CAAC;QAACb,MAAM;QAAEC,MAAM;QAAEC,UAAU;QAAEC;MAAM,CAAC,CAAC,IAAIkC,QAAQ,CAACM,IAAI,EAAEvB,IAAI,EAAE;QAC3F,MAAMN,QAAQ,GAAG,IAAI,CAAC5B,SAAS,CAAC6B,aAAa,CAACV,KAAK,EAAEV,IAAI,EAAEG,QAAQ,CAAC;QACpE,IAAI,CAACZ,SAAS,CAAC6D,SAAS,CAACjC,QAAQ,EAAEuB,QAAQ,CAACM,IAAI,CAACvB,IAAI,EAAEiB,QAAQ,CAACM,IAAI,CAACrB,IAAI,CAAC;QAE1Eb,oBAAW,CAACU,GAAG,CAAC,8CAA8C,EAAE;UAC9DR,MAAM,EAAE,YAAY;UACpBC,MAAM,EAAE,gBAAgB;UACxBQ,IAAI,EAAE;YAACN,QAAQ;YAAE4B;UAAW;QAC9B,CAAC,CAAC;MACJ;MAEA,OAAOL,QAAQ,CAACM,IAAI;IACtB,CAAC,CAAC,OAAOK,KAAK,EAAE;MACd,MAAMC,SAAS,GAAG;QAChB5C,KAAK;QACL2C,KAAK,EAAEA,KAAK,YAAYE,KAAK,GAAGF,KAAK,CAACG,OAAO,GAAGC,MAAM,CAACJ,KAAK,CAAC;QAC7DxC,eAAe;QACfb,IAAI;QACJG;MACF,CAAC;MAEDW,oBAAW,CAACuC,KAAK,CAAE,8BAA6B,EAAE;QAChDrC,MAAM,EAAE,YAAY;QACpBC,MAAM,EAAE,gBAAgB;QACxBQ,IAAI,EAAE6B,SAAS;QACfD;MACF,CAAC,CAAC;;MAEF;MACA,IAAI,CAAC5D,cAAc,CAACyD,UAAU,CAAClB,8BAAkB,CAAC0B,uBAAuB,EAAEJ,SAAS,EAAE,CACpF,YAAY,CACb,CAAC;MAEF,MAAMD,KAAK;IACb;EACF;AACF;AAACM,OAAA,CAAA1E,UAAA,GAAAA,UAAA;AAAA,IAAA2E,QAAA,GAAAD,OAAA,CAAA1F,OAAA,GAEcgB,UAAU"}
1
+ {"version":3,"names":["_types","require","_loggerProxy","_interopRequireDefault","_WebexRequest","_PageCache","_interopRequireWildcard","_MetricsManager","_constants","_constants2","_constants3","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","EntryPoint","constructor","webex","webexRequest","WebexRequest","getInstance","pageCache","PageCache","metricsManager","MetricsManager","getEntryPoints","params","startTime","Date","now","page","PAGINATION_DEFAULTS","PAGE","pageSize","PAGE_SIZE","search","filter","attributes","sortBy","sortOrder","orgId","credentials","getOrgId","isSearchRequest","LoggerProxy","info","module","method","canUseCache","cacheKey","buildCacheKey","cachedPage","getCachedPage","duration","log","data","length","meta","totalPages","totalMeta","totalRecords","timeEvent","METRIC_EVENT_NAMES","ENTRYPOINT_FETCH_SUCCESS","queryParams","URLSearchParams","toString","append","resource","endPointMap","entryPointList","WCC_API_GATEWAY","response","request","service","HTTP_METHODS","GET","recordCount","body","statusCode","trackEvent","isFirstPage","cachePage","error","errorData","Error","message","String","ENTRYPOINT_FETCH_FAILED","exports","_default"],"sources":["EntryPoint.ts"],"sourcesContent":["import {HTTP_METHODS, WebexSDK} from '../types';\nimport type {EntryPointRecord, EntryPointListResponse, EntryPointSearchParams} from '../types';\nimport LoggerProxy from '../logger-proxy';\nimport WebexRequest from './core/WebexRequest';\nimport PageCache, {PAGINATION_DEFAULTS} from '../utils/PageCache';\nimport MetricsManager from '../metrics/MetricsManager';\nimport {WCC_API_GATEWAY} from './constants';\nimport {endPointMap} from './config/constants';\nimport {METRIC_EVENT_NAMES} from '../metrics/constants';\n\n/**\n * EntryPoint class for managing Webex Contact Center entry points.\n * Provides functionality to fetch, search, and paginate through entry points.\n *\n * @class EntryPoint\n * @public\n * @example\n * ```typescript\n * import Webex from 'webex';\n *\n * const webex = new Webex({ credentials: 'YOUR_ACCESS_TOKEN' });\n * const cc = webex.cc;\n *\n * // Register and login first\n * await cc.register();\n * await cc.stationLogin({ teamId: 'team123', loginOption: 'BROWSER' });\n *\n * // Get EntryPoint API instance from ContactCenter\n * const entryPointAPI = cc.entryPoint;\n *\n * // Get all entry points with pagination\n * const response = await entryPointAPI.getEntryPoints({\n * page: 0,\n * pageSize: 50\n * });\n *\n * // Search for specific entry points\n * const searchResults = await entryPointAPI.searchEntryPoints({\n * search: 'support',\n * filter: 'type==\"voice\"'\n * });\n * ```\n */\nexport class EntryPoint {\n private webexRequest: WebexRequest;\n private webex: WebexSDK;\n private metricsManager: MetricsManager;\n\n // Page cache using the common utility\n private pageCache: PageCache<EntryPointRecord>;\n\n /**\n * Creates an instance of EntryPoint\n * @param {WebexSDK} webex - The Webex SDK instance\n * @public\n */\n constructor(webex: WebexSDK) {\n this.webex = webex;\n this.webexRequest = WebexRequest.getInstance({webex});\n this.pageCache = new PageCache<EntryPointRecord>('EntryPoint');\n this.metricsManager = MetricsManager.getInstance({webex});\n }\n\n /**\n * Fetches entry points for the organization with pagination support\n * @param {EntryPointSearchParams} [params] - Search and pagination parameters\n * @returns {Promise<EntryPointListResponse>} Promise resolving to paginated entry points\n * @throws {Error} If the API call fails\n * @public\n * @example\n * ```typescript\n * // Get first page of entry points\n * const response = await entryPointAPI.getEntryPoints();\n *\n * // Get specific page with custom page size\n * const response = await entryPointAPI.getEntryPoints({\n * page: 2,\n * pageSize: 25\n * });\n * ```\n */\n public async getEntryPoints(\n params: EntryPointSearchParams = {}\n ): Promise<EntryPointListResponse> {\n const startTime = Date.now();\n const {\n page = PAGINATION_DEFAULTS.PAGE,\n pageSize = PAGINATION_DEFAULTS.PAGE_SIZE,\n search,\n filter,\n attributes,\n sortBy,\n sortOrder = 'asc',\n } = params;\n\n const orgId = this.webex.credentials.getOrgId();\n const isSearchRequest = !!(search || filter || attributes || sortBy);\n\n LoggerProxy.info(\n `Fetching entry points - orgId: ${orgId}, page: ${page}, pageSize: ${pageSize}, isSearchRequest: ${isSearchRequest}`,\n {\n module: 'EntryPoint',\n method: 'getEntryPoints',\n }\n );\n\n // Check if we can use cache for simple pagination (no search/filter/attributes/sort)\n if (this.pageCache.canUseCache({search, filter, attributes, sortBy})) {\n const cacheKey = this.pageCache.buildCacheKey(orgId, page, pageSize);\n const cachedPage = this.pageCache.getCachedPage(cacheKey);\n\n if (cachedPage) {\n const duration = Date.now() - startTime;\n\n LoggerProxy.log(\n `Returning page ${page} from cache - cacheHit: true, duration: ${duration}ms, recordCount: ${cachedPage.data.length}, pageSize: ${pageSize}`,\n {\n module: 'EntryPoint',\n method: 'getEntryPoints',\n }\n );\n\n return {\n data: cachedPage.data,\n meta: {\n page,\n pageSize,\n totalPages: cachedPage.totalMeta?.totalPages,\n totalRecords: cachedPage.totalMeta?.totalRecords,\n },\n };\n }\n }\n\n // Start timing only for actual API calls (not cache hits)\n this.metricsManager.timeEvent(METRIC_EVENT_NAMES.ENTRYPOINT_FETCH_SUCCESS);\n\n try {\n // Build query parameters\n const queryParams = new URLSearchParams({\n page: page.toString(),\n pageSize: pageSize.toString(),\n sortOrder,\n });\n\n if (search) queryParams.append('search', search);\n if (filter) queryParams.append('filter', filter);\n if (attributes) queryParams.append('attributes', attributes);\n if (sortBy) queryParams.append('sortBy', sortBy);\n\n const resource = endPointMap.entryPointList(orgId, queryParams.toString());\n\n LoggerProxy.log(\n `Making API request to fetch entry points - resource: ${resource}, service: ${WCC_API_GATEWAY}`,\n {\n module: 'EntryPoint',\n method: 'getEntryPoints',\n }\n );\n\n const response = await this.webexRequest.request({\n service: WCC_API_GATEWAY,\n resource,\n method: HTTP_METHODS.GET,\n });\n\n const duration = Date.now() - startTime;\n\n const recordCount = response.body?.data?.length || 0;\n const totalRecords = response.body?.meta?.totalRecords;\n\n LoggerProxy.log(`Successfully retrieved ${recordCount} entry points`, {\n module: 'EntryPoint',\n method: 'getEntryPoints',\n data: {\n statusCode: response.statusCode,\n duration,\n recordCount,\n totalRecords,\n isSearchRequest,\n page,\n pageSize,\n },\n });\n\n // Only track metrics for search requests or first page loads to reduce metric volume\n if (isSearchRequest || page === 0) {\n this.metricsManager.trackEvent(\n METRIC_EVENT_NAMES.ENTRYPOINT_FETCH_SUCCESS,\n {\n orgId,\n statusCode: response.statusCode,\n recordCount,\n totalRecords,\n isSearchRequest,\n isFirstPage: page === 0,\n },\n ['behavioral']\n );\n }\n\n // Cache the page data for simple pagination (no search/filter/attributes/sort)\n if (this.pageCache.canUseCache({search, filter, attributes, sortBy}) && response.body?.data) {\n const cacheKey = this.pageCache.buildCacheKey(orgId, page, pageSize);\n this.pageCache.cachePage(cacheKey, response.body.data, response.body.meta);\n\n LoggerProxy.log('Cached entry points data for future requests', {\n module: 'EntryPoint',\n method: 'getEntryPoints',\n data: {cacheKey, recordCount},\n });\n }\n\n return response.body;\n } catch (error) {\n const errorData = {\n orgId,\n error: error instanceof Error ? error.message : String(error),\n isSearchRequest,\n page,\n pageSize,\n };\n\n LoggerProxy.error(`Failed to fetch entry points`, {\n module: 'EntryPoint',\n method: 'getEntryPoints',\n data: errorData,\n error,\n });\n\n // Track all failures for troubleshooting\n this.metricsManager.trackEvent(METRIC_EVENT_NAMES.ENTRYPOINT_FETCH_FAILED, errorData, [\n 'behavioral',\n ]);\n\n throw error;\n }\n }\n}\n\nexport default EntryPoint;\n"],"mappings":"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","ignoreList":[]}
@@ -13,9 +13,8 @@ var _constants = require("./constants");
13
13
  var _constants2 = require("./config/constants");
14
14
  var _constants3 = require("../metrics/constants");
15
15
  var _constants4 = require("../constants");
16
- function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
17
- function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
18
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
16
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
17
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
19
18
  /**
20
19
  * Queue API class for managing Webex Contact Center contact service queues.
21
20
  * Provides functionality to fetch contact service queues using the queue API.
@@ -1 +1 @@
1
- {"version":3,"names":["_types","require","_loggerProxy","_interopRequireDefault","_WebexRequest","_PageCache","_interopRequireWildcard","_MetricsManager","_constants","_constants2","_constants3","_constants4","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","obj","Queue","constructor","webex","webexRequest","WebexRequest","getInstance","pageCache","PageCache","metricsManager","MetricsManager","getQueues","params","startTime","Date","now","page","PAGINATION_DEFAULTS","PAGE","pageSize","PAGE_SIZE","search","filter","attributes","sortBy","sortOrder","desktopProfileFilter","provisioningView","singleObjectResponse","orgId","credentials","getOrgId","isSearchRequest","LoggerProxy","info","module","method","METHODS","GET_QUEUES","data","canUseCache","cacheKey","buildCacheKey","cachedPage","getCachedPage","duration","log","cacheHit","recordCount","length","meta","totalPages","totalMeta","totalRecords","orgid","timeEvent","METRIC_EVENT_NAMES","QUEUE_FETCH_SUCCESS","queryParams","URLSearchParams","toString","append","undefined","resource","endPointMap","queueList","service","WCC_API_GATEWAY","response","request","HTTP_METHODS","GET","body","statusCode","trackEvent","isFirstPage","cachePage","error","errorData","Error","message","String","QUEUE_FETCH_FAILED","exports","_default"],"sources":["Queue.ts"],"sourcesContent":["import {HTTP_METHODS, WebexSDK} from '../types';\nimport type {\n ContactServiceQueue,\n ContactServiceQueuesResponse,\n ContactServiceQueueSearchParams,\n} from '../types';\nimport LoggerProxy from '../logger-proxy';\nimport WebexRequest from './core/WebexRequest';\nimport PageCache, {PAGINATION_DEFAULTS} from '../utils/PageCache';\nimport MetricsManager from '../metrics/MetricsManager';\nimport {WCC_API_GATEWAY} from './constants';\nimport {endPointMap} from './config/constants';\nimport {METRIC_EVENT_NAMES} from '../metrics/constants';\nimport {METHODS} from '../constants';\n\n/**\n * Queue API class for managing Webex Contact Center contact service queues.\n * Provides functionality to fetch contact service queues using the queue API.\n *\n * @class Queue\n * @public\n * @example\n * ```typescript\n * import Webex from 'webex';\n *\n * const webex = new Webex({ credentials: 'YOUR_ACCESS_TOKEN' });\n * const cc = webex.cc;\n *\n * // Register and login first\n * await cc.register();\n * await cc.stationLogin({ teamId: 'team123', loginOption: 'BROWSER' });\n *\n * // Get Queue API instance from ContactCenter\n * const queueAPI = cc.queue;\n *\n * // Get all queues\n * const queues = await queueAPI.getQueues();\n *\n * // Get queues with pagination\n * const queues = await queueAPI.getQueues({\n * page: 0,\n * pageSize: 50\n * });\n *\n * // Search for specific queues\n * const searchResults = await queueAPI.getQueues({\n * search: 'support',\n * filter: 'name==\"Support Queue\"'\n * });\n * ```\n */\nexport class Queue {\n private webexRequest: WebexRequest;\n private webex: WebexSDK;\n private metricsManager: MetricsManager;\n\n // Page cache using the common utility\n private pageCache: PageCache<ContactServiceQueue>;\n\n /**\n * Creates an instance of Queue\n * @param {WebexSDK} webex - The Webex SDK instance\n * @public\n */\n constructor(webex: WebexSDK) {\n this.webex = webex;\n this.webexRequest = WebexRequest.getInstance({webex});\n this.pageCache = new PageCache<ContactServiceQueue>('Queue');\n this.metricsManager = MetricsManager.getInstance({webex});\n }\n\n /**\n * Fetches contact service queues for the organization\n * @param {ContactServiceQueueSearchParams} [params] - Search and pagination parameters\n * @returns {Promise<ContactServiceQueuesResponse>} Promise resolving to contact service queues\n * @throws {Error} If the API call fails\n * @public\n * @example\n * ```typescript\n * // Get all queues with default pagination\n * const response = await queueAPI.getQueues();\n *\n * // Get queues with specific pagination\n * const response = await queueAPI.getQueues({\n * page: 0,\n * pageSize: 25\n * });\n *\n * // Search for queues\n * const response = await queueAPI.getQueues({\n * search: 'support',\n * filter: 'queueType==\"INBOUND\"'\n * });\n * ```\n */\n public async getQueues(\n params: ContactServiceQueueSearchParams = {}\n ): Promise<ContactServiceQueuesResponse> {\n const startTime = Date.now();\n const {\n page = PAGINATION_DEFAULTS.PAGE,\n pageSize = PAGINATION_DEFAULTS.PAGE_SIZE,\n search,\n filter,\n attributes,\n sortBy,\n sortOrder,\n desktopProfileFilter,\n provisioningView,\n singleObjectResponse,\n } = params;\n\n const orgId = this.webex.credentials.getOrgId();\n const isSearchRequest = !!(search || filter || attributes || sortBy);\n\n LoggerProxy.info('Fetching contact service queues', {\n module: 'Queue',\n method: METHODS.GET_QUEUES,\n data: {\n orgId,\n page,\n pageSize,\n isSearchRequest,\n },\n });\n\n // Check if we can use cache for simple pagination (no search/filter/attributes/sort)\n if (this.pageCache.canUseCache({search, filter, attributes, sortBy})) {\n const cacheKey = this.pageCache.buildCacheKey(orgId, page, pageSize);\n const cachedPage = this.pageCache.getCachedPage(cacheKey);\n\n if (cachedPage) {\n const duration = Date.now() - startTime;\n\n LoggerProxy.log(`Returning page ${page} from cache`, {\n module: 'Queue',\n method: 'getQueues',\n data: {\n cacheHit: true,\n duration,\n recordCount: cachedPage.data.length,\n page,\n pageSize,\n },\n });\n\n return {\n data: cachedPage.data,\n meta: {\n page,\n pageSize,\n totalPages: cachedPage.totalMeta?.totalPages,\n totalRecords: cachedPage.totalMeta?.totalRecords,\n orgid: orgId,\n },\n };\n }\n }\n\n // Start timing only for actual API calls (not cache hits)\n this.metricsManager.timeEvent(METRIC_EVENT_NAMES.QUEUE_FETCH_SUCCESS);\n\n try {\n // Build query parameters according to spec\n const queryParams = new URLSearchParams({\n page: page.toString(),\n pageSize: pageSize.toString(),\n });\n\n if (filter) queryParams.append('filter', filter);\n if (attributes) queryParams.append('attributes', attributes);\n if (search) queryParams.append('search', search);\n if (sortBy) queryParams.append('sortBy', sortBy);\n if (sortOrder) queryParams.append('sortOrder', sortOrder);\n if (desktopProfileFilter !== undefined)\n queryParams.append('desktopProfileFilter', desktopProfileFilter.toString());\n if (provisioningView !== undefined)\n queryParams.append('provisioningView', provisioningView.toString());\n if (singleObjectResponse !== undefined)\n queryParams.append('singleObjectResponse', singleObjectResponse.toString());\n\n const resource = endPointMap.queueList(orgId, queryParams.toString());\n\n LoggerProxy.log('Making API request to fetch contact service queues', {\n module: 'Queue',\n method: METHODS.GET_QUEUES,\n data: {\n resource,\n service: WCC_API_GATEWAY,\n },\n });\n\n const response = await this.webexRequest.request({\n service: WCC_API_GATEWAY,\n resource,\n method: HTTP_METHODS.GET,\n });\n\n const duration = Date.now() - startTime;\n\n const recordCount = response.body?.data?.length || 0;\n const totalRecords = response.body?.meta?.totalRecords;\n\n LoggerProxy.log(`Successfully retrieved ${recordCount} contact service queues`, {\n module: 'Queue',\n method: METHODS.GET_QUEUES,\n data: {\n statusCode: response.statusCode,\n duration,\n recordCount,\n totalRecords,\n isSearchRequest,\n page,\n pageSize,\n },\n });\n\n // Only track metrics for search requests or first page loads to reduce metric volume\n if (isSearchRequest || page === 0) {\n this.metricsManager.trackEvent(\n METRIC_EVENT_NAMES.QUEUE_FETCH_SUCCESS,\n {\n orgId,\n statusCode: response.statusCode,\n recordCount,\n totalRecords,\n isSearchRequest,\n isFirstPage: page === 0,\n },\n ['behavioral', 'operational']\n );\n }\n\n // Cache the page data for simple pagination (no search/filter/attributes/sort)\n if (this.pageCache.canUseCache({search, filter, attributes, sortBy}) && response.body?.data) {\n const cacheKey = this.pageCache.buildCacheKey(orgId, page, pageSize);\n this.pageCache.cachePage(cacheKey, response.body.data, response.body.meta);\n\n LoggerProxy.log('Cached contact service queues for future requests', {\n module: 'Queue',\n method: METHODS.GET_QUEUES,\n data: {\n cacheKey,\n recordCount,\n },\n });\n }\n\n return response.body;\n } catch (error) {\n const errorData = {\n orgId,\n error: error instanceof Error ? error.message : String(error),\n isSearchRequest,\n page,\n pageSize,\n };\n\n LoggerProxy.error('Failed to fetch contact service queues', {\n module: 'Queue',\n method: METHODS.GET_QUEUES,\n data: errorData,\n error,\n });\n\n // Track all failures for troubleshooting\n this.metricsManager.trackEvent(METRIC_EVENT_NAMES.QUEUE_FETCH_FAILED, errorData, [\n 'behavioral',\n 'operational',\n ]);\n\n throw error;\n }\n }\n}\n\nexport default Queue;\n"],"mappings":"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"}
1
+ {"version":3,"names":["_types","require","_loggerProxy","_interopRequireDefault","_WebexRequest","_PageCache","_interopRequireWildcard","_MetricsManager","_constants","_constants2","_constants3","_constants4","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","Queue","constructor","webex","webexRequest","WebexRequest","getInstance","pageCache","PageCache","metricsManager","MetricsManager","getQueues","params","startTime","Date","now","page","PAGINATION_DEFAULTS","PAGE","pageSize","PAGE_SIZE","search","filter","attributes","sortBy","sortOrder","desktopProfileFilter","provisioningView","singleObjectResponse","orgId","credentials","getOrgId","isSearchRequest","LoggerProxy","info","module","method","METHODS","GET_QUEUES","data","canUseCache","cacheKey","buildCacheKey","cachedPage","getCachedPage","duration","log","cacheHit","recordCount","length","meta","totalPages","totalMeta","totalRecords","orgid","timeEvent","METRIC_EVENT_NAMES","QUEUE_FETCH_SUCCESS","queryParams","URLSearchParams","toString","append","undefined","resource","endPointMap","queueList","service","WCC_API_GATEWAY","response","request","HTTP_METHODS","GET","body","statusCode","trackEvent","isFirstPage","cachePage","error","errorData","Error","message","String","QUEUE_FETCH_FAILED","exports","_default"],"sources":["Queue.ts"],"sourcesContent":["import {HTTP_METHODS, WebexSDK} from '../types';\nimport type {\n ContactServiceQueue,\n ContactServiceQueuesResponse,\n ContactServiceQueueSearchParams,\n} from '../types';\nimport LoggerProxy from '../logger-proxy';\nimport WebexRequest from './core/WebexRequest';\nimport PageCache, {PAGINATION_DEFAULTS} from '../utils/PageCache';\nimport MetricsManager from '../metrics/MetricsManager';\nimport {WCC_API_GATEWAY} from './constants';\nimport {endPointMap} from './config/constants';\nimport {METRIC_EVENT_NAMES} from '../metrics/constants';\nimport {METHODS} from '../constants';\n\n/**\n * Queue API class for managing Webex Contact Center contact service queues.\n * Provides functionality to fetch contact service queues using the queue API.\n *\n * @class Queue\n * @public\n * @example\n * ```typescript\n * import Webex from 'webex';\n *\n * const webex = new Webex({ credentials: 'YOUR_ACCESS_TOKEN' });\n * const cc = webex.cc;\n *\n * // Register and login first\n * await cc.register();\n * await cc.stationLogin({ teamId: 'team123', loginOption: 'BROWSER' });\n *\n * // Get Queue API instance from ContactCenter\n * const queueAPI = cc.queue;\n *\n * // Get all queues\n * const queues = await queueAPI.getQueues();\n *\n * // Get queues with pagination\n * const queues = await queueAPI.getQueues({\n * page: 0,\n * pageSize: 50\n * });\n *\n * // Search for specific queues\n * const searchResults = await queueAPI.getQueues({\n * search: 'support',\n * filter: 'name==\"Support Queue\"'\n * });\n * ```\n */\nexport class Queue {\n private webexRequest: WebexRequest;\n private webex: WebexSDK;\n private metricsManager: MetricsManager;\n\n // Page cache using the common utility\n private pageCache: PageCache<ContactServiceQueue>;\n\n /**\n * Creates an instance of Queue\n * @param {WebexSDK} webex - The Webex SDK instance\n * @public\n */\n constructor(webex: WebexSDK) {\n this.webex = webex;\n this.webexRequest = WebexRequest.getInstance({webex});\n this.pageCache = new PageCache<ContactServiceQueue>('Queue');\n this.metricsManager = MetricsManager.getInstance({webex});\n }\n\n /**\n * Fetches contact service queues for the organization\n * @param {ContactServiceQueueSearchParams} [params] - Search and pagination parameters\n * @returns {Promise<ContactServiceQueuesResponse>} Promise resolving to contact service queues\n * @throws {Error} If the API call fails\n * @public\n * @example\n * ```typescript\n * // Get all queues with default pagination\n * const response = await queueAPI.getQueues();\n *\n * // Get queues with specific pagination\n * const response = await queueAPI.getQueues({\n * page: 0,\n * pageSize: 25\n * });\n *\n * // Search for queues\n * const response = await queueAPI.getQueues({\n * search: 'support',\n * filter: 'queueType==\"INBOUND\"'\n * });\n * ```\n */\n public async getQueues(\n params: ContactServiceQueueSearchParams = {}\n ): Promise<ContactServiceQueuesResponse> {\n const startTime = Date.now();\n const {\n page = PAGINATION_DEFAULTS.PAGE,\n pageSize = PAGINATION_DEFAULTS.PAGE_SIZE,\n search,\n filter,\n attributes,\n sortBy,\n sortOrder,\n desktopProfileFilter,\n provisioningView,\n singleObjectResponse,\n } = params;\n\n const orgId = this.webex.credentials.getOrgId();\n const isSearchRequest = !!(search || filter || attributes || sortBy);\n\n LoggerProxy.info('Fetching contact service queues', {\n module: 'Queue',\n method: METHODS.GET_QUEUES,\n data: {\n orgId,\n page,\n pageSize,\n isSearchRequest,\n },\n });\n\n // Check if we can use cache for simple pagination (no search/filter/attributes/sort)\n if (this.pageCache.canUseCache({search, filter, attributes, sortBy})) {\n const cacheKey = this.pageCache.buildCacheKey(orgId, page, pageSize);\n const cachedPage = this.pageCache.getCachedPage(cacheKey);\n\n if (cachedPage) {\n const duration = Date.now() - startTime;\n\n LoggerProxy.log(`Returning page ${page} from cache`, {\n module: 'Queue',\n method: 'getQueues',\n data: {\n cacheHit: true,\n duration,\n recordCount: cachedPage.data.length,\n page,\n pageSize,\n },\n });\n\n return {\n data: cachedPage.data,\n meta: {\n page,\n pageSize,\n totalPages: cachedPage.totalMeta?.totalPages,\n totalRecords: cachedPage.totalMeta?.totalRecords,\n orgid: orgId,\n },\n };\n }\n }\n\n // Start timing only for actual API calls (not cache hits)\n this.metricsManager.timeEvent(METRIC_EVENT_NAMES.QUEUE_FETCH_SUCCESS);\n\n try {\n // Build query parameters according to spec\n const queryParams = new URLSearchParams({\n page: page.toString(),\n pageSize: pageSize.toString(),\n });\n\n if (filter) queryParams.append('filter', filter);\n if (attributes) queryParams.append('attributes', attributes);\n if (search) queryParams.append('search', search);\n if (sortBy) queryParams.append('sortBy', sortBy);\n if (sortOrder) queryParams.append('sortOrder', sortOrder);\n if (desktopProfileFilter !== undefined)\n queryParams.append('desktopProfileFilter', desktopProfileFilter.toString());\n if (provisioningView !== undefined)\n queryParams.append('provisioningView', provisioningView.toString());\n if (singleObjectResponse !== undefined)\n queryParams.append('singleObjectResponse', singleObjectResponse.toString());\n\n const resource = endPointMap.queueList(orgId, queryParams.toString());\n\n LoggerProxy.log('Making API request to fetch contact service queues', {\n module: 'Queue',\n method: METHODS.GET_QUEUES,\n data: {\n resource,\n service: WCC_API_GATEWAY,\n },\n });\n\n const response = await this.webexRequest.request({\n service: WCC_API_GATEWAY,\n resource,\n method: HTTP_METHODS.GET,\n });\n\n const duration = Date.now() - startTime;\n\n const recordCount = response.body?.data?.length || 0;\n const totalRecords = response.body?.meta?.totalRecords;\n\n LoggerProxy.log(`Successfully retrieved ${recordCount} contact service queues`, {\n module: 'Queue',\n method: METHODS.GET_QUEUES,\n data: {\n statusCode: response.statusCode,\n duration,\n recordCount,\n totalRecords,\n isSearchRequest,\n page,\n pageSize,\n },\n });\n\n // Only track metrics for search requests or first page loads to reduce metric volume\n if (isSearchRequest || page === 0) {\n this.metricsManager.trackEvent(\n METRIC_EVENT_NAMES.QUEUE_FETCH_SUCCESS,\n {\n orgId,\n statusCode: response.statusCode,\n recordCount,\n totalRecords,\n isSearchRequest,\n isFirstPage: page === 0,\n },\n ['behavioral', 'operational']\n );\n }\n\n // Cache the page data for simple pagination (no search/filter/attributes/sort)\n if (this.pageCache.canUseCache({search, filter, attributes, sortBy}) && response.body?.data) {\n const cacheKey = this.pageCache.buildCacheKey(orgId, page, pageSize);\n this.pageCache.cachePage(cacheKey, response.body.data, response.body.meta);\n\n LoggerProxy.log('Cached contact service queues for future requests', {\n module: 'Queue',\n method: METHODS.GET_QUEUES,\n data: {\n cacheKey,\n recordCount,\n },\n });\n }\n\n return response.body;\n } catch (error) {\n const errorData = {\n orgId,\n error: error instanceof Error ? error.message : String(error),\n isSearchRequest,\n page,\n pageSize,\n };\n\n LoggerProxy.error('Failed to fetch contact service queues', {\n module: 'Queue',\n method: METHODS.GET_QUEUES,\n data: errorData,\n error,\n });\n\n // Track all failures for troubleshooting\n this.metricsManager.trackEvent(METRIC_EVENT_NAMES.QUEUE_FETCH_FAILED, errorData, [\n 'behavioral',\n 'operational',\n ]);\n\n throw error;\n }\n }\n}\n\nexport default Queue;\n"],"mappings":"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","ignoreList":[]}
@@ -9,7 +9,7 @@ var _calling = require("@webex/calling");
9
9
  var _constants = require("../constants");
10
10
  var _loggerProxy = _interopRequireDefault(require("../logger-proxy"));
11
11
  var _constants2 = require("./constants");
12
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
12
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
13
13
  /**
14
14
  * WebCallingService provides WebRTC calling functionality for Contact Center agents.
15
15
  * It handles registration, call management, and media operations for voice interactions.
@@ -1 +1 @@
1
- {"version":3,"names":["_events","_interopRequireDefault","require","_calling","_constants","_loggerProxy","_constants2","obj","__esModule","default","WebCallingService","EventEmitter","constructor","webex","callTaskMap","Map","setLoginOption","loginOption","handleMediaEvent","track","emit","CALL_EVENT_KEYS","REMOTE_MEDIA","handleDisconnectEvent","call","end","cleanUpCall","registerCallListeners","on","DISCONNECT","off","callId","getCallId","taskId","getTaskIdForCall","delete","getRTMSDomain","internal","services","waitForCatalog","POST_AUTH","rtmsURL","get","WCC_CALLING_RTMS_DOMAIN","url","URL","hostname","error","LoggerProxy","module","WEB_CALLING_SERVICE_FILE","method","METHODS","GET_RTMS_DOMAIN","DEFAULT_RTMS_DOMAIN","registerWebCallingLine","rtmsDomain","callingClientConfig","logger","level","LOGGER","INFO","serviceData","indicator","ServiceIndicator","CONTACT_CENTER","domain","callingClient","createClient","line","Object","values","getLines","LINE_EVENTS","UNREGISTERED","log","REGISTER_WEB_CALLING_LINE","INCOMING_CALL","Promise","resolve","reject","timeout","setTimeout","Error","TIMEOUT_DURATION","REGISTERED","deviceInfo","clearTimeout","mobiusDeviceId","register","deregisterWebCallingLine","DEREGISTER_WEBCALLING_LINE_MSG","DEREGISTER_WEB_CALLING_LINE","deregister","answerCall","localAudioStream","info","ANSWER_CALL","answer","muteUnmuteCall","MUTE_UNMUTE_CALL","mute","isCallMuted","isMuted","declineCall","DECLINE_CALL","mapCallToTask","set","exports"],"sources":["WebCallingService.ts"],"sourcesContent":["import EventEmitter from 'events';\nimport {\n createClient,\n ICall,\n ICallingClient,\n ILine,\n LINE_EVENTS,\n ServiceIndicator,\n LocalMicrophoneStream,\n CALL_EVENT_KEYS,\n LOGGER,\n} from '@webex/calling';\nimport {LoginOption, WebexSDK} from '../types';\nimport {TIMEOUT_DURATION, WEB_CALLING_SERVICE_FILE} from '../constants';\nimport LoggerProxy from '../logger-proxy';\nimport {\n DEFAULT_RTMS_DOMAIN,\n POST_AUTH,\n WCC_CALLING_RTMS_DOMAIN,\n DEREGISTER_WEBCALLING_LINE_MSG,\n METHODS,\n} from './constants';\n\n/**\n * WebCallingService provides WebRTC calling functionality for Contact Center agents.\n * It handles registration, call management, and media operations for voice interactions.\n * @internal\n */\nexport default class WebCallingService extends EventEmitter {\n /**\n * The CallingClient instance that manages WebRTC calling capabilities\n * @private\n */\n private callingClient: ICallingClient;\n\n /**\n * The Line instance that handles registration and incoming calls\n * @private\n */\n private line: ILine;\n\n /**\n * The current active call instance\n * @private\n */\n private call: ICall | undefined;\n\n /**\n * Reference to the WebexSDK instance\n * @private\n */\n private webex: WebexSDK;\n\n /**\n * The login option selected for this session\n * @private\n */\n public loginOption: LoginOption;\n\n /**\n * Map that associates call IDs with task IDs for correlation\n * @private\n */\n private callTaskMap: Map<string, string>;\n\n /**\n * Creates an instance of WebCallingService.\n * @param {WebexSDK} webex - The Webex SDK instance\n */\n constructor(webex: WebexSDK) {\n super();\n this.webex = webex;\n this.callTaskMap = new Map();\n }\n\n /**\n * Sets the login option for the current session\n * @param {LoginOption} loginOption - The login option to use\n * @private\n */\n public setLoginOption(loginOption: LoginOption): void {\n this.loginOption = loginOption;\n }\n\n /**\n * Handles remote media track events from the call\n * @param {MediaStreamTrack} track - The media track received\n * @private\n */\n private handleMediaEvent = (track: MediaStreamTrack): void => {\n this.emit(CALL_EVENT_KEYS.REMOTE_MEDIA, track);\n };\n\n /**\n * Handles disconnect events from the call\n * @private\n */\n private handleDisconnectEvent = (): void => {\n this.call.end();\n this.cleanUpCall();\n };\n\n /**\n * Registers event listeners for the current call\n * @private\n */\n private registerCallListeners(): void {\n // TODO: Add remaining call listeners here\n this.call.on(CALL_EVENT_KEYS.REMOTE_MEDIA, this.handleMediaEvent);\n this.call.on(CALL_EVENT_KEYS.DISCONNECT, this.handleDisconnectEvent);\n }\n\n /**\n * Cleans up resources associated with the current call\n * Removes event listeners and clears the call-task mapping\n * @private\n */\n public cleanUpCall(): void {\n if (this.call) {\n this.call.off(CALL_EVENT_KEYS.REMOTE_MEDIA, this.handleMediaEvent);\n this.call.off(CALL_EVENT_KEYS.DISCONNECT, this.handleDisconnectEvent);\n const callId = this.call.getCallId();\n const taskId = this.getTaskIdForCall(callId);\n\n if (taskId) {\n this.callTaskMap.delete(callId);\n }\n this.call = null;\n }\n }\n\n /**\n * Retrieves the RTMS domain to use for WebRTC connections\n * First tries to get it from the service catalog, then falls back to default\n * @private\n * @returns {Promise<string>} The RTMS domain to use\n */\n private async getRTMSDomain(): Promise<string> {\n await this.webex.internal.services.waitForCatalog(POST_AUTH);\n\n const rtmsURL = this.webex.internal.services.get(WCC_CALLING_RTMS_DOMAIN);\n\n try {\n const url = new URL(rtmsURL);\n\n return url.hostname;\n } catch (error) {\n LoggerProxy.error(\n `Invalid URL from u2c catalogue: ${rtmsURL} so falling back to default domain`,\n {\n module: WEB_CALLING_SERVICE_FILE,\n method: METHODS.GET_RTMS_DOMAIN,\n }\n );\n\n return DEFAULT_RTMS_DOMAIN;\n }\n }\n\n /**\n * Registers the WebCalling line for receiving calls\n * Sets up event listeners for line events and initializes the calling client\n *\n * @private\n * @returns {Promise<void>} A promise that resolves when registration is complete\n * @throws {Error} When registration times out\n */\n public async registerWebCallingLine(): Promise<void> {\n const rtmsDomain = await this.getRTMSDomain(); // get the RTMS domain from the u2c catalogue\n\n const callingClientConfig = {\n logger: {\n level: LOGGER.INFO,\n },\n serviceData: {\n indicator: ServiceIndicator.CONTACT_CENTER,\n domain: rtmsDomain,\n },\n };\n\n this.callingClient = await createClient(this.webex as any, callingClientConfig);\n this.line = Object.values(this.callingClient.getLines())[0];\n\n this.line.on(LINE_EVENTS.UNREGISTERED, () => {\n LoggerProxy.log(`WxCC-SDK: Desktop unregistered successfully`, {\n module: WEB_CALLING_SERVICE_FILE,\n method: METHODS.REGISTER_WEB_CALLING_LINE,\n });\n });\n\n // Start listening for incoming calls\n this.line.on(LINE_EVENTS.INCOMING_CALL, (call: ICall) => {\n this.call = call;\n this.emit(LINE_EVENTS.INCOMING_CALL, call);\n });\n\n return new Promise<void>((resolve, reject) => {\n const timeout = setTimeout(() => {\n reject(new Error('WebCallingService Registration timed out'));\n }, TIMEOUT_DURATION);\n\n this.line.on(LINE_EVENTS.REGISTERED, (deviceInfo: ILine) => {\n clearTimeout(timeout);\n LoggerProxy.log(\n `WxCC-SDK: Desktop registered successfully, mobiusDeviceId: ${deviceInfo.mobiusDeviceId}`,\n {module: WEB_CALLING_SERVICE_FILE, method: METHODS.REGISTER_WEB_CALLING_LINE}\n );\n resolve();\n });\n this.line.register();\n });\n }\n\n /**\n * Deregisters the WebCalling line\n * Cleans up any active calls and deregisters from the calling service\n *\n * @private\n * @returns {Promise<void>} A promise that resolves when deregistration is complete\n */\n public async deregisterWebCallingLine(): Promise<void> {\n LoggerProxy.log(DEREGISTER_WEBCALLING_LINE_MSG, {\n module: WEB_CALLING_SERVICE_FILE,\n method: METHODS.DEREGISTER_WEB_CALLING_LINE,\n });\n this.cleanUpCall();\n this.line?.deregister();\n }\n\n /**\n * Answers an incoming call with the provided audio stream\n *\n * @private\n * @param {LocalMicrophoneStream} localAudioStream - The local microphone stream to use\n * @param {string} taskId - The task ID associated with this call\n * @throws {Error} If answering the call fails\n */\n public answerCall(localAudioStream: LocalMicrophoneStream, taskId: string): void {\n if (this.call) {\n try {\n LoggerProxy.info(`Call answered: ${taskId}`, {\n module: WEB_CALLING_SERVICE_FILE,\n method: METHODS.ANSWER_CALL,\n });\n this.call.answer(localAudioStream);\n this.registerCallListeners();\n } catch (error) {\n LoggerProxy.error(`Failed to answer call for ${taskId}. Error: ${error}`, {\n module: WEB_CALLING_SERVICE_FILE,\n method: METHODS.ANSWER_CALL,\n });\n // Optionally, throw the error to allow the invoker to handle it\n throw error;\n }\n } else {\n LoggerProxy.log(`Cannot answer a non WebRtc Call: ${taskId}`, {\n module: WEB_CALLING_SERVICE_FILE,\n method: METHODS.ANSWER_CALL,\n });\n }\n }\n\n /**\n * Toggles the mute state of the current call\n *\n * @private\n * @param {LocalMicrophoneStream} localAudioStream - The local microphone stream to control\n */\n public muteUnmuteCall(localAudioStream: LocalMicrophoneStream): void {\n if (this.call) {\n LoggerProxy.info('Call mute or unmute requested!', {\n module: WEB_CALLING_SERVICE_FILE,\n method: METHODS.MUTE_UNMUTE_CALL,\n });\n this.call.mute(localAudioStream);\n } else {\n LoggerProxy.log(`Cannot mute a non WebRtc Call`, {\n module: WEB_CALLING_SERVICE_FILE,\n method: METHODS.MUTE_UNMUTE_CALL,\n });\n }\n }\n\n /**\n * Checks if the current call is muted\n *\n * @private\n * @returns {boolean} True if the call is muted, false otherwise or if no call exists\n */\n public isCallMuted(): boolean {\n if (this.call) {\n return this.call.isMuted();\n }\n\n return false;\n }\n\n /**\n * Declines or ends the current call\n *\n * @private\n * @param {string} taskId - The task ID associated with this call\n * @throws {Error} If ending the call fails\n */\n public declineCall(taskId: string): void {\n if (this.call) {\n try {\n LoggerProxy.info(`Call end requested: ${taskId}`, {\n module: WEB_CALLING_SERVICE_FILE,\n method: METHODS.DECLINE_CALL,\n });\n this.call.end();\n this.cleanUpCall();\n } catch (error) {\n LoggerProxy.error(`Failed to end call: ${taskId}. Error: ${error}`, {\n module: WEB_CALLING_SERVICE_FILE,\n method: METHODS.DECLINE_CALL,\n });\n // Optionally, throw the error to allow the invoker to handle it\n throw error;\n }\n } else {\n LoggerProxy.log(`Cannot end a non WebRtc Call: ${taskId}`, {\n module: WEB_CALLING_SERVICE_FILE,\n method: METHODS.DECLINE_CALL,\n });\n }\n }\n\n /**\n * Maps a call ID to a task ID for correlation\n *\n * @private\n * @param {string} callId - The unique call identifier\n * @param {string} taskId - The associated task identifier\n */\n public mapCallToTask(callId: string, taskId: string): void {\n this.callTaskMap.set(callId, taskId);\n }\n\n /**\n * Gets the task ID associated with a call ID\n *\n * @private\n * @param {string} callId - The call ID to look up\n * @returns {string|undefined} The associated task ID or undefined if not found\n */\n public getTaskIdForCall(callId: string): string | undefined {\n return this.callTaskMap.get(callId);\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["_events","_interopRequireDefault","require","_calling","_constants","_loggerProxy","_constants2","e","__esModule","default","WebCallingService","EventEmitter","constructor","webex","callTaskMap","Map","setLoginOption","loginOption","handleMediaEvent","track","emit","CALL_EVENT_KEYS","REMOTE_MEDIA","handleDisconnectEvent","call","end","cleanUpCall","registerCallListeners","on","DISCONNECT","off","callId","getCallId","taskId","getTaskIdForCall","delete","getRTMSDomain","internal","services","waitForCatalog","POST_AUTH","rtmsURL","get","WCC_CALLING_RTMS_DOMAIN","url","URL","hostname","error","LoggerProxy","module","WEB_CALLING_SERVICE_FILE","method","METHODS","GET_RTMS_DOMAIN","DEFAULT_RTMS_DOMAIN","registerWebCallingLine","rtmsDomain","callingClientConfig","logger","level","LOGGER","INFO","serviceData","indicator","ServiceIndicator","CONTACT_CENTER","domain","callingClient","createClient","line","Object","values","getLines","LINE_EVENTS","UNREGISTERED","log","REGISTER_WEB_CALLING_LINE","INCOMING_CALL","Promise","resolve","reject","timeout","setTimeout","Error","TIMEOUT_DURATION","REGISTERED","deviceInfo","clearTimeout","mobiusDeviceId","register","deregisterWebCallingLine","DEREGISTER_WEBCALLING_LINE_MSG","DEREGISTER_WEB_CALLING_LINE","deregister","answerCall","localAudioStream","info","ANSWER_CALL","answer","muteUnmuteCall","MUTE_UNMUTE_CALL","mute","isCallMuted","isMuted","declineCall","DECLINE_CALL","mapCallToTask","set","exports"],"sources":["WebCallingService.ts"],"sourcesContent":["import EventEmitter from 'events';\nimport {\n createClient,\n ICall,\n ICallingClient,\n ILine,\n LINE_EVENTS,\n ServiceIndicator,\n LocalMicrophoneStream,\n CALL_EVENT_KEYS,\n LOGGER,\n} from '@webex/calling';\nimport {LoginOption, WebexSDK} from '../types';\nimport {TIMEOUT_DURATION, WEB_CALLING_SERVICE_FILE} from '../constants';\nimport LoggerProxy from '../logger-proxy';\nimport {\n DEFAULT_RTMS_DOMAIN,\n POST_AUTH,\n WCC_CALLING_RTMS_DOMAIN,\n DEREGISTER_WEBCALLING_LINE_MSG,\n METHODS,\n} from './constants';\n\n/**\n * WebCallingService provides WebRTC calling functionality for Contact Center agents.\n * It handles registration, call management, and media operations for voice interactions.\n * @internal\n */\nexport default class WebCallingService extends EventEmitter {\n /**\n * The CallingClient instance that manages WebRTC calling capabilities\n * @private\n */\n private callingClient: ICallingClient;\n\n /**\n * The Line instance that handles registration and incoming calls\n * @private\n */\n private line: ILine;\n\n /**\n * The current active call instance\n * @private\n */\n private call: ICall | undefined;\n\n /**\n * Reference to the WebexSDK instance\n * @private\n */\n private webex: WebexSDK;\n\n /**\n * The login option selected for this session\n * @private\n */\n public loginOption: LoginOption;\n\n /**\n * Map that associates call IDs with task IDs for correlation\n * @private\n */\n private callTaskMap: Map<string, string>;\n\n /**\n * Creates an instance of WebCallingService.\n * @param {WebexSDK} webex - The Webex SDK instance\n */\n constructor(webex: WebexSDK) {\n super();\n this.webex = webex;\n this.callTaskMap = new Map();\n }\n\n /**\n * Sets the login option for the current session\n * @param {LoginOption} loginOption - The login option to use\n * @private\n */\n public setLoginOption(loginOption: LoginOption): void {\n this.loginOption = loginOption;\n }\n\n /**\n * Handles remote media track events from the call\n * @param {MediaStreamTrack} track - The media track received\n * @private\n */\n private handleMediaEvent = (track: MediaStreamTrack): void => {\n this.emit(CALL_EVENT_KEYS.REMOTE_MEDIA, track);\n };\n\n /**\n * Handles disconnect events from the call\n * @private\n */\n private handleDisconnectEvent = (): void => {\n this.call.end();\n this.cleanUpCall();\n };\n\n /**\n * Registers event listeners for the current call\n * @private\n */\n private registerCallListeners(): void {\n // TODO: Add remaining call listeners here\n this.call.on(CALL_EVENT_KEYS.REMOTE_MEDIA, this.handleMediaEvent);\n this.call.on(CALL_EVENT_KEYS.DISCONNECT, this.handleDisconnectEvent);\n }\n\n /**\n * Cleans up resources associated with the current call\n * Removes event listeners and clears the call-task mapping\n * @private\n */\n public cleanUpCall(): void {\n if (this.call) {\n this.call.off(CALL_EVENT_KEYS.REMOTE_MEDIA, this.handleMediaEvent);\n this.call.off(CALL_EVENT_KEYS.DISCONNECT, this.handleDisconnectEvent);\n const callId = this.call.getCallId();\n const taskId = this.getTaskIdForCall(callId);\n\n if (taskId) {\n this.callTaskMap.delete(callId);\n }\n this.call = null;\n }\n }\n\n /**\n * Retrieves the RTMS domain to use for WebRTC connections\n * First tries to get it from the service catalog, then falls back to default\n * @private\n * @returns {Promise<string>} The RTMS domain to use\n */\n private async getRTMSDomain(): Promise<string> {\n await this.webex.internal.services.waitForCatalog(POST_AUTH);\n\n const rtmsURL = this.webex.internal.services.get(WCC_CALLING_RTMS_DOMAIN);\n\n try {\n const url = new URL(rtmsURL);\n\n return url.hostname;\n } catch (error) {\n LoggerProxy.error(\n `Invalid URL from u2c catalogue: ${rtmsURL} so falling back to default domain`,\n {\n module: WEB_CALLING_SERVICE_FILE,\n method: METHODS.GET_RTMS_DOMAIN,\n }\n );\n\n return DEFAULT_RTMS_DOMAIN;\n }\n }\n\n /**\n * Registers the WebCalling line for receiving calls\n * Sets up event listeners for line events and initializes the calling client\n *\n * @private\n * @returns {Promise<void>} A promise that resolves when registration is complete\n * @throws {Error} When registration times out\n */\n public async registerWebCallingLine(): Promise<void> {\n const rtmsDomain = await this.getRTMSDomain(); // get the RTMS domain from the u2c catalogue\n\n const callingClientConfig = {\n logger: {\n level: LOGGER.INFO,\n },\n serviceData: {\n indicator: ServiceIndicator.CONTACT_CENTER,\n domain: rtmsDomain,\n },\n };\n\n this.callingClient = await createClient(this.webex as any, callingClientConfig);\n this.line = Object.values(this.callingClient.getLines())[0];\n\n this.line.on(LINE_EVENTS.UNREGISTERED, () => {\n LoggerProxy.log(`WxCC-SDK: Desktop unregistered successfully`, {\n module: WEB_CALLING_SERVICE_FILE,\n method: METHODS.REGISTER_WEB_CALLING_LINE,\n });\n });\n\n // Start listening for incoming calls\n this.line.on(LINE_EVENTS.INCOMING_CALL, (call: ICall) => {\n this.call = call;\n this.emit(LINE_EVENTS.INCOMING_CALL, call);\n });\n\n return new Promise<void>((resolve, reject) => {\n const timeout = setTimeout(() => {\n reject(new Error('WebCallingService Registration timed out'));\n }, TIMEOUT_DURATION);\n\n this.line.on(LINE_EVENTS.REGISTERED, (deviceInfo: ILine) => {\n clearTimeout(timeout);\n LoggerProxy.log(\n `WxCC-SDK: Desktop registered successfully, mobiusDeviceId: ${deviceInfo.mobiusDeviceId}`,\n {module: WEB_CALLING_SERVICE_FILE, method: METHODS.REGISTER_WEB_CALLING_LINE}\n );\n resolve();\n });\n this.line.register();\n });\n }\n\n /**\n * Deregisters the WebCalling line\n * Cleans up any active calls and deregisters from the calling service\n *\n * @private\n * @returns {Promise<void>} A promise that resolves when deregistration is complete\n */\n public async deregisterWebCallingLine(): Promise<void> {\n LoggerProxy.log(DEREGISTER_WEBCALLING_LINE_MSG, {\n module: WEB_CALLING_SERVICE_FILE,\n method: METHODS.DEREGISTER_WEB_CALLING_LINE,\n });\n this.cleanUpCall();\n this.line?.deregister();\n }\n\n /**\n * Answers an incoming call with the provided audio stream\n *\n * @private\n * @param {LocalMicrophoneStream} localAudioStream - The local microphone stream to use\n * @param {string} taskId - The task ID associated with this call\n * @throws {Error} If answering the call fails\n */\n public answerCall(localAudioStream: LocalMicrophoneStream, taskId: string): void {\n if (this.call) {\n try {\n LoggerProxy.info(`Call answered: ${taskId}`, {\n module: WEB_CALLING_SERVICE_FILE,\n method: METHODS.ANSWER_CALL,\n });\n this.call.answer(localAudioStream);\n this.registerCallListeners();\n } catch (error) {\n LoggerProxy.error(`Failed to answer call for ${taskId}. Error: ${error}`, {\n module: WEB_CALLING_SERVICE_FILE,\n method: METHODS.ANSWER_CALL,\n });\n // Optionally, throw the error to allow the invoker to handle it\n throw error;\n }\n } else {\n LoggerProxy.log(`Cannot answer a non WebRtc Call: ${taskId}`, {\n module: WEB_CALLING_SERVICE_FILE,\n method: METHODS.ANSWER_CALL,\n });\n }\n }\n\n /**\n * Toggles the mute state of the current call\n *\n * @private\n * @param {LocalMicrophoneStream} localAudioStream - The local microphone stream to control\n */\n public muteUnmuteCall(localAudioStream: LocalMicrophoneStream): void {\n if (this.call) {\n LoggerProxy.info('Call mute or unmute requested!', {\n module: WEB_CALLING_SERVICE_FILE,\n method: METHODS.MUTE_UNMUTE_CALL,\n });\n this.call.mute(localAudioStream);\n } else {\n LoggerProxy.log(`Cannot mute a non WebRtc Call`, {\n module: WEB_CALLING_SERVICE_FILE,\n method: METHODS.MUTE_UNMUTE_CALL,\n });\n }\n }\n\n /**\n * Checks if the current call is muted\n *\n * @private\n * @returns {boolean} True if the call is muted, false otherwise or if no call exists\n */\n public isCallMuted(): boolean {\n if (this.call) {\n return this.call.isMuted();\n }\n\n return false;\n }\n\n /**\n * Declines or ends the current call\n *\n * @private\n * @param {string} taskId - The task ID associated with this call\n * @throws {Error} If ending the call fails\n */\n public declineCall(taskId: string): void {\n if (this.call) {\n try {\n LoggerProxy.info(`Call end requested: ${taskId}`, {\n module: WEB_CALLING_SERVICE_FILE,\n method: METHODS.DECLINE_CALL,\n });\n this.call.end();\n this.cleanUpCall();\n } catch (error) {\n LoggerProxy.error(`Failed to end call: ${taskId}. Error: ${error}`, {\n module: WEB_CALLING_SERVICE_FILE,\n method: METHODS.DECLINE_CALL,\n });\n // Optionally, throw the error to allow the invoker to handle it\n throw error;\n }\n } else {\n LoggerProxy.log(`Cannot end a non WebRtc Call: ${taskId}`, {\n module: WEB_CALLING_SERVICE_FILE,\n method: METHODS.DECLINE_CALL,\n });\n }\n }\n\n /**\n * Maps a call ID to a task ID for correlation\n *\n * @private\n * @param {string} callId - The unique call identifier\n * @param {string} taskId - The associated task identifier\n */\n public mapCallToTask(callId: string, taskId: string): void {\n this.callTaskMap.set(callId, taskId);\n }\n\n /**\n * Gets the task ID associated with a call ID\n *\n * @private\n * @param {string} callId - The call ID to look up\n * @returns {string|undefined} The associated task ID or undefined if not found\n */\n public getTaskIdForCall(callId: string): string | undefined {\n return this.callTaskMap.get(callId);\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -9,8 +9,7 @@ var _Utils = require("../core/Utils");
9
9
  var _types = require("../../types");
10
10
  var _constants = require("../constants");
11
11
  var _types2 = require("../config/types");
12
- function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
13
- function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
12
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
14
13
  /**
15
14
  * Agent Service provides methods to manage agent states and operations
16
15
  * @param routing - AqmReqs instance for making API requests
@@ -1 +1 @@
1
- {"version":3,"names":["Err","_interopRequireWildcard","require","_Utils","_types","_constants","_types2","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","routingAgent","routing","reload","reqEmpty","host","WCC_API_GATEWAY","url","data","err","notifSuccess","bind","type","CC_EVENTS","AGENT_RELOGIN_SUCCESS","msg","notifFail","AGENT_RELOGIN_FAILED","errId","logout","req","p","AGENT_LOGOUT","AGENT_LOGOUT_SUCCESS","AGENT_LOGOUT_FAILED","stationLogin","Details","status","response","errorType","trackingId","headers","trackingid","split","AGENT_STATION_LOGIN","AGENT_STATION_LOGIN_SUCCESS","AGENT_STATION_LOGIN_FAILED","stateChange","method","HTTP_METHODS","PUT","AGENT_STATE_CHANGE","AGENT_STATE_CHANGE_SUCCESS","AGENT_STATE_CHANGE_FAILED","buddyAgents","POST","AGENT_BUDDY_AGENTS","AGENT_BUDDY_AGENTS_SUCCESS","AGENT_BUDDY_AGENTS_RETRIEVE_FAILED"],"sources":["index.ts"],"sourcesContent":["import * as Err from '../core/Err';\nimport {createErrDetailsObject as err} from '../core/Utils';\nimport * as Agent from './types';\nimport AqmReqs from '../core/aqm-reqs';\nimport {HTTP_METHODS} from '../../types';\nimport {WCC_API_GATEWAY} from '../constants';\nimport {CC_EVENTS} from '../config/types';\n\n/**\n * Agent Service provides methods to manage agent states and operations\n * @param routing - AqmReqs instance for making API requests\n * @ignore\n */\nexport default function routingAgent(routing: AqmReqs) {\n return {\n /**\n * Reloads the agent session\n * @public\n */\n reload: routing.reqEmpty(() => ({\n host: WCC_API_GATEWAY,\n url: '/v1/agents/reload',\n data: {},\n err,\n notifSuccess: {\n bind: {\n type: CC_EVENTS.AGENT_RELOGIN_SUCCESS,\n data: {type: CC_EVENTS.AGENT_RELOGIN_SUCCESS},\n },\n msg: {} as Agent.ReloginSuccess,\n },\n notifFail: {\n bind: {\n type: CC_EVENTS.AGENT_RELOGIN_FAILED,\n data: {type: CC_EVENTS.AGENT_RELOGIN_FAILED},\n },\n errId: 'Service.aqm.agent.reload',\n },\n })),\n /**\n * Logs out the agent\n * @param p.data - Logout parameters\n * @public\n */\n logout: routing.req((p: {data: Agent.Logout}) => ({\n url: '/v1/agents/logout',\n host: WCC_API_GATEWAY,\n data: p.data,\n err,\n notifSuccess: {\n bind: {\n type: CC_EVENTS.AGENT_LOGOUT,\n data: {type: CC_EVENTS.AGENT_LOGOUT_SUCCESS},\n },\n msg: {} as Agent.LogoutSuccess,\n },\n notifFail: {\n bind: {\n type: CC_EVENTS.AGENT_LOGOUT,\n data: {type: CC_EVENTS.AGENT_LOGOUT_FAILED},\n },\n errId: 'Service.aqm.agent.logout',\n },\n })),\n /**\n * Logs in the agent to a station\n * @param p.data - Station login parameters\n * @public\n */\n stationLogin: routing.req((p: {data: Agent.UserStationLogin}) => ({\n url: '/v1/agents/login',\n host: WCC_API_GATEWAY,\n data: p.data,\n err: /* istanbul ignore next */ (e: any) => {\n return new Err.Details('Service.aqm.agent.stationLogin', {\n status: e.response?.status ?? 0,\n type: e.response?.data?.errorType,\n trackingId: e.response?.headers?.trackingid?.split('_')[1],\n });\n },\n notifSuccess: {\n bind: {\n type: CC_EVENTS.AGENT_STATION_LOGIN,\n data: {type: CC_EVENTS.AGENT_STATION_LOGIN_SUCCESS},\n },\n msg: {} as Agent.StationLoginSuccess,\n },\n notifFail: {\n bind: {\n type: CC_EVENTS.AGENT_STATION_LOGIN,\n data: {type: CC_EVENTS.AGENT_STATION_LOGIN_FAILED},\n },\n errId: 'Service.aqm.agent.stationLoginFailed',\n },\n })),\n /**\n * Changes the agent's state\n * @param p.data - State change parameters\n * @public\n */\n stateChange: routing.req((p: {data: Agent.StateChange}) => ({\n url: '/v1/agents/session/state',\n host: WCC_API_GATEWAY,\n data: p.data,\n err,\n method: HTTP_METHODS.PUT,\n notifSuccess: {\n bind: {\n type: CC_EVENTS.AGENT_STATE_CHANGE,\n data: {type: CC_EVENTS.AGENT_STATE_CHANGE_SUCCESS},\n },\n msg: {} as Agent.StateChangeSuccess,\n },\n notifFail: {\n bind: {\n type: CC_EVENTS.AGENT_STATE_CHANGE,\n data: {type: CC_EVENTS.AGENT_STATE_CHANGE_FAILED},\n },\n errId: 'Service.aqm.agent.stateChange',\n },\n })),\n /**\n * Retrieves list of buddy agents\n * @param p.data - Buddy agent query parameters\n * @public\n */\n buddyAgents: routing.req((p: {data: Agent.BuddyAgents}) => ({\n url: `/v1/agents/buddyList`,\n host: WCC_API_GATEWAY,\n data: {...p.data},\n err,\n method: HTTP_METHODS.POST,\n notifSuccess: {\n bind: {\n type: CC_EVENTS.AGENT_BUDDY_AGENTS,\n data: {type: CC_EVENTS.AGENT_BUDDY_AGENTS_SUCCESS},\n },\n msg: {} as Agent.BuddyAgentsSuccess,\n },\n notifFail: {\n bind: {\n type: CC_EVENTS.AGENT_BUDDY_AGENTS,\n data: {type: CC_EVENTS.AGENT_BUDDY_AGENTS_RETRIEVE_FAILED},\n },\n errId: 'Service.aqm.agent.BuddyAgentsRetrieveFailed',\n },\n })),\n };\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["Err","_interopRequireWildcard","require","_Utils","_types","_constants","_types2","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","routingAgent","routing","reload","reqEmpty","host","WCC_API_GATEWAY","url","data","err","notifSuccess","bind","type","CC_EVENTS","AGENT_RELOGIN_SUCCESS","msg","notifFail","AGENT_RELOGIN_FAILED","errId","logout","req","p","AGENT_LOGOUT","AGENT_LOGOUT_SUCCESS","AGENT_LOGOUT_FAILED","stationLogin","Details","status","response","errorType","trackingId","headers","trackingid","split","AGENT_STATION_LOGIN","AGENT_STATION_LOGIN_SUCCESS","AGENT_STATION_LOGIN_FAILED","stateChange","method","HTTP_METHODS","PUT","AGENT_STATE_CHANGE","AGENT_STATE_CHANGE_SUCCESS","AGENT_STATE_CHANGE_FAILED","buddyAgents","POST","AGENT_BUDDY_AGENTS","AGENT_BUDDY_AGENTS_SUCCESS","AGENT_BUDDY_AGENTS_RETRIEVE_FAILED"],"sources":["index.ts"],"sourcesContent":["import * as Err from '../core/Err';\nimport {createErrDetailsObject as err} from '../core/Utils';\nimport * as Agent from './types';\nimport AqmReqs from '../core/aqm-reqs';\nimport {HTTP_METHODS} from '../../types';\nimport {WCC_API_GATEWAY} from '../constants';\nimport {CC_EVENTS} from '../config/types';\n\n/**\n * Agent Service provides methods to manage agent states and operations\n * @param routing - AqmReqs instance for making API requests\n * @ignore\n */\nexport default function routingAgent(routing: AqmReqs) {\n return {\n /**\n * Reloads the agent session\n * @public\n */\n reload: routing.reqEmpty(() => ({\n host: WCC_API_GATEWAY,\n url: '/v1/agents/reload',\n data: {},\n err,\n notifSuccess: {\n bind: {\n type: CC_EVENTS.AGENT_RELOGIN_SUCCESS,\n data: {type: CC_EVENTS.AGENT_RELOGIN_SUCCESS},\n },\n msg: {} as Agent.ReloginSuccess,\n },\n notifFail: {\n bind: {\n type: CC_EVENTS.AGENT_RELOGIN_FAILED,\n data: {type: CC_EVENTS.AGENT_RELOGIN_FAILED},\n },\n errId: 'Service.aqm.agent.reload',\n },\n })),\n /**\n * Logs out the agent\n * @param p.data - Logout parameters\n * @public\n */\n logout: routing.req((p: {data: Agent.Logout}) => ({\n url: '/v1/agents/logout',\n host: WCC_API_GATEWAY,\n data: p.data,\n err,\n notifSuccess: {\n bind: {\n type: CC_EVENTS.AGENT_LOGOUT,\n data: {type: CC_EVENTS.AGENT_LOGOUT_SUCCESS},\n },\n msg: {} as Agent.LogoutSuccess,\n },\n notifFail: {\n bind: {\n type: CC_EVENTS.AGENT_LOGOUT,\n data: {type: CC_EVENTS.AGENT_LOGOUT_FAILED},\n },\n errId: 'Service.aqm.agent.logout',\n },\n })),\n /**\n * Logs in the agent to a station\n * @param p.data - Station login parameters\n * @public\n */\n stationLogin: routing.req((p: {data: Agent.UserStationLogin}) => ({\n url: '/v1/agents/login',\n host: WCC_API_GATEWAY,\n data: p.data,\n err: /* istanbul ignore next */ (e: any) => {\n return new Err.Details('Service.aqm.agent.stationLogin', {\n status: e.response?.status ?? 0,\n type: e.response?.data?.errorType,\n trackingId: e.response?.headers?.trackingid?.split('_')[1],\n });\n },\n notifSuccess: {\n bind: {\n type: CC_EVENTS.AGENT_STATION_LOGIN,\n data: {type: CC_EVENTS.AGENT_STATION_LOGIN_SUCCESS},\n },\n msg: {} as Agent.StationLoginSuccess,\n },\n notifFail: {\n bind: {\n type: CC_EVENTS.AGENT_STATION_LOGIN,\n data: {type: CC_EVENTS.AGENT_STATION_LOGIN_FAILED},\n },\n errId: 'Service.aqm.agent.stationLoginFailed',\n },\n })),\n /**\n * Changes the agent's state\n * @param p.data - State change parameters\n * @public\n */\n stateChange: routing.req((p: {data: Agent.StateChange}) => ({\n url: '/v1/agents/session/state',\n host: WCC_API_GATEWAY,\n data: p.data,\n err,\n method: HTTP_METHODS.PUT,\n notifSuccess: {\n bind: {\n type: CC_EVENTS.AGENT_STATE_CHANGE,\n data: {type: CC_EVENTS.AGENT_STATE_CHANGE_SUCCESS},\n },\n msg: {} as Agent.StateChangeSuccess,\n },\n notifFail: {\n bind: {\n type: CC_EVENTS.AGENT_STATE_CHANGE,\n data: {type: CC_EVENTS.AGENT_STATE_CHANGE_FAILED},\n },\n errId: 'Service.aqm.agent.stateChange',\n },\n })),\n /**\n * Retrieves list of buddy agents\n * @param p.data - Buddy agent query parameters\n * @public\n */\n buddyAgents: routing.req((p: {data: Agent.BuddyAgents}) => ({\n url: `/v1/agents/buddyList`,\n host: WCC_API_GATEWAY,\n data: {...p.data},\n err,\n method: HTTP_METHODS.POST,\n notifSuccess: {\n bind: {\n type: CC_EVENTS.AGENT_BUDDY_AGENTS,\n data: {type: CC_EVENTS.AGENT_BUDDY_AGENTS_SUCCESS},\n },\n msg: {} as Agent.BuddyAgentsSuccess,\n },\n notifFail: {\n bind: {\n type: CC_EVENTS.AGENT_BUDDY_AGENTS,\n data: {type: CC_EVENTS.AGENT_BUDDY_AGENTS_RETRIEVE_FAILED},\n },\n errId: 'Service.aqm.agent.BuddyAgentsRetrieveFailed',\n },\n })),\n };\n}\n"],"mappings":"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","ignoreList":[]}
@@ -122,15 +122,25 @@ exports.AGENT_EVENTS = void 0;
122
122
  * login status, and other important agent-related activities.
123
123
  */
124
124
  let AGENT_EVENTS = exports.AGENT_EVENTS = /*#__PURE__*/function (AGENT_EVENTS) {
125
+ /** Emitted when an agent's state changes (e.g., Available to Idle) */
125
126
  AGENT_EVENTS["AGENT_STATE_CHANGE"] = "agent:stateChange";
127
+ /** Emitted when multiple logins are detected for the same agent */
126
128
  AGENT_EVENTS["AGENT_MULTI_LOGIN"] = "agent:multiLogin";
129
+ /** Emitted when an agent successfully logs into their station */
127
130
  AGENT_EVENTS["AGENT_STATION_LOGIN_SUCCESS"] = "agent:stationLoginSuccess";
131
+ /** Emitted when station login attempt fails */
128
132
  AGENT_EVENTS["AGENT_STATION_LOGIN_FAILED"] = "agent:stationLoginFailed";
133
+ /** Emitted when an agent successfully logs out */
129
134
  AGENT_EVENTS["AGENT_LOGOUT_SUCCESS"] = "agent:logoutSuccess";
135
+ /** Emitted when logout attempt fails */
130
136
  AGENT_EVENTS["AGENT_LOGOUT_FAILED"] = "agent:logoutFailed";
137
+ /** Emitted when an agent's directory number is successfully registered */
131
138
  AGENT_EVENTS["AGENT_DN_REGISTERED"] = "agent:dnRegistered";
139
+ /** Emitted when an agent successfully re-authenticates */
132
140
  AGENT_EVENTS["AGENT_RELOGIN_SUCCESS"] = "agent:reloginSuccess";
141
+ /** Emitted when agent state change is successful */
133
142
  AGENT_EVENTS["AGENT_STATE_CHANGE_SUCCESS"] = "agent:stateChangeSuccess";
143
+ /** Emitted when agent state change attempt fails */
134
144
  AGENT_EVENTS["AGENT_STATE_CHANGE_FAILED"] = "agent:stateChangeFailed";
135
145
  return AGENT_EVENTS;
136
146
  }({});
@@ -1 +1 @@
1
- {"version":3,"names":["AGENT_EVENTS","exports"],"sources":["types.ts"],"sourcesContent":["import {Msg} from '../core/GlobalTypes';\n\n/**\n * Response type received when an agent successfully logs out from the system\n * @public\n * @remarks\n * This type represents the response message sent by the server when an agent\n * successfully logs out. It includes essential details about the logout action\n * and the agent's final state.\n */\nexport type LogoutSuccess = Msg<{\n /** Message type identifier for agent desktop events */\n eventType: 'AgentDesktopMessage';\n /** Unique identifier of the agent */\n agentId: string;\n /** Tracking ID for the logout request */\n trackingId: string;\n /** Current session ID of the agent */\n agentSessionId: string;\n /** Organization ID the agent belongs to */\n orgId: string;\n /** Current status of the agent (e.g., 'LoggedOut') */\n status: string;\n /** Detailed status information */\n subStatus: string;\n /** Identity of who initiated the logout if not the agent themselves */\n loggedOutBy?: string;\n /** List of roles assigned to the agent */\n roles?: string[];\n /** Type identifier for logout success event */\n type: 'AgentLogoutSuccess';\n}>;\n\n/**\n * Response type received when an agent successfully relogins to the system\n * @public\n * @remarks\n * Represents the response message when an agent successfully re-authenticates.\n * Contains comprehensive information about the agent's new session, including\n * their state, assigned channels, and device information.\n */\nexport type ReloginSuccess = Msg<{\n /** Message type identifier for agent desktop events */\n eventType: 'AgentDesktopMessage';\n /** Unique identifier of the agent */\n agentId: string;\n /** Tracking ID for the relogin request */\n trackingId: string;\n /** Auxiliary code ID for the agent's initial state */\n auxCodeId: string;\n /** ID of the team the agent belongs to */\n teamId: string;\n /** New session ID assigned to the agent */\n agentSessionId: string;\n /** Directory number assigned to the agent */\n dn: string;\n /** Organization ID the agent belongs to */\n orgId: string;\n /** List of active interaction IDs */\n interactionIds: string[];\n /** Indicates if login is via extension */\n isExtension: boolean;\n /** Current login status */\n status: 'LoggedIn';\n /** Current sub-status */\n subStatus: 'Idle';\n /** ID of the site where the agent is located */\n siteId: string;\n /** Timestamp of last idle code change */\n lastIdleCodeChangeTimestamp: number;\n /** Timestamp of last state change */\n lastStateChangeTimestamp: number;\n /** Reason for the last state change */\n lastStateChangeReason?: string;\n /** Type of agent profile */\n profileType: string;\n /** Map of channel types to channel IDs */\n channelsMap: Record<string, string[]>;\n /** Phone number for dialing */\n dialNumber?: string;\n /** List of roles assigned to the agent */\n roles?: string[];\n /** Type of device being used */\n deviceType?: DeviceType;\n /** Unique identifier of the device */\n deviceId?: string | null;\n /** Flag indicating if emergency modal was shown */\n isEmergencyModalAlreadyDisplayed?: boolean;\n /** Type identifier for relogin success event */\n type: 'AgentReloginSuccess';\n}>;\n\n/**\n * Response type received when an agent's state is successfully changed\n * @public\n * @remarks\n * Contains information about the agent's new state, including who initiated\n * the change and timestamps for tracking state transitions.\n */\nexport type StateChangeSuccess = Msg<{\n /** Message type identifier for agent desktop events */\n eventType: 'AgentDesktopMessage';\n /** Unique identifier of the agent */\n agentId: string;\n /** Tracking ID for the state change request */\n trackingId: string;\n /** Auxiliary code ID associated with the new state */\n auxCodeId: string;\n /** Current session ID of the agent */\n agentSessionId: string;\n /** Organization ID the agent belongs to */\n orgId: string;\n /** Current status of the agent */\n status: string;\n /** Detailed status indicating availability */\n subStatus: 'Available' | 'Idle';\n /** Timestamp of last idle code change */\n lastIdleCodeChangeTimestamp: number;\n /** Timestamp of current state change */\n lastStateChangeTimestamp: number;\n /** Type identifier for state change success event */\n type: 'AgentStateChangeSuccess';\n /** Identity of who initiated the state change */\n changedBy: string | null;\n /** ID of the user who initiated the change */\n changedById: string | null;\n /** Name of the user who initiated the change */\n changedByName: string | null;\n /** Reason for the state change */\n lastStateChangeReason: string;\n}>;\n\n/**\n * Response type received when an agent successfully logs into their station\n * @public\n * @remarks\n * Represents the success response when an agent logs into their workstation.\n * Includes details about the agent's initial state, assigned teams, and channels.\n */\nexport type StationLoginSuccess = Msg<{\n /** Message type identifier for agent desktop events */\n eventType: 'AgentDesktopMessage';\n /** Unique identifier of the agent */\n agentId: string;\n /** Tracking ID for the station login request */\n trackingId: string;\n /** Auxiliary code ID for initial state */\n auxCodeId: string;\n /** ID of the team the agent belongs to */\n teamId: string;\n /** New session ID assigned to the agent */\n agentSessionId: string;\n /** Organization ID the agent belongs to */\n orgId: string;\n /** List of active interaction IDs */\n interactionIds: string[];\n /** Current login status */\n status: string;\n /** Current availability status */\n subStatus: 'Available' | 'Idle';\n /** ID of the site where the agent is located */\n siteId: string;\n /** Timestamp of last idle code change */\n lastIdleCodeChangeTimestamp: number;\n /** Timestamp of last state change */\n lastStateChangeTimestamp: number;\n /** Type of agent profile */\n profileType: string;\n /** Map of channel types to channel IDs */\n channelsMap: Record<string, string[]>;\n /** Phone number for dialing */\n dialNumber?: string;\n /** List of roles assigned to the agent */\n roles?: string[];\n /** Session ID of the supervising agent if applicable */\n supervisorSessionId?: string;\n /** Type identifier for station login success event */\n type: 'AgentStationLoginSuccess';\n}>;\n\n/**\n * Extended response type for station login success that includes notification tracking\n * @public\n * @remarks\n * Similar to StationLoginSuccess but includes additional fields for notification\n * tracking and multimedia profile settings.\n */\nexport type StationLoginSuccessResponse = {\n /** Message type identifier for agent desktop events */\n eventType: 'AgentDesktopMessage';\n /** Unique identifier of the agent */\n agentId: string;\n /** Tracking ID for the station login request */\n trackingId: string;\n /** Auxiliary code ID for initial state */\n auxCodeId: string;\n /** ID of the team the agent belongs to */\n teamId: string;\n /** New session ID assigned to the agent */\n agentSessionId: string;\n /** Organization ID the agent belongs to */\n orgId: string;\n /** List of active interaction IDs */\n interactionIds: string[];\n /** Current login status */\n status: string;\n /** Current availability status */\n subStatus: 'Available' | 'Idle';\n /** ID of the site where the agent is located */\n siteId: string;\n /** Timestamp of last idle code change */\n lastIdleCodeChangeTimestamp: number;\n /** Timestamp of last state change */\n lastStateChangeTimestamp: number;\n /** Type of agent profile */\n profileType: string;\n /** Multimedia profile capacity settings */\n mmProfile: {\n /** Maximum concurrent chat capacity */\n chat: number;\n /** Maximum concurrent email capacity */\n email: number;\n /** Maximum concurrent social media capacity */\n social: number;\n /** Maximum concurrent voice call capacity */\n telephony: number;\n };\n /** Phone number for dialing */\n dialNumber?: string;\n /** List of roles assigned to the agent */\n roles?: string[];\n /** Session ID of the supervising agent if applicable */\n supervisorSessionId?: string;\n /** Type identifier for station login success event */\n type: 'AgentStationLoginSuccess';\n /** Tracking ID for notifications */\n notifsTrackingId: string;\n};\n\n/**\n * Extended response type for agent device type update success\n * @public\n * @remarks\n * Represents the response when an agent's device type is successfully updated.\n * Contains all the details of the agent's session and device configuration.\n */\nexport type DeviceTypeUpdateSuccess = Omit<StationLoginSuccessResponse, 'type'> & {\n type: 'AgentDeviceTypeUpdateSuccess';\n};\n/**\n * Parameters required for initiating an agent logout\n * @public\n * @remarks\n * Defines the parameters that can be provided when logging out an agent,\n * including the reason for logout which helps with reporting and auditing.\n */\nexport type Logout = {\n /** Reason for the logout action */\n logoutReason?:\n | 'User requested logout'\n | 'Inactivity Logout'\n | 'User requested agent device change';\n};\n\n/**\n * Represents the possible states an agent can be in\n * @public\n * @remarks\n * Defines the various states an agent can transition between during their session.\n * Common states include 'Available' (ready to handle interactions), 'Idle' (on break\n * or not ready), and 'RONA' (Response on No Answer).\n */\nexport type AgentState = 'Available' | 'Idle' | 'RONA' | string;\n\n/**\n * Parameters required for changing an agent's state\n * @public\n * @remarks\n * Defines the necessary information for transitioning an agent from one state to another.\n */\nexport type StateChange = {\n /** New state to transition the agent to */\n state: AgentState;\n /** Auxiliary code ID associated with the state change */\n auxCodeId: string;\n /** Reason for the state change */\n lastStateChangeReason?: string;\n /** ID of the agent whose state is being changed */\n agentId?: string;\n};\n\n/**\n * Parameters required for agent station login\n * @public\n * @remarks\n * Contains all the necessary information for logging an agent into their workstation,\n * including team assignments, roles, and device configurations.\n */\nexport type UserStationLogin = {\n /** Phone number for dialing */\n dialNumber?: string | null;\n /** Directory number */\n dn?: string | null;\n /** ID of the team the agent belongs to */\n teamId: string | null;\n /** Name of the team */\n teamName: string | null;\n /** List of roles assigned to the agent */\n roles?: Array<string>;\n /** ID of the site where the agent is located */\n siteId: string;\n /** Indicates if agent uses a different DN than their assigned one */\n usesOtherDN: boolean;\n /** ID of the agent's skill profile */\n skillProfileId?: string;\n /** ID of the initial auxiliary state code */\n auxCodeId: string;\n /** Indicates if login is via extension */\n isExtension?: boolean;\n /** Type of device being used */\n deviceType?: DeviceType;\n /** Unique identifier of the device */\n deviceId?: string | null;\n /** Flag indicating if emergency modal was shown */\n isEmergencyModalAlreadyDisplayed?: boolean;\n};\n\n/**\n * Available options for agent login methods\n * @public\n * @remarks\n * Defines the supported methods for agent login:\n * - AGENT_DN: Login using agent's direct number\n * - EXTENSION: Login using extension number\n * - BROWSER: Browser-based login\n */\nexport type LoginOption = 'AGENT_DN' | 'EXTENSION' | 'BROWSER';\n\n/**\n * Type of device used for agent login\n * @public\n * @remarks\n * Represents the type of device being used for login. Can be one of the standard\n * LoginOptions or a custom device type string.\n */\nexport type DeviceType = LoginOption | string;\n\n/**\n * Parameters for retrieving buddy agent information\n * @public\n * @remarks\n * Defines the criteria for fetching information about other agents (buddies)\n * in the system, allowing filtering by profile, media type, and state.\n */\nexport type BuddyAgents = {\n agentProfileId: string;\n mediaType: string;\n /** Filter for agent state eg : Available | Idle */\n state?: string;\n};\n\n/**\n * Detailed information about a buddy agent\n * @public\n * @remarks\n * Contains comprehensive information about a buddy agent including their\n * current state, assignments, and contact information.\n */\nexport type BuddyDetails = {\n agentId: string;\n state: string;\n teamId: string;\n dn: string;\n agentName: string;\n siteId: string;\n};\n\n/**\n * Response type received when successfully retrieving buddy agent information\n * @public\n * @remarks\n * Contains the list of buddy agents and their details returned from a buddy\n * agent lookup request. Used for monitoring team member statuses and availability.\n */\nexport type BuddyAgentsSuccess = Msg<{\n /** Message type identifier for agent desktop events */\n eventType: 'AgentDesktopMessage';\n /** Unique identifier of the requesting agent */\n agentId: string;\n /** Tracking ID for the buddy list request */\n trackingId: string;\n /** Current session ID of the requesting agent */\n agentSessionId: string;\n /** Organization ID the agent belongs to */\n orgId: string;\n /** Type identifier for buddy agents response */\n type: 'BuddyAgents';\n /** List of buddy agents and their details */\n agentList: Array<BuddyDetails>;\n}>;\n\n/**\n * Events emitted by the agent service for various state changes and actions\n * @public\n * @remarks\n * Enumeration of all possible events that can be emitted by the agent service.\n * These events can be used to track and respond to changes in agent state,\n * login status, and other important agent-related activities.\n */\nexport enum AGENT_EVENTS {\n /** Emitted when an agent's state changes (e.g., Available to Idle) */\n AGENT_STATE_CHANGE = 'agent:stateChange',\n\n /** Emitted when multiple logins are detected for the same agent */\n AGENT_MULTI_LOGIN = 'agent:multiLogin',\n\n /** Emitted when an agent successfully logs into their station */\n AGENT_STATION_LOGIN_SUCCESS = 'agent:stationLoginSuccess',\n\n /** Emitted when station login attempt fails */\n AGENT_STATION_LOGIN_FAILED = 'agent:stationLoginFailed',\n\n /** Emitted when an agent successfully logs out */\n AGENT_LOGOUT_SUCCESS = 'agent:logoutSuccess',\n\n /** Emitted when logout attempt fails */\n AGENT_LOGOUT_FAILED = 'agent:logoutFailed',\n\n /** Emitted when an agent's directory number is successfully registered */\n AGENT_DN_REGISTERED = 'agent:dnRegistered',\n\n /** Emitted when an agent successfully re-authenticates */\n AGENT_RELOGIN_SUCCESS = 'agent:reloginSuccess',\n\n /** Emitted when agent state change is successful */\n AGENT_STATE_CHANGE_SUCCESS = 'agent:stateChangeSuccess',\n\n /** Emitted when agent state change attempt fails */\n AGENT_STATE_CHANGE_FAILED = 'agent:stateChangeFailed',\n}\n"],"mappings":";;;;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAwBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAoDA;AACA;AACA;AACA;AACA;AACA;AACA;AAkCA;AACA;AACA;AACA;AACA;AACA;AACA;AA0CA;AACA;AACA;AACA;AACA;AACA;AACA;AAqDA;AACA;AACA;AACA;AACA;AACA;AACA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AASA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AAYA;AACA;AACA;AACA;AACA;AACA;AACA;AA8BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AAQA;AACA;AACA;AACA;AACA;AACA;AACA;AAUA;AACA;AACA;AACA;AACA;AACA;AACA;AAkBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAPA,IAQYA,YAAY,GAAAC,OAAA,CAAAD,YAAA,0BAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAA,OAAZA,YAAY;AAAA"}
1
+ {"version":3,"names":["AGENT_EVENTS","exports"],"sources":["types.ts"],"sourcesContent":["import {Msg} from '../core/GlobalTypes';\n\n/**\n * Response type received when an agent successfully logs out from the system\n * @public\n * @remarks\n * This type represents the response message sent by the server when an agent\n * successfully logs out. It includes essential details about the logout action\n * and the agent's final state.\n */\nexport type LogoutSuccess = Msg<{\n /** Message type identifier for agent desktop events */\n eventType: 'AgentDesktopMessage';\n /** Unique identifier of the agent */\n agentId: string;\n /** Tracking ID for the logout request */\n trackingId: string;\n /** Current session ID of the agent */\n agentSessionId: string;\n /** Organization ID the agent belongs to */\n orgId: string;\n /** Current status of the agent (e.g., 'LoggedOut') */\n status: string;\n /** Detailed status information */\n subStatus: string;\n /** Identity of who initiated the logout if not the agent themselves */\n loggedOutBy?: string;\n /** List of roles assigned to the agent */\n roles?: string[];\n /** Type identifier for logout success event */\n type: 'AgentLogoutSuccess';\n}>;\n\n/**\n * Response type received when an agent successfully relogins to the system\n * @public\n * @remarks\n * Represents the response message when an agent successfully re-authenticates.\n * Contains comprehensive information about the agent's new session, including\n * their state, assigned channels, and device information.\n */\nexport type ReloginSuccess = Msg<{\n /** Message type identifier for agent desktop events */\n eventType: 'AgentDesktopMessage';\n /** Unique identifier of the agent */\n agentId: string;\n /** Tracking ID for the relogin request */\n trackingId: string;\n /** Auxiliary code ID for the agent's initial state */\n auxCodeId: string;\n /** ID of the team the agent belongs to */\n teamId: string;\n /** New session ID assigned to the agent */\n agentSessionId: string;\n /** Directory number assigned to the agent */\n dn: string;\n /** Organization ID the agent belongs to */\n orgId: string;\n /** List of active interaction IDs */\n interactionIds: string[];\n /** Indicates if login is via extension */\n isExtension: boolean;\n /** Current login status */\n status: 'LoggedIn';\n /** Current sub-status */\n subStatus: 'Idle';\n /** ID of the site where the agent is located */\n siteId: string;\n /** Timestamp of last idle code change */\n lastIdleCodeChangeTimestamp: number;\n /** Timestamp of last state change */\n lastStateChangeTimestamp: number;\n /** Reason for the last state change */\n lastStateChangeReason?: string;\n /** Type of agent profile */\n profileType: string;\n /** Map of channel types to channel IDs */\n channelsMap: Record<string, string[]>;\n /** Phone number for dialing */\n dialNumber?: string;\n /** List of roles assigned to the agent */\n roles?: string[];\n /** Type of device being used */\n deviceType?: DeviceType;\n /** Unique identifier of the device */\n deviceId?: string | null;\n /** Flag indicating if emergency modal was shown */\n isEmergencyModalAlreadyDisplayed?: boolean;\n /** Type identifier for relogin success event */\n type: 'AgentReloginSuccess';\n}>;\n\n/**\n * Response type received when an agent's state is successfully changed\n * @public\n * @remarks\n * Contains information about the agent's new state, including who initiated\n * the change and timestamps for tracking state transitions.\n */\nexport type StateChangeSuccess = Msg<{\n /** Message type identifier for agent desktop events */\n eventType: 'AgentDesktopMessage';\n /** Unique identifier of the agent */\n agentId: string;\n /** Tracking ID for the state change request */\n trackingId: string;\n /** Auxiliary code ID associated with the new state */\n auxCodeId: string;\n /** Current session ID of the agent */\n agentSessionId: string;\n /** Organization ID the agent belongs to */\n orgId: string;\n /** Current status of the agent */\n status: string;\n /** Detailed status indicating availability */\n subStatus: 'Available' | 'Idle';\n /** Timestamp of last idle code change */\n lastIdleCodeChangeTimestamp: number;\n /** Timestamp of current state change */\n lastStateChangeTimestamp: number;\n /** Type identifier for state change success event */\n type: 'AgentStateChangeSuccess';\n /** Identity of who initiated the state change */\n changedBy: string | null;\n /** ID of the user who initiated the change */\n changedById: string | null;\n /** Name of the user who initiated the change */\n changedByName: string | null;\n /** Reason for the state change */\n lastStateChangeReason: string;\n}>;\n\n/**\n * Response type received when an agent successfully logs into their station\n * @public\n * @remarks\n * Represents the success response when an agent logs into their workstation.\n * Includes details about the agent's initial state, assigned teams, and channels.\n */\nexport type StationLoginSuccess = Msg<{\n /** Message type identifier for agent desktop events */\n eventType: 'AgentDesktopMessage';\n /** Unique identifier of the agent */\n agentId: string;\n /** Tracking ID for the station login request */\n trackingId: string;\n /** Auxiliary code ID for initial state */\n auxCodeId: string;\n /** ID of the team the agent belongs to */\n teamId: string;\n /** New session ID assigned to the agent */\n agentSessionId: string;\n /** Organization ID the agent belongs to */\n orgId: string;\n /** List of active interaction IDs */\n interactionIds: string[];\n /** Current login status */\n status: string;\n /** Current availability status */\n subStatus: 'Available' | 'Idle';\n /** ID of the site where the agent is located */\n siteId: string;\n /** Timestamp of last idle code change */\n lastIdleCodeChangeTimestamp: number;\n /** Timestamp of last state change */\n lastStateChangeTimestamp: number;\n /** Type of agent profile */\n profileType: string;\n /** Map of channel types to channel IDs */\n channelsMap: Record<string, string[]>;\n /** Phone number for dialing */\n dialNumber?: string;\n /** List of roles assigned to the agent */\n roles?: string[];\n /** Session ID of the supervising agent if applicable */\n supervisorSessionId?: string;\n /** Type identifier for station login success event */\n type: 'AgentStationLoginSuccess';\n}>;\n\n/**\n * Extended response type for station login success that includes notification tracking\n * @public\n * @remarks\n * Similar to StationLoginSuccess but includes additional fields for notification\n * tracking and multimedia profile settings.\n */\nexport type StationLoginSuccessResponse = {\n /** Message type identifier for agent desktop events */\n eventType: 'AgentDesktopMessage';\n /** Unique identifier of the agent */\n agentId: string;\n /** Tracking ID for the station login request */\n trackingId: string;\n /** Auxiliary code ID for initial state */\n auxCodeId: string;\n /** ID of the team the agent belongs to */\n teamId: string;\n /** New session ID assigned to the agent */\n agentSessionId: string;\n /** Organization ID the agent belongs to */\n orgId: string;\n /** List of active interaction IDs */\n interactionIds: string[];\n /** Current login status */\n status: string;\n /** Current availability status */\n subStatus: 'Available' | 'Idle';\n /** ID of the site where the agent is located */\n siteId: string;\n /** Timestamp of last idle code change */\n lastIdleCodeChangeTimestamp: number;\n /** Timestamp of last state change */\n lastStateChangeTimestamp: number;\n /** Type of agent profile */\n profileType: string;\n /** Multimedia profile capacity settings */\n mmProfile: {\n /** Maximum concurrent chat capacity */\n chat: number;\n /** Maximum concurrent email capacity */\n email: number;\n /** Maximum concurrent social media capacity */\n social: number;\n /** Maximum concurrent voice call capacity */\n telephony: number;\n };\n /** Phone number for dialing */\n dialNumber?: string;\n /** List of roles assigned to the agent */\n roles?: string[];\n /** Session ID of the supervising agent if applicable */\n supervisorSessionId?: string;\n /** Type identifier for station login success event */\n type: 'AgentStationLoginSuccess';\n /** Tracking ID for notifications */\n notifsTrackingId: string;\n};\n\n/**\n * Extended response type for agent device type update success\n * @public\n * @remarks\n * Represents the response when an agent's device type is successfully updated.\n * Contains all the details of the agent's session and device configuration.\n */\nexport type DeviceTypeUpdateSuccess = Omit<StationLoginSuccessResponse, 'type'> & {\n type: 'AgentDeviceTypeUpdateSuccess';\n};\n/**\n * Parameters required for initiating an agent logout\n * @public\n * @remarks\n * Defines the parameters that can be provided when logging out an agent,\n * including the reason for logout which helps with reporting and auditing.\n */\nexport type Logout = {\n /** Reason for the logout action */\n logoutReason?:\n | 'User requested logout'\n | 'Inactivity Logout'\n | 'User requested agent device change';\n};\n\n/**\n * Represents the possible states an agent can be in\n * @public\n * @remarks\n * Defines the various states an agent can transition between during their session.\n * Common states include 'Available' (ready to handle interactions), 'Idle' (on break\n * or not ready), and 'RONA' (Response on No Answer).\n */\nexport type AgentState = 'Available' | 'Idle' | 'RONA' | string;\n\n/**\n * Parameters required for changing an agent's state\n * @public\n * @remarks\n * Defines the necessary information for transitioning an agent from one state to another.\n */\nexport type StateChange = {\n /** New state to transition the agent to */\n state: AgentState;\n /** Auxiliary code ID associated with the state change */\n auxCodeId: string;\n /** Reason for the state change */\n lastStateChangeReason?: string;\n /** ID of the agent whose state is being changed */\n agentId?: string;\n};\n\n/**\n * Parameters required for agent station login\n * @public\n * @remarks\n * Contains all the necessary information for logging an agent into their workstation,\n * including team assignments, roles, and device configurations.\n */\nexport type UserStationLogin = {\n /** Phone number for dialing */\n dialNumber?: string | null;\n /** Directory number */\n dn?: string | null;\n /** ID of the team the agent belongs to */\n teamId: string | null;\n /** Name of the team */\n teamName: string | null;\n /** List of roles assigned to the agent */\n roles?: Array<string>;\n /** ID of the site where the agent is located */\n siteId: string;\n /** Indicates if agent uses a different DN than their assigned one */\n usesOtherDN: boolean;\n /** ID of the agent's skill profile */\n skillProfileId?: string;\n /** ID of the initial auxiliary state code */\n auxCodeId: string;\n /** Indicates if login is via extension */\n isExtension?: boolean;\n /** Type of device being used */\n deviceType?: DeviceType;\n /** Unique identifier of the device */\n deviceId?: string | null;\n /** Flag indicating if emergency modal was shown */\n isEmergencyModalAlreadyDisplayed?: boolean;\n};\n\n/**\n * Available options for agent login methods\n * @public\n * @remarks\n * Defines the supported methods for agent login:\n * - AGENT_DN: Login using agent's direct number\n * - EXTENSION: Login using extension number\n * - BROWSER: Browser-based login\n */\nexport type LoginOption = 'AGENT_DN' | 'EXTENSION' | 'BROWSER';\n\n/**\n * Type of device used for agent login\n * @public\n * @remarks\n * Represents the type of device being used for login. Can be one of the standard\n * LoginOptions or a custom device type string.\n */\nexport type DeviceType = LoginOption | string;\n\n/**\n * Parameters for retrieving buddy agent information\n * @public\n * @remarks\n * Defines the criteria for fetching information about other agents (buddies)\n * in the system, allowing filtering by profile, media type, and state.\n */\nexport type BuddyAgents = {\n agentProfileId: string;\n mediaType: string;\n /** Filter for agent state eg : Available | Idle */\n state?: string;\n};\n\n/**\n * Detailed information about a buddy agent\n * @public\n * @remarks\n * Contains comprehensive information about a buddy agent including their\n * current state, assignments, and contact information.\n */\nexport type BuddyDetails = {\n agentId: string;\n state: string;\n teamId: string;\n dn: string;\n agentName: string;\n siteId: string;\n};\n\n/**\n * Response type received when successfully retrieving buddy agent information\n * @public\n * @remarks\n * Contains the list of buddy agents and their details returned from a buddy\n * agent lookup request. Used for monitoring team member statuses and availability.\n */\nexport type BuddyAgentsSuccess = Msg<{\n /** Message type identifier for agent desktop events */\n eventType: 'AgentDesktopMessage';\n /** Unique identifier of the requesting agent */\n agentId: string;\n /** Tracking ID for the buddy list request */\n trackingId: string;\n /** Current session ID of the requesting agent */\n agentSessionId: string;\n /** Organization ID the agent belongs to */\n orgId: string;\n /** Type identifier for buddy agents response */\n type: 'BuddyAgents';\n /** List of buddy agents and their details */\n agentList: Array<BuddyDetails>;\n}>;\n\n/**\n * Events emitted by the agent service for various state changes and actions\n * @public\n * @remarks\n * Enumeration of all possible events that can be emitted by the agent service.\n * These events can be used to track and respond to changes in agent state,\n * login status, and other important agent-related activities.\n */\nexport enum AGENT_EVENTS {\n /** Emitted when an agent's state changes (e.g., Available to Idle) */\n AGENT_STATE_CHANGE = 'agent:stateChange',\n\n /** Emitted when multiple logins are detected for the same agent */\n AGENT_MULTI_LOGIN = 'agent:multiLogin',\n\n /** Emitted when an agent successfully logs into their station */\n AGENT_STATION_LOGIN_SUCCESS = 'agent:stationLoginSuccess',\n\n /** Emitted when station login attempt fails */\n AGENT_STATION_LOGIN_FAILED = 'agent:stationLoginFailed',\n\n /** Emitted when an agent successfully logs out */\n AGENT_LOGOUT_SUCCESS = 'agent:logoutSuccess',\n\n /** Emitted when logout attempt fails */\n AGENT_LOGOUT_FAILED = 'agent:logoutFailed',\n\n /** Emitted when an agent's directory number is successfully registered */\n AGENT_DN_REGISTERED = 'agent:dnRegistered',\n\n /** Emitted when an agent successfully re-authenticates */\n AGENT_RELOGIN_SUCCESS = 'agent:reloginSuccess',\n\n /** Emitted when agent state change is successful */\n AGENT_STATE_CHANGE_SUCCESS = 'agent:stateChangeSuccess',\n\n /** Emitted when agent state change attempt fails */\n AGENT_STATE_CHANGE_FAILED = 'agent:stateChangeFailed',\n}\n"],"mappings":";;;;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAwBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAoDA;AACA;AACA;AACA;AACA;AACA;AACA;AAkCA;AACA;AACA;AACA;AACA;AACA;AACA;AA0CA;AACA;AACA;AACA;AACA;AACA;AACA;AAqDA;AACA;AACA;AACA;AACA;AACA;AACA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AASA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AAYA;AACA;AACA;AACA;AACA;AACA;AACA;AA8BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AAQA;AACA;AACA;AACA;AACA;AACA;AACA;AAUA;AACA;AACA;AACA;AACA;AACA;AACA;AAkBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAPA,IAQYA,YAAY,GAAAC,OAAA,CAAAD,YAAA,0BAAZA,YAAY;EACtB;EADUA,YAAY;EAItB;EAJUA,YAAY;EAOtB;EAPUA,YAAY;EAUtB;EAVUA,YAAY;EAatB;EAbUA,YAAY;EAgBtB;EAhBUA,YAAY;EAmBtB;EAnBUA,YAAY;EAsBtB;EAtBUA,YAAY;EAyBtB;EAzBUA,YAAY;EA4BtB;EA5BUA,YAAY;EAAA,OAAZA,YAAY;AAAA","ignoreList":[]}