@onlive.ai/common-121 0.2.163 → 0.2.184

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 (447) hide show
  1. package/audi-dark.theme-B8g9SRrd.d.cts +11 -0
  2. package/audi-dark.theme-B8g9SRrd.d.ts +11 -0
  3. package/audi.theme-CbqEkKLD.d.cts +11 -0
  4. package/audi.theme-CbqEkKLD.d.ts +11 -0
  5. package/australia.theme-Cs0cygOQ.d.cts +11 -0
  6. package/australia.theme-Cs0cygOQ.d.ts +11 -0
  7. package/chunk-UTOVVCSU.js +2 -0
  8. package/components/asset/asset-modal-portal.cjs +1 -1
  9. package/components/asset/asset-modal-portal.d.cts +1 -1
  10. package/components/asset/asset-modal-portal.d.ts +1 -1
  11. package/components/asset/asset-modal-portal.js +1 -1
  12. package/components/asset/asset.cjs +4 -4
  13. package/components/asset/asset.d.cts +1 -1
  14. package/components/asset/asset.d.ts +1 -1
  15. package/components/asset/asset.js +13 -13
  16. package/components/asset/asset.loaders.cjs +1 -1
  17. package/components/asset/asset.loaders.d.cts +1 -1
  18. package/components/asset/asset.loaders.d.ts +1 -1
  19. package/components/asset/asset.loaders.js +1 -1
  20. package/components/asset/asset.renderer.cjs +4 -4
  21. package/components/asset/asset.renderer.d.cts +1 -1
  22. package/components/asset/asset.renderer.d.ts +1 -1
  23. package/components/asset/asset.renderer.js +10 -10
  24. package/components/asset/asset.styles.cjs +1 -1
  25. package/components/asset/asset.styles.d.cts +1 -1
  26. package/components/asset/asset.styles.d.ts +1 -1
  27. package/components/asset/asset.styles.js +1 -1
  28. package/components/asset/asset.types.cjs +1 -1
  29. package/components/asset/asset.types.d.cts +1 -1
  30. package/components/asset/asset.types.d.ts +1 -1
  31. package/components/asset/asset.types.js +1 -1
  32. package/components/asset/index.cjs +4 -4
  33. package/components/asset/index.d.cts +1 -1
  34. package/components/asset/index.d.ts +1 -1
  35. package/components/asset/index.js +13 -13
  36. package/components/player/player.cjs +1 -1
  37. package/components/player/player.d.cts +1 -1
  38. package/components/player/player.d.ts +1 -1
  39. package/components/player/player.js +1 -1
  40. package/components/player/player.styles.cjs +1 -1
  41. package/components/player/player.styles.d.cts +1 -1
  42. package/components/player/player.styles.d.ts +1 -1
  43. package/components/player/player.styles.js +1 -1
  44. package/components/side-bar/index.cjs +1 -1
  45. package/components/side-bar/index.d.cts +1 -1
  46. package/components/side-bar/index.d.ts +1 -1
  47. package/components/side-bar/index.js +1 -1
  48. package/components/side-bar/side-bar.cjs +1 -1
  49. package/components/side-bar/side-bar.d.cts +1 -1
  50. package/components/side-bar/side-bar.d.ts +1 -1
  51. package/components/side-bar/side-bar.js +1 -1
  52. package/components/side-bar/side-bar.styles.cjs +1 -1
  53. package/components/side-bar/side-bar.styles.d.cts +1 -1
  54. package/components/side-bar/side-bar.styles.d.ts +1 -1
  55. package/components/side-bar/side-bar.styles.js +1 -1
  56. package/components/side-bar/side-bar.types.cjs +1 -1
  57. package/components/side-bar/side-bar.types.d.cts +1 -1
  58. package/components/side-bar/side-bar.types.d.ts +1 -1
  59. package/components/side-bar/side-bar.types.js +1 -1
  60. package/components/upload/index.cjs +1 -1
  61. package/components/upload/index.d.cts +1 -1
  62. package/components/upload/index.d.ts +1 -1
  63. package/components/upload/index.js +1 -1
  64. package/components/upload/upload.cjs +1 -1
  65. package/components/upload/upload.d.cts +1 -1
  66. package/components/upload/upload.d.ts +1 -1
  67. package/components/upload/upload.js +1 -1
  68. package/components/upload/upload.styles.cjs +1 -1
  69. package/components/upload/upload.styles.d.cts +1 -1
  70. package/components/upload/upload.styles.d.ts +1 -1
  71. package/components/upload/upload.styles.js +1 -1
  72. package/components/upload/upload.types.cjs +1 -1
  73. package/components/upload/upload.types.d.cts +1 -1
  74. package/components/upload/upload.types.d.ts +1 -1
  75. package/components/upload/upload.types.js +1 -1
  76. package/cuernavaca.theme-0UFX1MeG.d.cts +11 -0
  77. package/cuernavaca.theme-0UFX1MeG.d.ts +11 -0
  78. package/cupra-diagonal.theme-DVrQr2iv.d.cts +11 -0
  79. package/cupra-diagonal.theme-DVrQr2iv.d.ts +11 -0
  80. package/cupra-events.theme-D2xJeafa.d.cts +11 -0
  81. package/cupra-events.theme-D2xJeafa.d.ts +11 -0
  82. package/cupra.theme-CqgKWLYE.d.cts +11 -0
  83. package/cupra.theme-CqgKWLYE.d.ts +11 -0
  84. package/germany.theme-CnwD309P.d.cts +11 -0
  85. package/germany.theme-CnwD309P.d.ts +11 -0
  86. package/hyundai.theme-E2ZiyZmJ.d.cts +11 -0
  87. package/hyundai.theme-E2ZiyZmJ.d.ts +11 -0
  88. package/index.cjs +276 -276
  89. package/index.d.cts +4134 -3
  90. package/index.d.ts +4134 -3
  91. package/index.js +280 -280
  92. package/italy.theme-BjfPp7rU.d.cts +11 -0
  93. package/italy.theme-BjfPp7rU.d.ts +11 -0
  94. package/magimix.theme-7cd19P1X.d.cts +11 -0
  95. package/magimix.theme-7cd19P1X.d.ts +11 -0
  96. package/media-SB4RDT6E.js +2 -0
  97. package/onlive-ai.theme-CASPoRHr.d.cts +11 -0
  98. package/onlive-ai.theme-CASPoRHr.d.ts +11 -0
  99. package/onlive.theme-nKZQHG1I.d.cts +11 -0
  100. package/onlive.theme-nKZQHG1I.d.ts +11 -0
  101. package/package.json +13 -9
  102. package/react/components/asset/Asset.cjs +1 -1
  103. package/react/components/asset/Asset.jsx +1 -1
  104. package/react/components/side-bar/SideBar.cjs +1 -1
  105. package/react/components/side-bar/SideBar.jsx +1 -1
  106. package/react/components/upload/Upload.cjs +1 -1
  107. package/react/components/upload/Upload.jsx +1 -1
  108. package/seat-cupra.theme-B4ylEjOZ.d.cts +11 -0
  109. package/seat-cupra.theme-B4ylEjOZ.d.ts +11 -0
  110. package/services/audio.service.cjs +1 -1
  111. package/services/audio.service.d.cts +1 -1
  112. package/services/audio.service.d.ts +1 -1
  113. package/services/audio.service.js +1 -1
  114. package/services/conversation/conversation.service.cjs +2 -2
  115. package/services/conversation/conversation.service.d.cts +26 -3
  116. package/services/conversation/conversation.service.d.ts +26 -3
  117. package/services/conversation/conversation.service.js +2 -2
  118. package/services/conversation/conversation.types.cjs +2 -2
  119. package/services/conversation/conversation.types.d.cts +120 -4
  120. package/services/conversation/conversation.types.d.ts +120 -4
  121. package/services/conversation/conversation.types.js +2 -2
  122. package/services/conversation/index.cjs +2 -2
  123. package/services/conversation/index.d.cts +19 -2
  124. package/services/conversation/index.d.ts +19 -2
  125. package/services/conversation/index.js +2 -2
  126. package/services/conversation/mock/actor/agent.cjs +2 -0
  127. package/services/conversation/mock/actor/agent.d.cts +202 -0
  128. package/services/conversation/mock/actor/agent.d.ts +202 -0
  129. package/services/conversation/mock/actor/agent.js +2 -0
  130. package/services/conversation/mock/actor/index.cjs +2 -0
  131. package/services/conversation/mock/actor/index.d.cts +4 -0
  132. package/services/conversation/mock/actor/index.d.ts +4 -0
  133. package/services/conversation/mock/actor/index.js +2 -0
  134. package/services/conversation/mock/actor/strategies.cjs +2 -0
  135. package/services/conversation/mock/actor/strategies.d.cts +31 -0
  136. package/services/conversation/mock/actor/strategies.d.ts +31 -0
  137. package/services/conversation/mock/actor/strategies.js +2 -0
  138. package/services/conversation/mock/errors.cjs +2 -0
  139. package/services/conversation/mock/errors.d.cts +125 -0
  140. package/services/conversation/mock/errors.d.ts +125 -0
  141. package/services/conversation/mock/errors.js +2 -0
  142. package/services/conversation/mock/events.cjs +2 -0
  143. package/services/conversation/mock/events.d.cts +253 -0
  144. package/services/conversation/mock/events.d.ts +253 -0
  145. package/services/conversation/mock/events.js +2 -0
  146. package/services/conversation/mock/factory.cjs +2 -0
  147. package/services/conversation/mock/factory.d.cts +134 -0
  148. package/services/conversation/mock/factory.d.ts +134 -0
  149. package/services/conversation/mock/factory.js +2 -0
  150. package/services/conversation/mock/fixtures.cjs +2 -0
  151. package/services/conversation/mock/fixtures.d.cts +191 -0
  152. package/services/conversation/mock/fixtures.d.ts +191 -0
  153. package/services/conversation/mock/fixtures.js +2 -0
  154. package/services/conversation/mock/generators.cjs +2 -0
  155. package/services/conversation/mock/generators.d.cts +123 -0
  156. package/services/conversation/mock/generators.d.ts +123 -0
  157. package/services/conversation/mock/generators.js +2 -0
  158. package/services/conversation/mock/index.cjs +2 -0
  159. package/services/conversation/mock/index.d.cts +24 -0
  160. package/services/conversation/mock/index.d.ts +24 -0
  161. package/services/conversation/mock/index.js +2 -0
  162. package/services/conversation/mock/livekit/index.cjs +2 -0
  163. package/services/conversation/mock/livekit/index.d.cts +7 -0
  164. package/services/conversation/mock/livekit/index.d.ts +7 -0
  165. package/services/conversation/mock/livekit/index.js +2 -0
  166. package/services/conversation/mock/livekit/local-participant.cjs +2 -0
  167. package/services/conversation/mock/livekit/local-participant.d.cts +204 -0
  168. package/services/conversation/mock/livekit/local-participant.d.ts +204 -0
  169. package/services/conversation/mock/livekit/local-participant.js +2 -0
  170. package/services/conversation/mock/livekit/participant.cjs +2 -0
  171. package/services/conversation/mock/livekit/participant.d.cts +171 -0
  172. package/services/conversation/mock/livekit/participant.d.ts +171 -0
  173. package/services/conversation/mock/livekit/participant.js +2 -0
  174. package/services/conversation/mock/livekit/room.cjs +2 -0
  175. package/services/conversation/mock/livekit/room.d.cts +292 -0
  176. package/services/conversation/mock/livekit/room.d.ts +292 -0
  177. package/services/conversation/mock/livekit/room.js +2 -0
  178. package/services/conversation/mock/livekit/streams.cjs +2 -0
  179. package/services/conversation/mock/livekit/streams.d.cts +190 -0
  180. package/services/conversation/mock/livekit/streams.d.ts +190 -0
  181. package/services/conversation/mock/livekit/streams.js +2 -0
  182. package/services/conversation/mock/livekit/tracks.cjs +2 -0
  183. package/services/conversation/mock/livekit/tracks.d.cts +149 -0
  184. package/services/conversation/mock/livekit/tracks.d.ts +149 -0
  185. package/services/conversation/mock/livekit/tracks.js +2 -0
  186. package/services/conversation/mock/media.cjs +2 -0
  187. package/services/conversation/mock/media.d.cts +174 -0
  188. package/services/conversation/mock/media.d.ts +174 -0
  189. package/services/conversation/mock/media.js +2 -0
  190. package/services/conversation/mock/service.cjs +2 -0
  191. package/services/conversation/mock/service.d.cts +305 -0
  192. package/services/conversation/mock/service.d.ts +305 -0
  193. package/services/conversation/mock/service.js +2 -0
  194. package/services/conversation/mock/service.test.cjs +2 -0
  195. package/services/conversation/mock/service.test.d.cts +1 -0
  196. package/services/conversation/mock/service.test.d.ts +1 -0
  197. package/services/conversation/mock/service.test.js +2 -0
  198. package/services/conversation/mock/state.cjs +2 -0
  199. package/services/conversation/mock/state.d.cts +296 -0
  200. package/services/conversation/mock/state.d.ts +296 -0
  201. package/services/conversation/mock/state.js +2 -0
  202. package/services/conversation/mock/storybook.cjs +2 -0
  203. package/services/conversation/mock/storybook.d.cts +197 -0
  204. package/services/conversation/mock/storybook.d.ts +197 -0
  205. package/services/conversation/mock/storybook.js +2 -0
  206. package/services/conversation/mock/types.cjs +2 -0
  207. package/services/conversation/mock/types.d.cts +442 -0
  208. package/services/conversation/mock/types.d.ts +442 -0
  209. package/services/conversation/mock/types.js +1 -0
  210. package/services/faqs/faqs.service.cjs +1 -1
  211. package/services/faqs/faqs.service.d.cts +1 -1
  212. package/services/faqs/faqs.service.d.ts +1 -1
  213. package/services/faqs/faqs.service.js +1 -1
  214. package/services/faqs/faqs.types.cjs +1 -1
  215. package/services/faqs/faqs.types.d.cts +1 -1
  216. package/services/faqs/faqs.types.d.ts +1 -1
  217. package/services/faqs/faqs.types.js +1 -1
  218. package/services/faqs/index.cjs +1 -1
  219. package/services/faqs/index.d.cts +1 -1
  220. package/services/faqs/index.d.ts +1 -1
  221. package/services/faqs/index.js +1 -1
  222. package/services/file/file.service.cjs +1 -1
  223. package/services/file/file.service.d.cts +1 -1
  224. package/services/file/file.service.d.ts +1 -1
  225. package/services/file/file.service.js +1 -1
  226. package/services/file/file.types.cjs +1 -1
  227. package/services/file/file.types.d.cts +1 -1
  228. package/services/file/file.types.d.ts +1 -1
  229. package/services/file/file.types.js +1 -1
  230. package/services/file/index.cjs +1 -1
  231. package/services/file/index.d.cts +1 -1
  232. package/services/file/index.d.ts +1 -1
  233. package/services/file/index.js +1 -1
  234. package/services/firebase/firebase-api.cjs +1 -1
  235. package/services/firebase/firebase-api.d.cts +1 -1
  236. package/services/firebase/firebase-api.d.ts +1 -1
  237. package/services/firebase/firebase-api.js +1 -1
  238. package/services/multimedia/config.example.cjs +1 -1
  239. package/services/multimedia/config.example.d.cts +1 -1
  240. package/services/multimedia/config.example.d.ts +1 -1
  241. package/services/multimedia/config.example.js +1 -1
  242. package/services/multimedia/index.cjs +1 -1
  243. package/services/multimedia/index.d.cts +1 -1
  244. package/services/multimedia/index.d.ts +1 -1
  245. package/services/multimedia/index.js +1 -1
  246. package/services/multimedia/multimedia.service.cjs +1 -1
  247. package/services/multimedia/multimedia.service.d.cts +1 -1
  248. package/services/multimedia/multimedia.service.d.ts +1 -1
  249. package/services/multimedia/multimedia.service.js +1 -1
  250. package/services/multimedia/multimedia.types.cjs +1 -1
  251. package/services/multimedia/multimedia.types.d.cts +1 -1
  252. package/services/multimedia/multimedia.types.d.ts +1 -1
  253. package/services/multimedia/multimedia.types.js +1 -1
  254. package/services/product/index.cjs +1 -1
  255. package/services/product/index.d.cts +1 -1
  256. package/services/product/index.d.ts +1 -1
  257. package/services/product/index.js +1 -1
  258. package/services/product/product.service.cjs +1 -1
  259. package/services/product/product.service.d.cts +1 -1
  260. package/services/product/product.service.d.ts +1 -1
  261. package/services/product/product.service.js +1 -1
  262. package/services/product/product.types.cjs +1 -1
  263. package/services/product/product.types.d.cts +1 -1
  264. package/services/product/product.types.d.ts +1 -1
  265. package/services/product/product.types.js +1 -1
  266. package/services/request.provider.cjs +1 -1
  267. package/services/request.provider.d.cts +1 -1
  268. package/services/request.provider.d.ts +1 -1
  269. package/services/request.provider.js +1 -1
  270. package/services/session.service.cjs +2 -2
  271. package/services/session.service.d.cts +1 -1
  272. package/services/session.service.d.ts +1 -1
  273. package/services/session.service.js +2 -2
  274. package/services/upload/index.cjs +1 -1
  275. package/services/upload/index.d.cts +1 -1
  276. package/services/upload/index.d.ts +1 -1
  277. package/services/upload/index.js +1 -1
  278. package/services/upload/upload.service.cjs +1 -1
  279. package/services/upload/upload.service.d.cts +1 -1
  280. package/services/upload/upload.service.d.ts +1 -1
  281. package/services/upload/upload.service.js +1 -1
  282. package/themes/custom/audi-dark.theme.cjs +920 -0
  283. package/themes/custom/audi-dark.theme.d.cts +3 -0
  284. package/themes/custom/audi-dark.theme.d.ts +3 -0
  285. package/themes/custom/audi-dark.theme.js +920 -0
  286. package/themes/custom/audi.theme.cjs +777 -0
  287. package/themes/custom/audi.theme.d.cts +3 -0
  288. package/themes/custom/audi.theme.d.ts +3 -0
  289. package/themes/custom/audi.theme.js +777 -0
  290. package/themes/custom/australia.theme.cjs +386 -0
  291. package/themes/custom/australia.theme.d.cts +3 -0
  292. package/themes/custom/australia.theme.d.ts +3 -0
  293. package/themes/custom/australia.theme.js +386 -0
  294. package/themes/custom/cuernavaca.theme.cjs +196 -0
  295. package/themes/custom/cuernavaca.theme.d.cts +3 -0
  296. package/themes/custom/cuernavaca.theme.d.ts +3 -0
  297. package/themes/custom/cuernavaca.theme.js +196 -0
  298. package/themes/custom/cupra-diagonal.theme.cjs +1029 -0
  299. package/themes/custom/cupra-diagonal.theme.d.cts +3 -0
  300. package/themes/custom/cupra-diagonal.theme.d.ts +3 -0
  301. package/themes/custom/cupra-diagonal.theme.js +1029 -0
  302. package/themes/custom/cupra-events.theme.cjs +555 -0
  303. package/themes/custom/cupra-events.theme.d.cts +3 -0
  304. package/themes/custom/cupra-events.theme.d.ts +3 -0
  305. package/themes/custom/cupra-events.theme.js +555 -0
  306. package/themes/custom/cupra.theme.cjs +147 -0
  307. package/themes/custom/cupra.theme.d.cts +3 -0
  308. package/themes/custom/cupra.theme.d.ts +3 -0
  309. package/themes/custom/cupra.theme.js +147 -0
  310. package/themes/custom/germany.theme.cjs +716 -0
  311. package/themes/custom/germany.theme.d.cts +3 -0
  312. package/themes/custom/germany.theme.d.ts +3 -0
  313. package/themes/custom/germany.theme.js +716 -0
  314. package/themes/custom/hyundai.theme.cjs +294 -0
  315. package/themes/custom/hyundai.theme.d.cts +3 -0
  316. package/themes/custom/hyundai.theme.d.ts +3 -0
  317. package/themes/custom/hyundai.theme.js +294 -0
  318. package/themes/custom/italy.theme.cjs +850 -0
  319. package/themes/custom/italy.theme.d.cts +3 -0
  320. package/themes/custom/italy.theme.d.ts +3 -0
  321. package/themes/custom/italy.theme.js +850 -0
  322. package/themes/custom/magimix.theme.cjs +119 -0
  323. package/themes/custom/magimix.theme.d.cts +3 -0
  324. package/themes/custom/magimix.theme.d.ts +3 -0
  325. package/themes/custom/magimix.theme.js +119 -0
  326. package/themes/custom/onlive-ai.theme.cjs +74 -0
  327. package/themes/custom/onlive-ai.theme.d.cts +3 -0
  328. package/themes/custom/onlive-ai.theme.d.ts +3 -0
  329. package/themes/custom/onlive-ai.theme.js +74 -0
  330. package/themes/custom/onlive.theme.cjs +33 -0
  331. package/themes/custom/onlive.theme.d.cts +3 -0
  332. package/themes/custom/onlive.theme.d.ts +3 -0
  333. package/themes/custom/onlive.theme.js +33 -0
  334. package/themes/custom/seat-cupra.theme.cjs +478 -0
  335. package/themes/custom/seat-cupra.theme.d.cts +3 -0
  336. package/themes/custom/seat-cupra.theme.d.ts +3 -0
  337. package/themes/custom/seat-cupra.theme.js +478 -0
  338. package/themes/dark.cjs +13 -2
  339. package/themes/dark.d.cts +1 -1
  340. package/themes/dark.d.ts +1 -1
  341. package/themes/dark.js +12 -1
  342. package/themes/light.cjs +13 -2
  343. package/themes/light.d.cts +1 -1
  344. package/themes/light.d.ts +1 -1
  345. package/themes/light.js +12 -1
  346. package/types/globals.cjs +1 -1
  347. package/types/globals.d.cts +1 -1
  348. package/types/globals.d.ts +1 -1
  349. package/types/globals.js +1 -1
  350. package/types/tracking-options.cjs +1 -1
  351. package/types/tracking-options.d.cts +1 -1
  352. package/types/tracking-options.d.ts +1 -1
  353. package/types/tracking-options.js +1 -1
  354. package/utils/adopt-styles.cjs +1 -1
  355. package/utils/adopt-styles.d.cts +1 -1
  356. package/utils/adopt-styles.d.ts +1 -1
  357. package/utils/adopt-styles.js +1 -1
  358. package/utils/apply-optional-styles.cjs +6548 -0
  359. package/utils/apply-optional-styles.d.cts +47 -0
  360. package/utils/apply-optional-styles.d.ts +47 -0
  361. package/utils/apply-optional-styles.js +6548 -0
  362. package/utils/browser-preferences.cjs +1 -1
  363. package/utils/browser-preferences.d.cts +1 -1
  364. package/utils/browser-preferences.d.ts +1 -1
  365. package/utils/browser-preferences.js +1 -1
  366. package/utils/classify-media.cjs +1 -1
  367. package/utils/classify-media.d.cts +1 -1
  368. package/utils/classify-media.d.ts +1 -1
  369. package/utils/classify-media.js +1 -1
  370. package/utils/decorators.cjs +1 -1
  371. package/utils/decorators.d.cts +1 -1
  372. package/utils/decorators.d.ts +1 -1
  373. package/utils/decorators.js +1 -1
  374. package/utils/detected-lang.cjs +1 -1
  375. package/utils/detected-lang.d.cts +1 -1
  376. package/utils/detected-lang.d.ts +1 -1
  377. package/utils/detected-lang.js +1 -1
  378. package/utils/fullscreen.cjs +1 -1
  379. package/utils/fullscreen.d.cts +1 -1
  380. package/utils/fullscreen.d.ts +1 -1
  381. package/utils/fullscreen.js +1 -1
  382. package/utils/insert-script.cjs +1 -1
  383. package/utils/insert-script.d.cts +1 -1
  384. package/utils/insert-script.d.ts +1 -1
  385. package/utils/insert-script.js +1 -1
  386. package/utils/is-map-compatible.cjs +1 -1
  387. package/utils/is-map-compatible.d.cts +1 -1
  388. package/utils/is-map-compatible.d.ts +1 -1
  389. package/utils/is-map-compatible.js +1 -1
  390. package/utils/markdown.cjs +1 -1
  391. package/utils/markdown.d.cts +1 -1
  392. package/utils/markdown.d.ts +1 -1
  393. package/utils/markdown.js +1 -1
  394. package/utils/merge.cjs +1 -1
  395. package/utils/merge.d.cts +1 -1
  396. package/utils/merge.d.ts +1 -1
  397. package/utils/merge.js +1 -1
  398. package/utils/multiband-track-volume.cjs +1 -1
  399. package/utils/multiband-track-volume.d.cts +1 -1
  400. package/utils/multiband-track-volume.d.ts +1 -1
  401. package/utils/multiband-track-volume.js +1 -1
  402. package/utils/onlive-url-params.cjs +1 -1
  403. package/utils/onlive-url-params.d.cts +1 -1
  404. package/utils/onlive-url-params.d.ts +1 -1
  405. package/utils/onlive-url-params.js +1 -1
  406. package/utils/pretty-distance.cjs +1 -1
  407. package/utils/pretty-distance.d.cts +1 -1
  408. package/utils/pretty-distance.d.ts +1 -1
  409. package/utils/pretty-distance.js +1 -1
  410. package/utils/pretty-time.cjs +1 -1
  411. package/utils/pretty-time.d.cts +1 -1
  412. package/utils/pretty-time.d.ts +1 -1
  413. package/utils/pretty-time.js +1 -1
  414. package/utils/random-string.cjs +1 -1
  415. package/utils/random-string.d.cts +1 -1
  416. package/utils/random-string.d.ts +1 -1
  417. package/utils/random-string.js +1 -1
  418. package/utils/resource-type.cjs +1 -1
  419. package/utils/resource-type.d.cts +1 -1
  420. package/utils/resource-type.d.ts +1 -1
  421. package/utils/resource-type.js +1 -1
  422. package/utils/round-number.cjs +1 -1
  423. package/utils/round-number.d.cts +1 -1
  424. package/utils/round-number.d.ts +1 -1
  425. package/utils/round-number.js +1 -1
  426. package/utils/safe-html.cjs +2 -2
  427. package/utils/safe-html.d.cts +9 -2
  428. package/utils/safe-html.d.ts +9 -2
  429. package/utils/safe-html.js +2 -2
  430. package/utils/sanitize.cjs +1 -1
  431. package/utils/sanitize.d.cts +1 -1
  432. package/utils/sanitize.d.ts +1 -1
  433. package/utils/sanitize.js +1 -1
  434. package/utils/spread.cjs +1 -1
  435. package/utils/spread.d.cts +1 -1
  436. package/utils/spread.d.ts +1 -1
  437. package/utils/spread.js +1 -1
  438. package/utils/watch.cjs +1 -1
  439. package/utils/watch.d.cts +1 -1
  440. package/utils/watch.d.ts +1 -1
  441. package/utils/watch.js +1 -1
  442. package/react/components/asset/Asset.d.cts +0 -33
  443. package/react/components/asset/Asset.d.ts +0 -33
  444. package/react/components/side-bar/SideBar.d.cts +0 -37
  445. package/react/components/side-bar/SideBar.d.ts +0 -37
  446. package/react/components/upload/Upload.d.cts +0 -23
  447. package/react/components/upload/Upload.d.ts +0 -23
