@onlive.ai/common-121 0.2.179 → 0.2.187

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 (449) hide show
  1. package/audi-dark.theme-aO_Pa27x.d.cts +11 -0
  2. package/audi-dark.theme-aO_Pa27x.d.ts +11 -0
  3. package/audi.theme-BP7nboRq.d.cts +11 -0
  4. package/audi.theme-BP7nboRq.d.ts +11 -0
  5. package/australia.theme-BkfhMf1z.d.cts +11 -0
  6. package/australia.theme-BkfhMf1z.d.ts +11 -0
  7. package/{chunk-CHMR2I4G.js → chunk-V7XHRWMT.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-Bez8yPGT.d.cts +11 -0
  77. package/cuernavaca.theme-Bez8yPGT.d.ts +11 -0
  78. package/cupra-diagonal.theme-CvdXkM9K.d.cts +11 -0
  79. package/cupra-diagonal.theme-CvdXkM9K.d.ts +11 -0
  80. package/cupra-events.theme-ln2vh1C0.d.cts +11 -0
  81. package/cupra-events.theme-ln2vh1C0.d.ts +11 -0
  82. package/cupra.theme-xa6yZhYo.d.cts +11 -0
  83. package/cupra.theme-xa6yZhYo.d.ts +11 -0
  84. package/germany.theme-Dra_5Jz0.d.cts +11 -0
  85. package/germany.theme-Dra_5Jz0.d.ts +11 -0
  86. package/hyundai.theme-BATWnkTl.d.cts +11 -0
  87. package/hyundai.theme-BATWnkTl.d.ts +11 -0
  88. package/index.cjs +13 -13
  89. package/index.d.cts +178 -3
  90. package/index.d.ts +178 -3
  91. package/index.js +139 -139
  92. package/italy.theme-YukqsD2q.d.cts +11 -0
  93. package/italy.theme-YukqsD2q.d.ts +11 -0
  94. package/magimix.theme-C7eoXRAA.d.cts +11 -0
  95. package/magimix.theme-C7eoXRAA.d.ts +11 -0
  96. package/{media-TFGJGBU2.js → media-MWJPMNO2.js} +2 -2
  97. package/onlive-ai.theme-CMYahnHv.d.cts +11 -0
  98. package/onlive-ai.theme-CMYahnHv.d.ts +11 -0
  99. package/onlive.theme-B7tNdG9s.d.cts +11 -0
  100. package/onlive.theme-B7tNdG9s.d.ts +11 -0
  101. package/package.json +7 -6
  102. package/react/components/asset/Asset.cjs +1 -1
  103. package/react/components/asset/Asset.jsx +1 -1
  104. package/react/components/side-bar/SideBar.cjs +1 -1
  105. package/react/components/side-bar/SideBar.jsx +1 -1
  106. package/react/components/upload/Upload.cjs +1 -1
  107. package/react/components/upload/Upload.jsx +1 -1
  108. package/seat-cupra.theme-CzvloqhA.d.cts +11 -0
  109. package/seat-cupra.theme-CzvloqhA.d.ts +11 -0
  110. package/services/audio.service.cjs +1 -1
  111. package/services/audio.service.d.cts +1 -1
  112. package/services/audio.service.d.ts +1 -1
  113. package/services/audio.service.js +1 -1
  114. package/services/conversation/conversation.service.cjs +2 -2
  115. package/services/conversation/conversation.service.d.cts +15 -2
  116. package/services/conversation/conversation.service.d.ts +15 -2
  117. package/services/conversation/conversation.service.js +2 -2
  118. package/services/conversation/conversation.types.cjs +2 -2
  119. package/services/conversation/conversation.types.d.cts +112 -2
  120. package/services/conversation/conversation.types.d.ts +112 -2
  121. package/services/conversation/conversation.types.js +2 -2
  122. package/services/conversation/index.cjs +2 -2
  123. package/services/conversation/index.d.cts +2 -2
  124. package/services/conversation/index.d.ts +2 -2
  125. package/services/conversation/index.js +2 -2
  126. package/services/conversation/mock/actor/agent.cjs +1 -1
  127. package/services/conversation/mock/actor/agent.d.cts +1 -1
  128. package/services/conversation/mock/actor/agent.d.ts +1 -1
  129. package/services/conversation/mock/actor/agent.js +1 -1
  130. package/services/conversation/mock/actor/index.cjs +1 -1
  131. package/services/conversation/mock/actor/index.d.cts +1 -1
  132. package/services/conversation/mock/actor/index.d.ts +1 -1
  133. package/services/conversation/mock/actor/index.js +1 -1
  134. package/services/conversation/mock/actor/strategies.cjs +1 -1
  135. package/services/conversation/mock/actor/strategies.d.cts +1 -1
  136. package/services/conversation/mock/actor/strategies.d.ts +1 -1
  137. package/services/conversation/mock/actor/strategies.js +1 -1
  138. package/services/conversation/mock/errors.cjs +1 -1
  139. package/services/conversation/mock/errors.d.cts +1 -1
  140. package/services/conversation/mock/errors.d.ts +1 -1
  141. package/services/conversation/mock/errors.js +1 -1
  142. package/services/conversation/mock/events.cjs +1 -1
  143. package/services/conversation/mock/events.d.cts +1 -1
  144. package/services/conversation/mock/events.d.ts +1 -1
  145. package/services/conversation/mock/events.js +1 -1
  146. package/services/conversation/mock/factory.cjs +2 -2
  147. package/services/conversation/mock/factory.d.cts +1 -1
  148. package/services/conversation/mock/factory.d.ts +1 -1
  149. package/services/conversation/mock/factory.js +2 -2
  150. package/services/conversation/mock/fixtures.cjs +1 -1
  151. package/services/conversation/mock/fixtures.d.cts +1 -1
  152. package/services/conversation/mock/fixtures.d.ts +1 -1
  153. package/services/conversation/mock/fixtures.js +1 -1
  154. package/services/conversation/mock/generators.cjs +1 -1
  155. package/services/conversation/mock/generators.d.cts +1 -1
  156. package/services/conversation/mock/generators.d.ts +1 -1
  157. package/services/conversation/mock/generators.js +1 -1
  158. package/services/conversation/mock/index.cjs +2 -2
  159. package/services/conversation/mock/index.d.cts +1 -1
  160. package/services/conversation/mock/index.d.ts +1 -1
  161. package/services/conversation/mock/index.js +2 -2
  162. package/services/conversation/mock/livekit/index.cjs +1 -1
  163. package/services/conversation/mock/livekit/index.d.cts +1 -1
  164. package/services/conversation/mock/livekit/index.d.ts +1 -1
  165. package/services/conversation/mock/livekit/index.js +1 -1
  166. package/services/conversation/mock/livekit/local-participant.cjs +1 -1
  167. package/services/conversation/mock/livekit/local-participant.d.cts +1 -1
  168. package/services/conversation/mock/livekit/local-participant.d.ts +1 -1
  169. package/services/conversation/mock/livekit/local-participant.js +1 -1
  170. package/services/conversation/mock/livekit/participant.cjs +1 -1
  171. package/services/conversation/mock/livekit/participant.d.cts +1 -1
  172. package/services/conversation/mock/livekit/participant.d.ts +1 -1
  173. package/services/conversation/mock/livekit/participant.js +1 -1
  174. package/services/conversation/mock/livekit/room.cjs +1 -1
  175. package/services/conversation/mock/livekit/room.d.cts +1 -1
  176. package/services/conversation/mock/livekit/room.d.ts +1 -1
  177. package/services/conversation/mock/livekit/room.js +1 -1
  178. package/services/conversation/mock/livekit/streams.cjs +1 -1
  179. package/services/conversation/mock/livekit/streams.d.cts +1 -1
  180. package/services/conversation/mock/livekit/streams.d.ts +1 -1
  181. package/services/conversation/mock/livekit/streams.js +1 -1
  182. package/services/conversation/mock/livekit/tracks.cjs +1 -1
  183. package/services/conversation/mock/livekit/tracks.d.cts +1 -1
  184. package/services/conversation/mock/livekit/tracks.d.ts +1 -1
  185. package/services/conversation/mock/livekit/tracks.js +1 -1
  186. package/services/conversation/mock/media.cjs +1 -1
  187. package/services/conversation/mock/media.d.cts +1 -1
  188. package/services/conversation/mock/media.d.ts +1 -1
  189. package/services/conversation/mock/media.js +1 -1
  190. package/services/conversation/mock/service.cjs +2 -2
  191. package/services/conversation/mock/service.d.cts +7 -2
  192. package/services/conversation/mock/service.d.ts +7 -2
  193. package/services/conversation/mock/service.js +2 -2
  194. package/services/conversation/mock/service.test.cjs +2 -2
  195. package/services/conversation/mock/service.test.d.cts +1 -1
  196. package/services/conversation/mock/service.test.d.ts +1 -1
  197. package/services/conversation/mock/service.test.js +2 -2
  198. package/services/conversation/mock/state.cjs +1 -1
  199. package/services/conversation/mock/state.d.cts +1 -1
  200. package/services/conversation/mock/state.d.ts +1 -1
  201. package/services/conversation/mock/state.js +1 -1
  202. package/services/conversation/mock/storybook.cjs +2 -2
  203. package/services/conversation/mock/storybook.d.cts +1 -1
  204. package/services/conversation/mock/storybook.d.ts +1 -1
  205. package/services/conversation/mock/storybook.js +2 -2
  206. package/services/conversation/mock/types.cjs +1 -1
  207. package/services/conversation/mock/types.d.cts +1 -1
  208. package/services/conversation/mock/types.d.ts +1 -1
  209. package/services/conversation/mock/types.js +1 -1
  210. package/services/deep-link.service.cjs +2 -0
  211. package/services/deep-link.service.d.cts +77 -0
  212. package/services/deep-link.service.d.ts +77 -0
  213. package/services/deep-link.service.js +2 -0
  214. package/services/faqs/faqs.service.cjs +1 -1
  215. package/services/faqs/faqs.service.d.cts +1 -1
  216. package/services/faqs/faqs.service.d.ts +1 -1
  217. package/services/faqs/faqs.service.js +1 -1
  218. package/services/faqs/faqs.types.cjs +1 -1
  219. package/services/faqs/faqs.types.d.cts +1 -1
  220. package/services/faqs/faqs.types.d.ts +1 -1
  221. package/services/faqs/faqs.types.js +1 -1
  222. package/services/faqs/index.cjs +1 -1
  223. package/services/faqs/index.d.cts +1 -1
  224. package/services/faqs/index.d.ts +1 -1
  225. package/services/faqs/index.js +1 -1
  226. package/services/file/file.service.cjs +1 -1
  227. package/services/file/file.service.d.cts +1 -1
  228. package/services/file/file.service.d.ts +1 -1
  229. package/services/file/file.service.js +1 -1
  230. package/services/file/file.types.cjs +1 -1
  231. package/services/file/file.types.d.cts +1 -1
  232. package/services/file/file.types.d.ts +1 -1
  233. package/services/file/file.types.js +1 -1
  234. package/services/file/index.cjs +1 -1
  235. package/services/file/index.d.cts +1 -1
  236. package/services/file/index.d.ts +1 -1
  237. package/services/file/index.js +1 -1
  238. package/services/firebase/firebase-api.cjs +1 -1
  239. package/services/firebase/firebase-api.d.cts +1 -1
  240. package/services/firebase/firebase-api.d.ts +1 -1
  241. package/services/firebase/firebase-api.js +1 -1
  242. package/services/multimedia/config.example.cjs +1 -1
  243. package/services/multimedia/config.example.d.cts +1 -1
  244. package/services/multimedia/config.example.d.ts +1 -1
  245. package/services/multimedia/config.example.js +1 -1
  246. package/services/multimedia/index.cjs +1 -1
  247. package/services/multimedia/index.d.cts +1 -1
  248. package/services/multimedia/index.d.ts +1 -1
  249. package/services/multimedia/index.js +1 -1
  250. package/services/multimedia/multimedia.service.cjs +1 -1
  251. package/services/multimedia/multimedia.service.d.cts +1 -1
  252. package/services/multimedia/multimedia.service.d.ts +1 -1
  253. package/services/multimedia/multimedia.service.js +1 -1
  254. package/services/multimedia/multimedia.types.cjs +1 -1
  255. package/services/multimedia/multimedia.types.d.cts +1 -1
  256. package/services/multimedia/multimedia.types.d.ts +1 -1
  257. package/services/multimedia/multimedia.types.js +1 -1
  258. package/services/product/index.cjs +1 -1
  259. package/services/product/index.d.cts +1 -1
  260. package/services/product/index.d.ts +1 -1
  261. package/services/product/index.js +1 -1
  262. package/services/product/product.service.cjs +1 -1
  263. package/services/product/product.service.d.cts +1 -1
  264. package/services/product/product.service.d.ts +1 -1
  265. package/services/product/product.service.js +1 -1
  266. package/services/product/product.types.cjs +1 -1
  267. package/services/product/product.types.d.cts +1 -1
  268. package/services/product/product.types.d.ts +1 -1
  269. package/services/product/product.types.js +1 -1
  270. package/services/request.provider.cjs +1 -1
  271. package/services/request.provider.d.cts +1 -1
  272. package/services/request.provider.d.ts +1 -1
  273. package/services/request.provider.js +1 -1
  274. package/services/session.service.cjs +2 -2
  275. package/services/session.service.d.cts +1 -1
  276. package/services/session.service.d.ts +1 -1
  277. package/services/session.service.js +2 -2
  278. package/services/upload/index.cjs +1 -1
  279. package/services/upload/index.d.cts +1 -1
  280. package/services/upload/index.d.ts +1 -1
  281. package/services/upload/index.js +1 -1
  282. package/services/upload/upload.service.cjs +1 -1
  283. package/services/upload/upload.service.d.cts +1 -1
  284. package/services/upload/upload.service.d.ts +1 -1
  285. package/services/upload/upload.service.js +1 -1
  286. package/themes/custom/audi-dark.theme.cjs +920 -0
  287. package/themes/custom/audi-dark.theme.d.cts +3 -0
  288. package/themes/custom/audi-dark.theme.d.ts +3 -0
  289. package/themes/custom/audi-dark.theme.js +920 -0
  290. package/themes/custom/audi.theme.cjs +777 -0
  291. package/themes/custom/audi.theme.d.cts +3 -0
  292. package/themes/custom/audi.theme.d.ts +3 -0
  293. package/themes/custom/audi.theme.js +777 -0
  294. package/themes/custom/australia.theme.cjs +386 -0
  295. package/themes/custom/australia.theme.d.cts +3 -0
  296. package/themes/custom/australia.theme.d.ts +3 -0
  297. package/themes/custom/australia.theme.js +386 -0
  298. package/themes/custom/cuernavaca.theme.cjs +196 -0
  299. package/themes/custom/cuernavaca.theme.d.cts +3 -0
  300. package/themes/custom/cuernavaca.theme.d.ts +3 -0
  301. package/themes/custom/cuernavaca.theme.js +196 -0
  302. package/themes/custom/cupra-diagonal.theme.cjs +1031 -0
  303. package/themes/custom/cupra-diagonal.theme.d.cts +3 -0
  304. package/themes/custom/cupra-diagonal.theme.d.ts +3 -0
  305. package/themes/custom/cupra-diagonal.theme.js +1031 -0
  306. package/themes/custom/cupra-events.theme.cjs +555 -0
  307. package/themes/custom/cupra-events.theme.d.cts +3 -0
  308. package/themes/custom/cupra-events.theme.d.ts +3 -0
  309. package/themes/custom/cupra-events.theme.js +555 -0
  310. package/themes/custom/cupra.theme.cjs +147 -0
  311. package/themes/custom/cupra.theme.d.cts +3 -0
  312. package/themes/custom/cupra.theme.d.ts +3 -0
  313. package/themes/custom/cupra.theme.js +147 -0
  314. package/themes/custom/germany.theme.cjs +716 -0
  315. package/themes/custom/germany.theme.d.cts +3 -0
  316. package/themes/custom/germany.theme.d.ts +3 -0
  317. package/themes/custom/germany.theme.js +716 -0
  318. package/themes/custom/hyundai.theme.cjs +294 -0
  319. package/themes/custom/hyundai.theme.d.cts +3 -0
  320. package/themes/custom/hyundai.theme.d.ts +3 -0
  321. package/themes/custom/hyundai.theme.js +294 -0
  322. package/themes/custom/italy.theme.cjs +850 -0
  323. package/themes/custom/italy.theme.d.cts +3 -0
  324. package/themes/custom/italy.theme.d.ts +3 -0
  325. package/themes/custom/italy.theme.js +850 -0
  326. package/themes/custom/magimix.theme.cjs +119 -0
  327. package/themes/custom/magimix.theme.d.cts +3 -0
  328. package/themes/custom/magimix.theme.d.ts +3 -0
  329. package/themes/custom/magimix.theme.js +119 -0
  330. package/themes/custom/onlive-ai.theme.cjs +74 -0
  331. package/themes/custom/onlive-ai.theme.d.cts +3 -0
  332. package/themes/custom/onlive-ai.theme.d.ts +3 -0
  333. package/themes/custom/onlive-ai.theme.js +74 -0
  334. package/themes/custom/onlive.theme.cjs +33 -0
  335. package/themes/custom/onlive.theme.d.cts +3 -0
  336. package/themes/custom/onlive.theme.d.ts +3 -0
  337. package/themes/custom/onlive.theme.js +33 -0
  338. package/themes/custom/seat-cupra.theme.cjs +478 -0
  339. package/themes/custom/seat-cupra.theme.d.cts +3 -0
  340. package/themes/custom/seat-cupra.theme.d.ts +3 -0
  341. package/themes/custom/seat-cupra.theme.js +478 -0
  342. package/themes/dark.cjs +1 -1
  343. package/themes/dark.d.cts +1 -1
  344. package/themes/dark.d.ts +1 -1
  345. package/themes/dark.js +1 -1
  346. package/themes/light.cjs +1 -1
  347. package/themes/light.d.cts +1 -1
  348. package/themes/light.d.ts +1 -1
  349. package/themes/light.js +1 -1
  350. package/types/deep-link.types.cjs +2 -0
  351. package/types/deep-link.types.d.cts +32 -0
  352. package/types/deep-link.types.d.ts +32 -0
  353. package/types/deep-link.types.js +2 -0
  354. package/types/globals.cjs +1 -1
  355. package/types/globals.d.cts +1 -1
  356. package/types/globals.d.ts +1 -1
  357. package/types/globals.js +1 -1
  358. package/types/tracking-options.cjs +1 -1
  359. package/types/tracking-options.d.cts +1 -1
  360. package/types/tracking-options.d.ts +1 -1
  361. package/types/tracking-options.js +1 -1
  362. package/utils/adopt-styles.cjs +1 -1
  363. package/utils/adopt-styles.d.cts +1 -1
  364. package/utils/adopt-styles.d.ts +1 -1
  365. package/utils/adopt-styles.js +1 -1
  366. package/utils/apply-optional-styles.cjs +6550 -0
  367. package/utils/apply-optional-styles.d.cts +47 -0
  368. package/utils/apply-optional-styles.d.ts +47 -0
  369. package/utils/apply-optional-styles.js +6550 -0
  370. package/utils/browser-preferences.cjs +1 -1
  371. package/utils/browser-preferences.d.cts +1 -1
  372. package/utils/browser-preferences.d.ts +1 -1
  373. package/utils/browser-preferences.js +1 -1
  374. package/utils/classify-media.cjs +1 -1
  375. package/utils/classify-media.d.cts +1 -1
  376. package/utils/classify-media.d.ts +1 -1
  377. package/utils/classify-media.js +1 -1
  378. package/utils/decorators.cjs +1 -1
  379. package/utils/decorators.d.cts +1 -1
  380. package/utils/decorators.d.ts +1 -1
  381. package/utils/decorators.js +1 -1
  382. package/utils/detected-lang.cjs +1 -1
  383. package/utils/detected-lang.d.cts +1 -1
  384. package/utils/detected-lang.d.ts +1 -1
  385. package/utils/detected-lang.js +1 -1
  386. package/utils/fullscreen.cjs +1 -1
  387. package/utils/fullscreen.d.cts +1 -1
  388. package/utils/fullscreen.d.ts +1 -1
  389. package/utils/fullscreen.js +1 -1
  390. package/utils/insert-script.cjs +1 -1
  391. package/utils/insert-script.d.cts +1 -1
  392. package/utils/insert-script.d.ts +1 -1
  393. package/utils/insert-script.js +1 -1
  394. package/utils/is-map-compatible.cjs +1 -1
  395. package/utils/is-map-compatible.d.cts +1 -1
  396. package/utils/is-map-compatible.d.ts +1 -1
  397. package/utils/is-map-compatible.js +1 -1
  398. package/utils/markdown.cjs +1 -1
  399. package/utils/markdown.d.cts +1 -1
  400. package/utils/markdown.d.ts +1 -1
  401. package/utils/markdown.js +1 -1
  402. package/utils/merge.cjs +1 -1
  403. package/utils/merge.d.cts +1 -1
  404. package/utils/merge.d.ts +1 -1
  405. package/utils/merge.js +1 -1
  406. package/utils/multiband-track-volume.cjs +1 -1
  407. package/utils/multiband-track-volume.d.cts +1 -1
  408. package/utils/multiband-track-volume.d.ts +1 -1
  409. package/utils/multiband-track-volume.js +1 -1
  410. package/utils/onlive-url-params.cjs +1 -1
  411. package/utils/onlive-url-params.d.cts +1 -1
  412. package/utils/onlive-url-params.d.ts +1 -1
  413. package/utils/onlive-url-params.js +1 -1
  414. package/utils/pretty-distance.cjs +1 -1
  415. package/utils/pretty-distance.d.cts +1 -1
  416. package/utils/pretty-distance.d.ts +1 -1
  417. package/utils/pretty-distance.js +1 -1
  418. package/utils/pretty-time.cjs +1 -1
  419. package/utils/pretty-time.d.cts +1 -1
  420. package/utils/pretty-time.d.ts +1 -1
  421. package/utils/pretty-time.js +1 -1
  422. package/utils/random-string.cjs +1 -1
  423. package/utils/random-string.d.cts +1 -1
  424. package/utils/random-string.d.ts +1 -1
  425. package/utils/random-string.js +1 -1
  426. package/utils/resource-type.cjs +1 -1
  427. package/utils/resource-type.d.cts +1 -1
  428. package/utils/resource-type.d.ts +1 -1
  429. package/utils/resource-type.js +1 -1
  430. package/utils/round-number.cjs +1 -1
  431. package/utils/round-number.d.cts +1 -1
  432. package/utils/round-number.d.ts +1 -1
  433. package/utils/round-number.js +1 -1
  434. package/utils/safe-html.cjs +1 -1
  435. package/utils/safe-html.d.cts +1 -1
  436. package/utils/safe-html.d.ts +1 -1
  437. package/utils/safe-html.js +1 -1
  438. package/utils/sanitize.cjs +1 -1
  439. package/utils/sanitize.d.cts +1 -1
  440. package/utils/sanitize.d.ts +1 -1
  441. package/utils/sanitize.js +1 -1
  442. package/utils/spread.cjs +1 -1
  443. package/utils/spread.d.cts +1 -1
  444. package/utils/spread.d.ts +1 -1
  445. package/utils/spread.js +1 -1
  446. package/utils/watch.cjs +1 -1
  447. package/utils/watch.d.cts +1 -1
  448. package/utils/watch.d.ts +1 -1
  449. package/utils/watch.js +1 -1
@@ -1,2 +1,2 @@
1
- /*! @onlive.ai/common-121 v0.2.179 | © 2026 Onlive.ai */
2
- var ot=Object.defineProperty;var at=(r,t)=>()=>(r&&(t=r(r=0)),t);var ct=(r,t)=>{for(var e in t)ot(r,e,{get:t[e],enumerable:!0})};var P={};ct(P,{SYNTHETIC_MEDIA_PRESETS:()=>it,createSyntheticAudioTrack:()=>tt,createSyntheticMedia:()=>et,createSyntheticMediaFromPreset:()=>dt,createSyntheticVideoTrack:()=>X});function X(r={}){let{width:t=640,height:e=480,fps:i=30,backgroundColor:n="#1a1a2e",foregroundColor:s="#4361ee",label:d="Mock Video",animation:o="wave"}=r,c=document.createElement("canvas");c.width=t,c.height=e;let a=c.getContext("2d"),l,S=Date.now(),C={wave:p=>{a.fillStyle=n,a.fillRect(0,0,t,e),a.strokeStyle=s,a.lineWidth=3,a.beginPath();for(let m=0;m<t;m++){let h=e/2+Math.sin(m/t*4*Math.PI+p*.002)*(e/4);m===0?a.moveTo(m,h):a.lineTo(m,h)}a.stroke()},pulse:p=>{a.fillStyle=n,a.fillRect(0,0,t,e);let m=Math.sin(p*.003)*.3+.7,h=Math.min(t,e)*.3*m;a.beginPath(),a.arc(t/2,e/2,h,0,Math.PI*2),a.fillStyle=s,a.fill()},bars:p=>{a.fillStyle=n,a.fillRect(0,0,t,e);let m=20,h=t/m,M=e*.7;a.fillStyle=s;for(let E=0;E<m;E++){let Y=Math.abs(Math.sin(E/m*Math.PI*2+p*.004))*M,st=E*h,rt=e-Y;a.fillRect(st+2,rt,h-4,Y)}},avatar:p=>{a.fillStyle=n,a.fillRect(0,0,t,e);let m=t/2,h=e/2-20,M=Math.min(t,e)*.15;a.beginPath(),a.arc(m,h,M,0,Math.PI*2),a.fillStyle=s,a.fill(),a.beginPath(),a.ellipse(m,h+M*2.2,M*1.5,M,0,Math.PI,0),a.fill(),Math.sin(p*.01)>0&&(a.beginPath(),a.arc(m,h+M*3,5+Math.sin(p*.02)*3,0,Math.PI*2),a.fillStyle="#22c55e",a.fill())},none:()=>{a.fillStyle=n,a.fillRect(0,0,t,e)}},_=()=>{a.fillStyle="rgba(255, 255, 255, 0.8)",a.font=`${Math.floor(e*.04)}px system-ui, sans-serif`,a.textAlign="center",a.fillText(d,t/2,e-20)},b=()=>{let p=Date.now()-S;C[o](p),_(),l=requestAnimationFrame(b)};b();let B=c.captureStream(i),W=B.getVideoTracks()[0];return{track:W,stream:B,cleanup:()=>{cancelAnimationFrame(l),W.stop()}}}function tt(r={}){let{frequency:t=440,volume:e=.1,waveType:i="sine",addVariation:n=!0,enabled:s=!1}=r,d=new AudioContext,o=d.createMediaStreamDestination(),c=d.createOscillator();c.type=i,c.frequency.value=t;let a=d.createGain();a.gain.value=s?e:0;let l=null,S=null;n&&(l=d.createOscillator(),l.frequency.value=.5,S=d.createGain(),S.gain.value=10,l.connect(S),S.connect(c.frequency),l.start()),c.connect(a),a.connect(o),c.start();let C=o.stream,_=C.getAudioTracks()[0];return{track:_,stream:C,setVolume:b=>{a.gain.value=Math.max(0,Math.min(1,b))},setEnabled:b=>{a.gain.value=b?e:0},cleanup:()=>{c.stop(),l?.stop(),d.close(),_.stop()}}}function et(r,t){let e=X(r),i=tt(t),n=new MediaStream([e.track,i.track]);return{videoTrack:e.track,audioTrack:i.track,combinedStream:n,setAudioVolume:i.setVolume,setAudioEnabled:i.setEnabled,cleanup:()=>{e.cleanup(),i.cleanup()}}}function dt(r){let t=it[r];return et(t.video,t.audio)}var it,w=at(()=>{"use strict";it={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 H=0;function Q(){H=0}function g(r){return H++,`mock_${r}_${H}_${Date.now().toString(36)}`}function T(r,t,e){let i=e||new Date().toISOString(),n=typeof btoa=="function"?btoa(i).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,""):i.replace(/[^a-zA-Z0-9]/g,"");return`mock_token_${r}_${t}_${n}`}function Z(r){return`wss://mock-livekit.local/room/${r}`}var N={responseStrategy:"echo",responseDelayMs:100,cannedResponses:[],type:"text",nature:"ai",simulateTyping:!1,typingDelayPerChar:20};function U(r,t,e=[],i=0,n=Math.random){switch(r){case"echo":return{response:`Echo: ${t}`,nextIndex:i};case"canned":return{response:e[0]||"Default response",nextIndex:i};case"sequential":return{response:e[i]||"No more responses",nextIndex:(i+1)%Math.max(1,e.length)};case"random":{if(e.length===0)return{response:"Random response",nextIndex:i};let s=Math.floor(n()*e.length);return{response:e[s],nextIndex:i}}case"silent":return{response:"",nextIndex:i};case"error":throw new Error("Agent error");case"custom":return{response:"",nextIndex:i};default:return{response:"Default agent response",nextIndex:i}}}var I=class{constructor(t,e,i={}){this._state="idle";this.conversationHistory=[];this.responseIndex=0;this.eventListeners=new Set;this.randomFn=Math.random;this.messageCount=0;this.id=t,this.name=e,this.config={...N,...i}}get state(){return this._state}get isRunning(){return this._state==="running"}get history(){return[...this.conversationHistory]}getConfig(){return{...this.config}}updateConfig(t){this.config={...this.config,...t}}setStrategy(t){this.config.responseStrategy=t}setCannedResponses(t){this.config.cannedResponses=t,this.responseIndex=0}setCustomHandler(t){this.customHandler=t,this.config.responseStrategy="custom"}setRandomFunction(t){this.randomFn=t}async start(t){this._state!=="running"&&(this._state="starting",this.roomId=t,this.conversationHistory=[],this.responseIndex=0,this.messageCount=0,await this.delay(50),this._state="running",this.emitEvent({type:"started",agentId:this.id}))}async stop(){this._state==="running"&&(this._state="stopping",await this.delay(50),this._state="stopped",this.roomId=void 0,this.emitEvent({type:"stopped",agentId:this.id}))}async processMessage(t){if(this._state!=="running")throw new Error("Agent is not running");if(this.config.maxMessages&&this.messageCount>=this.config.maxMessages)return await this.stop(),"";this.addMessage(t,"user"),this.emitEvent({type:"message_received",agentId:this.id,message:t});let e;try{if(this.config.responseStrategy==="custom"&&this.customHandler)e=await this.customHandler(this.id,t,this.conversationHistory);else{if(this.config.responseStrategy==="silent")return"";if(this.config.responseStrategy==="error"){let i=new Error("Agent error");throw this.emitEvent({type:"error",agentId:this.id,error:i}),i}else{let i=U(this.config.responseStrategy,t,this.config.cannedResponses,this.responseIndex,this.randomFn);e=i.response,this.responseIndex=i.nextIndex}}}catch(i){throw this._state="error",i}return this.config.simulateTyping&&this.config.typingDelayPerChar&&await this.delay(e.length*this.config.typingDelayPerChar),this.config.responseDelayMs&&await this.delay(this.config.responseDelayMs),this.addMessage(e,"agent"),this.messageCount++,this.emitEvent({type:"response_sent",agentId:this.id,response:e}),e}addEventListener(t){return this.eventListeners.add(t),()=>this.eventListeners.delete(t)}clearHistory(){this.conversationHistory=[],this.responseIndex=0}reset(){this._state="idle",this.roomId=void 0,this.conversationHistory=[],this.responseIndex=0,this.messageCount=0}toJSON(){return{id:this.id,name:this.name,state:this._state,roomId:this.roomId,config:this.config,historyLength:this.conversationHistory.length,messageCount:this.messageCount}}addMessage(t,e){let i={id:g("msg"),content:t,role:e,timestamp:Date.now()};return this.conversationHistory.push(i),i}emitEvent(t){for(let e of this.eventListeners)try{e(t)}catch(i){console.error("Error in agent event listener:",i)}}delay(t){return new Promise(e=>setTimeout(e,t))}};var u=class r extends Error{constructor(t,e,i){super(e),this.name="MockLiveKitError",this.code=t,this.details=i,typeof Error.captureStackTrace=="function"&&Error.captureStackTrace(this,r)}toMockError(){return{code:this.code,message:this.message,details:this.details}}static fromMockError(t){return new r(t.code,t.message,t.details)}},v=class extends u{constructor(t){super("ROOM_NOT_FOUND",`Room not found: ${t}`,{roomId:t}),this.name="RoomNotFoundError"}},q=class extends u{constructor(t){super("ROOM_ENDED",`Room has ended: ${t}`,{roomId:t}),this.name="RoomEndedError"}},$=class extends u{constructor(t,e){super("PARTICIPANT_ALREADY_JOINED",`Participant ${t} is already in room ${e}`,{identity:t,roomId:e}),this.name="ParticipantAlreadyJoinedError"}},j=class extends u{constructor(t){super("PARTICIPANT_NOT_FOUND",`Participant not found: ${t}`,{identity:t}),this.name="ParticipantNotFoundError"}},F=class extends u{constructor(t){super("TRACK_NOT_FOUND",`Track not found: ${t}`,{trackId:t}),this.name="TrackNotFoundError"}},V=class extends u{constructor(t){super("AGENT_NOT_FOUND",`Agent not found: ${t}`,{agentId:t}),this.name="AgentNotFoundError"}},K=class extends u{constructor(t="Unauthorized"){super("UNAUTHORIZED",t),this.name="UnauthorizedError"}},G=class extends u{constructor(t="Network error occurred"){super("NETWORK_ERROR",t),this.name="NetworkError"}},J=class extends u{constructor(t,e){super("INVALID_OPERATION",t,e),this.name="InvalidOperationError"}},z=class extends u{constructor(t,e){super("TIMEOUT",`Operation timed out: ${t}`,{operation:t,timeoutMs:e}),this.name="TimeoutError"}};function O(r){switch(r.code){case"ROOM_NOT_FOUND":return new v(r.details?.roomId??"unknown");case"ROOM_ENDED":return new q(r.details?.roomId??"unknown");case"PARTICIPANT_ALREADY_JOINED":return new $(r.details?.identity??"unknown",r.details?.roomId??"unknown");case"PARTICIPANT_NOT_FOUND":return new j(r.details?.identity??"unknown");case"TRACK_NOT_FOUND":return new F(r.details?.trackId??"unknown");case"AGENT_NOT_FOUND":return new V(r.details?.agentId??"unknown");case"UNAUTHORIZED":return new K(r.message);case"NETWORK_ERROR":return new G(r.message);case"INVALID_OPERATION":return new J(r.message,r.details);case"TIMEOUT":return new z(r.details?.operation??"unknown",r.details?.timeoutMs??0);default:return u.fromMockError(r)}}function y(r){return typeof r=="object"&&r!==null&&"code"in r&&"message"in r&&typeof r.code=="string"&&typeof r.message=="string"}var L=class{constructor(){this.listeners={};this.wildcardListeners=new Set;this.eventHistory=[];this.maxHistorySize=1e3;this.recordHistory=!0}setMaxHistorySize(t){this.maxHistorySize=t,this.trimHistory()}setRecordHistory(t){this.recordHistory=t}on(t,e){return this.listeners[t]||(this.listeners[t]=new Set),this.listeners[t].add(e),()=>{this.off(t,e)}}once(t,e){let i=n=>{this.off(t,i),e(n)};return this.on(t,i)}off(t,e){this.listeners[t]?.delete(e)}onAny(t){return this.wildcardListeners.add(t),()=>{this.wildcardListeners.delete(t)}}offAny(t){this.wildcardListeners.delete(t)}removeAllListeners(t){t?delete this.listeners[t]:(this.listeners={},this.wildcardListeners.clear())}emit(t){this.recordHistory&&(this.eventHistory.push(t),this.trimHistory());let e=this.listeners[t.type];if(e)for(let i of e)try{i(t)}catch(n){console.error(`Error in mock event listener for ${t.type}:`,n)}for(let i of this.wildcardListeners)try{i(t)}catch(n){console.error("Error in mock wildcard event listener:",n)}}trimHistory(){this.eventHistory.length>this.maxHistorySize&&(this.eventHistory=this.eventHistory.slice(-this.maxHistorySize))}emitRoomCreated(t){let e={type:"roomCreated",timestamp:new Date().toISOString(),roomId:t.id,room:t};this.emit(e)}emitRoomEnded(t){let e={type:"roomEnded",timestamp:new Date().toISOString(),roomId:t};this.emit(e)}emitRoomConnectionStateChanged(t,e,i){let n={type:"roomConnectionStateChanged",timestamp:new Date().toISOString(),roomId:t,state:e,previousState:i};this.emit(n)}emitParticipantJoined(t,e){let i={type:"participantJoined",timestamp:new Date().toISOString(),roomId:t,participant:e};this.emit(i)}emitParticipantLeft(t,e){let i={type:"participantLeft",timestamp:new Date().toISOString(),roomId:t,participantIdentity:e};this.emit(i)}emitParticipantAttributesChanged(t,e,i,n){let s={type:"participantAttributesChanged",timestamp:new Date().toISOString(),roomId:t,participantIdentity:e,attributes:i,previousAttributes:n};this.emit(s)}emitTrackPublished(t,e,i){let n={type:"trackPublished",timestamp:new Date().toISOString(),roomId:t,participantIdentity:e,track:i};this.emit(n)}emitTrackUnpublished(t,e,i){let n={type:"trackUnpublished",timestamp:new Date().toISOString(),roomId:t,participantIdentity:e,trackId:i};this.emit(n)}emitTrackMuted(t,e){let i={type:"trackMuted",timestamp:new Date().toISOString(),roomId:t,trackId:e};this.emit(i)}emitTrackUnmuted(t,e){let i={type:"trackUnmuted",timestamp:new Date().toISOString(),roomId:t,trackId:e};this.emit(i)}emitMessageReceived(t,e){let i={type:"messageReceived",timestamp:new Date().toISOString(),roomId:t,message:e};this.emit(i)}emitMessageSent(t,e){let i={type:"messageSent",timestamp:new Date().toISOString(),roomId:t,message:e};this.emit(i)}emitTypingIndicator(t,e,i){let n={type:"typingIndicator",timestamp:new Date().toISOString(),roomId:t,participantIdentity:e,isTyping:i};this.emit(n)}emitAgentStarted(t,e){let i={type:"agentStarted",timestamp:new Date().toISOString(),roomId:t,agent:e};this.emit(i)}emitAgentStopped(t,e){let i={type:"agentStopped",timestamp:new Date().toISOString(),roomId:t,agentId:e};this.emit(i)}emitAgentMessage(t,e,i){let n={type:"agentMessage",timestamp:new Date().toISOString(),roomId:t,agentId:e,message:i};this.emit(n)}emitDataReceived(t,e,i,n){let s={type:"dataReceived",timestamp:new Date().toISOString(),roomId:t,participantIdentity:e,data:i,topic:n};this.emit(s)}emitError(t,e){let i={type:"error",timestamp:new Date().toISOString(),roomId:e,error:t};this.emit(i)}getHistory(t){return t?this.eventHistory.filter(e=>e.type===t):[...this.eventHistory]}getLastEvents(t,e){return(e?this.eventHistory.filter(n=>n.type===e):this.eventHistory).slice(-t)}clearHistory(){this.eventHistory=[]}listenerCount(t){return(this.listeners[t]?.size??0)+this.wildcardListeners.size}};var f=class{constructor(t,e,i,n){this.muted=!1;this.enabled=!0;this.attachedElements=new Set;this.kind=t,this.source=e,this.sid=g("TR"),this.mediaStreamTrack=i,this.mediaCleanup=n}get mediaTrack(){return this.mediaStreamTrack}attach(t){let e=t||document.createElement(this.kind==="video"?"video":"audio");if(this.mediaStreamTrack){let i=new MediaStream([this.mediaStreamTrack]);e.srcObject=i,e.autoplay=!0,this.kind==="video"&&(e.playsInline=!0,e.muted=!0)}return this.attachedElements.add(e),e}detach(t){if(t)return t.srcObject=null,this.attachedElements.delete(t),[t];let e=Array.from(this.attachedElements);for(let i of e)i.srcObject=null;return this.attachedElements.clear(),e}stop(){this.detach(),this.mediaCleanup&&this.mediaCleanup(),this.mediaStreamTrack&&this.mediaStreamTrack.stop(),this.enabled=!1}setMuted(t){this.muted=t,this.mediaStreamTrack&&(this.mediaStreamTrack.enabled=!t)}setEnabled(t){this.enabled=t,this.mediaStreamTrack&&(this.mediaStreamTrack.enabled=t)}},k=class{constructor(t,e){this.subscribed=!0;this.isEnabled=!0;this.track=t,this.trackSid=t.sid,this.trackName=e||`${t.kind}_${t.source}`,this.source=t.source,this.kind=t.kind}get isMuted(){return this.track?.muted??!1}get isSubscribed(){return this.subscribed&&this.track!==null}setSubscribed(t){this.subscribed=t}setEnabled(t){this.isEnabled=t,this.track&&(this.track.enabled=t)}setMuted(t){this.track&&this.track.setMuted(t)}};var x=class{constructor(t){this.identity="";this.sid="";this.name="";this.attributes={};this.kind="standard";this.trackPublications=new Map;this.audioTrackPublications=new Map;this.videoTrackPublications=new Map;this._cameraEnabled=!1;this._microphoneEnabled=!1;this._screenShareEnabled=!1;this.room=t,this.sid=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(t){let i={camera:"camera",Camera:"camera",microphone:"microphone",Microphone:"microphone",screen_share:"screen_share",ScreenShare:"screen_share",screen_share_audio:"screen_share_audio",ScreenShareAudio:"screen_share_audio"}[t]||t;return this.trackPublications.get(i)}getTrackPublicationBySid(t){for(let e of this.trackPublications.values())if(e.trackSid===t)return e}setAttributes(t){this.attributes={...this.attributes,...t}}async setCameraEnabled(t,e){if(this._cameraEnabled=t,t){let{createSyntheticVideoTrack:n}=await Promise.resolve().then(()=>(w(),P)),{track:s,cleanup:d}=n({animation:"avatar",label:this.name||"Local Camera"}),o=new f("video","camera",s,d),c=new k(o,e?.name);return this.trackPublications.set("camera",c),this.videoTrackPublications.set(o.sid,c),this.room.emit("localTrackPublished",c,this),c}let i=this.trackPublications.get("camera");i&&(i.track?.stop(),this.trackPublications.delete("camera"),this.videoTrackPublications.delete(i.trackSid),this.room.emit("localTrackUnpublished",i,this))}async setMicrophoneEnabled(t,e){if(this._microphoneEnabled=t,t){let{createSyntheticAudioTrack:n}=await Promise.resolve().then(()=>(w(),P)),{track:s,cleanup:d}=n({enabled:!1}),o=new f("audio","microphone",s,d),c=new k(o,e?.name);return this.trackPublications.set("microphone",c),this.audioTrackPublications.set(o.sid,c),this.room.emit("localTrackPublished",c,this),c}let i=this.trackPublications.get("microphone");i&&(i.track?.stop(),this.trackPublications.delete("microphone"),this.audioTrackPublications.delete(i.trackSid),this.room.emit("localTrackUnpublished",i,this))}async setScreenShareEnabled(t,e){if(this._screenShareEnabled=t,t){let{createSyntheticVideoTrack:n}=await Promise.resolve().then(()=>(w(),P)),{track:s,cleanup:d}=n({animation:"bars",label:"Screen Share",width:1920,height:1080}),o=new f("video","screen_share",s,d),c=new k(o,e?.name||"screen");return this.trackPublications.set("screen_share",c),this.videoTrackPublications.set(o.sid,c),this.room.emit("localTrackPublished",c,this),c}let i=this.trackPublications.get("screen_share");i&&(i.track?.stop(),this.trackPublications.delete("screen_share"),this.videoTrackPublications.delete(i.trackSid),this.room.emit("localTrackUnpublished",i,this))}async publishTrack(t,e){let i=new k(t,e?.name),n=e?.source||t.source;return this.trackPublications.set(n,i),t.kind==="audio"?this.audioTrackPublications.set(t.sid,i):t.kind==="video"&&this.videoTrackPublications.set(t.sid,i),this.room.emit("localTrackPublished",i,this),i}async unpublishTrack(t){t.stop();for(let[e,i]of this.trackPublications)if(i.track===t){this.trackPublications.delete(e),t.kind==="audio"?this.audioTrackPublications.delete(t.sid):t.kind==="video"&&this.videoTrackPublications.delete(t.sid),this.room.emit("localTrackUnpublished",i,this);break}}async sendText(t,e){return{id:g("msg")}}async publishData(t,e){}async setMetadata(t){this.attributes.metadata=t}async setName(t){this.name=t}cleanup(){for(let t of this.trackPublications.values())t.track?.stop();this.trackPublications.clear(),this.audioTrackPublications.clear(),this.videoTrackPublications.clear(),this._cameraEnabled=!1,this._microphoneEnabled=!1,this._screenShareEnabled=!1}};function gt(r){switch(r){case"standard":return 0;case"ingress":return 1;case"egress":return 2;case"sip":return 3;case"agent":return 4;default:return 0}}var R=class{constructor(t,e,i={},n="standard"){this.connectionQuality="excellent";this.isSpeaking=!1;this.audioLevel=0;this.trackPublications=new Map;this.identity=t,this.sid=g("PA"),this.name=e,this.attributes=i,this._kindString=n,this.kind=gt(n),this.joinedAt=new Date}get isAgent(){return this.kind===4||this.attributes["lk.agent.name"]!==void 0}get kindString(){return this._kindString}get isCameraEnabled(){let t=this.getTrackPublication("camera");return!!(t?.track&&!t.isMuted)}get isMicrophoneEnabled(){let t=this.getTrackPublication("microphone");return!!(t?.track&&!t.isMuted)}getTrackPublication(t){for(let e of this.trackPublications.values())if(e.source===t)return e}getTrackPublicationBySid(t){return this.trackPublications.get(t)}getTrackPublications(){return Array.from(this.trackPublications.values())}getAudioTracks(){return this.getTrackPublications().filter(t=>t.kind==="audio")}getVideoTracks(){return this.getTrackPublications().filter(t=>t.kind==="video")}addTrackPublication(t){this.trackPublications.set(t.trackSid,t)}removeTrackPublication(t){let e=this.trackPublications.get(t);return e&&(this.trackPublications.delete(t),e.track?.stop()),e}setAttributes(t){this.attributes={...this.attributes,...t}}getAttribute(t){return this.attributes[t]}startSpeaking(t=.5){this.isSpeaking=!0,this.audioLevel=t}stopSpeaking(){this.isSpeaking=!1,this.audioLevel=0}setConnectionQuality(t){this.connectionQuality=t}cleanup(){for(let t of this.trackPublications.values())t.track?.stop();this.trackPublications.clear()}};var A=class{constructor(t){this.remoteParticipants=new Map;this._state="disconnected";this.eventHandlers=new Map;this.textStreamHandlers=new Map;this.rpcHandlers=new Map;this.mockService=t,this.localParticipant=new x(this),this.sid=g("RM")}get state(){return this._state}set state(t){let e=this._state;this._state=t,e!==t&&this.emit("connectionStateChanged",t,e)}get numParticipants(){return this.remoteParticipants.size+1}get isConnected(){return this._state==="connected"}async connect(t,e){this._state="connecting",this.emit("connectionStateChanged","connecting","disconnected"),await this.mockService.simulateLatency(),this._state="connected",this.connectedAt=new Date().toISOString(),this.emit("connectionStateChanged","connected","connecting"),this.emit("connected")}async disconnect(){for(let e of this.remoteParticipants.values())e.cleanup();this.remoteParticipants.clear(),this.localParticipant.cleanup();let t=this._state;this._state="disconnected",this.emit("connectionStateChanged","disconnected",t),this.emit("disconnected"),this.eventHandlers.clear()}async reconnect(){this._state="reconnecting",this.emit("connectionStateChanged","reconnecting","connected"),await this.mockService.simulateLatency(),this._state="connected",this.emit("connectionStateChanged","connected","reconnecting"),this.emit("reconnected")}on(t,e){return this.eventHandlers.has(t)||this.eventHandlers.set(t,new Set),this.eventHandlers.get(t).add(e),this}once(t,e){let i=(...n)=>{this.off(t,i),e(...n)};return this.on(t,i)}off(t,e){return this.eventHandlers.get(t)?.delete(e),this}removeAllListeners(){this.eventHandlers.clear()}emit(t,...e){let i=this.eventHandlers.get(t);if(i)for(let n of i)try{n(...e)}catch(s){console.error(`Error in mock room event handler for ${t}:`,s)}}registerRpcMethod(t,e){this.rpcHandlers.set(t,e)}unregisterRpcMethod(t){this.rpcHandlers.delete(t)}async callRpc(t,e,i,n=1e4){let s=this.rpcHandlers.get(t);if(!s)throw new Error(`RPC method not found: ${t}`);return s({callerIdentity:e,payload:i,responseTimeout:n})}registerTextStreamHandler(t,e){this.textStreamHandlers.set(t,e)}unregisterTextStreamHandler(t){this.textStreamHandlers.delete(t)}simulateTextStream(t,e){let i=this.textStreamHandlers.get(t);i&&i(e,{identity:e.participantIdentity})}getParticipantByIdentity(t){return t===this.localParticipant.identity?new R(this.localParticipant.identity,this.localParticipant.name,this.localParticipant.attributes):this.remoteParticipants.get(t)}getParticipantBySid(t){if(t===this.localParticipant.sid)return new R(this.localParticipant.identity,this.localParticipant.name,this.localParticipant.attributes);for(let e of this.remoteParticipants.values())if(e.sid===t)return e}async simulateParticipantJoin(t,e){let i=new R(t,e?.name,e?.attributes||{},e?.kind||"standard");return this.remoteParticipants.set(t,i),this.emit("participantConnected",i),e?.withCamera&&await this.simulateRemoteTrack(t,"video","camera"),e?.withMicrophone&&await this.simulateRemoteTrack(t,"audio","microphone"),i}simulateParticipantLeave(t){let e=this.remoteParticipants.get(t);if(e){for(let i of e.getTrackPublications())i.track?.stop(),this.emit("trackUnsubscribed",i.track,i,e);this.remoteParticipants.delete(t),this.emit("participantDisconnected",e)}}async simulateRemoteTrack(t,e,i){let n=this.remoteParticipants.get(t);if(!n)return;let s,d;if(e==="video"){let{createSyntheticVideoTrack:a}=await Promise.resolve().then(()=>(w(),P)),l=a({animation:n.isAgent?"avatar":"pulse",label:n.name||t,foregroundColor:n.isAgent?"#22c55e":"#4361ee"});s=l.track,d=l.cleanup}else if(e==="audio"){let{createSyntheticAudioTrack:a}=await Promise.resolve().then(()=>(w(),P)),l=a({enabled:!1});s=l.track,d=l.cleanup}let o=new f(e,i,s,d),c=new k(o);return n.addTrackPublication(c),this.emit("trackSubscribed",o,c,n),this.emit("trackPublished",c,n),o}simulateTrackUnpublished(t,e){let i=this.remoteParticipants.get(t);if(!i)return;let n=i.getTrackPublication(e);n&&(i.removeTrackPublication(n.trackSid),this.emit("trackUnpublished",n,i),this.emit("trackUnsubscribed",n.track,n,i))}async simulateAgentJoin(t,e="AI Agent"){return this.simulateParticipantJoin(t,{name:e,kind:"agent",withCamera:!0,withMicrophone:!0,attributes:{"lk.agent.name":e,"lk.agent.state":"active"}})}simulateAttributeChange(t,e){let i=this.remoteParticipants.get(t);if(i){let n={...i.attributes};i.setAttributes(e),this.emit("participantAttributesChanged",e,n,i)}}simulateTrackMuted(t,e,i){let n=this.remoteParticipants.get(t);if(!n)return;let s=n.getTrackPublication(e);s?.track&&(s.track.setMuted(i),this.emit(i?"trackMuted":"trackUnmuted",s,n))}simulateActiveSpeakersChanged(t){let e=[];for(let i of t){let n=this.remoteParticipants.get(i);n&&(n.startSpeaking(),e.push(n))}this.emit("activeSpeakersChanged",e)}simulateDataReceived(t,e,i,n){let s=this.remoteParticipants.get(e);this.emit("dataReceived",t,s,i,n)}};var D=class{constructor(t={}){this.rooms=new Map;this.participants=new Map;this.tracks=new Map;this.agents=new Map;this.messages=new Map;this.config=t,this.randomState=t.seed??Date.now()}updateConfig(t){this.config={...this.config,...t},t.seed!==void 0&&(this.randomState=t.seed)}getConfig(){return{...this.config}}random(){return this.randomState=(this.randomState*1103515245+12345)%2147483648,this.randomState/2147483648}createRoom(t,e,i){let n=g("room"),s=new Date().toISOString(),d={id:n,name:t,groupId:e||g("group"),createdAt:s,metadata:i,isActive:!0,participantIds:[],connectionState:"disconnected",wsURL:Z(n),token:T(n,"pending",s)};return this.rooms.set(n,d),this.messages.set(n,[]),d}getRoom(t){return this.rooms.get(t)}getRoomByName(t){for(let e of this.rooms.values())if(e.name===t)return e}listRooms(t=!1){let e=Array.from(this.rooms.values());return t?e.filter(i=>i.isActive):e}updateRoomConnectionState(t,e){let i=this.rooms.get(t);if(!i)return;let n=i.connectionState;return i.connectionState=e,n}endRoom(t){let e=this.rooms.get(t);if(!e||!e.isActive)return!1;e.isActive=!1,e.endedAt=new Date().toISOString(),e.connectionState="disconnected";for(let i of e.participantIds){let n=this.participants.get(i);n&&(n.isConnected=!1)}for(let i of this.agents.values())i.roomId===t&&i.status==="running"&&(i.status="stopped",i.stoppedAt=new Date().toISOString());return!0}deleteRoom(t){let e=this.rooms.get(t);if(!e)return!1;for(let i of e.participantIds)this.participants.delete(i);for(let[i,n]of this.tracks)n.roomId===t&&this.tracks.delete(i);for(let[i,n]of this.agents)n.roomId===t&&this.agents.delete(i);return this.messages.delete(t),this.rooms.delete(t),!0}addParticipant(t,e,i,n="user",s="standard",d=!1){let o=this.rooms.get(t);if(!o)return this.createError("ROOM_NOT_FOUND",`Room ${t} not found`);if(!o.isActive)return this.createError("ROOM_ENDED",`Room ${t} has ended`);let c=this.participants.get(e);if(c&&c.roomId===t&&c.isConnected)return this.config.strictMode?this.createError("PARTICIPANT_ALREADY_JOINED",`Participant ${e} is already in room ${t}`):c;let a={identity:e,name:i||e,roomId:t,joinedAt:new Date().toISOString(),isConnected:!0,trackIds:[],role:n,attributes:{},kind:s,isLocal:d};return this.participants.set(e,a),o.participantIds.push(e),a}getParticipant(t){return this.participants.get(t)}listParticipants(t,e=!0){let i=this.rooms.get(t);if(!i)return[];let n=[];for(let s of i.participantIds){let d=this.participants.get(s);d&&(!e||d.isConnected)&&n.push(d)}return n}updateParticipantAttributes(t,e){let i=this.participants.get(t);if(!i)return;let n={...i.attributes};return i.attributes={...i.attributes,...e},n}removeParticipant(t){let e=this.participants.get(t);if(!e)return;e.isConnected=!1;for(let n of e.trackIds)this.tracks.delete(n);e.trackIds=[];let i=this.rooms.get(e.roomId);if(i){let n=i.participantIds.indexOf(t);n!==-1&&i.participantIds.splice(n,1)}return e}publishTrack(t,e,i="unknown",n){let s=this.participants.get(t);if(!s)return this.createError("PARTICIPANT_NOT_FOUND",`Participant ${t} not found`);if(!s.isConnected)return this.createError("INVALID_OPERATION",`Participant ${t} is not connected`);let d=this.rooms.get(s.roomId);if(!d||!d.isActive)return this.createError("ROOM_ENDED","Room is not active");let o=g("track"),c={id:o,kind:e,source:i,participantIdentity:t,roomId:s.roomId,publishedAt:new Date().toISOString(),muted:!1,metadata:n};return this.tracks.set(o,c),s.trackIds.push(o),c}getTrack(t){return this.tracks.get(t)}listTracks(t,e){let i=[];for(let n of this.tracks.values())t&&n.roomId!==t||e&&n.participantIdentity!==e||i.push(n);return i}unpublishTrack(t){let e=this.tracks.get(t);if(!e)return;let i=this.participants.get(e.participantIdentity);if(i){let n=i.trackIds.indexOf(t);n!==-1&&i.trackIds.splice(n,1)}return this.tracks.delete(t),e}setTrackMuted(t,e){let i=this.tracks.get(t);return i?(i.muted=e,!0):!1}startAgent(t,e,i={}){let n=this.rooms.get(t);if(!n)return this.createError("ROOM_NOT_FOUND",`Room ${t} not found`);if(!n.isActive)return this.createError("ROOM_ENDED",`Room ${t} has ended`);let s=g("agent"),d={id:s,roomId:t,name:e,status:"running",startedAt:new Date().toISOString(),config:{responseStrategy:"echo",...i},messageHistory:[]};return this.agents.set(s,d),this.addParticipant(t,`agent_${s}`,e,"agent","agent",!1),d}getAgent(t){return this.agents.get(t)}listAgents(t){let e=[];for(let i of this.agents.values())i.roomId===t&&e.push(i);return e}stopAgent(t){let e=this.agents.get(t);if(e)return e.status="stopped",e.stoppedAt=new Date().toISOString(),this.removeParticipant(`agent_${t}`),e}updateAgentStatus(t,e){let i=this.agents.get(t);return i?(i.status=e,e==="stopped"&&(i.stoppedAt=new Date().toISOString()),!0):!1}addAgentMessage(t,e,i){let n=this.agents.get(t);if(!n)return;let s={id:g("msg"),content:e,role:i,timestamp:new Date().toISOString()};return n.messageHistory.push(s),s}addMessage(t,e,i,n="standard",s){if(!this.rooms.get(t))return this.createError("ROOM_NOT_FOUND",`Room ${t} not found`);let o={id:g("msg"),roomId:t,content:i,participantIdentity:e,createdAt:new Date().toISOString(),type:n,attributes:s},c=this.messages.get(t)||[];return c.push(o),this.messages.set(t,c),o}getMessages(t,e){let i=this.messages.get(t)||[];return e?i.slice(-e):i}createError(t,e,i){return{code:t,message:e,details:i}}isError(t){return typeof t=="object"&&t!==null&&"code"in t&&"message"in t}reset(){this.rooms.clear(),this.participants.clear(),this.tracks.clear(),this.agents.clear(),this.messages.clear(),this.randomState=this.config.seed??Date.now()}getSnapshot(){return{rooms:new Map(this.rooms),participants:new Map(this.participants),tracks:new Map(this.tracks),agents:new Map(this.agents),messages:new Map(this.messages),config:{...this.config},eventHistory:[]}}toJSON(){return{rooms:Object.fromEntries(this.rooms),participants:Object.fromEntries(this.participants),tracks:Object.fromEntries(this.tracks),agents:Object.fromEntries(this.agents),messages:Object.fromEntries(this.messages),config:this.config,eventHistory:[],exportedAt:new Date().toISOString()}}fromJSON(t){this.rooms=new Map(Object.entries(t.rooms)),this.participants=new Map(Object.entries(t.participants)),this.tracks=new Map(Object.entries(t.tracks)),this.agents=new Map(Object.entries(t.agents)),this.messages=new Map(Object.entries(t.messages).map(([e,i])=>[e,i])),this.config=t.config}};var nt=class{constructor(t={}){this.messageListeners=new Set;this.typingListeners=new Set;this.callRequestListeners=new Map;this._authToken=null;this._registeredUser=null;this.agents=new Map;this.config={latencyMs:t.latencyMs??0,strictMode:t.strictMode??!1,seed:t.seed,scenario:t.scenario,errorConfig:t.errorConfig,autoEmitEvents:t.autoEmitEvents??!0,organizationId:t.organizationId??"mock_org",apiUrl:t.apiUrl??"https://mock-livekit.local"},this.state=new D(this.config),this.events=new L,this.room=new A(this),this.config.scenario&&this.applyScenario(this.config.scenario)}get authToken(){return this._authToken}get registeredUser(){return this._registeredUser}getState(){return this.state}getEvents(){return this.events}updateConfig(t){this.config={...this.config,...t},this.state.updateConfig(t)}getConfig(){return{...this.config}}async simulateLatency(){this.config.latencyMs&&this.config.latencyMs>0&&await new Promise(t=>setTimeout(t,this.config.latencyMs))}applyScenario(t){switch(t){case"happy_path":this.config.errorConfig={},this.config.latencyMs=0;break;case"slow_network":this.config.latencyMs=500;break;case"network_unstable":this.config.errorConfig={errorRate:30};break;default:break}}shouldThrowError(){return this.config.errorConfig?.errorRate?this.state.random()*100<this.config.errorConfig.errorRate:!1}ensureRoom(){return this.room||(this.room=new A(this)),this.room}async registerUser(t,e,i,n){if(await this.simulateLatency(),this.config.errorConfig?.unauthorized)throw new u("UNAUTHORIZED","Registration failed");let s={id:g("user"),externalId:t,organizationId:this.config.organizationId,role:"user",token:T("pending",t,new Date().toISOString())};return this._authToken=s.token,this._registeredUser=s,this.room.localParticipant.identity=t,this.room.localParticipant.name=i?.name||t,s}async registerAgent(t,e){if(await this.simulateLatency(),this.config.errorConfig?.unauthorized)throw new u("UNAUTHORIZED","Agent registration failed");let i=T("agent",t,new Date().toISOString());return this._authToken=i,this.room.localParticipant.identity=t,this.room.localParticipant.name=e.name,i}async createRoom(t,e={}){if(await this.simulateLatency(),this.config.errorConfig?.networkError||this.shouldThrowError())throw new u("NETWORK_ERROR","Failed to create room");let i=this.state.createRoom(`room_${Date.now()}`,t.affinity?.agentId,t.metadata);this.room.id=i.id,this.room.groupId=i.groupId,this.room.createdAt=i.createdAt,this.room.connectedAt=new Date().toISOString();let n=this.room.localParticipant.identity||"local_user";return this.state.addParticipant(i.id,n,this.room.localParticipant.name,"user","standard",!0),Object.keys(e).length>0&&(this.state.updateParticipantAttributes(n,e),this.room.localParticipant.setAttributes(e)),this.state.updateRoomConnectionState(i.id,"connected"),this.config.autoEmitEvents&&(this.events.emitRoomCreated(i),this.events.emitRoomConnectionStateChanged(i.id,"connected","disconnected")),(t.affinity?.agentId||t.affinity?.agentType)&&await this.startMockAgent(i.id,{type:t.affinity?.agentType,nature:t.affinity?.nature??"ai"}),await this.room.connect(i.wsURL,i.token),this.room}async joinRoom(t,e,i,n){await this.simulateLatency();let s=this.state.getRoom(t);if(!s)throw new v(t);if(!s.isActive)throw new u("ROOM_ENDED",`Room ${t} has ended`);this.room.id=s.id,this.room.groupId=s.groupId,this.room.createdAt=s.createdAt,this.room.connectedAt=new Date().toISOString();let d=this.room.localParticipant.identity||"local_user",o=this.state.addParticipant(t,d,this.room.localParticipant.name,"user","standard",!0);if(y(o))throw O(o);if(n){let c={};for(let[a,l]of Object.entries(n))c[a]=String(l);this.state.updateParticipantAttributes(d,c)}return this.state.updateRoomConnectionState(t,"connected"),this.config.autoEmitEvents&&(this.events.emitParticipantJoined(t,o),this.events.emitRoomConnectionStateChanged(t,"connected","disconnected")),await this.room.connect(s.wsURL,s.token),this.room}async evaluateRoom(t){await this.simulateLatency();let e=t.roomId||this.room?.id;if(!e)throw new u("ROOM_NOT_FOUND","No room to evaluate");let i=this.state.getRoom(e);if(!i)throw new v(e);i.metadata||(i.metadata={}),i.metadata.evaluation={rating:t.rating,comment:t.comment,evaluatedAt:new Date().toISOString()}}async closeRoom(){await this.simulateLatency(),this.room?.id&&(this.state.endRoom(this.room.id),await this.stopLocalTracks(),this.config.autoEmitEvents&&this.events.emitRoomEnded(this.room.id))}async disconnect(){if(this.room){let t=this.room.id,e=this.room.localParticipant.identity;await this.stopLocalTracks(),this.state.removeParticipant(e),this.config.autoEmitEvents&&t&&this.events.emitParticipantLeft(t,e),this.room.removeAllListeners(),await this.room.disconnect()}}async stopLocalTracks(){let t=this.room?.localParticipant;t&&await Promise.all([t.setCameraEnabled(!1),t.setMicrophoneEnabled(!1),t.setScreenShareEnabled(!1)])}async disconnectAndCloseRoom(){await this.closeRoom(),await this.disconnect()}async readRoom(t){await this.simulateLatency();let e=this.state.getRoom(t);if(!e)throw new v(t);e.metadata||(e.metadata={}),e.metadata.lastReadAt=new Date().toISOString()}async getRooms(t){await this.simulateLatency();let e=this.state.listRooms();t.roomStatus==="active"?e=e.filter(o=>o.isActive):t.roomStatus==="closed"&&(e=e.filter(o=>!o.isActive)),t.ids?.length&&(e=e.filter(o=>t.ids.includes(o.id))),t.groupId&&(e=e.filter(o=>o.groupId===t.groupId));let i=t.offset??0,n=t.limit??20;return{items:e.slice(i,i+n).map(o=>({id:o.id,name:o.name,groupId:o.groupId,organizationId:this.config.organizationId,endedAt:o.endedAt??null,createdAt:o.createdAt,updatedAt:o.createdAt,status:o.isActive?"active":"ended",participants:this.state.listParticipants(o.id).map(c=>({id:c.identity,name:c.name||c.identity,role:c.role,isLocal:c.isLocal})),evaluations:[],_count:{messages:this.state.getMessages(o.id).length,participants:o.participantIds.length}})),count:e.length,limit:n,offset:i}}async sendMessage(t,e){if(await this.simulateLatency(),!this.room?.id)throw new u("INVALID_OPERATION","Not connected to a room");let i=this.state.addMessage(this.room.id,this.room.localParticipant.identity,t,"standard",e);if(y(i))throw O(i);let n={id:i.id,timestamp:Date.now(),message:t,content:t,createdAt:i.createdAt,from:{identity:this.room.localParticipant.identity,name:this.room.localParticipant.name,id:this.room.localParticipant.identity,role:"user"}};for(let s of this.messageListeners)s([n]);this.config.autoEmitEvents&&this.events.emitMessageSent(this.room.id,i);for(let s of this.agents.values())s.isRunning&&s.roomId===this.room.id&&this.triggerAgentResponse(s,t)}async persistMessage(t){await this.simulateLatency();let e=this.state.addMessage(t.roomId,t.identity||"system",t.content);if(y(e))throw O(e);return{items:[{id:e.id,timestamp:Date.now(),message:e.content,content:e.content,createdAt:e.createdAt}],count:1,limit:1,offset:0}}async getMessages(t){await this.simulateLatency();let e=t.roomId||this.room?.id;return e?this.state.getMessages(e,t.limit).map(n=>({id:n.id,timestamp:Date.parse(n.createdAt),message:n.content,content:n.content,createdAt:n.createdAt,from:{identity:n.participantIdentity,id:n.participantIdentity,role:"user"}})):[]}async sendMessageReport(t){await this.simulateLatency()}async deleteMessageReport(t){await this.simulateLatency()}async updateMessageReactions(t){await this.simulateLatency()}subscribeMessages(t){return this.messageListeners.add(t),()=>{this.messageListeners.delete(t)}}async sendTypingIndicator(t){if(!this.room?.id)return;let e={type:"typing",isTyping:t,timestamp:Date.now(),participantId:this.room.localParticipant.identity};for(let i of this.typingListeners)i(e);this.config.autoEmitEvents&&this.events.emitTypingIndicator(this.room.id,this.room.localParticipant.identity,t)}subscribeTypingIndicators(t){return this.typingListeners.add(t),()=>this.typingListeners.delete(t)}unsubscribeTypingIndicators(t){this.typingListeners.delete(t)}async sendContextualEvent(t){await this.simulateLatency()}async requestNewRoom(t){await this.simulateLatency();let e=this.state.createRoom(`transfer_${Date.now()}`,void 0,{originRoom:t.originRoom});return{id:e.id,groupId:e.groupId,token:e.token,wsURL:e.wsURL,createdAt:e.createdAt}}async confirmRoomRequest(t){return await this.simulateLatency(),{success:!0,message:"Request confirmed",roomId:t}}async cancelRoomRequest(t){return await this.simulateLatency(),{success:!0,message:"Request cancelled",roomId:t}}async finishCall(){await this.simulateLatency(),this.room?.id&&this.state.endRoom(this.room.id)}isFirebaseEnabled(){return!0}onPresenceChange(t){return()=>{}}onPresenceAgentChange(t,e){return()=>{}}async createCallRequest(t){return await this.simulateLatency(),g("call")}onNewCallRequest(t){return this.callRequestListeners.has("new")||this.callRequestListeners.set("new",new Set),this.callRequestListeners.get("new").add(t),()=>this.callRequestListeners.get("new")?.delete(t)}onCallRequestChange(t){return this.callRequestListeners.has("change")||this.callRequestListeners.set("change",new Set),this.callRequestListeners.get("change").add(t),()=>this.callRequestListeners.get("change")?.delete(t)}onCallRequestRemoved(t){return()=>{}}async acceptCallRequest(t){await this.simulateLatency()}async cancelCallRequest(t){await this.simulateLatency()}async cancelOnDisconnect(t){await this.simulateLatency()}subscribePendingRequests(t,e={}){return()=>{}}subscribeRequestChanges(t){return()=>{}}async tryAcceptRequest(t){return await this.simulateLatency(),!0}onRoomSync(t,e){return()=>{}}async clearRoomSync(t,e){await this.simulateLatency()}onNewRoomRequest(t,e){return()=>{}}unsubscribeAllFirebase(){this.callRequestListeners.clear()}async destroy(){this.unsubscribeAllFirebase(),this.messageListeners.clear(),this.typingListeners.clear(),await this.disconnect(),this.state.reset()}async startMockAgent(t,e){let i=e?.name||"AI Assistant",n=new I(g("agent"),i,{responseStrategy:e?.responseStrategy||"echo",responseDelayMs:e?.responseDelayMs||100,cannedResponses:e?.cannedResponses||[],type:e?.type,nature:e?.nature});await n.start(t),this.agents.set(n.id,n),this.customAgentHandler&&n.setCustomHandler((a,l)=>this.customAgentHandler(a,l));let s=e?.type,d=Array.isArray(s)?s:[s].filter(Boolean),o=d.includes("video"),c=d.includes("voice");return(o||c)&&this.room.isConnected&&await this.room.simulateParticipantJoin(n.id,{name:i,kind:"agent",withCamera:o,withMicrophone:c||o,attributes:{"lk.agent.name":i,"lk.agent.state":"active",role:"agent"}}),this.config.autoEmitEvents&&this.events.emitAgentStarted(t,{id:n.id,name:n.name,roomId:t,status:"running",config:n.getConfig(),startedAt:new Date().toISOString(),messageHistory:[]}),n.id}async stopMockAgent(t){let e=this.agents.get(t);if(e){let i=e.roomId;await e.stop(),this.agents.delete(t),this.config.autoEmitEvents&&i&&this.events.emitAgentStopped(i,t)}}setAgentResponseHandler(t){this.customAgentHandler=t;for(let e of this.agents.values())e.setCustomHandler((i,n)=>t(i,n))}async triggerAgentResponse(t,e){if(this.config.scenario!=="agent_timeout")try{let i=await t.processMessage(e);if(!i)return;let n=this.state.addMessage(t.roomId,`agent_${t.id}`,i);if(!y(n)){let s={id:n.id,timestamp:Date.now(),message:i,content:i,createdAt:n.createdAt,from:{identity:`agent_${t.id}`,name:t.name,id:t.id,role:"agent"}};for(let d of this.messageListeners)d([s]);this.config.autoEmitEvents&&this.events.emitMessageReceived(t.roomId,n)}}catch(i){console.error("Agent response error:",i)}}simulateCallRequest(t){let e={id:g("call"),guestId:t.guestId||"guest_user",name:t.name||"Guest User",createdAt:new Date().toISOString(),status:t.status||"pending",...t},i=this.callRequestListeners.get("new");if(i)for(let n of i)n(e.id,e)}simulateParticipantJoin(t,e,i="user"){if(!this.room?.id)return;let n=this.state.addParticipant(this.room.id,t,e,i,"standard",!1);!y(n)&&this.config.autoEmitEvents&&this.events.emitParticipantJoined(this.room.id,n)}simulateParticipantLeave(t){if(!this.room?.id)return;this.state.removeParticipant(t)&&this.config.autoEmitEvents&&this.events.emitParticipantLeft(this.room.id,t)}simulateIncomingMessage(t,e){if(!this.room?.id)return;let i=this.state.addMessage(this.room.id,t,e);if(y(i))return;let n={id:i.id,timestamp:Date.now(),message:e,content:e,createdAt:i.createdAt,from:{identity:t,id:t,role:"user"}};for(let s of this.messageListeners)s([n]);this.config.autoEmitEvents&&this.events.emitMessageReceived(this.room.id,i)}async simulateDisconnect(){if(!this.room?.id)return;let t=this.room.state;this.room.state="disconnected",this.config.autoEmitEvents&&this.events.emitRoomConnectionStateChanged(this.room.id,"disconnected",t),this.room.emit("connectionStateChanged","disconnected")}reset(){this.state.reset(),this.events.clearHistory(),this.messageListeners.clear(),this.typingListeners.clear(),this.callRequestListeners.clear(),this.agents.clear(),this._authToken=null,this._registeredUser=null,this.room=new A(this),Q()}seed(t){this.config.seed=t,this.state.updateConfig({seed:t})}setScenario(t){this.config.scenario=t,this.applyScenario(t)}exportState(){return{...this.state.toJSON(),eventHistory:this.events.getHistory()}}getEventHistory(t){return this.events.getHistory(t)}};export{nt as MockConversationService};
1
+ /*! @onlive.ai/common-121 v0.2.187 | © 2026 Onlive.ai */
2
+ var at=Object.defineProperty;var ot=(r,t)=>()=>(r&&(t=r(r=0)),t);var ct=(r,t)=>{for(var e in t)at(r,e,{get:t[e],enumerable:!0})};var P={};ct(P,{SYNTHETIC_MEDIA_PRESETS:()=>it,createSyntheticAudioTrack:()=>tt,createSyntheticMedia:()=>et,createSyntheticMediaFromPreset:()=>dt,createSyntheticVideoTrack:()=>X});function X(r={}){let{width:t=640,height:e=480,fps:i=30,backgroundColor:n="#1a1a2e",foregroundColor:s="#4361ee",label:d="Mock Video",animation:a="wave"}=r,c=document.createElement("canvas");c.width=t,c.height=e;let o=c.getContext("2d"),l,S=Date.now(),C={wave:p=>{o.fillStyle=n,o.fillRect(0,0,t,e),o.strokeStyle=s,o.lineWidth=3,o.beginPath();for(let m=0;m<t;m++){let h=e/2+Math.sin(m/t*4*Math.PI+p*.002)*(e/4);m===0?o.moveTo(m,h):o.lineTo(m,h)}o.stroke()},pulse:p=>{o.fillStyle=n,o.fillRect(0,0,t,e);let m=Math.sin(p*.003)*.3+.7,h=Math.min(t,e)*.3*m;o.beginPath(),o.arc(t/2,e/2,h,0,Math.PI*2),o.fillStyle=s,o.fill()},bars:p=>{o.fillStyle=n,o.fillRect(0,0,t,e);let m=20,h=t/m,M=e*.7;o.fillStyle=s;for(let A=0;A<m;A++){let Q=Math.abs(Math.sin(A/m*Math.PI*2+p*.004))*M,st=A*h,rt=e-Q;o.fillRect(st+2,rt,h-4,Q)}},avatar:p=>{o.fillStyle=n,o.fillRect(0,0,t,e);let m=t/2,h=e/2-20,M=Math.min(t,e)*.15;o.beginPath(),o.arc(m,h,M,0,Math.PI*2),o.fillStyle=s,o.fill(),o.beginPath(),o.ellipse(m,h+M*2.2,M*1.5,M,0,Math.PI,0),o.fill(),Math.sin(p*.01)>0&&(o.beginPath(),o.arc(m,h+M*3,5+Math.sin(p*.02)*3,0,Math.PI*2),o.fillStyle="#22c55e",o.fill())},none:()=>{o.fillStyle=n,o.fillRect(0,0,t,e)}},_=()=>{o.fillStyle="rgba(255, 255, 255, 0.8)",o.font=`${Math.floor(e*.04)}px system-ui, sans-serif`,o.textAlign="center",o.fillText(d,t/2,e-20)},b=()=>{let p=Date.now()-S;C[a](p),_(),l=requestAnimationFrame(b)};b();let B=c.captureStream(i),W=B.getVideoTracks()[0];return{track:W,stream:B,cleanup:()=>{cancelAnimationFrame(l),W.stop()}}}function tt(r={}){let{frequency:t=440,volume:e=.1,waveType:i="sine",addVariation:n=!0,enabled:s=!1}=r,d=new AudioContext,a=d.createMediaStreamDestination(),c=d.createOscillator();c.type=i,c.frequency.value=t;let o=d.createGain();o.gain.value=s?e:0;let l=null,S=null;n&&(l=d.createOscillator(),l.frequency.value=.5,S=d.createGain(),S.gain.value=10,l.connect(S),S.connect(c.frequency),l.start()),c.connect(o),o.connect(a),c.start();let C=a.stream,_=C.getAudioTracks()[0];return{track:_,stream:C,setVolume:b=>{o.gain.value=Math.max(0,Math.min(1,b))},setEnabled:b=>{o.gain.value=b?e:0},cleanup:()=>{c.stop(),l?.stop(),d.close(),_.stop()}}}function et(r,t){let e=X(r),i=tt(t),n=new MediaStream([e.track,i.track]);return{videoTrack:e.track,audioTrack:i.track,combinedStream:n,setAudioVolume:i.setVolume,setAudioEnabled:i.setEnabled,cleanup:()=>{e.cleanup(),i.cleanup()}}}function dt(r){let t=it[r];return et(t.video,t.audio)}var it,w=ot(()=>{"use strict";it={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 H=0;function Y(){H=0}function g(r){return H++,`mock_${r}_${H}_${Date.now().toString(36)}`}function T(r,t,e){let i=e||new Date().toISOString(),n=typeof btoa=="function"?btoa(i).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,""):i.replace(/[^a-zA-Z0-9]/g,"");return`mock_token_${r}_${t}_${n}`}function Z(r){return`wss://mock-livekit.local/room/${r}`}var N={responseStrategy:"echo",responseDelayMs:100,cannedResponses:[],type:"text",nature:"ai",simulateTyping:!1,typingDelayPerChar:20};function U(r,t,e=[],i=0,n=Math.random){switch(r){case"echo":return{response:`Echo: ${t}`,nextIndex:i};case"canned":return{response:e[0]||"Default response",nextIndex:i};case"sequential":return{response:e[i]||"No more responses",nextIndex:(i+1)%Math.max(1,e.length)};case"random":{if(e.length===0)return{response:"Random response",nextIndex:i};let s=Math.floor(n()*e.length);return{response:e[s],nextIndex:i}}case"silent":return{response:"",nextIndex:i};case"error":throw new Error("Agent error");case"custom":return{response:"",nextIndex:i};default:return{response:"Default agent response",nextIndex:i}}}var I=class{constructor(t,e,i={}){this._state="idle";this.conversationHistory=[];this.responseIndex=0;this.eventListeners=new Set;this.randomFn=Math.random;this.messageCount=0;this.id=t,this.name=e,this.config={...N,...i}}get state(){return this._state}get isRunning(){return this._state==="running"}get history(){return[...this.conversationHistory]}getConfig(){return{...this.config}}updateConfig(t){this.config={...this.config,...t}}setStrategy(t){this.config.responseStrategy=t}setCannedResponses(t){this.config.cannedResponses=t,this.responseIndex=0}setCustomHandler(t){this.customHandler=t,this.config.responseStrategy="custom"}setRandomFunction(t){this.randomFn=t}async start(t){this._state!=="running"&&(this._state="starting",this.roomId=t,this.conversationHistory=[],this.responseIndex=0,this.messageCount=0,await this.delay(50),this._state="running",this.emitEvent({type:"started",agentId:this.id}))}async stop(){this._state==="running"&&(this._state="stopping",await this.delay(50),this._state="stopped",this.roomId=void 0,this.emitEvent({type:"stopped",agentId:this.id}))}async processMessage(t){if(this._state!=="running")throw new Error("Agent is not running");if(this.config.maxMessages&&this.messageCount>=this.config.maxMessages)return await this.stop(),"";this.addMessage(t,"user"),this.emitEvent({type:"message_received",agentId:this.id,message:t});let e;try{if(this.config.responseStrategy==="custom"&&this.customHandler)e=await this.customHandler(this.id,t,this.conversationHistory);else{if(this.config.responseStrategy==="silent")return"";if(this.config.responseStrategy==="error"){let i=new Error("Agent error");throw this.emitEvent({type:"error",agentId:this.id,error:i}),i}else{let i=U(this.config.responseStrategy,t,this.config.cannedResponses,this.responseIndex,this.randomFn);e=i.response,this.responseIndex=i.nextIndex}}}catch(i){throw this._state="error",i}return this.config.simulateTyping&&this.config.typingDelayPerChar&&await this.delay(e.length*this.config.typingDelayPerChar),this.config.responseDelayMs&&await this.delay(this.config.responseDelayMs),this.addMessage(e,"agent"),this.messageCount++,this.emitEvent({type:"response_sent",agentId:this.id,response:e}),e}addEventListener(t){return this.eventListeners.add(t),()=>this.eventListeners.delete(t)}clearHistory(){this.conversationHistory=[],this.responseIndex=0}reset(){this._state="idle",this.roomId=void 0,this.conversationHistory=[],this.responseIndex=0,this.messageCount=0}toJSON(){return{id:this.id,name:this.name,state:this._state,roomId:this.roomId,config:this.config,historyLength:this.conversationHistory.length,messageCount:this.messageCount}}addMessage(t,e){let i={id:g("msg"),content:t,role:e,timestamp:Date.now()};return this.conversationHistory.push(i),i}emitEvent(t){for(let e of this.eventListeners)try{e(t)}catch(i){console.error("Error in agent event listener:",i)}}delay(t){return new Promise(e=>setTimeout(e,t))}};var u=class r extends Error{constructor(t,e,i){super(e),this.name="MockLiveKitError",this.code=t,this.details=i,typeof Error.captureStackTrace=="function"&&Error.captureStackTrace(this,r)}toMockError(){return{code:this.code,message:this.message,details:this.details}}static fromMockError(t){return new r(t.code,t.message,t.details)}},v=class extends u{constructor(t){super("ROOM_NOT_FOUND",`Room not found: ${t}`,{roomId:t}),this.name="RoomNotFoundError"}},q=class extends u{constructor(t){super("ROOM_ENDED",`Room has ended: ${t}`,{roomId:t}),this.name="RoomEndedError"}},$=class extends u{constructor(t,e){super("PARTICIPANT_ALREADY_JOINED",`Participant ${t} is already in room ${e}`,{identity:t,roomId:e}),this.name="ParticipantAlreadyJoinedError"}},j=class extends u{constructor(t){super("PARTICIPANT_NOT_FOUND",`Participant not found: ${t}`,{identity:t}),this.name="ParticipantNotFoundError"}},F=class extends u{constructor(t){super("TRACK_NOT_FOUND",`Track not found: ${t}`,{trackId:t}),this.name="TrackNotFoundError"}},G=class extends u{constructor(t){super("AGENT_NOT_FOUND",`Agent not found: ${t}`,{agentId:t}),this.name="AgentNotFoundError"}},V=class extends u{constructor(t="Unauthorized"){super("UNAUTHORIZED",t),this.name="UnauthorizedError"}},K=class extends u{constructor(t="Network error occurred"){super("NETWORK_ERROR",t),this.name="NetworkError"}},z=class extends u{constructor(t,e){super("INVALID_OPERATION",t,e),this.name="InvalidOperationError"}},J=class extends u{constructor(t,e){super("TIMEOUT",`Operation timed out: ${t}`,{operation:t,timeoutMs:e}),this.name="TimeoutError"}};function O(r){switch(r.code){case"ROOM_NOT_FOUND":return new v(r.details?.roomId??"unknown");case"ROOM_ENDED":return new q(r.details?.roomId??"unknown");case"PARTICIPANT_ALREADY_JOINED":return new $(r.details?.identity??"unknown",r.details?.roomId??"unknown");case"PARTICIPANT_NOT_FOUND":return new j(r.details?.identity??"unknown");case"TRACK_NOT_FOUND":return new F(r.details?.trackId??"unknown");case"AGENT_NOT_FOUND":return new G(r.details?.agentId??"unknown");case"UNAUTHORIZED":return new V(r.message);case"NETWORK_ERROR":return new K(r.message);case"INVALID_OPERATION":return new z(r.message,r.details);case"TIMEOUT":return new J(r.details?.operation??"unknown",r.details?.timeoutMs??0);default:return u.fromMockError(r)}}function y(r){return typeof r=="object"&&r!==null&&"code"in r&&"message"in r&&typeof r.code=="string"&&typeof r.message=="string"}var L=class{constructor(){this.listeners={};this.wildcardListeners=new Set;this.eventHistory=[];this.maxHistorySize=1e3;this.recordHistory=!0}setMaxHistorySize(t){this.maxHistorySize=t,this.trimHistory()}setRecordHistory(t){this.recordHistory=t}on(t,e){return this.listeners[t]||(this.listeners[t]=new Set),this.listeners[t].add(e),()=>{this.off(t,e)}}once(t,e){let i=n=>{this.off(t,i),e(n)};return this.on(t,i)}off(t,e){this.listeners[t]?.delete(e)}onAny(t){return this.wildcardListeners.add(t),()=>{this.wildcardListeners.delete(t)}}offAny(t){this.wildcardListeners.delete(t)}removeAllListeners(t){t?delete this.listeners[t]:(this.listeners={},this.wildcardListeners.clear())}emit(t){this.recordHistory&&(this.eventHistory.push(t),this.trimHistory());let e=this.listeners[t.type];if(e)for(let i of e)try{i(t)}catch(n){console.error(`Error in mock event listener for ${t.type}:`,n)}for(let i of this.wildcardListeners)try{i(t)}catch(n){console.error("Error in mock wildcard event listener:",n)}}trimHistory(){this.eventHistory.length>this.maxHistorySize&&(this.eventHistory=this.eventHistory.slice(-this.maxHistorySize))}emitRoomCreated(t){let e={type:"roomCreated",timestamp:new Date().toISOString(),roomId:t.id,room:t};this.emit(e)}emitRoomEnded(t){let e={type:"roomEnded",timestamp:new Date().toISOString(),roomId:t};this.emit(e)}emitRoomConnectionStateChanged(t,e,i){let n={type:"roomConnectionStateChanged",timestamp:new Date().toISOString(),roomId:t,state:e,previousState:i};this.emit(n)}emitParticipantJoined(t,e){let i={type:"participantJoined",timestamp:new Date().toISOString(),roomId:t,participant:e};this.emit(i)}emitParticipantLeft(t,e){let i={type:"participantLeft",timestamp:new Date().toISOString(),roomId:t,participantIdentity:e};this.emit(i)}emitParticipantAttributesChanged(t,e,i,n){let s={type:"participantAttributesChanged",timestamp:new Date().toISOString(),roomId:t,participantIdentity:e,attributes:i,previousAttributes:n};this.emit(s)}emitTrackPublished(t,e,i){let n={type:"trackPublished",timestamp:new Date().toISOString(),roomId:t,participantIdentity:e,track:i};this.emit(n)}emitTrackUnpublished(t,e,i){let n={type:"trackUnpublished",timestamp:new Date().toISOString(),roomId:t,participantIdentity:e,trackId:i};this.emit(n)}emitTrackMuted(t,e){let i={type:"trackMuted",timestamp:new Date().toISOString(),roomId:t,trackId:e};this.emit(i)}emitTrackUnmuted(t,e){let i={type:"trackUnmuted",timestamp:new Date().toISOString(),roomId:t,trackId:e};this.emit(i)}emitMessageReceived(t,e){let i={type:"messageReceived",timestamp:new Date().toISOString(),roomId:t,message:e};this.emit(i)}emitMessageSent(t,e){let i={type:"messageSent",timestamp:new Date().toISOString(),roomId:t,message:e};this.emit(i)}emitTypingIndicator(t,e,i){let n={type:"typingIndicator",timestamp:new Date().toISOString(),roomId:t,participantIdentity:e,isTyping:i};this.emit(n)}emitAgentStarted(t,e){let i={type:"agentStarted",timestamp:new Date().toISOString(),roomId:t,agent:e};this.emit(i)}emitAgentStopped(t,e){let i={type:"agentStopped",timestamp:new Date().toISOString(),roomId:t,agentId:e};this.emit(i)}emitAgentMessage(t,e,i){let n={type:"agentMessage",timestamp:new Date().toISOString(),roomId:t,agentId:e,message:i};this.emit(n)}emitDataReceived(t,e,i,n){let s={type:"dataReceived",timestamp:new Date().toISOString(),roomId:t,participantIdentity:e,data:i,topic:n};this.emit(s)}emitError(t,e){let i={type:"error",timestamp:new Date().toISOString(),roomId:e,error:t};this.emit(i)}getHistory(t){return t?this.eventHistory.filter(e=>e.type===t):[...this.eventHistory]}getLastEvents(t,e){return(e?this.eventHistory.filter(n=>n.type===e):this.eventHistory).slice(-t)}clearHistory(){this.eventHistory=[]}listenerCount(t){return(this.listeners[t]?.size??0)+this.wildcardListeners.size}};var f=class{constructor(t,e,i,n){this.muted=!1;this.enabled=!0;this.attachedElements=new Set;this.kind=t,this.source=e,this.sid=g("TR"),this.mediaStreamTrack=i,this.mediaCleanup=n}get mediaTrack(){return this.mediaStreamTrack}attach(t){let e=t||document.createElement(this.kind==="video"?"video":"audio");if(this.mediaStreamTrack){let i=new MediaStream([this.mediaStreamTrack]);e.srcObject=i,e.autoplay=!0,this.kind==="video"&&(e.playsInline=!0,e.muted=!0)}return this.attachedElements.add(e),e}detach(t){if(t)return t.srcObject=null,this.attachedElements.delete(t),[t];let e=Array.from(this.attachedElements);for(let i of e)i.srcObject=null;return this.attachedElements.clear(),e}stop(){this.detach(),this.mediaCleanup&&this.mediaCleanup(),this.mediaStreamTrack&&this.mediaStreamTrack.stop(),this.enabled=!1}setMuted(t){this.muted=t,this.mediaStreamTrack&&(this.mediaStreamTrack.enabled=!t)}setEnabled(t){this.enabled=t,this.mediaStreamTrack&&(this.mediaStreamTrack.enabled=t)}},k=class{constructor(t,e){this.subscribed=!0;this.isEnabled=!0;this.track=t,this.trackSid=t.sid,this.trackName=e||`${t.kind}_${t.source}`,this.source=t.source,this.kind=t.kind}get isMuted(){return this.track?.muted??!1}get isSubscribed(){return this.subscribed&&this.track!==null}setSubscribed(t){this.subscribed=t}setEnabled(t){this.isEnabled=t,this.track&&(this.track.enabled=t)}setMuted(t){this.track&&this.track.setMuted(t)}};var x=class{constructor(t){this.identity="";this.sid="";this.name="";this.attributes={};this.kind="standard";this.trackPublications=new Map;this.audioTrackPublications=new Map;this.videoTrackPublications=new Map;this._cameraEnabled=!1;this._microphoneEnabled=!1;this._screenShareEnabled=!1;this.room=t,this.sid=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(t){let i={camera:"camera",Camera:"camera",microphone:"microphone",Microphone:"microphone",screen_share:"screen_share",ScreenShare:"screen_share",screen_share_audio:"screen_share_audio",ScreenShareAudio:"screen_share_audio"}[t]||t;return this.trackPublications.get(i)}getTrackPublicationBySid(t){for(let e of this.trackPublications.values())if(e.trackSid===t)return e}setAttributes(t){this.attributes={...this.attributes,...t}}async setCameraEnabled(t,e){if(this._cameraEnabled=t,t){let{createSyntheticVideoTrack:n}=await Promise.resolve().then(()=>(w(),P)),{track:s,cleanup:d}=n({animation:"avatar",label:this.name||"Local Camera"}),a=new f("video","camera",s,d),c=new k(a,e?.name);return this.trackPublications.set("camera",c),this.videoTrackPublications.set(a.sid,c),this.room.emit("localTrackPublished",c,this),c}let i=this.trackPublications.get("camera");i&&(i.track?.stop(),this.trackPublications.delete("camera"),this.videoTrackPublications.delete(i.trackSid),this.room.emit("localTrackUnpublished",i,this))}async setMicrophoneEnabled(t,e){if(this._microphoneEnabled=t,t){let{createSyntheticAudioTrack:n}=await Promise.resolve().then(()=>(w(),P)),{track:s,cleanup:d}=n({enabled:!1}),a=new f("audio","microphone",s,d),c=new k(a,e?.name);return this.trackPublications.set("microphone",c),this.audioTrackPublications.set(a.sid,c),this.room.emit("localTrackPublished",c,this),c}let i=this.trackPublications.get("microphone");i&&(i.track?.stop(),this.trackPublications.delete("microphone"),this.audioTrackPublications.delete(i.trackSid),this.room.emit("localTrackUnpublished",i,this))}async setScreenShareEnabled(t,e){if(this._screenShareEnabled=t,t){let{createSyntheticVideoTrack:n}=await Promise.resolve().then(()=>(w(),P)),{track:s,cleanup:d}=n({animation:"bars",label:"Screen Share",width:1920,height:1080}),a=new f("video","screen_share",s,d),c=new k(a,e?.name||"screen");return this.trackPublications.set("screen_share",c),this.videoTrackPublications.set(a.sid,c),this.room.emit("localTrackPublished",c,this),c}let i=this.trackPublications.get("screen_share");i&&(i.track?.stop(),this.trackPublications.delete("screen_share"),this.videoTrackPublications.delete(i.trackSid),this.room.emit("localTrackUnpublished",i,this))}async publishTrack(t,e){let i=new k(t,e?.name),n=e?.source||t.source;return this.trackPublications.set(n,i),t.kind==="audio"?this.audioTrackPublications.set(t.sid,i):t.kind==="video"&&this.videoTrackPublications.set(t.sid,i),this.room.emit("localTrackPublished",i,this),i}async unpublishTrack(t){t.stop();for(let[e,i]of this.trackPublications)if(i.track===t){this.trackPublications.delete(e),t.kind==="audio"?this.audioTrackPublications.delete(t.sid):t.kind==="video"&&this.videoTrackPublications.delete(t.sid),this.room.emit("localTrackUnpublished",i,this);break}}async sendText(t,e){return{id:g("msg")}}async publishData(t,e){}async setMetadata(t){this.attributes.metadata=t}async setName(t){this.name=t}cleanup(){for(let t of this.trackPublications.values())t.track?.stop();this.trackPublications.clear(),this.audioTrackPublications.clear(),this.videoTrackPublications.clear(),this._cameraEnabled=!1,this._microphoneEnabled=!1,this._screenShareEnabled=!1}};function gt(r){switch(r){case"standard":return 0;case"ingress":return 1;case"egress":return 2;case"sip":return 3;case"agent":return 4;default:return 0}}var R=class{constructor(t,e,i={},n="standard"){this.connectionQuality="excellent";this.isSpeaking=!1;this.audioLevel=0;this.trackPublications=new Map;this.identity=t,this.sid=g("PA"),this.name=e,this.attributes=i,this._kindString=n,this.kind=gt(n),this.joinedAt=new Date}get isAgent(){return this.kind===4||this.attributes["lk.agent.name"]!==void 0}get kindString(){return this._kindString}get isCameraEnabled(){let t=this.getTrackPublication("camera");return!!(t?.track&&!t.isMuted)}get isMicrophoneEnabled(){let t=this.getTrackPublication("microphone");return!!(t?.track&&!t.isMuted)}getTrackPublication(t){for(let e of this.trackPublications.values())if(e.source===t)return e}getTrackPublicationBySid(t){return this.trackPublications.get(t)}getTrackPublications(){return Array.from(this.trackPublications.values())}getAudioTracks(){return this.getTrackPublications().filter(t=>t.kind==="audio")}getVideoTracks(){return this.getTrackPublications().filter(t=>t.kind==="video")}addTrackPublication(t){this.trackPublications.set(t.trackSid,t)}removeTrackPublication(t){let e=this.trackPublications.get(t);return e&&(this.trackPublications.delete(t),e.track?.stop()),e}setAttributes(t){this.attributes={...this.attributes,...t}}getAttribute(t){return this.attributes[t]}startSpeaking(t=.5){this.isSpeaking=!0,this.audioLevel=t}stopSpeaking(){this.isSpeaking=!1,this.audioLevel=0}setConnectionQuality(t){this.connectionQuality=t}cleanup(){for(let t of this.trackPublications.values())t.track?.stop();this.trackPublications.clear()}};var E=class{constructor(t){this.remoteParticipants=new Map;this._state="disconnected";this.eventHandlers=new Map;this.textStreamHandlers=new Map;this.rpcHandlers=new Map;this.mockService=t,this.localParticipant=new x(this),this.sid=g("RM")}get state(){return this._state}set state(t){let e=this._state;this._state=t,e!==t&&this.emit("connectionStateChanged",t,e)}get numParticipants(){return this.remoteParticipants.size+1}get isConnected(){return this._state==="connected"}async connect(t,e){this._state="connecting",this.emit("connectionStateChanged","connecting","disconnected"),await this.mockService.simulateLatency(),this._state="connected",this.connectedAt=new Date().toISOString(),this.emit("connectionStateChanged","connected","connecting"),this.emit("connected")}async disconnect(){for(let e of this.remoteParticipants.values())e.cleanup();this.remoteParticipants.clear(),this.localParticipant.cleanup();let t=this._state;this._state="disconnected",this.emit("connectionStateChanged","disconnected",t),this.emit("disconnected"),this.eventHandlers.clear()}async reconnect(){this._state="reconnecting",this.emit("connectionStateChanged","reconnecting","connected"),await this.mockService.simulateLatency(),this._state="connected",this.emit("connectionStateChanged","connected","reconnecting"),this.emit("reconnected")}on(t,e){return this.eventHandlers.has(t)||this.eventHandlers.set(t,new Set),this.eventHandlers.get(t).add(e),this}once(t,e){let i=(...n)=>{this.off(t,i),e(...n)};return this.on(t,i)}off(t,e){return this.eventHandlers.get(t)?.delete(e),this}removeAllListeners(){this.eventHandlers.clear()}emit(t,...e){let i=this.eventHandlers.get(t);if(i)for(let n of i)try{n(...e)}catch(s){console.error(`Error in mock room event handler for ${t}:`,s)}}registerRpcMethod(t,e){this.rpcHandlers.set(t,e)}unregisterRpcMethod(t){this.rpcHandlers.delete(t)}async callRpc(t,e,i,n=1e4){let s=this.rpcHandlers.get(t);if(!s)throw new Error(`RPC method not found: ${t}`);return s({callerIdentity:e,payload:i,responseTimeout:n})}registerTextStreamHandler(t,e){this.textStreamHandlers.set(t,e)}unregisterTextStreamHandler(t){this.textStreamHandlers.delete(t)}simulateTextStream(t,e){let i=this.textStreamHandlers.get(t);i&&i(e,{identity:e.participantIdentity})}getParticipantByIdentity(t){return t===this.localParticipant.identity?new R(this.localParticipant.identity,this.localParticipant.name,this.localParticipant.attributes):this.remoteParticipants.get(t)}getParticipantBySid(t){if(t===this.localParticipant.sid)return new R(this.localParticipant.identity,this.localParticipant.name,this.localParticipant.attributes);for(let e of this.remoteParticipants.values())if(e.sid===t)return e}async simulateParticipantJoin(t,e){let i=new R(t,e?.name,e?.attributes||{},e?.kind||"standard");return this.remoteParticipants.set(t,i),this.emit("participantConnected",i),e?.withCamera&&await this.simulateRemoteTrack(t,"video","camera"),e?.withMicrophone&&await this.simulateRemoteTrack(t,"audio","microphone"),i}simulateParticipantLeave(t){let e=this.remoteParticipants.get(t);if(e){for(let i of e.getTrackPublications())i.track?.stop(),this.emit("trackUnsubscribed",i.track,i,e);this.remoteParticipants.delete(t),this.emit("participantDisconnected",e)}}async simulateRemoteTrack(t,e,i){let n=this.remoteParticipants.get(t);if(!n)return;let s,d;if(e==="video"){let{createSyntheticVideoTrack:o}=await Promise.resolve().then(()=>(w(),P)),l=o({animation:n.isAgent?"avatar":"pulse",label:n.name||t,foregroundColor:n.isAgent?"#22c55e":"#4361ee"});s=l.track,d=l.cleanup}else if(e==="audio"){let{createSyntheticAudioTrack:o}=await Promise.resolve().then(()=>(w(),P)),l=o({enabled:!1});s=l.track,d=l.cleanup}let a=new f(e,i,s,d),c=new k(a);return n.addTrackPublication(c),this.emit("trackSubscribed",a,c,n),this.emit("trackPublished",c,n),a}simulateTrackUnpublished(t,e){let i=this.remoteParticipants.get(t);if(!i)return;let n=i.getTrackPublication(e);n&&(i.removeTrackPublication(n.trackSid),this.emit("trackUnpublished",n,i),this.emit("trackUnsubscribed",n.track,n,i))}async simulateAgentJoin(t,e="AI Agent"){return this.simulateParticipantJoin(t,{name:e,kind:"agent",withCamera:!0,withMicrophone:!0,attributes:{"lk.agent.name":e,"lk.agent.state":"active"}})}simulateAttributeChange(t,e){let i=this.remoteParticipants.get(t);if(i){let n={...i.attributes};i.setAttributes(e),this.emit("participantAttributesChanged",e,n,i)}}simulateTrackMuted(t,e,i){let n=this.remoteParticipants.get(t);if(!n)return;let s=n.getTrackPublication(e);s?.track&&(s.track.setMuted(i),this.emit(i?"trackMuted":"trackUnmuted",s,n))}simulateActiveSpeakersChanged(t){let e=[];for(let i of t){let n=this.remoteParticipants.get(i);n&&(n.startSpeaking(),e.push(n))}this.emit("activeSpeakersChanged",e)}simulateDataReceived(t,e,i,n){let s=this.remoteParticipants.get(e);this.emit("dataReceived",t,s,i,n)}};var D=class{constructor(t={}){this.rooms=new Map;this.participants=new Map;this.tracks=new Map;this.agents=new Map;this.messages=new Map;this.config=t,this.randomState=t.seed??Date.now()}updateConfig(t){this.config={...this.config,...t},t.seed!==void 0&&(this.randomState=t.seed)}getConfig(){return{...this.config}}random(){return this.randomState=(this.randomState*1103515245+12345)%2147483648,this.randomState/2147483648}createRoom(t,e,i){let n=g("room"),s=new Date().toISOString(),d={id:n,name:t,groupId:e||g("group"),createdAt:s,metadata:i,isActive:!0,participantIds:[],connectionState:"disconnected",wsURL:Z(n),token:T(n,"pending",s)};return this.rooms.set(n,d),this.messages.set(n,[]),d}getRoom(t){return this.rooms.get(t)}getRoomByName(t){for(let e of this.rooms.values())if(e.name===t)return e}listRooms(t=!1){let e=Array.from(this.rooms.values());return t?e.filter(i=>i.isActive):e}updateRoomConnectionState(t,e){let i=this.rooms.get(t);if(!i)return;let n=i.connectionState;return i.connectionState=e,n}endRoom(t){let e=this.rooms.get(t);if(!e||!e.isActive)return!1;e.isActive=!1,e.endedAt=new Date().toISOString(),e.connectionState="disconnected";for(let i of e.participantIds){let n=this.participants.get(i);n&&(n.isConnected=!1)}for(let i of this.agents.values())i.roomId===t&&i.status==="running"&&(i.status="stopped",i.stoppedAt=new Date().toISOString());return!0}deleteRoom(t){let e=this.rooms.get(t);if(!e)return!1;for(let i of e.participantIds)this.participants.delete(i);for(let[i,n]of this.tracks)n.roomId===t&&this.tracks.delete(i);for(let[i,n]of this.agents)n.roomId===t&&this.agents.delete(i);return this.messages.delete(t),this.rooms.delete(t),!0}addParticipant(t,e,i,n="user",s="standard",d=!1){let a=this.rooms.get(t);if(!a)return this.createError("ROOM_NOT_FOUND",`Room ${t} not found`);if(!a.isActive)return this.createError("ROOM_ENDED",`Room ${t} has ended`);let c=this.participants.get(e);if(c&&c.roomId===t&&c.isConnected)return this.config.strictMode?this.createError("PARTICIPANT_ALREADY_JOINED",`Participant ${e} is already in room ${t}`):c;let o={identity:e,name:i||e,roomId:t,joinedAt:new Date().toISOString(),isConnected:!0,trackIds:[],role:n,attributes:{},kind:s,isLocal:d};return this.participants.set(e,o),a.participantIds.push(e),o}getParticipant(t){return this.participants.get(t)}listParticipants(t,e=!0){let i=this.rooms.get(t);if(!i)return[];let n=[];for(let s of i.participantIds){let d=this.participants.get(s);d&&(!e||d.isConnected)&&n.push(d)}return n}updateParticipantAttributes(t,e){let i=this.participants.get(t);if(!i)return;let n={...i.attributes};return i.attributes={...i.attributes,...e},n}removeParticipant(t){let e=this.participants.get(t);if(!e)return;e.isConnected=!1;for(let n of e.trackIds)this.tracks.delete(n);e.trackIds=[];let i=this.rooms.get(e.roomId);if(i){let n=i.participantIds.indexOf(t);n!==-1&&i.participantIds.splice(n,1)}return e}publishTrack(t,e,i="unknown",n){let s=this.participants.get(t);if(!s)return this.createError("PARTICIPANT_NOT_FOUND",`Participant ${t} not found`);if(!s.isConnected)return this.createError("INVALID_OPERATION",`Participant ${t} is not connected`);let d=this.rooms.get(s.roomId);if(!d||!d.isActive)return this.createError("ROOM_ENDED","Room is not active");let a=g("track"),c={id:a,kind:e,source:i,participantIdentity:t,roomId:s.roomId,publishedAt:new Date().toISOString(),muted:!1,metadata:n};return this.tracks.set(a,c),s.trackIds.push(a),c}getTrack(t){return this.tracks.get(t)}listTracks(t,e){let i=[];for(let n of this.tracks.values())t&&n.roomId!==t||e&&n.participantIdentity!==e||i.push(n);return i}unpublishTrack(t){let e=this.tracks.get(t);if(!e)return;let i=this.participants.get(e.participantIdentity);if(i){let n=i.trackIds.indexOf(t);n!==-1&&i.trackIds.splice(n,1)}return this.tracks.delete(t),e}setTrackMuted(t,e){let i=this.tracks.get(t);return i?(i.muted=e,!0):!1}startAgent(t,e,i={}){let n=this.rooms.get(t);if(!n)return this.createError("ROOM_NOT_FOUND",`Room ${t} not found`);if(!n.isActive)return this.createError("ROOM_ENDED",`Room ${t} has ended`);let s=g("agent"),d={id:s,roomId:t,name:e,status:"running",startedAt:new Date().toISOString(),config:{responseStrategy:"echo",...i},messageHistory:[]};return this.agents.set(s,d),this.addParticipant(t,`agent_${s}`,e,"agent","agent",!1),d}getAgent(t){return this.agents.get(t)}listAgents(t){let e=[];for(let i of this.agents.values())i.roomId===t&&e.push(i);return e}stopAgent(t){let e=this.agents.get(t);if(e)return e.status="stopped",e.stoppedAt=new Date().toISOString(),this.removeParticipant(`agent_${t}`),e}updateAgentStatus(t,e){let i=this.agents.get(t);return i?(i.status=e,e==="stopped"&&(i.stoppedAt=new Date().toISOString()),!0):!1}addAgentMessage(t,e,i){let n=this.agents.get(t);if(!n)return;let s={id:g("msg"),content:e,role:i,timestamp:new Date().toISOString()};return n.messageHistory.push(s),s}addMessage(t,e,i,n="standard",s){if(!this.rooms.get(t))return this.createError("ROOM_NOT_FOUND",`Room ${t} not found`);let a={id:g("msg"),roomId:t,content:i,participantIdentity:e,createdAt:new Date().toISOString(),type:n,attributes:s},c=this.messages.get(t)||[];return c.push(a),this.messages.set(t,c),a}getMessages(t,e){let i=this.messages.get(t)||[];return e?i.slice(-e):i}createError(t,e,i){return{code:t,message:e,details:i}}isError(t){return typeof t=="object"&&t!==null&&"code"in t&&"message"in t}reset(){this.rooms.clear(),this.participants.clear(),this.tracks.clear(),this.agents.clear(),this.messages.clear(),this.randomState=this.config.seed??Date.now()}getSnapshot(){return{rooms:new Map(this.rooms),participants:new Map(this.participants),tracks:new Map(this.tracks),agents:new Map(this.agents),messages:new Map(this.messages),config:{...this.config},eventHistory:[]}}toJSON(){return{rooms:Object.fromEntries(this.rooms),participants:Object.fromEntries(this.participants),tracks:Object.fromEntries(this.tracks),agents:Object.fromEntries(this.agents),messages:Object.fromEntries(this.messages),config:this.config,eventHistory:[],exportedAt:new Date().toISOString()}}fromJSON(t){this.rooms=new Map(Object.entries(t.rooms)),this.participants=new Map(Object.entries(t.participants)),this.tracks=new Map(Object.entries(t.tracks)),this.agents=new Map(Object.entries(t.agents)),this.messages=new Map(Object.entries(t.messages).map(([e,i])=>[e,i])),this.config=t.config}};var nt=class{constructor(t={}){this.messageListeners=new Set;this.typingListeners=new Set;this.callRequestListeners=new Map;this._authToken=null;this._registeredUser=null;this.agents=new Map;this.config={latencyMs:t.latencyMs??0,strictMode:t.strictMode??!1,seed:t.seed,scenario:t.scenario,errorConfig:t.errorConfig,autoEmitEvents:t.autoEmitEvents??!0,organizationId:t.organizationId??"mock_org",apiUrl:t.apiUrl??"https://mock-livekit.local"},this.state=new D(this.config),this.events=new L,this.room=new E(this),this.config.scenario&&this.applyScenario(this.config.scenario)}get authToken(){return this._authToken}get registeredUser(){return this._registeredUser}getState(){return this.state}getEvents(){return this.events}updateConfig(t){this.config={...this.config,...t},this.state.updateConfig(t)}getConfig(){return{...this.config}}async simulateLatency(){this.config.latencyMs&&this.config.latencyMs>0&&await new Promise(t=>setTimeout(t,this.config.latencyMs))}applyScenario(t){switch(t){case"happy_path":this.config.errorConfig={},this.config.latencyMs=0;break;case"slow_network":this.config.latencyMs=500;break;case"network_unstable":this.config.errorConfig={errorRate:30};break;default:break}}shouldThrowError(){return this.config.errorConfig?.errorRate?this.state.random()*100<this.config.errorConfig.errorRate:!1}ensureRoom(){return this.room||(this.room=new E(this)),this.room}async registerUser(t,e,i,n){if(await this.simulateLatency(),this.config.errorConfig?.unauthorized)throw new u("UNAUTHORIZED","Registration failed");let s={id:g("user"),externalId:t,organizationId:this.config.organizationId,role:"user",token:T("pending",t,new Date().toISOString())};return this._authToken=s.token,this._registeredUser=s,this.room.localParticipant.identity=t,this.room.localParticipant.name=i?.name||t,s}async registerAgent(t,e){if(await this.simulateLatency(),this.config.errorConfig?.unauthorized)throw new u("UNAUTHORIZED","Agent registration failed");let i=T("agent",t,new Date().toISOString());return this._authToken=i,this.room.localParticipant.identity=t,this.room.localParticipant.name=e.name,i}async quickStart(t){return await this.registerUser(t.user.externalId,t.user.secret,{name:t.user.name,email:t.user.email,phone:t.user.phone,avatar:t.user.avatar,userGroupId:t.user.userGroupId},t.user.metadata),this.createRoom({language:t.room.language,timezone:t.room.timezone,affinity:t.room.affinity,metadata:t.room.metadata,disablePersistence:t.room.disablePersistence,contextualEvents:t.room.contextualEvents,userGroupId:t.room.userGroupId??void 0})}async createRoom(t,e={}){if(await this.simulateLatency(),this.config.errorConfig?.networkError||this.shouldThrowError())throw new u("NETWORK_ERROR","Failed to create room");let i=this.state.createRoom(`room_${Date.now()}`,t.affinity?.agentId,t.metadata);this.room.id=i.id,this.room.groupId=i.groupId,this.room.createdAt=i.createdAt,this.room.connectedAt=new Date().toISOString();let n=this.room.localParticipant.identity||"local_user";return this.state.addParticipant(i.id,n,this.room.localParticipant.name,"user","standard",!0),Object.keys(e).length>0&&(this.state.updateParticipantAttributes(n,e),this.room.localParticipant.setAttributes(e)),this.state.updateRoomConnectionState(i.id,"connected"),this.config.autoEmitEvents&&(this.events.emitRoomCreated(i),this.events.emitRoomConnectionStateChanged(i.id,"connected","disconnected")),(t.affinity?.agentId||t.affinity?.agentType)&&await this.startMockAgent(i.id,{type:t.affinity?.agentType,nature:t.affinity?.nature??"ai"}),await this.room.connect(i.wsURL,i.token),this.room}async joinRoom(t,e,i,n){await this.simulateLatency();let s=this.state.getRoom(t);if(!s)throw new v(t);if(!s.isActive)throw new u("ROOM_ENDED",`Room ${t} has ended`);this.room.id=s.id,this.room.groupId=s.groupId,this.room.createdAt=s.createdAt,this.room.connectedAt=new Date().toISOString();let d=this.room.localParticipant.identity||"local_user",a=this.state.addParticipant(t,d,this.room.localParticipant.name,"user","standard",!0);if(y(a))throw O(a);if(n){let c={};for(let[o,l]of Object.entries(n))c[o]=String(l);this.state.updateParticipantAttributes(d,c)}return this.state.updateRoomConnectionState(t,"connected"),this.config.autoEmitEvents&&(this.events.emitParticipantJoined(t,a),this.events.emitRoomConnectionStateChanged(t,"connected","disconnected")),await this.room.connect(s.wsURL,s.token),this.room}async evaluateRoom(t){await this.simulateLatency();let e=t.roomId||this.room?.id;if(!e)throw new u("ROOM_NOT_FOUND","No room to evaluate");let i=this.state.getRoom(e);if(!i)throw new v(e);i.metadata||(i.metadata={}),i.metadata.evaluation={rating:t.rating,comment:t.comment,evaluatedAt:new Date().toISOString()}}async closeRoom(){await this.simulateLatency(),this.room?.id&&(this.state.endRoom(this.room.id),await this.stopLocalTracks(),this.config.autoEmitEvents&&this.events.emitRoomEnded(this.room.id))}async disconnect(){if(this.room){let t=this.room.id,e=this.room.localParticipant.identity;await this.stopLocalTracks(),this.state.removeParticipant(e),this.config.autoEmitEvents&&t&&this.events.emitParticipantLeft(t,e),this.room.removeAllListeners(),await this.room.disconnect()}}async stopLocalTracks(){let t=this.room?.localParticipant;t&&await Promise.all([t.setCameraEnabled(!1),t.setMicrophoneEnabled(!1),t.setScreenShareEnabled(!1)])}async disconnectAndCloseRoom(){await this.closeRoom(),await this.disconnect()}async readRoom(t){await this.simulateLatency();let e=this.state.getRoom(t);if(!e)throw new v(t);e.metadata||(e.metadata={}),e.metadata.lastReadAt=new Date().toISOString()}async getRooms(t){await this.simulateLatency();let e=this.state.listRooms();t.roomStatus==="active"?e=e.filter(a=>a.isActive):t.roomStatus==="closed"&&(e=e.filter(a=>!a.isActive)),t.ids?.length&&(e=e.filter(a=>t.ids.includes(a.id))),t.groupId&&(e=e.filter(a=>a.groupId===t.groupId));let i=t.offset??0,n=t.limit??20;return{items:e.slice(i,i+n).map(a=>({id:a.id,name:a.name,groupId:a.groupId,organizationId:this.config.organizationId,endedAt:a.endedAt??null,createdAt:a.createdAt,updatedAt:a.createdAt,status:a.isActive?"active":"ended",participants:this.state.listParticipants(a.id).map(c=>({id:c.identity,name:c.name||c.identity,role:c.role,isLocal:c.isLocal})),evaluations:[],_count:{messages:this.state.getMessages(a.id).length,participants:a.participantIds.length}})),count:e.length,limit:n,offset:i}}async sendMessage(t,e){if(await this.simulateLatency(),!this.room?.id)throw new u("INVALID_OPERATION","Not connected to a room");let i=this.state.addMessage(this.room.id,this.room.localParticipant.identity,t,"standard",e);if(y(i))throw O(i);let n={id:i.id,timestamp:Date.now(),message:t,content:t,createdAt:i.createdAt,from:{identity:this.room.localParticipant.identity,name:this.room.localParticipant.name,id:this.room.localParticipant.identity,role:"user"}};for(let s of this.messageListeners)s([n]);this.config.autoEmitEvents&&this.events.emitMessageSent(this.room.id,i);for(let s of this.agents.values())s.isRunning&&s.roomId===this.room.id&&this.triggerAgentResponse(s,t)}async persistMessage(t){await this.simulateLatency();let e=this.state.addMessage(t.roomId,t.identity||"system",t.content);if(y(e))throw O(e);return{items:[{id:e.id,timestamp:Date.now(),message:e.content,content:e.content,createdAt:e.createdAt}],count:1,limit:1,offset:0}}async getMessages(t){await this.simulateLatency();let e=t.roomId||this.room?.id;return e?this.state.getMessages(e,t.limit).map(n=>({id:n.id,timestamp:Date.parse(n.createdAt),message:n.content,content:n.content,createdAt:n.createdAt,from:{identity:n.participantIdentity,id:n.participantIdentity,role:"user"}})):[]}async sendMessageReport(t){await this.simulateLatency()}async deleteMessageReport(t){await this.simulateLatency()}async updateMessageReactions(t){await this.simulateLatency()}subscribeMessages(t){return this.messageListeners.add(t),()=>{this.messageListeners.delete(t)}}async sendTypingIndicator(t){if(!this.room?.id)return;let e={type:"typing",isTyping:t,timestamp:Date.now(),participantId:this.room.localParticipant.identity};for(let i of this.typingListeners)i(e);this.config.autoEmitEvents&&this.events.emitTypingIndicator(this.room.id,this.room.localParticipant.identity,t)}subscribeTypingIndicators(t){return this.typingListeners.add(t),()=>this.typingListeners.delete(t)}unsubscribeTypingIndicators(t){this.typingListeners.delete(t)}async sendContextualEvent(t){await this.simulateLatency()}async requestNewRoom(t){await this.simulateLatency();let e=this.state.createRoom(`transfer_${Date.now()}`,void 0,{originRoom:t.originRoom});return{id:e.id,groupId:e.groupId,token:e.token,wsURL:e.wsURL,createdAt:e.createdAt}}async confirmRoomRequest(t){return await this.simulateLatency(),{success:!0,message:"Request confirmed",roomId:t}}async cancelRoomRequest(t){return await this.simulateLatency(),{success:!0,message:"Request cancelled",roomId:t}}async finishCall(){await this.simulateLatency(),this.room?.id&&this.state.endRoom(this.room.id)}isFirebaseEnabled(){return!0}onPresenceChange(t){return()=>{}}onPresenceAgentChange(t,e){return()=>{}}async createCallRequest(t){return await this.simulateLatency(),g("call")}onNewCallRequest(t){return this.callRequestListeners.has("new")||this.callRequestListeners.set("new",new Set),this.callRequestListeners.get("new").add(t),()=>this.callRequestListeners.get("new")?.delete(t)}onCallRequestChange(t){return this.callRequestListeners.has("change")||this.callRequestListeners.set("change",new Set),this.callRequestListeners.get("change").add(t),()=>this.callRequestListeners.get("change")?.delete(t)}onCallRequestRemoved(t){return()=>{}}async acceptCallRequest(t){await this.simulateLatency()}async cancelCallRequest(t){await this.simulateLatency()}async cancelOnDisconnect(t){await this.simulateLatency()}subscribePendingRequests(t,e={}){return()=>{}}subscribeRequestChanges(t){return()=>{}}async tryAcceptRequest(t){return await this.simulateLatency(),!0}onRoomSync(t,e){return()=>{}}async clearRoomSync(t,e){await this.simulateLatency()}onNewRoomRequest(t,e){return()=>{}}unsubscribeAllFirebase(){this.callRequestListeners.clear()}async destroy(){this.unsubscribeAllFirebase(),this.messageListeners.clear(),this.typingListeners.clear(),await this.disconnect(),this.state.reset()}async startMockAgent(t,e){let i=e?.name||"AI Assistant",n=new I(g("agent"),i,{responseStrategy:e?.responseStrategy||"echo",responseDelayMs:e?.responseDelayMs||100,cannedResponses:e?.cannedResponses||[],type:e?.type,nature:e?.nature});await n.start(t),this.agents.set(n.id,n),this.customAgentHandler&&n.setCustomHandler((o,l)=>this.customAgentHandler(o,l));let s=e?.type,d=Array.isArray(s)?s:[s].filter(Boolean),a=d.includes("video"),c=d.includes("voice");return(a||c)&&this.room.isConnected&&await this.room.simulateParticipantJoin(n.id,{name:i,kind:"agent",withCamera:a,withMicrophone:c||a,attributes:{"lk.agent.name":i,"lk.agent.state":"active",role:"agent"}}),this.config.autoEmitEvents&&this.events.emitAgentStarted(t,{id:n.id,name:n.name,roomId:t,status:"running",config:n.getConfig(),startedAt:new Date().toISOString(),messageHistory:[]}),n.id}async stopMockAgent(t){let e=this.agents.get(t);if(e){let i=e.roomId;await e.stop(),this.agents.delete(t),this.config.autoEmitEvents&&i&&this.events.emitAgentStopped(i,t)}}setAgentResponseHandler(t){this.customAgentHandler=t;for(let e of this.agents.values())e.setCustomHandler((i,n)=>t(i,n))}async triggerAgentResponse(t,e){if(this.config.scenario!=="agent_timeout")try{let i=await t.processMessage(e);if(!i)return;let n=this.state.addMessage(t.roomId,`agent_${t.id}`,i);if(!y(n)){let s={id:n.id,timestamp:Date.now(),message:i,content:i,createdAt:n.createdAt,from:{identity:`agent_${t.id}`,name:t.name,id:t.id,role:"agent"}};for(let d of this.messageListeners)d([s]);this.config.autoEmitEvents&&this.events.emitMessageReceived(t.roomId,n)}}catch(i){console.error("Agent response error:",i)}}simulateCallRequest(t){let e={id:g("call"),guestId:t.guestId||"guest_user",name:t.name||"Guest User",createdAt:new Date().toISOString(),status:t.status||"pending",...t},i=this.callRequestListeners.get("new");if(i)for(let n of i)n(e.id,e)}simulateParticipantJoin(t,e,i="user"){if(!this.room?.id)return;let n=this.state.addParticipant(this.room.id,t,e,i,"standard",!1);!y(n)&&this.config.autoEmitEvents&&this.events.emitParticipantJoined(this.room.id,n)}simulateParticipantLeave(t){if(!this.room?.id)return;this.state.removeParticipant(t)&&this.config.autoEmitEvents&&this.events.emitParticipantLeft(this.room.id,t)}simulateIncomingMessage(t,e){if(!this.room?.id)return;let i=this.state.addMessage(this.room.id,t,e);if(y(i))return;let n={id:i.id,timestamp:Date.now(),message:e,content:e,createdAt:i.createdAt,from:{identity:t,id:t,role:"user"}};for(let s of this.messageListeners)s([n]);this.config.autoEmitEvents&&this.events.emitMessageReceived(this.room.id,i)}async simulateDisconnect(){if(!this.room?.id)return;let t=this.room.state;this.room.state="disconnected",this.config.autoEmitEvents&&this.events.emitRoomConnectionStateChanged(this.room.id,"disconnected",t),this.room.emit("connectionStateChanged","disconnected")}reset(){this.state.reset(),this.events.clearHistory(),this.messageListeners.clear(),this.typingListeners.clear(),this.callRequestListeners.clear(),this.agents.clear(),this._authToken=null,this._registeredUser=null,this.room=new E(this),Y()}seed(t){this.config.seed=t,this.state.updateConfig({seed:t})}setScenario(t){this.config.scenario=t,this.applyScenario(t)}exportState(){return{...this.state.toJSON(),eventHistory:this.events.getHistory()}}getEventHistory(t){return this.events.getHistory(t)}};export{nt as MockConversationService};