@onlive.ai/common-121 0.2.199 → 0.2.228

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (514) hide show
  1. package/{audi-dark.theme-CwD9I0E3.d.cts → audi-dark.theme-C92mx6HX.d.cts} +1 -1
  2. package/{audi-dark.theme-CwD9I0E3.d.ts → audi-dark.theme-C92mx6HX.d.ts} +1 -1
  3. package/{audi.theme-UpbZQ49h.d.cts → audi.theme-b5_HO8i0.d.cts} +1 -1
  4. package/{audi.theme-UpbZQ49h.d.ts → audi.theme-b5_HO8i0.d.ts} +1 -1
  5. package/{australia.theme-o9dMWVmn.d.cts → australia.theme-Cr_KZr4r.d.cts} +1 -1
  6. package/{australia.theme-o9dMWVmn.d.ts → australia.theme-Cr_KZr4r.d.ts} +1 -1
  7. package/{chunk-H2PJ6KN6.js → chunk-JB6NDWSG.js} +1 -1
  8. package/components/asset/asset-modal-portal.cjs +1 -1
  9. package/components/asset/asset-modal-portal.d.cts +1 -1
  10. package/components/asset/asset-modal-portal.d.ts +1 -1
  11. package/components/asset/asset-modal-portal.js +1 -1
  12. package/components/asset/asset.cjs +2 -2
  13. package/components/asset/asset.d.cts +1 -1
  14. package/components/asset/asset.d.ts +1 -1
  15. package/components/asset/asset.js +2 -2
  16. package/components/asset/asset.loaders.cjs +1 -1
  17. package/components/asset/asset.loaders.d.cts +1 -1
  18. package/components/asset/asset.loaders.d.ts +1 -1
  19. package/components/asset/asset.loaders.js +1 -1
  20. package/components/asset/asset.renderer.cjs +2 -2
  21. package/components/asset/asset.renderer.d.cts +1 -1
  22. package/components/asset/asset.renderer.d.ts +1 -1
  23. package/components/asset/asset.renderer.js +2 -2
  24. package/components/asset/asset.styles.cjs +1 -1
  25. package/components/asset/asset.styles.d.cts +1 -1
  26. package/components/asset/asset.styles.d.ts +1 -1
  27. package/components/asset/asset.styles.js +1 -1
  28. package/components/asset/asset.types.cjs +1 -1
  29. package/components/asset/asset.types.d.cts +1 -1
  30. package/components/asset/asset.types.d.ts +1 -1
  31. package/components/asset/asset.types.js +1 -1
  32. package/components/asset/index.cjs +2 -2
  33. package/components/asset/index.d.cts +1 -1
  34. package/components/asset/index.d.ts +1 -1
  35. package/components/asset/index.js +2 -2
  36. package/components/player/player.cjs +1 -1
  37. package/components/player/player.d.cts +1 -1
  38. package/components/player/player.d.ts +1 -1
  39. package/components/player/player.js +1 -1
  40. package/components/player/player.styles.cjs +1 -1
  41. package/components/player/player.styles.d.cts +1 -1
  42. package/components/player/player.styles.d.ts +1 -1
  43. package/components/player/player.styles.js +1 -1
  44. package/components/side-bar/index.cjs +1 -1
  45. package/components/side-bar/index.d.cts +1 -1
  46. package/components/side-bar/index.d.ts +1 -1
  47. package/components/side-bar/index.js +1 -1
  48. package/components/side-bar/side-bar.cjs +1 -1
  49. package/components/side-bar/side-bar.d.cts +1 -1
  50. package/components/side-bar/side-bar.d.ts +1 -1
  51. package/components/side-bar/side-bar.js +1 -1
  52. package/components/side-bar/side-bar.styles.cjs +1 -1
  53. package/components/side-bar/side-bar.styles.d.cts +1 -1
  54. package/components/side-bar/side-bar.styles.d.ts +1 -1
  55. package/components/side-bar/side-bar.styles.js +1 -1
  56. package/components/side-bar/side-bar.types.cjs +1 -1
  57. package/components/side-bar/side-bar.types.d.cts +1 -1
  58. package/components/side-bar/side-bar.types.d.ts +1 -1
  59. package/components/side-bar/side-bar.types.js +1 -1
  60. package/components/upload/index.cjs +1 -1
  61. package/components/upload/index.d.cts +1 -1
  62. package/components/upload/index.d.ts +1 -1
  63. package/components/upload/index.js +1 -1
  64. package/components/upload/upload.cjs +1 -1
  65. package/components/upload/upload.d.cts +1 -1
  66. package/components/upload/upload.d.ts +1 -1
  67. package/components/upload/upload.js +1 -1
  68. package/components/upload/upload.styles.cjs +1 -1
  69. package/components/upload/upload.styles.d.cts +1 -1
  70. package/components/upload/upload.styles.d.ts +1 -1
  71. package/components/upload/upload.styles.js +1 -1
  72. package/components/upload/upload.types.cjs +1 -1
  73. package/components/upload/upload.types.d.cts +1 -1
  74. package/components/upload/upload.types.d.ts +1 -1
  75. package/components/upload/upload.types.js +1 -1
  76. package/{cuernavaca.theme-CoN1RWZa.d.cts → cuernavaca.theme-gwX4a0qX.d.cts} +1 -1
  77. package/{cuernavaca.theme-CoN1RWZa.d.ts → cuernavaca.theme-gwX4a0qX.d.ts} +1 -1
  78. package/{cupra-diagonal.theme-dpmVg1PK.d.cts → cupra-diagonal.theme-YeEq5NNx.d.cts} +1 -1
  79. package/{cupra-diagonal.theme-dpmVg1PK.d.ts → cupra-diagonal.theme-YeEq5NNx.d.ts} +1 -1
  80. package/{cupra-events.theme-DNLS7KDk.d.cts → cupra-events.theme-CZsQUILE.d.cts} +1 -1
  81. package/{cupra-events.theme-DNLS7KDk.d.ts → cupra-events.theme-CZsQUILE.d.ts} +1 -1
  82. package/{cupra.theme-B2ynqc3l.d.cts → cupra.theme-Dwf_KC9c.d.cts} +1 -1
  83. package/{cupra.theme-B2ynqc3l.d.ts → cupra.theme-Dwf_KC9c.d.ts} +1 -1
  84. package/dark-DSX5vBCc.d.cts +11 -0
  85. package/dark-DSX5vBCc.d.ts +11 -0
  86. package/{germany.theme-D4y6ZZ9P.d.cts → germany.theme-BZHEis96.d.cts} +1 -1
  87. package/{germany.theme-D4y6ZZ9P.d.ts → germany.theme-BZHEis96.d.ts} +1 -1
  88. package/{hyundai.theme-D20gCVHo.d.cts → hyundai.theme-CZ3-e75P.d.cts} +1 -1
  89. package/{hyundai.theme-D20gCVHo.d.ts → hyundai.theme-CZ3-e75P.d.ts} +1 -1
  90. package/index.cjs +92 -91
  91. package/index.d.cts +27 -5
  92. package/index.d.ts +27 -5
  93. package/index.iife.js +8720 -0
  94. package/index.js +118 -117
  95. package/{italy.theme--pc0L5YH.d.cts → italy.theme-e_NIp9gB.d.cts} +1 -1
  96. package/{italy.theme--pc0L5YH.d.ts → italy.theme-e_NIp9gB.d.ts} +1 -1
  97. package/jac-dark.theme-CID5X7cE.d.cts +11 -0
  98. package/jac-dark.theme-CID5X7cE.d.ts +11 -0
  99. package/jac.theme-C7kaj89z.d.cts +11 -0
  100. package/jac.theme-C7kaj89z.d.ts +11 -0
  101. package/light-DNobHysW.d.cts +11 -0
  102. package/light-DNobHysW.d.ts +11 -0
  103. package/{magimix.theme-DGN2p61n.d.cts → magimix.theme-_PJhrflU.d.cts} +1 -1
  104. package/{magimix.theme-DGN2p61n.d.ts → magimix.theme-_PJhrflU.d.ts} +1 -1
  105. package/{media-I2UT6LCZ.js → media-Z2KW3VEA.js} +2 -2
  106. package/{onlive-ai.theme-Csf9HHTX.d.cts → onlive-ai.theme-DQYkXql5.d.cts} +1 -1
  107. package/{onlive-ai.theme-Csf9HHTX.d.ts → onlive-ai.theme-DQYkXql5.d.ts} +1 -1
  108. package/{onlive.theme-BRD-Zi1_.d.cts → onlive.theme-D_SLBReG.d.cts} +1 -1
  109. package/{onlive.theme-BRD-Zi1_.d.ts → onlive.theme-D_SLBReG.d.ts} +1 -1
  110. package/package.json +8 -8
  111. package/react/components/asset/Asset.cjs +1 -1
  112. package/react/components/asset/Asset.jsx +1 -1
  113. package/react/components/side-bar/SideBar.cjs +1 -1
  114. package/react/components/side-bar/SideBar.jsx +1 -1
  115. package/react/components/upload/Upload.cjs +1 -1
  116. package/react/components/upload/Upload.jsx +1 -1
  117. package/{seat-cupra.theme-Ba-ZrvD5.d.cts → seat-cupra.theme-DaKdJYyc.d.cts} +1 -1
  118. package/{seat-cupra.theme-Ba-ZrvD5.d.ts → seat-cupra.theme-DaKdJYyc.d.ts} +1 -1
  119. package/{seat.theme-kkb_0PwM.d.cts → seat.theme-BkE3lDxJ.d.cts} +1 -1
  120. package/{seat.theme-kkb_0PwM.d.ts → seat.theme-BkE3lDxJ.d.ts} +1 -1
  121. package/services/audio.service.cjs +1 -1
  122. package/services/audio.service.d.cts +1 -1
  123. package/services/audio.service.d.ts +1 -1
  124. package/services/audio.service.js +1 -1
  125. package/services/conversation/conversation.service.cjs +2 -2
  126. package/services/conversation/conversation.service.d.cts +6 -2
  127. package/services/conversation/conversation.service.d.ts +6 -2
  128. package/services/conversation/conversation.service.js +2 -2
  129. package/services/conversation/conversation.types.cjs +2 -2
  130. package/services/conversation/conversation.types.d.cts +21 -3
  131. package/services/conversation/conversation.types.d.ts +21 -3
  132. package/services/conversation/conversation.types.js +2 -2
  133. package/services/conversation/index.cjs +2 -2
  134. package/services/conversation/index.d.cts +1 -1
  135. package/services/conversation/index.d.ts +1 -1
  136. package/services/conversation/index.js +2 -2
  137. package/services/conversation/mock/actor/agent.cjs +1 -1
  138. package/services/conversation/mock/actor/agent.d.cts +1 -1
  139. package/services/conversation/mock/actor/agent.d.ts +1 -1
  140. package/services/conversation/mock/actor/agent.js +1 -1
  141. package/services/conversation/mock/actor/index.cjs +1 -1
  142. package/services/conversation/mock/actor/index.d.cts +1 -1
  143. package/services/conversation/mock/actor/index.d.ts +1 -1
  144. package/services/conversation/mock/actor/index.js +1 -1
  145. package/services/conversation/mock/actor/strategies.cjs +1 -1
  146. package/services/conversation/mock/actor/strategies.d.cts +1 -1
  147. package/services/conversation/mock/actor/strategies.d.ts +1 -1
  148. package/services/conversation/mock/actor/strategies.js +1 -1
  149. package/services/conversation/mock/errors.cjs +1 -1
  150. package/services/conversation/mock/errors.d.cts +1 -1
  151. package/services/conversation/mock/errors.d.ts +1 -1
  152. package/services/conversation/mock/errors.js +1 -1
  153. package/services/conversation/mock/events.cjs +1 -1
  154. package/services/conversation/mock/events.d.cts +1 -1
  155. package/services/conversation/mock/events.d.ts +1 -1
  156. package/services/conversation/mock/events.js +1 -1
  157. package/services/conversation/mock/factory.cjs +2 -2
  158. package/services/conversation/mock/factory.d.cts +1 -1
  159. package/services/conversation/mock/factory.d.ts +1 -1
  160. package/services/conversation/mock/factory.js +2 -2
  161. package/services/conversation/mock/fixtures.cjs +1 -1
  162. package/services/conversation/mock/fixtures.d.cts +1 -1
  163. package/services/conversation/mock/fixtures.d.ts +1 -1
  164. package/services/conversation/mock/fixtures.js +1 -1
  165. package/services/conversation/mock/generators.cjs +1 -1
  166. package/services/conversation/mock/generators.d.cts +1 -1
  167. package/services/conversation/mock/generators.d.ts +1 -1
  168. package/services/conversation/mock/generators.js +1 -1
  169. package/services/conversation/mock/index.cjs +2 -2
  170. package/services/conversation/mock/index.d.cts +1 -1
  171. package/services/conversation/mock/index.d.ts +1 -1
  172. package/services/conversation/mock/index.js +2 -2
  173. package/services/conversation/mock/livekit/index.cjs +1 -1
  174. package/services/conversation/mock/livekit/index.d.cts +1 -1
  175. package/services/conversation/mock/livekit/index.d.ts +1 -1
  176. package/services/conversation/mock/livekit/index.js +1 -1
  177. package/services/conversation/mock/livekit/local-participant.cjs +1 -1
  178. package/services/conversation/mock/livekit/local-participant.d.cts +1 -1
  179. package/services/conversation/mock/livekit/local-participant.d.ts +1 -1
  180. package/services/conversation/mock/livekit/local-participant.js +1 -1
  181. package/services/conversation/mock/livekit/participant.cjs +1 -1
  182. package/services/conversation/mock/livekit/participant.d.cts +1 -1
  183. package/services/conversation/mock/livekit/participant.d.ts +1 -1
  184. package/services/conversation/mock/livekit/participant.js +1 -1
  185. package/services/conversation/mock/livekit/room.cjs +1 -1
  186. package/services/conversation/mock/livekit/room.d.cts +1 -1
  187. package/services/conversation/mock/livekit/room.d.ts +1 -1
  188. package/services/conversation/mock/livekit/room.js +1 -1
  189. package/services/conversation/mock/livekit/streams.cjs +1 -1
  190. package/services/conversation/mock/livekit/streams.d.cts +1 -1
  191. package/services/conversation/mock/livekit/streams.d.ts +1 -1
  192. package/services/conversation/mock/livekit/streams.js +1 -1
  193. package/services/conversation/mock/livekit/tracks.cjs +1 -1
  194. package/services/conversation/mock/livekit/tracks.d.cts +1 -1
  195. package/services/conversation/mock/livekit/tracks.d.ts +1 -1
  196. package/services/conversation/mock/livekit/tracks.js +1 -1
  197. package/services/conversation/mock/media.cjs +1 -1
  198. package/services/conversation/mock/media.d.cts +1 -1
  199. package/services/conversation/mock/media.d.ts +1 -1
  200. package/services/conversation/mock/media.js +1 -1
  201. package/services/conversation/mock/service.cjs +1 -1
  202. package/services/conversation/mock/service.d.cts +1 -1
  203. package/services/conversation/mock/service.d.ts +1 -1
  204. package/services/conversation/mock/service.js +1 -1
  205. package/services/conversation/mock/service.test.cjs +2 -2
  206. package/services/conversation/mock/service.test.d.cts +1 -1
  207. package/services/conversation/mock/service.test.d.ts +1 -1
  208. package/services/conversation/mock/service.test.js +2 -2
  209. package/services/conversation/mock/state.cjs +1 -1
  210. package/services/conversation/mock/state.d.cts +1 -1
  211. package/services/conversation/mock/state.d.ts +1 -1
  212. package/services/conversation/mock/state.js +1 -1
  213. package/services/conversation/mock/storybook.cjs +2 -2
  214. package/services/conversation/mock/storybook.d.cts +1 -1
  215. package/services/conversation/mock/storybook.d.ts +1 -1
  216. package/services/conversation/mock/storybook.js +2 -2
  217. package/services/conversation/mock/types.cjs +1 -1
  218. package/services/conversation/mock/types.d.cts +1 -1
  219. package/services/conversation/mock/types.d.ts +1 -1
  220. package/services/conversation/mock/types.js +1 -1
  221. package/services/deep-link.service.cjs +1 -1
  222. package/services/deep-link.service.d.cts +1 -1
  223. package/services/deep-link.service.d.ts +1 -1
  224. package/services/deep-link.service.js +1 -1
  225. package/services/faqs/faqs.service.cjs +1 -1
  226. package/services/faqs/faqs.service.d.cts +1 -1
  227. package/services/faqs/faqs.service.d.ts +1 -1
  228. package/services/faqs/faqs.service.js +1 -1
  229. package/services/faqs/faqs.types.cjs +1 -1
  230. package/services/faqs/faqs.types.d.cts +1 -1
  231. package/services/faqs/faqs.types.d.ts +1 -1
  232. package/services/faqs/faqs.types.js +1 -1
  233. package/services/faqs/index.cjs +1 -1
  234. package/services/faqs/index.d.cts +1 -1
  235. package/services/faqs/index.d.ts +1 -1
  236. package/services/faqs/index.js +1 -1
  237. package/services/file/file.service.cjs +1 -1
  238. package/services/file/file.service.d.cts +1 -1
  239. package/services/file/file.service.d.ts +1 -1
  240. package/services/file/file.service.js +1 -1
  241. package/services/file/file.types.cjs +1 -1
  242. package/services/file/file.types.d.cts +1 -1
  243. package/services/file/file.types.d.ts +1 -1
  244. package/services/file/file.types.js +1 -1
  245. package/services/file/index.cjs +1 -1
  246. package/services/file/index.d.cts +1 -1
  247. package/services/file/index.d.ts +1 -1
  248. package/services/file/index.js +1 -1
  249. package/services/firebase/firebase-api.cjs +1 -1
  250. package/services/firebase/firebase-api.d.cts +1 -1
  251. package/services/firebase/firebase-api.d.ts +1 -1
  252. package/services/firebase/firebase-api.js +1 -1
  253. package/services/multimedia/config.example.cjs +1 -1
  254. package/services/multimedia/config.example.d.cts +1 -1
  255. package/services/multimedia/config.example.d.ts +1 -1
  256. package/services/multimedia/config.example.js +1 -1
  257. package/services/multimedia/index.cjs +1 -1
  258. package/services/multimedia/index.d.cts +1 -1
  259. package/services/multimedia/index.d.ts +1 -1
  260. package/services/multimedia/index.js +1 -1
  261. package/services/multimedia/multimedia.service.cjs +1 -1
  262. package/services/multimedia/multimedia.service.d.cts +1 -1
  263. package/services/multimedia/multimedia.service.d.ts +1 -1
  264. package/services/multimedia/multimedia.service.js +1 -1
  265. package/services/multimedia/multimedia.types.cjs +1 -1
  266. package/services/multimedia/multimedia.types.d.cts +1 -1
  267. package/services/multimedia/multimedia.types.d.ts +1 -1
  268. package/services/multimedia/multimedia.types.js +1 -1
  269. package/services/product/index.cjs +1 -1
  270. package/services/product/index.d.cts +1 -1
  271. package/services/product/index.d.ts +1 -1
  272. package/services/product/index.js +1 -1
  273. package/services/product/product.service.cjs +1 -1
  274. package/services/product/product.service.d.cts +1 -1
  275. package/services/product/product.service.d.ts +1 -1
  276. package/services/product/product.service.js +1 -1
  277. package/services/product/product.types.cjs +1 -1
  278. package/services/product/product.types.d.cts +1 -1
  279. package/services/product/product.types.d.ts +1 -1
  280. package/services/product/product.types.js +1 -1
  281. package/services/request.provider.cjs +1 -1
  282. package/services/request.provider.d.cts +1 -1
  283. package/services/request.provider.d.ts +1 -1
  284. package/services/request.provider.js +1 -1
  285. package/services/session.service.cjs +1 -1
  286. package/services/session.service.d.cts +1 -1
  287. package/services/session.service.d.ts +1 -1
  288. package/services/session.service.js +1 -1
  289. package/services/sessions-api.service.cjs +2 -0
  290. package/services/sessions-api.service.d.cts +23 -0
  291. package/services/sessions-api.service.d.ts +23 -0
  292. package/services/sessions-api.service.js +2 -0
  293. package/services/sessions.controller.cjs +2 -0
  294. package/services/sessions.controller.d.cts +45 -0
  295. package/services/sessions.controller.d.ts +45 -0
  296. package/services/sessions.controller.js +2 -0
  297. package/services/sessions.types.cjs +2 -0
  298. package/services/sessions.types.d.cts +114 -0
  299. package/services/sessions.types.d.ts +114 -0
  300. package/services/sessions.types.js +1 -0
  301. package/services/upload/index.cjs +1 -1
  302. package/services/upload/index.d.cts +1 -1
  303. package/services/upload/index.d.ts +1 -1
  304. package/services/upload/index.js +1 -1
  305. package/services/upload/upload.service.cjs +1 -1
  306. package/services/upload/upload.service.d.cts +1 -1
  307. package/services/upload/upload.service.d.ts +1 -1
  308. package/services/upload/upload.service.js +1 -1
  309. package/skoda.theme-BhoWwnaO.d.cts +11 -0
  310. package/skoda.theme-BhoWwnaO.d.ts +11 -0
  311. package/themes/custom/audi-dark.theme.cjs +111 -4
  312. package/themes/custom/audi-dark.theme.css +110 -3
  313. package/themes/custom/audi-dark.theme.d.cts +2 -2
  314. package/themes/custom/audi-dark.theme.d.ts +2 -2
  315. package/themes/custom/audi-dark.theme.js +111 -4
  316. package/themes/custom/audi.theme.cjs +80 -4
  317. package/themes/custom/audi.theme.css +79 -3
  318. package/themes/custom/audi.theme.d.cts +2 -2
  319. package/themes/custom/audi.theme.d.ts +2 -2
  320. package/themes/custom/audi.theme.js +80 -4
  321. package/themes/custom/australia.theme.cjs +73 -1
  322. package/themes/custom/australia.theme.css +72 -0
  323. package/themes/custom/australia.theme.d.cts +2 -2
  324. package/themes/custom/australia.theme.d.ts +2 -2
  325. package/themes/custom/australia.theme.js +73 -1
  326. package/themes/custom/cuernavaca.theme.cjs +1 -1
  327. package/themes/custom/cuernavaca.theme.d.cts +2 -2
  328. package/themes/custom/cuernavaca.theme.d.ts +2 -2
  329. package/themes/custom/cuernavaca.theme.js +1 -1
  330. package/themes/custom/cupra-diagonal.theme.cjs +256 -29
  331. package/themes/custom/cupra-diagonal.theme.css +254 -27
  332. package/themes/custom/cupra-diagonal.theme.d.cts +2 -2
  333. package/themes/custom/cupra-diagonal.theme.d.ts +2 -2
  334. package/themes/custom/cupra-diagonal.theme.js +255 -28
  335. package/themes/custom/cupra-events.theme.cjs +1 -1
  336. package/themes/custom/cupra-events.theme.d.cts +2 -2
  337. package/themes/custom/cupra-events.theme.d.ts +2 -2
  338. package/themes/custom/cupra-events.theme.js +1 -1
  339. package/themes/custom/cupra.theme.cjs +771 -78
  340. package/themes/custom/cupra.theme.css +769 -76
  341. package/themes/custom/cupra.theme.d.cts +2 -2
  342. package/themes/custom/cupra.theme.d.ts +2 -2
  343. package/themes/custom/cupra.theme.js +774 -81
  344. package/themes/custom/germany.theme.cjs +114 -2
  345. package/themes/custom/germany.theme.css +112 -0
  346. package/themes/custom/germany.theme.d.cts +2 -2
  347. package/themes/custom/germany.theme.d.ts +2 -2
  348. package/themes/custom/germany.theme.js +113 -1
  349. package/themes/custom/glass.theme.cjs +25 -15
  350. package/themes/custom/glass.theme.css +24 -14
  351. package/themes/custom/glass.theme.d.cts +1 -1
  352. package/themes/custom/glass.theme.d.ts +1 -1
  353. package/themes/custom/glass.theme.js +25 -15
  354. package/themes/custom/hyundai.theme.cjs +1 -1
  355. package/themes/custom/hyundai.theme.d.cts +2 -2
  356. package/themes/custom/hyundai.theme.d.ts +2 -2
  357. package/themes/custom/hyundai.theme.js +1 -1
  358. package/themes/custom/italy.theme.cjs +140 -2
  359. package/themes/custom/italy.theme.css +139 -1
  360. package/themes/custom/italy.theme.d.cts +2 -2
  361. package/themes/custom/italy.theme.d.ts +2 -2
  362. package/themes/custom/italy.theme.js +140 -2
  363. package/themes/custom/jac-dark.theme.cjs +210 -0
  364. package/themes/custom/jac-dark.theme.css +207 -0
  365. package/themes/custom/jac-dark.theme.d.cts +3 -0
  366. package/themes/custom/jac-dark.theme.d.ts +3 -0
  367. package/themes/custom/jac-dark.theme.js +210 -0
  368. package/themes/custom/jac.theme.cjs +366 -0
  369. package/themes/custom/jac.theme.css +363 -0
  370. package/themes/custom/jac.theme.d.cts +3 -0
  371. package/themes/custom/jac.theme.d.ts +3 -0
  372. package/themes/custom/jac.theme.js +366 -0
  373. package/themes/custom/magimix.theme.cjs +178 -7
  374. package/themes/custom/magimix.theme.css +177 -6
  375. package/themes/custom/magimix.theme.d.cts +2 -2
  376. package/themes/custom/magimix.theme.d.ts +2 -2
  377. package/themes/custom/magimix.theme.js +177 -6
  378. package/themes/custom/onlive-ai.theme.cjs +1 -1
  379. package/themes/custom/onlive-ai.theme.d.cts +2 -2
  380. package/themes/custom/onlive-ai.theme.d.ts +2 -2
  381. package/themes/custom/onlive-ai.theme.js +1 -1
  382. package/themes/custom/onlive.theme.cjs +1 -1
  383. package/themes/custom/onlive.theme.d.cts +2 -2
  384. package/themes/custom/onlive.theme.d.ts +2 -2
  385. package/themes/custom/onlive.theme.js +1 -1
  386. package/themes/custom/seat-cupra.theme.cjs +1 -1
  387. package/themes/custom/seat-cupra.theme.d.cts +2 -2
  388. package/themes/custom/seat-cupra.theme.d.ts +2 -2
  389. package/themes/custom/seat-cupra.theme.js +1 -1
  390. package/themes/custom/seat.theme.cjs +209 -12
  391. package/themes/custom/seat.theme.css +207 -10
  392. package/themes/custom/seat.theme.d.cts +2 -2
  393. package/themes/custom/seat.theme.d.ts +2 -2
  394. package/themes/custom/seat.theme.js +208 -11
  395. package/themes/custom/skoda.theme.cjs +529 -0
  396. package/themes/custom/skoda.theme.css +526 -0
  397. package/themes/custom/skoda.theme.d.cts +3 -0
  398. package/themes/custom/skoda.theme.d.ts +3 -0
  399. package/themes/custom/skoda.theme.js +529 -0
  400. package/themes/custom/transparency.theme.cjs +42 -5
  401. package/themes/custom/transparency.theme.css +40 -3
  402. package/themes/custom/transparency.theme.d.cts +2 -2
  403. package/themes/custom/transparency.theme.d.ts +2 -2
  404. package/themes/custom/transparency.theme.js +41 -4
  405. package/themes/dark.cjs +1 -1
  406. package/themes/dark.d.cts +3 -6
  407. package/themes/dark.d.ts +3 -6
  408. package/themes/dark.js +1 -1
  409. package/themes/light.cjs +1 -1
  410. package/themes/light.d.cts +3 -6
  411. package/themes/light.d.ts +3 -6
  412. package/themes/light.js +1 -1
  413. package/{transparency.theme-CJ3Sg9kh.d.cts → transparency.theme-CbIjRfrj.d.cts} +1 -1
  414. package/{transparency.theme-CJ3Sg9kh.d.ts → transparency.theme-CbIjRfrj.d.ts} +1 -1
  415. package/types/deep-link.types.cjs +1 -1
  416. package/types/deep-link.types.d.cts +1 -1
  417. package/types/deep-link.types.d.ts +1 -1
  418. package/types/deep-link.types.js +1 -1
  419. package/types/globals.cjs +1 -1
  420. package/types/globals.d.cts +1 -1
  421. package/types/globals.d.ts +1 -1
  422. package/types/globals.js +1 -1
  423. package/types/tracking-options.cjs +1 -1
  424. package/types/tracking-options.d.cts +1 -1
  425. package/types/tracking-options.d.ts +1 -1
  426. package/types/tracking-options.js +1 -1
  427. package/utils/adopt-styles.cjs +1 -1
  428. package/utils/adopt-styles.d.cts +1 -1
  429. package/utils/adopt-styles.d.ts +1 -1
  430. package/utils/adopt-styles.js +1 -1
  431. package/utils/apply-optional-styles.cjs +8745 -4991
  432. package/utils/apply-optional-styles.d.cts +42 -23
  433. package/utils/apply-optional-styles.d.ts +42 -23
  434. package/utils/apply-optional-styles.js +8745 -4991
  435. package/utils/browser-preferences.cjs +2 -2
  436. package/utils/browser-preferences.d.cts +1 -1
  437. package/utils/browser-preferences.d.ts +1 -1
  438. package/utils/browser-preferences.js +2 -2
  439. package/utils/classify-media.cjs +1 -1
  440. package/utils/classify-media.d.cts +1 -1
  441. package/utils/classify-media.d.ts +1 -1
  442. package/utils/classify-media.js +1 -1
  443. package/utils/decorators.cjs +1 -1
  444. package/utils/decorators.d.cts +1 -1
  445. package/utils/decorators.d.ts +1 -1
  446. package/utils/decorators.js +1 -1
  447. package/utils/detected-lang.cjs +1 -1
  448. package/utils/detected-lang.d.cts +1 -1
  449. package/utils/detected-lang.d.ts +1 -1
  450. package/utils/detected-lang.js +1 -1
  451. package/utils/fullscreen.cjs +1 -1
  452. package/utils/fullscreen.d.cts +1 -1
  453. package/utils/fullscreen.d.ts +1 -1
  454. package/utils/fullscreen.js +1 -1
  455. package/utils/insert-script.cjs +1 -1
  456. package/utils/insert-script.d.cts +1 -1
  457. package/utils/insert-script.d.ts +1 -1
  458. package/utils/insert-script.js +1 -1
  459. package/utils/is-map-compatible.cjs +1 -1
  460. package/utils/is-map-compatible.d.cts +1 -1
  461. package/utils/is-map-compatible.d.ts +1 -1
  462. package/utils/is-map-compatible.js +1 -1
  463. package/utils/markdown.cjs +1 -1
  464. package/utils/markdown.d.cts +1 -1
  465. package/utils/markdown.d.ts +1 -1
  466. package/utils/markdown.js +1 -1
  467. package/utils/merge.cjs +1 -1
  468. package/utils/merge.d.cts +1 -1
  469. package/utils/merge.d.ts +1 -1
  470. package/utils/merge.js +1 -1
  471. package/utils/multiband-track-volume.cjs +1 -1
  472. package/utils/multiband-track-volume.d.cts +1 -1
  473. package/utils/multiband-track-volume.d.ts +1 -1
  474. package/utils/multiband-track-volume.js +1 -1
  475. package/utils/onlive-url-params.cjs +1 -1
  476. package/utils/onlive-url-params.d.cts +1 -1
  477. package/utils/onlive-url-params.d.ts +1 -1
  478. package/utils/onlive-url-params.js +1 -1
  479. package/utils/pretty-distance.cjs +1 -1
  480. package/utils/pretty-distance.d.cts +1 -1
  481. package/utils/pretty-distance.d.ts +1 -1
  482. package/utils/pretty-distance.js +1 -1
  483. package/utils/pretty-time.cjs +1 -1
  484. package/utils/pretty-time.d.cts +1 -1
  485. package/utils/pretty-time.d.ts +1 -1
  486. package/utils/pretty-time.js +1 -1
  487. package/utils/random-string.cjs +1 -1
  488. package/utils/random-string.d.cts +1 -1
  489. package/utils/random-string.d.ts +1 -1
  490. package/utils/random-string.js +1 -1
  491. package/utils/resource-type.cjs +1 -1
  492. package/utils/resource-type.d.cts +1 -1
  493. package/utils/resource-type.d.ts +1 -1
  494. package/utils/resource-type.js +1 -1
  495. package/utils/round-number.cjs +1 -1
  496. package/utils/round-number.d.cts +1 -1
  497. package/utils/round-number.d.ts +1 -1
  498. package/utils/round-number.js +1 -1
  499. package/utils/safe-html.cjs +2 -2
  500. package/utils/safe-html.d.cts +1 -1
  501. package/utils/safe-html.d.ts +1 -1
  502. package/utils/safe-html.js +2 -2
  503. package/utils/sanitize.cjs +1 -1
  504. package/utils/sanitize.d.cts +1 -1
  505. package/utils/sanitize.d.ts +1 -1
  506. package/utils/sanitize.js +1 -1
  507. package/utils/spread.cjs +1 -1
  508. package/utils/spread.d.cts +1 -1
  509. package/utils/spread.d.ts +1 -1
  510. package/utils/spread.js +1 -1
  511. package/utils/watch.cjs +1 -1
  512. package/utils/watch.d.cts +1 -1
  513. package/utils/watch.d.ts +1 -1
  514. package/utils/watch.js +1 -1
