@onlive.ai/common-121 0.2.184 → 0.2.190

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 (467) hide show
  1. package/README.md +300 -89
  2. package/{audi-dark.theme-B8g9SRrd.d.cts → audi-dark.theme-a2WmOyVS.d.cts} +1 -1
  3. package/{audi-dark.theme-B8g9SRrd.d.ts → audi-dark.theme-a2WmOyVS.d.ts} +1 -1
  4. package/{audi.theme-CbqEkKLD.d.cts → audi.theme-DkdflnT8.d.cts} +1 -1
  5. package/{audi.theme-CbqEkKLD.d.ts → audi.theme-DkdflnT8.d.ts} +1 -1
  6. package/{australia.theme-Cs0cygOQ.d.cts → australia.theme-B5n8F3QH.d.cts} +1 -1
  7. package/{australia.theme-Cs0cygOQ.d.ts → australia.theme-B5n8F3QH.d.ts} +1 -1
  8. package/{chunk-UTOVVCSU.js → chunk-4DKWCKNT.js} +1 -1
  9. package/components/asset/asset-modal-portal.cjs +1 -1
  10. package/components/asset/asset-modal-portal.d.cts +1 -1
  11. package/components/asset/asset-modal-portal.d.ts +1 -1
  12. package/components/asset/asset-modal-portal.js +1 -1
  13. package/components/asset/asset.cjs +1 -1
  14. package/components/asset/asset.d.cts +1 -1
  15. package/components/asset/asset.d.ts +1 -1
  16. package/components/asset/asset.js +1 -1
  17. package/components/asset/asset.loaders.cjs +1 -1
  18. package/components/asset/asset.loaders.d.cts +1 -1
  19. package/components/asset/asset.loaders.d.ts +1 -1
  20. package/components/asset/asset.loaders.js +1 -1
  21. package/components/asset/asset.renderer.cjs +1 -1
  22. package/components/asset/asset.renderer.d.cts +1 -1
  23. package/components/asset/asset.renderer.d.ts +1 -1
  24. package/components/asset/asset.renderer.js +1 -1
  25. package/components/asset/asset.styles.cjs +1 -1
  26. package/components/asset/asset.styles.d.cts +1 -1
  27. package/components/asset/asset.styles.d.ts +1 -1
  28. package/components/asset/asset.styles.js +1 -1
  29. package/components/asset/asset.types.cjs +1 -1
  30. package/components/asset/asset.types.d.cts +1 -1
  31. package/components/asset/asset.types.d.ts +1 -1
  32. package/components/asset/asset.types.js +1 -1
  33. package/components/asset/index.cjs +1 -1
  34. package/components/asset/index.d.cts +1 -1
  35. package/components/asset/index.d.ts +1 -1
  36. package/components/asset/index.js +1 -1
  37. package/components/player/player.cjs +1 -1
  38. package/components/player/player.d.cts +1 -1
  39. package/components/player/player.d.ts +1 -1
  40. package/components/player/player.js +1 -1
  41. package/components/player/player.styles.cjs +1 -1
  42. package/components/player/player.styles.d.cts +1 -1
  43. package/components/player/player.styles.d.ts +1 -1
  44. package/components/player/player.styles.js +1 -1
  45. package/components/side-bar/index.cjs +1 -1
  46. package/components/side-bar/index.d.cts +1 -1
  47. package/components/side-bar/index.d.ts +1 -1
  48. package/components/side-bar/index.js +1 -1
  49. package/components/side-bar/side-bar.cjs +1 -1
  50. package/components/side-bar/side-bar.d.cts +1 -1
  51. package/components/side-bar/side-bar.d.ts +1 -1
  52. package/components/side-bar/side-bar.js +1 -1
  53. package/components/side-bar/side-bar.styles.cjs +1 -1
  54. package/components/side-bar/side-bar.styles.d.cts +1 -1
  55. package/components/side-bar/side-bar.styles.d.ts +1 -1
  56. package/components/side-bar/side-bar.styles.js +1 -1
  57. package/components/side-bar/side-bar.types.cjs +1 -1
  58. package/components/side-bar/side-bar.types.d.cts +1 -1
  59. package/components/side-bar/side-bar.types.d.ts +1 -1
  60. package/components/side-bar/side-bar.types.js +1 -1
  61. package/components/upload/index.cjs +1 -1
  62. package/components/upload/index.d.cts +1 -1
  63. package/components/upload/index.d.ts +1 -1
  64. package/components/upload/index.js +1 -1
  65. package/components/upload/upload.cjs +1 -1
  66. package/components/upload/upload.d.cts +1 -1
  67. package/components/upload/upload.d.ts +1 -1
  68. package/components/upload/upload.js +1 -1
  69. package/components/upload/upload.styles.cjs +1 -1
  70. package/components/upload/upload.styles.d.cts +1 -1
  71. package/components/upload/upload.styles.d.ts +1 -1
  72. package/components/upload/upload.styles.js +1 -1
  73. package/components/upload/upload.types.cjs +1 -1
  74. package/components/upload/upload.types.d.cts +1 -1
  75. package/components/upload/upload.types.d.ts +1 -1
  76. package/components/upload/upload.types.js +1 -1
  77. package/{cuernavaca.theme-0UFX1MeG.d.cts → cuernavaca.theme-BzcZX1EJ.d.cts} +1 -1
  78. package/{cuernavaca.theme-0UFX1MeG.d.ts → cuernavaca.theme-BzcZX1EJ.d.ts} +1 -1
  79. package/{cupra-diagonal.theme-DVrQr2iv.d.cts → cupra-diagonal.theme-CKxsGYdb.d.cts} +1 -1
  80. package/{cupra-diagonal.theme-DVrQr2iv.d.ts → cupra-diagonal.theme-CKxsGYdb.d.ts} +1 -1
  81. package/{cupra-events.theme-D2xJeafa.d.cts → cupra-events.theme-kGaXJptG.d.cts} +1 -1
  82. package/{cupra-events.theme-D2xJeafa.d.ts → cupra-events.theme-kGaXJptG.d.ts} +1 -1
  83. package/{cupra.theme-CqgKWLYE.d.cts → cupra.theme-C-oFRdQw.d.cts} +1 -1
  84. package/{cupra.theme-CqgKWLYE.d.ts → cupra.theme-C-oFRdQw.d.ts} +1 -1
  85. package/{germany.theme-CnwD309P.d.cts → germany.theme-Cxz60Lv5.d.cts} +1 -1
  86. package/{germany.theme-CnwD309P.d.ts → germany.theme-Cxz60Lv5.d.ts} +1 -1
  87. package/{hyundai.theme-E2ZiyZmJ.d.cts → hyundai.theme-DNFeBfk4.d.cts} +1 -1
  88. package/{hyundai.theme-E2ZiyZmJ.d.ts → hyundai.theme-DNFeBfk4.d.ts} +1 -1
  89. package/index.cjs +40 -40
  90. package/index.css +1 -0
  91. package/index.d.cts +108 -3
  92. package/index.d.ts +108 -3
  93. package/index.js +140 -139
  94. package/{italy.theme-BjfPp7rU.d.cts → italy.theme-YKt3PHQM.d.cts} +1 -1
  95. package/{italy.theme-BjfPp7rU.d.ts → italy.theme-YKt3PHQM.d.ts} +1 -1
  96. package/{magimix.theme-7cd19P1X.d.cts → magimix.theme-lIo3UAYh.d.cts} +1 -1
  97. package/{magimix.theme-7cd19P1X.d.ts → magimix.theme-lIo3UAYh.d.ts} +1 -1
  98. package/{media-SB4RDT6E.js → media-BU4KDZMS.js} +2 -2
  99. package/{onlive-ai.theme-CASPoRHr.d.cts → onlive-ai.theme-Dk4K7dnu.d.cts} +1 -1
  100. package/{onlive-ai.theme-CASPoRHr.d.ts → onlive-ai.theme-Dk4K7dnu.d.ts} +1 -1
  101. package/{onlive.theme-nKZQHG1I.d.cts → onlive.theme-BU4h4zKz.d.cts} +1 -1
  102. package/{onlive.theme-nKZQHG1I.d.ts → onlive.theme-BU4h4zKz.d.ts} +1 -1
  103. package/package.json +7 -5
  104. package/react/components/asset/Asset.cjs +1 -1
  105. package/react/components/asset/Asset.jsx +1 -1
  106. package/react/components/side-bar/SideBar.cjs +1 -1
  107. package/react/components/side-bar/SideBar.jsx +1 -1
  108. package/react/components/upload/Upload.cjs +1 -1
  109. package/react/components/upload/Upload.jsx +1 -1
  110. package/{seat-cupra.theme-B4ylEjOZ.d.cts → seat-cupra.theme-C-PJk0pi.d.cts} +1 -1
  111. package/{seat-cupra.theme-B4ylEjOZ.d.ts → seat-cupra.theme-C-PJk0pi.d.ts} +1 -1
  112. package/services/audio.service.cjs +1 -1
  113. package/services/audio.service.d.cts +1 -1
  114. package/services/audio.service.d.ts +1 -1
  115. package/services/audio.service.js +1 -1
  116. package/services/conversation/conversation.service.cjs +2 -2
  117. package/services/conversation/conversation.service.d.cts +1 -1
  118. package/services/conversation/conversation.service.d.ts +1 -1
  119. package/services/conversation/conversation.service.js +2 -2
  120. package/services/conversation/conversation.types.cjs +2 -2
  121. package/services/conversation/conversation.types.d.cts +3 -1
  122. package/services/conversation/conversation.types.d.ts +3 -1
  123. package/services/conversation/conversation.types.js +1 -1
  124. package/services/conversation/index.cjs +2 -2
  125. package/services/conversation/index.d.cts +1 -1
  126. package/services/conversation/index.d.ts +1 -1
  127. package/services/conversation/index.js +2 -2
  128. package/services/conversation/mock/actor/agent.cjs +1 -1
  129. package/services/conversation/mock/actor/agent.d.cts +1 -1
  130. package/services/conversation/mock/actor/agent.d.ts +1 -1
  131. package/services/conversation/mock/actor/agent.js +1 -1
  132. package/services/conversation/mock/actor/index.cjs +1 -1
  133. package/services/conversation/mock/actor/index.d.cts +1 -1
  134. package/services/conversation/mock/actor/index.d.ts +1 -1
  135. package/services/conversation/mock/actor/index.js +1 -1
  136. package/services/conversation/mock/actor/strategies.cjs +1 -1
  137. package/services/conversation/mock/actor/strategies.d.cts +1 -1
  138. package/services/conversation/mock/actor/strategies.d.ts +1 -1
  139. package/services/conversation/mock/actor/strategies.js +1 -1
  140. package/services/conversation/mock/errors.cjs +1 -1
  141. package/services/conversation/mock/errors.d.cts +1 -1
  142. package/services/conversation/mock/errors.d.ts +1 -1
  143. package/services/conversation/mock/errors.js +1 -1
  144. package/services/conversation/mock/events.cjs +1 -1
  145. package/services/conversation/mock/events.d.cts +1 -1
  146. package/services/conversation/mock/events.d.ts +1 -1
  147. package/services/conversation/mock/events.js +1 -1
  148. package/services/conversation/mock/factory.cjs +2 -2
  149. package/services/conversation/mock/factory.d.cts +1 -1
  150. package/services/conversation/mock/factory.d.ts +1 -1
  151. package/services/conversation/mock/factory.js +2 -2
  152. package/services/conversation/mock/fixtures.cjs +1 -1
  153. package/services/conversation/mock/fixtures.d.cts +1 -1
  154. package/services/conversation/mock/fixtures.d.ts +1 -1
  155. package/services/conversation/mock/fixtures.js +1 -1
  156. package/services/conversation/mock/generators.cjs +1 -1
  157. package/services/conversation/mock/generators.d.cts +1 -1
  158. package/services/conversation/mock/generators.d.ts +1 -1
  159. package/services/conversation/mock/generators.js +1 -1
  160. package/services/conversation/mock/index.cjs +2 -2
  161. package/services/conversation/mock/index.d.cts +1 -1
  162. package/services/conversation/mock/index.d.ts +1 -1
  163. package/services/conversation/mock/index.js +2 -2
  164. package/services/conversation/mock/livekit/index.cjs +1 -1
  165. package/services/conversation/mock/livekit/index.d.cts +1 -1
  166. package/services/conversation/mock/livekit/index.d.ts +1 -1
  167. package/services/conversation/mock/livekit/index.js +1 -1
  168. package/services/conversation/mock/livekit/local-participant.cjs +1 -1
  169. package/services/conversation/mock/livekit/local-participant.d.cts +1 -1
  170. package/services/conversation/mock/livekit/local-participant.d.ts +1 -1
  171. package/services/conversation/mock/livekit/local-participant.js +1 -1
  172. package/services/conversation/mock/livekit/participant.cjs +1 -1
  173. package/services/conversation/mock/livekit/participant.d.cts +1 -1
  174. package/services/conversation/mock/livekit/participant.d.ts +1 -1
  175. package/services/conversation/mock/livekit/participant.js +1 -1
  176. package/services/conversation/mock/livekit/room.cjs +1 -1
  177. package/services/conversation/mock/livekit/room.d.cts +1 -1
  178. package/services/conversation/mock/livekit/room.d.ts +1 -1
  179. package/services/conversation/mock/livekit/room.js +1 -1
  180. package/services/conversation/mock/livekit/streams.cjs +1 -1
  181. package/services/conversation/mock/livekit/streams.d.cts +1 -1
  182. package/services/conversation/mock/livekit/streams.d.ts +1 -1
  183. package/services/conversation/mock/livekit/streams.js +1 -1
  184. package/services/conversation/mock/livekit/tracks.cjs +1 -1
  185. package/services/conversation/mock/livekit/tracks.d.cts +1 -1
  186. package/services/conversation/mock/livekit/tracks.d.ts +1 -1
  187. package/services/conversation/mock/livekit/tracks.js +1 -1
  188. package/services/conversation/mock/media.cjs +1 -1
  189. package/services/conversation/mock/media.d.cts +1 -1
  190. package/services/conversation/mock/media.d.ts +1 -1
  191. package/services/conversation/mock/media.js +1 -1
  192. package/services/conversation/mock/service.cjs +2 -2
  193. package/services/conversation/mock/service.d.cts +1 -1
  194. package/services/conversation/mock/service.d.ts +1 -1
  195. package/services/conversation/mock/service.js +2 -2
  196. package/services/conversation/mock/service.test.cjs +2 -2
  197. package/services/conversation/mock/service.test.d.cts +1 -1
  198. package/services/conversation/mock/service.test.d.ts +1 -1
  199. package/services/conversation/mock/service.test.js +2 -2
  200. package/services/conversation/mock/state.cjs +1 -1
  201. package/services/conversation/mock/state.d.cts +1 -1
  202. package/services/conversation/mock/state.d.ts +1 -1
  203. package/services/conversation/mock/state.js +1 -1
  204. package/services/conversation/mock/storybook.cjs +2 -2
  205. package/services/conversation/mock/storybook.d.cts +1 -1
  206. package/services/conversation/mock/storybook.d.ts +1 -1
  207. package/services/conversation/mock/storybook.js +2 -2
  208. package/services/conversation/mock/types.cjs +1 -1
  209. package/services/conversation/mock/types.d.cts +1 -1
  210. package/services/conversation/mock/types.d.ts +1 -1
  211. package/services/conversation/mock/types.js +1 -1
  212. package/services/deep-link.service.cjs +2 -0
  213. package/services/deep-link.service.d.cts +77 -0
  214. package/services/deep-link.service.d.ts +77 -0
  215. package/services/deep-link.service.js +2 -0
  216. package/services/faqs/faqs.service.cjs +1 -1
  217. package/services/faqs/faqs.service.d.cts +1 -1
  218. package/services/faqs/faqs.service.d.ts +1 -1
  219. package/services/faqs/faqs.service.js +1 -1
  220. package/services/faqs/faqs.types.cjs +1 -1
  221. package/services/faqs/faqs.types.d.cts +1 -1
  222. package/services/faqs/faqs.types.d.ts +1 -1
  223. package/services/faqs/faqs.types.js +1 -1
  224. package/services/faqs/index.cjs +1 -1
  225. package/services/faqs/index.d.cts +1 -1
  226. package/services/faqs/index.d.ts +1 -1
  227. package/services/faqs/index.js +1 -1
  228. package/services/file/file.service.cjs +1 -1
  229. package/services/file/file.service.d.cts +1 -1
  230. package/services/file/file.service.d.ts +1 -1
  231. package/services/file/file.service.js +1 -1
  232. package/services/file/file.types.cjs +1 -1
  233. package/services/file/file.types.d.cts +1 -1
  234. package/services/file/file.types.d.ts +1 -1
  235. package/services/file/file.types.js +1 -1
  236. package/services/file/index.cjs +1 -1
  237. package/services/file/index.d.cts +1 -1
  238. package/services/file/index.d.ts +1 -1
  239. package/services/file/index.js +1 -1
  240. package/services/firebase/firebase-api.cjs +1 -1
  241. package/services/firebase/firebase-api.d.cts +1 -1
  242. package/services/firebase/firebase-api.d.ts +1 -1
  243. package/services/firebase/firebase-api.js +1 -1
  244. package/services/multimedia/config.example.cjs +1 -1
  245. package/services/multimedia/config.example.d.cts +1 -1
  246. package/services/multimedia/config.example.d.ts +1 -1
  247. package/services/multimedia/config.example.js +1 -1
  248. package/services/multimedia/index.cjs +1 -1
  249. package/services/multimedia/index.d.cts +1 -1
  250. package/services/multimedia/index.d.ts +1 -1
  251. package/services/multimedia/index.js +1 -1
  252. package/services/multimedia/multimedia.service.cjs +1 -1
  253. package/services/multimedia/multimedia.service.d.cts +1 -1
  254. package/services/multimedia/multimedia.service.d.ts +1 -1
  255. package/services/multimedia/multimedia.service.js +1 -1
  256. package/services/multimedia/multimedia.types.cjs +1 -1
  257. package/services/multimedia/multimedia.types.d.cts +1 -1
  258. package/services/multimedia/multimedia.types.d.ts +1 -1
  259. package/services/multimedia/multimedia.types.js +1 -1
  260. package/services/product/index.cjs +1 -1
  261. package/services/product/index.d.cts +1 -1
  262. package/services/product/index.d.ts +1 -1
  263. package/services/product/index.js +1 -1
  264. package/services/product/product.service.cjs +1 -1
  265. package/services/product/product.service.d.cts +1 -1
  266. package/services/product/product.service.d.ts +1 -1
  267. package/services/product/product.service.js +1 -1
  268. package/services/product/product.types.cjs +1 -1
  269. package/services/product/product.types.d.cts +1 -1
  270. package/services/product/product.types.d.ts +1 -1
  271. package/services/product/product.types.js +1 -1
  272. package/services/request.provider.cjs +1 -1
  273. package/services/request.provider.d.cts +1 -1
  274. package/services/request.provider.d.ts +1 -1
  275. package/services/request.provider.js +1 -1
  276. package/services/session.service.cjs +1 -1
  277. package/services/session.service.d.cts +1 -1
  278. package/services/session.service.d.ts +1 -1
  279. package/services/session.service.js +1 -1
  280. package/services/upload/index.cjs +1 -1
  281. package/services/upload/index.d.cts +1 -1
  282. package/services/upload/index.d.ts +1 -1
  283. package/services/upload/index.js +1 -1
  284. package/services/upload/upload.service.cjs +1 -1
  285. package/services/upload/upload.service.d.cts +1 -1
  286. package/services/upload/upload.service.d.ts +1 -1
  287. package/services/upload/upload.service.js +1 -1
  288. package/themes/custom/audi-dark.theme.cjs +7 -3
  289. package/themes/custom/audi-dark.theme.css +921 -0
  290. package/themes/custom/audi-dark.theme.d.cts +2 -2
  291. package/themes/custom/audi-dark.theme.d.ts +2 -2
  292. package/themes/custom/audi-dark.theme.js +6 -2
  293. package/themes/custom/audi.theme.cjs +1 -1
  294. package/themes/custom/audi.theme.css +774 -0
  295. package/themes/custom/audi.theme.d.cts +2 -2
  296. package/themes/custom/audi.theme.d.ts +2 -2
  297. package/themes/custom/audi.theme.js +1 -1
  298. package/themes/custom/australia.theme.cjs +1 -1
  299. package/themes/custom/australia.theme.css +383 -0
  300. package/themes/custom/australia.theme.d.cts +2 -2
  301. package/themes/custom/australia.theme.d.ts +2 -2
  302. package/themes/custom/australia.theme.js +1 -1
  303. package/themes/custom/cuernavaca.theme.cjs +1 -1
  304. package/themes/custom/cuernavaca.theme.css +193 -0
  305. package/themes/custom/cuernavaca.theme.d.cts +2 -2
  306. package/themes/custom/cuernavaca.theme.d.ts +2 -2
  307. package/themes/custom/cuernavaca.theme.js +1 -1
  308. package/themes/custom/cupra-diagonal.theme.cjs +5 -22
  309. package/themes/custom/cupra-diagonal.theme.css +1009 -0
  310. package/themes/custom/cupra-diagonal.theme.d.cts +2 -2
  311. package/themes/custom/cupra-diagonal.theme.d.ts +2 -2
  312. package/themes/custom/cupra-diagonal.theme.js +5 -22
  313. package/themes/custom/cupra-events.theme.cjs +1 -1
  314. package/themes/custom/cupra-events.theme.css +552 -0
  315. package/themes/custom/cupra-events.theme.d.cts +2 -2
  316. package/themes/custom/cupra-events.theme.d.ts +2 -2
  317. package/themes/custom/cupra-events.theme.js +1 -1
  318. package/themes/custom/cupra.theme.cjs +1 -1
  319. package/themes/custom/cupra.theme.css +144 -0
  320. package/themes/custom/cupra.theme.d.cts +2 -2
  321. package/themes/custom/cupra.theme.d.ts +2 -2
  322. package/themes/custom/cupra.theme.js +1 -1
  323. package/themes/custom/germany.theme.cjs +5 -5
  324. package/themes/custom/germany.theme.css +713 -0
  325. package/themes/custom/germany.theme.d.cts +2 -2
  326. package/themes/custom/germany.theme.d.ts +2 -2
  327. package/themes/custom/germany.theme.js +4 -4
  328. package/themes/custom/hyundai.theme.cjs +1 -1
  329. package/themes/custom/hyundai.theme.css +291 -0
  330. package/themes/custom/hyundai.theme.d.cts +2 -2
  331. package/themes/custom/hyundai.theme.d.ts +2 -2
  332. package/themes/custom/hyundai.theme.js +1 -1
  333. package/themes/custom/italy.theme.cjs +3 -23
  334. package/themes/custom/italy.theme.css +827 -0
  335. package/themes/custom/italy.theme.d.cts +2 -2
  336. package/themes/custom/italy.theme.d.ts +2 -2
  337. package/themes/custom/italy.theme.js +3 -23
  338. package/themes/custom/magimix.theme.cjs +1 -1
  339. package/themes/custom/magimix.theme.css +116 -0
  340. package/themes/custom/magimix.theme.d.cts +2 -2
  341. package/themes/custom/magimix.theme.d.ts +2 -2
  342. package/themes/custom/magimix.theme.js +1 -1
  343. package/themes/custom/onlive-ai.theme.cjs +1 -1
  344. package/themes/custom/onlive-ai.theme.css +71 -0
  345. package/themes/custom/onlive-ai.theme.d.cts +2 -2
  346. package/themes/custom/onlive-ai.theme.d.ts +2 -2
  347. package/themes/custom/onlive-ai.theme.js +1 -1
  348. package/themes/custom/onlive.theme.cjs +1 -1
  349. package/themes/custom/onlive.theme.css +30 -0
  350. package/themes/custom/onlive.theme.d.cts +2 -2
  351. package/themes/custom/onlive.theme.d.ts +2 -2
  352. package/themes/custom/onlive.theme.js +1 -1
  353. package/themes/custom/seat-cupra.theme.cjs +1 -1
  354. package/themes/custom/seat-cupra.theme.css +475 -0
  355. package/themes/custom/seat-cupra.theme.d.cts +2 -2
  356. package/themes/custom/seat-cupra.theme.d.ts +2 -2
  357. package/themes/custom/seat-cupra.theme.js +1 -1
  358. package/themes/dark.cjs +367 -369
  359. package/themes/dark.css +413 -0
  360. package/themes/dark.d.cts +1 -1
  361. package/themes/dark.d.ts +1 -1
  362. package/themes/dark.js +367 -369
  363. package/themes/light.cjs +365 -366
  364. package/themes/light.css +411 -0
  365. package/themes/light.d.cts +1 -1
  366. package/themes/light.d.ts +1 -1
  367. package/themes/light.js +365 -366
  368. package/types/deep-link.types.cjs +2 -0
  369. package/types/deep-link.types.d.cts +32 -0
  370. package/types/deep-link.types.d.ts +32 -0
  371. package/types/deep-link.types.js +2 -0
  372. package/types/globals.cjs +1 -1
  373. package/types/globals.d.cts +1 -1
  374. package/types/globals.d.ts +1 -1
  375. package/types/globals.js +1 -1
  376. package/types/tracking-options.cjs +1 -1
  377. package/types/tracking-options.d.cts +1 -1
  378. package/types/tracking-options.d.ts +1 -1
  379. package/types/tracking-options.js +1 -1
  380. package/utils/adopt-styles.cjs +1 -1
  381. package/utils/adopt-styles.d.cts +1 -1
  382. package/utils/adopt-styles.d.ts +1 -1
  383. package/utils/adopt-styles.js +1 -1
  384. package/utils/apply-optional-styles.cjs +30 -63
  385. package/utils/apply-optional-styles.d.cts +15 -15
  386. package/utils/apply-optional-styles.d.ts +15 -15
  387. package/utils/apply-optional-styles.js +30 -63
  388. package/utils/browser-preferences.cjs +1 -1
  389. package/utils/browser-preferences.d.cts +1 -1
  390. package/utils/browser-preferences.d.ts +1 -1
  391. package/utils/browser-preferences.js +1 -1
  392. package/utils/classify-media.cjs +1 -1
  393. package/utils/classify-media.d.cts +1 -1
  394. package/utils/classify-media.d.ts +1 -1
  395. package/utils/classify-media.js +1 -1
  396. package/utils/decorators.cjs +1 -1
  397. package/utils/decorators.d.cts +1 -1
  398. package/utils/decorators.d.ts +1 -1
  399. package/utils/decorators.js +1 -1
  400. package/utils/detected-lang.cjs +1 -1
  401. package/utils/detected-lang.d.cts +1 -1
  402. package/utils/detected-lang.d.ts +1 -1
  403. package/utils/detected-lang.js +1 -1
  404. package/utils/fullscreen.cjs +1 -1
  405. package/utils/fullscreen.d.cts +1 -1
  406. package/utils/fullscreen.d.ts +1 -1
  407. package/utils/fullscreen.js +1 -1
  408. package/utils/insert-script.cjs +1 -1
  409. package/utils/insert-script.d.cts +1 -1
  410. package/utils/insert-script.d.ts +1 -1
  411. package/utils/insert-script.js +1 -1
  412. package/utils/is-map-compatible.cjs +1 -1
  413. package/utils/is-map-compatible.d.cts +1 -1
  414. package/utils/is-map-compatible.d.ts +1 -1
  415. package/utils/is-map-compatible.js +1 -1
  416. package/utils/markdown.cjs +1 -1
  417. package/utils/markdown.d.cts +1 -1
  418. package/utils/markdown.d.ts +1 -1
  419. package/utils/markdown.js +1 -1
  420. package/utils/merge.cjs +1 -1
  421. package/utils/merge.d.cts +1 -1
  422. package/utils/merge.d.ts +1 -1
  423. package/utils/merge.js +1 -1
  424. package/utils/multiband-track-volume.cjs +1 -1
  425. package/utils/multiband-track-volume.d.cts +1 -1
  426. package/utils/multiband-track-volume.d.ts +1 -1
  427. package/utils/multiband-track-volume.js +1 -1
  428. package/utils/onlive-url-params.cjs +1 -1
  429. package/utils/onlive-url-params.d.cts +1 -1
  430. package/utils/onlive-url-params.d.ts +1 -1
  431. package/utils/onlive-url-params.js +1 -1
  432. package/utils/pretty-distance.cjs +1 -1
  433. package/utils/pretty-distance.d.cts +1 -1
  434. package/utils/pretty-distance.d.ts +1 -1
  435. package/utils/pretty-distance.js +1 -1
  436. package/utils/pretty-time.cjs +1 -1
  437. package/utils/pretty-time.d.cts +1 -1
  438. package/utils/pretty-time.d.ts +1 -1
  439. package/utils/pretty-time.js +1 -1
  440. package/utils/random-string.cjs +1 -1
  441. package/utils/random-string.d.cts +1 -1
  442. package/utils/random-string.d.ts +1 -1
  443. package/utils/random-string.js +1 -1
  444. package/utils/resource-type.cjs +1 -1
  445. package/utils/resource-type.d.cts +1 -1
  446. package/utils/resource-type.d.ts +1 -1
  447. package/utils/resource-type.js +1 -1
  448. package/utils/round-number.cjs +1 -1
  449. package/utils/round-number.d.cts +1 -1
  450. package/utils/round-number.d.ts +1 -1
  451. package/utils/round-number.js +1 -1
  452. package/utils/safe-html.cjs +1 -1
  453. package/utils/safe-html.d.cts +1 -1
  454. package/utils/safe-html.d.ts +1 -1
  455. package/utils/safe-html.js +1 -1
  456. package/utils/sanitize.cjs +1 -1
  457. package/utils/sanitize.d.cts +1 -1
  458. package/utils/sanitize.d.ts +1 -1
  459. package/utils/sanitize.js +1 -1
  460. package/utils/spread.cjs +1 -1
  461. package/utils/spread.d.cts +1 -1
  462. package/utils/spread.d.ts +1 -1
  463. package/utils/spread.js +1 -1
  464. package/utils/watch.cjs +1 -1
  465. package/utils/watch.d.cts +1 -1
  466. package/utils/watch.d.ts +1 -1
  467. package/utils/watch.js +1 -1
