@dxos/plugin-thread 0.8.1 → 0.8.2-main.10c050d

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 (407) hide show
  1. package/dist/lib/browser/ChannelContainer-XFNGSLHL.mjs +15 -0
  2. package/dist/lib/browser/ChatContainer-JWRI73OG.mjs +14 -0
  3. package/dist/lib/browser/app-graph-builder-K3CFBN7V.mjs +171 -0
  4. package/dist/lib/browser/app-graph-builder-K3CFBN7V.mjs.map +7 -0
  5. package/dist/lib/browser/call-manager-I4IKVCAK.mjs +23 -0
  6. package/dist/lib/browser/call-manager-I4IKVCAK.mjs.map +7 -0
  7. package/dist/lib/browser/{chunk-QDJ3Y6WF.mjs → chunk-5P5BH5GE.mjs} +57 -35
  8. package/dist/lib/browser/chunk-5P5BH5GE.mjs.map +7 -0
  9. package/dist/lib/browser/chunk-5PGLGDIP.mjs +983 -0
  10. package/dist/lib/browser/chunk-5PGLGDIP.mjs.map +7 -0
  11. package/dist/lib/browser/chunk-G3TS64FP.mjs +351 -0
  12. package/dist/lib/browser/chunk-G3TS64FP.mjs.map +7 -0
  13. package/dist/lib/browser/{chunk-WBJLUUOK.mjs → chunk-IIUTBDVB.mjs} +4 -4
  14. package/dist/lib/browser/chunk-IIUTBDVB.mjs.map +7 -0
  15. package/dist/lib/browser/chunk-IYY42OE2.mjs +545 -0
  16. package/dist/lib/browser/chunk-IYY42OE2.mjs.map +7 -0
  17. package/dist/lib/browser/chunk-JKQUJOTX.mjs +31 -0
  18. package/dist/lib/browser/chunk-JKQUJOTX.mjs.map +7 -0
  19. package/dist/lib/browser/chunk-N2V6MV6B.mjs +21 -0
  20. package/dist/lib/browser/chunk-N2V6MV6B.mjs.map +7 -0
  21. package/dist/lib/browser/{chunk-EP6MRLY7.mjs → chunk-R5MDLUPC.mjs} +5 -3
  22. package/dist/lib/browser/chunk-R5MDLUPC.mjs.map +7 -0
  23. package/dist/lib/browser/chunk-RJGJXXWK.mjs +1708 -0
  24. package/dist/lib/browser/chunk-RJGJXXWK.mjs.map +7 -0
  25. package/dist/lib/browser/chunk-WDOQXTI2.mjs +126 -0
  26. package/dist/lib/browser/chunk-WDOQXTI2.mjs.map +7 -0
  27. package/dist/lib/browser/index.mjs +107 -41
  28. package/dist/lib/browser/index.mjs.map +4 -4
  29. package/dist/lib/browser/{intent-resolver-QAY4FLLM.mjs → intent-resolver-YUYZCTLF.mjs} +102 -74
  30. package/dist/lib/browser/intent-resolver-YUYZCTLF.mjs.map +7 -0
  31. package/dist/lib/browser/markdown-4EC3OCF2.mjs +169 -0
  32. package/dist/lib/browser/markdown-4EC3OCF2.mjs.map +7 -0
  33. package/dist/lib/browser/meta.json +1 -1
  34. package/dist/lib/browser/react-root-YYDCVHGL.mjs +27 -0
  35. package/dist/lib/browser/react-root-YYDCVHGL.mjs.map +7 -0
  36. package/dist/lib/browser/react-surface-MEYBFPBC.mjs +108 -0
  37. package/dist/lib/browser/react-surface-MEYBFPBC.mjs.map +7 -0
  38. package/dist/lib/browser/{settings-4FEC7EAX.mjs → settings-KVBQQSO5.mjs} +5 -5
  39. package/dist/lib/browser/settings-KVBQQSO5.mjs.map +7 -0
  40. package/dist/lib/browser/{state-PNMSLKAH.mjs → state-RKL5MSDP.mjs} +7 -7
  41. package/dist/lib/browser/state-RKL5MSDP.mjs.map +7 -0
  42. package/dist/lib/browser/types/index.mjs +16 -0
  43. package/dist/lib/browser/types/index.mjs.map +7 -0
  44. package/dist/lib/node/ChannelContainer-F24RHJPX.cjs +36 -0
  45. package/dist/lib/node/ChannelContainer-F24RHJPX.cjs.map +7 -0
  46. package/dist/lib/node/ChatContainer-EE3FPSYO.cjs +35 -0
  47. package/dist/lib/node/ChatContainer-EE3FPSYO.cjs.map +7 -0
  48. package/dist/lib/node/app-graph-builder-IRE3GYKE.cjs +179 -0
  49. package/dist/lib/node/app-graph-builder-IRE3GYKE.cjs.map +7 -0
  50. package/dist/lib/node/call-manager-FZ4OMTB6.cjs +37 -0
  51. package/dist/lib/node/call-manager-FZ4OMTB6.cjs.map +7 -0
  52. package/dist/lib/node/chunk-4B3PPXA6.cjs +371 -0
  53. package/dist/lib/node/chunk-4B3PPXA6.cjs.map +7 -0
  54. package/dist/lib/node/{chunk-NQ5DTPOY.cjs → chunk-4YSNVPWU.cjs} +10 -8
  55. package/dist/lib/node/chunk-4YSNVPWU.cjs.map +7 -0
  56. package/dist/lib/node/chunk-6B3M6XRE.cjs +984 -0
  57. package/dist/lib/node/chunk-6B3M6XRE.cjs.map +7 -0
  58. package/dist/lib/node/chunk-AUIU6JGD.cjs +549 -0
  59. package/dist/lib/node/chunk-AUIU6JGD.cjs.map +7 -0
  60. package/dist/lib/node/chunk-ECIVLX56.cjs +1731 -0
  61. package/dist/lib/node/chunk-ECIVLX56.cjs.map +7 -0
  62. package/dist/lib/node/{chunk-S2A6BXEA.cjs → chunk-EYAUPLHT.cjs} +16 -10
  63. package/dist/lib/node/chunk-EYAUPLHT.cjs.map +7 -0
  64. package/dist/lib/node/{chunk-AKINTFBH.cjs → chunk-FUXJAVFZ.cjs} +50 -29
  65. package/dist/lib/node/chunk-FUXJAVFZ.cjs.map +7 -0
  66. package/dist/lib/node/{chunk-ONLWOUYZ.cjs → chunk-HLMCEE5K.cjs} +7 -7
  67. package/dist/lib/node/{chunk-ONLWOUYZ.cjs.map → chunk-HLMCEE5K.cjs.map} +2 -2
  68. package/dist/lib/node/chunk-LR5NENBE.cjs +54 -0
  69. package/dist/lib/node/chunk-LR5NENBE.cjs.map +7 -0
  70. package/dist/lib/node/chunk-TKHJVC2C.cjs +147 -0
  71. package/dist/lib/node/chunk-TKHJVC2C.cjs.map +7 -0
  72. package/dist/lib/node/index.cjs +142 -80
  73. package/dist/lib/node/index.cjs.map +4 -4
  74. package/dist/lib/node/{intent-resolver-S6FE5OR7.cjs → intent-resolver-MZ3HADNY.cjs} +108 -82
  75. package/dist/lib/node/intent-resolver-MZ3HADNY.cjs.map +7 -0
  76. package/dist/lib/node/markdown-NJDPXIKD.cjs +178 -0
  77. package/dist/lib/node/markdown-NJDPXIKD.cjs.map +7 -0
  78. package/dist/lib/node/meta.json +1 -1
  79. package/dist/lib/node/react-root-HQDBRGD3.cjs +51 -0
  80. package/dist/lib/node/react-root-HQDBRGD3.cjs.map +7 -0
  81. package/dist/lib/node/react-surface-KY5KFKVQ.cjs +122 -0
  82. package/dist/lib/node/react-surface-KY5KFKVQ.cjs.map +7 -0
  83. package/dist/lib/node/{settings-IXCPE55J.cjs → settings-H45P5YO2.cjs} +9 -9
  84. package/dist/lib/node/settings-H45P5YO2.cjs.map +7 -0
  85. package/dist/lib/node/{state-AT73KPGZ.cjs → state-IY5XX3H2.cjs} +10 -10
  86. package/dist/lib/node/state-IY5XX3H2.cjs.map +7 -0
  87. package/dist/lib/node/{types.cjs → types/index.cjs} +12 -6
  88. package/dist/lib/node/types/index.cjs.map +7 -0
  89. package/dist/lib/node-esm/ChannelContainer-AOXWXM53.mjs +16 -0
  90. package/dist/lib/node-esm/ChannelContainer-AOXWXM53.mjs.map +7 -0
  91. package/dist/lib/node-esm/ChatContainer-UJYPQMLV.mjs +15 -0
  92. package/dist/lib/node-esm/ChatContainer-UJYPQMLV.mjs.map +7 -0
  93. package/dist/lib/node-esm/app-graph-builder-I5VMPLE4.mjs +172 -0
  94. package/dist/lib/node-esm/app-graph-builder-I5VMPLE4.mjs.map +7 -0
  95. package/dist/lib/node-esm/call-manager-B3D3RK3R.mjs +24 -0
  96. package/dist/lib/node-esm/call-manager-B3D3RK3R.mjs.map +7 -0
  97. package/dist/lib/node-esm/chunk-CSO73XLB.mjs +546 -0
  98. package/dist/lib/node-esm/chunk-CSO73XLB.mjs.map +7 -0
  99. package/dist/lib/node-esm/{chunk-42F2DTMM.mjs → chunk-ESQC6SYE.mjs} +4 -4
  100. package/dist/lib/node-esm/chunk-ESQC6SYE.mjs.map +7 -0
  101. package/dist/lib/node-esm/chunk-J323VQ4P.mjs +127 -0
  102. package/dist/lib/node-esm/chunk-J323VQ4P.mjs.map +7 -0
  103. package/dist/lib/node-esm/chunk-JJLYSLLU.mjs +23 -0
  104. package/dist/lib/node-esm/chunk-JJLYSLLU.mjs.map +7 -0
  105. package/dist/lib/node-esm/{chunk-WLY2HMDB.mjs → chunk-K4KAUOKT.mjs} +5 -3
  106. package/dist/lib/node-esm/chunk-K4KAUOKT.mjs.map +7 -0
  107. package/dist/lib/node-esm/{chunk-J56FORYF.mjs → chunk-O3V45YJP.mjs} +57 -35
  108. package/dist/lib/node-esm/chunk-O3V45YJP.mjs.map +7 -0
  109. package/dist/lib/node-esm/chunk-PGRP3O4O.mjs +33 -0
  110. package/dist/lib/node-esm/chunk-PGRP3O4O.mjs.map +7 -0
  111. package/dist/lib/node-esm/chunk-POKXRTII.mjs +352 -0
  112. package/dist/lib/node-esm/chunk-POKXRTII.mjs.map +7 -0
  113. package/dist/lib/node-esm/chunk-WBNC7KMA.mjs +1710 -0
  114. package/dist/lib/node-esm/chunk-WBNC7KMA.mjs.map +7 -0
  115. package/dist/lib/node-esm/chunk-X6AUQDTE.mjs +984 -0
  116. package/dist/lib/node-esm/chunk-X6AUQDTE.mjs.map +7 -0
  117. package/dist/lib/node-esm/index.mjs +107 -41
  118. package/dist/lib/node-esm/index.mjs.map +4 -4
  119. package/dist/lib/node-esm/{intent-resolver-OURFRSSF.mjs → intent-resolver-CU22OPAH.mjs} +102 -74
  120. package/dist/lib/node-esm/intent-resolver-CU22OPAH.mjs.map +7 -0
  121. package/dist/lib/node-esm/markdown-HRGGO7IA.mjs +170 -0
  122. package/dist/lib/node-esm/markdown-HRGGO7IA.mjs.map +7 -0
  123. package/dist/lib/node-esm/meta.json +1 -1
  124. package/dist/lib/node-esm/react-root-MKN5SK3G.mjs +28 -0
  125. package/dist/lib/node-esm/react-root-MKN5SK3G.mjs.map +7 -0
  126. package/dist/lib/node-esm/react-surface-J2C7CVX7.mjs +109 -0
  127. package/dist/lib/node-esm/react-surface-J2C7CVX7.mjs.map +7 -0
  128. package/dist/lib/node-esm/{settings-ZUJQ4LWI.mjs → settings-IJGUOU3F.mjs} +5 -5
  129. package/dist/lib/node-esm/settings-IJGUOU3F.mjs.map +7 -0
  130. package/dist/lib/node-esm/{state-SSDX5O67.mjs → state-6AUTNROZ.mjs} +7 -7
  131. package/dist/lib/node-esm/state-6AUTNROZ.mjs.map +7 -0
  132. package/dist/lib/node-esm/types/index.mjs +17 -0
  133. package/dist/lib/node-esm/types/index.mjs.map +7 -0
  134. package/dist/types/src/ThreadPlugin.d.ts.map +1 -1
  135. package/dist/types/src/calls/call-manager.d.ts +77 -0
  136. package/dist/types/src/calls/call-manager.d.ts.map +1 -0
  137. package/dist/types/src/calls/call-swarm-synchronizer.d.ts +66 -0
  138. package/dist/types/src/calls/call-swarm-synchronizer.d.ts.map +1 -0
  139. package/dist/types/src/calls/index.d.ts +7 -0
  140. package/dist/types/src/calls/index.d.ts.map +1 -0
  141. package/dist/types/src/calls/media-manager.d.ts +60 -0
  142. package/dist/types/src/calls/media-manager.d.ts.map +1 -0
  143. package/dist/types/src/calls/speaking-monitor.d.ts +24 -0
  144. package/dist/types/src/calls/speaking-monitor.d.ts.map +1 -0
  145. package/dist/types/src/calls/types.d.ts +45 -0
  146. package/dist/types/src/calls/types.d.ts.map +1 -0
  147. package/dist/types/src/calls/util/audio.d.ts +6 -0
  148. package/dist/types/src/calls/util/audio.d.ts.map +1 -0
  149. package/dist/types/src/calls/util/calls-service.d.ts +72 -0
  150. package/dist/types/src/calls/util/calls-service.d.ts.map +1 -0
  151. package/dist/types/src/calls/util/history-cache.d.ts +11 -0
  152. package/dist/types/src/calls/util/history-cache.d.ts.map +1 -0
  153. package/dist/types/src/calls/util/index.d.ts +5 -0
  154. package/dist/types/src/calls/util/index.d.ts.map +1 -0
  155. package/dist/types/src/calls/util/media.d.ts +6 -0
  156. package/dist/types/src/calls/util/media.d.ts.map +1 -0
  157. package/dist/types/src/calls/util/stub-media-streams.d.ts +18 -0
  158. package/dist/types/src/calls/util/stub-media-streams.d.ts.map +1 -0
  159. package/dist/types/src/calls/util/task-scheduling.d.ts +17 -0
  160. package/dist/types/src/calls/util/task-scheduling.d.ts.map +1 -0
  161. package/dist/types/src/capabilities/app-graph-builder.d.ts +2 -179
  162. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
  163. package/dist/types/src/capabilities/call-manager.d.ts +5 -0
  164. package/dist/types/src/capabilities/call-manager.d.ts.map +1 -0
  165. package/dist/types/src/capabilities/capabilities.d.ts +13 -1
  166. package/dist/types/src/capabilities/capabilities.d.ts.map +1 -1
  167. package/dist/types/src/capabilities/index.d.ts +8 -179
  168. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  169. package/dist/types/src/capabilities/intent-resolver.d.ts +2 -2
  170. package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -1
  171. package/dist/types/src/capabilities/markdown.d.ts +2 -2
  172. package/dist/types/src/capabilities/markdown.d.ts.map +1 -1
  173. package/dist/types/src/capabilities/react-root.d.ts +7 -0
  174. package/dist/types/src/capabilities/react-root.d.ts.map +1 -0
  175. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  176. package/dist/types/src/components/Call/Call.d.ts +17 -0
  177. package/dist/types/src/components/Call/Call.d.ts.map +1 -0
  178. package/dist/types/src/components/Call/Toolbar.d.ts +16 -0
  179. package/dist/types/src/components/Call/Toolbar.d.ts.map +1 -0
  180. package/dist/types/src/components/Call/index.d.ts +3 -0
  181. package/dist/types/src/components/Call/index.d.ts.map +1 -0
  182. package/dist/types/src/components/CallDebugPanel.d.ts +8 -0
  183. package/dist/types/src/components/CallDebugPanel.d.ts.map +1 -0
  184. package/dist/types/src/components/CallSidebar.d.ts +4 -0
  185. package/dist/types/src/components/CallSidebar.d.ts.map +1 -0
  186. package/dist/types/src/components/ChannelContainer.d.ts +14 -0
  187. package/dist/types/src/components/ChannelContainer.d.ts.map +1 -0
  188. package/dist/types/src/components/ChannelContainer.stories.d.ts +10 -0
  189. package/dist/types/src/components/ChannelContainer.stories.d.ts.map +1 -0
  190. package/dist/types/src/components/Chat.stories.d.ts.map +1 -1
  191. package/dist/types/src/components/ChatContainer.d.ts +9 -7
  192. package/dist/types/src/components/ChatContainer.d.ts.map +1 -1
  193. package/dist/types/src/components/CommentContainer.d.ts +11 -2
  194. package/dist/types/src/components/CommentContainer.d.ts.map +1 -1
  195. package/dist/types/src/components/Comments.stories.d.ts +1 -1
  196. package/dist/types/src/components/Comments.stories.d.ts.map +1 -1
  197. package/dist/types/src/components/CommentsContainer.d.ts +5 -9
  198. package/dist/types/src/components/CommentsContainer.d.ts.map +1 -1
  199. package/dist/types/src/components/Lobby/Lobby.d.ts +15 -0
  200. package/dist/types/src/components/Lobby/Lobby.d.ts.map +1 -0
  201. package/dist/types/src/components/Lobby/index.d.ts +2 -0
  202. package/dist/types/src/components/Lobby/index.d.ts.map +1 -0
  203. package/dist/types/src/components/Media/AudioStream.d.ts +6 -0
  204. package/dist/types/src/components/Media/AudioStream.d.ts.map +1 -0
  205. package/dist/types/src/components/Media/VideoObject.d.ts +15 -0
  206. package/dist/types/src/components/Media/VideoObject.d.ts.map +1 -0
  207. package/dist/types/src/components/Media/VideoObject.stories.d.ts +8 -0
  208. package/dist/types/src/components/Media/VideoObject.stories.d.ts.map +1 -0
  209. package/dist/types/src/components/Media/index.d.ts +3 -0
  210. package/dist/types/src/components/Media/index.d.ts.map +1 -0
  211. package/dist/types/src/components/MessageContainer.d.ts +5 -4
  212. package/dist/types/src/components/MessageContainer.d.ts.map +1 -1
  213. package/dist/types/src/components/Participant/Participant.d.ts +6 -0
  214. package/dist/types/src/components/Participant/Participant.d.ts.map +1 -0
  215. package/dist/types/src/components/Participant/ParticipantGrid.d.ts +11 -0
  216. package/dist/types/src/components/Participant/ParticipantGrid.d.ts.map +1 -0
  217. package/dist/types/src/components/Participant/index.d.ts +3 -0
  218. package/dist/types/src/components/Participant/index.d.ts.map +1 -0
  219. package/dist/types/src/components/ResponsiveGrid/ResponsiveContainer.d.ts +12 -0
  220. package/dist/types/src/components/ResponsiveGrid/ResponsiveContainer.d.ts.map +1 -0
  221. package/dist/types/src/components/ResponsiveGrid/ResponsiveContainer.stories.d.ts +10 -0
  222. package/dist/types/src/components/ResponsiveGrid/ResponsiveContainer.stories.d.ts.map +1 -0
  223. package/dist/types/src/components/ResponsiveGrid/ResponsiveGrid.d.ts +32 -0
  224. package/dist/types/src/components/ResponsiveGrid/ResponsiveGrid.d.ts.map +1 -0
  225. package/dist/types/src/components/ResponsiveGrid/ResponsiveGrid.stories.d.ts +23 -0
  226. package/dist/types/src/components/ResponsiveGrid/ResponsiveGrid.stories.d.ts.map +1 -0
  227. package/dist/types/src/components/ResponsiveGrid/ResponsiveGridItem.d.ts +21 -0
  228. package/dist/types/src/components/ResponsiveGrid/ResponsiveGridItem.d.ts.map +1 -0
  229. package/dist/types/src/components/ResponsiveGrid/index.d.ts +4 -0
  230. package/dist/types/src/components/ResponsiveGrid/index.d.ts.map +1 -0
  231. package/dist/types/src/components/ThreadComplementary.d.ts.map +1 -1
  232. package/dist/types/src/components/ThreadSettings.d.ts.map +1 -1
  233. package/dist/types/src/components/index.d.ts +5 -1
  234. package/dist/types/src/components/index.d.ts.map +1 -1
  235. package/dist/types/src/components/testing.d.ts +101 -54
  236. package/dist/types/src/components/testing.d.ts.map +1 -1
  237. package/dist/types/src/extensions/threads.d.ts.map +1 -1
  238. package/dist/types/src/hooks/analytics.d.ts +3 -3
  239. package/dist/types/src/hooks/analytics.d.ts.map +1 -1
  240. package/dist/types/src/hooks/index.d.ts +2 -1
  241. package/dist/types/src/hooks/index.d.ts.map +1 -1
  242. package/dist/types/src/hooks/useDebugMode.d.ts +2 -0
  243. package/dist/types/src/hooks/useDebugMode.d.ts.map +1 -0
  244. package/dist/types/src/hooks/useStatus.d.ts.map +1 -1
  245. package/dist/types/src/index.d.ts +1 -1
  246. package/dist/types/src/index.d.ts.map +1 -1
  247. package/dist/types/src/meta.d.ts.map +1 -1
  248. package/dist/types/src/peers.stories.d.ts +11 -0
  249. package/dist/types/src/peers.stories.d.ts.map +1 -0
  250. package/dist/types/src/testing/index.d.ts +2 -0
  251. package/dist/types/src/testing/index.d.ts.map +1 -0
  252. package/dist/types/src/testing/stories.d.ts +2 -0
  253. package/dist/types/src/testing/stories.d.ts.map +1 -0
  254. package/dist/types/src/translations.d.ts +35 -56
  255. package/dist/types/src/translations.d.ts.map +1 -1
  256. package/dist/types/src/types/index.d.ts +3 -0
  257. package/dist/types/src/types/index.d.ts.map +1 -0
  258. package/dist/types/src/types/schema.d.ts +317 -0
  259. package/dist/types/src/types/schema.d.ts.map +1 -0
  260. package/dist/types/src/types/types.d.ts +1015 -0
  261. package/dist/types/src/types/types.d.ts.map +1 -0
  262. package/dist/types/src/util.d.ts +2 -0
  263. package/dist/types/src/util.d.ts.map +1 -1
  264. package/dist/types/tsconfig.tsbuildinfo +1 -1
  265. package/package.json +60 -40
  266. package/src/ThreadPlugin.tsx +33 -14
  267. package/src/calls/call-manager.ts +242 -0
  268. package/src/calls/call-swarm-synchronizer.ts +350 -0
  269. package/src/calls/index.ts +10 -0
  270. package/src/calls/media-manager.ts +342 -0
  271. package/src/calls/speaking-monitor.ts +85 -0
  272. package/src/calls/types.ts +70 -0
  273. package/src/calls/util/audio.ts +58 -0
  274. package/src/calls/util/calls-service.ts +527 -0
  275. package/src/calls/util/history-cache.ts +27 -0
  276. package/src/calls/util/index.ts +8 -0
  277. package/src/calls/util/media.ts +52 -0
  278. package/src/calls/util/stub-media-streams.ts +73 -0
  279. package/src/calls/util/task-scheduling.ts +92 -0
  280. package/src/capabilities/app-graph-builder.ts +171 -25
  281. package/src/capabilities/call-manager.ts +19 -0
  282. package/src/capabilities/capabilities.ts +15 -1
  283. package/src/capabilities/index.ts +2 -0
  284. package/src/capabilities/intent-resolver.ts +77 -56
  285. package/src/capabilities/markdown.ts +54 -4
  286. package/src/capabilities/react-root.tsx +17 -0
  287. package/src/capabilities/react-surface.tsx +52 -27
  288. package/src/capabilities/settings.ts +2 -2
  289. package/src/capabilities/state.ts +3 -3
  290. package/src/components/Call/Call.tsx +88 -0
  291. package/src/components/Call/Toolbar.tsx +182 -0
  292. package/src/components/Call/index.ts +6 -0
  293. package/src/components/CallDebugPanel.tsx +115 -0
  294. package/src/components/CallSidebar.tsx +17 -0
  295. package/src/components/ChannelContainer.stories.tsx +58 -0
  296. package/src/components/ChannelContainer.tsx +203 -0
  297. package/src/components/Chat.stories.tsx +11 -12
  298. package/src/components/ChatContainer.tsx +37 -25
  299. package/src/components/CommentContainer.tsx +56 -61
  300. package/src/components/Comments.stories.tsx +20 -16
  301. package/src/components/CommentsContainer.tsx +20 -36
  302. package/src/components/Lobby/Lobby.tsx +119 -0
  303. package/src/components/Lobby/index.ts +5 -0
  304. package/src/components/Media/AudioStream.tsx +67 -0
  305. package/src/components/Media/VideoObject.stories.tsx +52 -0
  306. package/src/components/Media/VideoObject.tsx +58 -0
  307. package/src/components/Media/index.ts +6 -0
  308. package/src/components/MessageContainer.tsx +31 -50
  309. package/src/components/Participant/Participant.tsx +57 -0
  310. package/src/components/Participant/ParticipantGrid.tsx +88 -0
  311. package/src/components/Participant/index.ts +6 -0
  312. package/src/components/ResponsiveGrid/ResponsiveContainer.stories.tsx +54 -0
  313. package/src/components/ResponsiveGrid/ResponsiveContainer.tsx +31 -0
  314. package/src/components/ResponsiveGrid/ResponsiveGrid.stories.tsx +156 -0
  315. package/src/components/ResponsiveGrid/ResponsiveGrid.tsx +341 -0
  316. package/src/components/ResponsiveGrid/ResponsiveGridItem.tsx +131 -0
  317. package/src/components/ResponsiveGrid/index.ts +7 -0
  318. package/src/components/ThreadComplementary.tsx +37 -42
  319. package/src/components/index.ts +4 -0
  320. package/src/components/testing.ts +6 -5
  321. package/src/extensions/threads.ts +42 -24
  322. package/src/hooks/analytics.ts +4 -4
  323. package/src/hooks/index.ts +2 -1
  324. package/src/hooks/useDebugMode.ts +25 -0
  325. package/src/index.ts +1 -1
  326. package/src/meta.ts +4 -3
  327. package/src/peers.stories.tsx +189 -0
  328. package/src/testing/index.ts +5 -0
  329. package/src/testing/stories.ts +50 -0
  330. package/src/translations.ts +46 -5
  331. package/src/types/index.ts +6 -0
  332. package/src/types/schema.ts +29 -0
  333. package/src/types/types.ts +110 -0
  334. package/src/typings/peermetrics-webrtc-stats.d.ts +30 -0
  335. package/src/util.ts +12 -0
  336. package/dist/lib/browser/ChatContainer-IOOAQW6S.mjs +0 -138
  337. package/dist/lib/browser/ChatContainer-IOOAQW6S.mjs.map +0 -7
  338. package/dist/lib/browser/app-graph-builder-6W4UKJDI.mjs +0 -41
  339. package/dist/lib/browser/app-graph-builder-6W4UKJDI.mjs.map +0 -7
  340. package/dist/lib/browser/chunk-EP6MRLY7.mjs.map +0 -7
  341. package/dist/lib/browser/chunk-QDJ3Y6WF.mjs.map +0 -7
  342. package/dist/lib/browser/chunk-S5ZR4FYW.mjs +0 -17
  343. package/dist/lib/browser/chunk-S5ZR4FYW.mjs.map +0 -7
  344. package/dist/lib/browser/chunk-TFVPUPOO.mjs +0 -207
  345. package/dist/lib/browser/chunk-TFVPUPOO.mjs.map +0 -7
  346. package/dist/lib/browser/chunk-WBJLUUOK.mjs.map +0 -7
  347. package/dist/lib/browser/chunk-WOG72DWE.mjs +0 -93
  348. package/dist/lib/browser/chunk-WOG72DWE.mjs.map +0 -7
  349. package/dist/lib/browser/intent-resolver-QAY4FLLM.mjs.map +0 -7
  350. package/dist/lib/browser/markdown-7KXBXCUS.mjs +0 -111
  351. package/dist/lib/browser/markdown-7KXBXCUS.mjs.map +0 -7
  352. package/dist/lib/browser/react-surface-MT3OWULR.mjs +0 -437
  353. package/dist/lib/browser/react-surface-MT3OWULR.mjs.map +0 -7
  354. package/dist/lib/browser/settings-4FEC7EAX.mjs.map +0 -7
  355. package/dist/lib/browser/state-PNMSLKAH.mjs.map +0 -7
  356. package/dist/lib/browser/types.mjs +0 -10
  357. package/dist/lib/node/ChatContainer-4FNDRF3G.cjs +0 -163
  358. package/dist/lib/node/ChatContainer-4FNDRF3G.cjs.map +0 -7
  359. package/dist/lib/node/app-graph-builder-HZNWT4QU.cjs +0 -57
  360. package/dist/lib/node/app-graph-builder-HZNWT4QU.cjs.map +0 -7
  361. package/dist/lib/node/chunk-46BSFPBV.cjs +0 -113
  362. package/dist/lib/node/chunk-46BSFPBV.cjs.map +0 -7
  363. package/dist/lib/node/chunk-AKINTFBH.cjs.map +0 -7
  364. package/dist/lib/node/chunk-E7Z3BKRQ.cjs +0 -232
  365. package/dist/lib/node/chunk-E7Z3BKRQ.cjs.map +0 -7
  366. package/dist/lib/node/chunk-NQ5DTPOY.cjs.map +0 -7
  367. package/dist/lib/node/chunk-S2A6BXEA.cjs.map +0 -7
  368. package/dist/lib/node/intent-resolver-S6FE5OR7.cjs.map +0 -7
  369. package/dist/lib/node/markdown-L2WMCQKM.cjs +0 -121
  370. package/dist/lib/node/markdown-L2WMCQKM.cjs.map +0 -7
  371. package/dist/lib/node/react-surface-Z45BYECE.cjs +0 -439
  372. package/dist/lib/node/react-surface-Z45BYECE.cjs.map +0 -7
  373. package/dist/lib/node/settings-IXCPE55J.cjs.map +0 -7
  374. package/dist/lib/node/state-AT73KPGZ.cjs.map +0 -7
  375. package/dist/lib/node/types.cjs.map +0 -7
  376. package/dist/lib/node-esm/ChatContainer-NYLCL6QA.mjs +0 -139
  377. package/dist/lib/node-esm/ChatContainer-NYLCL6QA.mjs.map +0 -7
  378. package/dist/lib/node-esm/app-graph-builder-M3KK5QJH.mjs +0 -42
  379. package/dist/lib/node-esm/app-graph-builder-M3KK5QJH.mjs.map +0 -7
  380. package/dist/lib/node-esm/chunk-42F2DTMM.mjs.map +0 -7
  381. package/dist/lib/node-esm/chunk-ADTVMESP.mjs +0 -208
  382. package/dist/lib/node-esm/chunk-ADTVMESP.mjs.map +0 -7
  383. package/dist/lib/node-esm/chunk-E446MGLP.mjs +0 -94
  384. package/dist/lib/node-esm/chunk-E446MGLP.mjs.map +0 -7
  385. package/dist/lib/node-esm/chunk-J56FORYF.mjs.map +0 -7
  386. package/dist/lib/node-esm/chunk-WLY2HMDB.mjs.map +0 -7
  387. package/dist/lib/node-esm/chunk-WSE23GSG.mjs +0 -19
  388. package/dist/lib/node-esm/chunk-WSE23GSG.mjs.map +0 -7
  389. package/dist/lib/node-esm/intent-resolver-OURFRSSF.mjs.map +0 -7
  390. package/dist/lib/node-esm/markdown-ZKU23UVD.mjs +0 -112
  391. package/dist/lib/node-esm/markdown-ZKU23UVD.mjs.map +0 -7
  392. package/dist/lib/node-esm/react-surface-KIJ767JK.mjs +0 -438
  393. package/dist/lib/node-esm/react-surface-KIJ767JK.mjs.map +0 -7
  394. package/dist/lib/node-esm/settings-ZUJQ4LWI.mjs.map +0 -7
  395. package/dist/lib/node-esm/state-SSDX5O67.mjs.map +0 -7
  396. package/dist/lib/node-esm/types.mjs +0 -11
  397. package/dist/types/src/components/types.d.ts +0 -28
  398. package/dist/types/src/components/types.d.ts.map +0 -1
  399. package/dist/types/src/events.d.ts +0 -4
  400. package/dist/types/src/events.d.ts.map +0 -1
  401. package/dist/types/src/types.d.ts +0 -125
  402. package/dist/types/src/types.d.ts.map +0 -1
  403. package/src/components/types.ts +0 -32
  404. package/src/events.ts +0 -11
  405. package/src/types.ts +0 -100
  406. /package/dist/lib/browser/{types.mjs.map → ChannelContainer-XFNGSLHL.mjs.map} +0 -0
  407. /package/dist/lib/{node-esm/types.mjs.map → browser/ChatContainer-JWRI73OG.mjs.map} +0 -0
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/capabilities/react-surface.tsx"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport React from 'react';\n\nimport { Capabilities, contributes, createSurface, useCapability } from '@dxos/app-framework';\nimport { isInstanceOf, type Ref } from '@dxos/echo-schema';\nimport { SettingsStore } from '@dxos/local-storage';\nimport { getSpace, isEchoObject } from '@dxos/react-client/echo';\n\nimport { ThreadCapabilities } from './capabilities';\nimport {\n CallSidebar,\n CallDebugPanel,\n ChannelContainer,\n ThreadComplementary,\n ThreadSettings,\n ChatContainer,\n} from '../components';\nimport { THREAD_PLUGIN } from '../meta';\nimport { ChannelType, ThreadType, type ThreadSettingsProps } from '../types';\n\nexport default () =>\n contributes(Capabilities.ReactSurface, [\n createSurface({\n id: `${THREAD_PLUGIN}/channel`,\n role: 'article',\n filter: (data): data is { subject: ChannelType } => isInstanceOf(ChannelType, data.subject),\n component: ({ data: { subject: channel }, role }) => <ChannelContainer channel={channel} role={role} />,\n }),\n createSurface({\n id: `${THREAD_PLUGIN}/chat-companion`,\n role: 'article',\n filter: (data): data is { companionTo: ChannelType; subject: 'chat' } =>\n isInstanceOf(ChannelType, data.companionTo) && data.subject === 'chat',\n component: ({ data: { companionTo: channel } }) => {\n const space = getSpace(channel);\n const thread = channel.defaultThread.target;\n if (!space || !thread) {\n return null;\n }\n\n return <ChatContainer thread={thread} space={space} />;\n },\n }),\n createSurface({\n id: `${THREAD_PLUGIN}/thread`,\n role: 'article',\n filter: (data): data is { subject: ThreadType } => isInstanceOf(ThreadType, data.subject),\n component: ({ data: { subject: thread } }) => {\n const space = getSpace(thread);\n if (!space || !thread) {\n return null;\n }\n\n return <ChatContainer thread={thread} space={space} />;\n },\n }),\n createSurface({\n id: `${THREAD_PLUGIN}/comments`,\n role: 'article',\n filter: (data): data is { companionTo: { threads: Ref<ThreadType>[] } } =>\n data.subject === 'comments' && isEchoObject(data.companionTo),\n // TODO(wittjosiah): This isn't scrolling properly in a plank.\n component: ({ data }) => <ThreadComplementary subject={data.companionTo} />,\n }),\n createSurface({\n id: `${THREAD_PLUGIN}/plugin-settings`,\n role: 'article',\n filter: (data): data is { subject: SettingsStore<ThreadSettingsProps> } =>\n data.subject instanceof SettingsStore && data.subject.prefix === THREAD_PLUGIN,\n component: ({ data: { subject } }) => <ThreadSettings settings={subject.value} />,\n }),\n createSurface({\n id: `${THREAD_PLUGIN}/assistant`,\n role: 'deck-companion--active-call',\n component: () => <CallSidebar />,\n }),\n createSurface({\n id: `${THREAD_PLUGIN}/devtools-overview`,\n role: 'devtools-overview',\n component: () => {\n const call = useCapability(ThreadCapabilities.CallManager);\n return <CallDebugPanel state={call.state} />;\n },\n }),\n ]);\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,OAAOA,WAAW;AAElB,SAASC,cAAcC,aAAaC,eAAeC,qBAAqB;AACxE,SAASC,oBAA8B;AACvC,SAASC,qBAAqB;AAC9B,SAASC,UAAUC,oBAAoB;AAcvC,IAAA,wBAAe,MACbC,YAAYC,aAAaC,cAAc;EACrCC,cAAc;IACZC,IAAI,GAAGC,aAAAA;IACPC,MAAM;IACNC,QAAQ,CAACC,SAA2CC,aAAaC,aAAaF,KAAKG,OAAO;IAC1FC,WAAW,CAAC,EAAEJ,MAAM,EAAEG,SAASE,QAAO,GAAIP,KAAI,MAAO,sBAAA,cAACQ,kBAAAA;MAAiBD;MAAkBP;;EAC3F,CAAA;EACAH,cAAc;IACZC,IAAI,GAAGC,aAAAA;IACPC,MAAM;IACNC,QAAQ,CAACC,SACPC,aAAaC,aAAaF,KAAKO,WAAW,KAAKP,KAAKG,YAAY;IAClEC,WAAW,CAAC,EAAEJ,MAAM,EAAEO,aAAaF,QAAO,EAAE,MAAE;AAC5C,YAAMG,QAAQC,SAASJ,OAAAA;AACvB,YAAMK,SAASL,QAAQM,cAAcC;AACrC,UAAI,CAACJ,SAAS,CAACE,QAAQ;AACrB,eAAO;MACT;AAEA,aAAO,sBAAA,cAACG,eAAAA;QAAcH;QAAgBF;;IACxC;EACF,CAAA;EACAb,cAAc;IACZC,IAAI,GAAGC,aAAAA;IACPC,MAAM;IACNC,QAAQ,CAACC,SAA0CC,aAAaa,YAAYd,KAAKG,OAAO;IACxFC,WAAW,CAAC,EAAEJ,MAAM,EAAEG,SAASO,OAAM,EAAE,MAAE;AACvC,YAAMF,QAAQC,SAASC,MAAAA;AACvB,UAAI,CAACF,SAAS,CAACE,QAAQ;AACrB,eAAO;MACT;AAEA,aAAO,sBAAA,cAACG,eAAAA;QAAcH;QAAgBF;;IACxC;EACF,CAAA;EACAb,cAAc;IACZC,IAAI,GAAGC,aAAAA;IACPC,MAAM;IACNC,QAAQ,CAACC,SACPA,KAAKG,YAAY,cAAcY,aAAaf,KAAKO,WAAW;;IAE9DH,WAAW,CAAC,EAAEJ,KAAI,MAAO,sBAAA,cAACgB,qBAAAA;MAAoBb,SAASH,KAAKO;;EAC9D,CAAA;EACAZ,cAAc;IACZC,IAAI,GAAGC,aAAAA;IACPC,MAAM;IACNC,QAAQ,CAACC,SACPA,KAAKG,mBAAmBc,iBAAiBjB,KAAKG,QAAQe,WAAWrB;IACnEO,WAAW,CAAC,EAAEJ,MAAM,EAAEG,QAAO,EAAE,MAAO,sBAAA,cAACgB,gBAAAA;MAAeC,UAAUjB,QAAQkB;;EAC1E,CAAA;EACA1B,cAAc;IACZC,IAAI,GAAGC,aAAAA;IACPC,MAAM;IACNM,WAAW,MAAM,sBAAA,cAACkB,aAAAA,IAAAA;EACpB,CAAA;EACA3B,cAAc;IACZC,IAAI,GAAGC,aAAAA;IACPC,MAAM;IACNM,WAAW,MAAA;AACT,YAAMmB,OAAOC,cAAcC,mBAAmBC,WAAW;AACzD,aAAO,sBAAA,cAACC,gBAAAA;QAAeC,OAAOL,KAAKK;;IACrC;EACF,CAAA;CACD;",
6
+ "names": ["React", "Capabilities", "contributes", "createSurface", "useCapability", "isInstanceOf", "SettingsStore", "getSpace", "isEchoObject", "contributes", "Capabilities", "ReactSurface", "createSurface", "id", "THREAD_PLUGIN", "role", "filter", "data", "isInstanceOf", "ChannelType", "subject", "component", "channel", "ChannelContainer", "companionTo", "space", "getSpace", "thread", "defaultThread", "target", "ChatContainer", "ThreadType", "isEchoObject", "ThreadComplementary", "SettingsStore", "prefix", "ThreadSettings", "settings", "value", "CallSidebar", "call", "useCapability", "ThreadCapabilities", "CallManager", "CallDebugPanel", "state"]
7
+ }
@@ -1,16 +1,16 @@
1
1
  import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