@@ -1,4 +1,4 @@
1
- /*! @onlive.ai/common-121 v0.2.199 | © 2026 Onlive.ai */
1
+ /*! @onlive.ai/common-121 v0.2.228 | © 2026 Onlive.ai */
2
2
  import * as lit from 'lit';
3
3
 
4
4
  declare const styles: lit.CSSResult;
@@ -1,4 +1,4 @@
1
- /*! @onlive.ai/common-121 v0.2.199 | © 2026 Onlive.ai */
1
+ /*! @onlive.ai/common-121 v0.2.228 | © 2026 Onlive.ai */
2
2
  import * as lit from 'lit';
3
3
 
4
4
  declare const styles: lit.CSSResult;
@@ -0,0 +1,11 @@
1
+ /*! @onlive.ai/common-121 v0.2.228 | © 2026 Onlive.ai */
2
+ import * as lit from 'lit';
3
+
4
+ declare const styles: lit.CSSResult;
5
+
6
+ declare const _onlive_ai_common_121_themes_custom_jac_dark_theme_js_styles: typeof styles;
7
+ declare namespace _onlive_ai_common_121_themes_custom_jac_dark_theme_js {
8
+ export { _onlive_ai_common_121_themes_custom_jac_dark_theme_js_styles as styles };
9
+ }
10
+
11
+ export { _onlive_ai_common_121_themes_custom_jac_dark_theme_js as _, styles as s };
@@ -0,0 +1,11 @@
1
+ /*! @onlive.ai/common-121 v0.2.228 | © 2026 Onlive.ai */
2
+ import * as lit from 'lit';
3
+
4
+ declare const styles: lit.CSSResult;
5
+
6
+ declare const _onlive_ai_common_121_themes_custom_jac_dark_theme_js_styles: typeof styles;
7
+ declare namespace _onlive_ai_common_121_themes_custom_jac_dark_theme_js {
8
+ export { _onlive_ai_common_121_themes_custom_jac_dark_theme_js_styles as styles };
9
+ }
10
+
11
+ export { _onlive_ai_common_121_themes_custom_jac_dark_theme_js as _, styles as s };
@@ -0,0 +1,11 @@
1
+ /*! @onlive.ai/common-121 v0.2.228 | © 2026 Onlive.ai */
2
+ import * as lit from 'lit';
3
+
4
+ declare const styles: lit.CSSResult;
5
+
6
+ declare const _onlive_ai_common_121_themes_custom_jac_theme_js_styles: typeof styles;
7
+ declare namespace _onlive_ai_common_121_themes_custom_jac_theme_js {
8
+ export { _onlive_ai_common_121_themes_custom_jac_theme_js_styles as styles };
9
+ }
10
+
11
+ export { _onlive_ai_common_121_themes_custom_jac_theme_js as _, styles as s };
@@ -0,0 +1,11 @@
1
+ /*! @onlive.ai/common-121 v0.2.228 | © 2026 Onlive.ai */
2
+ import * as lit from 'lit';
3
+
4
+ declare const styles: lit.CSSResult;
5
+
6
+ declare const _onlive_ai_common_121_themes_custom_jac_theme_js_styles: typeof styles;
7
+ declare namespace _onlive_ai_common_121_themes_custom_jac_theme_js {
8
+ export { _onlive_ai_common_121_themes_custom_jac_theme_js_styles as styles };
9
+ }
10
+
11
+ export { _onlive_ai_common_121_themes_custom_jac_theme_js as _, styles as s };
@@ -0,0 +1,11 @@
1
+ /*! @onlive.ai/common-121 v0.2.228 | © 2026 Onlive.ai */
2
+ import * as lit from 'lit';
3
+
4
+ declare const styles: lit.CSSResult;
5
+
6
+ declare const _onlive_ai_common_121_themes_light_js_styles: typeof styles;
7
+ declare namespace _onlive_ai_common_121_themes_light_js {
8
+ export { _onlive_ai_common_121_themes_light_js_styles as styles };
9
+ }
10
+
11
+ export { _onlive_ai_common_121_themes_light_js as _, styles as s };
@@ -0,0 +1,11 @@
1
+ /*! @onlive.ai/common-121 v0.2.228 | © 2026 Onlive.ai */
2
+ import * as lit from 'lit';
3
+
4
+ declare const styles: lit.CSSResult;
5
+
6
+ declare const _onlive_ai_common_121_themes_light_js_styles: typeof styles;
7
+ declare namespace _onlive_ai_common_121_themes_light_js {
8
+ export { _onlive_ai_common_121_themes_light_js_styles as styles };
9
+ }
10
+
11
+ export { _onlive_ai_common_121_themes_light_js as _, styles as s };
@@ -1,4 +1,4 @@
1
- /*! @onlive.ai/common-121 v0.2.199 | © 2026 Onlive.ai */
1
+ /*! @onlive.ai/common-121 v0.2.228 | © 2026 Onlive.ai */
2
2
  import * as lit from 'lit';
3
3
 
4
4
  declare const styles: lit.CSSResult;
@@ -1,4 +1,4 @@
1
- /*! @onlive.ai/common-121 v0.2.199 | © 2026 Onlive.ai */
1
+ /*! @onlive.ai/common-121 v0.2.228 | © 2026 Onlive.ai */
2
2
  import * as lit from 'lit';
3
3
 
4
4
  declare const styles: lit.CSSResult;
@@ -1,2 +1,2 @@
1
- /*! @onlive.ai/common-121 v0.2.199 | © 2026 Onlive.ai */
2
- import{b as a,c as b,d as c,e as d,f as e}from"./chunk-H2PJ6KN6.js";export{d as SYNTHETIC_MEDIA_PRESETS,b as createSyntheticAudioTrack,c as createSyntheticMedia,e as createSyntheticMediaFromPreset,a as createSyntheticVideoTrack};
1
+ /*! @onlive.ai/common-121 v0.2.228 | © 2026 Onlive.ai */
2
+ import{b as a,c as b,d as c,e as d,f as e}from"./chunk-JB6NDWSG.js";export{d as SYNTHETIC_MEDIA_PRESETS,b as createSyntheticAudioTrack,c as createSyntheticMedia,e as createSyntheticMediaFromPreset,a as createSyntheticVideoTrack};
@@ -1,4 +1,4 @@
1
- /*! @onlive.ai/common-121 v0.2.199 | © 2026 Onlive.ai */
1
+ /*! @onlive.ai/common-121 v0.2.228 | © 2026 Onlive.ai */
2
2
  import * as lit from 'lit';