@@ -1,2 +1,2 @@
1
- /*! @onlive.ai/common-121 v0.2.163 | © 2026 Onlive.ai */
2
- "use strict";var C=Object.defineProperty;var S=Object.getOwnPropertyDescriptor;var w=Object.getOwnPropertyNames;var x=Object.prototype.hasOwnProperty;var k=(o,e)=>{for(var t in e)C(o,t,{get:e[t],enumerable:!0})},M=(o,e,t,s)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of w(e))!x.call(o,n)&&n!==t&&C(o,n,{get:()=>e[n],enumerable:!(s=S(e,n))||s.enumerable});return o};var q=o=>M(C({},"__esModule",{value:!0}),o);var z={};k(z,{CHAT_TOPIC:()=>b,ConversationService:()=>T,EVENTS_TOPIC:()=>f,Room:()=>h,TRANSCRIPTION_TOPIC:()=>R,TYPING_INDICATOR_TOPIC:()=>u});module.exports=q(z);var v=require("@onlive.ai/tracker"),p=require("livekit-client");var I=require("firebase/app"),i=require("firebase/database"),m=class{constructor(e){this.onChildChanged=(e,t)=>(0,i.onChildChanged)(this.ref(e),s=>t(s.key||"",s.val(),s));this.onChildRemoved=(e,t)=>(0,i.onChildRemoved)(this.ref(e),s=>t(s.key||"",s.val(),s));this.onChildChangedQuery=(e,t)=>(0,i.onChildChanged)(e,s=>t(s.key||"",s.val(),s));this.onChildRemovedQuery=(e,t)=>(0,i.onChildRemoved)(e,s=>t(s.key||"",s.val(),s));let t=(0,I.initializeApp)(e.config);this.db=(0,i.getDatabase)(t)}ref(e){return(0,i.ref)(this.db,e)}async getOnce(e){let t=await(0,i.get)(this.ref(e));return t.exists()?t.val():null}async getOnceQuery(e){let t=await(0,i.get)(e),s=[];return t.exists()&&t.forEach(n=>{s.push({key:n.key||"",value:n.val()})}),s}onValue(e,t){return(0,i.onValue)(this.ref(e),s=>t(s.key??"",s.val(),s),s=>console.error("onValue error",s))}onValueQuery(e,t){return(0,i.onValue)(e,s=>t(s.key??"",s.val(),s),s=>console.error("onValueQuery error",s))}onChildAdded(e,t){return(0,i.onChildAdded)(this.ref(e),s=>t(s.key||"",s.val(),s),s=>console.error("onChildAdded error",s))}onChildAddedQuery(e,t){return(0,i.onChildAdded)(e,s=>t(s.key||"",s.val(),s),s=>console.error("onChildAddedQuery error",s))}write(e,t){return(0,i.set)(this.ref(e),t)}update(e,t){return(0,i.update)(this.ref(e),t)}remove(e){return(0,i.remove)(this.ref(e))}async push(e,t){let s=(0,i.push)(this.ref(e));return await(0,i.set)(s,t),s.key}onDisconnectUpdate(e,t){return(0,i.onDisconnect)(this.ref(e)).update(t)}cancelOnDisconnect(e){return(0,i.onDisconnect)(this.ref(e)).cancel()}transaction(e,t){return(0,i.runTransaction)(this.ref(e),s=>t(s))}query(e,t={}){let s=this.ref(e);return t.orderBy==="child"&&t.childKey&&(s=(0,i.query)(s,(0,i.orderByChild)(t.childKey))),t.orderBy==="key"&&(s=(0,i.query)(s,(0,i.orderByKey)())),t.orderBy==="value"&&(s=(0,i.query)(s,(0,i.orderByValue)())),t.startAt!=null&&(s=(0,i.query)(s,(0,i.startAt)(t.startAt))),t.endAt!=null&&(s=(0,i.query)(s,(0,i.endAt)(t.endAt))),t.equalTo!=null&&(s=(0,i.query)(s,(0,i.equalTo)(t.equalTo))),t.limitFirst!=null&&(s=(0,i.query)(s,(0,i.limitToFirst)(t.limitFirst))),t.limitLast!=null&&(s=(0,i.query)(s,(0,i.limitToLast)(t.limitLast))),s}};var l=async(o,e)=>{let t=await fetch(o,e);if(!t.ok){let s=await t.json().catch(()=>({}));throw new Error(JSON.stringify({status:t.status,statusText:t.statusText,...s}))}return t&&t.json()};var O=o=>{let e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",t="";for(let s=0;s<o;s++)t+=e.charAt(Math.floor(Math.random()*e.length));return t};var c=require("@onlive.ai/tracker"),d="chatbot",y=class o{static hasSession(){return!!c.Session.getCookie(d)}static getSession(e={role:"guest",regenerate:!1}){e.regenerate&&(c.Session.id=c.Generator.uuid(),c.Session.deleteCookie(d));let t=c.Session.getCookie(d);return t&&o.isValidSession(t,e.role)?t:o.createSession(e.role)}static createSession(e){let t={externalId:e==="agent"?String(o.getUserId()||c.Session.id):c.Session.id,secret:O(16),createdAt:new Date().toISOString()};return c.Session.setCookie(d,t,3600*24*365),t}static isValidSession(e,t){if(t==="guest")return!0;let s=o.getUserId();return!!(s&&String(s)===e.externalId)}static getUserId(){return c.Session.getCookie("user-id",{objectKey:"userId",storageKey:"user",storageType:"localStorage",ttl:3600*24*365,preserveData:!0})}static updateSessionWithRegistrationData(e){let t=c.Session.getCookie(d);if(t||(t=o.createSession("guest")),t){let s={...t,registrationData:e};c.Session.setCookie(d,s,3600*24*365)}}static hasRegistrationData(){return!!c.Session.getCookie(d)?.registrationData}static async getAgentInfo(e){return fetch(`${e}/api/v1/auth/user-info`,{credentials:"include"}).then(t=>t.json())}static getRegistrationData(){return c.Session.getCookie(d)?.registrationData}};var b="lk.chat",R="lk.transcription",f="lk.events",u="typing-indicator";var h=class extends p.Room{},T=class{constructor(e){this.listeners=new Set;this.typingListeners=new Set;this.transcriptionMap=new Map;this.abortControllers={register:new AbortController,createRoom:new AbortController,closeRoom:new AbortController,evaluateRoom:new AbortController,persistMessage:new AbortController,sendMessageReport:new AbortController,deleteMessageReport:new AbortController,updateMessageReactions:new AbortController,getRooms:new AbortController};this.authToken=null;this.firebaseUnsubscribers={};this.seenRequestIds=new Set;this.lastSnapshotById=new Map;this.handleIncomingMessage=async(e,t)=>{let s=e?.info?.id,n=e.info?.attributes?.["lk.segment_id"];n&&(this.transcriptionMap.has(n)?s=this.transcriptionMap.get(n)||"":this.transcriptionMap.set(n,s));let r=t?.identity?this.room.getParticipantByIdentity(t.identity):void 0,a="";for await(let g of e)a+=g,this.emitMessage({id:s,timestamp:Date.now(),message:a,assets:JSON.parse(e.info?.attributes?.assets||"[]"),from:r});this.messagePersistence==="client"&&this.persistMessage({roomId:this.room.id,content:a,externalId:s,identity:r?.identity,kind:r?.kind})};this.emitMessage=e=>{for(let t of this.listeners)t([e])};this.handleDataReceived=(e,t,s,n)=>{if(n===u)try{let r=JSON.parse(new TextDecoder().decode(e));if(r.type==="typing"&&r.participantId!==this.room.localParticipant.identity){let a={type:"typing",isTyping:r.isTyping,timestamp:r.timestamp,participantId:r.participantId};this.emitTypingIndicator(a)}}catch(r){console.warn("Failed to parse typing indicator:",r)}};this.emitTypingIndicator=e=>{for(let t of this.typingListeners)t(e)};this.apiUrl=e.apiUrl,this.authUrl=e.authUrl,this.organizationId=e.organizationId,this.channelTopic=e.channelTopic||b,this.transcriptionTopic=e.transcriptionTopic||R,this.eventsTopic=e.eventsTopic||f,this.messagePersistence=e.messagePersistence||"disabled",this.room=this.createRoomInstance(),e.firebaseConfig&&this.initializeFirebase(e.firebaseConfig)}createRoomInstance(){return new h({adaptiveStream:!0,dynacast:!0})}ensureRoom(){return this.room||(this.room=this.createRoomInstance()),this.room}initializeFirebase(e){this.firebaseApi=new m({config:e}),this.presencePath=`orgs/${this.organizationId}/presence`,this.callsPath=`orgs/${this.organizationId}/calls`}initializeRoomHandlers(){try{this.room.unregisterTextStreamHandler(this.channelTopic),this.room.unregisterTextStreamHandler(this.transcriptionTopic)}catch{}this.room.off(p.RoomEvent.DataReceived,this.handleDataReceived),this.room.registerTextStreamHandler(this.channelTopic,this.handleIncomingMessage),this.room.registerTextStreamHandler(this.transcriptionTopic,this.handleIncomingMessage),this.room.on(p.RoomEvent.DataReceived,this.handleDataReceived)}async registerUser(e,t,s,n){let r=await l(`${this.apiUrl}/users/register`,{method:"POST",body:JSON.stringify({externalId:e,secret:t,...s,metadata:n}),headers:{"X-Onlive-Organization-Id":this.organizationId,"Content-Type":"application/json"},signal:this.abortControllers.register.signal});return this.authToken=r.token,r}async registerAgent(e,t){let s=v.Session.getCookie("livekit-agent-token");if(s){if(this.decodeJwtPayload(s)?.username===t.name)return this.authToken=s,s;v.Session.deleteCookie("livekit-agent-token")}let n=await l(`${this.authUrl}/admins/register`,{method:"POST",body:JSON.stringify({externalId:e,name:t.name,email:t.email,avatar:t.avatar}),headers:{"X-Onlive-Organization-Id":this.organizationId,"Content-Type":"application/json"},credentials:"include",signal:this.abortControllers.register.signal});return v.Session.setCookie("livekit-agent-token",n.token,1440*60),this.authToken=n.token,n.token}decodeJwtPayload(e){try{let t=e.split(".");if(t.length!==3)return null;let s=t[1],n=atob(s.replace(/-/g,"+").replace(/_/g,"/"));return JSON.parse(n)}catch{return null}}async createRoom(e,t={}){this.room=this.ensureRoom();let s=await l(`${this.apiUrl}/rooms`,{method:"POST",body:JSON.stringify(e),headers:{Authorization:`Bearer ${this.authToken}`,"X-Onlive-Organization-Id":this.organizationId,"Content-Type":"application/json"},signal:this.abortControllers.createRoom.signal});return this.setRoomMetadata(s),this.setupParticipantAttributesHandler(),this.room.connect(s.wsURL,s.token).then(()=>{this.room.localParticipant.setAttributes(t)}),this.initializeRoomHandlers(),this.room}async joinRoom(e,t,s,n){let r=await l(`${this.apiUrl}/rooms/${e}/join`,{method:"POST",body:JSON.stringify({timezone:t,language:s,...n??{}}),headers:{Authorization:`Bearer ${this.authToken}`,"X-Onlive-Organization-Id":this.organizationId,"Content-Type":"application/json"},signal:this.abortControllers.createRoom.signal});return this.setRoomMetadata(r),this.setupParticipantAttributesHandler(),await this.room.connect(r.wsURL,r.token),this.initializeRoomHandlers(),this.room}setRoomMetadata(e){this.room.id=e.id,this.room.groupId=e.groupId,this.room.createdAt=e.createdAt,this.room.connectedAt=new Date().toISOString()}setupParticipantAttributesHandler(){this.room.on(p.RoomEvent.ParticipantAttributesChanged,e=>{e.identity===this.room.localParticipant.identity&&y.updateSessionWithRegistrationData(e.attributes)})}async evaluateRoom(e){let t=e.roomId||this.room?.id;if(!t)throw new Error("Room ID is required for evaluation");return l(`${this.apiUrl}/rooms/${t}/evaluate`,{method:"POST",body:JSON.stringify({rating:e.rating,comment:e.comment}),headers:{Authorization:`Bearer ${this.authToken}`,"X-Onlive-Organization-Id":this.organizationId,"Content-Type":"application/json"},signal:this.abortControllers.evaluateRoom.signal})}async closeRoom(){if(this.room)return l(`${this.apiUrl}/rooms/${this.room.id}/close`,{method:"POST",headers:{Authorization:`Bearer ${this.authToken}`,"X-Onlive-Organization-Id":this.organizationId,"Content-Type":"application/json"},signal:this.abortControllers.closeRoom.signal})}async disconnect(){this.room&&(this.room.removeAllListeners(),await this.room.disconnect(),this.room=null)}async disconnectAndCloseRoom(){await this.closeRoom(),await this.disconnect()}async readRoom(e){return l(`${this.apiUrl}/rooms/${e}/read`,{method:"POST",headers:{Authorization:`Bearer ${this.authToken}`,"X-Onlive-Organization-Id":this.organizationId,"Content-Type":"application/json"},signal:this.abortControllers.persistMessage.signal})}async getRooms(e){let t=new URLSearchParams;return e.page&&t.append("page",e.page.toString()),e.limit&&t.append("limit",e.limit.toString()),e.offset&&t.append("offset",e.offset.toString()),e.orderBy&&t.append("orderBy",e.orderBy),e.orderDir&&t.append("orderDir",e.orderDir),e.ids?.length&&t.append("ids",e.ids.join(",")),e.with?.length&&t.append("with",e.with.join(",")),e.count?.length&&t.append("count",e.count.join(",")),e.latestOnly&&t.append("latestOnly",e.latestOnly.toString()),e.includeUnread&&t.append("includeUnread",e.includeUnread.toString()),e.roomStatus&&t.append("roomStatus",e.roomStatus),e.archived&&t.append("archived",e.archived.toString()),e.participantIds?.length&&t.append("participantIds",e.participantIds.join(",")),e.participantExternalIds?.length&&t.append("participantExternalIds",e.participantExternalIds.join(",")),e.groupId&&t.append("groupId",e.groupId),e.hasMessages!==void 0&&t.append("hasMessages",e.hasMessages.toString()),l(`${this.authUrl}/rooms?${t}`,{method:"GET",headers:{"X-Onlive-Organization-Id":this.organizationId,"Content-Type":"application/json"},credentials:"include",signal:this.abortControllers.getRooms.signal})}async sendMessage(e,t){let s=await this.room.localParticipant.sendText(e,{topic:this.channelTopic,attributes:t});this.emitMessage({id:s.id,timestamp:Date.now(),message:e,assets:JSON.parse(t?.assets||"[]"),from:this.room.localParticipant}),this.messagePersistence==="client"&&this.persistMessage({roomId:this.room.id,content:e,externalId:s.id,identity:this.room.localParticipant?.identity,kind:this.room.localParticipant?.kind})}async persistMessage(e){return l(`${this.apiUrl}/messages/create`,{method:"POST",body:JSON.stringify(e),headers:{Authorization:`Bearer ${this.authToken}`,"X-Onlive-Organization-Id":this.organizationId,"Content-Type":"application/json"},signal:this.abortControllers.persistMessage.signal})}async getMessages(e){let t=new URLSearchParams;return e.limit&&t.append("limit",e.limit.toString()),e.with&&t.append("with",e.with.join(",")),(await l(`${this.apiUrl}/messages/search${t.size?`?${t.toString()}`:""}`,{method:"POST",body:JSON.stringify(e),headers:{Authorization:`Bearer ${this.authToken}`,"X-Onlive-Organization-Id":this.organizationId,"Content-Type":"application/json"},signal:this.abortControllers.createRoom.signal})).items}async sendMessageReport(e){try{return l(`${this.apiUrl}/messages/${e.messageId}/report`,{method:"POST",headers:{Authorization:`Bearer ${this.authToken}`,"X-Onlive-Organization-Id":this.organizationId,"Content-Type":"application/json"},signal:this.abortControllers.sendMessageReport.signal})}catch(t){console.error("Error sending message report:",t)}}async deleteMessageReport(e){try{return l(`${this.apiUrl}/messages/${e.messageId}/report`,{method:"DELETE",headers:{Authorization:`Bearer ${this.authToken}`,"X-Onlive-Organization-Id":this.organizationId,"Content-Type":"application/json"},signal:this.abortControllers.deleteMessageReport.signal})}catch(t){console.error("Error deleting message report:",t)}}async updateMessageReactions(e){try{return l(`${this.apiUrl}/messages/${e.messageId}/reactions`,{method:"PATCH",body:JSON.stringify({add:e.add||[],remove:e.remove||[]}),headers:{Authorization:`Bearer ${this.authToken}`,"X-Onlive-Organization-Id":this.organizationId,"Content-Type":"application/json"},signal:this.abortControllers.updateMessageReactions.signal})}catch(t){console.error("Error updating message reactions:",t)}}subscribeMessages(e){return this.listeners.add(e),()=>{this.listeners.delete(e)}}async sendTypingIndicator(e){try{let t=new TextEncoder().encode(JSON.stringify({type:"typing",isTyping:e,timestamp:Date.now(),participantId:this.room.localParticipant.identity}));await this.room.localParticipant.publishData(t,{reliable:!1,topic:u})}catch(t){console.warn("Failed to send typing indicator:",t)}}subscribeTypingIndicators(e){return this.typingListeners.add(e),()=>{this.typingListeners.delete(e)}}unsubscribeTypingIndicators(e){this.typingListeners.delete(e)}async sendContextualEvent(e){try{let t=JSON.stringify(e);await this.room.localParticipant.sendText(t,{topic:this.eventsTopic})}catch(t){console.warn("Failed to send event:",t)}}async requestNewRoom(e){return l(`${this.apiUrl}/rooms/request-new`,{method:"POST",body:JSON.stringify(e),headers:{Authorization:`Bearer ${this.authToken}`,"X-Onlive-Organization-Id":this.organizationId,"Content-Type":"application/json"}})}async confirmRoomRequest(e){return l(`${this.apiUrl}/rooms/confirm-call`,{method:"POST",body:JSON.stringify({roomId:e}),headers:{Authorization:`Bearer ${this.authToken}`,"X-Onlive-Organization-Id":this.organizationId,"Content-Type":"application/json"}})}async cancelRoomRequest(e){return l(`${this.apiUrl}/rooms/cancel-call`,{method:"POST",body:JSON.stringify({roomId:e}),headers:{Authorization:`Bearer ${this.authToken}`,"X-Onlive-Organization-Id":this.organizationId,"Content-Type":"application/json"}})}async finishCall(){return l(`${this.apiUrl}/rooms/finish-call`,{method:"POST",body:JSON.stringify({roomId:this.room.id}),headers:{Authorization:`Bearer ${this.authToken}`,"X-Onlive-Organization-Id":this.organizationId,"Content-Type":"application/json"}})}isFirebaseEnabled(){return!!(this.firebaseApi&&this.presencePath&&this.callsPath)}getFirebase(){if(!this.firebaseApi||!this.presencePath||!this.callsPath)throw new Error("Firebase is not initialized. Provide firebaseConfig in constructor.");return{api:this.firebaseApi,presencePath:this.presencePath,callsPath:this.callsPath}}buildAgentPresencePath(e){return`${this.presencePath}/${e}`}onPresenceChange(e){let{api:t,presencePath:s}=this.getFirebase();return t.onChildChanged(s,(n,r)=>e(n,r))}onPresenceAgentChange(e,t){let{api:s}=this.getFirebase();return s.onValue(this.buildAgentPresencePath(e),(n,r)=>t(n,r))}async createCallRequest(e){let{api:t,callsPath:s}=this.getFirebase(),r=(await l(`${this.apiUrl}/rooms/call-request`,{method:"POST",headers:{Authorization:`Bearer ${this.authToken}`,"X-Onlive-Organization-Id":this.organizationId,"Content-Type":"application/json"},body:JSON.stringify(e)})).id;return t.onDisconnectUpdate(`${s}/${r}`,{status:"disconnected"}),r}onNewCallRequest(e){let{api:t,callsPath:s}=this.getFirebase();return t.onChildAdded(s,(n,r)=>e(n,{...r,id:n}))}onCallRequestChange(e){let{api:t,callsPath:s}=this.getFirebase();return t.onChildChanged(s,(n,r)=>e(n,{...r,id:n}))}onCallRequestRemoved(e){let{api:t,callsPath:s}=this.getFirebase();return t.onChildRemoved(s,n=>e(n))}async acceptCallRequest(e){let{api:t,callsPath:s}=this.getFirebase();return await t.cancelOnDisconnect(`${s}/${e}`),t.update(`${s}/${e}`,{status:"accepted"})}async cancelCallRequest(e){let{api:t,callsPath:s}=this.getFirebase();await t.cancelOnDisconnect(`${s}/${e}`),await l(`${this.apiUrl}/rooms/call-request/cancel`,{method:"POST",headers:{Authorization:`Bearer ${this.authToken}`,"X-Onlive-Organization-Id":this.organizationId,"Content-Type":"application/json"},body:JSON.stringify({callId:e})})}async cancelOnDisconnect(e){let{api:t,callsPath:s}=this.getFirebase();await t.cancelOnDisconnect(`${s}/${e}`)}subscribePendingRequests(e,t={}){let{api:s,callsPath:n}=this.getFirebase();t.resetSeen&&this.seenRequestIds.clear(),this.firebaseUnsubscribers["pending-requests"]?.();let r=s.query(n,{orderBy:"child",childKey:"status",equalTo:"pending"}),a=s.onChildAddedQuery(r,(g,A)=>{if(!g||this.seenRequestIds.has(g))return;let P={...A,id:g};this.seenRequestIds.add(g),e(g,P)});return this.firebaseUnsubscribers["pending-requests"]=a,()=>{a?.(),delete this.firebaseUnsubscribers["pending-requests"]}}subscribeRequestChanges(e){let{api:t,callsPath:s}=this.getFirebase();this.firebaseUnsubscribers["request-changes"]?.();let n=t.onChildChanged(s,(r,a)=>{if(!r)return;let g=JSON.stringify(a);this.lastSnapshotById.get(r)!==g&&(this.lastSnapshotById.set(r,g),e(r,{...a,id:r}))});return this.firebaseUnsubscribers["request-changes"]=n,()=>{n?.(),delete this.firebaseUnsubscribers["request-changes"]}}async tryAcceptRequest(e){let{api:t,callsPath:s}=this.getFirebase(),n=`${s}/${e}`;return await t.transaction(n,a=>a&&(a.status==="pending"?{...a,status:"accepted"}:a)),(await t.getOnce(n))?.status==="accepted"}onRoomSync(e,t){let{api:s}=this.getFirebase(),n=`orgs/${this.organizationId}/rooms/${e}/sync`;return s.onValue(n,(r,a)=>{t(a)})}async clearRoomSync(e,t){let{api:s}=this.getFirebase(),n=`orgs/${this.organizationId}/rooms/${e}/sync`;await s.write(n,{needsSync:!1,reason:t||null,timestamp:Date.now()})}onNewRoomRequest(e,t){let{api:s}=this.getFirebase(),n=`orgs/${this.organizationId}/rooms/${e}/call`;return s.onValue(n,(r,a)=>{t(a)})}unsubscribeAllFirebase(){Object.values(this.firebaseUnsubscribers).forEach(e=>e?.()),this.firebaseUnsubscribers={}}async destroy(){this.unsubscribeAllFirebase(),this.listeners.clear(),this.typingListeners.clear(),this.transcriptionMap.clear(),this.seenRequestIds.clear(),this.lastSnapshotById.clear(),Object.values(this.abortControllers).forEach(e=>e.abort()),await this.disconnect()}};0&&(module.exports={CHAT_TOPIC,ConversationService,EVENTS_TOPIC,Room,TRANSCRIPTION_TOPIC,TYPING_INDICATOR_TOPIC});
1
+ /*! @onlive.ai/common-121 v0.2.184 | © 2026 Onlive.ai */
2
+ "use strict";var xt=Object.defineProperty;var Pe=Object.getOwnPropertyDescriptor;var Te=Object.getOwnPropertyNames;var Ae=Object.prototype.hasOwnProperty;var Ce=(r,t)=>()=>(r&&(t=r(r=0)),t);var Kt=(r,t)=>{for(var e in t)xt(r,e,{get:t[e],enumerable:!0})},Ie=(r,t,e,i)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of Te(t))!Ae.call(r,n)&&n!==e&&xt(r,n,{get:()=>t[n],enumerable:!(i=Pe(t,n))||i.enumerable});return r};var we=r=>Ie(xt({},"__esModule",{value:!0}),r);var V={};Kt(V,{SYNTHETIC_MEDIA_PRESETS:()=>Rt,createSyntheticAudioTrack:()=>St,createSyntheticMedia:()=>bt,createSyntheticMediaFromPreset:()=>Lt,createSyntheticVideoTrack:()=>Mt});function Mt(r={}){let{width:t=640,height:e=480,fps:i=30,backgroundColor:n="#1a1a2e",foregroundColor:s="#4361ee",label:o="Mock Video",animation:a="wave"}=r,g=document.createElement("canvas");g.width=t,g.height=e;let d=g.getContext("2d"),h,q=Date.now(),lt={wave:R=>{d.fillStyle=n,d.fillRect(0,0,t,e),d.strokeStyle=s,d.lineWidth=3,d.beginPath();for(let k=0;k<t;k++){let S=e/2+Math.sin(k/t*4*Math.PI+R*.002)*(e/4);k===0?d.moveTo(k,S):d.lineTo(k,S)}d.stroke()},pulse:R=>{d.fillStyle=n,d.fillRect(0,0,t,e);let k=Math.sin(R*.003)*.3+.7,S=Math.min(t,e)*.3*k;d.beginPath(),d.arc(t/2,e/2,S,0,Math.PI*2),d.fillStyle=s,d.fill()},bars:R=>{d.fillStyle=n,d.fillRect(0,0,t,e);let k=20,S=t/k,D=e*.7;d.fillStyle=s;for(let B=0;B<k;B++){let Ft=Math.abs(Math.sin(B/k*Math.PI*2+R*.004))*D,be=B*S,Re=e-Ft;d.fillRect(be+2,Re,S-4,Ft)}},avatar:R=>{d.fillStyle=n,d.fillRect(0,0,t,e);let k=t/2,S=e/2-20,D=Math.min(t,e)*.15;d.beginPath(),d.arc(k,S,D,0,Math.PI*2),d.fillStyle=s,d.fill(),d.beginPath(),d.ellipse(k,S+D*2.2,D*1.5,D,0,Math.PI,0),d.fill(),Math.sin(R*.01)>0&&(d.beginPath(),d.arc(k,S+D*3,5+Math.sin(R*.02)*3,0,Math.PI*2),d.fillStyle="#22c55e",d.fill())},none:()=>{d.fillStyle=n,d.fillRect(0,0,t,e)}},ut=()=>{d.fillStyle="rgba(255, 255, 255, 0.8)",d.font=`${Math.floor(e*.04)}px system-ui, sans-serif`,d.textAlign="center",d.fillText(o,t/2,e-20)},H=()=>{let R=Date.now()-q;lt[a](R),ut(),h=requestAnimationFrame(H)};H();let zt=g.captureStream(i),jt=zt.getVideoTracks()[0];return{track:jt,stream:zt,cleanup:()=>{cancelAnimationFrame(h),jt.stop()}}}function St(r={}){let{frequency:t=440,volume:e=.1,waveType:i="sine",addVariation:n=!0,enabled:s=!1}=r,o=new AudioContext,a=o.createMediaStreamDestination(),g=o.createOscillator();g.type=i,g.frequency.value=t;let d=o.createGain();d.gain.value=s?e:0;let h=null,q=null;n&&(h=o.createOscillator(),h.frequency.value=.5,q=o.createGain(),q.gain.value=10,h.connect(q),q.connect(g.frequency),h.start()),g.connect(d),d.connect(a),g.start();let lt=a.stream,ut=lt.getAudioTracks()[0];return{track:ut,stream:lt,setVolume:H=>{d.gain.value=Math.max(0,Math.min(1,H))},setEnabled:H=>{d.gain.value=H?e:0},cleanup:()=>{g.stop(),h?.stop(),o.close(),ut.stop()}}}function bt(r,t){let e=Mt(r),i=St(t),n=new MediaStream([e.track,i.track]);return{videoTrack:e.track,audioTrack:i.track,combinedStream:n,setAudioVolume:i.setVolume,setAudioEnabled:i.setEnabled,cleanup:()=>{e.cleanup(),i.cleanup()}}}function Lt(r){let t=Rt[r];return bt(t.video,t.audio)}var Rt,U=Ce(()=>{"use strict";Rt={localCamera:{video:{width:640,height:480,animation:"avatar",label:"You",foregroundColor:"#4361ee"},audio:{enabled:!1}},agentCamera:{video:{width:640,height:480,animation:"avatar",label:"AI Agent",foregroundColor:"#22c55e",backgroundColor:"#0f172a"},audio:{enabled:!1,frequency:300}},screenShare:{video:{width:1920,height:1080,animation:"bars",label:"Screen Share",backgroundColor:"#0a0a0a",foregroundColor:"#f59e0b"},audio:{enabled:!1}},voiceOnly:{video:{width:320,height:240,animation:"wave",label:"Voice Call"},audio:{enabled:!1,volume:.05}}}});var Le={};Kt(Le,{AgentNotFoundError:()=>nt,CHAT_TOPIC:()=>ht,ConversationService:()=>z,ConversationServiceFactory:()=>_,DEFAULT_AGENT_CONFIG:()=>X,EVENTS_TOPIC:()=>ft,InvalidOperationError:()=>ot,MockAgent:()=>y,MockAgentPresets:()=>_t,MockByteStreamReader:()=>gt,MockConversationService:()=>w,MockEventEmitter:()=>K,MockLiveKitError:()=>u,MockLocalParticipant:()=>N,MockParticipant:()=>C,MockRoom:()=>I,MockServiceActions:()=>$t,MockState:()=>J,MockTextStreamReader:()=>G,MockTextStreamWriter:()=>dt,MockTrack:()=>b,MockTrackPublication:()=>M,NetworkError:()=>st,ParticipantAlreadyJoinedError:()=>tt,ParticipantKindValue:()=>Pt,ParticipantNotFoundError:()=>et,Room:()=>W,RoomEndedError:()=>Z,RoomNotFoundError:()=>T,SYNTHETIC_MEDIA_PRESETS:()=>Rt,StorybookScenarios:()=>Me,TRANSCRIPTION_TOPIC:()=>kt,TYPING_INDICATOR_TOPIC:()=>Q,TimeoutError:()=>at,TrackNotFoundError:()=>it,UnauthorizedError:()=>rt,createAgentFixture:()=>Ot,createAgentWithCannedResponses:()=>de,createChatScenario:()=>he,createConversationFixture:()=>Nt,createConversationService:()=>se,createDefaultConfig:()=>ct,createDefaultRoomFixture:()=>It,createDeterministicConfig:()=>me,createErrorFromMockError:()=>F,createLatencyConfig:()=>pe,createMessageFixture:()=>le,createMockConversationService:()=>Ct,createMockServiceFactory:()=>Se,createParticipantBatch:()=>ce,createParticipantFixture:()=>Ut,createRoomWithAgent:()=>Et,createRoomWithAgentAndDataTrack:()=>oe,createRoomWithLocalParticipant:()=>wt,createRoomWithMediaTracks:()=>ae,createRoomWithTwoParticipants:()=>Dt,createSequentialAgent:()=>ge,createStrictConfig:()=>ue,createSyntheticAudioTrack:()=>St,createSyntheticMedia:()=>bt,createSyntheticMediaFromPreset:()=>Lt,createSyntheticVideoTrack:()=>Mt,createTextStream:()=>qt,createVideoCallScenario:()=>ke,decodeMockToken:()=>Wt,destroyStorybookMockService:()=>fe,generateMockApiResponseId:()=>ee,generateMockExternalId:()=>ie,generateMockId:()=>l,generateMockIdBatch:()=>ne,generateMockMessageId:()=>te,generateMockParticipantIdentity:()=>Xt,generateMockRoomName:()=>Yt,generateMockToken:()=>P,generateMockTrackSid:()=>Zt,generateMockWsUrl:()=>j,generateSeededMockId:()=>Qt,generateStrategyResponse:()=>Y,getStorybookMockService:()=>m,isMockConversationService:()=>ye,isMockError:()=>A,isMockLiveKitError:()=>re,resetIdCounter:()=>yt,resetStorybookMockService:()=>Ht,setIdCounter:()=>Bt,withMockConversationService:()=>ve});module.exports=we(Le);var vt=require("@onlive.ai/tracker/session"),$=require("livekit-client");var Vt=require("firebase/app"),c=require("firebase/database"),pt=class{constructor(t){this.onChildChanged=(t,e)=>(0,c.onChildChanged)(this.ref(t),i=>e(i.key||"",i.val(),i));this.onChildRemoved=(t,e)=>(0,c.onChildRemoved)(this.ref(t),i=>e(i.key||"",i.val(),i));this.onChildChangedQuery=(t,e)=>(0,c.onChildChanged)(t,i=>e(i.key||"",i.val(),i));this.onChildRemovedQuery=(t,e)=>(0,c.onChildRemoved)(t,i=>e(i.key||"",i.val(),i));let e=(0,Vt.initializeApp)(t.config);this.db=(0,c.getDatabase)(e)}ref(t){return(0,c.ref)(this.db,t)}async getOnce(t){let e=await(0,c.get)(this.ref(t));return e.exists()?e.val():null}async getOnceQuery(t){let e=await(0,c.get)(t),i=[];return e.exists()&&e.forEach(n=>{i.push({key:n.key||"",value:n.val()})}),i}onValue(t,e){return(0,c.onValue)(this.ref(t),i=>e(i.key??"",i.val(),i),i=>console.error("onValue error",i))}onValueQuery(t,e){return(0,c.onValue)(t,i=>e(i.key??"",i.val(),i),i=>console.error("onValueQuery error",i))}onChildAdded(t,e){return(0,c.onChildAdded)(this.ref(t),i=>e(i.key||"",i.val(),i),i=>console.error("onChildAdded error",i))}onChildAddedQuery(t,e){return(0,c.onChildAdded)(t,i=>e(i.key||"",i.val(),i),i=>console.error("onChildAddedQuery error",i))}write(t,e){return(0,c.set)(this.ref(t),e)}update(t,e){return(0,c.update)(this.ref(t),e)}remove(t){return(0,c.remove)(this.ref(t))}async push(t,e){let i=(0,c.push)(this.ref(t));return await(0,c.set)(i,e),i.key}onDisconnectUpdate(t,e){return(0,c.onDisconnect)(this.ref(t)).update(e)}cancelOnDisconnect(t){return(0,c.onDisconnect)(this.ref(t)).cancel()}transaction(t,e){return(0,c.runTransaction)(this.ref(t),i=>e(i))}query(t,e={}){let i=this.ref(t);return e.orderBy==="child"&&e.childKey&&(i=(0,c.query)(i,(0,c.orderByChild)(e.childKey))),e.orderBy==="key"&&(i=(0,c.query)(i,(0,c.orderByKey)())),e.orderBy==="value"&&(i=(0,c.query)(i,(0,c.orderByValue)())),e.startAt!=null&&(i=(0,c.query)(i,(0,c.startAt)(e.startAt))),e.endAt!=null&&(i=(0,c.query)(i,(0,c.endAt)(e.endAt))),e.equalTo!=null&&(i=(0,c.query)(i,(0,c.equalTo)(e.equalTo))),e.limitFirst!=null&&(i=(0,c.query)(i,(0,c.limitToFirst)(e.limitFirst))),e.limitLast!=null&&(i=(0,c.query)(i,(0,c.limitToLast)(e.limitLast))),i}};var p=async(r,t)=>{let e=await fetch(r,t);if(!e.ok){let i=await e.json().catch(()=>({}));throw new Error(JSON.stringify({status:e.status,statusText:e.statusText,...i}))}return e&&e.json()};var Jt=r=>{let t="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",e="";for(let i=0;i<r;i++)e+=t.charAt(Math.floor(Math.random()*t.length));return e};var Gt=require("@onlive.ai/tracker/generator"),f=require("@onlive.ai/tracker/session"),x="chatbot",mt=class r{static hasSession(){return!!f.Session.getCookie(x)}static getSession(t={role:"guest",regenerate:!1}){t.regenerate&&(f.Session.id=Gt.Generator.uuid(),f.Session.deleteCookie(x));let e=f.Session.getCookie(x);return e&&r.isValidSession(e,t.role)?e:r.createSession(t.role)}static createSession(t){let e={externalId:t==="agent"?String(r.getUserId()||f.Session.id):f.Session.id,secret:Jt(16),createdAt:new Date().toISOString()};return f.Session.setCookie(x,e,3600*24*365),e}static isValidSession(t,e){if(e==="guest")return!0;let i=r.getUserId();return!!(i&&String(i)===t.externalId)}static getUserId(){return f.Session.getCookie("user-id",{objectKey:"userId",storageKey:"user",storageType:"localStorage",ttl:3600*24*365,preserveData:!0})}static updateSessionWithRegistrationData(t){let e=f.Session.getCookie(x);if(e||(e=r.createSession("guest")),e){let i={...e,registrationData:t};f.Session.setCookie(x,i,3600*24*365)}}static hasRegistrationData(){return!!f.Session.getCookie(x)?.registrationData}static async getAgentInfo(t){return fetch(`${t}/api/v1/auth/user-info`,{credentials:"include"}).then(e=>e.json())}static getRegistrationData(){return f.Session.getCookie(x)?.registrationData}};var ht="lk.chat",kt="lk.transcription",ft="lk.events",Q="typing-indicator";var W=class extends $.Room{},z=class{constructor(t){this.listeners=new Set;this.typingListeners=new Set;this.transcriptionMap=new Map;this.abortControllers={register:new AbortController,createRoom:new AbortController,quickStart:new AbortController,closeRoom:new AbortController,evaluateRoom:new AbortController,persistMessage:new AbortController,sendMessageReport:new AbortController,deleteMessageReport:new AbortController,updateMessageReactions:new AbortController,getRooms:new AbortController};this.authToken=null;this.firebaseUnsubscribers={};this.seenRequestIds=new Set;this.lastSnapshotById=new Map;this.handleIncomingMessage=async(t,e)=>{let i=t?.info?.id,n=t.info?.attributes?.["lk.segment_id"];n&&(this.transcriptionMap.has(n)?i=this.transcriptionMap.get(n)||"":this.transcriptionMap.set(n,i));let s=e?.identity?this.room.getParticipantByIdentity(e.identity):void 0,o="";for await(let a of t)o+=a,this.emitMessage({id:i,timestamp:Date.now(),message:o,assets:JSON.parse(t.info?.attributes?.assets||"[]"),from:s});this.messagePersistence==="client"&&this.persistMessage({roomId:this.room.id,content:o,externalId:i,identity:s?.identity,kind:s?.kind})};this.emitMessage=t=>{for(let e of this.listeners)e([t])};this.handleDataReceived=(t,e,i,n)=>{if(n===Q)try{let s=JSON.parse(new TextDecoder().decode(t));if(s.type==="typing"&&s.participantId!==this.room.localParticipant.identity){let o={type:"typing",isTyping:s.isTyping,timestamp:s.timestamp,participantId:s.participantId};this.emitTypingIndicator(o)}}catch(s){console.warn("Failed to parse typing indicator:",s)}};this.emitTypingIndicator=t=>{for(let e of this.typingListeners)e(t)};this.apiUrl=t.apiUrl,this.authUrl=t.authUrl,this.organizationId=t.organizationId,this.channelTopic=t.channelTopic||ht,this.transcriptionTopic=t.transcriptionTopic||kt,this.eventsTopic=t.eventsTopic||ft,this.messagePersistence=t.messagePersistence||"disabled",this.room=this.createRoomInstance(),t.firebaseConfig&&this.initializeFirebase(t.firebaseConfig)}createRoomInstance(){return new W({adaptiveStream:!0,dynacast:!0})}ensureRoom(){return this.room||(this.room=this.createRoomInstance()),this.room}initializeFirebase(t){this.firebaseApi=new pt({config:t}),this.presencePath=`orgs/${this.organizationId}/presence`,this.callsPath=`orgs/${this.organizationId}/calls`}initializeRoomHandlers(){try{this.room.unregisterTextStreamHandler(this.channelTopic),this.room.unregisterTextStreamHandler(this.transcriptionTopic)}catch{}this.room.off($.RoomEvent.DataReceived,this.handleDataReceived),this.room.registerTextStreamHandler(this.channelTopic,this.handleIncomingMessage),this.room.registerTextStreamHandler(this.transcriptionTopic,this.handleIncomingMessage),this.room.on($.RoomEvent.DataReceived,this.handleDataReceived)}async registerUser(t,e,i,n){let s=await p(`${this.apiUrl}/users/register`,{method:"POST",body:JSON.stringify({externalId:t,secret:e,...i,metadata:n}),headers:{"X-Onlive-Organization-Id":this.organizationId,"Content-Type":"application/json"},signal:this.abortControllers.register.signal});if(!s.token)throw new Error("Registration failed: No token received from server");return this.authToken=s.token,s}async registerAgent(t,e){let i=vt.Session.getCookie("livekit-agent-token");if(i){if(this.decodeJwtPayload(i)?.username===e.name)return this.authToken=i,i;vt.Session.deleteCookie("livekit-agent-token")}let n=await p(`${this.authUrl}/admins/register`,{method:"POST",body:JSON.stringify({externalId:t,name:e.name,email:e.email,avatar:e.avatar}),headers:{"X-Onlive-Organization-Id":this.organizationId,"Content-Type":"application/json"},credentials:"include",signal:this.abortControllers.register.signal});return vt.Session.setCookie("livekit-agent-token",n.token,1440*60),this.authToken=n.token,n.token}decodeJwtPayload(t){try{let e=t.split(".");if(e.length!==3)return null;let i=e[1],n=atob(i.replace(/-/g,"+").replace(/_/g,"/"));return JSON.parse(n)}catch{return null}}async quickStart(t){this.room=this.ensureRoom();let e=await p(`${this.apiUrl}/rooms/quick-start`,{method:"POST",body:JSON.stringify(t),headers:{"X-Onlive-Organization-Id":this.organizationId,"Content-Type":"application/json"},signal:this.abortControllers.quickStart.signal});if(!e.user?.token)throw new Error("Quick start failed: No user token received from server");this.authToken=e.user.token;let i={id:e.room.id,groupId:e.room.groupId||"",token:e.room.token,wsURL:e.room.wsURL,createdAt:e.room.createdAt||new Date().toISOString(),affinity:e.room.affinity};return this.setRoomMetadata(i),this.setupParticipantAttributesHandler(),this.room.connect(i.wsURL,i.token),this.initializeRoomHandlers(),this.room}async createRoom(t){if(!this.authToken)throw new Error("Cannot create room: No authentication token. Call registerUser() first.");this.room=this.ensureRoom();let{initialMessage:e,...i}=t,n=await p(`${this.apiUrl}/rooms`,{method:"POST",body:JSON.stringify(i),headers:{Authorization:`Bearer ${this.authToken}`,"X-Onlive-Organization-Id":this.organizationId,"Content-Type":"application/json"},signal:this.abortControllers.createRoom.signal});return this.setRoomMetadata(n),this.setupParticipantAttributesHandler(),this.room.connect(n.wsURL,n.token).then(async()=>{if(e)try{await this.sendMessage(e)}catch(s){console.error("[ConversationService] Failed to send initial message:",s)}}),this.initializeRoomHandlers(),this.room}async joinRoom(t,e,i,n){let s=await p(`${this.apiUrl}/rooms/${t}/join`,{method:"POST",body:JSON.stringify({timezone:e,language:i,...n??{}}),headers:{Authorization:`Bearer ${this.authToken}`,"X-Onlive-Organization-Id":this.organizationId,"Content-Type":"application/json"},signal:this.abortControllers.createRoom.signal});return this.setRoomMetadata(s),this.setupParticipantAttributesHandler(),await this.room.connect(s.wsURL,s.token),this.initializeRoomHandlers(),this.room}setRoomMetadata(t){this.room.id=t.id,this.room.groupId=t.groupId,this.room.createdAt=t.createdAt,this.room.connectedAt=new Date().toISOString(),this.room.affinity=t.affinity}setupParticipantAttributesHandler(){this.room.on($.RoomEvent.ParticipantAttributesChanged,t=>{t.identity===this.room.localParticipant.identity&&mt.updateSessionWithRegistrationData(t.attributes)})}async evaluateRoom(t){let e=t.roomId||this.room?.id;if(!e)throw new Error("Room ID is required for evaluation");return p(`${this.apiUrl}/rooms/${e}/evaluate`,{method:"POST",body:JSON.stringify({rating:t.rating,comment:t.comment}),headers:{Authorization:`Bearer ${this.authToken}`,"X-Onlive-Organization-Id":this.organizationId,"Content-Type":"application/json"},signal:this.abortControllers.evaluateRoom.signal})}async closeRoom(){this.room&&(await p(`${this.apiUrl}/rooms/${this.room.id}/close`,{method:"POST",headers:{Authorization:`Bearer ${this.authToken}`,"X-Onlive-Organization-Id":this.organizationId,"Content-Type":"application/json"},signal:this.abortControllers.closeRoom.signal}),await this.stopAndUnpublishLocalTracks())}async disconnect(){this.room&&(await this.stopAndUnpublishLocalTracks(),this.room.removeAllListeners(),await this.room.disconnect(),this.room=null)}async stopAndUnpublishLocalTracks(){let t=this.room?.localParticipant;if(!t)return;await Promise.allSettled([t.setMicrophoneEnabled(!1),t.setCameraEnabled(!1),t.setScreenShareEnabled(!1)]);let e=Array.from(t.trackPublications.values());await Promise.all(e.map(async i=>{let n=i.track;if(n)try{await t.unpublishTrack(n,!0)}catch{n.stop()}}))}async disconnectAndCloseRoom(){await this.closeRoom(),await this.disconnect()}async readRoom(t){return p(`${this.apiUrl}/rooms/${t}/read`,{method:"POST",headers:{Authorization:`Bearer ${this.authToken}`,"X-Onlive-Organization-Id":this.organizationId,"Content-Type":"application/json"},signal:this.abortControllers.persistMessage.signal})}async getRooms(t){let e=new URLSearchParams;return t.page&&e.append("page",t.page.toString()),t.limit&&e.append("limit",t.limit.toString()),t.offset&&e.append("offset",t.offset.toString()),t.orderBy&&e.append("orderBy",t.orderBy),t.orderDir&&e.append("orderDir",t.orderDir),t.ids?.length&&e.append("ids",t.ids.join(",")),t.with?.length&&e.append("with",t.with.join(",")),t.count?.length&&e.append("count",t.count.join(",")),t.latestOnly&&e.append("latestOnly",t.latestOnly.toString()),t.includeUnread&&e.append("includeUnread",t.includeUnread.toString()),t.roomStatus&&e.append("roomStatus",t.roomStatus),t.archived&&e.append("archived",t.archived.toString()),t.participantIds?.length&&e.append("participantIds",t.participantIds.join(",")),t.participantExternalIds?.length&&e.append("participantExternalIds",t.participantExternalIds.join(",")),t.groupId&&e.append("groupId",t.groupId),t.hasMessages!==void 0&&e.append("hasMessages",t.hasMessages.toString()),p(`${this.authUrl}/rooms?${e}`,{method:"GET",headers:{"X-Onlive-Organization-Id":this.organizationId,"Content-Type":"application/json"},credentials:"include",signal:this.abortControllers.getRooms.signal})}async sendMessage(t,e){let i=await this.room.localParticipant.sendText(t,{topic:this.channelTopic,attributes:e});this.emitMessage({id:i.id,timestamp:Date.now(),message:t,assets:JSON.parse(e?.assets||"[]"),from:this.room.localParticipant}),this.messagePersistence==="client"&&this.persistMessage({roomId:this.room.id,content:t,externalId:i.id,identity:this.room.localParticipant?.identity,kind:this.room.localParticipant?.kind})}async persistMessage(t){return p(`${this.apiUrl}/messages/create`,{method:"POST",body:JSON.stringify(t),headers:{Authorization:`Bearer ${this.authToken}`,"X-Onlive-Organization-Id":this.organizationId,"Content-Type":"application/json"},signal:this.abortControllers.persistMessage.signal})}async getMessages(t){let e=new URLSearchParams;return t.limit&&e.append("limit",t.limit.toString()),t.with&&e.append("with",t.with.join(",")),(await p(`${this.apiUrl}/messages/search${e.size?`?${e.toString()}`:""}`,{method:"POST",body:JSON.stringify(t),headers:{Authorization:`Bearer ${this.authToken}`,"X-Onlive-Organization-Id":this.organizationId,"Content-Type":"application/json"},signal:this.abortControllers.createRoom.signal})).items}async sendMessageReport(t){try{return p(`${this.apiUrl}/messages/${t.messageId}/report`,{method:"POST",headers:{Authorization:`Bearer ${this.authToken}`,"X-Onlive-Organization-Id":this.organizationId,"Content-Type":"application/json"},signal:this.abortControllers.sendMessageReport.signal})}catch(e){console.error("Error sending message report:",e)}}async deleteMessageReport(t){try{return p(`${this.apiUrl}/messages/${t.messageId}/report`,{method:"DELETE",headers:{Authorization:`Bearer ${this.authToken}`,"X-Onlive-Organization-Id":this.organizationId,"Content-Type":"application/json"},signal:this.abortControllers.deleteMessageReport.signal})}catch(e){console.error("Error deleting message report:",e)}}async updateMessageReactions(t){try{return p(`${this.apiUrl}/messages/${t.messageId}/reactions`,{method:"PATCH",body:JSON.stringify({add:t.add||[],remove:t.remove||[]}),headers:{Authorization:`Bearer ${this.authToken}`,"X-Onlive-Organization-Id":this.organizationId,"Content-Type":"application/json"},signal:this.abortControllers.updateMessageReactions.signal})}catch(e){console.error("Error updating message reactions:",e)}}subscribeMessages(t){return this.listeners.add(t),()=>{this.listeners.delete(t)}}async sendTypingIndicator(t){if(!(!this.room||this.room.state!=="connected"))try{let e=new TextEncoder().encode(JSON.stringify({type:"typing",isTyping:t,timestamp:Date.now(),participantId:this.room.localParticipant.identity}));await this.room.localParticipant.publishData(e,{reliable:!1,topic:Q})}catch(e){console.warn("Failed to send typing indicator:",e)}}subscribeTypingIndicators(t){return this.typingListeners.add(t),()=>{this.typingListeners.delete(t)}}unsubscribeTypingIndicators(t){this.typingListeners.delete(t)}async sendContextualEvent(t){try{let e=JSON.stringify(t);await this.room.localParticipant.sendText(e,{topic:this.eventsTopic})}catch(e){console.warn("Failed to send event:",e)}}async requestNewRoom(t){return p(`${this.apiUrl}/rooms/request-new`,{method:"POST",body:JSON.stringify(t),headers:{Authorization:`Bearer ${this.authToken}`,"X-Onlive-Organization-Id":this.organizationId,"Content-Type":"application/json"}})}async confirmRoomRequest(t){return p(`${this.apiUrl}/rooms/confirm-call`,{method:"POST",body:JSON.stringify({roomId:t}),headers:{Authorization:`Bearer ${this.authToken}`,"X-Onlive-Organization-Id":this.organizationId,"Content-Type":"application/json"}})}async cancelRoomRequest(t){return p(`${this.apiUrl}/rooms/cancel-call`,{method:"POST",body:JSON.stringify({roomId:t}),headers:{Authorization:`Bearer ${this.authToken}`,"X-Onlive-Organization-Id":this.organizationId,"Content-Type":"application/json"}})}async finishCall(){if(this.room?.id)return p(`${this.apiUrl}/rooms/finish-call`,{method:"POST",body:JSON.stringify({roomId:this.room.id}),headers:{Authorization:`Bearer ${this.authToken}`,"X-Onlive-Organization-Id":this.organizationId,"Content-Type":"application/json"}})}isFirebaseEnabled(){return!!(this.firebaseApi&&this.presencePath&&this.callsPath)}getFirebase(){if(!this.firebaseApi||!this.presencePath||!this.callsPath)throw new Error("Firebase is not initialized. Provide firebaseConfig in constructor.");return{api:this.firebaseApi,presencePath:this.presencePath,callsPath:this.callsPath}}buildAgentPresencePath(t){return`${this.presencePath}/${t}`}onPresenceChange(t){let{api:e,presencePath:i}=this.getFirebase();return e.onChildChanged(i,(n,s)=>t(n,s))}onPresenceAgentChange(t,e){let{api:i}=this.getFirebase();return i.onValue(this.buildAgentPresencePath(t),(n,s)=>e(n,s))}async createCallRequest(t){let{api:e,callsPath:i}=this.getFirebase(),s=(await p(`${this.apiUrl}/rooms/call-request`,{method:"POST",headers:{Authorization:`Bearer ${this.authToken}`,"X-Onlive-Organization-Id":this.organizationId,"Content-Type":"application/json"},body:JSON.stringify(t)})).id;return e.onDisconnectUpdate(`${i}/${s}`,{status:"disconnected"}),s}onNewCallRequest(t){let{api:e,callsPath:i}=this.getFirebase();return e.onChildAdded(i,(n,s)=>t(n,{...s,id:n}))}onCallRequestChange(t){let{api:e,callsPath:i}=this.getFirebase();return e.onChildChanged(i,(n,s)=>t(n,{...s,id:n}))}onCallRequestRemoved(t){let{api:e,callsPath:i}=this.getFirebase();return e.onChildRemoved(i,n=>t(n))}async acceptCallRequest(t){let{api:e,callsPath:i}=this.getFirebase();return await e.cancelOnDisconnect(`${i}/${t}`),e.update(`${i}/${t}`,{status:"accepted"})}async cancelCallRequest(t){let{api:e,callsPath:i}=this.getFirebase();await e.cancelOnDisconnect(`${i}/${t}`),await p(`${this.apiUrl}/rooms/call-request/cancel`,{method:"POST",headers:{Authorization:`Bearer ${this.authToken}`,"X-Onlive-Organization-Id":this.organizationId,"Content-Type":"application/json"},body:JSON.stringify({callId:t})})}async cancelOnDisconnect(t){let{api:e,callsPath:i}=this.getFirebase();await e.cancelOnDisconnect(`${i}/${t}`)}subscribePendingRequests(t,e={}){let{api:i,callsPath:n}=this.getFirebase();e.resetSeen&&this.seenRequestIds.clear(),this.firebaseUnsubscribers["pending-requests"]?.();let s=i.query(n,{orderBy:"child",childKey:"status",equalTo:"pending"}),o=i.onChildAddedQuery(s,(a,g)=>{if(!a||this.seenRequestIds.has(a))return;let d={...g,id:a};this.seenRequestIds.add(a),t(a,d)});return this.firebaseUnsubscribers["pending-requests"]=o,()=>{o?.(),delete this.firebaseUnsubscribers["pending-requests"]}}subscribeRequestChanges(t){let{api:e,callsPath:i}=this.getFirebase();this.firebaseUnsubscribers["request-changes"]?.();let n=e.onChildChanged(i,(s,o)=>{if(!s)return;let a=JSON.stringify(o);this.lastSnapshotById.get(s)!==a&&(this.lastSnapshotById.set(s,a),t(s,{...o,id:s}))});return this.firebaseUnsubscribers["request-changes"]=n,()=>{n?.(),delete this.firebaseUnsubscribers["request-changes"]}}async tryAcceptRequest(t){let{api:e,callsPath:i}=this.getFirebase(),n=`${i}/${t}`;return await e.transaction(n,o=>o&&(o.status==="pending"?{...o,status:"accepted"}:o)),(await e.getOnce(n))?.status==="accepted"}onRoomSync(t,e){let{api:i}=this.getFirebase(),n=`orgs/${this.organizationId}/rooms/${t}/sync`;return i.onValue(n,(s,o)=>{e(o)})}async clearRoomSync(t,e){let{api:i}=this.getFirebase(),n=`orgs/${this.organizationId}/rooms/${t}/sync`;await i.write(n,{needsSync:!1,reason:e||null,timestamp:Date.now()})}onNewRoomRequest(t,e){let{api:i}=this.getFirebase(),n=`orgs/${this.organizationId}/rooms/${t}/call`;return i.onValue(n,(s,o)=>{e(o)})}unsubscribeAllFirebase(){Object.values(this.firebaseUnsubscribers).forEach(t=>t?.()),this.firebaseUnsubscribers={}}async destroy(){this.unsubscribeAllFirebase(),this.listeners.clear(),this.typingListeners.clear(),this.transcriptionMap.clear(),this.seenRequestIds.clear(),this.lastSnapshotById.clear(),Object.values(this.abortControllers).forEach(t=>t.abort()),await this.disconnect()}};var v=0;function yt(){v=0}function Bt(r){v=r}function l(r){return v++,`mock_${r}_${v}_${Date.now().toString(36)}`}function Qt(r,t){return`mock_${r}_${t.toString(36)}`}function P(r,t,e){let i=e||new Date().toISOString(),n=typeof btoa=="function"?btoa(i).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,""):i.replace(/[^a-zA-Z0-9]/g,"");return`mock_token_${r}_${t}_${n}`}function Wt(r){if(!r.startsWith("mock_token_"))return null;let t=r.replace("mock_token_","").split("_");if(t.length<3)return null;let e=t[t.length-1],i=t[t.length-2],n=t.slice(0,-2).join("_");try{let s=e.replace(/-/g,"+").replace(/_/g,"/"),o=typeof atob=="function"?atob(s):e;return{roomId:n,identity:i,timestamp:o}}catch{return null}}function j(r){return`wss://mock-livekit.local/room/${r}`}function Xt(r="participant",t){let e=t??v++;return`${r}_${e}_${Date.now().toString(36)}`}function Yt(r="room"){return v++,`${r}_${v}_${Date.now().toString(36)}`}function Zt(r,t){return v++,`TR_${r.toUpperCase()}_${t}_${v}`}function te(){return v++,`msg_${v}_${Date.now().toString(36)}_${Math.random().toString(36).slice(2,8)}`}function ee(r){return v++,`api_${r}_${v}_${Date.now().toString(36)}`}function ie(){return[Math.random().toString(16).slice(2,10),Math.random().toString(16).slice(2,6),Math.random().toString(16).slice(2,6),Math.random().toString(16).slice(2,6),Math.random().toString(16).slice(2,14)].join("-")}function ne(r,t){let e=[];for(let i=0;i<t;i++)e.push(l(r));return e}var X={responseStrategy:"echo",responseDelayMs:100,cannedResponses:[],type:"text",nature:"ai",simulateTyping:!1,typingDelayPerChar:20};function Y(r,t,e=[],i=0,n=Math.random){switch(r){case"echo":return{response:`Echo: ${t}`,nextIndex:i};case"canned":return{response:e[0]||"Default response",nextIndex:i};case"sequential":return{response:e[i]||"No more responses",nextIndex:(i+1)%Math.max(1,e.length)};case"random":{if(e.length===0)return{response:"Random response",nextIndex:i};let s=Math.floor(n()*e.length);return{response:e[s],nextIndex:i}}case"silent":return{response:"",nextIndex:i};case"error":throw new Error("Agent error");case"custom":return{response:"",nextIndex:i};default:return{response:"Default agent response",nextIndex:i}}}var y=class{constructor(t,e,i={}){this._state="idle";this.conversationHistory=[];this.responseIndex=0;this.eventListeners=new Set;this.randomFn=Math.random;this.messageCount=0;this.id=t,this.name=e,this.config={...X,...i}}get state(){return this._state}get isRunning(){return this._state==="running"}get history(){return[...this.conversationHistory]}getConfig(){return{...this.config}}updateConfig(t){this.config={...this.config,...t}}setStrategy(t){this.config.responseStrategy=t}setCannedResponses(t){this.config.cannedResponses=t,this.responseIndex=0}setCustomHandler(t){this.customHandler=t,this.config.responseStrategy="custom"}setRandomFunction(t){this.randomFn=t}async start(t){this._state!=="running"&&(this._state="starting",this.roomId=t,this.conversationHistory=[],this.responseIndex=0,this.messageCount=0,await this.delay(50),this._state="running",this.emitEvent({type:"started",agentId:this.id}))}async stop(){this._state==="running"&&(this._state="stopping",await this.delay(50),this._state="stopped",this.roomId=void 0,this.emitEvent({type:"stopped",agentId:this.id}))}async processMessage(t){if(this._state!=="running")throw new Error("Agent is not running");if(this.config.maxMessages&&this.messageCount>=this.config.maxMessages)return await this.stop(),"";this.addMessage(t,"user"),this.emitEvent({type:"message_received",agentId:this.id,message:t});let e;try{if(this.config.responseStrategy==="custom"&&this.customHandler)e=await this.customHandler(this.id,t,this.conversationHistory);else{if(this.config.responseStrategy==="silent")return"";if(this.config.responseStrategy==="error"){let i=new Error("Agent error");throw this.emitEvent({type:"error",agentId:this.id,error:i}),i}else{let i=Y(this.config.responseStrategy,t,this.config.cannedResponses,this.responseIndex,this.randomFn);e=i.response,this.responseIndex=i.nextIndex}}}catch(i){throw this._state="error",i}return this.config.simulateTyping&&this.config.typingDelayPerChar&&await this.delay(e.length*this.config.typingDelayPerChar),this.config.responseDelayMs&&await this.delay(this.config.responseDelayMs),this.addMessage(e,"agent"),this.messageCount++,this.emitEvent({type:"response_sent",agentId:this.id,response:e}),e}addEventListener(t){return this.eventListeners.add(t),()=>this.eventListeners.delete(t)}clearHistory(){this.conversationHistory=[],this.responseIndex=0}reset(){this._state="idle",this.roomId=void 0,this.conversationHistory=[],this.responseIndex=0,this.messageCount=0}toJSON(){return{id:this.id,name:this.name,state:this._state,roomId:this.roomId,config:this.config,historyLength:this.conversationHistory.length,messageCount:this.messageCount}}addMessage(t,e){let i={id:l("msg"),content:t,role:e,timestamp:Date.now()};return this.conversationHistory.push(i),i}emitEvent(t){for(let e of this.eventListeners)try{e(t)}catch(i){console.error("Error in agent event listener:",i)}}delay(t){return new Promise(e=>setTimeout(e,t))}},_t={echo(r="Echo Agent"){return new y(l("agent"),r,{responseStrategy:"echo"})},silent(r="Silent Agent"){return new y(l("agent"),r,{responseStrategy:"silent"})},sequential(r,t){return new y(l("agent"),r,{responseStrategy:"sequential",cannedResponses:t})},aiAssistant(r="AI Assistant"){return new y(l("agent"),r,{responseStrategy:"sequential",responseDelayMs:150,simulateTyping:!0,typingDelayPerChar:10,cannedResponses:["Hello! How can I help you today?","I understand. Let me help you with that.","Is there anything else I can assist you with?","Thank you for your question. Here's what I found...","I'm happy to help! What would you like to know?"]})},customerSupport(r="Support Agent"){return new y(l("agent"),r,{responseStrategy:"sequential",responseDelayMs:200,cannedResponses:["Thank you for contacting support. How may I assist you?","I apologize for any inconvenience. Let me look into that for you.","I've found a solution. Here's what you need to do...","Is there anything else I can help you with today?","Thank you for contacting us. Have a great day!"]})}};var u=class r extends Error{constructor(t,e,i){super(e),this.name="MockLiveKitError",this.code=t,this.details=i,typeof Error.captureStackTrace=="function"&&Error.captureStackTrace(this,r)}toMockError(){return{code:this.code,message:this.message,details:this.details}}static fromMockError(t){return new r(t.code,t.message,t.details)}},T=class extends u{constructor(t){super("ROOM_NOT_FOUND",`Room not found: ${t}`,{roomId:t}),this.name="RoomNotFoundError"}},Z=class extends u{constructor(t){super("ROOM_ENDED",`Room has ended: ${t}`,{roomId:t}),this.name="RoomEndedError"}},tt=class extends u{constructor(t,e){super("PARTICIPANT_ALREADY_JOINED",`Participant ${t} is already in room ${e}`,{identity:t,roomId:e}),this.name="ParticipantAlreadyJoinedError"}},et=class extends u{constructor(t){super("PARTICIPANT_NOT_FOUND",`Participant not found: ${t}`,{identity:t}),this.name="ParticipantNotFoundError"}},it=class extends u{constructor(t){super("TRACK_NOT_FOUND",`Track not found: ${t}`,{trackId:t}),this.name="TrackNotFoundError"}},nt=class extends u{constructor(t){super("AGENT_NOT_FOUND",`Agent not found: ${t}`,{agentId:t}),this.name="AgentNotFoundError"}},rt=class extends u{constructor(t="Unauthorized"){super("UNAUTHORIZED",t),this.name="UnauthorizedError"}},st=class extends u{constructor(t="Network error occurred"){super("NETWORK_ERROR",t),this.name="NetworkError"}},ot=class extends u{constructor(t,e){super("INVALID_OPERATION",t,e),this.name="InvalidOperationError"}},at=class extends u{constructor(t,e){super("TIMEOUT",`Operation timed out: ${t}`,{operation:t,timeoutMs:e}),this.name="TimeoutError"}};function F(r){switch(r.code){case"ROOM_NOT_FOUND":return new T(r.details?.roomId??"unknown");case"ROOM_ENDED":return new Z(r.details?.roomId??"unknown");case"PARTICIPANT_ALREADY_JOINED":return new tt(r.details?.identity??"unknown",r.details?.roomId??"unknown");case"PARTICIPANT_NOT_FOUND":return new et(r.details?.identity??"unknown");case"TRACK_NOT_FOUND":return new it(r.details?.trackId??"unknown");case"AGENT_NOT_FOUND":return new nt(r.details?.agentId??"unknown");case"UNAUTHORIZED":return new rt(r.message);case"NETWORK_ERROR":return new st(r.message);case"INVALID_OPERATION":return new ot(r.message,r.details);case"TIMEOUT":return new at(r.details?.operation??"unknown",r.details?.timeoutMs??0);default:return u.fromMockError(r)}}function A(r){return typeof r=="object"&&r!==null&&"code"in r&&"message"in r&&typeof r.code=="string"&&typeof r.message=="string"}function re(r){return r instanceof u}var K=class{constructor(){this.listeners={};this.wildcardListeners=new Set;this.eventHistory=[];this.maxHistorySize=1e3;this.recordHistory=!0}setMaxHistorySize(t){this.maxHistorySize=t,this.trimHistory()}setRecordHistory(t){this.recordHistory=t}on(t,e){return this.listeners[t]||(this.listeners[t]=new Set),this.listeners[t].add(e),()=>{this.off(t,e)}}once(t,e){let i=n=>{this.off(t,i),e(n)};return this.on(t,i)}off(t,e){this.listeners[t]?.delete(e)}onAny(t){return this.wildcardListeners.add(t),()=>{this.wildcardListeners.delete(t)}}offAny(t){this.wildcardListeners.delete(t)}removeAllListeners(t){t?delete this.listeners[t]:(this.listeners={},this.wildcardListeners.clear())}emit(t){this.recordHistory&&(this.eventHistory.push(t),this.trimHistory());let e=this.listeners[t.type];if(e)for(let i of e)try{i(t)}catch(n){console.error(`Error in mock event listener for ${t.type}:`,n)}for(let i of this.wildcardListeners)try{i(t)}catch(n){console.error("Error in mock wildcard event listener:",n)}}trimHistory(){this.eventHistory.length>this.maxHistorySize&&(this.eventHistory=this.eventHistory.slice(-this.maxHistorySize))}emitRoomCreated(t){let e={type:"roomCreated",timestamp:new Date().toISOString(),roomId:t.id,room:t};this.emit(e)}emitRoomEnded(t){let e={type:"roomEnded",timestamp:new Date().toISOString(),roomId:t};this.emit(e)}emitRoomConnectionStateChanged(t,e,i){let n={type:"roomConnectionStateChanged",timestamp:new Date().toISOString(),roomId:t,state:e,previousState:i};this.emit(n)}emitParticipantJoined(t,e){let i={type:"participantJoined",timestamp:new Date().toISOString(),roomId:t,participant:e};this.emit(i)}emitParticipantLeft(t,e){let i={type:"participantLeft",timestamp:new Date().toISOString(),roomId:t,participantIdentity:e};this.emit(i)}emitParticipantAttributesChanged(t,e,i,n){let s={type:"participantAttributesChanged",timestamp:new Date().toISOString(),roomId:t,participantIdentity:e,attributes:i,previousAttributes:n};this.emit(s)}emitTrackPublished(t,e,i){let n={type:"trackPublished",timestamp:new Date().toISOString(),roomId:t,participantIdentity:e,track:i};this.emit(n)}emitTrackUnpublished(t,e,i){let n={type:"trackUnpublished",timestamp:new Date().toISOString(),roomId:t,participantIdentity:e,trackId:i};this.emit(n)}emitTrackMuted(t,e){let i={type:"trackMuted",timestamp:new Date().toISOString(),roomId:t,trackId:e};this.emit(i)}emitTrackUnmuted(t,e){let i={type:"trackUnmuted",timestamp:new Date().toISOString(),roomId:t,trackId:e};this.emit(i)}emitMessageReceived(t,e){let i={type:"messageReceived",timestamp:new Date().toISOString(),roomId:t,message:e};this.emit(i)}emitMessageSent(t,e){let i={type:"messageSent",timestamp:new Date().toISOString(),roomId:t,message:e};this.emit(i)}emitTypingIndicator(t,e,i){let n={type:"typingIndicator",timestamp:new Date().toISOString(),roomId:t,participantIdentity:e,isTyping:i};this.emit(n)}emitAgentStarted(t,e){let i={type:"agentStarted",timestamp:new Date().toISOString(),roomId:t,agent:e};this.emit(i)}emitAgentStopped(t,e){let i={type:"agentStopped",timestamp:new Date().toISOString(),roomId:t,agentId:e};this.emit(i)}emitAgentMessage(t,e,i){let n={type:"agentMessage",timestamp:new Date().toISOString(),roomId:t,agentId:e,message:i};this.emit(n)}emitDataReceived(t,e,i,n){let s={type:"dataReceived",timestamp:new Date().toISOString(),roomId:t,participantIdentity:e,data:i,topic:n};this.emit(s)}emitError(t,e){let i={type:"error",timestamp:new Date().toISOString(),roomId:e,error:t};this.emit(i)}getHistory(t){return t?this.eventHistory.filter(e=>e.type===t):[...this.eventHistory]}getLastEvents(t,e){return(e?this.eventHistory.filter(n=>n.type===e):this.eventHistory).slice(-t)}clearHistory(){this.eventHistory=[]}listenerCount(t){return(this.listeners[t]?.size??0)+this.wildcardListeners.size}};var b=class{constructor(t,e,i,n){this.muted=!1;this.enabled=!0;this.attachedElements=new Set;this.kind=t,this.source=e,this.sid=l("TR"),this.mediaStreamTrack=i,this.mediaCleanup=n}get mediaTrack(){return this.mediaStreamTrack}attach(t){let e=t||document.createElement(this.kind==="video"?"video":"audio");if(this.mediaStreamTrack){let i=new MediaStream([this.mediaStreamTrack]);e.srcObject=i,e.autoplay=!0,this.kind==="video"&&(e.playsInline=!0,e.muted=!0)}return this.attachedElements.add(e),e}detach(t){if(t)return t.srcObject=null,this.attachedElements.delete(t),[t];let e=Array.from(this.attachedElements);for(let i of e)i.srcObject=null;return this.attachedElements.clear(),e}stop(){this.detach(),this.mediaCleanup&&this.mediaCleanup(),this.mediaStreamTrack&&this.mediaStreamTrack.stop(),this.enabled=!1}setMuted(t){this.muted=t,this.mediaStreamTrack&&(this.mediaStreamTrack.enabled=!t)}setEnabled(t){this.enabled=t,this.mediaStreamTrack&&(this.mediaStreamTrack.enabled=t)}},M=class{constructor(t,e){this.subscribed=!0;this.isEnabled=!0;this.track=t,this.trackSid=t.sid,this.trackName=e||`${t.kind}_${t.source}`,this.source=t.source,this.kind=t.kind}get isMuted(){return this.track?.muted??!1}get isSubscribed(){return this.subscribed&&this.track!==null}setSubscribed(t){this.subscribed=t}setEnabled(t){this.isEnabled=t,this.track&&(this.track.enabled=t)}setMuted(t){this.track&&this.track.setMuted(t)}};var N=class{constructor(t){this.identity="";this.sid="";this.name="";this.attributes={};this.kind="standard";this.trackPublications=new Map;this.audioTrackPublications=new Map;this.videoTrackPublications=new Map;this._cameraEnabled=!1;this._microphoneEnabled=!1;this._screenShareEnabled=!1;this.room=t,this.sid=l("PA"),this.joinedAt=new Date}get isCameraEnabled(){return this._cameraEnabled}get isMicrophoneEnabled(){return this._microphoneEnabled}get isScreenShareEnabled(){return this._screenShareEnabled}getTrackPublications(){return Array.from(this.trackPublications.values())}getTrackPublication(t){let i={camera:"camera",Camera:"camera",microphone:"microphone",Microphone:"microphone",screen_share:"screen_share",ScreenShare:"screen_share",screen_share_audio:"screen_share_audio",ScreenShareAudio:"screen_share_audio"}[t]||t;return this.trackPublications.get(i)}getTrackPublicationBySid(t){for(let e of this.trackPublications.values())if(e.trackSid===t)return e}setAttributes(t){this.attributes={...this.attributes,...t}}async setCameraEnabled(t,e){if(this._cameraEnabled=t,t){let{createSyntheticVideoTrack:n}=await Promise.resolve().then(()=>(U(),V)),{track:s,cleanup:o}=n({animation:"avatar",label:this.name||"Local Camera"}),a=new b("video","camera",s,o),g=new M(a,e?.name);return this.trackPublications.set("camera",g),this.videoTrackPublications.set(a.sid,g),this.room.emit("localTrackPublished",g,this),g}let i=this.trackPublications.get("camera");i&&(i.track?.stop(),this.trackPublications.delete("camera"),this.videoTrackPublications.delete(i.trackSid),this.room.emit("localTrackUnpublished",i,this))}async setMicrophoneEnabled(t,e){if(this._microphoneEnabled=t,t){let{createSyntheticAudioTrack:n}=await Promise.resolve().then(()=>(U(),V)),{track:s,cleanup:o}=n({enabled:!1}),a=new b("audio","microphone",s,o),g=new M(a,e?.name);return this.trackPublications.set("microphone",g),this.audioTrackPublications.set(a.sid,g),this.room.emit("localTrackPublished",g,this),g}let i=this.trackPublications.get("microphone");i&&(i.track?.stop(),this.trackPublications.delete("microphone"),this.audioTrackPublications.delete(i.trackSid),this.room.emit("localTrackUnpublished",i,this))}async setScreenShareEnabled(t,e){if(this._screenShareEnabled=t,t){let{createSyntheticVideoTrack:n}=await Promise.resolve().then(()=>(U(),V)),{track:s,cleanup:o}=n({animation:"bars",label:"Screen Share",width:1920,height:1080}),a=new b("video","screen_share",s,o),g=new M(a,e?.name||"screen");return this.trackPublications.set("screen_share",g),this.videoTrackPublications.set(a.sid,g),this.room.emit("localTrackPublished",g,this),g}let i=this.trackPublications.get("screen_share");i&&(i.track?.stop(),this.trackPublications.delete("screen_share"),this.videoTrackPublications.delete(i.trackSid),this.room.emit("localTrackUnpublished",i,this))}async publishTrack(t,e){let i=new M(t,e?.name),n=e?.source||t.source;return this.trackPublications.set(n,i),t.kind==="audio"?this.audioTrackPublications.set(t.sid,i):t.kind==="video"&&this.videoTrackPublications.set(t.sid,i),this.room.emit("localTrackPublished",i,this),i}async unpublishTrack(t){t.stop();for(let[e,i]of this.trackPublications)if(i.track===t){this.trackPublications.delete(e),t.kind==="audio"?this.audioTrackPublications.delete(t.sid):t.kind==="video"&&this.videoTrackPublications.delete(t.sid),this.room.emit("localTrackUnpublished",i,this);break}}async sendText(t,e){return{id:l("msg")}}async publishData(t,e){}async setMetadata(t){this.attributes.metadata=t}async setName(t){this.name=t}cleanup(){for(let t of this.trackPublications.values())t.track?.stop();this.trackPublications.clear(),this.audioTrackPublications.clear(),this.videoTrackPublications.clear(),this._cameraEnabled=!1,this._microphoneEnabled=!1,this._screenShareEnabled=!1}};var Pt=(s=>(s[s.STANDARD=0]="STANDARD",s[s.INGRESS=1]="INGRESS",s[s.EGRESS=2]="EGRESS",s[s.SIP=3]="SIP",s[s.AGENT=4]="AGENT",s))(Pt||{});function Ee(r){switch(r){case"standard":return 0;case"ingress":return 1;case"egress":return 2;case"sip":return 3;case"agent":return 4;default:return 0}}var C=class{constructor(t,e,i={},n="standard"){this.connectionQuality="excellent";this.isSpeaking=!1;this.audioLevel=0;this.trackPublications=new Map;this.identity=t,this.sid=l("PA"),this.name=e,this.attributes=i,this._kindString=n,this.kind=Ee(n),this.joinedAt=new Date}get isAgent(){return this.kind===4||this.attributes["lk.agent.name"]!==void 0}get kindString(){return this._kindString}get isCameraEnabled(){let t=this.getTrackPublication("camera");return!!(t?.track&&!t.isMuted)}get isMicrophoneEnabled(){let t=this.getTrackPublication("microphone");return!!(t?.track&&!t.isMuted)}getTrackPublication(t){for(let e of this.trackPublications.values())if(e.source===t)return e}getTrackPublicationBySid(t){return this.trackPublications.get(t)}getTrackPublications(){return Array.from(this.trackPublications.values())}getAudioTracks(){return this.getTrackPublications().filter(t=>t.kind==="audio")}getVideoTracks(){return this.getTrackPublications().filter(t=>t.kind==="video")}addTrackPublication(t){this.trackPublications.set(t.trackSid,t)}removeTrackPublication(t){let e=this.trackPublications.get(t);return e&&(this.trackPublications.delete(t),e.track?.stop()),e}setAttributes(t){this.attributes={...this.attributes,...t}}getAttribute(t){return this.attributes[t]}startSpeaking(t=.5){this.isSpeaking=!0,this.audioLevel=t}stopSpeaking(){this.isSpeaking=!1,this.audioLevel=0}setConnectionQuality(t){this.connectionQuality=t}cleanup(){for(let t of this.trackPublications.values())t.track?.stop();this.trackPublications.clear()}};var I=class{constructor(t){this.remoteParticipants=new Map;this._state="disconnected";this.eventHandlers=new Map;this.textStreamHandlers=new Map;this.rpcHandlers=new Map;this.mockService=t,this.localParticipant=new N(this),this.sid=l("RM")}get state(){return this._state}set state(t){let e=this._state;this._state=t,e!==t&&this.emit("connectionStateChanged",t,e)}get numParticipants(){return this.remoteParticipants.size+1}get isConnected(){return this._state==="connected"}async connect(t,e){this._state="connecting",this.emit("connectionStateChanged","connecting","disconnected"),await this.mockService.simulateLatency(),this._state="connected",this.connectedAt=new Date().toISOString(),this.emit("connectionStateChanged","connected","connecting"),this.emit("connected")}async disconnect(){for(let e of this.remoteParticipants.values())e.cleanup();this.remoteParticipants.clear(),this.localParticipant.cleanup();let t=this._state;this._state="disconnected",this.emit("connectionStateChanged","disconnected",t),this.emit("disconnected"),this.eventHandlers.clear()}async reconnect(){this._state="reconnecting",this.emit("connectionStateChanged","reconnecting","connected"),await this.mockService.simulateLatency(),this._state="connected",this.emit("connectionStateChanged","connected","reconnecting"),this.emit("reconnected")}on(t,e){return this.eventHandlers.has(t)||this.eventHandlers.set(t,new Set),this.eventHandlers.get(t).add(e),this}once(t,e){let i=(...n)=>{this.off(t,i),e(...n)};return this.on(t,i)}off(t,e){return this.eventHandlers.get(t)?.delete(e),this}removeAllListeners(){this.eventHandlers.clear()}emit(t,...e){let i=this.eventHandlers.get(t);if(i)for(let n of i)try{n(...e)}catch(s){console.error(`Error in mock room event handler for ${t}:`,s)}}registerRpcMethod(t,e){this.rpcHandlers.set(t,e)}unregisterRpcMethod(t){this.rpcHandlers.delete(t)}async callRpc(t,e,i,n=1e4){let s=this.rpcHandlers.get(t);if(!s)throw new Error(`RPC method not found: ${t}`);return s({callerIdentity:e,payload:i,responseTimeout:n})}registerTextStreamHandler(t,e){this.textStreamHandlers.set(t,e)}unregisterTextStreamHandler(t){this.textStreamHandlers.delete(t)}simulateTextStream(t,e){let i=this.textStreamHandlers.get(t);i&&i(e,{identity:e.participantIdentity})}getParticipantByIdentity(t){return t===this.localParticipant.identity?new C(this.localParticipant.identity,this.localParticipant.name,this.localParticipant.attributes):this.remoteParticipants.get(t)}getParticipantBySid(t){if(t===this.localParticipant.sid)return new C(this.localParticipant.identity,this.localParticipant.name,this.localParticipant.attributes);for(let e of this.remoteParticipants.values())if(e.sid===t)return e}async simulateParticipantJoin(t,e){let i=new C(t,e?.name,e?.attributes||{},e?.kind||"standard");return this.remoteParticipants.set(t,i),this.emit("participantConnected",i),e?.withCamera&&await this.simulateRemoteTrack(t,"video","camera"),e?.withMicrophone&&await this.simulateRemoteTrack(t,"audio","microphone"),i}simulateParticipantLeave(t){let e=this.remoteParticipants.get(t);if(e){for(let i of e.getTrackPublications())i.track?.stop(),this.emit("trackUnsubscribed",i.track,i,e);this.remoteParticipants.delete(t),this.emit("participantDisconnected",e)}}async simulateRemoteTrack(t,e,i){let n=this.remoteParticipants.get(t);if(!n)return;let s,o;if(e==="video"){let{createSyntheticVideoTrack:d}=await Promise.resolve().then(()=>(U(),V)),h=d({animation:n.isAgent?"avatar":"pulse",label:n.name||t,foregroundColor:n.isAgent?"#22c55e":"#4361ee"});s=h.track,o=h.cleanup}else if(e==="audio"){let{createSyntheticAudioTrack:d}=await Promise.resolve().then(()=>(U(),V)),h=d({enabled:!1});s=h.track,o=h.cleanup}let a=new b(e,i,s,o),g=new M(a);return n.addTrackPublication(g),this.emit("trackSubscribed",a,g,n),this.emit("trackPublished",g,n),a}simulateTrackUnpublished(t,e){let i=this.remoteParticipants.get(t);if(!i)return;let n=i.getTrackPublication(e);n&&(i.removeTrackPublication(n.trackSid),this.emit("trackUnpublished",n,i),this.emit("trackUnsubscribed",n.track,n,i))}async simulateAgentJoin(t,e="AI Agent"){return this.simulateParticipantJoin(t,{name:e,kind:"agent",withCamera:!0,withMicrophone:!0,attributes:{"lk.agent.name":e,"lk.agent.state":"active"}})}simulateAttributeChange(t,e){let i=this.remoteParticipants.get(t);if(i){let n={...i.attributes};i.setAttributes(e),this.emit("participantAttributesChanged",e,n,i)}}simulateTrackMuted(t,e,i){let n=this.remoteParticipants.get(t);if(!n)return;let s=n.getTrackPublication(e);s?.track&&(s.track.setMuted(i),this.emit(i?"trackMuted":"trackUnmuted",s,n))}simulateActiveSpeakersChanged(t){let e=[];for(let i of t){let n=this.remoteParticipants.get(i);n&&(n.startSpeaking(),e.push(n))}this.emit("activeSpeakersChanged",e)}simulateDataReceived(t,e,i,n){let s=this.remoteParticipants.get(e);this.emit("dataReceived",t,s,i,n)}};var J=class{constructor(t={}){this.rooms=new Map;this.participants=new Map;this.tracks=new Map;this.agents=new Map;this.messages=new Map;this.config=t,this.randomState=t.seed??Date.now()}updateConfig(t){this.config={...this.config,...t},t.seed!==void 0&&(this.randomState=t.seed)}getConfig(){return{...this.config}}random(){return this.randomState=(this.randomState*1103515245+12345)%2147483648,this.randomState/2147483648}createRoom(t,e,i){let n=l("room"),s=new Date().toISOString(),o={id:n,name:t,groupId:e||l("group"),createdAt:s,metadata:i,isActive:!0,participantIds:[],connectionState:"disconnected",wsURL:j(n),token:P(n,"pending",s)};return this.rooms.set(n,o),this.messages.set(n,[]),o}getRoom(t){return this.rooms.get(t)}getRoomByName(t){for(let e of this.rooms.values())if(e.name===t)return e}listRooms(t=!1){let e=Array.from(this.rooms.values());return t?e.filter(i=>i.isActive):e}updateRoomConnectionState(t,e){let i=this.rooms.get(t);if(!i)return;let n=i.connectionState;return i.connectionState=e,n}endRoom(t){let e=this.rooms.get(t);if(!e||!e.isActive)return!1;e.isActive=!1,e.endedAt=new Date().toISOString(),e.connectionState="disconnected";for(let i of e.participantIds){let n=this.participants.get(i);n&&(n.isConnected=!1)}for(let i of this.agents.values())i.roomId===t&&i.status==="running"&&(i.status="stopped",i.stoppedAt=new Date().toISOString());return!0}deleteRoom(t){let e=this.rooms.get(t);if(!e)return!1;for(let i of e.participantIds)this.participants.delete(i);for(let[i,n]of this.tracks)n.roomId===t&&this.tracks.delete(i);for(let[i,n]of this.agents)n.roomId===t&&this.agents.delete(i);return this.messages.delete(t),this.rooms.delete(t),!0}addParticipant(t,e,i,n="user",s="standard",o=!1){let a=this.rooms.get(t);if(!a)return this.createError("ROOM_NOT_FOUND",`Room ${t} not found`);if(!a.isActive)return this.createError("ROOM_ENDED",`Room ${t} has ended`);let g=this.participants.get(e);if(g&&g.roomId===t&&g.isConnected)return this.config.strictMode?this.createError("PARTICIPANT_ALREADY_JOINED",`Participant ${e} is already in room ${t}`):g;let d={identity:e,name:i||e,roomId:t,joinedAt:new Date().toISOString(),isConnected:!0,trackIds:[],role:n,attributes:{},kind:s,isLocal:o};return this.participants.set(e,d),a.participantIds.push(e),d}getParticipant(t){return this.participants.get(t)}listParticipants(t,e=!0){let i=this.rooms.get(t);if(!i)return[];let n=[];for(let s of i.participantIds){let o=this.participants.get(s);o&&(!e||o.isConnected)&&n.push(o)}return n}updateParticipantAttributes(t,e){let i=this.participants.get(t);if(!i)return;let n={...i.attributes};return i.attributes={...i.attributes,...e},n}removeParticipant(t){let e=this.participants.get(t);if(!e)return;e.isConnected=!1;for(let n of e.trackIds)this.tracks.delete(n);e.trackIds=[];let i=this.rooms.get(e.roomId);if(i){let n=i.participantIds.indexOf(t);n!==-1&&i.participantIds.splice(n,1)}return e}publishTrack(t,e,i="unknown",n){let s=this.participants.get(t);if(!s)return this.createError("PARTICIPANT_NOT_FOUND",`Participant ${t} not found`);if(!s.isConnected)return this.createError("INVALID_OPERATION",`Participant ${t} is not connected`);let o=this.rooms.get(s.roomId);if(!o||!o.isActive)return this.createError("ROOM_ENDED","Room is not active");let a=l("track"),g={id:a,kind:e,source:i,participantIdentity:t,roomId:s.roomId,publishedAt:new Date().toISOString(),muted:!1,metadata:n};return this.tracks.set(a,g),s.trackIds.push(a),g}getTrack(t){return this.tracks.get(t)}listTracks(t,e){let i=[];for(let n of this.tracks.values())t&&n.roomId!==t||e&&n.participantIdentity!==e||i.push(n);return i}unpublishTrack(t){let e=this.tracks.get(t);if(!e)return;let i=this.participants.get(e.participantIdentity);if(i){let n=i.trackIds.indexOf(t);n!==-1&&i.trackIds.splice(n,1)}return this.tracks.delete(t),e}setTrackMuted(t,e){let i=this.tracks.get(t);return i?(i.muted=e,!0):!1}startAgent(t,e,i={}){let n=this.rooms.get(t);if(!n)return this.createError("ROOM_NOT_FOUND",`Room ${t} not found`);if(!n.isActive)return this.createError("ROOM_ENDED",`Room ${t} has ended`);let s=l("agent"),o={id:s,roomId:t,name:e,status:"running",startedAt:new Date().toISOString(),config:{responseStrategy:"echo",...i},messageHistory:[]};return this.agents.set(s,o),this.addParticipant(t,`agent_${s}`,e,"agent","agent",!1),o}getAgent(t){return this.agents.get(t)}listAgents(t){let e=[];for(let i of this.agents.values())i.roomId===t&&e.push(i);return e}stopAgent(t){let e=this.agents.get(t);if(e)return e.status="stopped",e.stoppedAt=new Date().toISOString(),this.removeParticipant(`agent_${t}`),e}updateAgentStatus(t,e){let i=this.agents.get(t);return i?(i.status=e,e==="stopped"&&(i.stoppedAt=new Date().toISOString()),!0):!1}addAgentMessage(t,e,i){let n=this.agents.get(t);if(!n)return;let s={id:l("msg"),content:e,role:i,timestamp:new Date().toISOString()};return n.messageHistory.push(s),s}addMessage(t,e,i,n="standard",s){if(!this.rooms.get(t))return this.createError("ROOM_NOT_FOUND",`Room ${t} not found`);let a={id:l("msg"),roomId:t,content:i,participantIdentity:e,createdAt:new Date().toISOString(),type:n,attributes:s},g=this.messages.get(t)||[];return g.push(a),this.messages.set(t,g),a}getMessages(t,e){let i=this.messages.get(t)||[];return e?i.slice(-e):i}createError(t,e,i){return{code:t,message:e,details:i}}isError(t){return typeof t=="object"&&t!==null&&"code"in t&&"message"in t}reset(){this.rooms.clear(),this.participants.clear(),this.tracks.clear(),this.agents.clear(),this.messages.clear(),this.randomState=this.config.seed??Date.now()}getSnapshot(){return{rooms:new Map(this.rooms),participants:new Map(this.participants),tracks:new Map(this.tracks),agents:new Map(this.agents),messages:new Map(this.messages),config:{...this.config},eventHistory:[]}}toJSON(){return{rooms:Object.fromEntries(this.rooms),participants:Object.fromEntries(this.participants),tracks:Object.fromEntries(this.tracks),agents:Object.fromEntries(this.agents),messages:Object.fromEntries(this.messages),config:this.config,eventHistory:[],exportedAt:new Date().toISOString()}}fromJSON(t){this.rooms=new Map(Object.entries(t.rooms)),this.participants=new Map(Object.entries(t.participants)),this.tracks=new Map(Object.entries(t.tracks)),this.agents=new Map(Object.entries(t.agents)),this.messages=new Map(Object.entries(t.messages).map(([e,i])=>[e,i])),this.config=t.config}};var w=class{constructor(t={}){this.messageListeners=new Set;this.typingListeners=new Set;this.callRequestListeners=new Map;this._authToken=null;this._registeredUser=null;this.agents=new Map;this.config={latencyMs:t.latencyMs??0,strictMode:t.strictMode??!1,seed:t.seed,scenario:t.scenario,errorConfig:t.errorConfig,autoEmitEvents:t.autoEmitEvents??!0,organizationId:t.organizationId??"mock_org",apiUrl:t.apiUrl??"https://mock-livekit.local"},this.state=new J(this.config),this.events=new K,this.room=new I(this),this.config.scenario&&this.applyScenario(this.config.scenario)}get authToken(){return this._authToken}get registeredUser(){return this._registeredUser}getState(){return this.state}getEvents(){return this.events}updateConfig(t){this.config={...this.config,...t},this.state.updateConfig(t)}getConfig(){return{...this.config}}async simulateLatency(){this.config.latencyMs&&this.config.latencyMs>0&&await new Promise(t=>setTimeout(t,this.config.latencyMs))}applyScenario(t){switch(t){case"happy_path":this.config.errorConfig={},this.config.latencyMs=0;break;case"slow_network":this.config.latencyMs=500;break;case"network_unstable":this.config.errorConfig={errorRate:30};break;default:break}}shouldThrowError(){return this.config.errorConfig?.errorRate?this.state.random()*100<this.config.errorConfig.errorRate:!1}ensureRoom(){return this.room||(this.room=new I(this)),this.room}async registerUser(t,e,i,n){if(await this.simulateLatency(),this.config.errorConfig?.unauthorized)throw new u("UNAUTHORIZED","Registration failed");let s={id:l("user"),externalId:t,organizationId:this.config.organizationId,role:"user",token:P("pending",t,new Date().toISOString())};return this._authToken=s.token,this._registeredUser=s,this.room.localParticipant.identity=t,this.room.localParticipant.name=i?.name||t,s}async registerAgent(t,e){if(await this.simulateLatency(),this.config.errorConfig?.unauthorized)throw new u("UNAUTHORIZED","Agent registration failed");let i=P("agent",t,new Date().toISOString());return this._authToken=i,this.room.localParticipant.identity=t,this.room.localParticipant.name=e.name,i}async quickStart(t){return await this.registerUser(t.user.externalId,t.user.secret,{name:t.user.name,email:t.user.email,phone:t.user.phone,avatar:t.user.avatar,userGroupId:t.user.userGroupId},t.user.metadata),this.createRoom({language:t.room.language,timezone:t.room.timezone,affinity:t.room.affinity,metadata:t.room.metadata,disablePersistence:t.room.disablePersistence,contextualEvents:t.room.contextualEvents,userGroupId:t.room.userGroupId??void 0})}async createRoom(t,e={}){if(await this.simulateLatency(),this.config.errorConfig?.networkError||this.shouldThrowError())throw new u("NETWORK_ERROR","Failed to create room");let i=this.state.createRoom(`room_${Date.now()}`,t.affinity?.agentId,t.metadata);this.room.id=i.id,this.room.groupId=i.groupId,this.room.createdAt=i.createdAt,this.room.connectedAt=new Date().toISOString();let n=this.room.localParticipant.identity||"local_user";return this.state.addParticipant(i.id,n,this.room.localParticipant.name,"user","standard",!0),Object.keys(e).length>0&&(this.state.updateParticipantAttributes(n,e),this.room.localParticipant.setAttributes(e)),this.state.updateRoomConnectionState(i.id,"connected"),this.config.autoEmitEvents&&(this.events.emitRoomCreated(i),this.events.emitRoomConnectionStateChanged(i.id,"connected","disconnected")),(t.affinity?.agentId||t.affinity?.agentType)&&await this.startMockAgent(i.id,{type:t.affinity?.agentType,nature:t.affinity?.nature??"ai"}),await this.room.connect(i.wsURL,i.token),this.room}async joinRoom(t,e,i,n){await this.simulateLatency();let s=this.state.getRoom(t);if(!s)throw new T(t);if(!s.isActive)throw new u("ROOM_ENDED",`Room ${t} has ended`);this.room.id=s.id,this.room.groupId=s.groupId,this.room.createdAt=s.createdAt,this.room.connectedAt=new Date().toISOString();let o=this.room.localParticipant.identity||"local_user",a=this.state.addParticipant(t,o,this.room.localParticipant.name,"user","standard",!0);if(A(a))throw F(a);if(n){let g={};for(let[d,h]of Object.entries(n))g[d]=String(h);this.state.updateParticipantAttributes(o,g)}return this.state.updateRoomConnectionState(t,"connected"),this.config.autoEmitEvents&&(this.events.emitParticipantJoined(t,a),this.events.emitRoomConnectionStateChanged(t,"connected","disconnected")),await this.room.connect(s.wsURL,s.token),this.room}async evaluateRoom(t){await this.simulateLatency();let e=t.roomId||this.room?.id;if(!e)throw new u("ROOM_NOT_FOUND","No room to evaluate");let i=this.state.getRoom(e);if(!i)throw new T(e);i.metadata||(i.metadata={}),i.metadata.evaluation={rating:t.rating,comment:t.comment,evaluatedAt:new Date().toISOString()}}async closeRoom(){await this.simulateLatency(),this.room?.id&&(this.state.endRoom(this.room.id),await this.stopLocalTracks(),this.config.autoEmitEvents&&this.events.emitRoomEnded(this.room.id))}async disconnect(){if(this.room){let t=this.room.id,e=this.room.localParticipant.identity;await this.stopLocalTracks(),this.state.removeParticipant(e),this.config.autoEmitEvents&&t&&this.events.emitParticipantLeft(t,e),this.room.removeAllListeners(),await this.room.disconnect()}}async stopLocalTracks(){let t=this.room?.localParticipant;t&&await Promise.all([t.setCameraEnabled(!1),t.setMicrophoneEnabled(!1),t.setScreenShareEnabled(!1)])}async disconnectAndCloseRoom(){await this.closeRoom(),await this.disconnect()}async readRoom(t){await this.simulateLatency();let e=this.state.getRoom(t);if(!e)throw new T(t);e.metadata||(e.metadata={}),e.metadata.lastReadAt=new Date().toISOString()}async getRooms(t){await this.simulateLatency();let e=this.state.listRooms();t.roomStatus==="active"?e=e.filter(a=>a.isActive):t.roomStatus==="closed"&&(e=e.filter(a=>!a.isActive)),t.ids?.length&&(e=e.filter(a=>t.ids.includes(a.id))),t.groupId&&(e=e.filter(a=>a.groupId===t.groupId));let i=t.offset??0,n=t.limit??20;return{items:e.slice(i,i+n).map(a=>({id:a.id,name:a.name,groupId:a.groupId,organizationId:this.config.organizationId,endedAt:a.endedAt??null,createdAt:a.createdAt,updatedAt:a.createdAt,status:a.isActive?"active":"ended",participants:this.state.listParticipants(a.id).map(g=>({id:g.identity,name:g.name||g.identity,role:g.role,isLocal:g.isLocal})),evaluations:[],_count:{messages:this.state.getMessages(a.id).length,participants:a.participantIds.length}})),count:e.length,limit:n,offset:i}}async sendMessage(t,e){if(await this.simulateLatency(),!this.room?.id)throw new u("INVALID_OPERATION","Not connected to a room");let i=this.state.addMessage(this.room.id,this.room.localParticipant.identity,t,"standard",e);if(A(i))throw F(i);let n={id:i.id,timestamp:Date.now(),message:t,content:t,createdAt:i.createdAt,from:{identity:this.room.localParticipant.identity,name:this.room.localParticipant.name,id:this.room.localParticipant.identity,role:"user"}};for(let s of this.messageListeners)s([n]);this.config.autoEmitEvents&&this.events.emitMessageSent(this.room.id,i);for(let s of this.agents.values())s.isRunning&&s.roomId===this.room.id&&this.triggerAgentResponse(s,t)}async persistMessage(t){await this.simulateLatency();let e=this.state.addMessage(t.roomId,t.identity||"system",t.content);if(A(e))throw F(e);return{items:[{id:e.id,timestamp:Date.now(),message:e.content,content:e.content,createdAt:e.createdAt}],count:1,limit:1,offset:0}}async getMessages(t){await this.simulateLatency();let e=t.roomId||this.room?.id;return e?this.state.getMessages(e,t.limit).map(n=>({id:n.id,timestamp:Date.parse(n.createdAt),message:n.content,content:n.content,createdAt:n.createdAt,from:{identity:n.participantIdentity,id:n.participantIdentity,role:"user"}})):[]}async sendMessageReport(t){await this.simulateLatency()}async deleteMessageReport(t){await this.simulateLatency()}async updateMessageReactions(t){await this.simulateLatency()}subscribeMessages(t){return this.messageListeners.add(t),()=>{this.messageListeners.delete(t)}}async sendTypingIndicator(t){if(!this.room?.id)return;let e={type:"typing",isTyping:t,timestamp:Date.now(),participantId:this.room.localParticipant.identity};for(let i of this.typingListeners)i(e);this.config.autoEmitEvents&&this.events.emitTypingIndicator(this.room.id,this.room.localParticipant.identity,t)}subscribeTypingIndicators(t){return this.typingListeners.add(t),()=>this.typingListeners.delete(t)}unsubscribeTypingIndicators(t){this.typingListeners.delete(t)}async sendContextualEvent(t){await this.simulateLatency()}async requestNewRoom(t){await this.simulateLatency();let e=this.state.createRoom(`transfer_${Date.now()}`,void 0,{originRoom:t.originRoom});return{id:e.id,groupId:e.groupId,token:e.token,wsURL:e.wsURL,createdAt:e.createdAt}}async confirmRoomRequest(t){return await this.simulateLatency(),{success:!0,message:"Request confirmed",roomId:t}}async cancelRoomRequest(t){return await this.simulateLatency(),{success:!0,message:"Request cancelled",roomId:t}}async finishCall(){await this.simulateLatency(),this.room?.id&&this.state.endRoom(this.room.id)}isFirebaseEnabled(){return!0}onPresenceChange(t){return()=>{}}onPresenceAgentChange(t,e){return()=>{}}async createCallRequest(t){return await this.simulateLatency(),l("call")}onNewCallRequest(t){return this.callRequestListeners.has("new")||this.callRequestListeners.set("new",new Set),this.callRequestListeners.get("new").add(t),()=>this.callRequestListeners.get("new")?.delete(t)}onCallRequestChange(t){return this.callRequestListeners.has("change")||this.callRequestListeners.set("change",new Set),this.callRequestListeners.get("change").add(t),()=>this.callRequestListeners.get("change")?.delete(t)}onCallRequestRemoved(t){return()=>{}}async acceptCallRequest(t){await this.simulateLatency()}async cancelCallRequest(t){await this.simulateLatency()}async cancelOnDisconnect(t){await this.simulateLatency()}subscribePendingRequests(t,e={}){return()=>{}}subscribeRequestChanges(t){return()=>{}}async tryAcceptRequest(t){return await this.simulateLatency(),!0}onRoomSync(t,e){return()=>{}}async clearRoomSync(t,e){await this.simulateLatency()}onNewRoomRequest(t,e){return()=>{}}unsubscribeAllFirebase(){this.callRequestListeners.clear()}async destroy(){this.unsubscribeAllFirebase(),this.messageListeners.clear(),this.typingListeners.clear(),await this.disconnect(),this.state.reset()}async startMockAgent(t,e){let i=e?.name||"AI Assistant",n=new y(l("agent"),i,{responseStrategy:e?.responseStrategy||"echo",responseDelayMs:e?.responseDelayMs||100,cannedResponses:e?.cannedResponses||[],type:e?.type,nature:e?.nature});await n.start(t),this.agents.set(n.id,n),this.customAgentHandler&&n.setCustomHandler((d,h)=>this.customAgentHandler(d,h));let s=e?.type,o=Array.isArray(s)?s:[s].filter(Boolean),a=o.includes("video"),g=o.includes("voice");return(a||g)&&this.room.isConnected&&await this.room.simulateParticipantJoin(n.id,{name:i,kind:"agent",withCamera:a,withMicrophone:g||a,attributes:{"lk.agent.name":i,"lk.agent.state":"active",role:"agent"}}),this.config.autoEmitEvents&&this.events.emitAgentStarted(t,{id:n.id,name:n.name,roomId:t,status:"running",config:n.getConfig(),startedAt:new Date().toISOString(),messageHistory:[]}),n.id}async stopMockAgent(t){let e=this.agents.get(t);if(e){let i=e.roomId;await e.stop(),this.agents.delete(t),this.config.autoEmitEvents&&i&&this.events.emitAgentStopped(i,t)}}setAgentResponseHandler(t){this.customAgentHandler=t;for(let e of this.agents.values())e.setCustomHandler((i,n)=>t(i,n))}async triggerAgentResponse(t,e){if(this.config.scenario!=="agent_timeout")try{let i=await t.processMessage(e);if(!i)return;let n=this.state.addMessage(t.roomId,`agent_${t.id}`,i);if(!A(n)){let s={id:n.id,timestamp:Date.now(),message:i,content:i,createdAt:n.createdAt,from:{identity:`agent_${t.id}`,name:t.name,id:t.id,role:"agent"}};for(let o of this.messageListeners)o([s]);this.config.autoEmitEvents&&this.events.emitMessageReceived(t.roomId,n)}}catch(i){console.error("Agent response error:",i)}}simulateCallRequest(t){let e={id:l("call"),guestId:t.guestId||"guest_user",name:t.name||"Guest User",createdAt:new Date().toISOString(),status:t.status||"pending",...t},i=this.callRequestListeners.get("new");if(i)for(let n of i)n(e.id,e)}simulateParticipantJoin(t,e,i="user"){if(!this.room?.id)return;let n=this.state.addParticipant(this.room.id,t,e,i,"standard",!1);!A(n)&&this.config.autoEmitEvents&&this.events.emitParticipantJoined(this.room.id,n)}simulateParticipantLeave(t){if(!this.room?.id)return;this.state.removeParticipant(t)&&this.config.autoEmitEvents&&this.events.emitParticipantLeft(this.room.id,t)}simulateIncomingMessage(t,e){if(!this.room?.id)return;let i=this.state.addMessage(this.room.id,t,e);if(A(i))return;let n={id:i.id,timestamp:Date.now(),message:e,content:e,createdAt:i.createdAt,from:{identity:t,id:t,role:"user"}};for(let s of this.messageListeners)s([n]);this.config.autoEmitEvents&&this.events.emitMessageReceived(this.room.id,i)}async simulateDisconnect(){if(!this.room?.id)return;let t=this.room.state;this.room.state="disconnected",this.config.autoEmitEvents&&this.events.emitRoomConnectionStateChanged(this.room.id,"disconnected",t),this.room.emit("connectionStateChanged","disconnected")}reset(){this.state.reset(),this.events.clearHistory(),this.messageListeners.clear(),this.typingListeners.clear(),this.callRequestListeners.clear(),this.agents.clear(),this._authToken=null,this._registeredUser=null,this.room=new I(this),yt()}seed(t){this.config.seed=t,this.state.updateConfig({seed:t})}setScenario(t){this.config.scenario=t,this.applyScenario(t)}exportState(){return{...this.state.toJSON(),eventHistory:this.events.getHistory()}}getEventHistory(t){return this.events.getHistory(t)}};var At={},E={MODE:"LIVEKIT_MODE",USE_MOCK:"USE_LIVEKIT_MOCK",MOCK_LATENCY:"MOCK_LIVEKIT_LATENCY_MS",MOCK_STRICT:"MOCK_LIVEKIT_STRICT",MOCK_SCENARIO:"MOCK_LIVEKIT_SCENARIO",MOCK_SEED:"MOCK_LIVEKIT_SEED",API_URL:"LIVEKIT_API_URL",AUTH_URL:"LIVEKIT_AUTH_URL",ORG_ID:"LIVEKIT_ORGANIZATION_ID"};function Tt(){let r=O(E.MODE);if(r==="mock"||r==="real")return r;let t=O(E.USE_MOCK);return t==="true"||t==="1"||_e()?"mock":"real"}function Oe(){let r={},t=O(E.MOCK_LATENCY);t&&(r.latencyMs=parseInt(t,10));let e=O(E.MOCK_STRICT);(e==="true"||e==="1")&&(r.strictMode=!0);let i=O(E.MOCK_SCENARIO);i&&(r.scenario=i);let n=O(E.MOCK_SEED);return n&&(r.seed=parseInt(n,10)),r}function xe(){let r={},t=O(E.API_URL);t&&(r.apiUrl=t);let e=O(E.AUTH_URL);e&&(r.authUrl=e);let i=O(E.ORG_ID);return i&&(r.organizationId=i),r}function O(r){if(typeof process<"u"&&process.env)return process.env[r];if(typeof At<"u"&&At.env)return At.env[`VITE_${r}`]||At.env[r];if(typeof window<"u"&&window.__ENV__)return window.__ENV__[r]}function _e(){return!!(typeof process<"u"&&process.env&&(process.env.NODE_ENV==="test"||process.env.VITEST||process.env.JEST_WORKER_ID)||typeof globalThis.__vitest_index__<"u")}var _=class r{static create(t){if((t.mode??Tt())==="mock"){let i={...Oe(),...t.mockConfig,organizationId:t.organizationId,apiUrl:t.apiUrl};return new w(i)}if(!t.organizationId||!t.apiUrl)throw new Error("ConversationService requires organizationId and apiUrl. Provide them in options or set LIVEKIT_ORGANIZATION_ID and LIVEKIT_API_URL environment variables.");return new z(t)}static createFromEnv(t){let e=t?.mode??Tt(),i=xe();return r.create({...i,...t,mode:e})}static createMock(t){return new w({organizationId:"mock_org",apiUrl:"https://mock-livekit.local",...t})}static createDeterministicMock(t=12345){return new w({organizationId:"mock_org",apiUrl:"https://mock-livekit.local",seed:t,strictMode:!0})}static getCurrentMode(){return Tt()}static isMockMode(){return Tt()==="mock"}static isMockService(t){return t instanceof w}};function se(r){return _.createFromEnv(r)}function Ct(r){return _.createMock(r)}function It(r){let t=r?.id??l("room"),e=new Date().toISOString();return{id:t,name:`Test Room ${t}`,groupId:l("group"),createdAt:e,isActive:!0,participantIds:[],connectionState:"connected",wsURL:j(t),token:P(t,"local_user",e),...r}}function wt(r="local_user",t){let e=It(t);e.participantIds.push(r);let i={identity:r,name:"Local User",roomId:e.id,joinedAt:new Date().toISOString(),isConnected:!0,trackIds:[],role:"user",attributes:{},kind:"standard",isLocal:!0};return{room:e,localParticipant:i}}function Dt(r){let t=It(r),e=new Date().toISOString(),i={identity:"user_1",name:"User One",roomId:t.id,joinedAt:e,isConnected:!0,trackIds:[],role:"user",attributes:{},kind:"standard",isLocal:!0},n={identity:"user_2",name:"User Two",roomId:t.id,joinedAt:e,isConnected:!0,trackIds:[],role:"user",attributes:{},kind:"standard",isLocal:!1};return t.participantIds.push(i.identity,n.identity),{room:t,participant1:i,participant2:n}}function Et(r,t){let{room:e,localParticipant:i}=wt("local_user",t),n=new Date().toISOString(),s=l("agent"),o={id:s,roomId:e.id,name:"AI Assistant",status:"running",startedAt:n,config:{responseStrategy:"echo",nature:"ai",...r},messageHistory:[]},a={identity:`agent_${s}`,name:"AI Assistant",roomId:e.id,joinedAt:n,isConnected:!0,trackIds:[],role:"agent",attributes:{},kind:"agent",isLocal:!1};return e.participantIds.push(a.identity),{room:e,localParticipant:i,agent:o,agentParticipant:a}}function oe(r){let{room:t,localParticipant:e,agent:i,agentParticipant:n}=Et(void 0,r),s={id:l("track"),kind:"data",source:"unknown",participantIdentity:n.identity,roomId:t.id,publishedAt:new Date().toISOString(),muted:!1};return n.trackIds.push(s.id),{room:t,localParticipant:e,agent:i,dataTrack:s}}function ae(r){let{room:t,localParticipant:e}=wt("local_user",r),i=new Date().toISOString(),n={id:l("track"),kind:"audio",source:"microphone",participantIdentity:e.identity,roomId:t.id,publishedAt:i,muted:!1},s={id:l("track"),kind:"video",source:"camera",participantIdentity:e.identity,roomId:t.id,publishedAt:i,muted:!1};return e.trackIds.push(n.id,s.id),{room:t,participant:e,audioTrack:n,videoTrack:s}}function Ut(r,t){let e=t?.identity??l("participant");return{identity:e,name:`Participant ${e}`,roomId:r,joinedAt:new Date().toISOString(),isConnected:!0,trackIds:[],role:"user",attributes:{},kind:"standard",isLocal:!1,...t}}function ce(r,t){let e=[];for(let i=0;i<t;i++)e.push(Ut(r,{identity:`participant_${i+1}`,name:`Participant ${i+1}`,isLocal:i===0}));return e}function Ot(r,t){return{id:t?.id??l("agent"),roomId:r,name:"AI Assistant",status:"running",startedAt:new Date().toISOString(),config:{responseStrategy:"echo",nature:"ai",...t?.config},messageHistory:[],...t}}function de(r,t){return Ot(r,{config:{responseStrategy:"canned",cannedResponses:t}})}function ge(r,t){return Ot(r,{config:{responseStrategy:"sequential",cannedResponses:t}})}function le(r,t,e){return{id:l("msg"),roomId:r,content:"Test message",participantIdentity:t,createdAt:new Date().toISOString(),type:"standard",...e}}function Nt(r,t){return t.map((e,i)=>({id:l("msg"),roomId:r,content:e.content,participantIdentity:e.identity,createdAt:new Date(Date.now()+i*1e3).toISOString(),type:"standard"}))}function ct(r){return{latencyMs:0,strictMode:!1,autoEmitEvents:!0,organizationId:"test_org",apiUrl:"https://mock-api.local",...r}}function ue(r){return ct({strictMode:!0,...r})}function pe(r,t){return ct({latencyMs:r,...t})}function me(r,t){return ct({seed:r,...t})}function he(){let{room:r,localParticipant:t,agent:e,agentParticipant:i}=Et(),n=Nt(r.id,[{identity:t.identity,content:"Hello, I need help"},{identity:i.identity,content:"Hi! How can I assist you today?"},{identity:t.identity,content:"I have a question about my order"},{identity:i.identity,content:"Of course! Please provide your order number."}]);return{room:r,user:t,agent:e,agentParticipant:i,messages:n}}function ke(){let{room:r,participant1:t,participant2:e}=Dt(),i=new Date().toISOString(),n=[{id:l("track"),kind:"audio",source:"microphone",participantIdentity:t.identity,roomId:r.id,publishedAt:i,muted:!1},{id:l("track"),kind:"video",source:"camera",participantIdentity:t.identity,roomId:r.id,publishedAt:i,muted:!1},{id:l("track"),kind:"audio",source:"microphone",participantIdentity:e.identity,roomId:r.id,publishedAt:i,muted:!1},{id:l("track"),kind:"video",source:"camera",participantIdentity:e.identity,roomId:r.id,publishedAt:i,muted:!1}];return t.trackIds.push(n[0].id,n[1].id),e.trackIds.push(n[2].id,n[3].id),{room:r,participant1:t,participant2:e,tracks:n}}var G=class{constructor(t,e,i,n,s){this.index=0;this._complete=!1;this.info={id:t,attributes:n,topic:s,timestamp:Date.now()},this.participantIdentity=e,this.topic=s,this.chunks=Array.isArray(i)?i:[i],this.info.totalSize=this.chunks.reduce((o,a)=>o+a.length,0)}get isComplete(){return this._complete}async*[Symbol.asyncIterator](){for(let t of this.chunks)yield t;this._complete=!0}async read(){return this.index>=this.chunks.length?(this._complete=!0,null):this.chunks[this.index++]}async readAll(){let t=this.chunks.slice(this.index).join("");return this.index=this.chunks.length,this._complete=!0,t}cancel(){this._complete=!0}},dt=class{constructor(t,e){this.chunks=[];this._closed=!1;this.id=l("stream"),this._topic=t,this._destinationIdentities=e}get isClosed(){return this._closed}get topic(){return this._topic}get destinationIdentities(){return this._destinationIdentities}get content(){return this.chunks.join("")}onWrite(t){this.onWriteCallback=t}async write(t){if(this._closed)throw new Error("Stream is closed");this.chunks.push(t),this.onWriteCallback?.(t)}async close(){this._closed=!0}},gt=class{constructor(t,e,i){this._index=0;this.info={id:t,timestamp:Date.now()},this.participantIdentity=e,this.chunks=Array.isArray(i)?i:[i]}get index(){return this._index}async*[Symbol.asyncIterator](){for(let t of this.chunks)yield t}async readAll(){let t=this.chunks.reduce((n,s)=>n+s.length,0),e=new Uint8Array(t),i=0;for(let n of this.chunks)e.set(n,i),i+=n.length;return e}};function qt(r,t,e){return new G(e?.id||l("stream"),r,t,e?.attributes,e?.topic)}U();var L=null;function m(r){return L||(L=Ct({organizationId:"storybook_org",apiUrl:"https://storybook.mock",latencyMs:50,autoEmitEvents:!0,...r})),L}function Ht(){L&&L.reset()}async function fe(){L&&(await L.destroy(),L=null)}function ve(r={}){return(t,e)=>{Ht();let i={default:void 0,slow_network:"slow_network",unreliable:"unreliable",agent_timeout:"agent_timeout"},n=m({organizationId:r.organizationId,latencyMs:r.latencyMs??50,scenario:r.scenario?i[r.scenario]:void 0});return(async()=>{try{if(r.autoRegisterUser&&await n.registerUser(r.autoRegisterUser.identity,r.autoRegisterUser.secret||"storybook_secret",{name:r.autoRegisterUser.name||"Storybook User"}),r.autoCreateRoom){if(await n.createRoom({language:r.autoCreateRoom.language||"en",timezone:r.autoCreateRoom.timezone||"UTC"}),r.seedMessages)for(let s of r.seedMessages)n.simulateIncomingMessage(s.from,s.content);r.autoStartAgent&&n.room?.id&&await n.startMockAgent(n.room.id,r.autoStartAgent)}}catch(s){console.error("[Storybook Mock] Setup error:",s)}})(),window.__mockConversationService=n,t()}}function ye(r){return _.isMockService(r)}var Me={basicChat:{autoRegisterUser:{identity:"sb_user",name:"User"},autoCreateRoom:{language:"en",timezone:"UTC"},autoStartAgent:{responseStrategy:"echo"}},aiAssistant:{autoRegisterUser:{identity:"sb_user",name:"User"},autoCreateRoom:{language:"en",timezone:"UTC"},autoStartAgent:{responseStrategy:"canned",cannedResponses:["Hello! How can I help you today?","I understand. Let me look into that for you.","Is there anything else you'd like to know?","Thank you for your patience!"]}},videoCall:{autoRegisterUser:{identity:"sb_user",name:"User"},autoCreateRoom:{language:"en",timezone:"UTC"},autoStartAgent:{responseStrategy:"canned",type:["text","video"],nature:"ai",name:"Video Agent",cannedResponses:["I can see you! The video quality looks great.","Let me share my screen to show you what I mean.","Is the audio coming through clearly?"]},simulateVideo:!0},multiParticipantCall:{autoRegisterUser:{identity:"sb_user",name:"User"},autoCreateRoom:{language:"en",timezone:"UTC"},autoStartAgent:{responseStrategy:"echo",type:["text","video"],name:"Video Agent"},simulateVideo:!0},multiTurnConversation:{autoRegisterUser:{identity:"sb_user",name:"User"},autoCreateRoom:{language:"en",timezone:"UTC"},autoStartAgent:{responseStrategy:"sequential",cannedResponses:["Welcome! I'm your virtual assistant.","I can help you with product information, orders, and support.","What would you like to know?"]},seedMessages:[{from:"agent",content:"Welcome! I'm your virtual assistant."}]},slowNetwork:{autoRegisterUser:{identity:"sb_user",name:"User"},autoCreateRoom:{language:"en",timezone:"UTC"},autoStartAgent:{responseStrategy:"echo",responseDelayMs:2e3},latencyMs:500,scenario:"slow_network"},unreliable:{autoRegisterUser:{identity:"sb_user",name:"User"},autoCreateRoom:{language:"en",timezone:"UTC"},scenario:"unreliable"}};function Se(r){return()=>m(r)}var $t={async receiveMessage(r,t){m().simulateIncomingMessage(r,t)},simulateJoin(r,t){m().simulateParticipantJoin(r,t)},simulateLeave(r){m().simulateParticipantLeave(r)},async simulateVideoParticipant(r,t,e){let n=m().room;n&&await n.simulateParticipantJoin(r,{name:t||r,kind:"standard",withCamera:e?.withCamera??!0,withMicrophone:e?.withMicrophone??!0})},async simulateVideoAgent(r,t){let i=m().room;i&&await i.simulateAgentJoin(r,t||"AI Agent")},async enableLocalCamera(){let t=m().room;t&&await t.localParticipant.setCameraEnabled(!0)},async disableLocalCamera(){let t=m().room;t&&await t.localParticipant.setCameraEnabled(!1)},async enableLocalMicrophone(){let t=m().room;t&&await t.localParticipant.setMicrophoneEnabled(!0)},async simulateMultipleParticipants(r){let t=["Alice","Bob","Carol","David","Eve","Frank","Grace","Henry","Ivy","Jack"],i=m().room;if(i)for(let n=0;n<Math.min(r,t.length);n++)await i.simulateParticipantJoin(`participant_${n+1}`,{name:t[n],kind:"standard",withCamera:!0,withMicrophone:!0}),await new Promise(s=>setTimeout(s,100))},clearParticipants(){let t=m().room;if(t)for(let e of t.remoteParticipants.keys())t.simulateParticipantLeave(e)},simulateCallRequest(r,t){m().simulateCallRequest({name:r,guestId:t||`guest_${Date.now()}`})},async simulateDisconnect(){await m().simulateDisconnect()},getEventHistory(){return m().getEventHistory()},exportState(){return m().exportState()},getRoom(){return m().room}};typeof window<"u"&&(window.MockServiceActions=$t);0&&(module.exports={AgentNotFoundError,CHAT_TOPIC,ConversationService,ConversationServiceFactory,DEFAULT_AGENT_CONFIG,EVENTS_TOPIC,InvalidOperationError,MockAgent,MockAgentPresets,MockByteStreamReader,MockConversationService,MockEventEmitter,MockLiveKitError,MockLocalParticipant,MockParticipant,MockRoom,MockServiceActions,MockState,MockTextStreamReader,MockTextStreamWriter,MockTrack,MockTrackPublication,NetworkError,ParticipantAlreadyJoinedError,ParticipantKindValue,ParticipantNotFoundError,Room,RoomEndedError,RoomNotFoundError,SYNTHETIC_MEDIA_PRESETS,StorybookScenarios,TRANSCRIPTION_TOPIC,TYPING_INDICATOR_TOPIC,TimeoutError,TrackNotFoundError,UnauthorizedError,createAgentFixture,createAgentWithCannedResponses,createChatScenario,createConversationFixture,createConversationService,createDefaultConfig,createDefaultRoomFixture,createDeterministicConfig,createErrorFromMockError,createLatencyConfig,createMessageFixture,createMockConversationService,createMockServiceFactory,createParticipantBatch,createParticipantFixture,createRoomWithAgent,createRoomWithAgentAndDataTrack,createRoomWithLocalParticipant,createRoomWithMediaTracks,createRoomWithTwoParticipants,createSequentialAgent,createStrictConfig,createSyntheticAudioTrack,createSyntheticMedia,createSyntheticMediaFromPreset,createSyntheticVideoTrack,createTextStream,createVideoCallScenario,decodeMockToken,destroyStorybookMockService,generateMockApiResponseId,generateMockExternalId,generateMockId,generateMockIdBatch,generateMockMessageId,generateMockParticipantIdentity,generateMockRoomName,generateMockToken,generateMockTrackSid,generateMockWsUrl,generateSeededMockId,generateStrategyResponse,getStorybookMockService,isMockConversationService,isMockError,isMockLiveKitError,resetIdCounter,resetStorybookMockService,setIdCounter,withMockConversationService});
@@ -1,6 +1,23 @@
1
- /*! @onlive.ai/common-121 v0.2.163 | © 2026 Onlive.ai */
1
+ /*! @onlive.ai/common-121 v0.2.184 | © 2026 Onlive.ai */
2
2
  export { ConversationService, Room } from './conversation.service.cjs';
