{"_id":"@avaya/infinity-omni-sdk-core","_rev":"18-c1598f3585e6ab91f60429dcb9e79278","name":"@avaya/infinity-omni-sdk-core","dist-tags":{"latest":"1.0.5"},"versions":{"0.0.1":{"name":"@avaya/infinity-omni-sdk-core","version":"0.0.1","license":"SEE LICENSE IN LICENSE.txt","_id":"@avaya/infinity-omni-sdk-core@0.0.1","maintainers":[{"name":"mrazian","email":"mrazian@avaya.com"},{"name":"cpaas.devops","email":"cpaasops@avaya.com"},{"name":"bvazmer","email":"bvazmer@avaya.com"},{"name":"amarasescu","email":"amarasescu@avaya.com"},{"name":"digitalpipeline","email":"bvishwakarma@avaya.com"},{"name":"kahagerman","email":"kahagerman@avaya.com"},{"name":"axp-sdk-automation","email":"axp-sdk-automation@avaya.com"},{"name":"raziandev","email":"raziandev@gmail.com"},{"name":"kwineman","email":"keatonwineman@gmail.com"}],"dist":{"shasum":"8570eff3fe35a0a680e58919c07b15a572475959","tarball":"https://registry.npmjs.org/@avaya/infinity-omni-sdk-core/-/infinity-omni-sdk-core-0.0.1.tgz","fileCount":5,"integrity":"sha512-TpjVMVZbuLpUiVSf+PrEzwOb98YYO6mfZAiE0tJWowP77QNZLhJJ3q/gCXTyIoUFvfCweZaIN8f1W23NT2MMXg==","signatures":[{"sig":"MEUCIQCgN0pMBl8BkMeB4CXqiRs+WhE9QeUf5CbTLFoU4QsuGgIgf1uReCq/8hStyaoKRhdHgAy4gSXxsyzE5toFEfsJHNI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":133771},"type":"module","_from":"file:avaya-infinity-omni-sdk-core-0.0.1.tgz","exports":{".":{"types":"./lib/avaya-infinity-omni-sdk-core-types.d.ts","import":"./lib/avaya-infinity-omni-sdk-core.js"}},"_npmUser":{"name":"raziandev","email":"raziandev@gmail.com"},"_resolved":"/Users/saumabhapal/saumabha/git-repos/web-release-artifact-0.0.1/tarballs/avaya-infinity-omni-sdk-core-0.0.1.tgz","_integrity":"sha512-TpjVMVZbuLpUiVSf+PrEzwOb98YYO6mfZAiE0tJWowP77QNZLhJJ3q/gCXTyIoUFvfCweZaIN8f1W23NT2MMXg==","_npmVersion":"10.9.2","description":"Common and core functionality of Avaya Infinity™ Omni SDKs, this is required by other packages.","directories":{},"_nodeVersion":"22.16.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/infinity-omni-sdk-core_0.0.1_1750084039651_0.036370997726064225","host":"s3://npm-registry-packages-npm-production"}},"1.0.0":{"name":"@avaya/infinity-omni-sdk-core","version":"1.0.0","license":"SEE LICENSE IN LICENSE.txt","_id":"@avaya/infinity-omni-sdk-core@1.0.0","maintainers":[{"name":"mrazian","email":"mrazian@avaya.com"},{"name":"cpaas.devops","email":"cpaasops@avaya.com"},{"name":"bvazmer","email":"bvazmer@avaya.com"},{"name":"amarasescu","email":"amarasescu@avaya.com"},{"name":"digitalpipeline","email":"bvishwakarma@avaya.com"},{"name":"kahagerman","email":"kahagerman@avaya.com"},{"name":"axp-sdk-automation","email":"axp-sdk-automation@avaya.com"},{"name":"raziandev","email":"raziandev@gmail.com"},{"name":"kwineman","email":"keatonwineman@gmail.com"},{"name":"saumabhapal","email":"saumabhapal@avaya.com"},{"name":"mahajana","email":"mahajana@avaya.com"}],"dist":{"shasum":"b81b0bc70630e58f8a2ea6c1b5c34f60e9c98350","tarball":"https://registry.npmjs.org/@avaya/infinity-omni-sdk-core/-/infinity-omni-sdk-core-1.0.0.tgz","fileCount":5,"integrity":"sha512-F0r2m6Gv9FMwke+h6ziN+oyLIiF1piN1TCDc9aEobQFXnSibNbucTIZmdRrywbe1FOXf1LCdbnfEaODFpTmN2g==","signatures":[{"sig":"MEUCIHHhf5BcPBswCJfZPLQITBq0OzKD1Jh0DJ9mN9fU1+zCAiEAqtrkWv2Yrd+wCfaeSh5qcm1rp7zpk3fl20qrC5aG1JU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":134066},"type":"module","_from":"file:avaya-infinity-omni-sdk-core-1.0.0.tgz","exports":{".":{"types":"./lib/avaya-infinity-omni-sdk-core-types.d.ts","import":"./lib/avaya-infinity-omni-sdk-core.js"}},"_npmUser":{"name":"raziandev","actor":{"name":"raziandev","type":"user","email":"raziandev@gmail.com"},"email":"raziandev@gmail.com"},"_resolved":"/Users/saumabhapal/saumabha/git-repos/web-release-artifact-1.0.0/tarballs/avaya-infinity-omni-sdk-core-1.0.0.tgz","_integrity":"sha512-F0r2m6Gv9FMwke+h6ziN+oyLIiF1piN1TCDc9aEobQFXnSibNbucTIZmdRrywbe1FOXf1LCdbnfEaODFpTmN2g==","_npmVersion":"10.9.2","description":"The Omni SDK Core module provides a set of basic functionalities to initialize, shutdown the SDK, and create and end conversation for the end user.","directories":{},"_nodeVersion":"22.16.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/infinity-omni-sdk-core_1.0.0_1750767530002_0.2963634369288677","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@avaya/infinity-omni-sdk-core","version":"1.0.1","license":"SEE LICENSE IN LICENSE.txt","_id":"@avaya/infinity-omni-sdk-core@1.0.1","maintainers":[{"name":"mrazian","email":"mrazian@avaya.com"},{"name":"cpaas.devops","email":"cpaasops@avaya.com"},{"name":"bvazmer","email":"bvazmer@avaya.com"},{"name":"amarasescu","email":"amarasescu@avaya.com"},{"name":"digitalpipeline","email":"bvishwakarma@avaya.com"},{"name":"kahagerman","email":"kahagerman@avaya.com"},{"name":"axp-sdk-automation","email":"axp-sdk-automation@avaya.com"},{"name":"raziandev","email":"raziandev@gmail.com"},{"name":"kwineman","email":"keatonwineman@gmail.com"},{"name":"saumabhapal","email":"saumabhapal@avaya.com"},{"name":"mahajana","email":"mahajana@avaya.com"}],"dist":{"shasum":"11c70a3d9f60d4f7be9bca124f8a821a65652930","tarball":"https://registry.npmjs.org/@avaya/infinity-omni-sdk-core/-/infinity-omni-sdk-core-1.0.1.tgz","fileCount":5,"integrity":"sha512-jQSiOhYmjvOkcU/WAWKcDmaHyvW0YFJcdqdC9jsjMrsIp/NK0Y1jgCTtk+vtcVu7rZzuRxhwTXkP1VxD2alwiQ==","signatures":[{"sig":"MEQCIAQ3okpUO1J31saTn3CIuON/ddaQfeGyC5qiphcsPZpFAiAHXyGSWUEJatzbQEVi91zvQAwhLacCzVDGTcwLy2BOCQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":134001},"type":"module","_from":"file:avaya-infinity-omni-sdk-core-1.0.1.tgz","exports":{".":{"types":"./lib/avaya-infinity-omni-sdk-core-types.d.ts","import":"./lib/avaya-infinity-omni-sdk-core.js"}},"_npmUser":{"name":"mahajana","email":"mahajana@avaya.com"},"_resolved":"/Users/mahajana/Work_Directory/omni-sdk-releases/1.0.1/tarballs/avaya-infinity-omni-sdk-core-1.0.1.tgz","_integrity":"sha512-jQSiOhYmjvOkcU/WAWKcDmaHyvW0YFJcdqdC9jsjMrsIp/NK0Y1jgCTtk+vtcVu7rZzuRxhwTXkP1VxD2alwiQ==","_npmVersion":"10.9.2","description":"Common and core functionality of Avaya Infinity™ Omni SDKs, this is required by other packages.","directories":{},"_nodeVersion":"22.14.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/infinity-omni-sdk-core_1.0.1_1763469893154_0.9054064591032183","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@avaya/infinity-omni-sdk-core","version":"1.0.2","license":"SEE LICENSE IN LICENSE.txt","_id":"@avaya/infinity-omni-sdk-core@1.0.2","maintainers":[{"name":"mrazian","email":"mrazian@avaya.com"},{"name":"cpaas.devops","email":"cpaasops@avaya.com"},{"name":"bvazmer","email":"bvazmer@avaya.com"},{"name":"amarasescu","email":"amarasescu@avaya.com"},{"name":"digitalpipeline","email":"bvishwakarma@avaya.com"},{"name":"kahagerman","email":"kahagerman@avaya.com"},{"name":"axp-sdk-automation","email":"axp-sdk-automation@avaya.com"},{"name":"raziandev","email":"raziandev@gmail.com"},{"name":"skabbinahitt","email":"skabbinahitt@avaya.com"},{"name":"saumabhapal","email":"saumabhapal@avaya.com"},{"name":"mahajana","email":"mahajana@avaya.com"}],"dist":{"shasum":"55356596839dcbf4ab26266e3af0c854c003300a","tarball":"https://registry.npmjs.org/@avaya/infinity-omni-sdk-core/-/infinity-omni-sdk-core-1.0.2.tgz","fileCount":5,"integrity":"sha512-nUntbp1aTuE8m/yDsLQs1RBnKbv10ecaO2lCRN5xpssy7e4md1SE03esRutWhpOGgoXCoI8Pz/v+OWixe8sp5A==","signatures":[{"sig":"MEUCIAqsuus/MQUAT0FpB/XBqThgBIljRahxahiGt1fzZUB+AiEAqOjIONDH3OKzhtJr0T7liaZOkin61eobPa9xD3Plpmg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":134001},"type":"module","_from":"file:avaya-infinity-omni-sdk-core-1.0.2.tgz","exports":{".":{"types":"./lib/avaya-infinity-omni-sdk-core-types.d.ts","import":"./lib/avaya-infinity-omni-sdk-core.js"}},"_npmUser":{"name":"skabbinahitt","email":"skabbinahitt@avaya.com"},"_resolved":"/Users/skabbinahitt/Documents/projectRepos/omni-sdk/web/build-tmp/core/avaya-infinity-omni-sdk-core-1.0.2.tgz","_integrity":"sha512-nUntbp1aTuE8m/yDsLQs1RBnKbv10ecaO2lCRN5xpssy7e4md1SE03esRutWhpOGgoXCoI8Pz/v+OWixe8sp5A==","_npmVersion":"10.9.2","description":"Common and core functionality of Avaya Infinity™ Omni SDKs, this is required by other packages.","directories":{},"_nodeVersion":"22.16.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/infinity-omni-sdk-core_1.0.2_1765541412570_0.7450578172821869","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"@avaya/infinity-omni-sdk-core","version":"1.0.3","license":"SEE LICENSE IN LICENSE.txt","_id":"@avaya/infinity-omni-sdk-core@1.0.3","maintainers":[{"name":"mrazian","email":"mrazian@avaya.com"},{"name":"cpaas.devops","email":"cpaasops@avaya.com"},{"name":"bvazmer","email":"bvazmer@avaya.com"},{"name":"gaffara","email":"gaffara@avaya.com"},{"name":"amarasescu","email":"amarasescu@avaya.com"},{"name":"digitalpipeline","email":"bvishwakarma@avaya.com"},{"name":"kahagerman","email":"kahagerman@avaya.com"},{"name":"axp-sdk-automation","email":"axp-sdk-automation@avaya.com"},{"name":"raziandev","email":"raziandev@gmail.com"},{"name":"ptognini77","email":"ptognini@avaya.com"},{"name":"kamau3","email":"kamau3@avaya.com"},{"name":"lcramlet-avaya","email":"lancecramlet@avaya.com"},{"name":"jmiddd","email":"jmidd@avaya.com"},{"name":"ggoulet_avaya","email":"ggoulet@avaya.com"},{"name":"shulkdog","email":"peter.c.schuelke@gmail.com"},{"name":"skabbinahitt","email":"skabbinahitt@avaya.com"},{"name":"saumabhapal","email":"saumabhapal@avaya.com"},{"name":"mahajana","email":"mahajana@avaya.com"}],"dist":{"shasum":"1ac178be4e583f9fbf955e4f67269bae6819475b","tarball":"https://registry.npmjs.org/@avaya/infinity-omni-sdk-core/-/infinity-omni-sdk-core-1.0.3.tgz","fileCount":5,"integrity":"sha512-5D/DL8ob3FRiNYJVtba2/j8hFvwRmEdD3UHe5IodQfsrHMh6CsgsoJ68HDGUmzeoV3It1BQYKarDiSDIJHB2ug==","signatures":[{"sig":"MEUCID50+tTPDeoRW93EFpM6N6ADuhidjEph7l3sT6rhxA84AiEA/D3uu4vtUv3W6GQ5QuZWsV/lFA2G/Uw9ExclshpLQwY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":134001},"type":"module","_from":"file:avaya-infinity-omni-sdk-core-1.0.3.tgz","exports":{".":{"types":"./lib/avaya-infinity-omni-sdk-core-types.d.ts","import":"./lib/avaya-infinity-omni-sdk-core.js"}},"_npmUser":{"name":"skabbinahitt","email":"skabbinahitt@avaya.com"},"_resolved":"/Users/skabbinahitt/Documents/projectRepos/omni-sdk/web/build-tmp/avaya-infinity-omni-sdk-core-1.0.3.tgz","_integrity":"sha512-5D/DL8ob3FRiNYJVtba2/j8hFvwRmEdD3UHe5IodQfsrHMh6CsgsoJ68HDGUmzeoV3It1BQYKarDiSDIJHB2ug==","_npmVersion":"10.9.2","description":"Common and core functionality of Avaya Infinity™ Omni SDKs, this is required by other packages.","directories":{},"_nodeVersion":"22.16.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/infinity-omni-sdk-core_1.0.3_1770896040000_0.22642825588164883","host":"s3://npm-registry-packages-npm-production"}},"1.0.4":{"name":"@avaya/infinity-omni-sdk-core","version":"1.0.4","license":"SEE LICENSE IN LICENSE.txt","_id":"@avaya/infinity-omni-sdk-core@1.0.4","maintainers":[{"name":"mrazian","email":"mrazian@avaya.com"},{"name":"cpaas.devops","email":"cpaasops@avaya.com"},{"name":"bvazmer","email":"bvazmer@avaya.com"},{"name":"gaffara","email":"gaffara@avaya.com"},{"name":"amarasescu","email":"amarasescu@avaya.com"},{"name":"digitalpipeline","email":"bvishwakarma@avaya.com"},{"name":"kahagerman","email":"kahagerman@avaya.com"},{"name":"axp-sdk-automation","email":"axp-sdk-automation@avaya.com"},{"name":"raziandev","email":"raziandev@gmail.com"},{"name":"ptognini77","email":"ptognini@avaya.com"},{"name":"kamau3","email":"kamau3@avaya.com"},{"name":"lcramlet-avaya","email":"lancecramlet@avaya.com"},{"name":"jmiddd","email":"jmidd@avaya.com"},{"name":"ggoulet_avaya","email":"ggoulet@avaya.com"},{"name":"shulkdog","email":"peter.c.schuelke@gmail.com"},{"name":"skabbinahitt","email":"skabbinahitt@avaya.com"},{"name":"saumabhapal","email":"saumabhapal@avaya.com"},{"name":"mahajana","email":"mahajana@avaya.com"}],"dist":{"shasum":"e0ab770f4e6407a661fccf1cab28c8a085f41bea","tarball":"https://registry.npmjs.org/@avaya/infinity-omni-sdk-core/-/infinity-omni-sdk-core-1.0.4.tgz","fileCount":5,"integrity":"sha512-2SzIvPsz8ihUVS/zdKciYN7zo5YMjuuvKd6XFFqCKd8nkhdfL5XW6P1d2Ap6SEMH1yzdKf2+07IXf3kas+D8rQ==","signatures":[{"sig":"MEYCIQC23pScIe55MICzvjVksHKgjr1E1oWI0E3wqSpnTs7WpwIhAJ4ykcGBfkXV8FLgmjjsvocCBXQ+lRNu/uAQIeQG+0vU","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":133995},"type":"module","_from":"file:avaya-infinity-omni-sdk-core-1.0.4.tgz","exports":{".":{"types":"./lib/avaya-infinity-omni-sdk-core-types.d.ts","import":"./lib/avaya-infinity-omni-sdk-core.js"}},"_npmUser":{"name":"skabbinahitt","email":"skabbinahitt@avaya.com"},"_resolved":"/Users/skabbinahitt/Documents/projectRepos/localLab/omni-sdk/web/build-tmp/avaya-infinity-omni-sdk-core-1.0.4.tgz","_integrity":"sha512-2SzIvPsz8ihUVS/zdKciYN7zo5YMjuuvKd6XFFqCKd8nkhdfL5XW6P1d2Ap6SEMH1yzdKf2+07IXf3kas+D8rQ==","_npmVersion":"10.9.2","description":"Common and core functionality of Avaya Infinity™ Omni SDKs, this is required by other packages.","directories":{},"_nodeVersion":"22.16.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/infinity-omni-sdk-core_1.0.4_1782804991842_0.6462211286461874","host":"s3://npm-registry-packages-npm-production"}},"1.0.5":{"_id":"@avaya/infinity-omni-sdk-core@1.0.5","dist":{"shasum":"108ceaad53a3a91a4370b4ec6a5923b699a0a603","tarball":"https://registry.npmjs.org/@avaya/infinity-omni-sdk-core/-/infinity-omni-sdk-core-1.0.5.tgz","fileCount":5,"integrity":"sha512-rx+besHhOpSHcvk0QPqd768i6cNttyYODszHvyAVX5WysXTEFx6QzxsH7pHmkFIp5mskT/feuPE1YX3e4iq8Fg==","signatures":[{"sig":"MEYCIQDPl5LdiDaUpIotOexH+i2Mz6hInybYmRpLZZpOn5gRxgIhAKX891DSGKW2DAF5rGKnXmElZxIpAdGtx+zyR/wviknM","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDnDBdb3W6XPHka1AokLciqT/QOBrZePTbbVvK4XszmZwIhAOapxKY04bHnI3EpqTO+7j0mA0qKI/KGN/2m26bimL1e"}],"unpackedSize":151685},"name":"@avaya/infinity-omni-sdk-core","type":"module","_from":"file:avaya-infinity-omni-sdk-core-1.0.5.tgz","exports":{".":{"types":"./lib/avaya-infinity-omni-sdk-core-types.d.ts","import":"./lib/avaya-infinity-omni-sdk-core.js"}},"license":"SEE LICENSE IN LICENSE.txt","version":"1.0.5","_npmUser":{"name":"mahajana","email":"mahajana@avaya.com"},"_resolved":"/Users/mahajana/Work_Directory/omni-sdk-releases/1.0.5/tarballs/avaya-infinity-omni-sdk-core-1.0.5.tgz","_integrity":"sha512-rx+besHhOpSHcvk0QPqd768i6cNttyYODszHvyAVX5WysXTEFx6QzxsH7pHmkFIp5mskT/feuPE1YX3e4iq8Fg==","_npmVersion":"11.15.0","description":"Common and core functionality of Avaya Infinity™ Omni SDKs, this is required by other packages.","directories":{},"maintainers":[{"name":"mrazian","email":"mrazian@avaya.com"},{"name":"cpaas.devops","email":"cpaasops@avaya.com"},{"name":"bvazmer","email":"bvazmer@avaya.com"},{"name":"gaffara","email":"gaffara@avaya.com"},{"name":"amarasescu","email":"amarasescu@avaya.com"},{"name":"digitalpipeline","email":"bvishwakarma@avaya.com"},{"name":"kahagerman","email":"kahagerman@avaya.com"},{"name":"axp-sdk-automation","email":"axp-sdk-automation@avaya.com"},{"name":"raziandev","email":"raziandev@gmail.com"},{"name":"ptognini77","email":"ptognini@avaya.com"},{"name":"kamau3","email":"kamau3@avaya.com"},{"name":"lcramlet-avaya","email":"lancecramlet@avaya.com"},{"name":"jmiddd","email":"jmidd@avaya.com"},{"name":"ggoulet_avaya","email":"ggoulet@avaya.com"},{"name":"shulkdog","email":"peter.c.schuelke@gmail.com"},{"name":"skabbinahitt","email":"skabbinahitt@avaya.com"},{"name":"saumabhapal","email":"saumabhapal@avaya.com"},{"name":"mahajana","email":"mahajana@avaya.com"}],"_nodeVersion":"24.12.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/infinity-omni-sdk-core_1.0.5_1790794486388_0.3597389162729081"}}},"time":{"created":"2025-06-16T14:27:19.592Z","modified":"2026-09-30T18:54:46.653Z","0.0.1":"2025-06-16T14:27:19.856Z","1.0.0":"2025-06-24T12:18:50.228Z","1.0.1":"2025-11-18T12:44:53.327Z","1.0.2":"2025-12-12T12:10:12.731Z","1.0.3":"2026-02-12T11:34:00.185Z","1.0.4":"2026-06-30T07:36:31.983Z","1.0.5":"2026-09-30T18:54:46.478Z"},"license":"SEE LICENSE IN LICENSE.txt","description":"Common and core functionality of Avaya Infinity™ Omni SDKs, this is required by other packages.","maintainers":[{"name":"mrazian","email":"mrazian@avaya.com"},{"name":"cpaas.devops","email":"cpaasops@avaya.com"},{"name":"bvazmer","email":"bvazmer@avaya.com"},{"name":"gaffara","email":"gaffara@avaya.com"},{"name":"amarasescu","email":"amarasescu@avaya.com"},{"name":"digitalpipeline","email":"bvishwakarma@avaya.com"},{"name":"kahagerman","email":"kahagerman@avaya.com"},{"name":"axp-sdk-automation","email":"axp-sdk-automation@avaya.com"},{"name":"raziandev","email":"raziandev@gmail.com"},{"name":"ptognini77","email":"ptognini@avaya.com"},{"name":"kamau3","email":"kamau3@avaya.com"},{"name":"lcramlet-avaya","email":"lancecramlet@avaya.com"},{"name":"jmiddd","email":"jmidd@avaya.com"},{"name":"ggoulet_avaya","email":"ggoulet@avaya.com"},{"name":"shulkdog","email":"peter.c.schuelke@gmail.com"},{"name":"skabbinahitt","email":"skabbinahitt@avaya.com"},{"name":"saumabhapal","email":"saumabhapal@avaya.com"},{"name":"mahajana","email":"mahajana@avaya.com"}],"readme":"# Omni SDK Core\n\n## Overview\n\nThe Omni SDK Core module provides a set of basic functionalities to initialize, shutdown the SDK, and create and end conversation for the end user. The Omni SDK Core establishes the session with Avaya Infinity™ platform for the end user, manages the session inactivity, and participants involved in the conversation.\n\n## Installation\n\nTo install the Omni SDK Core, run the following command:\n\n```bash\nnpm install --save @avaya/infinity-omni-sdk-core\n```\n\nOmni SDK Core exports a set of types and classes. Out of all the exports, the class `AvayaInfinityOmniSdk` is the origin point of the Omni SDK Core usage flow. It can be imported as follows:\n\n```typescript\nimport { AvayaInfinityOmniSdk } from \"@avaya/infinity-omni-sdk-core\";\n```\n\n## Usage\n\n### Prerequisites\n\nBefore using the Avaya Infinity™ Omni SDK refer to [this section](https://github.com/Avaya-Infinity/omni-sdk-web#next-steps) for a list of prerequisites.\n\n### Using additional functionalities\n\nThe [Conversation](#conversation) of Core module is extended by other modules of Avaya Infinity Omni SDK. This extensibility is achieved using the concept of [Mixins](https://www.typescriptlang.org/docs/handbook/mixins.html).\n\nEach additional functionality exports a mixin which enhances the conversation object with its own set of properties and methods. For example, if you use Omni SDK Messaging module, then the conversation object will have additional properties and methods to send and receive messages.\n\nPlease refer to the documentation of the additional functionality module that you are using to know more about the methods that it adds on the Conversation.\n\nList of currently available additional functionalities:\n\n- [Omni SDK Messaging](https://avaya-infinity.github.io/omni-sdk-web/modules/_avaya_infinity-omni-sdk-messaging.html)\n\n> 📄 NOTE\n>\n> Always use matching versions of all Omni SDK modules to ensure compatibility.\n\n#### How to use the additional functionalities\n\nTo use the additional functionalities, the Client has to install the additional functionality module (refer to the installation instructions of each additional functionality module for more details).\n\nEach additional functionality module exports a mixin function. The base conversation from Omni SDK Core module can be enhanced by applying this mixin. This will come in handy when we add new functionalities in future releases.\n\nExample of adding Omni SDK Messaging functionality to the Core Conversation:\n\n```ts\n// TS/JS\nimport { AvayaInfinityOmniSdk } from '@avaya/infinity-omni-sdk-core';\nimport { MessagingConversation } from '@avaya/infinity-omni-sdk-messaging';\n\nconst EnhancedConversationClass = MessagingConversation();\n\n// All arguments are not shown for brevity, refer to the Initialization section for the complete initialization example.\nconst userSession = await AvayaInfinityOmniSdk.init(..., EnhancedConversationClass);\n```\n\n### Authentication\n\nThe Avaya Infinity Omni SDK uses JSON Web Tokens (JWT) for client authentication and requires a valid JWT to function. The JWT is obtained from your own backend web application that communicates with Avaya Infinity™ platform's authentication API.\n\nThe SDK expects an implementation of the [`JwtProvider`](https://avaya-infinity.github.io/omni-sdk-web/interfaces/_avaya_infinity-omni-sdk-core.JwtProvider.html) interface to be provided during [initialization](#initialization). The implementation of this interface must implement these methods:\n\n1. `onExpiryWarning`: This method is called when the JWT is about to expire. In the argument of this method, the remaining time in milliseconds before the JWT expires is provided.\n2. `onExpiry`: This method is called when the JWT has expired.\n\n**The consumers of SDK should call the `AvayaInfinityOmniSdk.setJwt()` to provide a new JWT to the SDK.**\n\nJWT Provider example (in TypeScript):\n\n```typescript\nimport { JwtProvider } from \"@avaya/infinity-omni-sdk-core\";\n\nclass MyJwtProvider implements JwtProvider {\n  onExpiryWarning(timeToExpiry: number): void {\n    // ...\n  }\n\n  onExpiry(): void {\n    // ...\n  }\n}\n```\n\nJWT Provider example (in JavaScript):\n\n```js\nclass MyJwtProviderJS {\n    onExpiryWarning(timeToExpiry) {\n        // ...\n    }\n\n    onExpiry(): void {\n        // ...\n    }\n}\n```\n\n### Initialization\n\nBefore any operation can be performed with the SDK, it must be initialized. The initialization process creates a new session for the current user (identified by the JWT) and returns a `UserSession` object that contains the Conversation object corresponding to the User's ongoing conversation. For more details see the [Conversation](#conversation) section.\n\nInitialization can be done by calling the static method `init()` on the class `AvayaInfinityOmniSdk`. The `init()` method takes two arguments:\n\n1. `initParams`: An object which has all the initialization parameters and configurations.\n2. `EnhancedConversationClass`: A Conversation class enhanced by applying the [additional functionalities](#using-additional-functionalities) using mixins.\n\nInitialization Example:\n\n```typescript\nimport { AvayaInfinityOmniSdk, LogLevel } from '@avaya/infinity-omni-sdk-core';\nimport { MessagingConversation } from '@avaya/infinity-omni-sdk-messaging';\n\nconst EnhancedConversationClass = MessagingConversation();\n\nconst initParams = {\n    host: '<avaya-infinity-hostname>',\n    integrationId: '<integrationId>',\n    token: '<JWT>',\n    jwtProvider: new MyJwtProvider(),\n    displayName: 'John Doe',\n    logLevel: LogLevel.DEBUG,\n    idleTimeoutDuration: 5 * 60 * 1000, // in milliseconds\n    idleShutdownGraceTimeoutDuration: 1 * 60 * 1000, // in milliseconds\n}\n\nconst userSession = await AvayaInfinityOmniSdk.init(initParams, EnhancedConversationClass);\n```\n\nThe `init()` method returns a `Promise` that resolves to a `UserSession` object. The `UserSession` object contains the conversation object(s) that can be used for further operations.\n\n#### Waiting for initialization to complete\n\nBeing an `async` method, the Client can `await` on the promise returned by the `init()` (as shown in above example) method to wait for the SDK initialization to complete.\n\nAlternatively, the SDK emits an initialized event after the SDK initialization has completed. The Client can listen to these events by providing a listener function to SDK.\n\n> ❕ IMPORTANT\n>\n> In order to receive the initialized event, it is imperative to provide the listener function before calling the `init()` method.\n\n```ts\nAvayaInfinityOmniSdk.addSdkInitializedListener((userSession) => {\n  // userSession object contains the conversation object that can be used for further operations. More details on the conversation object are below.\n\n  console.log(\"SDK Initialized\");\n  // ... your code.\n});\n```\n\n### Conversation\n\nA conversation object represents the conversation of the current user with the Contact Center.\n\nThe Core Conversation contains -\n\n- Method to get the details of the participants involved in the conversation.\n- Method to provide listeners for the participant change events.\n- Method to set the context parameters used for routing.\n- Method to end the conversation.\n- Property `conversationId`.\n- Property to know the current state of the conversation.\n\n> 🗒️ NOTE\n>\n> Based on [additional functionality](#using-additional-functionalities) that is included, the conversation will have additional properties and methods. Check out the documentation of each functionality that has been added to know more about the methods that it adds on to the Conversation.\n\n#### Creating a Conversation\n\nTo create a conversation, invoke the static method `createConversation()` on the `AvayaInfinityOmniSdk` class. It takes 'EnhancedConversationClass' as an optional argument, which is the class that has been enhanced by applying the additional functionalities using mixins. If not provided, the `CoreConversation` class will be used.\n\n```ts\nconst EnhancedConversationClass = MessagingConversation();\nconst conversation = await AvayaInfinityOmniSdk.createConversation(EnhancedConversationClass);\n```\n\n> ❕ IMPORTANT\n>\n> The `createConversation()` method can only be called after the SDK has been initialized.\n> The class provided as an argument to the `createConversation()` method must be the same class that was used when `init()` was called.\n> At a time only one conversation can be created for the current user. If a conversation already exists, the `createConversation()` method will throw an error.\n\n#### Context Parameters\n\nContext parameters are used to provide routing information to the Avaya Infinity™ platform. These parameters are used to route the conversation to the appropriate agent or queue. The context parameters can be set using the `setContextParameters()` method on the conversation object.\n\n```ts\nconversation.setContextParameters({\n    key1: \"value1\",\n    key2: \"value2\",\n    // ...\n});\n```\n\n#### Participants\n\nThe Client can get the list of participants involved in the conversation by using the property `participants` on the conversation object. The `participants` property is an array of `Participant` objects. Each `Participant` object contains that participant's details like id of the participant, their display name, their role and the channel on which they are participating in the conversation.\n\n```ts\nconst participants = conversation.participants;\n```\n\n#### Events\n\nApart from the initialized and shutdown events, the SDK emits a few more events that the consumers can listen to. These events are specific to the Conversation and hence the APIs to listen to these events are provided on the Conversation object.\n\n| Event Name          | Description                                                  | API to provide listener                             |\n| ------------------- | ------------------------------------------------------------ | --------------------------------------------------- |\n| Participant Added   | Emitted when a new participant is added to the conversation. | `conversation.addParticipantAddedListener()`        |\n| Participant Removed | Emitted when a participant is removed from the conversation. | `conversation.addParticipantDisconnectedListener()` |\n\nThe APIs to provide listeners returns a handlerId for that listener. This handleId can be used to remove the listener for that event.\n\n```ts\nconst participantAddedHandlerId = conversation.addParticipantAddedListener((participant) => {\n    console.log(\"Participant Added:\", participant);\n    // ... your code.\n});\n\n// To remove the listener\nconversation.removeParticipantAddedListener(participantAddedHandlerId);\n\n// Similarly for Participant Removed event\n\nconst participantDisconnectedHandlerId = conversation.addParticipantDisconnectedListener((participant) => {\n    console.log(\"Participant Removed:\", participant);\n    // ... your code.\n});\n\n// To remove the listener\nconversation.removeParticipantDisconnectedListener(participantDisconnectedHandlerId);\n```\n\n#### Ending a Conversation\n\nTo end the conversation, call the `end()` method on the conversation object. This will end the conversation for the current user. This method returns a `Promise` that resolves when the conversation has been successfully ended and all the associated channels are closed.\n\n```ts\nawait conversation.end();\n```\n\nAn `ConversationEnded` event is emitted after the conversation has been successfully ended. The consumers can listen to this event by providing a listener function to the conversation object. The same event is also emitted when the conversation is ended by the Contact Center.\n\n```ts\nconversation.addConversationEndedListener((event) => {\n    console.log(\"Conversation with ID:\", event.conversationId, \"Ended\");\n    // ... your cleanup code.\n});\n```\n\n### User Activity\n\nThe SDK provides mechanism to automatically clear up the session if the User's session has not been active for the configured amount of time. The following sections explain what is considered as User Activity along with various timers and events that support this feature.\n\n#### Timeouts\n\nThe Omni SDK Core provides two timeouts to manage the session inactivity:\n\nThe first timer is the idle timer which is started right after the session is created. Any activity from the User or Client (mentioned below) resets this timer. This timer expires when there are no activities for the configured duration. Once this timer expires the SDK will emit the Idle Timeout event and provide the configured grace period duration in the event's payload. The Client can show an appropriate message on the UI, warning the User about inactivity, by handling this event.\n\nThe second timer is idle shutdown grace timer which runs after the idle timer has expired. This timer provides additional grace period for User or the Client to extend the session. After this timer expires, the session is terminated automatically and the SDK will raise the shutdown event and shut itself down (see [shutdown](#shutting-down-the-sdk) section for more details). If the Client wants to continue it must be reinitialize the SDK to do so.\n\nBoth the timeout values can be configured during the initialization by providing their values in the init params object passed as the first argument to the `AvayaInfinityOmniSdk.init()` method.\n\n```ts\nawait AvayaInfinityOmniSdk.init({\n    // Other init params\n    idleTimeoutDuration: 5 * 60 * 1000, // in milliseconds\n    idleShutdownGraceTimeoutDuration: 1 * 60 * 1000, // in milliseconds\n});\n```\n\nThe Idle Timeout event can be listened to by providing a listener for the same.\n\n```ts\nfunction warnUser(message) {\n    // Show warning on UI.\n}\n\nconst handlerId = AvayaInfinityOmniSdk.addIdleTimeOutInvokedListener((eventPayload) => {\n    warnUser(\"You have been inactive for a while. Do you want to continue?\");\n});\n\n// It can be removed by calling the removeIdleTimeoutListener method.\nAvayaInfinityOmniSdk.removeIdleTimeOutInvokedListener(handlerId);\n```\n\n#### Extending the session\n\nThe `AvayaInfinityOmniSdk` provides a method called `resetIdleTimeout()` which can be used to reset the idle timer or the grace timer. This method can be called whenever there is any activity from the User or the Client.\n\nThis method also helps the Client to extend the session in scenarios where the Client is aware that the User is active based on events from its UI.\n\nApart from this method, calling a subset of other methods provided by the Additional Functionalities is also considered as User activities. The list of methods that are considered as User Activity are provided in the documentation of the respective Additional Functionality.\n\nThe `resetIdleTimeout()` method only impacts the timers as opposed to calling methods of Additional Functionalities which also perform the operation that the method is supposed to do.\n\n```js\nfunction showWarningBox(eventPayload) {\n    const continueChatButton = document.getElementById  (\"inactivity-warning-continue-chat\");\n  \n    continueChatButton.onclick = () => {\n      AvayaInfinityOmniSdk.resetIdleTimeout();\n    };\n    // ...\n    setTimeout(hideWarningBox, eventPayload.gracePeriod);\n}\n\nfunction hideWarningBox() {\n    // ...\n}\n```\n\n### Accessing and exporting logs\n\nThe Omni SDK Core module keeps up to the 2,000 most recent SDK log entries in memory. The shared buffer includes logs emitted by Core and other included SDK modules.\n\nSet `logLevel` in the `InitParams` passed to `AvayaInfinityOmniSdk.init()` to configure logging during initialization. If `logLevel` is not set, it defaults to `LogLevel.WARN`. The level can be changed later by calling `AvayaInfinityOmniSdk.setLogLevel(logLevel)`.\n\nUse the `AvayaInfinityOmniSdk.getRawLogs()` to inspect or process a chronological snapshot of the buffered log entries:\n\n```ts\nconst logs = AvayaInfinityOmniSdk.getRawLogs();\n```\n\nUse `exportLogs()` to create a JSON `Blob` containing the buffered entries and export metadata:\n\n```ts\nconst logsBlob = AvayaInfinityOmniSdk.exportLogs();\n```\n\nApplications can use this to implement download logs functionality:\n\n```ts\n// Example for implementing download logs functionality in your App\nconst logsBlob = AvayaInfinityOmniSdk.exportLogs();\nconst downloadUrl = URL.createObjectURL(logsBlob);\nconst link = document.createElement(\"a\");\n\nlink.href = downloadUrl;\nlink.download = \"avaya-infinity-omni-sdk-logs.json\";\ndocument.body.append(link);\nlink.click();\n\nlink.remove();\nURL.revokeObjectURL(downloadUrl);\n```\n\n### Shutting down the SDK\n\nThe current user's session can be terminated by calling the `shutdown()` method of `AvayaInfinityOmniSdk`. This will end the session and cleanup all the corresponding data within the SDK, including the in-memory log buffer. **Irrespective of the success or failure of the termination operation, the SDK cleanup will be performed.**\n\nTo shut down the SDK, call the `shutdown()` method on the `AvayaInfinityOmniSdk` class. The `shutdown()` method returns a `Promise` that resolves when the SDK has been successfully shut down.\n\n```typescript\nawait AvayaInfinityOmniSdk.shutdown();\n```\n\n> ❕ IMPORTANT\n>\n> Once the SDK is shutdown the Conversation object(s) are also removed, hence the Client must re-initialize the SDK incase it wants to start again. However, this doesn't close the conversation of the User. Post re-initialization, the User can continue the conversation from where it was left.\n\nSimilar to the initialization process, the SDK emits a shutdown event after the SDK has been successfully shut down. The consumers can listen to these events by providing a listener function to SDK.\n\n```ts\nAvayaInfinityOmniSdk.addSdkShutdownListener(() => {\n    console.log(\"SDK Shutdown\");\n    // ... your cleanup code.\n});\n```\n\n## Error Handling\n\nEvery error raised by the Omni SDK is an instance of `AvayaInfinityOmniSdkError`, this is a custom error class that extends the built-in `Error` adding a stable `code` and extra information on top of it. You can use the `code` to uniquely identify an error and act upon it as required. The error object contains following information:\n\n| Property   | Type                      | Description                                                                                          |\n| ---------- | ------------------------- | ---------------------------------------------------------------------------------------------------- |\n| `code`     | `string`                  | Stable, machine-readable identifier. This is the part you should branch on.                          |\n| `message`  | `string`                  | Human-readable description, intended for logs. Do not match on this text - it can change.            |\n| `detail`   | `string \\| undefined`     | Narrows down which specific condition produced a shared `code`. Diagnostic only; may change.         |\n| `metadata` | `object \\| undefined`     | Extra context for diagnosis, such as an HTTP status.          |\n| `cause`    | `unknown`                 | The underlying error, when the failure was triggered by another one.                                 |\n\nSince, `AvayaInfinityOmniSdkError` extends the built-in `Error` class, all existing try/catch and instanceof Error checks keep working.\n\n### Reacting to an error\n\nBranch on `code`, comparing against the `CoreErrorCodes` constant rather than a hard-coded string:\n\n```ts\nimport { AvayaInfinityOmniSdk, CoreErrorCodes, isCoreError } from \"@avaya/infinity-omni-sdk-core\";\n\ntry {\n    await AvayaInfinityOmniSdk.createConversation();\n} catch (error) {\n    if (isCoreError(error)) {\n        switch (error.code) {\n            case CoreErrorCodes.MAX_CONVERSATIONS_REACHED:\n                // End the existing conversation before starting a new one.\n                break;\n            case CoreErrorCodes.SESSION_ENDED:\n                // The session is gone - initialize the SDK again.\n                break;\n            default:\n                console.error(error.message, error.metadata);\n        }\n    } else {\n        throw error;\n    }\n}\n```\n\n`isCoreError()` is a type predicate which can be used to narrow the error value to an `AvayaInfinityOmniSdkError` that was raised by the Core module. Use `AvayaInfinityOmniSdkError.is()` instead when you want to accept an error from any Omni SDK module.\n\n### Core error codes\n\nThe exported `CoreErrorCodes` object contains the full set of error codes that the Core module can raise, where each entry is documented with the failure it represents. Every Core module error code is prefixed `OSE_CORE_`, so codes from other packages never collide with them.\n\nErrors that do not originate from the SDK like a network failure, or a bug in your own callback will propagate unchanged rather than being wrapped in an SDK error code.\n","readmeFilename":"README.md"}