3
3
 
4
4
  declare const styles: lit.CSSResult;
@@ -1,4 +1,4 @@
1
- /*! @onlive.ai/common-121 v0.2.199 | © 2026 Onlive.ai */
1
+ /*! @onlive.ai/common-121 v0.2.228 | © 2026 Onlive.ai */
2
2
  import * as lit from 'lit';
3
3
 
4
4
  declare const styles: lit.CSSResult;
@@ -1,4 +1,4 @@
1
- /*! @onlive.ai/common-121 v0.2.199 | © 2026 Onlive.ai */
1
+ /*! @onlive.ai/common-121 v0.2.228 | © 2026 Onlive.ai */
2
2
  import * as lit from 'lit';
3
3
 
4
4
  declare const styles: lit.CSSResult;
@@ -1,4 +1,4 @@
1
- /*! @onlive.ai/common-121 v0.2.199 | © 2026 Onlive.ai */
1
+ /*! @onlive.ai/common-121 v0.2.228 | © 2026 Onlive.ai */
2
2
  import * as lit from 'lit';
3
3
 
4
4
  declare const styles: lit.CSSResult;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@onlive.ai/common-121",
3
- "version": "0.2.199",
3
+ "version": "0.2.228",
4
4
  "type": "module",
5
5
  "files": [
6
6
  "**/*.js",
@@ -33,24 +33,24 @@
33
33
  "@formatjs/intl-localematcher": "^0.5.10",
34
34
  "@lit/react": "^1.0.8",
35
35
  "@livekit/components-core": "^0.12.13",
36
- "@onlive.ai/tracker": "^1.1.1",
37
- "@onlive.ai/ui": "^1.9.14",
38
- "@types/node": "^22.19.17",
36
+ "@onlive.ai/tracker": "^1.1.6",
37
+ "@onlive.ai/ui": "^1.9.21",
38
+ "@types/node": "^22.19.18",
39
39
  "@vitest/coverage-v8": "^2.1.9",
40
- "dompurify": "^3.4.0",
40
+ "dompurify": "^3.4.2",
41
41
  "firebase": "^11.10.0",
42
42
  "lit": "^3.3.2",
43
- "livekit-client": "^2.18.3",
43
+ "livekit-client": "^2.18.9",
44
44
  "marked": "^15.0.12",
45
45
  "rxjs": "^7.8.2",
46
46
  "tsup": "^8.5.1",
47
47
  "typescript": "~5.7.3",
48
48
  "video.js": "^8.23.7",
49
- "vitest": "^3.2.4"
49
+ "vitest": "^3.2.6"
50
50
  },
51
51
  "devDependencies": {
52
52
  "@types/react": "^19.2.14",
53
- "react": "^19.2.5"
53
+ "react": "^19.2.6"
54
54
  },
55
55
  "peerDependencies": {
56
56
  "react": "^19.1.1"
@@ -1,2 +1,2 @@
1
- /*! @onlive.ai/common-121 v0.2.199 | © 2026 Onlive.ai */
1
+ /*! @onlive.ai/common-121 v0.2.228 | © 2026 Onlive.ai */
2
2
  "use strict";var E=Object.create;var a=Object.defineProperty;var i=Object.getOwnPropertyDescriptor;var l=Object.getOwnPropertyNames;var A=Object.getPrototypeOf,C=Object.prototype.hasOwnProperty;var N=(t,e)=>{for(var s in e)a(t,s,{get:e[s],enumerable:!0})},m=(t,e,s,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of l(e))!C.call(t,o)&&o!==s&&a(t,o,{get:()=>e[o],enumerable:!(n=i(e,o))||n.enumerable});return t};var d=(t,e,s)=>(s=t!=null?E(A(t)):{},m(e||!t||!t.__esModule?a(s,"default",{value:t,enumerable:!0}):s,t)),f=t=>m(a({},"__esModule",{value:!0}),t);var I={};N(I,{Asset:()=>v,default:()=>u});module.exports=f(I);var r=require("@lit/react"),c=d(require("react"),1),p=require("../../../components/asset/asset.js"),v=(0,r.createComponent)({tagName:"osb-asset",elementClass:p.OSBAsset,react:c.default,events:{onAssetClick:"asset-click",onAssetDownload:"asset-download",onAssetLoad:"asset-load",onAssetError:"asset-error",onContentClick:"content-click"}}),u=v;0&&(module.exports={Asset});
@@ -1,2 +1,2 @@
1
- /*! @onlive.ai/common-121 v0.2.199 | © 2026 Onlive.ai */
1
+ /*! @onlive.ai/common-121 v0.2.228 | © 2026 Onlive.ai */
2
2
  import{createComponent as t}from"@lit/react";import e from"react";import{OSBAsset as s}from"../../../components/asset/asset.js";var o=t({tagName:"osb-asset",elementClass:s,react:e,events:{onAssetClick:"asset-click",onAssetDownload:"asset-download",onAssetLoad:"asset-load",onAssetError:"asset-error",onContentClick:"content-click"}}),r=o;export{o as Asset,r as default};
@@ -1,2 +1,2 @@
1
- /*! @onlive.ai/common-121 v0.2.199 | © 2026 Onlive.ai */
1
+ /*! @onlive.ai/common-121 v0.2.228 | © 2026 Onlive.ai */
2
2
  "use strict";var d=Object.create;var n=Object.defineProperty;var v=Object.getOwnPropertyDescriptor;var E=Object.getOwnPropertyNames;var l=Object.getPrototypeOf,p=Object.prototype.hasOwnProperty;var u=(e,t)=>{for(var a in t)n(e,a,{get:t[a],enumerable:!0})},m=(e,t,a,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of E(t))!p.call(e,o)&&o!==a&&n(e,o,{get:()=>t[o],enumerable:!(r=v(t,o))||r.enumerable});return e};var y=(e,t,a)=>(a=e!=null?d(l(e)):{},m(t||!e||!e.__esModule?n(a,"default",{value:e,enumerable:!0}):a,e)),C=e=>m(n({},"__esModule",{value:!0}),e);var f={};u(f,{SideBar:()=>c,default:()=>N});module.exports=C(f);var s=require("@lit/react"),i=y(require("react"),1),g=require("../../../components/side-bar/side-bar.js"),c=(0,s.createComponent)({tagName:"osb-side-bar",elementClass:g.OSBSideBar,react:i.default,events:{onSearch:"search",onLoadMore:"load-more",onItemAdd:"item-add",onCategoryChange:"category-change",onItemSelect:"item-select",onFileUpload:"file-uploaded"}}),N=c;0&&(module.exports={SideBar});
@@ -1,2 +1,2 @@
1
- /*! @onlive.ai/common-121 v0.2.199 | © 2026 Onlive.ai */
1
+ /*! @onlive.ai/common-121 v0.2.228 | © 2026 Onlive.ai */
2
2
  import{createComponent as e}from"@lit/react";import t from"react";import{OSBSideBar as a}from"../../../components/side-bar/side-bar.js";var o=e({tagName:"osb-side-bar",elementClass:a,react:t,events:{onSearch:"search",onLoadMore:"load-more",onItemAdd:"item-add",onCategoryChange:"category-change",onItemSelect:"item-select",onFileUpload:"file-uploaded"}}),s=o;export{o as SideBar,s as default};
@@ -1,2 +1,2 @@
1
- /*! @onlive.ai/common-121 v0.2.199 | © 2026 Onlive.ai */
1
+ /*! @onlive.ai/common-121 v0.2.228 | © 2026 Onlive.ai */
2
2
  "use strict";var i=Object.create;var p=Object.defineProperty;var c=Object.getOwnPropertyDescriptor;var f=Object.getOwnPropertyNames;var u=Object.getPrototypeOf,v=Object.prototype.hasOwnProperty;var y=(e,o)=>{for(var t in o)p(e,t,{get:o[t],enumerable:!0})},l=(e,o,t,a)=>{if(o&&typeof o=="object"||typeof o=="function")for(let r of f(o))!v.call(e,r)&&r!==t&&p(e,r,{get:()=>o[r],enumerable:!(a=c(o,r))||a.enumerable});return e};var E=(e,o,t)=>(t=e!=null?i(u(e)):{},l(o||!e||!e.__esModule?p(t,"default",{value:e,enumerable:!0}):t,e)),U=e=>l(p({},"__esModule",{value:!0}),e);var N={};y(N,{Upload:()=>d,default:()=>C});module.exports=U(N);var m=require("@lit/react"),s=E(require("react"),1),n=require("../../../components/upload/upload.js"),d=(0,m.createComponent)({tagName:"osb-upload",elementClass:n.OSBUpload,react:s.default,events:{onFileSelected:"osb-file-selected",onUploadError:"osb-upload-error"}}),C=d;0&&(module.exports={Upload});
@@ -1,2 +1,2 @@
1
- /*! @onlive.ai/common-121 v0.2.199 | © 2026 Onlive.ai */
1
+ /*! @onlive.ai/common-121 v0.2.228 | © 2026 Onlive.ai */
2
2
  import{createComponent as e}from"@lit/react";import o from"react";import{OSBUpload as t}from"../../../components/upload/upload.js";var r=e({tagName:"osb-upload",elementClass:t,react:o,events:{onFileSelected:"osb-file-selected",onUploadError:"osb-upload-error"}}),m=r;export{r as Upload,m as default};
@@ -1,4 +1,4 @@
1
- /*! @onlive.ai/common-121 v0.2.199 | © 2026 Onlive.ai */
1
+ /*! @onlive.ai/common-121 v0.2.228 | © 2026 Onlive.ai */
2
2
  import * as lit from 'lit';
3
3
 
4
4
  declare const styles: lit.CSSResult;
@@ -1,4 +1,4 @@
1
- /*! @onlive.ai/common-121 v0.2.199 | © 2026 Onlive.ai */
1
+ /*! @onlive.ai/common-121 v0.2.228 | © 2026 Onlive.ai */
2
2
  import * as lit from 'lit';
3
3
 
4
4
  declare const styles: lit.CSSResult;
@@ -1,4 +1,4 @@
1
- /*! @onlive.ai/common-121 v0.2.199 | © 2026 Onlive.ai */
1
+ /*! @onlive.ai/common-121 v0.2.228 | © 2026 Onlive.ai */
2
2
  import * as lit from 'lit';
3
3
 
4
4
  declare const styles: lit.CSSResult;
@@ -1,4 +1,4 @@
1
- /*! @onlive.ai/common-121 v0.2.199 | © 2026 Onlive.ai */
1
+ /*! @onlive.ai/common-121 v0.2.228 | © 2026 Onlive.ai */
2
2
  import * as lit from 'lit';
3
3
 
4
4
  declare const styles: lit.CSSResult;
@@ -1,2 +1,2 @@
1
- /*! @onlive.ai/common-121 v0.2.199 | © 2026 Onlive.ai */
1
+ /*! @onlive.ai/common-121 v0.2.228 | © 2026 Onlive.ai */
2
2
  "use strict";var s=Object.defineProperty;var r=Object.getOwnPropertyDescriptor;var a=Object.getOwnPropertyNames;var c=Object.prototype.hasOwnProperty;var d=(t,n)=>{for(var o in n)s(t,o,{get:n[o],enumerable:!0})},l=(t,n,o,i)=>{if(n&&typeof n=="object"||typeof n=="function")for(let e of a(n))!c.call(t,e)&&e!==o&&s(t,e,{get:()=>n[e],enumerable:!(i=r(n,e))||i.enumerable});return t};var p=t=>l(s({},"__esModule",{value:!0}),t);var g={};d(g,{AudioService:()=>u});module.exports=p(g);var u=class t{constructor(){this.sounds=new Map;this.currentSound=null;this.loadSound("ringing","https://a.slack-edge.com/bv1-13/flitterbug-77334dc.mp3"),this.loadSound("incoming","https://cdn.onlive.site/widget-assets/call_phone_ring_tone.mp3")}static getInstance(){return t.instance||(t.instance=new t),t.instance}loadSound(n,o){let i=new Audio(o);i.preload="auto",this.sounds.set(n,i)}playSound(n,o=!1){this.stopCurrentSound();let i=this.sounds.get(n);i&&(i.loop=o,i.currentTime=0,i.play().catch(e=>console.warn("Error playing sound:",e)),this.currentSound=i)}stopCurrentSound(){this.currentSound&&(this.currentSound.pause(),this.currentSound.currentTime=0,this.currentSound=null)}playRinging(n=!0){this.playSound("ringing",n)}playIncoming(n=!0){this.playSound("incoming",n)}};0&&(module.exports={AudioService});
