@onlive.ai/common-121 0.2.227 → 0.2.228

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 (500) hide show
  1. package/{audi-dark.theme-CmBU76BS.d.cts → audi-dark.theme-C92mx6HX.d.cts} +1 -1
  2. package/{audi-dark.theme-CmBU76BS.d.ts → audi-dark.theme-C92mx6HX.d.ts} +1 -1
  3. package/{audi.theme-Dv00cyiq.d.cts → audi.theme-b5_HO8i0.d.cts} +1 -1
  4. package/{audi.theme-Dv00cyiq.d.ts → audi.theme-b5_HO8i0.d.ts} +1 -1
  5. package/{australia.theme-MBhnmXS4.d.cts → australia.theme-Cr_KZr4r.d.cts} +1 -1
  6. package/{australia.theme-MBhnmXS4.d.ts → australia.theme-Cr_KZr4r.d.ts} +1 -1
  7. package/{chunk-QP5HM4T4.js → chunk-JB6NDWSG.js} +1 -1
  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 +1 -1
  13. package/components/asset/asset.d.cts +1 -1
  14. package/components/asset/asset.d.ts +1 -1
  15. package/components/asset/asset.js +1 -1
  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 +1 -1
  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 +1 -1
  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 +1 -1
  33. package/components/asset/index.d.cts +1 -1
  34. package/components/asset/index.d.ts +1 -1
  35. package/components/asset/index.js +1 -1
  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-CUjrY9Xc.d.cts → cuernavaca.theme-gwX4a0qX.d.cts} +1 -1
  77. package/{cuernavaca.theme-CUjrY9Xc.d.ts → cuernavaca.theme-gwX4a0qX.d.ts} +1 -1
  78. package/{cupra-diagonal.theme-CpQckNhJ.d.cts → cupra-diagonal.theme-YeEq5NNx.d.cts} +1 -1
  79. package/{cupra-diagonal.theme-CpQckNhJ.d.ts → cupra-diagonal.theme-YeEq5NNx.d.ts} +1 -1
  80. package/{cupra-events.theme-cVqmX62Y.d.cts → cupra-events.theme-CZsQUILE.d.cts} +1 -1
  81. package/{cupra-events.theme-cVqmX62Y.d.ts → cupra-events.theme-CZsQUILE.d.ts} +1 -1
  82. package/{cupra.theme-DKaGh_O3.d.cts → cupra.theme-Dwf_KC9c.d.cts} +1 -1
  83. package/{cupra.theme-DKaGh_O3.d.ts → cupra.theme-Dwf_KC9c.d.ts} +1 -1
  84. package/{dark-BxHAJ7kM.d.cts → dark-DSX5vBCc.d.cts} +1 -1
  85. package/{dark-BxHAJ7kM.d.ts → dark-DSX5vBCc.d.ts} +1 -1
  86. package/{germany.theme-nFG04X6c.d.cts → germany.theme-BZHEis96.d.cts} +1 -1
  87. package/{germany.theme-nFG04X6c.d.ts → germany.theme-BZHEis96.d.ts} +1 -1
  88. package/{hyundai.theme-Dxmi6-Jk.d.cts → hyundai.theme-CZ3-e75P.d.cts} +1 -1
  89. package/{hyundai.theme-Dxmi6-Jk.d.ts → hyundai.theme-CZ3-e75P.d.ts} +1 -1
  90. package/index.cjs +92 -91
  91. package/index.d.cts +2 -2
  92. package/index.d.ts +2 -2
  93. package/index.iife.js +1 -1
  94. package/index.js +41 -40
  95. package/{italy.theme-ghaT8KXg.d.cts → italy.theme-e_NIp9gB.d.cts} +1 -1
  96. package/{italy.theme-ghaT8KXg.d.ts → italy.theme-e_NIp9gB.d.ts} +1 -1
  97. package/{jac-dark.theme-DdqAsf4f.d.cts → jac-dark.theme-CID5X7cE.d.cts} +1 -1
  98. package/{jac-dark.theme-DdqAsf4f.d.ts → jac-dark.theme-CID5X7cE.d.ts} +1 -1
  99. package/{jac.theme-Di6EpMHt.d.cts → jac.theme-C7kaj89z.d.cts} +1 -1
  100. package/{jac.theme-Di6EpMHt.d.ts → jac.theme-C7kaj89z.d.ts} +1 -1
  101. package/{light-BlLrq4kY.d.cts → light-DNobHysW.d.cts} +1 -1
  102. package/{light-BlLrq4kY.d.ts → light-DNobHysW.d.ts} +1 -1
  103. package/{magimix.theme-BPqGCjtn.d.cts → magimix.theme-_PJhrflU.d.cts} +1 -1
  104. package/{magimix.theme-BPqGCjtn.d.ts → magimix.theme-_PJhrflU.d.ts} +1 -1
  105. package/{media-PYNZP2A2.js → media-Z2KW3VEA.js} +2 -2
  106. package/{onlive-ai.theme-DhO68-0D.d.cts → onlive-ai.theme-DQYkXql5.d.cts} +1 -1
  107. package/{onlive-ai.theme-DhO68-0D.d.ts → onlive-ai.theme-DQYkXql5.d.ts} +1 -1
  108. package/{onlive.theme-DLBUb-9X.d.cts → onlive.theme-D_SLBReG.d.cts} +1 -1
  109. package/{onlive.theme-DLBUb-9X.d.ts → onlive.theme-D_SLBReG.d.ts} +1 -1
  110. package/package.json +2 -2
  111. package/react/components/asset/Asset.cjs +1 -1
  112. package/react/components/asset/Asset.jsx +1 -1
  113. package/react/components/side-bar/SideBar.cjs +1 -1
  114. package/react/components/side-bar/SideBar.jsx +1 -1
  115. package/react/components/upload/Upload.cjs +1 -1
  116. package/react/components/upload/Upload.jsx +1 -1
  117. package/{seat-cupra.theme-qDT2y1oc.d.cts → seat-cupra.theme-DaKdJYyc.d.cts} +1 -1
  118. package/{seat-cupra.theme-qDT2y1oc.d.ts → seat-cupra.theme-DaKdJYyc.d.ts} +1 -1
  119. package/{seat.theme-CLUnSkVY.d.cts → seat.theme-BkE3lDxJ.d.cts} +1 -1
  120. package/{seat.theme-CLUnSkVY.d.ts → seat.theme-BkE3lDxJ.d.ts} +1 -1
  121. package/services/audio.service.cjs +1 -1
  122. package/services/audio.service.d.cts +1 -1
  123. package/services/audio.service.d.ts +1 -1
  124. package/services/audio.service.js +1 -1
  125. package/services/conversation/conversation.service.cjs +1 -1
  126. package/services/conversation/conversation.service.d.cts +1 -1
  127. package/services/conversation/conversation.service.d.ts +1 -1
  128. package/services/conversation/conversation.service.js +1 -1
  129. package/services/conversation/conversation.types.cjs +1 -1
  130. package/services/conversation/conversation.types.d.cts +1 -1
  131. package/services/conversation/conversation.types.d.ts +1 -1
  132. package/services/conversation/conversation.types.js +1 -1
  133. package/services/conversation/index.cjs +1 -1
  134. package/services/conversation/index.d.cts +1 -1
  135. package/services/conversation/index.d.ts +1 -1
  136. package/services/conversation/index.js +1 -1
  137. package/services/conversation/mock/actor/agent.cjs +1 -1
  138. package/services/conversation/mock/actor/agent.d.cts +1 -1
  139. package/services/conversation/mock/actor/agent.d.ts +1 -1
  140. package/services/conversation/mock/actor/agent.js +1 -1
  141. package/services/conversation/mock/actor/index.cjs +1 -1
  142. package/services/conversation/mock/actor/index.d.cts +1 -1
  143. package/services/conversation/mock/actor/index.d.ts +1 -1
  144. package/services/conversation/mock/actor/index.js +1 -1
  145. package/services/conversation/mock/actor/strategies.cjs +1 -1
  146. package/services/conversation/mock/actor/strategies.d.cts +1 -1
  147. package/services/conversation/mock/actor/strategies.d.ts +1 -1
  148. package/services/conversation/mock/actor/strategies.js +1 -1
  149. package/services/conversation/mock/errors.cjs +1 -1
  150. package/services/conversation/mock/errors.d.cts +1 -1
  151. package/services/conversation/mock/errors.d.ts +1 -1
  152. package/services/conversation/mock/errors.js +1 -1
  153. package/services/conversation/mock/events.cjs +1 -1
  154. package/services/conversation/mock/events.d.cts +1 -1
  155. package/services/conversation/mock/events.d.ts +1 -1
  156. package/services/conversation/mock/events.js +1 -1
  157. package/services/conversation/mock/factory.cjs +1 -1
  158. package/services/conversation/mock/factory.d.cts +1 -1
  159. package/services/conversation/mock/factory.d.ts +1 -1
  160. package/services/conversation/mock/factory.js +1 -1
  161. package/services/conversation/mock/fixtures.cjs +1 -1
  162. package/services/conversation/mock/fixtures.d.cts +1 -1
  163. package/services/conversation/mock/fixtures.d.ts +1 -1
  164. package/services/conversation/mock/fixtures.js +1 -1
  165. package/services/conversation/mock/generators.cjs +1 -1
  166. package/services/conversation/mock/generators.d.cts +1 -1
  167. package/services/conversation/mock/generators.d.ts +1 -1
  168. package/services/conversation/mock/generators.js +1 -1
  169. package/services/conversation/mock/index.cjs +1 -1
  170. package/services/conversation/mock/index.d.cts +1 -1
  171. package/services/conversation/mock/index.d.ts +1 -1
  172. package/services/conversation/mock/index.js +1 -1
  173. package/services/conversation/mock/livekit/index.cjs +1 -1
  174. package/services/conversation/mock/livekit/index.d.cts +1 -1
  175. package/services/conversation/mock/livekit/index.d.ts +1 -1
  176. package/services/conversation/mock/livekit/index.js +1 -1
  177. package/services/conversation/mock/livekit/local-participant.cjs +1 -1
  178. package/services/conversation/mock/livekit/local-participant.d.cts +1 -1
  179. package/services/conversation/mock/livekit/local-participant.d.ts +1 -1
  180. package/services/conversation/mock/livekit/local-participant.js +1 -1
  181. package/services/conversation/mock/livekit/participant.cjs +1 -1
  182. package/services/conversation/mock/livekit/participant.d.cts +1 -1
  183. package/services/conversation/mock/livekit/participant.d.ts +1 -1
  184. package/services/conversation/mock/livekit/participant.js +1 -1
  185. package/services/conversation/mock/livekit/room.cjs +1 -1
  186. package/services/conversation/mock/livekit/room.d.cts +1 -1
  187. package/services/conversation/mock/livekit/room.d.ts +1 -1
  188. package/services/conversation/mock/livekit/room.js +1 -1
  189. package/services/conversation/mock/livekit/streams.cjs +1 -1
  190. package/services/conversation/mock/livekit/streams.d.cts +1 -1
  191. package/services/conversation/mock/livekit/streams.d.ts +1 -1
  192. package/services/conversation/mock/livekit/streams.js +1 -1
  193. package/services/conversation/mock/livekit/tracks.cjs +1 -1
  194. package/services/conversation/mock/livekit/tracks.d.cts +1 -1
  195. package/services/conversation/mock/livekit/tracks.d.ts +1 -1
  196. package/services/conversation/mock/livekit/tracks.js +1 -1
  197. package/services/conversation/mock/media.cjs +1 -1
  198. package/services/conversation/mock/media.d.cts +1 -1
  199. package/services/conversation/mock/media.d.ts +1 -1
  200. package/services/conversation/mock/media.js +1 -1
  201. package/services/conversation/mock/service.cjs +1 -1
  202. package/services/conversation/mock/service.d.cts +1 -1
  203. package/services/conversation/mock/service.d.ts +1 -1
  204. package/services/conversation/mock/service.js +1 -1
  205. package/services/conversation/mock/service.test.cjs +1 -1
  206. package/services/conversation/mock/service.test.d.cts +1 -1
  207. package/services/conversation/mock/service.test.d.ts +1 -1
  208. package/services/conversation/mock/service.test.js +1 -1
  209. package/services/conversation/mock/state.cjs +1 -1
  210. package/services/conversation/mock/state.d.cts +1 -1
  211. package/services/conversation/mock/state.d.ts +1 -1
  212. package/services/conversation/mock/state.js +1 -1
  213. package/services/conversation/mock/storybook.cjs +1 -1
  214. package/services/conversation/mock/storybook.d.cts +1 -1
  215. package/services/conversation/mock/storybook.d.ts +1 -1
  216. package/services/conversation/mock/storybook.js +1 -1
  217. package/services/conversation/mock/types.cjs +1 -1
  218. package/services/conversation/mock/types.d.cts +1 -1
  219. package/services/conversation/mock/types.d.ts +1 -1
  220. package/services/conversation/mock/types.js +1 -1
  221. package/services/deep-link.service.cjs +1 -1
  222. package/services/deep-link.service.d.cts +1 -1
  223. package/services/deep-link.service.d.ts +1 -1
  224. package/services/deep-link.service.js +1 -1
  225. package/services/faqs/faqs.service.cjs +1 -1
  226. package/services/faqs/faqs.service.d.cts +1 -1
  227. package/services/faqs/faqs.service.d.ts +1 -1
  228. package/services/faqs/faqs.service.js +1 -1
  229. package/services/faqs/faqs.types.cjs +1 -1
  230. package/services/faqs/faqs.types.d.cts +1 -1
  231. package/services/faqs/faqs.types.d.ts +1 -1
  232. package/services/faqs/faqs.types.js +1 -1
  233. package/services/faqs/index.cjs +1 -1
  234. package/services/faqs/index.d.cts +1 -1
  235. package/services/faqs/index.d.ts +1 -1
  236. package/services/faqs/index.js +1 -1
  237. package/services/file/file.service.cjs +1 -1
  238. package/services/file/file.service.d.cts +1 -1
  239. package/services/file/file.service.d.ts +1 -1
  240. package/services/file/file.service.js +1 -1
  241. package/services/file/file.types.cjs +1 -1
  242. package/services/file/file.types.d.cts +1 -1
  243. package/services/file/file.types.d.ts +1 -1
  244. package/services/file/file.types.js +1 -1
  245. package/services/file/index.cjs +1 -1
  246. package/services/file/index.d.cts +1 -1
  247. package/services/file/index.d.ts +1 -1
  248. package/services/file/index.js +1 -1
  249. package/services/firebase/firebase-api.cjs +1 -1
  250. package/services/firebase/firebase-api.d.cts +1 -1
  251. package/services/firebase/firebase-api.d.ts +1 -1
  252. package/services/firebase/firebase-api.js +1 -1
  253. package/services/multimedia/config.example.cjs +1 -1
  254. package/services/multimedia/config.example.d.cts +1 -1
  255. package/services/multimedia/config.example.d.ts +1 -1
  256. package/services/multimedia/config.example.js +1 -1
  257. package/services/multimedia/index.cjs +1 -1
  258. package/services/multimedia/index.d.cts +1 -1
  259. package/services/multimedia/index.d.ts +1 -1
  260. package/services/multimedia/index.js +1 -1
  261. package/services/multimedia/multimedia.service.cjs +1 -1
  262. package/services/multimedia/multimedia.service.d.cts +1 -1
  263. package/services/multimedia/multimedia.service.d.ts +1 -1
  264. package/services/multimedia/multimedia.service.js +1 -1
  265. package/services/multimedia/multimedia.types.cjs +1 -1
  266. package/services/multimedia/multimedia.types.d.cts +1 -1
  267. package/services/multimedia/multimedia.types.d.ts +1 -1
  268. package/services/multimedia/multimedia.types.js +1 -1
  269. package/services/product/index.cjs +1 -1
  270. package/services/product/index.d.cts +1 -1
  271. package/services/product/index.d.ts +1 -1
  272. package/services/product/index.js +1 -1
  273. package/services/product/product.service.cjs +1 -1
  274. package/services/product/product.service.d.cts +1 -1
  275. package/services/product/product.service.d.ts +1 -1
  276. package/services/product/product.service.js +1 -1
  277. package/services/product/product.types.cjs +1 -1
  278. package/services/product/product.types.d.cts +1 -1
  279. package/services/product/product.types.d.ts +1 -1
  280. package/services/product/product.types.js +1 -1
  281. package/services/request.provider.cjs +1 -1
  282. package/services/request.provider.d.cts +1 -1
  283. package/services/request.provider.d.ts +1 -1
  284. package/services/request.provider.js +1 -1
  285. package/services/session.service.cjs +1 -1
  286. package/services/session.service.d.cts +1 -1
  287. package/services/session.service.d.ts +1 -1
  288. package/services/session.service.js +1 -1
  289. package/services/sessions-api.service.cjs +1 -1
  290. package/services/sessions-api.service.d.cts +1 -1
  291. package/services/sessions-api.service.d.ts +1 -1
  292. package/services/sessions-api.service.js +1 -1
  293. package/services/sessions.controller.cjs +1 -1
  294. package/services/sessions.controller.d.cts +1 -1
  295. package/services/sessions.controller.d.ts +1 -1
  296. package/services/sessions.controller.js +1 -1
  297. package/services/sessions.types.cjs +1 -1
  298. package/services/sessions.types.d.cts +1 -1
  299. package/services/sessions.types.d.ts +1 -1
  300. package/services/sessions.types.js +1 -1
  301. package/services/upload/index.cjs +1 -1
  302. package/services/upload/index.d.cts +1 -1
  303. package/services/upload/index.d.ts +1 -1
  304. package/services/upload/index.js +1 -1
  305. package/services/upload/upload.service.cjs +1 -1
  306. package/services/upload/upload.service.d.cts +1 -1
  307. package/services/upload/upload.service.d.ts +1 -1
  308. package/services/upload/upload.service.js +1 -1
  309. package/{skoda.theme-ChGMp526.d.cts → skoda.theme-BhoWwnaO.d.cts} +1 -1
  310. package/{skoda.theme-ChGMp526.d.ts → skoda.theme-BhoWwnaO.d.ts} +1 -1
  311. package/themes/custom/audi-dark.theme.cjs +1 -1
  312. package/themes/custom/audi-dark.theme.d.cts +2 -2
  313. package/themes/custom/audi-dark.theme.d.ts +2 -2
  314. package/themes/custom/audi-dark.theme.js +1 -1
  315. package/themes/custom/audi.theme.cjs +1 -1
  316. package/themes/custom/audi.theme.d.cts +2 -2
  317. package/themes/custom/audi.theme.d.ts +2 -2
  318. package/themes/custom/audi.theme.js +1 -1
  319. package/themes/custom/australia.theme.cjs +1 -1
  320. package/themes/custom/australia.theme.d.cts +2 -2
  321. package/themes/custom/australia.theme.d.ts +2 -2
  322. package/themes/custom/australia.theme.js +1 -1
  323. package/themes/custom/cuernavaca.theme.cjs +1 -1
  324. package/themes/custom/cuernavaca.theme.d.cts +2 -2
  325. package/themes/custom/cuernavaca.theme.d.ts +2 -2
  326. package/themes/custom/cuernavaca.theme.js +1 -1
  327. package/themes/custom/cupra-diagonal.theme.cjs +1 -1
  328. package/themes/custom/cupra-diagonal.theme.d.cts +2 -2
  329. package/themes/custom/cupra-diagonal.theme.d.ts +2 -2
  330. package/themes/custom/cupra-diagonal.theme.js +1 -1
  331. package/themes/custom/cupra-events.theme.cjs +1 -1
  332. package/themes/custom/cupra-events.theme.d.cts +2 -2
  333. package/themes/custom/cupra-events.theme.d.ts +2 -2
  334. package/themes/custom/cupra-events.theme.js +1 -1
  335. package/themes/custom/cupra.theme.cjs +1 -1
  336. package/themes/custom/cupra.theme.d.cts +2 -2
  337. package/themes/custom/cupra.theme.d.ts +2 -2
  338. package/themes/custom/cupra.theme.js +1 -1
  339. package/themes/custom/germany.theme.cjs +1 -1
  340. package/themes/custom/germany.theme.d.cts +2 -2
  341. package/themes/custom/germany.theme.d.ts +2 -2
  342. package/themes/custom/germany.theme.js +1 -1
  343. package/themes/custom/glass.theme.cjs +1 -1
  344. package/themes/custom/glass.theme.d.cts +1 -1
  345. package/themes/custom/glass.theme.d.ts +1 -1
  346. package/themes/custom/glass.theme.js +1 -1
  347. package/themes/custom/hyundai.theme.cjs +1 -1
  348. package/themes/custom/hyundai.theme.d.cts +2 -2
  349. package/themes/custom/hyundai.theme.d.ts +2 -2
  350. package/themes/custom/hyundai.theme.js +1 -1
  351. package/themes/custom/italy.theme.cjs +1 -1
  352. package/themes/custom/italy.theme.d.cts +2 -2
  353. package/themes/custom/italy.theme.d.ts +2 -2
  354. package/themes/custom/italy.theme.js +1 -1
  355. package/themes/custom/jac-dark.theme.cjs +1 -1
  356. package/themes/custom/jac-dark.theme.d.cts +2 -2
  357. package/themes/custom/jac-dark.theme.d.ts +2 -2
  358. package/themes/custom/jac-dark.theme.js +1 -1
  359. package/themes/custom/jac.theme.cjs +1 -1
  360. package/themes/custom/jac.theme.d.cts +2 -2
  361. package/themes/custom/jac.theme.d.ts +2 -2
  362. package/themes/custom/jac.theme.js +1 -1
  363. package/themes/custom/magimix.theme.cjs +1 -1
  364. package/themes/custom/magimix.theme.d.cts +2 -2
  365. package/themes/custom/magimix.theme.d.ts +2 -2
  366. package/themes/custom/magimix.theme.js +1 -1
  367. package/themes/custom/onlive-ai.theme.cjs +1 -1
  368. package/themes/custom/onlive-ai.theme.d.cts +2 -2
  369. package/themes/custom/onlive-ai.theme.d.ts +2 -2
  370. package/themes/custom/onlive-ai.theme.js +1 -1
  371. package/themes/custom/onlive.theme.cjs +1 -1
  372. package/themes/custom/onlive.theme.d.cts +2 -2
  373. package/themes/custom/onlive.theme.d.ts +2 -2
  374. package/themes/custom/onlive.theme.js +1 -1
  375. package/themes/custom/seat-cupra.theme.cjs +1 -1
  376. package/themes/custom/seat-cupra.theme.d.cts +2 -2
  377. package/themes/custom/seat-cupra.theme.d.ts +2 -2
  378. package/themes/custom/seat-cupra.theme.js +1 -1
  379. package/themes/custom/seat.theme.cjs +1 -1
  380. package/themes/custom/seat.theme.d.cts +2 -2
  381. package/themes/custom/seat.theme.d.ts +2 -2
  382. package/themes/custom/seat.theme.js +1 -1
  383. package/themes/custom/skoda.theme.cjs +1 -1
  384. package/themes/custom/skoda.theme.d.cts +2 -2
  385. package/themes/custom/skoda.theme.d.ts +2 -2
  386. package/themes/custom/skoda.theme.js +1 -1
  387. package/themes/custom/transparency.theme.cjs +1 -1
  388. package/themes/custom/transparency.theme.d.cts +2 -2
  389. package/themes/custom/transparency.theme.d.ts +2 -2
  390. package/themes/custom/transparency.theme.js +1 -1
  391. package/themes/dark.cjs +1 -1
  392. package/themes/dark.d.cts +2 -2
  393. package/themes/dark.d.ts +2 -2
  394. package/themes/dark.js +1 -1
  395. package/themes/light.cjs +1 -1
  396. package/themes/light.d.cts +2 -2
  397. package/themes/light.d.ts +2 -2
  398. package/themes/light.js +1 -1
  399. package/{transparency.theme-GZeoSWwI.d.cts → transparency.theme-CbIjRfrj.d.cts} +1 -1
  400. package/{transparency.theme-GZeoSWwI.d.ts → transparency.theme-CbIjRfrj.d.ts} +1 -1
  401. package/types/deep-link.types.cjs +1 -1
  402. package/types/deep-link.types.d.cts +1 -1
  403. package/types/deep-link.types.d.ts +1 -1
  404. package/types/deep-link.types.js +1 -1
  405. package/types/globals.cjs +1 -1
  406. package/types/globals.d.cts +1 -1
  407. package/types/globals.d.ts +1 -1
  408. package/types/globals.js +1 -1
  409. package/types/tracking-options.cjs +1 -1
  410. package/types/tracking-options.d.cts +1 -1
  411. package/types/tracking-options.d.ts +1 -1
  412. package/types/tracking-options.js +1 -1
  413. package/utils/adopt-styles.cjs +1 -1
  414. package/utils/adopt-styles.d.cts +1 -1
  415. package/utils/adopt-styles.d.ts +1 -1
  416. package/utils/adopt-styles.js +1 -1
  417. package/utils/apply-optional-styles.cjs +1 -1
  418. package/utils/apply-optional-styles.d.cts +22 -22
  419. package/utils/apply-optional-styles.d.ts +22 -22
  420. package/utils/apply-optional-styles.js +1 -1
  421. package/utils/browser-preferences.cjs +1 -1
  422. package/utils/browser-preferences.d.cts +1 -1
  423. package/utils/browser-preferences.d.ts +1 -1
  424. package/utils/browser-preferences.js +1 -1
  425. package/utils/classify-media.cjs +1 -1
  426. package/utils/classify-media.d.cts +1 -1
  427. package/utils/classify-media.d.ts +1 -1
  428. package/utils/classify-media.js +1 -1
  429. package/utils/decorators.cjs +1 -1
  430. package/utils/decorators.d.cts +1 -1
  431. package/utils/decorators.d.ts +1 -1
  432. package/utils/decorators.js +1 -1
  433. package/utils/detected-lang.cjs +1 -1
  434. package/utils/detected-lang.d.cts +1 -1
  435. package/utils/detected-lang.d.ts +1 -1
  436. package/utils/detected-lang.js +1 -1
  437. package/utils/fullscreen.cjs +1 -1
  438. package/utils/fullscreen.d.cts +1 -1
  439. package/utils/fullscreen.d.ts +1 -1
  440. package/utils/fullscreen.js +1 -1
  441. package/utils/insert-script.cjs +1 -1
  442. package/utils/insert-script.d.cts +1 -1
  443. package/utils/insert-script.d.ts +1 -1
  444. package/utils/insert-script.js +1 -1
  445. package/utils/is-map-compatible.cjs +1 -1
  446. package/utils/is-map-compatible.d.cts +1 -1
  447. package/utils/is-map-compatible.d.ts +1 -1
  448. package/utils/is-map-compatible.js +1 -1
  449. package/utils/markdown.cjs +1 -1
  450. package/utils/markdown.d.cts +1 -1
  451. package/utils/markdown.d.ts +1 -1
  452. package/utils/markdown.js +1 -1
  453. package/utils/merge.cjs +1 -1
  454. package/utils/merge.d.cts +1 -1
  455. package/utils/merge.d.ts +1 -1
  456. package/utils/merge.js +1 -1
  457. package/utils/multiband-track-volume.cjs +1 -1
  458. package/utils/multiband-track-volume.d.cts +1 -1
  459. package/utils/multiband-track-volume.d.ts +1 -1
  460. package/utils/multiband-track-volume.js +1 -1
  461. package/utils/onlive-url-params.cjs +1 -1
  462. package/utils/onlive-url-params.d.cts +1 -1
  463. package/utils/onlive-url-params.d.ts +1 -1
  464. package/utils/onlive-url-params.js +1 -1
  465. package/utils/pretty-distance.cjs +1 -1
  466. package/utils/pretty-distance.d.cts +1 -1
  467. package/utils/pretty-distance.d.ts +1 -1
  468. package/utils/pretty-distance.js +1 -1
  469. package/utils/pretty-time.cjs +1 -1
  470. package/utils/pretty-time.d.cts +1 -1
  471. package/utils/pretty-time.d.ts +1 -1
  472. package/utils/pretty-time.js +1 -1
  473. package/utils/random-string.cjs +1 -1
  474. package/utils/random-string.d.cts +1 -1
  475. package/utils/random-string.d.ts +1 -1
  476. package/utils/random-string.js +1 -1
  477. package/utils/resource-type.cjs +1 -1
  478. package/utils/resource-type.d.cts +1 -1
  479. package/utils/resource-type.d.ts +1 -1
  480. package/utils/resource-type.js +1 -1
  481. package/utils/round-number.cjs +1 -1
  482. package/utils/round-number.d.cts +1 -1
  483. package/utils/round-number.d.ts +1 -1
  484. package/utils/round-number.js +1 -1
  485. package/utils/safe-html.cjs +1 -1
  486. package/utils/safe-html.d.cts +1 -1
  487. package/utils/safe-html.d.ts +1 -1
  488. package/utils/safe-html.js +1 -1
  489. package/utils/sanitize.cjs +1 -1
  490. package/utils/sanitize.d.cts +1 -1
  491. package/utils/sanitize.d.ts +1 -1
  492. package/utils/sanitize.js +1 -1
  493. package/utils/spread.cjs +1 -1
  494. package/utils/spread.d.cts +1 -1
  495. package/utils/spread.d.ts +1 -1
  496. package/utils/spread.js +1 -1
  497. package/utils/watch.cjs +1 -1
  498. package/utils/watch.d.cts +1 -1
  499. package/utils/watch.d.ts +1 -1
  500. package/utils/watch.js +1 -1