@@ -1,2 +1,2 @@
1
- /*! @onlive.ai/common-121 v0.2.184 | © 2026 Onlive.ai */
1
+ /*! @onlive.ai/common-121 v0.2.190 | © 2026 Onlive.ai */
2
2
  var O=Object.defineProperty;var H=(o,e)=>()=>(o&&(e=o(o=0)),e);var L=(o,e)=>{for(var t in e)O(o,t,{get:e[t],enumerable:!0})};var P={};L(P,{SYNTHETIC_MEDIA_PRESETS:()=>I,createSyntheticAudioTrack:()=>A,createSyntheticMedia:()=>$,createSyntheticMediaFromPreset:()=>j,createSyntheticVideoTrack:()=>C});function C(o={}){let{width:e=640,height:t=480,fps:a=30,backgroundColor:r="#1a1a2e",foregroundColor:d="#4361ee",label:c="Mock Video",animation:l="wave"}=o,n=document.createElement("canvas");n.width=e,n.height=t;let i=n.getContext("2d"),h,g=Date.now(),S={wave:m=>{i.fillStyle=r,i.fillRect(0,0,e,t),i.strokeStyle=d,i.lineWidth=3,i.beginPath();for(let s=0;s<e;s++){let u=t/2+Math.sin(s/e*4*Math.PI+m*.002)*(t/4);s===0?i.moveTo(s,u):i.lineTo(s,u)}i.stroke()},pulse:m=>{i.fillStyle=r,i.fillRect(0,0,e,t);let s=Math.sin(m*.003)*.3+.7,u=Math.min(e,t)*.3*s;i.beginPath(),i.arc(e/2,t/2,u,0,Math.PI*2),i.fillStyle=d,i.fill()},bars:m=>{i.fillStyle=r,i.fillRect(0,0,e,t);let s=20,u=e/s,b=t*.7;i.fillStyle=d;for(let T=0;T<s;T++){let w=Math.abs(Math.sin(T/s*Math.PI*2+m*.004))*b,V=T*u,D=t-w;i.fillRect(V+2,D,u-4,w)}},avatar:m=>{i.fillStyle=r,i.fillRect(0,0,e,t);let s=e/2,u=t/2-20,b=Math.min(e,t)*.15;i.beginPath(),i.arc(s,u,b,0,Math.PI*2),i.fillStyle=d,i.fill(),i.beginPath(),i.ellipse(s,u+b*2.2,b*1.5,b,0,Math.PI,0),i.fill(),Math.sin(m*.01)>0&&(i.beginPath(),i.arc(s,u+b*3,5+Math.sin(m*.02)*3,0,Math.PI*2),i.fillStyle="#22c55e",i.fill())},none:()=>{i.fillStyle=r,i.fillRect(0,0,e,t)}},v=()=>{i.fillStyle="rgba(255, 255, 255, 0.8)",i.font=`${Math.floor(t*.04)}px system-ui, sans-serif`,i.textAlign="center",i.fillText(c,e/2,t-20)},p=()=>{let m=Date.now()-g;S[l](m),v(),h=requestAnimationFrame(p)};p();let _=n.captureStream(a),E=_.getVideoTracks()[0];return{track:E,stream:_,cleanup:()=>{cancelAnimationFrame(h),E.stop()}}}function A(o={}){let{frequency:e=440,volume:t=.1,waveType:a="sine",addVariation:r=!0,enabled:d=!1}=o,c=new AudioContext,l=c.createMediaStreamDestination(),n=c.createOscillator();n.type=a,n.frequency.value=e;let i=c.createGain();i.gain.value=d?t:0;let h=null,g=null;r&&(h=c.createOscillator(),h.frequency.value=.5,g=c.createGain(),g.gain.value=10,h.connect(g),g.connect(n.frequency),h.start()),n.connect(i),i.connect(l),n.start();let S=l.stream,v=S.getAudioTracks()[0];return{track:v,stream:S,setVolume:p=>{i.gain.value=Math.max(0,Math.min(1,p))},setEnabled:p=>{i.gain.value=p?t:0},cleanup:()=>{n.stop(),h?.stop(),c.close(),v.stop()}}}function $(o,e){let t=C(o),a=A(e),r=new MediaStream([t.track,a.track]);return{videoTrack:t.track,audioTrack:a.track,combinedStream:r,setAudioVolume:a.setVolume,setAudioEnabled:a.setEnabled,cleanup:()=>{t.cleanup(),a.cleanup()}}}function j(o){let e=I[o];return $(e.video,e.audio)}var I,y=H(()=>{"use strict";I={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 x=0;function M(o){return x++,`mock_${o}_${x}_${Date.now().toString(36)}`}var f=class{constructor(e,t,a,r){this.muted=!1;this.enabled=!0;this.attachedElements=new Set;this.kind=e,this.source=t,this.sid=M("TR"),this.mediaStreamTrack=a,this.mediaCleanup=r}get mediaTrack(){return this.mediaStreamTrack}attach(e){let t=e||document.createElement(this.kind==="video"?"video":"audio");if(this.mediaStreamTrack){let a=new MediaStream([this.mediaStreamTrack]);t.srcObject=a,t.autoplay=!0,this.kind==="video"&&(t.playsInline=!0,t.muted=!0)}return this.attachedElements.add(t),t}detach(e){if(e)return e.srcObject=null,this.attachedElements.delete(e),[e];let t=Array.from(this.attachedElements);for(let a of t)a.srcObject=null;return this.attachedElements.clear(),t}stop(){this.detach(),this.mediaCleanup&&this.mediaCleanup(),this.mediaStreamTrack&&this.mediaStreamTrack.stop(),this.enabled=!1}setMuted(e){this.muted=e,this.mediaStreamTrack&&(this.mediaStreamTrack.enabled=!e)}setEnabled(e){this.enabled=e,this.mediaStreamTrack&&(this.mediaStreamTrack.enabled=e)}},k=class{constructor(e,t){this.subscribed=!0;this.isEnabled=!0;this.track=e,this.trackSid=e.sid,this.trackName=t||`${e.kind}_${e.source}`,this.source=e.source,this.kind=e.kind}get isMuted(){return this.track?.muted??!1}get isSubscribed(){return this.subscribed&&this.track!==null}setSubscribed(e){this.subscribed=e}setEnabled(e){this.isEnabled=e,this.track&&(this.track.enabled=e)}setMuted(e){this.track&&this.track.setMuted(e)}};var R=class{constructor(e){this.identity="";this.sid="";this.name="";this.attributes={};this.kind="standard";this.trackPublications=new Map;this.audioTrackPublications=new Map;this.videoTrackPublications=new Map;this._cameraEnabled=!1;this._microphoneEnabled=!1;this._screenShareEnabled=!1;this.room=e,this.sid=M("PA"),this.joinedAt=new Date}get isCameraEnabled(){return this._cameraEnabled}get isMicrophoneEnabled(){return this._microphoneEnabled}get isScreenShareEnabled(){return this._screenShareEnabled}getTrackPublications(){return Array.from(this.trackPublications.values())}getTrackPublication(e){let a={camera:"camera",Camera:"camera",microphone:"microphone",Microphone:"microphone",screen_share:"screen_share",ScreenShare:"screen_share",screen_share_audio:"screen_share_audio",ScreenShareAudio:"screen_share_audio"}[e]||e;return this.trackPublications.get(a)}getTrackPublicationBySid(e){for(let t of this.trackPublications.values())if(t.trackSid===e)return t}setAttributes(e){this.attributes={...this.attributes,...e}}async setCameraEnabled(e,t){if(this._cameraEnabled=e,e){let{createSyntheticVideoTrack:r}=await Promise.resolve().then(()=>(y(),P)),{track:d,cleanup:c}=r({animation:"avatar",label:this.name||"Local Camera"}),l=new f("video","camera",d,c),n=new k(l,t?.name);return this.trackPublications.set("camera",n),this.videoTrackPublications.set(l.sid,n),this.room.emit("localTrackPublished",n,this),n}let a=this.trackPublications.get("camera");a&&(a.track?.stop(),this.trackPublications.delete("camera"),this.videoTrackPublications.delete(a.trackSid),this.room.emit("localTrackUnpublished",a,this))}async setMicrophoneEnabled(e,t){if(this._microphoneEnabled=e,e){let{createSyntheticAudioTrack:r}=await Promise.resolve().then(()=>(y(),P)),{track:d,cleanup:c}=r({enabled:!1}),l=new f("audio","microphone",d,c),n=new k(l,t?.name);return this.trackPublications.set("microphone",n),this.audioTrackPublications.set(l.sid,n),this.room.emit("localTrackPublished",n,this),n}let a=this.trackPublications.get("microphone");a&&(a.track?.stop(),this.trackPublications.delete("microphone"),this.audioTrackPublications.delete(a.trackSid),this.room.emit("localTrackUnpublished",a,this))}async setScreenShareEnabled(e,t){if(this._screenShareEnabled=e,e){let{createSyntheticVideoTrack:r}=await Promise.resolve().then(()=>(y(),P)),{track:d,cleanup:c}=r({animation:"bars",label:"Screen Share",width:1920,height:1080}),l=new f("video","screen_share",d,c),n=new k(l,t?.name||"screen");return this.trackPublications.set("screen_share",n),this.videoTrackPublications.set(l.sid,n),this.room.emit("localTrackPublished",n,this),n}let a=this.trackPublications.get("screen_share");a&&(a.track?.stop(),this.trackPublications.delete("screen_share"),this.videoTrackPublications.delete(a.trackSid),this.room.emit("localTrackUnpublished",a,this))}async publishTrack(e,t){let a=new k(e,t?.name),r=t?.source||e.source;return this.trackPublications.set(r,a),e.kind==="audio"?this.audioTrackPublications.set(e.sid,a):e.kind==="video"&&this.videoTrackPublications.set(e.sid,a),this.room.emit("localTrackPublished",a,this),a}async unpublishTrack(e){e.stop();for(let[t,a]of this.trackPublications)if(a.track===e){this.trackPublications.delete(t),e.kind==="audio"?this.audioTrackPublications.delete(e.sid):e.kind==="video"&&this.videoTrackPublications.delete(e.sid),this.room.emit("localTrackUnpublished",a,this);break}}async sendText(e,t){return{id:M("msg")}}async publishData(e,t){}async setMetadata(e){this.attributes.metadata=e}async setName(e){this.name=e}cleanup(){for(let e of this.trackPublications.values())e.track?.stop();this.trackPublications.clear(),this.audioTrackPublications.clear(),this.videoTrackPublications.clear(),this._cameraEnabled=!1,this._microphoneEnabled=!1,this._screenShareEnabled=!1}};export{R as MockLocalParticipant};
@@ -1,2 +1,2 @@
1
- /*! @onlive.ai/common-121 v0.2.184 | © 2026 Onlive.ai */
1
+ /*! @onlive.ai/common-121 v0.2.190 | © 2026 Onlive.ai */
2
2
  "use strict";var a=Object.defineProperty;var d=Object.getOwnPropertyDescriptor;var l=Object.getOwnPropertyNames;var k=Object.prototype.hasOwnProperty;var p=(e,t)=>{for(var n in t)a(e,n,{get:t[n],enumerable:!0})},b=(e,t,n,o)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of l(t))!k.call(e,r)&&r!==n&&a(e,r,{get:()=>t[r],enumerable:!(o=d(t,r))||o.enumerable});return e};var m=e=>b(a({},"__esModule",{value:!0}),e);var f={};p(f,{MockParticipant:()=>s,ParticipantKindValue:()=>g});module.exports=m(f);var c=0;function u(e){return c++,`mock_${e}_${c}_${Date.now().toString(36)}`}var g=(i=>(i[i.STANDARD=0]="STANDARD",i[i.INGRESS=1]="INGRESS",i[i.EGRESS=2]="EGRESS",i[i.SIP=3]="SIP",i[i.AGENT=4]="AGENT",i))(g||{});function h(e){switch(e){case"standard":return 0;case"ingress":return 1;case"egress":return 2;case"sip":return 3;case"agent":return 4;default:return 0}}var s=class{constructor(t,n,o={},r="standard"){this.connectionQuality="excellent";this.isSpeaking=!1;this.audioLevel=0;this.trackPublications=new Map;this.identity=t,this.sid=u("PA"),this.name=n,this.attributes=o,this._kindString=r,this.kind=h(r),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 n of this.trackPublications.values())if(n.source===t)return n}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 n=this.trackPublications.get(t);return n&&(this.trackPublications.delete(t),n.track?.stop()),n}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()}};0&&(module.exports={MockParticipant,ParticipantKindValue});