@@ -1,4 +1,4 @@
1
- /*! @onlive.ai/common-121 v0.2.199 | © 2026 Onlive.ai */
1
+ /*! @onlive.ai/common-121 v0.2.228 | © 2026 Onlive.ai */
2
2
  declare class AudioService {
3
3
  private static instance;
4
4
  private sounds;
@@ -1,4 +1,4 @@
1
- /*! @onlive.ai/common-121 v0.2.199 | © 2026 Onlive.ai */
1
+ /*! @onlive.ai/common-121 v0.2.228 | © 2026 Onlive.ai */
2
2
  declare class AudioService {
3
3
  private static instance;
4
4
  private sounds;
@@ -1,2 +1,2 @@
1
- /*! @onlive.ai/common-121 v0.2.199 | © 2026 Onlive.ai */
1
+ /*! @onlive.ai/common-121 v0.2.228 | © 2026 Onlive.ai */
2
2
  var e=class i{constructor(){this.sounds=new Map;this.currentSound=null;this.loadSound("ringing","https://a.slack-edge.com/bv1-13/flitterbug-77334dc.mp3"),this.loadSound("incoming","https://cdn.onlive.site/widget-assets/call_phone_ring_tone.mp3")}static getInstance(){return i.instance||(i.instance=new i),i.instance}loadSound(t,o){let n=new Audio(o);n.preload="auto",this.sounds.set(t,n)}playSound(t,o=!1){this.stopCurrentSound();let n=this.sounds.get(t);n&&(n.loop=o,n.currentTime=0,n.play().catch(s=>console.warn("Error playing sound:",s)),this.currentSound=n)}stopCurrentSound(){this.currentSound&&(this.currentSound.pause(),this.currentSound.currentTime=0,this.currentSound=null)}playRinging(t=!0){this.playSound("ringing",t)}playIncoming(t=!0){this.playSound("incoming",t)}};export{e as AudioService};
@@ -1,2 +1,2 @@
1
- /*! @onlive.ai/common-121 v0.2.199 | © 2026 Onlive.ai */
2
- "use strict";var b=Object.defineProperty;var k=Object.getOwnPropertyDescriptor;var w=Object.getOwnPropertyNames;var x=Object.prototype.hasOwnProperty;var M=(l,e)=>{for(var t in e)b(l,t,{get:e[t],enumerable:!0})},z=(l,e,t,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of w(e))!x.call(l,s)&&s!==t&&b(l,s,{get:()=>e[s],enumerable:!(i=k(e,s))||i.enumerable});return l};var q=l=>z(b({},"__esModule",{value:!0}),l);var U={};M(U,{ConversationService:()=>f,Room:()=>y});module.exports=q(U);var m=require("@onlive.ai/tracker/session"),p=require("livekit-client");var v=require("firebase/app"),n=require("firebase/database"),u=class{constructor(e){this.onChildChanged=(e,t)=>(0,n.onChildChanged)(this.ref(e),i=>t(i.key||"",i.val(),i));this.onChildRemoved=(e,t)=>(0,n.onChildRemoved)(this.ref(e),i=>t(i.key||"",i.val(),i));this.onChildChangedQuery=(e,t)=>(0,n.onChildChanged)(e,i=>t(i.key||"",i.val(),i));this.onChildRemovedQuery=(e,t)=>(0,n.onChildRemoved)(e,i=>t(i.key||"",i.val(),i));let t=(0,v.initializeApp)(e.config);this.db=(0,n.getDatabase)(t)}ref(e){return(0,n.ref)(this.db,e)}async getOnce(e){let t=await(0,n.get)(this.ref(e));return t.exists()?t.val():null}async getOnceQuery(e){let t=await(0,n.get)(e),i=[];return t.exists()&&t.forEach(s=>{i.push({key:s.key||"",value:s.val()})}),i}onValue(e,t){return(0,n.onValue)(this.ref(e),i=>t(i.key??"",i.val(),i),i=>console.error("onValue error",i))}onValueQuery(e,t){return(0,n.onValue)(e,i=>t(i.key??"",i.val(),i),i=>console.error("onValueQuery error",i))}onChildAdded(e,t){return(0,n.onChildAdded)(this.ref(e),i=>t(i.key||"",i.val(),i),i=>console.error("onChildAdded error",i))}onChildAddedQuery(e,t){return(0,n.onChildAdded)(e,i=>t(i.key||"",i.val(),i),i=>console.error("onChildAddedQuery error",i))}write(e,t){return(0,n.set)(this.ref(e),t)}update(e,t){return(0,n.update)(this.ref(e),t)}remove(e){return(0,n.remove)(this.ref(e))}async push(e,t){let i=(0,n.push)(this.ref(e));return await(0,n.set)(i,t),i.key}onDisconnectUpdate(e,t){return(0,n.onDisconnect)(this.ref(e)).update(t)}cancelOnDisconnect(e){return(0,n.onDisconnect)(this.ref(e)).cancel()}transaction(e,t){return(0,n.runTransaction)(this.ref(e),i=>t(i))}query(e,t={}){let i=this.ref(e);return t.orderBy==="child"&&t.childKey&&(i=(0,n.query)(i,(0,n.orderByChild)(t.childKey))),t.orderBy==="key"&&(i=(0,n.query)(i,(0,n.orderByKey)())),t.orderBy==="value"&&(i=(0,n.query)(i,(0,n.orderByValue)())),t.startAt!=null&&(i=(0,n.query)(i,(0,n.startAt)(t.startAt))),t.endAt!=null&&(i=(0,n.query)(i,(0,n.endAt)(t.endAt))),t.equalTo!=null&&(i=(0,n.query)(i,(0,n.equalTo)(t.equalTo))),t.limitFirst!=null&&(i=(0,n.query)(i,(0,n.limitToFirst)(t.limitFirst))),t.limitLast!=null&&(i=(0,n.query)(i,(0,n.limitToLast)(t.limitLast))),i}};var o=async(l,e)=>{let t=await fetch(l,e);if(!t.ok){let i=await t.json().catch(()=>({}));throw new Error(JSON.stringify({status:t.status,statusText:t.statusText,...i}))}return t&&t.json()};var T=l=>{let e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",t="";for(let i=0;i<l;i++)t+=e.charAt(Math.floor(Math.random()*e.length));return t};var I=require("@onlive.ai/tracker/generator"),c=require("@onlive.ai/tracker/session"),d="chatbot",h=class l{static hasSession(){return!!c.Session.getCookie(d)}static getSession(e={role:"guest",regenerate:!1}){e.regenerate&&(c.Session.id=I.Generator.uuid(),c.Session.deleteCookie(d));let t=c.Session.getCookie(d);return t&&l.isValidSession(t,e.role)?t:l.createSession(e.role)}static createSession(e){let t={externalId:e==="agent"?String(l.getUserId()||c.Session.id):c.Session.id,secret:T(16),createdAt:new Date().toISOString()};return c.Session.setCookie(d,t,3600*24*365),t}static isValidSession(e,t){if(t==="guest")return!0;let i=l.getUserId();return!!(i&&String(i)===e.externalId)}static getUserId(){return c.Session.getCookie("user-id",{objectKey:"userId",storageKey:"user",storageType:"localStorage",ttl:3600*24*365,preserveData:!0})}static updateSessionWithRegistrationData(e){let t=c.Session.getCookie(d);if(t||(t=l.createSession("guest")),t){let i={...t,registrationData:e};c.Session.setCookie(d,i,3600*24*365)}}static hasRegistrationData(){return!!c.Session.getCookie(d)?.registrationData}static async getAgentInfo(e){return fetch(`${e}/api/v1/auth/user-info`,{credentials:"include"}).then(t=>t.json())}static getRegistrationData(){return c.Session.getCookie(d)?.registrationData}};var C="lk.chat",A="lk.transcription",S="lk.events",R="typing-indicator";var y=class extends p.Room{},f=class{constructor(e){this.listeners=new Set;this.typingListeners=new Set;this.transcriptionMap=new Map;this.abortControllers={register:new AbortController,createRoom:new AbortController,quickStart:new AbortController,closeRoom:new AbortController,evaluateRoom:new AbortController,persistMessage:new AbortController,sendMessageReport:new AbortController,deleteMessageReport:new AbortController,updateMessageReactions:new AbortController,getRooms:new AbortController};this.authToken=null;this.firebaseUnsubscribers={};this.seenRequestIds=new Set;this.lastSnapshotById=new Map;this.handleIncomingMessage=async(e,t)=>{let i=e?.info?.id,s=e.info?.attributes?.["lk.segment_id"];s&&(this.transcriptionMap.has(s)?i=this.transcriptionMap.get(s)||"":this.transcriptionMap.set(s,i));let r=t?.identity?this.room.getParticipantByIdentity(t.identity):void 0,a="";for await(let g of e)a+=g,this.emitMessage({id:i,timestamp:Date.now(),message:a,assets:JSON.parse(e.info?.attributes?.assets||"[]"),from:r});this.messagePersistence==="client"&&this.persistMessage({roomId:this.room.id,content:a,externalId:i,identity:r?.identity,kind:r?.kind})};this.emitMessage=e=>{for(let t of this.listeners)t([e])};this.handleDataReceived=(e,t,i,s)=>{if(s===R)try{let r=JSON.parse(new TextDecoder().decode(e));if(r.type==="typing"&&r.participantId!==this.room.localParticipant.identity){let a={type:"typing",isTyping:r.isTyping,timestamp:r.timestamp,participantId:r.participantId};this.emitTypingIndicator(a)}}catch(r){console.warn("Failed to parse typing indicator:",r)}};this.emitTypingIndicator=e=>{for(let t of this.typingListeners)t(e)};this.apiUrl=e.apiUrl,this.authUrl=e.authUrl,this.organizationId=e.organizationId,this.channelTopic=e.channelTopic||C,this.transcriptionTopic=e.transcriptionTopic||A,this.eventsTopic=e.eventsTopic||S,this.messagePersistence=e.messagePersistence||"disabled",this.room=this.createRoomInstance(),e.firebaseConfig&&this.initializeFirebase(e.firebaseConfig)}createRoomInstance(){return new y({adaptiveStream:!0,dynacast:!0})}ensureRoom(){return this.room||(this.room=this.createRoomInstance()),this.room}initializeFirebase(e){this.firebaseApi=new u({config:e}),this.presencePath=`orgs/${this.organizationId}/presence`,this.callsPath=`orgs/${this.organizationId}/calls`}initializeRoomHandlers(){try{this.room.unregisterTextStreamHandler(this.channelTopic),this.room.unregisterTextStreamHandler(this.transcriptionTopic)}catch{}this.room.off(p.RoomEvent.DataReceived,this.handleDataReceived),this.room.registerTextStreamHandler(this.channelTopic,this.handleIncomingMessage),this.room.registerTextStreamHandler(this.transcriptionTopic,this.handleIncomingMessage),this.room.on(p.RoomEvent.DataReceived,this.handleDataReceived)}async registerUser(e,t,i,s){let r=await o(`${this.apiUrl}/users/register`,{method:"POST",body:JSON.stringify({externalId:e,secret:t,...i,metadata:s}),headers:{"X-Onlive-Organization-Id":this.organizationId,"Content-Type":"application/json"},signal:this.abortControllers.register.signal});if(!r.token)throw new Error("Registration failed: No token received from server");return this.authToken=r.token,r}async registerAgent(e,t){let i=m.Session.getCookie("livekit-agent-token");if(i){if(this.decodeJwtPayload(i)?.username===t.name)return this.authToken=i,i;m.Session.deleteCookie("livekit-agent-token")}let s=await o(`${this.authUrl}/admins/register`,{method:"POST",body:JSON.stringify({externalId:e,name:t.name,email:t.email,avatar:t.avatar}),headers:{"X-Onlive-Organization-Id":this.organizationId,"Content-Type":"application/json"},credentials:"include",signal:this.abortControllers.register.signal});return m.Session.setCookie("livekit-agent-token",s.token,1440*60),this.authToken=s.token,s.token}decodeJwtPayload(e){try{let t=e.split(".");if(t.length!==3)return null;let i=t[1],s=atob(i.replace(/-/g,"+").replace(/_/g,"/"));return JSON.parse(s)}catch{return null}}async quickStart(e){console.log("[ConversationService] Starting quickStart with options:",e),this.room=this.ensureRoom();let t=await o(`${this.apiUrl}/rooms/quick-start`,{method:"POST",body:JSON.stringify(e),headers:{"X-Onlive-Organization-Id":this.organizationId,"Content-Type":"application/json"},signal:this.abortControllers.quickStart.signal});if(!t.user?.token)throw new Error("Quick start failed: No user token received from server");this.authToken=t.user.token;let i={id:t.room.id,groupId:t.room.groupId||"",token:t.room.token,wsURL:t.room.wsURL,createdAt:t.room.createdAt||new Date().toISOString(),affinity:t.room.affinity};return this.setRoomMetadata(i),this.setupParticipantAttributesHandler(),this.room.connect(i.wsURL,i.token),this.initializeRoomHandlers(),this.room}async createRoom(e){if(!this.authToken)throw new Error("Cannot create room: No authentication token. Call registerUser() first.");this.room=this.ensureRoom();let{initialMessage:t,...i}=e,s=await o(`${this.apiUrl}/rooms`,{method:"POST",body:JSON.stringify(i),headers:{Authorization:`Bearer ${this.authToken}`,"X-Onlive-Organization-Id":this.organizationId,"Content-Type":"application/json"},signal:this.abortControllers.createRoom.signal});return this.setRoomMetadata(s),this.setupParticipantAttributesHandler(),this.room.connect(s.wsURL,s.token).then(async()=>{if(t)try{await this.sendMessage(t)}catch(r){console.error("[ConversationService] Failed to send initial message:",r)}}),this.initializeRoomHandlers(),this.room}async joinRoom(e,t,i,s){let r=await o(`${this.apiUrl}/rooms/${e}/join`,{method:"POST",body:JSON.stringify({timezone:t,language:i,...s??{}}),headers:{Authorization:`Bearer ${this.authToken}`,"X-Onlive-Organization-Id":this.organizationId,"Content-Type":"application/json"},signal:this.abortControllers.createRoom.signal});return this.setRoomMetadata(r),this.setupParticipantAttributesHandler(),await this.room.connect(r.wsURL,r.token),this.initializeRoomHandlers(),this.room}setRoomMetadata(e){this.room.id=e.id,this.room.groupId=e.groupId,this.room.createdAt=e.createdAt,this.room.connectedAt=new Date().toISOString(),this.room.affinity=e.affinity}setupParticipantAttributesHandler(){this.room.on(p.RoomEvent.ParticipantAttributesChanged,e=>{e.identity===this.room.localParticipant.identity&&h.updateSessionWithRegistrationData(e.attributes)})}async evaluateRoom(e){let t=e.roomId||this.room?.id;if(!t)throw new Error("Room ID is required for evaluation");return o(`${this.apiUrl}/rooms/${t}/evaluate`,{method:"POST",body:JSON.stringify({rating:e.rating,comment:e.comment}),headers:{Authorization:`Bearer ${this.authToken}`,"X-Onlive-Organization-Id":this.organizationId,"Content-Type":"application/json"},signal:this.abortControllers.evaluateRoom.signal})}async closeRoom(){this.room&&(await o(`${this.apiUrl}/rooms/${this.room.id}/close`,{method:"POST",headers:{Authorization:`Bearer ${this.authToken}`,"X-Onlive-Organization-Id":this.organizationId,"Content-Type":"application/json"},signal:this.abortControllers.closeRoom.signal}),await this.stopAndUnpublishLocalTracks())}async disconnect(){this.room&&(await this.stopAndUnpublishLocalTracks(),this.room.removeAllListeners(),await this.room.disconnect(),this.room=null)}async stopAndUnpublishLocalTracks(){let e=this.room?.localParticipant;if(!e)return;await Promise.allSettled([e.setMicrophoneEnabled(!1),e.setCameraEnabled(!1),e.setScreenShareEnabled(!1)]);let t=Array.from(e.trackPublications.values());await Promise.all(t.map(async i=>{let s=i.track;if(s)try{await e.unpublishTrack(s,!0)}catch{s.stop()}}))}async disconnectAndCloseRoom(){await this.closeRoom(),await this.disconnect()}async readRoom(e){return o(`${this.apiUrl}/rooms/${e}/read`,{method:"POST",headers:{Authorization:`Bearer ${this.authToken}`,"X-Onlive-Organization-Id":this.organizationId,"Content-Type":"application/json"},signal:this.abortControllers.persistMessage.signal})}async getRooms(e){let t=new URLSearchParams;return e.page&&t.append("page",e.page.toString()),e.limit&&t.append("limit",e.limit.toString()),e.offset&&t.append("offset",e.offset.toString()),e.orderBy&&t.append("orderBy",e.orderBy),e.orderDir&&t.append("orderDir",e.orderDir),e.ids?.length&&t.append("ids",e.ids.join(",")),e.with?.length&&t.append("with",e.with.join(",")),e.count?.length&&t.append("count",e.count.join(",")),e.latestOnly&&t.append("latestOnly",e.latestOnly.toString()),e.includeUnread&&t.append("includeUnread",e.includeUnread.toString()),e.roomStatus&&t.append("roomStatus",e.roomStatus),e.archived&&t.append("archived",e.archived.toString()),e.participantIds?.length&&t.append("participantIds",e.participantIds.join(",")),e.participantExternalIds?.length&&t.append("participantExternalIds",e.participantExternalIds.join(",")),e.groupId&&t.append("groupId",e.groupId),e.hasMessages!==void 0&&t.append("hasMessages",e.hasMessages.toString()),o(`${this.authUrl}/rooms?${t}`,{method:"GET",headers:{"X-Onlive-Organization-Id":this.organizationId,"Content-Type":"application/json"},credentials:"include",signal:this.abortControllers.getRooms.signal})}async sendMessage(e,t){let i=await this.room.localParticipant.sendText(e,{topic:this.channelTopic,attributes:t});this.emitMessage({id:i.id,timestamp:Date.now(),message:e,assets:JSON.parse(t?.assets||"[]"),from:this.room.localParticipant}),this.messagePersistence==="client"&&this.persistMessage({roomId:this.room.id,content:e,externalId:i.id,identity:this.room.localParticipant?.identity,kind:this.room.localParticipant?.kind})}async persistMessage(e){return o(`${this.apiUrl}/messages/create`,{method:"POST",body:JSON.stringify(e),headers:{Authorization:`Bearer ${this.authToken}`,"X-Onlive-Organization-Id":this.organizationId,"Content-Type":"application/json"},signal:this.abortControllers.persistMessage.signal})}async getMessages(e){let t=new URLSearchParams;return e.limit&&t.append("limit",e.limit.toString()),e.with&&t.append("with",e.with.join(",")),(await o(`${this.apiUrl}/messages/search${t.size?`?${t.toString()}`:""}`,{method:"POST",body:JSON.stringify(e),headers:{Authorization:`Bearer ${this.authToken}`,"X-Onlive-Organization-Id":this.organizationId,"Content-Type":"application/json"},signal:this.abortControllers.createRoom.signal})).items}async sendMessageReport(e){try{return o(`${this.apiUrl}/messages/${e.messageId}/report`,{method:"POST",headers:{Authorization:`Bearer ${this.authToken}`,"X-Onlive-Organization-Id":this.organizationId,"Content-Type":"application/json"},signal:this.abortControllers.sendMessageReport.signal})}catch(t){console.error("Error sending message report:",t)}}async deleteMessageReport(e){try{return o(`${this.apiUrl}/messages/${e.messageId}/report`,{method:"DELETE",headers:{Authorization:`Bearer ${this.authToken}`,"X-Onlive-Organization-Id":this.organizationId,"Content-Type":"application/json"},signal:this.abortControllers.deleteMessageReport.signal})}catch(t){console.error("Error deleting message report:",t)}}async updateMessageReactions(e){try{return o(`${this.apiUrl}/messages/${e.messageId}/reactions`,{method:"PATCH",body:JSON.stringify({add:e.add||[],remove:e.remove||[]}),headers:{Authorization:`Bearer ${this.authToken}`,"X-Onlive-Organization-Id":this.organizationId,"Content-Type":"application/json"},signal:this.abortControllers.updateMessageReactions.signal})}catch(t){console.error("Error updating message reactions:",t)}}subscribeMessages(e){return this.listeners.add(e),()=>{this.listeners.delete(e)}}async sendTypingIndicator(e){if(!(!this.room||this.room.state!=="connected"))try{let t=new TextEncoder().encode(JSON.stringify({type:"typing",isTyping:e,timestamp:Date.now(),participantId:this.room.localParticipant.identity}));await this.room.localParticipant.publishData(t,{reliable:!1,topic:R})}catch(t){console.warn("Failed to send typing indicator:",t)}}subscribeTypingIndicators(e){return this.typingListeners.add(e),()=>{this.typingListeners.delete(e)}}unsubscribeTypingIndicators(e){this.typingListeners.delete(e)}async sendContextualEvent(e){try{let t=JSON.stringify(e);await this.room.localParticipant.sendText(t,{topic:this.eventsTopic})}catch(t){console.warn("Failed to send event:",t)}}async requestNewRoom(e){return o(`${this.apiUrl}/rooms/request-new`,{method:"POST",body:JSON.stringify(e),headers:{Authorization:`Bearer ${this.authToken}`,"X-Onlive-Organization-Id":this.organizationId,"Content-Type":"application/json"}})}async confirmRoomRequest(e){return o(`${this.apiUrl}/rooms/confirm-call`,{method:"POST",body:JSON.stringify({roomId:e}),headers:{Authorization:`Bearer ${this.authToken}`,"X-Onlive-Organization-Id":this.organizationId,"Content-Type":"application/json"}})}async cancelRoomRequest(e){return o(`${this.apiUrl}/rooms/cancel-call`,{method:"POST",body:JSON.stringify({roomId:e}),headers:{Authorization:`Bearer ${this.authToken}`,"X-Onlive-Organization-Id":this.organizationId,"Content-Type":"application/json"}})}async finishCall(){if(this.room?.id)return o(`${this.apiUrl}/rooms/finish-call`,{method:"POST",body:JSON.stringify({roomId:this.room.id}),headers:{Authorization:`Bearer ${this.authToken}`,"X-Onlive-Organization-Id":this.organizationId,"Content-Type":"application/json"}})}isFirebaseEnabled(){return!!(this.firebaseApi&&this.presencePath&&this.callsPath)}getFirebase(){if(!this.firebaseApi||!this.presencePath||!this.callsPath)throw new Error("Firebase is not initialized. Provide firebaseConfig in constructor.");return{api:this.firebaseApi,presencePath:this.presencePath,callsPath:this.callsPath}}buildAgentPresencePath(e){return`${this.presencePath}/${e}`}onPresenceChange(e){let{api:t,presencePath:i}=this.getFirebase();return t.onChildChanged(i,(s,r)=>e(s,r))}onPresenceAgentChange(e,t){let{api:i}=this.getFirebase();return i.onValue(this.buildAgentPresencePath(e),(s,r)=>t(s,r))}async createCallRequest(e){let{api:t,callsPath:i}=this.getFirebase(),r=(await o(`${this.apiUrl}/rooms/call-request`,{method:"POST",headers:{Authorization:`Bearer ${this.authToken}`,"X-Onlive-Organization-Id":this.organizationId,"Content-Type":"application/json"},body:JSON.stringify(e)})).id;return t.onDisconnectUpdate(`${i}/${r}`,{status:"disconnected"}),r}onNewCallRequest(e){let{api:t,callsPath:i}=this.getFirebase();return t.onChildAdded(i,(s,r)=>e(s,{...r,id:s}))}onCallRequestChange(e){let{api:t,callsPath:i}=this.getFirebase();return t.onChildChanged(i,(s,r)=>e(s,{...r,id:s}))}onCallRequestRemoved(e){let{api:t,callsPath:i}=this.getFirebase();return t.onChildRemoved(i,s=>e(s))}async acceptCallRequest(e){let{api:t,callsPath:i}=this.getFirebase();return await t.cancelOnDisconnect(`${i}/${e}`),t.update(`${i}/${e}`,{status:"accepted"})}async cancelCallRequest(e){let{api:t,callsPath:i}=this.getFirebase();await t.cancelOnDisconnect(`${i}/${e}`),await o(`${this.apiUrl}/rooms/call-request/cancel`,{method:"POST",headers:{Authorization:`Bearer ${this.authToken}`,"X-Onlive-Organization-Id":this.organizationId,"Content-Type":"application/json"},body:JSON.stringify({callId:e})})}async cancelOnDisconnect(e){let{api:t,callsPath:i}=this.getFirebase();await t.cancelOnDisconnect(`${i}/${e}`)}subscribePendingRequests(e,t={}){let{api:i,callsPath:s}=this.getFirebase();t.resetSeen&&this.seenRequestIds.clear(),this.firebaseUnsubscribers["pending-requests"]?.();let r=i.query(s,{orderBy:"child",childKey:"status",equalTo:"pending"}),a=i.onChildAddedQuery(r,(g,P)=>{if(!g||this.seenRequestIds.has(g))return;let O={...P,id:g};this.seenRequestIds.add(g),e(g,O)});return this.firebaseUnsubscribers["pending-requests"]=a,()=>{a?.(),delete this.firebaseUnsubscribers["pending-requests"]}}subscribeRequestChanges(e){let{api:t,callsPath:i}=this.getFirebase();this.firebaseUnsubscribers["request-changes"]?.();let s=t.onChildChanged(i,(r,a)=>{if(!r)return;let g=JSON.stringify(a);this.lastSnapshotById.get(r)!==g&&(this.lastSnapshotById.set(r,g),e(r,{...a,id:r}))});return this.firebaseUnsubscribers["request-changes"]=s,()=>{s?.(),delete this.firebaseUnsubscribers["request-changes"]}}async tryAcceptRequest(e){let{api:t,callsPath:i}=this.getFirebase(),s=`${i}/${e}`;return await t.transaction(s,a=>a&&(a.status==="pending"?{...a,status:"accepted"}:a)),(await t.getOnce(s))?.status==="accepted"}onRoomSync(e,t){let{api:i}=this.getFirebase(),s=`orgs/${this.organizationId}/rooms/${e}/sync`;return i.onValue(s,(r,a)=>{t(a)})}async clearRoomSync(e,t){let{api:i}=this.getFirebase(),s=`orgs/${this.organizationId}/rooms/${e}/sync`;await i.write(s,{needsSync:!1,reason:t||null,timestamp:Date.now()})}onNewRoomRequest(e,t){let{api:i}=this.getFirebase(),s=`orgs/${this.organizationId}/rooms/${e}/call`;return i.onValue(s,(r,a)=>{t(a)})}unsubscribeAllFirebase(){Object.values(this.firebaseUnsubscribers).forEach(e=>e?.()),this.firebaseUnsubscribers={}}async destroy(){this.unsubscribeAllFirebase(),this.listeners.clear(),this.typingListeners.clear(),this.transcriptionMap.clear(),this.seenRequestIds.clear(),this.lastSnapshotById.clear(),Object.values(this.abortControllers).forEach(e=>e.abort()),await this.disconnect()}};0&&(module.exports={ConversationService,Room});
1
+ /*! @onlive.ai/common-121 v0.2.228 | © 2026 Onlive.ai */
2
+ "use strict";var b=Object.defineProperty;var k=Object.getOwnPropertyDescriptor;var w=Object.getOwnPropertyNames;var M=Object.prototype.hasOwnProperty;var x=(l,e)=>{for(var t in e)b(l,t,{get:e[t],enumerable:!0})},z=(l,e,t,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of w(e))!M.call(l,s)&&s!==t&&b(l,s,{get:()=>e[s],enumerable:!(i=k(e,s))||i.enumerable});return l};var q=l=>z(b({},"__esModule",{value:!0}),l);var U={};x(U,{ConversationService:()=>f,Room:()=>y});module.exports=q(U);var m=require("@onlive.ai/tracker/session"),p=require("livekit-client");var v=require("firebase/app"),n=require("firebase/database"),u=class{constructor(e){this.onChildChanged=(e,t)=>(0,n.onChildChanged)(this.ref(e),i=>t(i.key||"",i.val(),i));this.onChildRemoved=(e,t)=>(0,n.onChildRemoved)(this.ref(e),i=>t(i.key||"",i.val(),i));this.onChildChangedQuery=(e,t)=>(0,n.onChildChanged)(e,i=>t(i.key||"",i.val(),i));this.onChildRemovedQuery=(e,t)=>(0,n.onChildRemoved)(e,i=>t(i.key||"",i.val(),i));let t=(0,v.initializeApp)(e.config);this.db=(0,n.getDatabase)(t)}ref(e){return(0,n.ref)(this.db,e)}async getOnce(e){let t=await(0,n.get)(this.ref(e));return t.exists()?t.val():null}async getOnceQuery(e){let t=await(0,n.get)(e),i=[];return t.exists()&&t.forEach(s=>{i.push({key:s.key||"",value:s.val()})}),i}onValue(e,t){return(0,n.onValue)(this.ref(e),i=>t(i.key??"",i.val(),i),i=>console.error("onValue error",i))}onValueQuery(e,t){return(0,n.onValue)(e,i=>t(i.key??"",i.val(),i),i=>console.error("onValueQuery error",i))}onChildAdded(e,t){return(0,n.onChildAdded)(this.ref(e),i=>t(i.key||"",i.val(),i),i=>console.error("onChildAdded error",i))}onChildAddedQuery(e,t){return(0,n.onChildAdded)(e,i=>t(i.key||"",i.val(),i),i=>console.error("onChildAddedQuery error",i))}write(e,t){return(0,n.set)(this.ref(e),t)}update(e,t){return(0,n.update)(this.ref(e),t)}remove(e){return(0,n.remove)(this.ref(e))}async push(e,t){let i=(0,n.push)(this.ref(e));return await(0,n.set)(i,t),i.key}onDisconnectUpdate(e,t){return(0,n.onDisconnect)(this.ref(e)).update(t)}cancelOnDisconnect(e){return(0,n.onDisconnect)(this.ref(e)).cancel()}transaction(e,t){return(0,n.runTransaction)(this.ref(e),i=>t(i))}query(e,t={}){let i=this.ref(e);return t.orderBy==="child"&&t.childKey&&(i=(0,n.query)(i,(0,n.orderByChild)(t.childKey))),t.orderBy==="key"&&(i=(0,n.query)(i,(0,n.orderByKey)())),t.orderBy==="value"&&(i=(0,n.query)(i,(0,n.orderByValue)())),t.startAt!=null&&(i=(0,n.query)(i,(0,n.startAt)(t.startAt))),t.endAt!=null&&(i=(0,n.query)(i,(0,n.endAt)(t.endAt))),t.equalTo!=null&&(i=(0,n.query)(i,(0,n.equalTo)(t.equalTo))),t.limitFirst!=null&&(i=(0,n.query)(i,(0,n.limitToFirst)(t.limitFirst))),t.limitLast!=null&&(i=(0,n.query)(i,(0,n.limitToLast)(t.limitLast))),i}};var o=async(l,e)=>{let t=await fetch(l,e);if(!t.ok){let i=await t.json().catch(()=>({}));throw new Error(JSON.stringify({status:t.status,statusText:t.statusText,...i}))}return t&&t.json()};var I=l=>{let e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",t="";for(let i=0;i<l;i++)t+=e.charAt(Math.floor(Math.random()*e.length));return t};var T=require("@onlive.ai/tracker/generator"),g=require("@onlive.ai/tracker/session"),c="chatbot",h=class l{static hasSession(){return!!g.Session.getCookie(c)}static getSession(e={role:"guest",regenerate:!1}){e.regenerate&&(g.Session.id=T.Generator.uuid(),g.Session.deleteCookie(c));let t=g.Session.getCookie(c);return t&&l.isValidSession(t,e.role)?t:l.createSession(e.role)}static createSession(e){let t={externalId:e==="agent"?String(l.getUserId()||g.Session.id):g.Session.id,secret:I(16),createdAt:new Date().toISOString()};return g.Session.setCookie(c,t,3600*24*365),t}static isValidSession(e,t){if(t==="guest")return!0;let i=l.getUserId();return!!(i&&String(i)===e.externalId)}static getUserId(){return g.Session.getCookie("user-id",{objectKey:"userId",storageKey:"user",storageType:"localStorage",ttl:3600*24*365,preserveData:!0})}static updateSessionWithRegistrationData(e){let t=g.Session.getCookie(c);if(t||(t=l.createSession("guest")),t){let i={...t,registrationData:e};g.Session.setCookie(c,i,3600*24*365)}}static hasRegistrationData(){return!!g.Session.getCookie(c)?.registrationData}static async getAgentInfo(e){return fetch(`${e}/api/v1/auth/user-info`,{credentials:"include"}).then(t=>t.json())}static getRegistrationData(){return g.Session.getCookie(c)?.registrationData}};var C="lk.chat",A="lk.transcription",S="lk.events",R="typing-indicator";var y=class extends p.Room{},f=class{constructor(e){this.listeners=new Set;this.typingListeners=new Set;this.transcriptionMap=new Map;this.abortControllers={register:new AbortController,createRoom:new AbortController,quickStart:new AbortController,closeRoom:new AbortController,evaluateRoom:new AbortController,persistMessage:new AbortController,sendMessageReport:new AbortController,deleteMessageReport:new AbortController,updateMessageReactions:new AbortController,getRooms:new AbortController};this.authToken=null;this.firebaseUnsubscribers={};this.seenRequestIds=new Set;this.lastSnapshotById=new Map;this.handleIncomingMessage=async(e,t)=>{let i=e?.info?.id,s=e.info?.attributes?.["lk.segment_id"];s&&(this.transcriptionMap.has(s)?i=this.transcriptionMap.get(s)||"":this.transcriptionMap.set(s,i));let r=t?.identity?this.room.getParticipantByIdentity(t.identity):void 0,a="";for await(let d of e)a+=d,this.emitMessage({id:i,timestamp:Date.now(),message:a,assets:JSON.parse(e.info?.attributes?.assets||"[]"),from:r});this.messagePersistence==="client"&&this.persistMessage({roomId:this.room.id,content:a,externalId:i,identity:r?.identity,kind:r?.kind})};this.emitMessage=e=>{for(let t of this.listeners)t([e])};this.handleDataReceived=(e,t,i,s)=>{if(s===R)try{let r=JSON.parse(new TextDecoder().decode(e));if(r.type==="typing"&&r.participantId!==this.room.localParticipant.identity){let a={type:"typing",isTyping:r.isTyping,timestamp:r.timestamp,participantId:r.participantId};this.emitTypingIndicator(a)}}catch(r){console.warn("Failed to parse typing indicator:",r)}};this.emitTypingIndicator=e=>{for(let t of this.typingListeners)t(e)};this.apiUrl=e.apiUrl,this.authUrl=e.authUrl,this.organizationId=e.organizationId,this.channelTopic=e.channelTopic||C,this.transcriptionTopic=e.transcriptionTopic||A,this.eventsTopic=e.eventsTopic||S,this.messagePersistence=e.messagePersistence||"disabled",this.agentInitialModalities=e.agentInitialModalities,this.agentModalities=e.agentModalities,this.room=this.createRoomInstance(),e.firebaseConfig&&this.initializeFirebase(e.firebaseConfig)}createRoomInstance(){return new y({adaptiveStream:!0,dynacast:!0})}ensureRoom(){return this.room||(this.room=this.createRoomInstance()),this.room}initializeFirebase(e){this.firebaseApi=new u({config:e}),this.presencePath=`orgs/${this.organizationId}/presence`,this.callsPath=`orgs/${this.organizationId}/calls`}initializeRoomHandlers(){try{this.room.unregisterTextStreamHandler(this.channelTopic),this.room.unregisterTextStreamHandler(this.transcriptionTopic)}catch{}this.room.off(p.RoomEvent.DataReceived,this.handleDataReceived),this.room.registerTextStreamHandler(this.channelTopic,this.handleIncomingMessage),this.room.registerTextStreamHandler(this.transcriptionTopic,this.handleIncomingMessage),this.room.on(p.RoomEvent.DataReceived,this.handleDataReceived)}async registerUser(e,t,i,s){let r=await o(`${this.apiUrl}/users/register`,{method:"POST",body:JSON.stringify({externalId:e,secret:t,...i,metadata:s}),headers:{"X-Onlive-Organization-Id":this.organizationId,"Content-Type":"application/json"},signal:this.abortControllers.register.signal});if(!r.token)throw new Error("Registration failed: No token received from server");return this.authToken=r.token,r}async registerAgent(e,t){let i=m.Session.getCookie("livekit-agent-token");if(i){if(this.decodeJwtPayload(i)?.username===t.name)return this.authToken=i,i;m.Session.deleteCookie("livekit-agent-token")}let s=await o(`${this.authUrl}/admins/register`,{method:"POST",body:JSON.stringify({externalId:e,name:t.name,email:t.email,avatar:t.avatar}),headers:{"X-Onlive-Organization-Id":this.organizationId,"Content-Type":"application/json"},credentials:"include",signal:this.abortControllers.register.signal});return m.Session.setCookie("livekit-agent-token",s.token,1440*60),this.authToken=s.token,s.token}decodeJwtPayload(e){try{let t=e.split(".");if(t.length!==3)return null;let i=t[1],s=atob(i.replace(/-/g,"+").replace(/_/g,"/"));return JSON.parse(s)}catch{return null}}async quickStart(e){let t=e;console.log("[ConversationService] Starting quickStart with options:",t),this.room=this.ensureRoom(),(this.agentInitialModalities||this.agentModalities)&&(t={...t,room:{...t.room,metadata:{...this.agentInitialModalities&&{agentInitialModalities:this.agentInitialModalities},...this.agentModalities&&{agentModalities:this.agentModalities},...t.room.metadata}}});let i=await o(`${this.apiUrl}/rooms/quick-start`,{method:"POST",body:JSON.stringify(t),headers:{"X-Onlive-Organization-Id":this.organizationId,"Content-Type":"application/json"},signal:this.abortControllers.quickStart.signal});if(!i.user?.token)throw new Error("Quick start failed: No user token received from server");this.authToken=i.user.token;let s={id:i.room.id,groupId:i.room.groupId||"",token:i.room.token,wsURL:i.room.wsURL,createdAt:i.room.createdAt||new Date().toISOString(),affinity:i.room.affinity};return this.setRoomMetadata(s),this.setupParticipantAttributesHandler(),this.room.connect(s.wsURL,s.token),this.initializeRoomHandlers(),this.room}async createRoom(e){if(!this.authToken)throw new Error("Cannot create room: No authentication token. Call registerUser() first.");this.room=this.ensureRoom();let{initialMessage:t,...i}=e;(this.agentInitialModalities||this.agentModalities)&&(i.metadata={...this.agentInitialModalities&&{agentInitialModalities:this.agentInitialModalities},...this.agentModalities&&{agentModalities:this.agentModalities},...i.metadata});let s=await o(`${this.apiUrl}/rooms`,{method:"POST",body:JSON.stringify(i),headers:{Authorization:`Bearer ${this.authToken}`,"X-Onlive-Organization-Id":this.organizationId,"Content-Type":"application/json"},signal:this.abortControllers.createRoom.signal});return this.setRoomMetadata(s),this.setupParticipantAttributesHandler(),this.room.connect(s.wsURL,s.token).then(async()=>{if(t)try{await this.sendMessage(t)}catch(r){console.error("[ConversationService] Failed to send initial message:",r)}}),this.initializeRoomHandlers(),this.room}async joinRoom(e,t,i,s){let r=await o(`${this.apiUrl}/rooms/${e}/join`,{method:"POST",body:JSON.stringify({timezone:t,language:i,...s??{}}),headers:{Authorization:`Bearer ${this.authToken}`,"X-Onlive-Organization-Id":this.organizationId,"Content-Type":"application/json"},signal:this.abortControllers.createRoom.signal});return this.setRoomMetadata(r),this.setupParticipantAttributesHandler(),await this.room.connect(r.wsURL,r.token),this.initializeRoomHandlers(),this.room}setRoomMetadata(e){this.room.id=e.id,this.room.groupId=e.groupId,this.room.createdAt=e.createdAt,this.room.connectedAt=new Date().toISOString(),this.room.affinity=e.affinity}setupParticipantAttributesHandler(){this.room.on(p.RoomEvent.ParticipantAttributesChanged,e=>{e.identity===this.room.localParticipant.identity&&h.updateSessionWithRegistrationData(e.attributes)})}async evaluateRoom(e){let t=e.roomId||this.room?.id;if(!t)throw new Error("Room ID is required for evaluation");return o(`${this.apiUrl}/rooms/${t}/evaluate`,{method:"POST",body:JSON.stringify({rating:e.rating,comment:e.comment}),headers:{Authorization:`Bearer ${this.authToken}`,"X-Onlive-Organization-Id":this.organizationId,"Content-Type":"application/json"},signal:this.abortControllers.evaluateRoom.signal})}async closeRoom(){this.room&&(await o(`${this.apiUrl}/rooms/${this.room.id}/close`,{method:"POST",headers:{Authorization:`Bearer ${this.authToken}`,"X-Onlive-Organization-Id":this.organizationId,"Content-Type":"application/json"},signal:this.abortControllers.closeRoom.signal}),await this.stopAndUnpublishLocalTracks())}async disconnect(){this.room&&(await this.stopAndUnpublishLocalTracks(),this.room.removeAllListeners(),await this.room.disconnect(),this.room=null)}async stopAndUnpublishLocalTracks(){let e=this.room?.localParticipant;if(!e)return;await Promise.allSettled([e.setMicrophoneEnabled(!1),e.setCameraEnabled(!1),e.setScreenShareEnabled(!1)]);let t=Array.from(e.trackPublications.values());await Promise.all(t.map(async i=>{let s=i.track;if(s)try{await e.unpublishTrack(s,!0)}catch{s.stop()}}))}async disconnectAndCloseRoom(){await this.closeRoom(),await this.disconnect()}async readRoom(e){return o(`${this.apiUrl}/rooms/${e}/read`,{method:"POST",headers:{Authorization:`Bearer ${this.authToken}`,"X-Onlive-Organization-Id":this.organizationId,"Content-Type":"application/json"},signal:this.abortControllers.persistMessage.signal})}async getRooms(e){let t=new URLSearchParams;return e.page&&t.append("page",e.page.toString()),e.limit&&t.append("limit",e.limit.toString()),e.offset&&t.append("offset",e.offset.toString()),e.orderBy&&t.append("orderBy",e.orderBy),e.orderDir&&t.append("orderDir",e.orderDir),e.ids?.length&&t.append("ids",e.ids.join(",")),e.with?.length&&t.append("with",e.with.join(",")),e.count?.length&&t.append("count",e.count.join(",")),e.latestOnly&&t.append("latestOnly",e.latestOnly.toString()),e.includeUnread&&t.append("includeUnread",e.includeUnread.toString()),e.roomStatus&&t.append("roomStatus",e.roomStatus),e.archived&&t.append("archived",e.archived.toString()),e.participantIds?.length&&t.append("participantIds",e.participantIds.join(",")),e.participantExternalIds?.length&&t.append("participantExternalIds",e.participantExternalIds.join(",")),e.groupId&&t.append("groupId",e.groupId),e.hasMessages!==void 0&&t.append("hasMessages",e.hasMessages.toString()),o(`${this.authUrl}/rooms?${t}`,{method:"GET",headers:{"X-Onlive-Organization-Id":this.organizationId,"Content-Type":"application/json"},credentials:"include",signal:this.abortControllers.getRooms.signal})}async sendMessage(e,t){let i=await this.room.localParticipant.sendText(e,{topic:this.channelTopic,attributes:t});this.emitMessage({id:i.id,timestamp:Date.now(),message:e,assets:JSON.parse(t?.assets||"[]"),from:this.room.localParticipant}),this.messagePersistence==="client"&&this.persistMessage({roomId:this.room.id,content:e,externalId:i.id,identity:this.room.localParticipant?.identity,kind:this.room.localParticipant?.kind})}async persistMessage(e){return o(`${this.apiUrl}/messages/create`,{method:"POST",body:JSON.stringify(e),headers:{Authorization:`Bearer ${this.authToken}`,"X-Onlive-Organization-Id":this.organizationId,"Content-Type":"application/json"},signal:this.abortControllers.persistMessage.signal})}async getMessages(e){let t=new URLSearchParams;return e.limit&&t.append("limit",e.limit.toString()),e.with&&t.append("with",e.with.join(",")),(await o(`${this.apiUrl}/messages/search${t.size?`?${t.toString()}`:""}`,{method:"POST",body:JSON.stringify(e),headers:{Authorization:`Bearer ${this.authToken}`,"X-Onlive-Organization-Id":this.organizationId,"Content-Type":"application/json"},signal:this.abortControllers.createRoom.signal})).items}async sendMessageReport(e){try{return o(`${this.apiUrl}/messages/${e.messageId}/report`,{method:"POST",headers:{Authorization:`Bearer ${this.authToken}`,"X-Onlive-Organization-Id":this.organizationId,"Content-Type":"application/json"},signal:this.abortControllers.sendMessageReport.signal})}catch(t){console.error("Error sending message report:",t)}}async deleteMessageReport(e){try{return o(`${this.apiUrl}/messages/${e.messageId}/report`,{method:"DELETE",headers:{Authorization:`Bearer ${this.authToken}`,"X-Onlive-Organization-Id":this.organizationId,"Content-Type":"application/json"},signal:this.abortControllers.deleteMessageReport.signal})}catch(t){console.error("Error deleting message report:",t)}}async updateMessageReactions(e){try{return o(`${this.apiUrl}/messages/${e.messageId}/reactions`,{method:"PATCH",body:JSON.stringify({add:e.add||[],remove:e.remove||[]}),headers:{Authorization:`Bearer ${this.authToken}`,"X-Onlive-Organization-Id":this.organizationId,"Content-Type":"application/json"},signal:this.abortControllers.updateMessageReactions.signal})}catch(t){console.error("Error updating message reactions:",t)}}subscribeMessages(e){return this.listeners.add(e),()=>{this.listeners.delete(e)}}async sendTypingIndicator(e){if(!(!this.room||this.room.state!=="connected"))try{let t=new TextEncoder().encode(JSON.stringify({type:"typing",isTyping:e,timestamp:Date.now(),participantId:this.room.localParticipant.identity}));await this.room.localParticipant.publishData(t,{reliable:!1,topic:R})}catch(t){console.warn("Failed to send typing indicator:",t)}}subscribeTypingIndicators(e){return this.typingListeners.add(e),()=>{this.typingListeners.delete(e)}}unsubscribeTypingIndicators(e){this.typingListeners.delete(e)}async sendContextualEvent(e){try{let t=JSON.stringify(e);await this.room.localParticipant.sendText(t,{topic:this.eventsTopic})}catch(t){console.warn("Failed to send event:",t)}}async requestNewRoom(e){return o(`${this.apiUrl}/rooms/request-new`,{method:"POST",body:JSON.stringify(e),headers:{Authorization:`Bearer ${this.authToken}`,"X-Onlive-Organization-Id":this.organizationId,"Content-Type":"application/json"}})}async confirmRoomRequest(e){return o(`${this.apiUrl}/rooms/confirm-call`,{method:"POST",body:JSON.stringify({roomId:e}),headers:{Authorization:`Bearer ${this.authToken}`,"X-Onlive-Organization-Id":this.organizationId,"Content-Type":"application/json"}})}async cancelRoomRequest(e){return o(`${this.apiUrl}/rooms/cancel-call`,{method:"POST",body:JSON.stringify({roomId:e}),headers:{Authorization:`Bearer ${this.authToken}`,"X-Onlive-Organization-Id":this.organizationId,"Content-Type":"application/json"}})}async finishCall(){if(this.room?.id)return o(`${this.apiUrl}/rooms/finish-call`,{method:"POST",body:JSON.stringify({roomId:this.room.id}),headers:{Authorization:`Bearer ${this.authToken}`,"X-Onlive-Organization-Id":this.organizationId,"Content-Type":"application/json"}})}isFirebaseEnabled(){return!!(this.firebaseApi&&this.presencePath&&this.callsPath)}getFirebase(){if(!this.firebaseApi||!this.presencePath||!this.callsPath)throw new Error("Firebase is not initialized. Provide firebaseConfig in constructor.");return{api:this.firebaseApi,presencePath:this.presencePath,callsPath:this.callsPath}}buildAgentPresencePath(e){return`${this.presencePath}/${e}`}onPresenceChange(e){let{api:t,presencePath:i}=this.getFirebase();return t.onChildChanged(i,(s,r)=>e(s,r))}onPresenceAgentChange(e,t){let{api:i}=this.getFirebase();return i.onValue(this.buildAgentPresencePath(e),(s,r)=>t(s,r))}async createCallRequest(e){let{api:t,callsPath:i}=this.getFirebase(),r=(await o(`${this.apiUrl}/rooms/call-request`,{method:"POST",headers:{Authorization:`Bearer ${this.authToken}`,"X-Onlive-Organization-Id":this.organizationId,"Content-Type":"application/json"},body:JSON.stringify(e)})).id;return t.onDisconnectUpdate(`${i}/${r}`,{status:"disconnected"}),r}onNewCallRequest(e){let{api:t,callsPath:i}=this.getFirebase();return t.onChildAdded(i,(s,r)=>e(s,{...r,id:s}))}onCallRequestChange(e){let{api:t,callsPath:i}=this.getFirebase();return t.onChildChanged(i,(s,r)=>e(s,{...r,id:s}))}onCallRequestRemoved(e){let{api:t,callsPath:i}=this.getFirebase();return t.onChildRemoved(i,s=>e(s))}async acceptCallRequest(e){let{api:t,callsPath:i}=this.getFirebase();return await t.cancelOnDisconnect(`${i}/${e}`),t.update(`${i}/${e}`,{status:"accepted"})}async cancelCallRequest(e){let{api:t,callsPath:i}=this.getFirebase();await t.cancelOnDisconnect(`${i}/${e}`),await o(`${this.apiUrl}/rooms/call-request/cancel`,{method:"POST",headers:{Authorization:`Bearer ${this.authToken}`,"X-Onlive-Organization-Id":this.organizationId,"Content-Type":"application/json"},body:JSON.stringify({callId:e})})}async cancelOnDisconnect(e){let{api:t,callsPath:i}=this.getFirebase();await t.cancelOnDisconnect(`${i}/${e}`)}subscribePendingRequests(e,t={}){let{api:i,callsPath:s}=this.getFirebase();t.resetSeen&&this.seenRequestIds.clear(),this.firebaseUnsubscribers["pending-requests"]?.();let r=i.query(s,{orderBy:"child",childKey:"status",equalTo:"pending"}),a=i.onChildAddedQuery(r,(d,P)=>{if(!d||this.seenRequestIds.has(d))return;let O={...P,id:d};this.seenRequestIds.add(d),e(d,O)});return this.firebaseUnsubscribers["pending-requests"]=a,()=>{a?.(),delete this.firebaseUnsubscribers["pending-requests"]}}subscribeRequestChanges(e){let{api:t,callsPath:i}=this.getFirebase();this.firebaseUnsubscribers["request-changes"]?.();let s=t.onChildChanged(i,(r,a)=>{if(!r)return;let d=JSON.stringify(a);this.lastSnapshotById.get(r)!==d&&(this.lastSnapshotById.set(r,d),e(r,{...a,id:r}))});return this.firebaseUnsubscribers["request-changes"]=s,()=>{s?.(),delete this.firebaseUnsubscribers["request-changes"]}}async tryAcceptRequest(e){let{api:t,callsPath:i}=this.getFirebase(),s=`${i}/${e}`;return await t.transaction(s,a=>a&&(a.status==="pending"?{...a,status:"accepted"}:a)),(await t.getOnce(s))?.status==="accepted"}onRoomSync(e,t){let{api:i}=this.getFirebase(),s=`orgs/${this.organizationId}/rooms/${e}/sync`;return i.onValue(s,(r,a)=>{t(a)})}async clearRoomSync(e,t){let{api:i}=this.getFirebase(),s=`orgs/${this.organizationId}/rooms/${e}/sync`;await i.write(s,{needsSync:!1,reason:t||null,timestamp:Date.now()})}onNewRoomRequest(e,t){let{api:i}=this.getFirebase(),s=`orgs/${this.organizationId}/rooms/${e}/call`;return i.onValue(s,(r,a)=>{t(a)})}unsubscribeAllFirebase(){Object.values(this.firebaseUnsubscribers).forEach(e=>e?.()),this.firebaseUnsubscribers={}}async destroy(){this.unsubscribeAllFirebase(),this.listeners.clear(),this.typingListeners.clear(),this.transcriptionMap.clear(),this.seenRequestIds.clear(),this.lastSnapshotById.clear(),Object.values(this.abortControllers).forEach(e=>e.abort()),await this.disconnect()}};0&&(module.exports={ConversationService,Room});
@@ -1,4 +1,4 @@
1
- /*! @onlive.ai/common-121 v0.2.199 | © 2026 Onlive.ai */
1
+ /*! @onlive.ai/common-121 v0.2.228 | © 2026 Onlive.ai */
2
2
  import { Room as Room$1 } from 'livekit-client';
3
3
  import { ConversationServiceOptions, UserApiResponse, 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';
4
4
  import '@livekit/components-core';
@@ -73,6 +73,10 @@ declare class ConversationService {
73
73
  private eventsTopic;
74
74
  /** Message persistence mode */
75
75
  private messagePersistence;
76
+ /** Default initial modalities for the agent, sent in room metadata */
77
+ private agentInitialModalities?;
78
+ /** Default allowed modalities for the agent, sent in room metadata */
79
+ private agentModalities?;
76
80
  /** Abort controllers for cancellable requests */
77
81
  private abortControllers;
78
82
  /** Current authentication token */
@@ -163,7 +167,7 @@ declare class ConversationService {
163
167
  * @returns {Promise<Room>} Connected room instance ready for messaging.
164
168
  * @throws {Error} If the quick-start request fails or returns invalid data.
165
169
  */
166
- quickStart(options: QuickStartOptions): Promise<Room>;
170
+ quickStart(inputOptions: QuickStartOptions): Promise<Room>;
167
171
  /**
168
172
  * Creates a new conversation room.
169
173
  *
@@ -1,4 +1,4 @@
1
- /*! @onlive.ai/common-121 v0.2.199 | © 2026 Onlive.ai */
1
+ /*! @onlive.ai/common-121 v0.2.228 | © 2026 Onlive.ai */
2
2
  import { Room as Room$1 } from 'livekit-client';
3
3
  import { ConversationServiceOptions, UserApiResponse, 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';
4
4
  import '@livekit/components-core';
@@ -73,6 +73,10 @@ declare class ConversationService {
73
73
  private eventsTopic;
74
74
  /** Message persistence mode */
75
75
  private messagePersistence;
76
+ /** Default initial modalities for the agent, sent in room metadata */
77
+ private agentInitialModalities?;
78
+ /** Default allowed modalities for the agent, sent in room metadata */
79
+ private agentModalities?;
76
80
  /** Abort controllers for cancellable requests */
77
81
  private abortControllers;
78
82
  /** Current authentication token */
@@ -163,7 +167,7 @@ declare class ConversationService {
163
167
  * @returns {Promise<Room>} Connected room instance ready for messaging.
164
168
  * @throws {Error} If the quick-start request fails or returns invalid data.
165
169
  */
166
- quickStart(options: QuickStartOptions): Promise<Room>;
170
+ quickStart(inputOptions: QuickStartOptions): Promise<Room>;
167
171
  /**
168
172
  * Creates a new conversation room.
169
173
  *
@@ -1,2 +1,2 @@
1
- /*! @onlive.ai/common-121 v0.2.199 | © 2026 Onlive.ai */
2
- import{Session as m}from"@onlive.ai/tracker/session";import{Room as K,RoomEvent as y}from"livekit-client";import{initializeApp as z}from"firebase/app";import{query as g,endAt as q,equalTo as U,get as R,getDatabase as $,limitToFirst as j,limitToLast as D,onChildAdded as f,onChildChanged as v,onChildRemoved as T,onDisconnect as I,onValue as C,orderByChild as N,orderByKey as L,orderByValue as E,push as F,ref as B,remove as J,runTransaction as Q,set as A,startAt as X,update as G}from"firebase/database";var p=class{constructor(e){this.onChildChanged=(e,t)=>v(this.ref(e),i=>t(i.key||"",i.val(),i));this.onChildRemoved=(e,t)=>T(this.ref(e),i=>t(i.key||"",i.val(),i));this.onChildChangedQuery=(e,t)=>v(e,i=>t(i.key||"",i.val(),i));this.onChildRemovedQuery=(e,t)=>T(e,i=>t(i.key||"",i.val(),i));let t=z(e.config);this.db=$(t)}ref(e){return B(this.db,e)}async getOnce(e){let t=await R(this.ref(e));return t.exists()?t.val():null}async getOnceQuery(e){let t=await R(e),i=[];return t.exists()&&t.forEach(s=>{i.push({key:s.key||"",value:s.val()})}),i}onValue(e,t){return C(this.ref(e),i=>t(i.key??"",i.val(),i),i=>console.error("onValue error",i))}onValueQuery(e,t){return C(e,i=>t(i.key??"",i.val(),i),i=>console.error("onValueQuery error",i))}onChildAdded(e,t){return f(this.ref(e),i=>t(i.key||"",i.val(),i),i=>console.error("onChildAdded error",i))}onChildAddedQuery(e,t){return f(e,i=>t(i.key||"",i.val(),i),i=>console.error("onChildAddedQuery error",i))}write(e,t){return A(this.ref(e),t)}update(e,t){return G(this.ref(e),t)}remove(e){return J(this.ref(e))}async push(e,t){let i=F(this.ref(e));return await A(i,t),i.key}onDisconnectUpdate(e,t){return I(this.ref(e)).update(t)}cancelOnDisconnect(e){return I(this.ref(e)).cancel()}transaction(e,t){return Q(this.ref(e),i=>t(i))}query(e,t={}){let i=this.ref(e);return t.orderBy==="child"&&t.childKey&&(i=g(i,N(t.childKey))),t.orderBy==="key"&&(i=g(i,L())),t.orderBy==="value"&&(i=g(i,E())),t.startAt!=null&&(i=g(i,X(t.startAt))),t.endAt!=null&&(i=g(i,q(t.endAt))),t.equalTo!=null&&(i=g(i,U(t.equalTo))),t.limitFirst!=null&&(i=g(i,j(t.limitFirst))),t.limitLast!=null&&(i=g(i,D(t.limitLast))),i}};var a=async(o,e)=>{let t=await fetch(o,e);if(!t.ok){let i=await t.json().catch(()=>({}));throw new Error(JSON.stringify({status:t.status,statusText:t.statusText,...i}))}return t&&t.json()};var S=o=>{let e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",t="";for(let i=0;i<o;i++)t+=e.charAt(Math.floor(Math.random()*e.length));return t};import{Generator as H}from"@onlive.ai/tracker/generator";import{Session as l}from"@onlive.ai/tracker/session";var d="chatbot",u=class o{static hasSession(){return!!l.getCookie(d)}static getSession(e={role:"guest",regenerate:!1}){e.regenerate&&(l.id=H.uuid(),l.deleteCookie(d));let t=l.getCookie(d);return t&&o.isValidSession(t,e.role)?t:o.createSession(e.role)}static createSession(e){let t={externalId:e==="agent"?String(o.getUserId()||l.id):l.id,secret:S(16),createdAt:new Date().toISOString()};return l.setCookie(d,t,3600*24*365),t}static isValidSession(e,t){if(t==="guest")return!0;let i=o.getUserId();return!!(i&&String(i)===e.externalId)}static getUserId(){return l.getCookie("user-id",{objectKey:"userId",storageKey:"user",storageType:"localStorage",ttl:3600*24*365,preserveData:!0})}static updateSessionWithRegistrationData(e){let t=l.getCookie(d);if(t||(t=o.createSession("guest")),t){let i={...t,registrationData:e};l.setCookie(d,i,3600*24*365)}}static hasRegistrationData(){return!!l.getCookie(d)?.registrationData}static async getAgentInfo(e){return fetch(`${e}/api/v1/auth/user-info`,{credentials:"include"}).then(t=>t.json())}static getRegistrationData(){return l.getCookie(d)?.registrationData}};var P="lk.chat",O="lk.transcription",k="lk.events",h="typing-indicator";var b=class extends K{},w=class{constructor(e){this.listeners=new Set;this.typingListeners=new Set;this.transcriptionMap=new Map;this.abortControllers={register:new AbortController,createRoom:new AbortController,quickStart:new AbortController,closeRoom:new AbortController,evaluateRoom:new AbortController,persistMessage:new AbortController,sendMessageReport:new AbortController,deleteMessageReport:new AbortController,updateMessageReactions:new AbortController,getRooms:new AbortController};this.authToken=null;this.firebaseUnsubscribers={};this.seenRequestIds=new Set;this.lastSnapshotById=new Map;this.handleIncomingMessage=async(e,t)=>{let i=e?.info?.id,s=e.info?.attributes?.["lk.segment_id"];s&&(this.transcriptionMap.has(s)?i=this.transcriptionMap.get(s)||"":this.transcriptionMap.set(s,i));let n=t?.identity?this.room.getParticipantByIdentity(t.identity):void 0,r="";for await(let c of e)r+=c,this.emitMessage({id:i,timestamp:Date.now(),message:r,assets:JSON.parse(e.info?.attributes?.assets||"[]"),from:n});this.messagePersistence==="client"&&this.persistMessage({roomId:this.room.id,content:r,externalId:i,identity:n?.identity,kind:n?.kind})};this.emitMessage=e=>{for(let t of this.listeners)t([e])};this.handleDataReceived=(e,t,i,s)=>{if(s===h)try{let n=JSON.parse(new TextDecoder().decode(e));if(n.type==="typing"&&n.participantId!==this.room.localParticipant.identity){let r={type:"typing",isTyping:n.isTyping,timestamp:n.timestamp,participantId:n.participantId};this.emitTypingIndicator(r)}}catch(n){console.warn("Failed to parse typing indicator:",n)}};this.emitTypingIndicator=e=>{for(let t of this.typingListeners)t(e)};this.apiUrl=e.apiUrl,this.authUrl=e.authUrl,this.organizationId=e.organizationId,this.channelTopic=e.channelTopic||P,this.transcriptionTopic=e.transcriptionTopic||O,this.eventsTopic=e.eventsTopic||k,this.messagePersistence=e.messagePersistence||"disabled",this.room=this.createRoomInstance(),e.firebaseConfig&&this.initializeFirebase(e.firebaseConfig)}createRoomInstance(){return new b({adaptiveStream:!0,dynacast:!0})}ensureRoom(){return this.room||(this.room=this.createRoomInstance()),this.room}initializeFirebase(e){this.firebaseApi=new p({config:e}),this.presencePath=`orgs/${this.organizationId}/presence`,this.callsPath=`orgs/${this.organizationId}/calls`}initializeRoomHandlers(){try{this.room.unregisterTextStreamHandler(this.channelTopic),this.room.unregisterTextStreamHandler(this.transcriptionTopic)}catch{}this.room.off(y.DataReceived,this.handleDataReceived),this.room.registerTextStreamHandler(this.channelTopic,this.handleIncomingMessage),this.room.registerTextStreamHandler(this.transcriptionTopic,this.handleIncomingMessage),this.room.on(y.DataReceived,this.handleDataReceived)}async registerUser(e,t,i,s){let n=await a(`${this.apiUrl}/users/register`,{method:"POST",body:JSON.stringify({externalId:e,secret:t,...i,metadata:s}),headers:{"X-Onlive-Organization-Id":this.organizationId,"Content-Type":"application/json"},signal:this.abortControllers.register.signal});if(!n.token)throw new Error("Registration failed: No token received from server");return this.authToken=n.token,n}async registerAgent(e,t){let i=m.getCookie("livekit-agent-token");if(i){if(this.decodeJwtPayload(i)?.username===t.name)return this.authToken=i,i;m.deleteCookie("livekit-agent-token")}let s=await a(`${this.authUrl}/admins/register`,{method:"POST",body:JSON.stringify({externalId:e,name:t.name,email:t.email,avatar:t.avatar}),headers:{"X-Onlive-Organization-Id":this.organizationId,"Content-Type":"application/json"},credentials:"include",signal:this.abortControllers.register.signal});return m.setCookie("livekit-agent-token",s.token,1440*60),this.authToken=s.token,s.token}decodeJwtPayload(e){try{let t=e.split(".");if(t.length!==3)return null;let i=t[1],s=atob(i.replace(/-/g,"+").replace(/_/g,"/"));return JSON.parse(s)}catch{return null}}async quickStart(e){console.log("[ConversationService] Starting quickStart with options:",e),this.room=this.ensureRoom();let t=await a(`${this.apiUrl}/rooms/quick-start`,{method:"POST",body:JSON.stringify(e),headers:{"X-Onlive-Organization-Id":this.organizationId,"Content-Type":"application/json"},signal:this.abortControllers.quickStart.signal});if(!t.user?.token)throw new Error("Quick start failed: No user token received from server");this.authToken=t.user.token;let i={id:t.room.id,groupId:t.room.groupId||"",token:t.room.token,wsURL:t.room.wsURL,createdAt:t.room.createdAt||new Date().toISOString(),affinity:t.room.affinity};return this.setRoomMetadata(i),this.setupParticipantAttributesHandler(),this.room.connect(i.wsURL,i.token),this.initializeRoomHandlers(),this.room}async createRoom(e){if(!this.authToken)throw new Error("Cannot create room: No authentication token. Call registerUser() first.");this.room=this.ensureRoom();let{initialMessage:t,...i}=e,s=await a(`${this.apiUrl}/rooms`,{method:"POST",body:JSON.stringify(i),headers:{Authorization:`Bearer ${this.authToken}`,"X-Onlive-Organization-Id":this.organizationId,"Content-Type":"application/json"},signal:this.abortControllers.createRoom.signal});return this.setRoomMetadata(s),this.setupParticipantAttributesHandler(),this.room.connect(s.wsURL,s.token).then(async()=>{if(t)try{await this.sendMessage(t)}catch(n){console.error("[ConversationService] Failed to send initial message:",n)}}),this.initializeRoomHandlers(),this.room}async joinRoom(e,t,i,s){let n=await a(`${this.apiUrl}/rooms/${e}/join`,{method:"POST",body:JSON.stringify({timezone:t,language:i,...s??{}}),headers:{Authorization:`Bearer ${this.authToken}`,"X-Onlive-Organization-Id":this.organizationId,"Content-Type":"application/json"},signal:this.abortControllers.createRoom.signal});return this.setRoomMetadata(n),this.setupParticipantAttributesHandler(),await this.room.connect(n.wsURL,n.token),this.initializeRoomHandlers(),this.room}setRoomMetadata(e){this.room.id=e.id,this.room.groupId=e.groupId,this.room.createdAt=e.createdAt,this.room.connectedAt=new Date().toISOString(),this.room.affinity=e.affinity}setupParticipantAttributesHandler(){this.room.on(y.ParticipantAttributesChanged,e=>{e.identity===this.room.localParticipant.identity&&u.updateSessionWithRegistrationData(e.attributes)})}async evaluateRoom(e){let t=e.roomId||this.room?.id;if(!t)throw new Error("Room ID is required for evaluation");return a(`${this.apiUrl}/rooms/${t}/evaluate`,{method:"POST",body:JSON.stringify({rating:e.rating,comment:e.comment}),headers:{Authorization:`Bearer ${this.authToken}`,"X-Onlive-Organization-Id":this.organizationId,"Content-Type":"application/json"},signal:this.abortControllers.evaluateRoom.signal})}async closeRoom(){this.room&&(await a(`${this.apiUrl}/rooms/${this.room.id}/close`,{method:"POST",headers:{Authorization:`Bearer ${this.authToken}`,"X-Onlive-Organization-Id":this.organizationId,"Content-Type":"application/json"},signal:this.abortControllers.closeRoom.signal}),await this.stopAndUnpublishLocalTracks())}async disconnect(){this.room&&(await this.stopAndUnpublishLocalTracks(),this.room.removeAllListeners(),await this.room.disconnect(),this.room=null)}async stopAndUnpublishLocalTracks(){let e=this.room?.localParticipant;if(!e)return;await Promise.allSettled([e.setMicrophoneEnabled(!1),e.setCameraEnabled(!1),e.setScreenShareEnabled(!1)]);let t=Array.from(e.trackPublications.values());await Promise.all(t.map(async i=>{let s=i.track;if(s)try{await e.unpublishTrack(s,!0)}catch{s.stop()}}))}async disconnectAndCloseRoom(){await this.closeRoom(),await this.disconnect()}async readRoom(e){return a(`${this.apiUrl}/rooms/${e}/read`,{method:"POST",headers:{Authorization:`Bearer ${this.authToken}`,"X-Onlive-Organization-Id":this.organizationId,"Content-Type":"application/json"},signal:this.abortControllers.persistMessage.signal})}async getRooms(e){let t=new URLSearchParams;return e.page&&t.append("page",e.page.toString()),e.limit&&t.append("limit",e.limit.toString()),e.offset&&t.append("offset",e.offset.toString()),e.orderBy&&t.append("orderBy",e.orderBy),e.orderDir&&t.append("orderDir",e.orderDir),e.ids?.length&&t.append("ids",e.ids.join(",")),e.with?.length&&t.append("with",e.with.join(",")),e.count?.length&&t.append("count",e.count.join(",")),e.latestOnly&&t.append("latestOnly",e.latestOnly.toString()),e.includeUnread&&t.append("includeUnread",e.includeUnread.toString()),e.roomStatus&&t.append("roomStatus",e.roomStatus),e.archived&&t.append("archived",e.archived.toString()),e.participantIds?.length&&t.append("participantIds",e.participantIds.join(",")),e.participantExternalIds?.length&&t.append("participantExternalIds",e.participantExternalIds.join(",")),e.groupId&&t.append("groupId",e.groupId),e.hasMessages!==void 0&&t.append("hasMessages",e.hasMessages.toString()),a(`${this.authUrl}/rooms?${t}`,{method:"GET",headers:{"X-Onlive-Organization-Id":this.organizationId,"Content-Type":"application/json"},credentials:"include",signal:this.abortControllers.getRooms.signal})}async sendMessage(e,t){let i=await this.room.localParticipant.sendText(e,{topic:this.channelTopic,attributes:t});this.emitMessage({id:i.id,timestamp:Date.now(),message:e,assets:JSON.parse(t?.assets||"[]"),from:this.room.localParticipant}),this.messagePersistence==="client"&&this.persistMessage({roomId:this.room.id,content:e,externalId:i.id,identity:this.room.localParticipant?.identity,kind:this.room.localParticipant?.kind})}async persistMessage(e){return a(`${this.apiUrl}/messages/create`,{method:"POST",body:JSON.stringify(e),headers:{Authorization:`Bearer ${this.authToken}`,"X-Onlive-Organization-Id":this.organizationId,"Content-Type":"application/json"},signal:this.abortControllers.persistMessage.signal})}async getMessages(e){let t=new URLSearchParams;return e.limit&&t.append("limit",e.limit.toString()),e.with&&t.append("with",e.with.join(",")),(await a(`${this.apiUrl}/messages/search${t.size?`?${t.toString()}`:""}`,{method:"POST",body:JSON.stringify(e),headers:{Authorization:`Bearer ${this.authToken}`,"X-Onlive-Organization-Id":this.organizationId,"Content-Type":"application/json"},signal:this.abortControllers.createRoom.signal})).items}async sendMessageReport(e){try{return a(`${this.apiUrl}/messages/${e.messageId}/report`,{method:"POST",headers:{Authorization:`Bearer ${this.authToken}`,"X-Onlive-Organization-Id":this.organizationId,"Content-Type":"application/json"},signal:this.abortControllers.sendMessageReport.signal})}catch(t){console.error("Error sending message report:",t)}}async deleteMessageReport(e){try{return a(`${this.apiUrl}/messages/${e.messageId}/report`,{method:"DELETE",headers:{Authorization:`Bearer ${this.authToken}`,"X-Onlive-Organization-Id":this.organizationId,"Content-Type":"application/json"},signal:this.abortControllers.deleteMessageReport.signal})}catch(t){console.error("Error deleting message report:",t)}}async updateMessageReactions(e){try{return a(`${this.apiUrl}/messages/${e.messageId}/reactions`,{method:"PATCH",body:JSON.stringify({add:e.add||[],remove:e.remove||[]}),headers:{Authorization:`Bearer ${this.authToken}`,"X-Onlive-Organization-Id":this.organizationId,"Content-Type":"application/json"},signal:this.abortControllers.updateMessageReactions.signal})}catch(t){console.error("Error updating message reactions:",t)}}subscribeMessages(e){return this.listeners.add(e),()=>{this.listeners.delete(e)}}async sendTypingIndicator(e){if(!(!this.room||this.room.state!=="connected"))try{let t=new TextEncoder().encode(JSON.stringify({type:"typing",isTyping:e,timestamp:Date.now(),participantId:this.room.localParticipant.identity}));await this.room.localParticipant.publishData(t,{reliable:!1,topic:h})}catch(t){console.warn("Failed to send typing indicator:",t)}}subscribeTypingIndicators(e){return this.typingListeners.add(e),()=>{this.typingListeners.delete(e)}}unsubscribeTypingIndicators(e){this.typingListeners.delete(e)}async sendContextualEvent(e){try{let t=JSON.stringify(e);await this.room.localParticipant.sendText(t,{topic:this.eventsTopic})}catch(t){console.warn("Failed to send event:",t)}}async requestNewRoom(e){return a(`${this.apiUrl}/rooms/request-new`,{method:"POST",body:JSON.stringify(e),headers:{Authorization:`Bearer ${this.authToken}`,"X-Onlive-Organization-Id":this.organizationId,"Content-Type":"application/json"}})}async confirmRoomRequest(e){return a(`${this.apiUrl}/rooms/confirm-call`,{method:"POST",body:JSON.stringify({roomId:e}),headers:{Authorization:`Bearer ${this.authToken}`,"X-Onlive-Organization-Id":this.organizationId,"Content-Type":"application/json"}})}async cancelRoomRequest(e){return a(`${this.apiUrl}/rooms/cancel-call`,{method:"POST",body:JSON.stringify({roomId:e}),headers:{Authorization:`Bearer ${this.authToken}`,"X-Onlive-Organization-Id":this.organizationId,"Content-Type":"application/json"}})}async finishCall(){if(this.room?.id)return a(`${this.apiUrl}/rooms/finish-call`,{method:"POST",body:JSON.stringify({roomId:this.room.id}),headers:{Authorization:`Bearer ${this.authToken}`,"X-Onlive-Organization-Id":this.organizationId,"Content-Type":"application/json"}})}isFirebaseEnabled(){return!!(this.firebaseApi&&this.presencePath&&this.callsPath)}getFirebase(){if(!this.firebaseApi||!this.presencePath||!this.callsPath)throw new Error("Firebase is not initialized. Provide firebaseConfig in constructor.");return{api:this.firebaseApi,presencePath:this.presencePath,callsPath:this.callsPath}}buildAgentPresencePath(e){return`${this.presencePath}/${e}`}onPresenceChange(e){let{api:t,presencePath:i}=this.getFirebase();return t.onChildChanged(i,(s,n)=>e(s,n))}onPresenceAgentChange(e,t){let{api:i}=this.getFirebase();return i.onValue(this.buildAgentPresencePath(e),(s,n)=>t(s,n))}async createCallRequest(e){let{api:t,callsPath:i}=this.getFirebase(),n=(await a(`${this.apiUrl}/rooms/call-request`,{method:"POST",headers:{Authorization:`Bearer ${this.authToken}`,"X-Onlive-Organization-Id":this.organizationId,"Content-Type":"application/json"},body:JSON.stringify(e)})).id;return t.onDisconnectUpdate(`${i}/${n}`,{status:"disconnected"}),n}onNewCallRequest(e){let{api:t,callsPath:i}=this.getFirebase();return t.onChildAdded(i,(s,n)=>e(s,{...n,id:s}))}onCallRequestChange(e){let{api:t,callsPath:i}=this.getFirebase();return t.onChildChanged(i,(s,n)=>e(s,{...n,id:s}))}onCallRequestRemoved(e){let{api:t,callsPath:i}=this.getFirebase();return t.onChildRemoved(i,s=>e(s))}async acceptCallRequest(e){let{api:t,callsPath:i}=this.getFirebase();return await t.cancelOnDisconnect(`${i}/${e}`),t.update(`${i}/${e}`,{status:"accepted"})}async cancelCallRequest(e){let{api:t,callsPath:i}=this.getFirebase();await t.cancelOnDisconnect(`${i}/${e}`),await a(`${this.apiUrl}/rooms/call-request/cancel`,{method:"POST",headers:{Authorization:`Bearer ${this.authToken}`,"X-Onlive-Organization-Id":this.organizationId,"Content-Type":"application/json"},body:JSON.stringify({callId:e})})}async cancelOnDisconnect(e){let{api:t,callsPath:i}=this.getFirebase();await t.cancelOnDisconnect(`${i}/${e}`)}subscribePendingRequests(e,t={}){let{api:i,callsPath:s}=this.getFirebase();t.resetSeen&&this.seenRequestIds.clear(),this.firebaseUnsubscribers["pending-requests"]?.();let n=i.query(s,{orderBy:"child",childKey:"status",equalTo:"pending"}),r=i.onChildAddedQuery(n,(c,x)=>{if(!c||this.seenRequestIds.has(c))return;let M={...x,id:c};this.seenRequestIds.add(c),e(c,M)});return this.firebaseUnsubscribers["pending-requests"]=r,()=>{r?.(),delete this.firebaseUnsubscribers["pending-requests"]}}subscribeRequestChanges(e){let{api:t,callsPath:i}=this.getFirebase();this.firebaseUnsubscribers["request-changes"]?.();let s=t.onChildChanged(i,(n,r)=>{if(!n)return;let c=JSON.stringify(r);this.lastSnapshotById.get(n)!==c&&(this.lastSnapshotById.set(n,c),e(n,{...r,id:n}))});return this.firebaseUnsubscribers["request-changes"]=s,()=>{s?.(),delete this.firebaseUnsubscribers["request-changes"]}}async tryAcceptRequest(e){let{api:t,callsPath:i}=this.getFirebase(),s=`${i}/${e}`;return await t.transaction(s,r=>r&&(r.status==="pending"?{...r,status:"accepted"}:r)),(await t.getOnce(s))?.status==="accepted"}onRoomSync(e,t){let{api:i}=this.getFirebase(),s=`orgs/${this.organizationId}/rooms/${e}/sync`;return i.onValue(s,(n,r)=>{t(r)})}async clearRoomSync(e,t){let{api:i}=this.getFirebase(),s=`orgs/${this.organizationId}/rooms/${e}/sync`;await i.write(s,{needsSync:!1,reason:t||null,timestamp:Date.now()})}onNewRoomRequest(e,t){let{api:i}=this.getFirebase(),s=`orgs/${this.organizationId}/rooms/${e}/call`;return i.onValue(s,(n,r)=>{t(r)})}unsubscribeAllFirebase(){Object.values(this.firebaseUnsubscribers).forEach(e=>e?.()),this.firebaseUnsubscribers={}}async destroy(){this.unsubscribeAllFirebase(),this.listeners.clear(),this.typingListeners.clear(),this.transcriptionMap.clear(),this.seenRequestIds.clear(),this.lastSnapshotById.clear(),Object.values(this.abortControllers).forEach(e=>e.abort()),await this.disconnect()}};export{w as ConversationService,b as Room};
1
+ /*! @onlive.ai/common-121 v0.2.228 | © 2026 Onlive.ai */
2
+ import{Session as m}from"@onlive.ai/tracker/session";import{Room as K,RoomEvent as y}from"livekit-client";import{initializeApp as z}from"firebase/app";import{query as d,endAt as q,equalTo as U,get as R,getDatabase as $,limitToFirst as j,limitToLast as D,onChildAdded as f,onChildChanged as v,onChildRemoved as I,onDisconnect as T,onValue as C,orderByChild as N,orderByKey as L,orderByValue as E,push as F,ref as B,remove as J,runTransaction as Q,set as A,startAt as X,update as G}from"firebase/database";var p=class{constructor(e){this.onChildChanged=(e,t)=>v(this.ref(e),i=>t(i.key||"",i.val(),i));this.onChildRemoved=(e,t)=>I(this.ref(e),i=>t(i.key||"",i.val(),i));this.onChildChangedQuery=(e,t)=>v(e,i=>t(i.key||"",i.val(),i));this.onChildRemovedQuery=(e,t)=>I(e,i=>t(i.key||"",i.val(),i));let t=z(e.config);this.db=$(t)}ref(e){return B(this.db,e)}async getOnce(e){let t=await R(this.ref(e));return t.exists()?t.val():null}async getOnceQuery(e){let t=await R(e),i=[];return t.exists()&&t.forEach(s=>{i.push({key:s.key||"",value:s.val()})}),i}onValue(e,t){return C(this.ref(e),i=>t(i.key??"",i.val(),i),i=>console.error("onValue error",i))}onValueQuery(e,t){return C(e,i=>t(i.key??"",i.val(),i),i=>console.error("onValueQuery error",i))}onChildAdded(e,t){return f(this.ref(e),i=>t(i.key||"",i.val(),i),i=>console.error("onChildAdded error",i))}onChildAddedQuery(e,t){return f(e,i=>t(i.key||"",i.val(),i),i=>console.error("onChildAddedQuery error",i))}write(e,t){return A(this.ref(e),t)}update(e,t){return G(this.ref(e),t)}remove(e){return J(this.ref(e))}async push(e,t){let i=F(this.ref(e));return await A(i,t),i.key}onDisconnectUpdate(e,t){return T(this.ref(e)).update(t)}cancelOnDisconnect(e){return T(this.ref(e)).cancel()}transaction(e,t){return Q(this.ref(e),i=>t(i))}query(e,t={}){let i=this.ref(e);return t.orderBy==="child"&&t.childKey&&(i=d(i,N(t.childKey))),t.orderBy==="key"&&(i=d(i,L())),t.orderBy==="value"&&(i=d(i,E())),t.startAt!=null&&(i=d(i,X(t.startAt))),t.endAt!=null&&(i=d(i,q(t.endAt))),t.equalTo!=null&&(i=d(i,U(t.equalTo))),t.limitFirst!=null&&(i=d(i,j(t.limitFirst))),t.limitLast!=null&&(i=d(i,D(t.limitLast))),i}};var a=async(o,e)=>{let t=await fetch(o,e);if(!t.ok){let i=await t.json().catch(()=>({}));throw new Error(JSON.stringify({status:t.status,statusText:t.statusText,...i}))}return t&&t.json()};var S=o=>{let e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",t="";for(let i=0;i<o;i++)t+=e.charAt(Math.floor(Math.random()*e.length));return t};import{Generator as H}from"@onlive.ai/tracker/generator";import{Session as l}from"@onlive.ai/tracker/session";var c="chatbot",u=class o{static hasSession(){return!!l.getCookie(c)}static getSession(e={role:"guest",regenerate:!1}){e.regenerate&&(l.id=H.uuid(),l.deleteCookie(c));let t=l.getCookie(c);return t&&o.isValidSession(t,e.role)?t:o.createSession(e.role)}static createSession(e){let t={externalId:e==="agent"?String(o.getUserId()||l.id):l.id,secret:S(16),createdAt:new Date().toISOString()};return l.setCookie(c,t,3600*24*365),t}static isValidSession(e,t){if(t==="guest")return!0;let i=o.getUserId();return!!(i&&String(i)===e.externalId)}static getUserId(){return l.getCookie("user-id",{objectKey:"userId",storageKey:"user",storageType:"localStorage",ttl:3600*24*365,preserveData:!0})}static updateSessionWithRegistrationData(e){let t=l.getCookie(c);if(t||(t=o.createSession("guest")),t){let i={...t,registrationData:e};l.setCookie(c,i,3600*24*365)}}static hasRegistrationData(){return!!l.getCookie(c)?.registrationData}static async getAgentInfo(e){return fetch(`${e}/api/v1/auth/user-info`,{credentials:"include"}).then(t=>t.json())}static getRegistrationData(){return l.getCookie(c)?.registrationData}};var P="lk.chat",O="lk.transcription",k="lk.events",h="typing-indicator";var b=class extends K{},w=class{constructor(e){this.listeners=new Set;this.typingListeners=new Set;this.transcriptionMap=new Map;this.abortControllers={register:new AbortController,createRoom:new AbortController,quickStart:new AbortController,closeRoom:new AbortController,evaluateRoom:new AbortController,persistMessage:new AbortController,sendMessageReport:new AbortController,deleteMessageReport:new AbortController,updateMessageReactions:new AbortController,getRooms:new AbortController};this.authToken=null;this.firebaseUnsubscribers={};this.seenRequestIds=new Set;this.lastSnapshotById=new Map;this.handleIncomingMessage=async(e,t)=>{let i=e?.info?.id,s=e.info?.attributes?.["lk.segment_id"];s&&(this.transcriptionMap.has(s)?i=this.transcriptionMap.get(s)||"":this.transcriptionMap.set(s,i));let n=t?.identity?this.room.getParticipantByIdentity(t.identity):void 0,r="";for await(let g of e)r+=g,this.emitMessage({id:i,timestamp:Date.now(),message:r,assets:JSON.parse(e.info?.attributes?.assets||"[]"),from:n});this.messagePersistence==="client"&&this.persistMessage({roomId:this.room.id,content:r,externalId:i,identity:n?.identity,kind:n?.kind})};this.emitMessage=e=>{for(let t of this.listeners)t([e])};this.handleDataReceived=(e,t,i,s)=>{if(s===h)try{let n=JSON.parse(new TextDecoder().decode(e));if(n.type==="typing"&&n.participantId!==this.room.localParticipant.identity){let r={type:"typing",isTyping:n.isTyping,timestamp:n.timestamp,participantId:n.participantId};this.emitTypingIndicator(r)}}catch(n){console.warn("Failed to parse typing indicator:",n)}};this.emitTypingIndicator=e=>{for(let t of this.typingListeners)t(e)};this.apiUrl=e.apiUrl,this.authUrl=e.authUrl,this.organizationId=e.organizationId,this.channelTopic=e.channelTopic||P,this.transcriptionTopic=e.transcriptionTopic||O,this.eventsTopic=e.eventsTopic||k,this.messagePersistence=e.messagePersistence||"disabled",this.agentInitialModalities=e.agentInitialModalities,this.agentModalities=e.agentModalities,this.room=this.createRoomInstance(),e.firebaseConfig&&this.initializeFirebase(e.firebaseConfig)}createRoomInstance(){return new b({adaptiveStream:!0,dynacast:!0})}ensureRoom(){return this.room||(this.room=this.createRoomInstance()),this.room}initializeFirebase(e){this.firebaseApi=new p({config:e}),this.presencePath=`orgs/${this.organizationId}/presence`,this.callsPath=`orgs/${this.organizationId}/calls`}initializeRoomHandlers(){try{this.room.unregisterTextStreamHandler(this.channelTopic),this.room.unregisterTextStreamHandler(this.transcriptionTopic)}catch{}this.room.off(y.DataReceived,this.handleDataReceived),this.room.registerTextStreamHandler(this.channelTopic,this.handleIncomingMessage),this.room.registerTextStreamHandler(this.transcriptionTopic,this.handleIncomingMessage),this.room.on(y.DataReceived,this.handleDataReceived)}async registerUser(e,t,i,s){let n=await a(`${this.apiUrl}/users/register`,{method:"POST",body:JSON.stringify({externalId:e,secret:t,...i,metadata:s}),headers:{"X-Onlive-Organization-Id":this.organizationId,"Content-Type":"application/json"},signal:this.abortControllers.register.signal});if(!n.token)throw new Error("Registration failed: No token received from server");return this.authToken=n.token,n}async registerAgent(e,t){let i=m.getCookie("livekit-agent-token");if(i){if(this.decodeJwtPayload(i)?.username===t.name)return this.authToken=i,i;m.deleteCookie("livekit-agent-token")}let s=await a(`${this.authUrl}/admins/register`,{method:"POST",body:JSON.stringify({externalId:e,name:t.name,email:t.email,avatar:t.avatar}),headers:{"X-Onlive-Organization-Id":this.organizationId,"Content-Type":"application/json"},credentials:"include",signal:this.abortControllers.register.signal});return m.setCookie("livekit-agent-token",s.token,1440*60),this.authToken=s.token,s.token}decodeJwtPayload(e){try{let t=e.split(".");if(t.length!==3)return null;let i=t[1],s=atob(i.replace(/-/g,"+").replace(/_/g,"/"));return JSON.parse(s)}catch{return null}}async quickStart(e){let t=e;console.log("[ConversationService] Starting quickStart with options:",t),this.room=this.ensureRoom(),(this.agentInitialModalities||this.agentModalities)&&(t={...t,room:{...t.room,metadata:{...this.agentInitialModalities&&{agentInitialModalities:this.agentInitialModalities},...this.agentModalities&&{agentModalities:this.agentModalities},...t.room.metadata}}});let i=await a(`${this.apiUrl}/rooms/quick-start`,{method:"POST",body:JSON.stringify(t),headers:{"X-Onlive-Organization-Id":this.organizationId,"Content-Type":"application/json"},signal:this.abortControllers.quickStart.signal});if(!i.user?.token)throw new Error("Quick start failed: No user token received from server");this.authToken=i.user.token;let s={id:i.room.id,groupId:i.room.groupId||"",token:i.room.token,wsURL:i.room.wsURL,createdAt:i.room.createdAt||new Date().toISOString(),affinity:i.room.affinity};return this.setRoomMetadata(s),this.setupParticipantAttributesHandler(),this.room.connect(s.wsURL,s.token),this.initializeRoomHandlers(),this.room}async createRoom(e){if(!this.authToken)throw new Error("Cannot create room: No authentication token. Call registerUser() first.");this.room=this.ensureRoom();let{initialMessage:t,...i}=e;(this.agentInitialModalities||this.agentModalities)&&(i.metadata={...this.agentInitialModalities&&{agentInitialModalities:this.agentInitialModalities},...this.agentModalities&&{agentModalities:this.agentModalities},...i.metadata});let s=await a(`${this.apiUrl}/rooms`,{method:"POST",body:JSON.stringify(i),headers:{Authorization:`Bearer ${this.authToken}`,"X-Onlive-Organization-Id":this.organizationId,"Content-Type":"application/json"},signal:this.abortControllers.createRoom.signal});return this.setRoomMetadata(s),this.setupParticipantAttributesHandler(),this.room.connect(s.wsURL,s.token).then(async()=>{if(t)try{await this.sendMessage(t)}catch(n){console.error("[ConversationService] Failed to send initial message:",n)}}),this.initializeRoomHandlers(),this.room}async joinRoom(e,t,i,s){let n=await a(`${this.apiUrl}/rooms/${e}/join`,{method:"POST",body:JSON.stringify({timezone:t,language:i,...s??{}}),headers:{Authorization:`Bearer ${this.authToken}`,"X-Onlive-Organization-Id":this.organizationId,"Content-Type":"application/json"},signal:this.abortControllers.createRoom.signal});return this.setRoomMetadata(n),this.setupParticipantAttributesHandler(),await this.room.connect(n.wsURL,n.token),this.initializeRoomHandlers(),this.room}setRoomMetadata(e){this.room.id=e.id,this.room.groupId=e.groupId,this.room.createdAt=e.createdAt,this.room.connectedAt=new Date().toISOString(),this.room.affinity=e.affinity}setupParticipantAttributesHandler(){this.room.on(y.ParticipantAttributesChanged,e=>{e.identity===this.room.localParticipant.identity&&u.updateSessionWithRegistrationData(e.attributes)})}async evaluateRoom(e){let t=e.roomId||this.room?.id;if(!t)throw new Error("Room ID is required for evaluation");return a(`${this.apiUrl}/rooms/${t}/evaluate`,{method:"POST",body:JSON.stringify({rating:e.rating,comment:e.comment}),headers:{Authorization:`Bearer ${this.authToken}`,"X-Onlive-Organization-Id":this.organizationId,"Content-Type":"application/json"},signal:this.abortControllers.evaluateRoom.signal})}async closeRoom(){this.room&&(await a(`${this.apiUrl}/rooms/${this.room.id}/close`,{method:"POST",headers:{Authorization:`Bearer ${this.authToken}`,"X-Onlive-Organization-Id":this.organizationId,"Content-Type":"application/json"},signal:this.abortControllers.closeRoom.signal}),await this.stopAndUnpublishLocalTracks())}async disconnect(){this.room&&(await this.stopAndUnpublishLocalTracks(),this.room.removeAllListeners(),await this.room.disconnect(),this.room=null)}async stopAndUnpublishLocalTracks(){let e=this.room?.localParticipant;if(!e)return;await Promise.allSettled([e.setMicrophoneEnabled(!1),e.setCameraEnabled(!1),e.setScreenShareEnabled(!1)]);let t=Array.from(e.trackPublications.values());await Promise.all(t.map(async i=>{let s=i.track;if(s)try{await e.unpublishTrack(s,!0)}catch{s.stop()}}))}async disconnectAndCloseRoom(){await this.closeRoom(),await this.disconnect()}async readRoom(e){return a(`${this.apiUrl}/rooms/${e}/read`,{method:"POST",headers:{Authorization:`Bearer ${this.authToken}`,"X-Onlive-Organization-Id":this.organizationId,"Content-Type":"application/json"},signal:this.abortControllers.persistMessage.signal})}async getRooms(e){let t=new URLSearchParams;return e.page&&t.append("page",e.page.toString()),e.limit&&t.append("limit",e.limit.toString()),e.offset&&t.append("offset",e.offset.toString()),e.orderBy&&t.append("orderBy",e.orderBy),e.orderDir&&t.append("orderDir",e.orderDir),e.ids?.length&&t.append("ids",e.ids.join(",")),e.with?.length&&t.append("with",e.with.join(",")),e.count?.length&&t.append("count",e.count.join(",")),e.latestOnly&&t.append("latestOnly",e.latestOnly.toString()),e.includeUnread&&t.append("includeUnread",e.includeUnread.toString()),e.roomStatus&&t.append("roomStatus",e.roomStatus),e.archived&&t.append("archived",e.archived.toString()),e.participantIds?.length&&t.append("participantIds",e.participantIds.join(",")),e.participantExternalIds?.length&&t.append("participantExternalIds",e.participantExternalIds.join(",")),e.groupId&&t.append("groupId",e.groupId),e.hasMessages!==void 0&&t.append("hasMessages",e.hasMessages.toString()),a(`${this.authUrl}/rooms?${t}`,{method:"GET",headers:{"X-Onlive-Organization-Id":this.organizationId,"Content-Type":"application/json"},credentials:"include",signal:this.abortControllers.getRooms.signal})}async sendMessage(e,t){let i=await this.room.localParticipant.sendText(e,{topic:this.channelTopic,attributes:t});this.emitMessage({id:i.id,timestamp:Date.now(),message:e,assets:JSON.parse(t?.assets||"[]"),from:this.room.localParticipant}),this.messagePersistence==="client"&&this.persistMessage({roomId:this.room.id,content:e,externalId:i.id,identity:this.room.localParticipant?.identity,kind:this.room.localParticipant?.kind})}async persistMessage(e){return a(`${this.apiUrl}/messages/create`,{method:"POST",body:JSON.stringify(e),headers:{Authorization:`Bearer ${this.authToken}`,"X-Onlive-Organization-Id":this.organizationId,"Content-Type":"application/json"},signal:this.abortControllers.persistMessage.signal})}async getMessages(e){let t=new URLSearchParams;return e.limit&&t.append("limit",e.limit.toString()),e.with&&t.append("with",e.with.join(",")),(await a(`${this.apiUrl}/messages/search${t.size?`?${t.toString()}`:""}`,{method:"POST",body:JSON.stringify(e),headers:{Authorization:`Bearer ${this.authToken}`,"X-Onlive-Organization-Id":this.organizationId,"Content-Type":"application/json"},signal:this.abortControllers.createRoom.signal})).items}async sendMessageReport(e){try{return a(`${this.apiUrl}/messages/${e.messageId}/report`,{method:"POST",headers:{Authorization:`Bearer ${this.authToken}`,"X-Onlive-Organization-Id":this.organizationId,"Content-Type":"application/json"},signal:this.abortControllers.sendMessageReport.signal})}catch(t){console.error("Error sending message report:",t)}}async deleteMessageReport(e){try{return a(`${this.apiUrl}/messages/${e.messageId}/report`,{method:"DELETE",headers:{Authorization:`Bearer ${this.authToken}`,"X-Onlive-Organization-Id":this.organizationId,"Content-Type":"application/json"},signal:this.abortControllers.deleteMessageReport.signal})}catch(t){console.error("Error deleting message report:",t)}}async updateMessageReactions(e){try{return a(`${this.apiUrl}/messages/${e.messageId}/reactions`,{method:"PATCH",body:JSON.stringify({add:e.add||[],remove:e.remove||[]}),headers:{Authorization:`Bearer ${this.authToken}`,"X-Onlive-Organization-Id":this.organizationId,"Content-Type":"application/json"},signal:this.abortControllers.updateMessageReactions.signal})}catch(t){console.error("Error updating message reactions:",t)}}subscribeMessages(e){return this.listeners.add(e),()=>{this.listeners.delete(e)}}async sendTypingIndicator(e){if(!(!this.room||this.room.state!=="connected"))try{let t=new TextEncoder().encode(JSON.stringify({type:"typing",isTyping:e,timestamp:Date.now(),participantId:this.room.localParticipant.identity}));await this.room.localParticipant.publishData(t,{reliable:!1,topic:h})}catch(t){console.warn("Failed to send typing indicator:",t)}}subscribeTypingIndicators(e){return this.typingListeners.add(e),()=>{this.typingListeners.delete(e)}}unsubscribeTypingIndicators(e){this.typingListeners.delete(e)}async sendContextualEvent(e){try{let t=JSON.stringify(e);await this.room.localParticipant.sendText(t,{topic:this.eventsTopic})}catch(t){console.warn("Failed to send event:",t)}}async requestNewRoom(e){return a(`${this.apiUrl}/rooms/request-new`,{method:"POST",body:JSON.stringify(e),headers:{Authorization:`Bearer ${this.authToken}`,"X-Onlive-Organization-Id":this.organizationId,"Content-Type":"application/json"}})}async confirmRoomRequest(e){return a(`${this.apiUrl}/rooms/confirm-call`,{method:"POST",body:JSON.stringify({roomId:e}),headers:{Authorization:`Bearer ${this.authToken}`,"X-Onlive-Organization-Id":this.organizationId,"Content-Type":"application/json"}})}async cancelRoomRequest(e){return a(`${this.apiUrl}/rooms/cancel-call`,{method:"POST",body:JSON.stringify({roomId:e}),headers:{Authorization:`Bearer ${this.authToken}`,"X-Onlive-Organization-Id":this.organizationId,"Content-Type":"application/json"}})}async finishCall(){if(this.room?.id)return a(`${this.apiUrl}/rooms/finish-call`,{method:"POST",body:JSON.stringify({roomId:this.room.id}),headers:{Authorization:`Bearer ${this.authToken}`,"X-Onlive-Organization-Id":this.organizationId,"Content-Type":"application/json"}})}isFirebaseEnabled(){return!!(this.firebaseApi&&this.presencePath&&this.callsPath)}getFirebase(){if(!this.firebaseApi||!this.presencePath||!this.callsPath)throw new Error("Firebase is not initialized. Provide firebaseConfig in constructor.");return{api:this.firebaseApi,presencePath:this.presencePath,callsPath:this.callsPath}}buildAgentPresencePath(e){return`${this.presencePath}/${e}`}onPresenceChange(e){let{api:t,presencePath:i}=this.getFirebase();return t.onChildChanged(i,(s,n)=>e(s,n))}onPresenceAgentChange(e,t){let{api:i}=this.getFirebase();return i.onValue(this.buildAgentPresencePath(e),(s,n)=>t(s,n))}async createCallRequest(e){let{api:t,callsPath:i}=this.getFirebase(),n=(await a(`${this.apiUrl}/rooms/call-request`,{method:"POST",headers:{Authorization:`Bearer ${this.authToken}`,"X-Onlive-Organization-Id":this.organizationId,"Content-Type":"application/json"},body:JSON.stringify(e)})).id;return t.onDisconnectUpdate(`${i}/${n}`,{status:"disconnected"}),n}onNewCallRequest(e){let{api:t,callsPath:i}=this.getFirebase();return t.onChildAdded(i,(s,n)=>e(s,{...n,id:s}))}onCallRequestChange(e){let{api:t,callsPath:i}=this.getFirebase();return t.onChildChanged(i,(s,n)=>e(s,{...n,id:s}))}onCallRequestRemoved(e){let{api:t,callsPath:i}=this.getFirebase();return t.onChildRemoved(i,s=>e(s))}async acceptCallRequest(e){let{api:t,callsPath:i}=this.getFirebase();return await t.cancelOnDisconnect(`${i}/${e}`),t.update(`${i}/${e}`,{status:"accepted"})}async cancelCallRequest(e){let{api:t,callsPath:i}=this.getFirebase();await t.cancelOnDisconnect(`${i}/${e}`),await a(`${this.apiUrl}/rooms/call-request/cancel`,{method:"POST",headers:{Authorization:`Bearer ${this.authToken}`,"X-Onlive-Organization-Id":this.organizationId,"Content-Type":"application/json"},body:JSON.stringify({callId:e})})}async cancelOnDisconnect(e){let{api:t,callsPath:i}=this.getFirebase();await t.cancelOnDisconnect(`${i}/${e}`)}subscribePendingRequests(e,t={}){let{api:i,callsPath:s}=this.getFirebase();t.resetSeen&&this.seenRequestIds.clear(),this.firebaseUnsubscribers["pending-requests"]?.();let n=i.query(s,{orderBy:"child",childKey:"status",equalTo:"pending"}),r=i.onChildAddedQuery(n,(g,M)=>{if(!g||this.seenRequestIds.has(g))return;let x={...M,id:g};this.seenRequestIds.add(g),e(g,x)});return this.firebaseUnsubscribers["pending-requests"]=r,()=>{r?.(),delete this.firebaseUnsubscribers["pending-requests"]}}subscribeRequestChanges(e){let{api:t,callsPath:i}=this.getFirebase();this.firebaseUnsubscribers["request-changes"]?.();let s=t.onChildChanged(i,(n,r)=>{if(!n)return;let g=JSON.stringify(r);this.lastSnapshotById.get(n)!==g&&(this.lastSnapshotById.set(n,g),e(n,{...r,id:n}))});return this.firebaseUnsubscribers["request-changes"]=s,()=>{s?.(),delete this.firebaseUnsubscribers["request-changes"]}}async tryAcceptRequest(e){let{api:t,callsPath:i}=this.getFirebase(),s=`${i}/${e}`;return await t.transaction(s,r=>r&&(r.status==="pending"?{...r,status:"accepted"}:r)),(await t.getOnce(s))?.status==="accepted"}onRoomSync(e,t){let{api:i}=this.getFirebase(),s=`orgs/${this.organizationId}/rooms/${e}/sync`;return i.onValue(s,(n,r)=>{t(r)})}async clearRoomSync(e,t){let{api:i}=this.getFirebase(),s=`orgs/${this.organizationId}/rooms/${e}/sync`;await i.write(s,{needsSync:!1,reason:t||null,timestamp:Date.now()})}onNewRoomRequest(e,t){let{api:i}=this.getFirebase(),s=`orgs/${this.organizationId}/rooms/${e}/call`;return i.onValue(s,(n,r)=>{t(r)})}unsubscribeAllFirebase(){Object.values(this.firebaseUnsubscribers).forEach(e=>e?.()),this.firebaseUnsubscribers={}}async destroy(){this.unsubscribeAllFirebase(),this.listeners.clear(),this.typingListeners.clear(),this.transcriptionMap.clear(),this.seenRequestIds.clear(),this.lastSnapshotById.clear(),Object.values(this.abortControllers).forEach(e=>e.abort()),await this.disconnect()}};export{w as ConversationService,b as Room};
@@ -1,2 +1,2 @@
1
- /*! @onlive.ai/common-121 v0.2.199 | © 2026 Onlive.ai */
2
- "use strict";var s=Object.defineProperty;var o=Object.getOwnPropertyDescriptor;var a=Object.getOwnPropertyNames;var g=Object.prototype.hasOwnProperty;var p=(e,t)=>{for(var r in t)s(e,r,{get:t[r],enumerable:!0})},d=(e,t,r,i)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of a(t))!g.call(e,n)&&n!==r&&s(e,n,{get:()=>t[n],enumerable:!(i=o(t,n))||i.enumerable});return e};var m=e=>d(s({},"__esModule",{value:!0}),e);var y={};p(y,{CHAT_TOPIC:()=>u,EVENTS_TOPIC:()=>l,TRANSCRIPTION_TOPIC:()=>c,TYPING_INDICATOR_TOPIC:()=>x});module.exports=m(y);var u="lk.chat",c="lk.transcription",l="lk.events",x="typing-indicator";0&&(module.exports={CHAT_TOPIC,EVENTS_TOPIC,TRANSCRIPTION_TOPIC,TYPING_INDICATOR_TOPIC});
1
+ /*! @onlive.ai/common-121 v0.2.228 | © 2026 Onlive.ai */
2
+ "use strict";var i=Object.defineProperty;var a=Object.getOwnPropertyDescriptor;var o=Object.getOwnPropertyNames;var g=Object.prototype.hasOwnProperty;var p=(e,t)=>{for(var s in t)i(e,s,{get:t[s],enumerable:!0})},d=(e,t,s,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of o(t))!g.call(e,n)&&n!==s&&i(e,n,{get:()=>t[n],enumerable:!(r=a(t,n))||r.enumerable});return e};var m=e=>d(i({},"__esModule",{value:!0}),e);var y={};p(y,{CHAT_TOPIC:()=>u,EVENTS_TOPIC:()=>l,TRANSCRIPTION_TOPIC:()=>c,TYPING_INDICATOR_TOPIC:()=>x});module.exports=m(y);var u="lk.chat",c="lk.transcription",l="lk.events",x="typing-indicator";0&&(module.exports={CHAT_TOPIC,EVENTS_TOPIC,TRANSCRIPTION_TOPIC,TYPING_INDICATOR_TOPIC});