2
  import {
3
3
  ThreadSettingsSchema
4
- } from "./chunk-E446MGLP.mjs";
4
+ } from "./chunk-J323VQ4P.mjs";
5
5
  import {
6
6
  THREAD_PLUGIN
7
- } from "./chunk-42F2DTMM.mjs";
7
+ } from "./chunk-ESQC6SYE.mjs";
8
8
 
9
9
  // packages/plugins/plugin-thread/src/capabilities/settings.ts
10
10
  import { Capabilities, contributes } from "@dxos/app-framework";
11
- import { create } from "@dxos/live-object";
11
+ import { live } from "@dxos/live-object";
12
12
  var settings_default = () => {
13
- const settings = create({});
13
+ const settings = live({});
14
14
  return contributes(Capabilities.Settings, {
15
15
  schema: ThreadSettingsSchema,
16
16
  prefix: THREAD_PLUGIN,
@@ -20,4 +20,4 @@ var settings_default = () => {
20
20
  export {
21
21
  settings_default as default
22
22
  };
23
- //# sourceMappingURL=settings-ZUJQ4LWI.mjs.map
23
+ //# sourceMappingURL=settings-IJGUOU3F.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/capabilities/settings.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { Capabilities, contributes } from '@dxos/app-framework';\nimport { live } from '@dxos/live-object';\n\nimport { THREAD_PLUGIN } from '../meta';\nimport { type ThreadSettingsProps, ThreadSettingsSchema } from '../types';\n\nexport default () => {\n const settings = live<ThreadSettingsProps>({});\n return contributes(Capabilities.Settings, { schema: ThreadSettingsSchema, prefix: THREAD_PLUGIN, value: settings });\n};\n"],
5
+ "mappings": ";;;;;;;;;AAIA,SAASA,cAAcC,mBAAmB;AAC1C,SAASC,YAAY;AAKrB,IAAA,mBAAe,MAAA;AACb,QAAMC,WAAWC,KAA0B,CAAC,CAAA;AAC5C,SAAOC,YAAYC,aAAaC,UAAU;IAAEC,QAAQC;IAAsBC,QAAQC;IAAeC,OAAOT;EAAS,CAAA;AACnH;",
6
+ "names": ["Capabilities", "contributes", "live", "settings", "live", "contributes", "Capabilities", "Settings", "schema", "ThreadSettingsSchema", "prefix", "THREAD_PLUGIN", "value"]
7
+ }
@@ -1,21 +1,21 @@
1
1
  import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
2
  import {
3
3
  ThreadCapabilities
4
- } from "./chunk-WLY2HMDB.mjs";
5
- import "./chunk-42F2DTMM.mjs";
4
+ } from "./chunk-K4KAUOKT.mjs";
5
+ import "./chunk-ESQC6SYE.mjs";
6
6
 
7
7
  // packages/plugins/plugin-thread/src/capabilities/state.ts
8
8
  import { contributes } from "@dxos/app-framework";
9
- import { create } from "@dxos/live-object";
9
+ import { live } from "@dxos/live-object";
10
10
  var initialViewState = {
11
11
  showResolvedThreads: false
12
12
  };
13
13
  var state_default = () => {
14
- const state = create({
15
- activities: {},
14
+ const state = live({
15
+ toolbar: {},
16
16
  drafts: {}
17
17
  });
18
- const viewStore = create({});
18
+ const viewStore = live({});
19
19
  const getViewState = (subjectId) => {
20
20
  if (!viewStore[subjectId]) {
21
21
  viewStore[subjectId] = {
@@ -32,4 +32,4 @@ var state_default = () => {
32
32
  export {
33
33
  state_default as default
34
34
  };
35
- //# sourceMappingURL=state-SSDX5O67.mjs.map
35
+ //# sourceMappingURL=state-6AUTNROZ.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/capabilities/state.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { contributes } from '@dxos/app-framework';\nimport { live } from '@dxos/live-object';\n\nimport { ThreadCapabilities } from './capabilities';\nimport { type ThreadState, type ViewStore } from '../types';\n\nconst initialViewState = { showResolvedThreads: false };\n\nexport default () => {\n const state = live<ThreadState>({ toolbar: {}, drafts: {} });\n const viewStore = live<ViewStore>({});\n\n const getViewState = (subjectId: string) => {\n if (!viewStore[subjectId]) {\n viewStore[subjectId] = { ...initialViewState };\n }\n return viewStore[subjectId];\n };\n\n return contributes(ThreadCapabilities.State, { state, getViewState });\n};\n"],
5
+ "mappings": ";;;;;;;AAIA,SAASA,mBAAmB;AAC5B,SAASC,YAAY;AAKrB,IAAMC,mBAAmB;EAAEC,qBAAqB;AAAM;AAEtD,IAAA,gBAAe,MAAA;AACb,QAAMC,QAAQC,KAAkB;IAAEC,SAAS,CAAC;IAAGC,QAAQ,CAAC;EAAE,CAAA;AAC1D,QAAMC,YAAYH,KAAgB,CAAC,CAAA;AAEnC,QAAMI,eAAe,CAACC,cAAAA;AACpB,QAAI,CAACF,UAAUE,SAAAA,GAAY;AACzBF,gBAAUE,SAAAA,IAAa;QAAE,GAAGR;MAAiB;IAC/C;AACA,WAAOM,UAAUE,SAAAA;EACnB;AAEA,SAAOC,YAAYC,mBAAmBC,OAAO;IAAET;IAAOK;EAAa,CAAA;AACrE;",
6
+ "names": ["contributes", "live", "initialViewState", "showResolvedThreads", "state", "live", "toolbar", "drafts", "viewStore", "getViewState", "subjectId", "contributes", "ThreadCapabilities", "State"]
7
+ }
@@ -0,0 +1,17 @@
1
+ import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
+ import {
3
+ ChannelType,
4
+ ThreadAction,
5
+ ThreadSettingsSchema,
6
+ ThreadStatus,
7
+ ThreadType
8
+ } from "../chunk-J323VQ4P.mjs";
9
+ import "../chunk-ESQC6SYE.mjs";
10
+ export {
11
+ ChannelType,
12
+ ThreadAction,
13
+ ThreadSettingsSchema,
14
+ ThreadStatus,
15
+ ThreadType
16
+ };
17
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": [],
4
+ "sourcesContent": [],
5
+ "mappings": "",
6
+ "names": []
7
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"ThreadPlugin.d.ts","sourceRoot":"","sources":["../../../src/ThreadPlugin.tsx"],"names":[],"mappings":"AAqBA,eAAO,MAAM,YAAY,4CA0GrB,CAAC"}
1
+ {"version":3,"file":"ThreadPlugin.d.ts","sourceRoot":"","sources":["../../../src/ThreadPlugin.tsx"],"names":[],"mappings":"AA+BA,eAAO,MAAM,YAAY,4CAmHrB,CAAC"}
@@ -0,0 +1,77 @@
1
+ import { Event } from '@dxos/async';
2
+ import { type Client } from '@dxos/client';
3
+ import { Resource } from '@dxos/context';
4
+ import { type Tracks } from '@dxos/protocols/proto/dxos/edge/calls';
5
+ import { type CallState } from './call-swarm-synchronizer';
6
+ import { type MediaState } from './media-manager';
7
+ import { type ActivityState, type EncodedTrackName, type UserState } from './types';
8
+ export type GlobalState = {
9
+ call: CallState;
10
+ media: MediaState;
11
+ };
12
+ /**
13
+ * Top level manager for call state.
14
+ */
15
+ export declare class CallManager extends Resource {
16
+ private readonly _client;
17
+ readonly callStateUpdated: Event<CallState>;
18
+ readonly mediaStateUpdated: Event<[MediaState, boolean]>;
19
+ readonly left: Event<string>;
20
+ /**
21
+ * Live object state. Is changed on internal events.
22
+ * CAUTION: Do not change directly.
23
+ */
24
+ private readonly _state;
25
+ private readonly _raisedHandSignal;
26
+ private readonly _speakingSignal;
27
+ private readonly _joinedSignal;
28
+ private readonly _swarmSynchronizer;
29
+ private readonly _mediaManager;
30
+ /** @reactive */
31
+ get roomId(): string | undefined;
32
+ /** @reactive */
33
+ get raisedHand(): boolean;
34
+ /** @reactive */
35
+ get speaking(): boolean;
36
+ /** @reactive */
37
+ get joined(): boolean;
38
+ /** @reactive */
39
+ get self(): UserState;
40
+ /** @reactive */
41
+ get tracks(): Tracks;
42
+ /** @reactive */
43
+ get users(): UserState[];
44
+ /** @reactive */
45
+ get media(): MediaState;
46
+ /** @reactive */
47
+ get pulledAudioTracks(): MediaStreamTrack[];
48
+ /** @reactive */
49
+ get state(): import("@dxos/live-object").Live<GlobalState>;
50
+ /** @reactive */
51
+ getVideoStream(name?: EncodedTrackName): MediaStream | undefined;
52
+ /** @reactive */
53
+ getActivity(key: string): ActivityState | undefined;
54
+ setRoomId(roomId: string): void;
55
+ setSpeaking(speaking: boolean): void;
56
+ setRaisedHand(raisedHand: boolean): void;
57
+ setActivity(key: string, payload: ActivityState['payload']): void;
58
+ turnAudioOn(): Promise<void>;
59
+ turnAudioOff(): Promise<void>;
60
+ turnVideoOn(): Promise<void>;
61
+ turnVideoOff(): Promise<void>;
62
+ turnScreenshareOn(): Promise<void>;
63
+ turnScreenshareOff(): Promise<void>;
64
+ constructor(_client: Client);
65
+ protected _open(): Promise<void>;
66
+ protected _close(): Promise<void>;
67
+ peek(roomId: string): Promise<number>;
68
+ join(): Promise<void>;
69
+ leave(): Promise<void>;
70
+ private _onCallStateUpdated;
71
+ private _onMediaStateUpdated;
72
+ /**
73
+ * Only this method is allowed to change state.
74
+ */
75
+ private _updateState;
76
+ }
77
+ //# sourceMappingURL=call-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"call-manager.d.ts","sourceRoot":"","sources":["../../../../src/calls/call-manager.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,KAAK,EAAgB,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAGzC,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,uCAAuC,CAAC;AAGpE,OAAO,EAAyB,KAAK,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAClF,OAAO,EAAgB,KAAK,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAChE,OAAO,EAAE,KAAK,aAAa,EAAa,KAAK,gBAAgB,EAAkB,KAAK,SAAS,EAAE,MAAM,SAAS,CAAC;AAE/G,MAAM,MAAM,WAAW,GAAG;IACxB,IAAI,EAAE,SAAS,CAAC;IAChB,KAAK,EAAE,UAAU,CAAC;CACnB,CAAC;AAEF;;GAEG;AACH,qBAAa,WAAY,SAAQ,QAAQ;IA4H3B,OAAO,CAAC,QAAQ,CAAC,OAAO;IA3HpC,SAAgB,gBAAgB,mBAA0B;IAE1D,SAAgB,iBAAiB,+BAAsC;IACvE,SAAgB,IAAI,gBAAuB;IAE3C;;;OAGG;IACH,OAAO,CAAC,QAAQ,CAAC,MAAM,CAGpB;IAGH,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAwD;IAC1F,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAsD;IACtF,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAoD;IAElF,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAwB;IAC3D,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAe;IAE7C,gBAAgB;IAChB,IAAI,MAAM,IAAI,MAAM,GAAG,SAAS,CAE/B;IAED,gBAAgB;IAChB,IAAI,UAAU,IAAI,OAAO,CAExB;IAED,gBAAgB;IAChB,IAAI,QAAQ,IAAI,OAAO,CAEtB;IAED,gBAAgB;IAChB,IAAI,MAAM,IAAI,OAAO,CAEpB;IAED,gBAAgB;IAChB,IAAI,IAAI,IAAI,SAAS,CAEpB;IAED,gBAAgB;IAChB,IAAI,MAAM,IAAI,MAAM,CAEnB;IAED,gBAAgB;IAChB,IAAI,KAAK,IAAI,SAAS,EAAE,CAEvB;IAED,gBAAgB;IAChB,IAAI,KAAK,eAER;IAED,gBAAgB;IAChB,IAAI,iBAAiB,uBAEpB;IAED,gBAAgB;IAChB,IAAI,KAAK,kDAER;IAED,gBAAgB;IAChB,cAAc,CAAC,IAAI,CAAC,EAAE,gBAAgB,GAAG,WAAW,GAAG,SAAS;IAIhE,gBAAgB;IAChB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS;IAInD,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAI/B,WAAW,CAAC,QAAQ,EAAE,OAAO,GAAG,IAAI;IAIpC,aAAa,CAAC,UAAU,EAAE,OAAO,GAAG,IAAI;IAIxC,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,CAAC,SAAS,CAAC,GAAG,IAAI;IAIjE,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IAI5B,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAI7B,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IAI5B,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAI7B,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC;IAIlC,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC;gBAKN,OAAO,EAAE,MAAM;cASnB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;cAiBtB,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAM1C,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAOrC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAUrB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAO5B,OAAO,CAAC,mBAAmB;IAW3B,OAAO,CAAC,oBAAoB;IAiB5B;;OAEG;IACH,OAAO,CAAC,YAAY;CAIrB"}
@@ -0,0 +1,66 @@
1
+ import { Event } from '@dxos/async';
2
+ import { Resource } from '@dxos/context';
3
+ import { type NetworkService } from '@dxos/protocols/proto/dxos/client/services';
4
+ import { type ActivityState, type UserState } from './types';
5
+ export type CallState = {
6
+ /**
7
+ * Room id.
8
+ */
9
+ roomId?: string;
10
+ /**
11
+ * All users states in the swarm.
12
+ */
13
+ users?: UserState[];
14
+ /**
15
+ * Self state inside swarm.
16
+ */
17
+ self?: UserState;
18
+ /**
19
+ * Swarm synchronized CRDT transcription. Last write wins.
20
+ */
21
+ activities?: Record<string, ActivityState>;
22
+ raisedHand?: boolean;
23
+ speaking?: boolean;
24
+ joined?: boolean;
25
+ /**
26
+ * Tracks pushed by self to calls service.
27
+ */
28
+ tracks?: UserState['tracks'];
29
+ };
30
+ export type CallSwarmSynchronizerParams = {
31
+ networkService: NetworkService;
32
+ };
33
+ /**
34
+ * Sends and receives state to/from Swarm network.
35
+ */
36
+ export declare class CallSwarmSynchronizer extends Resource {
37
+ readonly stateUpdated: Event<CallState>;
38
+ private readonly _state;
39
+ private readonly _networkService;
40
+ private _lastSwarmEvent?;
41
+ private _reconcileSwarmStateTask?;
42
+ private _identityKey?;
43
+ private _deviceKey?;
44
+ private _displayName?;
45
+ private _swarmCtx?;
46
+ private _sendStateTask?;
47
+ constructor({ networkService }: CallSwarmSynchronizerParams);
48
+ setRaisedHand(raisedHand: boolean): void;
49
+ setSpeaking(speaking: boolean): void;
50
+ setJoined(joined: boolean): void;
51
+ setTracks(tracks: UserState['tracks']): void;
52
+ setActivity(key: string, payload: ActivityState['payload']): void;
53
+ protected _open(): Promise<void>;
54
+ protected _close(): Promise<void>;
55
+ join(): Promise<void>;
56
+ leave(): Promise<void>;
57
+ querySwarm(roomId: string): Promise<import("@dxos/protocols/proto/dxos/edge/messenger").Peer[]>;
58
+ /**
59
+ * Notify and schedule send state task.
60
+ */
61
+ private _notifyAndSchedule;
62
+ private _sendState;
63
+ private _processSwarmEvent;
64
+ private _reconcileSwarmState;
65
+ }
66
+ //# sourceMappingURL=call-swarm-synchronizer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"call-swarm-synchronizer.d.ts","sourceRoot":"","sources":["../../../../src/calls/call-swarm-synchronizer.ts"],"names":[],"mappings":"AAMA,OAAO,EAAgB,KAAK,EAAsC,MAAM,aAAa,CAAC;AAEtF,OAAO,EAAW,QAAQ,EAAE,MAAM,eAAe,CAAC;AAOlD,OAAO,EAAe,KAAK,cAAc,EAAE,MAAM,4CAA4C,CAAC;AAI9F,OAAO,EAAS,KAAK,aAAa,EAAE,KAAK,SAAS,EAAE,MAAM,SAAS,CAAC;AAEpE,MAAM,MAAM,SAAS,GAAG;IACtB;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;OAEG;IACH,KAAK,CAAC,EAAE,SAAS,EAAE,CAAC;IAEpB;;OAEG;IACH,IAAI,CAAC,EAAE,SAAS,CAAC;IAEjB;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IAE3C,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;IAEjB;;OAEG;IACH,MAAM,CAAC,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAC;CAC9B,CAAC;AAEF,MAAM,MAAM,2BAA2B,GAAG;IAAE,cAAc,EAAE,cAAc,CAAA;CAAE,CAAC;AAO7E;;GAEG;AACH,qBAAa,qBAAsB,SAAQ,QAAQ;IACjD,SAAgB,YAAY,mBAA0B;IAEtD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAiC;IACxD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAiB;IACjD,OAAO,CAAC,eAAe,CAAC,CAA4B;IACpD,OAAO,CAAC,wBAAwB,CAAC,CAA2B;IAE5D,OAAO,CAAC,YAAY,CAAC,CAAqB;IAC1C,OAAO,CAAC,UAAU,CAAC,CAAqB;IACxC,OAAO,CAAC,YAAY,CAAC,CAAqB;IAE1C,OAAO,CAAC,SAAS,CAAC,CAAsB;IAExC,OAAO,CAAC,cAAc,CAAC,CAA2B;gBAEtC,EAAE,cAAc,EAAE,EAAE,2BAA2B;IAY3D,aAAa,CAAC,UAAU,EAAE,OAAO,GAAG,IAAI;IASxC,WAAW,CAAC,QAAQ,EAAE,OAAO,GAAG,IAAI;IASpC,SAAS,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI;IAShC,SAAS,CAAC,MAAM,EAAE,SAAS,CAAC,QAAQ,CAAC,GAAG,IAAI;IAK5C,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,CAAC,SAAS,CAAC,GAAG,IAAI;cAoCxC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;cAUtB,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAM1C,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IA8BrB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAYtB,UAAU,CAAC,MAAM,EAAE,MAAM;IAM/B;;OAEG;IACH,OAAO,CAAC,kBAAkB;YAOZ,UAAU;IA6BxB,OAAO,CAAC,kBAAkB;YASZ,oBAAoB;CAqDnC"}
@@ -0,0 +1,7 @@
1
+ export * from './call-manager';
2
+ export * from './call-swarm-synchronizer';
3
+ export * from './media-manager';
4
+ export * from './speaking-monitor';
5
+ export * from './types';
6
+ export * from './util';
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/calls/index.ts"],"names":[],"mappings":"AAIA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,2BAA2B,CAAC;AAC1C,cAAc,iBAAiB,CAAC;AAChC,cAAc,oBAAoB,CAAC;AACnC,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC"}
@@ -0,0 +1,60 @@
1
+ import { Event } from '@dxos/async';
2
+ import { type Context, Resource } from '@dxos/context';
3
+ import { type EncodedTrackName, type TrackObject } from './types';
4
+ import { type CallsServiceConfig, CallsServicePeer } from './util';
5
+ export type MediaState = {
6
+ audioDeviceId?: string;
7
+ audioEnabled?: boolean;
8
+ audioTrack?: MediaStreamTrack;
9
+ videoDeviceId?: string;
10
+ videoEnabled?: boolean;
11
+ videoTrack?: MediaStreamTrack;
12
+ videoStream?: MediaStream;
13
+ screenshareEnabled?: boolean;
14
+ screenshareTrack?: MediaStreamTrack;
15
+ screenshareVideoStream?: MediaStream;
16
+ pushedVideoTrack?: TrackObject;
17
+ pushedAudioTrack?: TrackObject;
18
+ pushedScreenshareTrack?: TrackObject;
19
+ peer?: CallsServicePeer;
20
+ pulledAudioTracks: Record<EncodedTrackName, {
21
+ track: MediaStreamTrack;
22
+ ctx: Context;
23
+ }>;
24
+ /**
25
+ * Includes video feeds and screenshare feeds of other participants.
26
+ */
27
+ pulledVideoStreams: Record<EncodedTrackName, {
28
+ stream: MediaStream;
29
+ ctx: Context;
30
+ }>;
31
+ };
32
+ export type MediaManagerParams = {
33
+ serviceConfig: CallsServiceConfig;
34
+ };
35
+ export declare class MediaManager extends Resource {
36
+ readonly stateUpdated: Event<MediaState>;
37
+ private readonly _state;
38
+ private _speakingMonitor?;
39
+ private _trackToReconcile;
40
+ private _blackCanvasStreamTrack?;
41
+ private _inaudibleAudioStreamTrack?;
42
+ private _pushTracksTask?;
43
+ private _pullTracksTask?;
44
+ get isSpeaking(): boolean | undefined;
45
+ protected _open(): Promise<void>;
46
+ protected _close(): Promise<void>;
47
+ join(serviceConfig: CallsServiceConfig): Promise<void>;
48
+ leave(): Promise<void>;
49
+ turnVideoOn(): Promise<void>;
50
+ turnVideoOff(): Promise<void>;
51
+ turnAudioOn(): Promise<void>;
52
+ turnAudioOff(): Promise<void>;
53
+ turnScreenshareOn(): Promise<void>;
54
+ turnScreenshareOff(): Promise<void>;
55
+ private _reconcilePulledMedia;
56
+ private _pushTracks;
57
+ private _pullTrack;
58
+ private _pushTrack;
59
+ }
60
+ //# sourceMappingURL=media-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"media-manager.d.ts","sourceRoot":"","sources":["../../../../src/calls/media-manager.ts"],"names":[],"mappings":"AAIA,OAAO,EAAgB,KAAK,EAAuB,MAAM,aAAa,CAAC;AACvE,OAAO,EAAqB,KAAK,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAI1E,OAAO,EAAkB,KAAK,gBAAgB,EAAE,KAAK,WAAW,EAAE,MAAM,SAAS,CAAC;AAClF,OAAO,EACL,KAAK,kBAAkB,EACvB,gBAAgB,EAKjB,MAAM,QAAQ,CAAC;AAEhB,MAAM,MAAM,UAAU,GAAG;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAE9B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAC9B,WAAW,CAAC,EAAE,WAAW,CAAC;IAE1B,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC,sBAAsB,CAAC,EAAE,WAAW,CAAC;IAErC,gBAAgB,CAAC,EAAE,WAAW,CAAC;IAC/B,gBAAgB,CAAC,EAAE,WAAW,CAAC;IAC/B,sBAAsB,CAAC,EAAE,WAAW,CAAC;IACrC,IAAI,CAAC,EAAE,gBAAgB,CAAC;IAExB,iBAAiB,EAAE,MAAM,CAAC,gBAAgB,EAAE;QAAE,KAAK,EAAE,gBAAgB,CAAC;QAAC,GAAG,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IACvF;;OAEG;IACH,kBAAkB,EAAE,MAAM,CAAC,gBAAgB,EAAE;QAAE,MAAM,EAAE,WAAW,CAAC;QAAC,GAAG,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;CACrF,CAAC;AASF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,aAAa,EAAE,kBAAkB,CAAC;CACnC,CAAC;AAEF,qBAAa,YAAa,SAAQ,QAAQ;IACxC,SAAgB,YAAY,oBAA2B;IACvD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAiE;IACxF,OAAO,CAAC,gBAAgB,CAAC,CAA8B;IAEvD,OAAO,CAAC,iBAAiB,CAA0B;IACnD,OAAO,CAAC,uBAAuB,CAAC,CAA+B;IAC/D,OAAO,CAAC,0BAA0B,CAAC,CAA+B;IAClE,OAAO,CAAC,eAAe,CAAC,CAA2B;IACnD,OAAO,CAAC,eAAe,CAAC,CAA2B;IAEnD,IAAI,UAAU,wBAEb;cASwB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;cAqBtB,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAW1C,IAAI,CAAC,aAAa,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IAOtD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAatB,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IAS5B,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAc7B,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IAgB5B,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAY7B,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC;IASlC,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC;YAuB3B,qBAAqB;YA0CrB,WAAW;YAiCX,UAAU;YAsCV,UAAU;CAezB"}
@@ -0,0 +1,24 @@
1
+ import { Event } from '@dxos/async';
2
+ import { Resource } from '@dxos/context';
3
+ export declare class SpeakingMonitor extends Resource {
4
+ private readonly _mediaStreamTrack;
5
+ /**
6
+ * Event that is emitted when the user starts or stops speaking.
7
+ * It is debounced to prevent rapid state changes.
8
+ */
9
+ readonly speakingChanged: Event<boolean>;
10
+ /**
11
+ * Real state of the user speaking.
12
+ */
13
+ private _isSpeaking;
14
+ private _lastEventTime;
15
+ private _deferredUpdate?;
16
+ constructor(_mediaStreamTrack: MediaStreamTrack);
17
+ get isSpeaking(): boolean;
18
+ protected _open(): Promise<void>;
19
+ /**
20
+ * Emits the speaking changed event with debouncing based on timing.
21
+ */
22
+ private _emitSpeakingChanged;
23
+ }
24
+ //# sourceMappingURL=speaking-monitor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"speaking-monitor.d.ts","sourceRoot":"","sources":["../../../../src/calls/speaking-monitor.ts"],"names":[],"mappings":"AAIA,OAAO,EAAgB,KAAK,EAAS,MAAM,aAAa,CAAC;AACzD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AASzC,qBAAa,eAAgB,SAAQ,QAAQ;IAc/B,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAb9C;;;OAGG;IACH,SAAgB,eAAe,iBAAwB;IAEvD;;OAEG;IACH,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,cAAc,CAAK;IAC3B,OAAO,CAAC,eAAe,CAAC,CAA2B;gBAEtB,iBAAiB,EAAE,gBAAgB;IAIhE,IAAI,UAAU,IAAI,OAAO,CAExB;cAEwB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAoC/C;;OAEG;YACW,oBAAoB;CASnC"}
@@ -0,0 +1,45 @@
1
+ import { buf } from '@dxos/protocols/buf';
2
+ import { type ActivitySchema, UserStateSchema, type UserState as UserStateProto } from '@dxos/protocols/buf/dxos/edge/calls_pb';
3
+ /**
4
+ * Endpoint to the calls service.
5
+ */
6
+ export declare const CALLS_URL = "https://calls-service.dxos.workers.dev";
7
+ export type UserState = buf.MessageInitShape<typeof UserStateSchema>;
8
+ export type ActivityState = buf.MessageInitShape<typeof ActivitySchema>;
9
+ export declare const codec: {
10
+ encode: (message: UserState) => Uint8Array;
11
+ decode: (message: Uint8Array) => UserStateProto;
12
+ };
13
+ export type TrackObject = {
14
+ location?: 'local' | 'remote';
15
+ trackName?: string;
16
+ sessionId?: string;
17
+ mid?: string | null;
18
+ };
19
+ export type SessionDescription = {
20
+ type: 'offer' | 'answer';
21
+ sdp: string;
22
+ };
23
+ export interface ErrorResponse {
24
+ errorCode?: string;
25
+ errorDescription?: string;
26
+ }
27
+ export interface SessionResponse extends ErrorResponse {
28
+ sessionId: string;
29
+ sessionDescription: SessionDescription;
30
+ }
31
+ export interface TracksResponse extends ErrorResponse {
32
+ sessionDescription: SessionDescription;
33
+ requiresImmediateRenegotiation: boolean;
34
+ tracks?: (TrackObject & ErrorResponse)[];
35
+ }
36
+ export interface RenegotiationResponse extends ErrorResponse {
37
+ }
38
+ export type EncodedTrackName = string & {
39
+ __brand: 'EncodedTrackName';
40
+ };
41
+ export declare const TrackNameCodec: {
42
+ encode: (trackData: TrackObject) => EncodedTrackName;
43
+ decode: (name: EncodedTrackName) => TrackObject;
44
+ };
45
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/calls/types.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,GAAG,EAAE,MAAM,qBAAqB,CAAC;AAC1C,OAAO,EACL,KAAK,cAAc,EACnB,eAAe,EACf,KAAK,SAAS,IAAI,cAAc,EACjC,MAAM,wCAAwC,CAAC;AAEhD;;GAEG;AACH,eAAO,MAAM,SAAS,2CAA2C,CAAC;AAElE,MAAM,MAAM,SAAS,GAAG,GAAG,CAAC,gBAAgB,CAAC,OAAO,eAAe,CAAC,CAAC;AAErE,MAAM,MAAM,aAAa,GAAG,GAAG,CAAC,gBAAgB,CAAC,OAAO,cAAc,CAAC,CAAC;AAExE,eAAO,MAAM,KAAK;sBACE,SAAS,KAAG,UAAU;sBAGtB,UAAU,KAAG,cAAc;CAG9C,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,QAAQ,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAC;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,IAAI,EAAE,OAAO,GAAG,QAAQ,CAAC;IACzB,GAAG,EAAE,MAAM,CAAC;CACb,CAAC;AAEF,MAAM,WAAW,aAAa;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,eAAgB,SAAQ,aAAa;IACpD,SAAS,EAAE,MAAM,CAAC;IAClB,kBAAkB,EAAE,kBAAkB,CAAC;CACxC;AAED,MAAM,WAAW,cAAe,SAAQ,aAAa;IACnD,kBAAkB,EAAE,kBAAkB,CAAC;IACvC,8BAA8B,EAAE,OAAO,CAAC;IACxC,MAAM,CAAC,EAAE,CAAC,WAAW,GAAG,aAAa,CAAC,EAAE,CAAC;CAC1C;AAED,MAAM,WAAW,qBAAsB,SAAQ,aAAa;CAAG;AAE/D,MAAM,MAAM,gBAAgB,GAAG,MAAM,GAAG;IAAE,OAAO,EAAE,kBAAkB,CAAA;CAAE,CAAC;AAExE,eAAO,MAAM,cAAc;wBACL,WAAW,KAAG,gBAAgB;mBAGnC,gBAAgB,KAAG,WAAW;CAI9C,CAAC"}
@@ -0,0 +1,6 @@
1
+ export declare const monitorAudioLevel: ({ mediaStreamTrack, intervalMs, onMeasure, }: {
2
+ mediaStreamTrack: MediaStreamTrack;
3
+ intervalMs?: number;
4
+ onMeasure: (value: number) => void;
5
+ }) => () => void;
6
+ //# sourceMappingURL=audio.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audio.d.ts","sourceRoot":"","sources":["../../../../../src/calls/util/audio.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,iBAAiB,GAAI,8CAI/B;IACD,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACpC,eA6CA,CAAC"}
@@ -0,0 +1,72 @@
1
+ import { type Context, Resource } from '@dxos/context';
2
+ import { HistoryCache } from './history-cache';
3
+ import { BulkRequestDispatcher, FIFOScheduler } from './task-scheduling';
4
+ import { type TrackObject } from '../types';
5
+ export type Session = {
6
+ sessionId: string;
7
+ peerConnection: RTCPeerConnection;
8
+ };
9
+ export type CallsServiceConfig = {
10
+ apiBase: string;
11
+ apiExtraParams?: string;
12
+ iceServers?: RTCIceServer[];
13
+ };
14
+ export type HistoryRecord = {
15
+ type: 'request';
16
+ time: string;
17
+ method: string;
18
+ body: any;
19
+ } | {
20
+ type: 'response';
21
+ time: string;
22
+ status: number;
23
+ text?: string;
24
+ json?: any;
25
+ };
26
+ /**
27
+ * Client for Cloudflare Calls service.
28
+ * API: https://developers.cloudflare.com/calls/https-api/
29
+ * Inspired by client from https://github.com/threepointone/partyserver/tree/main/packages/partytracks
30
+ */
31
+ export declare class CallsServicePeer extends Resource {
32
+ readonly history: HistoryCache<HistoryRecord>;
33
+ private readonly _persistentLifecycle;
34
+ private readonly _config;
35
+ taskScheduler: FIFOScheduler;
36
+ pushTrackDispatcher: BulkRequestDispatcher<{
37
+ trackName: string;
38
+ transceiver: RTCRtpTransceiver;
39
+ }, {
40
+ tracks: TrackObject[];
41
+ }>;
42
+ pullTrackDispatcher: BulkRequestDispatcher<TrackObject, {
43
+ trackMap: Map<TrackObject, {
44
+ resolvedTrack: Promise<MediaStreamTrack>;
45
+ mid: string;
46
+ }>;
47
+ }>;
48
+ closeTrackDispatcher: BulkRequestDispatcher<unknown, unknown>;
49
+ constructor(config: CallsServiceConfig);
50
+ protected _open(ctx: Context): Promise<void>;
51
+ protected _close(): Promise<void>;
52
+ get session(): Session | undefined;
53
+ private _startSession;
54
+ private _stopSession;
55
+ private _createRtcConnection;
56
+ private _initiateCallSession;
57
+ private _fetch;
58
+ private _pushTrackInBulk;
59
+ pushTrack({ track, encodings, ctx, previousTrack, }: {
60
+ track: MediaStreamTrack | null;
61
+ encodings?: RTCRtpEncodingParameters[];
62
+ ctx?: Context;
63
+ previousTrack?: TrackObject;
64
+ }): Promise<TrackObject | undefined>;
65
+ private _pullTrackInBulk;
66
+ pullTrack({ ctx, trackData, }: {
67
+ trackData: TrackObject;
68
+ ctx?: Context;
69
+ }): Promise<MediaStreamTrack | undefined>;
70
+ _closeTrackInBulk(peerConnection: RTCPeerConnection, mid: string, sessionId: string): Promise<void>;
71
+ }
72
+ //# sourceMappingURL=calls-service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"calls-service.d.ts","sourceRoot":"","sources":["../../../../../src/calls/util/calls-service.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,KAAK,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAIvD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,qBAAqB,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACzE,OAAO,EAIL,KAAK,WAAW,EAEjB,MAAM,UAAU,CAAC;AAIlB,MAAM,MAAM,OAAO,GAAG;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,iBAAiB,CAAC;CACnC,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,UAAU,CAAC,EAAE,YAAY,EAAE,CAAC;CAC7B,CAAC;AAEF,MAAM,MAAM,aAAa,GACrB;IACE,IAAI,EAAE,SAAS,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,GAAG,CAAC;CACX,GACD;IACE,IAAI,EAAE,UAAU,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,GAAG,CAAC;CACZ,CAAC;AAEN;;;;GAIG;AAEH,qBAAa,gBAAiB,SAAQ,QAAQ;IAC5C,SAAgB,OAAO,8BAAwC;IAE/D,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAGlC;IAEH,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAqB;IAE7C,aAAa,gBAAuB;IACpC,mBAAmB;mBAEJ,MAAM;qBACJ,iBAAiB;;gBAEtB,WAAW,EAAE;OACnB;IAEN,mBAAmB;kBAGL,GAAG,CAAC,WAAW,EAAE;YAAE,aAAa,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAC;YAAC,GAAG,EAAE,MAAM,CAAA;SAAE,CAAC;OAEnF;IAEN,oBAAoB,0CAAiC;gBACzC,MAAM,EAAE,kBAAkB;cAKb,KAAK,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;cAIlC,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAIhD,IAAI,OAAO,wBAEV;YAEa,aAAa;YAMb,YAAY;YAIZ,oBAAoB;YAsCpB,oBAAoB;YAMpB,MAAM;YA4CN,gBAAgB;IA6ExB,SAAS,CAAC,EACd,KAAK,EACL,SAAc,EACd,GAAG,EACH,aAAa,GACd,EAAE;QACD,KAAK,EAAE,gBAAgB,GAAG,IAAI,CAAC;QAC/B,SAAS,CAAC,EAAE,wBAAwB,EAAE,CAAC;QACvC,GAAG,CAAC,EAAE,OAAO,CAAC;QACd,aAAa,CAAC,EAAE,WAAW,CAAC;KAC7B,GAAG,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC;YA0CtB,gBAAgB;IAiGxB,SAAS,CAAC,EACd,GAAG,EACH,SAAS,GACV,EAAE;QACD,SAAS,EAAE,WAAW,CAAC;QACvB,GAAG,CAAC,EAAE,OAAO,CAAC;KACf,GAAG,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC;IAanC,iBAAiB,CAAC,cAAc,EAAE,iBAAiB,EAAE,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CA6C1G"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Array that holds the last N items.
3
+ */
4
+ export declare class HistoryCache<T> {
5
+ private readonly _limit;
6
+ private readonly _messages;
7
+ constructor(limit?: number);
8
+ push(...messages: T[]): void;
9
+ get(): T[];
10
+ }
11
+ //# sourceMappingURL=history-cache.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"history-cache.d.ts","sourceRoot":"","sources":["../../../../../src/calls/util/history-cache.ts"],"names":[],"mappings":"AAIA;;GAEG;AACH,qBAAa,YAAY,CAAC,CAAC;IACzB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAM;gBAEpB,KAAK,SAAM;IAKvB,IAAI,CAAC,GAAG,QAAQ,EAAE,CAAC,EAAE,GAAG,IAAI;IAO5B,GAAG,IAAI,CAAC,EAAE;CAGX"}
@@ -0,0 +1,5 @@
1
+ export * from './audio';
2
+ export * from './calls-service';
3
+ export * from './media';
4
+ export * from './stub-media-streams';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/calls/util/index.ts"],"names":[],"mappings":"AAIA,cAAc,SAAS,CAAC;AACxB,cAAc,iBAAiB,CAAC;AAChC,cAAc,SAAS,CAAC;AACxB,cAAc,sBAAsB,CAAC"}
@@ -0,0 +1,6 @@
1
+ export declare const getUserMediaTrack: (kind: MediaDeviceKind, constraints?: MediaTrackConstraints, deviceList?: MediaDeviceInfo[]) => Promise<MediaStreamTrack>;
2
+ export declare const getDeviceList: () => Promise<MediaDeviceInfo[]>;
3
+ export declare const getScreenshare: ({ contentHint }: {
4
+ contentHint: string;
5
+ }) => Promise<MediaStream>;
6
+ //# sourceMappingURL=media.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"media.d.ts","sourceRoot":"","sources":["../../../../../src/calls/util/media.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,iBAAiB,GAC5B,MAAM,eAAe,EACrB,cAAa,qBAA0B,EACvC,aAAa,eAAe,EAAE,KAC7B,OAAO,CAAC,gBAAgB,CAQ1B,CAAC;AAaF,eAAO,MAAM,aAAa,kCAAkD,CAAC;AAU7E,eAAO,MAAM,cAAc,GAAU,iBAAiB;IAAE,WAAW,EAAE,MAAM,CAAA;CAAE,yBAU5E,CAAC"}
@@ -0,0 +1,18 @@
1
+ import { type Context } from '@dxos/context';
2
+ /**
3
+ * Creates a black canvas stream track.
4
+ * We need this to to have black rectangle video that is live (have frames) when video feed is disabled.
5
+ */
6
+ export declare const createBlackCanvasStreamTrack: ({ ctx, width, height, }: {
7
+ ctx: Context;
8
+ width: number;
9
+ height: number;
10
+ }) => Promise<MediaStreamTrack>;
11
+ /**
12
+ * Creates an inaudible audio stream track.
13
+ * We need this to have audio track available when audio is disabled.
14
+ */
15
+ export declare const createInaudibleAudioStreamTrack: ({ ctx }: {
16
+ ctx: Context;
17
+ }) => Promise<MediaStreamTrack>;
18
+ //# sourceMappingURL=stub-media-streams.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stub-media-streams.d.ts","sourceRoot":"","sources":["../../../../../src/calls/util/stub-media-streams.ts"],"names":[],"mappings":"AAMA,OAAO,EAAqB,KAAK,OAAO,EAAE,MAAM,eAAe,CAAC;AAGhE;;;GAGG;AACH,eAAO,MAAM,4BAA4B,GAAU,yBAIhD;IACD,GAAG,EAAE,OAAO,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB,KAAG,OAAO,CAAC,gBAAgB,CAmB3B,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,+BAA+B,GAAU,SAAS;IAAE,GAAG,EAAE,OAAO,CAAA;CAAE,KAAG,OAAO,CAAC,gBAAgB,CA0BzG,CAAC"}
@@ -0,0 +1,17 @@
1
+ type Task<Value = unknown> = () => Promise<Value>;
2
+ export declare class FIFOScheduler {
3
+ #private;
4
+ constructor();
5
+ schedule<T>(task: Task<T>): Promise<T>;
6
+ }
7
+ export declare class BulkRequestDispatcher<RequestEntryParams, BulkResponse> {
8
+ #private;
9
+ constructor(batchSizeLimit?: number);
10
+ /**
11
+ * Returns a bulk response promise.
12
+ * At the event loop iteration end, the accumulated entries will be dispatched as a bulk request.
13
+ */
14
+ doBulkRequest(params: RequestEntryParams, bulkRequestFunc: (bulkCopy: RequestEntryParams[]) => Promise<BulkResponse>): Promise<BulkResponse>;
15
+ }
16
+ export {};
17
+ //# sourceMappingURL=task-scheduling.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task-scheduling.d.ts","sourceRoot":"","sources":["../../../../../src/calls/util/task-scheduling.ts"],"names":[],"mappings":"AAMA,KAAK,IAAI,CAAC,KAAK,GAAG,OAAO,IAAI,MAAM,OAAO,CAAC,KAAK,CAAC,CAAC;AAElD,qBAAa,aAAa;;;IAOxB,QAAQ,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;CAWvC;AAGD,qBAAa,qBAAqB,CAAC,kBAAkB,EAAE,YAAY;;gBAKrD,cAAc,GAAE,MAA8B;IAM1D;;;OAGG;IACH,aAAa,CACX,MAAM,EAAE,kBAAkB,EAC1B,eAAe,EAAE,CAAC,QAAQ,EAAE,kBAAkB,EAAE,KAAK,OAAO,CAAC,YAAY,CAAC,GACzE,OAAO,CAAC,YAAY,CAAC;CA4CzB"}