@@ -1,4 +1,4 @@
1
- /*! @onlive.ai/common-121 v0.2.184 | © 2026 Onlive.ai */
1
+ /*! @onlive.ai/common-121 v0.2.190 | © 2026 Onlive.ai */
2
2
  import { MockTrackPublication } from './tracks.cjs';
3
3
  import '../types.cjs';
4
4
 
@@ -1,4 +1,4 @@
1
- /*! @onlive.ai/common-121 v0.2.184 | © 2026 Onlive.ai */
1
+ /*! @onlive.ai/common-121 v0.2.190 | © 2026 Onlive.ai */
2
2
  import { MockTrackPublication } from './tracks.js';
3
3
  import '../types.js';
4
4
 
@@ -1,2 +1,2 @@
1
- /*! @onlive.ai/common-121 v0.2.184 | © 2026 Onlive.ai */
1
+ /*! @onlive.ai/common-121 v0.2.190 | © 2026 Onlive.ai */
2
2
  var o=0;function a(i){return o++,`mock_${i}_${o}_${Date.now().toString(36)}`}var u=(n=>(n[n.STANDARD=0]="STANDARD",n[n.INGRESS=1]="INGRESS",n[n.EGRESS=2]="EGRESS",n[n.SIP=3]="SIP",n[n.AGENT=4]="AGENT",n))(u||{});function g(i){switch(i){case"standard":return 0;case"ingress":return 1;case"egress":return 2;case"sip":return 3;case"agent":return 4;default:return 0}}var s=class{constructor(t,e,c={},r="standard"){this.connectionQuality="excellent";this.isSpeaking=!1;this.audioLevel=0;this.trackPublications=new Map;this.identity=t,this.sid=a("PA"),this.name=e,this.attributes=c,this._kindString=r,this.kind=g(r),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()}};export{s as MockParticipant,u as ParticipantKindValue};