3
- export { AgentData, ApiMessage, Assets, CHAT_TOPIC, Call, CallRequest, CallRequestListener, ContextualEvent, ContextualEventNames, ConversationServiceOptions, CreateRoomOptions, EVENTS_TOPIC, EvaluateRoomOptions, ExtendedRoom, GetMessagesOptions, GetRoomsOptions, MessageListener, MessageReactionOptions, MessageReportOptions, MessagesApiResponse, NewRoomRequestData, PersistMessageOptions, RequestNewRoomOptions, RequestStatus, RoomApiResponse, RoomListItem, RoomOptions, RoomSyncData, RoomsApiResponse, TRANSCRIPTION_TOPIC, TYPING_INDICATOR_TOPIC, TypingIndicator, TypingListener, UserApiResponse, UserFrom } from './conversation.types.cjs';
3
+ export { AgentData, ApiMessage, Assets, CHAT_TOPIC, Call, CallRequest, CallRequestListener, ContextualEvent, ContextualEventNames, ConversationServiceOptions, CreateRoomOptions, EVENTS_TOPIC, EvaluateRoomOptions, ExtendedRoom, GetMessagesOptions, GetRoomsOptions, MessageListener, MessageReactionOptions, MessageReportOptions, MessagesApiResponse, NewRoomRequestData, PersistMessageOptions, QuickStartApiResponse, QuickStartOptions, RequestNewRoomOptions, RequestStatus, RoomApiResponse, RoomListItem, RoomOptions, RoomSyncData, RoomsApiResponse, TRANSCRIPTION_TOPIC, TYPING_INDICATOR_TOPIC, TypingIndicator, TypingListener, UserApiResponse, UserFrom } from './conversation.types.cjs';
4
+ export { MockAgent, MockAgentPresets } from './mock/actor/agent.cjs';
5
+ export { DEFAULT_AGENT_CONFIG, generateStrategyResponse } from './mock/actor/strategies.cjs';
6
+ export { AgentNotFoundError, InvalidOperationError, MockLiveKitError, NetworkError, ParticipantAlreadyJoinedError, ParticipantNotFoundError, RoomEndedError, RoomNotFoundError, TimeoutError, TrackNotFoundError, UnauthorizedError, createErrorFromMockError, isMockError, isMockLiveKitError } from './mock/errors.cjs';
7
+ export { MockEventEmitter } from './mock/events.cjs';
8
+ export { ConversationServiceFactory, ConversationServiceFactoryOptions, LiveKitMode, createConversationService, createMockConversationService } from './mock/factory.cjs';
9
+ export { createAgentFixture, createAgentWithCannedResponses, createChatScenario, createConversationFixture, createDefaultConfig, createDefaultRoomFixture, createDeterministicConfig, createLatencyConfig, createMessageFixture, createParticipantBatch, createParticipantFixture, createRoomWithAgent, createRoomWithAgentAndDataTrack, createRoomWithLocalParticipant, createRoomWithMediaTracks, createRoomWithTwoParticipants, createSequentialAgent, createStrictConfig, createVideoCallScenario } from './mock/fixtures.cjs';
10
+ export { decodeMockToken, generateMockApiResponseId, generateMockExternalId, generateMockId, generateMockIdBatch, generateMockMessageId, generateMockParticipantIdentity, generateMockRoomName, generateMockToken, generateMockTrackSid, generateMockWsUrl, generateSeededMockId, resetIdCounter, setIdCounter } from './mock/generators.cjs';
11
+ export { MockLocalParticipant } from './mock/livekit/local-participant.cjs';
12
+ export { MockParticipant, ParticipantKindValue } from './mock/livekit/participant.cjs';
13
+ export { MockRoom } from './mock/livekit/room.cjs';
14
+ export { MockByteStreamReader, MockTextStreamReader, MockTextStreamWriter, createTextStream } from './mock/livekit/streams.cjs';
15
+ export { MockTrack, MockTrackPublication } from './mock/livekit/tracks.cjs';
16
+ export { SYNTHETIC_MEDIA_PRESETS, SyntheticAudioConfig, SyntheticVideoConfig, createSyntheticAudioTrack, createSyntheticMedia, createSyntheticMediaFromPreset, createSyntheticVideoTrack } from './mock/media.cjs';
17
+ export { MockConversationService } from './mock/service.cjs';
18
+ export { MockState } from './mock/state.cjs';
19
+ export { MockServiceActions, MockServiceDecoratorConfig, StorybookScenarios, createMockServiceFactory, destroyStorybookMockService, getStorybookMockService, isMockConversationService, resetStorybookMockService, withMockConversationService } from './mock/storybook.cjs';
20
+ export { MockAgentConfig, MockAgentMessage, MockAgentMessageEvent, MockAgentResponseStrategy, MockAgentStartedEvent, MockAgentState, MockAgentStatus, MockAgentStoppedEvent, MockConnectionState, MockDataReceivedEvent, MockError, MockErrorCode, MockErrorConfig, MockErrorEvent, MockEvent, MockEventBase, MockEventListener, MockEventListenerMap, MockEventType, MockMessageReceivedEvent, MockMessageSentEvent, MockMessageState, MockParticipantAttributesChangedEvent, MockParticipantJoinedEvent, MockParticipantKind, MockParticipantLeftEvent, MockParticipantRole, MockParticipantState, MockRoomConnectionStateChangedEvent, MockRoomCreatedEvent, MockRoomEndedEvent, MockRoomState, MockScenario, MockServiceConfig, MockStateSnapshot, MockStateSnapshotJSON, MockTrackKind, MockTrackMutedEvent, MockTrackPublishedEvent, MockTrackSource, MockTrackState, MockTrackUnmutedEvent, MockTrackUnpublishedEvent, MockTypingIndicatorEvent } from './mock/types.cjs';
4
21
  import 'livekit-client';