package/index.cjs CHANGED
@@ -1,5 +1,5 @@
1
- /*! @onlive.ai/common-121 v0.2.227 | © 2026 Onlive.ai */
2
- "use strict";var Ai=Object.create;var Te=Object.defineProperty;var Jt=Object.getOwnPropertyDescriptor;var Ci=Object.getOwnPropertyNames;var Ti=Object.getPrototypeOf,Pi=Object.prototype.hasOwnProperty;var Ri=(s,e)=>()=>(s&&(e=s(s=0)),e);var Bt=(s,e)=>{for(var t in e)Te(s,t,{get:e[t],enumerable:!0})},Kt=(s,e,t,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of Ci(e))!Pi.call(s,o)&&o!==t&&Te(s,o,{get:()=>e[o],enumerable:!(i=Jt(e,o))||i.enumerable});return s};var A=(s,e,t)=>(t=s!=null?Ai(Ti(s)):{},Kt(e||!s||!s.__esModule?Te(t,"default",{value:s,enumerable:!0}):t,s)),Ii=s=>Kt(Te({},"__esModule",{value:!0}),s),v=(s,e,t,i)=>{for(var o=i>1?void 0:i?Jt(e,t):e,a=s.length-1,r;a>=0;a--)(r=s[a])&&(o=(i?r(e,t,o):r(o))||o);return i&&o&&Te(e,t,o),o};var _e={};Bt(_e,{SYNTHETIC_MEDIA_PRESETS:()=>Oe,createSyntheticAudioTrack:()=>Ee,createSyntheticMedia:()=>ze,createSyntheticMediaFromPreset:()=>Ze,createSyntheticVideoTrack:()=>Ie});function Ie(s={}){let{width:e=640,height:t=480,fps:i=30,backgroundColor:o="#1a1a2e",foregroundColor:a="#4361ee",label:r="Mock Video",animation:l="wave"}=s,n=document.createElement("canvas");n.width=e,n.height=t;let d=n.getContext("2d"),m,V=Date.now(),J={wave:I=>{d.fillStyle=o,d.fillRect(0,0,e,t),d.strokeStyle=a,d.lineWidth=3,d.beginPath();for(let S=0;S<e;S++){let P=t/2+Math.sin(S/e*4*Math.PI+I*.002)*(t/4);S===0?d.moveTo(S,P):d.lineTo(S,P)}d.stroke()},pulse:I=>{d.fillStyle=o,d.fillRect(0,0,e,t);let S=Math.sin(I*.003)*.3+.7,P=Math.min(e,t)*.3*S;d.beginPath(),d.arc(e/2,t/2,P,0,Math.PI*2),d.fillStyle=a,d.fill()},bars:I=>{d.fillStyle=o,d.fillRect(0,0,e,t);let S=20,P=e/S,W=t*.7;d.fillStyle=a;for(let Ce=0;Ce<S;Ce++){let Vt=Math.abs(Math.sin(Ce/S*Math.PI*2+I*.004))*W,_i=Ce*P,xi=t-Vt;d.fillRect(_i+2,xi,P-4,Vt)}},avatar:I=>{d.fillStyle=o,d.fillRect(0,0,e,t);let S=e/2,P=t/2-20,W=Math.min(e,t)*.15;d.beginPath(),d.arc(S,P,W,0,Math.PI*2),d.fillStyle=a,d.fill(),d.beginPath(),d.ellipse(S,P+W*2.2,W*1.5,W,0,Math.PI,0),d.fill(),Math.sin(I*.01)>0&&(d.beginPath(),d.arc(S,P+W*3,5+Math.sin(I*.02)*3,0,Math.PI*2),d.fillStyle="#22c55e",d.fill())},none:()=>{d.fillStyle=o,d.fillRect(0,0,e,t)}},B=()=>{d.fillStyle="rgba(255, 255, 255, 0.8)",d.font=`${Math.floor(t*.04)}px system-ui, sans-serif`,d.textAlign="center",d.fillText(r,e/2,t-20)},ne=()=>{let I=Date.now()-V;J[l](I),B(),m=requestAnimationFrame(ne)};ne();let Nt=n.captureStream(i),Ht=Nt.getVideoTracks()[0];return{track:Ht,stream:Nt,cleanup:()=>{cancelAnimationFrame(m),Ht.stop()}}}function Ee(s={}){let{frequency:e=440,volume:t=.1,waveType:i="sine",addVariation:o=!0,enabled:a=!1}=s,r=new AudioContext,l=r.createMediaStreamDestination(),n=r.createOscillator();n.type=i,n.frequency.value=e;let d=r.createGain();d.gain.value=a?t:0;let m=null,V=null;o&&(m=r.createOscillator(),m.frequency.value=.5,V=r.createGain(),V.gain.value=10,m.connect(V),V.connect(n.frequency),m.start()),n.connect(d),d.connect(l),n.start();let J=l.stream,B=J.getAudioTracks()[0];return{track:B,stream:J,setVolume:ne=>{d.gain.value=Math.max(0,Math.min(1,ne))},setEnabled:ne=>{d.gain.value=ne?t:0},cleanup:()=>{n.stop(),m?.stop(),r.close(),B.stop()}}}function ze(s,e){let t=Ie(s),i=Ee(e),o=new MediaStream([t.track,i.track]);return{videoTrack:t.track,audioTrack:i.track,combinedStream:o,setAudioVolume:i.setVolume,setAudioEnabled:i.setEnabled,cleanup:()=>{t.cleanup(),i.cleanup()}}}function Ze(s){let e=Oe[s];return ze(e.video,e.audio)}var Oe,ae=Ri(()=>{"use strict";Oe={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 Ki={};Bt(Ki,{AgentNotFoundError:()=>ye,Asset:()=>pi,ConversationServiceFactory:()=>H,DeepLinkAction:()=>nt,DeepLinkService:()=>lt,InvalidOperationError:()=>we,MockConversationService:()=>F,MockEventEmitter:()=>se,MockLiveKitError:()=>b,MockLocalParticipant:()=>Y,MockParticipant:()=>L,MockRoom:()=>D,MockServiceActions:()=>rt,MockState:()=>re,MockTextStreamReader:()=>Ae,MockTrack:()=>T,MockTrackPublication:()=>x,NetworkError:()=>je,OSBAsset:()=>k,OSBSideBar:()=>f,OSBUpload:()=>R,ParticipantAlreadyJoinedError:()=>he,ParticipantNotFoundError:()=>fe,RoomEndedError:()=>ve,RoomNotFoundError:()=>z,SYNTHETIC_MEDIA_PRESETS:()=>Oe,SideBar:()=>gi,StorybookScenarios:()=>Ut,TimeoutError:()=>Se,TrackNotFoundError:()=>be,UnauthorizedError:()=>ke,Upload:()=>fi,createAgentFixture:()=>$e,createAgentWithCannedResponses:()=>Ct,createChatScenario:()=>zt,createConversationFixture:()=>st,createConversationService:()=>Mt,createDefaultConfig:()=>xe,createDefaultRoomFixture:()=>De,createDeterministicConfig:()=>Et,createErrorFromMockError:()=>oe,createLatencyConfig:()=>It,createMessageFixture:()=>Pt,createMockConversationService:()=>Le,createMockServiceFactory:()=>$t,createParticipantBatch:()=>At,createParticipantFixture:()=>ot,createRoomWithAgent:()=>Ue,createRoomWithAgentAndDataTrack:()=>_t,createRoomWithLocalParticipant:()=>Fe,createRoomWithMediaTracks:()=>xt,createRoomWithTwoParticipants:()=>it,createSequentialAgent:()=>Tt,createStrictConfig:()=>Rt,createSyntheticAudioTrack:()=>Ee,createSyntheticMedia:()=>ze,createSyntheticMediaFromPreset:()=>Ze,createSyntheticVideoTrack:()=>Ie,createVideoCallScenario:()=>Ot,decodeMockToken:()=>mt,destroyStorybookMockService:()=>Lt,generateMockApiResponseId:()=>bt,generateMockExternalId:()=>yt,generateMockId:()=>g,generateMockIdBatch:()=>kt,generateMockMessageId:()=>ft,generateMockParticipantIdentity:()=>gt,generateMockRoomName:()=>vt,generateMockToken:()=>E,generateMockTrackSid:()=>ht,generateMockWsUrl:()=>ie,generateSeededMockId:()=>ut,getStorybookMockService:()=>y,isMockConversationService:()=>Ft,isMockError:()=>O,isMockLiveKitError:()=>jt,resetIdCounter:()=>Re,resetStorybookMockService:()=>at,setIdCounter:()=>pt,withMockConversationService:()=>Dt});module.exports=Ii(Ki);var ee=require("lit"),C=require("lit/decorators.js"),si=require("lit/directives/class-map.js");var Ei=(s,e)=>(customElements.get(s)?console.debug(`Custom element <${s}> is already defined, skipping definition of ${e.name}.`):window.customElements.define(s,e),e),zi=(s,e)=>{let{kind:t,elements:i}=e;return{kind:t,elements:i,finisher(o){customElements.get(s)||window.customElements.define(s,o)}}},K=s=>e=>typeof e=="function"?Ei(s,e):zi(s,e);var le=class s{constructor(e){this.config=e}static initialize(e){return new s(e)}getBaseUrl(){return`${this.config.baseUrl}`}getHeaders(){return{"Content-Type":"application/json"}}async makeRequest(e,t={}){let i=`${this.getBaseUrl()}${e}`,o=await fetch(i,{...t,headers:{...this.getHeaders(),...t.headers}});if(!o.ok)throw new Error(`FAQs API error: ${o.status} ${o.statusText}`);return o.json()}async getSettingsByOrganization(e,t){try{let i=new URLSearchParams;t&&i.append("userGroupId",t);let o=i.toString(),a=`${this.getBaseUrl()}/settings/organization/${e}${o?`?${o}`:""}`,r=await fetch(a,{method:"GET",headers:this.getHeaders(),credentials:"include"});if(r.status===404)return null;if(!r.ok)throw new Error(`Failed to fetch settings: ${r.statusText}`);return await r.json()}catch(i){return console.error("Error fetching settings:",i),null}}async getFaqs(e={}){let t=new URLSearchParams;if(e.search&&t.append("search",e.search),e.organizationId&&t.append("organizationId",e.organizationId),e.groupId&&t.append("groupId",e.groupId),e.isActive!==void 0&&t.append("isActive",e.isActive.toString()),e.page&&t.append("page",e.page.toString()),e.limit&&t.append("limit",e.limit.toString()),e.sortBy&&t.append("sortBy",e.sortBy),e.sortOrder&&t.append("sortOrder",e.sortOrder),e.extraFilters){for(let[a,r]of Object.entries(e.extraFilters))if(r&&(Array.isArray(r)?r.length>0:r.toString().trim()!=="")){let l=Array.isArray(r)?r.join(","):r.toString();t.append(`extra_${a}`,l)}}let i=t.toString(),o=`/faqs${i?`?${i}`:""}`;return this.makeRequest(o)}async getFaqById(e){return this.makeRequest(`/faqs/${e}`,{})}};var h=async(s,e)=>{let t=await fetch(s,e);if(!t.ok){let i=await t.json().catch(()=>({}));throw new Error(JSON.stringify({status:t.status,statusText:t.statusText,...i}))}return t&&t.json()};var ce=class s{constructor(e){this.config=e,this.enableUpload=e.enableUpload||!1}static getInstance(e){if(!s.instance&&e&&(s.instance=new s(e)),!s.instance)throw new Error("FileService must be initialized with config first");return s.instance}static initialize(e){return s.instance=new s(e),s.instance}async uploadFile(e,t={}){try{let i=await this.requestSignedUrl({filename:e.name,description:t.description,loadDirection:"up",bucketType:t.bucketType||"conversations",path:t.path||".temp",mimeType:e.type});return await this.uploadToSignedUrl(i.data.signedUrlData.signedUrl,e),{success:!0,id:i.data.file.id,name:i.data.file.name,url:i.data.file.url,type:i.data.file.type}}catch(i){return console.error("Error uploading file:",i),{success:!1,error:i instanceof Error?i.message:"Unknown error"}}}async requestSignedUrl(e){let t=`${this.config.baseUrl}/files/upload-url`;return this.makeRequest(t,{method:"POST",body:JSON.stringify(e)})}async uploadToSignedUrl(e,t){let i=await fetch(e,{method:"PUT",body:t,headers:{"Content-Type":t.type}});if(!i.ok){let o=await i.text().catch(()=>"No response");throw new Error(`Upload failed with status: ${i.status}. Response: ${o}`)}}async uploadFileWithRetry(e,t={}){let i=t.maxRetries||3,o=null;for(let a=1;a<=i;a++)try{let r=await this.uploadFile(e,t);if(r.success)return r;throw new Error(r.error||"Upload failed")}catch(r){if(o=r instanceof Error?r:new Error("Unknown error"),a===i)break;let l=2**a*1e3;await new Promise(n=>setTimeout(n,l))}return{success:!1,error:o?.message||"Upload failed after retries"}}async getFileById(e){let t=`${this.config.baseUrl}/files/${e}`,i=await this.makeRequest(t);if(!i.success)throw new Error("Failed to get file");return i.data}async makeRequest(e,t){let i={"Content-Type":"application/json"};return this.config.organizationId&&(i["X-Onlive-Organization-Id"]=this.config.organizationId),t?.headers&&Object.assign(i,t.headers),h(e,{...t,headers:i})}updateConfig(e){this.config={...this.config,...e}}getConfig(){return{...this.config}}};var de=class s{constructor(e){this.config=e}static getInstance(e){if(!s.instance&&e&&(s.instance=new s(e)),!s.instance)throw new Error("MultimediaService must be initialized with config first");return s.instance}static initialize(e){return s.instance=new s(e),s.instance}async getImages(e={}){let t=new URLSearchParams({type:"image",page:(e.page||1).toString(),limit:(e.limit||12).toString(),...e.search&&{search:e.search},...e.labels&&{labels:e.labels.join(",")},...e.includeSecureToken&&{includeSecureToken:e.includeSecureToken.toString()}});this.appendExtraFilters(t,e.extraFilters);let i=`${this.config.baseUrl}/multimedia?${t}`;return this.makeRequest(i)}async getVideos(e={}){let t=new URLSearchParams({type:"video",page:(e.page||1).toString(),limit:(e.limit||12).toString(),...e.search&&{search:e.search},...e.labels&&{labels:e.labels.join(",")},...e.includeSecureToken&&{includeSecureToken:e.includeSecureToken.toString()}});this.appendExtraFilters(t,e.extraFilters);let i=`${this.config.baseUrl}/multimedia?${t}`;return this.makeRequest(i)}async getPresentations(e={}){let t=new URLSearchParams({type:"presentation",page:(e.page||1).toString(),limit:(e.limit||12).toString(),...e.search&&{search:e.search},...e.labels&&{labels:e.labels.join(",")},...e.includeSecureToken&&{includeSecureToken:e.includeSecureToken.toString()}});this.appendExtraFilters(t,e.extraFilters);let i=`${this.config.baseUrl}/multimedia?${t}`;return this.makeRequest(i)}async getAllMultimedia(e={}){let[t,i,o]=await Promise.all([this.getImages(e),this.getVideos(e),this.getPresentations(e)]);return{images:t,videos:i,presentations:o}}async getMultimediaByToken(e){let t=`${this.config.baseUrl}/multimedia/secure-token/${e}`;return this.makeRequest(t,!1)}async searchMultimedia(e,t){let i={search:e,page:1,limit:50,includeSecureToken:!0};if(t)return this.getMultimediaByType(t,i);let[o,a,r]=await Promise.all([this.getImages(i),this.getVideos(i),this.getPresentations(i)]),l=[...o.items,...a.items,...r.items];return{items:l,total:l.length,count:l.length,currentPage:1,totalPages:1}}async getMultimediaByType(e,t){switch(e){case"image":return this.getImages(t);case"video":return this.getVideos(t);case"presentation":return this.getPresentations(t);default:throw new Error(`Invalid multimedia type: ${e}`)}}appendExtraFilters(e,t){if(t){for(let[i,o]of Object.entries(t))if(o&&(Array.isArray(o)?o.length>0:o.toString().trim()!=="")){let a=Array.isArray(o)?o.join(","):o.toString();e.append(`extra_${i}`,a)}}}async makeRequest(e,t=!0){let i={"Content-Type":"application/json","X-Onlive-Organization-Id":this.config.organizationId};return h(e,{method:"GET",headers:i,credentials:t?"include":void 0})}updateConfig(e){this.config={...this.config,...e}}getConfig(){return{...this.config}}};var X=class s{constructor(e){this.config=e}static getInstance(e){if(!s.instance&&e&&(s.instance=new s(e)),!s.instance)throw new Error("ProductService must be initialized with config first");return s.instance}static initialize(e){return s.instance=new s(e),s.instance}async getProducts(e={}){let t=new URLSearchParams({...e.title&&{title:e.title},...e.search&&{search:e.search},...e.category&&{category:e.category},...e.tags&&{tags:e.tags.join(",")},...e.sortBy&&{sortBy:e.sortBy},...e.sortOrder&&{sortOrder:e.sortOrder},...e.minPrice&&{minPrice:e.minPrice.toString()},...e.maxPrice&&{maxPrice:e.maxPrice.toString()},...e.inStock!==void 0&&{inStock:e.inStock.toString()},...e.offset&&{offset:e.offset.toString()},...e.includeSecureToken&&{includeSecureToken:e.includeSecureToken.toString()}});e.extraFields&&Object.keys(e.extraFields).length>0&&t.append("extraFields",JSON.stringify(e.extraFields));let i=`${this.config.baseUrl}/products?${t}`;return this.makeRequest(i,!0)}async getProductByToken(e){let t=`${this.config.baseUrl}/products/secure-token/${e}`;return this.makeRequest(t)}async searchProducts(e,t={}){return this.getProducts({...t,search:e})}async makeRequest(e,t=!1){let i={"Content-Type":"application/json","X-Onlive-Organization-Id":this.config.organizationId};return h(e,{method:"GET",headers:i,credentials:t?"include":"same-origin"})}updateConfig(e){this.config={...this.config,...e}}getConfig(){return{...this.config}}};var qe=class{constructor(e){e?.multimediaService&&(this.multimediaService=de.initialize(e.multimediaService)),e?.faqsService&&(this.faqsService=le.initialize(e.faqsService)),e?.productService&&(this.productService=X.initialize(e.productService)),e?.fileService&&(this.fileService=ce.initialize(e.fileService))}async loadAsset(e,t){switch(e){case"multimedia":return this.loadMultimediaAsset(t);case"product":return this.loadProductAsset(t);case"faq":return this.loadFaqAsset(t);case"file":return this.loadFileAsset(t);default:throw new Error(`Unsupported asset type: ${e}`)}}async loadMultimediaAsset(e){if(!this.multimediaService)throw new Error("MultimediaService not configured");let t=await this.multimediaService.getMultimediaByToken(e);if(!t)throw new Error("Multimedia not found");return{id:t.id,name:t.name,description:t.description||"",url:t.url,thumbnail:t.animatedCoverUrl||t.url,type:"multimedia",externalId:t.id,format:t.format,size:t.size||void 0,duration:t.duration||void 0,vodUrl:t.vodUrl||void 0,slides:t.slides||[],labels:t.labels,animatedCoverUrl:t.animatedCoverUrl||void 0,metadata:{organizationId:t.organizationId,status:t.status,createdAt:t.createdAt,updatedAt:t.updatedAt}}}async loadProductAsset(e){if(!this.productService)throw new Error("MultimediaService not configured");let t=await this.productService.getProductByToken(e);if(!t)throw new Error("Product not found");return{id:t.id,name:t.name,description:t.description,url:t.url,thumbnail:t.images?.[0],type:"product",externalId:t.externalId,price:t.price,currency:t.currency,category:t.category,tags:t.tags,images:t.images,variants:t.variants?.map(i=>({id:i.id,externalId:i.externalId,price:i.price,currency:i.currency,images:i.images})),options:t.options,metadata:{providerType:t.providerType,providerId:t.providerId,discountType:t.discountType,discount:t.discount,stock:t.stock,broken:t.broken}}}async loadFaqAsset(e){if(!this.faqsService)throw new Error("FaqsService not configured");let t=await this.faqsService.getFaqById(e);return{id:t.id,name:t.question,description:t.answer,url:`#faq-${t.id}`,type:"faq",externalId:t.id,question:t.question,answer:t.answer,priority:t.priority,isActive:t.isActive,metadata:{organizationId:t.organizationId,createdAt:t.createdAt,updatedAt:t.updatedAt}}}async loadFileAsset(e){if(!this.fileService)throw new Error("FileService not configured");let t=await this.fileService.getFileById(e),i=t.type||"",o=i.startsWith("video/"),a=i.startsWith("image/");return{id:t.id,name:t.name,description:t.description||"",url:t.url,thumbnail:a?t.url:void 0,type:"file",externalId:t.id,format:i,size:t.metadata?.size,duration:void 0,vodUrl:o?t.url:void 0,labels:[],animatedCoverUrl:o?t.url:void 0,metadata:{path:t.metadata?.path,bucketType:t.metadata?.bucketType,loadDirection:t.metadata?.loadDirection,createdAt:t.createdAt,updatedAt:t.updatedAt}}}};var c=require("lit"),ti=require("lit/directives/class-map.js"),pe=require("lit/directives/if-defined.js"),U=require("lit/directives/when.js");var Yt=require("lit/directives/unsafe-html.js");var ct=A(require("dompurify"),1),Oi={ALLOWED_TAGS:["p","br","span","b","strong","i","em","u","s","del","ul","ol","li","code","pre","a","h1","h2","h3","h4","table","thead","tbody","tr","th","td"],ALLOWED_ATTR:["href","target","rel","title","aria-label","role","colspan","rowspan"],FORCE_HTTPS:!0,ALLOW_DATA_ATTR:!1};ct.default.addHook("afterSanitizeAttributes",s=>{"target"in s&&s.target==="_blank"&&s.setAttribute("rel","noopener noreferrer")});var Gt=(s,e=Oi)=>ct.default.sanitize(s,e);function Qt(s=""){return(0,Yt.unsafeHTML)(Li(s))}function Li(s=""){return Gt(s,{ADD_ATTR:["target","rel","content","variant","size"],ADD_TAGS:["ol-"],CUSTOM_ELEMENT_HANDLING:{tagNameCheck:/^ol-/,attributeNameCheck:null,allowCustomizedBuiltInElements:!0}})}var bo=require("@onlive.ai/ui/dist/components/button/button.js"),yo=require("@onlive.ai/ui/dist/components/icon/icon.js"),Pe=require("lit"),He=require("lit/decorators.js"),Zt=require("lit/directives/repeat.js"),ei=A(require("video.js"),1);var Ne=require("lit"),Wt=A(require("video.js/dist/video-js.min.css?inline"),1),Xt=Ne.css`
1
+ /*! @onlive.ai/common-121 v0.2.228 | © 2026 Onlive.ai */
2
+ "use strict";var Ai=Object.create;var Pe=Object.defineProperty;var Vt=Object.getOwnPropertyDescriptor;var Ci=Object.getOwnPropertyNames;var Pi=Object.getPrototypeOf,Ri=Object.prototype.hasOwnProperty;var Ti=(s,e)=>()=>(s&&(e=s(s=0)),e);var Jt=(s,e)=>{for(var t in e)Pe(s,t,{get:e[t],enumerable:!0})},Bt=(s,e,t,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of Ci(e))!Ri.call(s,o)&&o!==t&&Pe(s,o,{get:()=>e[o],enumerable:!(i=Vt(e,o))||i.enumerable});return s};var A=(s,e,t)=>(t=s!=null?Ai(Pi(s)):{},Bt(e||!s||!s.__esModule?Pe(t,"default",{value:s,enumerable:!0}):t,s)),Ii=s=>Bt(Pe({},"__esModule",{value:!0}),s),v=(s,e,t,i)=>{for(var o=i>1?void 0:i?Vt(e,t):e,a=s.length-1,n;a>=0;a--)(n=s[a])&&(o=(i?n(e,t,o):n(o))||o);return i&&o&&Pe(e,t,o),o};var _e={};Jt(_e,{SYNTHETIC_MEDIA_PRESETS:()=>Oe,createSyntheticAudioTrack:()=>Ee,createSyntheticMedia:()=>ze,createSyntheticMediaFromPreset:()=>Xe,createSyntheticVideoTrack:()=>Ie});function Ie(s={}){let{width:e=640,height:t=480,fps:i=30,backgroundColor:o="#1a1a2e",foregroundColor:a="#4361ee",label:n="Mock Video",animation:l="wave"}=s,r=document.createElement("canvas");r.width=e,r.height=t;let d=r.getContext("2d"),u,V=Date.now(),J={wave:I=>{d.fillStyle=o,d.fillRect(0,0,e,t),d.strokeStyle=a,d.lineWidth=3,d.beginPath();for(let S=0;S<e;S++){let R=t/2+Math.sin(S/e*4*Math.PI+I*.002)*(t/4);S===0?d.moveTo(S,R):d.lineTo(S,R)}d.stroke()},pulse:I=>{d.fillStyle=o,d.fillRect(0,0,e,t);let S=Math.sin(I*.003)*.3+.7,R=Math.min(e,t)*.3*S;d.beginPath(),d.arc(e/2,t/2,R,0,Math.PI*2),d.fillStyle=a,d.fill()},bars:I=>{d.fillStyle=o,d.fillRect(0,0,e,t);let S=20,R=e/S,Q=t*.7;d.fillStyle=a;for(let Ce=0;Ce<S;Ce++){let Ht=Math.abs(Math.sin(Ce/S*Math.PI*2+I*.004))*Q,_i=Ce*R,xi=t-Ht;d.fillRect(_i+2,xi,R-4,Ht)}},avatar:I=>{d.fillStyle=o,d.fillRect(0,0,e,t);let S=e/2,R=t/2-20,Q=Math.min(e,t)*.15;d.beginPath(),d.arc(S,R,Q,0,Math.PI*2),d.fillStyle=a,d.fill(),d.beginPath(),d.ellipse(S,R+Q*2.2,Q*1.5,Q,0,Math.PI,0),d.fill(),Math.sin(I*.01)>0&&(d.beginPath(),d.arc(S,R+Q*3,5+Math.sin(I*.02)*3,0,Math.PI*2),d.fillStyle="#22c55e",d.fill())},none:()=>{d.fillStyle=o,d.fillRect(0,0,e,t)}},B=()=>{d.fillStyle="rgba(255, 255, 255, 0.8)",d.font=`${Math.floor(t*.04)}px system-ui, sans-serif`,d.textAlign="center",d.fillText(n,e/2,t-20)},re=()=>{let I=Date.now()-V;J[l](I),B(),u=requestAnimationFrame(re)};re();let qt=r.captureStream(i),Nt=qt.getVideoTracks()[0];return{track:Nt,stream:qt,cleanup:()=>{cancelAnimationFrame(u),Nt.stop()}}}function Ee(s={}){let{frequency:e=440,volume:t=.1,waveType:i="sine",addVariation:o=!0,enabled:a=!1}=s,n=new AudioContext,l=n.createMediaStreamDestination(),r=n.createOscillator();r.type=i,r.frequency.value=e;let d=n.createGain();d.gain.value=a?t:0;let u=null,V=null;o&&(u=n.createOscillator(),u.frequency.value=.5,V=n.createGain(),V.gain.value=10,u.connect(V),V.connect(r.frequency),u.start()),r.connect(d),d.connect(l),r.start();let J=l.stream,B=J.getAudioTracks()[0];return{track:B,stream:J,setVolume:re=>{d.gain.value=Math.max(0,Math.min(1,re))},setEnabled:re=>{d.gain.value=re?t:0},cleanup:()=>{r.stop(),u?.stop(),n.close(),B.stop()}}}function ze(s,e){let t=Ie(s),i=Ee(e),o=new MediaStream([t.track,i.track]);return{videoTrack:t.track,audioTrack:i.track,combinedStream:o,setAudioVolume:i.setVolume,setAudioEnabled:i.setEnabled,cleanup:()=>{t.cleanup(),i.cleanup()}}}function Xe(s){let e=Oe[s];return ze(e.video,e.audio)}var Oe,ae=Ti(()=>{"use strict";Oe={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 Ki={};Jt(Ki,{AgentNotFoundError:()=>ye,Asset:()=>di,ConversationServiceFactory:()=>H,DeepLinkAction:()=>nt,DeepLinkService:()=>rt,InvalidOperationError:()=>we,MockConversationService:()=>F,MockEventEmitter:()=>se,MockLiveKitError:()=>b,MockLocalParticipant:()=>Y,MockParticipant:()=>L,MockRoom:()=>D,MockServiceActions:()=>at,MockState:()=>ne,MockTextStreamReader:()=>Ae,MockTrack:()=>P,MockTrackPublication:()=>x,NetworkError:()=>je,OSBAsset:()=>k,OSBSideBar:()=>f,OSBUpload:()=>T,ParticipantAlreadyJoinedError:()=>he,ParticipantNotFoundError:()=>fe,RoomEndedError:()=>ve,RoomNotFoundError:()=>z,SYNTHETIC_MEDIA_PRESETS:()=>Oe,SideBar:()=>ui,StorybookScenarios:()=>Ft,TimeoutError:()=>Se,TrackNotFoundError:()=>be,UnauthorizedError:()=>ke,Upload:()=>hi,createAgentFixture:()=>$e,createAgentWithCannedResponses:()=>At,createChatScenario:()=>Et,createConversationFixture:()=>ot,createConversationService:()=>St,createDefaultConfig:()=>xe,createDefaultRoomFixture:()=>De,createDeterministicConfig:()=>It,createErrorFromMockError:()=>oe,createLatencyConfig:()=>Tt,createMessageFixture:()=>Pt,createMockConversationService:()=>Le,createMockServiceFactory:()=>Ut,createParticipantBatch:()=>xt,createParticipantFixture:()=>it,createRoomWithAgent:()=>Ue,createRoomWithAgentAndDataTrack:()=>Mt,createRoomWithLocalParticipant:()=>Fe,createRoomWithMediaTracks:()=>_t,createRoomWithTwoParticipants:()=>tt,createSequentialAgent:()=>Ct,createStrictConfig:()=>Rt,createSyntheticAudioTrack:()=>Ee,createSyntheticMedia:()=>ze,createSyntheticMediaFromPreset:()=>Xe,createSyntheticVideoTrack:()=>Ie,createVideoCallScenario:()=>zt,decodeMockToken:()=>mt,destroyStorybookMockService:()=>Ot,generateMockApiResponseId:()=>ft,generateMockExternalId:()=>bt,generateMockId:()=>g,generateMockIdBatch:()=>yt,generateMockMessageId:()=>ht,generateMockParticipantIdentity:()=>ut,generateMockRoomName:()=>gt,generateMockToken:()=>E,generateMockTrackSid:()=>vt,generateMockWsUrl:()=>ie,generateSeededMockId:()=>pt,getStorybookMockService:()=>y,isMockConversationService:()=>Dt,isMockError:()=>O,isMockLiveKitError:()=>kt,resetIdCounter:()=>Te,resetStorybookMockService:()=>st,setIdCounter:()=>dt,withMockConversationService:()=>Lt});module.exports=Ii(Ki);var ee=require("lit"),C=require("lit/decorators.js"),oi=require("lit/directives/class-map.js");var Ei=(s,e)=>(customElements.get(s)?console.debug(`Custom element <${s}> is already defined, skipping definition of ${e.name}.`):window.customElements.define(s,e),e),zi=(s,e)=>{let{kind:t,elements:i}=e;return{kind:t,elements:i,finisher(o){customElements.get(s)||window.customElements.define(s,o)}}},K=s=>e=>typeof e=="function"?Ei(s,e):zi(s,e);var le=class s{constructor(e){this.config=e}static initialize(e){return new s(e)}getBaseUrl(){return`${this.config.baseUrl}`}getHeaders(){return{"Content-Type":"application/json"}}async makeRequest(e,t={}){let i=`${this.getBaseUrl()}${e}`,o=await fetch(i,{...t,headers:{...this.getHeaders(),...t.headers}});if(!o.ok)throw new Error(`FAQs API error: ${o.status} ${o.statusText}`);return o.json()}async getSettingsByOrganization(e,t){try{let i=new URLSearchParams;t&&i.append("userGroupId",t);let o=i.toString(),a=`${this.getBaseUrl()}/settings/organization/${e}${o?`?${o}`:""}`,n=await fetch(a,{method:"GET",headers:this.getHeaders(),credentials:"include"});if(n.status===404)return null;if(!n.ok)throw new Error(`Failed to fetch settings: ${n.statusText}`);return await n.json()}catch(i){return console.error("Error fetching settings:",i),null}}async getFaqs(e={}){let t=new URLSearchParams;if(e.search&&t.append("search",e.search),e.organizationId&&t.append("organizationId",e.organizationId),e.groupId&&t.append("groupId",e.groupId),e.isActive!==void 0&&t.append("isActive",e.isActive.toString()),e.page&&t.append("page",e.page.toString()),e.limit&&t.append("limit",e.limit.toString()),e.sortBy&&t.append("sortBy",e.sortBy),e.sortOrder&&t.append("sortOrder",e.sortOrder),e.extraFilters){for(let[a,n]of Object.entries(e.extraFilters))if(n&&(Array.isArray(n)?n.length>0:n.toString().trim()!=="")){let l=Array.isArray(n)?n.join(","):n.toString();t.append(`extra_${a}`,l)}}let i=t.toString(),o=`/faqs${i?`?${i}`:""}`;return this.makeRequest(o)}async getFaqById(e){return this.makeRequest(`/faqs/${e}`,{})}};var h=async(s,e)=>{let t=await fetch(s,e);if(!t.ok){let i=await t.json().catch(()=>({}));throw new Error(JSON.stringify({status:t.status,statusText:t.statusText,...i}))}return t&&t.json()};var ce=class s{constructor(e){this.config=e,this.enableUpload=e.enableUpload||!1}static getInstance(e){if(!s.instance&&e&&(s.instance=new s(e)),!s.instance)throw new Error("FileService must be initialized with config first");return s.instance}static initialize(e){return s.instance=new s(e),s.instance}async uploadFile(e,t={}){try{let i=await this.requestSignedUrl({filename:e.name,description:t.description,loadDirection:"up",bucketType:t.bucketType||"conversations",path:t.path||".temp",mimeType:e.type});return await this.uploadToSignedUrl(i.data.signedUrlData.signedUrl,e),{success:!0,id:i.data.file.id,name:i.data.file.name,url:i.data.file.url,type:i.data.file.type}}catch(i){return console.error("Error uploading file:",i),{success:!1,error:i instanceof Error?i.message:"Unknown error"}}}async requestSignedUrl(e){let t=`${this.config.baseUrl}/files/upload-url`;return this.makeRequest(t,{method:"POST",body:JSON.stringify(e)})}async uploadToSignedUrl(e,t){let i=await fetch(e,{method:"PUT",body:t,headers:{"Content-Type":t.type}});if(!i.ok){let o=await i.text().catch(()=>"No response");throw new Error(`Upload failed with status: ${i.status}. Response: ${o}`)}}async uploadFileWithRetry(e,t={}){let i=t.maxRetries||3,o=null;for(let a=1;a<=i;a++)try{let n=await this.uploadFile(e,t);if(n.success)return n;throw new Error(n.error||"Upload failed")}catch(n){if(o=n instanceof Error?n:new Error("Unknown error"),a===i)break;let l=2**a*1e3;await new Promise(r=>setTimeout(r,l))}return{success:!1,error:o?.message||"Upload failed after retries"}}async getFileById(e){let t=`${this.config.baseUrl}/files/${e}`,i=await this.makeRequest(t);if(!i.success)throw new Error("Failed to get file");return i.data}async makeRequest(e,t){let i={"Content-Type":"application/json"};return this.config.organizationId&&(i["X-Onlive-Organization-Id"]=this.config.organizationId),t?.headers&&Object.assign(i,t.headers),h(e,{...t,headers:i})}updateConfig(e){this.config={...this.config,...e}}getConfig(){return{...this.config}}};var de=class s{constructor(e){this.config=e}static getInstance(e){if(!s.instance&&e&&(s.instance=new s(e)),!s.instance)throw new Error("MultimediaService must be initialized with config first");return s.instance}static initialize(e){return s.instance=new s(e),s.instance}async getImages(e={}){let t=new URLSearchParams({type:"image",page:(e.page||1).toString(),limit:(e.limit||12).toString(),...e.search&&{search:e.search},...e.labels&&{labels:e.labels.join(",")},...e.includeSecureToken&&{includeSecureToken:e.includeSecureToken.toString()}});this.appendExtraFilters(t,e.extraFilters);let i=`${this.config.baseUrl}/multimedia?${t}`;return this.makeRequest(i)}async getVideos(e={}){let t=new URLSearchParams({type:"video",page:(e.page||1).toString(),limit:(e.limit||12).toString(),...e.search&&{search:e.search},...e.labels&&{labels:e.labels.join(",")},...e.includeSecureToken&&{includeSecureToken:e.includeSecureToken.toString()}});this.appendExtraFilters(t,e.extraFilters);let i=`${this.config.baseUrl}/multimedia?${t}`;return this.makeRequest(i)}async getPresentations(e={}){let t=new URLSearchParams({type:"presentation",page:(e.page||1).toString(),limit:(e.limit||12).toString(),...e.search&&{search:e.search},...e.labels&&{labels:e.labels.join(",")},...e.includeSecureToken&&{includeSecureToken:e.includeSecureToken.toString()}});this.appendExtraFilters(t,e.extraFilters);let i=`${this.config.baseUrl}/multimedia?${t}`;return this.makeRequest(i)}async getAllMultimedia(e={}){let[t,i,o]=await Promise.all([this.getImages(e),this.getVideos(e),this.getPresentations(e)]);return{images:t,videos:i,presentations:o}}async getMultimediaByToken(e){let t=`${this.config.baseUrl}/multimedia/secure-token/${e}`;return this.makeRequest(t,!1)}async searchMultimedia(e,t){let i={search:e,page:1,limit:50,includeSecureToken:!0};if(t)return this.getMultimediaByType(t,i);let[o,a,n]=await Promise.all([this.getImages(i),this.getVideos(i),this.getPresentations(i)]),l=[...o.items,...a.items,...n.items];return{items:l,total:l.length,count:l.length,currentPage:1,totalPages:1}}async getMultimediaByType(e,t){switch(e){case"image":return this.getImages(t);case"video":return this.getVideos(t);case"presentation":return this.getPresentations(t);default:throw new Error(`Invalid multimedia type: ${e}`)}}appendExtraFilters(e,t){if(t){for(let[i,o]of Object.entries(t))if(o&&(Array.isArray(o)?o.length>0:o.toString().trim()!=="")){let a=Array.isArray(o)?o.join(","):o.toString();e.append(`extra_${i}`,a)}}}async makeRequest(e,t=!0){let i={"Content-Type":"application/json","X-Onlive-Organization-Id":this.config.organizationId};return h(e,{method:"GET",headers:i,credentials:t?"include":void 0})}updateConfig(e){this.config={...this.config,...e}}getConfig(){return{...this.config}}};var X=class s{constructor(e){this.config=e}static getInstance(e){if(!s.instance&&e&&(s.instance=new s(e)),!s.instance)throw new Error("ProductService must be initialized with config first");return s.instance}static initialize(e){return s.instance=new s(e),s.instance}async getProducts(e={}){let t=new URLSearchParams({...e.title&&{title:e.title},...e.search&&{search:e.search},...e.category&&{category:e.category},...e.tags&&{tags:e.tags.join(",")},...e.sortBy&&{sortBy:e.sortBy},...e.sortOrder&&{sortOrder:e.sortOrder},...e.minPrice&&{minPrice:e.minPrice.toString()},...e.maxPrice&&{maxPrice:e.maxPrice.toString()},...e.inStock!==void 0&&{inStock:e.inStock.toString()},...e.offset&&{offset:e.offset.toString()},...e.includeSecureToken&&{includeSecureToken:e.includeSecureToken.toString()}});e.extraFields&&Object.keys(e.extraFields).length>0&&t.append("extraFields",JSON.stringify(e.extraFields));let i=`${this.config.baseUrl}/products?${t}`;return this.makeRequest(i,!0)}async getProductByToken(e){let t=`${this.config.baseUrl}/products/secure-token/${e}`;return this.makeRequest(t)}async searchProducts(e,t={}){return this.getProducts({...t,search:e})}async makeRequest(e,t=!1){let i={"Content-Type":"application/json","X-Onlive-Organization-Id":this.config.organizationId};return h(e,{method:"GET",headers:i,credentials:t?"include":"same-origin"})}updateConfig(e){this.config={...this.config,...e}}getConfig(){return{...this.config}}};var qe=class{constructor(e){e?.multimediaService&&(this.multimediaService=de.initialize(e.multimediaService)),e?.faqsService&&(this.faqsService=le.initialize(e.faqsService)),e?.productService&&(this.productService=X.initialize(e.productService)),e?.fileService&&(this.fileService=ce.initialize(e.fileService))}async loadAsset(e,t){switch(e){case"multimedia":return this.loadMultimediaAsset(t);case"product":return this.loadProductAsset(t);case"faq":return this.loadFaqAsset(t);case"file":return this.loadFileAsset(t);default:throw new Error(`Unsupported asset type: ${e}`)}}async loadMultimediaAsset(e){if(!this.multimediaService)throw new Error("MultimediaService not configured");let t=await this.multimediaService.getMultimediaByToken(e);if(!t)throw new Error("Multimedia not found");return{id:t.id,name:t.name,description:t.description||"",url:t.url,thumbnail:t.animatedCoverUrl||t.url,type:"multimedia",externalId:t.id,format:t.format,size:t.size||void 0,duration:t.duration||void 0,vodUrl:t.vodUrl||void 0,slides:t.slides||[],labels:t.labels,animatedCoverUrl:t.animatedCoverUrl||void 0,metadata:{organizationId:t.organizationId,status:t.status,createdAt:t.createdAt,updatedAt:t.updatedAt}}}async loadProductAsset(e){if(!this.productService)throw new Error("MultimediaService not configured");let t=await this.productService.getProductByToken(e);if(!t)throw new Error("Product not found");return{id:t.id,name:t.name,description:t.description,url:t.url,thumbnail:t.images?.[0],type:"product",externalId:t.externalId,price:t.price,currency:t.currency,category:t.category,tags:t.tags,images:t.images,variants:t.variants?.map(i=>({id:i.id,externalId:i.externalId,price:i.price,currency:i.currency,images:i.images})),options:t.options,metadata:{providerType:t.providerType,providerId:t.providerId,discountType:t.discountType,discount:t.discount,stock:t.stock,broken:t.broken}}}async loadFaqAsset(e){if(!this.faqsService)throw new Error("FaqsService not configured");let t=await this.faqsService.getFaqById(e);return{id:t.id,name:t.question,description:t.answer,url:`#faq-${t.id}`,type:"faq",externalId:t.id,question:t.question,answer:t.answer,priority:t.priority,isActive:t.isActive,metadata:{organizationId:t.organizationId,createdAt:t.createdAt,updatedAt:t.updatedAt}}}async loadFileAsset(e){if(!this.fileService)throw new Error("FileService not configured");let t=await this.fileService.getFileById(e),i=t.type||"",o=i.startsWith("video/"),a=i.startsWith("image/");return{id:t.id,name:t.name,description:t.description||"",url:t.url,thumbnail:a?t.url:void 0,type:"file",externalId:t.id,format:i,size:t.metadata?.size,duration:void 0,vodUrl:o?t.url:void 0,labels:[],animatedCoverUrl:o?t.url:void 0,metadata:{path:t.metadata?.path,bucketType:t.metadata?.bucketType,loadDirection:t.metadata?.loadDirection,createdAt:t.createdAt,updatedAt:t.updatedAt}}}};var c=require("lit"),ei=require("lit/directives/class-map.js"),pe=require("lit/directives/if-defined.js"),U=require("lit/directives/when.js");var Gt=require("lit/directives/unsafe-html.js");var lt=A(require("dompurify"),1),Oi={ALLOWED_TAGS:["p","br","span","b","strong","i","em","u","s","del","ul","ol","li","code","pre","a","h1","h2","h3","h4","table","thead","tbody","tr","th","td"],ALLOWED_ATTR:["href","target","rel","title","aria-label","role","colspan","rowspan"],FORCE_HTTPS:!0,ALLOW_DATA_ATTR:!1};lt.default.addHook("afterSanitizeAttributes",s=>{"target"in s&&s.target==="_blank"&&s.setAttribute("rel","noopener noreferrer")});var Kt=(s,e=Oi)=>lt.default.sanitize(s,e);function Yt(s=""){return(0,Gt.unsafeHTML)(Li(s))}function Li(s=""){return Kt(s,{ADD_ATTR:["target","rel","content","variant","size"],ADD_TAGS:["ol-"],CUSTOM_ELEMENT_HANDLING:{tagNameCheck:/^ol-/,attributeNameCheck:null,allowCustomizedBuiltInElements:!0}})}var bo=require("@onlive.ai/ui/dist/components/button/button.js"),yo=require("@onlive.ai/ui/dist/components/icon/icon.js"),Re=require("lit"),He=require("lit/decorators.js"),Xt=require("lit/directives/repeat.js"),Zt=A(require("video.js"),1);var Ne=require("lit"),Wt=A(require("video.js/dist/video-js.min.css?inline"),1),Qt=Ne.css`
3
3
  ${(0,Ne.unsafeCSS)(Wt.default)}
4
4
  .och__player {
5
5
  width: 100%;
@@ -13,18 +13,18 @@
13
13
  background: transparent;
14
14
  transition: all 0.2s ease;
15
15
  }
16
- `;var Z=class extends Pe.LitElement{constructor(){super(...arguments);this.sources=[];this.player=null}connectedCallback(){super.connectedCallback();let t="videojs-font-face";if(!document.head.querySelector(`#${t}`)){let i=document.createElement("style");i.id=t,i.innerHTML=`
16
+ `;var Z=class extends Re.LitElement{constructor(){super(...arguments);this.sources=[];this.player=null}connectedCallback(){super.connectedCallback();let t="videojs-font-face";if(!document.head.querySelector(`#${t}`)){let i=document.createElement("style");i.id=t,i.innerHTML=`
17
17
  @font-face {
18
18
  font-family: VideoJS;
19
19
  src:
20
20
  url(https://cdn.onlive.site/fonts/video-js/font/VideoJS.woff) format("woff"),
21
21
  url(https://cdn.onlive.site/fonts/video-js/font/VideoJS.ttf) format("truetype");
22
- }`,document.head.appendChild(i)}}firstUpdated(){this.$player&&(this.player=(0,ei.default)(this.$player,{controls:!0,controlBar:{children:["playToggle","progressControl","volumePanel","fullscreenToggle"]}}))}play(){this.player?.play()}pause(){this.player?.pause()}render(){return Pe.html`
22
+ }`,document.head.appendChild(i)}}firstUpdated(){this.$player&&(this.player=(0,Zt.default)(this.$player,{controls:!0,controlBar:{children:["playToggle","progressControl","volumePanel","fullscreenToggle"]}}))}play(){this.player?.play()}pause(){this.player?.pause()}render(){return Re.html`
23
23
  <video
24
24
  id="player"
25
25
  class="och__player video-js video-js vjs-16-9 vjs-controls-enabled vjs-workinghover vjs-v8 vjs-theme-sea vjs_video_2321-dimensions vjs-has-started vjs-paused vjs-user-inactive"
26
26
  >
27
- ${(0,Zt.repeat)(this.sources,t=>t.src,t=>Pe.html`<source src=${t.src} type=${t.type}></source>`)}
27
+ ${(0,Xt.repeat)(this.sources,t=>t.src,t=>Re.html`<source src=${t.src} type=${t.type}></source>`)}
28
28
  <p class="vjs-no-js">
29
29
  To view this video please enable JavaScript, and consider upgrading to a web browser that
30
30
  <a href="https://videojs.com/html5-video-support/" target="_blank"> supports HTML5 video </a>
@@ -2041,12 +2041,12 @@ video::-webkit-media-text-track-display {
2041
2041
  transition: all 0.2s ease;
2042
2042
  }
2043
2043
  </style>
2044
- `}};Z.styles=[Xt],v([(0,He.property)({type:Array})],Z.prototype,"sources",2),v([(0,He.query)("#player")],Z.prototype,"$player",2),Z=v([K("och-player")],Z);var Ve=class{formatFileSize(e){let t=["B","KB","MB","GB"];if(e===0)return"0 B";let i=Math.floor(Math.log(e)/Math.log(1024));return Math.round(e/1024**i*100)/100+" "+t[i]}formatDuration(e){let t=Math.floor(e/60),i=Math.floor(e%60);return`${t}:${i.toString().padStart(2,"0")}`}getMultimediaSubtype(e){let t=e.format||"";return t.startsWith("video/")?"video":t.startsWith("image/")?"image":t.includes("presentation")||t.includes("pdf")||t.includes("powerpoint")||t.includes("slides")||t.includes("application/vnd.ms-powerpoint")||t.includes("application/vnd.openxmlformats-officedocument.presentationml")||e.slides&&e.slides.length>0?"presentation":e.duration||e.vodUrl?"video":"image"}renderThumbnail(e,t,i,o,a,r){return!t.showThumbnail||e.type==="faq"?c.html``:c.html`
2044
+ `}};Z.styles=[Qt],v([(0,He.property)({type:Array})],Z.prototype,"sources",2),v([(0,He.query)("#player")],Z.prototype,"$player",2),Z=v([K("och-player")],Z);var Ve=class{formatFileSize(e){let t=["B","KB","MB","GB"];if(e===0)return"0 B";let i=Math.floor(Math.log(e)/Math.log(1024));return Math.round(e/1024**i*100)/100+" "+t[i]}formatDuration(e){let t=Math.floor(e/60),i=Math.floor(e%60);return`${t}:${i.toString().padStart(2,"0")}`}getMultimediaSubtype(e){let t=e.format||"";return t.startsWith("video/")?"video":t.startsWith("image/")?"image":t.includes("presentation")||t.includes("pdf")||t.includes("powerpoint")||t.includes("slides")||t.includes("application/vnd.ms-powerpoint")||t.includes("application/vnd.openxmlformats-officedocument.presentationml")||e.slides&&e.slides.length>0?"presentation":e.duration||e.vodUrl?"video":"image"}renderThumbnail(e,t,i,o,a,n){return!t.showThumbnail||e.type==="faq"?c.html``:c.html`
2045
2045
  <div class="ol-asset__thumbnail">
2046
2046
  ${this.renderThumbnailContent(e)}
2047
2047
  ${this.renderMetadata(e,t)}
2048
2048
  ${this.renderThumbnailOverlay(e)}
2049
- ${this.renderHoverOverlay(e,i,a,o,r)}
2049
+ ${this.renderHoverOverlay(e,i,a,o,n)}
2050
2050
  </div>
2051
2051
  `}renderThumbnailContent(e){switch(e.type){case"multimedia":{let t=e;switch(this.getMultimediaSubtype(t)){case"video":return this.renderVideoThumbnail(t);case"presentation":return this.renderPresentationThumbnail(t);default:return c.html`
2052
2052
  <img
@@ -2097,7 +2097,7 @@ video::-webkit-media-text-track-display {
2097
2097
  `}renderThumbnailOverlay(e){let t=[];if(e.type==="multimedia"||e.type==="file"){let i=e;this.getMultimediaSubtype(i)==="video"&&i.duration&&t.push(c.html`
2098
2098
  <div class="ol-asset__duration">${this.formatDuration(i.duration)}</div>
2099
2099
  `)}return c.html`${t}`}renderContent(e,t){let i=!t.showName&&!t.showDescription&&!t.showTags&&(e.type!=="product"||!t.showPrice);return c.html`
2100
- <div class=${(0,ti.classMap)({"ol-asset__content":!0,"ol-asset__content--assets":!!i})}>
2100
+ <div class=${(0,ei.classMap)({"ol-asset__content":!0,"ol-asset__content--assets":!!i})}>
2101
2101
  ${this.renderName(e,t)}
2102
2102
  ${this.renderDescription(e,t)}
2103
2103
  ${this.renderPrice(e,t)}
@@ -2112,7 +2112,7 @@ video::-webkit-media-text-track-display {
2112
2112
  `:c.html``}renderDescription(e,t){if(e.type==="faq"){let o=e;return o.answer?c.html`
2113
2113
  <div class="ol-asset__description ol-asset__answer">${o.answer}</div>
2114
2114
  `:c.html``}return e.description?e.type==="product"?t.showDescription?c.html`
2115
- <div class="ol-asset__description">${Qt(e.description)}</div>
2115
+ <div class="ol-asset__description">${Yt(e.description)}</div>
2116
2116
  `:c.html``:t.showDescription?c.html`
2117
2117
  <div class="ol-asset__description">${e.description}</div>
2118
2118
  `:c.html``:c.html``}renderPrice(e,t){if(e.type!=="product"||!t.showPrice)return c.html``;let i=e;return i.price?c.html`
@@ -2203,12 +2203,12 @@ video::-webkit-media-text-track-display {
2203
2203
  <h3 class="ol-asset__modal-title">${e.name}</h3>
2204
2204
  ${e.description?c.html`<p class="ol-asset__modal-description">${e.description}</p>`:c.html``}
2205
2205
  </div>
2206
- `}}renderHoverOverlay(e,t,i,o,a){let r=e.type==="multimedia"&&this.getMultimediaSubtype(e)==="video",l=(e.type==="multimedia"||e.type==="file")&&this.getMultimediaSubtype(e)==="presentation"&&(!e.slides||e.slides.length===0);return r?c.html`
2206
+ `}}renderHoverOverlay(e,t,i,o,a){let n=e.type==="multimedia"&&this.getMultimediaSubtype(e)==="video",l=(e.type==="multimedia"||e.type==="file")&&this.getMultimediaSubtype(e)==="presentation"&&(!e.slides||e.slides.length===0);return n?c.html`
2207
2207
  <div class="ol-asset__video-controls">
2208
2208
  ${(0,U.when)(i,()=>c.html`
2209
2209
  <ol-button
2210
2210
  class="ol-asset__video-btn ol-asset__video-btn--maximize"
2211
- @click=${n=>{n.stopPropagation(),i(e)}}
2211
+ @click=${r=>{r.stopPropagation(),i(e)}}
2212
2212
  title="Maximize ${e.name}"
2213
2213
  >
2214
2214
  <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
@@ -2219,7 +2219,7 @@ video::-webkit-media-text-track-display {
2219
2219
  ${(0,U.when)(t,()=>c.html`
2220
2220
  <ol-button
2221
2221
  class="ol-asset__video-btn ol-asset__video-btn--download ${o?"ol-asset__video-btn--downloading":""}"
2222
- @click=${n=>{n.stopPropagation(),t(e)}}
2222
+ @click=${r=>{r.stopPropagation(),t(e)}}
2223
2223
  title="Download ${e.name}"
2224
2224
  ?disabled=${o}
2225
2225
  >
@@ -2244,7 +2244,7 @@ video::-webkit-media-text-track-display {
2244
2244
  ${(0,U.when)(e.type==="product",()=>c.html`
2245
2245
  <ol-button
2246
2246
  class="ol-asset__hover-btn ol-asset__hover-btn--external"
2247
- @click=${n=>{n.stopPropagation(),e.url&&(a?a(e.url):window.open(e.url,"_blank","noopener,noreferrer"))}}
2247
+ @click=${r=>{r.stopPropagation(),e.url&&(a?a(e.url):window.open(e.url,"_blank","noopener,noreferrer"))}}
2248
2248
  title="Open ${e.name} in new window"
2249
2249
  >
2250
2250
  <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
@@ -2257,7 +2257,7 @@ video::-webkit-media-text-track-display {
2257
2257
  ${(0,U.when)(i&&!l,()=>c.html`
2258
2258
  <ol-button
2259
2259
  class="ol-asset__hover-btn ol-asset__hover-btn--maximize"
2260
- @click=${n=>{n.stopPropagation(),i(e)}}
2260
+ @click=${r=>{r.stopPropagation(),i(e)}}
2261
2261
  title="Maximize ${e.name}"
2262
2262
  >
2263
2263
  <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
@@ -2268,7 +2268,7 @@ video::-webkit-media-text-track-display {
2268
2268
  ${(0,U.when)(t&&["multimedia","file"].includes(e.type),()=>c.html`
2269
2269
  <ol-button
2270
2270
  class="ol-asset__hover-btn ol-asset__hover-btn--download ${o?"ol-asset__hover-btn--downloading":""}"
2271
- @click=${n=>{n.stopPropagation(),t(e)}}
2271
+ @click=${r=>{r.stopPropagation(),t(e)}}
2272
2272
  title="Download ${e.name}"
2273
2273
  ?disabled=${o}
2274
2274
  >
@@ -2289,7 +2289,7 @@ video::-webkit-media-text-track-display {
2289
2289
  `)}
2290
2290
  </div>
2291
2291
  </div>
2292
- `}};var ii=require("lit"),oi=ii.css`
2292
+ `}};var ti=require("lit"),ii=ti.css`
2293
2293
  :host {
2294
2294
  display: block;
2295
2295
  --asset-border-radius: 8px;
@@ -3403,7 +3403,7 @@ video::-webkit-media-text-track-display {
3403
3403
  ol-dialog.ol-asset__dialog[data-display-state="maximized"] .ol-asset__modal-question {
3404
3404
  color: rgba(130, 170, 255, 1);
3405
3405
  }
3406
- `}createDialogHTML(){if(!this.asset)return"";let{name:e,description:t,url:i,type:o}=this.asset,a="";if(o==="multimedia"){let n=this.asset,d=this.getMultimediaSubtype(n);if(d==="image")a=`
3406
+ `}createDialogHTML(){if(!this.asset)return"";let{name:e,description:t,url:i,type:o}=this.asset,a="";if(o==="multimedia"){let r=this.asset,d=this.getMultimediaSubtype(r);if(d==="image")a=`
3407
3407
  <div class="ol-asset__modal-media-container">
3408
3408
  <div class="ol-asset__modal-image-container">
3409
3409
  <img
@@ -3428,7 +3428,7 @@ video::-webkit-media-text-track-display {
3428
3428
  <div class="ol-asset__modal-media-container">
3429
3429
  <div class="ol-asset__modal-video-container">
3430
3430
  <video
3431
- src="${i||n.vodUrl||""}"
3431
+ src="${i||r.vodUrl||""}"
3432
3432
  controls
3433
3433
  class="ol-asset__modal-video-player"
3434
3434
  preload="metadata"
@@ -3445,23 +3445,23 @@ video::-webkit-media-text-track-display {
3445
3445
  <ol-icon name="video"></ol-icon>
3446
3446
  <span class="ol-asset__modal-type">Video</span>
3447
3447
  </div>
3448
- ${n.duration?`
3448
+ ${r.duration?`
3449
3449
  <div class="ol-asset__modal-metadata-item">
3450
3450
  <ol-icon name="clock"></ol-icon>
3451
- <span class="ol-asset__modal-duration">${this.formatDuration(n.duration)}</span>
3451
+ <span class="ol-asset__modal-duration">${this.formatDuration(r.duration)}</span>
3452
3452
  </div>
3453
3453
  `:""}
3454
3454
  </div>
3455
3455
  </div>
3456
- `;else if(d==="presentation")if(n.slides&&n.slides.length>0){let m=n.slides;a=`
3456
+ `;else if(d==="presentation")if(r.slides&&r.slides.length>0){let u=r.slides;a=`
3457
3457
  <div class="ol-asset__modal-media-container" data-type="presentation">
3458
3458
  <div class="ol-asset__modal-presentation">
3459
3459
  <ol-carousel pagination navigation loop class="ol-asset__modal-carousel">
3460
- ${m.map((J,B)=>`
3460
+ ${u.map((J,B)=>`
3461
3461
  <ol-carousel-item>
3462
3462
  <img
3463
3463
  src="${J}"
3464
- alt="Slide ${B+1} of ${m.length}"
3464
+ alt="Slide ${B+1} of ${u.length}"
3465
3465
  class="ol-asset__modal-slide-image"
3466
3466
  />
3467
3467
  </ol-carousel-item>
@@ -3479,7 +3479,7 @@ video::-webkit-media-text-track-display {
3479
3479
  </div>
3480
3480
  <div class="ol-asset__modal-metadata-item">
3481
3481
  <ol-icon name="layers"></ol-icon>
3482
- <span class="ol-asset__modal-slides">${m.length} ${m.length===1?"slide":"slides"}</span>
3482
+ <span class="ol-asset__modal-slides">${u.length} ${u.length===1?"slide":"slides"}</span>
3483
3483
  </div>
3484
3484
  </div>
3485
3485
  </div>
@@ -3495,7 +3495,7 @@ video::-webkit-media-text-track-display {
3495
3495
  ${t?`<p class="ol-asset__modal-description">${t}</p>`:""}
3496
3496
  <p class="ol-asset__modal-type">Type: Presentation</p>
3497
3497
  </div>
3498
- `}else if(o==="file"){let n=this.asset,d=this.getMultimediaSubtype(n);if(d==="image")a=`
3498
+ `}else if(o==="file"){let r=this.asset,d=this.getMultimediaSubtype(r);if(d==="image")a=`
3499
3499
  <div class="ol-asset__modal-media-container">
3500
3500
  <div class="ol-asset__modal-image-container">
3501
3501
  <img
@@ -3520,7 +3520,7 @@ video::-webkit-media-text-track-display {
3520
3520
  <div class="ol-asset__modal-media-container">
3521
3521
  <div class="ol-asset__modal-video-container">
3522
3522
  <video
3523
- src="${i||n.vodUrl||""}"
3523
+ src="${i||r.vodUrl||""}"
3524
3524
  controls
3525
3525
  class="ol-asset__modal-video-player"
3526
3526
  preload="metadata"
@@ -3537,23 +3537,23 @@ video::-webkit-media-text-track-display {
3537
3537
  <ol-icon name="video"></ol-icon>
3538
3538
  <span class="ol-asset__modal-type">Video File</span>
3539
3539
  </div>
3540
- ${n.duration?`
3540
+ ${r.duration?`
3541
3541
  <div class="ol-asset__modal-metadata-item">
3542
3542
  <ol-icon name="clock"></ol-icon>
3543
- <span class="ol-asset__modal-duration">${this.formatDuration(n.duration)}</span>
3543
+ <span class="ol-asset__modal-duration">${this.formatDuration(r.duration)}</span>
3544
3544
  </div>
3545
3545
  `:""}
3546
3546
  </div>
3547
3547
  </div>
3548
- `;else if(d==="presentation")if(n.slides&&n.slides.length>0){let m=n.slides;a=`
3548
+ `;else if(d==="presentation")if(r.slides&&r.slides.length>0){let u=r.slides;a=`
3549
3549
  <div class="ol-asset__modal-media-container" data-type="presentation">
3550
3550
  <div class="ol-asset__modal-presentation">
3551
3551
  <ol-carousel pagination navigation loop class="ol-asset__modal-carousel">
3552
- ${m.map((J,B)=>`
3552
+ ${u.map((J,B)=>`
3553
3553
  <ol-carousel-item>
3554
3554
  <img
3555
3555
  src="${J}"
3556
- alt="Slide ${B+1} of ${m.length}"
3556
+ alt="Slide ${B+1} of ${u.length}"
3557
3557
  class="ol-asset__modal-slide-image"
3558
3558
  />
3559
3559
  </ol-carousel-item>
@@ -3571,7 +3571,7 @@ video::-webkit-media-text-track-display {
3571
3571
  </div>
3572
3572
  <div class="ol-asset__modal-metadata-item">
3573
3573
  <ol-icon name="layers"></ol-icon>
3574
- <span class="ol-asset__modal-slides">${m.length} ${m.length===1?"slide":"slides"}</span>
3574
+ <span class="ol-asset__modal-slides">${u.length} ${u.length===1?"slide":"slides"}</span>
3575
3575
  </div>
3576
3576
  </div>
3577
3577
  </div>
@@ -3587,23 +3587,23 @@ video::-webkit-media-text-track-display {
3587
3587
  ${t?`<p class="ol-asset__modal-description">${t}</p>`:""}
3588
3588
  <p class="ol-asset__modal-type">Type: Presentation File</p>
3589
3589
  </div>
3590
- `}else if(o==="faq"){let n=this.asset;a=`
3590
+ `}else if(o==="faq"){let r=this.asset;a=`
3591
3591
  <div class="ol-asset__modal-faq">
3592
- <h3 class="ol-asset__modal-question">${n.question||e}</h3>
3593
- <div class="ol-asset__modal-answer">${n.answer||t}</div>
3592
+ <h3 class="ol-asset__modal-question">${r.question||e}</h3>
3593
+ <div class="ol-asset__modal-answer">${r.answer||t}</div>
3594
3594
  </div>
3595
3595
  `}else a=`
3596
3596
  <div class="ol-asset__modal-info">
3597
3597
  <h3 class="ol-asset__modal-title">${e}</h3>
3598
3598
  ${t?`<p class="ol-asset__modal-description">${t}</p>`:""}
3599
3599
  </div>
3600
- `;let r=o==="multimedia"||o==="file",l=o==="faq"&&this.asset.question||e;return`
3600
+ `;let n=o==="multimedia"||o==="file",l=o==="faq"&&this.asset.question||e;return`
3601
3601
  <ol-dialog
3602
3602
  label="${this.escapeHtml(l)}"
3603
3603
  class="ol-asset__dialog"
3604
- data-fullscreen="${r}"
3604
+ data-fullscreen="${n}"
3605
3605
  data-display-state="${this.displayState}"
3606
- ${r?'style="--width: 95vw; --max-width: 1600px;"':""}
3606
+ ${n?'style="--width: 95vw; --max-width: 1600px;"':""}
3607
3607
  >
3608
3608
  <div class="ol-asset__dialog-content">
3609
3609
  <div class="ol-asset__dialog-body">
@@ -3611,7 +3611,7 @@ video::-webkit-media-text-track-display {
3611
3611
  </div>
3612
3612
  </div>
3613
3613
  </ol-dialog>
3614
- `}attachEventListeners(){this.dialog&&(this.dialog.addEventListener("ol-after-hide",()=>{this.onClose?.()}),this.dialog.addEventListener("ol-request-close",e=>{e.detail?.source==="overlay"&&e.preventDefault()}))}escapeHtml(e){let t=document.createElement("div");return t.textContent=e,t.innerHTML}};var k=class extends ee.LitElement{constructor(){super(...arguments);this.displayState="normal";this.loadingState="idle";this.assetRenderer=new Ve;this.isDownloading=!1;this.defaultDisplayOptions={showThumbnail:!0,showName:!1,showDescription:!1,showMetadata:!0,showPrice:!0,showDuration:!1,showSize:!1,showTags:!1,layout:"card",size:"medium"}}connectedCallback(){super.connectedCallback(),this.initializeServices(),this.loadAsset()}disconnectedCallback(){super.disconnectedCallback(),this.closeModal()}initializeServices(){this.assetLoader=new qe(this.config)}async loadAsset(){if(!this.type||!this.externalId){this.error="Type and externalId are required",this.loadingState="error";return}this.loadingState="loading",this.error=void 0;try{let t=await this.assetLoader.loadAsset(this.type,this.externalId);this.asset=t,this.loadingState="loaded",this.dispatchEvent(new CustomEvent("asset-load",{detail:t})),console.debug("Asset loaded:",t)}catch(t){console.error(`Error loading ${this.type} asset:`,t),this.error=t instanceof Error?t.message:"Failed to load asset",this.loadingState="error",this.dispatchEvent(new CustomEvent("asset-error",{detail:{error:this.error,asset:this.asset}}))}}async onDownload(t){if(!(!t.url||this.isDownloading)){this.isDownloading=!0;try{let i=await fetch(t.url,{method:"GET",mode:"cors",cache:"no-cache"});if(i.ok){let o=await i.blob(),a=window.URL.createObjectURL(o),r=document.createElement("a");r.href=a,r.download=this.getDownloadFilename(t),r.style.display="none",document.body.appendChild(r),r.click(),document.body.removeChild(r),setTimeout(()=>window.URL.revokeObjectURL(a),100),this.dispatchEvent(new CustomEvent("asset-download",{detail:t})),this.isDownloading=!1;return}}catch(i){console.warn("Fetch strategy failed:",i)}try{let i=await fetch(t.url,{headers:{Accept:"*/*"},mode:"no-cors"});if(i.type==="opaque")throw new Error("No-cors response, cannot access blob");let o=await i.blob(),a=window.URL.createObjectURL(o),r=document.createElement("a");r.href=a,r.download=this.getDownloadFilename(t),r.style.display="none",document.body.appendChild(r),r.click(),document.body.removeChild(r),setTimeout(()=>window.URL.revokeObjectURL(a),100),this.dispatchEvent(new CustomEvent("asset-download",{detail:t})),this.isDownloading=!1;return}catch(i){console.warn("No-cors strategy failed:",i)}try{let i=document.createElement("a");i.href=t.url,i.download=this.getDownloadFilename(t),i.target="_blank",i.rel="noopener noreferrer",i.style.position="absolute",i.style.left="-9999px",document.body.appendChild(i),i.click(),setTimeout(()=>{document.body.removeChild(i)},100),this.dispatchEvent(new CustomEvent("asset-download",{detail:t}))}catch(i){console.error("All download strategies failed:",i),window.open(t.url,"_blank")}this.isDownloading=!1}}getDownloadFilename(t){let i=Date.now(),o=this.getFileExtension(t);return`${t.name||`asset-${t.type}-${i}`}${o}`}getFileExtension(t){if(t.url){let a=new URL(t.url).pathname,r=a.lastIndexOf(".");if(r>0)return a.substring(r)}return{multimedia:".jpg",file:".bin",product:".jpg",faq:".txt"}[t.type]||""}async openModal(){this.asset&&(this.modalPortal=new Je(this.asset,this.closeModal.bind(this),this.displayState),await this.modalPortal.open())}onOpenLink(t){this.dispatchEvent(new CustomEvent("open-link",{detail:{url:t},bubbles:!0,composed:!0}))}onMaximize(){if(console.debug("Maximize clicked for asset:",this.asset),!!this.asset){if(this.asset.type==="multimedia"||this.asset.type==="file"){let t=this.asset,i=t.slides&&t.slides.length>0,o=t.format||"";if((o.includes("presentation")||o.includes("pdf")||o.includes("powerpoint")||o.includes("slides")||o.includes("application/vnd.ms-powerpoint")||o.includes("application/vnd.openxmlformats-officedocument.presentationml")||i&&t.slides.length>0)&&!i)return}this.asset.type==="multimedia"||this.asset.type==="file"||this.asset.type==="faq"?this.openModal():this.dispatchEvent(new CustomEvent("asset-click",{detail:this.asset}))}}closeModal(){this.modalPortal&&(this.modalPortal.close(),this.modalPortal=void 0)}render(){let t={...this.defaultDisplayOptions,...this.config?.assetDisplayOptions||{}};return this.loadingState==="loading"?ee.html`
3614
+ `}attachEventListeners(){this.dialog&&(this.dialog.addEventListener("ol-after-hide",()=>{this.onClose?.()}),this.dialog.addEventListener("ol-request-close",e=>{e.detail?.source==="overlay"&&e.preventDefault()}))}escapeHtml(e){let t=document.createElement("div");return t.textContent=e,t.innerHTML}};var k=class extends ee.LitElement{constructor(){super(...arguments);this.displayState="normal";this.loadingState="idle";this.assetRenderer=new Ve;this.isDownloading=!1;this.defaultDisplayOptions={showThumbnail:!0,showName:!1,showDescription:!1,showMetadata:!0,showPrice:!0,showDuration:!1,showSize:!1,showTags:!1,layout:"card",size:"medium"}}connectedCallback(){super.connectedCallback(),this.initializeServices(),this.loadAsset()}disconnectedCallback(){super.disconnectedCallback(),this.closeModal()}initializeServices(){this.assetLoader=new qe(this.config)}async loadAsset(){if(!this.type||!this.externalId){this.error="Type and externalId are required",this.loadingState="error";return}this.loadingState="loading",this.error=void 0;try{let t=await this.assetLoader.loadAsset(this.type,this.externalId);this.asset=t,this.loadingState="loaded",this.dispatchEvent(new CustomEvent("asset-load",{detail:t})),console.debug("Asset loaded:",t)}catch(t){console.error(`Error loading ${this.type} asset:`,t),this.error=t instanceof Error?t.message:"Failed to load asset",this.loadingState="error",this.dispatchEvent(new CustomEvent("asset-error",{detail:{error:this.error,asset:this.asset}}))}}async onDownload(t){if(!(!t.url||this.isDownloading)){this.isDownloading=!0;try{let i=await fetch(t.url,{method:"GET",mode:"cors",cache:"no-cache"});if(i.ok){let o=await i.blob(),a=window.URL.createObjectURL(o),n=document.createElement("a");n.href=a,n.download=this.getDownloadFilename(t),n.style.display="none",document.body.appendChild(n),n.click(),document.body.removeChild(n),setTimeout(()=>window.URL.revokeObjectURL(a),100),this.dispatchEvent(new CustomEvent("asset-download",{detail:t})),this.isDownloading=!1;return}}catch(i){console.warn("Fetch strategy failed:",i)}try{let i=await fetch(t.url,{headers:{Accept:"*/*"},mode:"no-cors"});if(i.type==="opaque")throw new Error("No-cors response, cannot access blob");let o=await i.blob(),a=window.URL.createObjectURL(o),n=document.createElement("a");n.href=a,n.download=this.getDownloadFilename(t),n.style.display="none",document.body.appendChild(n),n.click(),document.body.removeChild(n),setTimeout(()=>window.URL.revokeObjectURL(a),100),this.dispatchEvent(new CustomEvent("asset-download",{detail:t})),this.isDownloading=!1;return}catch(i){console.warn("No-cors strategy failed:",i)}try{let i=document.createElement("a");i.href=t.url,i.download=this.getDownloadFilename(t),i.target="_blank",i.rel="noopener noreferrer",i.style.position="absolute",i.style.left="-9999px",document.body.appendChild(i),i.click(),setTimeout(()=>{document.body.removeChild(i)},100),this.dispatchEvent(new CustomEvent("asset-download",{detail:t}))}catch(i){console.error("All download strategies failed:",i),window.open(t.url,"_blank")}this.isDownloading=!1}}getDownloadFilename(t){let i=Date.now(),o=this.getFileExtension(t);return`${t.name||`asset-${t.type}-${i}`}${o}`}getFileExtension(t){if(t.url){let a=new URL(t.url).pathname,n=a.lastIndexOf(".");if(n>0)return a.substring(n)}return{multimedia:".jpg",file:".bin",product:".jpg",faq:".txt"}[t.type]||""}async openModal(){this.asset&&(this.modalPortal=new Je(this.asset,this.closeModal.bind(this),this.displayState),await this.modalPortal.open())}onOpenLink(t){this.dispatchEvent(new CustomEvent("open-link",{detail:{url:t},bubbles:!0,composed:!0}))}onMaximize(){if(console.debug("Maximize clicked for asset:",this.asset),!!this.asset){if(this.asset.type==="multimedia"||this.asset.type==="file"){let t=this.asset,i=t.slides&&t.slides.length>0,o=t.format||"";if((o.includes("presentation")||o.includes("pdf")||o.includes("powerpoint")||o.includes("slides")||o.includes("application/vnd.ms-powerpoint")||o.includes("application/vnd.openxmlformats-officedocument.presentationml")||i&&t.slides.length>0)&&!i)return}this.asset.type==="multimedia"||this.asset.type==="file"||this.asset.type==="faq"?this.openModal():this.dispatchEvent(new CustomEvent("asset-click",{detail:this.asset}))}}closeModal(){this.modalPortal&&(this.modalPortal.close(),this.modalPortal=void 0)}render(){let t={...this.defaultDisplayOptions,...this.config?.assetDisplayOptions||{}};return this.loadingState==="loading"?ee.html`
3615
3615
  <div class="ol-asset ol-asset--loading">
3616
3616
  ${this.assetRenderer.renderLoading()}
3617
3617
  </div>
@@ -3621,12 +3621,12 @@ video::-webkit-media-text-track-display {
3621
3621
  </div>
3622
3622
  `:this.asset?ee.html`
3623
3623
  <div
3624
- class="ol-asset ${(0,si.classMap)({"ol-asset--compact":t.layout==="compact","ol-asset--minimal":t.layout==="minimal","ol-asset--small":t.size==="small","ol-asset--medium":t.size==="medium","ol-asset--large":t.size==="large","ol-asset--faq":this.asset.type==="faq"})}"
3624
+ class="ol-asset ${(0,oi.classMap)({"ol-asset--compact":t.layout==="compact","ol-asset--minimal":t.layout==="minimal","ol-asset--small":t.size==="small","ol-asset--medium":t.size==="medium","ol-asset--large":t.size==="large","ol-asset--faq":this.asset.type==="faq"})}"
3625
3625
  >
3626
3626
  ${this.assetRenderer.renderThumbnail(this.asset,t,this.onDownload.bind(this),this.isDownloading,this.onMaximize.bind(this),this.onOpenLink.bind(this))}
3627
3627
  ${this.assetRenderer.renderContent(this.asset,t)}
3628
3628
  </div>
3629
- `:ee.html``}};k.styles=[oi],v([(0,C.property)({type:String})],k.prototype,"type",2),v([(0,C.property)({type:String})],k.prototype,"externalId",2),v([(0,C.property)({type:Object})],k.prototype,"config",2),v([(0,C.property)({type:String,attribute:"display-state"})],k.prototype,"displayState",2),v([(0,C.state)()],k.prototype,"asset",2),v([(0,C.state)()],k.prototype,"loadingState",2),v([(0,C.state)()],k.prototype,"error",2),v([(0,C.state)()],k.prototype,"assetLoader",2),v([(0,C.state)()],k.prototype,"assetRenderer",2),v([(0,C.state)()],k.prototype,"isDownloading",2),k=v([K("osb-asset")],k);var Ko=require("@onlive.ai/ui/dist/components/button/button.js"),Go=require("@onlive.ai/ui/dist/components/details/details.js"),Yo=require("@onlive.ai/ui/dist/components/icon/icon.js"),Qo=require("@onlive.ai/ui/dist/components/input/input.js"),Wo=require("@onlive.ai/ui/dist/components/option/option.js"),Xo=require("@onlive.ai/ui/dist/components/select/select.js"),u=require("lit"),w=require("lit/decorators.js"),te=require("lit/directives/class-map.js"),me=require("lit/directives/if-defined.js"),Be=require("lit/directives/repeat.js"),j=require("lit/directives/when.js");var Lo=require("@onlive.ai/ui/dist/components/button/button.js"),Do=require("@onlive.ai/ui/dist/components/dropdown/dropdown.js"),Fo=require("@onlive.ai/ui/dist/components/icon/icon.js"),Uo=require("@onlive.ai/ui/dist/components/menu-item/menu-item.js"),$o=require("@onlive.ai/ui/dist/components/menu/menu.js"),ue=require("lit"),dt=require("lit/decorators.js");var ai=require("lit"),ri=ai.css`
3629
+ `:ee.html``}};k.styles=[ii],v([(0,C.property)({type:String})],k.prototype,"type",2),v([(0,C.property)({type:String})],k.prototype,"externalId",2),v([(0,C.property)({type:Object})],k.prototype,"config",2),v([(0,C.property)({type:String,attribute:"display-state"})],k.prototype,"displayState",2),v([(0,C.state)()],k.prototype,"asset",2),v([(0,C.state)()],k.prototype,"loadingState",2),v([(0,C.state)()],k.prototype,"error",2),v([(0,C.state)()],k.prototype,"assetLoader",2),v([(0,C.state)()],k.prototype,"assetRenderer",2),v([(0,C.state)()],k.prototype,"isDownloading",2),k=v([K("osb-asset")],k);var Ko=require("@onlive.ai/ui/dist/components/button/button.js"),Go=require("@onlive.ai/ui/dist/components/details/details.js"),Yo=require("@onlive.ai/ui/dist/components/icon/icon.js"),Wo=require("@onlive.ai/ui/dist/components/input/input.js"),Qo=require("@onlive.ai/ui/dist/components/option/option.js"),Xo=require("@onlive.ai/ui/dist/components/select/select.js"),m=require("lit"),w=require("lit/decorators.js"),te=require("lit/directives/class-map.js"),ue=require("lit/directives/if-defined.js"),Be=require("lit/directives/repeat.js"),j=require("lit/directives/when.js");var Lo=require("@onlive.ai/ui/dist/components/button/button.js"),Do=require("@onlive.ai/ui/dist/components/dropdown/dropdown.js"),Fo=require("@onlive.ai/ui/dist/components/icon/icon.js"),Uo=require("@onlive.ai/ui/dist/components/menu-item/menu-item.js"),$o=require("@onlive.ai/ui/dist/components/menu/menu.js"),me=require("lit"),ct=require("lit/decorators.js");var si=require("lit"),ai=si.css`
3630
3630
  :host {
3631
3631
  display: inline-block;
3632
3632
  }
@@ -3689,7 +3689,7 @@ video::-webkit-media-text-track-display {
3689
3689
  background: var(--ol-color-success-300, #86efac);
3690
3690
  transform: scale(1.1);
3691
3691
  }
3692
- `;var R=class extends ue.LitElement{constructor(){super(...arguments);this.defaultConfig={maxFileSize:10*1024*1024,multiple:!1,showImage:!0,showVideo:!0,showDocument:!0}}getAllowedExtensions(t){switch(t){case"image":return[".jpg",".jpeg",".png",".gif",".webp",".svg"];case"video":return[".mp4",".avi",".mov",".wmv",".flv",".webm"];case"document":return[".pdf",".doc",".docx",".txt",".rtf",".odt"];default:return[]}}getAcceptAttribute(t){return this.getAllowedExtensions(t).join(",")}getFileTypeLabel(t){switch(t){case"image":return"Imagen";case"video":return"Video";case"document":return"Documento";default:return"Archivo"}}getAvailableTypes(){let t={...this.defaultConfig,...this.config},i=[];return t.showImage&&i.push("image"),t.showVideo&&i.push("video"),t.showDocument&&i.push("document"),i}onTypeSelect(t){this.openFileDialog(t)}openFileDialog(t){let i=document.createElement("input");i.type="file",i.accept=this.getAcceptAttribute(t),i.multiple=this.config?.multiple||!1,i.onchange=o=>{let a=o.target.files?.[0];a&&this.handleFileSelection(a,t)},i.click()}handleFileSelection(t,i){let o=this.validateFile(t,i);if(!o.valid){this.dispatchEvent(new CustomEvent("osb-upload-error",{detail:{error:o.error},bubbles:!0}));return}this.dispatchEvent(new CustomEvent("osb-file-selected",{detail:{file:t,type:i},bubbles:!0})),this.events?.onFileSelected?.(t,i)}validateFile(t,i){let o={...this.defaultConfig,...this.config};if(o.maxFileSize&&t.size>o.maxFileSize)return{valid:!1,error:`El archivo es demasiado grande. Tama\xF1o m\xE1ximo: ${Math.round(o.maxFileSize/1048576)}MB`};let a=t.name.toLowerCase(),r=this.getAllowedExtensions(i);return r.some(n=>a.endsWith(n.toLowerCase()))?{valid:!0}:{valid:!1,error:`Tipo de archivo no v\xE1lido. Extensiones permitidas: ${r.join(", ")}`}}render(){let t=this.getAvailableTypes();return t.length===0?ue.html`<div class="ol-upload ol-upload--empty">No hay tipos de archivo disponibles</div>`:ue.html`
3692
+ `;var T=class extends me.LitElement{constructor(){super(...arguments);this.defaultConfig={maxFileSize:10*1024*1024,multiple:!1,showImage:!0,showVideo:!0,showDocument:!0}}getAllowedExtensions(t){switch(t){case"image":return[".jpg",".jpeg",".png",".gif",".webp",".svg"];case"video":return[".mp4",".avi",".mov",".wmv",".flv",".webm"];case"document":return[".pdf",".doc",".docx",".txt",".rtf",".odt"];default:return[]}}getAcceptAttribute(t){return this.getAllowedExtensions(t).join(",")}getFileTypeLabel(t){switch(t){case"image":return"Imagen";case"video":return"Video";case"document":return"Documento";default:return"Archivo"}}getAvailableTypes(){let t={...this.defaultConfig,...this.config},i=[];return t.showImage&&i.push("image"),t.showVideo&&i.push("video"),t.showDocument&&i.push("document"),i}onTypeSelect(t){this.openFileDialog(t)}openFileDialog(t){let i=document.createElement("input");i.type="file",i.accept=this.getAcceptAttribute(t),i.multiple=this.config?.multiple||!1,i.onchange=o=>{let a=o.target.files?.[0];a&&this.handleFileSelection(a,t)},i.click()}handleFileSelection(t,i){let o=this.validateFile(t,i);if(!o.valid){this.dispatchEvent(new CustomEvent("osb-upload-error",{detail:{error:o.error},bubbles:!0}));return}this.dispatchEvent(new CustomEvent("osb-file-selected",{detail:{file:t,type:i},bubbles:!0})),this.events?.onFileSelected?.(t,i)}validateFile(t,i){let o={...this.defaultConfig,...this.config};if(o.maxFileSize&&t.size>o.maxFileSize)return{valid:!1,error:`El archivo es demasiado grande. Tama\xF1o m\xE1ximo: ${Math.round(o.maxFileSize/1048576)}MB`};let a=t.name.toLowerCase(),n=this.getAllowedExtensions(i);return n.some(r=>a.endsWith(r.toLowerCase()))?{valid:!0}:{valid:!1,error:`Tipo de archivo no v\xE1lido. Extensiones permitidas: ${n.join(", ")}`}}render(){let t=this.getAvailableTypes();return t.length===0?me.html`<div class="ol-upload ol-upload--empty">No hay tipos de archivo disponibles</div>`:me.html`
3693
3693
  <div class="ol-upload">
3694
3694
  <ol-dropdown placement="bottom-start" distance="8">
3695
3695
  <div slot="trigger">
@@ -3698,7 +3698,7 @@ video::-webkit-media-text-track-display {
3698
3698
  </div>
3699
3699
 
3700
3700
  <ol-menu>
3701
- ${t.map(i=>ue.html`
3701
+ ${t.map(i=>me.html`
3702
3702
  <ol-menu-item @click="${()=>this.onTypeSelect(i)}">
3703
3703
  <ol-icon slot="prefix" name="${this.getIconName(i)}"></ol-icon>
3704
3704
  ${this.getFileTypeLabel(i)}
@@ -3707,7 +3707,7 @@ video::-webkit-media-text-track-display {
3707
3707
  </ol-menu>
3708
3708
  </ol-dropdown>
3709
3709
  </div>
3710
- `}getIconName(t){switch(t){case"image":return"image";case"video":return"file-play";case"document":return"file-text";default:return"file"}}};R.styles=[ri],v([(0,dt.property)({type:Object})],R.prototype,"config",2),v([(0,dt.property)({type:Object})],R.prototype,"events",2),R=v([K("osb-upload")],R);var ni=require("lit"),li=ni.css`
3710
+ `}getIconName(t){switch(t){case"image":return"image";case"video":return"file-play";case"document":return"file-text";default:return"file"}}};T.styles=[ai],v([(0,ct.property)({type:Object})],T.prototype,"config",2),v([(0,ct.property)({type:Object})],T.prototype,"events",2),T=v([K("osb-upload")],T);var ni=require("lit"),ri=ni.css`
3711
3711
  :host {
3712
3712
  display: block;
3713
3713
  position: fixed;
@@ -4506,68 +4506,68 @@ video::-webkit-media-text-track-display {
4506
4506
  height: 120px;
4507
4507
  }
4508
4508
  }
4509
- `;var $={products:{label:"PRODUCTS",icon:"shopping-bag",enabled:!0,displayOptions:{showThumbnail:!0,showDescription:!1,showPrice:!0,showTags:!1,thumbnailSize:"small",layout:"grid"}},videos:{label:"VIDEOS",icon:"video",enabled:!0,displayOptions:{showThumbnail:!0,showDescription:!1,showDuration:!0,showSize:!1,thumbnailSize:"small",layout:"grid"}},images:{label:"IMAGES",icon:"image",enabled:!0,displayOptions:{showThumbnail:!0,showDescription:!1,showSize:!1,thumbnailSize:"small",layout:"grid"}},presentations:{label:"PRESENTATIONS",icon:"file-text",enabled:!0,displayOptions:{showThumbnail:!0,showDescription:!1,showSize:!1,thumbnailSize:"small",layout:"grid"}},faqs:{label:"FAQS",icon:"help-circle",enabled:!0,displayOptions:{showThumbnail:!1,showDescription:!0,showSize:!1,thumbnailSize:"small",layout:"list"}},audios:{label:"AUDIOS",icon:"music",enabled:!1,displayOptions:{showThumbnail:!0,showDescription:!1,showDuration:!0,showSize:!1,thumbnailSize:"small",layout:"grid"}},"special-effects":{label:"SPECIAL EFFECTS",icon:"zap",enabled:!1,displayOptions:{showThumbnail:!0,showDescription:!1,showSize:!1,thumbnailSize:"small",layout:"grid"}}};var f=class extends u.LitElement{constructor(){super(...arguments);this.selectedCategory="products";this.disabled=!1;this.isUploading=!1;this.uploadProgress=0;this.categoryStates=new Map;this.unifiedSearchQuery="";this.extraFilters=[];this.activeFilters={};this.loadingFilters=!1;this.defaultSearchConfig={placeholder:"Search all assets...",debounceMs:300,minLength:2}}async firstUpdated(){this.initializeService(),this.initializeCategoryStates(),await this.loadExtraFilters()}initializeService(){this.config?.multimediaService&&(this.multimediaService=de.initialize(this.config.multimediaService)),this.config?.productService&&(this.productService=X.initialize(this.config.productService)),this.config?.faqsService&&(this.faqsService=le.initialize(this.config.faqsService)),this.config?.fileService&&(this.fileService=ce.initialize(this.config.fileService))}initializeCategoryStates(){(this.config?.customCategories||Object.keys($)).forEach(i=>{this.categoryStates.set(i,{category:i,items:[],pagination:{page:1,limit:this.config?.itemsPerPage||12,total:0,hasMore:!1,loading:!1},searchQuery:"",loading:!1})})}async loadExtraFilters(){if(!this.config?.enableExtraFilters||!this.faqsService)return;let t=this.config.faqsService?.organizationId;if(!t){console.warn("Organization ID required for loading extra filters");return}this.loadingFilters=!0;try{let i=await this.faqsService.getSettingsByOrganization(t,this.config.userGroupId);i?.extraFilters&&(this.extraFilters=i.extraFilters.filter(o=>o.enabled&&(o.entity==="all"||o.entity==="assets")).sort((o,a)=>o.order-a.order))}catch(i){console.error("Error loading extra filters:",i)}finally{this.loadingFilters=!1}}hasActiveFilters(){return Object.keys(this.activeFilters).length>0}convertToExtraFields(t){if(!t||Object.keys(t).length===0)return;let i={};for(let[o,a]of Object.entries(t))a!=null&&(Array.isArray(a)?a.length>0&&(i[o]=a.join(",")):typeof a=="string"&&a.trim()!==""&&(a==="true"?i[o]=!0:a==="false"?i[o]=!1:!isNaN(Number(a))&&a.trim()!==""?i[o]=Number(a):i[o]=a));return Object.keys(i).length>0?i:void 0}async loadCategoryData(t,i="",o=1){if(!this.multimediaService&&t!=="faqs"&&t!=="products"||!this.productService&&t==="products"||!this.faqsService&&t==="faqs")return;let a=this.categoryStates.get(t);if(!a)return;this.updateCategoryState(t,{loading:!0,error:void 0});let r=this.hasActiveFilters()?this.activeFilters:void 0;try{let l=[],n=0;switch(t){case"products":{let m=await this.productService.getProducts({title:i,limit:a.pagination.limit,includeSecureToken:!0,extraFields:this.convertToExtraFields(r)});l=this.mapProductsToAssetItems(m),n=m.length;break}case"images":{let m=await this.multimediaService.getImages({search:i,page:o,limit:a.pagination.limit,includeSecureToken:!0,extraFilters:r});l=this.mapMultimediaToAssetItems(m.items,"images"),n=m.total;break}case"videos":{let m=await this.multimediaService.getVideos({search:i,page:o,limit:a.pagination.limit,includeSecureToken:!0,extraFilters:r});l=this.mapMultimediaToAssetItems(m.items,"videos"),n=m.total;break}case"presentations":{let m=await this.multimediaService.getPresentations({search:i,page:o,limit:a.pagination.limit,includeSecureToken:!0,extraFilters:r});l=this.mapMultimediaToAssetItems(m.items,"presentations"),n=m.total;break}case"faqs":{let m=await this.faqsService.getFaqs({search:i,isActive:!0,page:o,organizationId:this.config?.faqsService?.organizationId,limit:a.pagination.limit,sortBy:"priority",sortOrder:"desc",extraFilters:r});l=this.mapFaqsToAssetItems(m.data),n=m.total;break}}let d=o===1?l:[...a.items,...l];this.updateCategoryState(t,{items:d,pagination:{...a.pagination,page:o,total:n,hasMore:d.length<n,loading:!1},searchQuery:i,loading:!1})}catch(l){console.error(`Error loading ${t} data:`,l),this.updateCategoryState(t,{loading:!1,error:l instanceof Error?l.message:"Failed to load data"})}}mapProductsToAssetItems(t){return t.map(i=>({id:i.id,name:i.name,description:i.description,url:i.url,thumbnail:i.images?.[0],type:"products",price:i.price,currency:i.currency,tags:i.tags,secureToken:i.secureToken,metadata:{externalId:i.externalId,category:i.category,providerType:i.providerType,variants:i.variants,options:i.options}}))}mapMultimediaToAssetItems(t,i){return t?.map(o=>({id:o.id,name:o.name,description:o.description,url:o.url,thumbnail:i==="images"?o.url:o.animatedCoverUrl,type:i,size:o.size,format:o.format,duration:o.duration,labels:o.labels,secureToken:o.secureToken,metadata:{organizationId:o.organizationId,status:o.status,vodUrl:o.vodUrl,slides:o.slides}}))}mapFaqsToAssetItems(t){return t.map(i=>({id:i.id,name:i.question,description:i.answer,url:`#faq-${i.id}`,type:"faqs",metadata:{organizationId:i.organizationId,groupId:i.groupId,priority:i.priority,isActive:i.isActive,createdAt:i.createdAt,updatedAt:i.updatedAt}}))}updateCategoryState(t,i){let o=this.categoryStates.get(t);o&&(this.categoryStates.set(t,{...o,...i}),this.requestUpdate())}async onCategoryToggle(t){if(this.disabled)return;let i=this.categoryStates.get(t);i&&i.items.length===0&&!i.loading&&await this.loadCategoryData(t,this.unifiedSearchQuery),this.dispatchEvent(new CustomEvent("category-change",{detail:t}))}async onUnifiedSearchInput(t){if(this.disabled)return;let o=t.target.value.trim();this.unifiedSearchQuery=o,this.searchTimeout&&clearTimeout(this.searchTimeout),this.searchTimeout=window.setTimeout(async()=>{o.length>=(this.searchConfig?.minLength||this.defaultSearchConfig.minLength)?(await this.searchAllCategories(o),this.dispatchEvent(new CustomEvent("search",{detail:{query:o,category:"all"}}))):o.length===0&&await this.clearSearchAllCategories()},this.searchConfig?.debounceMs||this.defaultSearchConfig.debounceMs)}async searchAllCategories(t){let i=this.config?.customCategories||Object.keys($);for(let o of i)this.updateCategoryState(o,{searchQuery:t}),await this.loadCategoryData(o,t,1)}async clearSearchAllCategories(){let t=this.config?.customCategories||Object.keys($);for(let i of t)this.updateCategoryState(i,{searchQuery:""}),await this.loadCategoryData(i,"",1)}async onFilterChange(t,i){if(!this.disabled){if(!i||Array.isArray(i)&&i.length===0||i===""){let{[t]:o,...a}=this.activeFilters;this.activeFilters=a}else this.activeFilters={...this.activeFilters,[t]:i};await this.reloadAllOpenCategories(),this.dispatchEvent(new CustomEvent("filter-change",{detail:{filterName:t,value:i,activeFilters:this.activeFilters}}))}}async reloadAllOpenCategories(){let t=this.config?.customCategories||Object.keys($);for(let i of t){let o=this.categoryStates.get(i);o&&o.items.length>0&&await this.loadCategoryData(i,o.searchQuery,1)}}renderExtraFilters(){return this.extraFilters.length?u.html`
4509
+ `;var $={products:{label:"PRODUCTS",icon:"shopping-bag",enabled:!0,displayOptions:{showThumbnail:!0,showDescription:!1,showPrice:!0,showTags:!1,thumbnailSize:"small",layout:"grid"}},videos:{label:"VIDEOS",icon:"video",enabled:!0,displayOptions:{showThumbnail:!0,showDescription:!1,showDuration:!0,showSize:!1,thumbnailSize:"small",layout:"grid"}},images:{label:"IMAGES",icon:"image",enabled:!0,displayOptions:{showThumbnail:!0,showDescription:!1,showSize:!1,thumbnailSize:"small",layout:"grid"}},presentations:{label:"PRESENTATIONS",icon:"file-text",enabled:!0,displayOptions:{showThumbnail:!0,showDescription:!1,showSize:!1,thumbnailSize:"small",layout:"grid"}},faqs:{label:"FAQS",icon:"help-circle",enabled:!0,displayOptions:{showThumbnail:!1,showDescription:!0,showSize:!1,thumbnailSize:"small",layout:"list"}},audios:{label:"AUDIOS",icon:"music",enabled:!1,displayOptions:{showThumbnail:!0,showDescription:!1,showDuration:!0,showSize:!1,thumbnailSize:"small",layout:"grid"}},"special-effects":{label:"SPECIAL EFFECTS",icon:"zap",enabled:!1,displayOptions:{showThumbnail:!0,showDescription:!1,showSize:!1,thumbnailSize:"small",layout:"grid"}}};var f=class extends m.LitElement{constructor(){super(...arguments);this.selectedCategory="products";this.disabled=!1;this.isUploading=!1;this.uploadProgress=0;this.categoryStates=new Map;this.unifiedSearchQuery="";this.extraFilters=[];this.activeFilters={};this.loadingFilters=!1;this.defaultSearchConfig={placeholder:"Search all assets...",debounceMs:300,minLength:2}}async firstUpdated(){this.initializeService(),this.initializeCategoryStates(),await this.loadExtraFilters()}initializeService(){this.config?.multimediaService&&(this.multimediaService=de.initialize(this.config.multimediaService)),this.config?.productService&&(this.productService=X.initialize(this.config.productService)),this.config?.faqsService&&(this.faqsService=le.initialize(this.config.faqsService)),this.config?.fileService&&(this.fileService=ce.initialize(this.config.fileService))}initializeCategoryStates(){(this.config?.customCategories||Object.keys($)).forEach(i=>{this.categoryStates.set(i,{category:i,items:[],pagination:{page:1,limit:this.config?.itemsPerPage||12,total:0,hasMore:!1,loading:!1},searchQuery:"",loading:!1})})}async loadExtraFilters(){if(!this.config?.enableExtraFilters||!this.faqsService)return;let t=this.config.faqsService?.organizationId;if(!t){console.warn("Organization ID required for loading extra filters");return}this.loadingFilters=!0;try{let i=await this.faqsService.getSettingsByOrganization(t,this.config.userGroupId);i?.extraFilters&&(this.extraFilters=i.extraFilters.filter(o=>o.enabled&&(o.entity==="all"||o.entity==="assets")).sort((o,a)=>o.order-a.order))}catch(i){console.error("Error loading extra filters:",i)}finally{this.loadingFilters=!1}}hasActiveFilters(){return Object.keys(this.activeFilters).length>0}convertToExtraFields(t){if(!t||Object.keys(t).length===0)return;let i={};for(let[o,a]of Object.entries(t))a!=null&&(Array.isArray(a)?a.length>0&&(i[o]=a.join(",")):typeof a=="string"&&a.trim()!==""&&(a==="true"?i[o]=!0:a==="false"?i[o]=!1:!isNaN(Number(a))&&a.trim()!==""?i[o]=Number(a):i[o]=a));return Object.keys(i).length>0?i:void 0}async loadCategoryData(t,i="",o=1){if(!this.multimediaService&&t!=="faqs"&&t!=="products"||!this.productService&&t==="products"||!this.faqsService&&t==="faqs")return;let a=this.categoryStates.get(t);if(!a)return;this.updateCategoryState(t,{loading:!0,error:void 0});let n=this.hasActiveFilters()?this.activeFilters:void 0;try{let l=[],r=0;switch(t){case"products":{let u=await this.productService.getProducts({title:i,limit:a.pagination.limit,includeSecureToken:!0,extraFields:this.convertToExtraFields(n)});l=this.mapProductsToAssetItems(u),r=u.length;break}case"images":{let u=await this.multimediaService.getImages({search:i,page:o,limit:a.pagination.limit,includeSecureToken:!0,extraFilters:n});l=this.mapMultimediaToAssetItems(u.items,"images"),r=u.total;break}case"videos":{let u=await this.multimediaService.getVideos({search:i,page:o,limit:a.pagination.limit,includeSecureToken:!0,extraFilters:n});l=this.mapMultimediaToAssetItems(u.items,"videos"),r=u.total;break}case"presentations":{let u=await this.multimediaService.getPresentations({search:i,page:o,limit:a.pagination.limit,includeSecureToken:!0,extraFilters:n});l=this.mapMultimediaToAssetItems(u.items,"presentations"),r=u.total;break}case"faqs":{let u=await this.faqsService.getFaqs({search:i,isActive:!0,page:o,organizationId:this.config?.faqsService?.organizationId,limit:a.pagination.limit,sortBy:"priority",sortOrder:"desc",extraFilters:n});l=this.mapFaqsToAssetItems(u.data),r=u.total;break}}let d=o===1?l:[...a.items,...l];this.updateCategoryState(t,{items:d,pagination:{...a.pagination,page:o,total:r,hasMore:d.length<r,loading:!1},searchQuery:i,loading:!1})}catch(l){console.error(`Error loading ${t} data:`,l),this.updateCategoryState(t,{loading:!1,error:l instanceof Error?l.message:"Failed to load data"})}}mapProductsToAssetItems(t){return t.map(i=>({id:i.id,name:i.name,description:i.description,url:i.url,thumbnail:i.images?.[0],type:"products",price:i.price,currency:i.currency,tags:i.tags,secureToken:i.secureToken,metadata:{externalId:i.externalId,category:i.category,providerType:i.providerType,variants:i.variants,options:i.options}}))}mapMultimediaToAssetItems(t,i){return t?.map(o=>({id:o.id,name:o.name,description:o.description,url:o.url,thumbnail:i==="images"?o.url:o.animatedCoverUrl,type:i,size:o.size,format:o.format,duration:o.duration,labels:o.labels,secureToken:o.secureToken,metadata:{organizationId:o.organizationId,status:o.status,vodUrl:o.vodUrl,slides:o.slides}}))}mapFaqsToAssetItems(t){return t.map(i=>({id:i.id,name:i.question,description:i.answer,url:`#faq-${i.id}`,type:"faqs",metadata:{organizationId:i.organizationId,groupId:i.groupId,priority:i.priority,isActive:i.isActive,createdAt:i.createdAt,updatedAt:i.updatedAt}}))}updateCategoryState(t,i){let o=this.categoryStates.get(t);o&&(this.categoryStates.set(t,{...o,...i}),this.requestUpdate())}async onCategoryToggle(t){if(this.disabled)return;let i=this.categoryStates.get(t);i&&i.items.length===0&&!i.loading&&await this.loadCategoryData(t,this.unifiedSearchQuery),this.dispatchEvent(new CustomEvent("category-change",{detail:t}))}async onUnifiedSearchInput(t){if(this.disabled)return;let o=t.target.value.trim();this.unifiedSearchQuery=o,this.searchTimeout&&clearTimeout(this.searchTimeout),this.searchTimeout=window.setTimeout(async()=>{o.length>=(this.searchConfig?.minLength||this.defaultSearchConfig.minLength)?(await this.searchAllCategories(o),this.dispatchEvent(new CustomEvent("search",{detail:{query:o,category:"all"}}))):o.length===0&&await this.clearSearchAllCategories()},this.searchConfig?.debounceMs||this.defaultSearchConfig.debounceMs)}async searchAllCategories(t){let i=this.config?.customCategories||Object.keys($);for(let o of i)this.updateCategoryState(o,{searchQuery:t}),await this.loadCategoryData(o,t,1)}async clearSearchAllCategories(){let t=this.config?.customCategories||Object.keys($);for(let i of t)this.updateCategoryState(i,{searchQuery:""}),await this.loadCategoryData(i,"",1)}async onFilterChange(t,i){if(!this.disabled){if(!i||Array.isArray(i)&&i.length===0||i===""){let{[t]:o,...a}=this.activeFilters;this.activeFilters=a}else this.activeFilters={...this.activeFilters,[t]:i};await this.reloadAllOpenCategories(),this.dispatchEvent(new CustomEvent("filter-change",{detail:{filterName:t,value:i,activeFilters:this.activeFilters}}))}}async reloadAllOpenCategories(){let t=this.config?.customCategories||Object.keys($);for(let i of t){let o=this.categoryStates.get(i);o&&o.items.length>0&&await this.loadCategoryData(i,o.searchQuery,1)}}renderExtraFilters(){return this.extraFilters.length?m.html`
4510
4510
  <div class="ol-sidebar__extra-filters">
4511
4511
  ${(0,Be.repeat)(this.extraFilters,t=>t.name,t=>this.renderFilter(t))}
4512
4512
  </div>
4513
- `:u.html``}renderFilter(t){switch(t.type){case"select":return this.renderSelectFilter(t);case"multiselect":return this.renderMultiselectFilter(t);case"text":return this.renderTextFilter(t);default:return u.html``}}renderSelectFilter(t){let i=this.activeFilters[t.name];return u.html`
4513
+ `:m.html``}renderFilter(t){switch(t.type){case"select":return this.renderSelectFilter(t);case"multiselect":return this.renderMultiselectFilter(t);case"text":return this.renderTextFilter(t);default:return m.html``}}renderSelectFilter(t){let i=this.activeFilters[t.name];return m.html`
4514
4514
  <div class="ol-sidebar__filter">
4515
4515
  <label class="ol-sidebar__filter-label">${t.label}</label>
4516
4516
  <ol-select
4517
4517
  class="ol-sidebar__filter-select"
4518
- placeholder=${(0,me.ifDefined)(t.placeholder||`Select ${t.label.toLowerCase()}`)}
4518
+ placeholder=${(0,ue.ifDefined)(t.placeholder||`Select ${t.label.toLowerCase()}`)}
4519
4519
  clearable
4520
4520
  size="small"
4521
4521
  ?disabled=${this.disabled}
4522
4522
  .value=${i||""}
4523
4523
  @ol-change=${o=>{let a=o.target;this.onFilterChange(t.name,a.value)}}
4524
4524
  >
4525
- ${t.values?.map(o=>u.html`
4525
+ ${t.values?.map(o=>m.html`
4526
4526
  <ol-option value=${o}>${o}</ol-option>
4527
4527
  `)}
4528
4528
  </ol-select>
4529
4529
  </div>
4530
- `}renderMultiselectFilter(t){let i=this.activeFilters[t.name]||[];return u.html`
4530
+ `}renderMultiselectFilter(t){let i=this.activeFilters[t.name]||[];return m.html`
4531
4531
  <div class="ol-sidebar__filter">
4532
4532
  <label class="ol-sidebar__filter-label">${t.label}</label>
4533
4533
  <ol-select
4534
4534
  class="ol-sidebar__filter-select"
4535
- placeholder=${(0,me.ifDefined)(t.placeholder||`Select ${t.label.toLowerCase()}`)}
4535
+ placeholder=${(0,ue.ifDefined)(t.placeholder||`Select ${t.label.toLowerCase()}`)}
4536
4536
  multiple
4537
4537
  clearable
4538
4538
  size="small"
4539
4539
  ?disabled=${this.disabled}
4540
4540
  .value=${i}
4541
- @ol-change=${o=>{let a=o.target,r=Array.isArray(a.value)?a.value:[a.value].filter(Boolean);this.onFilterChange(t.name,r)}}
4541
+ @ol-change=${o=>{let a=o.target,n=Array.isArray(a.value)?a.value:[a.value].filter(Boolean);this.onFilterChange(t.name,n)}}
4542
4542
  >
4543
- ${t.values?.map(o=>u.html`
4543
+ ${t.values?.map(o=>m.html`
4544
4544
  <ol-option value=${o}>${o}</ol-option>
4545
4545
  `)}
4546
4546
  </ol-select>
4547
4547
  </div>
4548
- `}renderTextFilter(t){let i=this.activeFilters[t.name]||"";return u.html`
4548
+ `}renderTextFilter(t){let i=this.activeFilters[t.name]||"";return m.html`
4549
4549
  <div class="ol-sidebar__filter">
4550
4550
  <label class="ol-sidebar__filter-label">${t.label}</label>
4551
4551
  <ol-input
4552
4552
  class="ol-sidebar__filter-input"
4553
- placeholder=${(0,me.ifDefined)(t.placeholder||`Enter ${t.label.toLowerCase()}`)}
4553
+ placeholder=${(0,ue.ifDefined)(t.placeholder||`Enter ${t.label.toLowerCase()}`)}
4554
4554
  size="small"
4555
4555
  ?disabled=${this.disabled}
4556
4556
  .value=${i}
4557
4557
  @ol-input=${o=>{let a=o.target;this.searchTimeout&&clearTimeout(this.searchTimeout),this.searchTimeout=window.setTimeout(()=>{this.onFilterChange(t.name,a.value)},this.searchConfig?.debounceMs||this.defaultSearchConfig.debounceMs)}}
4558
4558
  ></ol-input>
4559
4559
  </div>
4560
- `}async onLoadMore(t){if(this.disabled)return;let i=this.categoryStates.get(t);!i||!i.pagination.hasMore||i.pagination.loading||(await this.loadCategoryData(t,i.searchQuery,i.pagination.page+1),this.dispatchEvent(new CustomEvent("load-more",{detail:t})))}onItemSelect(t){this.disabled||this.dispatchEvent(new CustomEvent("item-select",{detail:t}))}async onFileSelected(t){if(this.disabled)return;if(!this.fileService){console.warn("FileService not configured");return}let{file:i,type:o}=t.detail;this.isUploading=!0,this.uploadProgress=0;try{let a=await this.fileService.uploadFile(i,{bucketType:"conversations",path:"scanned",description:`${o} uploaded from sidebar`,onProgress:r=>{this.uploadProgress=r}});if(a.success)this.dispatchEvent(new CustomEvent("file-uploaded",{detail:{id:a.id,name:a.name,url:a.url,type:"file"}}));else throw new Error(a.error||"Upload failed")}catch(a){console.error("Error uploading file:",a),this.dispatchEvent(new CustomEvent("file-upload-error",{detail:{error:a instanceof Error?a.message:"Unknown error"},bubbles:!0}))}finally{this.isUploading=!1,this.uploadProgress=0}}renderCategoryHeader(t){let i=$[t],a=this.categoryStates.get(t)?.items.length||0;return u.html`
4560
+ `}async onLoadMore(t){if(this.disabled)return;let i=this.categoryStates.get(t);!i||!i.pagination.hasMore||i.pagination.loading||(await this.loadCategoryData(t,i.searchQuery,i.pagination.page+1),this.dispatchEvent(new CustomEvent("load-more",{detail:t})))}onItemSelect(t){this.disabled||this.dispatchEvent(new CustomEvent("item-select",{detail:t}))}async onFileSelected(t){if(this.disabled)return;if(!this.fileService){console.warn("FileService not configured");return}let{file:i,type:o}=t.detail;this.isUploading=!0,this.uploadProgress=0;try{let a=await this.fileService.uploadFile(i,{bucketType:"conversations",path:"scanned",description:`${o} uploaded from sidebar`,onProgress:n=>{this.uploadProgress=n}});if(a.success)this.dispatchEvent(new CustomEvent("file-uploaded",{detail:{id:a.id,name:a.name,url:a.url,type:"file"}}));else throw new Error(a.error||"Upload failed")}catch(a){console.error("Error uploading file:",a),this.dispatchEvent(new CustomEvent("file-upload-error",{detail:{error:a instanceof Error?a.message:"Unknown error"},bubbles:!0}))}finally{this.isUploading=!1,this.uploadProgress=0}}renderCategoryHeader(t){let i=$[t],a=this.categoryStates.get(t)?.items.length||0;return m.html`
4561
4561
  <div class="ol-sidebar__category-header">
4562
4562
  <div class="ol-sidebar__category-info">
4563
4563
  <span class="ol-sidebar__category-label">${i.label}</span>
4564
- ${(0,j.when)(a>0,()=>u.html`
4564
+ ${(0,j.when)(a>0,()=>m.html`
4565
4565
  <span class="ol-sidebar__category-count">(${a})</span>
4566
4566
  `)}
4567
4567
  </div>
4568
4568
 
4569
4569
  </div>
4570
- `}renderAssetItem(t,i){return u.html`
4570
+ `}renderAssetItem(t,i){return m.html`
4571
4571
  <div
4572
4572
  class="ol-sidebar__asset-item ${(0,te.classMap)({"ol-sidebar__asset-item--grid":i.layout==="grid","ol-sidebar__asset-item--list":i.layout==="list","ol-sidebar__asset-item--faq":t.type==="faqs","ol-sidebar__asset-item--disabled":this.disabled})}"
4573
4573
  @click=${()=>this.onItemSelect(t)}
@@ -4575,8 +4575,8 @@ video::-webkit-media-text-track-display {
4575
4575
  ${this.renderAssetThumbnail(t)}
4576
4576
  ${this.renderAssetContent(t,i)}
4577
4577
  </div>
4578
- `}renderAssetThumbnail(t){return t.type==="faqs"?u.html``:u.html`
4579
- ${(0,j.when)(t.type==="videos",()=>u.html`
4578
+ `}renderAssetThumbnail(t){return t.type==="faqs"?m.html``:m.html`
4579
+ ${(0,j.when)(t.type==="videos",()=>m.html`
4580
4580
  <div class="ol-sidebar__asset-thumbnail">
4581
4581
  <och-player
4582
4582
  class="och__media-visualizer__item--video"
@@ -4586,16 +4586,16 @@ video::-webkit-media-text-track-display {
4586
4586
  ${this.formatDuration(t.duration)}
4587
4587
  </div>
4588
4588
  </div>
4589
- `,()=>u.html`
4589
+ `,()=>m.html`
4590
4590
  <div class="ol-sidebar__asset-thumbnail">
4591
4591
  <img
4592
- src="${(0,me.ifDefined)(t.thumbnail)}"
4592
+ src="${(0,ue.ifDefined)(t.thumbnail)}"
4593
4593
  alt="${t.name}"
4594
4594
  class="ol-sidebar__asset-image"
4595
4595
  />
4596
4596
  </div>
4597
4597
  `)}
4598
- `}renderAssetContent(t,i){return u.html`
4598
+ `}renderAssetContent(t,i){return m.html`
4599
4599
  <div class="ol-sidebar__asset-content">
4600
4600
  ${this.renderAssetName(t)}
4601
4601
  ${this.renderAssetPrice(t)}
@@ -4604,20 +4604,20 @@ video::-webkit-media-text-track-display {
4604
4604
  ${this.renderAssetMeta(t,i)}
4605
4605
  ${this.renderAssetTags(t,i)}
4606
4606
  </div>
4607
- `}renderAssetName(t){return u.html`
4607
+ `}renderAssetName(t){return m.html`
4608
4608
  <div class="ol-sidebar__asset-name ${(0,te.classMap)({"ol-sidebar__asset-name--faq":t.type==="faqs"})}">
4609
4609
  ${t.name}
4610
4610
  </div>
4611
- `}renderAssetPrice(t){return u.html`
4612
- ${(0,j.when)(t.type==="products"&&t.price,()=>u.html`
4611
+ `}renderAssetPrice(t){return m.html`
4612
+ ${(0,j.when)(t.type==="products"&&t.price,()=>m.html`
4613
4613
  <div class="ol-sidebar__asset-price">
4614
4614
  ${t.currency} ${t.price}
4615
4615
  </div>
4616
4616
  `)}
4617
- `}renderAssetPresentation(t){return u.html`
4618
- ${(0,j.when)(t.type==="presentations",()=>u.html`
4617
+ `}renderAssetPresentation(t){return m.html`
4618
+ ${(0,j.when)(t.type==="presentations",()=>m.html`
4619
4619
  <div class="ol-sidebar__asset-presentation">
4620
- ${(0,j.when)(t.metadata?.slides&&t.metadata.slides.length>0,()=>u.html`
4620
+ ${(0,j.when)(t.metadata?.slides&&t.metadata.slides.length>0,()=>m.html`
4621
4621
  <div class="ol-sidebar__asset-presentation-preview">
4622
4622
  <img
4623
4623
  src=${t.metadata?.slides[0]}
@@ -4628,7 +4628,7 @@ video::-webkit-media-text-track-display {
4628
4628
  ${this.getFormat(t.format)}
4629
4629
  </div>
4630
4630
  </div>
4631
- `,()=>u.html`
4631
+ `,()=>m.html`
4632
4632
  <div class="ol-sidebar__asset-presentation-fallback">
4633
4633
  <div class="ol-sidebar__asset-presentation-icon">📄</div>
4634
4634
  <div class="ol-sidebar__asset-presentation-format">
@@ -4638,52 +4638,52 @@ video::-webkit-media-text-track-display {
4638
4638
  `)}
4639
4639
  </div>
4640
4640
  `)}
4641
- `}renderAssetDescription(t,i){return u.html`
4642
- ${(0,j.when)(i.showDescription&&t.description&&t.type!=="products",()=>u.html`
4641
+ `}renderAssetDescription(t,i){return m.html`
4642
+ ${(0,j.when)(i.showDescription&&t.description&&t.type!=="products",()=>m.html`
4643
4643
  <div class="ol-sidebar__asset-description ${(0,te.classMap)({"ol-sidebar__asset-description--faq":t.type==="faqs"})}">
4644
4644
  ${t.description}
4645
4645
  </div>
4646
4646
  `)}
4647
- `}renderAssetMeta(t,i){return u.html`
4647
+ `}renderAssetMeta(t,i){return m.html`
4648
4648
  <div class="ol-sidebar__asset-meta">
4649
- ${(0,j.when)(i.showSize&&t.size,()=>u.html`
4649
+ ${(0,j.when)(i.showSize&&t.size,()=>m.html`
4650
4650
  <span class="ol-sidebar__asset-size">
4651
4651
  ${this.formatFileSize(t.size)}
4652
4652
  </span>
4653
4653
  `)}
4654
4654
  </div>
4655
- `}renderAssetTags(t,i){return u.html`
4656
- ${(0,j.when)(i.showTags&&t.tags&&t.tags.length>0,()=>u.html`
4655
+ `}renderAssetTags(t,i){return m.html`
4656
+ ${(0,j.when)(i.showTags&&t.tags&&t.tags.length>0,()=>m.html`
4657
4657
  <div class="ol-sidebar__asset-tags">
4658
- ${t.tags?.map(o=>u.html`
4658
+ ${t.tags?.map(o=>m.html`
4659
4659
  <span class="ol-sidebar__asset-tag">${o}</span>
4660
4660
  `)}
4661
4661
  </div>
4662
4662
  `)}
4663
- `}renderCategoryContent(t){let i=this.categoryStates.get(t),o=$[t];return i?u.html`
4663
+ `}renderCategoryContent(t){let i=this.categoryStates.get(t),o=$[t];return i?m.html`
4664
4664
  <div class="ol-sidebar__category-content">
4665
4665
 
4666
- ${(0,j.when)(i.loading&&i.items.length===0,()=>u.html`
4666
+ ${(0,j.when)(i.loading&&i.items.length===0,()=>m.html`
4667
4667
  <div class="ol-sidebar__loading">
4668
4668
  <div class="ol-sidebar__spinner"></div>
4669
4669
  <span>Loading ${o.label.toLowerCase()}...</span>
4670
4670
  </div>
4671
4671
  `)}
4672
4672
 
4673
- ${(0,j.when)(i.error,()=>u.html`
4673
+ ${(0,j.when)(i.error,()=>m.html`
4674
4674
  <div class="ol-sidebar__error">
4675
4675
  <span class="ol-sidebar__error-icon">⚠</span>
4676
4676
  <span>${i.error}</span>
4677
4677
  </div>
4678
4678
  `)}
4679
4679
 
4680
- ${(0,j.when)(i.items.length>0,()=>u.html`
4680
+ ${(0,j.when)(i.items.length>0,()=>m.html`
4681
4681
  <div class="ol-sidebar__assets ${(0,te.classMap)({"ol-sidebar__assets--list":o.displayOptions.layout==="list"})}">
4682
4682
  ${(0,Be.repeat)(i.items,a=>a.id,a=>this.renderAssetItem(a,o.displayOptions))}
4683
4683
  </div>
4684
4684
  `)}
4685
4685
 
4686
- ${(0,j.when)(i.pagination.hasMore,()=>u.html`
4686
+ ${(0,j.when)(i.pagination.hasMore,()=>m.html`
4687
4687
  <div class="ol-sidebar__load-more">
4688
4688
  <ol-button
4689
4689
  class="ol-sidebar__load-more-button"
@@ -4695,18 +4695,18 @@ video::-webkit-media-text-track-display {
4695
4695
  </div>
4696
4696
  `)}
4697
4697
 
4698
- ${(0,j.when)(!i.loading&&i.items.length===0&&!i.error,()=>u.html`
4698
+ ${(0,j.when)(!i.loading&&i.items.length===0&&!i.error,()=>m.html`
4699
4699
  <div class="ol-sidebar__empty">
4700
4700
  <span>No ${o.label.toLowerCase()}s found</span>
4701
4701
  </div>
4702
4702
  `)}
4703
4703
  </div>
4704
- `:u.html``}formatFileSize(t){let i=["B","KB","MB","GB"];if(t===0)return"0 B";let o=Math.floor(Math.log(t)/Math.log(1024));return Math.round(t/1024**o*100)/100+" "+i[o]}getFormat(t){return t.split("/")[1]}formatDuration(t){let i=Math.floor(t/60),o=Math.floor(t%60);return`${i}:${o.toString().padStart(2,"0")}`}render(){let t=this.config?.customCategories||Object.keys($);return u.html`
4704
+ `:m.html``}formatFileSize(t){let i=["B","KB","MB","GB"];if(t===0)return"0 B";let o=Math.floor(Math.log(t)/Math.log(1024));return Math.round(t/1024**o*100)/100+" "+i[o]}getFormat(t){return t.split("/")[1]}formatDuration(t){let i=Math.floor(t/60),o=Math.floor(t%60);return`${i}:${o.toString().padStart(2,"0")}`}render(){let t=this.config?.customCategories||Object.keys($);return m.html`
4705
4705
  <div class="ol-sidebar ${(0,te.classMap)({"ol-sidebar--disabled":this.disabled})}">
4706
4706
  <div class="ol-sidebar__header">
4707
4707
  <div class="ol-sidebar__header-top">
4708
4708
  <h2 class="ol-sidebar__title">Assets</h2>
4709
- ${(0,j.when)(this.config?.enableUpload&&this.fileService&&!this.disabled,()=>u.html`
4709
+ ${(0,j.when)(this.config?.enableUpload&&this.fileService&&!this.disabled,()=>m.html`
4710
4710
  <osb-upload
4711
4711
  .config=${{maxFileSize:10*1024*1024,showImage:!0,showVideo:!0,showDocument:!0}}
4712
4712
  @osb-file-selected=${this.onFileSelected}
@@ -4715,7 +4715,7 @@ video::-webkit-media-text-track-display {
4715
4715
  <ol-icon name="plus"></ol-icon>
4716
4716
  </ol-button>
4717
4717
  </osb-upload>
4718
- ${(0,j.when)(this.isUploading,()=>u.html`
4718
+ ${(0,j.when)(this.isUploading,()=>m.html`
4719
4719
  <div class="ol-sidebar__upload-progress">
4720
4720
  <div class="ol-sidebar__upload-progress-bar">
4721
4721
  <div
@@ -4730,12 +4730,12 @@ video::-webkit-media-text-track-display {
4730
4730
  `)}
4731
4731
  `)}
4732
4732
  </div>
4733
- ${(0,j.when)(this.config?.showSearch,()=>u.html`
4733
+ ${(0,j.when)(this.config?.showSearch,()=>m.html`
4734
4734
  <div class="ol-sidebar__unified-search">
4735
4735
  <input
4736
4736
  class="ol-sidebar__unified-search-input"
4737
4737
  type="text"
4738
- placeholder="${(0,me.ifDefined)(this.searchConfig?.placeholder||this.defaultSearchConfig.placeholder)}"
4738
+ placeholder="${(0,ue.ifDefined)(this.searchConfig?.placeholder||this.defaultSearchConfig.placeholder)}"
4739
4739
  .value=${this.unifiedSearchQuery}
4740
4740
  ?disabled=${this.disabled}
4741
4741
  @input=${this.onUnifiedSearchInput}
@@ -4743,7 +4743,7 @@ video::-webkit-media-text-track-display {
4743
4743
  </div>
4744
4744
  `)}
4745
4745
  ${(0,j.when)(this.config?.enableExtraFilters&&this.extraFilters.length>0,()=>this.renderExtraFilters())}
4746
- ${(0,j.when)(this.loadingFilters,()=>u.html`
4746
+ ${(0,j.when)(this.loadingFilters,()=>m.html`
4747
4747
  <div class="ol-sidebar__filters-loading">
4748
4748
  <div class="ol-sidebar__spinner ol-sidebar__spinner--small"></div>
4749
4749
  <span>Loading filters...</span>
@@ -4752,7 +4752,7 @@ video::-webkit-media-text-track-display {
4752
4752
  </div>
4753
4753
 
4754
4754
  <div class="ol-sidebar__content">
4755
- ${(0,Be.repeat)(t,i=>i,i=>$[i].enabled?u.html`
4755
+ ${(0,Be.repeat)(t,i=>i,i=>$[i].enabled?m.html`
4756
4756
  <ol-details
4757
4757
  class="ol-sidebar__category ${(0,te.classMap)({"ol-sidebar__category--disabled":this.disabled})}"
4758
4758
  summary=""
@@ -4764,7 +4764,8 @@ video::-webkit-media-text-track-display {
4764
4764
  </div>
4765
4765
  ${this.renderCategoryContent(i)}
4766
4766
  </ol-details>
4767
- `:u.html``)}
4767
+ `:m.html``)}
4768
4768
  </div>
4769
4769
  </div>
4770
- `}};f.styles=[li],v([(0,w.property)({type:Object})],f.prototype,"config",2),v([(0,w.property)({type:Object})],f.prototype,"searchConfig",2),v([(0,w.property)({type:String})],f.prototype,"selectedCategory",2),v([(0,w.property)({type:Boolean})],f.prototype,"disabled",2),v([(0,w.state)()],f.prototype,"multimediaService",2),v([(0,w.state)()],f.prototype,"productService",2),v([(0,w.state)()],f.prototype,"faqsService",2),v([(0,w.state)()],f.prototype,"fileService",2),v([(0,w.state)()],f.prototype,"isUploading",2),v([(0,w.state)()],f.prototype,"uploadProgress",2),v([(0,w.state)()],f.prototype,"categoryStates",2),v([(0,w.state)()],f.prototype,"searchTimeout",2),v([(0,w.state)()],f.prototype,"unifiedSearchQuery",2),v([(0,w.state)()],f.prototype,"extraFilters",2),v([(0,w.state)()],f.prototype,"activeFilters",2),v([(0,w.state)()],f.prototype,"loadingFilters",2),f=v([K("osb-side-bar")],f);var ci=require("@lit/react"),di=A(require("react"),1);var pi=(0,ci.createComponent)({tagName:"osb-asset",elementClass:k,react:di.default,events:{onAssetClick:"asset-click",onAssetDownload:"asset-download",onAssetLoad:"asset-load",onAssetError:"asset-error",onContentClick:"content-click"}});var ui=require("@lit/react"),mi=A(require("react"),1);var gi=(0,ui.createComponent)({tagName:"osb-side-bar",elementClass:f,react:mi.default,events:{onSearch:"search",onLoadMore:"load-more",onItemAdd:"item-add",onCategoryChange:"category-change",onItemSelect:"item-select",onFileUpload:"file-uploaded"}});var vi=require("@lit/react"),hi=A(require("react"),1);var fi=(0,vi.createComponent)({tagName:"osb-upload",elementClass:R,react:hi.default,events:{onFileSelected:"osb-file-selected",onUploadError:"osb-upload-error"}});var M=0;function Re(){M=0}function pt(s){M=s}function g(s){return M++,`mock_${s}_${M}_${Date.now().toString(36)}`}function ut(s,e){return`mock_${s}_${e.toString(36)}`}function E(s,e,t){let i=t||new Date().toISOString(),o=typeof btoa=="function"?btoa(i).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,""):i.replace(/[^a-zA-Z0-9]/g,"");return`mock_token_${s}_${e}_${o}`}function mt(s){if(!s.startsWith("mock_token_"))return null;let e=s.replace("mock_token_","").split("_");if(e.length<3)return null;let t=e[e.length-1],i=e[e.length-2],o=e.slice(0,-2).join("_");try{let a=t.replace(/-/g,"+").replace(/_/g,"/"),r=typeof atob=="function"?atob(a):t;return{roomId:o,identity:i,timestamp:r}}catch{return null}}function ie(s){return`wss://mock-livekit.local/room/${s}`}function gt(s="participant",e){let t=e??M++;return`${s}_${t}_${Date.now().toString(36)}`}function vt(s="room"){return M++,`${s}_${M}_${Date.now().toString(36)}`}function ht(s,e){return M++,`TR_${s.toUpperCase()}_${e}_${M}`}function ft(){return M++,`msg_${M}_${Date.now().toString(36)}_${Math.random().toString(36).slice(2,8)}`}function bt(s){return M++,`api_${s}_${M}_${Date.now().toString(36)}`}function yt(){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 kt(s,e){let t=[];for(let i=0;i<e;i++)t.push(g(s));return t}var Ke={responseStrategy:"echo",responseDelayMs:100,cannedResponses:[],type:"text",nature:"ai",simulateTyping:!1,typingDelayPerChar:20};function Ge(s,e,t=[],i=0,o=Math.random){switch(s){case"echo":return{response:`Echo: ${e}`,nextIndex:i};case"canned":return{response:t[0]||"Default response",nextIndex:i};case"sequential":return{response:t[i]||"No more responses",nextIndex:(i+1)%Math.max(1,t.length)};case"random":{if(t.length===0)return{response:"Random response",nextIndex:i};let a=Math.floor(o()*t.length);return{response:t[a],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 ge=class{constructor(e,t,i={}){this._state="idle";this.conversationHistory=[];this.responseIndex=0;this.eventListeners=new Set;this.randomFn=Math.random;this.messageCount=0;this.id=e,this.name=t,this.config={...Ke,...i}}get state(){return this._state}get isRunning(){return this._state==="running"}get history(){return[...this.conversationHistory]}getConfig(){return{...this.config}}updateConfig(e){this.config={...this.config,...e}}setStrategy(e){this.config.responseStrategy=e}setCannedResponses(e){this.config.cannedResponses=e,this.responseIndex=0}setCustomHandler(e){this.customHandler=e,this.config.responseStrategy="custom"}setRandomFunction(e){this.randomFn=e}async start(e){this._state!=="running"&&(this._state="starting",this.roomId=e,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(e){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(e,"user"),this.emitEvent({type:"message_received",agentId:this.id,message:e});let t;try{if(this.config.responseStrategy==="custom"&&this.customHandler)t=await this.customHandler(this.id,e,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=Ge(this.config.responseStrategy,e,this.config.cannedResponses,this.responseIndex,this.randomFn);t=i.response,this.responseIndex=i.nextIndex}}}catch(i){throw this._state="error",i}return this.config.simulateTyping&&this.config.typingDelayPerChar&&await this.delay(t.length*this.config.typingDelayPerChar),this.config.responseDelayMs&&await this.delay(this.config.responseDelayMs),this.addMessage(t,"agent"),this.messageCount++,this.emitEvent({type:"response_sent",agentId:this.id,response:t}),t}addEventListener(e){return this.eventListeners.add(e),()=>this.eventListeners.delete(e)}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(e,t){let i={id:g("msg"),content:e,role:t,timestamp:Date.now()};return this.conversationHistory.push(i),i}emitEvent(e){for(let t of this.eventListeners)try{t(e)}catch(i){console.error("Error in agent event listener:",i)}}delay(e){return new Promise(t=>setTimeout(t,e))}};var b=class s extends Error{constructor(e,t,i){super(t),this.name="MockLiveKitError",this.code=e,this.details=i,typeof Error.captureStackTrace=="function"&&Error.captureStackTrace(this,s)}toMockError(){return{code:this.code,message:this.message,details:this.details}}static fromMockError(e){return new s(e.code,e.message,e.details)}},z=class extends b{constructor(e){super("ROOM_NOT_FOUND",`Room not found: ${e}`,{roomId:e}),this.name="RoomNotFoundError"}},ve=class extends b{constructor(e){super("ROOM_ENDED",`Room has ended: ${e}`,{roomId:e}),this.name="RoomEndedError"}},he=class extends b{constructor(e,t){super("PARTICIPANT_ALREADY_JOINED",`Participant ${e} is already in room ${t}`,{identity:e,roomId:t}),this.name="ParticipantAlreadyJoinedError"}},fe=class extends b{constructor(e){super("PARTICIPANT_NOT_FOUND",`Participant not found: ${e}`,{identity:e}),this.name="ParticipantNotFoundError"}},be=class extends b{constructor(e){super("TRACK_NOT_FOUND",`Track not found: ${e}`,{trackId:e}),this.name="TrackNotFoundError"}},ye=class extends b{constructor(e){super("AGENT_NOT_FOUND",`Agent not found: ${e}`,{agentId:e}),this.name="AgentNotFoundError"}},ke=class extends b{constructor(e="Unauthorized"){super("UNAUTHORIZED",e),this.name="UnauthorizedError"}},je=class extends b{constructor(e="Network error occurred"){super("NETWORK_ERROR",e),this.name="NetworkError"}},we=class extends b{constructor(e,t){super("INVALID_OPERATION",e,t),this.name="InvalidOperationError"}},Se=class extends b{constructor(e,t){super("TIMEOUT",`Operation timed out: ${e}`,{operation:e,timeoutMs:t}),this.name="TimeoutError"}};function oe(s){switch(s.code){case"ROOM_NOT_FOUND":return new z(s.details?.roomId??"unknown");case"ROOM_ENDED":return new ve(s.details?.roomId??"unknown");case"PARTICIPANT_ALREADY_JOINED":return new he(s.details?.identity??"unknown",s.details?.roomId??"unknown");case"PARTICIPANT_NOT_FOUND":return new fe(s.details?.identity??"unknown");case"TRACK_NOT_FOUND":return new be(s.details?.trackId??"unknown");case"AGENT_NOT_FOUND":return new ye(s.details?.agentId??"unknown");case"UNAUTHORIZED":return new ke(s.message);case"NETWORK_ERROR":return new je(s.message);case"INVALID_OPERATION":return new we(s.message,s.details);case"TIMEOUT":return new Se(s.details?.operation??"unknown",s.details?.timeoutMs??0);default:return b.fromMockError(s)}}function O(s){return typeof s=="object"&&s!==null&&"code"in s&&"message"in s&&typeof s.code=="string"&&typeof s.message=="string"}function jt(s){return s instanceof b}var se=class{constructor(){this.listeners={};this.wildcardListeners=new Set;this.eventHistory=[];this.maxHistorySize=1e3;this.recordHistory=!0}setMaxHistorySize(e){this.maxHistorySize=e,this.trimHistory()}setRecordHistory(e){this.recordHistory=e}on(e,t){return this.listeners[e]||(this.listeners[e]=new Set),this.listeners[e].add(t),()=>{this.off(e,t)}}once(e,t){let i=o=>{this.off(e,i),t(o)};return this.on(e,i)}off(e,t){this.listeners[e]?.delete(t)}onAny(e){return this.wildcardListeners.add(e),()=>{this.wildcardListeners.delete(e)}}offAny(e){this.wildcardListeners.delete(e)}removeAllListeners(e){e?delete this.listeners[e]:(this.listeners={},this.wildcardListeners.clear())}emit(e){this.recordHistory&&(this.eventHistory.push(e),this.trimHistory());let t=this.listeners[e.type];if(t)for(let i of t)try{i(e)}catch(o){console.error(`Error in mock event listener for ${e.type}:`,o)}for(let i of this.wildcardListeners)try{i(e)}catch(o){console.error("Error in mock wildcard event listener:",o)}}trimHistory(){this.eventHistory.length>this.maxHistorySize&&(this.eventHistory=this.eventHistory.slice(-this.maxHistorySize))}emitRoomCreated(e){let t={type:"roomCreated",timestamp:new Date().toISOString(),roomId:e.id,room:e};this.emit(t)}emitRoomEnded(e){let t={type:"roomEnded",timestamp:new Date().toISOString(),roomId:e};this.emit(t)}emitRoomConnectionStateChanged(e,t,i){let o={type:"roomConnectionStateChanged",timestamp:new Date().toISOString(),roomId:e,state:t,previousState:i};this.emit(o)}emitParticipantJoined(e,t){let i={type:"participantJoined",timestamp:new Date().toISOString(),roomId:e,participant:t};this.emit(i)}emitParticipantLeft(e,t){let i={type:"participantLeft",timestamp:new Date().toISOString(),roomId:e,participantIdentity:t};this.emit(i)}emitParticipantAttributesChanged(e,t,i,o){let a={type:"participantAttributesChanged",timestamp:new Date().toISOString(),roomId:e,participantIdentity:t,attributes:i,previousAttributes:o};this.emit(a)}emitTrackPublished(e,t,i){let o={type:"trackPublished",timestamp:new Date().toISOString(),roomId:e,participantIdentity:t,track:i};this.emit(o)}emitTrackUnpublished(e,t,i){let o={type:"trackUnpublished",timestamp:new Date().toISOString(),roomId:e,participantIdentity:t,trackId:i};this.emit(o)}emitTrackMuted(e,t){let i={type:"trackMuted",timestamp:new Date().toISOString(),roomId:e,trackId:t};this.emit(i)}emitTrackUnmuted(e,t){let i={type:"trackUnmuted",timestamp:new Date().toISOString(),roomId:e,trackId:t};this.emit(i)}emitMessageReceived(e,t){let i={type:"messageReceived",timestamp:new Date().toISOString(),roomId:e,message:t};this.emit(i)}emitMessageSent(e,t){let i={type:"messageSent",timestamp:new Date().toISOString(),roomId:e,message:t};this.emit(i)}emitTypingIndicator(e,t,i){let o={type:"typingIndicator",timestamp:new Date().toISOString(),roomId:e,participantIdentity:t,isTyping:i};this.emit(o)}emitAgentStarted(e,t){let i={type:"agentStarted",timestamp:new Date().toISOString(),roomId:e,agent:t};this.emit(i)}emitAgentStopped(e,t){let i={type:"agentStopped",timestamp:new Date().toISOString(),roomId:e,agentId:t};this.emit(i)}emitAgentMessage(e,t,i){let o={type:"agentMessage",timestamp:new Date().toISOString(),roomId:e,agentId:t,message:i};this.emit(o)}emitDataReceived(e,t,i,o){let a={type:"dataReceived",timestamp:new Date().toISOString(),roomId:e,participantIdentity:t,data:i,topic:o};this.emit(a)}emitError(e,t){let i={type:"error",timestamp:new Date().toISOString(),roomId:t,error:e};this.emit(i)}getHistory(e){return e?this.eventHistory.filter(t=>t.type===e):[...this.eventHistory]}getLastEvents(e,t){return(t?this.eventHistory.filter(o=>o.type===t):this.eventHistory).slice(-e)}clearHistory(){this.eventHistory=[]}listenerCount(e){return(this.listeners[e]?.size??0)+this.wildcardListeners.size}};var We=require("@onlive.ai/tracker/session"),Me=require("livekit-client");var bi=require("firebase/app"),p=require("firebase/database"),Ye=class{constructor(e){this.onChildChanged=(e,t)=>(0,p.onChildChanged)(this.ref(e),i=>t(i.key||"",i.val(),i));this.onChildRemoved=(e,t)=>(0,p.onChildRemoved)(this.ref(e),i=>t(i.key||"",i.val(),i));this.onChildChangedQuery=(e,t)=>(0,p.onChildChanged)(e,i=>t(i.key||"",i.val(),i));this.onChildRemovedQuery=(e,t)=>(0,p.onChildRemoved)(e,i=>t(i.key||"",i.val(),i));let t=(0,bi.initializeApp)(e.config);this.db=(0,p.getDatabase)(t)}ref(e){return(0,p.ref)(this.db,e)}async getOnce(e){let t=await(0,p.get)(this.ref(e));return t.exists()?t.val():null}async getOnceQuery(e){let t=await(0,p.get)(e),i=[];return t.exists()&&t.forEach(o=>{i.push({key:o.key||"",value:o.val()})}),i}onValue(e,t){return(0,p.onValue)(this.ref(e),i=>t(i.key??"",i.val(),i),i=>console.error("onValue error",i))}onValueQuery(e,t){return(0,p.onValue)(e,i=>t(i.key??"",i.val(),i),i=>console.error("onValueQuery error",i))}onChildAdded(e,t){return(0,p.onChildAdded)(this.ref(e),i=>t(i.key||"",i.val(),i),i=>console.error("onChildAdded error",i))}onChildAddedQuery(e,t){return(0,p.onChildAdded)(e,i=>t(i.key||"",i.val(),i),i=>console.error("onChildAddedQuery error",i))}write(e,t){return(0,p.set)(this.ref(e),t)}update(e,t){return(0,p.update)(this.ref(e),t)}remove(e){return(0,p.remove)(this.ref(e))}async push(e,t){let i=(0,p.push)(this.ref(e));return await(0,p.set)(i,t),i.key}onDisconnectUpdate(e,t){return(0,p.onDisconnect)(this.ref(e)).update(t)}cancelOnDisconnect(e){return(0,p.onDisconnect)(this.ref(e)).cancel()}transaction(e,t){return(0,p.runTransaction)(this.ref(e),i=>t(i))}query(e,t={}){let i=this.ref(e);return t.orderBy==="child"&&t.childKey&&(i=(0,p.query)(i,(0,p.orderByChild)(t.childKey))),t.orderBy==="key"&&(i=(0,p.query)(i,(0,p.orderByKey)())),t.orderBy==="value"&&(i=(0,p.query)(i,(0,p.orderByValue)())),t.startAt!=null&&(i=(0,p.query)(i,(0,p.startAt)(t.startAt))),t.endAt!=null&&(i=(0,p.query)(i,(0,p.endAt)(t.endAt))),t.equalTo!=null&&(i=(0,p.query)(i,(0,p.equalTo)(t.equalTo))),t.limitFirst!=null&&(i=(0,p.query)(i,(0,p.limitToFirst)(t.limitFirst))),t.limitLast!=null&&(i=(0,p.query)(i,(0,p.limitToLast)(t.limitLast))),i}};var yi=s=>{let e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",t="";for(let i=0;i<s;i++)t+=e.charAt(Math.floor(Math.random()*e.length));return t};var ki=require("@onlive.ai/tracker/generator"),_=require("@onlive.ai/tracker/session"),G="chatbot",Qe=class s{static hasSession(){return!!_.Session.getCookie(G)}static getSession(e={role:"guest",regenerate:!1}){e.regenerate&&(_.Session.id=ki.Generator.uuid(),_.Session.deleteCookie(G));let t=_.Session.getCookie(G);return t&&s.isValidSession(t,e.role)?t:s.createSession(e.role)}static createSession(e){let t={externalId:e==="agent"?String(s.getUserId()||_.Session.id):_.Session.id,secret:yi(16),createdAt:new Date().toISOString()};return _.Session.setCookie(G,t,3600*24*365),t}static isValidSession(e,t){if(t==="guest")return!0;let i=s.getUserId();return!!(i&&String(i)===e.externalId)}static getUserId(){return _.Session.getCookie("user-id",{objectKey:"userId",storageKey:"user",storageType:"localStorage",ttl:3600*24*365,preserveData:!0})}static updateSessionWithRegistrationData(e){let t=_.Session.getCookie(G);if(t||(t=s.createSession("guest")),t){let i={...t,registrationData:e};_.Session.setCookie(G,i,3600*24*365)}}static hasRegistrationData(){return!!_.Session.getCookie(G)?.registrationData}static async getAgentInfo(e){return fetch(`${e}/api/v1/auth/user-info`,{credentials:"include"}).then(t=>t.json())}static getRegistrationData(){return _.Session.getCookie(G)?.registrationData}};var ji="lk.chat",wi="lk.transcription",Si="lk.events",wt="typing-indicator";var St=class extends Me.Room{},Xe=class{constructor(e){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(e,t)=>{let i=e?.info?.id,o=e.info?.attributes?.["lk.segment_id"];o&&(this.transcriptionMap.has(o)?i=this.transcriptionMap.get(o)||"":this.transcriptionMap.set(o,i));let a=t?.identity?this.room.getParticipantByIdentity(t.identity):void 0,r="";for await(let l of e)r+=l,this.emitMessage({id:i,timestamp:Date.now(),message:r,assets:JSON.parse(e.info?.attributes?.assets||"[]"),from:a});this.messagePersistence==="client"&&this.persistMessage({roomId:this.room.id,content:r,externalId:i,identity:a?.identity,kind:a?.kind})};this.emitMessage=e=>{for(let t of this.listeners)t([e])};this.handleDataReceived=(e,t,i,o)=>{if(o===wt)try{let a=JSON.parse(new TextDecoder().decode(e));if(a.type==="typing"&&a.participantId!==this.room.localParticipant.identity){let r={type:"typing",isTyping:a.isTyping,timestamp:a.timestamp,participantId:a.participantId};this.emitTypingIndicator(r)}}catch(a){console.warn("Failed to parse typing indicator:",a)}};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||ji,this.transcriptionTopic=e.transcriptionTopic||wi,this.eventsTopic=e.eventsTopic||Si,this.messagePersistence=e.messagePersistence||"disabled",this.agentInitialModalities=e.agentInitialModalities,this.agentModalities=e.agentModalities,this.room=this.createRoomInstance(),e.firebaseConfig&&this.initializeFirebase(e.firebaseConfig)}createRoomInstance(){return new St({adaptiveStream:!0,dynacast:!0})}ensureRoom(){return this.room||(this.room=this.createRoomInstance()),this.room}initializeFirebase(e){this.firebaseApi=new Ye({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(Me.RoomEvent.DataReceived,this.handleDataReceived),this.room.registerTextStreamHandler(this.channelTopic,this.handleIncomingMessage),this.room.registerTextStreamHandler(this.transcriptionTopic,this.handleIncomingMessage),this.room.on(Me.RoomEvent.DataReceived,this.handleDataReceived)}async registerUser(e,t,i,o){let a=await h(`${this.apiUrl}/users/register`,{method:"POST",body:JSON.stringify({externalId:e,secret:t,...i,metadata:o}),headers:{"X-Onlive-Organization-Id":this.organizationId,"Content-Type":"application/json"},signal:this.abortControllers.register.signal});if(!a.token)throw new Error("Registration failed: No token received from server");return this.authToken=a.token,a}async registerAgent(e,t){let i=We.Session.getCookie("livekit-agent-token");if(i){if(this.decodeJwtPayload(i)?.username===t.name)return this.authToken=i,i;We.Session.deleteCookie("livekit-agent-token")}let o=await h(`${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 We.Session.setCookie("livekit-agent-token",o.token,1440*60),this.authToken=o.token,o.token}decodeJwtPayload(e){try{let t=e.split(".");if(t.length!==3)return null;let i=t[1],o=atob(i.replace(/-/g,"+").replace(/_/g,"/"));return JSON.parse(o)}catch{return null}}async quickStart(e){let t=e;console.log("[ConversationService] Starting quickStart with options:",t),this.room=this.ensureRoom(),(this.agentInitialModalities||this.agentModalities)&&(t={...t,room:{...t.room,metadata:{...this.agentInitialModalities&&{agentInitialModalities:this.agentInitialModalities},...this.agentModalities&&{agentModalities:this.agentModalities},...t.room.metadata}}});let i=await h(`${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(!i.user?.token)throw new Error("Quick start failed: No user token received from server");this.authToken=i.user.token;let o={id:i.room.id,groupId:i.room.groupId||"",token:i.room.token,wsURL:i.room.wsURL,createdAt:i.room.createdAt||new Date().toISOString(),affinity:i.room.affinity};return this.setRoomMetadata(o),this.setupParticipantAttributesHandler(),this.room.connect(o.wsURL,o.token),this.initializeRoomHandlers(),this.room}async createRoom(e){if(!this.authToken)throw new Error("Cannot create room: No authentication token. Call registerUser() first.");this.room=this.ensureRoom();let{initialMessage:t,...i}=e;(this.agentInitialModalities||this.agentModalities)&&(i.metadata={...this.agentInitialModalities&&{agentInitialModalities:this.agentInitialModalities},...this.agentModalities&&{agentModalities:this.agentModalities},...i.metadata});let o=await h(`${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(o),this.setupParticipantAttributesHandler(),this.room.connect(o.wsURL,o.token).then(async()=>{if(t)try{await this.sendMessage(t)}catch(a){console.error("[ConversationService] Failed to send initial message:",a)}}),this.initializeRoomHandlers(),this.room}async joinRoom(e,t,i,o){let a=await h(`${this.apiUrl}/rooms/${e}/join`,{method:"POST",body:JSON.stringify({timezone:t,language:i,...o??{}}),headers:{Authorization:`Bearer ${this.authToken}`,"X-Onlive-Organization-Id":this.organizationId,"Content-Type":"application/json"},signal:this.abortControllers.createRoom.signal});return this.setRoomMetadata(a),this.setupParticipantAttributesHandler(),await this.room.connect(a.wsURL,a.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(),this.room.affinity=e.affinity}setupParticipantAttributesHandler(){this.room.on(Me.RoomEvent.ParticipantAttributesChanged,e=>{e.identity===this.room.localParticipant.identity&&Qe.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 h(`${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(){this.room&&(await h(`${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 e=this.room?.localParticipant;if(!e)return;await Promise.allSettled([e.setMicrophoneEnabled(!1),e.setCameraEnabled(!1),e.setScreenShareEnabled(!1)]);let t=Array.from(e.trackPublications.values());await Promise.all(t.map(async i=>{let o=i.track;if(o)try{await e.unpublishTrack(o,!0)}catch{o.stop()}}))}async disconnectAndCloseRoom(){await this.closeRoom(),await this.disconnect()}async readRoom(e){return h(`${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()),h(`${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 i=await this.room.localParticipant.sendText(e,{topic:this.channelTopic,attributes:t});this.emitMessage({id:i.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:i.id,identity:this.room.localParticipant?.identity,kind:this.room.localParticipant?.kind})}async persistMessage(e){return h(`${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 h(`${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 h(`${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 h(`${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 h(`${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){if(!(!this.room||this.room.state!=="connected"))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:wt})}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 h(`${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 h(`${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 h(`${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(){if(this.room?.id)return h(`${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:i}=this.getFirebase();return t.onChildChanged(i,(o,a)=>e(o,a))}onPresenceAgentChange(e,t){let{api:i}=this.getFirebase();return i.onValue(this.buildAgentPresencePath(e),(o,a)=>t(o,a))}async createCallRequest(e){let{api:t,callsPath:i}=this.getFirebase(),a=(await h(`${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(`${i}/${a}`,{status:"disconnected"}),a}onNewCallRequest(e){let{api:t,callsPath:i}=this.getFirebase();return t.onChildAdded(i,(o,a)=>e(o,{...a,id:o}))}onCallRequestChange(e){let{api:t,callsPath:i}=this.getFirebase();return t.onChildChanged(i,(o,a)=>e(o,{...a,id:o}))}onCallRequestRemoved(e){let{api:t,callsPath:i}=this.getFirebase();return t.onChildRemoved(i,o=>e(o))}async acceptCallRequest(e){let{api:t,callsPath:i}=this.getFirebase();return await t.cancelOnDisconnect(`${i}/${e}`),t.update(`${i}/${e}`,{status:"accepted"})}async cancelCallRequest(e){let{api:t,callsPath:i}=this.getFirebase();await t.cancelOnDisconnect(`${i}/${e}`),await h(`${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:i}=this.getFirebase();await t.cancelOnDisconnect(`${i}/${e}`)}subscribePendingRequests(e,t={}){let{api:i,callsPath:o}=this.getFirebase();t.resetSeen&&this.seenRequestIds.clear(),this.firebaseUnsubscribers["pending-requests"]?.();let a=i.query(o,{orderBy:"child",childKey:"status",equalTo:"pending"}),r=i.onChildAddedQuery(a,(l,n)=>{if(!l||this.seenRequestIds.has(l))return;let d={...n,id:l};this.seenRequestIds.add(l),e(l,d)});return this.firebaseUnsubscribers["pending-requests"]=r,()=>{r?.(),delete this.firebaseUnsubscribers["pending-requests"]}}subscribeRequestChanges(e){let{api:t,callsPath:i}=this.getFirebase();this.firebaseUnsubscribers["request-changes"]?.();let o=t.onChildChanged(i,(a,r)=>{if(!a)return;let l=JSON.stringify(r);this.lastSnapshotById.get(a)!==l&&(this.lastSnapshotById.set(a,l),e(a,{...r,id:a}))});return this.firebaseUnsubscribers["request-changes"]=o,()=>{o?.(),delete this.firebaseUnsubscribers["request-changes"]}}async tryAcceptRequest(e){let{api:t,callsPath:i}=this.getFirebase(),o=`${i}/${e}`;return await t.transaction(o,r=>r&&(r.status==="pending"?{...r,status:"accepted"}:r)),(await t.getOnce(o))?.status==="accepted"}onRoomSync(e,t){let{api:i}=this.getFirebase(),o=`orgs/${this.organizationId}/rooms/${e}/sync`;return i.onValue(o,(a,r)=>{t(r)})}async clearRoomSync(e,t){let{api:i}=this.getFirebase(),o=`orgs/${this.organizationId}/rooms/${e}/sync`;await i.write(o,{needsSync:!1,reason:t||null,timestamp:Date.now()})}onNewRoomRequest(e,t){let{api:i}=this.getFirebase(),o=`orgs/${this.organizationId}/rooms/${e}/call`;return i.onValue(o,(a,r)=>{t(r)})}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()}};var T=class{constructor(e,t,i,o){this.muted=!1;this.enabled=!0;this.attachedElements=new Set;this.kind=e,this.source=t,this.sid=g("TR"),this.mediaStreamTrack=i,this.mediaCleanup=o}get mediaTrack(){return this.mediaStreamTrack}attach(e){let t=e||document.createElement(this.kind==="video"?"video":"audio");if(this.mediaStreamTrack){let i=new MediaStream([this.mediaStreamTrack]);t.srcObject=i,t.autoplay=!0,this.kind==="video"&&(t.playsInline=!0,t.muted=!0)}return this.attachedElements.add(t),t}detach(e){if(e)return e.srcObject=null,this.attachedElements.delete(e),[e];let t=Array.from(this.attachedElements);for(let i of t)i.srcObject=null;return this.attachedElements.clear(),t}stop(){this.detach(),this.mediaCleanup&&this.mediaCleanup(),this.mediaStreamTrack&&this.mediaStreamTrack.stop(),this.enabled=!1}setMuted(e){this.muted=e,this.mediaStreamTrack&&(this.mediaStreamTrack.enabled=!e)}setEnabled(e){this.enabled=e,this.mediaStreamTrack&&(this.mediaStreamTrack.enabled=e)}},x=class{constructor(e,t){this.subscribed=!0;this.isEnabled=!0;this.track=e,this.trackSid=e.sid,this.trackName=t||`${e.kind}_${e.source}`,this.source=e.source,this.kind=e.kind}get isMuted(){return this.track?.muted??!1}get isSubscribed(){return this.subscribed&&this.track!==null}setSubscribed(e){this.subscribed=e}setEnabled(e){this.isEnabled=e,this.track&&(this.track.enabled=e)}setMuted(e){this.track&&this.track.setMuted(e)}};var Y=class{constructor(e){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=e,this.sid=g("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(e){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"}[e]||e;return this.trackPublications.get(i)}getTrackPublicationBySid(e){for(let t of this.trackPublications.values())if(t.trackSid===e)return t}setAttributes(e){this.attributes={...this.attributes,...e}}async setCameraEnabled(e,t){if(this._cameraEnabled=e,e){let{createSyntheticVideoTrack:o}=await Promise.resolve().then(()=>(ae(),_e)),{track:a,cleanup:r}=o({animation:"avatar",label:this.name||"Local Camera"}),l=new T("video","camera",a,r),n=new x(l,t?.name);return this.trackPublications.set("camera",n),this.videoTrackPublications.set(l.sid,n),this.room.emit("localTrackPublished",n,this),n}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(e,t){if(this._microphoneEnabled=e,e){let{createSyntheticAudioTrack:o}=await Promise.resolve().then(()=>(ae(),_e)),{track:a,cleanup:r}=o({enabled:!1}),l=new T("audio","microphone",a,r),n=new x(l,t?.name);return this.trackPublications.set("microphone",n),this.audioTrackPublications.set(l.sid,n),this.room.emit("localTrackPublished",n,this),n}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(e,t){if(this._screenShareEnabled=e,e){let{createSyntheticVideoTrack:o}=await Promise.resolve().then(()=>(ae(),_e)),{track:a,cleanup:r}=o({animation:"bars",label:"Screen Share",width:1920,height:1080}),l=new T("video","screen_share",a,r),n=new x(l,t?.name||"screen");return this.trackPublications.set("screen_share",n),this.videoTrackPublications.set(l.sid,n),this.room.emit("localTrackPublished",n,this),n}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(e,t){let i=new x(e,t?.name),o=t?.source||e.source;return this.trackPublications.set(o,i),e.kind==="audio"?this.audioTrackPublications.set(e.sid,i):e.kind==="video"&&this.videoTrackPublications.set(e.sid,i),this.room.emit("localTrackPublished",i,this),i}async unpublishTrack(e){e.stop();for(let[t,i]of this.trackPublications)if(i.track===e){this.trackPublications.delete(t),e.kind==="audio"?this.audioTrackPublications.delete(e.sid):e.kind==="video"&&this.videoTrackPublications.delete(e.sid),this.room.emit("localTrackUnpublished",i,this);break}}async sendText(e,t){return{id:g("msg")}}async publishData(e,t){}async setMetadata(e){this.attributes.metadata=e}async setName(e){this.name=e}cleanup(){for(let e of this.trackPublications.values())e.track?.stop();this.trackPublications.clear(),this.audioTrackPublications.clear(),this.videoTrackPublications.clear(),this._cameraEnabled=!1,this._microphoneEnabled=!1,this._screenShareEnabled=!1}};function Fi(s){switch(s){case"standard":return 0;case"ingress":return 1;case"egress":return 2;case"sip":return 3;case"agent":return 4;default:return 0}}var L=class{constructor(e,t,i={},o="standard"){this.connectionQuality="excellent";this.isSpeaking=!1;this.audioLevel=0;this.trackPublications=new Map;this.identity=e,this.sid=g("PA"),this.name=t,this.attributes=i,this._kindString=o,this.kind=Fi(o),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 e=this.getTrackPublication("camera");return!!(e?.track&&!e.isMuted)}get isMicrophoneEnabled(){let e=this.getTrackPublication("microphone");return!!(e?.track&&!e.isMuted)}getTrackPublication(e){for(let t of this.trackPublications.values())if(t.source===e)return t}getTrackPublicationBySid(e){return this.trackPublications.get(e)}getTrackPublications(){return Array.from(this.trackPublications.values())}getAudioTracks(){return this.getTrackPublications().filter(e=>e.kind==="audio")}getVideoTracks(){return this.getTrackPublications().filter(e=>e.kind==="video")}addTrackPublication(e){this.trackPublications.set(e.trackSid,e)}removeTrackPublication(e){let t=this.trackPublications.get(e);return t&&(this.trackPublications.delete(e),t.track?.stop()),t}setAttributes(e){this.attributes={...this.attributes,...e}}getAttribute(e){return this.attributes[e]}startSpeaking(e=.5){this.isSpeaking=!0,this.audioLevel=e}stopSpeaking(){this.isSpeaking=!1,this.audioLevel=0}setConnectionQuality(e){this.connectionQuality=e}cleanup(){for(let e of this.trackPublications.values())e.track?.stop();this.trackPublications.clear()}};var D=class{constructor(e){this.remoteParticipants=new Map;this._state="disconnected";this.eventHandlers=new Map;this.textStreamHandlers=new Map;this.rpcHandlers=new Map;this.mockService=e,this.localParticipant=new Y(this),this.sid=g("RM")}get state(){return this._state}set state(e){let t=this._state;this._state=e,t!==e&&this.emit("connectionStateChanged",e,t)}get numParticipants(){return this.remoteParticipants.size+1}get isConnected(){return this._state==="connected"}async connect(e,t){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 t of this.remoteParticipants.values())t.cleanup();this.remoteParticipants.clear(),this.localParticipant.cleanup();let e=this._state;this._state="disconnected",this.emit("connectionStateChanged","disconnected",e),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(e,t){return this.eventHandlers.has(e)||this.eventHandlers.set(e,new Set),this.eventHandlers.get(e).add(t),this}once(e,t){let i=(...o)=>{this.off(e,i),t(...o)};return this.on(e,i)}off(e,t){return this.eventHandlers.get(e)?.delete(t),this}removeAllListeners(){this.eventHandlers.clear()}emit(e,...t){let i=this.eventHandlers.get(e);if(i)for(let o of i)try{o(...t)}catch(a){console.error(`Error in mock room event handler for ${e}:`,a)}}registerRpcMethod(e,t){this.rpcHandlers.set(e,t)}unregisterRpcMethod(e){this.rpcHandlers.delete(e)}async callRpc(e,t,i,o=1e4){let a=this.rpcHandlers.get(e);if(!a)throw new Error(`RPC method not found: ${e}`);return a({callerIdentity:t,payload:i,responseTimeout:o})}registerTextStreamHandler(e,t){this.textStreamHandlers.set(e,t)}unregisterTextStreamHandler(e){this.textStreamHandlers.delete(e)}simulateTextStream(e,t){let i=this.textStreamHandlers.get(e);i&&i(t,{identity:t.participantIdentity})}getParticipantByIdentity(e){return e===this.localParticipant.identity?new L(this.localParticipant.identity,this.localParticipant.name,this.localParticipant.attributes):this.remoteParticipants.get(e)}getParticipantBySid(e){if(e===this.localParticipant.sid)return new L(this.localParticipant.identity,this.localParticipant.name,this.localParticipant.attributes);for(let t of this.remoteParticipants.values())if(t.sid===e)return t}async simulateParticipantJoin(e,t){let i=new L(e,t?.name,t?.attributes||{},t?.kind||"standard");return this.remoteParticipants.set(e,i),this.emit("participantConnected",i),t?.withCamera&&await this.simulateRemoteTrack(e,"video","camera"),t?.withMicrophone&&await this.simulateRemoteTrack(e,"audio","microphone"),i}simulateParticipantLeave(e){let t=this.remoteParticipants.get(e);if(t){for(let i of t.getTrackPublications())i.track?.stop(),this.emit("trackUnsubscribed",i.track,i,t);this.remoteParticipants.delete(e),this.emit("participantDisconnected",t)}}async simulateRemoteTrack(e,t,i){let o=this.remoteParticipants.get(e);if(!o)return;let a,r;if(t==="video"){let{createSyntheticVideoTrack:d}=await Promise.resolve().then(()=>(ae(),_e)),m=d({animation:o.isAgent?"avatar":"pulse",label:o.name||e,foregroundColor:o.isAgent?"#22c55e":"#4361ee"});a=m.track,r=m.cleanup}else if(t==="audio"){let{createSyntheticAudioTrack:d}=await Promise.resolve().then(()=>(ae(),_e)),m=d({enabled:!1});a=m.track,r=m.cleanup}let l=new T(t,i,a,r),n=new x(l);return o.addTrackPublication(n),this.emit("trackSubscribed",l,n,o),this.emit("trackPublished",n,o),l}simulateTrackUnpublished(e,t){let i=this.remoteParticipants.get(e);if(!i)return;let o=i.getTrackPublication(t);o&&(i.removeTrackPublication(o.trackSid),this.emit("trackUnpublished",o,i),this.emit("trackUnsubscribed",o.track,o,i))}async simulateAgentJoin(e,t="AI Agent"){return this.simulateParticipantJoin(e,{name:t,kind:"agent",withCamera:!0,withMicrophone:!0,attributes:{"lk.agent.name":t,"lk.agent.state":"active"}})}simulateAttributeChange(e,t){let i=this.remoteParticipants.get(e);if(i){let o={...i.attributes};i.setAttributes(t),this.emit("participantAttributesChanged",t,o,i)}}simulateTrackMuted(e,t,i){let o=this.remoteParticipants.get(e);if(!o)return;let a=o.getTrackPublication(t);a?.track&&(a.track.setMuted(i),this.emit(i?"trackMuted":"trackUnmuted",a,o))}simulateActiveSpeakersChanged(e){let t=[];for(let i of e){let o=this.remoteParticipants.get(i);o&&(o.startSpeaking(),t.push(o))}this.emit("activeSpeakersChanged",t)}simulateDataReceived(e,t,i,o){let a=this.remoteParticipants.get(t);this.emit("dataReceived",e,a,i,o)}};var re=class{constructor(e={}){this.rooms=new Map;this.participants=new Map;this.tracks=new Map;this.agents=new Map;this.messages=new Map;this.config=e,this.randomState=e.seed??Date.now()}updateConfig(e){this.config={...this.config,...e},e.seed!==void 0&&(this.randomState=e.seed)}getConfig(){return{...this.config}}random(){return this.randomState=(this.randomState*1103515245+12345)%2147483648,this.randomState/2147483648}createRoom(e,t,i){let o=g("room"),a=new Date().toISOString(),r={id:o,name:e,groupId:t||g("group"),createdAt:a,metadata:i,isActive:!0,participantIds:[],connectionState:"disconnected",wsURL:ie(o),token:E(o,"pending",a)};return this.rooms.set(o,r),this.messages.set(o,[]),r}getRoom(e){return this.rooms.get(e)}getRoomByName(e){for(let t of this.rooms.values())if(t.name===e)return t}listRooms(e=!1){let t=Array.from(this.rooms.values());return e?t.filter(i=>i.isActive):t}updateRoomConnectionState(e,t){let i=this.rooms.get(e);if(!i)return;let o=i.connectionState;return i.connectionState=t,o}endRoom(e){let t=this.rooms.get(e);if(!t||!t.isActive)return!1;t.isActive=!1,t.endedAt=new Date().toISOString(),t.connectionState="disconnected";for(let i of t.participantIds){let o=this.participants.get(i);o&&(o.isConnected=!1)}for(let i of this.agents.values())i.roomId===e&&i.status==="running"&&(i.status="stopped",i.stoppedAt=new Date().toISOString());return!0}deleteRoom(e){let t=this.rooms.get(e);if(!t)return!1;for(let i of t.participantIds)this.participants.delete(i);for(let[i,o]of this.tracks)o.roomId===e&&this.tracks.delete(i);for(let[i,o]of this.agents)o.roomId===e&&this.agents.delete(i);return this.messages.delete(e),this.rooms.delete(e),!0}addParticipant(e,t,i,o="user",a="standard",r=!1){let l=this.rooms.get(e);if(!l)return this.createError("ROOM_NOT_FOUND",`Room ${e} not found`);if(!l.isActive)return this.createError("ROOM_ENDED",`Room ${e} has ended`);let n=this.participants.get(t);if(n&&n.roomId===e&&n.isConnected)return this.config.strictMode?this.createError("PARTICIPANT_ALREADY_JOINED",`Participant ${t} is already in room ${e}`):n;let d={identity:t,name:i||t,roomId:e,joinedAt:new Date().toISOString(),isConnected:!0,trackIds:[],role:o,attributes:{},kind:a,isLocal:r};return this.participants.set(t,d),l.participantIds.push(t),d}getParticipant(e){return this.participants.get(e)}listParticipants(e,t=!0){let i=this.rooms.get(e);if(!i)return[];let o=[];for(let a of i.participantIds){let r=this.participants.get(a);r&&(!t||r.isConnected)&&o.push(r)}return o}updateParticipantAttributes(e,t){let i=this.participants.get(e);if(!i)return;let o={...i.attributes};return i.attributes={...i.attributes,...t},o}removeParticipant(e){let t=this.participants.get(e);if(!t)return;t.isConnected=!1;for(let o of t.trackIds)this.tracks.delete(o);t.trackIds=[];let i=this.rooms.get(t.roomId);if(i){let o=i.participantIds.indexOf(e);o!==-1&&i.participantIds.splice(o,1)}return t}publishTrack(e,t,i="unknown",o){let a=this.participants.get(e);if(!a)return this.createError("PARTICIPANT_NOT_FOUND",`Participant ${e} not found`);if(!a.isConnected)return this.createError("INVALID_OPERATION",`Participant ${e} is not connected`);let r=this.rooms.get(a.roomId);if(!r||!r.isActive)return this.createError("ROOM_ENDED","Room is not active");let l=g("track"),n={id:l,kind:t,source:i,participantIdentity:e,roomId:a.roomId,publishedAt:new Date().toISOString(),muted:!1,metadata:o};return this.tracks.set(l,n),a.trackIds.push(l),n}getTrack(e){return this.tracks.get(e)}listTracks(e,t){let i=[];for(let o of this.tracks.values())e&&o.roomId!==e||t&&o.participantIdentity!==t||i.push(o);return i}unpublishTrack(e){let t=this.tracks.get(e);if(!t)return;let i=this.participants.get(t.participantIdentity);if(i){let o=i.trackIds.indexOf(e);o!==-1&&i.trackIds.splice(o,1)}return this.tracks.delete(e),t}setTrackMuted(e,t){let i=this.tracks.get(e);return i?(i.muted=t,!0):!1}startAgent(e,t,i={}){let o=this.rooms.get(e);if(!o)return this.createError("ROOM_NOT_FOUND",`Room ${e} not found`);if(!o.isActive)return this.createError("ROOM_ENDED",`Room ${e} has ended`);let a=g("agent"),r={id:a,roomId:e,name:t,status:"running",startedAt:new Date().toISOString(),config:{responseStrategy:"echo",...i},messageHistory:[]};return this.agents.set(a,r),this.addParticipant(e,`agent_${a}`,t,"agent","agent",!1),r}getAgent(e){return this.agents.get(e)}listAgents(e){let t=[];for(let i of this.agents.values())i.roomId===e&&t.push(i);return t}stopAgent(e){let t=this.agents.get(e);if(t)return t.status="stopped",t.stoppedAt=new Date().toISOString(),this.removeParticipant(`agent_${e}`),t}updateAgentStatus(e,t){let i=this.agents.get(e);return i?(i.status=t,t==="stopped"&&(i.stoppedAt=new Date().toISOString()),!0):!1}addAgentMessage(e,t,i){let o=this.agents.get(e);if(!o)return;let a={id:g("msg"),content:t,role:i,timestamp:new Date().toISOString()};return o.messageHistory.push(a),a}addMessage(e,t,i,o="standard",a){if(!this.rooms.get(e))return this.createError("ROOM_NOT_FOUND",`Room ${e} not found`);let l={id:g("msg"),roomId:e,content:i,participantIdentity:t,createdAt:new Date().toISOString(),type:o,attributes:a},n=this.messages.get(e)||[];return n.push(l),this.messages.set(e,n),l}getMessages(e,t){let i=this.messages.get(e)||[];return t?i.slice(-t):i}createError(e,t,i){return{code:e,message:t,details:i}}isError(e){return typeof e=="object"&&e!==null&&"code"in e&&"message"in e}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(e){this.rooms=new Map(Object.entries(e.rooms)),this.participants=new Map(Object.entries(e.participants)),this.tracks=new Map(Object.entries(e.tracks)),this.agents=new Map(Object.entries(e.agents)),this.messages=new Map(Object.entries(e.messages).map(([t,i])=>[t,i])),this.config=e.config}};var F=class{constructor(e={}){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:e.latencyMs??0,strictMode:e.strictMode??!1,seed:e.seed,scenario:e.scenario,errorConfig:e.errorConfig,autoEmitEvents:e.autoEmitEvents??!0,organizationId:e.organizationId??"mock_org",apiUrl:e.apiUrl??"https://mock-livekit.local"},this.state=new re(this.config),this.events=new se,this.room=new D(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(e){this.config={...this.config,...e},this.state.updateConfig(e)}getConfig(){return{...this.config}}async simulateLatency(){this.config.latencyMs&&this.config.latencyMs>0&&await new Promise(e=>setTimeout(e,this.config.latencyMs))}applyScenario(e){switch(e){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 D(this)),this.room}async registerUser(e,t,i,o){if(await this.simulateLatency(),this.config.errorConfig?.unauthorized)throw new b("UNAUTHORIZED","Registration failed");let a={id:g("user"),externalId:e,organizationId:this.config.organizationId,role:"user",token:E("pending",e,new Date().toISOString())};return this._authToken=a.token,this._registeredUser=a,this.room.localParticipant.identity=e,this.room.localParticipant.name=i?.name||e,a}async registerAgent(e,t){if(await this.simulateLatency(),this.config.errorConfig?.unauthorized)throw new b("UNAUTHORIZED","Agent registration failed");let i=E("agent",e,new Date().toISOString());return this._authToken=i,this.room.localParticipant.identity=e,this.room.localParticipant.name=t.name,i}async quickStart(e){let{externalId:t,secret:i,metadata:o,...a}=e.user;return await this.registerUser(t,i,a,o),this.createRoom({language:e.room.language,timezone:e.room.timezone,affinity:e.room.affinity,metadata:e.room.metadata,disablePersistence:e.room.disablePersistence,contextualEvents:e.room.contextualEvents,userGroupId:e.room.userGroupId??void 0})}async createRoom(e,t={}){if(await this.simulateLatency(),this.config.errorConfig?.networkError||this.shouldThrowError())throw new b("NETWORK_ERROR","Failed to create room");let i=this.state.createRoom(`room_${Date.now()}`,e.affinity?.agentId,e.metadata);this.room.id=i.id,this.room.groupId=i.groupId,this.room.createdAt=i.createdAt,this.room.connectedAt=new Date().toISOString();let o=this.room.localParticipant.identity||"local_user";return this.state.addParticipant(i.id,o,this.room.localParticipant.name,"user","standard",!0),Object.keys(t).length>0&&(this.state.updateParticipantAttributes(o,t),this.room.localParticipant.setAttributes(t)),this.state.updateRoomConnectionState(i.id,"connected"),this.config.autoEmitEvents&&(this.events.emitRoomCreated(i),this.events.emitRoomConnectionStateChanged(i.id,"connected","disconnected")),(e.affinity?.agentId||e.affinity?.agentType)&&await this.startMockAgent(i.id,{type:e.affinity?.agentType,nature:e.affinity?.nature??"ai"}),await this.room.connect(i.wsURL,i.token),this.room}async joinRoom(e,t,i,o){await this.simulateLatency();let a=this.state.getRoom(e);if(!a)throw new z(e);if(!a.isActive)throw new b("ROOM_ENDED",`Room ${e} has ended`);this.room.id=a.id,this.room.groupId=a.groupId,this.room.createdAt=a.createdAt,this.room.connectedAt=new Date().toISOString();let r=this.room.localParticipant.identity||"local_user",l=this.state.addParticipant(e,r,this.room.localParticipant.name,"user","standard",!0);if(O(l))throw oe(l);if(o){let n={};for(let[d,m]of Object.entries(o))n[d]=String(m);this.state.updateParticipantAttributes(r,n)}return this.state.updateRoomConnectionState(e,"connected"),this.config.autoEmitEvents&&(this.events.emitParticipantJoined(e,l),this.events.emitRoomConnectionStateChanged(e,"connected","disconnected")),await this.room.connect(a.wsURL,a.token),this.room}async evaluateRoom(e){await this.simulateLatency();let t=e.roomId||this.room?.id;if(!t)throw new b("ROOM_NOT_FOUND","No room to evaluate");let i=this.state.getRoom(t);if(!i)throw new z(t);i.metadata||(i.metadata={}),i.metadata.evaluation={rating:e.rating,comment:e.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 e=this.room.id,t=this.room.localParticipant.identity;await this.stopLocalTracks(),this.state.removeParticipant(t),this.config.autoEmitEvents&&e&&this.events.emitParticipantLeft(e,t),this.room.removeAllListeners(),await this.room.disconnect()}}async stopLocalTracks(){let e=this.room?.localParticipant;e&&await Promise.all([e.setCameraEnabled(!1),e.setMicrophoneEnabled(!1),e.setScreenShareEnabled(!1)])}async disconnectAndCloseRoom(){await this.closeRoom(),await this.disconnect()}async readRoom(e){await this.simulateLatency();let t=this.state.getRoom(e);if(!t)throw new z(e);t.metadata||(t.metadata={}),t.metadata.lastReadAt=new Date().toISOString()}async getRooms(e){await this.simulateLatency();let t=this.state.listRooms();e.roomStatus==="active"?t=t.filter(l=>l.isActive):e.roomStatus==="closed"&&(t=t.filter(l=>!l.isActive)),e.ids?.length&&(t=t.filter(l=>e.ids.includes(l.id))),e.groupId&&(t=t.filter(l=>l.groupId===e.groupId));let i=e.offset??0,o=e.limit??20;return{items:t.slice(i,i+o).map(l=>({id:l.id,name:l.name,groupId:l.groupId,organizationId:this.config.organizationId,endedAt:l.endedAt??null,createdAt:l.createdAt,updatedAt:l.createdAt,status:l.isActive?"active":"ended",participants:this.state.listParticipants(l.id).map(n=>({id:n.identity,name:n.name||n.identity,role:n.role,isLocal:n.isLocal})),evaluations:[],_count:{messages:this.state.getMessages(l.id).length,participants:l.participantIds.length}})),count:t.length,limit:o,offset:i}}async sendMessage(e,t){if(await this.simulateLatency(),!this.room?.id)throw new b("INVALID_OPERATION","Not connected to a room");let i=this.state.addMessage(this.room.id,this.room.localParticipant.identity,e,"standard",t);if(O(i))throw oe(i);let o={id:i.id,timestamp:Date.now(),message:e,content:e,createdAt:i.createdAt,from:{identity:this.room.localParticipant.identity,name:this.room.localParticipant.name,id:this.room.localParticipant.identity,role:"user"}};for(let a of this.messageListeners)a([o]);this.config.autoEmitEvents&&this.events.emitMessageSent(this.room.id,i);for(let a of this.agents.values())a.isRunning&&a.roomId===this.room.id&&this.triggerAgentResponse(a,e)}async persistMessage(e){await this.simulateLatency();let t=this.state.addMessage(e.roomId,e.identity||"system",e.content);if(O(t))throw oe(t);return{items:[{id:t.id,timestamp:Date.now(),message:t.content,content:t.content,createdAt:t.createdAt}],count:1,limit:1,offset:0}}async getMessages(e){await this.simulateLatency();let t=e.roomId||this.room?.id;return t?this.state.getMessages(t,e.limit).map(o=>({id:o.id,timestamp:Date.parse(o.createdAt),message:o.content,content:o.content,createdAt:o.createdAt,from:{identity:o.participantIdentity,id:o.participantIdentity,role:"user"}})):[]}async sendMessageReport(e){await this.simulateLatency()}async deleteMessageReport(e){await this.simulateLatency()}async updateMessageReactions(e){await this.simulateLatency()}subscribeMessages(e){return this.messageListeners.add(e),()=>{this.messageListeners.delete(e)}}async sendTypingIndicator(e){if(!this.room?.id)return;let t={type:"typing",isTyping:e,timestamp:Date.now(),participantId:this.room.localParticipant.identity};for(let i of this.typingListeners)i(t);this.config.autoEmitEvents&&this.events.emitTypingIndicator(this.room.id,this.room.localParticipant.identity,e)}subscribeTypingIndicators(e){return this.typingListeners.add(e),()=>this.typingListeners.delete(e)}unsubscribeTypingIndicators(e){this.typingListeners.delete(e)}async sendContextualEvent(e){await this.simulateLatency()}async requestNewRoom(e){await this.simulateLatency();let t=this.state.createRoom(`transfer_${Date.now()}`,void 0,{originRoom:e.originRoom});return{id:t.id,groupId:t.groupId,token:t.token,wsURL:t.wsURL,createdAt:t.createdAt}}async confirmRoomRequest(e){return await this.simulateLatency(),{success:!0,message:"Request confirmed",roomId:e}}async cancelRoomRequest(e){return await this.simulateLatency(),{success:!0,message:"Request cancelled",roomId:e}}async finishCall(){await this.simulateLatency(),this.room?.id&&this.state.endRoom(this.room.id)}isFirebaseEnabled(){return!0}onPresenceChange(e){return()=>{}}onPresenceAgentChange(e,t){return()=>{}}async createCallRequest(e){return await this.simulateLatency(),g("call")}onNewCallRequest(e){return this.callRequestListeners.has("new")||this.callRequestListeners.set("new",new Set),this.callRequestListeners.get("new").add(e),()=>this.callRequestListeners.get("new")?.delete(e)}onCallRequestChange(e){return this.callRequestListeners.has("change")||this.callRequestListeners.set("change",new Set),this.callRequestListeners.get("change").add(e),()=>this.callRequestListeners.get("change")?.delete(e)}onCallRequestRemoved(e){return()=>{}}async acceptCallRequest(e){await this.simulateLatency()}async cancelCallRequest(e){await this.simulateLatency()}async cancelOnDisconnect(e){await this.simulateLatency()}subscribePendingRequests(e,t={}){return()=>{}}subscribeRequestChanges(e){return()=>{}}async tryAcceptRequest(e){return await this.simulateLatency(),!0}onRoomSync(e,t){return()=>{}}async clearRoomSync(e,t){await this.simulateLatency()}onNewRoomRequest(e,t){return()=>{}}unsubscribeAllFirebase(){this.callRequestListeners.clear()}async destroy(){this.unsubscribeAllFirebase(),this.messageListeners.clear(),this.typingListeners.clear(),await this.disconnect(),this.state.reset()}async startMockAgent(e,t){let i=t?.name||"AI Assistant",o=new ge(g("agent"),i,{responseStrategy:t?.responseStrategy||"echo",responseDelayMs:t?.responseDelayMs||100,cannedResponses:t?.cannedResponses||[],type:t?.type,nature:t?.nature});await o.start(e),this.agents.set(o.id,o),this.customAgentHandler&&o.setCustomHandler((d,m)=>this.customAgentHandler(d,m));let a=t?.type,r=Array.isArray(a)?a:[a].filter(Boolean),l=r.includes("video"),n=r.includes("voice");return(l||n)&&this.room.isConnected&&await this.room.simulateParticipantJoin(o.id,{name:i,kind:"agent",withCamera:l,withMicrophone:n||l,attributes:{"lk.agent.name":i,"lk.agent.state":"active",role:"agent"}}),this.config.autoEmitEvents&&this.events.emitAgentStarted(e,{id:o.id,name:o.name,roomId:e,status:"running",config:o.getConfig(),startedAt:new Date().toISOString(),messageHistory:[]}),o.id}async stopMockAgent(e){let t=this.agents.get(e);if(t){let i=t.roomId;await t.stop(),this.agents.delete(e),this.config.autoEmitEvents&&i&&this.events.emitAgentStopped(i,e)}}setAgentResponseHandler(e){this.customAgentHandler=e;for(let t of this.agents.values())t.setCustomHandler((i,o)=>e(i,o))}async triggerAgentResponse(e,t){if(this.config.scenario!=="agent_timeout")try{let i=await e.processMessage(t);if(!i)return;let o=this.state.addMessage(e.roomId,`agent_${e.id}`,i);if(!O(o)){let a={id:o.id,timestamp:Date.now(),message:i,content:i,createdAt:o.createdAt,from:{identity:`agent_${e.id}`,name:e.name,id:e.id,role:"agent"}};for(let r of this.messageListeners)r([a]);this.config.autoEmitEvents&&this.events.emitMessageReceived(e.roomId,o)}}catch(i){console.error("Agent response error:",i)}}simulateCallRequest(e){let t={id:g("call"),guestId:e.guestId||"guest_user",name:e.name||"Guest User",createdAt:new Date().toISOString(),status:e.status||"pending",...e},i=this.callRequestListeners.get("new");if(i)for(let o of i)o(t.id,t)}simulateParticipantJoin(e,t,i="user"){if(!this.room?.id)return;let o=this.state.addParticipant(this.room.id,e,t,i,"standard",!1);!O(o)&&this.config.autoEmitEvents&&this.events.emitParticipantJoined(this.room.id,o)}simulateParticipantLeave(e){if(!this.room?.id)return;this.state.removeParticipant(e)&&this.config.autoEmitEvents&&this.events.emitParticipantLeft(this.room.id,e)}simulateIncomingMessage(e,t){if(!this.room?.id)return;let i=this.state.addMessage(this.room.id,e,t);if(O(i))return;let o={id:i.id,timestamp:Date.now(),message:t,content:t,createdAt:i.createdAt,from:{identity:e,id:e,role:"user"}};for(let a of this.messageListeners)a([o]);this.config.autoEmitEvents&&this.events.emitMessageReceived(this.room.id,i)}async simulateDisconnect(){if(!this.room?.id)return;let e=this.room.state;this.room.state="disconnected",this.config.autoEmitEvents&&this.events.emitRoomConnectionStateChanged(this.room.id,"disconnected",e),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 D(this),Re()}seed(e){this.config.seed=e,this.state.updateConfig({seed:e})}setScenario(e){this.config.scenario=e,this.applyScenario(e)}exportState(){return{...this.state.toJSON(),eventHistory:this.events.getHistory()}}getEventHistory(e){return this.events.getHistory(e)}};var tt={},q={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 et(){let s=N(q.MODE);if(s==="mock"||s==="real")return s;let e=N(q.USE_MOCK);return e==="true"||e==="1"||qi()?"mock":"real"}function Ui(){let s={},e=N(q.MOCK_LATENCY);e&&(s.latencyMs=parseInt(e,10));let t=N(q.MOCK_STRICT);(t==="true"||t==="1")&&(s.strictMode=!0);let i=N(q.MOCK_SCENARIO);i&&(s.scenario=i);let o=N(q.MOCK_SEED);return o&&(s.seed=parseInt(o,10)),s}function $i(){let s={},e=N(q.API_URL);e&&(s.apiUrl=e);let t=N(q.AUTH_URL);t&&(s.authUrl=t);let i=N(q.ORG_ID);return i&&(s.organizationId=i),s}function N(s){if(typeof process<"u"&&process.env)return process.env[s];if(typeof tt<"u"&&tt.env)return tt.env[`VITE_${s}`]||tt.env[s];if(typeof window<"u"&&window.__ENV__)return window.__ENV__[s]}function qi(){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 H=class s{static create(e){if((e.mode??et())==="mock"){let i={...Ui(),...e.mockConfig,organizationId:e.organizationId,apiUrl:e.apiUrl};return new F(i)}if(!e.organizationId||!e.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 Xe(e)}static createFromEnv(e){let t=e?.mode??et(),i=$i();return s.create({...i,...e,mode:t})}static createMock(e){return new F({organizationId:"mock_org",apiUrl:"https://mock-livekit.local",...e})}static createDeterministicMock(e=12345){return new F({organizationId:"mock_org",apiUrl:"https://mock-livekit.local",seed:e,strictMode:!0})}static getCurrentMode(){return et()}static isMockMode(){return et()==="mock"}static isMockService(e){return e instanceof F}};function Mt(s){return H.createFromEnv(s)}function Le(s){return H.createMock(s)}function De(s){let e=s?.id??g("room"),t=new Date().toISOString();return{id:e,name:`Test Room ${e}`,groupId:g("group"),createdAt:t,isActive:!0,participantIds:[],connectionState:"connected",wsURL:ie(e),token:E(e,"local_user",t),...s}}function Fe(s="local_user",e){let t=De(e);t.participantIds.push(s);let i={identity:s,name:"Local User",roomId:t.id,joinedAt:new Date().toISOString(),isConnected:!0,trackIds:[],role:"user",attributes:{},kind:"standard",isLocal:!0};return{room:t,localParticipant:i}}function it(s){let e=De(s),t=new Date().toISOString(),i={identity:"user_1",name:"User One",roomId:e.id,joinedAt:t,isConnected:!0,trackIds:[],role:"user",attributes:{},kind:"standard",isLocal:!0},o={identity:"user_2",name:"User Two",roomId:e.id,joinedAt:t,isConnected:!0,trackIds:[],role:"user",attributes:{},kind:"standard",isLocal:!1};return e.participantIds.push(i.identity,o.identity),{room:e,participant1:i,participant2:o}}function Ue(s,e){let{room:t,localParticipant:i}=Fe("local_user",e),o=new Date().toISOString(),a=g("agent"),r={id:a,roomId:t.id,name:"AI Assistant",status:"running",startedAt:o,config:{responseStrategy:"echo",nature:"ai",...s},messageHistory:[]},l={identity:`agent_${a}`,name:"AI Assistant",roomId:t.id,joinedAt:o,isConnected:!0,trackIds:[],role:"agent",attributes:{},kind:"agent",isLocal:!1};return t.participantIds.push(l.identity),{room:t,localParticipant:i,agent:r,agentParticipant:l}}function _t(s){let{room:e,localParticipant:t,agent:i,agentParticipant:o}=Ue(void 0,s),a={id:g("track"),kind:"data",source:"unknown",participantIdentity:o.identity,roomId:e.id,publishedAt:new Date().toISOString(),muted:!1};return o.trackIds.push(a.id),{room:e,localParticipant:t,agent:i,dataTrack:a}}function xt(s){let{room:e,localParticipant:t}=Fe("local_user",s),i=new Date().toISOString(),o={id:g("track"),kind:"audio",source:"microphone",participantIdentity:t.identity,roomId:e.id,publishedAt:i,muted:!1},a={id:g("track"),kind:"video",source:"camera",participantIdentity:t.identity,roomId:e.id,publishedAt:i,muted:!1};return t.trackIds.push(o.id,a.id),{room:e,participant:t,audioTrack:o,videoTrack:a}}function ot(s,e){let t=e?.identity??g("participant");return{identity:t,name:`Participant ${t}`,roomId:s,joinedAt:new Date().toISOString(),isConnected:!0,trackIds:[],role:"user",attributes:{},kind:"standard",isLocal:!1,...e}}function At(s,e){let t=[];for(let i=0;i<e;i++)t.push(ot(s,{identity:`participant_${i+1}`,name:`Participant ${i+1}`,isLocal:i===0}));return t}function $e(s,e){return{id:e?.id??g("agent"),roomId:s,name:"AI Assistant",status:"running",startedAt:new Date().toISOString(),config:{responseStrategy:"echo",nature:"ai",...e?.config},messageHistory:[],...e}}function Ct(s,e){return $e(s,{config:{responseStrategy:"canned",cannedResponses:e}})}function Tt(s,e){return $e(s,{config:{responseStrategy:"sequential",cannedResponses:e}})}function Pt(s,e,t){return{id:g("msg"),roomId:s,content:"Test message",participantIdentity:e,createdAt:new Date().toISOString(),type:"standard",...t}}function st(s,e){return e.map((t,i)=>({id:g("msg"),roomId:s,content:t.content,participantIdentity:t.identity,createdAt:new Date(Date.now()+i*1e3).toISOString(),type:"standard"}))}function xe(s){return{latencyMs:0,strictMode:!1,autoEmitEvents:!0,organizationId:"test_org",apiUrl:"https://mock-api.local",...s}}function Rt(s){return xe({strictMode:!0,...s})}function It(s,e){return xe({latencyMs:s,...e})}function Et(s,e){return xe({seed:s,...e})}function zt(){let{room:s,localParticipant:e,agent:t,agentParticipant:i}=Ue(),o=st(s.id,[{identity:e.identity,content:"Hello, I need help"},{identity:i.identity,content:"Hi! How can I assist you today?"},{identity:e.identity,content:"I have a question about my order"},{identity:i.identity,content:"Of course! Please provide your order number."}]);return{room:s,user:e,agent:t,agentParticipant:i,messages:o}}function Ot(){let{room:s,participant1:e,participant2:t}=it(),i=new Date().toISOString(),o=[{id:g("track"),kind:"audio",source:"microphone",participantIdentity:e.identity,roomId:s.id,publishedAt:i,muted:!1},{id:g("track"),kind:"video",source:"camera",participantIdentity:e.identity,roomId:s.id,publishedAt:i,muted:!1},{id:g("track"),kind:"audio",source:"microphone",participantIdentity:t.identity,roomId:s.id,publishedAt:i,muted:!1},{id:g("track"),kind:"video",source:"camera",participantIdentity:t.identity,roomId:s.id,publishedAt:i,muted:!1}];return e.trackIds.push(o[0].id,o[1].id),t.trackIds.push(o[2].id,o[3].id),{room:s,participant1:e,participant2:t,tracks:o}}var Ae=class{constructor(e,t,i,o,a){this.index=0;this._complete=!1;this.info={id:e,attributes:o,topic:a,timestamp:Date.now()},this.participantIdentity=t,this.topic=a,this.chunks=Array.isArray(i)?i:[i],this.info.totalSize=this.chunks.reduce((r,l)=>r+l.length,0)}get isComplete(){return this._complete}async*[Symbol.asyncIterator](){for(let e of this.chunks)yield e;this._complete=!0}async read(){return this.index>=this.chunks.length?(this._complete=!0,null):this.chunks[this.index++]}async readAll(){let e=this.chunks.slice(this.index).join("");return this.index=this.chunks.length,this._complete=!0,e}cancel(){this._complete=!0}};ae();var Q=null;function y(s){return Q||(Q=Le({organizationId:"storybook_org",apiUrl:"https://storybook.mock",latencyMs:50,autoEmitEvents:!0,...s})),Q}function at(){Q&&Q.reset()}async function Lt(){Q&&(await Q.destroy(),Q=null)}function Dt(s={}){return(e,t)=>{at();let i={default:void 0,slow_network:"slow_network",unreliable:"unreliable",agent_timeout:"agent_timeout"},o=y({organizationId:s.organizationId,latencyMs:s.latencyMs??50,scenario:s.scenario?i[s.scenario]:void 0});return(async()=>{try{if(s.autoRegisterUser&&await o.registerUser(s.autoRegisterUser.identity,s.autoRegisterUser.secret||"storybook_secret",{name:s.autoRegisterUser.name||"Storybook User"}),s.autoCreateRoom){if(await o.createRoom({language:s.autoCreateRoom.language||"en",timezone:s.autoCreateRoom.timezone||"UTC"}),s.seedMessages)for(let a of s.seedMessages)o.simulateIncomingMessage(a.from,a.content);s.autoStartAgent&&o.room?.id&&await o.startMockAgent(o.room.id,s.autoStartAgent)}}catch(a){console.error("[Storybook Mock] Setup error:",a)}})(),window.__mockConversationService=o,e()}}function Ft(s){return H.isMockService(s)}var Ut={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 $t(s){return()=>y(s)}var rt={async receiveMessage(s,e){y().simulateIncomingMessage(s,e)},simulateJoin(s,e){y().simulateParticipantJoin(s,e)},simulateLeave(s){y().simulateParticipantLeave(s)},async simulateVideoParticipant(s,e,t){let o=y().room;o&&await o.simulateParticipantJoin(s,{name:e||s,kind:"standard",withCamera:t?.withCamera??!0,withMicrophone:t?.withMicrophone??!0})},async simulateVideoAgent(s,e){let i=y().room;i&&await i.simulateAgentJoin(s,e||"AI Agent")},async enableLocalCamera(){let e=y().room;e&&await e.localParticipant.setCameraEnabled(!0)},async disableLocalCamera(){let e=y().room;e&&await e.localParticipant.setCameraEnabled(!1)},async enableLocalMicrophone(){let e=y().room;e&&await e.localParticipant.setMicrophoneEnabled(!0)},async simulateMultipleParticipants(s){let e=["Alice","Bob","Carol","David","Eve","Frank","Grace","Henry","Ivy","Jack"],i=y().room;if(i)for(let o=0;o<Math.min(s,e.length);o++)await i.simulateParticipantJoin(`participant_${o+1}`,{name:e[o],kind:"standard",withCamera:!0,withMicrophone:!0}),await new Promise(a=>setTimeout(a,100))},clearParticipants(){let e=y().room;if(e)for(let t of e.remoteParticipants.keys())e.simulateParticipantLeave(t)},simulateCallRequest(s,e){y().simulateCallRequest({name:s,guestId:e||`guest_${Date.now()}`})},async simulateDisconnect(){await y().simulateDisconnect()},getEventHistory(){return y().getEventHistory()},exportState(){return y().exportState()},getRoom(){return y().room}};typeof window<"u"&&(window.MockServiceActions=rt);var nt={OpenWidget:"openWidget",InitialStep:"initialStep"};var qt="ol",Mi={Action:"action",Message:"message",StepId:"stepId",InstallationId:"installationId"},Bi=new Set(Object.values(nt)),lt=class s{constructor(){this.params=s.parse()}get hasParams(){return Object.keys(this.params).length>0}getParams(){return{...this.params}}matchesInstallation(e){return this.params.installationId?this.params.installationId===e:!0}cleanUrl(){let e=new URL(window.location.href),t=!1;for(let i of Array.from(e.searchParams.keys()))i.startsWith(qt)&&i.substring(qt.length)in Mi&&(e.searchParams.delete(i),t=!0);t&&window.history.replaceState(window.history.state,"",e.toString())}static parse(){let e={},t=new URLSearchParams(window.location.search);for(let[i,o]of Object.entries(Mi)){let a=`${qt}${i}`,r=t.get(a);if(r!==null){if(o==="action"){Bi.has(r)&&(e.action=r);continue}e[o]=r}}return e}};0&&(module.exports={AgentNotFoundError,Asset,ConversationServiceFactory,DeepLinkAction,DeepLinkService,InvalidOperationError,MockConversationService,MockEventEmitter,MockLiveKitError,MockLocalParticipant,MockParticipant,MockRoom,MockServiceActions,MockState,MockTextStreamReader,MockTrack,MockTrackPublication,NetworkError,OSBAsset,OSBSideBar,OSBUpload,ParticipantAlreadyJoinedError,ParticipantNotFoundError,RoomEndedError,RoomNotFoundError,SYNTHETIC_MEDIA_PRESETS,SideBar,StorybookScenarios,TimeoutError,TrackNotFoundError,UnauthorizedError,Upload,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,createVideoCallScenario,decodeMockToken,destroyStorybookMockService,generateMockApiResponseId,generateMockExternalId,generateMockId,generateMockIdBatch,generateMockMessageId,generateMockParticipantIdentity,generateMockRoomName,generateMockToken,generateMockTrackSid,generateMockWsUrl,generateSeededMockId,getStorybookMockService,isMockConversationService,isMockError,isMockLiveKitError,resetIdCounter,resetStorybookMockService,setIdCounter,withMockConversationService});
4770
+ `}};f.styles=[ri],v([(0,w.property)({type:Object})],f.prototype,"config",2),v([(0,w.property)({type:Object})],f.prototype,"searchConfig",2),v([(0,w.property)({type:String})],f.prototype,"selectedCategory",2),v([(0,w.property)({type:Boolean})],f.prototype,"disabled",2),v([(0,w.state)()],f.prototype,"multimediaService",2),v([(0,w.state)()],f.prototype,"productService",2),v([(0,w.state)()],f.prototype,"faqsService",2),v([(0,w.state)()],f.prototype,"fileService",2),v([(0,w.state)()],f.prototype,"isUploading",2),v([(0,w.state)()],f.prototype,"uploadProgress",2),v([(0,w.state)()],f.prototype,"categoryStates",2),v([(0,w.state)()],f.prototype,"searchTimeout",2),v([(0,w.state)()],f.prototype,"unifiedSearchQuery",2),v([(0,w.state)()],f.prototype,"extraFilters",2),v([(0,w.state)()],f.prototype,"activeFilters",2),v([(0,w.state)()],f.prototype,"loadingFilters",2),f=v([K("osb-side-bar")],f);var li=require("@lit/react"),ci=A(require("react"),1);var di=(0,li.createComponent)({tagName:"osb-asset",elementClass:k,react:ci.default,events:{onAssetClick:"asset-click",onAssetDownload:"asset-download",onAssetLoad:"asset-load",onAssetError:"asset-error",onContentClick:"content-click"}});var pi=require("@lit/react"),mi=A(require("react"),1);var ui=(0,pi.createComponent)({tagName:"osb-side-bar",elementClass:f,react:mi.default,events:{onSearch:"search",onLoadMore:"load-more",onItemAdd:"item-add",onCategoryChange:"category-change",onItemSelect:"item-select",onFileUpload:"file-uploaded"}});var gi=require("@lit/react"),vi=A(require("react"),1);var hi=(0,gi.createComponent)({tagName:"osb-upload",elementClass:T,react:vi.default,events:{onFileSelected:"osb-file-selected",onUploadError:"osb-upload-error"}});var M=0;function Te(){M=0}function dt(s){M=s}function g(s){return M++,`mock_${s}_${M}_${Date.now().toString(36)}`}function pt(s,e){return`mock_${s}_${e.toString(36)}`}function E(s,e,t){let i=t||new Date().toISOString(),o=typeof btoa=="function"?btoa(i).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,""):i.replace(/[^a-zA-Z0-9]/g,"");return`mock_token_${s}_${e}_${o}`}function mt(s){if(!s.startsWith("mock_token_"))return null;let e=s.replace("mock_token_","").split("_");if(e.length<3)return null;let t=e[e.length-1],i=e[e.length-2],o=e.slice(0,-2).join("_");try{let a=t.replace(/-/g,"+").replace(/_/g,"/"),n=typeof atob=="function"?atob(a):t;return{roomId:o,identity:i,timestamp:n}}catch{return null}}function ie(s){return`wss://mock-livekit.local/room/${s}`}function ut(s="participant",e){let t=e??M++;return`${s}_${t}_${Date.now().toString(36)}`}function gt(s="room"){return M++,`${s}_${M}_${Date.now().toString(36)}`}function vt(s,e){return M++,`TR_${s.toUpperCase()}_${e}_${M}`}function ht(){return M++,`msg_${M}_${Date.now().toString(36)}_${Math.random().toString(36).slice(2,8)}`}function ft(s){return M++,`api_${s}_${M}_${Date.now().toString(36)}`}function bt(){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 yt(s,e){let t=[];for(let i=0;i<e;i++)t.push(g(s));return t}var Ke={responseStrategy:"echo",responseDelayMs:100,cannedResponses:[],type:"text",nature:"ai",simulateTyping:!1,typingDelayPerChar:20};function Ge(s,e,t=[],i=0,o=Math.random){switch(s){case"echo":return{response:`Echo: ${e}`,nextIndex:i};case"canned":return{response:t[0]||"Default response",nextIndex:i};case"sequential":return{response:t[i]||"No more responses",nextIndex:(i+1)%Math.max(1,t.length)};case"random":{if(t.length===0)return{response:"Random response",nextIndex:i};let a=Math.floor(o()*t.length);return{response:t[a],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 ge=class{constructor(e,t,i={}){this._state="idle";this.conversationHistory=[];this.responseIndex=0;this.eventListeners=new Set;this.randomFn=Math.random;this.messageCount=0;this.id=e,this.name=t,this.config={...Ke,...i}}get state(){return this._state}get isRunning(){return this._state==="running"}get history(){return[...this.conversationHistory]}getConfig(){return{...this.config}}updateConfig(e){this.config={...this.config,...e}}setStrategy(e){this.config.responseStrategy=e}setCannedResponses(e){this.config.cannedResponses=e,this.responseIndex=0}setCustomHandler(e){this.customHandler=e,this.config.responseStrategy="custom"}setRandomFunction(e){this.randomFn=e}async start(e){this._state!=="running"&&(this._state="starting",this.roomId=e,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(e){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(e,"user"),this.emitEvent({type:"message_received",agentId:this.id,message:e});let t;try{if(this.config.responseStrategy==="custom"&&this.customHandler)t=await this.customHandler(this.id,e,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=Ge(this.config.responseStrategy,e,this.config.cannedResponses,this.responseIndex,this.randomFn);t=i.response,this.responseIndex=i.nextIndex}}}catch(i){throw this._state="error",i}return this.config.simulateTyping&&this.config.typingDelayPerChar&&await this.delay(t.length*this.config.typingDelayPerChar),this.config.responseDelayMs&&await this.delay(this.config.responseDelayMs),this.addMessage(t,"agent"),this.messageCount++,this.emitEvent({type:"response_sent",agentId:this.id,response:t}),t}addEventListener(e){return this.eventListeners.add(e),()=>this.eventListeners.delete(e)}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(e,t){let i={id:g("msg"),content:e,role:t,timestamp:Date.now()};return this.conversationHistory.push(i),i}emitEvent(e){for(let t of this.eventListeners)try{t(e)}catch(i){console.error("Error in agent event listener:",i)}}delay(e){return new Promise(t=>setTimeout(t,e))}};var b=class s extends Error{constructor(e,t,i){super(t),this.name="MockLiveKitError",this.code=e,this.details=i,typeof Error.captureStackTrace=="function"&&Error.captureStackTrace(this,s)}toMockError(){return{code:this.code,message:this.message,details:this.details}}static fromMockError(e){return new s(e.code,e.message,e.details)}},z=class extends b{constructor(e){super("ROOM_NOT_FOUND",`Room not found: ${e}`,{roomId:e}),this.name="RoomNotFoundError"}},ve=class extends b{constructor(e){super("ROOM_ENDED",`Room has ended: ${e}`,{roomId:e}),this.name="RoomEndedError"}},he=class extends b{constructor(e,t){super("PARTICIPANT_ALREADY_JOINED",`Participant ${e} is already in room ${t}`,{identity:e,roomId:t}),this.name="ParticipantAlreadyJoinedError"}},fe=class extends b{constructor(e){super("PARTICIPANT_NOT_FOUND",`Participant not found: ${e}`,{identity:e}),this.name="ParticipantNotFoundError"}},be=class extends b{constructor(e){super("TRACK_NOT_FOUND",`Track not found: ${e}`,{trackId:e}),this.name="TrackNotFoundError"}},ye=class extends b{constructor(e){super("AGENT_NOT_FOUND",`Agent not found: ${e}`,{agentId:e}),this.name="AgentNotFoundError"}},ke=class extends b{constructor(e="Unauthorized"){super("UNAUTHORIZED",e),this.name="UnauthorizedError"}},je=class extends b{constructor(e="Network error occurred"){super("NETWORK_ERROR",e),this.name="NetworkError"}},we=class extends b{constructor(e,t){super("INVALID_OPERATION",e,t),this.name="InvalidOperationError"}},Se=class extends b{constructor(e,t){super("TIMEOUT",`Operation timed out: ${e}`,{operation:e,timeoutMs:t}),this.name="TimeoutError"}};function oe(s){switch(s.code){case"ROOM_NOT_FOUND":return new z(s.details?.roomId??"unknown");case"ROOM_ENDED":return new ve(s.details?.roomId??"unknown");case"PARTICIPANT_ALREADY_JOINED":return new he(s.details?.identity??"unknown",s.details?.roomId??"unknown");case"PARTICIPANT_NOT_FOUND":return new fe(s.details?.identity??"unknown");case"TRACK_NOT_FOUND":return new be(s.details?.trackId??"unknown");case"AGENT_NOT_FOUND":return new ye(s.details?.agentId??"unknown");case"UNAUTHORIZED":return new ke(s.message);case"NETWORK_ERROR":return new je(s.message);case"INVALID_OPERATION":return new we(s.message,s.details);case"TIMEOUT":return new Se(s.details?.operation??"unknown",s.details?.timeoutMs??0);default:return b.fromMockError(s)}}function O(s){return typeof s=="object"&&s!==null&&"code"in s&&"message"in s&&typeof s.code=="string"&&typeof s.message=="string"}function kt(s){return s instanceof b}var se=class{constructor(){this.listeners={};this.wildcardListeners=new Set;this.eventHistory=[];this.maxHistorySize=1e3;this.recordHistory=!0}setMaxHistorySize(e){this.maxHistorySize=e,this.trimHistory()}setRecordHistory(e){this.recordHistory=e}on(e,t){return this.listeners[e]||(this.listeners[e]=new Set),this.listeners[e].add(t),()=>{this.off(e,t)}}once(e,t){let i=o=>{this.off(e,i),t(o)};return this.on(e,i)}off(e,t){this.listeners[e]?.delete(t)}onAny(e){return this.wildcardListeners.add(e),()=>{this.wildcardListeners.delete(e)}}offAny(e){this.wildcardListeners.delete(e)}removeAllListeners(e){e?delete this.listeners[e]:(this.listeners={},this.wildcardListeners.clear())}emit(e){this.recordHistory&&(this.eventHistory.push(e),this.trimHistory());let t=this.listeners[e.type];if(t)for(let i of t)try{i(e)}catch(o){console.error(`Error in mock event listener for ${e.type}:`,o)}for(let i of this.wildcardListeners)try{i(e)}catch(o){console.error("Error in mock wildcard event listener:",o)}}trimHistory(){this.eventHistory.length>this.maxHistorySize&&(this.eventHistory=this.eventHistory.slice(-this.maxHistorySize))}emitRoomCreated(e){let t={type:"roomCreated",timestamp:new Date().toISOString(),roomId:e.id,room:e};this.emit(t)}emitRoomEnded(e){let t={type:"roomEnded",timestamp:new Date().toISOString(),roomId:e};this.emit(t)}emitRoomConnectionStateChanged(e,t,i){let o={type:"roomConnectionStateChanged",timestamp:new Date().toISOString(),roomId:e,state:t,previousState:i};this.emit(o)}emitParticipantJoined(e,t){let i={type:"participantJoined",timestamp:new Date().toISOString(),roomId:e,participant:t};this.emit(i)}emitParticipantLeft(e,t){let i={type:"participantLeft",timestamp:new Date().toISOString(),roomId:e,participantIdentity:t};this.emit(i)}emitParticipantAttributesChanged(e,t,i,o){let a={type:"participantAttributesChanged",timestamp:new Date().toISOString(),roomId:e,participantIdentity:t,attributes:i,previousAttributes:o};this.emit(a)}emitTrackPublished(e,t,i){let o={type:"trackPublished",timestamp:new Date().toISOString(),roomId:e,participantIdentity:t,track:i};this.emit(o)}emitTrackUnpublished(e,t,i){let o={type:"trackUnpublished",timestamp:new Date().toISOString(),roomId:e,participantIdentity:t,trackId:i};this.emit(o)}emitTrackMuted(e,t){let i={type:"trackMuted",timestamp:new Date().toISOString(),roomId:e,trackId:t};this.emit(i)}emitTrackUnmuted(e,t){let i={type:"trackUnmuted",timestamp:new Date().toISOString(),roomId:e,trackId:t};this.emit(i)}emitMessageReceived(e,t){let i={type:"messageReceived",timestamp:new Date().toISOString(),roomId:e,message:t};this.emit(i)}emitMessageSent(e,t){let i={type:"messageSent",timestamp:new Date().toISOString(),roomId:e,message:t};this.emit(i)}emitTypingIndicator(e,t,i){let o={type:"typingIndicator",timestamp:new Date().toISOString(),roomId:e,participantIdentity:t,isTyping:i};this.emit(o)}emitAgentStarted(e,t){let i={type:"agentStarted",timestamp:new Date().toISOString(),roomId:e,agent:t};this.emit(i)}emitAgentStopped(e,t){let i={type:"agentStopped",timestamp:new Date().toISOString(),roomId:e,agentId:t};this.emit(i)}emitAgentMessage(e,t,i){let o={type:"agentMessage",timestamp:new Date().toISOString(),roomId:e,agentId:t,message:i};this.emit(o)}emitDataReceived(e,t,i,o){let a={type:"dataReceived",timestamp:new Date().toISOString(),roomId:e,participantIdentity:t,data:i,topic:o};this.emit(a)}emitError(e,t){let i={type:"error",timestamp:new Date().toISOString(),roomId:t,error:e};this.emit(i)}getHistory(e){return e?this.eventHistory.filter(t=>t.type===e):[...this.eventHistory]}getLastEvents(e,t){return(t?this.eventHistory.filter(o=>o.type===t):this.eventHistory).slice(-e)}clearHistory(){this.eventHistory=[]}listenerCount(e){return(this.listeners[e]?.size??0)+this.wildcardListeners.size}};var We=require("@onlive.ai/tracker/session"),Me=require("livekit-client");var fi=require("firebase/app"),p=require("firebase/database");var bi=class{constructor(s){this.onChildChanged=(t,i)=>(0,p.onChildChanged)(this.ref(t),o=>i(o.key||"",o.val(),o)),this.onChildRemoved=(t,i)=>(0,p.onChildRemoved)(this.ref(t),o=>i(o.key||"",o.val(),o)),this.onChildChangedQuery=(t,i)=>(0,p.onChildChanged)(t,o=>i(o.key||"",o.val(),o)),this.onChildRemovedQuery=(t,i)=>(0,p.onChildRemoved)(t,o=>i(o.key||"",o.val(),o));let e=(0,fi.initializeApp)(s.config);this.db=(0,p.getDatabase)(e)}ref(s){return(0,p.ref)(this.db,s)}async getOnce(s){let e=await(0,p.get)(this.ref(s));return e.exists()?e.val():null}async getOnceQuery(s){let e=await(0,p.get)(s),t=[];return e.exists()&&e.forEach(i=>{t.push({key:i.key||"",value:i.val()})}),t}onValue(s,e){return(0,p.onValue)(this.ref(s),t=>e(t.key??"",t.val(),t),t=>console.error("onValue error",t))}onValueQuery(s,e){return(0,p.onValue)(s,t=>e(t.key??"",t.val(),t),t=>console.error("onValueQuery error",t))}onChildAdded(s,e){return(0,p.onChildAdded)(this.ref(s),t=>e(t.key||"",t.val(),t),t=>console.error("onChildAdded error",t))}onChildAddedQuery(s,e){return(0,p.onChildAdded)(s,t=>e(t.key||"",t.val(),t),t=>console.error("onChildAddedQuery error",t))}write(s,e){return(0,p.set)(this.ref(s),e)}update(s,e){return(0,p.update)(this.ref(s),e)}remove(s){return(0,p.remove)(this.ref(s))}async push(s,e){let t=(0,p.push)(this.ref(s));return await(0,p.set)(t,e),t.key}onDisconnectUpdate(s,e){return(0,p.onDisconnect)(this.ref(s)).update(e)}cancelOnDisconnect(s){return(0,p.onDisconnect)(this.ref(s)).cancel()}transaction(s,e){return(0,p.runTransaction)(this.ref(s),t=>e(t))}query(s,e={}){let t=this.ref(s);return e.orderBy==="child"&&e.childKey&&(t=(0,p.query)(t,(0,p.orderByChild)(e.childKey))),e.orderBy==="key"&&(t=(0,p.query)(t,(0,p.orderByKey)())),e.orderBy==="value"&&(t=(0,p.query)(t,(0,p.orderByValue)())),e.startAt!=null&&(t=(0,p.query)(t,(0,p.startAt)(e.startAt))),e.endAt!=null&&(t=(0,p.query)(t,(0,p.endAt)(e.endAt))),e.equalTo!=null&&(t=(0,p.query)(t,(0,p.equalTo)(e.equalTo))),e.limitFirst!=null&&(t=(0,p.query)(t,(0,p.limitToFirst)(e.limitFirst))),e.limitLast!=null&&(t=(0,p.query)(t,(0,p.limitToLast)(e.limitLast))),t}};var yi=s=>{let e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",t="";for(let i=0;i<s;i++)t+=e.charAt(Math.floor(Math.random()*e.length));return t};var ki=require("@onlive.ai/tracker/generator"),_=require("@onlive.ai/tracker/session"),G="chatbot",Ye=class s{static hasSession(){return!!_.Session.getCookie(G)}static getSession(e={role:"guest",regenerate:!1}){e.regenerate&&(_.Session.id=ki.Generator.uuid(),_.Session.deleteCookie(G));let t=_.Session.getCookie(G);return t&&s.isValidSession(t,e.role)?t:s.createSession(e.role)}static createSession(e){let t={externalId:e==="agent"?String(s.getUserId()||_.Session.id):_.Session.id,secret:yi(16),createdAt:new Date().toISOString()};return _.Session.setCookie(G,t,3600*24*365),t}static isValidSession(e,t){if(t==="guest")return!0;let i=s.getUserId();return!!(i&&String(i)===e.externalId)}static getUserId(){return _.Session.getCookie("user-id",{objectKey:"userId",storageKey:"user",storageType:"localStorage",ttl:3600*24*365,preserveData:!0})}static updateSessionWithRegistrationData(e){let t=_.Session.getCookie(G);if(t||(t=s.createSession("guest")),t){let i={...t,registrationData:e};_.Session.setCookie(G,i,3600*24*365)}}static hasRegistrationData(){return!!_.Session.getCookie(G)?.registrationData}static async getAgentInfo(e){return fetch(`${e}/api/v1/auth/user-info`,{credentials:"include"}).then(t=>t.json())}static getRegistrationData(){return _.Session.getCookie(G)?.registrationData}};var ji="lk.chat",wi="lk.transcription",Si="lk.events",jt="typing-indicator";var wt=class extends Me.Room{},Qe=class{constructor(e){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(e,t)=>{let i=e?.info?.id,o=e.info?.attributes?.["lk.segment_id"];o&&(this.transcriptionMap.has(o)?i=this.transcriptionMap.get(o)||"":this.transcriptionMap.set(o,i));let a=t?.identity?this.room.getParticipantByIdentity(t.identity):void 0,n="";for await(let l of e)n+=l,this.emitMessage({id:i,timestamp:Date.now(),message:n,assets:JSON.parse(e.info?.attributes?.assets||"[]"),from:a});this.messagePersistence==="client"&&this.persistMessage({roomId:this.room.id,content:n,externalId:i,identity:a?.identity,kind:a?.kind})};this.emitMessage=e=>{for(let t of this.listeners)t([e])};this.handleDataReceived=(e,t,i,o)=>{if(o===jt)try{let a=JSON.parse(new TextDecoder().decode(e));if(a.type==="typing"&&a.participantId!==this.room.localParticipant.identity){let n={type:"typing",isTyping:a.isTyping,timestamp:a.timestamp,participantId:a.participantId};this.emitTypingIndicator(n)}}catch(a){console.warn("Failed to parse typing indicator:",a)}};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||ji,this.transcriptionTopic=e.transcriptionTopic||wi,this.eventsTopic=e.eventsTopic||Si,this.messagePersistence=e.messagePersistence||"disabled",this.agentInitialModalities=e.agentInitialModalities,this.agentModalities=e.agentModalities,this.room=this.createRoomInstance(),e.firebaseConfig&&this.initializeFirebase(e.firebaseConfig)}createRoomInstance(){return new wt({adaptiveStream:!0,dynacast:!0})}ensureRoom(){return this.room||(this.room=this.createRoomInstance()),this.room}initializeFirebase(e){this.firebaseApi=new bi({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(Me.RoomEvent.DataReceived,this.handleDataReceived),this.room.registerTextStreamHandler(this.channelTopic,this.handleIncomingMessage),this.room.registerTextStreamHandler(this.transcriptionTopic,this.handleIncomingMessage),this.room.on(Me.RoomEvent.DataReceived,this.handleDataReceived)}async registerUser(e,t,i,o){let a=await h(`${this.apiUrl}/users/register`,{method:"POST",body:JSON.stringify({externalId:e,secret:t,...i,metadata:o}),headers:{"X-Onlive-Organization-Id":this.organizationId,"Content-Type":"application/json"},signal:this.abortControllers.register.signal});if(!a.token)throw new Error("Registration failed: No token received from server");return this.authToken=a.token,a}async registerAgent(e,t){let i=We.Session.getCookie("livekit-agent-token");if(i){if(this.decodeJwtPayload(i)?.username===t.name)return this.authToken=i,i;We.Session.deleteCookie("livekit-agent-token")}let o=await h(`${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 We.Session.setCookie("livekit-agent-token",o.token,1440*60),this.authToken=o.token,o.token}decodeJwtPayload(e){try{let t=e.split(".");if(t.length!==3)return null;let i=t[1],o=atob(i.replace(/-/g,"+").replace(/_/g,"/"));return JSON.parse(o)}catch{return null}}async quickStart(e){let t=e;console.log("[ConversationService] Starting quickStart with options:",t),this.room=this.ensureRoom(),(this.agentInitialModalities||this.agentModalities)&&(t={...t,room:{...t.room,metadata:{...this.agentInitialModalities&&{agentInitialModalities:this.agentInitialModalities},...this.agentModalities&&{agentModalities:this.agentModalities},...t.room.metadata}}});let i=await h(`${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(!i.user?.token)throw new Error("Quick start failed: No user token received from server");this.authToken=i.user.token;let o={id:i.room.id,groupId:i.room.groupId||"",token:i.room.token,wsURL:i.room.wsURL,createdAt:i.room.createdAt||new Date().toISOString(),affinity:i.room.affinity};return this.setRoomMetadata(o),this.setupParticipantAttributesHandler(),this.room.connect(o.wsURL,o.token),this.initializeRoomHandlers(),this.room}async createRoom(e){if(!this.authToken)throw new Error("Cannot create room: No authentication token. Call registerUser() first.");this.room=this.ensureRoom();let{initialMessage:t,...i}=e;(this.agentInitialModalities||this.agentModalities)&&(i.metadata={...this.agentInitialModalities&&{agentInitialModalities:this.agentInitialModalities},...this.agentModalities&&{agentModalities:this.agentModalities},...i.metadata});let o=await h(`${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(o),this.setupParticipantAttributesHandler(),this.room.connect(o.wsURL,o.token).then(async()=>{if(t)try{await this.sendMessage(t)}catch(a){console.error("[ConversationService] Failed to send initial message:",a)}}),this.initializeRoomHandlers(),this.room}async joinRoom(e,t,i,o){let a=await h(`${this.apiUrl}/rooms/${e}/join`,{method:"POST",body:JSON.stringify({timezone:t,language:i,...o??{}}),headers:{Authorization:`Bearer ${this.authToken}`,"X-Onlive-Organization-Id":this.organizationId,"Content-Type":"application/json"},signal:this.abortControllers.createRoom.signal});return this.setRoomMetadata(a),this.setupParticipantAttributesHandler(),await this.room.connect(a.wsURL,a.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(),this.room.affinity=e.affinity}setupParticipantAttributesHandler(){this.room.on(Me.RoomEvent.ParticipantAttributesChanged,e=>{e.identity===this.room.localParticipant.identity&&Ye.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 h(`${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(){this.room&&(await h(`${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 e=this.room?.localParticipant;if(!e)return;await Promise.allSettled([e.setMicrophoneEnabled(!1),e.setCameraEnabled(!1),e.setScreenShareEnabled(!1)]);let t=Array.from(e.trackPublications.values());await Promise.all(t.map(async i=>{let o=i.track;if(o)try{await e.unpublishTrack(o,!0)}catch{o.stop()}}))}async disconnectAndCloseRoom(){await this.closeRoom(),await this.disconnect()}async readRoom(e){return h(`${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()),h(`${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 i=await this.room.localParticipant.sendText(e,{topic:this.channelTopic,attributes:t});this.emitMessage({id:i.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:i.id,identity:this.room.localParticipant?.identity,kind:this.room.localParticipant?.kind})}async persistMessage(e){return h(`${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 h(`${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 h(`${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 h(`${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 h(`${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){if(!(!this.room||this.room.state!=="connected"))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:jt})}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 h(`${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 h(`${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 h(`${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(){if(this.room?.id)return h(`${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:i}=this.getFirebase();return t.onChildChanged(i,(o,a)=>e(o,a))}onPresenceAgentChange(e,t){let{api:i}=this.getFirebase();return i.onValue(this.buildAgentPresencePath(e),(o,a)=>t(o,a))}async createCallRequest(e){let{api:t,callsPath:i}=this.getFirebase(),a=(await h(`${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(`${i}/${a}`,{status:"disconnected"}),a}onNewCallRequest(e){let{api:t,callsPath:i}=this.getFirebase();return t.onChildAdded(i,(o,a)=>e(o,{...a,id:o}))}onCallRequestChange(e){let{api:t,callsPath:i}=this.getFirebase();return t.onChildChanged(i,(o,a)=>e(o,{...a,id:o}))}onCallRequestRemoved(e){let{api:t,callsPath:i}=this.getFirebase();return t.onChildRemoved(i,o=>e(o))}async acceptCallRequest(e){let{api:t,callsPath:i}=this.getFirebase();return await t.cancelOnDisconnect(`${i}/${e}`),t.update(`${i}/${e}`,{status:"accepted"})}async cancelCallRequest(e){let{api:t,callsPath:i}=this.getFirebase();await t.cancelOnDisconnect(`${i}/${e}`),await h(`${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:i}=this.getFirebase();await t.cancelOnDisconnect(`${i}/${e}`)}subscribePendingRequests(e,t={}){let{api:i,callsPath:o}=this.getFirebase();t.resetSeen&&this.seenRequestIds.clear(),this.firebaseUnsubscribers["pending-requests"]?.();let a=i.query(o,{orderBy:"child",childKey:"status",equalTo:"pending"}),n=i.onChildAddedQuery(a,(l,r)=>{if(!l||this.seenRequestIds.has(l))return;let d={...r,id:l};this.seenRequestIds.add(l),e(l,d)});return this.firebaseUnsubscribers["pending-requests"]=n,()=>{n?.(),delete this.firebaseUnsubscribers["pending-requests"]}}subscribeRequestChanges(e){let{api:t,callsPath:i}=this.getFirebase();this.firebaseUnsubscribers["request-changes"]?.();let o=t.onChildChanged(i,(a,n)=>{if(!a)return;let l=JSON.stringify(n);this.lastSnapshotById.get(a)!==l&&(this.lastSnapshotById.set(a,l),e(a,{...n,id:a}))});return this.firebaseUnsubscribers["request-changes"]=o,()=>{o?.(),delete this.firebaseUnsubscribers["request-changes"]}}async tryAcceptRequest(e){let{api:t,callsPath:i}=this.getFirebase(),o=`${i}/${e}`;return await t.transaction(o,n=>n&&(n.status==="pending"?{...n,status:"accepted"}:n)),(await t.getOnce(o))?.status==="accepted"}onRoomSync(e,t){let{api:i}=this.getFirebase(),o=`orgs/${this.organizationId}/rooms/${e}/sync`;return i.onValue(o,(a,n)=>{t(n)})}async clearRoomSync(e,t){let{api:i}=this.getFirebase(),o=`orgs/${this.organizationId}/rooms/${e}/sync`;await i.write(o,{needsSync:!1,reason:t||null,timestamp:Date.now()})}onNewRoomRequest(e,t){let{api:i}=this.getFirebase(),o=`orgs/${this.organizationId}/rooms/${e}/call`;return i.onValue(o,(a,n)=>{t(n)})}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()}};var P=class{constructor(e,t,i,o){this.muted=!1;this.enabled=!0;this.attachedElements=new Set;this.kind=e,this.source=t,this.sid=g("TR"),this.mediaStreamTrack=i,this.mediaCleanup=o}get mediaTrack(){return this.mediaStreamTrack}attach(e){let t=e||document.createElement(this.kind==="video"?"video":"audio");if(this.mediaStreamTrack){let i=new MediaStream([this.mediaStreamTrack]);t.srcObject=i,t.autoplay=!0,this.kind==="video"&&(t.playsInline=!0,t.muted=!0)}return this.attachedElements.add(t),t}detach(e){if(e)return e.srcObject=null,this.attachedElements.delete(e),[e];let t=Array.from(this.attachedElements);for(let i of t)i.srcObject=null;return this.attachedElements.clear(),t}stop(){this.detach(),this.mediaCleanup&&this.mediaCleanup(),this.mediaStreamTrack&&this.mediaStreamTrack.stop(),this.enabled=!1}setMuted(e){this.muted=e,this.mediaStreamTrack&&(this.mediaStreamTrack.enabled=!e)}setEnabled(e){this.enabled=e,this.mediaStreamTrack&&(this.mediaStreamTrack.enabled=e)}},x=class{constructor(e,t){this.subscribed=!0;this.isEnabled=!0;this.track=e,this.trackSid=e.sid,this.trackName=t||`${e.kind}_${e.source}`,this.source=e.source,this.kind=e.kind}get isMuted(){return this.track?.muted??!1}get isSubscribed(){return this.subscribed&&this.track!==null}setSubscribed(e){this.subscribed=e}setEnabled(e){this.isEnabled=e,this.track&&(this.track.enabled=e)}setMuted(e){this.track&&this.track.setMuted(e)}};var Y=class{constructor(e){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=e,this.sid=g("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(e){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"}[e]||e;return this.trackPublications.get(i)}getTrackPublicationBySid(e){for(let t of this.trackPublications.values())if(t.trackSid===e)return t}setAttributes(e){this.attributes={...this.attributes,...e}}async setCameraEnabled(e,t){if(this._cameraEnabled=e,e){let{createSyntheticVideoTrack:o}=await Promise.resolve().then(()=>(ae(),_e)),{track:a,cleanup:n}=o({animation:"avatar",label:this.name||"Local Camera"}),l=new P("video","camera",a,n),r=new x(l,t?.name);return this.trackPublications.set("camera",r),this.videoTrackPublications.set(l.sid,r),this.room.emit("localTrackPublished",r,this),r}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(e,t){if(this._microphoneEnabled=e,e){let{createSyntheticAudioTrack:o}=await Promise.resolve().then(()=>(ae(),_e)),{track:a,cleanup:n}=o({enabled:!1}),l=new P("audio","microphone",a,n),r=new x(l,t?.name);return this.trackPublications.set("microphone",r),this.audioTrackPublications.set(l.sid,r),this.room.emit("localTrackPublished",r,this),r}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(e,t){if(this._screenShareEnabled=e,e){let{createSyntheticVideoTrack:o}=await Promise.resolve().then(()=>(ae(),_e)),{track:a,cleanup:n}=o({animation:"bars",label:"Screen Share",width:1920,height:1080}),l=new P("video","screen_share",a,n),r=new x(l,t?.name||"screen");return this.trackPublications.set("screen_share",r),this.videoTrackPublications.set(l.sid,r),this.room.emit("localTrackPublished",r,this),r}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(e,t){let i=new x(e,t?.name),o=t?.source||e.source;return this.trackPublications.set(o,i),e.kind==="audio"?this.audioTrackPublications.set(e.sid,i):e.kind==="video"&&this.videoTrackPublications.set(e.sid,i),this.room.emit("localTrackPublished",i,this),i}async unpublishTrack(e){e.stop();for(let[t,i]of this.trackPublications)if(i.track===e){this.trackPublications.delete(t),e.kind==="audio"?this.audioTrackPublications.delete(e.sid):e.kind==="video"&&this.videoTrackPublications.delete(e.sid),this.room.emit("localTrackUnpublished",i,this);break}}async sendText(e,t){return{id:g("msg")}}async publishData(e,t){}async setMetadata(e){this.attributes.metadata=e}async setName(e){this.name=e}cleanup(){for(let e of this.trackPublications.values())e.track?.stop();this.trackPublications.clear(),this.audioTrackPublications.clear(),this.videoTrackPublications.clear(),this._cameraEnabled=!1,this._microphoneEnabled=!1,this._screenShareEnabled=!1}};function Fi(s){switch(s){case"standard":return 0;case"ingress":return 1;case"egress":return 2;case"sip":return 3;case"agent":return 4;default:return 0}}var L=class{constructor(e,t,i={},o="standard"){this.connectionQuality="excellent";this.isSpeaking=!1;this.audioLevel=0;this.trackPublications=new Map;this.identity=e,this.sid=g("PA"),this.name=t,this.attributes=i,this._kindString=o,this.kind=Fi(o),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 e=this.getTrackPublication("camera");return!!(e?.track&&!e.isMuted)}get isMicrophoneEnabled(){let e=this.getTrackPublication("microphone");return!!(e?.track&&!e.isMuted)}getTrackPublication(e){for(let t of this.trackPublications.values())if(t.source===e)return t}getTrackPublicationBySid(e){return this.trackPublications.get(e)}getTrackPublications(){return Array.from(this.trackPublications.values())}getAudioTracks(){return this.getTrackPublications().filter(e=>e.kind==="audio")}getVideoTracks(){return this.getTrackPublications().filter(e=>e.kind==="video")}addTrackPublication(e){this.trackPublications.set(e.trackSid,e)}removeTrackPublication(e){let t=this.trackPublications.get(e);return t&&(this.trackPublications.delete(e),t.track?.stop()),t}setAttributes(e){this.attributes={...this.attributes,...e}}getAttribute(e){return this.attributes[e]}startSpeaking(e=.5){this.isSpeaking=!0,this.audioLevel=e}stopSpeaking(){this.isSpeaking=!1,this.audioLevel=0}setConnectionQuality(e){this.connectionQuality=e}cleanup(){for(let e of this.trackPublications.values())e.track?.stop();this.trackPublications.clear()}};var D=class{constructor(e){this.remoteParticipants=new Map;this._state="disconnected";this.eventHandlers=new Map;this.textStreamHandlers=new Map;this.rpcHandlers=new Map;this.mockService=e,this.localParticipant=new Y(this),this.sid=g("RM")}get state(){return this._state}set state(e){let t=this._state;this._state=e,t!==e&&this.emit("connectionStateChanged",e,t)}get numParticipants(){return this.remoteParticipants.size+1}get isConnected(){return this._state==="connected"}async connect(e,t){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 t of this.remoteParticipants.values())t.cleanup();this.remoteParticipants.clear(),this.localParticipant.cleanup();let e=this._state;this._state="disconnected",this.emit("connectionStateChanged","disconnected",e),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(e,t){return this.eventHandlers.has(e)||this.eventHandlers.set(e,new Set),this.eventHandlers.get(e).add(t),this}once(e,t){let i=(...o)=>{this.off(e,i),t(...o)};return this.on(e,i)}off(e,t){return this.eventHandlers.get(e)?.delete(t),this}removeAllListeners(){this.eventHandlers.clear()}emit(e,...t){let i=this.eventHandlers.get(e);if(i)for(let o of i)try{o(...t)}catch(a){console.error(`Error in mock room event handler for ${e}:`,a)}}registerRpcMethod(e,t){this.rpcHandlers.set(e,t)}unregisterRpcMethod(e){this.rpcHandlers.delete(e)}async callRpc(e,t,i,o=1e4){let a=this.rpcHandlers.get(e);if(!a)throw new Error(`RPC method not found: ${e}`);return a({callerIdentity:t,payload:i,responseTimeout:o})}registerTextStreamHandler(e,t){this.textStreamHandlers.set(e,t)}unregisterTextStreamHandler(e){this.textStreamHandlers.delete(e)}simulateTextStream(e,t){let i=this.textStreamHandlers.get(e);i&&i(t,{identity:t.participantIdentity})}getParticipantByIdentity(e){return e===this.localParticipant.identity?new L(this.localParticipant.identity,this.localParticipant.name,this.localParticipant.attributes):this.remoteParticipants.get(e)}getParticipantBySid(e){if(e===this.localParticipant.sid)return new L(this.localParticipant.identity,this.localParticipant.name,this.localParticipant.attributes);for(let t of this.remoteParticipants.values())if(t.sid===e)return t}async simulateParticipantJoin(e,t){let i=new L(e,t?.name,t?.attributes||{},t?.kind||"standard");return this.remoteParticipants.set(e,i),this.emit("participantConnected",i),t?.withCamera&&await this.simulateRemoteTrack(e,"video","camera"),t?.withMicrophone&&await this.simulateRemoteTrack(e,"audio","microphone"),i}simulateParticipantLeave(e){let t=this.remoteParticipants.get(e);if(t){for(let i of t.getTrackPublications())i.track?.stop(),this.emit("trackUnsubscribed",i.track,i,t);this.remoteParticipants.delete(e),this.emit("participantDisconnected",t)}}async simulateRemoteTrack(e,t,i){let o=this.remoteParticipants.get(e);if(!o)return;let a,n;if(t==="video"){let{createSyntheticVideoTrack:d}=await Promise.resolve().then(()=>(ae(),_e)),u=d({animation:o.isAgent?"avatar":"pulse",label:o.name||e,foregroundColor:o.isAgent?"#22c55e":"#4361ee"});a=u.track,n=u.cleanup}else if(t==="audio"){let{createSyntheticAudioTrack:d}=await Promise.resolve().then(()=>(ae(),_e)),u=d({enabled:!1});a=u.track,n=u.cleanup}let l=new P(t,i,a,n),r=new x(l);return o.addTrackPublication(r),this.emit("trackSubscribed",l,r,o),this.emit("trackPublished",r,o),l}simulateTrackUnpublished(e,t){let i=this.remoteParticipants.get(e);if(!i)return;let o=i.getTrackPublication(t);o&&(i.removeTrackPublication(o.trackSid),this.emit("trackUnpublished",o,i),this.emit("trackUnsubscribed",o.track,o,i))}async simulateAgentJoin(e,t="AI Agent"){return this.simulateParticipantJoin(e,{name:t,kind:"agent",withCamera:!0,withMicrophone:!0,attributes:{"lk.agent.name":t,"lk.agent.state":"active"}})}simulateAttributeChange(e,t){let i=this.remoteParticipants.get(e);if(i){let o={...i.attributes};i.setAttributes(t),this.emit("participantAttributesChanged",t,o,i)}}simulateTrackMuted(e,t,i){let o=this.remoteParticipants.get(e);if(!o)return;let a=o.getTrackPublication(t);a?.track&&(a.track.setMuted(i),this.emit(i?"trackMuted":"trackUnmuted",a,o))}simulateActiveSpeakersChanged(e){let t=[];for(let i of e){let o=this.remoteParticipants.get(i);o&&(o.startSpeaking(),t.push(o))}this.emit("activeSpeakersChanged",t)}simulateDataReceived(e,t,i,o){let a=this.remoteParticipants.get(t);this.emit("dataReceived",e,a,i,o)}};var ne=class{constructor(e={}){this.rooms=new Map;this.participants=new Map;this.tracks=new Map;this.agents=new Map;this.messages=new Map;this.config=e,this.randomState=e.seed??Date.now()}updateConfig(e){this.config={...this.config,...e},e.seed!==void 0&&(this.randomState=e.seed)}getConfig(){return{...this.config}}random(){return this.randomState=(this.randomState*1103515245+12345)%2147483648,this.randomState/2147483648}createRoom(e,t,i){let o=g("room"),a=new Date().toISOString(),n={id:o,name:e,groupId:t||g("group"),createdAt:a,metadata:i,isActive:!0,participantIds:[],connectionState:"disconnected",wsURL:ie(o),token:E(o,"pending",a)};return this.rooms.set(o,n),this.messages.set(o,[]),n}getRoom(e){return this.rooms.get(e)}getRoomByName(e){for(let t of this.rooms.values())if(t.name===e)return t}listRooms(e=!1){let t=Array.from(this.rooms.values());return e?t.filter(i=>i.isActive):t}updateRoomConnectionState(e,t){let i=this.rooms.get(e);if(!i)return;let o=i.connectionState;return i.connectionState=t,o}endRoom(e){let t=this.rooms.get(e);if(!t||!t.isActive)return!1;t.isActive=!1,t.endedAt=new Date().toISOString(),t.connectionState="disconnected";for(let i of t.participantIds){let o=this.participants.get(i);o&&(o.isConnected=!1)}for(let i of this.agents.values())i.roomId===e&&i.status==="running"&&(i.status="stopped",i.stoppedAt=new Date().toISOString());return!0}deleteRoom(e){let t=this.rooms.get(e);if(!t)return!1;for(let i of t.participantIds)this.participants.delete(i);for(let[i,o]of this.tracks)o.roomId===e&&this.tracks.delete(i);for(let[i,o]of this.agents)o.roomId===e&&this.agents.delete(i);return this.messages.delete(e),this.rooms.delete(e),!0}addParticipant(e,t,i,o="user",a="standard",n=!1){let l=this.rooms.get(e);if(!l)return this.createError("ROOM_NOT_FOUND",`Room ${e} not found`);if(!l.isActive)return this.createError("ROOM_ENDED",`Room ${e} has ended`);let r=this.participants.get(t);if(r&&r.roomId===e&&r.isConnected)return this.config.strictMode?this.createError("PARTICIPANT_ALREADY_JOINED",`Participant ${t} is already in room ${e}`):r;let d={identity:t,name:i||t,roomId:e,joinedAt:new Date().toISOString(),isConnected:!0,trackIds:[],role:o,attributes:{},kind:a,isLocal:n};return this.participants.set(t,d),l.participantIds.push(t),d}getParticipant(e){return this.participants.get(e)}listParticipants(e,t=!0){let i=this.rooms.get(e);if(!i)return[];let o=[];for(let a of i.participantIds){let n=this.participants.get(a);n&&(!t||n.isConnected)&&o.push(n)}return o}updateParticipantAttributes(e,t){let i=this.participants.get(e);if(!i)return;let o={...i.attributes};return i.attributes={...i.attributes,...t},o}removeParticipant(e){let t=this.participants.get(e);if(!t)return;t.isConnected=!1;for(let o of t.trackIds)this.tracks.delete(o);t.trackIds=[];let i=this.rooms.get(t.roomId);if(i){let o=i.participantIds.indexOf(e);o!==-1&&i.participantIds.splice(o,1)}return t}publishTrack(e,t,i="unknown",o){let a=this.participants.get(e);if(!a)return this.createError("PARTICIPANT_NOT_FOUND",`Participant ${e} not found`);if(!a.isConnected)return this.createError("INVALID_OPERATION",`Participant ${e} is not connected`);let n=this.rooms.get(a.roomId);if(!n||!n.isActive)return this.createError("ROOM_ENDED","Room is not active");let l=g("track"),r={id:l,kind:t,source:i,participantIdentity:e,roomId:a.roomId,publishedAt:new Date().toISOString(),muted:!1,metadata:o};return this.tracks.set(l,r),a.trackIds.push(l),r}getTrack(e){return this.tracks.get(e)}listTracks(e,t){let i=[];for(let o of this.tracks.values())e&&o.roomId!==e||t&&o.participantIdentity!==t||i.push(o);return i}unpublishTrack(e){let t=this.tracks.get(e);if(!t)return;let i=this.participants.get(t.participantIdentity);if(i){let o=i.trackIds.indexOf(e);o!==-1&&i.trackIds.splice(o,1)}return this.tracks.delete(e),t}setTrackMuted(e,t){let i=this.tracks.get(e);return i?(i.muted=t,!0):!1}startAgent(e,t,i={}){let o=this.rooms.get(e);if(!o)return this.createError("ROOM_NOT_FOUND",`Room ${e} not found`);if(!o.isActive)return this.createError("ROOM_ENDED",`Room ${e} has ended`);let a=g("agent"),n={id:a,roomId:e,name:t,status:"running",startedAt:new Date().toISOString(),config:{responseStrategy:"echo",...i},messageHistory:[]};return this.agents.set(a,n),this.addParticipant(e,`agent_${a}`,t,"agent","agent",!1),n}getAgent(e){return this.agents.get(e)}listAgents(e){let t=[];for(let i of this.agents.values())i.roomId===e&&t.push(i);return t}stopAgent(e){let t=this.agents.get(e);if(t)return t.status="stopped",t.stoppedAt=new Date().toISOString(),this.removeParticipant(`agent_${e}`),t}updateAgentStatus(e,t){let i=this.agents.get(e);return i?(i.status=t,t==="stopped"&&(i.stoppedAt=new Date().toISOString()),!0):!1}addAgentMessage(e,t,i){let o=this.agents.get(e);if(!o)return;let a={id:g("msg"),content:t,role:i,timestamp:new Date().toISOString()};return o.messageHistory.push(a),a}addMessage(e,t,i,o="standard",a){if(!this.rooms.get(e))return this.createError("ROOM_NOT_FOUND",`Room ${e} not found`);let l={id:g("msg"),roomId:e,content:i,participantIdentity:t,createdAt:new Date().toISOString(),type:o,attributes:a},r=this.messages.get(e)||[];return r.push(l),this.messages.set(e,r),l}getMessages(e,t){let i=this.messages.get(e)||[];return t?i.slice(-t):i}createError(e,t,i){return{code:e,message:t,details:i}}isError(e){return typeof e=="object"&&e!==null&&"code"in e&&"message"in e}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(e){this.rooms=new Map(Object.entries(e.rooms)),this.participants=new Map(Object.entries(e.participants)),this.tracks=new Map(Object.entries(e.tracks)),this.agents=new Map(Object.entries(e.agents)),this.messages=new Map(Object.entries(e.messages).map(([t,i])=>[t,i])),this.config=e.config}};var F=class{constructor(e={}){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:e.latencyMs??0,strictMode:e.strictMode??!1,seed:e.seed,scenario:e.scenario,errorConfig:e.errorConfig,autoEmitEvents:e.autoEmitEvents??!0,organizationId:e.organizationId??"mock_org",apiUrl:e.apiUrl??"https://mock-livekit.local"},this.state=new ne(this.config),this.events=new se,this.room=new D(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(e){this.config={...this.config,...e},this.state.updateConfig(e)}getConfig(){return{...this.config}}async simulateLatency(){this.config.latencyMs&&this.config.latencyMs>0&&await new Promise(e=>setTimeout(e,this.config.latencyMs))}applyScenario(e){switch(e){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 D(this)),this.room}async registerUser(e,t,i,o){if(await this.simulateLatency(),this.config.errorConfig?.unauthorized)throw new b("UNAUTHORIZED","Registration failed");let a={id:g("user"),externalId:e,organizationId:this.config.organizationId,role:"user",token:E("pending",e,new Date().toISOString())};return this._authToken=a.token,this._registeredUser=a,this.room.localParticipant.identity=e,this.room.localParticipant.name=i?.name||e,a}async registerAgent(e,t){if(await this.simulateLatency(),this.config.errorConfig?.unauthorized)throw new b("UNAUTHORIZED","Agent registration failed");let i=E("agent",e,new Date().toISOString());return this._authToken=i,this.room.localParticipant.identity=e,this.room.localParticipant.name=t.name,i}async quickStart(e){let{externalId:t,secret:i,metadata:o,...a}=e.user;return await this.registerUser(t,i,a,o),this.createRoom({language:e.room.language,timezone:e.room.timezone,affinity:e.room.affinity,metadata:e.room.metadata,disablePersistence:e.room.disablePersistence,contextualEvents:e.room.contextualEvents,userGroupId:e.room.userGroupId??void 0})}async createRoom(e,t={}){if(await this.simulateLatency(),this.config.errorConfig?.networkError||this.shouldThrowError())throw new b("NETWORK_ERROR","Failed to create room");let i=this.state.createRoom(`room_${Date.now()}`,e.affinity?.agentId,e.metadata);this.room.id=i.id,this.room.groupId=i.groupId,this.room.createdAt=i.createdAt,this.room.connectedAt=new Date().toISOString();let o=this.room.localParticipant.identity||"local_user";return this.state.addParticipant(i.id,o,this.room.localParticipant.name,"user","standard",!0),Object.keys(t).length>0&&(this.state.updateParticipantAttributes(o,t),this.room.localParticipant.setAttributes(t)),this.state.updateRoomConnectionState(i.id,"connected"),this.config.autoEmitEvents&&(this.events.emitRoomCreated(i),this.events.emitRoomConnectionStateChanged(i.id,"connected","disconnected")),(e.affinity?.agentId||e.affinity?.agentType)&&await this.startMockAgent(i.id,{type:e.affinity?.agentType,nature:e.affinity?.nature??"ai"}),await this.room.connect(i.wsURL,i.token),this.room}async joinRoom(e,t,i,o){await this.simulateLatency();let a=this.state.getRoom(e);if(!a)throw new z(e);if(!a.isActive)throw new b("ROOM_ENDED",`Room ${e} has ended`);this.room.id=a.id,this.room.groupId=a.groupId,this.room.createdAt=a.createdAt,this.room.connectedAt=new Date().toISOString();let n=this.room.localParticipant.identity||"local_user",l=this.state.addParticipant(e,n,this.room.localParticipant.name,"user","standard",!0);if(O(l))throw oe(l);if(o){let r={};for(let[d,u]of Object.entries(o))r[d]=String(u);this.state.updateParticipantAttributes(n,r)}return this.state.updateRoomConnectionState(e,"connected"),this.config.autoEmitEvents&&(this.events.emitParticipantJoined(e,l),this.events.emitRoomConnectionStateChanged(e,"connected","disconnected")),await this.room.connect(a.wsURL,a.token),this.room}async evaluateRoom(e){await this.simulateLatency();let t=e.roomId||this.room?.id;if(!t)throw new b("ROOM_NOT_FOUND","No room to evaluate");let i=this.state.getRoom(t);if(!i)throw new z(t);i.metadata||(i.metadata={}),i.metadata.evaluation={rating:e.rating,comment:e.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 e=this.room.id,t=this.room.localParticipant.identity;await this.stopLocalTracks(),this.state.removeParticipant(t),this.config.autoEmitEvents&&e&&this.events.emitParticipantLeft(e,t),this.room.removeAllListeners(),await this.room.disconnect()}}async stopLocalTracks(){let e=this.room?.localParticipant;e&&await Promise.all([e.setCameraEnabled(!1),e.setMicrophoneEnabled(!1),e.setScreenShareEnabled(!1)])}async disconnectAndCloseRoom(){await this.closeRoom(),await this.disconnect()}async readRoom(e){await this.simulateLatency();let t=this.state.getRoom(e);if(!t)throw new z(e);t.metadata||(t.metadata={}),t.metadata.lastReadAt=new Date().toISOString()}async getRooms(e){await this.simulateLatency();let t=this.state.listRooms();e.roomStatus==="active"?t=t.filter(l=>l.isActive):e.roomStatus==="closed"&&(t=t.filter(l=>!l.isActive)),e.ids?.length&&(t=t.filter(l=>e.ids.includes(l.id))),e.groupId&&(t=t.filter(l=>l.groupId===e.groupId));let i=e.offset??0,o=e.limit??20;return{items:t.slice(i,i+o).map(l=>({id:l.id,name:l.name,groupId:l.groupId,organizationId:this.config.organizationId,endedAt:l.endedAt??null,createdAt:l.createdAt,updatedAt:l.createdAt,status:l.isActive?"active":"ended",participants:this.state.listParticipants(l.id).map(r=>({id:r.identity,name:r.name||r.identity,role:r.role,isLocal:r.isLocal})),evaluations:[],_count:{messages:this.state.getMessages(l.id).length,participants:l.participantIds.length}})),count:t.length,limit:o,offset:i}}async sendMessage(e,t){if(await this.simulateLatency(),!this.room?.id)throw new b("INVALID_OPERATION","Not connected to a room");let i=this.state.addMessage(this.room.id,this.room.localParticipant.identity,e,"standard",t);if(O(i))throw oe(i);let o={id:i.id,timestamp:Date.now(),message:e,content:e,createdAt:i.createdAt,from:{identity:this.room.localParticipant.identity,name:this.room.localParticipant.name,id:this.room.localParticipant.identity,role:"user"}};for(let a of this.messageListeners)a([o]);this.config.autoEmitEvents&&this.events.emitMessageSent(this.room.id,i);for(let a of this.agents.values())a.isRunning&&a.roomId===this.room.id&&this.triggerAgentResponse(a,e)}async persistMessage(e){await this.simulateLatency();let t=this.state.addMessage(e.roomId,e.identity||"system",e.content);if(O(t))throw oe(t);return{items:[{id:t.id,timestamp:Date.now(),message:t.content,content:t.content,createdAt:t.createdAt}],count:1,limit:1,offset:0}}async getMessages(e){await this.simulateLatency();let t=e.roomId||this.room?.id;return t?this.state.getMessages(t,e.limit).map(o=>({id:o.id,timestamp:Date.parse(o.createdAt),message:o.content,content:o.content,createdAt:o.createdAt,from:{identity:o.participantIdentity,id:o.participantIdentity,role:"user"}})):[]}async sendMessageReport(e){await this.simulateLatency()}async deleteMessageReport(e){await this.simulateLatency()}async updateMessageReactions(e){await this.simulateLatency()}subscribeMessages(e){return this.messageListeners.add(e),()=>{this.messageListeners.delete(e)}}async sendTypingIndicator(e){if(!this.room?.id)return;let t={type:"typing",isTyping:e,timestamp:Date.now(),participantId:this.room.localParticipant.identity};for(let i of this.typingListeners)i(t);this.config.autoEmitEvents&&this.events.emitTypingIndicator(this.room.id,this.room.localParticipant.identity,e)}subscribeTypingIndicators(e){return this.typingListeners.add(e),()=>this.typingListeners.delete(e)}unsubscribeTypingIndicators(e){this.typingListeners.delete(e)}async sendContextualEvent(e){await this.simulateLatency()}async requestNewRoom(e){await this.simulateLatency();let t=this.state.createRoom(`transfer_${Date.now()}`,void 0,{originRoom:e.originRoom});return{id:t.id,groupId:t.groupId,token:t.token,wsURL:t.wsURL,createdAt:t.createdAt}}async confirmRoomRequest(e){return await this.simulateLatency(),{success:!0,message:"Request confirmed",roomId:e}}async cancelRoomRequest(e){return await this.simulateLatency(),{success:!0,message:"Request cancelled",roomId:e}}async finishCall(){await this.simulateLatency(),this.room?.id&&this.state.endRoom(this.room.id)}isFirebaseEnabled(){return!0}onPresenceChange(e){return()=>{}}onPresenceAgentChange(e,t){return()=>{}}async createCallRequest(e){return await this.simulateLatency(),g("call")}onNewCallRequest(e){return this.callRequestListeners.has("new")||this.callRequestListeners.set("new",new Set),this.callRequestListeners.get("new").add(e),()=>this.callRequestListeners.get("new")?.delete(e)}onCallRequestChange(e){return this.callRequestListeners.has("change")||this.callRequestListeners.set("change",new Set),this.callRequestListeners.get("change").add(e),()=>this.callRequestListeners.get("change")?.delete(e)}onCallRequestRemoved(e){return()=>{}}async acceptCallRequest(e){await this.simulateLatency()}async cancelCallRequest(e){await this.simulateLatency()}async cancelOnDisconnect(e){await this.simulateLatency()}subscribePendingRequests(e,t={}){return()=>{}}subscribeRequestChanges(e){return()=>{}}async tryAcceptRequest(e){return await this.simulateLatency(),!0}onRoomSync(e,t){return()=>{}}async clearRoomSync(e,t){await this.simulateLatency()}onNewRoomRequest(e,t){return()=>{}}unsubscribeAllFirebase(){this.callRequestListeners.clear()}async destroy(){this.unsubscribeAllFirebase(),this.messageListeners.clear(),this.typingListeners.clear(),await this.disconnect(),this.state.reset()}async startMockAgent(e,t){let i=t?.name||"AI Assistant",o=new ge(g("agent"),i,{responseStrategy:t?.responseStrategy||"echo",responseDelayMs:t?.responseDelayMs||100,cannedResponses:t?.cannedResponses||[],type:t?.type,nature:t?.nature});await o.start(e),this.agents.set(o.id,o),this.customAgentHandler&&o.setCustomHandler((d,u)=>this.customAgentHandler(d,u));let a=t?.type,n=Array.isArray(a)?a:[a].filter(Boolean),l=n.includes("video"),r=n.includes("voice");return(l||r)&&this.room.isConnected&&await this.room.simulateParticipantJoin(o.id,{name:i,kind:"agent",withCamera:l,withMicrophone:r||l,attributes:{"lk.agent.name":i,"lk.agent.state":"active",role:"agent"}}),this.config.autoEmitEvents&&this.events.emitAgentStarted(e,{id:o.id,name:o.name,roomId:e,status:"running",config:o.getConfig(),startedAt:new Date().toISOString(),messageHistory:[]}),o.id}async stopMockAgent(e){let t=this.agents.get(e);if(t){let i=t.roomId;await t.stop(),this.agents.delete(e),this.config.autoEmitEvents&&i&&this.events.emitAgentStopped(i,e)}}setAgentResponseHandler(e){this.customAgentHandler=e;for(let t of this.agents.values())t.setCustomHandler((i,o)=>e(i,o))}async triggerAgentResponse(e,t){if(this.config.scenario!=="agent_timeout")try{let i=await e.processMessage(t);if(!i)return;let o=this.state.addMessage(e.roomId,`agent_${e.id}`,i);if(!O(o)){let a={id:o.id,timestamp:Date.now(),message:i,content:i,createdAt:o.createdAt,from:{identity:`agent_${e.id}`,name:e.name,id:e.id,role:"agent"}};for(let n of this.messageListeners)n([a]);this.config.autoEmitEvents&&this.events.emitMessageReceived(e.roomId,o)}}catch(i){console.error("Agent response error:",i)}}simulateCallRequest(e){let t={id:g("call"),guestId:e.guestId||"guest_user",name:e.name||"Guest User",createdAt:new Date().toISOString(),status:e.status||"pending",...e},i=this.callRequestListeners.get("new");if(i)for(let o of i)o(t.id,t)}simulateParticipantJoin(e,t,i="user"){if(!this.room?.id)return;let o=this.state.addParticipant(this.room.id,e,t,i,"standard",!1);!O(o)&&this.config.autoEmitEvents&&this.events.emitParticipantJoined(this.room.id,o)}simulateParticipantLeave(e){if(!this.room?.id)return;this.state.removeParticipant(e)&&this.config.autoEmitEvents&&this.events.emitParticipantLeft(this.room.id,e)}simulateIncomingMessage(e,t){if(!this.room?.id)return;let i=this.state.addMessage(this.room.id,e,t);if(O(i))return;let o={id:i.id,timestamp:Date.now(),message:t,content:t,createdAt:i.createdAt,from:{identity:e,id:e,role:"user"}};for(let a of this.messageListeners)a([o]);this.config.autoEmitEvents&&this.events.emitMessageReceived(this.room.id,i)}async simulateDisconnect(){if(!this.room?.id)return;let e=this.room.state;this.room.state="disconnected",this.config.autoEmitEvents&&this.events.emitRoomConnectionStateChanged(this.room.id,"disconnected",e),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 D(this),Te()}seed(e){this.config.seed=e,this.state.updateConfig({seed:e})}setScenario(e){this.config.scenario=e,this.applyScenario(e)}exportState(){return{...this.state.toJSON(),eventHistory:this.events.getHistory()}}getEventHistory(e){return this.events.getHistory(e)}};var et={},q={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 Ze(){let s=N(q.MODE);if(s==="mock"||s==="real")return s;let e=N(q.USE_MOCK);return e==="true"||e==="1"||qi()?"mock":"real"}function Ui(){let s={},e=N(q.MOCK_LATENCY);e&&(s.latencyMs=parseInt(e,10));let t=N(q.MOCK_STRICT);(t==="true"||t==="1")&&(s.strictMode=!0);let i=N(q.MOCK_SCENARIO);i&&(s.scenario=i);let o=N(q.MOCK_SEED);return o&&(s.seed=parseInt(o,10)),s}function $i(){let s={},e=N(q.API_URL);e&&(s.apiUrl=e);let t=N(q.AUTH_URL);t&&(s.authUrl=t);let i=N(q.ORG_ID);return i&&(s.organizationId=i),s}function N(s){if(typeof process<"u"&&process.env)return process.env[s];if(typeof et<"u"&&et.env)return et.env[`VITE_${s}`]||et.env[s];if(typeof window<"u"&&window.__ENV__)return window.__ENV__[s]}function qi(){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 H=class s{static create(e){if((e.mode??Ze())==="mock"){let i={...Ui(),...e.mockConfig,organizationId:e.organizationId,apiUrl:e.apiUrl};return new F(i)}if(!e.organizationId||!e.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 Qe(e)}static createFromEnv(e){let t=e?.mode??Ze(),i=$i();return s.create({...i,...e,mode:t})}static createMock(e){return new F({organizationId:"mock_org",apiUrl:"https://mock-livekit.local",...e})}static createDeterministicMock(e=12345){return new F({organizationId:"mock_org",apiUrl:"https://mock-livekit.local",seed:e,strictMode:!0})}static getCurrentMode(){return Ze()}static isMockMode(){return Ze()==="mock"}static isMockService(e){return e instanceof F}};function St(s){return H.createFromEnv(s)}function Le(s){return H.createMock(s)}function De(s){let e=s?.id??g("room"),t=new Date().toISOString();return{id:e,name:`Test Room ${e}`,groupId:g("group"),createdAt:t,isActive:!0,participantIds:[],connectionState:"connected",wsURL:ie(e),token:E(e,"local_user",t),...s}}function Fe(s="local_user",e){let t=De(e);t.participantIds.push(s);let i={identity:s,name:"Local User",roomId:t.id,joinedAt:new Date().toISOString(),isConnected:!0,trackIds:[],role:"user",attributes:{},kind:"standard",isLocal:!0};return{room:t,localParticipant:i}}function tt(s){let e=De(s),t=new Date().toISOString(),i={identity:"user_1",name:"User One",roomId:e.id,joinedAt:t,isConnected:!0,trackIds:[],role:"user",attributes:{},kind:"standard",isLocal:!0},o={identity:"user_2",name:"User Two",roomId:e.id,joinedAt:t,isConnected:!0,trackIds:[],role:"user",attributes:{},kind:"standard",isLocal:!1};return e.participantIds.push(i.identity,o.identity),{room:e,participant1:i,participant2:o}}function Ue(s,e){let{room:t,localParticipant:i}=Fe("local_user",e),o=new Date().toISOString(),a=g("agent"),n={id:a,roomId:t.id,name:"AI Assistant",status:"running",startedAt:o,config:{responseStrategy:"echo",nature:"ai",...s},messageHistory:[]},l={identity:`agent_${a}`,name:"AI Assistant",roomId:t.id,joinedAt:o,isConnected:!0,trackIds:[],role:"agent",attributes:{},kind:"agent",isLocal:!1};return t.participantIds.push(l.identity),{room:t,localParticipant:i,agent:n,agentParticipant:l}}function Mt(s){let{room:e,localParticipant:t,agent:i,agentParticipant:o}=Ue(void 0,s),a={id:g("track"),kind:"data",source:"unknown",participantIdentity:o.identity,roomId:e.id,publishedAt:new Date().toISOString(),muted:!1};return o.trackIds.push(a.id),{room:e,localParticipant:t,agent:i,dataTrack:a}}function _t(s){let{room:e,localParticipant:t}=Fe("local_user",s),i=new Date().toISOString(),o={id:g("track"),kind:"audio",source:"microphone",participantIdentity:t.identity,roomId:e.id,publishedAt:i,muted:!1},a={id:g("track"),kind:"video",source:"camera",participantIdentity:t.identity,roomId:e.id,publishedAt:i,muted:!1};return t.trackIds.push(o.id,a.id),{room:e,participant:t,audioTrack:o,videoTrack:a}}function it(s,e){let t=e?.identity??g("participant");return{identity:t,name:`Participant ${t}`,roomId:s,joinedAt:new Date().toISOString(),isConnected:!0,trackIds:[],role:"user",attributes:{},kind:"standard",isLocal:!1,...e}}function xt(s,e){let t=[];for(let i=0;i<e;i++)t.push(it(s,{identity:`participant_${i+1}`,name:`Participant ${i+1}`,isLocal:i===0}));return t}function $e(s,e){return{id:e?.id??g("agent"),roomId:s,name:"AI Assistant",status:"running",startedAt:new Date().toISOString(),config:{responseStrategy:"echo",nature:"ai",...e?.config},messageHistory:[],...e}}function At(s,e){return $e(s,{config:{responseStrategy:"canned",cannedResponses:e}})}function Ct(s,e){return $e(s,{config:{responseStrategy:"sequential",cannedResponses:e}})}function Pt(s,e,t){return{id:g("msg"),roomId:s,content:"Test message",participantIdentity:e,createdAt:new Date().toISOString(),type:"standard",...t}}function ot(s,e){return e.map((t,i)=>({id:g("msg"),roomId:s,content:t.content,participantIdentity:t.identity,createdAt:new Date(Date.now()+i*1e3).toISOString(),type:"standard"}))}function xe(s){return{latencyMs:0,strictMode:!1,autoEmitEvents:!0,organizationId:"test_org",apiUrl:"https://mock-api.local",...s}}function Rt(s){return xe({strictMode:!0,...s})}function Tt(s,e){return xe({latencyMs:s,...e})}function It(s,e){return xe({seed:s,...e})}function Et(){let{room:s,localParticipant:e,agent:t,agentParticipant:i}=Ue(),o=ot(s.id,[{identity:e.identity,content:"Hello, I need help"},{identity:i.identity,content:"Hi! How can I assist you today?"},{identity:e.identity,content:"I have a question about my order"},{identity:i.identity,content:"Of course! Please provide your order number."}]);return{room:s,user:e,agent:t,agentParticipant:i,messages:o}}function zt(){let{room:s,participant1:e,participant2:t}=tt(),i=new Date().toISOString(),o=[{id:g("track"),kind:"audio",source:"microphone",participantIdentity:e.identity,roomId:s.id,publishedAt:i,muted:!1},{id:g("track"),kind:"video",source:"camera",participantIdentity:e.identity,roomId:s.id,publishedAt:i,muted:!1},{id:g("track"),kind:"audio",source:"microphone",participantIdentity:t.identity,roomId:s.id,publishedAt:i,muted:!1},{id:g("track"),kind:"video",source:"camera",participantIdentity:t.identity,roomId:s.id,publishedAt:i,muted:!1}];return e.trackIds.push(o[0].id,o[1].id),t.trackIds.push(o[2].id,o[3].id),{room:s,participant1:e,participant2:t,tracks:o}}var Ae=class{constructor(e,t,i,o,a){this.index=0;this._complete=!1;this.info={id:e,attributes:o,topic:a,timestamp:Date.now()},this.participantIdentity=t,this.topic=a,this.chunks=Array.isArray(i)?i:[i],this.info.totalSize=this.chunks.reduce((n,l)=>n+l.length,0)}get isComplete(){return this._complete}async*[Symbol.asyncIterator](){for(let e of this.chunks)yield e;this._complete=!0}async read(){return this.index>=this.chunks.length?(this._complete=!0,null):this.chunks[this.index++]}async readAll(){let e=this.chunks.slice(this.index).join("");return this.index=this.chunks.length,this._complete=!0,e}cancel(){this._complete=!0}};ae();var W=null;function y(s){return W||(W=Le({organizationId:"storybook_org",apiUrl:"https://storybook.mock",latencyMs:50,autoEmitEvents:!0,...s})),W}function st(){W&&W.reset()}async function Ot(){W&&(await W.destroy(),W=null)}function Lt(s={}){return(e,t)=>{st();let i={default:void 0,slow_network:"slow_network",unreliable:"unreliable",agent_timeout:"agent_timeout"},o=y({organizationId:s.organizationId,latencyMs:s.latencyMs??50,scenario:s.scenario?i[s.scenario]:void 0});return(async()=>{try{if(s.autoRegisterUser&&await o.registerUser(s.autoRegisterUser.identity,s.autoRegisterUser.secret||"storybook_secret",{name:s.autoRegisterUser.name||"Storybook User"}),s.autoCreateRoom){if(await o.createRoom({language:s.autoCreateRoom.language||"en",timezone:s.autoCreateRoom.timezone||"UTC"}),s.seedMessages)for(let a of s.seedMessages)o.simulateIncomingMessage(a.from,a.content);s.autoStartAgent&&o.room?.id&&await o.startMockAgent(o.room.id,s.autoStartAgent)}}catch(a){console.error("[Storybook Mock] Setup error:",a)}})(),window.__mockConversationService=o,e()}}function Dt(s){return H.isMockService(s)}var Ft={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 Ut(s){return()=>y(s)}var at={async receiveMessage(s,e){y().simulateIncomingMessage(s,e)},simulateJoin(s,e){y().simulateParticipantJoin(s,e)},simulateLeave(s){y().simulateParticipantLeave(s)},async simulateVideoParticipant(s,e,t){let o=y().room;o&&await o.simulateParticipantJoin(s,{name:e||s,kind:"standard",withCamera:t?.withCamera??!0,withMicrophone:t?.withMicrophone??!0})},async simulateVideoAgent(s,e){let i=y().room;i&&await i.simulateAgentJoin(s,e||"AI Agent")},async enableLocalCamera(){let e=y().room;e&&await e.localParticipant.setCameraEnabled(!0)},async disableLocalCamera(){let e=y().room;e&&await e.localParticipant.setCameraEnabled(!1)},async enableLocalMicrophone(){let e=y().room;e&&await e.localParticipant.setMicrophoneEnabled(!0)},async simulateMultipleParticipants(s){let e=["Alice","Bob","Carol","David","Eve","Frank","Grace","Henry","Ivy","Jack"],i=y().room;if(i)for(let o=0;o<Math.min(s,e.length);o++)await i.simulateParticipantJoin(`participant_${o+1}`,{name:e[o],kind:"standard",withCamera:!0,withMicrophone:!0}),await new Promise(a=>setTimeout(a,100))},clearParticipants(){let e=y().room;if(e)for(let t of e.remoteParticipants.keys())e.simulateParticipantLeave(t)},simulateCallRequest(s,e){y().simulateCallRequest({name:s,guestId:e||`guest_${Date.now()}`})},async simulateDisconnect(){await y().simulateDisconnect()},getEventHistory(){return y().getEventHistory()},exportState(){return y().exportState()},getRoom(){return y().room}};typeof window<"u"&&(window.MockServiceActions=at);var nt={OpenWidget:"openWidget",InitialStep:"initialStep"};var $t="ol",Mi={Action:"action",Message:"message",StepId:"stepId",InstallationId:"installationId"},Bi=new Set(Object.values(nt)),rt=class s{constructor(){this.params=s.parse()}get hasParams(){return Object.keys(this.params).length>0}getParams(){return{...this.params}}matchesInstallation(e){return this.params.installationId?this.params.installationId===e:!0}cleanUrl(){let e=new URL(window.location.href),t=!1;for(let i of Array.from(e.searchParams.keys()))i.startsWith($t)&&i.substring($t.length)in Mi&&(e.searchParams.delete(i),t=!0);t&&window.history.replaceState(window.history.state,"",e.toString())}static parse(){let e={},t=new URLSearchParams(window.location.search);for(let[i,o]of Object.entries(Mi)){let a=`${$t}${i}`,n=t.get(a);if(n!==null){if(o==="action"){Bi.has(n)&&(e.action=n);continue}e[o]=n}}return e}};0&&(module.exports={AgentNotFoundError,Asset,ConversationServiceFactory,DeepLinkAction,DeepLinkService,InvalidOperationError,MockConversationService,MockEventEmitter,MockLiveKitError,MockLocalParticipant,MockParticipant,MockRoom,MockServiceActions,MockState,MockTextStreamReader,MockTrack,MockTrackPublication,NetworkError,OSBAsset,OSBSideBar,OSBUpload,ParticipantAlreadyJoinedError,ParticipantNotFoundError,RoomEndedError,RoomNotFoundError,SYNTHETIC_MEDIA_PRESETS,SideBar,StorybookScenarios,TimeoutError,TrackNotFoundError,UnauthorizedError,Upload,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,createVideoCallScenario,decodeMockToken,destroyStorybookMockService,generateMockApiResponseId,generateMockExternalId,generateMockId,generateMockIdBatch,generateMockMessageId,generateMockParticipantIdentity,generateMockRoomName,generateMockToken,generateMockTrackSid,generateMockWsUrl,generateSeededMockId,getStorybookMockService,isMockConversationService,isMockError,isMockLiveKitError,resetIdCounter,resetStorybookMockService,setIdCounter,withMockConversationService});
4771
+ /*! @onlive.ai/common-121 v0.2.228 | © 2026 Onlive.ai */