{"_id":"@aevoxvoice/web","_rev":"7-b77651743f6884a82fe63cd094c69aa3","name":"@aevoxvoice/web","dist-tags":{"latest":"0.4.0"},"versions":{"0.1.0":{"name":"@aevoxvoice/web","version":"0.1.0","keywords":["aevox","voice","voice-ai","webrtc","web-calls","browser","conversational-ai"],"author":{"name":"AeVox"},"license":"Apache-2.0","_id":"@aevoxvoice/web@0.1.0","maintainers":[{"name":"artificialjay2","email":"jason@cubixai.dev"}],"homepage":"https://aevox.ai","bugs":{"url":"mailto:jason@cubixai.dev"},"dist":{"shasum":"29eb249d34795e24f3dc30ba6503160071a9d5ae","tarball":"https://registry.npmjs.org/@aevoxvoice/web/-/web-0.1.0.tgz","fileCount":8,"integrity":"sha512-gOncPFqdBYu9Ef/juVuPCm9mxSrvzzwl+/CADynlm6EhHGQtrtPAZIMbsTyIO90iBckM+EGF6X+pEFlah3pOZg==","signatures":[{"sig":"MEUCIQCfgpx3/+xXaYbKzin83AcnUM//rn6qAvYkPl0Wna7zgAIgCVZYRxkfd8YE5FsCwRQdaaH++kYcHpDSguXqGbPTgfc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34905},"main":"./dist/index.cjs","type":"module","_from":"file:aevoxvoice-web-0.1.0.tgz","types":"./dist/index.d.mts","module":"./dist/index.mjs","exports":{".":{"import":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}}},"scripts":{"lint":"biome check .","test":"vitest run","build":"tsdown","format":"biome format --write .","test:watch":"vitest","build:check":"tsc --noEmit"},"_npmUser":{"name":"artificialjay2","email":"jason@cubixai.dev"},"_resolved":"/tmp/83346f1d6fa3f598f67cc3f9ac42ef48/aevoxvoice-web-0.1.0.tgz","_integrity":"sha512-gOncPFqdBYu9Ef/juVuPCm9mxSrvzzwl+/CADynlm6EhHGQtrtPAZIMbsTyIO90iBckM+EGF6X+pEFlah3pOZg==","repository":{"url":"git+https://github.com/cubixai/AeVoxSDK.git","type":"git","directory":"packages/web"},"_npmVersion":"10.8.2","description":"Thin browser wrapper for AeVox Web Call sessions — join a call minted by @aevoxvoice/sdk's webSessions.create() without learning our transport SDK.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"livekit-client":"^2.17.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsdown":"^0.21.0","vitest":"^4.1.0","typescript":"^5.7.0","@types/node":"^20.0.0","@biomejs/biome":"^1.9.0","@vitest/coverage-v8":"^4.1.0"},"_npmOperationalInternal":{"tmp":"tmp/web_0.1.0_1784224065143_0.21896745509348214","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@aevoxvoice/web","version":"0.1.1","keywords":["aevox","voice","voice-ai","webrtc","web-calls","browser","conversational-ai"],"author":{"name":"AeVox"},"license":"Apache-2.0","_id":"@aevoxvoice/web@0.1.1","maintainers":[{"name":"artificialjay2","email":"jason@cubixai.dev"}],"homepage":"https://aevox.ai","bugs":{"url":"mailto:jason@cubixai.dev"},"dist":{"shasum":"26adb790d1a54e1e3b1338d9de7195315f9c4a87","tarball":"https://registry.npmjs.org/@aevoxvoice/web/-/web-0.1.1.tgz","fileCount":8,"integrity":"sha512-L8TUWIMxFJNCNVu+HFvUhlY+gUTxtnZlsukjJ8Z87xAQW9dmcRw1CgQ3QXk4Ik/n+DrXN4Cvjr3iVE7CkmG8CA==","signatures":[{"sig":"MEUCIBx/yj8/H0Zo3HBAHjHXM9JVzdwjXShdsJ7p7BFVUEe2AiEA8PsP7aWkb+0LgZooWpIQxjNH6Clrp7tg4qQ/cS8myzA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34911},"main":"./dist/index.cjs","type":"module","_from":"file:aevoxvoice-web-0.1.1.tgz","types":"./dist/index.d.mts","module":"./dist/index.mjs","exports":{".":{"import":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}}},"scripts":{"lint":"biome check .","test":"vitest run","build":"tsdown","format":"biome format --write .","test:watch":"vitest","build:check":"tsc --noEmit"},"_npmUser":{"name":"artificialjay2","email":"jason@cubixai.dev"},"_resolved":"/tmp/26469c579bf028665a630f4fc75cdc6a/aevoxvoice-web-0.1.1.tgz","_integrity":"sha512-L8TUWIMxFJNCNVu+HFvUhlY+gUTxtnZlsukjJ8Z87xAQW9dmcRw1CgQ3QXk4Ik/n+DrXN4Cvjr3iVE7CkmG8CA==","repository":{"url":"git+https://github.com/cubixai/AeVoxSDK.git","type":"git","directory":"packages/web"},"_npmVersion":"10.8.2","description":"Thin browser wrapper for AeVox Web Call sessions — join a call minted by @aevoxvoice/sdk's webSessions.create() without learning our transport SDK.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"livekit-client":"^2.17.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsdown":"^0.21.0","vitest":"^4.1.0","typescript":"^5.7.0","@types/node":"^20.0.0","@biomejs/biome":"^1.9.0","@vitest/coverage-v8":"^4.1.0"},"_npmOperationalInternal":{"tmp":"tmp/web_0.1.1_1786891778764_0.3190362702172227","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@aevoxvoice/web","version":"0.1.2","keywords":["aevox","voice","voice-ai","webrtc","web-calls","browser","conversational-ai"],"author":{"name":"AeVox"},"license":"Apache-2.0","_id":"@aevoxvoice/web@0.1.2","maintainers":[{"name":"artificialjay2","email":"jason@cubixai.dev"}],"homepage":"https://aevox.ai","bugs":{"url":"mailto:support@aevox.ai"},"dist":{"shasum":"b66c605cdd6d0ff2bb7344efcff84e75721dcc68","tarball":"https://registry.npmjs.org/@aevoxvoice/web/-/web-0.1.2.tgz","fileCount":8,"integrity":"sha512-oQaPM97NsbAs2mjfWBqWV2J18o6VUqqNYeI41tLlHeO5geWw0xv7i37azx3RI2sTAX3gwlLlZUa+jFUxow7cGw==","signatures":[{"sig":"MEUCIQClKLjLYgVnfD37P/dmysIW92kfgtylD2YNBVb9Pmrf2wIgM++KvxRO8KZDtXyEVHnu6B2UOgextkaNlPOwn84kvbg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":30535},"main":"./dist/index.cjs","type":"module","_from":"file:aevoxvoice-web-0.1.2.tgz","types":"./dist/index.d.mts","module":"./dist/index.mjs","exports":{".":{"import":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}}},"scripts":{"lint":"biome check .","test":"vitest run","build":"tsdown","format":"biome format --write .","test:watch":"vitest","build:check":"tsc --noEmit"},"_npmUser":{"name":"artificialjay2","email":"jason@cubixai.dev"},"_resolved":"/tmp/d239a46d9d3dda904c7b57a50dbc64d5/aevoxvoice-web-0.1.2.tgz","_integrity":"sha512-oQaPM97NsbAs2mjfWBqWV2J18o6VUqqNYeI41tLlHeO5geWw0xv7i37azx3RI2sTAX3gwlLlZUa+jFUxow7cGw==","repository":{"url":"git+https://github.com/cubixai/AeVoxSDK.git","type":"git","directory":"packages/web"},"_npmVersion":"10.8.2","description":"Thin browser wrapper for AeVox Web Call sessions — join a call minted by @aevoxvoice/sdk's webSessions.create() without learning our transport SDK.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"livekit-client":"^2.17.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsdown":"^0.21.0","vitest":"^4.1.0","typescript":"^5.7.0","@types/node":"^20.0.0","@biomejs/biome":"^1.9.0","@vitest/coverage-v8":"^4.1.0"},"_npmOperationalInternal":{"tmp":"tmp/web_0.1.2_1786896803360_0.9011441342158724","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@aevoxvoice/web","version":"0.1.3","keywords":["aevox","voice","voice-ai","webrtc","web-calls","browser","conversational-ai"],"author":{"name":"AeVox"},"license":"Apache-2.0","_id":"@aevoxvoice/web@0.1.3","maintainers":[{"name":"artificialjay2","email":"jason@cubixai.dev"}],"homepage":"https://aevox.ai","bugs":{"url":"mailto:support@aevox.ai"},"dist":{"shasum":"dbe1c1540a9436c5e3936e86f6b7ff4e28c06e9a","tarball":"https://registry.npmjs.org/@aevoxvoice/web/-/web-0.1.3.tgz","fileCount":8,"integrity":"sha512-fPeeMdEbbGlfLWDGlxePPtmcI5bjegdnzJbaEjoLv4A9E7z2Tzl3+nBl4YpmE+YuCnC/41veNRMnqJMOQ33X5A==","signatures":[{"sig":"MEUCIQD15+aJw0+p0qZSyg60x5QI9Ug2vfLEZCt4KSJurSLnXwIgZ1wiYi/wgAd9wEoIjCGaAcCxC8Tjx28rYhEFMyWffSg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":30487},"main":"./dist/index.cjs","type":"module","_from":"file:aevoxvoice-web-0.1.3.tgz","types":"./dist/index.d.mts","module":"./dist/index.mjs","exports":{".":{"import":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}}},"scripts":{"lint":"biome check .","test":"vitest run","build":"tsdown","format":"biome format --write .","test:watch":"vitest","build:check":"tsc --noEmit"},"_npmUser":{"name":"artificialjay2","email":"jason@cubixai.dev"},"_resolved":"/tmp/bbe77c320fc752cf4c6ee186649865ba/aevoxvoice-web-0.1.3.tgz","_integrity":"sha512-fPeeMdEbbGlfLWDGlxePPtmcI5bjegdnzJbaEjoLv4A9E7z2Tzl3+nBl4YpmE+YuCnC/41veNRMnqJMOQ33X5A==","repository":{"url":"git+https://github.com/cubixai/AeVoxSDK.git","type":"git","directory":"packages/web"},"_npmVersion":"10.8.2","description":"Browser client for AeVox Web Calls. Join a call minted by the AeVox SDK without writing WebRTC code.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"livekit-client":"^2.17.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsdown":"^0.21.0","vitest":"^4.1.0","typescript":"^5.7.0","@types/node":"^20.0.0","@biomejs/biome":"^2.4.16","@vitest/coverage-v8":"^4.1.0"},"_npmOperationalInternal":{"tmp":"tmp/web_0.1.3_1786903111632_0.9103655502142329","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@aevoxvoice/web","version":"0.2.0","keywords":["aevox","voice","voice-ai","webrtc","web-calls","browser","conversational-ai"],"author":{"name":"AeVox"},"license":"Apache-2.0","_id":"@aevoxvoice/web@0.2.0","maintainers":[{"name":"artificialjay2","email":"jason@cubixai.dev"}],"homepage":"https://aevox.ai","bugs":{"url":"mailto:support@aevox.ai"},"dist":{"shasum":"2e9543f2e13387b4879e2527b877eaaf6189a555","tarball":"https://registry.npmjs.org/@aevoxvoice/web/-/web-0.2.0.tgz","fileCount":8,"integrity":"sha512-8CZtj9r4rRM4Xhecq3HkfNtO25eBI6xv9ZLs0nt4JlXKrB9nFwzVkwZ7WQY8qfKqqzZ6b07p7slHd16o4rDlAQ==","signatures":[{"sig":"MEUCIQDPFHmnxq8IJcLYZUN5kEW0ekarKrxnevMXbdcBzPpkSgIgO/HrobfasaQrCXnnDRlxb+dA5E5vCHXlgpPHeiGWxS0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36078},"main":"./dist/index.cjs","type":"module","_from":"file:aevoxvoice-web-0.2.0.tgz","types":"./dist/index.d.mts","module":"./dist/index.mjs","exports":{".":{"import":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}}},"scripts":{"lint":"biome check .","test":"vitest run","build":"tsdown","format":"biome format --write .","test:watch":"vitest","build:check":"tsc --noEmit"},"_npmUser":{"name":"artificialjay2","email":"jason@cubixai.dev"},"_resolved":"/tmp/d2c65d70208014c549c2eaceb062c0cb/aevoxvoice-web-0.2.0.tgz","_integrity":"sha512-8CZtj9r4rRM4Xhecq3HkfNtO25eBI6xv9ZLs0nt4JlXKrB9nFwzVkwZ7WQY8qfKqqzZ6b07p7slHd16o4rDlAQ==","repository":{"url":"git+https://github.com/cubixai/AeVoxSDK.git","type":"git","directory":"packages/web"},"_npmVersion":"10.9.8","description":"Browser client for AeVox Web Calls. Join a call minted by the AeVox SDK without writing WebRTC code.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"livekit-client":"^2.17.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsdown":"^0.22.14","vitest":"^4.1.10","typescript":"^6.0.3","@types/node":"^22.0.0","@biomejs/biome":"^2.4.16","@vitest/coverage-v8":"^4.1.10"},"_npmOperationalInternal":{"tmp":"tmp/web_0.2.0_1787411992261_0.2732797808968861","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@aevoxvoice/web","version":"0.3.0","keywords":["aevox","voice","voice-ai","webrtc","web-calls","browser","conversational-ai"],"author":{"name":"AeVox"},"license":"Apache-2.0","_id":"@aevoxvoice/web@0.3.0","maintainers":[{"name":"artificialjay2","email":"jason@cubixai.dev"}],"homepage":"https://aevox.ai","bugs":{"url":"mailto:support@aevox.ai"},"dist":{"shasum":"b8bf1441610caa95c7de573d79b273fd533d57d0","tarball":"https://registry.npmjs.org/@aevoxvoice/web/-/web-0.3.0.tgz","fileCount":8,"integrity":"sha512-V7RD36zuHaTDibRbQkMpOFhu6JqYw7wTit8YQx49b1IWAZMs3hjt1Cjhx6ESMRv5+dC2KQ0nXDUprSgoODToKQ==","signatures":[{"sig":"MEUCIErn/PfiRDCU6ELaHPueTm75AZ3mM/1EVGgutJ3q5jBiAiEAr8LZzSEX71JFIv5Ya1e8BNAW75lQs7DqPQlVIXpfzc4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":48016},"main":"./dist/index.cjs","type":"module","_from":"file:aevoxvoice-web-0.3.0.tgz","types":"./dist/index.d.mts","module":"./dist/index.mjs","exports":{".":{"import":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}}},"scripts":{"lint":"biome check .","test":"vitest run","build":"tsdown","format":"biome format --write .","test:watch":"vitest","build:check":"tsc --noEmit"},"_npmUser":{"name":"artificialjay2","email":"jason@cubixai.dev"},"_resolved":"/tmp/7b6536297fc7432c78b67c0bfb0e2bdb/aevoxvoice-web-0.3.0.tgz","_integrity":"sha512-V7RD36zuHaTDibRbQkMpOFhu6JqYw7wTit8YQx49b1IWAZMs3hjt1Cjhx6ESMRv5+dC2KQ0nXDUprSgoODToKQ==","repository":{"url":"git+https://github.com/cubixai/AeVoxSDK.git","type":"git","directory":"packages/web"},"_npmVersion":"10.9.8","description":"Browser client for AeVox Web Calls. Join a call minted by the AeVox SDK without writing WebRTC code.","directories":{},"_nodeVersion":"22.23.2","dependencies":{"livekit-client":"^2.17.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsdown":"^0.22.14","vitest":"^4.1.10","typescript":"^6.0.3","@types/node":"^22.0.0","@biomejs/biome":"^2.4.16","@vitest/coverage-v8":"^4.1.10"},"_npmOperationalInternal":{"tmp":"tmp/web_0.3.0_1787601484883_0.20646927835304063","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@aevoxvoice/web","version":"0.4.0","description":"Browser client for AeVox Web Calls. Join a call minted by the AeVox SDK without writing WebRTC code.","license":"Apache-2.0","author":{"name":"AeVox"},"keywords":["aevox","voice","voice-ai","webrtc","web-calls","browser","conversational-ai"],"publishConfig":{"access":"public"},"homepage":"https://aevox.ai","bugs":{"url":"mailto:support@aevox.ai"},"repository":{"type":"git","url":"git+https://github.com/cubixai/AeVoxSDK.git","directory":"packages/web"},"type":"module","main":"./dist/index.cjs","module":"./dist/index.mjs","types":"./dist/index.d.mts","exports":{".":{"import":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}}},"dependencies":{"livekit-client":"^2.17.2"},"devDependencies":{"@biomejs/biome":"^2.4.16","@types/node":"^22.0.0","@vitest/coverage-v8":"^4.1.10","tsdown":"^0.22.14","typescript":"^6.0.3","vitest":"^4.1.10"},"scripts":{"build":"tsdown","build:check":"tsc --noEmit","test":"vitest run","test:watch":"vitest","lint":"biome check .","format":"biome format --write ."},"_id":"@aevoxvoice/web@0.4.0","_integrity":"sha512-7c32eNUFGaweFHSMPBUz0dk1zO7QqM+x9Fw8qOOCbSq4aIvf8SXaIMokIJzMuL4PplJoJQFEZ+dQcnA+NI0OOQ==","_resolved":"/tmp/dc174f793976efad76b70670e415f227/aevoxvoice-web-0.4.0.tgz","_from":"file:aevoxvoice-web-0.4.0.tgz","_nodeVersion":"22.23.2","_npmVersion":"10.9.8","dist":{"integrity":"sha512-7c32eNUFGaweFHSMPBUz0dk1zO7QqM+x9Fw8qOOCbSq4aIvf8SXaIMokIJzMuL4PplJoJQFEZ+dQcnA+NI0OOQ==","shasum":"0db55d329ca9d56ecfeb80e32336aaa0518a7195","tarball":"https://registry.npmjs.org/@aevoxvoice/web/-/web-0.4.0.tgz","fileCount":8,"unpackedSize":56217,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQD1jb6gF5aMztl467FsBsj1lbzdLaAS3ZRP5//d70XEtwIhAI4MZNQiRr9NvgBqo2pe2OsOoL63kbCgfqFDb/i0iwNX"}]},"_npmUser":{"name":"artificialjay2","email":"jason@cubixai.dev"},"directories":{},"maintainers":[{"name":"artificialjay2","email":"jason@cubixai.dev"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/web_0.4.0_1787798311871_0.16536607302503015"},"_hasShrinkwrap":false}},"time":{"created":"2026-07-16T17:47:45.027Z","modified":"2026-08-27T02:38:32.193Z","0.1.0":"2026-07-16T17:47:45.282Z","0.1.1":"2026-08-16T14:49:38.910Z","0.1.2":"2026-08-16T16:13:23.512Z","0.1.3":"2026-08-16T17:58:31.766Z","0.2.0":"2026-08-22T15:19:52.402Z","0.3.0":"2026-08-24T19:58:05.023Z","0.4.0":"2026-08-27T02:38:32.015Z"},"bugs":{"url":"mailto:support@aevox.ai"},"author":{"name":"AeVox"},"license":"Apache-2.0","homepage":"https://aevox.ai","keywords":["aevox","voice","voice-ai","webrtc","web-calls","browser","conversational-ai"],"repository":{"type":"git","url":"git+https://github.com/cubixai/AeVoxSDK.git","directory":"packages/web"},"description":"Browser client for AeVox Web Calls. Join a call minted by the AeVox SDK without writing WebRTC code.","maintainers":[{"name":"artificialjay2","email":"jason@cubixai.dev"}],"readme":"# @aevoxvoice/web\n\nBrowser client for AeVox Web Calls. Connects a browser to a voice agent without writing WebRTC code.\n\nPairs with [`@aevoxvoice/sdk`](https://www.npmjs.com/package/@aevoxvoice/sdk), which mints the session on your server.\n\n## Installation\n\n```bash\nnpm install @aevoxvoice/web\n```\n\n## Quick start\n\nYour server mints a session and sends it to the browser. The browser joins it.\n\n```typescript\n// Server\nimport { AeVoxClient } from '@aevoxvoice/sdk';\n\nconst client = new AeVoxClient({\n  token: process.env.AEVOX_TOKEN!,\n  baseUrl: 'https://your-instance.aevoxvoice.com',\n});\n\nconst session = await client.webSessions.create({ agentId: 'your_agent_id' });\n// Send `session` to the browser as JSON.\n```\n\n```typescript\n// Browser\nimport { AeVoxWebCall } from '@aevoxvoice/web';\n\nconst call = new AeVoxWebCall();\n\ncall.on('connected', () => console.log('joined'));\ncall.on('agent-speaking', (speaking) => console.log('agent speaking:', speaking));\ncall.on('disconnected', ({ reason }) => console.log('call ended:', reason));\n\nawait call.connect(session);\n\ncall.mute(true);\nawait call.disconnect();\n```\n\nPass `session` to `connect()` exactly as your server returned it. Agent audio plays automatically; no `<audio>` element is required.\n\n## Live captions\n\n```typescript\nconst lines = new Map<string, string>();\n\ncall.on('transcript', ({ participant, segmentId, text, final }) => {\n  lines.set(segmentId, text);\n  renderCaption(participant, lines.get(segmentId), final);\n});\n\ncall.on('error', ({ message }) => console.error('transcript error:', message));\n```\n\nEach `transcript` event carries the current best text for `segmentId`, not a delta appended\nto what came before it - replace what you have rendered for that id rather than concatenating.\n`final` becomes `true` once that line will not change again.\n\n## Transfers\n\nA call can be handed off mid-call to a different agent. The connection stays up throughout - there\nis nothing to reconnect - so `transcript` and `insight` keep delivering without interruption. Listen\nfor `transferred` if you want to react to the handoff itself; the new agent's name, if you want to\nshow it, comes from `insight`'s `call_state` `agent_changed` update, exactly as it does at the start\nof the call.\n\n```typescript\ncall.on('transferred', () => console.log('call moved to a different agent'));\n```\n\nIf the agent disconnects and the call is never moved to a new one, that is a real hang-up:\n`disconnected` fires with `reason: 'agent-left'`.\n\n## API\n\n### `new AeVoxWebCall()`\n\nOne instance per call. `connect()` may be called once per instance. Construct a new `AeVoxWebCall` for the next call.\n\n### `call.connect(session: WebCallSession): Promise<void>`\n\nJoins the call described by `session`, the response from `client.webSessions.create()`. Resolves once connected and the microphone is publishing. Fires `connected`.\n\n### `call.disconnect(): Promise<void>`\n\nLeaves the call and releases the microphone. Safe to call before `connect()` or more than once.\n\n### `call.mute(muted: boolean): Promise<void>`\n\nMutes or unmutes the microphone. Throws `WebCallNotConnectedError` if called before `connect()` resolves.\n\n### `call.on(event, handler): () => void`\n\nSubscribes to an event and returns an unsubscribe function.\n\n| Event | Payload | Fires when |\n|---|---|---|\n| `connected` | none | The call is connected and the microphone is publishing |\n| `agent-speaking` | `boolean` | The agent starts or stops speaking |\n| `disconnected` | `{ reason?: string }` | The call ends, from either side. `reason` is `'agent-left'` when the agent disconnected and the call was never moved to a new one |\n| `transcript` | `{ participant: 'user' \\| 'agent', segmentId: string, text: string, final: boolean }` | A live caption line is added or updated |\n| `error` | `{ message: string, cause?: unknown }` | A caption update fails to process; the call itself is unaffected |\n| `transferred` | none | The call was handed off to a different agent mid-call; the connection stays up |\n\n### `call.off(event, handler): void`\n\nRemoves a previously registered handler.\n\n## Documentation\n\nGuides and examples: [https://docs.aevoxvoice.com/sdk](https://docs.aevoxvoice.com/sdk)\n\n## Support\n\n- Questions and feature requests: support@aevox.ai\n- Security disclosures: security@aevox.ai\n- Website: [https://aevox.ai](https://aevox.ai)\n\n## License\n\nApache-2.0. See [LICENSE](./LICENSE) and [NOTICE](./NOTICE).\n","readmeFilename":"README.md"}