5
22
  import '@livekit/components-core';
6
23
  import '../firebase/firebase-api.cjs';
@@ -1,6 +1,23 @@
1
- /*! @onlive.ai/common-121 v0.2.163 | © 2026 Onlive.ai */
1
+ /*! @onlive.ai/common-121 v0.2.184 | © 2026 Onlive.ai */
2
2
  export { ConversationService, Room } from './conversation.service.js';
3
- export { AgentData, ApiMessage, Assets, CHAT_TOPIC, Call, CallRequest, CallRequestListener, ContextualEvent, ContextualEventNames, ConversationServiceOptions, CreateRoomOptions, EVENTS_TOPIC, EvaluateRoomOptions, ExtendedRoom, GetMessagesOptions, GetRoomsOptions, MessageListener, MessageReactionOptions, MessageReportOptions, MessagesApiResponse, NewRoomRequestData, PersistMessageOptions, RequestNewRoomOptions, RequestStatus, RoomApiResponse, RoomListItem, RoomOptions, RoomSyncData, RoomsApiResponse, TRANSCRIPTION_TOPIC, TYPING_INDICATOR_TOPIC, TypingIndicator, TypingListener, UserApiResponse, UserFrom } from './conversation.types.js';
3
+ export { AgentData, ApiMessage, Assets, CHAT_TOPIC, Call, CallRequest, CallRequestListener, ContextualEvent, ContextualEventNames, ConversationServiceOptions, CreateRoomOptions, EVENTS_TOPIC, EvaluateRoomOptions, ExtendedRoom, GetMessagesOptions, GetRoomsOptions, MessageListener, MessageReactionOptions, MessageReportOptions, MessagesApiResponse, NewRoomRequestData, PersistMessageOptions, QuickStartApiResponse, QuickStartOptions, RequestNewRoomOptions, RequestStatus, RoomApiResponse, RoomListItem, RoomOptions, RoomSyncData, RoomsApiResponse, TRANSCRIPTION_TOPIC, TYPING_INDICATOR_TOPIC, TypingIndicator, TypingListener, UserApiResponse, UserFrom } from './conversation.types.js';
4
+ export { MockAgent, MockAgentPresets } from './mock/actor/agent.js';
5
+ export { DEFAULT_AGENT_CONFIG, generateStrategyResponse } from './mock/actor/strategies.js';
6
+ export { AgentNotFoundError, InvalidOperationError, MockLiveKitError, NetworkError, ParticipantAlreadyJoinedError, ParticipantNotFoundError, RoomEndedError, RoomNotFoundError, TimeoutError, TrackNotFoundError, UnauthorizedError, createErrorFromMockError, isMockError, isMockLiveKitError } from './mock/errors.js';
7
+ export { MockEventEmitter } from './mock/events.js';
8
+ export { ConversationServiceFactory, ConversationServiceFactoryOptions, LiveKitMode, createConversationService, createMockConversationService } from './mock/factory.js';
9
+ export { createAgentFixture, createAgentWithCannedResponses, createChatScenario, createConversationFixture, createDefaultConfig, createDefaultRoomFixture, createDeterministicConfig, createLatencyConfig, createMessageFixture, createParticipantBatch, createParticipantFixture, createRoomWithAgent, createRoomWithAgentAndDataTrack, createRoomWithLocalParticipant, createRoomWithMediaTracks, createRoomWithTwoParticipants, createSequentialAgent, createStrictConfig, createVideoCallScenario } from './mock/fixtures.js';
10
+ export { decodeMockToken, generateMockApiResponseId, generateMockExternalId, generateMockId, generateMockIdBatch, generateMockMessageId, generateMockParticipantIdentity, generateMockRoomName, generateMockToken, generateMockTrackSid, generateMockWsUrl, generateSeededMockId, resetIdCounter, setIdCounter } from './mock/generators.js';
11
+ export { MockLocalParticipant } from './mock/livekit/local-participant.js';
12
+ export { MockParticipant, ParticipantKindValue } from './mock/livekit/participant.js';
13
+ export { MockRoom } from './mock/livekit/room.js';
14
+ export { MockByteStreamReader, MockTextStreamReader, MockTextStreamWriter, createTextStream } from './mock/livekit/streams.js';
15
+ export { MockTrack, MockTrackPublication } from './mock/livekit/tracks.js';
16
+ export { SYNTHETIC_MEDIA_PRESETS, SyntheticAudioConfig, SyntheticVideoConfig, createSyntheticAudioTrack, createSyntheticMedia, createSyntheticMediaFromPreset, createSyntheticVideoTrack } from './mock/media.js';
17
+ export { MockConversationService } from './mock/service.js';
18
+ export { MockState } from './mock/state.js';
19
+ export { MockServiceActions, MockServiceDecoratorConfig, StorybookScenarios, createMockServiceFactory, destroyStorybookMockService, getStorybookMockService, isMockConversationService, resetStorybookMockService, withMockConversationService } from './mock/storybook.js';
20
+ export { MockAgentConfig, MockAgentMessage, MockAgentMessageEvent, MockAgentResponseStrategy, MockAgentStartedEvent, MockAgentState, MockAgentStatus, MockAgentStoppedEvent, MockConnectionState, MockDataReceivedEvent, MockError, MockErrorCode, MockErrorConfig, MockErrorEvent, MockEvent, MockEventBase, MockEventListener, MockEventListenerMap, MockEventType, MockMessageReceivedEvent, MockMessageSentEvent, MockMessageState, MockParticipantAttributesChangedEvent, MockParticipantJoinedEvent, MockParticipantKind, MockParticipantLeftEvent, MockParticipantRole, MockParticipantState, MockRoomConnectionStateChangedEvent, MockRoomCreatedEvent, MockRoomEndedEvent, MockRoomState, MockScenario, MockServiceConfig, MockStateSnapshot, MockStateSnapshotJSON, MockTrackKind, MockTrackMutedEvent, MockTrackPublishedEvent, MockTrackSource, MockTrackState, MockTrackUnmutedEvent, MockTrackUnpublishedEvent, MockTypingIndicatorEvent } from './mock/types.js';
4
21
  import 'livekit-client';
5
22
  import '@livekit/components-core';
6
23
  import '../firebase/firebase-api.js';