@@ -1,2 +1,2 @@
1
- /*! @onlive.ai/common-121 v0.2.184 | © 2026 Onlive.ai */
1
+ /*! @onlive.ai/common-121 v0.2.190 | © 2026 Onlive.ai */
2
2
  "use strict";var E=Object.defineProperty;var U=Object.getOwnPropertyDescriptor;var j=Object.getOwnPropertyNames;var G=Object.prototype.hasOwnProperty;var K=(o,t)=>()=>(o&&(t=o(o=0)),t);var H=(o,t)=>{for(var e in t)E(o,e,{get:t[e],enumerable:!0})},q=(o,t,e,i)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of j(t))!G.call(o,n)&&n!==e&&E(o,n,{get:()=>t[n],enumerable:!(i=U(t,n))||i.enumerable});return o};var B=o=>q(E({},"__esModule",{value:!0}),o);var M={};H(M,{SYNTHETIC_MEDIA_PRESETS:()=>V,createSyntheticAudioTrack:()=>D,createSyntheticMedia:()=>L,createSyntheticMediaFromPreset:()=>Q,createSyntheticVideoTrack:()=>$});function $(o={}){let{width:t=640,height:e=480,fps:i=30,backgroundColor:n="#1a1a2e",foregroundColor:s="#4361ee",label:c="Mock Video",animation:d="wave"}=o,r=document.createElement("canvas");r.width=t,r.height=e;let a=r.getContext("2d"),u,f=Date.now(),y={wave:m=>{a.fillStyle=n,a.fillRect(0,0,t,e),a.strokeStyle=s,a.lineWidth=3,a.beginPath();for(let l=0;l<t;l++){let h=e/2+Math.sin(l/t*4*Math.PI+m*.002)*(e/4);l===0?a.moveTo(l,h):a.lineTo(l,h)}a.stroke()},pulse:m=>{a.fillStyle=n,a.fillRect(0,0,t,e);let l=Math.sin(m*.003)*.3+.7,h=Math.min(t,e)*.3*l;a.beginPath(),a.arc(t/2,e/2,h,0,Math.PI*2),a.fillStyle=s,a.fill()},bars:m=>{a.fillStyle=n,a.fillRect(0,0,t,e);let l=20,h=t/l,b=e*.7;a.fillStyle=s;for(let v=0;v<l;v++){let R=Math.abs(Math.sin(v/l*Math.PI*2+m*.004))*b,N=v*h,O=e-R;a.fillRect(N+2,O,h-4,R)}},avatar:m=>{a.fillStyle=n,a.fillRect(0,0,t,e);let l=t/2,h=e/2-20,b=Math.min(t,e)*.15;a.beginPath(),a.arc(l,h,b,0,Math.PI*2),a.fillStyle=s,a.fill(),a.beginPath(),a.ellipse(l,h+b*2.2,b*1.5,b,0,Math.PI,0),a.fill(),Math.sin(m*.01)>0&&(a.beginPath(),a.arc(l,h+b*3,5+Math.sin(m*.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(c,t/2,e-20)},P=()=>{let m=Date.now()-f;y[d](m),_(),u=requestAnimationFrame(P)};P();let C=r.captureStream(i),A=C.getVideoTracks()[0];return{track:A,stream:C,cleanup:()=>{cancelAnimationFrame(u),A.stop()}}}function D(o={}){let{frequency:t=440,volume:e=.1,waveType:i="sine",addVariation:n=!0,enabled:s=!1}=o,c=new AudioContext,d=c.createMediaStreamDestination(),r=c.createOscillator();r.type=i,r.frequency.value=t;let a=c.createGain();a.gain.value=s?e:0;let u=null,f=null;n&&(u=c.createOscillator(),u.frequency.value=.5,f=c.createGain(),f.gain.value=10,u.connect(f),f.connect(r.frequency),u.start()),r.connect(a),a.connect(d),r.start();let y=d.stream,_=y.getAudioTracks()[0];return{track:_,stream:y,setVolume:P=>{a.gain.value=Math.max(0,Math.min(1,P))},setEnabled:P=>{a.gain.value=P?e:0},cleanup:()=>{r.stop(),u?.stop(),c.close(),_.stop()}}}function L(o,t){let e=$(o),i=D(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 Q(o){let t=V[o];return L(t.video,t.audio)}var V,S=K(()=>{"use strict";V={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 W={};H(W,{MockRoom:()=>x});module.exports=B(W);var I=0;function k(o){return I++,`mock_${o}_${I}_${Date.now().toString(36)}`}var g=class{constructor(t,e,i,n){this.muted=!1;this.enabled=!0;this.attachedElements=new Set;this.kind=t,this.source=e,this.sid=k("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)}},p=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 w=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=k("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(()=>(S(),M)),{track:s,cleanup:c}=n({animation:"avatar",label:this.name||"Local Camera"}),d=new g("video","camera",s,c),r=new p(d,e?.name);return this.trackPublications.set("camera",r),this.videoTrackPublications.set(d.sid,r),this.room.emit("localTrackPublished",r,this),r}let i=this.trackPublications.get("camera");i&&(i.track?.stop(),this.trackPublications.delete("camera"),this.videoTrackPublications.delete(i.trackSid),this.room.emit("localTrackUnpublished",i,this))}async setMicrophoneEnabled(t,e){if(this._microphoneEnabled=t,t){let{createSyntheticAudioTrack:n}=await Promise.resolve().then(()=>(S(),M)),{track:s,cleanup:c}=n({enabled:!1}),d=new g("audio","microphone",s,c),r=new p(d,e?.name);return this.trackPublications.set("microphone",r),this.audioTrackPublications.set(d.sid,r),this.room.emit("localTrackPublished",r,this),r}let i=this.trackPublications.get("microphone");i&&(i.track?.stop(),this.trackPublications.delete("microphone"),this.audioTrackPublications.delete(i.trackSid),this.room.emit("localTrackUnpublished",i,this))}async setScreenShareEnabled(t,e){if(this._screenShareEnabled=t,t){let{createSyntheticVideoTrack:n}=await Promise.resolve().then(()=>(S(),M)),{track:s,cleanup:c}=n({animation:"bars",label:"Screen Share",width:1920,height:1080}),d=new g("video","screen_share",s,c),r=new p(d,e?.name||"screen");return this.trackPublications.set("screen_share",r),this.videoTrackPublications.set(d.sid,r),this.room.emit("localTrackPublished",r,this),r}let i=this.trackPublications.get("screen_share");i&&(i.track?.stop(),this.trackPublications.delete("screen_share"),this.videoTrackPublications.delete(i.trackSid),this.room.emit("localTrackUnpublished",i,this))}async publishTrack(t,e){let i=new p(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:k("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 F(o){switch(o){case"standard":return 0;case"ingress":return 1;case"egress":return 2;case"sip":return 3;case"agent":return 4;default:return 0}}var T=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=k("PA"),this.name=e,this.attributes=i,this._kindString=n,this.kind=F(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 x=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 w(this),this.sid=k("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 T(this.localParticipant.identity,this.localParticipant.name,this.localParticipant.attributes):this.remoteParticipants.get(t)}getParticipantBySid(t){if(t===this.localParticipant.sid)return new T(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 T(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,c;if(e==="video"){let{createSyntheticVideoTrack:a}=await Promise.resolve().then(()=>(S(),M)),u=a({animation:n.isAgent?"avatar":"pulse",label:n.name||t,foregroundColor:n.isAgent?"#22c55e":"#4361ee"});s=u.track,c=u.cleanup}else if(e==="audio"){let{createSyntheticAudioTrack:a}=await Promise.resolve().then(()=>(S(),M)),u=a({enabled:!1});s=u.track,c=u.cleanup}let d=new g(e,i,s,c),r=new p(d);return n.addTrackPublication(r),this.emit("trackSubscribed",d,r,n),this.emit("trackPublished",r,n),d}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)}};0&&(module.exports={MockRoom});
@@ -1,4 +1,4 @@
1
- /*! @onlive.ai/common-121 v0.2.184 | © 2026 Onlive.ai */
1
+ /*! @onlive.ai/common-121 v0.2.190 | © 2026 Onlive.ai */
2
2
  import { MockLocalParticipant } from './local-participant.cjs';
3
3
  import { MockParticipant, MockParticipantKind } from './participant.cjs';
4
4
  import { MockTextStreamReader } from './streams.cjs';
@@ -1,4 +1,4 @@
1
- /*! @onlive.ai/common-121 v0.2.184 | © 2026 Onlive.ai */
1
+ /*! @onlive.ai/common-121 v0.2.190 | © 2026 Onlive.ai */
2
2
  import { MockLocalParticipant } from './local-participant.js';
3
3
  import { MockParticipant, MockParticipantKind } from './participant.js';
4
4
  import { MockTextStreamReader } from './streams.js';
@@ -1,2 +1,2 @@
1
- /*! @onlive.ai/common-121 v0.2.184 | © 2026 Onlive.ai */
1
+ /*! @onlive.ai/common-121 v0.2.190 | © 2026 Onlive.ai */
2
2
  var N=Object.defineProperty;var O=(s,t)=>()=>(s&&(t=s(s=0)),t);var U=(s,t)=>{for(var e in t)N(s,e,{get:t[e],enumerable:!0})};var M={};U(M,{SYNTHETIC_MEDIA_PRESETS:()=>$,createSyntheticAudioTrack:()=>H,createSyntheticMedia:()=>I,createSyntheticMediaFromPreset:()=>j,createSyntheticVideoTrack:()=>R});function R(s={}){let{width:t=640,height:e=480,fps:i=30,backgroundColor:n="#1a1a2e",foregroundColor:o="#4361ee",label:c="Mock Video",animation:d="wave"}=s,r=document.createElement("canvas");r.width=t,r.height=e;let a=r.getContext("2d"),u,f=Date.now(),y={wave:m=>{a.fillStyle=n,a.fillRect(0,0,t,e),a.strokeStyle=o,a.lineWidth=3,a.beginPath();for(let l=0;l<t;l++){let h=e/2+Math.sin(l/t*4*Math.PI+m*.002)*(e/4);l===0?a.moveTo(l,h):a.lineTo(l,h)}a.stroke()},pulse:m=>{a.fillStyle=n,a.fillRect(0,0,t,e);let l=Math.sin(m*.003)*.3+.7,h=Math.min(t,e)*.3*l;a.beginPath(),a.arc(t/2,e/2,h,0,Math.PI*2),a.fillStyle=o,a.fill()},bars:m=>{a.fillStyle=n,a.fillRect(0,0,t,e);let l=20,h=t/l,b=e*.7;a.fillStyle=o;for(let v=0;v<l;v++){let C=Math.abs(Math.sin(v/l*Math.PI*2+m*.004))*b,L=v*h,V=e-C;a.fillRect(L+2,V,h-4,C)}},avatar:m=>{a.fillStyle=n,a.fillRect(0,0,t,e);let l=t/2,h=e/2-20,b=Math.min(t,e)*.15;a.beginPath(),a.arc(l,h,b,0,Math.PI*2),a.fillStyle=o,a.fill(),a.beginPath(),a.ellipse(l,h+b*2.2,b*1.5,b,0,Math.PI,0),a.fill(),Math.sin(m*.01)>0&&(a.beginPath(),a.arc(l,h+b*3,5+Math.sin(m*.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(c,t/2,e-20)},P=()=>{let m=Date.now()-f;y[d](m),_(),u=requestAnimationFrame(P)};P();let E=r.captureStream(i),x=E.getVideoTracks()[0];return{track:x,stream:E,cleanup:()=>{cancelAnimationFrame(u),x.stop()}}}function H(s={}){let{frequency:t=440,volume:e=.1,waveType:i="sine",addVariation:n=!0,enabled:o=!1}=s,c=new AudioContext,d=c.createMediaStreamDestination(),r=c.createOscillator();r.type=i,r.frequency.value=t;let a=c.createGain();a.gain.value=o?e:0;let u=null,f=null;n&&(u=c.createOscillator(),u.frequency.value=.5,f=c.createGain(),f.gain.value=10,u.connect(f),f.connect(r.frequency),u.start()),r.connect(a),a.connect(d),r.start();let y=d.stream,_=y.getAudioTracks()[0];return{track:_,stream:y,setVolume:P=>{a.gain.value=Math.max(0,Math.min(1,P))},setEnabled:P=>{a.gain.value=P?e:0},cleanup:()=>{r.stop(),u?.stop(),c.close(),_.stop()}}}function I(s,t){let e=R(s),i=H(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 j(s){let t=$[s];return I(t.video,t.audio)}var $,S=O(()=>{"use strict";$={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 A=0;function k(s){return A++,`mock_${s}_${A}_${Date.now().toString(36)}`}var g=class{constructor(t,e,i,n){this.muted=!1;this.enabled=!0;this.attachedElements=new Set;this.kind=t,this.source=e,this.sid=k("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)}},p=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 w=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=k("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(()=>(S(),M)),{track:o,cleanup:c}=n({animation:"avatar",label:this.name||"Local Camera"}),d=new g("video","camera",o,c),r=new p(d,e?.name);return this.trackPublications.set("camera",r),this.videoTrackPublications.set(d.sid,r),this.room.emit("localTrackPublished",r,this),r}let i=this.trackPublications.get("camera");i&&(i.track?.stop(),this.trackPublications.delete("camera"),this.videoTrackPublications.delete(i.trackSid),this.room.emit("localTrackUnpublished",i,this))}async setMicrophoneEnabled(t,e){if(this._microphoneEnabled=t,t){let{createSyntheticAudioTrack:n}=await Promise.resolve().then(()=>(S(),M)),{track:o,cleanup:c}=n({enabled:!1}),d=new g("audio","microphone",o,c),r=new p(d,e?.name);return this.trackPublications.set("microphone",r),this.audioTrackPublications.set(d.sid,r),this.room.emit("localTrackPublished",r,this),r}let i=this.trackPublications.get("microphone");i&&(i.track?.stop(),this.trackPublications.delete("microphone"),this.audioTrackPublications.delete(i.trackSid),this.room.emit("localTrackUnpublished",i,this))}async setScreenShareEnabled(t,e){if(this._screenShareEnabled=t,t){let{createSyntheticVideoTrack:n}=await Promise.resolve().then(()=>(S(),M)),{track:o,cleanup:c}=n({animation:"bars",label:"Screen Share",width:1920,height:1080}),d=new g("video","screen_share",o,c),r=new p(d,e?.name||"screen");return this.trackPublications.set("screen_share",r),this.videoTrackPublications.set(d.sid,r),this.room.emit("localTrackPublished",r,this),r}let i=this.trackPublications.get("screen_share");i&&(i.track?.stop(),this.trackPublications.delete("screen_share"),this.videoTrackPublications.delete(i.trackSid),this.room.emit("localTrackUnpublished",i,this))}async publishTrack(t,e){let i=new p(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:k("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 G(s){switch(s){case"standard":return 0;case"ingress":return 1;case"egress":return 2;case"sip":return 3;case"agent":return 4;default:return 0}}var T=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=k("PA"),this.name=e,this.attributes=i,this._kindString=n,this.kind=G(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 D=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 w(this),this.sid=k("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(o){console.error(`Error in mock room event handler for ${t}:`,o)}}registerRpcMethod(t,e){this.rpcHandlers.set(t,e)}unregisterRpcMethod(t){this.rpcHandlers.delete(t)}async callRpc(t,e,i,n=1e4){let o=this.rpcHandlers.get(t);if(!o)throw new Error(`RPC method not found: ${t}`);return o({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 T(this.localParticipant.identity,this.localParticipant.name,this.localParticipant.attributes):this.remoteParticipants.get(t)}getParticipantBySid(t){if(t===this.localParticipant.sid)return new T(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 T(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 o,c;if(e==="video"){let{createSyntheticVideoTrack:a}=await Promise.resolve().then(()=>(S(),M)),u=a({animation:n.isAgent?"avatar":"pulse",label:n.name||t,foregroundColor:n.isAgent?"#22c55e":"#4361ee"});o=u.track,c=u.cleanup}else if(e==="audio"){let{createSyntheticAudioTrack:a}=await Promise.resolve().then(()=>(S(),M)),u=a({enabled:!1});o=u.track,c=u.cleanup}let d=new g(e,i,o,c),r=new p(d);return n.addTrackPublication(r),this.emit("trackSubscribed",d,r,n),this.emit("trackPublished",r,n),d}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 o=n.getTrackPublication(e);o?.track&&(o.track.setMuted(i),this.emit(i?"trackMuted":"trackUnmuted",o,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 o=this.remoteParticipants.get(e);this.emit("dataReceived",t,o,i,n)}};export{D as MockRoom};
@@ -1,2 +1,2 @@
1
- /*! @onlive.ai/common-121 v0.2.184 | © 2026 Onlive.ai */
1
+ /*! @onlive.ai/common-121 v0.2.190 | © 2026 Onlive.ai */
2
2
  "use strict";var c=Object.defineProperty;var p=Object.getOwnPropertyDescriptor;var m=Object.getOwnPropertyNames;var k=Object.prototype.hasOwnProperty;var _=(e,t)=>{for(var n in t)c(e,n,{get:t[n],enumerable:!0})},f=(e,t,n,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of m(t))!k.call(e,i)&&i!==n&&c(e,i,{get:()=>t[i],enumerable:!(r=p(t,i))||r.enumerable});return e};var y=e=>f(c({},"__esModule",{value:!0}),e);var I={};_(I,{MockByteStreamReader:()=>u,MockTextStreamReader:()=>o,MockTextStreamWriter:()=>g,createTextStream:()=>x});module.exports=y(I);var l=0;function a(e){return l++,`mock_${e}_${l}_${Date.now().toString(36)}`}var o=class{constructor(t,n,r,i,s){this.index=0;this._complete=!1;this.info={id:t,attributes:i,topic:s,timestamp:Date.now()},this.participantIdentity=n,this.topic=s,this.chunks=Array.isArray(r)?r:[r],this.info.totalSize=this.chunks.reduce((d,h)=>d+h.length,0)}get isComplete(){return this._complete}async*[Symbol.asyncIterator](){for(let t of this.chunks)yield t;this._complete=!0}async read(){return this.index>=this.chunks.length?(this._complete=!0,null):this.chunks[this.index++]}async readAll(){let t=this.chunks.slice(this.index).join("");return this.index=this.chunks.length,this._complete=!0,t}cancel(){this._complete=!0}},g=class{constructor(t,n){this.chunks=[];this._closed=!1;this.id=a("stream"),this._topic=t,this._destinationIdentities=n}get isClosed(){return this._closed}get topic(){return this._topic}get destinationIdentities(){return this._destinationIdentities}get content(){return this.chunks.join("")}onWrite(t){this.onWriteCallback=t}async write(t){if(this._closed)throw new Error("Stream is closed");this.chunks.push(t),this.onWriteCallback?.(t)}async close(){this._closed=!0}},u=class{constructor(t,n,r){this._index=0;this.info={id:t,timestamp:Date.now()},this.participantIdentity=n,this.chunks=Array.isArray(r)?r:[r]}get index(){return this._index}async*[Symbol.asyncIterator](){for(let t of this.chunks)yield t}async readAll(){let t=this.chunks.reduce((i,s)=>i+s.length,0),n=new Uint8Array(t),r=0;for(let i of this.chunks)n.set(i,r),r+=i.length;return n}};function x(e,t,n){return new o(n?.id||a("stream"),e,t,n?.attributes,n?.topic)}0&&(module.exports={MockByteStreamReader,MockTextStreamReader,MockTextStreamWriter,createTextStream});
@@ -1,4 +1,4 @@
1
- /*! @onlive.ai/common-121 v0.2.184 | © 2026 Onlive.ai */
1
+ /*! @onlive.ai/common-121 v0.2.190 | © 2026 Onlive.ai */
2
2
  /**
3
3
  * @file Mock LiveKit data streams.
4
4
  *
@@ -1,4 +1,4 @@
1
- /*! @onlive.ai/common-121 v0.2.184 | © 2026 Onlive.ai */
1
+ /*! @onlive.ai/common-121 v0.2.190 | © 2026 Onlive.ai */
2
2
  /**
3
3
  * @file Mock LiveKit data streams.
4
4
  *
@@ -1,2 +1,2 @@
1
- /*! @onlive.ai/common-121 v0.2.184 | © 2026 Onlive.ai */
1
+ /*! @onlive.ai/common-121 v0.2.190 | © 2026 Onlive.ai */
2
2
  var a=0;function o(r){return a++,`mock_${r}_${a}_${Date.now().toString(36)}`}var c=class{constructor(t,n,e,i,s){this.index=0;this._complete=!1;this.info={id:t,attributes:i,topic:s,timestamp:Date.now()},this.participantIdentity=n,this.topic=s,this.chunks=Array.isArray(e)?e:[e],this.info.totalSize=this.chunks.reduce((l,d)=>l+d.length,0)}get isComplete(){return this._complete}async*[Symbol.asyncIterator](){for(let t of this.chunks)yield t;this._complete=!0}async read(){return this.index>=this.chunks.length?(this._complete=!0,null):this.chunks[this.index++]}async readAll(){let t=this.chunks.slice(this.index).join("");return this.index=this.chunks.length,this._complete=!0,t}cancel(){this._complete=!0}},g=class{constructor(t,n){this.chunks=[];this._closed=!1;this.id=o("stream"),this._topic=t,this._destinationIdentities=n}get isClosed(){return this._closed}get topic(){return this._topic}get destinationIdentities(){return this._destinationIdentities}get content(){return this.chunks.join("")}onWrite(t){this.onWriteCallback=t}async write(t){if(this._closed)throw new Error("Stream is closed");this.chunks.push(t),this.onWriteCallback?.(t)}async close(){this._closed=!0}},u=class{constructor(t,n,e){this._index=0;this.info={id:t,timestamp:Date.now()},this.participantIdentity=n,this.chunks=Array.isArray(e)?e:[e]}get index(){return this._index}async*[Symbol.asyncIterator](){for(let t of this.chunks)yield t}async readAll(){let t=this.chunks.reduce((i,s)=>i+s.length,0),n=new Uint8Array(t),e=0;for(let i of this.chunks)n.set(i,e),e+=i.length;return n}};function m(r,t,n){return new c(n?.id||o("stream"),r,t,n?.attributes,n?.topic)}export{u as MockByteStreamReader,c as MockTextStreamReader,g as MockTextStreamWriter,m as createTextStream};
@@ -1,2 +1,2 @@
1
- /*! @onlive.ai/common-121 v0.2.184 | © 2026 Onlive.ai */
1
+ /*! @onlive.ai/common-121 v0.2.190 | © 2026 Onlive.ai */
2
2
  "use strict";var a=Object.defineProperty;var m=Object.getOwnPropertyDescriptor;var u=Object.getOwnPropertyNames;var l=Object.prototype.hasOwnProperty;var g=(r,t)=>{for(var e in t)a(r,e,{get:t[e],enumerable:!0})},k=(r,t,e,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of u(t))!l.call(r,i)&&i!==e&&a(r,i,{get:()=>t[i],enumerable:!(n=m(t,i))||n.enumerable});return r};var h=r=>k(a({},"__esModule",{value:!0}),r);var p={};g(p,{MockTrack:()=>o,MockTrackPublication:()=>s});module.exports=h(p);var c=0;function d(r){return c++,`mock_${r}_${c}_${Date.now().toString(36)}`}var o=class{constructor(t,e,n,i){this.muted=!1;this.enabled=!0;this.attachedElements=new Set;this.kind=t,this.source=e,this.sid=d("TR"),this.mediaStreamTrack=n,this.mediaCleanup=i}get mediaTrack(){return this.mediaStreamTrack}attach(t){let e=t||document.createElement(this.kind==="video"?"video":"audio");if(this.mediaStreamTrack){let n=new MediaStream([this.mediaStreamTrack]);e.srcObject=n,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 n of e)n.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)}},s=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)}};0&&(module.exports={MockTrack,MockTrackPublication});
@@ -1,4 +1,4 @@
1
- /*! @onlive.ai/common-121 v0.2.184 | © 2026 Onlive.ai */
1
+ /*! @onlive.ai/common-121 v0.2.190 | © 2026 Onlive.ai */
2
2
  import { MockTrackKind } from '../types.cjs';
3
3
  export { MockTrackSource } from '../types.cjs';
4
4
 
@@ -1,4 +1,4 @@
1
- /*! @onlive.ai/common-121 v0.2.184 | © 2026 Onlive.ai */
1
+ /*! @onlive.ai/common-121 v0.2.190 | © 2026 Onlive.ai */
2
2
  import { MockTrackKind } from '../types.js';
3
3
  export { MockTrackSource } from '../types.js';
4
4
 
@@ -1,2 +1,2 @@
1
- /*! @onlive.ai/common-121 v0.2.184 | © 2026 Onlive.ai */
1
+ /*! @onlive.ai/common-121 v0.2.190 | © 2026 Onlive.ai */
2
2
  var i=0;function a(n){return i++,`mock_${n}_${i}_${Date.now().toString(36)}`}var o=class{constructor(t,e,r,c){this.muted=!1;this.enabled=!0;this.attachedElements=new Set;this.kind=t,this.source=e,this.sid=a("TR"),this.mediaStreamTrack=r,this.mediaCleanup=c}get mediaTrack(){return this.mediaStreamTrack}attach(t){let e=t||document.createElement(this.kind==="video"?"video":"audio");if(this.mediaStreamTrack){let r=new MediaStream([this.mediaStreamTrack]);e.srcObject=r,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 r of e)r.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)}},s=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)}};export{o as MockTrack,s as MockTrackPublication};
@@ -1,2 +1,2 @@
1
- /*! @onlive.ai/common-121 v0.2.184 | © 2026 Onlive.ai */
1
+ /*! @onlive.ai/common-121 v0.2.190 | © 2026 Onlive.ai */
2
2
  "use strict";var p=Object.defineProperty;var V=Object.getOwnPropertyDescriptor;var I=Object.getOwnPropertyNames;var R=Object.prototype.hasOwnProperty;var q=(o,t)=>{for(var a in t)p(o,a,{get:t[a],enumerable:!0})},D=(o,t,a,l)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of I(t))!R.call(o,i)&&i!==a&&p(o,i,{get:()=>t[i],enumerable:!(l=V(t,i))||l.enumerable});return o};var N=o=>D(p({},"__esModule",{value:!0}),o);var F={};q(F,{SYNTHETIC_MEDIA_PRESETS:()=>A,createSyntheticAudioTrack:()=>w,createSyntheticMedia:()=>x,createSyntheticMediaFromPreset:()=>O,createSyntheticVideoTrack:()=>C});module.exports=N(F);function C(o={}){let{width:t=640,height:a=480,fps:l=30,backgroundColor:i="#1a1a2e",foregroundColor:f="#4361ee",label:d="Mock Video",animation:S="wave"}=o,r=document.createElement("canvas");r.width=t,r.height=a;let e=r.getContext("2d"),u,h=Date.now(),v={wave:s=>{e.fillStyle=i,e.fillRect(0,0,t,a),e.strokeStyle=f,e.lineWidth=3,e.beginPath();for(let n=0;n<t;n++){let c=a/2+Math.sin(n/t*4*Math.PI+s*.002)*(a/4);n===0?e.moveTo(n,c):e.lineTo(n,c)}e.stroke()},pulse:s=>{e.fillStyle=i,e.fillRect(0,0,t,a);let n=Math.sin(s*.003)*.3+.7,c=Math.min(t,a)*.3*n;e.beginPath(),e.arc(t/2,a/2,c,0,Math.PI*2),e.fillStyle=f,e.fill()},bars:s=>{e.fillStyle=i,e.fillRect(0,0,t,a);let n=20,c=t/n,m=a*.7;e.fillStyle=f;for(let g=0;g<n;g++){let T=Math.abs(Math.sin(g/n*Math.PI*2+s*.004))*m,E=g*c,P=a-T;e.fillRect(E+2,P,c-4,T)}},avatar:s=>{e.fillStyle=i,e.fillRect(0,0,t,a);let n=t/2,c=a/2-20,m=Math.min(t,a)*.15;e.beginPath(),e.arc(n,c,m,0,Math.PI*2),e.fillStyle=f,e.fill(),e.beginPath(),e.ellipse(n,c+m*2.2,m*1.5,m,0,Math.PI,0),e.fill(),Math.sin(s*.01)>0&&(e.beginPath(),e.arc(n,c+m*3,5+Math.sin(s*.02)*3,0,Math.PI*2),e.fillStyle="#22c55e",e.fill())},none:()=>{e.fillStyle=i,e.fillRect(0,0,t,a)}},y=()=>{e.fillStyle="rgba(255, 255, 255, 0.8)",e.font=`${Math.floor(a*.04)}px system-ui, sans-serif`,e.textAlign="center",e.fillText(d,t/2,a-20)},b=()=>{let s=Date.now()-h;v[S](s),y(),u=requestAnimationFrame(b)};b();let M=r.captureStream(l),k=M.getVideoTracks()[0];return{track:k,stream:M,cleanup:()=>{cancelAnimationFrame(u),k.stop()}}}function w(o={}){let{frequency:t=440,volume:a=.1,waveType:l="sine",addVariation:i=!0,enabled:f=!1}=o,d=new AudioContext,S=d.createMediaStreamDestination(),r=d.createOscillator();r.type=l,r.frequency.value=t;let e=d.createGain();e.gain.value=f?a:0;let u=null,h=null;i&&(u=d.createOscillator(),u.frequency.value=.5,h=d.createGain(),h.gain.value=10,u.connect(h),h.connect(r.frequency),u.start()),r.connect(e),e.connect(S),r.start();let v=S.stream,y=v.getAudioTracks()[0];return{track:y,stream:v,setVolume:b=>{e.gain.value=Math.max(0,Math.min(1,b))},setEnabled:b=>{e.gain.value=b?a:0},cleanup:()=>{r.stop(),u?.stop(),d.close(),y.stop()}}}function x(o,t){let a=C(o),l=w(t),i=new MediaStream([a.track,l.track]);return{videoTrack:a.track,audioTrack:l.track,combinedStream:i,setAudioVolume:l.setVolume,setAudioEnabled:l.setEnabled,cleanup:()=>{a.cleanup(),l.cleanup()}}}var A={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}}};function O(o){let t=A[o];return x(t.video,t.audio)}0&&(module.exports={SYNTHETIC_MEDIA_PRESETS,createSyntheticAudioTrack,createSyntheticMedia,createSyntheticMediaFromPreset,createSyntheticVideoTrack});
@@ -1,4 +1,4 @@
1
- /*! @onlive.ai/common-121 v0.2.184 | © 2026 Onlive.ai */
1
+ /*! @onlive.ai/common-121 v0.2.190 | © 2026 Onlive.ai */
2
2
  /**
3
3
  * @file Synthetic media generators for mock LiveKit tracks.
4
4
  * @description Generates fake video and audio MediaStreams for visual demos
@@ -1,4 +1,4 @@
1
- /*! @onlive.ai/common-121 v0.2.184 | © 2026 Onlive.ai */
1
+ /*! @onlive.ai/common-121 v0.2.190 | © 2026 Onlive.ai */
2
2
  /**
3
3
  * @file Synthetic media generators for mock LiveKit tracks.
4
4
  * @description Generates fake video and audio MediaStreams for visual demos
@@ -1,2 +1,2 @@
1
- /*! @onlive.ai/common-121 v0.2.184 | © 2026 Onlive.ai */
1
+ /*! @onlive.ai/common-121 v0.2.190 | © 2026 Onlive.ai */
2
2
  function w(u={}){let{width:a=640,height:t=480,fps:r=30,backgroundColor:c="#1a1a2e",foregroundColor:f="#4361ee",label:s="Mock Video",animation:S="wave"}=u,o=document.createElement("canvas");o.width=a,o.height=t;let e=o.getContext("2d"),d,h=Date.now(),v={wave:l=>{e.fillStyle=c,e.fillRect(0,0,a,t),e.strokeStyle=f,e.lineWidth=3,e.beginPath();for(let n=0;n<a;n++){let i=t/2+Math.sin(n/a*4*Math.PI+l*.002)*(t/4);n===0?e.moveTo(n,i):e.lineTo(n,i)}e.stroke()},pulse:l=>{e.fillStyle=c,e.fillRect(0,0,a,t);let n=Math.sin(l*.003)*.3+.7,i=Math.min(a,t)*.3*n;e.beginPath(),e.arc(a/2,t/2,i,0,Math.PI*2),e.fillStyle=f,e.fill()},bars:l=>{e.fillStyle=c,e.fillRect(0,0,a,t);let n=20,i=a/n,m=t*.7;e.fillStyle=f;for(let g=0;g<n;g++){let k=Math.abs(Math.sin(g/n*Math.PI*2+l*.004))*m,T=g*i,C=t-k;e.fillRect(T+2,C,i-4,k)}},avatar:l=>{e.fillStyle=c,e.fillRect(0,0,a,t);let n=a/2,i=t/2-20,m=Math.min(a,t)*.15;e.beginPath(),e.arc(n,i,m,0,Math.PI*2),e.fillStyle=f,e.fill(),e.beginPath(),e.ellipse(n,i+m*2.2,m*1.5,m,0,Math.PI,0),e.fill(),Math.sin(l*.01)>0&&(e.beginPath(),e.arc(n,i+m*3,5+Math.sin(l*.02)*3,0,Math.PI*2),e.fillStyle="#22c55e",e.fill())},none:()=>{e.fillStyle=c,e.fillRect(0,0,a,t)}},y=()=>{e.fillStyle="rgba(255, 255, 255, 0.8)",e.font=`${Math.floor(t*.04)}px system-ui, sans-serif`,e.textAlign="center",e.fillText(s,a/2,t-20)},b=()=>{let l=Date.now()-h;v[S](l),y(),d=requestAnimationFrame(b)};b();let p=o.captureStream(r),M=p.getVideoTracks()[0];return{track:M,stream:p,cleanup:()=>{cancelAnimationFrame(d),M.stop()}}}function x(u={}){let{frequency:a=440,volume:t=.1,waveType:r="sine",addVariation:c=!0,enabled:f=!1}=u,s=new AudioContext,S=s.createMediaStreamDestination(),o=s.createOscillator();o.type=r,o.frequency.value=a;let e=s.createGain();e.gain.value=f?t:0;let d=null,h=null;c&&(d=s.createOscillator(),d.frequency.value=.5,h=s.createGain(),h.gain.value=10,d.connect(h),h.connect(o.frequency),d.start()),o.connect(e),e.connect(S),o.start();let v=S.stream,y=v.getAudioTracks()[0];return{track:y,stream:v,setVolume:b=>{e.gain.value=Math.max(0,Math.min(1,b))},setEnabled:b=>{e.gain.value=b?t:0},cleanup:()=>{o.stop(),d?.stop(),s.close(),y.stop()}}}function A(u,a){let t=w(u),r=x(a),c=new MediaStream([t.track,r.track]);return{videoTrack:t.track,audioTrack:r.track,combinedStream:c,setAudioVolume:r.setVolume,setAudioEnabled:r.setEnabled,cleanup:()=>{t.cleanup(),r.cleanup()}}}var E={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}}};function P(u){let a=E[u];return A(a.video,a.audio)}export{E as SYNTHETIC_MEDIA_PRESETS,x as createSyntheticAudioTrack,A as createSyntheticMedia,P as createSyntheticMediaFromPreset,w as createSyntheticVideoTrack};
@@ -1,2 +1,2 @@
1
- /*! @onlive.ai/common-121 v0.2.184 | © 2026 Onlive.ai */
2
- "use strict";var H=Object.defineProperty;var ct=Object.getOwnPropertyDescriptor;var dt=Object.getOwnPropertyNames;var gt=Object.prototype.hasOwnProperty;var ut=(r,t)=>()=>(r&&(t=r(r=0)),t);var X=(r,t)=>{for(var e in t)H(r,e,{get:t[e],enumerable:!0})},lt=(r,t,e,i)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of dt(t))!gt.call(r,n)&&n!==e&&H(r,n,{get:()=>t[n],enumerable:!(i=ct(t,n))||i.enumerable});return r};var mt=r=>lt(H({},"__esModule",{value:!0}),r);var P={};X(P,{SYNTHETIC_MEDIA_PRESETS:()=>rt,createSyntheticAudioTrack:()=>nt,createSyntheticMedia:()=>st,createSyntheticMediaFromPreset:()=>ht,createSyntheticVideoTrack:()=>it});function it(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 Z=Math.abs(Math.sin(A/m*Math.PI*2+p*.004))*M,at=A*h,ot=e-Z;o.fillRect(at+2,ot,h-4,Z)}},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 Q=c.captureStream(i),Y=Q.getVideoTracks()[0];return{track:Y,stream:Q,cleanup:()=>{cancelAnimationFrame(l),Y.stop()}}}function nt(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 st(r,t){let e=it(r),i=nt(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 ht(r){let t=rt[r];return st(t.video,t.audio)}var rt,w=ut(()=>{"use strict";rt={localCamera:{video:{width:640,height:480,animation:"avatar",label:"You",foregroundColor:"#4361ee"},audio:{enabled:!1}},agentCamera:{video:{width:640,height:480,animation:"avatar",label:"AI Agent",foregroundColor:"#22c55e",backgroundColor:"#0f172a"},audio:{enabled:!1,frequency:300}},screenShare:{video:{width:1920,height:1080,animation:"bars",label:"Screen Share",backgroundColor:"#0a0a0a",foregroundColor:"#f59e0b"},audio:{enabled:!1}},voiceOnly:{video:{width:320,height:240,animation:"wave",label:"Voice Call"},audio:{enabled:!1,volume:.05}}}});var kt={};X(kt,{MockConversationService:()=>W});module.exports=mt(kt);var N=0;function tt(){N=0}function g(r){return N++,`mock_${r}_${N}_${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 et(r){return`wss://mock-livekit.local/room/${r}`}var U={responseStrategy:"echo",responseDelayMs:100,cannedResponses:[],type:"text",nature:"ai",simulateTyping:!1,typingDelayPerChar:20};function q(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={...U,...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=q(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"}},$=class extends u{constructor(t){super("ROOM_ENDED",`Room has ended: ${t}`,{roomId:t}),this.name="RoomEndedError"}},j=class extends u{constructor(t,e){super("PARTICIPANT_ALREADY_JOINED",`Participant ${t} is already in room ${e}`,{identity:t,roomId:e}),this.name="ParticipantAlreadyJoinedError"}},F=class extends u{constructor(t){super("PARTICIPANT_NOT_FOUND",`Participant not found: ${t}`,{identity:t}),this.name="ParticipantNotFoundError"}},G=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"}},z=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"}},B=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 $(r.details?.roomId??"unknown");case"PARTICIPANT_ALREADY_JOINED":return new j(r.details?.identity??"unknown",r.details?.roomId??"unknown");case"PARTICIPANT_NOT_FOUND":return new F(r.details?.identity??"unknown");case"TRACK_NOT_FOUND":return new G(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 z(r.message);case"INVALID_OPERATION":return new J(r.message,r.details);case"TIMEOUT":return new B(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 pt(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=pt(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:et(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 W=class{constructor(t={}){this.messageListeners=new Set;this.typingListeners=new Set;this.callRequestListeners=new Map;this._authToken=null;this._registeredUser=null;this.agents=new Map;this.config={latencyMs:t.latencyMs??0,strictMode:t.strictMode??!1,seed:t.seed,scenario:t.scenario,errorConfig:t.errorConfig,autoEmitEvents:t.autoEmitEvents??!0,organizationId:t.organizationId??"mock_org",apiUrl:t.apiUrl??"https://mock-livekit.local"},this.state=new 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),tt()}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)}};0&&(module.exports={MockConversationService});
1
+ /*! @onlive.ai/common-121 v0.2.190 | © 2026 Onlive.ai */
2
+ "use strict";var H=Object.defineProperty;var ct=Object.getOwnPropertyDescriptor;var dt=Object.getOwnPropertyNames;var gt=Object.prototype.hasOwnProperty;var ut=(r,t)=>()=>(r&&(t=r(r=0)),t);var X=(r,t)=>{for(var e in t)H(r,e,{get:t[e],enumerable:!0})},lt=(r,t,e,i)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of dt(t))!gt.call(r,n)&&n!==e&&H(r,n,{get:()=>t[n],enumerable:!(i=ct(t,n))||i.enumerable});return r};var mt=r=>lt(H({},"__esModule",{value:!0}),r);var P={};X(P,{SYNTHETIC_MEDIA_PRESETS:()=>rt,createSyntheticAudioTrack:()=>nt,createSyntheticMedia:()=>st,createSyntheticMediaFromPreset:()=>ht,createSyntheticVideoTrack:()=>it});function it(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 Z=Math.abs(Math.sin(A/m*Math.PI*2+p*.004))*M,at=A*h,ot=e-Z;o.fillRect(at+2,ot,h-4,Z)}},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 Q=c.captureStream(i),Y=Q.getVideoTracks()[0];return{track:Y,stream:Q,cleanup:()=>{cancelAnimationFrame(l),Y.stop()}}}function nt(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 st(r,t){let e=it(r),i=nt(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 ht(r){let t=rt[r];return st(t.video,t.audio)}var rt,w=ut(()=>{"use strict";rt={localCamera:{video:{width:640,height:480,animation:"avatar",label:"You",foregroundColor:"#4361ee"},audio:{enabled:!1}},agentCamera:{video:{width:640,height:480,animation:"avatar",label:"AI Agent",foregroundColor:"#22c55e",backgroundColor:"#0f172a"},audio:{enabled:!1,frequency:300}},screenShare:{video:{width:1920,height:1080,animation:"bars",label:"Screen Share",backgroundColor:"#0a0a0a",foregroundColor:"#f59e0b"},audio:{enabled:!1}},voiceOnly:{video:{width:320,height:240,animation:"wave",label:"Voice Call"},audio:{enabled:!1,volume:.05}}}});var kt={};X(kt,{MockConversationService:()=>W});module.exports=mt(kt);var N=0;function tt(){N=0}function g(r){return N++,`mock_${r}_${N}_${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 et(r){return`wss://mock-livekit.local/room/${r}`}var U={responseStrategy:"echo",responseDelayMs:100,cannedResponses:[],type:"text",nature:"ai",simulateTyping:!1,typingDelayPerChar:20};function q(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={...U,...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=q(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"}},$=class extends u{constructor(t){super("ROOM_ENDED",`Room has ended: ${t}`,{roomId:t}),this.name="RoomEndedError"}},j=class extends u{constructor(t,e){super("PARTICIPANT_ALREADY_JOINED",`Participant ${t} is already in room ${e}`,{identity:t,roomId:e}),this.name="ParticipantAlreadyJoinedError"}},F=class extends u{constructor(t){super("PARTICIPANT_NOT_FOUND",`Participant not found: ${t}`,{identity:t}),this.name="ParticipantNotFoundError"}},G=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"}},z=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"}},B=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 $(r.details?.roomId??"unknown");case"PARTICIPANT_ALREADY_JOINED":return new j(r.details?.identity??"unknown",r.details?.roomId??"unknown");case"PARTICIPANT_NOT_FOUND":return new F(r.details?.identity??"unknown");case"TRACK_NOT_FOUND":return new G(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 z(r.message);case"INVALID_OPERATION":return new J(r.message,r.details);case"TIMEOUT":return new B(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 pt(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=pt(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:et(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 W=class{constructor(t={}){this.messageListeners=new Set;this.typingListeners=new Set;this.callRequestListeners=new Map;this._authToken=null;this._registeredUser=null;this.agents=new Map;this.config={latencyMs:t.latencyMs??0,strictMode:t.strictMode??!1,seed:t.seed,scenario:t.scenario,errorConfig:t.errorConfig,autoEmitEvents:t.autoEmitEvents??!0,organizationId:t.organizationId??"mock_org",apiUrl:t.apiUrl??"https://mock-livekit.local"},this.state=new 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){let{externalId:e,secret:i,metadata:n,...s}=t.user;return await this.registerUser(e,i,s,n),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),tt()}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)}};0&&(module.exports={MockConversationService});
@@ -1,4 +1,4 @@
1
- /*! @onlive.ai/common-121 v0.2.184 | © 2026 Onlive.ai */
1
+ /*! @onlive.ai/common-121 v0.2.190 | © 2026 Onlive.ai */
2
2
  import { UserApiResponse, ConversationServiceOptions, AgentData, QuickStartOptions, CreateRoomOptions, EvaluateRoomOptions, GetRoomsOptions, RoomsApiResponse, PersistMessageOptions, MessagesApiResponse, GetMessagesOptions, ApiMessage, MessageReportOptions, MessageReactionOptions, MessageListener, TypingListener, ContextualEvent, RequestNewRoomOptions, RoomApiResponse, CallRequest, CallRequestListener, RoomSyncData, NewRoomRequestData } from '../conversation.types.cjs';
3
3
  import { MockServiceConfig, MockAgentConfig, MockScenario } from './types.cjs';
4
4
  import { MockEventEmitter } from './events.cjs';
@@ -1,4 +1,4 @@
1
- /*! @onlive.ai/common-121 v0.2.184 | © 2026 Onlive.ai */
1
+ /*! @onlive.ai/common-121 v0.2.190 | © 2026 Onlive.ai */
2
2
  import { UserApiResponse, ConversationServiceOptions, AgentData, QuickStartOptions, CreateRoomOptions, EvaluateRoomOptions, GetRoomsOptions, RoomsApiResponse, PersistMessageOptions, MessagesApiResponse, GetMessagesOptions, ApiMessage, MessageReportOptions, MessageReactionOptions, MessageListener, TypingListener, ContextualEvent, RequestNewRoomOptions, RoomApiResponse, CallRequest, CallRequestListener, RoomSyncData, NewRoomRequestData } from '../conversation.types.js';
3
3
  import { MockServiceConfig, MockAgentConfig, MockScenario } from './types.js';
4
4
  import { MockEventEmitter } from './events.js';